Gantry 4 Framework - Version 4.0.0

Version Description

  • Next Gantry Framework Major Release. Please always do a full backup (files + database) of your site before upgrading!
  • LESS support
  • Responsive layouts are fully supported
  • Brand new Admin UI
  • Caching improvements
  • Filtering in the Assignments tab
  • Ability to choose a chrome per widget
  • Support for the new Dropdown menu
  • New Search Highlight gizmo to allow to highlight search query without losing page content formatting
  • Added back the gantryjson.class.php file for backwards compatibility with Crystalline
  • Many more!
Download this release

Release Info

Developer gantry
Plugin Icon 128x128 Gantry 4 Framework
Version 4.0.0
Comparing to
See all releases

Code changes from version 1.31 to 4.0.0

Files changed (150) hide show
  1. CHANGELOG.php +15 -2
  2. CREDITS.php +1 -1
  3. admin/admin_assignments.php +80 -0
  4. admin/admin_functions.php +265 -0
  5. admin/admin_presets.php +33 -0
  6. admin/ajax-models/cache.php +11 -6
  7. admin/ajax-models/lesscompiler.php +35 -0
  8. admin/ajax-models/overrides.php +3 -2
  9. admin/ajax-models/presets-saver.php +5 -8
  10. admin/ajax-models/widgets.php +10 -10
  11. admin/assets/less/assignments.less +303 -0
  12. admin/assets/less/buttons.less +152 -0
  13. admin/assets/less/fields.less +171 -0
  14. admin/assets/less/filters.less +23 -0
  15. admin/assets/less/fixes-ie.less +15 -0
  16. admin/assets/less/form.less +225 -0
  17. admin/assets/less/global.less +23 -0
  18. admin/assets/less/growl.less +41 -0
  19. admin/assets/less/icons.less +74 -0
  20. admin/assets/less/joomla.less +92 -0
  21. admin/assets/less/layout.less +630 -0
  22. admin/assets/less/mediaqueries.less +87 -0
  23. admin/assets/less/mixins/bootstrap/mixins.less +631 -0
  24. admin/assets/less/mixins/index.less +9 -0
  25. admin/assets/less/mixins/rockettheme/buttons.less +106 -0
  26. admin/assets/less/mixins/rockettheme/dropdowns.less +50 -0
  27. admin/assets/less/mixins/rockettheme/icons.less +17 -0
  28. admin/assets/less/mixins/rockettheme/mixins.less +74 -0
  29. admin/assets/less/mixins/rockettheme/popover.less +25 -0
  30. admin/assets/less/mixins/rockettheme/utilities.less +13 -0
  31. admin/assets/less/presets.less +247 -0
  32. admin/assets/less/reset.less +9 -0
  33. admin/assets/less/typography-fonts.less +48 -0
  34. admin/assets/less/typography.less +174 -0
  35. admin/assets/less/variables.less +25 -0
  36. admin/assets/less/wordpress.less +129 -0
  37. admin/assignment_functions.php +16 -11
  38. admin/forms/fields/ajaxbutton.php +62 -0
  39. admin/forms/fields/alias.php +5 -3
  40. admin/forms/fields/animation.php +5 -4
  41. admin/forms/fields/categories.php +3 -2
  42. admin/forms/fields/checkbox.php +1 -1
  43. admin/forms/fields/colorchooser.php +21 -20
  44. admin/forms/fields/dateformats.php +4 -5
  45. admin/forms/fields/diagnostic.php +3 -2
  46. admin/forms/fields/file.php +4 -3
  47. admin/forms/fields/fonts.php +99 -204
  48. admin/forms/fields/gantry.php +33 -7
  49. admin/forms/fields/gradient.php +3 -2
  50. admin/forms/fields/groupedlist.php +4 -3
  51. admin/forms/fields/hidden.php +1 -1
  52. admin/forms/fields/html.php +3 -2
  53. admin/forms/fields/imagepicker.php +189 -0
  54. admin/forms/fields/integer.php +3 -5
  55. admin/forms/fields/linkcategories.php +3 -2
  56. admin/forms/fields/list.php +1 -1
  57. admin/forms/fields/navmenulist.php +4 -3
  58. admin/forms/fields/overlays.php +7 -3
  59. admin/forms/fields/password.php +1 -1
  60. admin/forms/fields/positions.php +5 -2
  61. admin/forms/fields/positionslist.php +4 -3
  62. admin/forms/fields/preset.php +13 -7
  63. admin/forms/fields/radio.php +1 -1
  64. admin/forms/fields/selectbox.php +22 -19
  65. admin/forms/fields/showmax.php +4 -3
  66. admin/forms/fields/slider.php +3 -2
  67. admin/forms/fields/spacer.php +1 -1
  68. admin/forms/fields/text.php +1 -1
  69. admin/forms/fields/textarea.php +3 -5
  70. admin/forms/fields/textplus.php +75 -0
  71. admin/forms/fields/tips.php +69 -35
  72. admin/forms/fields/toggle.php +20 -22
  73. admin/forms/fields/updater.php +5 -3
  74. admin/forms/groups/chain.php +8 -6
  75. admin/forms/groups/columns.php +1 -1
  76. admin/forms/groups/enabledgroup.php +17 -8
  77. admin/forms/groups/grouped.php +2 -3
  78. admin/forms/groups/innertabs.php +32 -35
  79. admin/forms/groups/position.php +5 -3
  80. admin/forms/groups/selectedset.php +25 -12
  81. admin/forms/groups/set.php +1 -1
  82. admin/index.php +280 -222
  83. admin/index_orig.php +233 -0
  84. admin/meta-links/cache.php +3 -2
  85. admin/meta-links/presets.php +3 -2
  86. admin/override.php +207 -319
  87. admin/override_orig.php +343 -0
  88. admin/widgets/Twipsy.js +447 -0
  89. admin/widgets/ajaxbutton/js/ajaxbutton.js +63 -0
  90. admin/widgets/assignments/js/assignments.js +183 -39
  91. admin/widgets/colorchooser/css/mooRainbow-2.0.css +220 -0
  92. admin/widgets/colorchooser/css/mooRainbow-2.0.less +225 -0
  93. admin/widgets/colorchooser/css/mooRainbow.css +5 -5
  94. admin/widgets/colorchooser/js/colorchooser.js +13 -86
  95. admin/widgets/colorchooser/js/mooRainbow-2.0.js +544 -0
  96. admin/widgets/colorchooser/js/mooRainbow.js +78 -8
  97. admin/widgets/fonts/js/fonts.js +52 -8
  98. admin/widgets/fonts/js/google-fonts.json +5943 -0
  99. admin/widgets/gantry-administrator.css +1 -0
  100. admin/widgets/gantry-ie.css +1 -1
  101. admin/widgets/gantry-ie7.css +1 -1
  102. admin/widgets/gantry-opera.css +1 -1
  103. admin/widgets/gantry-widgets.css +1 -1
  104. admin/widgets/gantry-widgets.js +1 -1
  105. admin/widgets/gantry.css +1 -1
  106. admin/widgets/gantry.js +352 -128
  107. admin/widgets/gantry.popupbuttons.js +80 -0
  108. admin/widgets/gradient/js/gradient.js +84 -8
  109. admin/widgets/growl.js +166 -0
  110. admin/widgets/imagepicker/css/imagepicker.css +13 -0
  111. admin/widgets/imagepicker/images/button.png +0 -0
  112. admin/widgets/imagepicker/images/no-image.png +0 -0
  113. admin/widgets/images/g4-logo-small.png +0 -0
  114. admin/widgets/images/gantry-master.png +0 -0
  115. admin/widgets/images/gantry-small.png +0 -0
  116. admin/widgets/images/graphic-level.png +0 -0
  117. admin/widgets/images/slider.png +0 -0
  118. admin/widgets/images/spinner.gif +0 -0
  119. admin/widgets/images/textinput.png +0 -0
  120. admin/widgets/images/tips-pin.png +0 -0
  121. admin/widgets/images/toggle.png +0 -0
  122. admin/widgets/moofx.js +1584 -0
  123. admin/widgets/overlays/css/overlays.css +25 -0
  124. admin/widgets/positions/js/positions-utils.js +73 -63
  125. admin/widgets/preset/js/preset-saver.js +256 -8
  126. admin/widgets/preset/js/preset.js +207 -104
  127. admin/widgets/radios/js/radios.js +124 -8
  128. admin/widgets/selectbox/js/selectbox.js +0 -6
  129. admin/widgets/slider/js/slider-utils.js +48 -8
  130. admin/widgets/slider/js/slider.js +162 -8
  131. admin/widgets/slider/js/unserialize.js +2 -1
  132. admin/widgets/tips/js/tips.js +101 -8
  133. admin/widgets/toggle/js/toggle.js +109 -9
  134. admin_functions.php +251 -104
  135. ajax-models/example.php +3 -2
  136. assets/jui/fonts/IcoMoon.eot +0 -0
  137. assets/jui/fonts/IcoMoon.svg +378 -0
  138. assets/jui/fonts/IcoMoon.ttf +0 -0
  139. assets/jui/fonts/IcoMoon.woff +0 -0
  140. assets/jui/fonts/fontawesome-webfont.eot +0 -0
  141. assets/jui/fonts/fontawesome-webfont.svg +255 -0
  142. assets/jui/fonts/fontawesome-webfont.ttf +0 -0
  143. assets/jui/fonts/fontawesome-webfont.woff +0 -0
  144. assets/jui/fonts/icomoon-license.txt +2 -0
  145. assets/jui/fonts/index.html +1 -0
  146. assets/jui/img/glyphicons-halflings-white.png +0 -0
  147. assets/jui/img/glyphicons-halflings.png +0 -0
  148. assets/jui/img/index.html +1 -0
  149. assets/jui/js/bootstrap.js +2054 -0
  150. assets/jui/js/bootstrap.min.js +18 -0
CHANGELOG.php CHANGED
@@ -2,9 +2,9 @@
2
  /**
3
  * Gantry For Wordpress
4
  *
5
- * @version $Id: CHANGELOG.php 58653 2012-12-18 21:25:40Z jakub $
6
  * @author RocketTheme http://www.rockettheme.com
7
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
8
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
9
  */
10
  die();
@@ -27,6 +27,19 @@ Legend:
27
  - -> Removed
28
  ! -> Note
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  ------- 1.31 Release [] ------
31
  # Fix for the caching issue which caused the "Fatal error: Call to a member function getGridcss()"
32
  ! Please clean your site/browser cache after updating Gantry to 1.31
2
  /**
3
  * Gantry For Wordpress
4
  *
5
+ * @version $Id: CHANGELOG.php 59402 2013-03-19 09:38:21Z jakub $
6
  * @author RocketTheme http://www.rockettheme.com
7
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
8
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
9
  */
10
  die();
27
  - -> Removed
28
  ! -> Note
29
 
30
+ ------- 4.0 Release [] ------
31
+ ! Next Gantry Framework Major Release. Please always do a full backup of your site before upgrading!
32
+ + LESS support
33
+ + Responsive layouts are fully supported
34
+ + Brand new Admin UI
35
+ + Caching improvements
36
+ + Filtering in the Assignments tab
37
+ + Ability to chose a chrome per widget
38
+ + Support for the new Dropdown menu
39
+ + New Search Highlight gizmo to allow to highlight search query without losing page content formatting
40
+ + Added back the gantryjson.class.php file for backwards compatibility with Crystalline
41
+ + Many more!
42
+
43
  ------- 1.31 Release [] ------
44
  # Fix for the caching issue which caused the "Fatal error: Call to a member function getGridcss()"
45
  ! Please clean your site/browser cache after updating Gantry to 1.31
CREDITS.php CHANGED
@@ -5,7 +5,7 @@
5
  * @package gantry
6
  * @version $Id: CREDITS.php 58623 2012-12-15 22:01:32Z btowles $
7
  * @author RocketTheme http://www.rockettheme.com
8
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
9
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
10
  *
11
  */
5
  * @package gantry
6
  * @version $Id: CREDITS.php 58623 2012-12-15 22:01:32Z btowles $
7
  * @author RocketTheme http://www.rockettheme.com
8
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
9
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
10
  *
11
  */
admin/admin_assignments.php ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @version $Id: admin_assignments.php 59361 2013-03-13 23:10:27Z btowles $
4
+ * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
+ */
8
+ ?>
9
+ <div id="assignments-panel" class="g4-panel panel-<?php echo ($i + 1);?> panel-assignments <?php echo $width;?><?php echo $activePanel;?>">
10
+ <div class="g4-panel-left">
11
+ <div class="assignments-left">
12
+ <div class="assignments-search">
13
+ <div class="assignments-search-global-wrapper">
14
+ <label>Global Filter <input type="text" class="large" placeholder="Start typing to filter the lists below" /></label>
15
+ <div class="assignment-search-clear">&times;</div>
16
+ </div>
17
+ </div>
18
+ <div class="left-list">
19
+ <?php
20
+ ob_start();
21
+ do_assignment_meta_boxes('gantry_assignments', 'panel', null, $assignments, $assignment_info);
22
+ echo ob_get_clean();
23
+ ?>
24
+ </div>
25
+ </div>
26
+ <div class="assignments-right">
27
+ <div id="selection-list" class="assignments-block">
28
+ <h2><?php _ge('Assigned Overrides');?></h2>
29
+ <ul id="assigned-list">
30
+ <?php
31
+ global $gantry_override_types;
32
+ global $gantry_override_assignment_info;
33
+ if (empty($assignments)) {
34
+ ?>
35
+ <li class="empty"><?php _ge('No Item.');?></li>
36
+ <?php
37
+ } else {
38
+ foreach ($assignments as $archetype => $assignment) {
39
+ foreach ($assignment as $type => $value) {
40
+ if (is_bool($value) && $value) {
41
+ $data = $archetype . '::' . $type;
42
+ $label = (isset($gantry_override_assignment_info[$data])) ? $gantry_override_assignment_info[$data]->title : $gantry_override_types[$data]->type_label;
43
+ $type_string = (isset($gantry_override_assignment_info[$data])) ? $gantry_override_assignment_info[$data]->single_label : _g('Type');
44
+ ?>
45
+ <li class="list-type clearfix">
46
+ <span class="type"><?php echo $type_string;?></span>
47
+ <span class="delete-assigned">&times;</span>
48
+ <span class="link">
49
+ <span class="<?php echo $data;?>"><?php echo $label;?></span>
50
+ </span>
51
+ </li>
52
+ <?php
53
+ } else {
54
+ foreach ($value as $item_id) {
55
+ $data = $archetype . '::' . $type . '::' . $item_id;
56
+ $title = $gantry_override_assignment_info[$data]->title;
57
+ ?>
58
+ <li class="list-type clearfix">
59
+ <span class="type"><?php echo $gantry_override_assignment_info[$data]->single_label;?></span>
60
+ <span class="delete-assigned">&times;</span>
61
+ <span class="link">
62
+ <a class="no-link-item" href="#" rel="<?php echo $data;?>"><?php echo $title;?></a>
63
+ </span>
64
+ </li>
65
+ <?php
66
+ }
67
+ }
68
+ }
69
+ }
70
+
71
+ }
72
+ ?>
73
+ </ul>
74
+ <div class="footer-block clearfix"<?php if (count($assignments)) echo ' style="display: block;"';?>>
75
+ <div class="clear-list"><a href="#"><?php _ge('Clear List');?></a></div>
76
+ </div>
77
+ <textarea name="assigned_override_items" id="assigned_override_items"><?php echo serialize($assignments);?></textarea>
78
+ </div>
79
+ </div>
80
+ </div>
admin/admin_functions.php ADDED
@@ -0,0 +1,265 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @version $Id: admin_functions.php 59376 2013-03-14 19:43:34Z btowles $
4
+ * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
+ */
8
+
9
+ //function gantry_admin_render_edit_item($element)
10
+ //{
11
+ // $buffer = '';
12
+ // $buffer .= " <div class=\"gantry-field " . $element->type . "-field\">\n";
13
+ // $label = '';
14
+ // if ($element->show_label) $label = $element->getLabel() . "\n";
15
+ // $buffer .= $label;
16
+ // $buffer .= $element->getInput() . "\n";
17
+ // $buffer .= " <div class=\"clr\"></div>\n";
18
+ // $buffer .= " </div>\n";
19
+ // return $buffer;
20
+ //}
21
+
22
+ //function gantry_admin_render_edit_override_item($element)
23
+ //{
24
+ // $buffer = '';
25
+ // $buffer .= " <div class=\"gantry-field " . $element->type . "-field\">\n";
26
+ // $label = '';
27
+ // $checked = ($element->variance) ? ' checked="checked"' : '';
28
+ // if ($element->show_label) {
29
+ // if (!$element->setinoverride) {
30
+ // $label = $element->getLabel() . "\n";
31
+ // } else {
32
+ // $label = '<div class="field-label"><span class="inherit-checkbox"><input name="overridden-' . $element->name . '" type="checkbox"' . $checked . '/></span><span class="base-label">' . $element->getLabel() . '</span></div>';
33
+ // }
34
+ // }
35
+ // $buffer .= $label;
36
+ // $buffer .= $element->getInput() . "\n";
37
+ // $buffer .= " <div class=\"clr\"></div>\n";
38
+ // $buffer .= " </div>\n";
39
+ // return $buffer;
40
+ //}
41
+
42
+ function gantry_admin_prep_needed_dirs()
43
+ {
44
+ /**
45
+ * @global $gantry Gantry
46
+ */
47
+ global $gantry;
48
+
49
+ //create dirs needed by gantry
50
+ $gantry_created_dirs = array(
51
+ $gantry->custom_dir,
52
+ $gantry->custom_menuitemparams_dir
53
+ );
54
+
55
+ foreach ($gantry_created_dirs as $dir) {
56
+ if (is_readable(dirname($dir)) && is_writeable(dirname($dir)) && !file_exists($dir)) {
57
+ mkdir($dir, 0775);
58
+ }
59
+ }
60
+ }
61
+
62
+ function gantry_overrides_innertab_wrappers_pre($field)
63
+ {
64
+ $checked = ($field->variance) ? ' checked="checked"' : '';
65
+
66
+ if (!$field->setinoverride) return ""; else return '<div class="field-label"><span class="inherit-checkbox"><input name="overridden-' . $field->name . '" type="checkbox"' . $checked . '/></span><span class="base-label">';
67
+ }
68
+
69
+ function gantry_overrides_innertab_wrappers_post($field)
70
+ {
71
+ if (!$field->setinoverride) return ""; else return '</span></div>';
72
+ }
73
+
74
+ function get_badges_layout($involved)
75
+ {
76
+ return '
77
+ <span class="badges-involved">' . "\n" . '
78
+ <span class="presets-involved"> <span>0</span></span> ' . "\n" . '
79
+ <span class="overrides-involved"> <span>' . $involved . '</span></span>' . "\n" . '
80
+
81
+ </span>' . "\n";
82
+ }
83
+
84
+ function gantry_admin_override_css()
85
+ {
86
+ /**
87
+ * @global $gantry Gantry
88
+ */
89
+ global $gantry;
90
+
91
+ // css overrides
92
+ if ($gantry->browser->name == 'ie' && file_exists($gantry->gantryPath . DS . 'admin' . DS . 'widgets' . DS . 'gantry-ie.css')) {
93
+ $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/gantry-ie.css');
94
+ }
95
+ if ($gantry->browser->name == 'ie' && $gantry->browser->version == '7' && file_exists($gantry->gantryPath . DS . 'admin' . DS . 'widgets' . DS . 'gantry-ie7.css')) {
96
+ $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/gantry-ie7.css');
97
+ }
98
+
99
+ if (($gantry->browser->name == 'firefox' && $gantry->browser->version < '3.7') || ($gantry->browser->name == 'ie' && $gantry->browser->version > '6')) {
100
+ $css = ".text-short, .text-medium, .text-long, .text-color {padding-top: 4px;height:19px;}";
101
+ $gantry->addInlineStyle($css);
102
+ }
103
+
104
+ if ($gantry->browser->name == 'ie' && $gantry->browser->shortversion == '7') {
105
+ $css = "
106
+ .g-surround, .g-inner, .g-surround > div {zoom: 1;position: relative;}
107
+ .text-short, .text-medium, .text-long, .text-color {border:0 !important;}
108
+ .selectbox {z-index:500;position:relative;}
109
+ .group-fusionmenu, .group-splitmenu {position:relative;margin-top:0 !important;zoom:1;}
110
+ .scroller .inner {position:relative;}
111
+ .moor-hexLabel {display:inline-block;zoom:1;float:left;}
112
+ .moor-hexLabel input {float:left;}
113
+ ";
114
+ $gantry->addInlineStyle($css);
115
+ }
116
+ if ($gantry->browser->name == 'opera' && file_exists($gantry->gantryPath . DS . 'admin' . DS . 'widgets' . DS . 'gantry-opera.css')) {
117
+ $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/gantry-opera.css');
118
+ }
119
+ }
120
+
121
+
122
+ function gantry_admin_compile_less()
123
+ {
124
+ /** @var $gantry Gantry */
125
+ global $gantry;
126
+ $less_path = $gantry->gantryPath.'/admin/assets/less';
127
+ if (is_dir($less_path)) {
128
+ $gantry->addLess($less_path . '/global.less', $gantry->gantryUrl . '/admin/widgets/gantry-administrator.css');
129
+ if ($gantry->browser->name == 'ie') {
130
+ $gantry->addLess($less_path . '/fixes-ie.less', $gantry->gantryUrl . '/admin/widgets/fixes-ie.css');
131
+ }
132
+ } else {
133
+ $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/gantry-administrator.css');
134
+ if ($gantry->browser->name == 'ie') {
135
+ $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/fixes-ie.css');
136
+ }
137
+ }
138
+ }
139
+
140
+ function gantry_admin_get_badges_layout($name, $override = 0, $involved = 0, $assignments = 0)
141
+ {
142
+ if ($name == 'assignment') {
143
+ return '<span class="menuitems-involved"><span>' . $assignments . '</span></span>';
144
+ } else {
145
+ if ($override) {
146
+ return '
147
+ <span class="badges-involved">' . "\n" . '
148
+ <span class="presets-involved"> <span>0</span></span> ' . "\n" . '
149
+ <span class="overrides-involved"> <span>' . $involved . '</span></span>' . "\n" . '
150
+ </span>';
151
+ } else {
152
+ return '<span class="presets-involved"><span>0</span></span>';
153
+ }
154
+ }
155
+ }
156
+
157
+
158
+ /**
159
+ * @param GantryFormItem $element
160
+ *
161
+ * @return string
162
+ */
163
+ function gantry_admin_render_edit_override_item($element)
164
+ {
165
+ if ($element->type == 'tips' && (isset($element->element['tab']) && (string)$element->element['tab'] != 'overview')) return $element->getInput();
166
+
167
+ $buffer = "";
168
+ $buffer .= " <div class=\"gantry-field " . $element->type . "-field g4-row\">\n";
169
+ $label = '';
170
+ $checked = ($element->variance) ? ' checked="checked"' : '';
171
+ if ($element->show_label && !$element->setinoverride){
172
+ $label = $element->getLabel();
173
+ }
174
+ elseif ($element->setinoverride){
175
+ $label = '<div class="field-label"><span class="inherit-checkbox"><input name="overridden-' . $element->name . '" type="checkbox"' . $checked . '/></span><span class="base-label">' . $element->getLabel() . '</span></div>';
176
+ }
177
+ $buffer .= "<div class=\"g4-cell g4-col1\">\n";
178
+ $buffer .= $label;
179
+ $buffer .= "</div>";
180
+ $buffer .= "<div class=\"g4-cell g4-col2\"><div class=\"g4-col2-wrap\">\n";
181
+ $buffer .= "<span class=\"arrow\"><span></span></span>";
182
+ $buffer .= $element->getInput() . "\n";
183
+ $buffer .= "</div></div>\n";
184
+ $buffer .= "</div>\n";
185
+ return $buffer;
186
+ }
187
+
188
+ function gantry_admin_render_edit_item($element)
189
+ {
190
+ if ($element->type == 'tips' && (isset($element->element['tab']) && (string)$element->element['tab'] != 'overview')) return $element->getInput();
191
+
192
+ $buffer = '';
193
+ $buffer .= " <div class=\"gantry-field " . $element->type . "-field g4-row\">\n";
194
+ $label = '';
195
+ if ($element->show_label) $label = $element->getLabel() . "\n";
196
+ $buffer .= "<div class=\"g4-cell g4-col1\">\n";
197
+ $buffer .= $label;
198
+ $buffer .= "</div>";
199
+ $buffer .= "<div class=\"g4-cell g4-col2\"><div class=\"g4-col2-wrap\">\n";
200
+ $buffer .= "<span class=\"arrow\"><span></span></span>";
201
+ $buffer .= $element->getInput() . "\n";
202
+ $buffer .= "</div></div>\n";
203
+ $buffer .= "</div>\n";
204
+ return $buffer;
205
+ }
206
+
207
+ function gantry_admin_render_menu($isNewOverride = false)
208
+ {
209
+ ob_start();
210
+ ?>
211
+ <ul class="g4-actions">
212
+ <span data-actions-spinner class="spinner"></span>
213
+ <li class="rok-dropdown-group">
214
+ <div class="rok-buttons-group">
215
+
216
+ <div class="rok-button rok-button-primary" id="toolbar-apply" data-g4-toolbaraction="template.apply">
217
+ Save
218
+ </div>
219
+ <div data-g4-toggle="save" class="rok-button rok-button-primary">
220
+ <span class="caret"></span>
221
+ <ul data-g4-dropdown="save" class="rok-dropdown">
222
+ <?php if (!$isNewOverride): ?>
223
+ <li><a href="#" id="toolbar-save-copy" data-g4-toolbaraction="admin-post.php?action=gantry_theme_save_as_copy">Save as Copy</a></li>
224
+ <li class="divider"></li>
225
+ <?php endif; ?>
226
+ <li><a href="#" id="toolbar-save-preset">Save Preset</a></li>
227
+
228
+ </ul>
229
+ </div>
230
+ </div>
231
+ </li>
232
+ <li class="rok-button rok-button-secondary" id="toolbar-show-presets">Presets</li>
233
+ <li class="rok-button" id="toolbar-clearcache" data-ajaxbutton="{action: 'gantry_admin', model: 'cache', gantry_action: 'clear'}">Clear Cache
234
+ </li>
235
+ <!--<li class="rok-button" id="toolbar-purge">Reset</li>-->
236
+ <!--<li class="rok-button" data-g4-toolbaraction="template.cancel">Close</li>-->
237
+ </ul>
238
+ <?php
239
+ $buffer = ob_get_clean();
240
+ return $buffer;
241
+ }
242
+
243
+ function gantry_admin_get_tabs($form, $override)
244
+ {
245
+ $tabs = array();
246
+ $fieldSets = $form->getFieldsets();
247
+ $i = 1;
248
+ $activeTab = (isset($_COOKIE['gantry-admin-tab'])) ? $_COOKIE['gantry-admin-tab'] + 1 : 1;
249
+ if (!$override && $activeTab > count($fieldSets) - 1) $activeTab = 1;
250
+ $fieldsetCount = count($fieldSets);
251
+
252
+ foreach ($fieldSets as $name => $fieldSet) {
253
+ if ($name == 'toolbar-panel') {
254
+ $fieldsetCount--;
255
+ continue;
256
+ }
257
+ $classes = '';
258
+ if ($i == 1) $classes .= "first";
259
+ if ($i == $fieldsetCount) $classes .= "last";
260
+ if ($i == $activeTab) $classes .= " active ";
261
+ $tabs[$name] = $classes;
262
+ $i++;
263
+ }
264
+ return $tabs;
265
+ }
admin/admin_presets.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @version $Id: admin_presets.php 59361 2013-03-13 23:10:27Z btowles $
4
+ * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
+ */
8
+ ?>
9
+ <div id="hack-panel">
10
+ <?php
11
+ $fields = $form->getFullFieldset('toolbar-panel');
12
+ foreach ($fields as $name => $field) {
13
+ $status = 'hide';
14
+ if (isset($_COOKIE['gantry-' . $gantry->templateName . '-adminpresets'])) {
15
+ $status = htmlentities($_COOKIE['gantry-' . $gantry->templateName . '-adminpresets']);
16
+ }
17
+ $style = ' style="display: none";';
18
+
19
+ if ($status != 'hide') {
20
+ $status = 'hide';
21
+ $style = '';
22
+ }
23
+
24
+ echo "<div id=\"contextual-" . $field->type . "-wrap\" class=\"contextual-custom-wrap\"" . $style . ">\n";
25
+ echo " <div class=\"metabox-prefs\">\n";
26
+
27
+ echo $field->input;
28
+
29
+ echo " </div>\n";
30
+ echo "</div>\n";
31
+ }
32
+ ?>
33
+ </div>
admin/ajax-models/cache.php CHANGED
@@ -1,13 +1,14 @@
1
  <?php
2
  /**
3
- * @version $Id: cache.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
  defined('GANTRY_VERSION') or die();
10
 
 
11
  global $gantry;
12
 
13
  $action = $_POST['gantry_action'];
@@ -15,9 +16,13 @@ if (!current_user_can('edit_theme_options')) die('-1');
15
 
16
  if ($action == 'clear') {
17
  gantry_import('core.utilities.gantrycache');
18
- $cache = GantryCache::getInstance();
19
- $cache->clear('gantry', 'gantry');
20
- echo "success";
 
 
 
 
21
  } else {
22
- return "error";
23
  }
1
  <?php
2
  /**
3
+ * @version $Id: cache.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
  defined('GANTRY_VERSION') or die();
10
 
11
+ /** @global $gantry Gantry */
12
  global $gantry;
13
 
14
  $action = $_POST['gantry_action'];
16
 
17
  if ($action == 'clear') {
18
  gantry_import('core.utilities.gantrycache');
19
+ $adminCache = GantryCache::getCache(GantryCache::ADMIN_GROUP_NAME);
20
+ $adminCache->clearGroupCache();
21
+ $frontEndCache = GantryCache::getCache(GantryCache::GROUP_NAME);
22
+ $frontEndCache->clearGroupCache();
23
+ $frontEndLessCache = GantryCache::getCache(Gantry::LESS_SITE_CACHE_GROUP, null, true);
24
+ $frontEndLessCache->clearGroupCache();
25
+ echo "Cache successfully cleared.";
26
  } else {
27
+ echo "Error occurred while trying to clear the cache.";
28
  }
admin/ajax-models/lesscompiler.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @version $Id: lesscompiler.php 59361 2013-03-13 23:10:27Z btowles $
4
+ * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
+ *
8
+ * Gantry uses the Joomla Framework (http://www.joomla.org), a GNU/GPLv2 content management system
9
+ *
10
+ */
11
+ defined('GANTRY_VERSION') or die();
12
+
13
+ /** @var $gantry Gantry */
14
+ global $gantry;
15
+
16
+ $action = $_POST['gantry_action'];
17
+ gantry_import('core.gantryjson');
18
+
19
+ switch ($action) {
20
+ case 'clear':
21
+ echo gantryAjaxClearLessCache();
22
+ break;
23
+ default:
24
+ echo "error";
25
+ }
26
+
27
+ function gantryAjaxClearLessCache()
28
+ {
29
+ gantry_import('core.utilities.gantrycache');
30
+ /** @var $gantry Gantry */
31
+ global $gantry;
32
+ $cache_handler = GantryCache::getCache(Gantry::LESS_SITE_CACHE_GROUP, null, true);
33
+ $cache_handler->clearGroupCache();
34
+ return _ge('Less complier cache files cleared');
35
+ }
admin/ajax-models/overrides.php CHANGED
@@ -1,14 +1,15 @@
1
  <?php
2
  /**
3
- * @version $Id: overrides.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
  defined('GANTRY_VERSION') or die();
10
  gantry_import('core.utilities.gantrytemplateinfo');
11
 
 
12
  global $gantry;
13
 
14
  $action = $_POST['gantry_action'];
1
  <?php
2
  /**
3
+ * @version $Id: overrides.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
  defined('GANTRY_VERSION') or die();
10
  gantry_import('core.utilities.gantrytemplateinfo');
11
 
12
+ /** @global $gantry Gantry */
13
  global $gantry;
14
 
15
  $action = $_POST['gantry_action'];
admin/ajax-models/presets-saver.php CHANGED
@@ -1,13 +1,14 @@
1
  <?php
2
  /**
3
- * @version $Id: presets-saver.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
  defined('GANTRY_VERSION') or die();
10
 
 
11
  global $gantry;
12
 
13
 
@@ -28,9 +29,7 @@ if ($action == 'add') {
28
 
29
  gantry_import('core.gantryini');
30
  $newEntry = GantryINI::write($file, $data);
31
- gantry_import('core.utilities.gantrycache');
32
- $cache = GantryCache::getInstance();
33
- $cache->clear('gantry', 'gantry');
34
 
35
  if ($newEntry) echo "success";
36
  } else if ($action == 'delete') {
@@ -38,9 +37,7 @@ if ($action == 'add') {
38
  $presetKey = $_POST['preset-key'];
39
  if (!$presetKey || !$presetTitle) return "error";
40
  GantryINI::write($file, array($presetTitle => array($presetKey => array())), 'delete-key');
41
- gantry_import('core.utilities.gantrycache');
42
- $cache = GantryCache::getInstance();
43
- $cache->clear('gantry', 'gantry');
44
 
45
  } else {
46
  return "error";
1
  <?php
2
  /**
3
+ * @version $Id: presets-saver.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
  defined('GANTRY_VERSION') or die();
10
 
11
+ /** @global $gantry Gantry */
12
  global $gantry;
13
 
14
 
29
 
30
  gantry_import('core.gantryini');
31
  $newEntry = GantryINI::write($file, $data);
32
+ gantry_admin_clear_cache();
 
 
33
 
34
  if ($newEntry) echo "success";
35
  } else if ($action == 'delete') {
37
  $presetKey = $_POST['preset-key'];
38
  if (!$presetKey || !$presetTitle) return "error";
39
  GantryINI::write($file, array($presetTitle => array($presetKey => array())), 'delete-key');
40
+ gantry_admin_clear_cache();
 
 
41
 
42
  } else {
43
  return "error";
admin/ajax-models/widgets.php CHANGED
@@ -1,13 +1,14 @@
1
  <?php
2
  /**
3
- * @version $Id: widgets.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
  defined('GANTRY_VERSION') or die();
10
 
 
11
  global $gantry;
12
 
13
  $action = $_POST['gantry_action'];
@@ -21,9 +22,7 @@ $action = $_POST['gantry_action'];
21
  * @param array $sidebars_widgets Sidebar widgets and their settings.
22
  */
23
 
24
- gantry_import('core.utilities.gantrycache');
25
- $cache = GantryCache::getInstance();
26
- $cache->clear('gantry', 'gantry');
27
 
28
  switch ($action) {
29
  case 'create-new':
@@ -193,10 +192,11 @@ function gantry_widgets_save($batch = false)
193
 
194
 
195
  $sidebar = array_diff($sidebar, array($widget_id));
196
- $_POST = array('sidebar' => $sidebar_id,
197
- 'widget-' . $id_base => array(),
198
- 'the-widget-id' => $widget_id,
199
- 'delete_widget' => '1'
 
200
  );
201
  } elseif ($settings && preg_match('/__i__|%i%/', key($settings))) {
202
  if (!$multi_number) {
@@ -237,7 +237,7 @@ function gantry_widgets_save($batch = false)
237
  }
238
 
239
  if (!empty($_POST['add_new'])) {
240
- if (!batch) die();
241
  return;
242
  }
243
 
1
  <?php
2
  /**
3
+ * @version $Id: widgets.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
  defined('GANTRY_VERSION') or die();
10
 
11
+ /** @global $gantry Gantry */
12
  global $gantry;
13
 
14
  $action = $_POST['gantry_action'];
22
  * @param array $sidebars_widgets Sidebar widgets and their settings.
23
  */
24
 
25
+ gantry_admin_clear_cache();
 
 
26
 
27
  switch ($action) {
28
  case 'create-new':
192
 
193
 
194
  $sidebar = array_diff($sidebar, array($widget_id));
195
+ $_POST = array(
196
+ 'sidebar' => $sidebar_id,
197
+ 'widget-' . $id_base => array(),
198
+ 'the-widget-id' => $widget_id,
199
+ 'delete_widget' => '1'
200
  );
201
  } elseif ($settings && preg_match('/__i__|%i%/', key($settings))) {
202
  if (!$multi_number) {
237
  }
238
 
239
  if (!empty($_POST['add_new'])) {
240
+ if (!$batch) die();
241
  return;
242
  }
243
 
admin/assets/less/assignments.less ADDED
@@ -0,0 +1,303 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #assignments-panel {
2
+ display: table;
3
+
4
+ .g4-panel-left {
5
+ display: table;
6
+
7
+ .assignments-left, .assignments-right {
8
+ display: table-cell;
9
+ vertical-align: top;
10
+ }
11
+
12
+ h2 {
13
+ font-size: 1.2em;
14
+ margin: 2px 0;
15
+ }
16
+
17
+ .assignments-block {
18
+ margin: 10px;
19
+ padding: 10px;
20
+ .border-radius(6px);
21
+ @boxShadow:
22
+ 0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, // top
23
+ 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, // bottom
24
+ 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, // left
25
+ -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset; // right
26
+
27
+ .box-shadow(@boxShadow);
28
+
29
+ .assignment-search {
30
+ .box-shadow(~"0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff");
31
+ background: #fff;
32
+ padding: 2px 5px;
33
+ .border-radius(3px);
34
+ margin-top: 10px;
35
+ border: 1px solid #cfcfcf;
36
+ border-top-color: #c6c6c6;
37
+ .opacity(50);
38
+
39
+ input {
40
+ background: transparent;
41
+ .box-shadow(none);
42
+ padding: 0;
43
+ border: 0;
44
+ text-indent: 0;
45
+ width: 100%;
46
+ font-size: 11px;
47
+ }
48
+ }
49
+
50
+ &:hover .assignment-search {
51
+ .opacity(100);
52
+ }
53
+
54
+ ul ul {
55
+ margin-left: 18px;
56
+ }
57
+ }
58
+
59
+ .assignments-left {
60
+ width: 70%;
61
+
62
+ .assignments-block {
63
+ @boxShadow:
64
+ 0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, // top
65
+ 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, // bottom
66
+ 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, // left
67
+ -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset; // right
68
+
69
+ background: #f6f6f6;
70
+ .box-shadow(@boxShadow);
71
+ float: left;
72
+ width: 28%;
73
+
74
+ &.assignments-block-center {
75
+ margin-left: 0;
76
+ margin-right: 0;
77
+ }
78
+
79
+ &.assignments-block-right {
80
+ margin-right: 0;
81
+ }
82
+
83
+ h2 {
84
+ min-height: 19px;
85
+ label {
86
+ display: inline-block;
87
+ }
88
+
89
+ &.added label {
90
+ display: none;
91
+ }
92
+
93
+ &.added {
94
+ text-decoration: line-through;
95
+ }
96
+ }
97
+
98
+ .inside {
99
+ height: 250px;
100
+ overflow: auto;
101
+ margin: 10px 0;
102
+
103
+ label, a {
104
+ display: inline;
105
+ }
106
+
107
+ a {
108
+ color: #666;
109
+ text-decoration: none;
110
+ }
111
+
112
+ li.added > label, &.added label {
113
+ visibility: hidden;
114
+ }
115
+
116
+ li.added > a, &.added a {
117
+ text-decoration: line-through;
118
+ color: #999;
119
+ }
120
+
121
+ p {
122
+ margin: 0;
123
+ }
124
+
125
+ }
126
+ }
127
+ }
128
+
129
+ .assignments-right {
130
+ width: 30%;
131
+
132
+ .assignments-block {
133
+ margin: 10px 10px 10px 0;
134
+ #gradient > .vertical(#ddd, #ccc);
135
+
136
+ #assigned-list {
137
+ margin-top: 10px;
138
+ }
139
+
140
+ h2 {
141
+ color: #D54E21;
142
+ }
143
+
144
+ li {
145
+ display: block;
146
+ #gradient > .vertical(#aaa, #999);
147
+ border: 1px solid #888;
148
+ .border-radius(12px);
149
+ padding: 4px 10px;
150
+ font-size: 11px;
151
+ margin-bottom: 5px;
152
+ margin-left: 10px;
153
+ position: relative;
154
+
155
+ &.empty {
156
+ margin-left: 0;
157
+ }
158
+
159
+ span.link {
160
+ float: left;
161
+ color: #111;
162
+ text-shadow: 0 1px 0 #ccc;
163
+ a {
164
+ text-decoration: none;
165
+ color: #111;
166
+ text-shadow: 0 1px 0 #ccc;
167
+ cursor: default;
168
+ }
169
+ }
170
+
171
+ span.type {
172
+ color: #444;
173
+ border-left: 1px solid #888;
174
+ text-shadow: 0 1px 0 #ccc;
175
+ text-transform: uppercase;
176
+ padding-left: 10px;
177
+ float: right;
178
+ }
179
+
180
+ span.delete-assigned {
181
+ font-size: 15px;
182
+ position: absolute;
183
+ font-weight: bold;
184
+ cursor: pointer;
185
+ left: -13px;
186
+ top: 3px;
187
+ color: #666;
188
+
189
+ &:hover {
190
+ color: #b01c14;
191
+ }
192
+ }
193
+ }
194
+ }
195
+
196
+ #assigned_override_items {
197
+ position:absolute;
198
+ width: 1px;
199
+ height: 1px;
200
+ visibility:hidden;
201
+ }
202
+ }
203
+
204
+ .footer-block {
205
+ line-height: 2em;
206
+ .select-all {
207
+ float: left;
208
+ }
209
+
210
+ .add-button {
211
+ float: right;
212
+ }
213
+ }
214
+ }
215
+ }
216
+
217
+ .assignments-search {
218
+ text-align: center;
219
+
220
+ label {
221
+ font-weight: bold;
222
+ font-size: 1.5em;
223
+ }
224
+
225
+ input {
226
+ width: 50%;
227
+ font-weight: normal;
228
+ }
229
+ }
230
+ .assignments-search, .assignment-search {
231
+ position: relative;
232
+ .assignment-search-clear {
233
+ position: absolute;
234
+ top: 3px;
235
+ right: 3px;
236
+ height: 7px;
237
+ padding: 4px;
238
+ font-weight: bold;
239
+ line-height: 7px !important;
240
+ border: 1px solid #ccc;
241
+ background: #eee;
242
+ color: #888;
243
+ .border-radius(20px);
244
+ display: none;
245
+ cursor: pointer;
246
+
247
+ &:hover {
248
+ background: #f9f9f9;
249
+ }
250
+ }
251
+ }
252
+
253
+ .assignments-search-global-wrapper {
254
+ position: relative;
255
+ display: inline;
256
+
257
+ label {
258
+ display: inherit !important;
259
+ }
260
+
261
+ .assignment-search-clear {
262
+ top: 1px;
263
+ right: 12px;
264
+ }
265
+ }
266
+
267
+
268
+ /* Assignments Panel */
269
+ /*#assignments-panel {background: transparent;}
270
+ #assignments-panel .panelform {background:#fafafa;border:none;margin: 25px 0 25px 20px;}
271
+ #assignments-panel .assignments-block {overflow:hidden;margin: 0 20px 20px 0;position: relative;float: left;padding:20px;-moz-border-radius: 10px;-webkit-border-radius: 10px;border-radius: 10px;border:1px solid #ddd;background: -moz-linear-gradient(bottom, #f3f3f3, #fff);-moz-box-shadow: 1px 3px 15px rgba(0, 0, 0, 0.15); background: -webkit-gradient(linear, left bottom, left top, from(#f3f3f3), to(#fff));-webkit-box-shadow: 1px 3px 15px rgba(0, 0, 0, 0.15);min-width:250px;max-width: 562px;height:270px;box-shadow: 1px 3px 15px rgba(0, 0, 0, 0.15);}
272
+ #assignments-panel .assignments-block .inside {height: 200px;overflow:auto;}
273
+ #assignments-panel .assignments-block .inside a {color: #777;}
274
+ #assignments-panel .assignments-block .inside a:hover {color: #D54E21;}
275
+ #assignments-panel .assignments-block .inside a.no-link-item, #assignments-panel .assignments-block .inside a.no-link-item:hover, #assignments-panel a.no-link-item, #assignments-panel a.no-link-item:hover {color: #777777;cursor:default;}
276
+ #assignments-panel h2 {padding: 0 0 10px;}
277
+ #assignments-panel .assignments-block.hover h2 {background: url(images/click-preview.png) center right no-repeat;}
278
+ #assignments-panel span {padding: 0;}
279
+ #assignments-panel div.add-button {position: absolute; bottom: 10px; right: 10px;}
280
+ #assignments-panel div.select-all {position: absolute; bottom: 15px; left: 15px;}
281
+ #assignments-panel div.select-all a, #assignments-panel div.clear-list a {text-decoration: underline;font-size:90%;text-shadow:none;}
282
+ #assignments-panel .inside li.added > label, #assignments-panel .inside.added label, #assignments-panel h2.added label {visibility:hidden;}
283
+ #assignments-panel .inside li.added > a, #assignments-panel .inside.added a, #assignments-panel h2.added {text-decoration: line-through;}
284
+
285
+ #assignments-panel .assignments-right .panelform {margin-left:0;}
286
+ #assignments-panel .assignments-right .assignments-block {text-shadow:0 1px 0 #FFFFFF;float: none;background: -moz-linear-gradient(bottom, #d7d7d7, #f0f0f0);background: -webkit-gradient(linear, left bottom, left top, from(#d7d7d7), to(#f0f0f0));}
287
+ #assignments-panel .assignments-right .assignments-block li {background: -moz-linear-gradient(bottom, #dfdfdf, #ededed);background: -webkit-gradient(linear, left bottom, left top, from(#dfdfdf), to(#ededed));padding:4px 10px;border:1px solid #bbb;-moz-border-radius: 10px;-webkit-border-radius: 10px;border-radius: 10px;margin-left:20px;-moz-box-shadow:0 0 10px #ccc;-webkit-box-shadow: 0 0 10px #ccc;box-shadow:0 0 10px #ccc;}
288
+ #assignments-panel .assignments-right .assignments-block li.empty {background:none;padding: 0;color:#D54E21;border:none;margin-left:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;}
289
+ #assignments-panel .assignments-right .assignments-block span.link {}
290
+ #assignments-panel .assignments-right .assignments-block span.type {float: right;padding-left: 10px;color:#999;font-size:11px;padding-right:0;text-transform:uppercase;border-left: 1px solid #dedede; margin:0 0 5px 10px;}
291
+ #assignments-panel .assignments-right .assignments-block .delete-assigned {background: url(images/delete.png) left center no-repeat;width: 10px;height: 30px;margin: -7px 0 0 -30px;float: left;display: block;cursor: pointer;}
292
+ #assignments-panel .assignments-right .footer-block {margin-top: 30px;display:none;}
293
+ #assignments-panel .assignments-right .assignments-block {height: auto;}
294
+
295
+
296
+ #assignments-panel .rokchecks, #gantry-panel .inherit-checkbox .rokchecks {width: 13px;height:13px;background-image: url(checkbox/images/checkbox-small.png);background-repeat: no-repeat;background-position: top left;margin:3px 5px 0 0;display:block;float: left;}
297
+ #assignments-panel h2 .rokchecks {background-image: url(checkbox/images/checkbox-large.png);width:16px;height:16px;margin-top: 10px;}
298
+ #assignments-panel .rokchecks-active, #gantry-panel .inherit-checkbox .rokchecks-active {background-position: bottom left;}
299
+ #assignments-panel .rokchecks .assignment-checkbox {visibility:hidden;}
300
+ #assignments-panel ul ul {margin-left:18px;}
301
+
302
+ #assigned_override_items {position:absolute;visibility:hidden;}
303
+ */
admin/assets/less/buttons.less ADDED
@@ -0,0 +1,152 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Reset */
2
+ button {
3
+ margin: 0;
4
+ font-size: 100%;
5
+ vertical-align: middle;
6
+ }
7
+ button {
8
+ *overflow: visible; // Inner spacing ie IE6/7
9
+ line-height: normal; // FF3/4 have !important on line-height in UA stylesheet
10
+ }
11
+ button::-moz-focus-inner { // Inner padding and border oddities in FF3/4
12
+ padding: 0;
13
+ border: 0;
14
+ }
15
+ button {
16
+ cursor: pointer; // Cursors on all buttons applied consistently
17
+ -webkit-appearance: button; // Style clickable inputs in iOS
18
+ }
19
+
20
+ /* Button Core */
21
+ .rok-button {
22
+ position: relative;
23
+ font-size: @fontSize;
24
+ line-height: 1em;
25
+ min-width: 15px;
26
+ .border-radius(2px);
27
+ margin-right: 4px;
28
+ padding: 7px 6px;
29
+
30
+ .caret {
31
+ margin: 5px 0 0; // top and left margin like padding top of the button
32
+ .opacity(50);
33
+ }
34
+
35
+ /* inherit core button styles */
36
+ .button();
37
+
38
+ /* fix padding on active */
39
+ &:active, &.rok-button-active {
40
+ padding: 8px 7px; // like base padding + 1px
41
+ }
42
+
43
+ &.rok-button-disabled {
44
+ &, &:hover, &:active {
45
+ padding: 8px 7px;
46
+ }
47
+ }
48
+
49
+ &.rok-button-primary {
50
+ /* primary button looks better with no opacity on icons */
51
+ i {
52
+ .opacity(100);
53
+ }
54
+ }
55
+
56
+ i {
57
+ margin: -1px 0 -2px;
58
+ }
59
+ }
60
+
61
+ .rok-button-primary {
62
+ .rok-button();
63
+ .button(#2a9de6, #1d79b5);
64
+
65
+ &:active, &.rok-button-active {
66
+ #gradient > .vertical(darken(#2a9de6, 5%), darken(#1d79b5, 5%));
67
+ }
68
+
69
+ &.rok-button-disabled, &.rok-button-disabled:hover {
70
+ text-shadow: 0 -1px 0 #fff;
71
+ }
72
+ }
73
+
74
+ .rok-button-secondary {
75
+ .rok-button();
76
+ .button(#999, #666);
77
+
78
+ &:active, &.rok-button-active {
79
+ #gradient > .vertical(darken(#666, 2%), darken(#999, 5%));
80
+ }
81
+ }
82
+
83
+
84
+ /* Groups */
85
+ .rok-buttons-group {
86
+ > * {
87
+ display: inline-block;
88
+ .border-radius(0);
89
+ margin-right: 0;
90
+ margin-left: -3px;
91
+
92
+ &:first-child {
93
+ margin-left: 0;
94
+ .border-radius(3px 0 0 3px);
95
+ }
96
+ &:last-child {
97
+ .border-radius(0 3px 3px 0);
98
+ margin-right: 4px;
99
+ }
100
+ }
101
+ }
102
+
103
+ /* Dropdowns */
104
+ #g4-toolbar .rok-dropdown-open ul.rok-dropdown {
105
+ display: block;
106
+ }
107
+
108
+ #g4-toolbar ul.rok-dropdown {
109
+ .dropdown();
110
+
111
+ li {
112
+ text-align: left;
113
+ }
114
+
115
+ background-color: @dropdownBackground;
116
+ min-width: 160px;
117
+ top: 200%;
118
+ right: -10px;
119
+ left: inherit;
120
+ padding: 4px 0;
121
+ border: 1px solid #fff;
122
+ *border-right-width: 2px;
123
+ *border-bottom-width: 2px;
124
+ .border-radius(2px 2px 4px 4px);
125
+ .box-shadow(~"0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20)");
126
+
127
+ li a {
128
+ color: #666;
129
+ }
130
+
131
+ .divider {
132
+ background-color: darken(@dropdownBackground, 10%);
133
+ border-bottom: 1px solid lighten(@dropdownBackground, 10%);
134
+ margin: ((24px / 4) - 1) 1px; // 24px is the 'a' line-height (below)
135
+ }
136
+
137
+ a {
138
+ margin: 0 -1px; // to compensate the inner border of 1px
139
+ padding: 3px 15px;
140
+ line-height: 24px;
141
+ color: @dropdownLinks;
142
+ text-shadow: 0 1px 0 #fff;
143
+ text-decoration: none;
144
+ }
145
+
146
+ // hover states
147
+ > li > a:hover, .active > a, .active > a:hover {
148
+ #gradient > .vertical(#2a9de6, #1d79b5);
149
+ color: #fff;
150
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.5);
151
+ }
152
+ }
admin/assets/less/fields.less ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* InputText */
2
+ .text-verylong {
3
+ width:375px;
4
+ }
5
+ .text-long {
6
+ width:275px;
7
+ }
8
+ .text-regular {
9
+ width:200px;
10
+ }
11
+ .text-medium {
12
+ width:125px;
13
+ }
14
+ .text-short {
15
+ width:50px;
16
+ }
17
+ .text-color {
18
+ width:75px;
19
+ }
20
+
21
+ textarea.text-textarea {
22
+ width: 350px;
23
+ height: 120px;
24
+ padding: 5px;
25
+ font-family: Monaco,Menlo,Consolas,"Courier New",monospace;
26
+ text-indent: 0;
27
+ }
28
+
29
+ /* Toggle */
30
+ .toggle {
31
+ display: inline-block;
32
+ width: 80px;
33
+ height: 35px;
34
+ background: url (images/toggle.png);
35
+ cursor: hand;
36
+
37
+ .toggle-input {
38
+ display:none;
39
+ }
40
+
41
+ &.toggle-off {
42
+ background-position: 0 0;
43
+ }
44
+
45
+ &.toggle-on {
46
+ background-position: 0 -40px;
47
+ }
48
+
49
+ &.toggle-off.disabled {
50
+ background-position: 0 -80px;
51
+ }
52
+
53
+ &.toggle-on.disabled {
54
+ background-position: 0 -120px;
55
+ }
56
+ }
57
+
58
+ /* SelectedSet */
59
+ .selectedset-group {
60
+ clear: both;
61
+ position:relative;
62
+ }
63
+ .selectset-group-first {
64
+ border-top: none;
65
+ }
66
+ .selectedset-fields, .selectedset-fields .gantry-field {
67
+ position: relative;
68
+ }
69
+ .selectedset-hidden-field {
70
+ visibility: hidden;
71
+ position: absolute;
72
+ top: -2000px;
73
+ }
74
+
75
+ /* Layout Sliders*/
76
+ #g4-panel .navigation li a {color:#444;}
77
+ #g4-panel .navigation li a:hover {color: #D54E21;}
78
+ #g4-panel .navigation li.active a, #gantry-panel .navigation li.active a:hover {color:#1578B9;}
79
+
80
+ .position, .slider {width: 192px;height: 9px;background: url(images/slider.png) 0 0 no-repeat;position: relative;margin-top:10px;}
81
+ .position2, .slider2 {width: 192px;height: 9px;background: url(images/slider.png) 0 -14px no-repeat;position: absolute;width:0px;}
82
+ .position .knob,.slider .knob {width: 24px; height: 24px;top: -8px; left: -8px;background: url(images/slider.png) -195px 0 no-repeat;position: absolute;cursor: pointer;}
83
+ .position-field .chain-toggle, .position-field .chain-showmax {margin-top:-3px;}
84
+
85
+ #positions-tip {background: url(slider/images/slider-tip.png) no-repeat;font-size:12px;width:117px;height:50px;text-shadow: 1px 1px #000; color: #fff;position: absolute;visibility:hidden;text-align:center;padding: 0 4px;line-height:38px;letter-spacing:-1px;top:0;z-index:20;}
86
+
87
+ .navigation {color: #666;}
88
+ .navigation .title, .navigation .list {float: left;}
89
+ .navigation .title {font-size: 100%;}
90
+ .navigation .list {margin:0;padding:0;list-style:none;}
91
+ .navigation .list li {display: inline;}
92
+ .navigation .list li a {display: block;padding: 0 7px;text-decoration: none;color: #aaa;float:left;outline:none;}
93
+ .navigation .list li.active a {font-weight: bold;text-decoration: underline;color:#333;}
94
+
95
+ .mini-container {
96
+ text-align:center;
97
+ background:#fff;
98
+ height:28px;
99
+ padding: 0;
100
+
101
+ color:#555;
102
+ .box-shadow(~"0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff");
103
+ border: 1px solid @inputBorder;
104
+ border-top-color: @inputBorderTop;
105
+ .border-radius(3px);
106
+ }
107
+ .mini-container div {height:28px;line-height:28px;}
108
+ .mini-container .main {background: #666;text-shadow: 1px 1px #1b80a0;color: #fff;}
109
+ .mini-container {width: 192px;}
110
+
111
+ /* Grid */
112
+ .mini-grid-1, .mini-grid-2, .mini-grid-3, .mini-grid-4, .mini-grid-5, .mini-grid-6, .mini-grid-7, .mini-grid-8, .mini-grid-9, .mini-grid-10, .mini-grid-11, .mini-grid-12, .mini-grid-13, .mini-grid-14, .mini-grid-15, .mini-grid-16 {display: inline;float: left;position: relative;}
113
+
114
+ .mini-container {
115
+ .mini-grid {
116
+ border-left: 1px solid #d0d0d0;
117
+ padding-right: 1px;
118
+ &:first-child {
119
+ border-left: 0;
120
+ padding-left: 1px;
121
+ }
122
+ }
123
+
124
+ }
125
+
126
+ .col9 .mini-container .mini-grid-1 {width: 19px;}
127
+ .col9 .mini-container .mini-grid-2 {width: 40px;}
128
+ .col9 .mini-container .mini-grid-3 {width: 61px;}
129
+ .col9 .mini-container .mini-grid-4 {width: 82px;}
130
+ .col9 .mini-container .mini-grid-5 {width: 103px;}
131
+ .col9 .mini-container .mini-grid-6 {width: 124px;}
132
+ .col9 .mini-container .mini-grid-7 {width: 145px;}
133
+ .col9 .mini-container .mini-grid-8 {width: 166px;}
134
+ .col9 .mini-container .mini-grid-9 {width: 190px;}
135
+
136
+ .col12 .mini-container .mini-grid-1 {width: 15px;}
137
+ .col12 .mini-container .mini-grid-2 {width: 30px;}
138
+ .col12 .mini-container .mini-grid-3 {width: 46px;}
139
+ .col12 .mini-container .mini-grid-4 {width: 62px;}
140
+ .col12 .mini-container .mini-grid-5 {width: 78px;}
141
+ .col12 .mini-container .mini-grid-6 {width: 94px;}
142
+ .col12 .mini-container .mini-grid-7 {width: 110px;}
143
+ .col12 .mini-container .mini-grid-8 {width: 126px;}
144
+ .col12 .mini-container .mini-grid-9 {width: 142px;}
145
+ .col12 .mini-container .mini-grid-10 {width: 158px;}
146
+ .col12 .mini-container .mini-grid-11 {width: 174px;}
147
+ .col12 .mini-container .mini-grid-12 {width: 190px;}
148
+
149
+ .col16 .mini-container .mini-grid-1 {width: 10px;}
150
+ .col16 .mini-container .mini-grid-2 {width: 22px;}
151
+ .col16 .mini-container .mini-grid-3 {width: 34px;}
152
+ .col16 .mini-container .mini-grid-4 {width: 46px;}
153
+ .col16 .mini-container .mini-grid-5 {width: 58px;}
154
+ .col16 .mini-container .mini-grid-6 {width: 70px;}
155
+ .col16 .mini-container .mini-grid-7 {width: 82px;}
156
+ .col16 .mini-container .mini-grid-8 {width: 94px;}
157
+ .col16 .mini-container .mini-grid-9 {width: 106px;}
158
+ .col16 .mini-container .mini-grid-10 {width: 118px;}
159
+ .col16 .mini-container .mini-grid-11 {width: 130px;}
160
+ .col16 .mini-container .mini-grid-12 {width: 142px;}
161
+ .col16 .mini-container .mini-grid-13 {width: 154px;}
162
+ .col16 .mini-container .mini-grid-14 {width: 166px;}
163
+ .col16 .mini-container .mini-grid-15 {width: 178px;}
164
+ .col16 .mini-container .mini-grid-16 {width: 190px;}
165
+
166
+ // THIS FILE NEEDS TO BE REWORKED!
167
+
168
+ .graphic-level {background: url(images/graphic-level.png) no-repeat;padding-top:15px;}
169
+ .miniatures {float: left;}
170
+ .current-positions {padding-left:210px;color:#999;}
171
+ .gradient-preview {width: 100%; height: 100%;}
admin/assets/less/filters.less ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .g4-input-wrapper {
2
+ background:#fff;
3
+ margin: 0;
4
+ padding: 3px;
5
+ .border-radius(3px);
6
+ border: 1px solid #b6b6b6;
7
+ .box-shadow(0 6px 6px -6px rgba(0, 0, 0, 0.2) inset);
8
+ cursor: text;
9
+
10
+ input {
11
+ color: #666;
12
+ margin: 0;
13
+ padding: 0;
14
+ border: 0;
15
+ float: none !important;
16
+ width: 100%;
17
+
18
+ &, &:focus {
19
+ background: #fff;
20
+ }
21
+ }
22
+ }
23
+
admin/assets/less/fixes-ie.less ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "mixins/bootstrap/mixins.less";
2
+
3
+ #g4-toolbar,
4
+ #g4-container .menuitems-involved,
5
+ #g4-container .presets-involved,
6
+ .rok-button-secondary,
7
+ .g4-tabs li.active,
8
+ #g4-presets {
9
+ .reset-filter() !important;
10
+ }
11
+
12
+ .moor-layout {
13
+ .reset-filter() !important;
14
+ background: #6a6a6a !important;
15
+ }
admin/assets/less/form.less ADDED
@@ -0,0 +1,225 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .g4-wrap {
2
+
3
+ select,
4
+ textarea,
5
+ input[type="text"],
6
+ input[type="password"],
7
+ input[type="datetime"],
8
+ input[type="datetime-local"],
9
+ input[type="date"],
10
+ input[type="month"],
11
+ input[type="time"],
12
+ input[type="week"],
13
+ input[type="number"],
14
+ input[type="email"],
15
+ input[type="url"],
16
+ input[type="search"],
17
+ input[type="tel"],
18
+ input[type="color"],
19
+ .readonly {
20
+ display: inline-block;
21
+ height: @baseLineHeight;
22
+ padding: 5px 0px;
23
+ text-indent:10px;
24
+ margin-left: 0;
25
+ margin-bottom: 0;
26
+ font-size: @baseFontSize;
27
+ background: @white;
28
+ line-height: @baseLineHeight;
29
+ color: @gray;
30
+
31
+ .box-shadow(~"0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff");
32
+ border: 1px solid @inputBorder;
33
+ border-top-color: @inputBorderTop;
34
+ .border-radius(3px);
35
+ z-index:2;
36
+ }
37
+
38
+ select {
39
+ text-indent: 0;
40
+ outline: 0;
41
+
42
+ &[disabled]{
43
+ color: #aaa;
44
+ }
45
+ }
46
+
47
+ input.required {
48
+ background: @white;
49
+ }
50
+
51
+ input.readonly, input.disabled {
52
+ background: @lightGray;
53
+ color: lighten(@gray, 10%);
54
+ font-weight: normal;
55
+ .box-shadow(~"0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff");
56
+ border: 1px solid lighten(@inputBorder, 2%);
57
+ }
58
+
59
+ .input-append {
60
+ input[type="text"] {
61
+ .border-radius(3px 0 0 3px);
62
+ }
63
+ .add-on {
64
+ .border-radius(0 3px 3px 0);
65
+ margin-left: -1px;
66
+ }
67
+ }
68
+
69
+ .input-prepend {
70
+ input[type="text"] {
71
+ .border-radius(0 3px 3px 0);
72
+ }
73
+ .add-on {
74
+ .border-radius(3px 0 0 3px);
75
+ margin-right: -4px;
76
+ }
77
+ }
78
+
79
+ .add-on {
80
+ display: inline-block;
81
+ .box-shadow(0 1px 0 0 #fff);
82
+ border: 1px solid @inputBorder;
83
+ border-top-color: @inputBorderTop;
84
+ background: darken(@white, 2%);
85
+ color: darken(@white, 40%);
86
+ padding: 5px 10px;
87
+ height: 18px;
88
+ width: auto;
89
+ line-height: 18px;
90
+ }
91
+
92
+ select, input[type="file"] {
93
+ height: 30px;
94
+ line-height: 30px;
95
+ }
96
+
97
+
98
+ label {
99
+ display:block;
100
+ position: relative;
101
+ margin-top: 0;
102
+ margin-bottom: 0px;
103
+ }
104
+
105
+ .chain-label > label {
106
+ height: 16px;
107
+ margin-bottom: 2px;
108
+ }
109
+
110
+ .position-field {
111
+ label {
112
+ margin-top: 3px;
113
+ }
114
+ }
115
+
116
+ .chain-positions {
117
+ .chain-label > label {
118
+ display: none;
119
+ }
120
+ .g-position {
121
+ height: 16px;
122
+ margin-bottom: 0;
123
+ }
124
+ }
125
+
126
+ fieldset.adminform {
127
+ padding: 0;
128
+ margin: 0;
129
+ width: 100%;
130
+
131
+ input, textarea, select, img, button {
132
+ float: inherit;
133
+ margin: 0 0 9px 0;
134
+ }
135
+
136
+ label {
137
+ min-width: inherit;
138
+ }
139
+ }
140
+
141
+ .g4-controlgroup:before,
142
+ .g4-controlgroup:after {
143
+ display: table;
144
+ content: "";
145
+ }
146
+
147
+ .g4-horizontal-form {
148
+ label {
149
+ float: left;
150
+ width: 100px;
151
+ padding-top: 5px !important;
152
+ text-align: right;
153
+ }
154
+ .g4-controls {
155
+ margin-left:120px;
156
+ cursor: text;
157
+
158
+ input, select, textarea {
159
+ width: 100%;
160
+ }
161
+
162
+ }
163
+ }
164
+
165
+ /* Isis Admin template fixes */
166
+ .chzn-done {
167
+ width: auto;
168
+ }
169
+
170
+ .chzn-container-single {
171
+ .chzn-single {
172
+ height: 28px;
173
+ line-height: 29px;
174
+ }
175
+ }
176
+
177
+ }
178
+
179
+ #g4-details {
180
+
181
+ fieldset {
182
+ border: 0;
183
+
184
+ div.g4-controlgroup {
185
+ float:left;
186
+ padding-top:10px;
187
+
188
+ input#jform_title {
189
+ font-size: @baseFontSize;
190
+ }
191
+
192
+
193
+ input#jform_id {
194
+ width: 40px;
195
+ background-color: @lightGray;
196
+ font-size: inherit;
197
+ font-weight: inherit;
198
+ float: inherit;
199
+ border: 1px solid lighten(@inputBorder, 2%);
200
+ margin: 0 0 9px 0;
201
+ }
202
+ }
203
+ }
204
+
205
+ }
206
+
207
+ /* Menu Assignments */
208
+ .panelform div#menu-assignment h3 {margin-bottom:10px;}
209
+ #menu-assignment .menu-links {list-style:none;float:left;width:50%;padding:0;}
210
+ #menu-assignment ul.menu-links li {margin:0;}
211
+ #menu-assignment ul.menu-links label {padding:0;text-align:left;display:inline-block;}
212
+ .assignments-field {margin:0 15px;}
213
+ .assignments-field #menu-assignment {overflow:hidden;}
214
+ .assignments-field .menu-padder {height:1px;background:#ccc;display:inline-block;margin:0 5px 4px 0;}
215
+ .assignments-field h2 {float:left;margin-top:0;margin-bottom:0;}
216
+ .assignments-field h3 {border-bottom:1px solid #ccc;margin-right:15px;}
217
+
218
+ .assignments-field {
219
+ .jform-rightbtn {
220
+ .rok-button();
221
+ float: right;
222
+ }
223
+ }
224
+
225
+
admin/assets/less/global.less ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Core variables and mixins
2
+ @import "variables.less";
3
+ @import "mixins/index.less";
4
+
5
+ // Overrides / Initial Statuses
6
+ @import "reset.less";
7
+ @import "joomla.less";
8
+ @import "wordpress.less";
9
+
10
+ // Main layout setup
11
+ @import "layout.less";
12
+ @import "mediaqueries.less";
13
+ @import "form.less";
14
+ @import "typography.less";
15
+ @import "icons.less";
16
+ @import "buttons.less";
17
+ @import "fields.less";
18
+ @import "presets.less";
19
+ @import "growl.less";
20
+ //@import "filters.less";
21
+ //@import "menu.less";
22
+ //@import "modules-table.less";
23
+
admin/assets/less/growl.less ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .roar-body {
2
+ position: absolute;
3
+ color: @white;
4
+ text-align: left;
5
+ z-index: 999;
6
+
7
+ .roar {
8
+ position: absolute;
9
+ width: 300px;
10
+ cursor: pointer;
11
+
12
+ .roar-bg {
13
+ position: absolute;
14
+ z-index: 1000;
15
+ .square(100%);
16
+ top: 0;
17
+ left: 0;
18
+ background-color: #000;
19
+ .border-radius(8px);
20
+ .box-shadow(~"0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5)");
21
+ }
22
+
23
+ h3, p {
24
+ position: relative;
25
+ margin: 0;
26
+ color: @white;
27
+ visibility: visible;
28
+ z-index: 1001;
29
+ font-size: 13px;
30
+ padding: 5px 10px;
31
+ }
32
+
33
+ h3 {
34
+ }
35
+
36
+ p {
37
+ font-size: 12px;
38
+ padding-top: 0;
39
+ }
40
+ }
41
+ }
admin/assets/less/icons.less ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ i {
2
+ /*background-image: url(../images/icons-sprite.png);
3
+ background-repeat: no-repeat;
4
+ .square(16px);
5
+ display: block;
6
+ */
7
+ /* Spinner */
8
+ &.spinner {
9
+ .opacity(0);
10
+
11
+ &.spinner-16 {
12
+ background-image: url(../images/loader-16.gif);
13
+ }
14
+ &.spinner-32 {
15
+ background-image: url(../images/loader-32.gif);
16
+ .square(32px);
17
+ }
18
+ &.spinner-64 {
19
+ background-image: url(../images/loader-64.gif);
20
+ .square(64px);
21
+ }
22
+ &.spinner-128 {
23
+ background-image: url(../images/loader-128.gif);
24
+ .square(128px);
25
+ }
26
+ }
27
+
28
+ /* Statuses */
29
+ &.published {
30
+ background-position: 0 0;
31
+ }
32
+
33
+ &.unpublished {
34
+ background-position: -16px 0;
35
+ }
36
+
37
+ /* Actions */
38
+ &.info {
39
+ background-position: -32px 0;
40
+ }
41
+
42
+ &.edit {
43
+ background-position: -48px 0;
44
+ }
45
+
46
+ &.plus {
47
+ background-position: -64px 0;
48
+ }
49
+ }
50
+
51
+ .rok-button-primary i {
52
+ /* Actions */
53
+ &.info {
54
+ background-position: -32px -16px;
55
+ }
56
+
57
+ &.edit {
58
+ background-position: -48px -16px;
59
+ }
60
+
61
+ &.plus {
62
+ background-position: -64px -16px;
63
+ }
64
+ }
65
+
66
+ /* XDebug fix */
67
+ .xdebug-var-dump, .xdebug-error {
68
+ i {
69
+ background: none;
70
+ display: inline;
71
+ width: auto;
72
+ height: auto;
73
+ }
74
+ }
admin/assets/less/joomla.less ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // resetting the container wrapper styles
2
+ body {
3
+ line-height: @baseLineHeight !important;
4
+ }
5
+
6
+ body div#element-box, body div#element-box div.m {
7
+ padding: 0;
8
+ border-top: 0;
9
+ border-bottom: 0;
10
+ margin: 0 5px;
11
+ background-color: transparent;
12
+ .border-radius(0 0 4px 4px);
13
+ }
14
+
15
+ body .subhead-collapse {
16
+ display: none;
17
+ }
18
+
19
+ body .container-fluid {
20
+ padding: 0 1px;
21
+ }
22
+
23
+ // resetting focus on inputs
24
+ body input:focus, body select:focus {
25
+ background: @white;
26
+ }
27
+
28
+ // messages
29
+ .g4-messages, .g4-messages .message {
30
+ display: none;
31
+ }
32
+
33
+ //mc reset
34
+
35
+ html #mc-component {
36
+ .g4-wrap {
37
+ margin: -14px -14px;
38
+ }
39
+ #g4-master {
40
+ right: 0;
41
+ }
42
+ }
43
+
44
+ // isis
45
+ body {
46
+ padding-left: 0 !important;
47
+ padding-right: 0 !important;
48
+ .navbar-fixed-top, .navbar-fixed-bottom,
49
+ .container-fluid, .header {
50
+ margin-left: 0;
51
+ margin-right: 0;
52
+ }
53
+ }
54
+
55
+ // bluestork reset
56
+ html {
57
+ overflow-y: auto !important;
58
+
59
+ #toolbar-box {
60
+ display: none;
61
+ }
62
+
63
+ #content-box {
64
+ font-family: Arial, sans-serif;
65
+ float: none;
66
+ border: 0;
67
+ width: auto;
68
+ margin: 0 -10px 10px;
69
+ .border-radius(0);
70
+ }
71
+
72
+ /* Notice Box*/
73
+ #system-message {position:relative;text-shadow: 0 1px 0 #fff;display:none;}
74
+ #system-message .close {position:absolute;right:0;top:0;text-align:center;line-height:35px;width: 35px;height:35px;cursor:pointer;font-size:130%;display:none;}
75
+ #system-message-container #system-message {
76
+ display: block;
77
+ .message{display: none;}
78
+ .error.message {display: block;}
79
+ }
80
+
81
+ // typo resets
82
+
83
+ h1 {
84
+ margin: 0;
85
+ padding: 0;
86
+ font-family: "Oxygen", Arial, sans-serif;
87
+ font-size: 30px;
88
+ color: #484848;
89
+ font-weight: normal;
90
+ text-shadow: 0 1px 0 @white;
91
+ }
92
+ }
admin/assets/less/layout.less ADDED
@@ -0,0 +1,630 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Structure
2
+ .g4-wrapper {
3
+ width: @wrapperWidth;
4
+ }
5
+
6
+ .clr {
7
+ clear:both;
8
+ }
9
+
10
+ .g4-size-60 {
11
+ width: 60%;
12
+ }
13
+
14
+ .g4-size-50 {
15
+ width: 50%;
16
+ }
17
+
18
+ .g4-size-40 {
19
+ width: 40%;
20
+ }
21
+
22
+ .g4-size-35 {
23
+ width: 35%;
24
+ }
25
+
26
+ .g4-size-30 {
27
+ width: 30%;
28
+ }
29
+
30
+ .g4-size-25 {
31
+ width: 25%;
32
+ }
33
+
34
+ .g4-size-20 {
35
+ width: 20%;
36
+ }
37
+
38
+ .g4-size-15 {
39
+ width: 15%;
40
+ }
41
+
42
+ .g4-size-13 {
43
+ width: 13%;
44
+ }
45
+
46
+ #g4-hidden {
47
+ display: none;
48
+ }
49
+
50
+ #g4-logo {
51
+ position:relative;
52
+ float:right;
53
+ margin: 0 0 0 0;
54
+ width: 160px;
55
+ height: 48px;
56
+ overflow:hidden;
57
+
58
+ span {
59
+ display:block;
60
+ position:absolute;
61
+ top: 9px;
62
+ right : 23px;
63
+ width: 120px;
64
+ height: 32px;
65
+ background: url(images/g4-logo-small.png);
66
+ }
67
+ }
68
+
69
+ .g4-tabs {
70
+ display:block;
71
+ height: 50px;
72
+ }
73
+ .g4-actions {
74
+ float: right;
75
+ }
76
+ .g4-tabs, .g4-actions {
77
+ > li {
78
+ float: left;
79
+ vertical-align: middle;
80
+ }
81
+ }
82
+
83
+ .width-100pc {
84
+ width: 100%;
85
+ }
86
+
87
+
88
+
89
+ // Style
90
+
91
+
92
+ #g4-toolbar {
93
+ #gradient > .vertical(#fff, #ededed);
94
+ padding: 30px 0;
95
+ width: 100%;
96
+ .box-shadow(~"0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset");
97
+ h1 {
98
+ padding: 0 15px;
99
+ }
100
+ .rok-button {
101
+ margin-left: 5px;
102
+ font-size: 13px;
103
+ }
104
+ .rok-buttons-group {
105
+ .rok-button:last-child {
106
+ margin-left: -3px;;
107
+ }
108
+
109
+ .caret {
110
+ height: 4px
111
+ }
112
+ }
113
+ }
114
+
115
+ #g4-details-wrapper {
116
+ position: relative;
117
+ }
118
+
119
+ #g4-master {
120
+ position:absolute;
121
+ #gradient > .vertical(#f54221,#ca381c);
122
+ top: -1px;
123
+ bottom: 0px;
124
+ right: 0;
125
+ z-index: 1;
126
+ border: 1px solid #b03018;
127
+ .box-shadow(0 2px 8px 0 rgba(0,0,0,0.3) inset);
128
+
129
+ &.g4-flag-override {
130
+ #gradient > .vertical(#ccc,#999);
131
+ border: 1px solid #999;
132
+ }
133
+
134
+ #g4-flag {
135
+ text-align:center;
136
+ position:relative;
137
+ line-height: 50px;
138
+ font-size: 17px;
139
+ color: #fff;
140
+ text-shadow: 0 -1px 0 rgba(0,0,0,0.5);
141
+
142
+ > .arrow, > .arrow span {
143
+ position: absolute;
144
+ display: block;
145
+ width: 5px;
146
+ }
147
+ > .arrow {
148
+ //@arrowWidth: 5px, @arrowColor: @black, @arrowOffset: 0, @arrowPosition: 50%
149
+ #CSSArrow > .left(7px, #ececec);
150
+ left: -2px;
151
+ top: 50%;
152
+ z-index: 10;
153
+
154
+
155
+ }
156
+ }
157
+ }
158
+
159
+
160
+ #g4-details {
161
+ border-top: 1px solid #fff;
162
+ background: #ececec;
163
+ height: 50px;
164
+ position: relative;
165
+
166
+
167
+
168
+ &.presets-showing {
169
+ border-bottom: 1px solid #cbcbcb;
170
+ }
171
+ }
172
+
173
+ #g4-presets {
174
+ #gradient > .vertical(#ececec, #fff);
175
+ .box-shadow(0 1px 0 0 #fff inset);
176
+ }
177
+
178
+ #g4-container {
179
+ margin-top: -2px;
180
+ padding-bottom: 1px;
181
+ border-bottom: 1px solid #ccc;
182
+ margin: 0;
183
+ .border-radius(0 0 4px 4px);
184
+
185
+ .g4-header {
186
+ border-top: 1px solid #bcbcbc;
187
+ background-color: #e6e6e6;
188
+ .box-shadow(~"0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset");
189
+ }
190
+
191
+ .g4-body {
192
+ background: #fff;
193
+ #gradient > .vertical-three-colors(#f3f3f3, #fff, 50%, #f0f0f0);
194
+
195
+ }
196
+ }
197
+
198
+ .g4-tabs {
199
+ li {
200
+ color: #717077;
201
+ padding: 15px 20px;
202
+ margin: 0; // negative top/bottom margin like above -1px: .g4-header -> .g4-wrapper -> .g4-row -> .g4-column
203
+ text-shadow: 0 1px 0 #fff;
204
+ .box-shadow(~"-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset");
205
+ cursor: pointer;
206
+ &.active .arrow {
207
+ display: none;
208
+ }
209
+
210
+ &:hover {
211
+ color: @black;
212
+ }
213
+
214
+ &.active {
215
+ margin-top: 1px;
216
+ padding-top:14px;
217
+ #gradient > .vertical(#efefef, #ddd);
218
+ .box-shadow(~"-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset");
219
+ color: #2287c7;
220
+ position: relative;
221
+
222
+ .arrow, .arrow span {
223
+ position: absolute;
224
+ display: block;
225
+ }
226
+ .arrow {
227
+ //@arrowWidth: 5px, @arrowColor: @black, @arrowOffset: 0, @arrowPosition: 50%
228
+ #CSSArrow > .bottom(6px, #bbb);
229
+ bottom: 0;
230
+ top: inherit;
231
+ span {
232
+ #CSSArrow > .bottom(6px, #fff);
233
+ margin-left: -6px;
234
+ top: 1px;
235
+
236
+ span {
237
+ #CSSArrow > .bottom(6px, #f6f6f6);
238
+ top: 1px;
239
+ margin-left: -6px;
240
+ }
241
+ }
242
+ }
243
+ }
244
+
245
+ .badge {
246
+ padding: 0;
247
+ .border-radius(0);
248
+ }
249
+ }
250
+ }
251
+
252
+ #g4-container {
253
+ .presets-involved, .overrides-involved, .preset-info, .menuitems-involved {
254
+ .border-radius(20px);
255
+ #gradient > .vertical (#D23C12, #FC562F);
256
+ .box-shadow(~"0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff");
257
+ float: right;
258
+ height: 6px;
259
+ line-height: 7px;
260
+ margin-top:-3px;
261
+ margin-bottom:-5px;
262
+ margin-right:-10px;
263
+ margin-left:10px;
264
+ padding: 9px;
265
+ color: @white;
266
+ text-shadow: none;
267
+ display: none;
268
+ opacity: 0;
269
+ visibility: hidden;
270
+ }
271
+ .preset-info {
272
+ width: 4px;
273
+ height: 4px;
274
+ padding: 4px;
275
+ line-height: 4px;
276
+ .border-radius(30px);
277
+ position: absolute;
278
+ top: 17px;
279
+ left: -5px;
280
+ margin: 0;
281
+ display: block;
282
+ .opacity(100);
283
+ visibility: visible;
284
+ }
285
+
286
+ .overrides-involved {
287
+ #gradient > .vertical (#1d79b5, #2a9de6);
288
+ }
289
+ .menuitems-involved {
290
+ display: block;
291
+ opacity: 1;
292
+ visibility: visible;
293
+ #gradient > .vertical (#bbb, #999);
294
+ }
295
+ .double-badge {
296
+ .presets-involved {
297
+ .border-radius(0 8px 8px 0);
298
+ }
299
+ .overrides-involved {
300
+ .border-radius(8px 0 0 8px);
301
+ }
302
+ }
303
+ }
304
+
305
+ .override-wrap {
306
+ #g4-container {
307
+ .preset-info {
308
+ left: -15px;
309
+ }
310
+ }
311
+ }
312
+
313
+ #g4-actions {
314
+ li {
315
+ margin: 0 4px;
316
+ }
317
+ }
318
+
319
+ #g4-panels {
320
+ padding-top:20px;
321
+ }
322
+
323
+ .g4-panel {
324
+ visibility: hidden;
325
+ margin-bottom: 40px;
326
+ top: -10000px;
327
+ left: -10000px;
328
+ width: 100%;
329
+ border-bottom: 1px solid #ddd;
330
+ .box-shadow(~"0 1px 1px 0 #fefefe");
331
+
332
+ &.active-panel {
333
+ visibility: visible;
334
+ top: 0;
335
+ left: 0;
336
+ }
337
+
338
+ &.panel-overview {
339
+ border: 0;
340
+ margin-bottom: 0;
341
+
342
+ .panelform .g4-row {
343
+ .g4-col2 {
344
+ .box-shadow(none);
345
+ background: inherit;
346
+ }
347
+ }
348
+
349
+ .g4-col1 {
350
+ display:none;
351
+ }
352
+
353
+ div.template-preview {
354
+ float:left;
355
+ margin-right: 35px;
356
+ width: 40%;
357
+ img {
358
+ width:100%;
359
+ margin-top: -10px;
360
+ }
361
+ }
362
+
363
+ .template-description {
364
+ margin-left: 45%;
365
+ margin-right: 20px;
366
+ }
367
+
368
+ img.template-preview {
369
+ float:left;
370
+ margin-right: 30px;
371
+ margin-bottom: 20px;
372
+ }
373
+ }
374
+ }
375
+
376
+ .g4-panel-left, .g4-panel-right {
377
+ float: left;position:relative;
378
+ }
379
+
380
+ .g4-panel-left {
381
+ width: 100%;
382
+ }
383
+
384
+ .panel-overview {
385
+ .g4-panel-left {
386
+ width: 70%;
387
+ }
388
+ .g4-panel-right {
389
+ width: 30%;
390
+ }
391
+ }
392
+
393
+ .g4-panel-hiddens {
394
+ position:absolute;
395
+ visibility:hidden;
396
+ height:0;
397
+ }
398
+
399
+ .backgroundpicker {
400
+ position: relative;
401
+ }
402
+
403
+ .updater-field, .tips-field, .html-field {
404
+ background: #eaeaea;
405
+ border: 1px solid #c8c8c8;
406
+ .border-radius(4px);
407
+ margin-right:20px;
408
+ margin-bottom:20px;
409
+ padding: 20px;
410
+ .box-shadow(~"0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset");
411
+ .h2bar {
412
+ display: block;
413
+ min-height: 36px;
414
+ margin-bottom: 5px;
415
+ padding: 0;
416
+ }
417
+
418
+ }
419
+
420
+ .updater-field {
421
+ #gradient > .vertical(#2A9DE6, #1D79B5);
422
+ &.update {
423
+ #gradient > .vertical(#f54221,#ca381c);
424
+ }
425
+ }
426
+
427
+ .tips-field {
428
+ position: relative;
429
+ padding-bottom: 50px;
430
+ .gantrytips-controller {
431
+ position: absolute;
432
+ bottom: 20px;
433
+ right: 10px;
434
+ .rok-button {
435
+ font-size: 10px;
436
+ color: @gray !important;
437
+ }
438
+ }
439
+ .gantrytips-count {
440
+ position: absolute;
441
+ bottom: 20px;
442
+ left: 20px;
443
+ color: @gray3 !important;
444
+ }
445
+ .gantrytips-wrapper {
446
+ position: relative;
447
+ .gantrytips-tip {
448
+ display: none;
449
+ &:first-child {
450
+ display: block;
451
+ }
452
+ }
453
+ }
454
+ }
455
+
456
+ .panelform {
457
+ display: table;
458
+ border-collapse: collapse;
459
+ width: 100%;
460
+
461
+ .selectedset-fields {
462
+ display: table-row-group;
463
+ }
464
+
465
+ .selectedset-fields .g4-row:first-child .g4-cell.g4-col2 {
466
+ .box-shadow(~"0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset");
467
+ }
468
+
469
+ .g4-row {
470
+ display: table-row;
471
+
472
+ &:first-child .g4-col2{
473
+ .box-shadow(~"0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset");
474
+ }
475
+
476
+ .g4-col1 {
477
+ font-weight: bold;
478
+ text-shadow: 1px 1px 1px #fff;
479
+ color: @gray;
480
+ padding: 0 20px;
481
+
482
+ label {
483
+ padding: 15px 10px 15px 20px;
484
+ }
485
+ }
486
+
487
+ }
488
+
489
+ .g4-cell {
490
+ display: table-cell;
491
+ padding: 10px 20px;
492
+ vertical-align: middle;
493
+
494
+ &.g4-col1 {
495
+ width: 20%;
496
+ background: #f6f6f6;
497
+ .box-shadow(~"0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset");
498
+ }
499
+
500
+ &.g4-col2 {
501
+ display: table-cell;
502
+ padding: 0;
503
+ width: 80%;
504
+ .box-shadow(~"0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset");
505
+ background: #eee;
506
+
507
+
508
+ .g4-col2-wrap {
509
+ padding: 10px 20px;
510
+ position: relative;
511
+ .clearfix();
512
+
513
+ > .arrow, > .arrow span {
514
+ position: absolute;
515
+ display: block;
516
+ width: 5px;
517
+ }
518
+ > .arrow {
519
+ //@arrowWidth: 5px, @arrowColor: @black, @arrowOffset: 0, @arrowPosition: 50%
520
+ #CSSArrow > .left(6px, #ccc);
521
+ left: 0px;
522
+ top: 50%;
523
+ z-index: 10;
524
+
525
+ .panel-overview & {
526
+ display: none;
527
+ }
528
+
529
+ span {
530
+ #CSSArrow > .left(6px, #f6f6f6);
531
+ left: -1px;
532
+ margin-left: -6px;
533
+ }
534
+ }
535
+ }
536
+ }
537
+
538
+ .inherit-checkbox {
539
+ position: relative;
540
+ z-index: 5;
541
+ float: left;
542
+ margin-left: 0;
543
+ margin-top: 15px;
544
+ }
545
+
546
+ .inherit-overlay {
547
+ position: absolute;
548
+ top: 1px;
549
+ right: 1px;
550
+ bottom: 1px;
551
+ left: 1px;
552
+ background: #efefef;
553
+ z-index: 5;
554
+ }
555
+ }
556
+ }
557
+
558
+ .wrapper {
559
+ .chain {
560
+ display: inline-block;
561
+ vertical-align: top;
562
+ margin-right: 20px;
563
+
564
+ &.chain-hidden {
565
+ margin-right: 0;
566
+ }
567
+
568
+ }
569
+ }
570
+
571
+ .group {
572
+ clear: both;
573
+ height:32px;
574
+ margin: 0 0 10px;
575
+ .alias-label {
576
+ float: left;
577
+ width: 150px;
578
+ padding-top: 5px;
579
+ }
580
+ }
581
+ .group-left, .group-label, .group .wrapper {
582
+ float:left;
583
+ }
584
+ .group-right {
585
+ float:left;
586
+ margin-left:25px;
587
+ }
588
+ .group-none {
589
+ float:none;
590
+ clear:both;
591
+ }
592
+ .g4-wrap {
593
+ .group-label {
594
+ display: block;
595
+ position: relative;
596
+ text-align:right;
597
+ width: 75px;
598
+ display: block;
599
+ margin-right: 10px;
600
+ label {
601
+ display: inline-block;
602
+ line-height: 12px;
603
+ margin: 8px 5px 0 0;
604
+ width: 100%;
605
+ vertical-align: middle;
606
+ }
607
+ }
608
+ }
609
+
610
+
611
+ .group-right .selectbox-wrapper {
612
+ margin-right: 24px;
613
+ }
614
+ .group-none .group-label {
615
+ width:50%;
616
+ }
617
+ .group-gradient {
618
+ border:1px solid #ccc;
619
+ padding: 1px;
620
+ height: 40px;
621
+ margin-right: 20px;
622
+ .border-radius(4px);
623
+ .box-shadow(0 1px 0 0 #fff);
624
+ }
625
+
626
+ .assignments-field {
627
+ .g4-cell.g4-col1 {
628
+ vertical-align:top;
629
+ }
630
+ }
admin/assets/less/mediaqueries.less ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @media (max-width: 979px) {
2
+ .g4-tabs {
3
+ li {
4
+ padding: 15px 15px;
5
+ }
6
+ }
7
+ }
8
+
9
+ @media (min-width: 768px) {
10
+
11
+ }
12
+
13
+ @media (max-width: 767px) {
14
+
15
+ .btn-subhead {
16
+ display: none !important;
17
+ }
18
+
19
+ .container-fluid {
20
+ margin: 0 -20px;
21
+
22
+ #g4-master {
23
+ width: 90px;
24
+ height: 50px;
25
+ }
26
+
27
+ #g4-details {
28
+ height: auto;
29
+ padding-bottom: 15px;
30
+
31
+ .g4-controlgroup {
32
+ width: 100%;
33
+ .g4-controls {
34
+ margin-right: 130px;
35
+ }
36
+
37
+ select {max-width: 120px;}
38
+ }
39
+ }
40
+
41
+ }
42
+
43
+ #g4-toolbar {
44
+ ul.g4-actions {
45
+ float: none;
46
+ display: block;
47
+ margin-top: 15px;
48
+ margin-bottom: -10px;
49
+ margin-left: 15px;
50
+ .clearfix();
51
+
52
+ ul.rok-dropdown {
53
+ right: inherit;
54
+ left: -43px;
55
+ }
56
+
57
+ }
58
+ }
59
+ .g4-tabs {
60
+ li {
61
+ padding: 15px 10px;
62
+ .menuitems-involved {
63
+ margin-left: 5px !important;
64
+ margin-right: -5px !important;
65
+ }
66
+ }
67
+ }
68
+
69
+ .panel-overview .g4-panel-left, .panel-overview .g4-panel-right,
70
+ .g4-panel.panel-overview div.template-preview, .g4-panel.panel-overview .template-description {
71
+ float: none;
72
+ width: 100%;
73
+
74
+ .updater-field, .tips-field, .html-field {
75
+ margin: 10px 20px;
76
+ }
77
+ }
78
+
79
+ .g4-panel.panel-overview div.template-preview, .g4-panel.panel-overview .template-description {
80
+ margin: 0 0 20px;
81
+
82
+ img {
83
+ margin: -10px auto 0;
84
+ display: block;
85
+ }
86
+ }
87
+ }
admin/assets/less/mixins/bootstrap/mixins.less ADDED
@@ -0,0 +1,631 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Mixins.less
2
+ // Snippets of reusable CSS to develop faster and keep code readable
3
+ // -----------------------------------------------------------------
4
+
5
+
6
+ // UTILITY MIXINS
7
+ // --------------------------------------------------
8
+
9
+ // Clearfix
10
+ // --------
11
+ // For clearing floats like a boss h5bp.com/q
12
+ .clearfix {
13
+ *zoom: 1;
14
+ &:before,
15
+ &:after {
16
+ display: table;
17
+ content: "";
18
+ }
19
+ &:after {
20
+ clear: both;
21
+ }
22
+ }
23
+
24
+ // Webkit-style focus
25
+ // ------------------
26
+ .tab-focus() {
27
+ // Default
28
+ outline: thin dotted #333;
29
+ // Webkit
30
+ outline: 5px auto -webkit-focus-ring-color;
31
+ outline-offset: -2px;
32
+ }
33
+
34
+ // Center-align a block level element
35
+ // ----------------------------------
36
+ .center-block() {
37
+ display: block;
38
+ margin-left: auto;
39
+ margin-right: auto;
40
+ }
41
+
42
+ // IE7 inline-block
43
+ // ----------------
44
+ .ie7-inline-block() {
45
+ *display: inline; /* IE7 inline-block hack */
46
+ *zoom: 1;
47
+ }
48
+
49
+ // IE7 likes to collapse whitespace on either side of the inline-block elements.
50
+ // Ems because we're attempting to match the width of a space character. Left
51
+ // version is for form buttons, which typically come after other elements, and
52
+ // right version is for icons, which come before. Applying both is ok, but it will
53
+ // mean that space between those elements will be .6em (~2 space characters) in IE7,
54
+ // instead of the 1 space in other browsers.
55
+ .ie7-restore-left-whitespace() {
56
+ *margin-left: .3em;
57
+
58
+ &:first-child {
59
+ *margin-left: 0;
60
+ }
61
+ }
62
+
63
+ .ie7-restore-right-whitespace() {
64
+ *margin-right: .3em;
65
+
66
+ &:last-child {
67
+ *margin-left: 0;
68
+ }
69
+ }
70
+
71
+ // Sizing shortcuts
72
+ // -------------------------
73
+ .size(@height, @width) {
74
+ width: @width;
75
+ height: @height;
76
+ }
77
+ .square(@size) {
78
+ .size(@size, @size);
79
+ }
80
+
81
+ // Placeholder text
82
+ // -------------------------
83
+ .placeholder(@color: @placeholderText) {
84
+ :-moz-placeholder {
85
+ color: @color;
86
+ }
87
+ ::-webkit-input-placeholder {
88
+ color: @color;
89
+ }
90
+ }
91
+
92
+ // Text overflow
93
+ // -------------------------
94
+ // Requires inline-block or block for proper styling
95
+ .text-overflow() {
96
+ overflow: hidden;
97
+ text-overflow: ellipsis;
98
+ white-space: nowrap;
99
+ }
100
+
101
+ // CSS image replacement
102
+ // -------------------------
103
+ // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
104
+ .hide-text {
105
+ font: 0/0 a;
106
+ color: transparent;
107
+ text-shadow: none;
108
+ background-color: transparent;
109
+ border: 0;
110
+ }
111
+
112
+
113
+ // FONTS
114
+ // --------------------------------------------------
115
+
116
+ #font {
117
+ #family {
118
+ .serif() {
119
+ font-family: @serifFontFamily;
120
+ }
121
+ .sans-serif() {
122
+ font-family: @sansFontFamily;
123
+ }
124
+ .monospace() {
125
+ font-family: @monoFontFamily;
126
+ }
127
+ }
128
+ .shorthand(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
129
+ font-size: @size;
130
+ font-weight: @weight;
131
+ line-height: @lineHeight;
132
+ }
133
+ .serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
134
+ #font > #family > .serif;
135
+ #font > .shorthand(@size, @weight, @lineHeight);
136
+ }
137
+ .sans-serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
138
+ #font > #family > .sans-serif;
139
+ #font > .shorthand(@size, @weight, @lineHeight);
140
+ }
141
+ .monospace(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
142
+ #font > #family > .monospace;
143
+ #font > .shorthand(@size, @weight, @lineHeight);
144
+ }
145
+ }
146
+
147
+
148
+ // FORMS
149
+ // --------------------------------------------------
150
+
151
+ // Block level inputs
152
+ .input-block-level {
153
+ display: block;
154
+ width: 100%;
155
+ min-height: 28px; // Make inputs at least the height of their button counterpart
156
+ .box-sizing(border-box); // Makes inputs behave like true block-level elements
157
+ }
158
+
159
+
160
+ // Mixin for form field states
161
+ .formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) {
162
+ // Set the text color
163
+ > label,
164
+ .help-block,
165
+ .help-inline {
166
+ color: @textColor;
167
+ }
168
+ // Style inputs accordingly
169
+ input,
170
+ select,
171
+ textarea {
172
+ color: @textColor;
173
+ border-color: @borderColor;
174
+ &:focus {
175
+ border-color: darken(@borderColor, 10%);
176
+ .box-shadow(0 0 6px lighten(@borderColor, 20%));
177
+ }
178
+ }
179
+ // Give a small background color for input-prepend/-append
180
+ .input-prepend .add-on,
181
+ .input-append .add-on {
182
+ color: @textColor;
183
+ background-color: @backgroundColor;
184
+ border-color: @textColor;
185
+ }
186
+ }
187
+
188
+
189
+
190
+ // CSS3 PROPERTIES
191
+ // --------------------------------------------------
192
+
193
+ // Border Radius
194
+ .border-radius(@radius) {
195
+ -webkit-border-radius: @radius;
196
+ -moz-border-radius: @radius;
197
+ border-radius: @radius;
198
+ }
199
+
200
+ // Drop shadows
201
+ .box-shadow(@shadow) {
202
+ -webkit-box-shadow: @shadow;
203
+ -moz-box-shadow: @shadow;
204
+ box-shadow: @shadow;
205
+ }
206
+
207
+ // Transitions
208
+ .transition(@transition) {
209
+ -webkit-transition: @transition;
210
+ -moz-transition: @transition;
211
+ -ms-transition: @transition;
212
+ -o-transition: @transition;
213
+ transition: @transition;
214
+ }
215
+
216
+ // Transformations
217
+ .rotate(@degrees) {
218
+ -webkit-transform: rotate(@degrees);
219
+ -moz-transform: rotate(@degrees);
220
+ -ms-transform: rotate(@degrees);
221
+ -o-transform: rotate(@degrees);
222
+ transform: rotate(@degrees);
223
+ }
224
+ .scale(@ratio) {
225
+ -webkit-transform: scale(@ratio);
226
+ -moz-transform: scale(@ratio);
227
+ -ms-transform: scale(@ratio);
228
+ -o-transform: scale(@ratio);
229
+ transform: scale(@ratio);
230
+ }
231
+ .translate(@x, @y) {
232
+ -webkit-transform: translate(@x, @y);
233
+ -moz-transform: translate(@x, @y);
234
+ -ms-transform: translate(@x, @y);
235
+ -o-transform: translate(@x, @y);
236
+ transform: translate(@x, @y);
237
+ }
238
+ .skew(@x, @y) {
239
+ -webkit-transform: skew(@x, @y);
240
+ -moz-transform: skew(@x, @y);
241
+ -ms-transform: skew(@x, @y);
242
+ -o-transform: skew(@x, @y);
243
+ transform: skew(@x, @y);
244
+ }
245
+ .translate3d(@x, @y, @z) {
246
+ -webkit-transform: translate(@x, @y, @z);
247
+ -moz-transform: translate(@x, @y, @z);
248
+ -ms-transform: translate(@x, @y, @z);
249
+ -o-transform: translate(@x, @y, @z);
250
+ transform: translate(@x, @y, @z);
251
+ }
252
+
253
+ // Backface visibility
254
+ // Prevent browsers from flickering when using CSS 3D transforms.
255
+ // Default value is `visible`, but can be changed to `hidden
256
+ // See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples
257
+ .backface-visibility(@visibility){
258
+ -webkit-backface-visibility: @visibility;
259
+ -moz-backface-visibility: @visibility;
260
+ -ms-backface-visibility: @visibility;
261
+ backface-visibility: @visibility;
262
+ }
263
+
264
+ // Background clipping
265
+ // Heads up: FF 3.6 and under need "padding" instead of "padding-box"
266
+ .background-clip(@clip) {
267
+ -webkit-background-clip: @clip;
268
+ -moz-background-clip: @clip;
269
+ background-clip: @clip;
270
+ }
271
+
272
+ // Background sizing
273
+ .background-size(@size){
274
+ -webkit-background-size: @size;
275
+ -moz-background-size: @size;
276
+ -o-background-size: @size;
277
+ background-size: @size;
278
+ }
279
+
280
+
281
+ // Box sizing
282
+ .box-sizing(@boxmodel) {
283
+ -webkit-box-sizing: @boxmodel;
284
+ -moz-box-sizing: @boxmodel;
285
+ -ms-box-sizing: @boxmodel;
286
+ box-sizing: @boxmodel;
287
+ }
288
+
289
+ // User select
290
+ // For selecting text on the page
291
+ .user-select(@select) {
292
+ -webkit-user-select: @select;
293
+ -moz-user-select: @select;
294
+ -ms-user-select: @select;
295
+ -o-user-select: @select;
296
+ user-select: @select;
297
+ }
298
+
299
+ // Resize anything
300
+ .resizable(@direction) {
301
+ resize: @direction; // Options: horizontal, vertical, both
302
+ overflow: auto; // Safari fix
303
+ }
304
+
305
+ // CSS3 Content Columns
306
+ .content-columns(@columnCount, @columnGap: @gridGutterWidth) {
307
+ -webkit-column-count: @columnCount;
308
+ -moz-column-count: @columnCount;
309
+ column-count: @columnCount;
310
+ -webkit-column-gap: @columnGap;
311
+ -moz-column-gap: @columnGap;
312
+ column-gap: @columnGap;
313
+ }
314
+
315
+ // Opacity
316
+ .opacity(@opacity) {
317
+ opacity: @opacity / 100;
318
+ filter: ~"alpha(opacity=@{opacity})";
319
+ }
320
+
321
+
322
+
323
+ // BACKGROUNDS
324
+ // --------------------------------------------------
325
+
326
+ // Add an alphatransparency value to any background or border color (via Elyse Holladay)
327
+ #translucent {
328
+ .background(@color: @white, @alpha: 1) {
329
+ background-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
330
+ }
331
+ .border(@color: @white, @alpha: 1) {
332
+ border-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
333
+ .background-clip(padding-box);
334
+ }
335
+ }
336
+
337
+ // Gradient Bar Colors for buttons and alerts
338
+ .gradientBar(@primaryColor, @secondaryColor) {
339
+ #gradient > .vertical(@primaryColor, @secondaryColor);
340
+ border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);
341
+ border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
342
+ }
343
+
344
+ // Gradients
345
+ #gradient {
346
+ .horizontal(@startColor: #555, @endColor: #333) {
347
+ background-color: @endColor;
348
+ background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
349
+ background-image: -ms-linear-gradient(left, @startColor, @endColor); // IE10
350
+ background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
351
+ background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
352
+ background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
353
+ background-image: linear-gradient(left, @startColor, @endColor); // Le standard
354
+ background-repeat: repeat-x;
355
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",@startColor,@endColor)); // IE9 and down
356
+ }
357
+ .vertical(@startColor: #555, @endColor: #333) {
358
+ background-color: mix(@startColor, @endColor, 60%);
359
+ background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
360
+ background-image: -ms-linear-gradient(top, @startColor, @endColor); // IE10
361
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
362
+ background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
363
+ background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
364
+ background-image: linear-gradient(top, @startColor, @endColor); // The standard
365
+ background-repeat: repeat-x;
366
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down
367
+ }
368
+ .directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
369
+ background-color: @endColor;
370
+ background-repeat: repeat-x;
371
+ background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
372
+ background-image: -ms-linear-gradient(@deg, @startColor, @endColor); // IE10
373
+ background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
374
+ background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
375
+ background-image: linear-gradient(@deg, @startColor, @endColor); // The standard
376
+ }
377
+ .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
378
+ background-color: mix(@midColor, @endColor, 80%);
379
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
380
+ background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
381
+ background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
382
+ background-image: -ms-linear-gradient(@startColor, @midColor @colorStop, @endColor);
383
+ background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
384
+ background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
385
+ background-repeat: no-repeat;
386
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down, gets no color-stop at all for proper fallback
387
+ }
388
+ .radial(@innerColor: #555, @outerColor: #333) {
389
+ background-color: @outerColor;
390
+ background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
391
+ background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
392
+ background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
393
+ background-image: -ms-radial-gradient(circle, @innerColor, @outerColor);
394
+ background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
395
+ background-repeat: no-repeat;
396
+ }
397
+ .striped(@color, @angle: -45deg) {
398
+ background-color: @color;
399
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
400
+ background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
401
+ background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
402
+ background-image: -ms-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
403
+ background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
404
+ background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
405
+ }
406
+ }
407
+ // Reset filters for IE
408
+ .reset-filter() {
409
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
410
+ }
411
+
412
+
413
+
414
+ // COMPONENT MIXINS
415
+ // --------------------------------------------------
416
+
417
+ // Horizontal dividers
418
+ // -------------------------
419
+ // Dividers (basically an hr) within dropdowns and nav lists
420
+ .nav-divider() {
421
+ // IE7 needs a set width since we gave a height. Restricting just
422
+ // to IE7 to keep the 1px left/right space in other browsers.
423
+ // It is unclear where IE is getting the extra space that we need
424
+ // to negative-margin away, but so it goes.
425
+ *width: 100%;
426
+ height: 1px;
427
+ margin: ((@baseLineHeight / 2) - 1) 1px; // 8px 1px
428
+ *margin: -5px 0 5px;
429
+ overflow: hidden;
430
+ background-color: #e5e5e5;
431
+ border-bottom: 1px solid @white;
432
+ }
433
+
434
+ // Button backgrounds
435
+ // ------------------
436
+ .buttonBackground(@startColor, @endColor) {
437
+ // gradientBar will set the background to a pleasing blend of these, to support IE<=9
438
+ .gradientBar(@startColor, @endColor);
439
+ *background-color: @endColor; /* Darken IE7 buttons by default so they stand out more given they won't have borders */
440
+ .reset-filter();
441
+
442
+ // in these cases the gradient won't cover the background, so we override
443
+ &:hover, &:active, &.active, &.disabled, &[disabled] {
444
+ background-color: @endColor;
445
+ *background-color: darken(@endColor, 5%);
446
+ }
447
+
448
+ // IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves
449
+ &:active,
450
+ &.active {
451
+ background-color: darken(@endColor, 10%) e("\9");
452
+ }
453
+ }
454
+
455
+ // Navbar vertical align
456
+ // -------------------------
457
+ // Vertically center elements in the navbar.
458
+ // Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin.
459
+ .navbarVerticalAlign(@elementHeight) {
460
+ margin-top: (@navbarHeight - @elementHeight) / 2;
461
+ }
462
+
463
+ // Popover arrows
464
+ // -------------------------
465
+ // For tipsies and popovers
466
+ #popoverArrow {
467
+ .top(@arrowWidth: 5px, @color: @black) {
468
+ bottom: 0;
469
+ left: 50%;
470
+ margin-left: -@arrowWidth;
471
+ border-left: @arrowWidth solid transparent;
472
+ border-right: @arrowWidth solid transparent;
473
+ border-top: @arrowWidth solid @color;
474
+ }
475
+ .left(@arrowWidth: 5px, @color: @black) {
476
+ top: 50%;
477
+ right: 0;
478
+ margin-top: -@arrowWidth;
479
+ border-top: @arrowWidth solid transparent;
480
+ border-bottom: @arrowWidth solid transparent;
481
+ border-left: @arrowWidth solid @color;
482
+ }
483
+ .bottom(@arrowWidth: 5px, @color: @black) {
484
+ top: 0;
485
+ left: 50%;
486
+ margin-left: -@arrowWidth;
487
+ border-left: @arrowWidth solid transparent;
488
+ border-right: @arrowWidth solid transparent;
489
+ border-bottom: @arrowWidth solid @color;
490
+ }
491
+ .right(@arrowWidth: 5px, @color: @black) {
492
+ top: 50%;
493
+ left: 0;
494
+ margin-top: -@arrowWidth;
495
+ border-top: @arrowWidth solid transparent;
496
+ border-bottom: @arrowWidth solid transparent;
497
+ border-right: @arrowWidth solid @color;
498
+ }
499
+ }
500
+
501
+ // Grid System
502
+ // -----------
503
+
504
+ // Centered container element
505
+ .container-fixed() {
506
+ margin-right: auto;
507
+ margin-left: auto;
508
+ .clearfix();
509
+ }
510
+
511
+ // Table columns
512
+ .tableColumns(@columnSpan: 1) {
513
+ float: none; // undo default grid column styles
514
+ width: ((@gridColumnWidth) * @columnSpan) + (@gridGutterWidth * (@columnSpan - 1)) - 16; // 16 is total padding on left and right of table cells
515
+ margin-left: 0; // undo default grid column styles
516
+ }
517
+
518
+ // Make a Grid
519
+ // Use .makeRow and .makeColumn to assign semantic layouts grid system behavior
520
+ .makeRow() {
521
+ margin-left: @gridGutterWidth * -1;
522
+ .clearfix();
523
+ }
524
+ .makeColumn(@columns: 1, @offset: 0) {
525
+ float: left;
526
+ margin-left: (@gridColumnWidth * @offset) + (@gridGutterWidth * (@offset - 1)) + (@gridGutterWidth * 2);
527
+ width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
528
+ }
529
+
530
+ // The Grid
531
+ #grid {
532
+
533
+ .core (@gridColumnWidth, @gridGutterWidth) {
534
+
535
+ .spanX (@index) when (@index > 0) {
536
+ (~".span@{index}") { .span(@index); }
537
+ .spanX(@index - 1);
538
+ }
539
+ .spanX (0) {}
540
+
541
+ .offsetX (@index) when (@index > 0) {
542
+ (~".offset@{index}") { .offset(@index); }
543
+ .offsetX(@index - 1);
544
+ }
545
+ .offsetX (0) {}
546
+
547
+ .offset (@columns) {
548
+ margin-left: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns + 1));
549
+ }
550
+
551
+ .span (@columns) {
552
+ width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
553
+ }
554
+
555
+ .row {
556
+ margin-left: @gridGutterWidth * -1;
557
+ .clearfix();
558
+ }
559
+
560
+ [class*="span"] {
561
+ float: left;
562
+ margin-left: @gridGutterWidth;
563
+ }
564
+
565
+ // Set the container width, and override it for fixed navbars in media queries
566
+ .container,
567
+ .navbar-fixed-top .container,
568
+ .navbar-fixed-bottom .container { .span(@gridColumns); }
569
+
570
+ // generate .spanX and .offsetX
571
+ .spanX (@gridColumns);
572
+ .offsetX (@gridColumns);
573
+
574
+ }
575
+
576
+ .fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) {
577
+
578
+ .spanX (@index) when (@index > 0) {
579
+ (~".span@{index}") { .span(@index); }
580
+ .spanX(@index - 1);
581
+ }
582
+ .spanX (0) {}
583
+
584
+ .span (@columns) {
585
+ width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1));
586
+ *width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%);
587
+ }
588
+
589
+ .row-fluid {
590
+ width: 100%;
591
+ .clearfix();
592
+ [class*="span"] {
593
+ .input-block-level();
594
+ float: left;
595
+ margin-left: @fluidGridGutterWidth;
596
+ *margin-left: @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
597
+ }
598
+ [class*="span"]:first-child {
599
+ margin-left: 0;
600
+ }
601
+
602
+ // generate .spanX
603
+ .spanX (@gridColumns);
604
+ }
605
+
606
+ }
607
+
608
+ .input(@gridColumnWidth, @gridGutterWidth) {
609
+
610
+ .spanX (@index) when (@index > 0) {
611
+ (~"input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index}") { .span(@index); }
612
+ .spanX(@index - 1);
613
+ }
614
+ .spanX (0) {}
615
+
616
+ .span(@columns) {
617
+ width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 10;
618
+ }
619
+
620
+ input,
621
+ textarea,
622
+ .uneditable-input {
623
+ margin-left: 0; // override margin-left from core grid system
624
+ }
625
+
626
+ // generate .spanX
627
+ .spanX (@gridColumns);
628
+
629
+ }
630
+
631
+ }
admin/assets/less/mixins/index.less ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @version $Id: index.less 58849 2013-01-16 05:47:28Z btowles $
3
+ * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
+ * @license http://www.rockettheme.com/legal/license.php RocketTheme Proprietary Use License
6
+ */
7
+
8
+ @import "bootstrap/mixins.less";
9
+ @import "rockettheme/mixins.less";
admin/assets/less/mixins/rockettheme/buttons.less ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @version $Id: buttons.less 58849 2013-01-16 05:47:28Z btowles $
3
+ * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
+ * @license http://www.rockettheme.com/legal/license.php RocketTheme Proprietary Use License
6
+ */
7
+
8
+ /* global button styling */
9
+ .buttonStyle(@startColor: #f0f0f0, @endColor: #ebebeb){
10
+ vertical-align: middle;
11
+ text-align: center;
12
+ cursor: pointer;
13
+ .user-select(none);
14
+ .ie7-restore-left-whitespace();
15
+
16
+ #gradient > .vertical(@startColor, @endColor);
17
+ }
18
+
19
+ /* light button */
20
+ .button(@startColor: #f0f0f0, @endColor: #ebebeb) when (lightness(@endColor) >= 50%){
21
+ color: #65646A;
22
+ border-width: 1px;
23
+ border-style: solid;
24
+ border-color: fade(@light, 85%) fade(@light, 85%) darken(@endColor, 2%);
25
+ text-shadow: 0 1px 0 lighten(@startColor, 6%);
26
+ @shadowCalc: darken(@endColor, 21%);
27
+ .box-shadow(~"0 0 0 1px @{shadowCalc}, 0 3px 5px #c6c6c6");
28
+ .buttonStyle(@startColor, @endColor);
29
+
30
+ .caret { .caret(#65646A); }
31
+
32
+ &:hover, &.rok-button-hover {
33
+ color: #484848;
34
+
35
+ .caret { .caret(#484848); }
36
+ #gradient > .vertical(lighten(@startColor, 4%), lighten(@endColor, 4%));
37
+ }
38
+
39
+ &:active, &.rok-button-active {
40
+ color: #464646;
41
+ border: 0;
42
+
43
+ .caret { .caret(#464646); }
44
+ @shadowCalc: darken(@endColor, 29%); // workaround: temp var so we can escape it next line
45
+ .box-shadow(~"0 0 0 1px @{shadowCalc}, 0 1px 1px #fff");
46
+ #gradient > .vertical(darken(@startColor, 1%), darken(@endColor, 1%));
47
+ }
48
+
49
+ &.rok-button-disabled {
50
+ &, &:hover, &:active {
51
+ cursor: default;
52
+ color: #929292;
53
+ border: 0;
54
+
55
+ .caret { .caret(#464646); }
56
+ @shadowCalc: darken(@endColor, 19%); // workaround: temp var so we can escape it next line
57
+ .box-shadow(~"0 0 0 1px @{shadowCalc}, 0 1px 1px #fff");
58
+ #gradient > .vertical(darken(@startColor, 1%), darken(@endColor, 1%));
59
+
60
+ i {
61
+ .opacity(50);
62
+ }
63
+ }
64
+ }
65
+ }
66
+
67
+ /* dark button */
68
+ .button(@startColor: #f0f0f0, @endColor: #ebebeb) when (lightness(@endColor) < 50%){
69
+ color: #fff;
70
+ border-width: 1px;
71
+ border-style: solid;
72
+ border-color: fade(@light, 45%) fade(@light, 15%) darken(@endColor, 2%);
73
+ box-shadow: 0 0 0 1px darken(@startColor, 15%), 0 3px 5px #c6c6c6;
74
+ text-shadow: 0 -1px 0 darken(@endColor, 7%);
75
+ .buttonStyle(@startColor, @endColor);
76
+
77
+ .caret {
78
+ .caret(#fff);
79
+ }
80
+
81
+ &:hover, &.rok-button-hover {
82
+ color: #fff;
83
+ #gradient > .vertical(lighten(@startColor, 6%), lighten(@endColor, 1%));
84
+ }
85
+
86
+ &:active, &.rok-button-active {
87
+ color: #fff;
88
+ border: 0;
89
+
90
+ @shadowCalc: darken(@endColor, 5%); // workaround: temp var so we can escape it next line
91
+ .box-shadow(~"0 0 0 1px @{shadowCalc}, 0 1px 1px #fff");
92
+ #gradient > .vertical(darken(@startColor, 1%), darken(@endColor, 1%));
93
+
94
+ }
95
+ }
96
+
97
+ .caret(@color: @dark) {
98
+ display: inline-block;
99
+ width: 0;
100
+ height: 0;
101
+ vertical-align: top;
102
+ border-top: 4px solid @color;
103
+ border-right: 4px solid transparent;
104
+ border-left: 4px solid transparent;
105
+ content: "";
106
+ }
admin/assets/less/mixins/rockettheme/dropdowns.less ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @version $Id: dropdowns.less 58849 2013-01-16 05:47:28Z btowles $
3
+ * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
+ * @license http://www.rockettheme.com/legal/license.php RocketTheme Proprietary Use License
6
+ */
7
+
8
+ .rok-dropdown-group, .rok-dropdown {
9
+ position: relative;
10
+ }
11
+
12
+ .rok-dropdown-open .rok-dropdown {
13
+ display: block;
14
+ }
15
+
16
+ .dropdown() {
17
+ position: absolute;
18
+ top: 100%;
19
+ left: 0;
20
+ display: none; // none by default, but block on "open" of the menu
21
+ float: left;
22
+ list-style: none;
23
+ -webkit-background-clip: padding-box;
24
+ -moz-background-clip: padding;
25
+ background-clip: padding-box;
26
+ z-index: 5;
27
+
28
+ // Dividers (basically an hr) within the dropdown
29
+ .divider {
30
+ .nav-divider();
31
+ }
32
+
33
+ > li {
34
+ display: block; // reset to blocks the dropdowns children
35
+ }
36
+
37
+ // Links within the dropdown menu
38
+ a {
39
+ display: block;
40
+ clear: both;
41
+ font-weight: normal;
42
+ white-space: nowrap;
43
+ }
44
+
45
+ // hover states
46
+ // in your custom dropdowns.less you would edit this for different colors
47
+ > li > a:hover, .active > a, .active > a:hover {
48
+ text-decoration: none;
49
+ }
50
+ }
admin/assets/less/mixins/rockettheme/icons.less ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @version $Id: icons.less 58849 2013-01-16 05:47:28Z btowles $
3
+ * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
+ * @license http://www.rockettheme.com/legal/license.php RocketTheme Proprietary Use License
6
+ */
7
+
8
+ i {
9
+ background-image: url("@{iconSpritePath}") !important;
10
+ background-repeat: no-repeat;
11
+ background-position: 16px 16px; // reset of default position from 0 0 to a transparent location, out of the sprite
12
+ vertical-align: text-top;
13
+ font-style: normal;
14
+ display: inline-block;
15
+ .square(16px);
16
+ .ie7-restore-right-whitespace();
17
+ }
admin/assets/less/mixins/rockettheme/mixins.less ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @version $Id: mixins.less 58849 2013-01-16 05:47:28Z btowles $
3
+ * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
+ * @license http://www.rockettheme.com/legal/license.php RocketTheme Proprietary Use License
6
+ */
7
+
8
+ @import "utilities.less";
9
+ @import "dropdowns.less";
10
+ @import "popover.less";
11
+ @import "buttons.less";
12
+ @import "icons.less";
13
+
14
+ /* Ellipsis */
15
+ .ellipsis() {
16
+ white-space: nowrap;
17
+ overflow: hidden;
18
+ text-overflow: ellipsis;
19
+ -webkit-text-overflow: ellipsis;
20
+ -moz-text-overflow: ellipsis;
21
+ -o-text-overflow: ellipsis;
22
+ -ms-text-overflow: ellipsis;
23
+ }
24
+
25
+ /* Gradient */
26
+ #rt-gradient {
27
+ .horizontal-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
28
+ background-color: mix(@midColor, @endColor, 80%);
29
+ background-image: -webkit-gradient(linear, left top, right top, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
30
+ background-image: -webkit-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
31
+ background-image: -moz-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
32
+ background-image: -ms-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
33
+ background-image: -o-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
34
+ background-image: linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
35
+ background-repeat: no-repeat;
36
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",@startColor,@endColor)); // IE9 and down, gets no color-stop at all for proper fallback
37
+ }
38
+ }
39
+
40
+ /* CSS Arrows */
41
+ #CSSArrow {
42
+ .top(@arrowWidth: 5px, @arrowColor: @black, @arrowOffset: 0, @arrowPosition: 50%) {
43
+ bottom: @arrowOffset;
44
+ left: @arrowPosition;
45
+ margin-left: -@arrowWidth;
46
+ border-left: @arrowWidth solid transparent;
47
+ border-right: @arrowWidth solid transparent;
48
+ border-top: @arrowWidth solid @arrowColor;
49
+ }
50
+ .left(@arrowWidth: 5px, @arrowColor: @black, @arrowOffset: 0, @arrowPosition: 50%) {
51
+ top: @arrowPosition;
52
+ right: @arrowOffset;
53
+ margin-top: -@arrowWidth;
54
+ border-top: @arrowWidth solid transparent;
55
+ border-bottom: @arrowWidth solid transparent;
56
+ border-left: @arrowWidth solid @arrowColor;
57
+ }
58
+ .bottom(@arrowWidth: 5px, @arrowColor: @black, @arrowOffset: 0, @arrowPosition: 50%) {
59
+ top: -@arrowOffset;
60
+ left: @arrowPosition;
61
+ margin-left: -@arrowWidth - 1;
62
+ border-left: @arrowWidth solid transparent;
63
+ border-right: @arrowWidth solid transparent;
64
+ border-bottom: @arrowWidth solid @arrowColor;
65
+ }
66
+ .right(@arrowWidth: 5px, @arrowColor: @black, @arrowOffset: 0, @arrowPosition: 50%) {
67
+ top: @arrowPosition;
68
+ left: @arrowOffset;
69
+ margin-top: -@arrowWidth;
70
+ border-top: @arrowWidth solid transparent;
71
+ border-bottom: @arrowWidth solid transparent;
72
+ border-right: @arrowWidth solid @arrowColor;
73
+ }
74
+ }
admin/assets/less/mixins/rockettheme/popover.less ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @version $Id: popover.less 58849 2013-01-16 05:47:28Z btowles $
3
+ * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
+ * @license http://www.rockettheme.com/legal/license.php RocketTheme Proprietary Use License
6
+ */
7
+
8
+ .rok-popover-group, .rok-popover {
9
+ position: relative;
10
+ }
11
+
12
+ .rok-popover-open .rok-popover {
13
+ display: block;
14
+ }
15
+
16
+ .popover() {
17
+ position: absolute;
18
+ top: 0;
19
+ left: -100%;
20
+ display: none; // none by default, but block on "open" of the menu
21
+ -webkit-background-clip: padding-box;
22
+ -moz-background-clip: padding;
23
+ background-clip: padding-box;
24
+ z-index: 5;
25
+ }
admin/assets/less/mixins/rockettheme/utilities.less ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @version $Id: utilities.less 58849 2013-01-16 05:47:28Z btowles $
3
+ * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
+ * @license http://www.rockettheme.com/legal/license.php RocketTheme Proprietary Use License
6
+ */
7
+
8
+ .rok-left {
9
+ float: left;
10
+ }
11
+ .rok-right {
12
+ float: right;
13
+ }
admin/assets/less/presets.less ADDED
@@ -0,0 +1,247 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Snapshots Panel */
2
+ .presets {
3
+ position: relative;
4
+ width: 1000px;
5
+ margin: 0 auto;
6
+
7
+ .scroller {
8
+ margin-bottom: 30px;
9
+ .inner {
10
+ overflow: hidden;
11
+ width: 100%;
12
+ }
13
+ }
14
+
15
+ .presets-scrollbar {
16
+ background: #dedede;
17
+ .box-shadow(~"0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff");
18
+ position: absolute;
19
+ width: 100%;
20
+ height: 16px;
21
+ .border-radius(4px);
22
+
23
+ .bar {
24
+ position: absolute;
25
+ top: -1px;
26
+ left: -1px;
27
+ height: 16px;
28
+ width: 0;
29
+ border: 1px solid #bbb;
30
+ .box-shadow(~"1px 1px 0 0 #fff inset");
31
+ .border-radius(2px);
32
+ background: #fafafa url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAALBAMAAAC5XnFsAAAAA3NCSVQICAjb4U/gAAAAElBMVEX////+/v7Ozs7Nzc3Ly8uMRgCgvID5AAAABnRSTlP//////wCzv6S/AAAACXBIWXMAAAsSAAALEgHS3X78AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABR0RVh0Q3JlYXRpb24gVGltZQA4LzMvMTLfrdy9AAAAKUlEQVQImWMIYAVBBigVbAqCDKFgwBAoCpUDMYByQapBqhhyYCrEFQQBMiQPAwBHVdkAAAAASUVORK5CYII=) 50% 2px no-repeat;
33
+
34
+ }
35
+ }
36
+
37
+ .presets-scrollbar {
38
+ position: absolute;
39
+ left: 0;
40
+ bottom: -15px;
41
+ }
42
+
43
+ .wrapper {
44
+ font-size: 0;
45
+ margin: 0 auto;
46
+
47
+ .block {
48
+ font-size: @baseFontSize;
49
+ display: inline-block;
50
+ cursor: pointer;
51
+ position: relative;
52
+ margin: 20px 8px 10px;
53
+ .box-shadow(0 1px 5px rgba(33, 33, 33, 0.1));
54
+ .border-radius(4px);
55
+ border: 1px solid #d9d9d9;
56
+ padding: 1px;
57
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAABGCAMAAAAZ4Z3/AAAAA3NCSVQICAjb4U/gAAAAilBMVEX////+/v79/f38/Pz7+/v39/f29vbz8/Py8vLw8PDv7+/u7u7t7e3s7Ozr6+vq6urp6eno6Ojn5+fi4uLh4eHg4ODf39/b29vY2NjX19fW1tbV1dXU1NTT09PS0tLR0dHQ0NDPz8/Ozs7Nzc3MzMzDw8O5ubmxsbGkpKSampqQkJCLi4uIiIiMRgBq/iXiAAAALnRSTlP///////////////////////////////////////////////////////////8Ago9zVQAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAUdEVYdENyZWF0aW9uIFRpbWUAOC80LzEyQnrkBAAAA5lJREFUaIHtmYt2mzAMhrvFpFcv7Vg2uqVd69YBjP3+rzdJtoEQyDBdgJ3Df1rAMogP3yTChZmlLqYGaNeCFaIFK0QLVogWrBA5rM93N0a8k4TxR+MfNrBuX79fjd8kR1ptn2/tEWE9PK+npKlp/bwhItzcvawmpqm0ernBHWCx2bQVar1jhrDut1OjHGi7MYT143JqkgNdPhrC2kwN0tDOzHI5/WII625qjhYBlvj7WU5SZ7jTsmFFZdHJS5lkfe/y1WK9BWDpuA2Lcx6r4uSlXPO+d3kbgFV4rESK0orbWEdRZCTHGmQ3kZREQkUmtDjdnB/CEnpvsZTOtY5qWFzzHIwJ1aRAo5XyJ6bU0fn5sOAuEWKliOT6jbCY0ibX3JgUjJFOTK5g1GZlkWPd+bAirRAL2wMaJLJWUkwkUAMjTWVgTRNWFc+MZfbQkdIOL3crGvJ4lGM3WUY4EtDL+7J4bixTaGAqcKUQmpVW47EKGHwGBj9nWBOVxWCsb2FYMWLB4Ic75ZW1xIK2gxoAV4Tli/AfOBP7ywJk2IP7amodYkG1xpHHsfNEWYT50HcmuuV0WPBhvOvpGbcLOo23qhikoOAzjoKDzzgKnonjaMEK0X+G5YKcluWK1KLOOqhwdc4PPwnBj+q7sBjnkB5xzgZhcVlhcRcth2C1BR97MrgXmMsxLEBggz8hMLHjVR0ZKbAwIRN6qArLu7M5Y92NDUVCxp1Y3c8gtcoLyFjIP4SWvChyXShVQFSBOsjzIBDDGXRSpKFSHXai8+ZyxsqNvYJB/CrUEdaJ4OOx4CGLvPIHvhOMiGSDfQo5BBrRkBUYxvkBVg5Kypyx7oauwH1+hGVMZ/DxWNZP6S93Nd7GgJsCNG14kjWwpMSE3ueMdTe4IXvc1VptC0RPLEwH/U0gec/SBpZ15nPGI6xaLlnTiXWrDxbD1koOnp23YvmcsYlVpGQfjJXQO0ITS2EyxSqsDMdaG5bPGeturAssD8eCqQTzromVwlKZmFonajS1zUSfM9bc0IZSxBCspqLmtSjGG0WGS1KbfM7YdNPwEIw1puaN1f/NZxwFv/mMow+9+ZxXM3zzuTeE9To1R0PuJ92f8/oB/AqTNsB6mNnnAvdLM9vN6uPKL/wAhQvEzaw+RdGQQqxPm6e5tNf6yX5QtMvp9WbAryr/Xqt4d22PqlX+8c19m12Z3+8THZaaYfBBLVghWrBCtGCFaKZYfwCcAfb/ENSCxAAAAABJRU5ErkJggg==) 50% 60% no-repeat;
58
+ .transition(all 0.25s ease-in-out);
59
+
60
+ &.pulsing {
61
+ outline: 0;
62
+ border-color: rgba(82, 168, 236, 0.8);
63
+ .box-shadow(0 0 8px rgba(82, 168, 236, 0.6));
64
+ .transition(all 0.25s ease-in-out);
65
+ }
66
+
67
+ div.presets-bg {
68
+ width: 180px;
69
+ height: 100px;
70
+ .border-radius( 0 0 4px 4px);
71
+
72
+ }
73
+
74
+ span {
75
+ display: block;
76
+ .border-radius( 4px 4px 0 0);
77
+ border-top: 1px solid #fff;
78
+ border-bottom: 1px solid #d9d9d9;
79
+ background: #f5f5f5;
80
+ color: #666;
81
+ text-align:center;
82
+ font-weight: bold;
83
+ padding: 4px;
84
+ font-size: @baseFontSize + 2;
85
+ line-height: @baseFontSize + 2;
86
+ text-shadow: 1px 1px 0 #fff;
87
+ }
88
+
89
+ .delete-preset {
90
+ position: absolute;
91
+ right: 4px;
92
+ top: 4px;
93
+ background: #ddd;
94
+ border: 1px solid #ccc;
95
+ .border-radius(20px);
96
+ padding: 1px 4px;
97
+ cursor: pointer;
98
+
99
+ &:hover {
100
+ background: #e83f1f;
101
+ border: 1px solid #cb2417;
102
+ span {
103
+ color: #fff;
104
+ text-shadow: 1px 1px 0 #2373bd;
105
+ }
106
+
107
+
108
+
109
+ }
110
+
111
+ span {
112
+ border: 0;
113
+ padding: 0;
114
+ .border-radius(0);
115
+ background: transparent;
116
+ }
117
+ }
118
+ }
119
+ }
120
+ }
121
+
122
+
123
+ /* Overlay */
124
+ #gantry-layer {
125
+ position: absolute;
126
+ top: 0; left: 0; right: 0; bottom: 0;
127
+ background: #000;
128
+ z-index: 900;
129
+ }
130
+
131
+ /* Presets Saver */
132
+ .presets-wrapper-table {
133
+ display: table;
134
+ width: 100%;
135
+ height:100%;
136
+ position: absolute;
137
+ left: 0; top: 0; right: 0; bottom: 0;
138
+ .presets-wrapper-row {
139
+ display: table-row;
140
+ .presets-wrapper-cell {
141
+ display: table-cell;
142
+ vertical-align: middle;
143
+ }
144
+ }
145
+ }
146
+
147
+ #presets-namer {
148
+ position: relative;
149
+ margin: 0 auto;
150
+ background: #fff;
151
+ padding: 15px;
152
+ width: 80%;
153
+ max-width: 500px;
154
+ z-index: 1500;
155
+ font-size: 13px;
156
+ .border-radius(4px);
157
+
158
+ .preset-bottom {
159
+ text-align: right;
160
+ }
161
+
162
+ .rok-button {
163
+ display: inline-block;
164
+ margin-left: 5px;
165
+ }
166
+
167
+ h2, h3 {
168
+ margin-top:0;
169
+ margin-bottom: 5px;
170
+ color: #D73D12;
171
+ font-family: "Oxygen", Arial, sans-serif;
172
+ }
173
+
174
+ h3 {
175
+ color: #000;
176
+ text-transform: uppercase;
177
+ padding-bottom: 5px;
178
+ margin-bottom: 10px;
179
+ position: relative;
180
+
181
+ span {
182
+ text-transform: uppercase;
183
+ color: #C13201;
184
+ }
185
+ }
186
+
187
+ p {
188
+ margin: 10px 0;
189
+ }
190
+
191
+ input, input:focus {
192
+ .border-radius(4px);
193
+ padding: 4px;
194
+ margin: 0;
195
+ .box-shadow(~"0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff");
196
+ border: 1px solid @inputBorder;
197
+ border-top-color: @inputBorderTop;
198
+ .border-radius(3px);
199
+ width: 100%;
200
+
201
+ &.example {
202
+ color: #999;
203
+ font-style: italic;
204
+ }
205
+ }
206
+
207
+ button {
208
+ font-size: 90%;
209
+ margin-right: 10px;
210
+ }
211
+
212
+ label span {
213
+ text-align: right;
214
+ padding-right: 10px;
215
+ float: left;
216
+ display: block;
217
+ width: 85px;
218
+ color:#666;
219
+ text-transform: uppercase;
220
+ font-size:80%;
221
+ line-height: 25px;
222
+ }
223
+
224
+ .preset-namer {
225
+ background: #e9e9e9;
226
+ padding: 15px;
227
+ .border-radius(4px);
228
+ margin-bottom: 15px;
229
+ border: 1px solid #ccc;
230
+ }
231
+ }
232
+
233
+ /*.gantry-layer-wrapper {padding:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;}*/
234
+ .gantry-layer-wrapper .preset-namer div {margin: 5px 10px;}
235
+ .gantry-layer-close {color:#f64a4a;font-weight:bold;position:absolute;height: 20px;width:20px;line-height:20px;top:2px;right:2px;}
236
+
237
+ /* Presets Saver */
238
+ /*#presets-namer {position:absolute;top: 0;left: 0;background: #fff;width:500px;z-index:1500;font-size:13px;}
239
+ #presets-namer p {margin: 15px 0 20px;}
240
+ #presets-namer h2, #presets-namer h3 {margin-top:0;border-bottom: 2px solid #ddd;margin-bottom: 5px;color:#C13201;}
241
+ #presets-namer h3 {color: #000;text-transform:uppercase;border-bottom:1px solid #CCCCCC;padding-bottom:5px;margin-bottom:10px;position:relative;}
242
+ #presets-namer h3 span {text-transform:none;color:#C13201;}
243
+ #presets-namer input.example {color:#999;font-style:italic;}
244
+ #presets-namer label span {text-align: right;padding-right: 10px;float: left;display:block; width: 85px;color:#666;text-transform: uppercase;font-size:80%;line-height:24px;}
245
+ .preset-namer {background:#e9e9e9;padding:15px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;margin-bottom:15px;}
246
+ .preset-bottom {padding: 15px 0;}
247
+ .preset-bottom button {margin-right: 5px;}*/
admin/assets/less/reset.less ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ #g4-toolbar {
2
+ ul {
3
+ list-style: none;
4
+ margin-right:10px;
5
+ margin-top: -25px;
6
+ padding: 0;
7
+ }
8
+ }
9
+
admin/assets/less/typography-fonts.less ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @font-face {
2
+ font-family: 'OxygenRegular';
3
+ src: url('../fonts/Oxygen-webfont.eot');
4
+ src: url('../fonts/Oxygen-webfont.eot?#iefix') format('embedded-opentype'),
5
+ url('../fonts/Oxygen-webfont.woff') format('woff'),
6
+ url('../fonts/Oxygen-webfont.ttf') format('truetype'),
7
+ url('../fonts/Oxygen-webfont.svg#OxygenRegular') format('svg');
8
+ font-weight: normal;
9
+ font-style: normal;
10
+
11
+ }
12
+
13
+ @font-face {
14
+ font-family: 'OxygenItalic';
15
+ src: url('../fonts/Oxygen-Italic-webfont.eot');
16
+ src: url('../fonts/Oxygen-Italic-webfont.eot?#iefix') format('embedded-opentype'),
17
+ url('../fonts/Oxygen-Italic-webfont.woff') format('woff'),
18
+ url('../fonts/Oxygen-Italic-webfont.ttf') format('truetype'),
19
+ url('../fonts/Oxygen-Italic-webfont.svg#OxygenItalic') format('svg');
20
+ font-weight: normal;
21
+ font-style: normal;
22
+
23
+ }
24
+
25
+ @font-face {
26
+ font-family: 'OxygenBold';
27
+ src: url('../fonts/Oxygen-Bold-webfont.eot');
28
+ src: url('../fonts/Oxygen-Bold-webfont.eot?#iefix') format('embedded-opentype'),
29
+ url('../fonts/Oxygen-Bold-webfont.woff') format('woff'),
30
+ url('../fonts/Oxygen-Bold-webfont.ttf') format('truetype'),
31
+ url('../fonts/Oxygen-Bold-webfont.svg#OxygenBold') format('svg');
32
+ font-weight: normal;
33
+ font-style: normal;
34
+
35
+ }
36
+
37
+ @font-face {
38
+ font-family: 'OxygenBoldItalic';
39
+ src: url('../fonts/Oxygen-BoldItalic-webfont.eot');
40
+ src: url('../fonts/Oxygen-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
41
+ url('../fonts/Oxygen-BoldItalic-webfont.woff') format('woff'),
42
+ url('../fonts/Oxygen-BoldItalic-webfont.ttf') format('truetype'),
43
+ url('../fonts/Oxygen-BoldItalic-webfont.svg#OxygenBoldItalic') format('svg');
44
+ font-weight: normal;
45
+ font-style: normal;
46
+
47
+ }
48
+
admin/assets/less/typography.less ADDED
@@ -0,0 +1,174 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "typography-fonts.less";
2
+
3
+ #g4-logo {
4
+ font-size: 200px;
5
+ line-height: 0px;
6
+ color: rgba(00,00,00,0.05);
7
+ text-indent: 40px;
8
+ font-weight: bold;
9
+ }
10
+
11
+ .g4-wrap {
12
+ font-size: @baseFontSize;
13
+ line-height: @baseLineHeight;
14
+
15
+ ul {
16
+ margin: 0;
17
+ padding: 0;
18
+ list-style: none;
19
+
20
+ }
21
+
22
+ p {
23
+ margin: 20px 0;
24
+ font-size: @baseFontSize+1;
25
+ color: @gray;
26
+ }
27
+
28
+
29
+ }
30
+
31
+ h1 {
32
+ #html > h1;
33
+ small {
34
+ color: #9b9b9b;
35
+ font-size: 16px;
36
+ }
37
+ }
38
+
39
+
40
+
41
+ .g4-tabs {
42
+ li {
43
+ font-size: 14px;
44
+ }
45
+ }
46
+
47
+ #g4-sidebar {
48
+ .g4-content {
49
+ h2 {
50
+ font-size: 16px;
51
+ color: #3e3e3e;
52
+ margin: 0;
53
+ padding: 15px 15px 5px;
54
+ }
55
+ }
56
+ }
57
+
58
+ .g4-tabs {
59
+ .presets-involved, overrides-involved, .preset-info, .menuitems-involved {
60
+ font-size: 13px;
61
+ font-weight: bold;
62
+ }
63
+ }
64
+
65
+ #g4-panels {
66
+ h1 {
67
+ font-size: 38px;
68
+ line-height: 38px;
69
+ font-weight: bold;
70
+
71
+ .g4-version, > span {
72
+ color: @blue;
73
+ font-weight: normal;
74
+ }
75
+ }
76
+ h1+h2 {
77
+ margin-top: 10px;
78
+ color: @gray;
79
+ font-weight: normal;
80
+ }
81
+ }
82
+
83
+ div.template-preview {
84
+ h2, ul {
85
+ margin: 10px 0 10px 10px;
86
+
87
+ }
88
+ ul {
89
+ list-style: disc;
90
+ li {
91
+ margin-left:20px;
92
+ margin-bottom: 3px;
93
+ }
94
+ }
95
+ }
96
+
97
+ .gantrytips-tip {
98
+ ul {
99
+ list-style: disc;
100
+ margin: 10px 0 10px 10px;
101
+ li {
102
+ margin-left: 10px;
103
+ margin-bottom: 3px;
104
+ }
105
+ }
106
+ }
107
+
108
+ .tips-field, .html-field {
109
+ font-size: @baseFontSize+1;
110
+ color: @black2;
111
+ text-shadow: 1px 1px 1px #fff;
112
+ .h2bar {
113
+ line-height: 26px;
114
+ font-size: 22px;
115
+ font-weight: bold;
116
+ color: @gray;
117
+ }
118
+ }
119
+
120
+ #updater {
121
+
122
+ #updater-bar {
123
+ color: #eee;
124
+ font-size: @baseFontSize+1;
125
+ line-height: 26px;
126
+ font-size: 22px;
127
+ font-weight: bold;
128
+ text-shadow: 0px -1px 0 #1d5792;
129
+
130
+ span {
131
+ color: #fff;
132
+ }
133
+
134
+
135
+ }
136
+
137
+ #updater-desc {
138
+
139
+ color: #eee;
140
+ text-shadow: 0px -1px 0 #1d5792;
141
+
142
+ a {
143
+ color: #fff;
144
+ }
145
+ }
146
+
147
+ &.update #updater-bar, &.update #updater-desc {
148
+ text-shadow: 0px -1px 0 #a71f14;
149
+ }
150
+ }
151
+
152
+ .g4-cell {
153
+ &.g4-col1 {
154
+ font-weight: bold;
155
+ text-shadow: 1px 1px 0 #fff;
156
+ color: @gray;
157
+
158
+ label, h2 {
159
+ padding-left: 20px;
160
+ font-size:13px;
161
+ }
162
+
163
+ h2 {
164
+ padding-top: 45px;
165
+ }
166
+ }
167
+ }
168
+
169
+ .chain-label > label, .group-label > label,
170
+ .inner-panels label {
171
+ font-size: @baseFontSize - 1;
172
+ color: @gray2;
173
+ text-shadow: 1px 1px 0px #fff;
174
+ }
admin/assets/less/variables.less ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @white: #fff;
2
+ @black: #000;
3
+ @black2: #333;
4
+ @gray: #555;
5
+ @gray2: #777;
6
+ @gray3: #999;
7
+ @lightGray: #f3f3f3;
8
+ @blue: #3680be;
9
+
10
+ @dark: #000;
11
+ @light: #fff;
12
+
13
+ @inputBorderTop: #c6c6c6;
14
+ @inputBorder: #cfcfcf;
15
+
16
+ @baseFontSize: 12px;
17
+ @baseLineHeight: 18px;
18
+
19
+ @wrapperWidth: 100%; // sum of sidebar and main
20
+ @sidebarWidth: 30%; // must be 100%.
21
+ @mainWidth: 70%; // The wrapperWidth can be any % or px size
22
+
23
+ @dropdownBackground: #fefefe;
24
+
25
+ //@iconSpritePath: "../images/sprite.png";
admin/assets/less/wordpress.less ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import 'assignments.less';
2
+
3
+ .g4-wrap {
4
+ width: 100%;
5
+ }
6
+
7
+ #wpcontent {
8
+ margin-left: 147px;
9
+ }
10
+
11
+ @media only screen and (max-width: 900px) {
12
+ #wpcontent {
13
+ margin-left: 34px;
14
+ }
15
+ }
16
+
17
+ body .html-field {
18
+ background: transparent;
19
+ .border-radius(0);
20
+ border: none;
21
+ .box-shadow(none);
22
+ }
23
+
24
+ body #icon-themes {
25
+ margin: -10px 10px 0;
26
+ }
27
+
28
+ .g4-wrap {
29
+ input, textarea {
30
+ .box-sizing(inherit) !important;
31
+ }
32
+ }
33
+
34
+ .g4-notice {
35
+ position: relative;
36
+ .close {
37
+ position: absolute;
38
+ top: 6px;
39
+ right:9px;
40
+ cursor: pointer;
41
+ }
42
+ }
43
+
44
+ .g4-actions {
45
+ .spinner {
46
+ float: left;
47
+ display: inline-block;
48
+ display: none;
49
+ }
50
+ }
51
+
52
+ .inner-tabs {
53
+ .box-shadow(~'0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset');
54
+ li {
55
+ cursor: pointer;
56
+ display: inline-block;
57
+ margin-bottom: -6px;
58
+ border-right: 1px solid #d1d1d1;
59
+ border-left: 1px solid #f1f1f1;
60
+
61
+ label {
62
+ font-weight: normal;
63
+ }
64
+
65
+ &.first {
66
+ border-left: 0;
67
+ }
68
+
69
+ &.hover label {
70
+ color: #000;
71
+ }
72
+
73
+ &.active label {
74
+ color: #2287C7;
75
+ font-weight: bold;
76
+ }
77
+
78
+ .g4-cell.g4-col1 {
79
+ background: transparent;
80
+ .box-shadow(none);
81
+ width: auto;
82
+
83
+ label {
84
+ padding-left: 0;
85
+ }
86
+ }
87
+ }
88
+ }
89
+
90
+ .inner-panel > .wrapper {
91
+ display: table;
92
+ width: 100%;
93
+ }
94
+
95
+
96
+ /* Gantry Overrides */
97
+ #overrides-actions {float:left;margin:12px 0 0 8px;min-width:180px;position:relative;z-index:100;}
98
+ #overrides-actions .add-edit-input {position: absolute;width:85%;height:9px;top:3px;font-size:90%;padding: 3px 0;}
99
+ #overrides-first {padding:3px 30px 4px 12px;line-height:15px;border: 1px solid #c0c0c0;.border-radius(12px);background: -moz-linear-gradient(bottom, #e7e7e7, #fff);background: -webkit-gradient(linear, left bottom, left top, from(#e7e7e7), to(#fff));}
100
+ #overrides-first.slide-down {border-bottom: none;.border-radius(12px 12px 0 0);}
101
+
102
+ #overrides-actions a {color: #464646;display:block;font-size:11px;text-decoration:none;padding:3px 5px 3px 10px}
103
+ body #overrides-first a {background: url(images/overrides-default.png) 0 50% no-repeat;padding: 0 0 0 18px;}
104
+ #overrides-actions a:hover {color:#000;text-decoration:underline;}
105
+ #overrides-first a:hover {text-decoration:none;}
106
+ #overrides-toggle {background:url(images/overrides-arrow.gif) 0 -4px no-repeat;height: 22px;position:absolute;right:0px;top:1px; width:28px;cursor:pointer;}
107
+ #overrides-toggle.hidden {display:none;}
108
+ #overrides-inside {background-color:#FFFFFF;border-color:#C0C0C0;margin:0;padding:2px 1px;border-width:1px;border-style:solid;position:absolute;z-index:11;display:none;.border-radius(0 0 12px 12px);}
109
+
110
+ #overrides-toolbar {float:left;margin:12px 0 0 5px;position:relative;}
111
+ #overrides-toolbar .overrides-button {float: left;width:29px; height:24px;background:url(images/overrides-toolbar.png);cursor:pointer;}
112
+ #overrides-toolbar .overrides-button span {display:none;}
113
+ #overrides-toolbar .button-del {background-position:-29px 0;width:28px;}
114
+ #overrides-toolbar .button-edit {background-position:-57px 0;}
115
+ #overrides-toolbar .button-add:hover {background-position: 0 -24px;}
116
+ #overrides-toolbar .button-del:hover {background-position: -29px -24px;}
117
+ #overrides-toolbar .button-edit:hover {background-position: -57px -24px;}
118
+
119
+ .text-button {display: inline-block;height: 24px;background: url(images/overrides-buttons-l.png) 0 0 no-repeat;text-decoration:none;}
120
+ .text-button span {font-size:11px;font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;color:#333;display: inline-block;background: url(images/overrides-buttons-r.png) 100% 0 no-repeat;margin-left: 20px;padding:0 10px 0 5px;line-height:24px;height:24px;}
121
+ .text-button:hover span {color:#000;background-position: 100% -24px;}
122
+
123
+ .text-button.button-widget { background-position: 0 -48px;}
124
+ .text-button.button-widget:hover { background-position: 0 -72px;}
125
+
126
+ #overrides-switch {float:left;margin:12px 0 0 5px;position:relative;}
127
+
128
+
129
+
admin/assignment_functions.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: assignment_functions.php 58640 2012-12-17 18:31:23Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
@@ -85,11 +85,11 @@ class GantryAssignmentWalker extends Walker
85
 
86
  $item_output = '';
87
  if (isset($args->before)) $item_output = $args->before;
88
- $item_output .= '<label class="rokchecks menu-item-' . $item->id . '">' . "\n";
89
  $item_output .= ' <input class="assignment-checkbox" type="checkbox" name="menu-item-' . $item->id . '" value="' . $item->id . '" />' . "\n";
90
  $item_output .= '</label>' . "\n";
91
  $item_output .= ' <a class="' . (empty($item->url) ? 'no-link-item' : 'thickbox') . '"' . $attributes . '>' . "\n";
92
- if (isset($args->link_before)) $item_output .= $args->link_before ;
93
  $item_output .= apply_filters('the_title', $item->title, $item->id);
94
  if (isset($args->link_after)) $item_output .= $args->link_after;
95
  $item_output .= '</a>';
@@ -601,7 +601,7 @@ function do_assignment_meta_boxes($page, $context, $object, $assignments = array
601
 
602
  $hidden = get_hidden_meta_boxes($page);
603
 
604
- printf('<div id="%s-sortables" class="meta-box-sortables">', htmlspecialchars($context));
605
 
606
  $i = 0;
607
  do {
@@ -634,20 +634,25 @@ function do_assignment_meta_boxes($page, $context, $object, $assignments = array
634
  $gantry_override_assignment_info[$data->archetype . '::' . $data->type] = $data;
635
  }
636
 
 
 
637
 
638
- echo '<div id="' . $box['id'] . '" class="assignments-block">' . "\n";
 
639
  echo " <h2 class='" . strtolower(str_replace(" ", "-", $box['title'])) . "'>\n";
640
  if (!in_array($data->archetype, $skip_checkbox)) {
641
- echo " <label class=\"rokchecks global menu-item-" . $box['id'] . "\">\n";
642
  echo ' <input class="assignment-checkbox global" ' . $checked . ' type="checkbox" name="menu-item-' . $box['id'] . '" value="' . $box['id'] . '" />' . "\n";
643
  echo " </label>\n";
644
  }
645
  echo ' <span class="' . $data->archetype . '::' . $data->type . '">' . $box['title'] . "</span></h2>\n";
 
 
 
646
  echo ' <div class="inside' . $assigned . '">' . "\n";
647
  call_user_func($box['callback'], $object, $box, $assignments);
648
  echo " </div>\n";
649
- echo " <div class=\"clr\"></div>\n";
650
- echo " <div class=\"footer-block\">\n";
651
  echo " <div class=\"select-all\"><a href=\"#\">Select All</a></div>\n";
652
  echo " <div class=\"add-button\"><input class=\"button-secondary add-to-assigned\" type=\"button\" value=\"Add to Assigned\" /></div>\n";
653
  echo " </div>\n";
@@ -699,7 +704,7 @@ class AssignmentType
699
  function array_merge_replace_recursive()
700
  {
701
  // Holds all the arrays passed
702
- $params = & func_get_args();
703
 
704
  // First array is used as the base, everything else overwrites on it
705
  $ret = array_shift($params);
@@ -766,4 +771,4 @@ function array_copy($aSource)
766
  }
767
 
768
  return $aRetAr;
769
- }
1
  <?php
2
  /**
3
+ * @version $Id: assignment_functions.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
85
 
86
  $item_output = '';
87
  if (isset($args->before)) $item_output = $args->before;
88
+ $item_output .= '<label class="menu-item-' . $item->id . '">' . "\n";
89
  $item_output .= ' <input class="assignment-checkbox" type="checkbox" name="menu-item-' . $item->id . '" value="' . $item->id . '" />' . "\n";
90
  $item_output .= '</label>' . "\n";
91
  $item_output .= ' <a class="' . (empty($item->url) ? 'no-link-item' : 'thickbox') . '"' . $attributes . '>' . "\n";
92
+ if (isset($args->link_before)) $item_output .= $args->link_before;
93
  $item_output .= apply_filters('the_title', $item->title, $item->id);
94
  if (isset($args->link_after)) $item_output .= $args->link_after;
95
  $item_output .= '</a>';
601
 
602
  $hidden = get_hidden_meta_boxes($page);
603
 
604
+ printf('<div id="%s-sortables" class="meta-box-sortables clearfix">', htmlspecialchars($context));
605
 
606
  $i = 0;
607
  do {
634
  $gantry_override_assignment_info[$data->archetype . '::' . $data->type] = $data;
635
  }
636
 
637
+ $position = ($i % 3 == 0) ? 'right': (($i % 3 == 1) ? 'left' : 'center');
638
+ $position = 'assignments-block-' . $position;
639
 
640
+
641
+ echo '<div id="' . $box['id'] . '" class="assignments-block '.$position.'">' . "\n";
642
  echo " <h2 class='" . strtolower(str_replace(" ", "-", $box['title'])) . "'>\n";
643
  if (!in_array($data->archetype, $skip_checkbox)) {
644
+ echo " <label class=\"global menu-item-" . $box['id'] . "\">\n";
645
  echo ' <input class="assignment-checkbox global" ' . $checked . ' type="checkbox" name="menu-item-' . $box['id'] . '" value="' . $box['id'] . '" />' . "\n";
646
  echo " </label>\n";
647
  }
648
  echo ' <span class="' . $data->archetype . '::' . $data->type . '">' . $box['title'] . "</span></h2>\n";
649
+
650
+ echo ' <div class="assignment-search"><input type="text" placeholder="Start typing to filter the list."/><div class="assignment-search-clear">&times;</div></div>'."\n";
651
+
652
  echo ' <div class="inside' . $assigned . '">' . "\n";
653
  call_user_func($box['callback'], $object, $box, $assignments);
654
  echo " </div>\n";
655
+ echo " <div class=\"footer-block clearfix\">\n";
 
656
  echo " <div class=\"select-all\"><a href=\"#\">Select All</a></div>\n";
657
  echo " <div class=\"add-button\"><input class=\"button-secondary add-to-assigned\" type=\"button\" value=\"Add to Assigned\" /></div>\n";
658
  echo " </div>\n";
704
  function array_merge_replace_recursive()
705
  {
706
  // Holds all the arrays passed
707
+ $params = func_get_args();
708
 
709
  // First array is used as the base, everything else overwrites on it
710
  $ret = array_shift($params);
771
  }
772
 
773
  return $aRetAr;
774
+ }
admin/forms/fields/ajaxbutton.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @version $Id: ajaxbutton.php 59361 2013-03-13 23:10:27Z btowles $
4
+ * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
+ */
8
+ defined('GANTRY_VERSION') or die;
9
+
10
+ /**
11
+ * Form Field class for the Joomla Platform.
12
+ * Supports a one line text field.
13
+ *
14
+ * @package Joomla.Platform
15
+ * @subpackage Form
16
+ * @link http://www.w3.org/TR/html-markup/input.text.html#input.text
17
+ * @since 11.1
18
+ */
19
+ class GantryFormFieldAjaxButton extends GantryFormField
20
+ {
21
+ /**
22
+ * The form field type.
23
+ *
24
+ * @var string
25
+ *
26
+ * @since 11.1
27
+ */
28
+ protected $type = 'ajaxbutton';
29
+ //static $assets_loaded = false;
30
+
31
+ /**
32
+ * Method to get the field input markup.
33
+ *
34
+ * @return string The field input markup.
35
+ *
36
+ * @since 11.1
37
+ */
38
+ public function getInput(){
39
+ global $gantry;
40
+
41
+ $html = array();
42
+
43
+ //if (!self::$assets_loaded) {
44
+ // $gantry->addScript($gantry->gantryUrl . '/admin/widgets/ajaxbutton/js/ajaxbutton.js');
45
+ // self::$assets_loaded = true;
46
+ //}
47
+
48
+ // Initialize some field attributes.
49
+ $model = $this->element['model'] ? $this->element['model'] : '';
50
+ $action = 'gantry_admin';
51
+ $gantry_action = $this->element['action'] ? $this->element['action'] : '';
52
+ $text = $this->element['text'] ? $this->element['text'] : '';
53
+
54
+ $data = "{model: '".$model."', action: '".$action."', gantry_action: '".$gantry_action."'}";
55
+
56
+ $datasets = ' data-ajaxbutton="'.$data.'"';
57
+
58
+ $html[] = '<div class="rok-button rok-button-primary"'.$datasets.'>' . _g((string)$text) . '</div>';
59
+
60
+ return implode("\n", $html);
61
+ }
62
+ }
admin/forms/fields/alias.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: alias.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
@@ -13,7 +13,7 @@ defined('GANTRY_VERSION') or die();
13
  */
14
  gantry_import('core.config.gantryformfield');
15
 
16
- require_once(dirname(__FILE__) . '/selectbox.php');
17
 
18
  class GantryFormFieldAlias extends GantryFormFieldSelectBox
19
  {
@@ -23,6 +23,7 @@ class GantryFormFieldAlias extends GantryFormFieldSelectBox
23
 
24
  public function getInput()
25
  {
 
26
  global $gantry;
27
 
28
  $name = substr(str_replace($gantry->templateName . '-template-options', "", $this->name), 1, -1);
@@ -44,6 +45,7 @@ class GantryFormFieldAlias extends GantryFormFieldSelectBox
44
 
45
  protected function getOptions()
46
  {
 
47
  global $gantry;
48
  $options = array();
49
  $options = parent::getOptions();
1
  <?php
2
  /**
3
+ * @version $Id: alias.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
13
  */
14
  gantry_import('core.config.gantryformfield');
15
 
16
+ require_once(gantry_dirname(__FILE__) . '/selectbox.php');
17
 
18
  class GantryFormFieldAlias extends GantryFormFieldSelectBox
19
  {
23
 
24
  public function getInput()
25
  {
26
+ /** @global $gantry Gantry */
27
  global $gantry;
28
 
29
  $name = substr(str_replace($gantry->templateName . '-template-options', "", $this->name), 1, -1);
45
 
46
  protected function getOptions()
47
  {
48
+ /** @global $gantry Gantry */
49
  global $gantry;
50
  $options = array();
51
  $options = parent::getOptions();
admin/forms/fields/animation.php CHANGED
@@ -1,15 +1,15 @@
1
  <?php
2
  /**
3
- * @version $Id: animation.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
9
 
10
  gantry_import('core.config.gantryformfield');
11
  gantry_import('core.config.gantryhtmlselect');
12
- require_once(dirname(__FILE__) . '/list.php');
13
 
14
 
15
  /**
@@ -18,7 +18,7 @@ require_once(dirname(__FILE__) . '/list.php');
18
  * @package gantry
19
  * @subpackage admin.elements
20
  */
21
- class GantryFormFieldAnimation extends GantryFormFieldList
22
  {
23
 
24
  protected $type = 'animation';
@@ -32,6 +32,7 @@ class GantryFormFieldAnimation extends GantryFormFieldList
32
  */
33
  protected function getOptions()
34
  {
 
35
  global $gantry;
36
  $options = array();
37
  $options = parent::getOptions();
1
  <?php
2
  /**
3
+ * @version $Id: animation.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
9
 
10
  gantry_import('core.config.gantryformfield');
11
  gantry_import('core.config.gantryhtmlselect');
12
+ require_once(gantry_dirname(__FILE__) . '/selectbox.php');
13
 
14
 
15
  /**
18
  * @package gantry
19
  * @subpackage admin.elements
20
  */
21
+ class GantryFormFieldAnimation extends GantryFormFieldSelectBox
22
  {
23
 
24
  protected $type = 'animation';
32
  */
33
  protected function getOptions()
34
  {
35
+ /** @global $gantry Gantry */
36
  global $gantry;
37
  $options = array();
38
  $options = parent::getOptions();
admin/forms/fields/categories.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: categories.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
@@ -31,6 +31,7 @@ class GantryFormFieldCategories extends GantryFormFieldList
31
  */
32
  protected function getOptions()
33
  {
 
34
  global $gantry;
35
  $options = array();
36
  $options = parent::getOptions();
1
  <?php
2
  /**
3
+ * @version $Id: categories.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
31
  */
32
  protected function getOptions()
33
  {
34
+ /** @global $gantry Gantry */
35
  global $gantry;
36
  $options = array();
37
  $options = parent::getOptions();
admin/forms/fields/checkbox.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * @version $Id: checkbox.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
2
  /**
3
  * @version $Id: checkbox.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
admin/forms/fields/colorchooser.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: colorchooser.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
@@ -19,17 +19,16 @@ class GantryFormFieldColorChooser extends GantryFormField
19
  protected $type = 'colorchooser';
20
  protected $basetype = 'text';
21
 
 
 
22
  public function getInput()
23
  {
24
- //($name, $value, &$node, $control_name)
25
- //global $stylesList;
26
- /**
27
- * @global Gantry $gantry
28
- */
29
  global $gantry;
30
  $output = '';
31
 
32
- $this->template = end(explode(DS, $gantry->templatePath));
 
33
  $transparent = 1;
34
 
35
  if ($this->element->attributes('transparent') == 'false') $transparent = 0;
@@ -38,22 +37,24 @@ class GantryFormFieldColorChooser extends GantryFormField
38
  define('GANTRY_CSS', 1);
39
  }
40
 
41
- if (!defined('GANTRY_MOORAINBOW')) {
42
-
43
- $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/colorchooser/css/mooRainbow.css');
44
- $gantry->addScript($gantry->gantryUrl . '/admin/widgets/colorchooser/js/mooRainbow.js');
45
- $gantry->addScript($gantry->gantryUrl . '/admin/widgets/colorchooser/js/colorchooser.js');
46
 
47
- define('GANTRY_MOORAINBOW', 1);
48
  }
49
 
50
- $gantry->addDomReadyScript("GantryColorChooser.add('" . $this->id . "', " . $transparent . ");");
51
 
52
- $output .= "<div class='wrapper'>";
53
- $output .= "<input class=\"picker-input text-color\" id=\"" . $this->id . "\" name=\"" . $this->name . "\" type=\"text\" size=\"7\" maxlength=\"11\" value=\"" . $this->value . "\" />";
54
- $output .= "<div class=\"picker\" id=\"myRainbow_" . $this->id . "_input\"><div class=\"overlay" . (($this->value == 'transparent') ? ' overlay-transparent' : '') . "\" style=\"background-color: " . $this->value . "\"><div></div></div></div>\n";
55
- $output .= "</div>";
 
 
 
 
56
 
57
- return $output;
58
  }
59
  }
1
  <?php
2
  /**
3
+ * @version $Id: colorchooser.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
19
  protected $type = 'colorchooser';
20
  protected $basetype = 'text';
21
 
22
+ static $assets_loaded = false;
23
+
24
  public function getInput()
25
  {
26
+ /** @global Gantry $gantry */
 
 
 
 
27
  global $gantry;
28
  $output = '';
29
 
30
+ $expl_path = explode('/', $gantry->templatePath);
31
+ $this->template = end($expl_path);
32
  $transparent = 1;
33
 
34
  if ($this->element->attributes('transparent') == 'false') $transparent = 0;
37
  define('GANTRY_CSS', 1);
38
  }
39
 
40
+ if (!self::$assets_loaded){
41
+ $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/colorchooser/css/mooRainbow-2.0.css');
42
+ $gantry->addScript($gantry->gantryUrl . '/admin/widgets/colorchooser/js/mooRainbow-2.0.js');
 
 
43
 
44
+ self::$assets_loaded = true;
45
  }
46
 
47
+ $output = array();
48
 
49
+ $output[] = '<div class="wrapper">';
50
+ $output[] = ' <input class="picker-input text-color" data-moorainbow data-moorainbow-transparent="' . $transparent . '" id="' . $this->id . '" name="' . $this->name . '" type="text" value="' . $this->value . '" />';
51
+ $output[] = ' <div class="picker" data-moorainbow-trigger="' . $this->id . '">';
52
+ $output[] = ' <div class="overlay' . (($this->value == 'transparent') ? ' overlay-transparent' : '') . '" style="background-color: ' . $this->value . '">';
53
+ $output[] = ' <div></div>';
54
+ $output[] = ' </div>';
55
+ $output[] = ' </div>';
56
+ $output[] = '</div>';
57
 
58
+ return implode("\n", $output);
59
  }
60
  }
admin/forms/fields/dateformats.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: dateformats.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
@@ -14,10 +14,9 @@ defined('GANTRY_VERSION') or die();
14
 
15
  gantry_import('core.utilities.gantrydate');
16
 
17
- //require_once(dirname(__FILE__).'/selectbox.php');
18
- require_once(dirname(__FILE__) . '/list.php');
19
 
20
- class GantryFormFieldDateFormats extends GantryFormFieldList
21
  {
22
  var $_name = 'DateFormats';
23
 
1
  <?php
2
  /**
3
+ * @version $Id: dateformats.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
14
 
15
  gantry_import('core.utilities.gantrydate');
16
 
17
+ require_once(gantry_dirname(__FILE__) . '/selectbox.php');
 
18
 
19
+ class GantryFormFieldDateFormats extends GantryFormFieldSelectBox
20
  {
21
  var $_name = 'DateFormats';
22
 
admin/forms/fields/diagnostic.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: diagnostic.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
@@ -21,6 +21,7 @@ class GantryFormFieldDiagnostic extends GantryFormField
21
  public function getInput()
22
  {
23
 
 
24
  global $gantry;
25
 
26
  gantry_import('core.gantrydiagnostic');
1
  <?php
2
  /**
3
+ * @version $Id: diagnostic.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
21
  public function getInput()
22
  {
23
 
24
+ /** @global $gantry Gantry */
25
  global $gantry;
26
 
27
  gantry_import('core.gantrydiagnostic');
admin/forms/fields/file.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: file.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
@@ -21,11 +21,12 @@ class GantryFormFieldFile extends GantryFormField
21
 
22
  public function getInput()
23
  {
 
24
  global $gantry;
25
  $html = '';
26
 
27
  $filepath = $this->element['path'];
28
- $filepath = realpath($gantry->templatePath . $filepath);
29
  if ($filepath != false) {
30
  ob_start();
31
  include($filepath);
1
  <?php
2
  /**
3
+ * @version $Id: file.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
21
 
22
  public function getInput()
23
  {
24
+ /** @global $gantry Gantry */
25
  global $gantry;
26
  $html = '';
27
 
28
  $filepath = $this->element['path'];
29
+ $filepath = gantry_clean_path(realpath($gantry->templatePath . $filepath));
30
  if ($filepath != false) {
31
  ob_start();
32
  include($filepath);
admin/forms/fields/fonts.php CHANGED
@@ -1,237 +1,132 @@
1
  <?php
2
  /**
3
- * @version $Id: fonts.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
9
-
10
  gantry_import('core.config.gantryformfield');
11
 
12
- require_once(dirname(__FILE__) . '/selectbox.php');
 
13
 
 
 
 
14
 
15
- class GantryFormFieldFonts extends GantryFormFieldSelectBox
16
- {
17
- /**
18
- * The form field type.
19
- *
20
- * @var string
21
- * @since 1.6
22
- */
23
  protected $type = 'fonts';
24
- protected $basetype = 'select';
25
-
26
- var $_google_fonts = array(
27
- "Aclonica",
28
- "Allan",
29
- "Allerta",
30
- "Allerta Stencil",
31
- "Amaranth",
32
- "Annie Use Your Telescope",
33
- "Anonymous Pro",
34
- "Anton",
35
- "Architects Daughter",
36
- "Arimo",
37
- "Artifika",
38
- "Arvo",
39
- "Asset",
40
- "Astloch",
41
- "Bangers",
42
- "Bentham",
43
- "Bevan",
44
- "Bigshot One",
45
- "Brawler",
46
- "Buda",
47
- "Cabin",
48
- "Cabin Sketch",
49
- "Calligraffitti",
50
- "Candal",
51
- "Cantarell",
52
- "Cardo",
53
- "Carter One",
54
- "Caudex",
55
- "Cedarville Cursive",
56
- "Cherry Cream Soda",
57
- "Chewy",
58
- "Coda",
59
- "Coming Soon",
60
- "Copse",
61
- "Corben",
62
- "Cousine",
63
- "Covered By Your Grace",
64
- "Crafty Girls",
65
- "Crimson Text",
66
- "Crushed",
67
- "Cuprum",
68
- "Damion",
69
- "Dancing Script",
70
- "Dawning of a New Day",
71
- "Didact Gothic",
72
- "Droid Sans",
73
- "Droid Sans Mono",
74
- "Droid Serif",
75
- "EB Garamond",
76
- "Expletus Sans",
77
- "Fontdiner Swanky",
78
- "Francois One",
79
- "Geo",
80
- "Goblin One",
81
- "Goudy Bookletter 1911",
82
- "Gravitas One",
83
- "Gruppo",
84
- "Hammersmith One",
85
- "Holtwood One SC",
86
- "Homemade Apple",
87
- "IM Fell",
88
- "Inconsolata",
89
- "Indie Flower",
90
- "Irish Grover",
91
- "Josefin Sans",
92
- "Josefin Slab",
93
- "Judson",
94
- "Jura",
95
- "Just Another Hand",
96
- "Just Me Again Down Here",
97
- "Kameron",
98
- "Kenia",
99
- "Kranky",
100
- "Kreon",
101
- "Kristi",
102
- "La Belle Aurore",
103
- "Lato",
104
- "League Script",
105
- "Lekton",
106
- "Limelight",
107
- "Lobster",
108
- "Lobster Two",
109
- "Lora",
110
- "Luckiest Guy",
111
- "Maiden Orange",
112
- "Mako",
113
- "Maven Pro",
114
- "Meddon",
115
- "MedievalSharp",
116
- "Megrim",
117
- "Merriweather",
118
- "Metrophobic",
119
- "Michroma",
120
- "Miltonian",
121
- "Molengo",
122
- "Monofett",
123
- "Mountains of Christmas",
124
- "Muli",
125
- "Neucha",
126
- "Neuton",
127
- "News Cycle",
128
- "Nixie One",
129
- "Nobile",
130
- "Nova",
131
- "Nunito",
132
- "OFL Sorts Mill Goudy TT",
133
- "Old Standard TT",
134
- "Open Sans",
135
- "Orbitron",
136
- "Oswald",
137
- "Over the Rainbow",
138
- "PT Sans",
139
- "PT Serif",
140
- "Pacifico",
141
- "Paytone One",
142
- "Permanent Marker",
143
- "Philosopher",
144
- "Play",
145
- "Playfair Display",
146
- "Podkova",
147
- "Puritan",
148
- "Quattrocento",
149
- "Quattrocento Sans",
150
- "Radley",
151
- "Raleway",
152
- "Redressed",
153
- "Reenie Beanie",
154
- "Rock Salt",
155
- "Rokkitt",
156
- "Ruslan Display",
157
- "Schoolbell",
158
- "Shadows Into Light",
159
- "Shanti",
160
- "Sigmar One",
161
- "Six Caps",
162
- "Slackey",
163
- "Smythe",
164
- "Sniglet",
165
- "Special Elite",
166
- "Sue Ellen Francisco",
167
- "Sunshiney",
168
- "Swanky and Moo Moo",
169
- "Syncopate",
170
- "Tangerine",
171
- "Tenor Sans",
172
- "Terminal Dosis Light",
173
- "The Girl Next Door",
174
- "Tinos",
175
- "Ubuntu",
176
- "Ultra",
177
- "UnifrakturCook",
178
- "UnifrakturMaguntia",
179
- "Unkempt",
180
- "VT323",
181
- "Varela",
182
- "Vibur",
183
- "Vollkorn",
184
- "Waiting for the Sunrise",
185
- "Wallpoet",
186
- "Walter Turncoat",
187
- "Wire One",
188
- "Yanone Kaffeesatz",
189
- "Zeyada"
190
- );
191
 
192
- protected function getOptions()
 
 
193
  {
 
194
  global $gantry;
195
- $options = array();
196
- $options = parent::getOptions();
197
 
198
- if (!defined("GANTRY_FONTS")) {
199
  $gantry->addScript($gantry->gantryUrl . '/admin/widgets/fonts/js/fonts.js');
200
- $gantry->addDomReadyScript("GantryFonts.init('webfonts_enabled', 'webfonts_source', 'font_family');");
201
- define("GANTRY_FONTS", 1);
 
 
 
 
 
 
 
 
 
 
202
  }
203
 
 
 
204
 
205
- // only google right now
206
- if ($gantry->get('webfonts-source') == 'google') {
207
- $webfonts = $this->_google_fonts;
 
 
 
 
 
 
 
 
 
 
 
208
  }
209
 
210
- if ($gantry->get('webfonts-enabled')) $disabled = false; else $disabled = true;
211
 
212
- foreach ($webfonts as $webfont) {
213
- $webfontsData = $webfont;
214
- $webfontsValue = $webfont;
 
 
 
 
 
 
 
 
 
 
 
 
 
215
 
216
- $text = $webfontsData;
 
 
 
 
217
 
218
- // Create a new option object based on the <option /> element.
219
- $tmp = GantryHtmlSelect::option((string)$webfontsValue, _r(trim((string)$text)), 'value', 'text', $disabled);
220
 
221
- // adding reference source class
222
- if (in_array($webfont, $this->_google_fonts)) $option['class'] = 'google'; else $option['class'] = 'native';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
 
224
- // Set some option attributes.
225
- $tmp->class = (string)$option['class'];
 
226
 
227
- // Set some JavaScript option attributes.
228
 
229
- $tmp->onclick = isset($option['onclick']) ? (string)$option['onclick'] : '';
 
 
 
 
230
 
231
- // Add the option object to the result set.
232
- $options[] = $tmp;
233
  }
234
 
235
- return $options;
 
236
  }
237
  }
1
  <?php
2
  /**
3
+ * @version $Id: fonts.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
 
9
  gantry_import('core.config.gantryformfield');
10
 
11
+ class GantryFormFieldFonts extends GantryFormField
12
+ {
13
 
14
+ /*
15
+ Google Fonts JSON retrieved from browser direct access to: https://www.googleapis.com/webfonts/v1/webfonts
16
+ */
17
 
 
 
 
 
 
 
 
 
18
  protected $type = 'fonts';
19
+ protected $basetype = 'fonts';
20
+ protected $translate_options = true;
21
+ protected $options = array();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
 
23
+ static $assets_loaded = false;
24
+
25
+ public function getInput()
26
  {
27
+ /** @var $gantry Gantry */
28
  global $gantry;
29
+ $this->translate_options = $this->getBool('translation', true);
30
+ $optionsOutput = array();
31
 
32
+ if (!self::$assets_loaded) {
33
  $gantry->addScript($gantry->gantryUrl . '/admin/widgets/fonts/js/fonts.js');
34
+ $gantry->addDomReadyScript("\nGantryFonts.init({
35
+ param: '" . $this->id . "',
36
+ baseurl: '" . $gantry->gantryUrl . "/admin/widgets/fonts/js/',
37
+ paths: {
38
+ 'Google Fonts': {
39
+ delim: 'g:',
40
+ json: 'google-fonts.json'
41
+ }
42
+ }
43
+ });\n");
44
+
45
+ self::$assets_loaded = true;
46
  }
47
 
48
+ $options = $this->getOptions();
49
+ $primary = (string)$this->element['primary'];
50
 
51
+ if ($primary) {
52
+ foreach ($options as $index => $option) {
53
+ if ($option->value == $primary || $option->value == 's:' . $primary) {
54
+ $disabled = ($option->disable == 'disable') ? ' disabled="disabled"' : "";
55
+ $selected = ($this->value == $option->value) ? ' selected="selected"' : "";
56
+ if (!strpos($option->value, ':')) $option->value = 's:' . $option->value;
57
+
58
+ $optionsOutput[] = '<optgroup label="Template Fonts">';
59
+ $optionsOutput[] = ' <option value="' . $option->value . '"' . $selected . $disabled . '>' . $option->text . '</option>';
60
+ $optionsOutput[] = '</optgroup>';
61
+
62
+ unset($options[$index]);
63
+ }
64
+ }
65
  }
66
 
 
67
 
68
+ $optionsOutput[] = '<optgroup label="Standard Fonts">';
69
+ foreach ($options as $option) {
70
+ $optionData = $option->text;
71
+ $optionValue = $option->value;
72
+ $optionDisabled = $option->disable;
73
+ $optionClass = (isset($option->class)) ? $option->class : null;
74
+ $cls = '';
75
+
76
+ $disabled = ($optionDisabled == 'disable') ? ' disabled="disabled"' : "";
77
+ $selected = ($this->value == $optionValue) ? ' selected="selected"' : "";
78
+ $active = ($this->value == $optionValue) ? ' class="active"' : "";
79
+ if (strlen($active)) $activeElement = $optionData;
80
+
81
+ if (strlen($disabled)) $active = 'class="disabled"';
82
+ if (strlen($optionClass)) $cls = 'class="' . $optionClass . '"';
83
+
84
 
85
+ // complex classes
86
+ if (strlen($optionClass)) {
87
+ $crnt = $active = ($this->value == $optionValue) ? " active" : "";
88
+ if (strlen($disabled)) $active = ' class="disabled ' . $optionClass . $crnt . '"'; else $active = ' class="' . $optionClass . $crnt . '"';
89
+ }
90
 
91
+ $text = ($this->translate_options) ? _g($optionData) : $optionData;
 
92
 
93
+ $optionsOutput[] = '<option value="' . $optionValue . '"' . $cls . $selected . $disabled . '>' . $text . '</option>';
94
+ }
95
+ $optionsOutput[] = '</optgroup>';
96
+
97
+ if ($this->detached) $disabledField = ' disabled'; else $disabledField = '';
98
+
99
+ $html[] = '<div class="wrapper">';
100
+ $html[] = ' <div class="selectbox-wrapper' . $disabledField . '">';
101
+ $html[] = ' <select id="' . $this->id . '" data-value="' . $this->value . '" name="' . $this->name . '" class="selectbox-real">';
102
+ $html[] = implode("\n", $optionsOutput);
103
+ $html[] = ' </select>';
104
+ $html[] = ' </div>';
105
+ $html[] = '</div>';
106
+
107
+ return implode("\n", $html);
108
+ }
109
+
110
+ protected function getOptions()
111
+ {
112
+ /** @var $gantry Gantry */
113
+ global $gantry;
114
 
115
+ if (isset($this->element->option)) {
116
+ foreach ($this->element->option as $option) {
117
+ if ($option->getName() != 'option') continue;
118
 
119
+ $label = ($this->translate_options) ? _g(trim((string)$option)) : trim((string)$option);
120
 
121
+ $tmp = GantryHtmlSelect::option('s:' . (string)$option['value'], $label, 'value', 'text', $this->getBool('disabled', false, $option));
122
+ $tmp->class = (string)$option['class'];
123
+ $tmp->onclick = (string)$option['onclick'];
124
+ $this->options[] = $tmp;
125
+ }
126
 
 
 
127
  }
128
 
129
+ reset($this->options);
130
+ return $this->options;
131
  }
132
  }
admin/forms/fields/gantry.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: gantry.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
@@ -20,14 +20,40 @@ class GantryFormFieldGANTRY extends GantryFormField
20
 
21
  public function getInput()
22
  {
 
23
  global $gantry;
 
 
 
 
 
 
 
24
 
25
- if (!defined('GANTRY_CSS')) {
26
- $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/gantry.css');
27
- define('GANTRY_CSS', 1);
28
  }
29
 
30
- return null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  }
32
 
33
  public function getLabel()
@@ -35,4 +61,4 @@ class GantryFormFieldGANTRY extends GantryFormField
35
  return "";
36
  }
37
 
38
- }
1
  <?php
2
  /**
3
+ * @version $Id: gantry.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
20
 
21
  public function getInput()
22
  {
23
+ /** @global $gantry Gantry */
24
  global $gantry;
25
+ $gantry->addInlineScript("
26
+ var GantryTemplate = '" . $gantry->templateName . "',
27
+ GantryAjaxURL = '" . $gantry->getAjaxUrl() . "',
28
+ GantryURL = '" . $gantry->gantryUrl . "',
29
+ GantryParamsPrefix = '" . $gantry->templateName . "-template_options_';
30
+ var AdminURI = GantryAjaxURL;");
31
+ $gantry->addInlineScript($this->_gantryLang());
32
 
33
+ return null;
 
 
34
  }
35
 
36
+ protected function _gantryLang()
37
+ {
38
+ return "var GantryLang = {
39
+ 'preset_title': '" . _g('PRESET_TITLE') . "',
40
+ 'preset_select': '" . _g('PRESET_SELECT') . "',
41
+ 'preset_name': '" . _g('PRESET_NAME') . "',
42
+ 'key_name': '" ._g('KEY_NAME') . "',
43
+ 'preset_naming': '" . _g('PRESET_NAMING') . "',
44
+ 'preset_skip': '" . _g('PRESET_SKIP') . "',
45
+ 'success_save': '" . _g('SUCCESS_SAVE') . "',
46
+ 'success_msg': '" . _g('SUCCESS_MSG') . "',
47
+ 'fail_save': '" . _g('FAIL_SAVE') . "',
48
+ 'fail_msg': '" . _g('FAIL_MSG') . "',
49
+ 'cancel': '" . _g('CANCEL') . "',
50
+ 'save': '" . _g('SAVE') . "',
51
+ 'retry': '" . _g('RETRY') . "',
52
+ 'close': '" . _g('CLOSE') . "',
53
+ 'show_parameters': '" . _g('SHOW_PARAMETERS') . "',
54
+ 'are_you_sure': '" ._g('PRESETS_DELETE_ARE_YOU_SURE') . "'
55
+ };
56
+ ";
57
  }
58
 
59
  public function getLabel()
61
  return "";
62
  }
63
 
64
+ }
admin/forms/fields/gradient.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: gradient.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
@@ -20,6 +20,7 @@ class GantryFormFieldGradient extends GantryFormField
20
 
21
  public function getInput()
22
  {
 
23
  global $gantry;
24
 
25
  if (!defined('GANTRY_GRADIENT')) {
1
  <?php
2
  /**
3
+ * @version $Id: gradient.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
20
 
21
  public function getInput()
22
  {
23
+ /** @global $gantry Gantry */
24
  global $gantry;
25
 
26
  if (!defined('GANTRY_GRADIENT')) {
admin/forms/fields/groupedlist.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: groupedlist.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
@@ -148,7 +148,8 @@ class GantryFormFieldGroupedList extends GantryFormField
148
  $html[] = '<input type="hidden" name="' . $this->name . '" value="' . $this->value . '"/>';
149
  } // Create a regular list.
150
  else {
151
- $html[] = GantryHTMLSelect::groupedlist($groups, $this->name, array('list.attr' => $attr,
 
152
  'id' => $this->id,
153
  'list.select' => $this->value,
154
  'group.items' => null,
1
  <?php
2
  /**
3
+ * @version $Id: groupedlist.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
148
  $html[] = '<input type="hidden" name="' . $this->name . '" value="' . $this->value . '"/>';
149
  } // Create a regular list.
150
  else {
151
+ $html[] = GantryHTMLSelect::groupedlist($groups, $this->name, array(
152
+ 'list.attr' => $attr,
153
  'id' => $this->id,
154
  'list.select' => $this->value,
155
  'group.items' => null,
admin/forms/fields/hidden.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * @version $Id: hidden.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
2
  /**
3
  * @version $Id: hidden.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
admin/forms/fields/html.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: html.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
@@ -21,6 +21,7 @@ class GantryFormFieldHTML extends GantryFormField
21
 
22
  public function getInput()
23
  {
 
24
  global $gantry;
25
 
26
  $html = (string)$this->element->html;
1
  <?php
2
  /**
3
+ * @version $Id: html.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
21
 
22
  public function getInput()
23
  {
24
+ /** @global $gantry Gantry */
25
  global $gantry;
26
 
27
  $html = (string)$this->element->html;
admin/forms/fields/imagepicker.php ADDED
@@ -0,0 +1,189 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @version 4.0.0 March 19, 2013
4
+ * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
+ */
8
+ defined('ABSPATH') or die();
9
+
10
+ gantry_import('core.config.gantryformfield');
11
+ class GantryFormFieldImagePicker extends GantryFormField {
12
+
13
+ protected $type = 'imagepicker';
14
+ protected $basetype = 'imagepicker';
15
+
16
+ function getInput(){
17
+ global $gantry, $ajaxurl;
18
+
19
+ $active_plugins = get_option('active_plugins');
20
+ $layout = $link = $dropdown = "";
21
+ $options = $choices = array();
22
+ $nomargin = false;
23
+ $rokgallery = !in_array('wp_rokgallery/rokgallery.php', $active_plugins) ? false : true;
24
+ //$rokgallery = false; // debug
25
+
26
+ $value = str_replace("'", '"', $this->value);
27
+ $data = json_decode($value);
28
+ if (!$data && strlen($value)){
29
+ $nomargin = true;
30
+ $data = json_decode('{"path":"'.$value.'"}');
31
+ }
32
+ $preview = "";
33
+ $preview_width = 'width="100"';
34
+ $preview_height = 'height="70"';
35
+
36
+ if (!$data && (!isset($data->preview) || !isset($data->path))) $preview = $gantry->gantryUrl . '/admin/widgets/imagepicker/images/no-image.png';
37
+ else if (isset($data->preview)) $preview = $data->preview;
38
+ else {
39
+ //$preview = site_url() . '/' . $data->path;
40
+ $preview = $data->path;
41
+ $preview_height = "";
42
+ }
43
+
44
+ $blank = $gantry->gantryUrl . '/admin/widgets/imagepicker/images/no-image.png';
45
+
46
+ add_thickbox();
47
+
48
+ if (!defined('ELEMENT_RTIMAGEPICKER')){
49
+ $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/imagepicker/css/imagepicker.css');
50
+
51
+ $gantry->addInlineScript("
52
+ if (typeof send_to_editor == 'undefined'){
53
+ function send_to_editor(html) {
54
+ var editor = window.currentIMGPickerID;
55
+
56
+ var source = html.match(/(src)=(\"[^\"]*\")/i), img;
57
+ text = source[2].replace(/\\\"/g, '');
58
+ //img = '".site_url()."/' + text;
59
+ img = text;
60
+
61
+
62
+ document.getElementById(editor + '-img').src = img;
63
+ document.getElementById(editor + '-img').removeProperty('height');
64
+ document.getElementById(editor).value = JSON.encode({path: text});
65
+
66
+ tb_remove();
67
+ };
68
+ };
69
+ ");
70
+
71
+ $gantry->addInlineScript("
72
+ var AdminURI = '" . $ajaxurl . "';
73
+ var GalleryPickerInsertText = function(input, string, size, minithumb){
74
+ var data = {
75
+ path: string,
76
+ width: size.width,
77
+ height: size.height,
78
+ preview: minithumb
79
+ };
80
+
81
+ document.getElementById(input + '-img').src = minithumb;
82
+ document.getElementById(input + '-infos').innerHTML = data.width + ' x ' + data.height;
83
+ document.getElementById(input).value = JSON.encode(data);
84
+
85
+ };
86
+
87
+ var empty_background_img = '" . $gantry->gantryUrl . "/admin/widgets/imagepicker/images/no-image.png';
88
+ ");
89
+
90
+
91
+ define('ELEMENT_RTIMAGEPICKER', true);
92
+ }
93
+
94
+ $gantry->addInlineScript("
95
+ window.addEvent('domready', function(){
96
+ document.id('".$this->id."').addEvent('keyup', function(value){
97
+ document.id('".$this->id."-infos').innerHTML = '';
98
+ if (!value || !value.length) document.id('".$this->id."-img').set('src', empty_background_img);
99
+ else {
100
+ var data = JSON.decode(value);
101
+ document.id('".$this->id."-img').set('src', (data.preview ? data.preview : '" . site_url() . "/' + data.path));
102
+ if (!data.preview){
103
+ document.id('".$this->id."-img').removeProperty('height');
104
+ } else {
105
+ document.id('".$this->id."-img').set('height', '50');
106
+ if (data.width && data.height) document.id('".$this->id."-infos').innerHTML = data.width + ' x ' + data.height;
107
+ }
108
+ }
109
+
110
+ this.setProperty('value', value);
111
+ });
112
+
113
+ document.id('".$this->id."-clear').addEvent('click', function(e){
114
+ e.stop();
115
+ document.id('".$this->id."').set('value', '').fireEvent('set', '');
116
+ document.getElementById('".$this->id."-img').src = '".$blank."';
117
+ document.getElementById('".$this->id."-infos').innerHTML = '';
118
+ });
119
+
120
+ document.id('".$this->id."-link').addEvent('mouseover', function(e){
121
+ window.currentIMGPickerID = '".$this->id."';
122
+ });
123
+
124
+ var dropdown = document.id('".$this->id."mediatype');
125
+ if (dropdown){
126
+ dropdown.addEvent('change', function(){
127
+ document.id('".$this->id."-link').set('href', this.value);
128
+ });
129
+ }
130
+ });
131
+ ");
132
+
133
+ if ($rokgallery) $link = get_bloginfo('wpurl') . '/wp-admin/admin-ajax.php?action=rokgallery_gallerypicker&TB_iframe=true&height=675&width=450&modal=false';
134
+ else $link = get_bloginfo('wpurl') . '/wp-admin/media-upload.php?type=image&TB_iframe=true&height=640&width=620&tab=library&modal=false';
135
+
136
+ if ($rokgallery){
137
+ $choices = array(
138
+ array('RokGallery', get_bloginfo('wpurl') . '/wp-admin/admin-ajax.php?action=rokgallery_gallerypicker&TB_iframe=true&height=675&width=450&modal=false'),
139
+ array('Media Library', get_bloginfo('wpurl') . '/wp-admin/media-upload.php?type=image&TB_iframe=true&height=640&width=620&tab=library&modal=false')
140
+ );
141
+
142
+ foreach ($choices as $option){
143
+ $options[] = GantryHtmlSelect::option($option[1], $option[0], 'value', 'text');
144
+ }
145
+
146
+ include_once($gantry->gantryPath . '/admin/forms/fields/selectbox.php');
147
+ $selectbox = new GantryFormFieldSelectBox;
148
+ $selectbox->id = $this->id . 'mediatype';
149
+ $selectbox->value = $link;
150
+ $selectbox->addOptions($options);
151
+ $dropdown = '<div id="'.$this->id.'-mediadropdown" class="mediadropdown">'.$selectbox->getInput() ."</div>";
152
+ }
153
+
154
+ $value = str_replace('"', "'", $value);
155
+ $layout .= '
156
+ <div class="wrapper">'."\n".'
157
+ <div id="' . $this->id . '-wrapper" class="backgroundpicker">'."\n".'
158
+ <img id="'.$this->id.'-img" class="backgroundpicker-img" '.$preview_width.' '.$preview_height.' alt="" src="'.$preview.'" />
159
+
160
+ <div id="'.$this->id.'-infos" class="backgroundpicker-infos" '.($rokgallery && !$nomargin ? 'style="display:block;"' : 'style="display:none;"').' >'
161
+ .((isset($data->width) && (isset($data->height))) ? $data->width.' x '.$data->height : '').
162
+ '</div>
163
+
164
+
165
+ <a id="'.$this->id.'-link" href="'.$link.'" class="bg-button thickbox modal">'."\n".'
166
+ <span class="bg-button-right">'."\n".'
167
+ Select
168
+ </span>'."\n".'
169
+ </a>'."\n".'
170
+ <a id="'.$this->id.'-clear" href="#" class="bg-button bg-button-clear">'."\n".'
171
+ <span class="bg-button-right">'."\n".'
172
+ Reset
173
+ </span>'."\n".'
174
+ </a>'."\n".'
175
+
176
+ ' . $dropdown . '
177
+
178
+ <input class="background-picker" type="hidden" id="' . $this->id . '" name="' . $this->name . '" value="' . $value . '" />'."\n".'
179
+ <div class="clr"></div>
180
+ </div>'."\n".'
181
+ </div>'."\n".'
182
+ ';
183
+
184
+ return $layout;
185
+ }
186
+
187
+ }
188
+
189
+ ?>
admin/forms/fields/integer.php CHANGED
@@ -1,17 +1,15 @@
1
  <?php
2
  /**
3
- * @version $Id: integer.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
9
 
10
  gantry_import('core.config.gantryformfield');
11
  gantry_import('core.config.gantryhtmlselect');
12
- require_once('list.php');
13
-
14
- require_once(dirname(__FILE__) . '/list.php');
15
 
16
 
17
  class GantryFormFieldInteger extends GantryFormFieldList
1
  <?php
2
  /**
3
+ * @version $Id: integer.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
9
 
10
  gantry_import('core.config.gantryformfield');
11
  gantry_import('core.config.gantryhtmlselect');
12
+ require_once(gantry_dirname(__FILE__) . '/list.php');
 
 
13
 
14
 
15
  class GantryFormFieldInteger extends GantryFormFieldList
admin/forms/fields/linkcategories.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: linkcategories.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
@@ -31,6 +31,7 @@ class GantryFormFieldLinkCategories extends GantryFormFieldList
31
  */
32
  protected function getOptions()
33
  {
 
34
  global $gantry;
35
  $options = array();
36
  $options = parent::getOptions();
1
  <?php
2
  /**
3
+ * @version $Id: linkcategories.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
31
  */
32
  protected function getOptions()
33
  {
34
+ /** @global $gantry Gantry */
35
  global $gantry;
36
  $options = array();
37
  $options = parent::getOptions();
admin/forms/fields/list.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * @version $Id: list.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
2
  /**
3
  * @version $Id: list.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
admin/forms/fields/navmenulist.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: navmenulist.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
@@ -10,7 +10,7 @@ defined('GANTRY_VERSION') or die;
10
 
11
  gantry_import('core.config.gantryformfield');
12
  gantry_import('core.config.gantryhtmlselect');
13
- require_once(dirname(__FILE__) . '/list.php');
14
 
15
 
16
  class GantryFormFieldNavMenuList extends GantryFormFieldList
@@ -32,6 +32,7 @@ class GantryFormFieldNavMenuList extends GantryFormFieldList
32
  */
33
  protected function getOptions()
34
  {
 
35
  global $gantry;
36
  $options = array();
37
  $options = parent::getOptions();
1
  <?php
2
  /**
3
+ * @version $Id: navmenulist.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
10
 
11
  gantry_import('core.config.gantryformfield');
12
  gantry_import('core.config.gantryhtmlselect');
13
+ require_once(gantry_dirname(__FILE__) . '/list.php');
14
 
15
 
16
  class GantryFormFieldNavMenuList extends GantryFormFieldList
32
  */
33
  protected function getOptions()
34
  {
35
+ /** @global $gantry Gantry */
36
  global $gantry;
37
  $options = array();
38
  $options = parent::getOptions();
admin/forms/fields/overlays.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: overlays.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
@@ -21,10 +21,11 @@ class GantryFormFieldOverlays extends GantryFormField
21
 
22
  public function getInput()
23
  {
 
24
  global $gantry;
25
  $output = '';
26
 
27
- $this->template = end(explode(DS, $gantry->templatePath));
28
 
29
  $class = $this->element['class'] ? $this->element['class'] : '';
30
  $preview = $this->element['preview'] ? $this->element['preview'] : "false";
@@ -51,6 +52,7 @@ class GantryFormFieldOverlays extends GantryFormField
51
  }
52
  if (!defined('GANTRY_OVERLAYS')) {
53
  $gantry->addInlineScript('var GantryOverlays = {};');
 
54
  define('GANTRY_OVERLAYS', 1);
55
  }
56
 
@@ -112,6 +114,7 @@ class GantryFormFieldOverlays extends GantryFormField
112
 
113
  function _loadOverlays($elementName, $path)
114
  {
 
115
  global $gantry;
116
 
117
  $overlays = $gantry->retrieveTemp('overlays', 'overlays', array());
@@ -166,6 +169,7 @@ class GantryFormFieldOverlays extends GantryFormField
166
 
167
  function sliderInit($name)
168
  {
 
169
  global $gantry;
170
 
171
  $name = $name;
1
  <?php
2
  /**
3
+ * @version $Id: overlays.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
21
 
22
  public function getInput()
23
  {
24
+ /** @global $gantry Gantry */
25
  global $gantry;
26
  $output = '';
27
 
28
+ $this->template = end(explode('/', $gantry->templatePath));
29
 
30
  $class = $this->element['class'] ? $this->element['class'] : '';
31
  $preview = $this->element['preview'] ? $this->element['preview'] : "false";
52
  }
53
  if (!defined('GANTRY_OVERLAYS')) {
54
  $gantry->addInlineScript('var GantryOverlays = {};');
55
+ $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/overlays/css/overlays.css');
56
  define('GANTRY_OVERLAYS', 1);
57
  }
58
 
114
 
115
  function _loadOverlays($elementName, $path)
116
  {
117
+ /** @global $gantry Gantry */
118
  global $gantry;
119
 
120
  $overlays = $gantry->retrieveTemp('overlays', 'overlays', array());
169
 
170
  function sliderInit($name)
171
  {
172
+ /** @global $gantry Gantry */
173
  global $gantry;
174
 
175
  $name = $name;
admin/forms/fields/password.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * @version $Id: password.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
2
  /**
3
  * @version $Id: password.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
admin/forms/fields/positions.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: positions.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
@@ -43,6 +43,7 @@ class GantryFormFieldPositions extends GantryFormField
43
 
44
  public function getInput()
45
  {
 
46
  global $gantry;
47
  gantry_import('core.gantrypositions');
48
 
@@ -236,6 +237,7 @@ class GantryFormFieldPositions extends GantryFormField
236
 
237
  function tryCache($implode, $scheme, $words, $grid = 12)
238
  {
 
239
  global $gantry;
240
 
241
  $md5 = md5($grid . implode("", $words) . $scheme);
@@ -258,6 +260,7 @@ class GantryFormFieldPositions extends GantryFormField
258
 
259
  function getCombinations()
260
  {
 
261
  global $gantry;
262
 
263
  if ($this->type == 'custom') return $this->getCustomCombinations();
1
  <?php
2
  /**
3
+ * @version $Id: positions.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
43
 
44
  public function getInput()
45
  {
46
+ /** @global $gantry Gantry */
47
  global $gantry;
48
  gantry_import('core.gantrypositions');
49
 
237
 
238
  function tryCache($implode, $scheme, $words, $grid = 12)
239
  {
240
+ /** @global $gantry Gantry */
241
  global $gantry;
242
 
243
  $md5 = md5($grid . implode("", $words) . $scheme);
260
 
261
  function getCombinations()
262
  {
263
+ /** @global $gantry Gantry */
264
  global $gantry;
265
 
266
  if ($this->type == 'custom') return $this->getCustomCombinations();
admin/forms/fields/positionslist.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: positionslist.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
@@ -10,7 +10,7 @@ defined('GANTRY_VERSION') or die;
10
 
11
  gantry_import('core.config.gantryformfield');
12
 
13
- require_once(dirname(__FILE__) . '/selectbox.php');
14
 
15
  /**
16
  *
@@ -28,6 +28,7 @@ class GantryFormFieldPositionsList extends GantryFormFieldSelectBox
28
 
29
  protected function getOptions()
30
  {
 
31
  global $gantry;
32
  $options = array();
33
  $options = parent::getOptions();
1
  <?php
2
  /**
3
+ * @version $Id: positionslist.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
10
 
11
  gantry_import('core.config.gantryformfield');
12
 
13
+ require_once(gantry_dirname(__FILE__) . '/selectbox.php');
14
 
15
  /**
16
  *
28
 
29
  protected function getOptions()
30
  {
31
+ /** @global $gantry Gantry */
32
  global $gantry;
33
  $options = array();
34
  $options = parent::getOptions();
admin/forms/fields/preset.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: preset.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
@@ -25,6 +25,7 @@ class GantryFormFieldPreset extends GantryFormField
25
  public function getInput()
26
  {
27
 
 
28
  global $gantry;
29
 
30
  $name = (string)$this->element['name'];
@@ -53,6 +54,8 @@ class GantryFormFieldPreset extends GantryFormField
53
 
54
  if (isset($gantry->customPresets[$name])) {
55
  $gantry->addInlineScript('var CustomPresets = ' . json_encode($gantry->customPresets[$name]) . ';');
 
 
56
  }
57
 
58
  define('GANTRY_PRESET', 1);
@@ -75,6 +78,7 @@ class GantryFormFieldPreset extends GantryFormField
75
 
76
  function populatePresets($name)
77
  {
 
78
  global $gantry;
79
 
80
  $output = "";
@@ -107,14 +111,15 @@ class GantryFormFieldPreset extends GantryFormField
107
 
108
  function scrollerLayout($element)
109
  {
 
110
  global $gantry;
111
 
112
  $name = (string)$element['name'];
113
  $realname = $name;
114
  $presets = $gantry->presets;
115
  $totCount = count($presets[$name]);
116
- $width = $totCount * 198;
117
- if ($width < 593) $width = 593;
118
 
119
  $html = "";
120
  $html .= "
@@ -132,10 +137,11 @@ class GantryFormFieldPreset extends GantryFormField
132
  $name = strtolower(str_replace(" ", "", $key));
133
 
134
  $html .= "<div class='preset$i block$class'>";
135
- $html .= " <div style='background:url(../wp-content/themes/" . $gantry->templateName . "/admin/presets/$name.png) no-repeat'></div>";
136
  $html .= " <span>" . $preset_name . "</span>";
 
 
137
  if (isset($gantry->customPresets[$realname][$key])) {
138
- $html .= "<div id='keydelete-" . $key . "' class='delete-preset'><span>X</span></div>";
139
  }
140
  $html .= "</div>";
141
 
@@ -146,7 +152,7 @@ class GantryFormFieldPreset extends GantryFormField
146
  </div>
147
  </div>
148
  </div>
149
- <div class='bar'><div class='bar-right'></div></div>
150
  </div>
151
  <div id='params" . $realname . "' class='im-a-preset'></div>
152
  </div>
1
  <?php
2
  /**
3
+ * @version $Id: preset.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
25
  public function getInput()
26
  {
27
 
28
+ /** @global $gantry Gantry */
29
  global $gantry;
30
 
31
  $name = (string)$this->element['name'];
54
 
55
  if (isset($gantry->customPresets[$name])) {
56
  $gantry->addInlineScript('var CustomPresets = ' . json_encode($gantry->customPresets[$name]) . ';');
57
+ } else {
58
+ $gantry->addInlineScript('var CustomPresets = {};');
59
  }
60
 
61
  define('GANTRY_PRESET', 1);
78
 
79
  function populatePresets($name)
80
  {
81
+ /** @global $gantry Gantry */
82
  global $gantry;
83
 
84
  $output = "";
111
 
112
  function scrollerLayout($element)
113
  {
114
+ /** @global $gantry Gantry */
115
  global $gantry;
116
 
117
  $name = (string)$element['name'];
118
  $realname = $name;
119
  $presets = $gantry->presets;
120
  $totCount = count($presets[$name]);
121
+ $width = $totCount * 200;
122
+ //if ($width < 593) $width = 593;
123
 
124
  $html = "";
125
  $html .= "
137
  $name = strtolower(str_replace(" ", "", $key));
138
 
139
  $html .= "<div class='preset$i block$class'>";
 
140
  $html .= " <span>" . $preset_name . "</span>";
141
+ $html .= " <div class=\"presets-bg\" style='background:url(" . $gantry->templateUrl . "/admin/presets/$name.png) no-repeat'></div>";
142
+
143
  if (isset($gantry->customPresets[$realname][$key])) {
144
+ $html .= "<div id='keydelete-" . $key . "' class='delete-preset'><span>&times;</span></div>";
145
  }
146
  $html .= "</div>";
147
 
152
  </div>
153
  </div>
154
  </div>
155
+ <div class='bar'></div>
156
  </div>
157
  <div id='params" . $realname . "' class='im-a-preset'></div>
158
  </div>
admin/forms/fields/radio.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * @version $Id: radio.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
2
  /**
3
  * @version $Id: radio.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
admin/forms/fields/selectbox.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: selectbox.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
@@ -27,17 +27,20 @@ class GantryFormFieldSelectBox extends GantryFormField
27
 
28
  public function getInput()
29
  {
 
30
  global $gantry;
31
 
32
- if (!defined('GANTRY_SELECTBOX')) {
33
- $this->template = end(explode(DS, $gantry->templatePath));
34
- $gantry->addScript($gantry->gantryUrl . '/admin/widgets/selectbox/js/selectbox.js');
 
35
 
36
- define('GANTRY_SELECTBOX', 1);
37
- }
38
 
39
  $lis = $activeElement = "";
40
  $this->translate_options = $this->getBool('translation', true);
 
41
 
42
 
43
  $options = $this->getOptions();
@@ -81,24 +84,24 @@ class GantryFormFieldSelectBox extends GantryFormField
81
  $html = "<div class='wrapper'>";
82
  $html .= "<div class='selectbox-wrapper" . $disabledField . "'>";
83
 
84
- $html .= " <div class='selectbox'>";
85
 
86
- $html .= " <div class='selectbox-top'>";
87
- $html .= " <div class='selected'><span>" . $activeElement . "</span></div>";
88
- $html .= " <div class='arrow'></div>";
89
- $html .= " </div>";
90
- $html .= " <div class='selectbox-dropdown'>";
91
- $html .= " <ul>" . $lis . "</ul>";
92
- $html .= " <div class='selectbox-dropdown-bottom'><div class='selectbox-dropdown-bottomright'></div></div>";
93
- $html .= " </div>";
94
 
95
- $html .= " </div>";
96
 
97
- $html .= " <select id='" . $this->id . "' name='" . $this->name . "' class='selectbox-real " . $imapreset . "'>";
98
  $html .= $optionsOutput;
99
  $html .= " </select>";
100
  $html .= "</div>";
101
- $html .= "<div class='clr'></div>";
102
  $html .= "</div>";
103
 
104
  return $html;
1
  <?php
2
  /**
3
+ * @version $Id: selectbox.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
27
 
28
  public function getInput()
29
  {
30
+ /** @global $gantry Gantry */
31
  global $gantry;
32
 
33
+ // if (!defined('GANTRY_SELECTBOX'))
34
+ // {
35
+ // $this->template = end(explode('/', $gantry->templatePath));
36
+ // $gantry->addScript($gantry->gantryUrl . '/admin/widgets/selectbox/js/selectbox.js');
37
 
38
+ // define('GANTRY_SELECTBOX', 1);
39
+ // }
40
 
41
  $lis = $activeElement = "";
42
  $this->translate_options = $this->getBool('translation', true);
43
+ $isisDropdowns = !$gantry->get('isis-dropdowns',false) ? 'chzn-done':'';
44
 
45
 
46
  $options = $this->getOptions();
84
  $html = "<div class='wrapper'>";
85
  $html .= "<div class='selectbox-wrapper" . $disabledField . "'>";
86
 
87
+ // $html .= " <div class='selectbox'>";
88
 
89
+ // $html .= " <div class='selectbox-top'>";
90
+ // $html .= " <div class='selected'><span>" . $activeElement . "</span></div>";
91
+ // $html .= " <div class='arrow'></div>";
92
+ // $html .= " </div>";
93
+ // $html .= " <div class='selectbox-dropdown'>";
94
+ // $html .= " <ul>" . $lis . "</ul>";
95
+ // $html .= " <div class='selectbox-dropdown-bottom'><div class='selectbox-dropdown-bottomright'></div></div>";
96
+ // $html .= " </div>";
97
 
98
+ // $html .= " </div>";
99
 
100
+ $html .= " <select id='" . $this->id . "' name='" . $this->name . "' class='selectbox-real " . $isisDropdowns . $imapreset . "'>";
101
  $html .= $optionsOutput;
102
  $html .= " </select>";
103
  $html .= "</div>";
104
+ // $html .= "<div class='clr'></div>";
105
  $html .= "</div>";
106
 
107
  return $html;
admin/forms/fields/showmax.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: showmax.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
@@ -10,7 +10,7 @@ defined('GANTRY_VERSION') or die;
10
 
11
  gantry_import('core.config.gantryformfield');
12
 
13
- require_once(dirname(__FILE__) . '/selectbox.php');
14
 
15
  class GantryFormFieldShowMax extends GantryFormFieldSelectBox
16
  {
@@ -27,6 +27,7 @@ class GantryFormFieldShowMax extends GantryFormFieldSelectBox
27
 
28
  protected function getOptions()
29
  {
 
30
  global $gantry;
31
 
32
  $options = array();
1
  <?php
2
  /**
3
+ * @version $Id: showmax.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
10
 
11
  gantry_import('core.config.gantryformfield');
12
 
13
+ require_once(gantry_dirname(__FILE__) . '/selectbox.php');
14
 
15
  class GantryFormFieldShowMax extends GantryFormFieldSelectBox
16
  {
27
 
28
  protected function getOptions()
29
  {
30
+ /** @global $gantry Gantry */
31
  global $gantry;
32
 
33
  $options = array();
admin/forms/fields/slider.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: slider.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
@@ -21,6 +21,7 @@ class GantryFormFieldSlider extends GantryFormField
21
 
22
  public function getInput()
23
  {
 
24
  global $gantry;
25
  $output = '';
26
 
1
  <?php
2
  /**
3
+ * @version $Id: slider.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
21
 
22
  public function getInput()
23
  {
24
+ /** @global $gantry Gantry */
25
  global $gantry;
26
  $output = '';
27
 
admin/forms/fields/spacer.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * @version $Id: spacer.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
2
  /**
3
  * @version $Id: spacer.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
admin/forms/fields/text.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * @version $Id: text.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
2
  /**
3
  * @version $Id: text.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
admin/forms/fields/textarea.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: textarea.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
@@ -32,12 +32,10 @@ class GantryFormFieldTextarea extends GantryFormField
32
  // Initialize some field attributes.
33
  $class = $this->element['class'] ? ' class="' . (string)$this->element['class'] . '"' : '';
34
  $disabled = ((string)$this->element['disabled'] == 'true') ? ' disabled="disabled"' : '';
35
- $columns = $this->element['cols'] ? ' cols="' . (int)$this->element['cols'] . '"' : '';
36
- $rows = $this->element['rows'] ? ' rows="' . (int)$this->element['rows'] . '"' : '';
37
 
38
  // Initialize JavaScript field attributes.
39
  $onchange = $this->element['onchange'] ? ' onchange="' . (string)$this->element['onchange'] . '"' : '';
40
 
41
- return '<div class="wrapper"><textarea name="' . $this->name . '" id="' . $this->id . '"' . $columns . $rows . $class . $disabled . $onchange . '>' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '</textarea></div>';
42
  }
43
  }
1
  <?php
2
  /**
3
+ * @version $Id: textarea.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
32
  // Initialize some field attributes.
33
  $class = $this->element['class'] ? ' class="' . (string)$this->element['class'] . '"' : '';
34
  $disabled = ((string)$this->element['disabled'] == 'true') ? ' disabled="disabled"' : '';
 
 
35
 
36
  // Initialize JavaScript field attributes.
37
  $onchange = $this->element['onchange'] ? ' onchange="' . (string)$this->element['onchange'] . '"' : '';
38
 
39
+ return '<div class="wrapper"><textarea name="' . $this->name . '" id="' . $this->id . '"' . $class . $disabled . $onchange . '>' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '</textarea></div>';
40
  }
41
  }
admin/forms/fields/textplus.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @version $Id: textplus.php 59361 2013-03-13 23:10:27Z btowles $
4
+ * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
+ */
8
+ defined('GANTRY_VERSION') or die;
9
+
10
+ /**
11
+ * Form Field class for the Joomla Platform.
12
+ * Supports a one line text field.
13
+ *
14
+ * @package Joomla.Platform
15
+ * @subpackage Form
16
+ * @link http://www.w3.org/TR/html-markup/input.text.html#input.text
17
+ * @since 11.1
18
+ */
19
+ class GantryFormFieldTextPlus extends GantryFormField
20
+ {
21
+ /**
22
+ * The form field type.
23
+ *
24
+ * @var string
25
+ *
26
+ * @since 11.1
27
+ */
28
+ protected $type = 'textplus';
29
+
30
+ /**
31
+ * Method to get the field input markup.
32
+ *
33
+ * @return string The field input markup.
34
+ *
35
+ * @since 11.1
36
+ */
37
+ public function getInput()
38
+ {
39
+ // Initialize some field attributes.
40
+ $size = $this->element['size'] ? ' size="' . (int)$this->element['size'] . '"' : '';
41
+ $maxLength = $this->element['maxlength'] ? ' maxlength="' . (int)$this->element['maxlength'] . '"' : '';
42
+ $class = $this->element['class'] ? ' class="' . (string)$this->element['class'] . '"' : '';
43
+ $readonly = ((string)$this->element['readonly'] == 'true') ? ' readonly="readonly"' : '';
44
+ $disabled = ((string)$this->element['disabled'] == 'true') ? ' disabled="disabled"' : '';
45
+
46
+ $placeholder = $this->element['placeholder'] ? $this->element['placeholder'] : '';
47
+
48
+ $prepend = $this->element['prepend'] ? $this->element['prepend'] : false;
49
+ $append = $this->element['append'] ? $this->element['append'] : false;
50
+
51
+ // Initialize JavaScript field attributes.
52
+ $onchange = $this->element['onchange'] ? ' onchange="' . (string)$this->element['onchange'] . '"' : '';
53
+
54
+ $html = array();
55
+ if (!$prepend && !$append) {
56
+ $html[] = '<input type="text" name="' . $this->name . '" id="' . $this->id . '"' . ' value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '"' . $class . $size . $disabled . $readonly . $onchange . $maxLength . $placeholder . '/>';
57
+ } else if ($prepend) {
58
+ $html[] = '<div class="input-prepend custom-field">';
59
+ $html[] = ' <span class="add-on">';
60
+ $html[] = ' ' . $prepend;
61
+ $html[] = ' </span>';
62
+ $html[] = '<input type="text" name="' . $this->name . '" id="' . $this->id . '"' . ' value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '"' . $class . $size . $disabled . $readonly . $onchange . $maxLength . $placeholder . '/>';
63
+ $html[] = '</div>';
64
+ } else {
65
+ $html[] = '<div class="input-append custom-field">';
66
+ $html[] = ' <input type="text" name="' . $this->name . '" id="' . $this->id . '"' . ' value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '"' . $class . $size . $disabled . $readonly . $onchange . $maxLength . $placeholder . '/>';
67
+ $html[] = ' <span class="add-on">';
68
+ $html[] = ' ' . $append;
69
+ $html[] = ' </span>';
70
+ $html[] = '</div>';
71
+ }
72
+
73
+ return implode("\n", $html);
74
+ }
75
+ }
admin/forms/fields/tips.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: tips.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
@@ -17,52 +17,86 @@ class GantryFormFieldTips extends GantryFormField
17
 
18
  protected $type = 'tips';
19
  protected $basetype = 'none';
 
20
 
21
  public function getInput()
22
  {
23
 
 
24
  global $gantry;
25
 
26
- $gantry->addScript($gantry->gantryUrl . '/admin/widgets/tips/js/tips.js');
 
27
 
28
- $xmlist = $gantry->templatePath . '/admin/tips/' . $this->element['tab'] . '.xml';
 
 
 
 
 
 
 
29
  if (!file_exists($xmlist)) die($xmlist . ' file not found');
30
 
31
  $xml = simplexml_load_file($xmlist);
32
  $count = count($xml);
33
- $random = rand(0, $count - 1);
34
-
35
-
36
- $output = "
37
- <div class=\"gantrytips\">\n
38
- <div class=\"gantrytips-controller\">\n
39
- <div class=\"gantrytips-arrow gantrytips-left\">&#x25c0;</div>\n
40
- <div class=\"gantrytips-middle\"><span><span class=\"current-tip\">" . ($random + 1) . "</span> / " . $count . "</span></div>\n
41
- <div class=\"gantrytips-arrow gantrytips-right\">&#x25b6;</div>\n
42
- </div>\n
43
- <div class=\"gantrytips-desc\">\n
44
- <div class=\"gantrytips-wrapper\">\n";
45
-
46
- for ($i = 0; $i < $count; $i++) {
47
- $tip_title = ($xml->tip[$i]['label']);
48
- $tip_id = (isset($xml->tip[$i]['id'])) ? $xml->tip[$i]['id'] : false;
49
- $cls = ($i != $random) ? ' style="visibility: hidden; opacity: 0;"' : ' style="visibility: visible; opacity: 1;"';
50
-
51
- if (!$tip_id) $outputID = ''; else $outputID = 'id="tip-' . str_replace('-', '_', $tip_id) . '"';
52
-
53
- $output .= "<div " . $outputID . " class=\"gantrytips-tip\"" . $cls . ">\n";
54
- $output .= "<div class=\"gantrytips-bar h2bar\">\n
55
- <span>" . $tip_title . "</span>\n
56
- </div>\n";
57
- $output .= $xml->tip[$i] . "</div>\n";
58
- }
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
- $output .= "
 
 
 
 
 
 
 
 
 
 
61
  </div>\n
62
- </div>\n
63
- </div>\n";
 
 
 
64
 
65
- return $output;
66
 
67
 
68
  }
@@ -71,4 +105,4 @@ class GantryFormFieldTips extends GantryFormField
71
  {
72
  return "";
73
  }
74
- }
1
  <?php
2
  /**
3
+ * @version $Id: tips.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
17
 
18
  protected $type = 'tips';
19
  protected $basetype = 'none';
20
+ public static $assets_loaded = false;
21
 
22
  public function getInput()
23
  {
24
 
25
+ /** @global $gantry Gantry */
26
  global $gantry;
27
 
28
+ $tabname = $this->element['tab'];
29
+ $output = "";
30
 
31
+ if (!self::$assets_loaded){
32
+ $gantry->addScript($gantry->gantryUrl . '/admin/widgets/tips/js/tips.js');
33
+ $gantry->addInlineScript('var GantryPanelsTips = {};');
34
+
35
+ self::$assets_loaded = true;
36
+ }
37
+
38
+ $xmlist = $gantry->templatePath . '/admin/tips/' . $tabname . '.xml';
39
  if (!file_exists($xmlist)) die($xmlist . ' file not found');
40
 
41
  $xml = simplexml_load_file($xmlist);
42
  $count = count($xml);
43
+ $random = 0;
44
+
45
+ if ($tabname != "overview") {
46
+ $output = new stdClass;
47
+ $output->$tabname = new stdClass;
48
+ for ($i = 0; $i < $count; $i++) {
49
+ $tip_title = ($xml->tip[$i]['label']);
50
+ $tip_id = (isset($xml->tip[$i]['id'])) ? $xml->tip[$i]['id'] : false;
51
+
52
+ if ($tip_id){
53
+ $tip_id = str_replace('-', '_', $tip_id);
54
+
55
+ $output->$tabname->$tip_id = array(
56
+ 'title' => (string)$tip_title,
57
+ 'content' => strip_tags((string)$xml->tip[$i])
58
+ );
59
+ }
60
+ }
61
+
62
+ $gantry->addInlineScript("Object.merge(GantryPanelsTips, " . json_encode($output) . ");");
63
+
64
+ return "";
65
+
66
+ } else {
67
+ $output = "
68
+ <div class=\"gantrytips\">\n
69
+ <div class=\"gantry-pin\"></div>\n
70
+ <div class=\"gantrytips-count\"><span class=\"current-tip\">" . ($random + 1) . "</span><span> / " . $count . "</span></div>\n
71
+ <div class=\"gantrytips-controller rok-buttons-group\">\n
72
+ <span class=\"rok-button gantrytips-arrow gantrytips-left\">&#9668;</span>\n
73
+ <span class=\"rok-button gantrytips-arrow gantrytips-right\">&#9658;</span>\n
74
+ </div>\n
75
+ <div class=\"gantrytips-desc\">\n
76
+ <div class=\"gantrytips-wrapper\">\n";
77
+
78
+ for ($i = 0; $i < $count; $i++) {
79
+ $tip_title = ($xml->tip[$i]['label']);
80
+ $tip_id = (isset($xml->tip[$i]['id'])) ? $xml->tip[$i]['id'] : false;
81
 
82
+ if (!$tip_id) $outputID = ''; else $outputID = 'id="tip-' . str_replace('-', '_', $tip_id) . '"';
83
+
84
+ $output .= "<div " . $outputID . " class=\"gantrytips-tip\">\n";
85
+ $output .= "<div class=\"gantrytips-bar h2bar\">\n
86
+ <span>" . $tip_title . "</span>\n
87
+ </div>\n";
88
+ $output .= $xml->tip[$i] . "</div>\n";
89
+ }
90
+
91
+ $output .= "
92
+ </div>\n
93
  </div>\n
94
+ </div>\n";
95
+
96
+ return $output;
97
+
98
+ }
99
 
 
100
 
101
 
102
  }
105
  {
106
  return "";
107
  }
108
+ }
admin/forms/fields/toggle.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: toggle.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
@@ -21,45 +21,42 @@ class GantryFormFieldToggle extends GantryFormField
21
 
22
  protected $type = 'toggle';
23
  protected $basetype = 'checkbox';
 
24
 
25
  public function getInput()
26
  {
 
27
  global $gantry;
28
  $hidden = '<input type="hidden" name="' . $this->name . '" value="_" />';
29
 
30
  $options = array();
31
- $options[] = array('value' => 1, 'text' => 'On/Off', 'id' => $this->element->name);
32
 
33
-
34
- if (!defined('GANTRY_TOGGLE')) {
35
- $this->template = end(explode(DS, $gantry->templatePath));
36
-
37
- $gantry->addScript($gantry->gantryUrl . '/admin/widgets/toggle/js/touch.js');
38
  $gantry->addScript($gantry->gantryUrl . '/admin/widgets/toggle/js/toggle.js');
39
- define('GANTRY_TOGGLE', 1);
40
  }
41
 
 
 
 
 
 
 
 
 
42
 
43
  //$gantry->addDomReadyScript($this->toggleInit($this->id));
44
 
45
  $checked = ($this->value == 0) ? '' : 'checked="checked"';
46
- if ($this->value == 0) $toggleStatus = 'unchecked'; else $toggleStatus = 'checked';
47
 
48
  if ($this->detached) $disabledField = ' disabled'; else $disabledField = '';
49
 
50
  return '
51
  <div class="wrapper">' . "\n" . '
52
- <div class="toggle">' . "\n" . '
53
- <div class="toggle-container toggle-' . $toggleStatus . $disabledField . '">' . "\n" . '
54
- <div class="toggle-sides">' . "\n" . '
55
- <div class="toggle-wrapper">' . "\n" . '
56
- <div class="toggle-switch"></div>' . "\n" . '
57
- <input type="hidden" name="' . $this->name . '" value="' . $this->value . '" />' . "\n" . '
58
- <input type="checkbox" class="toggle-input" id="' . $this->id . '" value="' . $this->value . '" ' . $checked . ' />' . "\n" . '
59
- </div>' . "\n" . '
60
- <div class="toggle-button"></div>' . "\n" . '
61
- </div>' . "\n" . '
62
- </div>' . "\n" . '
63
  </div>' . "\n" . '
64
  </div>' . "\n" . '
65
  ';
@@ -72,8 +69,9 @@ class GantryFormFieldToggle extends GantryFormField
72
 
73
  public static function finalize()
74
  {
 
75
  global $gantry;
76
- $gantry->addDomReadyScript("window.gantryToggles = new Toggle();");
77
  }
78
 
79
  }
1
  <?php
2
  /**
3
+ * @version $Id: toggle.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
21
 
22
  protected $type = 'toggle';
23
  protected $basetype = 'checkbox';
24
+ static $jsLoaded = false;
25
 
26
  public function getInput()
27
  {
28
+ /** @global $gantry Gantry */
29
  global $gantry;
30
  $hidden = '<input type="hidden" name="' . $this->name . '" value="_" />';
31
 
32
  $options = array();
33
+ $options[] = array('value'=> 1, 'text'=> 'On/Off', 'id'=> $this->element->name);
34
 
35
+ if (!self::$jsLoaded) {
 
 
 
 
36
  $gantry->addScript($gantry->gantryUrl . '/admin/widgets/toggle/js/toggle.js');
37
+ self::$jsLoaded = true;
38
  }
39
 
40
+ // if (!defined('GANTRY_TOGGLE')) {
41
+ // $this->template = end(explode('/', $gantry->templatePath));
42
+
43
+ // $gantry->addScript($gantry->gantryUrl.'/admin/widgets/toggle/js/touch.js');
44
+ // $gantry->addScript($gantry->gantryUrl.'/admin/widgets/toggle/js/toggle.js');
45
+ // define('GANTRY_TOGGLE',1);
46
+ // }
47
+
48
 
49
  //$gantry->addDomReadyScript($this->toggleInit($this->id));
50
 
51
  $checked = ($this->value == 0) ? '' : 'checked="checked"';
52
+ if ($this->value == 0) $toggleStatus = 'off'; else $toggleStatus = 'on';
53
 
54
  if ($this->detached) $disabledField = ' disabled'; else $disabledField = '';
55
 
56
  return '
57
  <div class="wrapper">' . "\n" . '
58
+ <div class="toggle toggle-' . $toggleStatus . $disabledField . '">' . "\n" . '
59
+ <input type="hidden" class="toggle-input" name="' . $this->name . '" id="' . $this->id . '" value="' . $this->value . '" />' . "\n" . '
 
 
 
 
 
 
 
 
 
60
  </div>' . "\n" . '
61
  </div>' . "\n" . '
62
  ';
69
 
70
  public static function finalize()
71
  {
72
+ /** @global $gantry Gantry */
73
  global $gantry;
74
+ //$gantry->addDomReadyScript("window.gantryToggles = new Toggle();");
75
  }
76
 
77
  }
admin/forms/fields/updater.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: updater.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
@@ -22,11 +22,12 @@ class GantryFormFieldUpdater extends GantryFormField
22
  public function getInput()
23
  {
24
 
 
25
  global $gantry;
26
 
27
  $currentVersion = GANTRY_VERSION;
28
 
29
- if ($currentVersion == "\1.31") $currentVersion = "[DEV]";
30
 
31
  // curl check
32
  if (!function_exists('curl_version')) {
@@ -43,6 +44,7 @@ class GantryFormFieldUpdater extends GantryFormField
43
  gantry_import('core.gantryini');
44
  gantry_import('core.utilities.gantryxml');
45
 
 
46
  global $gantry;
47
 
48
  $klass = "noupdate";
1
  <?php
2
  /**
3
+ * @version $Id: updater.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die();
22
  public function getInput()
23
  {
24
 
25
+ /** @global $gantry Gantry */
26
  global $gantry;
27
 
28
  $currentVersion = GANTRY_VERSION;
29
 
30
+ if ($currentVersion == "\4.0.0") $currentVersion = "[DEV]";
31
 
32
  // curl check
33
  if (!function_exists('curl_version')) {
44
  gantry_import('core.gantryini');
45
  gantry_import('core.utilities.gantryxml');
46
 
47
+ /** @global $gantry Gantry */
48
  global $gantry;
49
 
50
  $klass = "noupdate";
admin/forms/groups/chain.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: chain.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
@@ -30,6 +30,7 @@ class GantryFormGroupChain extends GantryFormGroup
30
 
31
  public function getInput()
32
  {
 
33
  global $gantry;
34
  $buffer = '';
35
 
@@ -43,11 +44,12 @@ class GantryFormGroupChain extends GantryFormGroup
43
  $itemName = $this->fieldname . "-" . $field->fieldname;
44
  $field->detached = false;
45
 
46
- if ($field != $this->enabler && isset($this->enabler) && (int)$this->enabler->value == 0) {
47
  $field->detached = true;
48
- }
49
 
50
- if ($field->basetype == 'select') $basetype = ' base-selectbox'; else $basetype = ' base-' . $field->basetype;
 
51
 
52
  $buffer .= '<div class="chain ' . $itemName . ' chain-' . strtolower($field->type) . $basetype . '">' . "\n";
53
  if (strlen($field->getLabel())) $buffer .= '<span class="chain-label">' . _r($field->getLabel()) . '</span>' . "\n";
@@ -59,4 +61,4 @@ class GantryFormGroupChain extends GantryFormGroup
59
 
60
  return $buffer;
61
  }
62
- }
1
  <?php
2
  /**
3
+ * @version $Id: chain.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
30
 
31
  public function getInput()
32
  {
33
+ /** @global $gantry Gantry */
34
  global $gantry;
35
  $buffer = '';
36
 
44
  $itemName = $this->fieldname . "-" . $field->fieldname;
45
  $field->detached = false;
46
 
47
+ /*if ($field != $this->enabler && isset($this->enabler) && (int)$this->enabler->value == 0) {
48
  $field->detached = true;
49
+ }*/
50
 
51
+ if ($field->basetype == 'select') $basetype = ' base-selectbox';
52
+ else $basetype = ' base-' . $field->basetype;
53
 
54
  $buffer .= '<div class="chain ' . $itemName . ' chain-' . strtolower($field->type) . $basetype . '">' . "\n";
55
  if (strlen($field->getLabel())) $buffer .= '<span class="chain-label">' . _r($field->getLabel()) . '</span>' . "\n";
61
 
62
  return $buffer;
63
  }
64
+ }
admin/forms/groups/columns.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * @version $Id: columns.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
2
  /**
3
  * @version $Id: columns.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
  defined('GANTRY_VERSION') or die;
admin/forms/groups/enabledgroup.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: enabledgroup.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
@@ -25,20 +25,25 @@ class GantryFormGroupEnabledGroup extends GantryFormGroup
25
 
26
  public function getInput()
27
  {
 
28
  global $gantry;
29
 
30
  $buffer = '';
31
 
32
  // get the sets just below
33
- foreach ($this->fields as $field) {
34
- if ($field->type == 'set') {
 
 
35
  $this->sets[] = $field;
36
  }
37
  }
38
 
39
  $buffer .= "<div class='wrapper'>\n";
40
- foreach ($this->fields as $field) {
41
- if ((string)$field->type != 'set') {
 
 
42
  $enabler = false;
43
 
44
  if ($field->element['enabler'] && (string)$field->element['enabler'] == true) {
@@ -70,8 +75,12 @@ class GantryFormGroupEnabledGroup extends GantryFormGroup
70
  }
71
 
72
  $buffer .= '<div class="enabledset-fields' . $cls . '" id="set-' . (string)$set->element['name'] . '">';
73
- foreach ($set->fields as $field) {
74
- if ($field->type == 'hidden') $buffer .= $field->getInput(); else {
 
 
 
 
75
  $buffer .= $field->render($callback);
76
  }
77
  }
1
  <?php
2
  /**
3
+ * @version $Id: enabledgroup.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
25
 
26
  public function getInput()
27
  {
28
+ /** @global $gantry Gantry */
29
  global $gantry;
30
 
31
  $buffer = '';
32
 
33
  // get the sets just below
34
+ foreach ($this->fields as $field)
35
+ {
36
+ if ($field->type == 'set')
37
+ {
38
  $this->sets[] = $field;
39
  }
40
  }
41
 
42
  $buffer .= "<div class='wrapper'>\n";
43
+ foreach ($this->fields as $field)
44
+ {
45
+ if ((string)$field->type != 'set')
46
+ {
47
  $enabler = false;
48
 
49
  if ($field->element['enabler'] && (string)$field->element['enabler'] == true) {
75
  }
76
 
77
  $buffer .= '<div class="enabledset-fields' . $cls . '" id="set-' . (string)$set->element['name'] . '">';
78
+ foreach ($set->fields as $field)
79
+ {
80
+ if ($field->type == 'hidden')
81
+ $buffer .= $field->getInput();
82
+ else
83
+ {
84
  $buffer .= $field->render($callback);
85
  }
86
  }
admin/forms/groups/grouped.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: grouped.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
@@ -34,5 +34,4 @@ class GantryFormGroupGrouped extends GantryFormGroup
34
  return $buffer;
35
  }
36
 
37
-
38
  }
1
  <?php
2
  /**
3
+ * @version $Id: grouped.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
34
  return $buffer;
35
  }
36
 
 
37
  }
admin/forms/groups/innertabs.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * @version $Id: innertabs.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -26,47 +26,44 @@ class GantryFormGroupInnerTabs extends GantryFormGroup
26
  {
27
  ob_start();
28
  ?>
29
- <div class="innertabs-panel">
30
- <div class="gantry-field <?php echo $this->type; ?>-field">
31
- <div>
32
- <div class="inner-tabs">
33
- <ul>
34
- <?php
35
- $i = 0;
36
- foreach ($this->fields as $field):
37
- $classes = '';
38
- if (!$i) $classes .= "first active";
39
- if ($i == count($this->fields) - 1) $classes .= ' last';
40
- ?>
41
- <li class="<?php echo $classes;?>"><span><?php _ge($field->getLabel());?></span></li>
42
 
43
- <?php
44
- $i++;
45
- endforeach;
46
- ?>
47
- </ul>
48
- </div>
49
- <div class="inner-panels">
50
  <?php
51
- $i = 0;
52
- foreach ($this->fields as $field):
53
- $i++;
54
- ?>
55
- <div class="inner-panel inner-panel-<?php echo $i;?>">
56
- <?php if ($field->type == 'hidden'): ?>
57
- <?php echo $field->getInput(); ?>
58
- <?php else: ?>
59
- <?php echo $field->render($callback); ?>
60
- <?php endif;?>
61
- </div>
62
- <?php endforeach;?>
 
 
 
 
 
63
  </div>
64
- <div class="clear"></div>
65
- </div>
66
  </div>
67
  </div>
68
  <?php
69
  $buffer = ob_get_clean();
70
  return $buffer;
71
  }
 
72
  }
1
  <?php
2
  /**
3
+ * @version 1.23 January 15, 2012
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
26
  {
27
  ob_start();
28
  ?>
29
+ <div>
30
+ <div class="inner-tabs">
31
+ <ul>
32
+ <?php
33
+ $i = 0;
34
+ foreach ($this->fields as $field):
35
+ $classes = '';
36
+ if (!$i) $classes .= "first active";
37
+ if ($i == count($this->fields) - 1) $classes .= ' last';
38
+ ?>
39
+ <li class="<?php echo $classes;?>">
40
+ <span class="g4-cell g4-col1"><?php _ge($field->getLabel());?></span></li>
 
41
 
 
 
 
 
 
 
 
42
  <?php
43
+ $i++;
44
+ endforeach;
45
+ ?>
46
+ </ul>
47
+ </div>
48
+ <div class="inner-panels">
49
+ <?php
50
+ $i = 0;
51
+ foreach ($this->fields as $field):
52
+ $i++;
53
+ ?>
54
+ <div class="inner-panel inner-panel-<?php echo $i;?>">
55
+ <?php if ($field->type == 'hidden'): ?>
56
+ <?php echo $field->getInput(); ?>
57
+ <?php else: ?>
58
+ <?php echo $field->render($callback); ?>
59
+ <?php endif;?>
60
  </div>
61
+ <?php endforeach;?>
 
62
  </div>
63
  </div>
64
  <?php
65
  $buffer = ob_get_clean();
66
  return $buffer;
67
  }
68
+
69
  }
admin/forms/groups/position.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: position.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
@@ -18,6 +18,7 @@ class GantryFormGroupPosition extends GantryFormGroup
18
 
19
  public function getInput()
20
  {
 
21
  global $gantry;
22
  $clean_name = (string)$this->element['name'];
23
  $position_info = $gantry->getPositionInfo($clean_name);
@@ -28,7 +29,8 @@ class GantryFormGroupPosition extends GantryFormGroup
28
  $buffer .= "<div class='wrapper'>\n";
29
  foreach ($this->fields as $field) {
30
 
31
- if (!empty($position_info) && array_key_exists('position_info', get_object_vars($field))) $field->position_info = $position_info;
 
32
 
33
  $itemName = $this->fieldname . "-" . $field->fieldname;
34
 
1
  <?php
2
  /**
3
+ * @version $Id: position.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
18
 
19
  public function getInput()
20
  {
21
+ /** @global $gantry Gantry */
22
  global $gantry;
23
  $clean_name = (string)$this->element['name'];
24
  $position_info = $gantry->getPositionInfo($clean_name);
29
  $buffer .= "<div class='wrapper'>\n";
30
  foreach ($this->fields as $field) {
31
 
32
+ if (!empty($position_info) && array_key_exists('position_info',get_object_vars($field)))
33
+ $field->position_info = $position_info;
34
 
35
  $itemName = $this->fieldname . "-" . $field->fieldname;
36
 
admin/forms/groups/selectedset.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * @version $Id: selectedset.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
@@ -23,20 +23,25 @@ class GantryFormGroupSelectedSet extends GantryFormGroup
23
 
24
  public function getInput()
25
  {
 
26
  global $gantry;
27
 
28
  $buffer = '';
29
 
30
  // get the sets just below
31
- foreach ($this->fields as $field) {
32
- if ($field->type == 'set') {
 
 
33
  $this->sets[] = $field;
34
  }
35
  }
36
 
37
  $buffer .= "<div class='wrapper'>\n";
38
- foreach ($this->fields as $field) {
39
- if ((string)$field->type != 'set') {
 
 
40
  $selector = false;
41
  $enabler = false;
42
 
@@ -46,7 +51,8 @@ class GantryFormGroupSelectedSet extends GantryFormGroup
46
  $enabler = true;
47
  }
48
 
49
- if ($field->element['selector'] && (string)$field->element['selector'] == true) {
 
50
  $field->detached = false;
51
  $selector = true;
52
 
@@ -54,7 +60,8 @@ class GantryFormGroupSelectedSet extends GantryFormGroup
54
  $field->detached = true;
55
  }
56
 
57
- foreach ($this->sets as $set) {
 
58
  //Create a new option object based on the <option /> element.
59
  $tmp = GantryHtmlSelect::option((string)$set->element['name'], _g(trim((string)$set->element['label'])), 'value', 'text', ((string)$set->element['disabled'] == 'true'));
60
  // Set some option attributes.
@@ -88,9 +95,11 @@ class GantryFormGroupSelectedSet extends GantryFormGroup
88
 
89
  $buffer = parent::render($callback);
90
  $cls = ' selectedset-hidden-field';
91
- foreach ($this->sets as $set) {
 
92
  if (isset($this->activeSet['selectbox'])) {
93
- if ($this->activeSet['selectbox'] == (string)$set->element['name']) $cls = ''; else $cls = ' selectedset-hidden-field';
 
94
 
95
  if (isset($this->activeSet['toggle']) && $this->activeSet['toggle'] == '0') {
96
  $cls = ' selectedset-hidden-field';
@@ -98,8 +107,12 @@ class GantryFormGroupSelectedSet extends GantryFormGroup
98
  }
99
 
100
  $buffer .= '<div class="selectedset-fields' . $cls . '" id="set-' . (string)$set->element['name'] . '">';
101
- foreach ($set->fields as $field) {
102
- if ($field->type == 'hidden') $buffer .= $field->getInput(); else {
 
 
 
 
103
  $buffer .= $field->render($callback);
104
  }
105
  }
1
  <?php
2
  /**
3
+ * @version $Id: selectedset.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
23
 
24
  public function getInput()
25
  {
26
+ /** @global $gantry Gantry */
27
  global $gantry;
28
 
29
  $buffer = '';
30
 
31
  // get the sets just below
32
+ foreach ($this->fields as $field)
33
+ {
34
+ if ($field->type == 'set')
35
+ {
36
  $this->sets[] = $field;
37
  }
38
  }
39
 
40
  $buffer .= "<div class='wrapper'>\n";
41
+ foreach ($this->fields as $field)
42
+ {
43
+ if ((string)$field->type != 'set')
44
+ {
45
  $selector = false;
46
  $enabler = false;
47
 
51
  $enabler = true;
52
  }
53
 
54
+ if ($field->element['selector'] && (string)$field->element['selector'] == true)
55
+ {
56
  $field->detached = false;
57
  $selector = true;
58
 
60
  $field->detached = true;
61
  }
62
 
63
+ foreach ($this->sets as $set)
64
+ {
65
  //Create a new option object based on the <option /> element.
66
  $tmp = GantryHtmlSelect::option((string)$set->element['name'], _g(trim((string)$set->element['label'])), 'value', 'text', ((string)$set->element['disabled'] == 'true'));
67
  // Set some option attributes.
95
 
96
  $buffer = parent::render($callback);
97
  $cls = ' selectedset-hidden-field';
98
+ foreach ($this->sets as $set)
99
+ {
100
  if (isset($this->activeSet['selectbox'])) {
101
+ if ($this->activeSet['selectbox'] == (string) $set->element['name']) $cls = '';
102
+ else $cls = ' selectedset-hidden-field';
103
 
104
  if (isset($this->activeSet['toggle']) && $this->activeSet['toggle'] == '0') {
105
  $cls = ' selectedset-hidden-field';
107
  }
108
 
109
  $buffer .= '<div class="selectedset-fields' . $cls . '" id="set-' . (string)$set->element['name'] . '">';
110
+ foreach ($set->fields as $field)
111
+ {
112
+ if ($field->type == 'hidden')
113
+ $buffer .= $field->getInput();
114
+ else
115
+ {
116
  $buffer .= $field->render($callback);
117
  }
118
  }
admin/forms/groups/set.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * @version $Id: set.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
2
  /**
3
  * @version $Id: set.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
admin/index.php CHANGED
@@ -1,55 +1,87 @@
1
  <?php
2
  /**
3
- * @version $Id: index.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
- function gantry_admin_render_edit_item($element)
10
- {
11
- $buffer = '';
12
- $buffer .= " <div class=\"gantry-field " . $element->type . "-field\">\n";
13
- $label = '';
14
- if ($element->show_label) $label = $element->getLabel() . "\n";
15
- $buffer .= $label;
16
- $buffer .= $element->getInput() . "\n";
17
- $buffer .= " <div class=\"clr\"></div>\n";
18
- $buffer .= " </div>\n";
19
- return $buffer;
20
- }
21
-
22
- function gantry_admin_render_edit_override_item($element)
23
- {
24
- $buffer = '';
25
- $buffer .= " <div class=\"gantry-field " . $element->type . "-field\">\n";
26
- $label = '';
27
- $checked = ($element->variance) ? ' checked="checked"' : '';
28
- if ($element->show_label) {
29
- if (!$element->setinoverride) {
30
- $label = $element->getLabel() . "\n";
31
- } else {
32
- $label = '<div class="field-label"><span class="inherit-checkbox"><input name="overridden-' . $element->name . '" type="checkbox"' . $checked . '/></span><span class="base-label">' . $element->getLabel() . '</span></div>';
33
- }
34
- }
35
- $buffer .= $label;
36
- $buffer .= $element->getInput() . "\n";
37
- $buffer .= " <div class=\"clr\"></div>\n";
38
- $buffer .= " </div>\n";
39
- return $buffer;
40
- }
41
 
42
  /** @global $gantry Gantry */
43
  global $gantry;
44
- if (!current_user_can('edit_theme_options')) wp_die(_g($gantry->get('template_full_name', 'Gantry Template') . _g('Settings')));
45
 
46
  gantry_import('core.config.gantryform');
47
  gantry_import('core.utilities.gantrytemplateinfo');
48
 
 
 
 
49
  $gantry->addScript('mootools.js');
50
- $gantry->addScript($gantry->gantryUrl . '/admin/widgets/gantry.js');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  // Setup the JS for the admin
52
- $gantry->addInlineScript(gantryLang());
 
 
53
 
54
  if (file_exists($gantry->templatePath . "/gantry.scripts.php") && is_readable($gantry->templatePath . "/gantry.scripts.php")) {
55
  include_once($gantry->templatePath . "/gantry.scripts.php");
@@ -58,226 +90,252 @@ if (file_exists($gantry->templatePath . "/gantry.scripts.php") && is_readable($g
58
  }
59
  }
60
 
61
- $override_catalog = gantry_get_override_catalog($gantry->templateName);
62
 
63
- $data = array();
64
- $data['template-options'] = get_option($gantry->templateName . '-template-options');
65
 
66
  GantryForm::addFormPath($gantry->templatePath);
67
  GantryForm::addFieldPath($gantry->templatePath . '/fields');
68
  GantryForm::addFieldPath($gantry->templatePath . '/admin/forms/fields');
69
 
70
- $form = GantryForm::getInstance($gantry->_templateDetails->getTemplateInfo(), 'template-options', 'templateDetails', array(), true, '//config');
71
  $form->bind($data);
72
 
73
  $fieldSets = $form->getFieldsets('template-options');
74
 
 
 
75
  $form->initialize();
 
 
 
 
 
76
  ?>
77
- <div id="hack-panel">
78
- <?php
79
- $fields = $form->getFullFieldset('toolbar-panel');
80
- foreach ($fields as $name => $field) {
81
- $gantry->addDomReadyScript("Gantry.ToolBar.add('" . $field->type . "');");
82
 
83
- echo "<div id=\"contextual-" . $field->type . "-wrap\" class=\"hidden contextual-custom-wrap\">\n";
84
- echo " <div class=\"metabox-prefs\">\n";
 
85
 
86
- echo $field->input;
 
 
87
 
88
- echo " </div>\n";
89
- echo "</div>\n";
90
- }
91
- ?>
 
92
  </div>
93
 
 
 
 
 
 
 
 
94
 
95
- <div class="wrap defaults-wrap">
96
- <form id="gantry-mega-form" method="post" action="<?php echo admin_url('admin-post.php?action=gantry_theme_update'); ?>" enctype="multipart/form-data">
97
- <?php wp_nonce_field('gantry-theme-settings'); ?>
98
- <div class="icon32" id="icon-themes"><br/></div>
99
- <h2>
100
- <?php echo $gantry->get('template_full_name'); ?> Settings
101
- <span>
102
- <input type="submit" class="button-secondary" name="reset" value="<?php _ge("Reset to Defaults"); ?>" onclick="if(confirm('<?php _e("Reset all theme settings to the default values? Are you sure?"); ?>')) return true; else return false;"/>
103
- <input type="button" class="button-secondary preset-saver action" value="Save Custom Preset as New"/>
104
- <input type="submit" class="button-primary action" value="<?php _ge('Save Changes'); ?>"/>
105
- </span>
106
- </h2>
107
- <?php
108
- if ($message = gantry_get_admin_message('gantry-theme-settings')): ?>
109
- <div class="updated gantry-notice">
110
- <p><?php echo $message;?></p>
111
-
112
- <div class="close"><span>x</span></div>
113
- </div>
114
- <?php endif; ?>
115
- <input type="hidden" name="id" value="<?php echo $gantry->templateName; ?>"/>
116
- <?php //settings_fields('theme-options-array'); ?>
117
- <div class="fltrt">
118
- <div class="submit-wrapper png">
119
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  </div>
121
- <div class="gantry-wrapper">
122
- <div id="gantry-logo"></div>
123
- <div id="gantry-overrides">
124
- <div class="overrides-inner">
 
 
 
 
 
 
 
 
 
 
125
  <?php
126
- $overridesList = array();
127
-
128
- foreach ($override_catalog as $o_id => $o_name) {
129
- $overridesList[] = '<div class="overrides-action"><a href="' . str_replace("&", "&amp;", add_query_arg(array('page' => 'gantry-theme-overrides',
130
- 'override_id' => $o_id
131
- ))) . '">' . $o_name . '</a></div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  }
133
- $toggleStatus = (!count($overridesList)) ? ' class="hidden"' : '';
134
- ?>
135
- <div id="overrides-actions">
136
- <div id="overrides-first">
137
- <a href="#">Default Settings</a>
138
- </div>
139
- <div id="overrides-toggle"<?php echo $toggleStatus; ?>><br/></div>
140
- <div id="overrides-inside" class="slideUp">
141
- <?php
142
- $overridesList = array();
143
- foreach ($override_catalog as $o_id => $o_name) {
144
- $overridesList[] = '<div class="overrides-action"><a href="' . str_replace("&", "&amp;", add_query_arg(array('page' => 'gantry-theme-overrides',
145
- 'override_id' => $o_id
146
- ))) . '">' . $o_name . '</a></div>';
147
- }
148
- ?>
149
- <?php echo implode("\n", $overridesList); ?>
150
- </div>
151
- </div>
152
- <div id="overrides-toolbar">
153
- <a class="text-button button-add" href="<?php echo admin_url('admin.php?page=gantry-theme-overrides&amp;override_id=0'); ?>"><span>New Override</span></a>
154
- </div>
155
- <div id="overrides-switch">
156
- <a class="text-button button-widget" href="<?php echo admin_url('widgets.php'); ?>"><span>Widgets</span></a>
157
- </div>
158
- </div>
159
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
  </div>
161
- <ul id="gantry-tabs">
162
- <?php
163
- $i = 1;
164
- $activeTab = (isset($_COOKIE['gantry-admin-tab'])) ? $_COOKIE['gantry-admin-tab'] + 1 : 1;
165
- if ($activeTab > count($fieldSets) - 1) $activeTab = 1;
166
- foreach ($fieldSets as $name => $fieldSet):
167
- if ($name == 'toolbar-panel') continue;
168
- $classes = '';
169
- if ($i == 1) $classes .= "first";
170
- if ($i == count($fieldSets)) $classes .= "last";
171
- if ($i == $activeTab) $classes .= " active ";
172
- ?>
173
- <li class="<?php echo $classes;?>">
174
- <span class="outer">
175
- <span class="inner"><span style="float:left;"><?php _ge($fieldSet->label);?></span> <span class="presets-involved"><span>0</span></span></span>
176
- </span>
177
- </li>
178
-
179
- <?php $i++; endforeach;?>
180
- </ul>
181
- <?php
182
- $panels = array();
183
- $positions = array(
184
- 'hiddens' => array(),
185
- 'top' => array(),
186
- 'left' => array(),
187
- 'right' => array(),
188
- 'bottom' => array()
189
- );
190
-
191
- foreach ($fieldSets as $name => $fieldSet) {
192
- if ($name == 'toolbar-panel') continue;
193
- $fields = $form->getFullFieldset($name);
194
-
195
- array_push($panels, array("name" => $name,
196
- "height" => (isset($fieldSet->height)) ? $fieldSet->height : null
197
- ));
198
- foreach ($fields as $fname => $field) {
199
- $position = $field->panel_position;
200
- if ($field->type == 'hidden') $position = 'hiddens';
201
- if (!isset($positions[$position][$name])) $positions[$position][$name] = array();
202
- array_push($positions[$position][$name], $field);
203
  }
204
- }
205
-
206
- $output = "";
207
- $output .= "<div id=\"gantry-panel\">\n";
208
- if (count($panels) > 0) {
209
- for ($i = 0; $i < count($panels); $i++) {
210
- $panel = $panels[$i]['name'];
211
-
212
- $width = '';
213
- if ((@count($positions['left'][$panels[$i]['name']]) && !@count($positions['right'][$panels[$i]['name']])) || (!@count($positions['left'][$panels[$i]['name']]) && @count($positions['right'][$panels[$i]['name']]))) {
214
- $width = 'width-auto';
215
- }
216
-
217
- $activePanel = "";
218
- if ($i == $activeTab - 1) $activePanel = " active-panel"; else $activePanel = "";
219
-
220
- $output .= " <div class=\"gantry-panel panel-" . ($i + 1) . " panel-" . $panel . " " . $width . $activePanel . "\">\n";
221
 
 
 
 
 
 
 
222
  $buffer = "";
223
  foreach ($positions as $name => $position) {
224
- if (isset($positions[$name][$panel])) {
225
- $buffer .= " <div class=\"gantry-panel-" . $name . "\">\n";
226
- $panel_name = $name == 'left' ? 'panelform' : 'paneldesc';
227
 
228
- $buffer .= " <div class=\"" . $panel_name . "\">\n";
229
- foreach ($positions[$name][$panel] as $element) {
230
- $buffer .= $element->render('gantry_admin_render_edit_item');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
231
  }
232
 
233
- $buffer .= " </div>\n";
234
- $buffer .= " </div>\n";
 
 
 
 
 
 
 
 
235
  }
236
  }
237
- $output .= $buffer;
238
-
239
- $output .= " </div>";
240
- }
241
  }
242
- $output .= "</div>\n";
243
- echo $output;
244
- ?>
245
- </div>
246
- <div class="clr"></div>
 
247
  </div>
248
- <div class="clr"></div>
249
- </form>
 
 
250
  </div>
251
-
252
  <?php
253
- // css overrides
254
- if ($gantry->browser->name == 'ie' && file_exists($gantry->gantryPath . DS . 'admin' . DS . 'widgets' . DS . 'gantry-ie.css')) {
255
- $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/gantry-ie.css');
256
- }
257
- if ($gantry->browser->name == 'ie' && $gantry->browser->version == '7' && file_exists($gantry->gantryPath . DS . 'admin' . DS . 'widgets' . DS . 'gantry-ie7.css')) {
258
- $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/gantry-ie7.css');
259
- }
260
-
261
- if (($gantry->browser->name == 'firefox' && $gantry->browser->version < '3.7') || ($gantry->browser->name == 'ie' && $gantry->browser->version > '6')) {
262
- $css = ".text-short, .text-medium, .text-long, .text-color {padding-top: 4px;height:19px;}";
263
- $gantry->addInlineStyle($css);
264
- }
265
-
266
- if ($gantry->browser->name == 'ie' && $gantry->browser->shortversion == '7') {
267
- $css = "
268
- .g-surround, .g-inner, .g-surround > div {zoom: 1;position: relative;}
269
- .text-short, .text-medium, .text-long, .text-color {border:0 !important;}
270
- .selectbox {z-index:500;position:relative;}
271
- .group-fusionmenu, .group-splitmenu {position:relative;margin-top:0 !important;zoom:1;}
272
- .scroller .inner {position:relative;}
273
- .moor-hexLabel {display:inline-block;zoom:1;float:left;}
274
- .moor-hexLabel input {float:left;}
275
- ";
276
- $gantry->addInlineStyle($css);
277
- }
278
- if ($gantry->browser->name == 'opera' && file_exists($gantry->gantryPath . DS . 'admin' . DS . 'widgets' . DS . 'gantry-opera.css')) {
279
- $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/gantry-opera.css');
280
- }
281
-
282
  $form->finalize();
283
  ?>
1
  <?php
2
  /**
3
+ * @version $Id: index.php 59366 2013-03-14 09:59:08Z jakub $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
+ require_once(gantry_dirname(__FILE__) . '/admin_functions.php');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
  /** @global $gantry Gantry */
12
  global $gantry;
13
+ if (!current_user_can('edit_theme_options')) wp_die($gantry->get('template_full_name', 'Gantry') . ' ' . _g('THEME_SETTINGS'));
14
 
15
  gantry_import('core.config.gantryform');
16
  gantry_import('core.utilities.gantrytemplateinfo');
17
 
18
+ gantry_admin_compile_less();
19
+ define('GANTRY_CSS', 1);
20
+
21
  $gantry->addScript('mootools.js');
22
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/moofx.js");
23
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/Twipsy.js");
24
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/gantry.js");
25
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/gantry.popupbuttons.js");
26
+ $gantry->addScript($gantry->gantryUrl . '/admin/widgets/ajaxbutton/js/ajaxbutton.js');
27
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/growl.js");
28
+
29
+
30
+ $override = false;
31
+ $override_id = 0;
32
+ $override_name = '';
33
+
34
+ if (isset($_GET['override_id'])) {
35
+ $override_id = (int)urldecode($_GET['override_id']);
36
+ $override = true;
37
+ }
38
+
39
+ $override_catalog = gantry_get_override_catalog($gantry->templateName);
40
+
41
+ $form_action = admin_url('admin-ajax.php?action=gantry_admin_save_theme_default');
42
+ $widget_page = admin_url('widgets.php');
43
+ $gantry_is_master = 'true';
44
+ $override_is_new = 'false';
45
+
46
+ $data = array();
47
+ $data['template-options'] = get_option($gantry->templateName . '-template-options');
48
+
49
+ if ($override) {
50
+ include(gantry_dirname(__FILE__) . '/assignment_functions.php');
51
+ gantry_assignment_template_pages_meta_boxes();
52
+ gantry_assignment_menus_meta_boxes();
53
+ gantry_assignment_post_type_meta_boxes();
54
+ gantry_assignment_archives_meta_boxes();
55
+
56
+ //$gantry->addScript($gantry->gantryUrl . '/admin/widgets/radios/js/radios.js');
57
+ $gantry->addScript($gantry->gantryUrl . '/admin/widgets/assignments/js/assignments.js');
58
+ //$gantry->addDomReadyScript("InputsMorph.init('checkbox', '#panel-sortables'); InputsMorph.init('checkbox', '.inherit-checkbox')");
59
+ $gantry_is_master = 'false';
60
+ if ($override_id != 0) {
61
+ $form_action = admin_url('admin-ajax.php?action=gantry_admin_save_theme_override');
62
+ $override_option = $gantry->templateName . '-template-options-override-' . $override_id;
63
+ $override_data = get_option($override_option);
64
+ if ($override_data === false) $override_data = array();
65
+ $data['template-options'] = array_merge_replace_recursive($data['template-options'], $override_data);
66
+ $override_name = $override_catalog[$override_id];
67
+ $override_assignments_option_name = $gantry->templateName . '-template-options-override-assignments-' . $override_id;
68
+ $override_assignments = get_option($override_assignments_option_name);
69
+ if ($override_assignments === false) $override_assignments = array();
70
+ $assignments = $override_assignments;
71
+ $widget_page = add_query_arg(array('override_id'=>$override_id),$widget_page);
72
+ } else {
73
+ $assignments = array();
74
+ $form_action = admin_url('admin-post.php?action=gantry_theme_update_override');
75
+ $next_override = (count($override_catalog) > 0) ? max(array_keys($override_catalog)) + 1 : 1;
76
+ $override_name = sprintf(_g('Custom Override %d'), $next_override);
77
+ $override_is_new = 'true';
78
+ }
79
+ }
80
+
81
  // Setup the JS for the admin
82
+ $gantry->addInlineScript('var GantryIsMaster = ' . $gantry_is_master . ', GantryOverrideIsNew = ' . $override_is_new . ';');
83
+
84
+ gantry_admin_prep_needed_dirs();
85
 
86
  if (file_exists($gantry->templatePath . "/gantry.scripts.php") && is_readable($gantry->templatePath . "/gantry.scripts.php")) {
87
  include_once($gantry->templatePath . "/gantry.scripts.php");
90
  }
91
  }
92
 
 
93
 
 
 
94
 
95
  GantryForm::addFormPath($gantry->templatePath);
96
  GantryForm::addFieldPath($gantry->templatePath . '/fields');
97
  GantryForm::addFieldPath($gantry->templatePath . '/admin/forms/fields');
98
 
99
+ $form = GantryForm::getInstance($gantry->_template->getTemplateInfo(), 'template-options', 'templateDetails', array(), true, '//config');
100
  $form->bind($data);
101
 
102
  $fieldSets = $form->getFieldsets('template-options');
103
 
104
+
105
+
106
  $form->initialize();
107
+
108
+ $tabs = gantry_admin_get_tabs($form, $override);
109
+
110
+ $activeTab = (isset($_COOKIE['gantry-admin-tab'])) ? $_COOKIE['gantry-admin-tab'] + 1 : 1;
111
+ $assignmentCount = 0;
112
  ?>
113
+ <form action="<?php echo $form_action ?>" method="post" name="adminForm" id="adminForm" class="form-validate">
 
 
 
 
114
 
115
+ <?php if ($message = gantry_get_admin_message('gantry-theme-settings')): ?>
116
+ <div class="updated g4-notice">
117
+ <p><?php echo $message;?></p>
118
 
119
+ <div class="close"><span>&times;</span></div>
120
+ </div>
121
+ <?php endif; ?>
122
 
123
+ <div class="g4-wrap <?php echo (!$override) ? 'defaults-wrap' : 'override-wrap'; ?>">
124
+ <div id="g4-toolbar">
125
+ <div class="icon32" id="icon-themes"></div>
126
+ <h1><?php _ge($gantry->get('template_full_name', 'Gantry') . ' ' . _g('THEME_SETTINGS')); ?></h1>
127
+ <?php echo gantry_admin_render_menu($override_is_new == 'true' ? true : false); ?>
128
  </div>
129
 
130
+ <?php wp_nonce_field('gantry-theme-settings'); ?>
131
+ <input type="hidden" name="id" value="<?php echo $gantry->templateName; ?>"/>
132
+ <?php echo $form->getInput('client_id'); ?>
133
+ <?php if ($override): ?>
134
+ <input type="hidden" name="override_id" value="<?php echo $override_id ?>"/>
135
+ <input type="hidden" name="override_name" value="<?php echo $override_name ?>"/>
136
+ <?php endif;?>
137
 
138
+ <?php
139
+ $status = (isset($_COOKIE['gantry-' . $gantry->templateName . '-adminpresets'])) ? htmlentities($_COOKIE['gantry-' . $gantry->templateName . '-adminpresets']) : 'hide';
140
+ $presetsShowing = ($status == 'hide') ? "" : ' class="presets-showing"';
141
+
142
+ if ($override) {
143
+ $flag = 'g4-flag-override';
144
+ $flag_text = _g('Override');
145
+ } else {
146
+ $flag = 'g4-flag-master';
147
+ $flag_text = '&#10029; ' . _g('Default');
148
+ }
149
+ ?>
150
+ <div id="g4-details-wrapper">
151
+ <div id="g4-master" class="<?php echo $flag; ?> g4-size-13">
152
+ <div id="g4-flag">
153
+ <?php echo $flag_text; ?>
154
+ <span class="arrow"><span></span></span>
155
+ </div>
156
+ </div>
157
+ <div id="g4-details"<?php echo $presetsShowing; ?>>
158
+ <div id="gantry-overrides">
159
+ <div class="overrides-inner">
160
+ <?php
161
+ $overridesList = array();
162
+ $overridesList[] = '<div class="overrides-action"><a class="defaults" href="' . str_replace("&", "&amp;", add_query_arg(array('page' => 'gantry-theme-settings'), admin_url('admin.php'))) . '">' . _g('Default Settings') . '</a></div>';
163
+ foreach ($override_catalog as $o_id => $o_name) {
164
+ $overridesList[] = '<div class="overrides-action"><a href="' . str_replace("&", "&amp;", add_query_arg(array(
165
+ 'page' => 'gantry-theme-settings',
166
+ 'override_id' => $o_id
167
+ ))) . '">' . $o_name . '</a></div>';
168
+ }
169
+ $toggleStatus = (!count($overridesList)) ? ' class="hidden"' : '';
170
+ ?>
171
+ <div id="overrides-actions">
172
+ <div id="overrides-first">
173
+ <?php $override_list_display_name = (!$override) ? _g('Default Settings') : $override_name;?>
174
+ <a href="#"><?php echo $override_list_display_name?></a>
175
+ </div>
176
+ <div id="overrides-toggle"<?php echo $toggleStatus; ?>><br/></div>
177
+ <div id="overrides-inside" class="slideup">
178
+ <?php echo implode("\n", $overridesList); ?>
179
+ </div>
180
+ </div>
181
+ <div id="overrides-toolbar">
182
+ <?php if (!$override): ?>
183
+ <a class="text-button button-add" href="<?php echo admin_url('admin.php?page=gantry-theme-settings&amp;override_id=0'); ?>"><span><?php _ge('New Override');?></span></a>
184
+ <?php else: ?>
185
+ <a class="overrides-button button-add"
186
+ href="<?php echo admin_url('admin.php?page=gantry-theme-settings&amp;override_id=0'); ?>"><span><?php _ge('Add');?></span></a>
187
+ <a class="overrides-button button-del"
188
+ href="<?php echo admin_url('admin-post.php?action=gantry_theme_delete_override&amp;override_id=' . $override_id);?>"><span><?php _ge('Delete');?></span></a>
189
+ <div class="overrides-button button-edit"></div>
190
+ <?php endif;?>
191
+ </div>
192
+ <div id="overrides-switch">
193
+ <a class="text-button button-widget" href="<?php echo $widget_page; ?>"><span><?php _ge('Widgets');?></span></a>
194
+ </div>
195
  </div>
196
+ </div>
197
+ </div>
198
+ </div>
199
+ <div id="g4-presets">
200
+ <div class="submit-wrapper png"></div>
201
+ <?php include(gantry_dirname(__FILE__) . '/admin_presets.php'); ?>
202
+ </div>
203
+ <div id="g4-container">
204
+ <div class="g4-header">
205
+ <div class="g4-wrapper">
206
+ <div class="g4-row">
207
+ <div class="g4-column">
208
+ <div id="g4-logo"><span></span></div>
209
+ <ul class="g4-tabs">
210
  <?php
211
+ $panels = array();
212
+ $positions = array(
213
+ 'hiddens' => array(),
214
+ 'top' => array(),
215
+ 'left' => array(),
216
+ 'right' => array(),
217
+ 'bottom' => array()
218
+ );
219
+
220
+ $involvedCounts = array();
221
+ foreach ($fieldSets as $name => $fieldSet) {
222
+ if ($name == 'toolbar-panel') continue;
223
+ $fields = $form->getFullFieldset($name);
224
+ $involved = 0;
225
+ array_push($panels, array(
226
+ "name" => $name,
227
+ "height" => (isset($fieldSet->height)) ? $fieldSet->height : null
228
+ ));
229
+ foreach ($fields as $fname => $field) {
230
+ $position = $field->panel_position;
231
+
232
+ if ($field->type != 'hidden' && $field->setinoverride && $field->variance) $involved++;
233
+ if ($field->type == 'hidden') $position = 'hiddens';
234
+ if (!isset($positions[$position][$name])) $positions[$position][$name] = array();
235
+ array_push($positions[$position][$name], $field //array("name" => $field->name, "label" => $field->label, "input" => $field->input, "show_label" => $field->show_label, 'type' => $field->type)
236
+ );
237
+ }
238
+ $involvedCounts[$name] = $involved;
239
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
240
 
241
+
242
+ foreach ($fieldSets as $name => $fieldSet):
243
+ if ($name == 'toolbar-panel') continue;
244
+ ?>
245
+ <li class="<?php echo $tabs[$name];?>">
246
+ <span class="badge"><?php echo get_badges_layout($involved);?></span>
247
+ <?php echo _g($fieldSet->label);?>
248
+ <span class="arrow"><span><span></span></span></span>
249
+ </li>
250
+ <?php endforeach;?>
251
+ <?php if ($override): ?>
252
+ <?php $active_assignments = $activeTab == count($fieldSets) ? ' active' : ''; ?>
253
+ <li class="assignments<?php echo $active_assignments; ?>">
254
+ <span class="badge"><?php echo get_badges_layout($involved);?></span>
255
+ <?php _ge('Assignments');?>
256
+ <span class="arrow"><span><span></span></span></span>
257
+ </li>
258
+ <?php endif;?>
259
+ </ul>
260
  </div>
261
+ </div>
262
+ </div>
263
+ </div>
264
+ <div class="g4-body">
265
+ <div id="g4-panels">
266
+ <?php
267
+ $output = "";
268
+ $output .= "<div id=\"g4-panels\">\n";
269
+ if (count($panels) > 0) {
270
+ for ($i = 0; $i < count($panels); $i++) {
271
+ $panel = $panels[$i]['name'];
272
+ $width = '';
273
+ if ((@count($positions['left'][$panels[$i]['name']]) && !@count($positions['right'][$panels[$i]['name']])) || (!@count($positions['left'][$panels[$i]['name']]) && @count($positions['right'][$panels[$i]['name']]))) {
274
+ $width = 'width-100pc';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
275
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
276
 
277
+ $activePanel = "";
278
+ if ($activeTab > count($panels) + ($override ? 1 : 0)) $activeTab = 1;
279
+ if ($i == $activeTab - 1) $activePanel = " active-panel"; else $activePanel = "";
280
+ ?>
281
+ <div class="g4-panel panel-<?php echo ($i + 1);?> panel-<?php echo $panel;?> <?php echo $width;?><?php echo $activePanel;?>">
282
+ <?php
283
  $buffer = "";
284
  foreach ($positions as $name => $position) {
 
 
 
285
 
286
+ if (isset($positions[$name][$panel])) {
287
+ // hide right panels in Gantry4 for all but overview tab
288
+ if (!($name == "right" && $panel != "overview")) {
289
+ $buffer .= " <div class=\"g4-panel-" . $name . "\">\n";
290
+ $panel_name = $name == 'left' ? 'panelform' : 'paneldesc';
291
+
292
+ $buffer .= " <div class=\"" . $panel_name . "\">\n";
293
+
294
+ if ($panel_name == 'paneldesc' && $panel == 'overview') {
295
+ //$buffer .= get_version_update_info();
296
+
297
+ }
298
+ foreach ($positions[$name][$panel] as $element) {
299
+ if (!$override) {
300
+ $buffer .= $element->render('gantry_admin_render_edit_item');
301
+ } else {
302
+ $buffer .= $element->render('gantry_admin_render_edit_override_item');
303
+ }
304
+ }
305
+ $buffer .= " </div>\n";
306
+ $buffer .= " </div>\n";
307
  }
308
 
309
+ if ($panel != 'overview' && $name == 'right') {
310
+ foreach ($positions[$name][$panel] as $element) {
311
+ if (get_class($element) != 'GantryFormFieldTips') continue;
312
+ if (!$override) {
313
+ $buffer .= $element->render('gantry_admin_render_edit_item');
314
+ } else {
315
+ $buffer .= $element->render('gantry_admin_render_edit_override_item');
316
+ }
317
+ }
318
+ }
319
  }
320
  }
321
+ echo $buffer;
322
+ ?>
323
+ </div>
324
+ <?php
325
  }
326
+ }
327
+ if ($override) {
328
+ if ($i == $activeTab - 1) $activePanel = " active-panel"; else $activePanel = "";
329
+ include(gantry_dirname(__FILE__) . '/admin_assignments.php');
330
+ }
331
+ ?>
332
  </div>
333
+ </div>
334
+ <div class="clr"></div>
335
+ </div>
336
+ </form>
337
  </div>
 
338
  <?php
339
+ gantry_admin_override_css();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
340
  $form->finalize();
341
  ?>
admin/index_orig.php ADDED
@@ -0,0 +1,233 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @version $Id: index_orig.php 59361 2013-03-13 23:10:27Z btowles $
4
+ * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
+ */
8
+
9
+ require_once(gantry_dirname(__FILE__).'/admin_functions.php');
10
+
11
+ /** @global $gantry Gantry */
12
+ global $gantry;
13
+ if (!current_user_can('edit_theme_options')) wp_die(_g($gantry->get('template_full_name', 'Gantry Template') . _g('Settings')));
14
+
15
+ gantry_import('core.config.gantryform');
16
+ gantry_import('core.utilities.gantrytemplateinfo');
17
+
18
+ $gantry->addScript('mootools.js');
19
+ $gantry->addScript($gantry->gantryUrl . '/admin/widgets/gantry.js');
20
+ // Setup the JS for the admin
21
+ $gantry->addInlineScript(gantryLang());
22
+
23
+ gantry_admin_prep_needed_dirs();
24
+
25
+ if (file_exists($gantry->templatePath . "/gantry.scripts.php") && is_readable($gantry->templatePath . "/gantry.scripts.php")) {
26
+ include_once($gantry->templatePath . "/gantry.scripts.php");
27
+ if (function_exists('gantry_params_init')) {
28
+ gantry_params_init();
29
+ }
30
+ }
31
+
32
+ $override_catalog = gantry_get_override_catalog($gantry->templateName);
33
+ $data = array();
34
+ $data['template-options'] = get_option($gantry->templateName . '-template-options');
35
+
36
+ GantryForm::addFormPath($gantry->templatePath);
37
+ GantryForm::addFieldPath($gantry->templatePath . '/fields');
38
+ GantryForm::addFieldPath($gantry->templatePath . '/admin/forms/fields');
39
+
40
+ $form = GantryForm::getInstance($gantry->_template->getTemplateInfo(), 'template-options', 'templateDetails', array(), true, '//config');
41
+ $form->bind($data);
42
+
43
+ $fieldSets = $form->getFieldsets('template-options');
44
+
45
+
46
+
47
+ $form->initialize();
48
+ ?>
49
+
50
+
51
+ <div id="hack-panel">
52
+ <?php
53
+ $fields = $form->getFullFieldset('toolbar-panel');
54
+ foreach ($fields as $name => $field) {
55
+ $gantry->addDomReadyScript("Gantry.ToolBar.add('" . $field->type . "');");
56
+
57
+ echo "<div id=\"contextual-" . $field->type . "-wrap\" class=\"hidden contextual-custom-wrap\">\n";
58
+ echo " <div class=\"metabox-prefs\">\n";
59
+
60
+ echo $field->input;
61
+
62
+ echo " </div>\n";
63
+ echo "</div>\n";
64
+ }
65
+ ?>
66
+ </div>
67
+
68
+
69
+ <div class="wrap defaults-wrap">
70
+ <form id="gantry-mega-form" method="post" action="<?php echo admin_url('admin-post.php?action=gantry_theme_update'); ?>" enctype="multipart/form-data">
71
+ <?php wp_nonce_field('gantry-theme-settings'); ?>
72
+ <div class="icon32" id="icon-themes"><br/></div>
73
+ <h2>
74
+ <?php echo $gantry->get('template_full_name'); ?> Settings
75
+ <span>
76
+ <input type="submit" class="button-secondary" name="reset" value="<?php _ge("Reset to Defaults"); ?>" onclick="if(confirm('<?php _e("Reset all theme settings to the default values? Are you sure?"); ?>')) return true; else return false;"/>
77
+ <input type="button" class="button-secondary preset-saver action" value="Save Custom Preset as New"/>
78
+ <input type="submit" class="button-primary action" value="<?php _ge('Save Changes'); ?>"/>
79
+ </span>
80
+ </h2>
81
+ <?php
82
+
83
+ if ($message = gantry_get_admin_message('gantry-theme-settings')): ?>
84
+ <div class="updated gantry-notice">
85
+ <p><?php echo $message;?></p>
86
+
87
+ <div class="close"><span>x</span></div>
88
+ </div>
89
+ <?php endif; ?>
90
+ <input type="hidden" name="id" value="<?php echo $gantry->templateName; ?>"/>
91
+ <?php //settings_fields('theme-options-array'); ?>
92
+ <div class="fltrt">
93
+ <div class="submit-wrapper png">
94
+
95
+ </div>
96
+ <div class="gantry-wrapper">
97
+ <div id="gantry-logo"></div>
98
+ <div id="gantry-overrides">
99
+ <div class="overrides-inner">
100
+ <?php
101
+ $overridesList = array();
102
+
103
+ foreach ($override_catalog as $o_id => $o_name) {
104
+ $overridesList[] = '<div class="overrides-action"><a href="' . str_replace("&", "&amp;", add_query_arg(array(
105
+ 'page' => 'gantry-theme-overrides',
106
+ 'override_id' => $o_id
107
+ ))) . '">' . $o_name . '</a></div>';
108
+ }
109
+ $toggleStatus = (!count($overridesList)) ? ' class="hidden"' : '';
110
+ ?>
111
+ <div id="overrides-actions">
112
+ <div id="overrides-first">
113
+ <a href="#">Default Settings</a>
114
+ </div>
115
+ <div id="overrides-toggle"<?php echo $toggleStatus; ?>><br/></div>
116
+ <div id="overrides-inside" class="slideUp">
117
+ <?php
118
+ $overridesList = array();
119
+ foreach ($override_catalog as $o_id => $o_name) {
120
+ $overridesList[] = '<div class="overrides-action"><a href="' . str_replace("&", "&amp;", add_query_arg(array(
121
+ 'page' => 'gantry-theme-overrides',
122
+ 'override_id' => $o_id
123
+ ))) . '">' . $o_name . '</a></div>';
124
+ }
125
+ ?>
126
+ <?php echo implode("\n", $overridesList); ?>
127
+ </div>
128
+ </div>
129
+ <div id="overrides-toolbar">
130
+ <a class="text-button button-add" href="<?php echo admin_url('admin.php?page=gantry-theme-overrides&amp;override_id=0'); ?>"><span>New Override</span></a>
131
+ </div>
132
+ <div id="overrides-switch">
133
+ <a class="text-button button-widget" href="<?php echo admin_url('widgets.php'); ?>"><span>Widgets</span></a>
134
+ </div>
135
+ </div>
136
+
137
+ </div>
138
+ <ul id="gantry-tabs">
139
+ <?php
140
+ $i = 1;
141
+ $activeTab = (isset($_COOKIE['gantry-admin-tab'])) ? $_COOKIE['gantry-admin-tab'] + 1 : 1;
142
+ if ($activeTab > count($fieldSets) - 1) $activeTab = 1;
143
+ foreach ($fieldSets as $name => $fieldSet):
144
+ if ($name == 'toolbar-panel') continue;
145
+ $classes = '';
146
+ if ($i == 1) $classes .= "first";
147
+ if ($i == count($fieldSets)) $classes .= "last";
148
+ if ($i == $activeTab) $classes .= " active ";
149
+ ?>
150
+ <li class="<?php echo $classes;?>">
151
+ <span class="outer">
152
+ <span class="inner"><span style="float:left;"><?php _ge($fieldSet->label);?></span> <span class="presets-involved"><span>0</span></span></span>
153
+ </span>
154
+ </li>
155
+
156
+ <?php $i++; endforeach;?>
157
+ </ul>
158
+ <?php
159
+ $panels = array();
160
+ $positions = array(
161
+ 'hiddens' => array(),
162
+ 'top' => array(),
163
+ 'left' => array(),
164
+ 'right' => array(),
165
+ 'bottom' => array()
166
+ );
167
+
168
+ foreach ($fieldSets as $name => $fieldSet) {
169
+ if ($name == 'toolbar-panel') continue;
170
+ $fields = $form->getFullFieldset($name);
171
+
172
+ array_push($panels, array(
173
+ "name" => $name,
174
+ "height" => (isset($fieldSet->height)) ? $fieldSet->height : null
175
+ ));
176
+ foreach ($fields as $fname => $field) {
177
+ $position = $field->panel_position;
178
+ if ($field->type == 'hidden') $position = 'hiddens';
179
+ if (!isset($positions[$position][$name])) $positions[$position][$name] = array();
180
+ array_push($positions[$position][$name], $field);
181
+ }
182
+ }
183
+
184
+ $output = "";
185
+ $output .= "<div id=\"gantry-panel\">\n";
186
+ if (count($panels) > 0) {
187
+ for ($i = 0; $i < count($panels); $i++) {
188
+ $panel = $panels[$i]['name'];
189
+
190
+ $width = '';
191
+ if ((@count($positions['left'][$panels[$i]['name']]) && !@count($positions['right'][$panels[$i]['name']])) || (!@count($positions['left'][$panels[$i]['name']]) && @count($positions['right'][$panels[$i]['name']]))) {
192
+ $width = 'width-auto';
193
+ }
194
+
195
+ $activePanel = "";
196
+ if ($i == $activeTab - 1) $activePanel = " active-panel"; else $activePanel = "";
197
+
198
+ $output .= " <div class=\"gantry-panel panel-" . ($i + 1) . " panel-" . $panel . " " . $width . $activePanel . "\">\n";
199
+
200
+ $buffer = "";
201
+ foreach ($positions as $name => $position) {
202
+ if (isset($positions[$name][$panel])) {
203
+ $buffer .= " <div class=\"gantry-panel-" . $name . "\">\n";
204
+ $panel_name = $name == 'left' ? 'panelform' : 'paneldesc';
205
+
206
+ $buffer .= " <div class=\"" . $panel_name . "\">\n";
207
+ foreach ($positions[$name][$panel] as $element) {
208
+ $buffer .= $element->render('gantry_admin_render_edit_item');
209
+ }
210
+
211
+ $buffer .= " </div>\n";
212
+ $buffer .= " </div>\n";
213
+ }
214
+ }
215
+ $output .= $buffer;
216
+
217
+ $output .= " </div>";
218
+ }
219
+ }
220
+ $output .= "</div>\n";
221
+ echo $output;
222
+ ?>
223
+ </div>
224
+ <div class="clr"></div>
225
+ </div>
226
+ <div class="clr"></div>
227
+ </form>
228
+ </div>
229
+
230
+ <?php
231
+ gantry_admin_override_css();
232
+ $form->finalize();
233
+ ?>
admin/meta-links/cache.php CHANGED
@@ -1,11 +1,12 @@
1
  <?php
2
  /**
3
- * @version $Id: cache.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
 
9
  global $gantry;
10
  $meta_name = "cache";
11
 
1
  <?php
2
  /**
3
+ * @version $Id: cache.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
+ /** @global $gantry Gantry */
10
  global $gantry;
11
  $meta_name = "cache";
12
 
admin/meta-links/presets.php CHANGED
@@ -1,11 +1,12 @@
1
  <?php
2
  /**
3
- * @version $Id: presets.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
 
9
  global $gantry;
10
  $meta_name = "presets";
11
 
1
  <?php
2
  /**
3
+ * @version $Id: presets.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
+ /** @global $gantry Gantry */
10
  global $gantry;
11
  $meta_name = "presets";
12
 
admin/override.php CHANGED
@@ -1,78 +1,49 @@
1
  <?php
2
  /**
3
- * @version $Id: override.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
- function gantry_admin_render_edit_item($element)
10
- {
11
- $buffer = '';
12
- $buffer .= " <div class=\"gantry-field " . $element->type . "-field\">\n";
13
- $label = '';
14
- if ($element->show_label) $label = $element->getLabel() . "\n";
15
- $buffer .= $label;
16
- $buffer .= $element->getInput() . "\n";
17
- $buffer .= " <div class=\"clr\"></div>\n";
18
- $buffer .= " </div>\n";
19
- return $buffer;
20
- }
21
-
22
- function gantry_admin_render_edit_override_item($element)
23
- {
24
- $buffer = '';
25
- $buffer .= " <div class=\"gantry-field " . $element->type . "-field\">\n";
26
- $label = '';
27
- $checked = ($element->variance) ? ' checked="checked"' : '';
28
- if ($element->show_label) {
29
- if (!$element->setinoverride) {
30
- $label = $element->getLabel() . "\n";
31
- } else {
32
- $label = '<div class="field-label"><span class="inherit-checkbox"><input name="overridden-' . $element->name . '" type="checkbox"' . $checked . '/></span><span class="base-label">' . $element->getLabel() . '</span></div>';
33
- }
34
- }
35
- $buffer .= $label;
36
- $buffer .= $element->getInput() . "\n";
37
- $buffer .= " <div class=\"clr\"></div>\n";
38
- $buffer .= " </div>\n";
39
- return $buffer;
40
- }
41
 
42
  /** @global $gantry Gantry */
43
  global $gantry;
44
- if (!current_user_can('edit_theme_options')) wp_die(_g($gantry->get('template_full_name', 'Gantry Template') . _g('Settings')));
45
 
46
  gantry_import('core.config.gantryform');
47
  gantry_import('core.utilities.gantrytemplateinfo');
48
 
 
 
 
 
 
49
  /* This should be separated from index.php */
50
- include(dirname(__FILE__) . '/assignment_functions.php');
51
  gantry_assignment_template_pages_meta_boxes();
52
  gantry_assignment_menus_meta_boxes();
53
  gantry_assignment_post_type_meta_boxes();
54
  gantry_assignment_archives_meta_boxes();
55
  /* _EOF_ */
56
 
 
57
  $gantry->addScript('mootools.js');
58
- $gantry->addScript($gantry->gantryUrl . '/admin/widgets/gantry.js');
 
 
 
 
 
59
  $gantry->addScript($gantry->gantryUrl . '/admin/widgets/radios/js/radios.js');
60
  $gantry->addScript($gantry->gantryUrl . '/admin/widgets/assignments/js/assignments.js');
61
  $gantry->addDomReadyScript("InputsMorph.init('checkbox', '#panel-sortables'); InputsMorph.init('checkbox', '.inherit-checkbox')");
62
  // Setup the JS for the admin
63
- $gantry->addInlineScript(gantryLang());
64
 
65
- //create dirs needed by gantry
66
- $gantry_created_dirs = array(
67
- $gantry->custom_dir,
68
- $gantry->custom_menuitemparams_dir
69
- );
70
 
71
- foreach ($gantry_created_dirs as $dir) {
72
- if (is_readable(dirname($dir)) && is_writeable(dirname($dir)) && !file_exists($dir)) {
73
- mkdir($dir, 0775);
74
- }
75
- }
76
 
77
  if (file_exists($gantry->templatePath . "/gantry.scripts.php") && is_readable($gantry->templatePath . "/gantry.scripts.php")) {
78
  include_once($gantry->templatePath . "/gantry.scripts.php");
@@ -81,19 +52,17 @@ if (file_exists($gantry->templatePath . "/gantry.scripts.php") && is_readable($g
81
  }
82
  }
83
 
84
- $data = array();
 
 
 
85
  $assignments = array();
86
  global $gantry_override_assignment_info;
87
  $gantry_override_assignment_info = array();
88
- $data['template-options'] = get_option($gantry->templateName . '-template-options');
89
-
90
-
91
- $override_id = 0;
92
- $override_catalog = gantry_get_override_catalog($gantry->templateName);
93
  if (isset($_GET['override_id'])) {
94
  $override_id = urldecode($_GET['override_id']);
95
  }
96
-
97
  if ($override_id != 0) {
98
  $override_option = $gantry->templateName . '-template-options-override-' . $override_id;
99
  $override_data = get_option($override_option);
@@ -113,110 +82,82 @@ GantryForm::addFormPath($gantry->templatePath);
113
  GantryForm::addFieldPath($gantry->templatePath . '/fields');
114
  GantryForm::addFieldPath($gantry->templatePath . '/admin/forms/fields');
115
 
116
- $form = GantryForm::getInstance($gantry->_templateDetails->getTemplateInfo(), 'template-options', 'templateDetails', array(), true, '//config');
117
  $form->bind($data);
118
 
119
  $fieldSets = $form->getFieldsets('template-options');
120
 
121
- function gantry_overrides_innertab_wrappers_pre($field)
122
- {
123
- $checked = ($field->variance) ? ' checked="checked"' : '';
124
-
125
- if (!$field->setinoverride) return ""; else return '<div class="field-label"><span class="inherit-checkbox"><input name="overridden-' . $field->name . '" type="checkbox"' . $checked . '/></span><span class="base-label">';
126
- }
127
-
128
- function gantry_overrides_innertab_wrappers_post($field)
129
- {
130
- if (!$field->setinoverride) return ""; else return '</span></div>';
131
- }
132
 
133
- function get_badges_layout($involved)
134
- {
135
- return '
136
- <span class="badges-involved">' . "\n" . '
137
- <span class="presets-involved"> <span>0</span></span> ' . "\n" . '
138
- <span class="overrides-involved"> <span>' . $involved . '</span></span>' . "\n" . '
139
-
140
- </span>' . "\n";
141
- }
142
 
143
  $form->initialize();
144
- ?>
145
-
146
-
147
- <div id="hack-panel">
148
- <?php
149
- $fields = $form->getFullFieldset('toolbar-panel');
150
- foreach ($fields as $name => $field) {
151
- $gantry->addDomReadyScript("Gantry.ToolBar.add('" . $field->type . "');");
152
 
153
- echo "<div id=\"contextual-" . $field->type . "-wrap\" class=\"hidden contextual-custom-wrap\">\n";
154
- echo " <div class=\"metabox-prefs\">\n";
155
 
156
- echo $field->input;
157
-
158
- echo " </div>\n";
159
- echo "</div>\n";
160
- }
161
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  </div>
 
 
 
 
163
 
164
-
165
- <div class="wrap override-wrap">
166
- <form id="gantry-mega-form" method="post" action="<?php echo admin_url('admin-post.php?action=gantry_theme_update_override'); ?>"
167
- enctype="multipart/form-data">
168
- <?php wp_nonce_field('gantry-theme-overrides-update'); ?>
169
- <div class="icon32" id="icon-themes"><br/></div>
170
- <h2>
171
- <?php echo $gantry->get('template_full_name'); ?> Override Settings
172
- <span>
173
- <input type="submit" class="button-secondary" name="reset" value="<?php _ge("Reset to Defaults"); ?>"
174
- onclick="if(confirm('<?php _e("Reset all theme settings to the default values? Are you sure?"); ?>')) return true; else return false;"/>
175
- <input type="button" class="button-secondary preset-saver action" value="Save Custom Preset as New"/>
176
- <input type="submit" class="button-primary action" value="<?php _ge('Save Changes'); ?>"/>
177
- </span>
178
- </h2>
179
- <?php
180
-
181
- if ($message = gantry_get_admin_message('gantry-theme-settings')): ?>
182
- <div class="updated gantry-notice">
183
- <p><?php echo $message;?></p>
184
-
185
- <div class="close"><span>x</span></div>
186
  </div>
187
- <?php endif; ?>
188
- <input type="hidden" name="override_id" value="<?php echo $override_id ?>"/>
189
- <input type="hidden" name="override_name" value="<?php echo $override_name ?>"/>
190
- <input type="hidden" name="id" value="<?php echo $gantry->templateName; ?>"/>
191
- <?php //settings_fields('theme-options-array'); ?>
192
- <div class="fltrt">
193
- <div class="submit-wrapper png">
194
-
195
  </div>
196
- <div class="gantry-wrapper">
197
- <div id="gantry-logo"></div>
198
  <div id="gantry-overrides">
199
- <?php
200
- $overridesList = array();
201
- $overridesList[] = '<div class="overrides-action"><a class="defaults" href="' . str_replace("&", "&amp;", add_query_arg(array('page' => 'gantry-theme-settings'), admin_url('admin.php'))) . '">' . _g('Default Settings') . '</a></div>';
202
-
203
- foreach ($override_catalog as $o_id => $o_name) {
204
- $overridesList[] = '<div class="overrides-action"><a href="' . str_replace("&", "&amp;", add_query_arg(array('page' => 'gantry-theme-overrides',
205
- 'override_id' => $o_id
206
- ))) . '">' . $o_name . '</a></div>';
207
- }
208
- $toggleStatus = (!count($overridesList)) ? ' class="hidden"' : '';
209
- ?>
210
  <div class="overrides-inner">
 
 
 
 
 
 
 
 
 
 
 
211
  <div id="overrides-actions">
212
  <div id="overrides-first">
213
  <a href="#"><?php echo $override_name; ?></a>
214
  </div>
215
  <div id="overrides-toggle"<?php echo $toggleStatus; ?>><br/></div>
216
- <div id="overrides-inside"
217
- class="slideUp"><?php echo implode("\n", $overridesList); ?></div>
 
218
  </div>
219
-
220
  <div id="overrides-toolbar">
221
  <a class="overrides-button button-add"
222
  href="<?php echo admin_url('admin.php?page=gantry-theme-overrides&amp;override_id=0'); ?>"><span>Add</span></a>
@@ -226,198 +167,145 @@ $form->initialize();
226
  <div class="overrides-button button-edit"></div>
227
  </div>
228
  <div id="overrides-switch">
229
- <a class="text-button button-widget" href="<?php echo admin_url('widgets.php?override_id=' . $override_id);?>"><span><?php _ge('Widgets')?></span></a>
230
  </div>
231
  </div>
232
  </div>
233
- <ul id="gantry-tabs">
234
- <?php
235
- $panels = array();
236
- $positions = array(
237
- 'hiddens' => array(),
238
- 'top' => array(),
239
- 'left' => array(),
240
- 'right' => array(),
241
- 'bottom' => array()
242
- );
243
-
244
- $i = 1;
245
- $activeTab = (isset($_COOKIE['gantry-admin-tab'])) ? $_COOKIE['gantry-admin-tab'] + 1 : 1;
246
- if ($activeTab > count($fieldSets) + 1 || $activeTab == 1) $activeTab = 2;
247
- foreach ($fieldSets as $name => $fieldSet):
248
- if ($name != 'toolbar-panel') {
249
- $classes = '';
250
- if ($i == 2) $classes .= "first";
251
- //if ($i == count($fieldSets)) $classes .= "last";
252
- if ($i == $activeTab) $classes .= " active ";
253
- if ($i == 1) $style = " style='display:none;'"; else $style = "";
254
- $involved = 0;
255
-
256
- $fields = $form->getFullFieldset($name);
257
- array_push($panels, array("name" => $name));
258
- foreach ($fields as $fname => $field) {
259
- $position = $field->panel_position;
260
- if ($field->variance) $involved++;
261
- if ($field->type == 'hidden') $position = 'hiddens';
262
- if (!isset($positions[$position][$name])) $positions[$position][$name] = array();
263
- array_push($positions[$position][$name], $field);
264
- }
265
- ?>
266
- <li class="<?php echo $classes;?>"<?php echo $style; ?>>
267
- <span class="outer">
268
- <span class="inner"><span style="float:left;"><?php _ge($fieldSet->label);?></span> <?php echo get_badges_layout($involved); ?></span>
269
- </span>
270
- </li>
271
-
272
- <?php $i++;
273
- } endforeach;?>
274
- <li class="last <?php if ($activeTab == $i) {
275
- echo "active";
276
- }?>">
277
- <span class="outer">
278
- <span class="inner"><span style="float:left;"><?php _ge('Assignments');?></span> <span class="presets-involved"> <span>0</span></span></span>
279
- </span>
280
- </li>
281
- </ul>
282
- <?php
283
-
284
- $output = "";
285
- $output .= "<div id=\"gantry-panel\">\n";
286
- if (count($panels) > 0) {
287
- for ($i = 0; $i < count($panels); $i++) {
288
- $panel = $panels[$i]['name'];
289
-
290
- $width = '';
291
- if ((@count($positions['left'][$panels[$i]['name']]) && !@count($positions['right'][$panels[$i]['name']])) || (!@count($positions['left'][$panels[$i]['name']]) && @count($positions['right'][$panels[$i]['name']]))) {
292
- $width = 'width-auto';
293
- }
294
-
295
- $activePanel = "";
296
- if ($i == $activeTab - 1) $activePanel = " active-panel"; else $activePanel = "";
297
-
298
- if ($i == 0) $style = " style='display:none;'"; else $style = "";
299
-
300
- $output .= " <div class=\"gantry-panel panel-" . ($i + 1) . " panel-" . $panel . " " . $width . $activePanel . "\"" . $style . ">\n";
301
-
302
- $buffer = "";
303
- foreach ($positions as $name => $position) {
304
- if (isset($positions[$name][$panel])) {
305
- $buffer .= " <div class=\"gantry-panel-" . $name . "\">\n";
306
- $panel_name = $name == 'left' ? 'panelform' : 'paneldesc';
307
-
308
- $buffer .= " <div class=\"" . $panel_name . "\">\n";
309
- foreach ($positions[$name][$panel] as $element) {
310
- $buffer .= $element->render('gantry_admin_render_edit_override_item');
311
  }
312
 
313
- $buffer .= " </div>\n";
314
- $buffer .= " </div>\n";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
315
  }
316
- }
317
- $output .= $buffer;
318
 
319
- $output .= " </div>";
320
- }
321
- }
322
- if ($i == $activeTab - 1) $activePanel = " active-panel"; else $activePanel = "";
323
- $output .= " <div id=\"assignments-panel\" class=\"gantry-panel panel-" . ($i + 1) . " panel-assignments " . $width . $activePanel . "\">\n";
324
- $output .= " <div class=\"gantry-panel-left\">\n";
325
- $output .= " <div class=\"panelform\">\n";
326
- $output .= " <div class=\"left-list\">\n";
327
- ob_start();
328
- do_assignment_meta_boxes('gantry_assignments', 'panel', null, $assignments, $assignment_info);
329
- $output .= ob_get_clean();
330
- $output .= " </div>\n";
331
- $output .= " <div class='clr'></div>\n";
332
- $output .= " </div>\n";
333
- $output .= " </div>\n";
334
- $output .= " <div class=\"gantry-panel-right\">\n";
335
- $output .= " <div class=\"panelform\">\n";
336
- $output .= " <div id=\"selection-list\" class=\"assignments-block\">\n";
337
- $output .= " <h2>" . _g('Assigned Overrides') . "</h2>\n";
338
- $output .= " <ul id=\"assigned-list\">\n";
339
- global $gantry_override_types;
340
- if (empty($assignments)) {
341
- $output .= " <li class=\"empty\">" . _g('No Item.') . "</li>\n";
342
- } else {
343
- foreach ($assignments as $archetype => $assignment) {
344
- foreach ($assignment as $type => $value) {
345
- if (is_bool($value) && $value) {
346
- $data = $archetype . '::' . $type;
347
- $label = (isset($gantry_override_assignment_info[$data])) ? $gantry_override_assignment_info[$data]->title : $gantry_override_types[$data]->type_label;
348
- $type_string = (isset($gantry_override_assignment_info[$data])) ? $gantry_override_assignment_info[$data]->single_label : _g('Type');
349
- $output .= '<li class="list-type">' . "\n";
350
- $output .= ' <span class="type">' . $type_string . '</span>' . "\n";
351
- $output .= ' <span class="delete-assigned"></span>' . "\n";
352
- $output .= ' <span class="link">' . "\n";
353
- $output .= ' <span class="' . $data . '">' . $label . '</span>' . "\n";
354
- $output .= ' </span>' . "\n";
355
- $output .= '</li>' . "\n";
356
- } else {
357
- foreach ($value as $item_id) {
358
- $data = $archetype . '::' . $type . '::' . $item_id;
359
- $title = $gantry_override_assignment_info[$data]->title;
360
- $output .= '<li class="list-type">' . "\n";
361
- $output .= ' <span class="type">' . $gantry_override_assignment_info[$data]->single_label . '</span>' . "\n";
362
- $output .= ' <span class="delete-assigned"></span>' . "\n";
363
- $output .= ' <span class="link">' . "\n";
364
- $output .= ' <a class="no-link-item" href="#" rel="' . $data . '">' . $title . '</a>' . "\n";
365
- $output .= ' </span>' . "\n";
366
- $output .= '</li>' . "\n";
367
  }
368
- }
 
 
 
369
  }
370
  }
371
-
372
- }
373
- $output .= " </ul>\n";
374
- $output .= " <div class=\"footer-block\"" . (count($assignments) ? " style='display: block;'" : "") . ">\n";
375
- $output .= " <div class=\"clear-list\"><a href=\"#\">Clear List</a></div>\n";
376
- $output .= " </div>\n";
377
- $output .= " <textarea style=\"width: 395px; height: 260px;\" name=\"assigned_override_items\" id=\"assigned_override_items\">" . serialize($assignments) . "</textarea>\n";
378
- $output .= " </div>\n";
379
- $output .= " </div>\n";
380
- $output .= " </div>\n";
381
- $output .= " </div>";
382
- $output .= "</div>\n";
383
- echo $output;
384
- ?>
385
- </div>
386
- <div class="clr"></div>
387
  </div>
388
  <div class="clr"></div>
389
- </form>
390
- </div>
391
-
392
  <?php
393
- // css overrides
394
- if ($gantry->browser->name == 'ie' && file_exists($gantry->gantryPath . DS . 'admin' . DS . 'widgets' . DS . 'gantry-ie.css')) {
395
- $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/gantry-ie.css');
396
- }
397
- if ($gantry->browser->name == 'ie' && $gantry->browser->version == '7' && file_exists($gantry->gantryPath . DS . 'admin' . DS . 'widgets' . DS . 'gantry-ie7.css')) {
398
- $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/gantry-ie7.css');
399
- }
400
-
401
- if (($gantry->browser->name == 'firefox' && $gantry->browser->version < '3.7') || ($gantry->browser->name == 'ie' && $gantry->browser->version > '6')) {
402
- $css = ".text-short, .text-medium, .text-long, .text-color {padding-top: 4px;height:19px;}";
403
- $gantry->addInlineStyle($css);
404
- }
405
-
406
- if ($gantry->browser->name == 'ie' && $gantry->browser->shortversion == '7') {
407
- $css = "
408
- .g-surround, .g-inner, .g-surround > div {zoom: 1;position: relative;}
409
- .text-short, .text-medium, .text-long, .text-color {border:0 !important;}
410
- .selectbox {z-index:500;position:relative;}
411
- .group-fusionmenu, .group-splitmenu {position:relative;margin-top:0 !important;zoom:1;}
412
- .scroller .inner {position:relative;}
413
- .moor-hexLabel {display:inline-block;zoom:1;float:left;}
414
- .moor-hexLabel input {float:left;}
415
- ";
416
- $gantry->addInlineStyle($css);
417
- }
418
- if ($gantry->browser->name == 'opera' && file_exists($gantry->gantryPath . DS . 'admin' . DS . 'widgets' . DS . 'gantry-opera.css')) {
419
- $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/gantry-opera.css');
420
- }
421
-
422
  $form->finalize();
423
- ?>
1
  <?php
2
  /**
3
+ * @version $Id: override.php 59366 2013-03-14 09:59:08Z jakub $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
+ require_once(gantry_dirname(__FILE__) . '/admin_functions.php');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
  /** @global $gantry Gantry */
12
  global $gantry;
13
+ if (!current_user_can('edit_theme_options')) wp_die($gantry->get('template_full_name', 'Gantry') . ' ' . _g('THEME_SETTINGS'));
14
 
15
  gantry_import('core.config.gantryform');
16
  gantry_import('core.utilities.gantrytemplateinfo');
17
 
18
+ gantry_admin_compile_less();
19
+ define('GANTRY_CSS', 1);
20
+
21
+
22
+
23
  /* This should be separated from index.php */
24
+ include(gantry_dirname(__FILE__) . '/assignment_functions.php');
25
  gantry_assignment_template_pages_meta_boxes();
26
  gantry_assignment_menus_meta_boxes();
27
  gantry_assignment_post_type_meta_boxes();
28
  gantry_assignment_archives_meta_boxes();
29
  /* _EOF_ */
30
 
31
+
32
  $gantry->addScript('mootools.js');
33
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/moofx.js");
34
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/Twipsy.js");
35
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/gantry.js");
36
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/gantry.popupbuttons.js");
37
+ $gantry->addScript($gantry->gantryUrl . '/admin/widgets/ajaxbutton/js/ajaxbutton.js');
38
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/growl.js");
39
  $gantry->addScript($gantry->gantryUrl . '/admin/widgets/radios/js/radios.js');
40
  $gantry->addScript($gantry->gantryUrl . '/admin/widgets/assignments/js/assignments.js');
41
  $gantry->addDomReadyScript("InputsMorph.init('checkbox', '#panel-sortables'); InputsMorph.init('checkbox', '.inherit-checkbox')");
42
  // Setup the JS for the admin
43
+ $gantry->addInlineScript("var GantryIsMaster = false;");
44
 
 
 
 
 
 
45
 
46
+ gantry_admin_prep_needed_dirs();
 
 
 
 
47
 
48
  if (file_exists($gantry->templatePath . "/gantry.scripts.php") && is_readable($gantry->templatePath . "/gantry.scripts.php")) {
49
  include_once($gantry->templatePath . "/gantry.scripts.php");
52
  }
53
  }
54
 
55
+ $override_catalog = gantry_get_override_catalog($gantry->templateName);
56
+ $data = array();
57
+ $data['template-options'] = get_option($gantry->templateName . '-template-options');
58
+
59
  $assignments = array();
60
  global $gantry_override_assignment_info;
61
  $gantry_override_assignment_info = array();
62
+ $override_id = 0;
 
 
 
 
63
  if (isset($_GET['override_id'])) {
64
  $override_id = urldecode($_GET['override_id']);
65
  }
 
66
  if ($override_id != 0) {
67
  $override_option = $gantry->templateName . '-template-options-override-' . $override_id;
68
  $override_data = get_option($override_option);
82
  GantryForm::addFieldPath($gantry->templatePath . '/fields');
83
  GantryForm::addFieldPath($gantry->templatePath . '/admin/forms/fields');
84
 
85
+ $form = GantryForm::getInstance($gantry->_template->getTemplateInfo(), 'template-options', 'templateDetails', array(), true, '//config');
86
  $form->bind($data);
87
 
88
  $fieldSets = $form->getFieldsets('template-options');
89
 
 
 
 
 
 
 
 
 
 
 
 
90
 
 
 
 
 
 
 
 
 
 
91
 
92
  $form->initialize();
 
 
 
 
 
 
 
 
93
 
94
+ $tabs = gantry_admin_get_tabs($form);
 
95
 
96
+ $activeTab = (isset($_COOKIE['gantry-admin-tab'])) ? $_COOKIE['gantry-admin-tab'] + 1 : 1;
97
+ $assignmentCount = 0;
98
+ ?>
99
+ <div class="g4-wrap <?php echo 'override-wrap'; ?>">
100
+ <div id="g4-toolbar">
101
+ <div class="icon32" id="icon-themes"></div>
102
+ <h1><?php _ge($gantry->get('template_full_name', 'Gantry') . ' ' . _g('THEME_SETTINGS')); ?></h1>
103
+ <?php echo gantry_admin_render_menu(); ?>
104
+ </div>
105
+
106
+ <form action="<?php echo admin_url('admin-post.php?action=gantry_theme_update_override'); ?>" method="post" name="adminForm" id="adminForm" class="form-validate">
107
+ <?php wp_nonce_field('gantry-theme-overrides-update'); ?>
108
+ <input type="hidden" name="override_id" value="<?php echo $override_id ?>"/>
109
+ <input type="hidden" name="override_name" value="<?php echo $override_name ?>"/>
110
+ <input type="hidden" name="id" value="<?php echo $gantry->templateName; ?>"/>
111
+ <?php echo $form->getInput('client_id'); ?>
112
+ <?php if ($message = gantry_get_admin_message('gantry-theme-settings')): ?>
113
+ <div class="updated gantry-notice">
114
+ <p><?php echo $message;?></p>
115
+
116
+ <div class="close"><span>x</span></div>
117
  </div>
118
+ <?php endif; ?>
119
+ <?php
120
+ $status = (isset($_COOKIE['gantry-' . $gantry->templateName . '-adminpresets'])) ? htmlentities($_COOKIE['gantry-' . $gantry->templateName . '-adminpresets']) : 'hide';
121
+ $presetsShowing = ($status == 'hide') ? "" : ' class="presets-showing"';
122
 
123
+ if ($override !== false) {
124
+ $flag = 'g4-flag-override';
125
+ $flag_text = _g('Override');
126
+ } else {
127
+ $flag = 'g4-flag-master';
128
+ $flag_text = '&#10029; ' . _g('Default');
129
+ }
130
+ ?>
131
+ <div id="g4-details-wrapper">
132
+ <div id="g4-master" class="<?php echo $flag; ?> g4-size-13">
133
+ <div id="g4-flag">
134
+ <?php echo $flag_text; ?>
135
+ <span class="arrow"><span></span></span>
 
 
 
 
 
 
 
 
 
136
  </div>
 
 
 
 
 
 
 
 
137
  </div>
138
+ <div id="g4-details"<?php echo $presetsShowing; ?>>
 
139
  <div id="gantry-overrides">
 
 
 
 
 
 
 
 
 
 
 
140
  <div class="overrides-inner">
141
+ <?php
142
+ $overridesList = array();
143
+ $overridesList[] = '<div class="overrides-action"><a class="defaults" href="' . str_replace("&", "&amp;", add_query_arg(array('page' => 'gantry-theme-settings'), admin_url('admin.php'))) . '">' . _g('Default Settings') . '</a></div>';
144
+ foreach ($override_catalog as $o_id => $o_name) {
145
+ $overridesList[] = '<div class="overrides-action"><a href="' . str_replace("&", "&amp;", add_query_arg(array(
146
+ 'page' => 'gantry-theme-overrides',
147
+ 'override_id' => $o_id
148
+ ))) . '">' . $o_name . '</a></div>';
149
+ }
150
+ $toggleStatus = (!count($overridesList)) ? ' class="hidden"' : '';
151
+ ?>
152
  <div id="overrides-actions">
153
  <div id="overrides-first">
154
  <a href="#"><?php echo $override_name; ?></a>
155
  </div>
156
  <div id="overrides-toggle"<?php echo $toggleStatus; ?>><br/></div>
157
+ <div id="overrides-inside" class="slideup">
158
+ <?php echo implode("\n", $overridesList); ?>
159
+ </div>
160
  </div>
 
161
  <div id="overrides-toolbar">
162
  <a class="overrides-button button-add"
163
  href="<?php echo admin_url('admin.php?page=gantry-theme-overrides&amp;override_id=0'); ?>"><span>Add</span></a>
167
  <div class="overrides-button button-edit"></div>
168
  </div>
169
  <div id="overrides-switch">
170
+ <a class="text-button button-widget" href="<?php echo admin_url('widgets.php'); ?>"><span><?php _ge('Widgets');?></span></a>
171
  </div>
172
  </div>
173
  </div>
174
+ </div>
175
+ </div>
176
+ <div id="g4-presets">
177
+ <div class="submit-wrapper png"></div>
178
+ <?php include(gantry_dirname(__FILE__) . '/admin_presets.php'); ?>
179
+ </div>
180
+ <div id="g4-container">
181
+ <div class="g4-header">
182
+ <div class="g4-wrapper">
183
+ <div class="g4-row">
184
+ <div class="g4-column">
185
+ <div id="g4-logo"><span></span></div>
186
+ <ul class="g4-tabs">
187
+ <?php
188
+ $panels = array();
189
+ $positions = array(
190
+ 'hiddens' => array(),
191
+ 'top' => array(),
192
+ 'left' => array(),
193
+ 'right' => array(),
194
+ 'bottom' => array()
195
+ );
196
+
197
+ $involvedCounts = array();
198
+ foreach ($fieldSets as $name => $fieldSet) {
199
+ if ($name == 'toolbar-panel') continue;
200
+ $fields = $form->getFullFieldset($name);
201
+ $involved = 0;
202
+ array_push($panels, array(
203
+ "name" => $name,
204
+ "height" => (isset($fieldSet->height)) ? $fieldSet->height : null
205
+ ));
206
+ foreach ($fields as $fname => $field) {
207
+ $position = $field->panel_position;
208
+
209
+ if ($field->type != 'hidden' && $field->setinoverride && $field->variance) $involved++;
210
+ if ($field->type == 'hidden') $position = 'hiddens';
211
+ if (!isset($positions[$position][$name])) $positions[$position][$name] = array();
212
+ array_push($positions[$position][$name], $field //array("name" => $field->name, "label" => $field->label, "input" => $field->input, "show_label" => $field->show_label, 'type' => $field->type)
213
+ );
214
+ }
215
+ $involvedCounts[$name] = $involved;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  }
217
 
218
+
219
+ foreach ($fieldSets as $name => $fieldSet):
220
+ if ($name == 'toolbar-panel') continue;
221
+ ?>
222
+ <li class="<?php echo $tabs[$name];?>">
223
+ <span class="badge"><?php echo get_badges_layout($involved);?></span>
224
+ <?php echo _g($fieldSet->label);?>
225
+ <span class="arrow"><span><span></span></span></span>
226
+ </li>
227
+ <?php endforeach;?>
228
+ <li class="assignments">
229
+ <span class="badge"><?php echo get_badges_layout($involved);?></span>
230
+ <?php _ge('Assignments');?>
231
+ <span class="arrow"><span><span></span></span></span>
232
+ </li>
233
+ </ul>
234
+ </div>
235
+ </div>
236
+ </div>
237
+ </div>
238
+ <div class="g4-body">
239
+ <div id="g4-panels">
240
+ <?php
241
+ if (count($panels) > 0) {
242
+ for ($i = 0; $i < count($panels); $i++) {
243
+ $panel = $panels[$i]['name'];
244
+ $width = '';
245
+ if ((@count($positions['left'][$panels[$i]['name']]) && !@count($positions['right'][$panels[$i]['name']])) || (!@count($positions['left'][$panels[$i]['name']]) && @count($positions['right'][$panels[$i]['name']]))) {
246
+ $width = 'width-100pc';
247
  }
 
 
248
 
249
+ $activePanel = "";
250
+ if ($i == $activeTab - 1) $activePanel = " active-panel"; else $activePanel = "";
251
+ ?>
252
+ <div class="g4-panel panel-<?php echo ($i + 1);?> panel-<?php echo $panel;?> <?php echo $width;?><?php echo $activePanel;?>">
253
+ <?php
254
+ $buffer = "";
255
+ foreach ($positions as $name => $position) {
256
+
257
+ if (isset($positions[$name][$panel])) {
258
+ // hide right panels in Gantry4 for all but overview tab
259
+ if (!($name == "right" && $panel != "overview")) {
260
+ $buffer .= " <div class=\"g4-panel-" . $name . "\">\n";
261
+ $panel_name = $name == 'left' ? 'panelform' : 'paneldesc';
262
+
263
+ $buffer .= " <div class=\"" . $panel_name . "\">\n";
264
+
265
+ if ($panel_name == 'paneldesc' && $panel == 'overview') {
266
+ //$buffer .= get_version_update_info();
267
+
268
+ }
269
+ foreach ($positions[$name][$panel] as $element) {
270
+ if (!$override === false) {
271
+ $buffer .= $element->render('gantry_admin_render_edit_item');
272
+ } else {
273
+ $buffer .= $element->render('gantry_admin_render_edit_override_item');
274
+ }
275
+ }
276
+ $buffer .= " </div>\n";
277
+ $buffer .= " </div>\n";
278
+ }
279
+
280
+ if ($panel != 'overview' && $name == 'right') {
281
+ foreach ($positions[$name][$panel] as $element) {
282
+ if (get_class($element) != 'GantryFormFieldTips') continue;
283
+
284
+ if ($override === false) {
285
+ $buffer .= $element->render('gantry_admin_render_edit_item');
286
+ } else {
287
+ $buffer .= $element->render('gantry_admin_render_edit_override_item');
288
+ }
289
+ }
290
+ }
291
+ }
 
 
 
 
 
292
  }
293
+ echo $buffer;
294
+ ?>
295
+ </div>
296
+ <?php
297
  }
298
  }
299
+ if ($i == $activeTab - 1) $activePanel = " active-panel"; else $activePanel = "";
300
+ include(gantry_dirname(__FILE__) . '/admin_assignments.php');
301
+ ?>
302
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
303
  </div>
304
  <div class="clr"></div>
305
+ </div>
306
+ </form>
307
+ </div>
308
  <?php
309
+ gantry_admin_override_css();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
  $form->finalize();
311
+ ?>
admin/override_orig.php ADDED
@@ -0,0 +1,343 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @version $Id: override_orig.php 59366 2013-03-14 09:59:08Z jakub $
4
+ * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
+ */
8
+
9
+ require_once(gantry_dirname(__FILE__).'/admin_functions.php');
10
+
11
+ /** @global $gantry Gantry */
12
+ global $gantry;
13
+ if (!current_user_can('edit_theme_options')) wp_die($gantry->get('template_full_name', 'Gantry') . ' ' . _g('THEME_SETTINGS'));
14
+
15
+ gantry_import('core.config.gantryform');
16
+ gantry_import('core.utilities.gantrytemplateinfo');
17
+
18
+ gantry_admin_compile_less();
19
+ define('GANTRY_CSS', 1);
20
+
21
+
22
+
23
+ /* This should be separated from index.php */
24
+ include(gantry_dirname(__FILE__) . '/assignment_functions.php');
25
+ gantry_assignment_template_pages_meta_boxes();
26
+ gantry_assignment_menus_meta_boxes();
27
+ gantry_assignment_post_type_meta_boxes();
28
+ gantry_assignment_archives_meta_boxes();
29
+ /* _EOF_ */
30
+
31
+
32
+ $gantry->addScript('mootools.js');
33
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/moofx.js");
34
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/Twipsy.js");
35
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/gantry.js");
36
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/gantry.popupbuttons.js");
37
+ $gantry->addScript($gantry->gantryUrl . '/admin/widgets/ajaxbutton/js/ajaxbutton.js');
38
+ $gantry->addScript($gantry->gantryUrl . "/admin/widgets/growl.js");
39
+ $gantry->addScript($gantry->gantryUrl . '/admin/widgets/radios/js/radios.js');
40
+ $gantry->addScript($gantry->gantryUrl . '/admin/widgets/assignments/js/assignments.js');
41
+ $gantry->addDomReadyScript("InputsMorph.init('checkbox', '#panel-sortables'); InputsMorph.init('checkbox', '.inherit-checkbox')");
42
+ // Setup the JS for the admin
43
+
44
+
45
+ gantry_admin_prep_needed_dirs();
46
+
47
+ if (file_exists($gantry->templatePath . "/gantry.scripts.php") && is_readable($gantry->templatePath . "/gantry.scripts.php")) {
48
+ include_once($gantry->templatePath . "/gantry.scripts.php");
49
+ if (function_exists('gantry_params_init')) {
50
+ gantry_params_init();
51
+ }
52
+ }
53
+
54
+ $override_catalog = gantry_get_override_catalog($gantry->templateName);
55
+ $data = array();
56
+ $data['template-options'] = get_option($gantry->templateName . '-template-options');
57
+
58
+ $assignments = array();
59
+ global $gantry_override_assignment_info;
60
+ $gantry_override_assignment_info = array();
61
+ $override_id = 0;
62
+ if (isset($_GET['override_id'])) {
63
+ $override_id = urldecode($_GET['override_id']);
64
+ }
65
+ if ($override_id != 0) {
66
+ $override_option = $gantry->templateName . '-template-options-override-' . $override_id;
67
+ $override_data = get_option($override_option);
68
+ if ($override_data === false) $override_data = array();
69
+ $data['template-options'] = array_merge_replace_recursive($data['template-options'], $override_data);
70
+ $override_name = $override_catalog[$override_id];
71
+ $override_assignments_option_name = $gantry->templateName . '-template-options-override-assignments-' . $override_id;
72
+ $override_assignments = get_option($override_assignments_option_name);
73
+ if ($override_assignments === false) $override_assignments = array();
74
+ $assignments = $override_assignments;
75
+ } else {
76
+ $next_override = (count($override_catalog) > 0) ? max(array_keys($override_catalog)) + 1 : 1;
77
+ $override_name = sprintf(_g('Custom Override %d'), $next_override);
78
+ }
79
+
80
+ GantryForm::addFormPath($gantry->templatePath);
81
+ GantryForm::addFieldPath($gantry->templatePath . '/fields');
82
+ GantryForm::addFieldPath($gantry->templatePath . '/admin/forms/fields');
83
+
84
+ $form = GantryForm::getInstance($gantry->_template->getTemplateInfo(), 'template-options', 'templateDetails', array(), true, '//config');
85
+ $form->bind($data);
86
+
87
+ $fieldSets = $form->getFieldsets('template-options');
88
+
89
+
90
+
91
+ $form->initialize();
92
+ ?>
93
+
94
+
95
+ <div id="hack-panel">
96
+ <?php
97
+ $fields = $form->getFullFieldset('toolbar-panel');
98
+ foreach ($fields as $name => $field) {
99
+ $gantry->addDomReadyScript("Gantry.ToolBar.add('" . $field->type . "');");
100
+
101
+ echo "<div id=\"contextual-" . $field->type . "-wrap\" class=\"hidden contextual-custom-wrap\">\n";
102
+ echo " <div class=\"metabox-prefs\">\n";
103
+
104
+ echo $field->input;
105
+
106
+ echo " </div>\n";
107
+ echo "</div>\n";
108
+ }
109
+ ?>
110
+ </div>
111
+
112
+
113
+ <div class="wrap override-wrap">
114
+ <form id="gantry-mega-form" method="post" action="<?php echo admin_url('admin-post.php?action=gantry_theme_update_override'); ?>" enctype="multipart/form-data">
115
+ <?php wp_nonce_field('gantry-theme-overrides-update'); ?>
116
+ <div class="icon32" id="icon-themes"><br/></div>
117
+ <h2>
118
+ <?php echo $gantry->get('template_full_name'); ?> Override Settings
119
+ <span>
120
+ <input type="submit" class="button-secondary" name="reset" value="<?php _ge("Reset to pres"); ?>"
121
+ onclick="if(confirm('<?php _e("Reset all theme settings to the default values? Are you sure?"); ?>')) return true; else return false;"/>
122
+ <input type="button" class="button-secondary preset-saver action" value="Save Custom Preset as New"/>
123
+ <input type="submit" class="button-primary action" value="<?php _ge('Save Changes'); ?>"/>
124
+ </span>
125
+ </h2>
126
+ <?php
127
+
128
+ if ($message = gantry_get_admin_message('gantry-theme-settings')): ?>
129
+ <div class="updated gantry-notice">
130
+ <p><?php echo $message;?></p>
131
+
132
+ <div class="close"><span>x</span></div>
133
+ </div>
134
+ <?php endif; ?>
135
+ <input type="hidden" name="override_id" value="<?php echo $override_id ?>"/>
136
+ <input type="hidden" name="override_name" value="<?php echo $override_name ?>"/>
137
+ <input type="hidden" name="id" value="<?php echo $gantry->templateName; ?>"/>
138
+ <?php //settings_fields('theme-options-array'); ?>
139
+ <div class="fltrt">
140
+ <div class="submit-wrapper png">
141
+
142
+ </div>
143
+ <div class="gantry-wrapper">
144
+ <div id="gantry-logo"></div>
145
+ <div id="gantry-overrides">
146
+ <?php
147
+ $overridesList = array();
148
+ $overridesList[] = '<div class="overrides-action"><a class="defaults" href="' . str_replace("&", "&amp;", add_query_arg(array('page' => 'gantry-theme-settings'), admin_url('admin.php'))) . '">' . _g('Default Settings') . '</a></div>';
149
+
150
+ foreach ($override_catalog as $o_id => $o_name) {
151
+ $overridesList[] = '<div class="overrides-action"><a href="' . str_replace("&", "&amp;", add_query_arg(array(
152
+ 'page' => 'gantry-theme-overrides',
153
+ 'override_id' => $o_id
154
+ ))) . '">' . $o_name . '</a></div>';
155
+ }
156
+ $toggleStatus = (!count($overridesList)) ? ' class="hidden"' : '';
157
+ ?>
158
+ <div class="overrides-inner">
159
+ <div id="overrides-actions">
160
+ <div id="overrides-first">
161
+ <a href="#"><?php echo $override_name; ?></a>
162
+ </div>
163
+ <div id="overrides-toggle"<?php echo $toggleStatus; ?>><br/></div>
164
+ <div id="overrides-inside"
165
+ class="slideup"><?php echo implode("\n", $overridesList); ?></div>
166
+ </div>
167
+
168
+ <div id="overrides-toolbar">
169
+ <a class="overrides-button button-add"
170
+ href="<?php echo admin_url('admin.php?page=gantry-theme-overrides&amp;override_id=0'); ?>"><span>Add</span></a>
171
+ <a class="overrides-button button-del"
172
+ href="<?php echo admin_url('admin-post.php?action=gantry_theme_delete_override&amp;override_id=' . $override_id);?>"><span>Delete</span></a>
173
+
174
+ <div class="overrides-button button-edit"></div>
175
+ </div>
176
+ <div id="overrides-switch">
177
+ <a class="text-button button-widget" href="<?php echo admin_url('widgets.php?override_id=' . $override_id);?>"><span><?php _ge('Widgets')?></span></a>
178
+ </div>
179
+ </div>
180
+ </div>
181
+ <ul id="gantry-tabs">
182
+ <?php
183
+ $panels = array();
184
+ $positions = array(
185
+ 'hiddens' => array(),
186
+ 'top' => array(),
187
+ 'left' => array(),
188
+ 'right' => array(),
189
+ 'bottom' => array()
190
+ );
191
+
192
+ $i = 1;
193
+ $activeTab = (isset($_COOKIE['gantry-admin-tab'])) ? $_COOKIE['gantry-admin-tab'] + 1 : 1;
194
+ if ($activeTab > count($fieldSets) + 1 || $activeTab == 1) $activeTab = 2;
195
+ foreach ($fieldSets as $name => $fieldSet):
196
+ if ($name != 'toolbar-panel') {
197
+ $classes = '';
198
+ if ($i == 2) $classes .= "first";
199
+ //if ($i == count($fieldSets)) $classes .= "last";
200
+ if ($i == $activeTab) $classes .= " active ";
201
+ if ($i == 1) $style = " style='display:none;'"; else $style = "";
202
+ $involved = 0;
203
+
204
+ $fields = $form->getFullFieldset($name);
205
+ array_push($panels, array("name" => $name));
206
+ foreach ($fields as $fname => $field) {
207
+ $position = $field->panel_position;
208
+ if ($field->variance) $involved++;
209
+ if ($field->type == 'hidden') $position = 'hiddens';
210
+ if (!isset($positions[$position][$name])) $positions[$position][$name] = array();
211
+ array_push($positions[$position][$name], $field);
212
+ }
213
+ ?>
214
+ <li class="<?php echo $classes;?>"<?php echo $style; ?>>
215
+ <span class="outer">
216
+ <span class="inner"><span style="float:left;"><?php _ge($fieldSet->label);?></span> <?php echo get_badges_layout($involved); ?></span>
217
+ </span>
218
+ </li>
219
+
220
+ <?php $i++;
221
+ } endforeach;?>
222
+ <li class="last <?php if ($activeTab == $i) {
223
+ echo "active";
224
+ }?>">
225
+ <span class="outer">
226
+ <span class="inner"><span style="float:left;"><?php _ge('Assignments');?></span> <span class="presets-involved"> <span>0</span></span></span>
227
+ </span>
228
+ </li>
229
+ </ul>
230
+ <?php
231
+
232
+ $output = "";
233
+ $output .= "<div id=\"gantry-panel\">\n";
234
+ if (count($panels) > 0) {
235
+ for ($i = 0; $i < count($panels); $i++) {
236
+ $panel = $panels[$i]['name'];
237
+
238
+ $width = '';
239
+ if ((@count($positions['left'][$panels[$i]['name']]) && !@count($positions['right'][$panels[$i]['name']])) || (!@count($positions['left'][$panels[$i]['name']]) && @count($positions['right'][$panels[$i]['name']]))) {
240
+ $width = 'width-auto';
241
+ }
242
+
243
+ $activePanel = "";
244
+ if ($i == $activeTab - 1) $activePanel = " active-panel"; else $activePanel = "";
245
+
246
+ if ($i == 0) $style = " style='display:none;'"; else $style = "";
247
+
248
+ $output .= " <div class=\"gantry-panel panel-" . ($i + 1) . " panel-" . $panel . " " . $width . $activePanel . "\"" . $style . ">\n";
249
+
250
+ $buffer = "";
251
+ foreach ($positions as $name => $position) {
252
+ if (isset($positions[$name][$panel])) {
253
+ $buffer .= " <div class=\"gantry-panel-" . $name . "\">\n";
254
+ $panel_name = $name == 'left' ? 'panelform' : 'paneldesc';
255
+
256
+ $buffer .= " <div class=\"" . $panel_name . "\">\n";
257
+ foreach ($positions[$name][$panel] as $element) {
258
+ $buffer .= $element->render('gantry_admin_render_edit_override_item');
259
+ }
260
+
261
+ $buffer .= " </div>\n";
262
+ $buffer .= " </div>\n";
263
+ }
264
+ }
265
+ $output .= $buffer;
266
+
267
+ $output .= " </div>";
268
+ }
269
+ }
270
+ if ($i == $activeTab - 1) $activePanel = " active-panel"; else $activePanel = "";
271
+ $output .= " <div id=\"assignments-panel\" class=\"gantry-panel panel-" . ($i + 1) . " panel-assignments " . $width . $activePanel . "\">\n";
272
+ $output .= " <div class=\"gantry-panel-left\">\n";
273
+ $output .= " <div class=\"panelform\">\n";
274
+ $output .= " <div class=\"left-list\">\n";
275
+ ob_start();
276
+ do_assignment_meta_boxes('gantry_assignments', 'panel', null, $assignments, $assignment_info);
277
+ $output .= ob_get_clean();
278
+ $output .= " </div>\n";
279
+ $output .= " <div class='clr'></div>\n";
280
+ $output .= " </div>\n";
281
+ $output .= " </div>\n";
282
+ $output .= " <div class=\"gantry-panel-right\">\n";
283
+ $output .= " <div class=\"panelform\">\n";
284
+ $output .= " <div id=\"selection-list\" class=\"assignments-block\">\n";
285
+ $output .= " <h2>" . _g('Assigned Overrides') . "</h2>\n";
286
+ $output .= " <ul id=\"assigned-list\">\n";
287
+ global $gantry_override_types;
288
+ if (empty($assignments)) {
289
+ $output .= " <li class=\"empty\">" . _g('No Item.') . "</li>\n";
290
+ } else {
291
+ foreach ($assignments as $archetype => $assignment) {
292
+ foreach ($assignment as $type => $value) {
293
+ if (is_bool($value) && $value) {
294
+ $data = $archetype . '::' . $type;
295
+ $label = (isset($gantry_override_assignment_info[$data])) ? $gantry_override_assignment_info[$data]->title : $gantry_override_types[$data]->type_label;
296
+ $type_string = (isset($gantry_override_assignment_info[$data])) ? $gantry_override_assignment_info[$data]->single_label : _g('Type');
297
+ $output .= '<li class="list-type">' . "\n";
298
+ $output .= ' <span class="type">' . $type_string . '</span>' . "\n";
299
+ $output .= ' <span class="delete-assigned"></span>' . "\n";
300
+ $output .= ' <span class="link">' . "\n";
301
+ $output .= ' <span class="' . $data . '">' . $label . '</span>' . "\n";
302
+ $output .= ' </span>' . "\n";
303
+ $output .= '</li>' . "\n";
304
+ } else {
305
+ foreach ($value as $item_id) {
306
+ $data = $archetype . '::' . $type . '::' . $item_id;
307
+ $title = $gantry_override_assignment_info[$data]->title;
308
+ $output .= '<li class="list-type">' . "\n";
309
+ $output .= ' <span class="type">' . $gantry_override_assignment_info[$data]->single_label . '</span>' . "\n";
310
+ $output .= ' <span class="delete-assigned"></span>' . "\n";
311
+ $output .= ' <span class="link">' . "\n";
312
+ $output .= ' <a class="no-link-item" href="#" rel="' . $data . '">' . $title . '</a>' . "\n";
313
+ $output .= ' </span>' . "\n";
314
+ $output .= '</li>' . "\n";
315
+ }
316
+ }
317
+ }
318
+ }
319
+
320
+ }
321
+ $output .= " </ul>\n";
322
+ $output .= " <div class=\"footer-block\"" . (count($assignments) ? " style='display: block;'" : "") . ">\n";
323
+ $output .= " <div class=\"clear-list\"><a href=\"#\">Clear List</a></div>\n";
324
+ $output .= " </div>\n";
325
+ $output .= " <textarea style=\"width: 395px; height: 260px;\" name=\"assigned_override_items\" id=\"assigned_override_items\">" . serialize($assignments) . "</textarea>\n";
326
+ $output .= " </div>\n";
327
+ $output .= " </div>\n";
328
+ $output .= " </div>\n";
329
+ $output .= " </div>";
330
+ $output .= "</div>\n";
331
+ echo $output;
332
+ ?>
333
+ </div>
334
+ <div class="clr"></div>
335
+ </div>
336
+ <div class="clr"></div>
337
+ </form>
338
+ </div>
339
+
340
+ <?php
341
+ gantry_admin_override_css();
342
+ $form->finalize();
343
+ ?>
admin/widgets/Twipsy.js ADDED
@@ -0,0 +1,447 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function (doc, win, udef) {
2
+
3
+ var
4
+ firstEl = function (el) {
5
+ return doc[el] || doc.getElementsByTagName(el)[0];
6
+ },
7
+ maybeCall = function(thing, ctx, args) {
8
+ return typeof thing == 'function' ? thing.apply(ctx, args) : thing;
9
+ },
10
+ transitionEndEventName = null,
11
+
12
+ stylesAreInjected = false,
13
+ injectStyleSheet = function() {
14
+ if (!stylesAreInjected) {
15
+
16
+ stylesAreInjected = true;
17
+
18
+ var stylesText =
19
+ '.twipsy { display: block; position: absolute; visibility: visible; padding: 5px; font-size: 12px; z-index: 11000;}\
20
+ .twipsy.above .twipsy-arrow { bottom: 0; left: 50%; margin-left: -5px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 5px solid #000000;}\
21
+ .twipsy.above-left .twipsy-arrow { bottom: 0; left: 18px; margin-left: -5px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 5px solid #000000;}\
22
+ .twipsy.above-right .twipsy-arrow { bottom: 0; right: 18px; margin-left: -5px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 5px solid #000000;}\
23
+ .twipsy.left .twipsy-arrow { top: 50%; right: 0; margin-top: -5px; border-top: 5px solid transparent; border-bottom: 5px solid transparent; border-left: 5px solid #000000;}\
24
+ .twipsy.below .twipsy-arrow { top: 0; left: 50%; margin-left: -5px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-bottom: 5px solid #000000;}\
25
+ .twipsy.below-left .twipsy-arrow { top: 0; left: 18px; margin-left: -5px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-bottom: 5px solid #000000;}\
26
+ .twipsy.below-right .twipsy-arrow { top: 0; right: 18px; margin-left: -5px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-bottom: 5px solid #000000;}\
27
+ .twipsy.right .twipsy-arrow { top: 50%; left: 0; margin-top: -5px; border-top: 5px solid transparent; border-bottom: 5px solid transparent; border-right: 5px solid #000000;}\
28
+ .twipsy-inner { padding: 3px 8px; background-color: #000000; color: white; text-align: center; max-width: 200px; text-decoration: none; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px;}\
29
+ .twipsy-arrow { position: absolute; width: 0; height: 0;}',
30
+ stylesContainer = new Element("style", {"type":"text/css"}).inject(firstEl("head"), "bottom");
31
+
32
+ stylesContainer.styleSheet
33
+ ? stylesContainer.styleSheet.cssText = stylesText
34
+ : stylesContainer.innerHTML = stylesText;
35
+ }
36
+ };
37
+
38
+ // Determine browser support for CSS transitions
39
+ if (typeOf(Browser.Features.transition) != "boolean") {
40
+ Browser.Features.transition = (function () {
41
+ var styles = (doc.body || doc.documentElement).style;
42
+
43
+ if (styles.transition !== udef || styles.MsTransition !== udef) {
44
+ transitionEndEventName = "TransitionEnd";
45
+ }
46
+ else if (styles.WebkitTransition !== udef) {
47
+ transitionEndEventName = "webkitTransitionEnd";
48
+ }
49
+ else if (styles.MozTransition !== udef) {
50
+ transitionEndEventName = "transitionend";
51
+ }
52
+ else if (styles.OTransition !== udef) {
53
+ transitionEndEventName = "oTransitionEnd";
54
+ }
55
+
56
+ return transitionEndEventName != null;
57
+ })();
58
+ }
59
+
60
+
61
+
62
+ var Twipsy = new Class({
63
+
64
+ /**
65
+ * Construct the twipsy
66
+ *
67
+ * @param element Element
68
+ * @param options object
69
+ */
70
+ initialize:function (element, options) {
71
+ this.options = Object.merge({}, Twipsy.defaults, options);
72
+ this.element = doc.id(element);
73
+ this.enabled = true;
74
+ if (options.injectStyles) {
75
+ injectStyleSheet();
76
+ }
77
+ this.fixTitle();
78
+ },
79
+
80
+ /**
81
+ * Display the twipsy
82
+ *
83
+ * @return Twipsy
84
+ */
85
+ show: function() {
86
+ var pos, actualWidth, actualHeight, placement, twipsyElement, position,
87
+ offset, size, twipsySize, leftPosition;
88
+ if (this.hasContent() && this.enabled) {
89
+ twipsyElement = this.setContent().getTip();
90
+
91
+ if (this.options.animate) {
92
+ moofx(twipsyElement).animate({'opacity': 0.8}, {
93
+ duration: '150ms',
94
+ equation: 'ease-in',
95
+ callback: function(){
96
+ this.isShown = true;
97
+ }.bind(this)
98
+ });//.addClass('twipsy-fade');
99
+ }
100
+
101
+ twipsyElement
102
+ .setStyles({top: 0, left: 0, display: 'block'})
103
+ .inject(document.body, 'top');
104
+
105
+ offset = this.element.getPosition();
106
+ size = this.element.getSize();
107
+ pos = {
108
+ left: offset.x,
109
+ top: offset.y,
110
+ width: size.x,
111
+ height: size.y
112
+ };
113
+
114
+ twipsySize = twipsyElement.getSize();
115
+ actualWidth = twipsySize.x;
116
+ actualHeight = twipsySize.y;
117
+
118
+ placement = maybeCall(this.options.placement, this, [twipsyElement, this.element]);
119
+ leftPosition = pos.left - actualWidth - this.options.offset;
120
+
121
+ if (leftPosition < 0 && placement == 'left') placement = 'right';
122
+
123
+ var offsetOpt = {
124
+ x: this.options.offset.x || this.options.offset,
125
+ y: this.options.offset.y || this.options.offset
126
+ }
127
+
128
+ switch (placement) {
129
+ case 'below':
130
+ position = {top: pos.top + pos.height + this.options.offset.y, left: pos.left + pos.width / 2 - actualWidth / 2};
131
+ break;
132
+
133
+ case 'below-left':
134
+ position = {top: pos.top + pos.height + this.options.offset.y, left: pos.left - this.options.offset.x};
135
+ break;
136
+
137
+ case 'below-right':
138
+ position = {top: pos.top + pos.height + this.options.offset.y, left: pos.left + pos.width - actualWidth + this.options.offset.x};
139
+ break;
140
+
141
+ case 'above':
142
+ position = {top: pos.top - actualHeight - this.options.offset.y, left: pos.left + pos.width / 2 - actualWidth / 2};
143
+ break;
144
+
145
+ case 'above-left':
146
+ position = {top: pos.top - actualHeight - this.options.offset.y, left: pos.left - this.options.offset.x};
147
+ break;
148
+
149
+ case 'above-right':
150
+ position = {top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width - actualWidth + this.options.offset};
151
+ break;
152
+
153
+ case 'left':
154
+ position = {top: pos.top + pos.height / 2 - actualHeight / 2, left: leftPosition};
155
+ break;
156
+
157
+ case 'right':
158
+ position = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset};
159
+ break;
160
+ }
161
+
162
+ twipsyElement
163
+ .setStyles(position)
164
+ .addClass(placement);
165
+ }
166
+ return this;
167
+ },
168
+
169
+ /**
170
+ * Remove the twipsy from screen
171
+ *
172
+ * @return Twipsy
173
+ */
174
+ hide: function() {
175
+ var twipsyElement = this.getTip(),
176
+ removeTwipsy = function(){
177
+ this.isShown = false;
178
+ twipsyElement.dispose();
179
+ }.bind(this);
180
+
181
+ if (!this.hasContent()){
182
+ removeTwipsy();
183
+ return this;
184
+ }
185
+
186
+ moofx(twipsyElement).animate({'opacity': 0}, {
187
+ duration: '150ms',
188
+ equation: 'ease-in',
189
+ callback: removeTwipsy
190
+ });
191
+
192
+ return this;
193
+ },
194
+
195
+ /**
196
+ * Set the readable content of the twipsy
197
+ *
198
+ * @return Twipsy
199
+ */
200
+ setContent: function () {
201
+ this.getTip().getElement('.twipsy-inner').set(this.options.html ? 'html' : 'text', this.getTitle());
202
+ return this;
203
+ },
204
+
205
+ /**
206
+ * Test if we have a content to put in the twipsy
207
+ *
208
+ @return boolean
209
+ */
210
+ hasContent: function() {
211
+ return this.getTitle().replace(/\s+/g, "") !== "";
212
+ },
213
+
214
+ /**
215
+ * Get the title string
216
+ *
217
+ * @return String
218
+ */
219
+ getTitle: function() {
220
+ var title,
221
+ e = this.element,
222
+ o = this.options;
223
+
224
+ this.fixTitle();
225
+
226
+ if (typeof o.title == 'string') {
227
+ title = e.getProperty(o.title == 'title' ? 'data-original-title' : o.title);
228
+ }
229
+ else if (typeof o.title == 'function') {
230
+ title = o.title.call(e);
231
+ }
232
+
233
+ title = ('' + title).clean();
234
+ return title || o.fallback;
235
+ },
236
+
237
+ /**
238
+ * Get the twipsy HTML Element, construct it if not yet available
239
+ *
240
+ * @return Element
241
+ */
242
+ getTip: function() {
243
+ if (!this.tip) {
244
+ this.tip = new Element("div.twipsy", {html: this.options.template});
245
+ }
246
+ return this.tip;
247
+ },
248
+
249
+ /**
250
+ * Check if the given element is on screen
251
+ *
252
+ * @return boolean
253
+ */
254
+ validate:function () {
255
+ if (!this.element.parentNode) {
256
+ this.hide();
257
+ this.element = null;
258
+ this.options = null;
259
+ return false;
260
+ }
261
+ return true;
262
+ },
263
+
264
+ /**
265
+ * Set enabled status to true
266
+ *
267
+ * @return Twipsy
268
+ */
269
+ enable: function() {
270
+ this.enabled = true;
271
+ return this;
272
+ },
273
+
274
+ /**
275
+ * Set enabled status to false
276
+ *
277
+ * @return twipsy
278
+ */
279
+ disable: function() {
280
+ this.enabled = false;
281
+ return this;
282
+ },
283
+
284
+ /**
285
+ * Toggle the enabled status
286
+ *
287
+ * @return Twipsy
288
+ */
289
+ toggleEnabled: function() {
290
+ this.enabled = !this.enabled;
291
+ return this;
292
+ },
293
+
294
+ /**
295
+ * Toggle the twipsy
296
+ *
297
+ * @return Twipsy
298
+ */
299
+ toggle: function() {
300
+ this[this.getTip().hasClass('in') ? 'hide' : 'show']();
301
+ return this;
302
+ },
303
+
304
+ /**
305
+ * Fix the title attribute of the trigger element, if not done yet
306
+ *
307
+ * @return Twipsy
308
+ */
309
+ fixTitle:function () {
310
+ var el = this.element;
311
+ if (el.getProperty("title") || !el.getProperty("data-original-title")) {
312
+ el.setProperty('data-original-title', el.getProperty("title") || '').removeProperty('title');
313
+ }
314
+ return this;
315
+ }
316
+ });
317
+
318
+ Twipsy.defaults = {
319
+ placement: "above",
320
+ animate: true,
321
+ delayIn: 0,
322
+ delayOut: 0,
323
+ html: false,
324
+ live: false,
325
+ offset: 0,
326
+ title: 'title',
327
+ trigger: 'hover',
328
+ injectStyles: true,
329
+ fallback: "",
330
+ template: '<div class="twipsy-inner"></div><div class="twipsy-arrow"></div>'
331
+ };
332
+
333
+ Twipsy.rejectAttrOptions = ['title'];
334
+
335
+ Twipsy.elementOptions = function (el, options) {
336
+ var data = {},
337
+ rejects = Twipsy.rejectAttrOptions,
338
+ i = rejects.length;
339
+
340
+ [
341
+ "placement", "animate", "delay-in", "delay-out", "html",
342
+ "offset", "title", "trigger", "template", "inject-styles"
343
+ ].each(function(item) {
344
+ var res = null,lower;
345
+ if (el.dataset) {
346
+ res = el.dataset[item.camelCase()];
347
+ }
348
+ else {
349
+ res = el.getProperty("data-" + item);
350
+ }
351
+ if (res) {
352
+ lower = res.toLowerCase().clean();
353
+ if (lower === "true") res = true;
354
+ else if (lower === "false") res = false;
355
+ else if (/^[0-9]+$/.test(lower)) lower = parseInt(lower, 10);
356
+ data[item.camelCase()] = res;
357
+ }
358
+ });
359
+
360
+ while (i--) {
361
+ delete data[rejects[i]];
362
+ }
363
+
364
+ return Object.merge({}, options, data);
365
+ };
366
+
367
+ Element.implement({
368
+ twipsy:function (options) {
369
+ var twipsy, binder, eventIn, eventOut, name = 'twipsy';
370
+
371
+ if (options === true) {
372
+ return this.retrieve(name);
373
+ }
374
+ else if (typeof options == 'string') {
375
+ twipsy = this.retrieve(name);
376
+ if (twipsy) {
377
+ twipsy[options]();
378
+ }
379
+ return this;
380
+ }
381
+
382
+ options = Object.merge({}, Twipsy.defaults, options);
383
+
384
+ function get(ele) {
385
+ var twipsy = ele.retrieve(name);
386
+
387
+ if (!twipsy) {
388
+ twipsy = new Twipsy(ele, Twipsy.elementOptions(ele, options));
389
+ ele.store(name, twipsy);
390
+ }
391
+
392
+ return twipsy;
393
+ }
394
+
395
+ function enter() {
396
+ var twipsy = get(this);
397
+ twipsy.hoverState = 'in';
398
+
399
+ if (options.delayIn == 0) {
400
+ twipsy.show();
401
+ } else {
402
+ twipsy.fixTitle();
403
+ setTimeout(function () {
404
+ if (twipsy.hoverState == 'in') {
405
+ twipsy.show();
406
+ }
407
+ }, options.delayIn);
408
+ }
409
+ }
410
+
411
+ function leave() {
412
+ var twipsy = get(this);
413
+ twipsy.hoverState = 'out';
414
+ if (options.delayOut == 0) {
415
+ twipsy.hide();
416
+ } else {
417
+ setTimeout(function () {
418
+ if (twipsy.hoverState == 'out') {
419
+ twipsy.hide();
420
+ }
421
+ }, options.delayOut);
422
+ }
423
+ }
424
+
425
+ if (options.trigger != 'manual') {
426
+ eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus';
427
+ eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur';
428
+ get(this);
429
+
430
+ document.id(this).addEvent(eventIn, enter).addEvent(eventOut, leave);
431
+ }
432
+ return this;
433
+ }
434
+ });
435
+
436
+ Elements.implement({
437
+ twipsy:function (options) {
438
+ this.each(function(el) {
439
+ el.twipsy(options);
440
+ });
441
+ return this;
442
+ }
443
+ });
444
+
445
+ win.Twipsy = Twipsy;
446
+
447
+ })(document, self, undefined);
admin/widgets/ajaxbutton/js/ajaxbutton.js ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ ((function(){
3
+
4
+ var AjaxButtons = new Class({
5
+
6
+ Implements: [Options, Events],
7
+ options:{ url: null },
8
+
9
+ initialize: function(options){
10
+ this.setOptions(options);
11
+
12
+ this.request = new Request({url: this.options.url});
13
+
14
+ this.attach();
15
+ },
16
+
17
+ attach: function(){
18
+ var click = document.retrieve('gantry:ajaxbutton', function(event, element){
19
+ this.click.call(this, event, element);
20
+ }.bind(this));
21
+
22
+ document.addEvent('click:relay([data-ajaxbutton])', click);
23
+ },
24
+
25
+ detach: function(){
26
+ var click = document.retrieve('gantry:ajaxbutton');
27
+ document.removeEvent('click:relay([data-ajaxbutton])', click);
28
+ },
29
+
30
+ click: function(event, element){
31
+ if (event) event.preventDefault();
32
+
33
+ var spinner = document.getElement('[data-actions-spinner]');
34
+ if (spinner) spinner.setStyle('display', 'inline-block');
35
+
36
+ var data = JSON.decode(element.get('data-ajaxbutton')),
37
+ params = {
38
+ model: data.model,
39
+ action: data.action,
40
+ gantry_action: data.gantry_action
41
+ },
42
+
43
+ onSuccess = function(response){
44
+ var spinner = document.getElement('[data-actions-spinner]');
45
+ if (spinner) spinner.setStyle('display', 'none');
46
+ growl.alert('Gantry', response, {duration: 6000});
47
+ this.request.removeEvents(events);
48
+ }.bind(this),
49
+
50
+ events = {
51
+ onSuccess: onSuccess
52
+ };
53
+
54
+ this.request.addEvents(events).post(params);
55
+ }
56
+ });
57
+
58
+ window.addEvent('domready', function(){
59
+ (typeof Gantry != 'undefined' ? Gantry : this)['AjaxButtons'] = new AjaxButtons({url: GantryAjaxURL});
60
+ });
61
+
62
+
63
+ })());
admin/widgets/assignments/js/assignments.js CHANGED
@@ -1,7 +1,7 @@
1
  /**
2
- * @version $Id: assignments.js 58644 2012-12-17 22:52:30Z djamil $
3
  * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
 
@@ -15,21 +15,22 @@ Gantry.Assignments = {
15
  Gantry.Assignments.fireUp(); // 0ms
16
  Gantry.Assignments.overlays(); // 500ms
17
  Gantry.Assignments.blocks(); // 117ms
18
- Gantry.Assignments.loadDefaults();
19
  },
20
 
21
 
22
 
23
  overlays: function() {
24
  var divCopy = new Element('div', {'class': 'inherit-overlay'});
25
- var wrappers = $$('.gantry-field').getFirst('.wrapper').filter(function(wrapper) {
26
- if (!wrapper) return false;
 
27
  var input = wrapper.getParent('.gantry-field').getElement('.inherit-checkbox input[type=checkbox]');
28
  if (input) wrapper.store('gantry:inherit_input', input);
29
  else {
30
  var div = divCopy.clone().inject(wrapper, 'top');
31
  var label = wrapper.getParent('.gantry-field').getElement('label');
32
- div.setStyle('height', wrapper.getParent('.gantry-field').getSize().y - 2).setStyle('opacity', Gantry.Assignments.opacity.overlay);
33
  if (label) label.setStyle('opacity', Gantry.Assignments.opacity.label);
34
  }
35
  return input;
@@ -39,27 +40,52 @@ Gantry.Assignments = {
39
  var label = input.getParent('.field-label').getElement('.base-label label');
40
  var div = divCopy.clone().inject(wrapper, 'top');
41
 
42
- var fields = input.getParent('.gantry-field').getElements('div.wrapper input, div.wrapper select'), obj = {};
43
  fields.each(function(field) {
44
  var id = field.get('id'), value = field.get('value');
45
 
46
- if (field.hasClass('toggle')) value = field.getPrevious().get('value');
47
 
48
  if (id) obj[id] = value;
49
  field.store('gantry:override_checkbox', input);
50
  });
51
  input.store('gantry:fields', obj);
52
 
53
- div.setStyle('height', wrapper.getParent('.gantry-field').getSize().y - 2).setStyle('opacity', Gantry.Assignments.opacity.overlay);
 
 
 
 
 
 
54
  input.addEvent('click', function() {
 
 
55
  if (this.get('checked')) {
56
  label.setStyle('opacity', 1);
57
  div.setStyles({'display': 'none', 'visibility': 'hidden'});
58
  Gantry.Assignments.updateBadge('+', this);
59
 
60
  fields.each(function(field) {
61
- if (field.hasClass('toggle-input')) field.fireEvent('set', [field.retrieve('details'), obj[field.id]]);
62
- else field.fireEvent('set', obj[field.id]);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  });
64
  }
65
  else {
@@ -69,30 +95,150 @@ Gantry.Assignments = {
69
 
70
  fields.each(function(field) {
71
  obj[field.id] = field.get('value');
72
- if (field.hasClass('toggle-input')) field.fireEvent('set', [field.retrieve('details'), Gantry.Assignments.defaults.get(field.id)]);
73
- else field.fireEvent('set', Gantry.Assignments.defaults.get(field.id));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  });
75
  }
76
  });
77
  if (input.get('checked')) div.setStyles({'display': 'none', 'visibility': 'hidden'});
78
- else label.setStyles({'display': 'block', 'opacity': Gantry.Assignments.opacity.label});
79
  });
80
  },
81
 
82
  blocks: function() {
83
- Gantry.Assignments.blocks = $$('.assignments-block');
84
  Gantry.Assignments.List = document.id('assigned-list');
85
  Gantry.Assignments.ClearList = document.id('selection-list').getElement('.footer-block a');
86
  Gantry.Assignments.Empty = new Element('li', {'class': 'empty'}).set('text', 'No Item.');
87
- Gantry.Assignments.blocks.each(function(block) {
88
  Gantry.Assignments.manageBlock(block);
89
- });
90
-
91
- /*Gantry.Assignments.blocks.addEvents({
92
- 'mouseenter': function() { if (this.getElements('li[class!=empty][class!=list-type]').length) this.addClass('hover'); },
93
- 'mouseleave': function() { this.removeClass('hover'); }
94
  });*/
95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  if (Gantry.Assignments.ClearList) {
97
  Gantry.Assignments.ClearList.addEvent('click', function(e) {
98
  e.stop();
@@ -108,14 +254,14 @@ Gantry.Assignments = {
108
 
109
  loadDefaults: function() {
110
  Gantry.Assignments.defaultsXHR = new Request({
111
- url: AdminURI,
112
  onSuccess: function(response) {
113
  Gantry.Assignments.defaults = new Hash(JSON.decode(response));
114
  }
115
  }).post({
116
- action: 'gantry_admin',
117
- model: 'overrides',
118
- gantry_action: 'get_base_values'
119
  });
120
  },
121
 
@@ -145,7 +291,7 @@ Gantry.Assignments = {
145
  var labels = this.getParent('div').getElements('.inside label, .select-all');
146
 
147
  if (this.checked || this.retrieve('gantry:in_list')) labels.setStyle('display', 'none');
148
- else labels.setStyle('display', 'block');
149
  });
150
  }
151
 
@@ -173,7 +319,7 @@ Gantry.Assignments = {
173
  },
174
 
175
  updateBadge: function(type, el) {
176
- var panel = document.id(el).getParent('.gantry-panel').className.replace(/[panel|\-|\s|gantry]/g, '').toInt() - 1;
177
  var tab = Gantry.tabs[panel];
178
  if (tab) {
179
  var badgeWrap = tab.getElement('.overrides-involved');
@@ -231,7 +377,7 @@ Gantry.Assignments = {
231
  ref.getParent('.assignments-block').getElements('.inside, .inside li').removeClass('added');
232
  //ref.getParent().getElement('.assignment-checkbox').fireEvent('click');
233
  var labels = ref.getParent('div').getElements('.inside label, .select-all');
234
- labels.setStyle('display', 'block');
235
 
236
  } else {
237
  ref.getParent('li').removeClass('added');
@@ -245,24 +391,24 @@ Gantry.Assignments = {
245
  } else {
246
 
247
  }
248
- //item.store('gantry:in_list', true);
249
  });
250
  },
251
 
252
  addAssigned: function(list, item, title) {
 
253
  item.store('gantry:in_list', true);
254
  item.getParent((title) ? 'h2' : 'li').addClass('added');
255
  if (title) item.getParent('.assignments-block').getElement('.inside').addClass('added');
256
- var deleter = new Element('span', {'class': 'delete-assigned'}), copy;
257
  if (!title) {
258
- copy = new Element('li').adopt(
259
  new Element('span', {'class': 'type'}).set('text', item.getParent('.assignments-block').getElement('h2').className.replace(/\-/g, " ")),
260
  deleter,
261
  new Element('span', {'class': 'link'}).adopt(item.getParent('li').getElement('a').clone())
262
  );
263
  } else {
264
- var titleSpan = item.getParent('h2').getElement('span');
265
- copy = new Element('li', {'class': 'list-type'}).adopt(
266
  new Element('span', {'class': 'type'}).set('text', "Type"),
267
  deleter,
268
  new Element('span', {'class': 'link'}).set('html', '<span class="'+titleSpan.className+'">'+titleSpan.get('text') + '</span>')
@@ -277,9 +423,9 @@ Gantry.Assignments = {
277
  if (title) item.getParent('.assignments-block').getElements('.inside, .inside li').removeClass('added');
278
  if (title) {
279
  var labels = item.getParent('div').getElements('.inside label, .select-all');
280
- labels.setStyle('display', 'block');
281
 
282
- };
283
  if (!list.getChildren().length) {
284
  Gantry.Assignments.Empty.clone().inject(list);
285
  if (list.getNext('.footer-block')) list.getNext('.footer-block').setStyle('display', 'none');
@@ -287,7 +433,7 @@ Gantry.Assignments = {
287
  });
288
  copy.store('gantry:ref_item', item);
289
  if (list.getElement('.empty')) list.getElement('.empty').dispose();
290
- if (list.getNext('.footer-block')) list.getNext('.footer-block').setStyle('display', 'block');
291
  copy.inject(list, 'top');
292
 
293
  if (title) {
@@ -330,15 +476,13 @@ Gantry.Assignments = {
330
  }
331
  if (GantryObjIsEmpty(Assigned[data.archetype])) delete Assigned[data.archetype];
332
 
333
- //if (Assigned[data.archetype][data.type].length == 1 && Assigned[data.archetype][data.type][0] == -1) Assigned[data.archetype][data.type] = true;
334
-
335
  if (!load) document.id('assigned_override_items').set('text', serialize(Assigned));
336
  }
337
  };
338
 
339
  var GantryObjIsEmpty = function(obj) {
340
  for(var i in obj){ return false;}
341
- return true;
342
  };
343
 
344
  window.addEvent('domready', Gantry.Assignments.init);
1
  /**
2
+ * @version $Id: assignments.js 59361 2013-03-13 23:10:27Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
 
15
  Gantry.Assignments.fireUp(); // 0ms
16
  Gantry.Assignments.overlays(); // 500ms
17
  Gantry.Assignments.blocks(); // 117ms
18
+ //Gantry.Assignments.loadDefaults();
19
  },
20
 
21
 
22
 
23
  overlays: function() {
24
  var divCopy = new Element('div', {'class': 'inherit-overlay'});
25
+ var wrappers = document.getElements('.gantry-field .g4-col2-wrap').filter(function(wrapper) {
26
+ if (!wrapper || wrapper.getParent('.assignments-field') || wrapper.getParent('.file-field') || wrapper.getParent('.html-field')) return false;
27
+
28
  var input = wrapper.getParent('.gantry-field').getElement('.inherit-checkbox input[type=checkbox]');
29
  if (input) wrapper.store('gantry:inherit_input', input);
30
  else {
31
  var div = divCopy.clone().inject(wrapper, 'top');
32
  var label = wrapper.getParent('.gantry-field').getElement('label');
33
+ div.setStyle('opacity', Gantry.Assignments.opacity.overlay);
34
  if (label) label.setStyle('opacity', Gantry.Assignments.opacity.label);
35
  }
36
  return input;
40
  var label = input.getParent('.field-label').getElement('.base-label label');
41
  var div = divCopy.clone().inject(wrapper, 'top');
42
 
43
+ var fields = input.getParent('.gantry-field').getElements('div.wrapper input[type!=hidden][name], div.wrapper input[class=toggle-input][name], div.wrapper input[class=layouts-input][name], div.wrapper select[name], div.wrapper input[class=slider][name]'), obj = {};
44
  fields.each(function(field) {
45
  var id = field.get('id'), value = field.get('value');
46
 
47
+ //if (field.hasClass('toggle')) value = field.getPrevious().get('value');
48
 
49
  if (id) obj[id] = value;
50
  field.store('gantry:override_checkbox', input);
51
  });
52
  input.store('gantry:fields', obj);
53
 
54
+ div.setStyle('opacity', Gantry.Assignments.opacity.overlay);
55
+ if (label) label.addEvent('click', function(e){
56
+ e.preventDefault();
57
+
58
+ input.set('checked', (input.get('checked') ? null : 'checked')).fireEvent('click');
59
+ });
60
+
61
  input.addEvent('click', function() {
62
+ var value, cls;
63
+
64
  if (this.get('checked')) {
65
  label.setStyle('opacity', 1);
66
  div.setStyles({'display': 'none', 'visibility': 'hidden'});
67
  Gantry.Assignments.updateBadge('+', this);
68
 
69
  fields.each(function(field) {
70
+ value = obj[field.id];
71
+ cls = field.get('class');
72
+ field.set('value', value);
73
+
74
+ field.fireEvent('change');
75
+
76
+ if (cls.contains('picker-input')) {
77
+ document.getElement('[data-moorainbow-trigger=' + field.id + '] .overlay').setStyle('background-color', value);
78
+ } else if (cls.contains('background-picker')){
79
+ field.fireEvent('keyup', value);
80
+ } else if (cls.contains('slider') || cls.contains('layouts-input')) {
81
+ var slider = window.sliders[field.id];
82
+ slider.hiddenEl.fireEvent('set', value);
83
+ } else if (cls.contains('toggle')) {
84
+ field.set('value', value);
85
+ field.getParent('.toggle').removeClass('toggle-off').removeClass('toggle-on').addClass(value == '1' ? 'toggle-on' : 'toggle-off');
86
+ } else if (field.get('tag') == 'select'){
87
+ if (typeof jQuery != 'undefined') jQuery("#" + field.id).trigger("liszt:updated");
88
+ }
89
  });
90
  }
91
  else {
95
 
96
  fields.each(function(field) {
97
  obj[field.id] = field.get('value');
98
+ cls = field.get('class');
99
+ value = Gantry.defaults.get(field.id);
100
+ field.set('value', value);
101
+ field.fireEvent('change');
102
+
103
+ if (cls.contains('picker-input')) {
104
+ document.getElement('[data-moorainbow-trigger=' + field.id + '] .overlay').setStyle('background-color', value);
105
+ } else if (cls.contains('background-picker')){
106
+ field.fireEvent('keyup', value);
107
+ } else if (cls.contains('slider') || cls.contains('layouts-input')) {
108
+ var slider = window.sliders[field.id];
109
+ slider.hiddenEl.fireEvent('set', value);
110
+ } else if (cls.contains('toggle')) {
111
+ field.set('value', value);
112
+ field.getParent('.toggle').removeClass('toggle-off').removeClass('toggle-on').addClass(value == '1' ? 'toggle-on' : 'toggle-off');
113
+ //var field = (GantryParamsPrefix + key.replace(/-/, '_')).replace("-", '');
114
+ //field = document.id(field);
115
+ //field.getParent('.toggle-container').fireEvent('mouseenter');
116
+ //field.fireEvent('set', [field.retrieve('details'), value.toInt()]);
117
+ //field.fireEvent('onChange', value.toInt());
118
+ } else if (field.get('tag') == 'select'){
119
+ if (typeof jQuery != 'undefined') jQuery("#" + field.id).trigger("liszt:updated");
120
+ }
121
  });
122
  }
123
  });
124
  if (input.get('checked')) div.setStyles({'display': 'none', 'visibility': 'hidden'});
125
+ else if (label) label.setStyles({'display': 'block', 'opacity': Gantry.Assignments.opacity.label});
126
  });
127
  },
128
 
129
  blocks: function() {
130
+ //Gantry.Assignments.blocks = $$('.assignments-block');
131
  Gantry.Assignments.List = document.id('assigned-list');
132
  Gantry.Assignments.ClearList = document.id('selection-list').getElement('.footer-block a');
133
  Gantry.Assignments.Empty = new Element('li', {'class': 'empty'}).set('text', 'No Item.');
134
+ /*Gantry.Assignments.blocks.each(function(block) {
135
  Gantry.Assignments.manageBlock(block);
 
 
 
 
 
136
  });*/
137
 
138
+ document.addEvents({
139
+ 'click:relay(.assignment-search-clear)': function(e, element){
140
+ var parent = element.getParent(),
141
+ input = parent.getElement('input');
142
+
143
+ input.set('value', '');
144
+
145
+ if (parent.hasClass('assignment-search')) document.fireEvent('keyup:relay(.assignments-block .assignment-search input)', {target: input});
146
+ else document.fireEvent('keyup:relay(.assignments-search input)', {target: input});
147
+
148
+ element.setStyle('display', 'none');
149
+ },
150
+ 'click:relay(.assignments-block a.no-link-item)': function(e, element){ e.stop(); },
151
+ 'click:relay(.assignments-block .select-all)': function(e, element){
152
+ e.preventDefault();
153
+
154
+ var checks = element.getParent('.assignments-block').getElements('.inside ul .assignment-checkbox'),
155
+ values = checks.get('checked');
156
+
157
+ if (!values.contains(true)) checks.set('checked', 'checked');
158
+ else if (!values.contains(false)) checks.set('checked', null);
159
+ else {
160
+ for (var i = values.length - 1; i >= 0; i--) {
161
+ if (!values[i]) checks[i].set('checked', checks[i].get('checked') ? null : 'checked');
162
+ }
163
+ }
164
+ },
165
+ 'click:relay(.assignments-block .add-to-assigned)': function(e, element){
166
+ var list = Gantry.Assignments.List,
167
+ parent = element.getParent('.assignments-block'),
168
+ title = parent.getElement('h2 .assignment-checkbox');
169
+
170
+ if (!list) return true;
171
+
172
+ if (title && title.get('checked') && !title.retrieve('gantry:in_list', false)){
173
+ title.set('checked', title.get('checked') ? null : 'checked');
174
+ Gantry.Assignments.addAssigned(list, title, true);
175
+ } else {
176
+ var checks = parent.getElements('.inside ul .assignment-checkbox:checked');
177
+
178
+ checks = checks.filter(function(input){
179
+ input.set('checked', input.get('checked') ? null : 'checked');
180
+ return !input.retrieve('gantry:in_list', false);
181
+ }, this).reverse();
182
+
183
+ checks.forEach(function(item){
184
+ if (item.getParent('label').getStyle('display') != 'none') Gantry.Assignments.addAssigned(list, item);
185
+ });
186
+ }
187
+ },
188
+ 'click:relay(.assignments-block h2 .assignment-checkbox)': function(e, element){
189
+ var labels = element.getParent('.assignments-block').getElements('.inside label, .select-all');
190
+
191
+ if (element.get('checked') || element.retrieve('gantry:in_list', false)) labels.setStyle('display', 'none');
192
+ else labels.setStyle('display', 'inline-block');
193
+ },
194
+ 'keydown:relay(.assignments-block .assignment-search input)':function(e, element){
195
+ element = element || e.target;
196
+ var globalFilter = document.getElement('.assignments-search input');
197
+
198
+ if (globalFilter.get('value')){
199
+ globalFilter.set('value', null);
200
+ document.fireEvent('keyup:relay(.assignments-search input)', {target: globalFilter});
201
+ }
202
+ },
203
+ 'keydown:relay(.assignments-search input)':function(e, element){
204
+ element = element || e.target;
205
+ document.getElements('.assignment-search input').set('value', null);
206
+ },
207
+ 'keyup:relay(.assignments-block .assignment-search input)':function(e, element){
208
+ element = element || e.target;
209
+ var parent = element.getParent('.assignments-block'),
210
+ value = element.get('value'),
211
+ items = parent.getElements('.inside li'),
212
+ regexp = new RegExp(value, 'i'),
213
+ title, match;
214
+
215
+ element.getParent('.assignments-search, .assignment-search').getElement('.assignment-search-clear').setStyle('display', (value) ? 'block' : 'none');
216
+
217
+ items.forEach(function(item){
218
+ title = item.getElement('a').get('title') || item.get('text').trim().clean();
219
+ match = title.match(regexp);
220
+ item.getElements('> label, > a').setStyle('display', match ? 'inline-block' : 'none');
221
+ if (!match) item.getElement('input[type=checkbox]').set('checked', null);
222
+ }, this);
223
+ },
224
+ 'keyup:relay(.assignments-search input)':function(e, element){
225
+ element = element || e.target;
226
+ var value = element.get('value'),
227
+ items = document.getElements('.assignments-block .inside li'),
228
+ regexp = new RegExp(value, 'i'),
229
+ title, match;
230
+
231
+ element.getParent('.assignments-search, .assignment-search').getElement('.assignment-search-clear').setStyle('display', (value) ? 'block' : 'none');
232
+
233
+ items.forEach(function(item){
234
+ title = item.getElement('a').get('title') || item.get('text').trim().clean();
235
+ match = title.match(regexp);
236
+ item.getElements('> label, > a').setStyle('display', match ? 'inline-block' : 'none');
237
+ if (!match) item.getElement('input[type=checkbox]').set('checked', null);
238
+ }, this);
239
+ }
240
+ });
241
+
242
  if (Gantry.Assignments.ClearList) {
243
  Gantry.Assignments.ClearList.addEvent('click', function(e) {
244
  e.stop();
254
 
255
  loadDefaults: function() {
256
  Gantry.Assignments.defaultsXHR = new Request({
257
+ url: GantryAjaxURL,
258
  onSuccess: function(response) {
259
  Gantry.Assignments.defaults = new Hash(JSON.decode(response));
260
  }
261
  }).post({
262
+ action: 'gantry_admin',
263
+ model: 'overrides',
264
+ gantry_action: 'get_base_values'
265
  });
266
  },
267
 
291
  var labels = this.getParent('div').getElements('.inside label, .select-all');
292
 
293
  if (this.checked || this.retrieve('gantry:in_list')) labels.setStyle('display', 'none');
294
+ else labels.setStyle('display', 'inline-block');
295
  });
296
  }
297
 
319
  },
320
 
321
  updateBadge: function(type, el) {
322
+ var panel = document.id(el).getParent('.g4-panel').className.replace(/(panel|\-|\s|g4)/g, '').toInt() - 1;
323
  var tab = Gantry.tabs[panel];
324
  if (tab) {
325
  var badgeWrap = tab.getElement('.overrides-involved');
377
  ref.getParent('.assignments-block').getElements('.inside, .inside li').removeClass('added');
378
  //ref.getParent().getElement('.assignment-checkbox').fireEvent('click');
379
  var labels = ref.getParent('div').getElements('.inside label, .select-all');
380
+ labels.setStyle('display', 'inline-block');
381
 
382
  } else {
383
  ref.getParent('li').removeClass('added');
391
  } else {
392
 
393
  }
 
394
  });
395
  },
396
 
397
  addAssigned: function(list, item, title) {
398
+ var titleSpan;
399
  item.store('gantry:in_list', true);
400
  item.getParent((title) ? 'h2' : 'li').addClass('added');
401
  if (title) item.getParent('.assignments-block').getElement('.inside').addClass('added');
402
+ var deleter = new Element('span', {'class': 'delete-assigned', html: '&times;'}), copy;
403
  if (!title) {
404
+ copy = new Element('li.clearfix').adopt(
405
  new Element('span', {'class': 'type'}).set('text', item.getParent('.assignments-block').getElement('h2').className.replace(/\-/g, " ")),
406
  deleter,
407
  new Element('span', {'class': 'link'}).adopt(item.getParent('li').getElement('a').clone())
408
  );
409
  } else {
410
+ titleSpan = item.getParent('h2').getElement('span');
411
+ copy = new Element('li', {'class': 'list-type clearfix'}).adopt(
412
  new Element('span', {'class': 'type'}).set('text', "Type"),
413
  deleter,
414
  new Element('span', {'class': 'link'}).set('html', '<span class="'+titleSpan.className+'">'+titleSpan.get('text') + '</span>')
423
  if (title) item.getParent('.assignments-block').getElements('.inside, .inside li').removeClass('added');
424
  if (title) {
425
  var labels = item.getParent('div').getElements('.inside label, .select-all');
426
+ labels.setStyle('display', 'inline-block');
427
 
428
+ }
429
  if (!list.getChildren().length) {
430
  Gantry.Assignments.Empty.clone().inject(list);
431
  if (list.getNext('.footer-block')) list.getNext('.footer-block').setStyle('display', 'none');
433
  });
434
  copy.store('gantry:ref_item', item);
435
  if (list.getElement('.empty')) list.getElement('.empty').dispose();
436
+ if (list.getNext('.footer-block')) list.getNext('.footer-block').setStyle('display', 'inline-block');
437
  copy.inject(list, 'top');
438
 
439
  if (title) {
476
  }
477
  if (GantryObjIsEmpty(Assigned[data.archetype])) delete Assigned[data.archetype];
478
 
 
 
479
  if (!load) document.id('assigned_override_items').set('text', serialize(Assigned));
480
  }
481
  };
482
 
483
  var GantryObjIsEmpty = function(obj) {
484
  for(var i in obj){ return false;}
485
+ return true;
486
  };
487
 
488
  window.addEvent('domready', Gantry.Assignments.init);
admin/widgets/colorchooser/css/mooRainbow-2.0.css ADDED
@@ -0,0 +1,220 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @version 4.0.0 March 19, 2013
3
+ * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
+ */
7
+
8
+
9
+ .moor-layout {
10
+ position:absolute;
11
+ z-index:500;
12
+ width:285px;
13
+ height:153px;
14
+ -webkit-border-radius:4px;
15
+ -moz-border-radius:4px;
16
+ border-radius:4px;
17
+ background-color:rgba(77,77,77,0.18);
18
+ background-image:-moz-linear-gradient(top,rgba(95,95,95,0.9),rgba(51,51,51,0.9));
19
+ background-image:-ms-linear-gradient(top,rgba(95,95,95,0.9),rgba(51,51,51,0.9));
20
+ background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(95,95,95,0.9)),to(rgba(51,51,51,0.9)));
21
+ background-image:-webkit-linear-gradient(top,rgba(95,95,95,0.9),rgba(51,51,51,0.9));
22
+ background-image:-o-linear-gradient(top,rgba(95,95,95,0.9),rgba(51,51,51,0.9));
23
+ background-image:linear-gradient(top,rgba(95,95,95,0.9),rgba(51,51,51,0.9));
24
+ background-repeat:repeat-x;
25
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='rgba(95,95,95,0.9)', endColorstr='rgba(51,51,51,0.9)', GradientType=0);
26
+ -webkit-box-shadow:0 0 20px rgba(0,0,0,0.5);
27
+ -moz-box-shadow:0 0 20px rgba(0,0,0,0.5);
28
+ box-shadow:0 0 20px rgba(0,0,0,0.5);
29
+ top:100px;
30
+ left:200px;
31
+ font-size: 0.82em;
32
+ visibility:hidden;
33
+ }
34
+ .moor-layout .arrow {
35
+ top:50%;
36
+ left:0;
37
+ margin-top:-6px;
38
+ border-top:6px solid transparent;
39
+ border-bottom:6px solid transparent;
40
+ border-right:6px solid rgba(95,95,95,0.9);
41
+ position:absolute;
42
+ left:-6px;
43
+ top:15px;
44
+ }
45
+ .moor-layout .moor-overlay, .moor-layout .moor-slider, .moor-layout .moor-inputs, .moor-layout .moor-colorsbox {
46
+ position:absolute;
47
+ top:10px;
48
+ }
49
+ .moor-layout .moor-overlay {
50
+ width:132px;
51
+ height:132px;
52
+ left:10px;
53
+ border:1px solid #444444;
54
+ overflow:hidden;
55
+ }
56
+ .moor-layout .moor-overlay .moor-overlay-white, .moor-layout .moor-overlay .moor-overlay-black {
57
+ position:absolute;
58
+ top:0;
59
+ left:0;
60
+ width:132px;
61
+ height:132px;
62
+ -webkit-background-size:100% 100%;
63
+ -moz-background-size:100% 100%;
64
+ -o-background-size:100% 100%;
65
+ background-size:100% 100%;
66
+ }
67
+ .moor-layout .moor-overlay .moor-overlay-white { background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKSSURBVHja7NQ7DoAgEEDB1fufef20GgWC0DiTEAUTC5S3bIeIOEcUrqW1633N/Gmt5tnMkR3Pc/Ba73zEO3PCPnzxbWaO1v+85SzVntHbdQ3gtwQABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEAAbAFIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgC82QUYAJKU6/4c8sBCAAAAAElFTkSuQmCC); }
68
+ .moor-layout .moor-overlay .moor-overlay-black { background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKxSURBVHja7NoxCoRAFAXBcfD+ZzYxEkxEDXqqYC9g0Dy/OwawrO38AQuaHgGsa7cAwAIALADAAgAsAMACACwAQAAArwCABQBYAIAFAAgA4BUAsAAAAQC8AgAWACAAgAAAbgCABQAIACAAgBsAYAEAAgAIACAAwDOOgGABAAIACAAgAIAAAAIA5PgMCBYAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAcBeA6TGABQAIACAAgAAAAgAIACAAQCYA/gcAFgAgAIAAAAIACAAgAEAuAD4DggUACAAgAIAAAPEAOAKCBQAIACAAgAAA8QA4AoIFAAgAIACAAADxADgCggUACAAgAIAAAPEAOAKCBQAIACAAgBsAYAEAAgAIAOAGAFgAgAAAAgC4AQAWACAAgAAAbgCABQAIACAAgBsAYAEAAgAIACAAwAcBcAQECwAQAEAAADcAwAIABAAQAMANALAAAAEABABwAwAsAEAAAAEA3AAACwAQAEAAAAEAfg6AIyBYAIAAAAIACAAQD4AjIFgAgAAAAgAIABAPgCMgWACAAAACAAgAEA+AIyBYAIAAAAIACAAgAIAAALkA+AwIFgAgAIAAAAIACAAgAIAAAJ0A+B8AWACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIADA1fQIwAIABAAQAEAAAAEABACo8RkQLABAAAABAAQAiHMEBAsAEABAAAA3AMACAAQAEADADQCwAAABALwCABYAIACAVwDAAgAsAMACAAQA8AoAWACABQBYAIAFAFgAgAUAvOkQYABehQTISkChWgAAAABJRU5ErkJggg==); }
69
+ .moor-layout .moor-overlay .moor-overlay-cursor {
70
+ width:12px;
71
+ height:12px;
72
+ position:absolute;
73
+ left:-6px;
74
+ top:-6px;
75
+ background-image:url(data:image/gif;base64,R0lGODlhDAAMAJECAOzp2AAAAP///wAAACH5BAEAAAIALAAAAAAMAAwAAAIhlINpG+AfGFgLxEapxdns2QlfKCJgN4aWwGnR8UBZohgFADs=);
76
+ }
77
+ .moor-layout .moor-slider {
78
+ left:152px;
79
+ border:1px solid #444444;
80
+ }
81
+ .moor-layout .moor-slider .moor-slider-colors {
82
+ background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAEACAIAAADeB9oaAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHgSURBVHja7Nshs7JAFAZgmGFIJBKJRCKRSCaTyWQyme6vuslkMplMJpOJRCKRSCTCHe/4+RuecOcbZ7c/7eycs+/uxq8IV/yKUpYZy5xlwbJkWbGsWTYsW5YrlmuWG5ZbljuWe5YHk0mk+zPIz5LvGvpmeWR5YnlmeWF5ZXljeWf5YNmx7FkOLEeWE8uZ5cLyF+UzwvktXljOLCeWI8uBZc+yU5n86DQeZJBBBhnk38i45e7QsKxZVixLlgXLnGXGMmUZuUxZZixzlgXLkmXFsmbZsGxZrliuWW5YblnuWO5ZHlh+6RyvUU2Q/6WMo2+uoSPLE8szywvLK8sbyzvLB8uOZc9yYDmynFjOLBeWT5avJ8uF5cxyYjmyHFj2LDuWD5Z3ljeWV5YXlmeWJ5ZHlnh3lUTRT5CfI9+V8MXywHLPcsdyy3LDcs1yxbJl2bCsWVYsS5YFy5xlxjJlqeeylGXGMmdZsCxZVixrlg1LDdCiRI/2QQYZZJBB/pGMO+4OPcuB5chyYjmzXFg+WWqA9pYLy5nlxHJkObDsWXYsHyzvLG8srywvLM8sTyyPLDFAixKNaoL8MBlrgPaWe5Y7lluWG5ZrliuWLcuGZc2yYlmyLFjmLDOW/D6Bf3H+E2AARvYrqdGIYbsAAAAASUVORK5CYII=);
83
+ -webkit-background-size:100% 100%;
84
+ -moz-background-size:100% 100%;
85
+ -o-background-size:100% 100%;
86
+ background-size:100% 100%;
87
+ width:12px;
88
+ height:132px;
89
+ }
90
+ .moor-layout .moor-slider .moor-slider-cursor {
91
+ width:26px;
92
+ height:8px;
93
+ position:absolute;
94
+ top:-4px;
95
+ left:-7px;
96
+ background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAIBAMAAAAVevJtAAAAA3NCSVQICAjb4U/gAAAAIVBMVEVAQEBiYmKZmZl9fX1LS0uTk5NycnKOjo5QUFBsbGyDg4ONAQ7mAAAAC3RSTlMA/////////////312fdUAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzOY1kYDAAAAO0lEQVQImWNgQAFsDnAmhwADUyCMw2I0gYFJaQWUM0kJxFNvgGhRAvFUJ0BVdoF4KXBTxCcwcCCZ3wAAmVoIuWQEk20AAAAASUVORK5CYII=);
97
+ }
98
+ .moor-layout .moor-colorsbox {
99
+ left:174px;
100
+ border:1px solid #444444;
101
+ -webkit-border-radius:3px;
102
+ -moz-border-radius:3px;
103
+ border-radius:3px;
104
+ height: 23px;
105
+ }
106
+ .moor-layout .moor-colorsbox div {
107
+ width:32px;
108
+ height:23px;
109
+ display:inline-block;
110
+ }
111
+ .moor-layout .moor-colorsbox div:first-child {
112
+ -webkit-border-radius:2px 0 0 2px;
113
+ -moz-border-radius:2px 0 0 2px;
114
+ border-radius:2px 0 0 2px;
115
+ }
116
+ .moor-layout .moor-colorsbox div:last-child {
117
+ -webkit-border-radius:0 2px 2px 0;
118
+ -moz-border-radius:0 2px 2px 0;
119
+ border-radius:0 2px 2px 0;
120
+ }
121
+ .moor-layout .moor-colorsbox div.moor-colorsbox-selected { cursor:pointer; }
122
+ .moor-layout .moor-inputs {
123
+ left:174px;
124
+ top:44px;
125
+ }
126
+ .moor-layout .moor-inputs .moor-inputs-block {
127
+ margin:2px 0;
128
+ display:none;
129
+ }
130
+ .moor-layout .moor-inputs .moor-inputs-block.moor-inputs-block-active { display:block; }
131
+ .moor-layout .moor-inputs .moor-inputs-block span, .moor-layout .moor-inputs .moor-inputs-block input {
132
+ display:inline-block;
133
+ color:#fefefe;
134
+ text-shadow:0 1px 0 #000000;
135
+ }
136
+ .moor-layout .moor-inputs .moor-inputs-block span { min-width:10px; }
137
+ .moor-layout .moor-inputs .moor-inputs-block input {
138
+ width:30px;
139
+ padding:2px;
140
+ background:#777777;
141
+ border:1px solid #444444;
142
+ margin:0 4px;
143
+ -webkit-border-radius:2px;
144
+ -moz-border-radius:2px;
145
+ border-radius:2px;
146
+ font-size: 1em;
147
+ line-height: 1em;
148
+ }
149
+ .moor-layout .moor-inputs .moor-inputs-block.moor-inputs-hex { display:block; }
150
+ .moor-layout .moor-inputs .moor-inputs-block.moor-inputs-hex input {
151
+ width:60px;
152
+ display:block;
153
+ margin:0;
154
+ }
155
+ .moor-layout .moor-buttons {
156
+ position:absolute;
157
+ bottom:6px;
158
+ right:0;
159
+ }
160
+ .moor-layout .moor-buttons .moor-button {
161
+ background:#444444;
162
+ color:#bbbbbb;
163
+ padding:4px 6px;
164
+ margin-top:4px;
165
+ min-width:25px;
166
+ cursor:pointer;
167
+ -webkit-border-radius:4px 0 0 4px;
168
+ -moz-border-radius:4px 0 0 4px;
169
+ border-radius:4px 0 0 4px;
170
+ -webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.1);
171
+ -moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.1);
172
+ box-shadow:0 1px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.1);
173
+ }
174
+ .moor-layout .moor-buttons .moor-button:hover, .moor-layout .moor-buttons .moor-button.moor-button-active {
175
+ -webkit-box-shadow:0 0 8px rgba(0, 0, 0, 0.3) inset, 0 1px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.1);
176
+ -moz-box-shadow:0 0 8px rgba(0, 0, 0, 0.3) inset, 0 1px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.1);
177
+ box-shadow:0 0 8px rgba(0, 0, 0, 0.3) inset, 0 1px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.1);
178
+ background:#393939;
179
+ color:#ffffff;
180
+ }
181
+ .moor-layout .moor-buttons .moor-button.moor-button-close {
182
+ font-size:20px;
183
+ text-align:center;
184
+ color:#ffffff;
185
+ }
186
+ .moor-layout .moor-buttons .moor-button.moor-button-transparent {
187
+ height:18px;
188
+ background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMBAMAAACkW0HUAAAAA3NCSVQICAjb4U/gAAAAJ1BMVEUzMzP32dnMAADbSUn////RFxfgYmLQFBTeWFj539/OCwv54+PeUlJloNt1AAAACXBIWXMAAAsSAAALEgHS3X78AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABV0RVh0Q3JlYXRpb24gVGltZQA3LzIzLzEwrabRCwAAAElJREFUCJljYIAAFhcXR9MFIEqsKABIObaqGwApiaIwAQYWz1T1RgcGls1FESIODIzp6okuDgwcQcVTgBS7arYLkGKqEAFREAAAc9wPIewa6b4AAAAASUVORK5CYII=);
189
+ background-repeat:no-repeat;
190
+ background-position:50% 50%;
191
+ }
192
+ .moor-layout .moor-buttons .moor-button.moor-button-rgb { margin-top:30px; }
193
+ .moor-layout .moor-buttons .moor-button.moor-button-active { color:#ff9c48; }
194
+ input.picker-input {
195
+ float:left;
196
+ margin-top:0px;
197
+ margin-right:5px;
198
+ }
199
+ div.picker {
200
+ width:30px;
201
+ height:31px;
202
+ float:left;
203
+ }
204
+ div.picker .overlay {
205
+ width:30px;
206
+ height:31px;
207
+ background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAfCAYAAADwbH0HAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAVdEVYdENyZWF0aW9uIFRpbWUANy8xNC8xMpnf8k4AAAFkSURBVEiJ7ddPagIxFMfxb7ROopuMLmRw5w16A3uEXqYUeqoeoT2BO7fuHN1MoqBOZsDXhRVK6R8pE6HgbxVCyIeXQHhRzjkpy5KiKKiqiphJkoTBYIAxBpXnuaxWK3q9HtZaOp0OSqnG0bquKYqC/X5PlmWo2Wwm7Xab4XDogfs0TV8bVwHv/UREnpfLZQrQCiFgrSUmCpCm6atS6r7f7xNCoAXHs4+JfsSNMQBHOMad/pbWxcUrfIWv8BX+t/BNE5uc+9Y7525P44tV/I6+XBT+gNqLwV+h0eHv0KjwT2g0+DP6+PAUH/6t0lNuAEQkCvpVpaeo6XQqWZZhjLn7a6eplDq70hACeZ7T0lqzXq8RkWfv/eQv8Lno+1q01ijvvcznc7rdLtba42TD7e7hcKCua7bbLZvNhvF4jNrtdlJVFYvFghBCo+DnaK0ZjUYkSYJyzonW+viDi9zYiwhlWRJC4A3cB6lbL5JlLQAAAABJRU5ErkJggg==);
208
+ }
209
+ div.picker .overlay div { background:none; }
210
+ div.picker .overlay-transparent {
211
+ background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAXBAMAAAASBMmTAAAAA3NCSVQICAjb4U/gAAAAHlBMVEXMAAD////0x8fTISHPERHVLy/1z8/UKSnRGBj31dUqmcWAAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABV0RVh0Q3JlYXRpb24gVGltZQA3LzIzLzEwrabRCwAAAINJREFUGJVF0DEOgzAMBdAv0Yg1zsAeIZQV9SRRB6RuRW12lBNEDJygB64L/ODtDfb/MoTTFaAi4YIrKBUB5kW4BZslerSe6CKyEB80nnARDyF63GZCT01ChP/GCW2VhUiaQWirVYgBZibciE2IN4wntNVdiO+RcSDu4Sf2VhXP+hL7Az+QG3AZBSUrAAAAAElFTkSuQmCC);
212
+ background-position:50% 50%;
213
+ background-repeat:no-repeat;
214
+ }
215
+ div.picker .overlay-transparent div {
216
+ background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAfCAYAAADwbH0HAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAVdEVYdENyZWF0aW9uIFRpbWUANy8xNC8xMpnf8k4AAAFkSURBVEiJ7ddPagIxFMfxb7ROopuMLmRw5w16A3uEXqYUeqoeoT2BO7fuHN1MoqBOZsDXhRVK6R8pE6HgbxVCyIeXQHhRzjkpy5KiKKiqiphJkoTBYIAxBpXnuaxWK3q9HtZaOp0OSqnG0bquKYqC/X5PlmWo2Wwm7Xab4XDogfs0TV8bVwHv/UREnpfLZQrQCiFgrSUmCpCm6atS6r7f7xNCoAXHs4+JfsSNMQBHOMad/pbWxcUrfIWv8BX+t/BNE5uc+9Y7525P44tV/I6+XBT+gNqLwV+h0eHv0KjwT2g0+DP6+PAUH/6t0lNuAEQkCvpVpaeo6XQqWZZhjLn7a6eplDq70hACeZ7T0lqzXq8RkWfv/eQv8Lno+1q01ijvvcznc7rdLtba42TD7e7hcKCua7bbLZvNhvF4jNrtdlJVFYvFghBCo+DnaK0ZjUYkSYJyzonW+viDi9zYiwhlWRJC4A3cB6lbL5JlLQAAAABJRU5ErkJggg==);
217
+ background-repeat:no-repeat;
218
+ width:30px;
219
+ height:31px;
220
+ }
admin/widgets/colorchooser/css/mooRainbow-2.0.less ADDED
@@ -0,0 +1,225 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ .moor-layout {
4
+ position: absolute;
5
+ z-index: 500;
6
+ width: 285px;
7
+ height: 153px;
8
+ .border-radius(4px);
9
+ #gradient > .vertical(rgba(95, 95, 95, 0.9), rgba(51, 51, 51, 0.9));
10
+ .box-shadow(0 0 20px rgba(0, 0, 0, 0.5));
11
+
12
+ top: 100px;
13
+ left: 200px;
14
+ font-size: 0.82em;
15
+ visibility: hidden;
16
+
17
+ .arrow {
18
+ #CSSArrow > .right(6px, rgba(95, 95, 95, 0.9));
19
+ position: absolute;
20
+ left: -6px;
21
+ top: 15px;
22
+ }
23
+
24
+ .moor-overlay, .moor-slider, .moor-inputs, .moor-colorsbox {
25
+ position: absolute;
26
+ top: 10px;
27
+ }
28
+
29
+ .moor-overlay {
30
+ .square(132px);
31
+ left: 10px;
32
+ border: 1px solid #444;
33
+ overflow: hidden;
34
+
35
+ .moor-overlay-white, .moor-overlay-black {
36
+ position: absolute;
37
+ top: 0;
38
+ left: 0;
39
+ .square(132px);
40
+ .background-size(100% 100%);
41
+ }
42
+
43
+ .moor-overlay-white {
44
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKSSURBVHja7NQ7DoAgEEDB1fufef20GgWC0DiTEAUTC5S3bIeIOEcUrqW1633N/Gmt5tnMkR3Pc/Ba73zEO3PCPnzxbWaO1v+85SzVntHbdQ3gtwQABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEAAbAFIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgC82QUYAJKU6/4c8sBCAAAAAElFTkSuQmCC);
45
+ }
46
+
47
+ .moor-overlay-black {
48
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKxSURBVHja7NoxCoRAFAXBcfD+ZzYxEkxEDXqqYC9g0Dy/OwawrO38AQuaHgGsa7cAwAIALADAAgAsAMACACwAQAAArwCABQBYAIAFAAgA4BUAsAAAAQC8AgAWACAAgAAAbgCABQAIACAAgBsAYAEAAgAIACAAwDOOgGABAAIACAAgAIAAAAIA5PgMCBYAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAcBeA6TGABQAIACAAgAAAAgAIACAAQCYA/gcAFgAgAIAAAAIACAAgAEAuAD4DggUACAAgAIAAAPEAOAKCBQAIACAAgAAA8QA4AoIFAAgAIACAAADxADgCggUACAAgAIAAAPEAOAKCBQAIACAAgBsAYAEAAgAIAOAGAFgAgAAAAgC4AQAWACAAgAAAbgCABQAIACAAgBsAYAEAAgAIACAAwAcBcAQECwAQAEAAADcAwAIABAAQAMANALAAAAEABABwAwAsAEAAAAEA3AAACwAQAEAAAAEAfg6AIyBYAIAAAAIACAAQD4AjIFgAgAAAAgAIABAPgCMgWACAAAACAAgAEA+AIyBYAIAAAAIACAAgAIAAALkA+AwIFgAgAIAAAAIACAAgAIAAAJ0A+B8AWACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIADA1fQIwAIABAAQAEAAAAEABACo8RkQLABAAAABAAQAiHMEBAsAEABAAAA3AMACAAQAEADADQCwAAABALwCABYAIACAVwDAAgAsAMACAAQA8AoAWACABQBYAIAFAFgAgAUAvOkQYABehQTISkChWgAAAABJRU5ErkJggg==);
49
+ }
50
+
51
+ .moor-overlay-cursor {
52
+ .square(12px);
53
+ position: absolute;
54
+ left: -6px;
55
+ top: -6px;
56
+ background-image: url(data:image/gif;base64,R0lGODlhDAAMAJECAOzp2AAAAP///wAAACH5BAEAAAIALAAAAAAMAAwAAAIhlINpG+AfGFgLxEapxdns2QlfKCJgN4aWwGnR8UBZohgFADs=);
57
+ }
58
+ }
59
+
60
+ .moor-slider {
61
+ left: 152px;
62
+ border: 1px solid #444;
63
+
64
+ .moor-slider-colors {
65
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAEACAIAAADeB9oaAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHgSURBVHja7Nshs7JAFAZgmGFIJBKJRCKRSCaTyWQyme6vuslkMplMJpOJRCKRSCTCHe/4+RuecOcbZ7c/7eycs+/uxq8IV/yKUpYZy5xlwbJkWbGsWTYsW5YrlmuWG5ZbljuWe5YHk0mk+zPIz5LvGvpmeWR5YnlmeWF5ZXljeWf5YNmx7FkOLEeWE8uZ5cLyF+UzwvktXljOLCeWI8uBZc+yU5n86DQeZJBBBhnk38i45e7QsKxZVixLlgXLnGXGMmUZuUxZZixzlgXLkmXFsmbZsGxZrliuWW5YblnuWO5ZHlh+6RyvUU2Q/6WMo2+uoSPLE8szywvLK8sbyzvLB8uOZc9yYDmynFjOLBeWT5avJ8uF5cxyYjmyHFj2LDuWD5Z3ljeWV5YXlmeWJ5ZHlnh3lUTRT5CfI9+V8MXywHLPcsdyy3LDcs1yxbJl2bCsWVYsS5YFy5xlxjJlqeeylGXGMmdZsCxZVixrlg1LDdCiRI/2QQYZZJBB/pGMO+4OPcuB5chyYjmzXFg+WWqA9pYLy5nlxHJkObDsWXYsHyzvLG8srywvLM8sTyyPLDFAixKNaoL8MBlrgPaWe5Y7lluWG5ZrliuWLcuGZc2yYlmyLFjmLDOW/D6Bf3H+E2AARvYrqdGIYbsAAAAASUVORK5CYII=);
66
+ .background-size(100% 100%);
67
+ width: 12px;
68
+ height: 132px;
69
+ }
70
+
71
+ .moor-slider-cursor {
72
+ width: 26px;
73
+ height: 8px;
74
+ position: absolute;
75
+ top: -4px;
76
+ left: -7px;
77
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAIBAMAAAAVevJtAAAAA3NCSVQICAjb4U/gAAAAIVBMVEVAQEBiYmKZmZl9fX1LS0uTk5NycnKOjo5QUFBsbGyDg4ONAQ7mAAAAC3RSTlMA/////////////312fdUAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzOY1kYDAAAAO0lEQVQImWNgQAFsDnAmhwADUyCMw2I0gYFJaQWUM0kJxFNvgGhRAvFUJ0BVdoF4KXBTxCcwcCCZ3wAAmVoIuWQEk20AAAAASUVORK5CYII=);
78
+ }
79
+ }
80
+
81
+ .moor-colorsbox {
82
+ left: 174px;
83
+ border: 1px solid #444;
84
+ .border-radius(3px);
85
+ height: 23px;
86
+
87
+ div {
88
+ width: 32px;
89
+ height: 23px;
90
+ display: inline-block;
91
+
92
+ &:first-child {
93
+ .border-radius(2px 0 0 2px);
94
+ }
95
+
96
+ &:last-child {
97
+ .border-radius(0 2px 2px 0);
98
+ }
99
+
100
+ &.moor-colorsbox-selected {
101
+ cursor: pointer;
102
+ }
103
+ }
104
+ }
105
+
106
+ .moor-inputs {
107
+ left: 174px;
108
+ top: 44px;
109
+
110
+ .moor-inputs-block {
111
+ margin: 2px 0;
112
+ display: none;
113
+
114
+ &.moor-inputs-block-active {
115
+ display: block;
116
+ }
117
+
118
+ span, input {
119
+ display: inline-block;
120
+ color: #fefefe;
121
+ text-shadow: 0 1px 0 #000;
122
+ }
123
+
124
+ span {
125
+ min-width: 10px;
126
+ }
127
+
128
+ input {
129
+ width: 30px;
130
+ padding: 2px;
131
+ background: #777;
132
+ border: 1px solid #444;
133
+ margin: 0 4px;
134
+ .border-radius(2px);
135
+ font-size: 1em;
136
+ line-height: 1em;
137
+ }
138
+
139
+ &.moor-inputs-hex {
140
+ display: block;
141
+
142
+ input {
143
+ width: 60px;
144
+ display: block;
145
+ margin: 0;
146
+ }
147
+ }
148
+ }
149
+ }
150
+
151
+ .moor-buttons {
152
+ position: absolute;
153
+ bottom: 6px;
154
+ right: 0;
155
+
156
+ .moor-button {
157
+ background: #444;
158
+ color: #bbb;
159
+ padding: 4px 6px;
160
+ margin-top: 4px;
161
+ min-width: 25px;
162
+ cursor: pointer;
163
+ .border-radius(4px 0 0 4px);
164
+ .box-shadow(~"0 1px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.1)");
165
+
166
+ &:hover, &.moor-button-active {
167
+ .box-shadow(~"0 0 8px rgba(0, 0, 0, 0.3) inset, 0 1px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.1)");
168
+ background: #393939;
169
+ color: @white;
170
+ }
171
+
172
+ &.moor-button-close {
173
+ font-size: 20px;
174
+ text-align: center;
175
+ color: @white;
176
+ }
177
+
178
+ &.moor-button-transparent {
179
+ height: 18px;
180
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMBAMAAACkW0HUAAAAA3NCSVQICAjb4U/gAAAAJ1BMVEUzMzP32dnMAADbSUn////RFxfgYmLQFBTeWFj539/OCwv54+PeUlJloNt1AAAACXBIWXMAAAsSAAALEgHS3X78AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABV0RVh0Q3JlYXRpb24gVGltZQA3LzIzLzEwrabRCwAAAElJREFUCJljYIAAFhcXR9MFIEqsKABIObaqGwApiaIwAQYWz1T1RgcGls1FESIODIzp6okuDgwcQcVTgBS7arYLkGKqEAFREAAAc9wPIewa6b4AAAAASUVORK5CYII=);
181
+ background-repeat: no-repeat;
182
+ background-position: 50% 50%
183
+ }
184
+
185
+ &.moor-button-rgb {
186
+ margin-top: 30px;
187
+ }
188
+
189
+ &.moor-button-active {
190
+ color: #ff9c48;
191
+ }
192
+ }
193
+ }
194
+ }
195
+
196
+ input.picker-input {
197
+ float: left;
198
+ margin-top: 0px;
199
+ margin-right: 5px;
200
+ }
201
+ div.picker {
202
+ .size(31px, 30px);
203
+ float: left;
204
+
205
+ .overlay {
206
+ .size(31px, 30px);
207
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAfCAYAAADwbH0HAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAVdEVYdENyZWF0aW9uIFRpbWUANy8xNC8xMpnf8k4AAAFkSURBVEiJ7ddPagIxFMfxb7ROopuMLmRw5w16A3uEXqYUeqoeoT2BO7fuHN1MoqBOZsDXhRVK6R8pE6HgbxVCyIeXQHhRzjkpy5KiKKiqiphJkoTBYIAxBpXnuaxWK3q9HtZaOp0OSqnG0bquKYqC/X5PlmWo2Wwm7Xab4XDogfs0TV8bVwHv/UREnpfLZQrQCiFgrSUmCpCm6atS6r7f7xNCoAXHs4+JfsSNMQBHOMad/pbWxcUrfIWv8BX+t/BNE5uc+9Y7525P44tV/I6+XBT+gNqLwV+h0eHv0KjwT2g0+DP6+PAUH/6t0lNuAEQkCvpVpaeo6XQqWZZhjLn7a6eplDq70hACeZ7T0lqzXq8RkWfv/eQv8Lno+1q01ijvvcznc7rdLtba42TD7e7hcKCua7bbLZvNhvF4jNrtdlJVFYvFghBCo+DnaK0ZjUYkSYJyzonW+viDi9zYiwhlWRJC4A3cB6lbL5JlLQAAAABJRU5ErkJggg==);
208
+
209
+ div {
210
+ background: none;
211
+ }
212
+ }
213
+
214
+ .overlay-transparent {
215
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAXBAMAAAASBMmTAAAAA3NCSVQICAjb4U/gAAAAHlBMVEXMAAD////0x8fTISHPERHVLy/1z8/UKSnRGBj31dUqmcWAAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABV0RVh0Q3JlYXRpb24gVGltZQA3LzIzLzEwrabRCwAAAINJREFUGJVF0DEOgzAMBdAv0Yg1zsAeIZQV9SRRB6RuRW12lBNEDJygB64L/ODtDfb/MoTTFaAi4YIrKBUB5kW4BZslerSe6CKyEB80nnARDyF63GZCT01ChP/GCW2VhUiaQWirVYgBZibciE2IN4wntNVdiO+RcSDu4Sf2VhXP+hL7Az+QG3AZBSUrAAAAAElFTkSuQmCC);
216
+ background-position: 50% 50%;
217
+ background-repeat: no-repeat;
218
+
219
+ div {
220
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAfCAYAAADwbH0HAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAVdEVYdENyZWF0aW9uIFRpbWUANy8xNC8xMpnf8k4AAAFkSURBVEiJ7ddPagIxFMfxb7ROopuMLmRw5w16A3uEXqYUeqoeoT2BO7fuHN1MoqBOZsDXhRVK6R8pE6HgbxVCyIeXQHhRzjkpy5KiKKiqiphJkoTBYIAxBpXnuaxWK3q9HtZaOp0OSqnG0bquKYqC/X5PlmWo2Wwm7Xab4XDogfs0TV8bVwHv/UREnpfLZQrQCiFgrSUmCpCm6atS6r7f7xNCoAXHs4+JfsSNMQBHOMad/pbWxcUrfIWv8BX+t/BNE5uc+9Y7525P44tV/I6+XBT+gNqLwV+h0eHv0KjwT2g0+DP6+PAUH/6t0lNuAEQkCvpVpaeo6XQqWZZhjLn7a6eplDq70hACeZ7T0lqzXq8RkWfv/eQv8Lno+1q01ijvvcznc7rdLtba42TD7e7hcKCua7bbLZvNhvF4jNrtdlJVFYvFghBCo+DnaK0ZjUYkSYJyzonW+viDi9zYiwhlWRJC4A3cB6lbL5JlLQAAAABJRU5ErkJggg==);
221
+ background-repeat: no-repeat;
222
+ .size(31px, 30px);
223
+ }
224
+ }
225
+ }
admin/widgets/colorchooser/css/mooRainbow.css CHANGED
@@ -1,5 +1,5 @@
1
  /**
2
- * @version $Id: mooRainbow.css 58595 2012-12-11 19:59:45Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
  * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -71,7 +71,7 @@ div.picker .overlay-transparent div {background:url(../images/picker.png) no-rep
71
  background: transparent;
72
  border: none;
73
  cursor:pointer;
74
- color: transparent;
75
  }
76
  .moor-box .moor-transpButton {
77
  position: absolute;
@@ -129,7 +129,7 @@ span.moor-ballino { /* Style hue � (degree) !! */
129
  margin-left: 196px;
130
  }
131
  .moor-hexLabel {
132
- margin-top: 124px;
133
  margin-left: 196px;
134
  }
135
 
@@ -140,8 +140,8 @@ span.moor-ballino { /* Style hue � (degree) !! */
140
 
141
  .moor-box input {
142
  font-size: 10px;
143
- font-family: Helvetica, Arial, sans-serif;
144
- padding: 0px;
145
  }
146
 
147
  .moor-rInput, .moor-gInput, .moor-bInput, .moor-HueInput, .moor-SatuInput, .moor-BrighInput {
1
  /**
2
+ * @version 3.2.18 April 1, 2012
3
  * @author RocketTheme http://www.rockettheme.com
4
  * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
71
  background: transparent;
72
  border: none;
73
  cursor:pointer;
74
+ color: transparent;
75
  }
76
  .moor-box .moor-transpButton {
77
  position: absolute;
129
  margin-left: 196px;
130
  }
131
  .moor-hexLabel {
132
+ margin-top: 131px;
133
  margin-left: 196px;
134
  }
135
 
140
 
141
  .moor-box input {
142
  font-size: 10px;
143
+ font-family: Helvetica, Arial, sans-serif;
144
+ padding: 1px;
145
  }
146
 
147
  .moor-rInput, .moor-gInput, .moor-bInput, .moor-HueInput, .moor-SatuInput, .moor-BrighInput {
admin/widgets/colorchooser/js/colorchooser.js CHANGED
@@ -1,87 +1,14 @@
1
- /**
2
- * @version 1.31 December 18, 2012
3
- * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
- * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
-
8
- var GantryColorChooser = {
9
- add: function(id, transparent) {
10
- var name = id.replace(/-/, '_'),
11
- rainbow;
12
-
13
- if (!window['moorainbow']) window['moorainbow'] = {};
14
-
15
- var fun = function() {
16
- var input = document.id(id);
17
-
18
- input.getParent().removeEvent('mouseenter', fun);
19
- rainbow = new MooRainbow('myRainbow_'+id+'_input', {
20
- id: 'myRainbow_' + id,
21
- startColor: document.id(id).get('value').hexToRgb(true) || [255, 255, 255],
22
- imgPath: GantryURL + '/admin/widgets/colorchooser/images/',
23
- transparent: transparent,
24
- onChange: function(color) {
25
- if (color == 'transparent') {
26
- input.getNext().getFirst().addClass('overlay-transparent').setStyle('background-color', 'transparent');
27
- input.value = 'transparent';
28
- } else {
29
- input.getNext().getFirst().removeClass('overlay-transparent').setStyle('background-color', color.hex);
30
- input.value = color.hex;
31
- }
32
-
33
- if (this.visible) this.okButton.focus();
34
- }
35
- });
36
-
37
- window['moorainbow']['r_' + name] = rainbow;
38
-
39
- rainbow.okButton.setStyle('outline', 'none');
40
- document.id('myRainbow_'+id+'_input').addEvent('click', function() {
41
- (function() {
42
- rainbow.okButton.focus();
43
- }).delay(10);
44
- });
45
- input.addEvent('keyup', function(e) {
46
- if (e) e = new Event(e);
47
- if ((this.value.length == 4 || this.value.length == 7) && this.value[0] == '#') {
48
- var rgb = new Color(this.value);
49
- var hex = this.value;
50
- var hsb = rgb.rgbToHsb();
51
- var color = {
52
- 'hex': hex,
53
- 'rgb': rgb,
54
- 'hsb': hsb
55
- };
56
- rainbow.fireEvent('onChange', color);
57
- rainbow.manualSet(color.rgb);
58
- };
59
- }).addEvent('set', function(value) {
60
- this.value = value;
61
- this.fireEvent('keyup');
62
- });
63
- input.getNext().getFirst().setStyle('background-color', rainbow.sets.hex);
64
- GantryColorChooser.load('myRainbow_' + id);
65
- };
66
-
67
- if (name.contains('gradient') && (name.contains('from') || name.contains('to'))) {
68
- fun();
69
- } else {
70
- window.addEvent('domready', function() {
71
- document.id(id).getParent().addEvents({
72
- 'mouseenter': fun,
73
- 'mouseleave': function() {
74
- this.removeEvent('mouseenter', fun);
75
- }
76
- });
77
- });
78
- }
79
- },
80
-
81
- load: function(name, hex){
82
- if (hex) {
83
- document.id(name + '_input').getPrevious().value = hex;
84
- document.id(name + '_input').getFirst().setStyle('background-color', hex);
85
- }
86
- }
87
- };
1
+ /*
2
+ * @author RocketTheme http://www.rockettheme.com
3
+ * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
4
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
 
5
  */
6
+ var GantryColorChooser={add:function(h,i){var f=h.replace(/-/,"_"),j;if(!window.moorainbow){window.moorainbow={};}var g=function(){var a=document.id(h);
7
+ a.getParent().removeEvent("mouseenter",g);j=new MooRainbow("myRainbow_"+h+"_input",{id:"myRainbow_"+h,startColor:document.id(h).get("value").hexToRgb(true)||[255,255,255],imgPath:GantryURL+"/admin/widgets/colorchooser/images/",transparent:i,onChange:function(b){if(b=="transparent"){a.getNext().getFirst().addClass("overlay-transparent").setStyle("background-color","transparent");
8
+ a.value="transparent";}else{a.getNext().getFirst().removeClass("overlay-transparent").setStyle("background-color",b.hex);a.value=b.hex;}if(this.visible){this.okButton.focus();
9
+ }}});window.moorainbow["r_"+f]=j;j.okButton.setStyle("outline","none");document.id("myRainbow_"+h+"_input").addEvent("click",function(){(function(){j.okButton.focus();
10
+ }).delay(10);});a.addEvent("keyup",function(b){if(b){b=new Event(b);}if((this.value.length==4||this.value.length==7)&&this.value[0]=="#"){var d=new Color(this.value);
11
+ var c=this.value;var l=d.rgbToHsb();var e={hex:c,rgb:d,hsb:l};j.fireEvent("onChange",e);j.manualSet(e.rgb);}}).addEvent("set",function(b){this.value=b;
12
+ this.fireEvent("keyup");});a.getNext().getFirst().setStyle("background-color",j.sets.hex);GantryColorChooser.load("myRainbow_"+h);};if(f.contains("gradient")&&(f.contains("from")||f.contains("to"))){g();
13
+ }else{window.addEvent("domready",function(){document.id(h).getParent().addEvents({mouseenter:g,mouseleave:function(){this.removeEvent("mouseenter",g);}});
14
+ });}},load:function(d,c){if(c){document.id(d+"_input").getPrevious().value=c;document.id(d+"_input").getFirst().setStyle("background-color",c);}}};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/widgets/colorchooser/js/mooRainbow-2.0.js ADDED
@@ -0,0 +1,544 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ((function(){
2
+
3
+ var rainbow = this.MooRainbow = new Class({
4
+
5
+ Implements: [Options, Events],
6
+
7
+ options: {
8
+ data: 'moorainbow',
9
+ startColor: '#f00',
10
+ transparency: 1,
11
+ activeForm: 'hsb',
12
+ forms: {
13
+ 'rgb': ['red', 'green', 'blue'],
14
+ 'hsb': ['hue', 'saturation', 'brightness']
15
+ },
16
+ defaults: {
17
+ relative: null,
18
+ position: 'right',
19
+ offset: {x: 10, y: 0}
20
+ },
21
+ onChange: function(sets, element){
22
+ if (!element) return;
23
+
24
+ var trigger;
25
+ if (element.get('data-moorainbow-trigger')) {
26
+ trigger = element;
27
+ element = document.id(element.get('data-moorainbow-trigger'));
28
+ } else {
29
+ trigger = document.getElements('[data-moorainbow-trigger='+element.get('id')+']');
30
+ }
31
+
32
+ element.set('value', this.sets.hex);
33
+ if (this.sets.hex != 'transparent') trigger.getElement('.overlay').removeClass('overlay-transparent');
34
+ trigger.getElement('.overlay').setStyle('backgroundColor', this.sets.hex);
35
+ },
36
+ onComplete: function(){}
37
+ },
38
+
39
+ initialize: function(options){
40
+ this.setOptions(options);
41
+ this.data = 'data-' + this.options.data;
42
+
43
+ this.sets = {rgb: [], hsb: [], hex: ''};
44
+ this.coords = {overlay: {x: 0, y: 0}, slider: 0};
45
+ this.offsets = {overlay: 0, slider: 0};
46
+
47
+ if (!this.layout) this.build();
48
+
49
+ this.attach();
50
+ this.setColor(this.options.startColor.hexToRgb().rgbToHsb(), 'force');
51
+
52
+ this.hide();
53
+ },
54
+
55
+ attach: function(){
56
+ var buttonType = this.layout.retrieve('moor:buttontype:click', function(event, element){
57
+ this.buttonTypeClick.call(this, event, element);
58
+ }.bind(this)),
59
+
60
+ trigger = this.layout.retrieve('moor:trigger:click', function(event, element){
61
+ this.toggle.call(this, event, element);
62
+ }.bind(this)),
63
+
64
+ smartToggle = document.retrieve('moor:smarttoggle:click', function(event, element){
65
+ this.smartToggle.call(this, event, element);
66
+ }.bind(this)),
67
+
68
+ overlayMouseDown = this.layout.retrieve('moor:overlay:mousedown', function(event, element){
69
+ this.overlayMouseDown.call(this, event, element);
70
+ }.bind(this)),
71
+
72
+ sliderMouseDown = this.layout.retrieve('moor:slider:mousedown', function(event, element){
73
+ this.sliderMouseDown.call(this, event, element);
74
+ }.bind(this)),
75
+
76
+ backupColor = this.layout.retrieve('moor:backupcolor:click', function(event, element){
77
+ var color = element.retrieve('moor:backup:color', this.options.startColor);
78
+ if (color != 'transparent') this.setColor.call(this, color, 'force');
79
+ else this.triggerTransparent.call(this, event, element);
80
+ }.bind(this)),
81
+
82
+ elementKeyup = this.layout.retrieve('moor:element:keyup', function(event, element){
83
+ this.keyup.call(this, event, element);
84
+ }.bind(this));
85
+
86
+ this.layout.addEvents({
87
+ 'click:relay([data-moorainbow-button-type])': buttonType,
88
+ 'click:relay(.moor-colorsbox-selected)': backupColor,
89
+ 'keyup:relay([data-moorainbow-input] input)': elementKeyup,
90
+ 'mousedown:relay([data-moorainbow-overlay])': overlayMouseDown,
91
+ 'mousedown:relay([data-moorainbow-slider])': sliderMouseDown
92
+ });
93
+
94
+ document.addEvents({
95
+ 'mousedown:relay([data-moorainbow-trigger])': trigger,
96
+ 'focus:relay([data-moorainbow])': trigger,
97
+ 'keyup:relay([data-moorainbow])': elementKeyup
98
+ });
99
+
100
+ if (!document.retrieve('moor:document:events')){
101
+ document.addEvent('click', smartToggle);
102
+ document.store('moor:document:events', true);
103
+ }
104
+
105
+ this.attachDrag();
106
+ },
107
+
108
+ attachDrag: function(){
109
+ var overlay = this.layout.getElement('[data-moorainbow-overlay]'),
110
+ slider = this.layout.getElement('[data-moorainbow-slider]'),
111
+ overlaySize = overlay.getComputedSize(),
112
+ sliderSize = slider.getComputedSize(),
113
+ events;
114
+
115
+ this.overlayDragInstance = new Drag(this.overlayCursor, {
116
+ limit: {
117
+ x: [0 - this.offsets.overlay, overlaySize.width - this.offsets.overlay],
118
+ y: [0 - this.offsets.overlay, overlaySize.height - this.offsets.overlay]
119
+ },
120
+ //onBeforeStart: this.overlayDrag.bind(this),
121
+ //onStart: this.overlayDrag.bind(this),
122
+ //onDrag: this.overlayDrag.bind(this),
123
+ snap: 0
124
+ });
125
+
126
+ this.sliderDragInstance = new Drag(this.sliderCursor, {
127
+ limit: {
128
+ y: [0 - this.offsets.slider, sliderSize.height - this.offsets.slider]
129
+ },
130
+ modifiers: {x: false},
131
+ //onBeforeStart: this.sliderDrag.bind(this),
132
+ //onStart: this.sliderDrag.bind(this),
133
+ //onDrag: this.sliderDrag.bind(this),
134
+ snap: 0
135
+ });
136
+
137
+ events = {
138
+ onBeforeStart: this.setColor.bind(this),
139
+ onStart: this.setColor.bind(this),
140
+ onDrag: this.setColor.bind(this)
141
+ };
142
+
143
+ this.overlayDragInstance.addEvents(events);
144
+ this.sliderDragInstance.addEvents(events);
145
+ },
146
+
147
+ overlayMouseDown: function(event, element){
148
+ var overlay = this.layout.getElement('[data-moorainbow-overlay]'),
149
+ overlayPosition = overlay.getPosition(),
150
+ overlayBorders = {
151
+ x: overlay.getStyle('border-left').toInt() + overlay.getStyle('border-right').toInt(),
152
+ y: overlay.getStyle('border-top').toInt() + overlay.getStyle('border-bottom').toInt()
153
+ };
154
+
155
+ this.overlayCursor.style.left = event.page.x - overlayPosition.x - this.offsets.overlay - overlayBorders.x + 'px';
156
+ this.overlayCursor.style.top = event.page.y - overlayPosition.y - this.offsets.overlay - overlayBorders.y + 'px';
157
+
158
+ this.overlayDragInstance.start(event);
159
+ },
160
+
161
+ sliderMouseDown: function(event, element){
162
+ var slider = this.layout.getElement('[data-moorainbow-slider]'),
163
+ sliderPosition = slider.getPosition().y;
164
+ sliderBorders = slider.getStyle('border-top').toInt() + slider.getStyle('border-bottom').toInt()
165
+
166
+ this.sliderCursor.style.top = event.page.y - sliderPosition - this.offsets.slider - sliderBorders + 'px';
167
+
168
+ this.sliderDragInstance.start(event);
169
+ },
170
+
171
+ toggle: function(event, element){
172
+ var color = null,
173
+ activeTrigger = this.active ? this.active.get('data-moorainbow-trigger') : null,
174
+ elementTrigger = element.get('data-moorainbow-trigger');
175
+
176
+ if (this.isShown && this.active == element) return;
177
+ if (this.isShown && activeTrigger && activeTrigger == element.get('id')) return;
178
+ if (this.isShown && this.active && elementTrigger && elementTrigger == this.active.get('id')) return;
179
+
180
+ this.active = element;
181
+ this.show();
182
+
183
+ if (!element.get('data-moorainbow-trigger') && document.getElement('[data-moorainbow-trigger=' + element.get('id') + ']')){
184
+ color = element.get('value');
185
+ element = document.getElement('[data-moorainbow-trigger=' + element.get('id') + ']');
186
+ }
187
+
188
+ if (!color) color = document.id(element.get('data-moorainbow-trigger')).get('value');
189
+
190
+ this.backupColor.setStyle('background-color', color).store('moor:backup:color', color);
191
+ this.reposition({relative: element});
192
+ if (color != 'transparent') this.setColor(color, 'force');
193
+ },
194
+
195
+ smartToggle: function(event, element){
196
+ if (event){
197
+ var target = event.target;
198
+
199
+ if (target.get('data-moorainbow') !== null || target.get('data-moorainbow-trigger') !== null || target.get('data-moorainbow-layout') !== null ||
200
+ target.getParent('[data-moorainbow]') || target.getParent('[data-moorainbow-trigger]') || target.getParent('[data-moorainbow-layout]')) return;
201
+ else this.hide();
202
+ }
203
+ },
204
+
205
+ reposition: function(options){
206
+ var element, position, offset, axis = {x: 0, y: 0}, defaults = this.options.defaults;
207
+
208
+ defaults = Object.merge(defaults, options);
209
+ element = defaults.relative;
210
+ position = defaults.position;
211
+ offset = defaults.offset;
212
+
213
+ if (!element) return;
214
+
215
+ switch(position){
216
+ case 'left':
217
+ axis.x = 0 - this.layout.getSize().x; offset.x *= -1; break;
218
+ case 'right':
219
+ axis.x = element.getSize().x; offset.x *= 1; break;
220
+ case 'top':
221
+ axis.y = 0 - this.layout.getSize().y; offset.x *= -1; break;
222
+ case 'bottom':
223
+ axis.y = element.getSize().y; offset.x *= 1; break;
224
+ }
225
+
226
+ this.layout.style.left = element.getPosition().x + axis.x + offset.x + 'px';
227
+ this.layout.style.top = element.getPosition().y + axis.y + offset.y + 'px';
228
+
229
+ },
230
+
231
+ setColor: function(color, updateCursors){
232
+ var isSlider, hue, type = 'hsb';
233
+ if (typeOf(color) == 'element'){
234
+ if (color.hasClass('moor-slider-cursor')) isSlider = true;
235
+ color = this._getHSB();
236
+ }
237
+
238
+ if (!color) color = this._getHSB();
239
+ if (color[0] == '#'){
240
+ type = 'rgb';
241
+ color = color.hexToRgb(true);
242
+ }
243
+
244
+ if (updateCursors) this._updateCursors(color, type);
245
+ this.updateData(color, type);
246
+ },
247
+
248
+ updateData: function(color, type){
249
+ type = type || 'hsb';
250
+
251
+ var input, hue, hsb, rgb, hex, data;
252
+
253
+ switch(type){
254
+ case 'rgb':
255
+ rgb = color;
256
+ hsb = color.rgbToHsb();
257
+ hex = color.rgbToHex();
258
+ break;
259
+ case 'hsb':
260
+ hsb = color || this._getHSB();
261
+ rgb = hsb.hsbToRgb(true);
262
+ hex = this._hsbToHex(hsb);
263
+ }
264
+
265
+ data = {
266
+ red: rgb[0], green: rgb[1], blue: rgb[2],
267
+ hue: hsb[0], saturation: hsb[1], brightness: hsb[2],
268
+ hex: hex
269
+ };
270
+
271
+ this.sets = {rgb: rgb, hsb: hsb, hex: hex};
272
+ hue = new Color([this.sets.hsb[0], 100, 100]).hsbToRgb(true);
273
+
274
+ ['red', 'green', 'blue', 'hue', 'saturation', 'brightness', 'hex'].each(function(set, i){
275
+ input = this.layout.getElement('[data-moorainbow-input-'+set+']');
276
+ input.set('value', data[set]);
277
+ }, this);
278
+
279
+ this.selectedColor.setStyle('backgroundColor', this.sets.hex);
280
+ this.layout.getElement('[data-moorainbow-overlay]').setStyle('backgroundColor', hue);
281
+
282
+ this.fireEvent('onChange', [this.sets, this.active], 1);
283
+ },
284
+
285
+ hide: function(){
286
+ this.layout.setStyles({display: 'none', visibility: 'hidden'});
287
+ this.isShown = false;
288
+ },
289
+
290
+ show: function(){
291
+ this.layout.setStyles({display: 'block', visibility: 'visible'});
292
+ this.isShown = true;
293
+ },
294
+
295
+ keyup: function(event, element){
296
+ var parent, data, dataKey, dataElement, dataColor = [], match = element.value.match(/^(#[a-f0-9]{6}|[0-9]{1,3})$/ig), color;
297
+ if (!match) return;
298
+
299
+ parent = element.getParent('[data-moorainbow-input]:not([data-moorainbow-input=hex])');
300
+ if (!this._validateData(event, element) && null === element.get('data-moorainbow')) return false;
301
+
302
+ color = match[0];
303
+
304
+ if (parent){
305
+ data = parent.get('data-moorainbow-input');
306
+ Object.each(this.options.forms, function(value, key){
307
+ if (value.contains(data)) dataKey = key;
308
+ }, this);
309
+
310
+ }
311
+
312
+ if (dataKey){
313
+ this.options.forms[dataKey].each(function(type){
314
+ dataElement = this.layout.getElement('[data-moorainbow-input-' + type + ']');
315
+ dataColor.push(dataElement.get('value').toInt());
316
+ }, this);
317
+
318
+ if (dataKey == 'rgb') color = dataColor.rgbToHex();
319
+ else color = dataColor;
320
+ }
321
+
322
+ this.setColor(color, 'force');
323
+ },
324
+
325
+ build: function(){
326
+ var input, label, suffix;
327
+
328
+ var layout = new Element('div.moor-layout[data-moorainbow-layout]').inject(document.body),
329
+
330
+ colorwheel = new Element('div.moor-overlay[data-moorainbow-overlay]').adopt(
331
+ new Element('div.moor-overlay-white'),
332
+ new Element('div.moor-overlay-black'),
333
+ new Element('div.moor-overlay-cursor')
334
+ ).inject(layout),
335
+
336
+ sliderwheel = new Element('div.moor-slider[data-moorainbow-slider]').adopt(
337
+ new Element('div.moor-slider-colors'),
338
+ new Element('div.moor-slider-cursor')
339
+ ).inject(layout),
340
+
341
+ colorsbox = new Element('div.moor-colorsbox[data-moorainbow-colorsbox]').adopt(
342
+ new Element('div.moor-colorsbox-current'),
343
+ new Element('div.moor-colorsbox-selected')
344
+ ).inject(layout),
345
+
346
+ inputs = new Element('div.moor-inputs').inject(layout),
347
+
348
+ buttons = new Element('div.moor-buttons').inject(layout),
349
+
350
+ indicator = new Element('span.arrow').inject(layout);
351
+
352
+ ['red', 'green', 'blue', 'hue', 'saturation', 'brightness', 'hex'].each(function(type){
353
+ label = (type != 'hex') ? type[0].capitalize() : '# ' + type;
354
+ suffix = ['saturation', 'brightness'].contains(type) ? '%' : (type == 'hue') ? '&deg;' : '';
355
+
356
+ input = new Element('div.moor-inputs-block.moor-inputs-' + type + '[data-moorainbow-input=' + type + ']').adopt(
357
+ new Element('span', {html: label}),
358
+ new Element('input[data-moorainbow-input-' + type + ']')
359
+ );
360
+
361
+ if (suffix) input.adopt(new Element('span', {html: suffix}));
362
+
363
+ inputs.adopt(input);
364
+ });
365
+
366
+ ['close', 'transparent', 'RGB', 'HSB'].each(function(button){
367
+ label = button == 'close' ? '&times;' : button == 'transparent' ? '' : button;
368
+ new Element('div.moor-button.moor-button-' + button.toLowerCase() + '[data-moorainbow-button-type=' + button.toLowerCase() + ']', {html: label}).inject(buttons);
369
+ });
370
+
371
+ // offsets
372
+ this.overlayCursor = colorwheel.getElement('.moor-overlay-cursor');
373
+ this.sliderCursor = sliderwheel.getElement('.moor-slider-cursor');
374
+
375
+ // selected / backup colors
376
+ this.selectedColor = layout.getElement('div.moor-colorsbox-current');
377
+ this.backupColor = layout.getElement('div.moor-colorsbox-selected');
378
+
379
+ this.offsets = {
380
+ overlay: this.overlayCursor.getSize().x / 2,
381
+ slider: this.sliderCursor.getSize().y / 2
382
+ };
383
+
384
+ this.layout = layout;
385
+ this.buttonTypeClick.call(this);
386
+
387
+ },
388
+
389
+ buttonTypeClick: function(event, element){
390
+ var type = element ? element.get('data-moorainbow-button-type') || this.options.activeForm : this.options.activeForm;
391
+
392
+ if (!this.options.forms[type]){
393
+ var method = this['trigger' + type.capitalize()];
394
+ return method ? method.call(this, event, element) : false;
395
+ }
396
+
397
+ Object.each(this.options.forms, function(inputs, key){
398
+ if (key == type){
399
+ this.layout.getElement('[data-moorainbow-button-type=' + key + ']').addClass('moor-button-active');
400
+ inputs.each(function(input){
401
+ this.layout.getElement('[data-moorainbow-input=' + input + ']').addClass('moor-inputs-block-active');
402
+ }, this);
403
+ } else {
404
+ this.layout.getElement('[data-moorainbow-button-type=' + key + ']').removeClass('moor-button-active');
405
+ inputs.each(function(input){
406
+ this.layout.getElement('[data-moorainbow-input=' + input + ']').removeClass('moor-inputs-block-active');
407
+ }, this);
408
+ }
409
+ }, this);
410
+ },
411
+
412
+ triggerClose: function(event, element){
413
+ this.hide();
414
+ },
415
+
416
+ triggerTransparent: function(event, element){
417
+ element = this.active;
418
+ if (!element) return;
419
+
420
+ var trigger, value = 'transparent';
421
+ if (element.get('data-moorainbow-trigger')) {
422
+ trigger = element;
423
+ element = document.id(element.get('data-moorainbow-trigger'));
424
+ } else {
425
+ trigger = document.getElements('[data-moorainbow-trigger='+element.get('id')+']');
426
+ }
427
+
428
+ element.set('value', value);
429
+ trigger.getElement('.overlay').addClass('overlay-' + value).setStyle('backgroundColor', value);
430
+ this.hide();
431
+ },
432
+
433
+ _hsbToHex: function(hsb){
434
+ hsb = hsb || this._getHSB();
435
+
436
+ return hsb.hsbToRgb().rgbToHex();
437
+ },
438
+
439
+ _hexToHsb: function(hex){
440
+ return hex.hexToRgb().rgbToHsb();
441
+ },
442
+
443
+ _getHSB: function(){
444
+ var coords = this._getCoordinates(),
445
+ overlayElement = this.layout.getElement('[data-moorainbow-overlay]'),
446
+ sliderElement = this.layout.getElement('[data-moorainbow-slider]'),
447
+ overlaySize = overlayElement.getComputedSize(),
448
+ sliderSize = sliderElement.getComputedSize();
449
+
450
+ var s = Math.round((coords.overlay.x * 100) / overlaySize.width),
451
+ b = 100 - Math.round((coords.overlay.y * 100) / overlaySize.height),
452
+ h = 360 - Math.round((coords.slider.y * 360) / sliderSize.height);
453
+
454
+ h = (h >= 360) ? 0 : (h < 0) ? 0 : h;
455
+ s = (s > 100) ? 100 : (s < 0) ? 0 : s;
456
+ b = (b > 100) ? 100 : (b < 0) ? 0 : b;
457
+
458
+ return [h, s, b];
459
+ },
460
+
461
+ _updateCursors: function(hsb, type){
462
+ var overlayCursor = this.overlayCursor,
463
+ sliderCursor = this.sliderCursor,
464
+ overlayElement = this.layout.getElement('[data-moorainbow-overlay]'),
465
+ sliderElement = this.layout.getElement('[data-moorainbow-slider]'),
466
+ overlaySize = overlayElement.getComputedSize(),
467
+ sliderSize = sliderElement.getComputedSize();
468
+
469
+ if (type == 'rgb') hsb = hsb.rgbToHsb();
470
+
471
+ var coordinates = {
472
+ x: Math.round(((overlaySize.width * hsb[1]) / 100) - this.offsets.overlay),
473
+ y: Math.round(- ((overlaySize.height * hsb[2]) / 100) + overlaySize.height - this.offsets.overlay),
474
+ z: Math.round((sliderSize.height * hsb[0]) / 360)
475
+ };
476
+
477
+ if (coordinates.z == 360) coordinates.z = 0;
478
+ coordinates.z = sliderSize.height - coordinates.z - this.offsets.slider; //sliH - c + this.snippet('slider') - arwH;
479
+
480
+ overlayCursor.style.top = coordinates.y + 'px';
481
+ overlayCursor.style.left = coordinates.x + 'px';
482
+ sliderCursor.style.top = coordinates.z + 'px';
483
+ },
484
+
485
+ _getCoordinates: function(){
486
+ var overlayCursor = this.overlayCursor,
487
+ sliderCursor = this.sliderCursor,
488
+ overlayElement = this.layout.getElement('[data-moorainbow-overlay]'),
489
+ sliderElement = this.layout.getElement('[data-moorainbow-slider]');
490
+
491
+ return {
492
+ overlay: {
493
+ x: overlayCursor.getPosition(overlayElement).x + this.offsets.overlay,
494
+ y: overlayCursor.getPosition(overlayElement).y + this.offsets.overlay
495
+ },
496
+ slider: {
497
+ y: sliderCursor.getPosition(sliderElement).y + this.offsets.slider
498
+ }
499
+ };
500
+ },
501
+
502
+ _validateData: function(event, element){
503
+ var parent = element.getParent('[data-moorainbow-input]'),
504
+ value = element.get('value'),
505
+ data;
506
+
507
+ if (!parent) return false;
508
+
509
+ data = parent.get('data-moorainbow-input');
510
+
511
+ switch(data){
512
+ case 'hue':
513
+ if (!value.match(/^[0-9]{1,3}$/) || value.toInt() >= 360){
514
+ element.set('value', 0);
515
+ return true;
516
+ }
517
+ break;
518
+ case 'saturation':
519
+ case 'brightness':
520
+ if (!value.match(/^[0-9]{1,3}$/) || value.toInt() > 100){
521
+ element.set('value', 100);
522
+ return true;
523
+ }
524
+ break;
525
+ case 'red':
526
+ case 'green':
527
+ case 'blue':
528
+ if (!value.match(/^[0-9]{1,3}$/) || value.toInt() > 255){
529
+ element.set('value', 0);
530
+ return true;
531
+ }
532
+ break;
533
+ }
534
+
535
+ return true;
536
+ }
537
+
538
+ });
539
+
540
+ window.addEvent('domready', function(){
541
+ this.moorainbow = new MooRainbow();
542
+ });
543
+
544
+ })());
admin/widgets/colorchooser/js/mooRainbow.js CHANGED
@@ -1,8 +1,78 @@
1
- /**
2
- * @version $Id: mooRainbow.js 58623 2012-12-15 22:01:32Z btowles $
3
- * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
- * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
- */
7
-
8
- var Rainbows=[];var MooRainbow=new Class({options:{id:"mooRainbow",prefix:"moor-",imgPath:"images/",startColor:[255,0,0],wheel:false,transparent:1,onComplete:$empty,onChange:$empty},initialize:function(b,a){this.element=document.id(b);if(!this.element){return;}this.setOptions(a);this.sliderPos=0;this.pickerPos={x:0,y:0};this.backupColor=this.options.startColor;this.currentColor=this.options.startColor;this.sets={rgb:[],hsb:[],hex:[]};this.pickerClick=this.sliderClick=false;if(!this.layout){this.doLayout();}this.OverlayEvents();this.sliderEvents();this.backupEvent();if(this.options.wheel){this.wheelEvents();}this.element.addEvent("click",function(c){this.closeAll().toggle(c);}.bind(this));this.layout.overlay.setStyle("background-color",this.options.startColor.rgbToHex());this.layout.backup.setStyle("background-color",this.backupColor.rgbToHex());this.pickerPos.x=this.snippet("curPos").l+this.snippet("curSize","int").w;this.pickerPos.y=this.snippet("curPos").t+this.snippet("curSize","int").h;this.manualSet(this.options.startColor);this.pickerPos.x=this.snippet("curPos").l+this.snippet("curSize","int").w;this.pickerPos.y=this.snippet("curPos").t+this.snippet("curSize","int").h;this.sliderPos=this.snippet("arrPos")-this.snippet("arrSize","int");if(window.khtml){this.hide();}},toggle:function(){this[this.visible?"hide":"show"]();},show:function(){this.rePosition();this.layout.setStyle("display","block");this.visible=true;},hide:function(){this.layout.setStyles({display:"none"});this.visible=false;},closeAll:function(){Rainbows.each(function(a){a.hide();});return this;},manualSet:function(b,d){if(!d||(d!="hsb"&&d!="hex")){d="rgb";}var c,a,e;if(d=="rgb"){c=b;a=b.rgbToHsb();e=b.rgbToHex();}else{if(d=="hsb"){a=b;c=b.hsbToRgb();e=c.rgbToHex();}else{e=b;c=b.hexToRgb(true);a=c.rgbToHsb();}}this.setMooRainbow(c);this.autoSet(a);},autoSet:function(b){var l=this.snippet("curSize","int").h;var a=this.snippet("curSize","int").w;var d=this.layout.overlay.height;var j=this.layout.overlay.width;var k=this.layout.slider.height;var m=this.snippet("arrSize","int");var f;var i=Math.round(((j*b[1])/100)-a);var g=Math.round(-((d*b[2])/100)+d-l);var h=Math.round(((k*b[0])/360));h=(h==360)?0:h;var e=k-h+this.snippet("slider")-m;f=[this.sets.hsb[0],100,100].hsbToRgb().rgbToHex();this.layout.cursor.setStyles({top:g,left:i});this.layout.arrows.setStyle("top",e);this.layout.overlay.setStyle("background-color",f);this.sliderPos=this.snippet("arrPos")-m;this.pickerPos.x=this.snippet("curPos").l+a;this.pickerPos.y=this.snippet("curPos").t+l;},setMooRainbow:function(b,d){if(!d||(d!="hsb"&&d!="hex")){d="rgb";}var c,a,e;if(d=="rgb"){c=b;a=b.rgbToHsb();e=b.rgbToHex();}else{if(d=="hsb"){a=b;c=b.hsbToRgb();e=c.rgbToHex();}else{e=b;c=b.hexToRgb();a=c.rgbToHsb();}}this.sets={rgb:c,hsb:a,hex:e};if(!$chk(this.pickerPos.x)){this.autoSet(a);}this.RedInput.value=c[0];this.GreenInput.value=c[1];this.BlueInput.value=c[2];this.HueInput.value=a[0];this.SatuInput.value=a[1];this.BrighInput.value=a[2];this.hexInput.value=e;this.currentColor=c;this.chooseColor.setStyle("background-color",c.rgbToHex());},parseColors:function(c,g,f){var e=Math.round((c*100)/this.layout.overlay.width);var a=100-Math.round((g*100)/this.layout.overlay.height);var d=360-Math.round((f*360)/this.layout.slider.height)+this.snippet("slider")-this.snippet("arrSize","int");d-=this.snippet("arrSize","int");d=(d>=360)?0:(d<0)?0:d;e=(e>100)?100:(e<0)?0:e;a=(a>100)?100:(a<0)?0:a;return[d,e,a];},OverlayEvents:function(){var d,c,b,a;c=this.snippet("curSize","int").h;b=this.snippet("curSize","int").w;a=$A(this.arrRGB).concat(this.arrHSB,this.hexInput);document.addEvent("click",function(){if(this.visible){this.hide(this.layout);}}.bind(this));a.each(function(e){e.addEvent("keydown",this.eventKeydown.bindWithEvent(this,e));e.addEvent("keyup",this.eventKeyup.bindWithEvent(this,e));},this);[this.element,this.layout].each(function(e){e.addEvents({click:function(f){new Event(f).stop();},keyup:function(f){f=new Event(f);if(f.key=="esc"&&this.visible){this.hide(this.layout);}}.bind(this)},this);},this);d={x:[0-b,126],y:[0-c,126]};this.layout.drag=new Drag(this.layout.cursor,{limit:d,onBeforeStart:this.overlayDrag.bind(this),onStart:this.overlayDrag.bind(this),onDrag:this.overlayDrag.bind(this),snap:0});this.layout.overlay2.addEvent("mousedown",function(f){f=new Event(f);this.layout.cursor.setStyles({top:f.page.y-this.layout.overlay.getTop()-c,left:f.page.x-this.layout.overlay.getLeft()-b});this.layout.drag.start(f);}.bind(this));this.okButton.addEvent("click",function(){if(this.currentColor==this.options.startColor){this.hide();this.fireEvent("onComplete",[this.sets,this]);}else{this.backupColor=this.currentColor;this.layout.backup.setStyle("background-color",this.backupColor.rgbToHex());this.hide();this.fireEvent("onComplete",[this.sets,this]);}}.bind(this));},overlayDrag:function(){var b=this.snippet("curSize","int").h;var a=this.snippet("curSize","int").w;this.pickerPos.x=this.snippet("curPos").l+a;this.pickerPos.y=this.snippet("curPos").t+b;this.setMooRainbow(this.parseColors(this.pickerPos.x,this.pickerPos.y,this.sliderPos),"hsb");this.fireEvent("onChange",[this.sets,this]);},sliderEvents:function(){var a=this.snippet("arrSize","int"),b;b=[0+this.snippet("slider")-a,this.layout.slider.height-a+this.snippet("slider")];this.layout.sliderDrag=new Drag(this.layout.arrows,{limit:{y:b},modifiers:{x:false},onBeforeStart:this.sliderDrag.bind(this),onStart:this.sliderDrag.bind(this),onDrag:this.sliderDrag.bind(this),snap:0});this.layout.slider.addEvent("mousedown",function(c){c=new Event(c);this.layout.arrows.setStyle("top",c.page.y-this.layout.slider.getTop()+this.snippet("slider")-a);this.layout.sliderDrag.start(c);}.bind(this));},sliderDrag:function(){var a=this.snippet("arrSize","int"),b;this.sliderPos=this.snippet("arrPos")-a;this.setMooRainbow(this.parseColors(this.pickerPos.x,this.pickerPos.y,this.sliderPos),"hsb");b=[this.sets.hsb[0],100,100].hsbToRgb().rgbToHex();this.layout.overlay.setStyle("background-color",b);this.fireEvent("onChange",[this.sets,this]);},backupEvent:function(){this.layout.backup.addEvent("click",function(){this.manualSet(this.backupColor);this.fireEvent("onChange",[this.sets,this]);}.bind(this));},wheelEvents:function(){var a=$A(this.arrRGB).extend(this.arrHSB);a.each(function(b){b.addEvents({mousewheel:this.eventKeys.bindWithEvent(this,b),keydown:this.eventKeys.bindWithEvent(this,b)});},this);[this.layout.arrows,this.layout.slider].each(function(b){b.addEvents({mousewheel:this.eventKeys.bindWithEvent(this,[this.arrHSB[0],"slider"]),keydown:this.eventKeys.bindWithEvent(this,[this.arrHSB[0],"slider"])});},this);},eventKeys:function(f,b,a){var g,h;a=(!a)?b.id:this.arrHSB[0];if(f.type=="keydown"){if(f.key=="up"){g=1;}else{if(f.key=="down"){g=-1;}else{return;}}}else{if(f.type==Element.Events.mousewheel.base){g=(f.wheel>0)?1:-1;}}if(this.arrRGB.contains(b)){h="rgb";}else{if(this.arrHSB.contains(b)){h="hsb";}else{h="hsb";}}if(h=="rgb"){var i=this.sets.rgb,c=this.sets.hsb,d=this.options.prefix,k;var j=(b.value.toInt()||0)+g;j=(j>255)?255:(j<0)?0:j;switch(b.className){case d+"rInput":k=[j,i[1],i[2]];break;case d+"gInput":k=[i[0],j,i[2]];break;case d+"bInput":k=[i[0],i[1],j];break;default:k=i;}this.manualSet(k);this.fireEvent("onChange",[this.sets,this]);}else{var i=this.sets.rgb,c=this.sets.hsb,d=this.options.prefix,k;var j=(b.value.toInt()||0)+g;if(b.className.test(/(HueInput)/)){j=(j>359)?0:(j<0)?0:j;}else{j=(j>100)?100:(j<0)?0:j;}switch(b.className){case d+"HueInput":k=[j,c[1],c[2]];break;case d+"SatuInput":k=[c[0],j,c[2]];break;case d+"BrighInput":k=[c[0],c[1],j];break;default:k=c;}this.manualSet(k,"hsb");this.fireEvent("onChange",[this.sets,this]);}f.stop();},eventKeydown:function(c,b){var d=c.code,a=c.key;if((!b.className.test(/hexInput/)&&!(d>=48&&d<=57))&&(a!="backspace"&&a!="tab"&&a!="delete"&&a!="left"&&a!="right")){c.stop();}},eventKeyup:function(g,c){var h=g.code,a=g.key,d,f,b=c.value.charAt(0);if(!$chk(c.value)){return;}if(c.className.test(/hexInput/)){if(b!="#"&&c.value.length!=6){return;}if(b=="#"&&c.value.length!=7){return;}}else{if(!(h>=48&&h<=57)&&(!["backspace","tab","delete","left","right"].contains(a))&&c.value.length>3){return;}}f=this.options.prefix;if(c.className.test(/(rInput|gInput|bInput)/)){if(c.value<0||c.value>255){return;}switch(c.className){case f+"rInput":d=[c.value,this.sets.rgb[1],this.sets.rgb[2]];break;case f+"gInput":d=[this.sets.rgb[0],c.value,this.sets.rgb[2]];break;case f+"bInput":d=[this.sets.rgb[0],this.sets.rgb[1],c.value];break;default:d=this.sets.rgb;}this.manualSet(d);this.fireEvent("onChange",[this.sets,this]);}else{if(!c.className.test(/hexInput/)){if(c.className.test(/HueInput/)&&c.value<0||c.value>360){return;}else{if(c.className.test(/HueInput/)&&c.value==360){c.value=0;}else{if(c.className.test(/(SatuInput|BrighInput)/)&&c.value<0||c.value>100){return;}}}switch(c.className){case f+"HueInput":d=[c.value,this.sets.hsb[1],this.sets.hsb[2]];break;case f+"SatuInput":d=[this.sets.hsb[0],c.value,this.sets.hsb[2]];break;case f+"BrighInput":d=[this.sets.hsb[0],this.sets.hsb[1],c.value];break;default:d=this.sets.hsb;}this.manualSet(d,"hsb");this.fireEvent("onChange",[this.sets,this]);}else{d=c.value.hexToRgb(true);if(isNaN(d[0])||isNaN(d[1])||isNaN(d[2])){return;}if($chk(d)){this.manualSet(d);this.fireEvent("onChange",[this.sets,this]);}}}},doLayout:function(){var q=this.options.id,w=this.options.prefix,n=this;var b=q+" ."+w;this.layout=new Element("div",{styles:{display:"block",position:"absolute"},id:q}).inject(document.body);Rainbows.push(this);var i=new Element("div",{styles:{position:"relative"},"class":w+"box"}).inject(this.layout);var m=new Element("div",{styles:{position:"absolute",overflow:"hidden"},"class":w+"overlayBox"}).inject(i);var o=new Element("div",{styles:{position:"absolute",zIndex:1},"class":w+"arrows"}).inject(i);o.width=o.getStyle("width").toInt();o.height=o.getStyle("height").toInt();var f=new Element("img",{styles:{"background-color":"#fff",position:"relative",zIndex:2},src:this.options.imgPath+"moor_woverlay.png","class":w+"overlay"}).inject(m);var l=new Element("img",{styles:{position:"absolute",top:0,left:0,zIndex:2},src:this.options.imgPath+"moor_boverlay.png","class":w+"overlay"}).inject(m);if(Browser.Engine.trident4){m.setStyle("overflow","");var g=f.src;f.src=this.options.imgPath+"blank.gif";f.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+g+"', sizingMethod='scale')";g=l.src;l.src=this.options.imgPath+"blank.gif";l.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+g+"', sizingMethod='scale')";}f.width=l.width=m.getStyle("width").toInt();f.height=l.height=m.getStyle("height").toInt();var e=new Element("div",{styles:{overflow:"hidden",position:"absolute",zIndex:2},"class":w+"cursor"}).inject(m);e.width=e.getStyle("width").toInt();e.height=e.getStyle("height").toInt();var y=new Element("img",{styles:{position:"absolute","z-index":2},src:this.options.imgPath+"moor_slider.png","class":w+"slider"}).inject(i);this.layout.slider=document.getElement("#"+b+"slider");y.width=y.getStyle("width").toInt();y.height=y.getStyle("height").toInt();new Element("div",{styles:{position:"absolute"},"class":w+"colorBox"}).inject(i);new Element("div",{styles:{zIndex:2,position:"absolute"},"class":w+"chooseColor"}).inject(i);this.layout.backup=new Element("div",{styles:{zIndex:2,position:"absolute",cursor:"pointer"},"class":w+"currentColor"}).inject(i);var d=new Element("label").inject(i).setStyle("position","absolute");var j=d.clone().inject(i).addClass(w+"gLabel").appendText("G: ");var p=d.clone().inject(i).addClass(w+"bLabel").appendText("B: ");d.appendText("R: ").addClass(w+"rLabel");var A=new Element("input");var a=A.clone().inject(j).addClass(w+"gInput");var c=A.clone().inject(p).addClass(w+"bInput");A.inject(d).addClass(w+"rInput");var u=new Element("label").inject(i).setStyle("position","absolute");var z=u.clone().inject(i).addClass(w+"SatuLabel").appendText("S: ");var v=u.clone().inject(i).addClass(w+"BrighLabel").appendText("B: ");u.appendText("H: ").addClass(w+"HueLabel");var r=new Element("input");var x=r.clone().inject(z).addClass(w+"SatuInput");var t=r.clone().inject(v).addClass(w+"BrighInput");r.inject(u).addClass(w+"HueInput");z.appendText(" %");v.appendText(" %");new Element("span",{styles:{position:"absolute"},"class":w+"ballino"}).set("html"," &deg;").injectAfter(u);var h=new Element("label").inject(i).setStyle("position","absolute").addClass(w+"hexLabel").appendText("#hex: ").adopt(new Element("input").addClass(w+"hexInput"));var k=new Element("input",{styles:{position:"absolute"},type:"button",value:"Select","class":w+"okButton"}).inject(i);if(this.options.transparent){var s=new Element("div",{"class":w+"transpButton"}).inject(i).set("html","<span>X</span>").addEvent("click",function(){n.fireEvent("onChange","transparent");k.fireEvent("click");});}this.rePosition();var C=$$("#"+b+"overlay");this.layout.overlay=C[0];this.layout.overlay2=C[1];this.layout.cursor=document.getElement("#"+b+"cursor");this.layout.arrows=document.getElement("#"+b+"arrows");this.chooseColor=document.getElement("#"+b+"chooseColor");this.layout.backup=document.getElement("#"+b+"currentColor");this.RedInput=document.getElement("#"+b+"rInput");this.GreenInput=document.getElement("#"+b+"gInput");this.BlueInput=document.getElement("#"+b+"bInput");this.HueInput=document.getElement("#"+b+"HueInput");this.SatuInput=document.getElement("#"+b+"SatuInput");this.BrighInput=document.getElement("#"+b+"BrighInput");this.hexInput=document.getElement("#"+b+"hexInput");this.arrRGB=[this.RedInput,this.GreenInput,this.BlueInput];this.arrHSB=[this.HueInput,this.SatuInput,this.BrighInput];this.okButton=document.getElement("#"+b+"okButton");if(!window.khtml){this.hide();}},rePosition:function(){var a=this.element.getCoordinates();this.layout.setStyles({left:a.left+22,top:a.top-20});},snippet:function(g,f){var d;f=(f)?f:"none";switch(g){case"arrPos":var c=this.layout.arrows.getStyle("top").toInt();d=c;break;case"arrSize":var e=this.layout.arrows.height;e=(f=="int")?(e/2).toInt():e;d=e;break;case"curPos":var b=this.layout.cursor.getStyle("left").toInt();var c=this.layout.cursor.getStyle("top").toInt();d={l:b,t:c};break;case"slider":var c=this.layout.slider.getStyle("marginTop").toInt();d=c;break;default:var e=this.layout.cursor.height;var a=this.layout.cursor.width;e=(f=="int")?(e/2).toInt():e;a=(f=="int")?(a/2).toInt():a;d={w:a,h:e};}return d;}});MooRainbow.implement(new Options);MooRainbow.implement(new Events);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Rainbows=[];var MooRainbow=new Class({Implements:[Options,Events],options:{id:"mooRainbow",prefix:"moor-",imgPath:"images/",startColor:[255,0,0],wheel:false,transparent:1,onComplete:$empty,onChange:$empty},initialize:function(b,a){this.element=document.id(b);
2
+ if(!this.element){return;}this.setOptions(a);this.sliderPos=0;this.pickerPos={x:0,y:0};this.backupColor=this.options.startColor;this.currentColor=this.options.startColor;
3
+ this.sets={rgb:[],hsb:[],hex:[]};this.pickerClick=this.sliderClick=false;if(!this.layout){this.doLayout();}this.OverlayEvents();this.sliderEvents();this.backupEvent();
4
+ if(this.options.wheel){this.wheelEvents();}this.element.addEvent("click",function(c){this.closeAll().toggle(c);}.bind(this));this.layout.overlay.setStyle("background-color",this.options.startColor.rgbToHex());
5
+ this.layout.backup.setStyle("background-color",this.backupColor.rgbToHex());this.pickerPos.x=this.snippet("curPos").l+this.snippet("curSize","int").w;this.pickerPos.y=this.snippet("curPos").t+this.snippet("curSize","int").h;
6
+ this.manualSet(this.options.startColor);this.pickerPos.x=this.snippet("curPos").l+this.snippet("curSize","int").w;this.pickerPos.y=this.snippet("curPos").t+this.snippet("curSize","int").h;
7
+ this.sliderPos=this.snippet("arrPos")-this.snippet("arrSize","int");if(window.khtml){this.hide();}},toggle:function(){this[this.visible?"hide":"show"]();
8
+ },show:function(){this.rePosition();this.layout.setStyle("display","block");this.visible=true;},hide:function(){this.layout.setStyles({display:"none"});
9
+ this.visible=false;},closeAll:function(){Rainbows.each(function(a){a.hide();});return this;},manualSet:function(b,d){if(!d||(d!="hsb"&&d!="hex")){d="rgb";
10
+ }var c,a,e;if(d=="rgb"){c=b;a=b.rgbToHsb();e=b.rgbToHex();}else{if(d=="hsb"){a=b;c=b.hsbToRgb();e=c.rgbToHex();}else{e=b;c=b.hexToRgb(true);a=c.rgbToHsb();
11
+ }}this.setMooRainbow(c);this.autoSet(a);},autoSet:function(b){var l=this.snippet("curSize","int").h;var a=this.snippet("curSize","int").w;var d=this.layout.overlay.height;
12
+ var j=this.layout.overlay.width;var k=this.layout.slider.height;var m=this.snippet("arrSize","int");var f;var i=Math.round(((j*b[1])/100)-a);var g=Math.round(-((d*b[2])/100)+d-l);
13
+ var h=Math.round(((k*b[0])/360));h=(h==360)?0:h;var e=k-h+this.snippet("slider")-m;f=[this.sets.hsb[0],100,100].hsbToRgb().rgbToHex();this.layout.cursor.setStyles({top:g,left:i});
14
+ this.layout.arrows.setStyle("top",e);this.layout.overlay.setStyle("background-color",f);this.sliderPos=this.snippet("arrPos")-m;this.pickerPos.x=this.snippet("curPos").l+a;
15
+ this.pickerPos.y=this.snippet("curPos").t+l;},setMooRainbow:function(b,d){if(!d||(d!="hsb"&&d!="hex")){d="rgb";}var c,a,e;if(d=="rgb"){c=b;a=b.rgbToHsb();
16
+ e=b.rgbToHex();}else{if(d=="hsb"){a=b;c=b.hsbToRgb();e=c.rgbToHex();}else{e=b;c=b.hexToRgb();a=c.rgbToHsb();}}this.sets={rgb:c,hsb:a,hex:e};if(!$chk(this.pickerPos.x)){this.autoSet(a);
17
+ }this.RedInput.value=c[0];this.GreenInput.value=c[1];this.BlueInput.value=c[2];this.HueInput.value=a[0];this.SatuInput.value=a[1];this.BrighInput.value=a[2];
18
+ this.hexInput.value=e;this.currentColor=c;this.chooseColor.setStyle("background-color",c.rgbToHex());},parseColors:function(c,g,f){var e=Math.round((c*100)/this.layout.overlay.width);
19
+ var a=100-Math.round((g*100)/this.layout.overlay.height);var d=360-Math.round((f*360)/this.layout.slider.height)+this.snippet("slider")-this.snippet("arrSize","int");
20
+ d-=this.snippet("arrSize","int");d=(d>=360)?0:(d<0)?0:d;e=(e>100)?100:(e<0)?0:e;a=(a>100)?100:(a<0)?0:a;return[d,e,a];},OverlayEvents:function(){var d,c,b,a;
21
+ c=this.snippet("curSize","int").h;b=this.snippet("curSize","int").w;a=$A(this.arrRGB).concat(this.arrHSB,this.hexInput);document.addEvent("click",function(){if(this.visible){this.hide(this.layout);
22
+ }}.bind(this));a.each(function(e){e.addEvent("keydown",this.eventKeydown.bindWithEvent(this,e));e.addEvent("keyup",this.eventKeyup.bindWithEvent(this,e));
23
+ },this);[this.element,this.layout].each(function(e){e.addEvents({click:function(f){new Event(f).stop();},keyup:function(f){f=new Event(f);if(f.key=="esc"&&this.visible){this.hide(this.layout);
24
+ }}.bind(this)},this);},this);d={x:[0-b,126],y:[0-c,126]};this.layout.drag=new Drag(this.layout.cursor,{limit:d,onBeforeStart:this.overlayDrag.bind(this),onStart:this.overlayDrag.bind(this),onDrag:this.overlayDrag.bind(this),snap:0});
25
+ this.layout.overlay2.addEvent("mousedown",function(f){f=new Event(f);this.layout.cursor.setStyles({top:f.page.y-this.layout.overlay.getTop()-c,left:f.page.x-this.layout.overlay.getLeft()-b});
26
+ this.layout.drag.start(f);}.bind(this));this.okButton.addEvent("click",function(){if(this.currentColor==this.options.startColor){this.hide();this.fireEvent("onComplete",[this.sets,this]);
27
+ }else{this.backupColor=this.currentColor;this.layout.backup.setStyle("background-color",this.backupColor.rgbToHex());this.hide();this.fireEvent("onComplete",[this.sets,this]);
28
+ }}.bind(this));},overlayDrag:function(){var b=this.snippet("curSize","int").h;var a=this.snippet("curSize","int").w;this.pickerPos.x=this.snippet("curPos").l+a;
29
+ this.pickerPos.y=this.snippet("curPos").t+b;this.setMooRainbow(this.parseColors(this.pickerPos.x,this.pickerPos.y,this.sliderPos),"hsb");this.fireEvent("onChange",[this.sets,this]);
30
+ },sliderEvents:function(){var a=this.snippet("arrSize","int"),b;b=[0+this.snippet("slider")-a,this.layout.slider.height-a+this.snippet("slider")];this.layout.sliderDrag=new Drag(this.layout.arrows,{limit:{y:b},modifiers:{x:false},onBeforeStart:this.sliderDrag.bind(this),onStart:this.sliderDrag.bind(this),onDrag:this.sliderDrag.bind(this),snap:0});
31
+ this.layout.slider.addEvent("mousedown",function(c){c=new Event(c);this.layout.arrows.setStyle("top",c.page.y-this.layout.slider.getTop()+this.snippet("slider")-a);
32
+ this.layout.sliderDrag.start(c);}.bind(this));},sliderDrag:function(){var a=this.snippet("arrSize","int"),b;this.sliderPos=this.snippet("arrPos")-a;this.setMooRainbow(this.parseColors(this.pickerPos.x,this.pickerPos.y,this.sliderPos),"hsb");
33
+ b=[this.sets.hsb[0],100,100].hsbToRgb().rgbToHex();this.layout.overlay.setStyle("background-color",b);this.fireEvent("onChange",[this.sets,this]);},backupEvent:function(){this.layout.backup.addEvent("click",function(){this.manualSet(this.backupColor);
34
+ this.fireEvent("onChange",[this.sets,this]);}.bind(this));},wheelEvents:function(){var a=$A(this.arrRGB).extend(this.arrHSB);a.each(function(b){b.addEvents({mousewheel:this.eventKeys.bindWithEvent(this,b),keydown:this.eventKeys.bindWithEvent(this,b)});
35
+ },this);[this.layout.arrows,this.layout.slider].each(function(b){b.addEvents({mousewheel:this.eventKeys.bindWithEvent(this,[this.arrHSB[0],"slider"]),keydown:this.eventKeys.bindWithEvent(this,[this.arrHSB[0],"slider"])});
36
+ },this);},eventKeys:function(f,b,a){var g,h;a=(!a)?b.id:this.arrHSB[0];if(f.type=="keydown"){if(f.key=="up"){g=1;}else{if(f.key=="down"){g=-1;}else{return;
37
+ }}}else{if(f.type==Element.Events.mousewheel.base){g=(f.wheel>0)?1:-1;}}if(this.arrRGB.contains(b)){h="rgb";}else{if(this.arrHSB.contains(b)){h="hsb";}else{h="hsb";
38
+ }}var i,j,c,d,k;if(h=="rgb"){i=this.sets.rgb;c=this.sets.hsb;d=this.options.prefix;j=(b.value.toInt()||0)+g;j=(j>255)?255:(j<0)?0:j;switch(b.className){case d+"rInput":k=[j,i[1],i[2]];
39
+ break;case d+"gInput":k=[i[0],j,i[2]];break;case d+"bInput":k=[i[0],i[1],j];break;default:k=i;}this.manualSet(k);this.fireEvent("onChange",[this.sets,this]);
40
+ }else{i=this.sets.rgb;c=this.sets.hsb;d=this.options.prefix;j=(b.value.toInt()||0)+g;if(b.className.test(/(HueInput)/)){j=(j>359)?0:(j<0)?0:j;}else{j=(j>100)?100:(j<0)?0:j;
41
+ }switch(b.className){case d+"HueInput":k=[j,c[1],c[2]];break;case d+"SatuInput":k=[c[0],j,c[2]];break;case d+"BrighInput":k=[c[0],c[1],j];break;default:k=c;
42
+ }this.manualSet(k,"hsb");this.fireEvent("onChange",[this.sets,this]);}f.stop();},eventKeydown:function(c,b){var d=c.code,a=c.key;if((!b.className.test(/hexInput/)&&!(d>=48&&d<=57))&&(a!="backspace"&&a!="tab"&&a!="delete"&&a!="left"&&a!="right")){c.stop();
43
+ }},eventKeyup:function(g,c){var h=g.code,a=g.key,d,f,b=c.value.charAt(0);if(!$chk(c.value)){return;}if(c.className.test(/hexInput/)){if(b!="#"&&c.value.length!=6){return;
44
+ }if(b=="#"&&c.value.length!=7){return;}}else{if(!(h>=48&&h<=57)&&(!["backspace","tab","delete","left","right"].contains(a))&&c.value.length>3){return;}}f=this.options.prefix;
45
+ if(c.className.test(/(rInput|gInput|bInput)/)){if(c.value<0||c.value>255){return;}switch(c.className){case f+"rInput":d=[c.value,this.sets.rgb[1],this.sets.rgb[2]];
46
+ break;case f+"gInput":d=[this.sets.rgb[0],c.value,this.sets.rgb[2]];break;case f+"bInput":d=[this.sets.rgb[0],this.sets.rgb[1],c.value];break;default:d=this.sets.rgb;
47
+ }this.manualSet(d);this.fireEvent("onChange",[this.sets,this]);}else{if(!c.className.test(/hexInput/)){if(c.className.test(/HueInput/)&&c.value<0||c.value>360){return;
48
+ }else{if(c.className.test(/HueInput/)&&c.value==360){c.value=0;}else{if(c.className.test(/(SatuInput|BrighInput)/)&&c.value<0||c.value>100){return;}}}switch(c.className){case f+"HueInput":d=[c.value,this.sets.hsb[1],this.sets.hsb[2]];
49
+ break;case f+"SatuInput":d=[this.sets.hsb[0],c.value,this.sets.hsb[2]];break;case f+"BrighInput":d=[this.sets.hsb[0],this.sets.hsb[1],c.value];break;default:d=this.sets.hsb;
50
+ }this.manualSet(d,"hsb");this.fireEvent("onChange",[this.sets,this]);}else{d=c.value.hexToRgb(true);if(isNaN(d[0])||isNaN(d[1])||isNaN(d[2])){return;}if($chk(d)){this.manualSet(d);
51
+ this.fireEvent("onChange",[this.sets,this]);}}}},doLayout:function(){var q=this.options.id,w=this.options.prefix,n=this;var b=q+" ."+w;this.layout=new Element("div",{styles:{display:"block",position:"absolute"},id:q}).inject(document.body);
52
+ Rainbows.push(this);var i=new Element("div",{styles:{position:"relative"},"class":w+"box"}).inject(this.layout);var m=new Element("div",{styles:{position:"absolute",overflow:"hidden"},"class":w+"overlayBox"}).inject(i);
53
+ var o=new Element("div",{styles:{position:"absolute",zIndex:1},"class":w+"arrows"}).inject(i);o.width=o.getStyle("width").toInt();o.height=o.getStyle("height").toInt();
54
+ var f=new Element("img",{styles:{"background-color":"#fff",position:"relative",zIndex:2},src:this.options.imgPath+"moor_woverlay.png","class":w+"overlay"}).inject(m);
55
+ var l=new Element("img",{styles:{position:"absolute",top:0,left:0,zIndex:2},src:this.options.imgPath+"moor_boverlay.png","class":w+"overlay"}).inject(m);
56
+ if(Browser.Engine.trident4){m.setStyle("overflow","");var g=f.src;f.src=this.options.imgPath+"blank.gif";f.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+g+"', sizingMethod='scale')";
57
+ g=l.src;l.src=this.options.imgPath+"blank.gif";l.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+g+"', sizingMethod='scale')";}f.width=l.width=m.getStyle("width").toInt();
58
+ f.height=l.height=m.getStyle("height").toInt();var e=new Element("div",{styles:{overflow:"hidden",position:"absolute",zIndex:2},"class":w+"cursor"}).inject(m);
59
+ e.width=e.getStyle("width").toInt();e.height=e.getStyle("height").toInt();var y=new Element("img",{styles:{position:"absolute","z-index":2},src:this.options.imgPath+"moor_slider.png","class":w+"slider"}).inject(i);
60
+ this.layout.slider=document.getElement("#"+b+"slider");y.width=y.getStyle("width").toInt();y.height=y.getStyle("height").toInt();new Element("div",{styles:{position:"absolute"},"class":w+"colorBox"}).inject(i);
61
+ new Element("div",{styles:{zIndex:2,position:"absolute"},"class":w+"chooseColor"}).inject(i);this.layout.backup=new Element("div",{styles:{zIndex:2,position:"absolute",cursor:"pointer"},"class":w+"currentColor"}).inject(i);
62
+ var d=new Element("label").inject(i).setStyle("position","absolute");var j=d.clone().inject(i).addClass(w+"gLabel").appendText("G: ");var p=d.clone().inject(i).addClass(w+"bLabel").appendText("B: ");
63
+ d.appendText("R: ").addClass(w+"rLabel");var A=new Element("input");var a=A.clone().inject(j).addClass(w+"gInput");var c=A.clone().inject(p).addClass(w+"bInput");
64
+ A.inject(d).addClass(w+"rInput");var u=new Element("label").inject(i).setStyle("position","absolute");var z=u.clone().inject(i).addClass(w+"SatuLabel").appendText("S: ");
65
+ var v=u.clone().inject(i).addClass(w+"BrighLabel").appendText("B: ");u.appendText("H: ").addClass(w+"HueLabel");var r=new Element("input");var x=r.clone().inject(z).addClass(w+"SatuInput");
66
+ var t=r.clone().inject(v).addClass(w+"BrighInput");r.inject(u).addClass(w+"HueInput");z.appendText(" %");v.appendText(" %");new Element("span",{styles:{position:"absolute"},"class":w+"ballino"}).set("html"," &deg;").injectAfter(u);
67
+ var h=new Element("label").inject(i).setStyle("position","absolute").addClass(w+"hexLabel").appendText("#hex: ").adopt(new Element("input").addClass(w+"hexInput"));
68
+ var k=new Element("input",{styles:{position:"absolute"},type:"button",value:"Select","class":w+"okButton"}).inject(i);if(this.options.transparent){var s=new Element("div",{"class":w+"transpButton"}).inject(i).set("html","<span>X</span>").addEvent("click",function(){n.fireEvent("onChange","transparent");
69
+ k.fireEvent("click");});}if(!window.opera){this.rePosition();}var C=$$("#"+b+"overlay");this.layout.overlay=C[0];this.layout.overlay2=C[1];this.layout.cursor=document.getElement("#"+b+"cursor");
70
+ this.layout.arrows=document.getElement("#"+b+"arrows");this.chooseColor=document.getElement("#"+b+"chooseColor");this.layout.backup=document.getElement("#"+b+"currentColor");
71
+ this.RedInput=document.getElement("#"+b+"rInput");this.GreenInput=document.getElement("#"+b+"gInput");this.BlueInput=document.getElement("#"+b+"bInput");
72
+ this.HueInput=document.getElement("#"+b+"HueInput");this.SatuInput=document.getElement("#"+b+"SatuInput");this.BrighInput=document.getElement("#"+b+"BrighInput");
73
+ this.hexInput=document.getElement("#"+b+"hexInput");this.arrRGB=[this.RedInput,this.GreenInput,this.BlueInput];this.arrHSB=[this.HueInput,this.SatuInput,this.BrighInput];
74
+ this.okButton=document.getElement("#"+b+"okButton");if(!window.khtml){this.hide();}},rePosition:function(){var a=this.element.getCoordinates();this.layout.setStyles({left:a.left+22,top:a.top-20});
75
+ },snippet:function(g,f){var d;f=(f)?f:"none";var c,e;switch(g){case"arrPos":c=this.layout.arrows.getStyle("top").toInt();d=c;break;case"arrSize":e=this.layout.arrows.height;
76
+ e=(f=="int")?(e/2).toInt():e;d=e;break;case"curPos":var b=this.layout.cursor.getStyle("left").toInt();c=this.layout.cursor.getStyle("top").toInt();d={l:b,t:c};
77
+ break;case"slider":c=this.layout.slider.getStyle("marginTop").toInt();d=c;break;default:e=this.layout.cursor.height;var a=this.layout.cursor.width;e=(f=="int")?(e/2).toInt():e;
78
+ a=(f=="int")?(a/2).toInt():a;d={w:a,h:e};}return d;}});
admin/widgets/fonts/js/fonts.js CHANGED
@@ -1,8 +1,52 @@
1
- /**
2
- * @version $Id: fonts.js 58623 2012-12-15 22:01:32Z btowles $
3
- * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
- * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
- */
7
-
8
- var GantryFonts={init:function(a,e,f){var d=document.id(GantryParamsPrefix+a),c=document.id(GantryParamsPrefix+e),b=document.id(GantryParamsPrefix+f);if(d&&c){d.addEvent("onChange",function(){var h=c.value;if(b){var g=b.getElements("."+h);if(this.value=="1"){b.getPrevious().getElements("li."+h).removeClass("disabled");g.removeProperty("disabled");}else{b.getPrevious().getElements("li."+h).addClass("disabled");g.setProperty("disabled","disabled");}}});d.fireEvent("onChange");}}};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ((function(){
2
+
3
+ var GF = this.GantryFonts = {
4
+ init: function(data){
5
+ this.data = data;
6
+ this.element = document.id(data.param);
7
+ this.element.store('g4:fonts:value', this.element.get('value'));
8
+
9
+ Object.each(data.paths, function(source, groupName){
10
+ this.load(groupName, source.delim, data.baseurl + source.json);
11
+ }, this);
12
+ },
13
+
14
+ load: function(groupName, delim, jsonPath){
15
+ var optgroup = new Element('optgroup', {label: groupName}).inject(this.element),
16
+ loading = new Element('option', {value: '-1', text: 'Loading...'}).inject(optgroup, 'top'), value, variant, option;
17
+
18
+ new Request.JSON({
19
+ url: jsonPath,
20
+ method: 'get',
21
+ onSuccess: function(response){
22
+ for (var i = 0, l = response.items.length; i < l; i++) {
23
+ value = response.items[i].family;
24
+ variant = "";
25
+ if (!response.items[i].variants.contains('regular')){
26
+ variant = ':' + response.items[i].variants[0];
27
+ //console.log(value, variant);
28
+ }
29
+ option = new Element('option', {text: value, value: delim + value + variant}).inject(optgroup);
30
+ }
31
+
32
+ //this.element.set('value', this.element.retrieve('g4:fonts:value'));
33
+ loading.dispose();
34
+ this.validate();
35
+ if (typeof jQuery != 'undefined') jQuery("#" + this.data.param).trigger("liszt:updated");
36
+ }.bind(this),
37
+ onError: function(text, error){
38
+ loading.set('text', 'Error(' + groupName + '): ' + error);
39
+ }
40
+ }).send();
41
+ },
42
+
43
+ validate: function(){
44
+ var value = this.element.get('data-value');
45
+ if (value.contains(':')) return this.element.set('value', value);
46
+
47
+ var element = this.element.getElement('[value$=:' + value + ']');
48
+ this.element.set('value', (element ? element : this.element.getElement('option')).get('value'));
49
+ }
50
+ };
51
+
52
+ })());
admin/widgets/fonts/js/google-fonts.json ADDED
@@ -0,0 +1,5943 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "kind": "webfonts#webfontList",
3
+ "items": [
4
+ {
5
+ "kind": "webfonts#webfont",
6
+ "family": "Abel",
7
+ "variants": [
8
+ "regular"
9
+ ],
10
+ "subsets": [
11
+ "latin"
12
+ ]
13
+ },
14
+ {
15
+ "kind": "webfonts#webfont",
16
+ "family": "Abril Fatface",
17
+ "variants": [
18
+ "regular"
19
+ ],
20
+ "subsets": [
21
+ "latin-ext",
22
+ "latin"
23
+ ]
24
+ },
25
+ {
26
+ "kind": "webfonts#webfont",
27
+ "family": "Aclonica",
28
+ "variants": [
29
+ "regular"
30
+ ],
31
+ "subsets": [
32
+ "latin"
33
+ ]
34
+ },
35
+ {
36
+ "kind": "webfonts#webfont",
37
+ "family": "Acme",
38
+ "variants": [
39
+ "regular"
40
+ ],
41
+ "subsets": [
42
+ "latin"
43
+ ]
44
+ },
45
+ {
46
+ "kind": "webfonts#webfont",
47
+ "family": "Actor",
48
+ "variants": [
49
+ "regular"
50
+ ],
51
+ "subsets": [
52
+ "latin"
53
+ ]
54
+ },
55
+ {
56
+ "kind": "webfonts#webfont",
57
+ "family": "Adamina",
58
+ "variants": [
59
+ "regular"
60
+ ],
61
+ "subsets": [
62
+ "latin"
63
+ ]
64
+ },
65
+ {
66
+ "kind": "webfonts#webfont",
67
+ "family": "Advent Pro",
68
+ "variants": [
69
+ "100",
70
+ "200",
71
+ "300",
72
+ "regular",
73
+ "500",
74
+ "600",
75
+ "700"
76
+ ],
77
+ "subsets": [
78
+ "greek",
79
+ "latin-ext",
80
+ "latin"
81
+ ]
82
+ },
83
+ {
84
+ "kind": "webfonts#webfont",
85
+ "family": "Aguafina Script",
86
+ "variants": [
87
+ "regular"
88
+ ],
89
+ "subsets": [
90
+ "latin-ext",
91
+ "latin"
92
+ ]
93
+ },
94
+ {
95
+ "kind": "webfonts#webfont",
96
+ "family": "Aladin",
97
+ "variants": [
98
+ "regular"
99
+ ],
100
+ "subsets": [
101
+ "latin-ext",
102
+ "latin"
103
+ ]
104
+ },
105
+ {
106
+ "kind": "webfonts#webfont",
107
+ "family": "Aldrich",
108
+ "variants": [
109
+ "regular"
110
+ ],
111
+ "subsets": [
112
+ "latin"
113
+ ]
114
+ },
115
+ {
116
+ "kind": "webfonts#webfont",
117
+ "family": "Alegreya",
118
+ "variants": [
119
+ "regular",
120
+ "italic",
121
+ "700",
122
+ "700italic",
123
+ "900",
124
+ "900italic"
125
+ ],
126
+ "subsets": [
127
+ "latin-ext",
128
+ "latin"
129
+ ]
130
+ },
131
+ {
132
+ "kind": "webfonts#webfont",
133
+ "family": "Alegreya SC",
134
+ "variants": [
135
+ "regular",
136
+ "italic",
137
+ "700",
138
+ "700italic",
139
+ "900",
140
+ "900italic"
141
+ ],
142
+ "subsets": [
143
+ "latin-ext",
144
+ "latin"
145
+ ]
146
+ },
147
+ {
148
+ "kind": "webfonts#webfont",
149
+ "family": "Alex Brush",
150
+ "variants": [
151
+ "regular"
152
+ ],
153
+ "subsets": [
154
+ "latin-ext",
155
+ "latin"
156
+ ]
157
+ },
158
+ {
159
+ "kind": "webfonts#webfont",
160
+ "family": "Alfa Slab One",
161
+ "variants": [
162
+ "regular"
163
+ ],
164
+ "subsets": [
165
+ "latin"
166
+ ]
167
+ },
168
+ {
169
+ "kind": "webfonts#webfont",
170
+ "family": "Alice",
171
+ "variants": [
172
+ "regular"
173
+ ],
174
+ "subsets": [
175
+ "latin"
176
+ ]
177
+ },
178
+ {
179
+ "kind": "webfonts#webfont",
180
+ "family": "Alike",
181
+ "variants": [
182
+ "regular"
183
+ ],
184
+ "subsets": [
185
+ "latin"
186
+ ]
187
+ },
188
+ {
189
+ "kind": "webfonts#webfont",
190
+ "family": "Alike Angular",
191
+ "variants": [
192
+ "regular"
193
+ ],
194
+ "subsets": [
195
+ "latin"
196
+ ]
197
+ },
198
+ {
199
+ "kind": "webfonts#webfont",
200
+ "family": "Allan",
201
+ "variants": [
202
+ "700"
203
+ ],
204
+ "subsets": [
205
+ "latin"
206
+ ]
207
+ },
208
+ {
209
+ "kind": "webfonts#webfont",
210
+ "family": "Allerta",
211
+ "variants": [
212
+ "regular"
213
+ ],
214
+ "subsets": [
215
+ "latin"
216
+ ]
217
+ },
218
+ {
219
+ "kind": "webfonts#webfont",
220
+ "family": "Allerta Stencil",
221
+ "variants": [
222
+ "regular"
223
+ ],
224
+ "subsets": [
225
+ "latin"
226
+ ]
227
+ },
228
+ {
229
+ "kind": "webfonts#webfont",
230
+ "family": "Allura",
231
+ "variants": [
232
+ "regular"
233
+ ],
234
+ "subsets": [
235
+ "latin-ext",
236
+ "latin"
237
+ ]
238
+ },
239
+ {
240
+ "kind": "webfonts#webfont",
241
+ "family": "Almendra",
242
+ "variants": [
243
+ "regular",
244
+ "italic",
245
+ "700"
246
+ ],
247
+ "subsets": [
248
+ "latin-ext",
249
+ "latin"
250
+ ]
251
+ },
252
+ {
253
+ "kind": "webfonts#webfont",
254
+ "family": "Almendra SC",
255
+ "variants": [
256
+ "regular"
257
+ ],
258
+ "subsets": [
259
+ "latin"
260
+ ]
261
+ },
262
+ {
263
+ "kind": "webfonts#webfont",
264
+ "family": "Amarante",
265
+ "variants": [
266
+ "regular"
267
+ ],
268
+ "subsets": [
269
+ "latin-ext",
270
+ "latin"
271
+ ]
272
+ },
273
+ {
274
+ "kind": "webfonts#webfont",
275
+ "family": "Amaranth",
276
+ "variants": [
277
+ "regular",
278
+ "italic",
279
+ "700",
280
+ "700italic"
281
+ ],
282
+ "subsets": [
283
+ "latin"
284
+ ]
285
+ },
286
+ {
287
+ "kind": "webfonts#webfont",
288
+ "family": "Amatic SC",
289
+ "variants": [
290
+ "regular",
291
+ "700"
292
+ ],
293
+ "subsets": [
294
+ "latin"
295
+ ]
296
+ },
297
+ {
298
+ "kind": "webfonts#webfont",
299
+ "family": "Amethysta",
300
+ "variants": [
301
+ "regular"
302
+ ],
303
+ "subsets": [
304
+ "latin"
305
+ ]
306
+ },
307
+ {
308
+ "kind": "webfonts#webfont",
309
+ "family": "Andada",
310
+ "variants": [
311
+ "regular"
312
+ ],
313
+ "subsets": [
314
+ "latin-ext",
315
+ "latin"
316
+ ]
317
+ },
318
+ {
319
+ "kind": "webfonts#webfont",
320
+ "family": "Andika",
321
+ "variants": [
322
+ "regular"
323
+ ],
324
+ "subsets": [
325
+ "cyrillic-ext",
326
+ "latin-ext",
327
+ "latin",
328
+ "cyrillic"
329
+ ]
330
+ },
331
+ {
332
+ "kind": "webfonts#webfont",
333
+ "family": "Angkor",
334
+ "variants": [
335
+ "regular"
336
+ ],
337
+ "subsets": [
338
+ "khmer"
339
+ ]
340
+ },
341
+ {
342
+ "kind": "webfonts#webfont",
343
+ "family": "Annie Use Your Telescope",
344
+ "variants": [
345
+ "regular"
346
+ ],
347
+ "subsets": [
348
+ "latin"
349
+ ]
350
+ },
351
+ {
352
+ "kind": "webfonts#webfont",
353
+ "family": "Anonymous Pro",
354
+ "variants": [
355
+ "regular",
356
+ "italic",
357
+ "700",
358
+ "700italic"
359
+ ],
360
+ "subsets": [
361
+ "greek-ext",
362
+ "cyrillic-ext",
363
+ "greek",
364
+ "latin-ext",
365
+ "latin",
366
+ "cyrillic"
367
+ ]
368
+ },
369
+ {
370
+ "kind": "webfonts#webfont",
371
+ "family": "Antic",
372
+ "variants": [
373
+ "regular"
374
+ ],
375
+ "subsets": [
376
+ "latin"
377
+ ]
378
+ },
379
+ {
380
+ "kind": "webfonts#webfont",
381
+ "family": "Antic Didone",
382
+ "variants": [
383
+ "regular"
384
+ ],
385
+ "subsets": [
386
+ "latin"
387
+ ]
388
+ },
389
+ {
390
+ "kind": "webfonts#webfont",
391
+ "family": "Antic Slab",
392
+ "variants": [
393
+ "regular"
394
+ ],
395
+ "subsets": [
396
+ "latin"
397
+ ]
398
+ },
399
+ {
400
+ "kind": "webfonts#webfont",
401
+ "family": "Anton",
402
+ "variants": [
403
+ "regular"
404
+ ],
405
+ "subsets": [
406
+ "latin-ext",
407
+ "latin"
408
+ ]
409
+ },
410
+ {
411
+ "kind": "webfonts#webfont",
412
+ "family": "Arapey",
413
+ "variants": [
414
+ "regular",
415
+ "italic"
416
+ ],
417
+ "subsets": [
418
+ "latin"
419
+ ]
420
+ },
421
+ {
422
+ "kind": "webfonts#webfont",
423
+ "family": "Arbutus",
424
+ "variants": [
425
+ "regular"
426
+ ],
427
+ "subsets": [
428
+ "latin-ext",
429
+ "latin"
430
+ ]
431
+ },
432
+ {
433
+ "kind": "webfonts#webfont",
434
+ "family": "Architects Daughter",
435
+ "variants": [
436
+ "regular"
437
+ ],
438
+ "subsets": [
439
+ "latin"
440
+ ]
441
+ },
442
+ {
443
+ "kind": "webfonts#webfont",
444
+ "family": "Arimo",
445
+ "variants": [
446
+ "regular",
447
+ "italic",
448
+ "700",
449
+ "700italic"
450
+ ],
451
+ "subsets": [
452
+ "latin"
453
+ ]
454
+ },
455
+ {
456
+ "kind": "webfonts#webfont",
457
+ "family": "Arizonia",
458
+ "variants": [
459
+ "regular"
460
+ ],
461
+ "subsets": [
462
+ "latin-ext",
463
+ "latin"
464
+ ]
465
+ },
466
+ {
467
+ "kind": "webfonts#webfont",
468
+ "family": "Armata",
469
+ "variants": [
470
+ "regular"
471
+ ],
472
+ "subsets": [
473
+ "latin-ext",
474
+ "latin"
475
+ ]
476
+ },
477
+ {
478
+ "kind": "webfonts#webfont",
479
+ "family": "Artifika",
480
+ "variants": [
481
+ "regular"
482
+ ],
483
+ "subsets": [
484
+ "latin"
485
+ ]
486
+ },
487
+ {
488
+ "kind": "webfonts#webfont",
489
+ "family": "Arvo",
490
+ "variants": [
491
+ "regular",
492
+ "italic",
493
+ "700",
494
+ "700italic"
495
+ ],
496
+ "subsets": [
497
+ "latin"
498
+ ]
499
+ },
500
+ {
501
+ "kind": "webfonts#webfont",
502
+ "family": "Asap",
503
+ "variants": [
504
+ "regular",
505
+ "italic",
506
+ "700",
507
+ "700italic"
508
+ ],
509
+ "subsets": [
510
+ "latin-ext",
511
+ "latin"
512
+ ]
513
+ },
514
+ {
515
+ "kind": "webfonts#webfont",
516
+ "family": "Asset",
517
+ "variants": [
518
+ "regular"
519
+ ],
520
+ "subsets": [
521
+ "latin"
522
+ ]
523
+ },
524
+ {
525
+ "kind": "webfonts#webfont",
526
+ "family": "Astloch",
527
+ "variants": [
528
+ "regular",
529
+ "700"
530
+ ],
531
+ "subsets": [
532
+ "latin"
533
+ ]
534
+ },
535
+ {
536
+ "kind": "webfonts#webfont",
537
+ "family": "Asul",
538
+ "variants": [
539
+ "regular",
540
+ "700"
541
+ ],
542
+ "subsets": [
543
+ "latin"
544
+ ]
545
+ },
546
+ {
547
+ "kind": "webfonts#webfont",
548
+ "family": "Atomic Age",
549
+ "variants": [
550
+ "regular"
551
+ ],
552
+ "subsets": [
553
+ "latin"
554
+ ]
555
+ },
556
+ {
557
+ "kind": "webfonts#webfont",
558
+ "family": "Aubrey",
559
+ "variants": [
560
+ "regular"
561
+ ],
562
+ "subsets": [
563
+ "latin"
564
+ ]
565
+ },
566
+ {
567
+ "kind": "webfonts#webfont",
568
+ "family": "Audiowide",
569
+ "variants": [
570
+ "regular"
571
+ ],
572
+ "subsets": [
573
+ "latin-ext",
574
+ "latin"
575
+ ]
576
+ },
577
+ {
578
+ "kind": "webfonts#webfont",
579
+ "family": "Average",
580
+ "variants": [
581
+ "regular"
582
+ ],
583
+ "subsets": [
584
+ "latin-ext",
585
+ "latin"
586
+ ]
587
+ },
588
+ {
589
+ "kind": "webfonts#webfont",
590
+ "family": "Averia Gruesa Libre",
591
+ "variants": [
592
+ "regular"
593
+ ],
594
+ "subsets": [
595
+ "latin-ext",
596
+ "latin"
597
+ ]
598
+ },
599
+ {
600
+ "kind": "webfonts#webfont",
601
+ "family": "Averia Libre",
602
+ "variants": [
603
+ "300",
604
+ "300italic",
605
+ "regular",
606
+ "italic",
607
+ "700",
608
+ "700italic"
609
+ ],
610
+ "subsets": [
611
+ "latin"
612
+ ]
613
+ },
614
+ {
615
+ "kind": "webfonts#webfont",
616
+ "family": "Averia Sans Libre",
617
+ "variants": [
618
+ "300",
619
+ "300italic",
620
+ "regular",
621
+ "italic",
622
+ "700",
623
+ "700italic"
624
+ ],
625
+ "subsets": [
626
+ "latin"
627
+ ]
628
+ },
629
+ {
630
+ "kind": "webfonts#webfont",
631
+ "family": "Averia Serif Libre",
632
+ "variants": [
633
+ "300",
634
+ "300italic",
635
+ "regular",
636
+ "italic",
637
+ "700",
638
+ "700italic"
639
+ ],
640
+ "subsets": [
641
+ "latin"
642
+ ]
643
+ },
644
+ {
645
+ "kind": "webfonts#webfont",
646
+ "family": "Bad Script",
647
+ "variants": [
648
+ "regular"
649
+ ],
650
+ "subsets": [
651
+ "latin",
652
+ "cyrillic"
653
+ ]
654
+ },
655
+ {
656
+ "kind": "webfonts#webfont",
657
+ "family": "Balthazar",
658
+ "variants": [
659
+ "regular"
660
+ ],
661
+ "subsets": [
662
+ "latin"
663
+ ]
664
+ },
665
+ {
666
+ "kind": "webfonts#webfont",
667
+ "family": "Bangers",
668
+ "variants": [
669
+ "regular"
670
+ ],
671
+ "subsets": [
672
+ "latin"
673
+ ]
674
+ },
675
+ {
676
+ "kind": "webfonts#webfont",
677
+ "family": "Basic",
678
+ "variants": [
679
+ "regular"
680
+ ],
681
+ "subsets": [
682
+ "latin-ext",
683
+ "latin"
684
+ ]
685
+ },
686
+ {
687
+ "kind": "webfonts#webfont",
688
+ "family": "Battambang",
689
+ "variants": [
690
+ "regular",
691
+ "700"
692
+ ],
693
+ "subsets": [
694
+ "khmer"
695
+ ]
696
+ },
697
+ {
698
+ "kind": "webfonts#webfont",
699
+ "family": "Baumans",
700
+ "variants": [
701
+ "regular"
702
+ ],
703
+ "subsets": [
704
+ "latin"
705
+ ]
706
+ },
707
+ {
708
+ "kind": "webfonts#webfont",
709
+ "family": "Bayon",
710
+ "variants": [
711
+ "regular"
712
+ ],
713
+ "subsets": [
714
+ "khmer"
715
+ ]
716
+ },
717
+ {
718
+ "kind": "webfonts#webfont",
719
+ "family": "Belgrano",
720
+ "variants": [
721
+ "regular"
722
+ ],
723
+ "subsets": [
724
+ "latin"
725
+ ]
726
+ },
727
+ {
728
+ "kind": "webfonts#webfont",
729
+ "family": "Belleza",
730
+ "variants": [
731
+ "regular"
732
+ ],
733
+ "subsets": [
734
+ "latin-ext",
735
+ "latin"
736
+ ]
737
+ },
738
+ {
739
+ "kind": "webfonts#webfont",
740
+ "family": "Bentham",
741
+ "variants": [
742
+ "regular"
743
+ ],
744
+ "subsets": [
745
+ "latin"
746
+ ]
747
+ },
748
+ {
749
+ "kind": "webfonts#webfont",
750
+ "family": "Berkshire Swash",
751
+ "variants": [
752
+ "regular"
753
+ ],
754
+ "subsets": [
755
+ "latin-ext",
756
+ "latin"
757
+ ]
758
+ },
759
+ {
760
+ "kind": "webfonts#webfont",
761
+ "family": "Bevan",
762
+ "variants": [
763
+ "regular"
764
+ ],
765
+ "subsets": [
766
+ "latin"
767
+ ]
768
+ },
769
+ {
770
+ "kind": "webfonts#webfont",
771
+ "family": "Bigshot One",
772
+ "variants": [
773
+ "regular"
774
+ ],
775
+ "subsets": [
776
+ "latin"
777
+ ]
778
+ },
779
+ {
780
+ "kind": "webfonts#webfont",
781
+ "family": "Bilbo",
782
+ "variants": [
783
+ "regular"
784
+ ],
785
+ "subsets": [
786
+ "latin-ext",
787
+ "latin"
788
+ ]
789
+ },
790
+ {
791
+ "kind": "webfonts#webfont",
792
+ "family": "Bilbo Swash Caps",
793
+ "variants": [
794
+ "regular"
795
+ ],
796
+ "subsets": [
797
+ "latin-ext",
798
+ "latin"
799
+ ]
800
+ },
801
+ {
802
+ "kind": "webfonts#webfont",
803
+ "family": "Bitter",
804
+ "variants": [
805
+ "regular",
806
+ "italic",
807
+ "700"
808
+ ],
809
+ "subsets": [
810
+ "latin-ext",
811
+ "latin"
812
+ ]
813
+ },
814
+ {
815
+ "kind": "webfonts#webfont",
816
+ "family": "Black Ops One",
817
+ "variants": [
818
+ "regular"
819
+ ],
820
+ "subsets": [
821
+ "latin"
822
+ ]
823
+ },
824
+ {
825
+ "kind": "webfonts#webfont",
826
+ "family": "Bokor",
827
+ "variants": [
828
+ "regular"
829
+ ],
830
+ "subsets": [
831
+ "khmer"
832
+ ]
833
+ },
834
+ {
835
+ "kind": "webfonts#webfont",
836
+ "family": "Bonbon",
837
+ "variants": [
838
+ "regular"
839
+ ],
840
+ "subsets": [
841
+ "latin"
842
+ ]
843
+ },
844
+ {
845
+ "kind": "webfonts#webfont",
846
+ "family": "Boogaloo",
847
+ "variants": [
848
+ "regular"
849
+ ],
850
+ "subsets": [
851
+ "latin"
852
+ ]
853
+ },
854
+ {
855
+ "kind": "webfonts#webfont",
856
+ "family": "Bowlby One",
857
+ "variants": [
858
+ "regular"
859
+ ],
860
+ "subsets": [
861
+ "latin"
862
+ ]
863
+ },
864
+ {
865
+ "kind": "webfonts#webfont",
866
+ "family": "Bowlby One SC",
867
+ "variants": [
868
+ "regular"
869
+ ],
870
+ "subsets": [
871
+ "latin-ext",
872
+ "latin"
873
+ ]
874
+ },
875
+ {
876
+ "kind": "webfonts#webfont",
877
+ "family": "Brawler",
878
+ "variants": [
879
+ "regular"
880
+ ],
881
+ "subsets": [
882
+ "latin"
883
+ ]
884
+ },
885
+ {
886
+ "kind": "webfonts#webfont",
887
+ "family": "Bree Serif",
888
+ "variants": [
889
+ "regular"
890
+ ],
891
+ "subsets": [
892
+ "latin-ext",
893
+ "latin"
894
+ ]
895
+ },
896
+ {
897
+ "kind": "webfonts#webfont",
898
+ "family": "Bubblegum Sans",
899
+ "variants": [
900
+ "regular"
901
+ ],
902
+ "subsets": [
903
+ "latin-ext",
904
+ "latin"
905
+ ]
906
+ },
907
+ {
908
+ "kind": "webfonts#webfont",
909
+ "family": "Buda",
910
+ "variants": [
911
+ "300"
912
+ ],
913
+ "subsets": [
914
+ "latin"
915
+ ]
916
+ },
917
+ {
918
+ "kind": "webfonts#webfont",
919
+ "family": "Buenard",
920
+ "variants": [
921
+ "regular",
922
+ "700"
923
+ ],
924
+ "subsets": [
925
+ "latin-ext",
926
+ "latin"
927
+ ]
928
+ },
929
+ {
930
+ "kind": "webfonts#webfont",
931
+ "family": "Butcherman",
932
+ "variants": [
933
+ "regular"
934
+ ],
935
+ "subsets": [
936
+ "latin-ext",
937
+ "latin"
938
+ ]
939
+ },
940
+ {
941
+ "kind": "webfonts#webfont",
942
+ "family": "Butterfly Kids",
943
+ "variants": [
944
+ "regular"
945
+ ],
946
+ "subsets": [
947
+ "latin-ext",
948
+ "latin"
949
+ ]
950
+ },
951
+ {
952
+ "kind": "webfonts#webfont",
953
+ "family": "Cabin",
954
+ "variants": [
955
+ "regular",
956
+ "italic",
957
+ "500",
958
+ "500italic",
959
+ "600",
960
+ "600italic",
961
+ "700",
962
+ "700italic"
963
+ ],
964
+ "subsets": [
965
+ "latin"
966
+ ]
967
+ },
968
+ {
969
+ "kind": "webfonts#webfont",
970
+ "family": "Cabin Condensed",
971
+ "variants": [
972
+ "regular",
973
+ "500",
974
+ "600",
975
+ "700"
976
+ ],
977
+ "subsets": [
978
+ "latin"
979
+ ]
980
+ },
981
+ {
982
+ "kind": "webfonts#webfont",
983
+ "family": "Cabin Sketch",
984
+ "variants": [
985
+ "regular",
986
+ "700"
987
+ ],
988
+ "subsets": [
989
+ "latin"
990
+ ]
991
+ },
992
+ {
993
+ "kind": "webfonts#webfont",
994
+ "family": "Caesar Dressing",
995
+ "variants": [
996
+ "regular"
997
+ ],
998
+ "subsets": [
999
+ "latin"
1000
+ ]
1001
+ },
1002
+ {
1003
+ "kind": "webfonts#webfont",
1004
+ "family": "Cagliostro",
1005
+ "variants": [
1006
+ "regular"
1007
+ ],
1008
+ "subsets": [
1009
+ "latin"
1010
+ ]
1011
+ },
1012
+ {
1013
+ "kind": "webfonts#webfont",
1014
+ "family": "Calligraffitti",
1015
+ "variants": [
1016
+ "regular"
1017
+ ],
1018
+ "subsets": [
1019
+ "latin"
1020
+ ]
1021
+ },
1022
+ {
1023
+ "kind": "webfonts#webfont",
1024
+ "family": "Cambo",
1025
+ "variants": [
1026
+ "regular"
1027
+ ],
1028
+ "subsets": [
1029
+ "latin"
1030
+ ]
1031
+ },
1032
+ {
1033
+ "kind": "webfonts#webfont",
1034
+ "family": "Candal",
1035
+ "variants": [
1036
+ "regular"
1037
+ ],
1038
+ "subsets": [
1039
+ "latin"
1040
+ ]
1041
+ },
1042
+ {
1043
+ "kind": "webfonts#webfont",
1044
+ "family": "Cantarell",
1045
+ "variants": [
1046
+ "regular",
1047
+ "italic",
1048
+ "700",
1049
+ "700italic"
1050
+ ],
1051
+ "subsets": [
1052
+ "latin"
1053
+ ]
1054
+ },
1055
+ {
1056
+ "kind": "webfonts#webfont",
1057
+ "family": "Cantata One",
1058
+ "variants": [
1059
+ "regular"
1060
+ ],
1061
+ "subsets": [
1062
+ "latin-ext",
1063
+ "latin"
1064
+ ]
1065
+ },
1066
+ {
1067
+ "kind": "webfonts#webfont",
1068
+ "family": "Capriola",
1069
+ "variants": [
1070
+ "regular"
1071
+ ],
1072
+ "subsets": [
1073
+ "latin-ext",
1074
+ "latin"
1075
+ ]
1076
+ },
1077
+ {
1078
+ "kind": "webfonts#webfont",
1079
+ "family": "Cardo",
1080
+ "variants": [
1081
+ "regular",
1082
+ "italic",
1083
+ "700"
1084
+ ],
1085
+ "subsets": [
1086
+ "greek-ext",
1087
+ "greek",
1088
+ "latin-ext",
1089
+ "latin"
1090
+ ]
1091
+ },
1092
+ {
1093
+ "kind": "webfonts#webfont",
1094
+ "family": "Carme",
1095
+ "variants": [
1096
+ "regular"
1097
+ ],
1098
+ "subsets": [
1099
+ "latin"
1100
+ ]
1101
+ },
1102
+ {
1103
+ "kind": "webfonts#webfont",
1104
+ "family": "Carter One",
1105
+ "variants": [
1106
+ "regular"
1107
+ ],
1108
+ "subsets": [
1109
+ "latin"
1110
+ ]
1111
+ },
1112
+ {
1113
+ "kind": "webfonts#webfont",
1114
+ "family": "Caudex",
1115
+ "variants": [
1116
+ "regular",
1117
+ "italic",
1118
+ "700",
1119
+ "700italic"
1120
+ ],
1121
+ "subsets": [
1122
+ "greek-ext",
1123
+ "greek",
1124
+ "latin-ext",
1125
+ "latin"
1126
+ ]
1127
+ },
1128
+ {
1129
+ "kind": "webfonts#webfont",
1130
+ "family": "Cedarville Cursive",
1131
+ "variants": [
1132
+ "regular"
1133
+ ],
1134
+ "subsets": [
1135
+ "latin"
1136
+ ]
1137
+ },
1138
+ {
1139
+ "kind": "webfonts#webfont",
1140
+ "family": "Ceviche One",
1141
+ "variants": [
1142
+ "regular"
1143
+ ],
1144
+ "subsets": [
1145
+ "latin"
1146
+ ]
1147
+ },
1148
+ {
1149
+ "kind": "webfonts#webfont",
1150
+ "family": "Changa One",
1151
+ "variants": [
1152
+ "regular",
1153
+ "italic"
1154
+ ],
1155
+ "subsets": [
1156
+ "latin"
1157
+ ]
1158
+ },
1159
+ {
1160
+ "kind": "webfonts#webfont",
1161
+ "family": "Chango",
1162
+ "variants": [
1163
+ "regular"
1164
+ ],
1165
+ "subsets": [
1166
+ "latin-ext",
1167
+ "latin"
1168
+ ]
1169
+ },
1170
+ {
1171
+ "kind": "webfonts#webfont",
1172
+ "family": "Chau Philomene One",
1173
+ "variants": [
1174
+ "regular",
1175
+ "italic"
1176
+ ],
1177
+ "subsets": [
1178
+ "latin-ext",
1179
+ "latin"
1180
+ ]
1181
+ },
1182
+ {
1183
+ "kind": "webfonts#webfont",
1184
+ "family": "Chelsea Market",
1185
+ "variants": [
1186
+ "regular"
1187
+ ],
1188
+ "subsets": [
1189
+ "latin-ext",
1190
+ "latin"
1191
+ ]
1192
+ },
1193
+ {
1194
+ "kind": "webfonts#webfont",
1195
+ "family": "Chenla",
1196
+ "variants": [
1197
+ "regular"
1198
+ ],
1199
+ "subsets": [
1200
+ "khmer"
1201
+ ]
1202
+ },
1203
+ {
1204
+ "kind": "webfonts#webfont",
1205
+ "family": "Cherry Cream Soda",
1206
+ "variants": [
1207
+ "regular"
1208
+ ],
1209
+ "subsets": [
1210
+ "latin"
1211
+ ]
1212
+ },
1213
+ {
1214
+ "kind": "webfonts#webfont",
1215
+ "family": "Chewy",
1216
+ "variants": [
1217
+ "regular"
1218
+ ],
1219
+ "subsets": [
1220
+ "latin"
1221
+ ]
1222
+ },
1223
+ {
1224
+ "kind": "webfonts#webfont",
1225
+ "family": "Chicle",
1226
+ "variants": [
1227
+ "regular"
1228
+ ],
1229
+ "subsets": [
1230
+ "latin-ext",
1231
+ "latin"
1232
+ ]
1233
+ },
1234
+ {
1235
+ "kind": "webfonts#webfont",
1236
+ "family": "Chivo",
1237
+ "variants": [
1238
+ "regular",
1239
+ "italic",
1240
+ "900",
1241
+ "900italic"
1242
+ ],
1243
+ "subsets": [
1244
+ "latin"
1245
+ ]
1246
+ },
1247
+ {
1248
+ "kind": "webfonts#webfont",
1249
+ "family": "Coda",
1250
+ "variants": [
1251
+ "regular",
1252
+ "800"
1253
+ ],
1254
+ "subsets": [
1255
+ "latin"
1256
+ ]
1257
+ },
1258
+ {
1259
+ "kind": "webfonts#webfont",
1260
+ "family": "Coda Caption",
1261
+ "variants": [
1262
+ "800"
1263
+ ],
1264
+ "subsets": [
1265
+ "latin"
1266
+ ]
1267
+ },
1268
+ {
1269
+ "kind": "webfonts#webfont",
1270
+ "family": "Codystar",
1271
+ "variants": [
1272
+ "300",
1273
+ "regular"
1274
+ ],
1275
+ "subsets": [
1276
+ "latin-ext",
1277
+ "latin"
1278
+ ]
1279
+ },
1280
+ {
1281
+ "kind": "webfonts#webfont",
1282
+ "family": "Comfortaa",
1283
+ "variants": [
1284
+ "300",
1285
+ "regular",
1286
+ "700"
1287
+ ],
1288
+ "subsets": [
1289
+ "cyrillic-ext",
1290
+ "greek",
1291
+ "latin-ext",
1292
+ "latin",
1293
+ "cyrillic"
1294
+ ]
1295
+ },
1296
+ {
1297
+ "kind": "webfonts#webfont",
1298
+ "family": "Coming Soon",
1299
+ "variants": [
1300
+ "regular"
1301
+ ],
1302
+ "subsets": [
1303
+ "latin"
1304
+ ]
1305
+ },
1306
+ {
1307
+ "kind": "webfonts#webfont",
1308
+ "family": "Concert One",
1309
+ "variants": [
1310
+ "regular"
1311
+ ],
1312
+ "subsets": [
1313
+ "latin-ext",
1314
+ "latin"
1315
+ ]
1316
+ },
1317
+ {
1318
+ "kind": "webfonts#webfont",
1319
+ "family": "Condiment",
1320
+ "variants": [
1321
+ "regular"
1322
+ ],
1323
+ "subsets": [
1324
+ "latin-ext",
1325
+ "latin"
1326
+ ]
1327
+ },
1328
+ {
1329
+ "kind": "webfonts#webfont",
1330
+ "family": "Content",
1331
+ "variants": [
1332
+ "regular",
1333
+ "700"
1334
+ ],
1335
+ "subsets": [
1336
+ "khmer"
1337
+ ]
1338
+ },
1339
+ {
1340
+ "kind": "webfonts#webfont",
1341
+ "family": "Contrail One",
1342
+ "variants": [
1343
+ "regular"
1344
+ ],
1345
+ "subsets": [
1346
+ "latin"
1347
+ ]
1348
+ },
1349
+ {
1350
+ "kind": "webfonts#webfont",
1351
+ "family": "Convergence",
1352
+ "variants": [
1353
+ "regular"
1354
+ ],
1355
+ "subsets": [
1356
+ "latin"
1357
+ ]
1358
+ },
1359
+ {
1360
+ "kind": "webfonts#webfont",
1361
+ "family": "Cookie",
1362
+ "variants": [
1363
+ "regular"
1364
+ ],
1365
+ "subsets": [
1366
+ "latin"
1367
+ ]
1368
+ },
1369
+ {
1370
+ "kind": "webfonts#webfont",
1371
+ "family": "Copse",
1372
+ "variants": [
1373
+ "regular"
1374
+ ],
1375
+ "subsets": [
1376
+ "latin"
1377
+ ]
1378
+ },
1379
+ {
1380
+ "kind": "webfonts#webfont",
1381
+ "family": "Corben",
1382
+ "variants": [
1383
+ "regular",
1384
+ "700"
1385
+ ],
1386
+ "subsets": [
1387
+ "latin"
1388
+ ]
1389
+ },
1390
+ {
1391
+ "kind": "webfonts#webfont",
1392
+ "family": "Courgette",
1393
+ "variants": [
1394
+ "regular"
1395
+ ],
1396
+ "subsets": [
1397
+ "latin-ext",
1398
+ "latin"
1399
+ ]
1400
+ },
1401
+ {
1402
+ "kind": "webfonts#webfont",
1403
+ "family": "Cousine",
1404
+ "variants": [
1405
+ "regular",
1406
+ "italic",
1407
+ "700",
1408
+ "700italic"
1409
+ ],
1410
+ "subsets": [
1411
+ "latin"
1412
+ ]
1413
+ },
1414
+ {
1415
+ "kind": "webfonts#webfont",
1416
+ "family": "Coustard",
1417
+ "variants": [
1418
+ "regular",
1419
+ "900"
1420
+ ],
1421
+ "subsets": [
1422
+ "latin"
1423
+ ]
1424
+ },
1425
+ {
1426
+ "kind": "webfonts#webfont",
1427
+ "family": "Covered By Your Grace",
1428
+ "variants": [
1429
+ "regular"
1430
+ ],
1431
+ "subsets": [
1432
+ "latin"
1433
+ ]
1434
+ },
1435
+ {
1436
+ "kind": "webfonts#webfont",
1437
+ "family": "Crafty Girls",
1438
+ "variants": [
1439
+ "regular"
1440
+ ],
1441
+ "subsets": [
1442
+ "latin"
1443
+ ]
1444
+ },
1445
+ {
1446
+ "kind": "webfonts#webfont",
1447
+ "family": "Creepster",
1448
+ "variants": [
1449
+ "regular"
1450
+ ],
1451
+ "subsets": [
1452
+ "latin"
1453
+ ]
1454
+ },
1455
+ {
1456
+ "kind": "webfonts#webfont",
1457
+ "family": "Crete Round",
1458
+ "variants": [
1459
+ "regular",
1460
+ "italic"
1461
+ ],
1462
+ "subsets": [
1463
+ "latin-ext",
1464
+ "latin"
1465
+ ]
1466
+ },
1467
+ {
1468
+ "kind": "webfonts#webfont",
1469
+ "family": "Crimson Text",
1470
+ "variants": [
1471
+ "regular",
1472
+ "italic",
1473
+ "600",
1474
+ "600italic",
1475
+ "700",
1476
+ "700italic"
1477
+ ],
1478
+ "subsets": [
1479
+ "latin"
1480
+ ]
1481
+ },
1482
+ {
1483
+ "kind": "webfonts#webfont",
1484
+ "family": "Crushed",
1485
+ "variants": [
1486
+ "regular"
1487
+ ],
1488
+ "subsets": [
1489
+ "latin"
1490
+ ]
1491
+ },
1492
+ {
1493
+ "kind": "webfonts#webfont",
1494
+ "family": "Cuprum",
1495
+ "variants": [
1496
+ "regular",
1497
+ "italic",
1498
+ "700",
1499
+ "700italic"
1500
+ ],
1501
+ "subsets": [
1502
+ "latin-ext",
1503
+ "latin",
1504
+ "cyrillic"
1505
+ ]
1506
+ },
1507
+ {
1508
+ "kind": "webfonts#webfont",
1509
+ "family": "Cutive",
1510
+ "variants": [
1511
+ "regular"
1512
+ ],
1513
+ "subsets": [
1514
+ "latin-ext",
1515
+ "latin"
1516
+ ]
1517
+ },
1518
+ {
1519
+ "kind": "webfonts#webfont",
1520
+ "family": "Damion",
1521
+ "variants": [
1522
+ "regular"
1523
+ ],
1524
+ "subsets": [
1525
+ "latin"
1526
+ ]
1527
+ },
1528
+ {
1529
+ "kind": "webfonts#webfont",
1530
+ "family": "Dancing Script",
1531
+ "variants": [
1532
+ "regular",
1533
+ "700"
1534
+ ],
1535
+ "subsets": [
1536
+ "latin"
1537
+ ]
1538
+ },
1539
+ {
1540
+ "kind": "webfonts#webfont",
1541
+ "family": "Dangrek",
1542
+ "variants": [
1543
+ "regular"
1544
+ ],
1545
+ "subsets": [
1546
+ "khmer"
1547
+ ]
1548
+ },
1549
+ {
1550
+ "kind": "webfonts#webfont",
1551
+ "family": "Dawning of a New Day",
1552
+ "variants": [
1553
+ "regular"
1554
+ ],
1555
+ "subsets": [
1556
+ "latin"
1557
+ ]
1558
+ },
1559
+ {
1560
+ "kind": "webfonts#webfont",
1561
+ "family": "Days One",
1562
+ "variants": [
1563
+ "regular"
1564
+ ],
1565
+ "subsets": [
1566
+ "latin"
1567
+ ]
1568
+ },
1569
+ {
1570
+ "kind": "webfonts#webfont",
1571
+ "family": "Delius",
1572
+ "variants": [
1573
+ "regular"
1574
+ ],
1575
+ "subsets": [
1576
+ "latin"
1577
+ ]
1578
+ },
1579
+ {
1580
+ "kind": "webfonts#webfont",
1581
+ "family": "Delius Swash Caps",
1582
+ "variants": [
1583
+ "regular"
1584
+ ],
1585
+ "subsets": [
1586
+ "latin"
1587
+ ]
1588
+ },
1589
+ {
1590
+ "kind": "webfonts#webfont",
1591
+ "family": "Delius Unicase",
1592
+ "variants": [
1593
+ "regular",
1594
+ "700"
1595
+ ],
1596
+ "subsets": [
1597
+ "latin"
1598
+ ]
1599
+ },
1600
+ {
1601
+ "kind": "webfonts#webfont",
1602
+ "family": "Della Respira",
1603
+ "variants": [
1604
+ "regular"
1605
+ ],
1606
+ "subsets": [
1607
+ "latin"
1608
+ ]
1609
+ },
1610
+ {
1611
+ "kind": "webfonts#webfont",
1612
+ "family": "Devonshire",
1613
+ "variants": [
1614
+ "regular"
1615
+ ],
1616
+ "subsets": [
1617
+ "latin-ext",
1618
+ "latin"
1619
+ ]
1620
+ },
1621
+ {
1622
+ "kind": "webfonts#webfont",
1623
+ "family": "Didact Gothic",
1624
+ "variants": [
1625
+ "regular"
1626
+ ],
1627
+ "subsets": [
1628
+ "greek-ext",
1629
+ "cyrillic-ext",
1630
+ "greek",
1631
+ "latin-ext",
1632
+ "latin",
1633
+ "cyrillic"
1634
+ ]
1635
+ },
1636
+ {
1637
+ "kind": "webfonts#webfont",
1638
+ "family": "Diplomata",
1639
+ "variants": [
1640
+ "regular"
1641
+ ],
1642
+ "subsets": [
1643
+ "latin-ext",
1644
+ "latin"
1645
+ ]
1646
+ },
1647
+ {
1648
+ "kind": "webfonts#webfont",
1649
+ "family": "Diplomata SC",
1650
+ "variants": [
1651
+ "regular"
1652
+ ],
1653
+ "subsets": [
1654
+ "latin-ext",
1655
+ "latin"
1656
+ ]
1657
+ },
1658
+ {
1659
+ "kind": "webfonts#webfont",
1660
+ "family": "Doppio One",
1661
+ "variants": [
1662
+ "regular"
1663
+ ],
1664
+ "subsets": [
1665
+ "latin-ext",
1666
+ "latin"
1667
+ ]
1668
+ },
1669
+ {
1670
+ "kind": "webfonts#webfont",
1671
+ "family": "Dorsa",
1672
+ "variants": [
1673
+ "regular"
1674
+ ],
1675
+ "subsets": [
1676
+ "latin"
1677
+ ]
1678
+ },
1679
+ {
1680
+ "kind": "webfonts#webfont",
1681
+ "family": "Dosis",
1682
+ "variants": [
1683
+ "200",
1684
+ "300",
1685
+ "regular",
1686
+ "500",
1687
+ "600",
1688
+ "700",
1689
+ "800"
1690
+ ],
1691
+ "subsets": [
1692
+ "latin-ext",
1693
+ "latin"
1694
+ ]
1695
+ },
1696
+ {
1697
+ "kind": "webfonts#webfont",
1698
+ "family": "Dr Sugiyama",
1699
+ "variants": [
1700
+ "regular"
1701
+ ],
1702
+ "subsets": [
1703
+ "latin-ext",
1704
+ "latin"
1705
+ ]
1706
+ },
1707
+ {
1708
+ "kind": "webfonts#webfont",
1709
+ "family": "Droid Sans",
1710
+ "variants": [
1711
+ "regular",
1712
+ "700"
1713
+ ],
1714
+ "subsets": [
1715
+ "latin"
1716
+ ]
1717
+ },
1718
+ {
1719
+ "kind": "webfonts#webfont",
1720
+ "family": "Droid Sans Mono",
1721
+ "variants": [
1722
+ "regular"
1723
+ ],
1724
+ "subsets": [
1725
+ "latin"
1726
+ ]
1727
+ },
1728
+ {
1729
+ "kind": "webfonts#webfont",
1730
+ "family": "Droid Serif",
1731
+ "variants": [
1732
+ "regular",
1733
+ "italic",
1734
+ "700",
1735
+ "700italic"
1736
+ ],
1737
+ "subsets": [
1738
+ "latin"
1739
+ ]
1740
+ },
1741
+ {
1742
+ "kind": "webfonts#webfont",
1743
+ "family": "Duru Sans",
1744
+ "variants": [
1745
+ "regular"
1746
+ ],
1747
+ "subsets": [
1748
+ "latin-ext",
1749
+ "latin"
1750
+ ]
1751
+ },
1752
+ {
1753
+ "kind": "webfonts#webfont",
1754
+ "family": "Dynalight",
1755
+ "variants": [
1756
+ "regular"
1757
+ ],
1758
+ "subsets": [
1759
+ "latin-ext",
1760
+ "latin"
1761
+ ]
1762
+ },
1763
+ {
1764
+ "kind": "webfonts#webfont",
1765
+ "family": "EB Garamond",
1766
+ "variants": [
1767
+ "regular"
1768
+ ],
1769
+ "subsets": [
1770
+ "cyrillic-ext",
1771
+ "latin-ext",
1772
+ "latin",
1773
+ "cyrillic",
1774
+ "vietnamese"
1775
+ ]
1776
+ },
1777
+ {
1778
+ "kind": "webfonts#webfont",
1779
+ "family": "Eagle Lake",
1780
+ "variants": [
1781
+ "regular"
1782
+ ],
1783
+ "subsets": [
1784
+ "latin-ext",
1785
+ "latin"
1786
+ ]
1787
+ },
1788
+ {
1789
+ "kind": "webfonts#webfont",
1790
+ "family": "Eater",
1791
+ "variants": [
1792
+ "regular"
1793
+ ],
1794
+ "subsets": [
1795
+ "latin-ext",
1796
+ "latin"
1797
+ ]
1798
+ },
1799
+ {
1800
+ "kind": "webfonts#webfont",
1801
+ "family": "Economica",
1802
+ "variants": [
1803
+ "regular",
1804
+ "italic",
1805
+ "700",
1806
+ "700italic"
1807
+ ],
1808
+ "subsets": [
1809
+ "latin-ext",
1810
+ "latin"
1811
+ ]
1812
+ },
1813
+ {
1814
+ "kind": "webfonts#webfont",
1815
+ "family": "Electrolize",
1816
+ "variants": [
1817
+ "regular"
1818
+ ],
1819
+ "subsets": [
1820
+ "latin"
1821
+ ]
1822
+ },
1823
+ {
1824
+ "kind": "webfonts#webfont",
1825
+ "family": "Emblema One",
1826
+ "variants": [
1827
+ "regular"
1828
+ ],
1829
+ "subsets": [
1830
+ "latin-ext",
1831
+ "latin"
1832
+ ]
1833
+ },
1834
+ {
1835
+ "kind": "webfonts#webfont",
1836
+ "family": "Emilys Candy",
1837
+ "variants": [
1838
+ "regular"
1839
+ ],
1840
+ "subsets": [
1841
+ "latin-ext",
1842
+ "latin"
1843
+ ]
1844
+ },
1845
+ {
1846
+ "kind": "webfonts#webfont",
1847
+ "family": "Engagement",
1848
+ "variants": [
1849
+ "regular"
1850
+ ],
1851
+ "subsets": [
1852
+ "latin"
1853
+ ]
1854
+ },
1855
+ {
1856
+ "kind": "webfonts#webfont",
1857
+ "family": "Enriqueta",
1858
+ "variants": [
1859
+ "regular",
1860
+ "700"
1861
+ ],
1862
+ "subsets": [
1863
+ "latin-ext",
1864
+ "latin"
1865
+ ]
1866
+ },
1867
+ {
1868
+ "kind": "webfonts#webfont",
1869
+ "family": "Erica One",
1870
+ "variants": [
1871
+ "regular"
1872
+ ],
1873
+ "subsets": [
1874
+ "latin"
1875
+ ]
1876
+ },
1877
+ {
1878
+ "kind": "webfonts#webfont",
1879
+ "family": "Esteban",
1880
+ "variants": [
1881
+ "regular"
1882
+ ],
1883
+ "subsets": [
1884
+ "latin-ext",
1885
+ "latin"
1886
+ ]
1887
+ },
1888
+ {
1889
+ "kind": "webfonts#webfont",
1890
+ "family": "Euphoria Script",
1891
+ "variants": [
1892
+ "regular"
1893
+ ],
1894
+ "subsets": [
1895
+ "latin-ext",
1896
+ "latin"
1897
+ ]
1898
+ },
1899
+ {
1900
+ "kind": "webfonts#webfont",
1901
+ "family": "Ewert",
1902
+ "variants": [
1903
+ "regular"
1904
+ ],
1905
+ "subsets": [
1906
+ "latin-ext",
1907
+ "latin"
1908
+ ]
1909
+ },
1910
+ {
1911
+ "kind": "webfonts#webfont",
1912
+ "family": "Exo",
1913
+ "variants": [
1914
+ "100",
1915
+ "100italic",
1916
+ "200",
1917
+ "200italic",
1918
+ "300",
1919
+ "300italic",
1920
+ "regular",
1921
+ "italic",
1922
+ "500",
1923
+ "500italic",
1924
+ "600",
1925
+ "600italic",
1926
+ "700",
1927
+ "700italic",
1928
+ "800",
1929
+ "800italic",
1930
+ "900",
1931
+ "900italic"
1932
+ ],
1933
+ "subsets": [
1934
+ "latin-ext",
1935
+ "latin"
1936
+ ]
1937
+ },
1938
+ {
1939
+ "kind": "webfonts#webfont",
1940
+ "family": "Expletus Sans",
1941
+ "variants": [
1942
+ "regular",
1943
+ "italic",
1944
+ "500",
1945
+ "500italic",
1946
+ "600",
1947
+ "600italic",
1948
+ "700",
1949
+ "700italic"
1950
+ ],
1951
+ "subsets": [
1952
+ "latin"
1953
+ ]
1954
+ },
1955
+ {
1956
+ "kind": "webfonts#webfont",
1957
+ "family": "Fanwood Text",
1958
+ "variants": [
1959
+ "regular",
1960
+ "italic"
1961
+ ],
1962
+ "subsets": [
1963
+ "latin"
1964
+ ]
1965
+ },
1966
+ {
1967
+ "kind": "webfonts#webfont",
1968
+ "family": "Fascinate",
1969
+ "variants": [
1970
+ "regular"
1971
+ ],
1972
+ "subsets": [
1973
+ "latin"
1974
+ ]
1975
+ },
1976
+ {
1977
+ "kind": "webfonts#webfont",
1978
+ "family": "Fascinate Inline",
1979
+ "variants": [
1980
+ "regular"
1981
+ ],
1982
+ "subsets": [
1983
+ "latin"
1984
+ ]
1985
+ },
1986
+ {
1987
+ "kind": "webfonts#webfont",
1988
+ "family": "Federant",
1989
+ "variants": [
1990
+ "regular"
1991
+ ],
1992
+ "subsets": [
1993
+ "latin"
1994
+ ]
1995
+ },
1996
+ {
1997
+ "kind": "webfonts#webfont",
1998
+ "family": "Federo",
1999
+ "variants": [
2000
+ "regular"
2001
+ ],
2002
+ "subsets": [
2003
+ "latin"
2004
+ ]
2005
+ },
2006
+ {
2007
+ "kind": "webfonts#webfont",
2008
+ "family": "Felipa",
2009
+ "variants": [
2010
+ "regular"
2011
+ ],
2012
+ "subsets": [
2013
+ "latin-ext",
2014
+ "latin"
2015
+ ]
2016
+ },
2017
+ {
2018
+ "kind": "webfonts#webfont",
2019
+ "family": "Fjord One",
2020
+ "variants": [
2021
+ "regular"
2022
+ ],
2023
+ "subsets": [
2024
+ "latin"
2025
+ ]
2026
+ },
2027
+ {
2028
+ "kind": "webfonts#webfont",
2029
+ "family": "Flamenco",
2030
+ "variants": [
2031
+ "300",
2032
+ "regular"
2033
+ ],
2034
+ "subsets": [
2035
+ "latin"
2036
+ ]
2037
+ },
2038
+ {
2039
+ "kind": "webfonts#webfont",
2040
+ "family": "Flavors",
2041
+ "variants": [
2042
+ "regular"
2043
+ ],
2044
+ "subsets": [
2045
+ "latin"
2046
+ ]
2047
+ },
2048
+ {
2049
+ "kind": "webfonts#webfont",
2050
+ "family": "Fondamento",
2051
+ "variants": [
2052
+ "regular",
2053
+ "italic"
2054
+ ],
2055
+ "subsets": [
2056
+ "latin-ext",
2057
+ "latin"
2058
+ ]
2059
+ },
2060
+ {
2061
+ "kind": "webfonts#webfont",
2062
+ "family": "Fontdiner Swanky",
2063
+ "variants": [
2064
+ "regular"
2065
+ ],
2066
+ "subsets": [
2067
+ "latin"
2068
+ ]
2069
+ },
2070
+ {
2071
+ "kind": "webfonts#webfont",
2072
+ "family": "Forum",
2073
+ "variants": [
2074
+ "regular"
2075
+ ],
2076
+ "subsets": [
2077
+ "cyrillic-ext",
2078
+ "latin-ext",
2079
+ "latin",
2080
+ "cyrillic"
2081
+ ]
2082
+ },
2083
+ {
2084
+ "kind": "webfonts#webfont",
2085
+ "family": "Francois One",
2086
+ "variants": [
2087
+ "regular"
2088
+ ],
2089
+ "subsets": [
2090
+ "latin-ext",
2091
+ "latin"
2092
+ ]
2093
+ },
2094
+ {
2095
+ "kind": "webfonts#webfont",
2096
+ "family": "Fredericka the Great",
2097
+ "variants": [
2098
+ "regular"
2099
+ ],
2100
+ "subsets": [
2101
+ "latin"
2102
+ ]
2103
+ },
2104
+ {
2105
+ "kind": "webfonts#webfont",
2106
+ "family": "Fredoka One",
2107
+ "variants": [
2108
+ "regular"
2109
+ ],
2110
+ "subsets": [
2111
+ "latin"
2112
+ ]
2113
+ },
2114
+ {
2115
+ "kind": "webfonts#webfont",
2116
+ "family": "Freehand",
2117
+ "variants": [
2118
+ "regular"
2119
+ ],
2120
+ "subsets": [
2121
+ "khmer"
2122
+ ]
2123
+ },
2124
+ {
2125
+ "kind": "webfonts#webfont",
2126
+ "family": "Fresca",
2127
+ "variants": [
2128
+ "regular"
2129
+ ],
2130
+ "subsets": [
2131
+ "latin-ext",
2132
+ "latin"
2133
+ ]
2134
+ },
2135
+ {
2136
+ "kind": "webfonts#webfont",
2137
+ "family": "Frijole",
2138
+ "variants": [
2139
+ "regular"
2140
+ ],
2141
+ "subsets": [
2142
+ "latin"
2143
+ ]
2144
+ },
2145
+ {
2146
+ "kind": "webfonts#webfont",
2147
+ "family": "Fugaz One",
2148
+ "variants": [
2149
+ "regular"
2150
+ ],
2151
+ "subsets": [
2152
+ "latin"
2153
+ ]
2154
+ },
2155
+ {
2156
+ "kind": "webfonts#webfont",
2157
+ "family": "GFS Didot",
2158
+ "variants": [
2159
+ "regular"
2160
+ ],
2161
+ "subsets": [
2162
+ "greek"
2163
+ ]
2164
+ },
2165
+ {
2166
+ "kind": "webfonts#webfont",
2167
+ "family": "GFS Neohellenic",
2168
+ "variants": [
2169
+ "regular",
2170
+ "italic",
2171
+ "700",
2172
+ "700italic"
2173
+ ],
2174
+ "subsets": [
2175
+ "greek"
2176
+ ]
2177
+ },
2178
+ {
2179
+ "kind": "webfonts#webfont",
2180
+ "family": "Galdeano",
2181
+ "variants": [
2182
+ "regular"
2183
+ ],
2184
+ "subsets": [
2185
+ "latin"
2186
+ ]
2187
+ },
2188
+ {
2189
+ "kind": "webfonts#webfont",
2190
+ "family": "Gentium Basic",
2191
+ "variants": [
2192
+ "regular",
2193
+ "italic",
2194
+ "700",
2195
+ "700italic"
2196
+ ],
2197
+ "subsets": [
2198
+ "latin-ext",
2199
+ "latin"
2200
+ ]
2201
+ },
2202
+ {
2203
+ "kind": "webfonts#webfont",
2204
+ "family": "Gentium Book Basic",
2205
+ "variants": [
2206
+ "regular",
2207
+ "italic",
2208
+ "700",
2209
+ "700italic"
2210
+ ],
2211
+ "subsets": [
2212
+ "latin-ext",
2213
+ "latin"
2214
+ ]
2215
+ },
2216
+ {
2217
+ "kind": "webfonts#webfont",
2218
+ "family": "Geo",
2219
+ "variants": [
2220
+ "regular"
2221
+ ],
2222
+ "subsets": [
2223
+ "latin"
2224
+ ]
2225
+ },
2226
+ {
2227
+ "kind": "webfonts#webfont",
2228
+ "family": "Geostar",
2229
+ "variants": [
2230
+ "regular"
2231
+ ],
2232
+ "subsets": [
2233
+ "latin"
2234
+ ]
2235
+ },
2236
+ {
2237
+ "kind": "webfonts#webfont",
2238
+ "family": "Geostar Fill",
2239
+ "variants": [
2240
+ "regular"
2241
+ ],
2242
+ "subsets": [
2243
+ "latin"
2244
+ ]
2245
+ },
2246
+ {
2247
+ "kind": "webfonts#webfont",
2248
+ "family": "Germania One",
2249
+ "variants": [
2250
+ "regular"
2251
+ ],
2252
+ "subsets": [
2253
+ "latin"
2254
+ ]
2255
+ },
2256
+ {
2257
+ "kind": "webfonts#webfont",
2258
+ "family": "Give You Glory",
2259
+ "variants": [
2260
+ "regular"
2261
+ ],
2262
+ "subsets": [
2263
+ "latin"
2264
+ ]
2265
+ },
2266
+ {
2267
+ "kind": "webfonts#webfont",
2268
+ "family": "Glass Antiqua",
2269
+ "variants": [
2270
+ "regular"
2271
+ ],
2272
+ "subsets": [
2273
+ "latin-ext",
2274
+ "latin"
2275
+ ]
2276
+ },
2277
+ {
2278
+ "kind": "webfonts#webfont",
2279
+ "family": "Glegoo",
2280
+ "variants": [
2281
+ "regular"
2282
+ ],
2283
+ "subsets": [
2284
+ "latin-ext",
2285
+ "latin"
2286
+ ]
2287
+ },
2288
+ {
2289
+ "kind": "webfonts#webfont",
2290
+ "family": "Gloria Hallelujah",
2291
+ "variants": [
2292
+ "regular"
2293
+ ],
2294
+ "subsets": [
2295
+ "latin"
2296
+ ]
2297
+ },
2298
+ {
2299
+ "kind": "webfonts#webfont",
2300
+ "family": "Goblin One",
2301
+ "variants": [
2302
+ "regular"
2303
+ ],
2304
+ "subsets": [
2305
+ "latin"
2306
+ ]
2307
+ },
2308
+ {
2309
+ "kind": "webfonts#webfont",
2310
+ "family": "Gochi Hand",
2311
+ "variants": [
2312
+ "regular"
2313
+ ],
2314
+ "subsets": [
2315
+ "latin"
2316
+ ]
2317
+ },
2318
+ {
2319
+ "kind": "webfonts#webfont",
2320
+ "family": "Gorditas",
2321
+ "variants": [
2322
+ "regular",
2323
+ "700"
2324
+ ],
2325
+ "subsets": [
2326
+ "latin"
2327
+ ]
2328
+ },
2329
+ {
2330
+ "kind": "webfonts#webfont",
2331
+ "family": "Goudy Bookletter 1911",
2332
+ "variants": [
2333
+ "regular"
2334
+ ],
2335
+ "subsets": [
2336
+ "latin"
2337
+ ]
2338
+ },
2339
+ {
2340
+ "kind": "webfonts#webfont",
2341
+ "family": "Graduate",
2342
+ "variants": [
2343
+ "regular"
2344
+ ],
2345
+ "subsets": [
2346
+ "latin"
2347
+ ]
2348
+ },
2349
+ {
2350
+ "kind": "webfonts#webfont",
2351
+ "family": "Gravitas One",
2352
+ "variants": [
2353
+ "regular"
2354
+ ],
2355
+ "subsets": [
2356
+ "latin"
2357
+ ]
2358
+ },
2359
+ {
2360
+ "kind": "webfonts#webfont",
2361
+ "family": "Great Vibes",
2362
+ "variants": [
2363
+ "regular"
2364
+ ],
2365
+ "subsets": [
2366
+ "latin-ext",
2367
+ "latin"
2368
+ ]
2369
+ },
2370
+ {
2371
+ "kind": "webfonts#webfont",
2372
+ "family": "Gruppo",
2373
+ "variants": [
2374
+ "regular"
2375
+ ],
2376
+ "subsets": [
2377
+ "latin-ext",
2378
+ "latin"
2379
+ ]
2380
+ },
2381
+ {
2382
+ "kind": "webfonts#webfont",
2383
+ "family": "Gudea",
2384
+ "variants": [
2385
+ "regular",
2386
+ "italic",
2387
+ "700"
2388
+ ],
2389
+ "subsets": [
2390
+ "latin-ext",
2391
+ "latin"
2392
+ ]
2393
+ },
2394
+ {
2395
+ "kind": "webfonts#webfont",
2396
+ "family": "Habibi",
2397
+ "variants": [
2398
+ "regular"
2399
+ ],
2400
+ "subsets": [
2401
+ "latin-ext",
2402
+ "latin"
2403
+ ]
2404
+ },
2405
+ {
2406
+ "kind": "webfonts#webfont",
2407
+ "family": "Hammersmith One",
2408
+ "variants": [
2409
+ "regular"
2410
+ ],
2411
+ "subsets": [
2412
+ "latin"
2413
+ ]
2414
+ },
2415
+ {
2416
+ "kind": "webfonts#webfont",
2417
+ "family": "Handlee",
2418
+ "variants": [
2419
+ "regular"
2420
+ ],
2421
+ "subsets": [
2422
+ "latin"
2423
+ ]
2424
+ },
2425
+ {
2426
+ "kind": "webfonts#webfont",
2427
+ "family": "Hanuman",
2428
+ "variants": [
2429
+ "regular",
2430
+ "700"
2431
+ ],
2432
+ "subsets": [
2433
+ "khmer"
2434
+ ]
2435
+ },
2436
+ {
2437
+ "kind": "webfonts#webfont",
2438
+ "family": "Happy Monkey",
2439
+ "variants": [
2440
+ "regular"
2441
+ ],
2442
+ "subsets": [
2443
+ "latin-ext",
2444
+ "latin"
2445
+ ]
2446
+ },
2447
+ {
2448
+ "kind": "webfonts#webfont",
2449
+ "family": "Henny Penny",
2450
+ "variants": [
2451
+ "regular"
2452
+ ],
2453
+ "subsets": [
2454
+ "latin"
2455
+ ]
2456
+ },
2457
+ {
2458
+ "kind": "webfonts#webfont",
2459
+ "family": "Herr Von Muellerhoff",
2460
+ "variants": [
2461
+ "regular"
2462
+ ],
2463
+ "subsets": [
2464
+ "latin-ext",
2465
+ "latin"
2466
+ ]
2467
+ },
2468
+ {
2469
+ "kind": "webfonts#webfont",
2470
+ "family": "Holtwood One SC",
2471
+ "variants": [
2472
+ "regular"
2473
+ ],
2474
+ "subsets": [
2475
+ "latin"
2476
+ ]
2477
+ },
2478
+ {
2479
+ "kind": "webfonts#webfont",
2480
+ "family": "Homemade Apple",
2481
+ "variants": [
2482
+ "regular"
2483
+ ],
2484
+ "subsets": [
2485
+ "latin"
2486
+ ]
2487
+ },
2488
+ {
2489
+ "kind": "webfonts#webfont",
2490
+ "family": "Homenaje",
2491
+ "variants": [
2492
+ "regular"
2493
+ ],
2494
+ "subsets": [
2495
+ "latin"
2496
+ ]
2497
+ },
2498
+ {
2499
+ "kind": "webfonts#webfont",
2500
+ "family": "IM Fell DW Pica",
2501
+ "variants": [
2502
+ "regular",
2503
+ "italic"
2504
+ ],
2505
+ "subsets": [
2506
+ "latin"
2507
+ ]
2508
+ },
2509
+ {
2510
+ "kind": "webfonts#webfont",
2511
+ "family": "IM Fell DW Pica SC",
2512
+ "variants": [
2513
+ "regular"
2514
+ ],
2515
+ "subsets": [
2516
+ "latin"
2517
+ ]
2518
+ },
2519
+ {
2520
+ "kind": "webfonts#webfont",
2521
+ "family": "IM Fell Double Pica",
2522
+ "variants": [
2523
+ "regular",
2524
+ "italic"
2525
+ ],
2526
+ "subsets": [
2527
+ "latin"
2528
+ ]
2529
+ },
2530
+ {
2531
+ "kind": "webfonts#webfont",
2532
+ "family": "IM Fell Double Pica SC",
2533
+ "variants": [
2534
+ "regular"
2535
+ ],
2536
+ "subsets": [
2537
+ "latin"
2538
+ ]
2539
+ },
2540
+ {
2541
+ "kind": "webfonts#webfont",
2542
+ "family": "IM Fell English",
2543
+ "variants": [
2544
+ "regular",
2545
+ "italic"
2546
+ ],
2547
+ "subsets": [
2548
+ "latin"
2549
+ ]
2550
+ },
2551
+ {
2552
+ "kind": "webfonts#webfont",
2553
+ "family": "IM Fell English SC",
2554
+ "variants": [
2555
+ "regular"
2556
+ ],
2557
+ "subsets": [
2558
+ "latin"
2559
+ ]
2560
+ },
2561
+ {
2562
+ "kind": "webfonts#webfont",
2563
+ "family": "IM Fell French Canon",
2564
+ "variants": [
2565
+ "regular",
2566
+ "italic"
2567
+ ],
2568
+ "subsets": [
2569
+ "latin"
2570
+ ]
2571
+ },
2572
+ {
2573
+ "kind": "webfonts#webfont",
2574
+ "family": "IM Fell French Canon SC",
2575
+ "variants": [
2576
+ "regular"
2577
+ ],
2578
+ "subsets": [
2579
+ "latin"
2580
+ ]
2581
+ },
2582
+ {
2583
+ "kind": "webfonts#webfont",
2584
+ "family": "IM Fell Great Primer",
2585
+ "variants": [
2586
+ "regular",
2587
+ "italic"
2588
+ ],
2589
+ "subsets": [
2590
+ "latin"
2591
+ ]
2592
+ },
2593
+ {
2594
+ "kind": "webfonts#webfont",
2595
+ "family": "IM Fell Great Primer SC",
2596
+ "variants": [
2597
+ "regular"
2598
+ ],
2599
+ "subsets": [
2600
+ "latin"
2601
+ ]
2602
+ },
2603
+ {
2604
+ "kind": "webfonts#webfont",
2605
+ "family": "Iceberg",
2606
+ "variants": [
2607
+ "regular"
2608
+ ],
2609
+ "subsets": [
2610
+ "latin"
2611
+ ]
2612
+ },
2613
+ {
2614
+ "kind": "webfonts#webfont",
2615
+ "family": "Iceland",
2616
+ "variants": [
2617
+ "regular"
2618
+ ],
2619
+ "subsets": [
2620
+ "latin"
2621
+ ]
2622
+ },
2623
+ {
2624
+ "kind": "webfonts#webfont",
2625
+ "family": "Imprima",
2626
+ "variants": [
2627
+ "regular"
2628
+ ],
2629
+ "subsets": [
2630
+ "latin-ext",
2631
+ "latin"
2632
+ ]
2633
+ },
2634
+ {
2635
+ "kind": "webfonts#webfont",
2636
+ "family": "Inconsolata",
2637
+ "variants": [
2638
+ "regular"
2639
+ ],
2640
+ "subsets": [
2641
+ "latin"
2642
+ ]
2643
+ },
2644
+ {
2645
+ "kind": "webfonts#webfont",
2646
+ "family": "Inder",
2647
+ "variants": [
2648
+ "regular"
2649
+ ],
2650
+ "subsets": [
2651
+ "latin-ext",
2652
+ "latin"
2653
+ ]
2654
+ },
2655
+ {
2656
+ "kind": "webfonts#webfont",
2657
+ "family": "Indie Flower",
2658
+ "variants": [
2659
+ "regular"
2660
+ ],
2661
+ "subsets": [
2662
+ "latin"
2663
+ ]
2664
+ },
2665
+ {
2666
+ "kind": "webfonts#webfont",
2667
+ "family": "Inika",
2668
+ "variants": [
2669
+ "regular",
2670
+ "700"
2671
+ ],
2672
+ "subsets": [
2673
+ "latin-ext",
2674
+ "latin"
2675
+ ]
2676
+ },
2677
+ {
2678
+ "kind": "webfonts#webfont",
2679
+ "family": "Irish Grover",
2680
+ "variants": [
2681
+ "regular"
2682
+ ],
2683
+ "subsets": [
2684
+ "latin"
2685
+ ]
2686
+ },
2687
+ {
2688
+ "kind": "webfonts#webfont",
2689
+ "family": "Istok Web",
2690
+ "variants": [
2691
+ "regular",
2692
+ "italic",
2693
+ "700",
2694
+ "700italic"
2695
+ ],
2696
+ "subsets": [
2697
+ "cyrillic-ext",
2698
+ "latin-ext",
2699
+ "latin",
2700
+ "cyrillic"
2701
+ ]
2702
+ },
2703
+ {
2704
+ "kind": "webfonts#webfont",
2705
+ "family": "Italiana",
2706
+ "variants": [
2707
+ "regular"
2708
+ ],
2709
+ "subsets": [
2710
+ "latin"
2711
+ ]
2712
+ },
2713
+ {
2714
+ "kind": "webfonts#webfont",
2715
+ "family": "Italianno",
2716
+ "variants": [
2717
+ "regular"
2718
+ ],
2719
+ "subsets": [
2720
+ "latin-ext",
2721
+ "latin"
2722
+ ]
2723
+ },
2724
+ {
2725
+ "kind": "webfonts#webfont",
2726
+ "family": "Jim Nightshade",
2727
+ "variants": [
2728
+ "regular"
2729
+ ],
2730
+ "subsets": [
2731
+ "latin-ext",
2732
+ "latin"
2733
+ ]
2734
+ },
2735
+ {
2736
+ "kind": "webfonts#webfont",
2737
+ "family": "Jockey One",
2738
+ "variants": [
2739
+ "regular"
2740
+ ],
2741
+ "subsets": [
2742
+ "latin-ext",
2743
+ "latin"
2744
+ ]
2745
+ },
2746
+ {
2747
+ "kind": "webfonts#webfont",
2748
+ "family": "Jolly Lodger",
2749
+ "variants": [
2750
+ "regular"
2751
+ ],
2752
+ "subsets": [
2753
+ "latin-ext",
2754
+ "latin"
2755
+ ]
2756
+ },
2757
+ {
2758
+ "kind": "webfonts#webfont",
2759
+ "family": "Josefin Sans",
2760
+ "variants": [
2761
+ "100",
2762
+ "100italic",
2763
+ "300",
2764
+ "300italic",
2765
+ "regular",
2766
+ "italic",
2767
+ "600",
2768
+ "600italic",
2769
+ "700",
2770
+ "700italic"
2771
+ ],
2772
+ "subsets": [
2773
+ "latin"
2774
+ ]
2775
+ },
2776
+ {
2777
+ "kind": "webfonts#webfont",
2778
+ "family": "Josefin Slab",
2779
+ "variants": [
2780
+ "100",
2781
+ "100italic",
2782
+ "300",
2783
+ "300italic",
2784
+ "regular",
2785
+ "italic",
2786
+ "600",
2787
+ "600italic",
2788
+ "700",
2789
+ "700italic"
2790
+ ],
2791
+ "subsets": [
2792
+ "latin"
2793
+ ]
2794
+ },
2795
+ {
2796
+ "kind": "webfonts#webfont",
2797
+ "family": "Judson",
2798
+ "variants": [
2799
+ "regular",
2800
+ "italic",
2801
+ "700"
2802
+ ],
2803
+ "subsets": [
2804
+ "latin"
2805
+ ]
2806
+ },
2807
+ {
2808
+ "kind": "webfonts#webfont",
2809
+ "family": "Julee",
2810
+ "variants": [
2811
+ "regular"
2812
+ ],
2813
+ "subsets": [
2814
+ "latin"
2815
+ ]
2816
+ },
2817
+ {
2818
+ "kind": "webfonts#webfont",
2819
+ "family": "Junge",
2820
+ "variants": [
2821
+ "regular"
2822
+ ],
2823
+ "subsets": [
2824
+ "latin"
2825
+ ]
2826
+ },
2827
+ {
2828
+ "kind": "webfonts#webfont",
2829
+ "family": "Jura",
2830
+ "variants": [
2831
+ "300",
2832
+ "regular",
2833
+ "500",
2834
+ "600"
2835
+ ],
2836
+ "subsets": [
2837
+ "greek-ext",
2838
+ "cyrillic-ext",
2839
+ "greek",
2840
+ "latin-ext",
2841
+ "latin",
2842
+ "cyrillic"
2843
+ ]
2844
+ },
2845
+ {
2846
+ "kind": "webfonts#webfont",
2847
+ "family": "Just Another Hand",
2848
+ "variants": [
2849
+ "regular"
2850
+ ],
2851
+ "subsets": [
2852
+ "latin"
2853
+ ]
2854
+ },
2855
+ {
2856
+ "kind": "webfonts#webfont",
2857
+ "family": "Just Me Again Down Here",
2858
+ "variants": [
2859
+ "regular"
2860
+ ],
2861
+ "subsets": [
2862
+ "latin"
2863
+ ]
2864
+ },
2865
+ {
2866
+ "kind": "webfonts#webfont",
2867
+ "family": "Kameron",
2868
+ "variants": [
2869
+ "regular",
2870
+ "700"
2871
+ ],
2872
+ "subsets": [
2873
+ "latin"
2874
+ ]
2875
+ },
2876
+ {
2877
+ "kind": "webfonts#webfont",
2878
+ "family": "Karla",
2879
+ "variants": [
2880
+ "regular",
2881
+ "italic",
2882
+ "700",
2883
+ "700italic"
2884
+ ],
2885
+ "subsets": [
2886
+ "latin"
2887
+ ]
2888
+ },
2889
+ {
2890
+ "kind": "webfonts#webfont",
2891
+ "family": "Kaushan Script",
2892
+ "variants": [
2893
+ "regular"
2894
+ ],
2895
+ "subsets": [
2896
+ "latin-ext",
2897
+ "latin"
2898
+ ]
2899
+ },
2900
+ {
2901
+ "kind": "webfonts#webfont",
2902
+ "family": "Kelly Slab",
2903
+ "variants": [
2904
+ "regular"
2905
+ ],
2906
+ "subsets": [
2907
+ "latin-ext",
2908
+ "latin",
2909
+ "cyrillic"
2910
+ ]
2911
+ },
2912
+ {
2913
+ "kind": "webfonts#webfont",
2914
+ "family": "Kenia",
2915
+ "variants": [
2916
+ "regular"
2917
+ ],
2918
+ "subsets": [
2919
+ "latin"
2920
+ ]
2921
+ },
2922
+ {
2923
+ "kind": "webfonts#webfont",
2924
+ "family": "Khmer",
2925
+ "variants": [
2926
+ "regular"
2927
+ ],
2928
+ "subsets": [
2929
+ "khmer"
2930
+ ]
2931
+ },
2932
+ {
2933
+ "kind": "webfonts#webfont",
2934
+ "family": "Knewave",
2935
+ "variants": [
2936
+ "regular"
2937
+ ],
2938
+ "subsets": [
2939
+ "latin-ext",
2940
+ "latin"
2941
+ ]
2942
+ },
2943
+ {
2944
+ "kind": "webfonts#webfont",
2945
+ "family": "Kotta One",
2946
+ "variants": [
2947
+ "regular"
2948
+ ],
2949
+ "subsets": [
2950
+ "latin-ext",
2951
+ "latin"
2952
+ ]
2953
+ },
2954
+ {
2955
+ "kind": "webfonts#webfont",
2956
+ "family": "Koulen",
2957
+ "variants": [
2958
+ "regular"
2959
+ ],
2960
+ "subsets": [
2961
+ "khmer"
2962
+ ]
2963
+ },
2964
+ {
2965
+ "kind": "webfonts#webfont",
2966
+ "family": "Kranky",
2967
+ "variants": [
2968
+ "regular"
2969
+ ],
2970
+ "subsets": [
2971
+ "latin"
2972
+ ]
2973
+ },
2974
+ {
2975
+ "kind": "webfonts#webfont",
2976
+ "family": "Kreon",
2977
+ "variants": [
2978
+ "300",
2979
+ "regular",
2980
+ "700"
2981
+ ],
2982
+ "subsets": [
2983
+ "latin"
2984
+ ]
2985
+ },
2986
+ {
2987
+ "kind": "webfonts#webfont",
2988
+ "family": "Kristi",
2989
+ "variants": [
2990
+ "regular"
2991
+ ],
2992
+ "subsets": [
2993
+ "latin"
2994
+ ]
2995
+ },
2996
+ {
2997
+ "kind": "webfonts#webfont",
2998
+ "family": "Krona One",
2999
+ "variants": [
3000
+ "regular"
3001
+ ],
3002
+ "subsets": [
3003
+ "latin-ext",
3004
+ "latin"
3005
+ ]
3006
+ },
3007
+ {
3008
+ "kind": "webfonts#webfont",
3009
+ "family": "La Belle Aurore",
3010
+ "variants": [
3011
+ "regular"
3012
+ ],
3013
+ "subsets": [
3014
+ "latin"
3015
+ ]
3016
+ },
3017
+ {
3018
+ "kind": "webfonts#webfont",
3019
+ "family": "Lancelot",
3020
+ "variants": [
3021
+ "regular"
3022
+ ],
3023
+ "subsets": [
3024
+ "latin"
3025
+ ]
3026
+ },
3027
+ {
3028
+ "kind": "webfonts#webfont",
3029
+ "family": "Lato",
3030
+ "variants": [
3031
+ "100",
3032
+ "100italic",
3033
+ "300",
3034
+ "300italic",
3035
+ "regular",
3036
+ "italic",
3037
+ "700",
3038
+ "700italic",
3039
+ "900",
3040
+ "900italic"
3041
+ ],
3042
+ "subsets": [
3043
+ "latin"
3044
+ ]
3045
+ },
3046
+ {
3047
+ "kind": "webfonts#webfont",
3048
+ "family": "League Script",
3049
+ "variants": [
3050
+ "regular"
3051
+ ],
3052
+ "subsets": [
3053
+ "latin"
3054
+ ]
3055
+ },
3056
+ {
3057
+ "kind": "webfonts#webfont",
3058
+ "family": "Leckerli One",
3059
+ "variants": [
3060
+ "regular"
3061
+ ],
3062
+ "subsets": [
3063
+ "latin"
3064
+ ]
3065
+ },
3066
+ {
3067
+ "kind": "webfonts#webfont",
3068
+ "family": "Ledger",
3069
+ "variants": [
3070
+ "regular"
3071
+ ],
3072
+ "subsets": [
3073
+ "latin-ext",
3074
+ "latin",
3075
+ "cyrillic"
3076
+ ]
3077
+ },
3078
+ {
3079
+ "kind": "webfonts#webfont",
3080
+ "family": "Lekton",
3081
+ "variants": [
3082
+ "regular",
3083
+ "italic",
3084
+ "700"
3085
+ ],
3086
+ "subsets": [
3087
+ "latin"
3088
+ ]
3089
+ },
3090
+ {
3091
+ "kind": "webfonts#webfont",
3092
+ "family": "Lemon",
3093
+ "variants": [
3094
+ "regular"
3095
+ ],
3096
+ "subsets": [
3097
+ "latin"
3098
+ ]
3099
+ },
3100
+ {
3101
+ "kind": "webfonts#webfont",
3102
+ "family": "Lilita One",
3103
+ "variants": [
3104
+ "regular"
3105
+ ],
3106
+ "subsets": [
3107
+ "latin-ext",
3108
+ "latin"
3109
+ ]
3110
+ },
3111
+ {
3112
+ "kind": "webfonts#webfont",
3113
+ "family": "Limelight",
3114
+ "variants": [
3115
+ "regular"
3116
+ ],
3117
+ "subsets": [
3118
+ "latin"
3119
+ ]
3120
+ },
3121
+ {
3122
+ "kind": "webfonts#webfont",
3123
+ "family": "Linden Hill",
3124
+ "variants": [
3125
+ "regular",
3126
+ "italic"
3127
+ ],
3128
+ "subsets": [
3129
+ "latin"
3130
+ ]
3131
+ },
3132
+ {
3133
+ "kind": "webfonts#webfont",
3134
+ "family": "Lobster",
3135
+ "variants": [
3136
+ "regular"
3137
+ ],
3138
+ "subsets": [
3139
+ "cyrillic-ext",
3140
+ "latin-ext",
3141
+ "latin",
3142
+ "cyrillic"
3143
+ ]
3144
+ },
3145
+ {
3146
+ "kind": "webfonts#webfont",
3147
+ "family": "Lobster Two",
3148
+ "variants": [
3149
+ "regular",
3150
+ "italic",
3151
+ "700",
3152
+ "700italic"
3153
+ ],
3154
+ "subsets": [
3155
+ "latin"
3156
+ ]
3157
+ },
3158
+ {
3159
+ "kind": "webfonts#webfont",
3160
+ "family": "Londrina Outline",
3161
+ "variants": [
3162
+ "regular"
3163
+ ],
3164
+ "subsets": [
3165
+ "latin"
3166
+ ]
3167
+ },
3168
+ {
3169
+ "kind": "webfonts#webfont",
3170
+ "family": "Londrina Shadow",
3171
+ "variants": [
3172
+ "regular"
3173
+ ],
3174
+ "subsets": [
3175
+ "latin"
3176
+ ]
3177
+ },
3178
+ {
3179
+ "kind": "webfonts#webfont",
3180
+ "family": "Londrina Sketch",
3181
+ "variants": [
3182
+ "regular"
3183
+ ],
3184
+ "subsets": [
3185
+ "latin"
3186
+ ]
3187
+ },
3188
+ {
3189
+ "kind": "webfonts#webfont",
3190
+ "family": "Londrina Solid",
3191
+ "variants": [
3192
+ "regular"
3193
+ ],
3194
+ "subsets": [
3195
+ "latin"
3196
+ ]
3197
+ },
3198
+ {
3199
+ "kind": "webfonts#webfont",
3200
+ "family": "Lora",
3201
+ "variants": [
3202
+ "regular",
3203
+ "italic",
3204
+ "700",
3205
+ "700italic"
3206
+ ],
3207
+ "subsets": [
3208
+ "latin"
3209
+ ]
3210
+ },
3211
+ {
3212
+ "kind": "webfonts#webfont",
3213
+ "family": "Love Ya Like A Sister",
3214
+ "variants": [
3215
+ "regular"
3216
+ ],
3217
+ "subsets": [
3218
+ "latin"
3219
+ ]
3220
+ },
3221
+ {
3222
+ "kind": "webfonts#webfont",
3223
+ "family": "Loved by the King",
3224
+ "variants": [
3225
+ "regular"
3226
+ ],
3227
+ "subsets": [
3228
+ "latin"
3229
+ ]
3230
+ },
3231
+ {
3232
+ "kind": "webfonts#webfont",
3233
+ "family": "Lovers Quarrel",
3234
+ "variants": [
3235
+ "regular"
3236
+ ],
3237
+ "subsets": [
3238
+ "latin-ext",
3239
+ "latin"
3240
+ ]
3241
+ },
3242
+ {
3243
+ "kind": "webfonts#webfont",
3244
+ "family": "Luckiest Guy",
3245
+ "variants": [
3246
+ "regular"
3247
+ ],
3248
+ "subsets": [
3249
+ "latin"
3250
+ ]
3251
+ },
3252
+ {
3253
+ "kind": "webfonts#webfont",
3254
+ "family": "Lusitana",
3255
+ "variants": [
3256
+ "regular",
3257
+ "700"
3258
+ ],
3259
+ "subsets": [
3260
+ "latin"
3261
+ ]
3262
+ },
3263
+ {
3264
+ "kind": "webfonts#webfont",
3265
+ "family": "Lustria",
3266
+ "variants": [
3267
+ "regular"
3268
+ ],
3269
+ "subsets": [
3270
+ "latin"
3271
+ ]
3272
+ },
3273
+ {
3274
+ "kind": "webfonts#webfont",
3275
+ "family": "Macondo",
3276
+ "variants": [
3277
+ "regular"
3278
+ ],
3279
+ "subsets": [
3280
+ "latin"
3281
+ ]
3282
+ },
3283
+ {
3284
+ "kind": "webfonts#webfont",
3285
+ "family": "Macondo Swash Caps",
3286
+ "variants": [
3287
+ "regular"
3288
+ ],
3289
+ "subsets": [
3290
+ "latin"
3291
+ ]
3292
+ },
3293
+ {
3294
+ "kind": "webfonts#webfont",
3295
+ "family": "Magra",
3296
+ "variants": [
3297
+ "regular",
3298
+ "700"
3299
+ ],
3300
+ "subsets": [
3301
+ "latin-ext",
3302
+ "latin"
3303
+ ]
3304
+ },
3305
+ {
3306
+ "kind": "webfonts#webfont",
3307
+ "family": "Maiden Orange",
3308
+ "variants": [
3309
+ "regular"
3310
+ ],
3311
+ "subsets": [
3312
+ "latin"
3313
+ ]
3314
+ },
3315
+ {
3316
+ "kind": "webfonts#webfont",
3317
+ "family": "Mako",
3318
+ "variants": [
3319
+ "regular"
3320
+ ],
3321
+ "subsets": [
3322
+ "latin"
3323
+ ]
3324
+ },
3325
+ {
3326
+ "kind": "webfonts#webfont",
3327
+ "family": "Marck Script",
3328
+ "variants": [
3329
+ "regular"
3330
+ ],
3331
+ "subsets": [
3332
+ "latin-ext",
3333
+ "latin",
3334
+ "cyrillic"
3335
+ ]
3336
+ },
3337
+ {
3338
+ "kind": "webfonts#webfont",
3339
+ "family": "Marko One",
3340
+ "variants": [
3341
+ "regular"
3342
+ ],
3343
+ "subsets": [
3344
+ "latin"
3345
+ ]
3346
+ },
3347
+ {
3348
+ "kind": "webfonts#webfont",
3349
+ "family": "Marmelad",
3350
+ "variants": [
3351
+ "regular"
3352
+ ],
3353
+ "subsets": [
3354
+ "latin-ext",
3355
+ "latin",
3356
+ "cyrillic"
3357
+ ]
3358
+ },
3359
+ {
3360
+ "kind": "webfonts#webfont",
3361
+ "family": "Marvel",
3362
+ "variants": [
3363
+ "regular",
3364
+ "italic",
3365
+ "700",
3366
+ "700italic"
3367
+ ],
3368
+ "subsets": [
3369
+ "latin"
3370
+ ]
3371
+ },
3372
+ {
3373
+ "kind": "webfonts#webfont",
3374
+ "family": "Mate",
3375
+ "variants": [
3376
+ "regular",
3377
+ "italic"
3378
+ ],
3379
+ "subsets": [
3380
+ "latin"
3381
+ ]
3382
+ },
3383
+ {
3384
+ "kind": "webfonts#webfont",
3385
+ "family": "Mate SC",
3386
+ "variants": [
3387
+ "regular"
3388
+ ],
3389
+ "subsets": [
3390
+ "latin"
3391
+ ]
3392
+ },
3393
+ {
3394
+ "kind": "webfonts#webfont",
3395
+ "family": "Maven Pro",
3396
+ "variants": [
3397
+ "regular",
3398
+ "500",
3399
+ "700",
3400
+ "900"
3401
+ ],
3402
+ "subsets": [
3403
+ "latin"
3404
+ ]
3405
+ },
3406
+ {
3407
+ "kind": "webfonts#webfont",
3408
+ "family": "Meddon",
3409
+ "variants": [
3410
+ "regular"
3411
+ ],
3412
+ "subsets": [
3413
+ "latin"
3414
+ ]
3415
+ },
3416
+ {
3417
+ "kind": "webfonts#webfont",
3418
+ "family": "MedievalSharp",
3419
+ "variants": [
3420
+ "regular"
3421
+ ],
3422
+ "subsets": [
3423
+ "latin-ext",
3424
+ "latin"
3425
+ ]
3426
+ },
3427
+ {
3428
+ "kind": "webfonts#webfont",
3429
+ "family": "Medula One",
3430
+ "variants": [
3431
+ "regular"
3432
+ ],
3433
+ "subsets": [
3434
+ "latin"
3435
+ ]
3436
+ },
3437
+ {
3438
+ "kind": "webfonts#webfont",
3439
+ "family": "Megrim",
3440
+ "variants": [
3441
+ "regular"
3442
+ ],
3443
+ "subsets": [
3444
+ "latin"
3445
+ ]
3446
+ },
3447
+ {
3448
+ "kind": "webfonts#webfont",
3449
+ "family": "Merienda One",
3450
+ "variants": [
3451
+ "regular"
3452
+ ],
3453
+ "subsets": [
3454
+ "latin"
3455
+ ]
3456
+ },
3457
+ {
3458
+ "kind": "webfonts#webfont",
3459
+ "family": "Merriweather",
3460
+ "variants": [
3461
+ "300",
3462
+ "regular",
3463
+ "700",
3464
+ "900"
3465
+ ],
3466
+ "subsets": [
3467
+ "latin"
3468
+ ]
3469
+ },
3470
+ {
3471
+ "kind": "webfonts#webfont",
3472
+ "family": "Metal",
3473
+ "variants": [
3474
+ "regular"
3475
+ ],
3476
+ "subsets": [
3477
+ "khmer"
3478
+ ]
3479
+ },
3480
+ {
3481
+ "kind": "webfonts#webfont",
3482
+ "family": "Metal Mania",
3483
+ "variants": [
3484
+ "regular"
3485
+ ],
3486
+ "subsets": [
3487
+ "latin-ext",
3488
+ "latin"
3489
+ ]
3490
+ },
3491
+ {
3492
+ "kind": "webfonts#webfont",
3493
+ "family": "Metamorphous",
3494
+ "variants": [
3495
+ "regular"
3496
+ ],
3497
+ "subsets": [
3498
+ "latin-ext",
3499
+ "latin"
3500
+ ]
3501
+ },
3502
+ {
3503
+ "kind": "webfonts#webfont",
3504
+ "family": "Metrophobic",
3505
+ "variants": [
3506
+ "regular"
3507
+ ],
3508
+ "subsets": [
3509
+ "latin"
3510
+ ]
3511
+ },
3512
+ {
3513
+ "kind": "webfonts#webfont",
3514
+ "family": "Michroma",
3515
+ "variants": [
3516
+ "regular"
3517
+ ],
3518
+ "subsets": [
3519
+ "latin"
3520
+ ]
3521
+ },
3522
+ {
3523
+ "kind": "webfonts#webfont",
3524
+ "family": "Miltonian",
3525
+ "variants": [
3526
+ "regular"
3527
+ ],
3528
+ "subsets": [
3529
+ "latin"
3530
+ ]
3531
+ },
3532
+ {
3533
+ "kind": "webfonts#webfont",
3534
+ "family": "Miltonian Tattoo",
3535
+ "variants": [
3536
+ "regular"
3537
+ ],
3538
+ "subsets": [
3539
+ "latin"
3540
+ ]
3541
+ },
3542
+ {
3543
+ "kind": "webfonts#webfont",
3544
+ "family": "Miniver",
3545
+ "variants": [
3546
+ "regular"
3547
+ ],
3548
+ "subsets": [
3549
+ "latin"
3550
+ ]
3551
+ },
3552
+ {
3553
+ "kind": "webfonts#webfont",
3554
+ "family": "Miss Fajardose",
3555
+ "variants": [
3556
+ "regular"
3557
+ ],
3558
+ "subsets": [
3559
+ "latin-ext",
3560
+ "latin"
3561
+ ]
3562
+ },
3563
+ {
3564
+ "kind": "webfonts#webfont",
3565
+ "family": "Modern Antiqua",
3566
+ "variants": [
3567
+ "regular"
3568
+ ],
3569
+ "subsets": [
3570
+ "latin-ext",
3571
+ "latin"
3572
+ ]
3573
+ },
3574
+ {
3575
+ "kind": "webfonts#webfont",
3576
+ "family": "Molengo",
3577
+ "variants": [
3578
+ "regular"
3579
+ ],
3580
+ "subsets": [
3581
+ "latin-ext",
3582
+ "latin"
3583
+ ]
3584
+ },
3585
+ {
3586
+ "kind": "webfonts#webfont",
3587
+ "family": "Monofett",
3588
+ "variants": [
3589
+ "regular"
3590
+ ],
3591
+ "subsets": [
3592
+ "latin"
3593
+ ]
3594
+ },
3595
+ {
3596
+ "kind": "webfonts#webfont",
3597
+ "family": "Monoton",
3598
+ "variants": [
3599
+ "regular"
3600
+ ],
3601
+ "subsets": [
3602
+ "latin"
3603
+ ]
3604
+ },
3605
+ {
3606
+ "kind": "webfonts#webfont",
3607
+ "family": "Monsieur La Doulaise",
3608
+ "variants": [
3609
+ "regular"
3610
+ ],
3611
+ "subsets": [
3612
+ "latin-ext",
3613
+ "latin"
3614
+ ]
3615
+ },
3616
+ {
3617
+ "kind": "webfonts#webfont",
3618
+ "family": "Montaga",
3619
+ "variants": [
3620
+ "regular"
3621
+ ],
3622
+ "subsets": [
3623
+ "latin"
3624
+ ]
3625
+ },
3626
+ {
3627
+ "kind": "webfonts#webfont",
3628
+ "family": "Montez",
3629
+ "variants": [
3630
+ "regular"
3631
+ ],
3632
+ "subsets": [
3633
+ "latin"
3634
+ ]
3635
+ },
3636
+ {
3637
+ "kind": "webfonts#webfont",
3638
+ "family": "Montserrat",
3639
+ "variants": [
3640
+ "regular"
3641
+ ],
3642
+ "subsets": [
3643
+ "latin"
3644
+ ]
3645
+ },
3646
+ {
3647
+ "kind": "webfonts#webfont",
3648
+ "family": "Moul",
3649
+ "variants": [
3650
+ "regular"
3651
+ ],
3652
+ "subsets": [
3653
+ "khmer"
3654
+ ]
3655
+ },
3656
+ {
3657
+ "kind": "webfonts#webfont",
3658
+ "family": "Moulpali",
3659
+ "variants": [
3660
+ "regular"
3661
+ ],
3662
+ "subsets": [
3663
+ "khmer"
3664
+ ]
3665
+ },
3666
+ {
3667
+ "kind": "webfonts#webfont",
3668
+ "family": "Mountains of Christmas",
3669
+ "variants": [
3670
+ "regular",
3671
+ "700"
3672
+ ],
3673
+ "subsets": [
3674
+ "latin"
3675
+ ]
3676
+ },
3677
+ {
3678
+ "kind": "webfonts#webfont",
3679
+ "family": "Mr Bedfort",
3680
+ "variants": [
3681
+ "regular"
3682
+ ],
3683
+ "subsets": [
3684
+ "latin-ext",
3685
+ "latin"
3686
+ ]
3687
+ },
3688
+ {
3689
+ "kind": "webfonts#webfont",
3690
+ "family": "Mr Dafoe",
3691
+ "variants": [
3692
+ "regular"
3693
+ ],
3694
+ "subsets": [
3695
+ "latin-ext",
3696
+ "latin"
3697
+ ]
3698
+ },
3699
+ {
3700
+ "kind": "webfonts#webfont",
3701
+ "family": "Mr De Haviland",
3702
+ "variants": [
3703
+ "regular"
3704
+ ],
3705
+ "subsets": [
3706
+ "latin-ext",
3707
+ "latin"
3708
+ ]
3709
+ },
3710
+ {
3711
+ "kind": "webfonts#webfont",
3712
+ "family": "Mrs Saint Delafield",
3713
+ "variants": [
3714
+ "regular"
3715
+ ],
3716
+ "subsets": [
3717
+ "latin-ext",
3718
+ "latin"
3719
+ ]
3720
+ },
3721
+ {
3722
+ "kind": "webfonts#webfont",
3723
+ "family": "Mrs Sheppards",
3724
+ "variants": [
3725
+ "regular"
3726
+ ],
3727
+ "subsets": [
3728
+ "latin-ext",
3729
+ "latin"
3730
+ ]
3731
+ },
3732
+ {
3733
+ "kind": "webfonts#webfont",
3734
+ "family": "Muli",
3735
+ "variants": [
3736
+ "300",
3737
+ "300italic",
3738
+ "regular",
3739
+ "italic"
3740
+ ],
3741
+ "subsets": [
3742
+ "latin"
3743
+ ]
3744
+ },
3745
+ {
3746
+ "kind": "webfonts#webfont",
3747
+ "family": "Mystery Quest",
3748
+ "variants": [
3749
+ "regular"
3750
+ ],
3751
+ "subsets": [
3752
+ "latin-ext",
3753
+ "latin"
3754
+ ]
3755
+ },
3756
+ {
3757
+ "kind": "webfonts#webfont",
3758
+ "family": "Neucha",
3759
+ "variants": [
3760
+ "regular"
3761
+ ],
3762
+ "subsets": [
3763
+ "latin",
3764
+ "cyrillic"
3765
+ ]
3766
+ },
3767
+ {
3768
+ "kind": "webfonts#webfont",
3769
+ "family": "Neuton",
3770
+ "variants": [
3771
+ "200",
3772
+ "300",
3773
+ "regular",
3774
+ "italic",
3775
+ "700",
3776
+ "800"
3777
+ ],
3778
+ "subsets": [
3779
+ "latin-ext",
3780
+ "latin"
3781
+ ]
3782
+ },
3783
+ {
3784
+ "kind": "webfonts#webfont",
3785
+ "family": "News Cycle",
3786
+ "variants": [
3787
+ "regular",
3788
+ "700"
3789
+ ],
3790
+ "subsets": [
3791
+ "latin"
3792
+ ]
3793
+ },
3794
+ {
3795
+ "kind": "webfonts#webfont",
3796
+ "family": "Niconne",
3797
+ "variants": [
3798
+ "regular"
3799
+ ],
3800
+ "subsets": [
3801
+ "latin-ext",
3802
+ "latin"
3803
+ ]
3804
+ },
3805
+ {
3806
+ "kind": "webfonts#webfont",
3807
+ "family": "Nixie One",
3808
+ "variants": [
3809
+ "regular"
3810
+ ],
3811
+ "subsets": [
3812
+ "latin"
3813
+ ]
3814
+ },
3815
+ {
3816
+ "kind": "webfonts#webfont",
3817
+ "family": "Nobile",
3818
+ "variants": [
3819
+ "regular",
3820
+ "italic",
3821
+ "700",
3822
+ "700italic"
3823
+ ],
3824
+ "subsets": [
3825
+ "latin"
3826
+ ]
3827
+ },
3828
+ {
3829
+ "kind": "webfonts#webfont",
3830
+ "family": "Nokora",
3831
+ "variants": [
3832
+ "regular",
3833
+ "700"
3834
+ ],
3835
+ "subsets": [
3836
+ "khmer"
3837
+ ]
3838
+ },
3839
+ {
3840
+ "kind": "webfonts#webfont",
3841
+ "family": "Norican",
3842
+ "variants": [
3843
+ "regular"
3844
+ ],
3845
+ "subsets": [
3846
+ "latin-ext",
3847
+ "latin"
3848
+ ]
3849
+ },
3850
+ {
3851
+ "kind": "webfonts#webfont",
3852
+ "family": "Nosifer",
3853
+ "variants": [
3854
+ "regular"
3855
+ ],
3856
+ "subsets": [
3857
+ "latin-ext",
3858
+ "latin"
3859
+ ]
3860
+ },
3861
+ {
3862
+ "kind": "webfonts#webfont",
3863
+ "family": "Nothing You Could Do",
3864
+ "variants": [
3865
+ "regular"
3866
+ ],
3867
+ "subsets": [
3868
+ "latin"
3869
+ ]
3870
+ },
3871
+ {
3872
+ "kind": "webfonts#webfont",
3873
+ "family": "Noticia Text",
3874
+ "variants": [
3875
+ "regular",
3876
+ "italic",
3877
+ "700",
3878
+ "700italic"
3879
+ ],
3880
+ "subsets": [
3881
+ "latin-ext",
3882
+ "latin",
3883
+ "vietnamese"
3884
+ ]
3885
+ },
3886
+ {
3887
+ "kind": "webfonts#webfont",
3888
+ "family": "Nova Cut",
3889
+ "variants": [
3890
+ "regular"
3891
+ ],
3892
+ "subsets": [
3893
+ "latin"
3894
+ ]
3895
+ },
3896
+ {
3897
+ "kind": "webfonts#webfont",
3898
+ "family": "Nova Flat",
3899
+ "variants": [
3900
+ "regular"
3901
+ ],
3902
+ "subsets": [
3903
+ "latin"
3904
+ ]
3905
+ },
3906
+ {
3907
+ "kind": "webfonts#webfont",
3908
+ "family": "Nova Mono",
3909
+ "variants": [
3910
+ "regular"
3911
+ ],
3912
+ "subsets": [
3913
+ "greek",
3914
+ "latin"
3915
+ ]
3916
+ },
3917
+ {
3918
+ "kind": "webfonts#webfont",
3919
+ "family": "Nova Oval",
3920
+ "variants": [
3921
+ "regular"
3922
+ ],
3923
+ "subsets": [
3924
+ "latin"
3925
+ ]
3926
+ },
3927
+ {
3928
+ "kind": "webfonts#webfont",
3929
+ "family": "Nova Round",
3930
+ "variants": [
3931
+ "regular"
3932
+ ],
3933
+ "subsets": [
3934
+ "latin"
3935
+ ]
3936
+ },
3937
+ {
3938
+ "kind": "webfonts#webfont",
3939
+ "family": "Nova Script",
3940
+ "variants": [
3941
+ "regular"
3942
+ ],
3943
+ "subsets": [
3944
+ "latin"
3945
+ ]
3946
+ },
3947
+ {
3948
+ "kind": "webfonts#webfont",
3949
+ "family": "Nova Slim",
3950
+ "variants": [
3951
+ "regular"
3952
+ ],
3953
+ "subsets": [
3954
+ "latin"
3955
+ ]
3956
+ },
3957
+ {
3958
+ "kind": "webfonts#webfont",
3959
+ "family": "Nova Square",
3960
+ "variants": [
3961
+ "regular"
3962
+ ],
3963
+ "subsets": [
3964
+ "latin"
3965
+ ]
3966
+ },
3967
+ {
3968
+ "kind": "webfonts#webfont",
3969
+ "family": "Numans",
3970
+ "variants": [
3971
+ "regular"
3972
+ ],
3973
+ "subsets": [
3974
+ "latin"
3975
+ ]
3976
+ },
3977
+ {
3978
+ "kind": "webfonts#webfont",
3979
+ "family": "Nunito",
3980
+ "variants": [
3981
+ "300",
3982
+ "regular",
3983
+ "700"
3984
+ ],
3985
+ "subsets": [
3986
+ "latin"
3987
+ ]
3988
+ },
3989
+ {
3990
+ "kind": "webfonts#webfont",
3991
+ "family": "Odor Mean Chey",
3992
+ "variants": [
3993
+ "regular"
3994
+ ],
3995
+ "subsets": [
3996
+ "khmer"
3997
+ ]
3998
+ },
3999
+ {
4000
+ "kind": "webfonts#webfont",
4001
+ "family": "Old Standard TT",
4002
+ "variants": [
4003
+ "regular",
4004
+ "italic",
4005
+ "700"
4006
+ ],
4007
+ "subsets": [
4008
+ "latin"
4009
+ ]
4010
+ },
4011
+ {
4012
+ "kind": "webfonts#webfont",
4013
+ "family": "Oldenburg",
4014
+ "variants": [
4015
+ "regular"
4016
+ ],
4017
+ "subsets": [
4018
+ "latin-ext",
4019
+ "latin"
4020
+ ]
4021
+ },
4022
+ {
4023
+ "kind": "webfonts#webfont",
4024
+ "family": "Oleo Script",
4025
+ "variants": [
4026
+ "regular",
4027
+ "700"
4028
+ ],
4029
+ "subsets": [
4030
+ "latin-ext",
4031
+ "latin"
4032
+ ]
4033
+ },
4034
+ {
4035
+ "kind": "webfonts#webfont",
4036
+ "family": "Open Sans",
4037
+ "variants": [
4038
+ "300",
4039
+ "300italic",
4040
+ "regular",
4041
+ "italic",
4042
+ "600",
4043
+ "600italic",
4044
+ "700",
4045
+ "700italic",
4046
+ "800",
4047
+ "800italic"
4048
+ ],
4049
+ "subsets": [
4050
+ "greek-ext",
4051
+ "cyrillic-ext",
4052
+ "greek",
4053
+ "latin-ext",
4054
+ "latin",
4055
+ "cyrillic",
4056
+ "vietnamese"
4057
+ ]
4058
+ },
4059
+ {
4060
+ "kind": "webfonts#webfont",
4061
+ "family": "Open Sans Condensed",
4062
+ "variants": [
4063
+ "300",
4064
+ "300italic",
4065
+ "700"
4066
+ ],
4067
+ "subsets": [
4068
+ "greek-ext",
4069
+ "cyrillic-ext",
4070
+ "greek",
4071
+ "latin-ext",
4072
+ "latin",
4073
+ "cyrillic",
4074
+ "vietnamese"
4075
+ ]
4076
+ },
4077
+ {
4078
+ "kind": "webfonts#webfont",
4079
+ "family": "Orbitron",
4080
+ "variants": [
4081
+ "regular",
4082
+ "500",
4083
+ "700",
4084
+ "900"
4085
+ ],
4086
+ "subsets": [
4087
+ "latin"
4088
+ ]
4089
+ },
4090
+ {
4091
+ "kind": "webfonts#webfont",
4092
+ "family": "Original Surfer",
4093
+ "variants": [
4094
+ "regular"
4095
+ ],
4096
+ "subsets": [
4097
+ "latin"
4098
+ ]
4099
+ },
4100
+ {
4101
+ "kind": "webfonts#webfont",
4102
+ "family": "Oswald",
4103
+ "variants": [
4104
+ "300",
4105
+ "regular",
4106
+ "700"
4107
+ ],
4108
+ "subsets": [
4109
+ "latin-ext",
4110
+ "latin"
4111
+ ]
4112
+ },
4113
+ {
4114
+ "kind": "webfonts#webfont",
4115
+ "family": "Over the Rainbow",
4116
+ "variants": [
4117
+ "regular"
4118
+ ],
4119
+ "subsets": [
4120
+ "latin"
4121
+ ]
4122
+ },
4123
+ {
4124
+ "kind": "webfonts#webfont",
4125
+ "family": "Overlock",
4126
+ "variants": [
4127
+ "regular",
4128
+ "italic",
4129
+ "700",
4130
+ "700italic",
4131
+ "900",
4132
+ "900italic"
4133
+ ],
4134
+ "subsets": [
4135
+ "latin-ext",
4136
+ "latin"
4137
+ ]
4138
+ },
4139
+ {
4140
+ "kind": "webfonts#webfont",
4141
+ "family": "Overlock SC",
4142
+ "variants": [
4143
+ "regular"
4144
+ ],
4145
+ "subsets": [
4146
+ "latin-ext",
4147
+ "latin"
4148
+ ]
4149
+ },
4150
+ {
4151
+ "kind": "webfonts#webfont",
4152
+ "family": "Ovo",
4153
+ "variants": [
4154
+ "regular"
4155
+ ],
4156
+ "subsets": [
4157
+ "latin"
4158
+ ]
4159
+ },
4160
+ {
4161
+ "kind": "webfonts#webfont",
4162
+ "family": "Oxygen",
4163
+ "variants": [
4164
+ "regular"
4165
+ ],
4166
+ "subsets": [
4167
+ "latin-ext",
4168
+ "latin"
4169
+ ]
4170
+ },
4171
+ {
4172
+ "kind": "webfonts#webfont",
4173
+ "family": "PT Mono",
4174
+ "variants": [
4175
+ "regular"
4176
+ ],
4177
+ "subsets": [
4178
+ "cyrillic-ext",
4179
+ "latin-ext",
4180
+ "latin",
4181
+ "cyrillic"
4182
+ ]
4183
+ },
4184
+ {
4185
+ "kind": "webfonts#webfont",
4186
+ "family": "PT Sans",
4187
+ "variants": [
4188
+ "regular",
4189
+ "italic",
4190
+ "700",
4191
+ "700italic"
4192
+ ],
4193
+ "subsets": [
4194
+ "latin-ext",
4195
+ "latin",
4196
+ "cyrillic"
4197
+ ]
4198
+ },
4199
+ {
4200
+ "kind": "webfonts#webfont",
4201
+ "family": "PT Sans Caption",
4202
+ "variants": [
4203
+ "regular",
4204
+ "700"
4205
+ ],
4206
+ "subsets": [
4207
+ "latin-ext",
4208
+ "latin",
4209
+ "cyrillic"
4210
+ ]
4211
+ },
4212
+ {
4213
+ "kind": "webfonts#webfont",
4214
+ "family": "PT Sans Narrow",
4215
+ "variants": [
4216
+ "regular",
4217
+ "700"
4218
+ ],
4219
+ "subsets": [
4220
+ "latin-ext",
4221
+ "latin",
4222
+ "cyrillic"
4223
+ ]
4224
+ },
4225
+ {
4226
+ "kind": "webfonts#webfont",
4227
+ "family": "PT Serif",
4228
+ "variants": [
4229
+ "regular",
4230
+ "italic",
4231
+ "700",
4232
+ "700italic"
4233
+ ],
4234
+ "subsets": [
4235
+ "latin",
4236
+ "cyrillic"
4237
+ ]
4238
+ },
4239
+ {
4240
+ "kind": "webfonts#webfont",
4241
+ "family": "PT Serif Caption",
4242
+ "variants": [
4243
+ "regular",
4244
+ "italic"
4245
+ ],
4246
+ "subsets": [
4247
+ "latin",
4248
+ "cyrillic"
4249
+ ]
4250
+ },
4251
+ {
4252
+ "kind": "webfonts#webfont",
4253
+ "family": "Pacifico",
4254
+ "variants": [
4255
+ "regular"
4256
+ ],
4257
+ "subsets": [
4258
+ "latin"
4259
+ ]
4260
+ },
4261
+ {
4262
+ "kind": "webfonts#webfont",
4263
+ "family": "Parisienne",
4264
+ "variants": [
4265
+ "regular"
4266
+ ],
4267
+ "subsets": [
4268
+ "latin-ext",
4269
+ "latin"
4270
+ ]
4271
+ },
4272
+ {
4273
+ "kind": "webfonts#webfont",
4274
+ "family": "Passero One",
4275
+ "variants": [
4276
+ "regular"
4277
+ ],
4278
+ "subsets": [
4279
+ "latin-ext",
4280
+ "latin"
4281
+ ]
4282
+ },
4283
+ {
4284
+ "kind": "webfonts#webfont",
4285
+ "family": "Passion One",
4286
+ "variants": [
4287
+ "regular",
4288
+ "700",
4289
+ "900"
4290
+ ],
4291
+ "subsets": [
4292
+ "latin-ext",
4293
+ "latin"
4294
+ ]
4295
+ },
4296
+ {
4297
+ "kind": "webfonts#webfont",
4298
+ "family": "Patrick Hand",
4299
+ "variants": [
4300
+ "regular"
4301
+ ],
4302
+ "subsets": [
4303
+ "latin-ext",
4304
+ "latin"
4305
+ ]
4306
+ },
4307
+ {
4308
+ "kind": "webfonts#webfont",
4309
+ "family": "Patua One",
4310
+ "variants": [
4311
+ "regular"
4312
+ ],
4313
+ "subsets": [
4314
+ "latin"
4315
+ ]
4316
+ },
4317
+ {
4318
+ "kind": "webfonts#webfont",
4319
+ "family": "Paytone One",
4320
+ "variants": [
4321
+ "regular"
4322
+ ],
4323
+ "subsets": [
4324
+ "latin"
4325
+ ]
4326
+ },
4327
+ {
4328
+ "kind": "webfonts#webfont",
4329
+ "family": "Permanent Marker",
4330
+ "variants": [
4331
+ "regular"
4332
+ ],
4333
+ "subsets": [
4334
+ "latin"
4335
+ ]
4336
+ },
4337
+ {
4338
+ "kind": "webfonts#webfont",
4339
+ "family": "Petrona",
4340
+ "variants": [
4341
+ "regular"
4342
+ ],
4343
+ "subsets": [
4344
+ "latin"
4345
+ ]
4346
+ },
4347
+ {
4348
+ "kind": "webfonts#webfont",
4349
+ "family": "Philosopher",
4350
+ "variants": [
4351
+ "regular",
4352
+ "italic",
4353
+ "700",
4354
+ "700italic"
4355
+ ],
4356
+ "subsets": [
4357
+ "latin",
4358
+ "cyrillic"
4359
+ ]
4360
+ },
4361
+ {
4362
+ "kind": "webfonts#webfont",
4363
+ "family": "Piedra",
4364
+ "variants": [
4365
+ "regular"
4366
+ ],
4367
+ "subsets": [
4368
+ "latin-ext",
4369
+ "latin"
4370
+ ]
4371
+ },
4372
+ {
4373
+ "kind": "webfonts#webfont",
4374
+ "family": "Pinyon Script",
4375
+ "variants": [
4376
+ "regular"
4377
+ ],
4378
+ "subsets": [
4379
+ "latin"
4380
+ ]
4381
+ },
4382
+ {
4383
+ "kind": "webfonts#webfont",
4384
+ "family": "Plaster",
4385
+ "variants": [
4386
+ "regular"
4387
+ ],
4388
+ "subsets": [
4389
+ "latin-ext",
4390
+ "latin"
4391
+ ]
4392
+ },
4393
+ {
4394
+ "kind": "webfonts#webfont",
4395
+ "family": "Play",
4396
+ "variants": [
4397
+ "regular",
4398
+ "700"
4399
+ ],
4400
+ "subsets": [
4401
+ "greek-ext",
4402
+ "cyrillic-ext",
4403
+ "greek",
4404
+ "latin-ext",
4405
+ "latin",
4406
+ "cyrillic"
4407
+ ]
4408
+ },
4409
+ {
4410
+ "kind": "webfonts#webfont",
4411
+ "family": "Playball",
4412
+ "variants": [
4413
+ "regular"
4414
+ ],
4415
+ "subsets": [
4416
+ "latin-ext",
4417
+ "latin"
4418
+ ]
4419
+ },
4420
+ {
4421
+ "kind": "webfonts#webfont",
4422
+ "family": "Playfair Display",
4423
+ "variants": [
4424
+ "regular",
4425
+ "italic"
4426
+ ],
4427
+ "subsets": [
4428
+ "latin-ext",
4429
+ "latin"
4430
+ ]
4431
+ },
4432
+ {
4433
+ "kind": "webfonts#webfont",
4434
+ "family": "Podkova",
4435
+ "variants": [
4436
+ "regular",
4437
+ "700"
4438
+ ],
4439
+ "subsets": [
4440
+ "latin"
4441
+ ]
4442
+ },
4443
+ {
4444
+ "kind": "webfonts#webfont",
4445
+ "family": "Poiret One",
4446
+ "variants": [
4447
+ "regular"
4448
+ ],
4449
+ "subsets": [
4450
+ "latin-ext",
4451
+ "latin",
4452
+ "cyrillic"
4453
+ ]
4454
+ },
4455
+ {
4456
+ "kind": "webfonts#webfont",
4457
+ "family": "Poller One",
4458
+ "variants": [
4459
+ "regular"
4460
+ ],
4461
+ "subsets": [
4462
+ "latin"
4463
+ ]
4464
+ },
4465
+ {
4466
+ "kind": "webfonts#webfont",
4467
+ "family": "Poly",
4468
+ "variants": [
4469
+ "regular",
4470
+ "italic"
4471
+ ],
4472
+ "subsets": [
4473
+ "latin"
4474
+ ]
4475
+ },
4476
+ {
4477
+ "kind": "webfonts#webfont",
4478
+ "family": "Pompiere",
4479
+ "variants": [
4480
+ "regular"
4481
+ ],
4482
+ "subsets": [
4483
+ "latin"
4484
+ ]
4485
+ },
4486
+ {
4487
+ "kind": "webfonts#webfont",
4488
+ "family": "Pontano Sans",
4489
+ "variants": [
4490
+ "regular"
4491
+ ],
4492
+ "subsets": [
4493
+ "latin-ext",
4494
+ "latin"
4495
+ ]
4496
+ },
4497
+ {
4498
+ "kind": "webfonts#webfont",
4499
+ "family": "Port Lligat Sans",
4500
+ "variants": [
4501
+ "regular"
4502
+ ],
4503
+ "subsets": [
4504
+ "latin"
4505
+ ]
4506
+ },
4507
+ {
4508
+ "kind": "webfonts#webfont",
4509
+ "family": "Port Lligat Slab",
4510
+ "variants": [
4511
+ "regular"
4512
+ ],
4513
+ "subsets": [
4514
+ "latin"
4515
+ ]
4516
+ },
4517
+ {
4518
+ "kind": "webfonts#webfont",
4519
+ "family": "Prata",
4520
+ "variants": [
4521
+ "regular"
4522
+ ],
4523
+ "subsets": [
4524
+ "latin"
4525
+ ]
4526
+ },
4527
+ {
4528
+ "kind": "webfonts#webfont",
4529
+ "family": "Preahvihear",
4530
+ "variants": [
4531
+ "regular"
4532
+ ],
4533
+ "subsets": [
4534
+ "khmer"
4535
+ ]
4536
+ },
4537
+ {
4538
+ "kind": "webfonts#webfont",
4539
+ "family": "Press Start 2P",
4540
+ "variants": [
4541
+ "regular"
4542
+ ],
4543
+ "subsets": [
4544
+ "greek",
4545
+ "latin-ext",
4546
+ "latin",
4547
+ "cyrillic"
4548
+ ]
4549
+ },
4550
+ {
4551
+ "kind": "webfonts#webfont",
4552
+ "family": "Princess Sofia",
4553
+ "variants": [
4554
+ "regular"
4555
+ ],
4556
+ "subsets": [
4557
+ "latin-ext",
4558
+ "latin"
4559
+ ]
4560
+ },
4561
+ {
4562
+ "kind": "webfonts#webfont",
4563
+ "family": "Prociono",
4564
+ "variants": [
4565
+ "regular"
4566
+ ],
4567
+ "subsets": [
4568
+ "latin"
4569
+ ]
4570
+ },
4571
+ {
4572
+ "kind": "webfonts#webfont",
4573
+ "family": "Prosto One",
4574
+ "variants": [
4575
+ "regular"
4576
+ ],
4577
+ "subsets": [
4578
+ "latin-ext",
4579
+ "latin",
4580
+ "cyrillic"
4581
+ ]
4582
+ },
4583
+ {
4584
+ "kind": "webfonts#webfont",
4585
+ "family": "Puritan",
4586
+ "variants": [
4587
+ "regular",
4588
+ "italic",
4589
+ "700",
4590
+ "700italic"
4591
+ ],
4592
+ "subsets": [
4593
+ "latin"
4594
+ ]
4595
+ },
4596
+ {
4597
+ "kind": "webfonts#webfont",
4598
+ "family": "Quando",
4599
+ "variants": [
4600
+ "regular"
4601
+ ],
4602
+ "subsets": [
4603
+ "latin-ext",
4604
+ "latin"
4605
+ ]
4606
+ },
4607
+ {
4608
+ "kind": "webfonts#webfont",
4609
+ "family": "Quantico",
4610
+ "variants": [
4611
+ "regular",
4612
+ "italic",
4613
+ "700",
4614
+ "700italic"
4615
+ ],
4616
+ "subsets": [
4617
+ "latin"
4618
+ ]
4619
+ },
4620
+ {
4621
+ "kind": "webfonts#webfont",
4622
+ "family": "Quattrocento",
4623
+ "variants": [
4624
+ "regular",
4625
+ "700"
4626
+ ],
4627
+ "subsets": [
4628
+ "latin-ext",
4629
+ "latin"
4630
+ ]
4631
+ },
4632
+ {
4633
+ "kind": "webfonts#webfont",
4634
+ "family": "Quattrocento Sans",
4635
+ "variants": [
4636
+ "regular",
4637
+ "italic",
4638
+ "700",
4639
+ "700italic"
4640
+ ],
4641
+ "subsets": [
4642
+ "latin-ext",
4643
+ "latin"
4644
+ ]
4645
+ },
4646
+ {
4647
+ "kind": "webfonts#webfont",
4648
+ "family": "Questrial",
4649
+ "variants": [
4650
+ "regular"
4651
+ ],
4652
+ "subsets": [
4653
+ "latin"
4654
+ ]
4655
+ },
4656
+ {
4657
+ "kind": "webfonts#webfont",
4658
+ "family": "Quicksand",
4659
+ "variants": [
4660
+ "300",
4661
+ "regular",
4662
+ "700"
4663
+ ],
4664
+ "subsets": [
4665
+ "latin"
4666
+ ]
4667
+ },
4668
+ {
4669
+ "kind": "webfonts#webfont",
4670
+ "family": "Qwigley",
4671
+ "variants": [
4672
+ "regular"
4673
+ ],
4674
+ "subsets": [
4675
+ "latin-ext",
4676
+ "latin"
4677
+ ]
4678
+ },
4679
+ {
4680
+ "kind": "webfonts#webfont",
4681
+ "family": "Radley",
4682
+ "variants": [
4683
+ "regular",
4684
+ "italic"
4685
+ ],
4686
+ "subsets": [
4687
+ "latin-ext",
4688
+ "latin"
4689
+ ]
4690
+ },
4691
+ {
4692
+ "kind": "webfonts#webfont",
4693
+ "family": "Raleway",
4694
+ "variants": [
4695
+ "100"
4696
+ ],
4697
+ "subsets": [
4698
+ "latin"
4699
+ ]
4700
+ },
4701
+ {
4702
+ "kind": "webfonts#webfont",
4703
+ "family": "Rammetto One",
4704
+ "variants": [
4705
+ "regular"
4706
+ ],
4707
+ "subsets": [
4708
+ "latin-ext",
4709
+ "latin"
4710
+ ]
4711
+ },
4712
+ {
4713
+ "kind": "webfonts#webfont",
4714
+ "family": "Rancho",
4715
+ "variants": [
4716
+ "regular"
4717
+ ],
4718
+ "subsets": [
4719
+ "latin"
4720
+ ]
4721
+ },
4722
+ {
4723
+ "kind": "webfonts#webfont",
4724
+ "family": "Rationale",
4725
+ "variants": [
4726
+ "regular"
4727
+ ],
4728
+ "subsets": [
4729
+ "latin"
4730
+ ]
4731
+ },
4732
+ {
4733
+ "kind": "webfonts#webfont",
4734
+ "family": "Redressed",
4735
+ "variants": [
4736
+ "regular"
4737
+ ],
4738
+ "subsets": [
4739
+ "latin"
4740
+ ]
4741
+ },
4742
+ {
4743
+ "kind": "webfonts#webfont",
4744
+ "family": "Reenie Beanie",
4745
+ "variants": [
4746
+ "regular"
4747
+ ],
4748
+ "subsets": [
4749
+ "latin"
4750
+ ]
4751
+ },
4752
+ {
4753
+ "kind": "webfonts#webfont",
4754
+ "family": "Revalia",
4755
+ "variants": [
4756
+ "regular"
4757
+ ],
4758
+ "subsets": [
4759
+ "latin-ext",
4760
+ "latin"
4761
+ ]
4762
+ },
4763
+ {
4764
+ "kind": "webfonts#webfont",
4765
+ "family": "Ribeye",
4766
+ "variants": [
4767
+ "regular"
4768
+ ],
4769
+ "subsets": [
4770
+ "latin-ext",
4771
+ "latin"
4772
+ ]
4773
+ },
4774
+ {
4775
+ "kind": "webfonts#webfont",
4776
+ "family": "Ribeye Marrow",
4777
+ "variants": [
4778
+ "regular"
4779
+ ],
4780
+ "subsets": [
4781
+ "latin-ext",
4782
+ "latin"
4783
+ ]
4784
+ },
4785
+ {
4786
+ "kind": "webfonts#webfont",
4787
+ "family": "Righteous",
4788
+ "variants": [
4789
+ "regular"
4790
+ ],
4791
+ "subsets": [
4792
+ "latin-ext",
4793
+ "latin"
4794
+ ]
4795
+ },
4796
+ {
4797
+ "kind": "webfonts#webfont",
4798
+ "family": "Rochester",
4799
+ "variants": [
4800
+ "regular"
4801
+ ],
4802
+ "subsets": [
4803
+ "latin"
4804
+ ]
4805
+ },
4806
+ {
4807
+ "kind": "webfonts#webfont",
4808
+ "family": "Rock Salt",
4809
+ "variants": [
4810
+ "regular"
4811
+ ],
4812
+ "subsets": [
4813
+ "latin"
4814
+ ]
4815
+ },
4816
+ {
4817
+ "kind": "webfonts#webfont",
4818
+ "family": "Rokkitt",
4819
+ "variants": [
4820
+ "regular",
4821
+ "700"
4822
+ ],
4823
+ "subsets": [
4824
+ "latin"
4825
+ ]
4826
+ },
4827
+ {
4828
+ "kind": "webfonts#webfont",
4829
+ "family": "Ropa Sans",
4830
+ "variants": [
4831
+ "regular",
4832
+ "italic"
4833
+ ],
4834
+ "subsets": [
4835
+ "latin-ext",
4836
+ "latin"
4837
+ ]
4838
+ },
4839
+ {
4840
+ "kind": "webfonts#webfont",
4841
+ "family": "Rosario",
4842
+ "variants": [
4843
+ "regular",
4844
+ "italic",
4845
+ "700",
4846
+ "700italic"
4847
+ ],
4848
+ "subsets": [
4849
+ "latin"
4850
+ ]
4851
+ },
4852
+ {
4853
+ "kind": "webfonts#webfont",
4854
+ "family": "Rosarivo",
4855
+ "variants": [
4856
+ "regular",
4857
+ "italic"
4858
+ ],
4859
+ "subsets": [
4860
+ "latin-ext",
4861
+ "latin"
4862
+ ]
4863
+ },
4864
+ {
4865
+ "kind": "webfonts#webfont",
4866
+ "family": "Rouge Script",
4867
+ "variants": [
4868
+ "regular"
4869
+ ],
4870
+ "subsets": [
4871
+ "latin"
4872
+ ]
4873
+ },
4874
+ {
4875
+ "kind": "webfonts#webfont",
4876
+ "family": "Ruda",
4877
+ "variants": [
4878
+ "regular",
4879
+ "700",
4880
+ "900"
4881
+ ],
4882
+ "subsets": [
4883
+ "latin-ext",
4884
+ "latin"
4885
+ ]
4886
+ },
4887
+ {
4888
+ "kind": "webfonts#webfont",
4889
+ "family": "Ruge Boogie",
4890
+ "variants": [
4891
+ "regular"
4892
+ ],
4893
+ "subsets": [
4894
+ "latin-ext",
4895
+ "latin"
4896
+ ]
4897
+ },
4898
+ {
4899
+ "kind": "webfonts#webfont",
4900
+ "family": "Ruluko",
4901
+ "variants": [
4902
+ "regular"
4903
+ ],
4904
+ "subsets": [
4905
+ "latin-ext",
4906
+ "latin"
4907
+ ]
4908
+ },
4909
+ {
4910
+ "kind": "webfonts#webfont",
4911
+ "family": "Ruslan Display",
4912
+ "variants": [
4913
+ "regular"
4914
+ ],
4915
+ "subsets": [
4916
+ "cyrillic-ext",
4917
+ "latin-ext",
4918
+ "latin",
4919
+ "cyrillic"
4920
+ ]
4921
+ },
4922
+ {
4923
+ "kind": "webfonts#webfont",
4924
+ "family": "Russo One",
4925
+ "variants": [
4926
+ "regular"
4927
+ ],
4928
+ "subsets": [
4929
+ "latin-ext",
4930
+ "latin",
4931
+ "cyrillic"
4932
+ ]
4933
+ },
4934
+ {
4935
+ "kind": "webfonts#webfont",
4936
+ "family": "Ruthie",
4937
+ "variants": [
4938
+ "regular"
4939
+ ],
4940
+ "subsets": [
4941
+ "latin-ext",
4942
+ "latin"
4943
+ ]
4944
+ },
4945
+ {
4946
+ "kind": "webfonts#webfont",
4947
+ "family": "Sail",
4948
+ "variants": [
4949
+ "regular"
4950
+ ],
4951
+ "subsets": [
4952
+ "latin"
4953
+ ]
4954
+ },
4955
+ {
4956
+ "kind": "webfonts#webfont",
4957
+ "family": "Salsa",
4958
+ "variants": [
4959
+ "regular"
4960
+ ],
4961
+ "subsets": [
4962
+ "latin"
4963
+ ]
4964
+ },
4965
+ {
4966
+ "kind": "webfonts#webfont",
4967
+ "family": "Sancreek",
4968
+ "variants": [
4969
+ "regular"
4970
+ ],
4971
+ "subsets": [
4972
+ "latin-ext",
4973
+ "latin"
4974
+ ]
4975
+ },
4976
+ {
4977
+ "kind": "webfonts#webfont",
4978
+ "family": "Sansita One",
4979
+ "variants": [
4980
+ "regular"
4981
+ ],
4982
+ "subsets": [
4983
+ "latin"
4984
+ ]
4985
+ },
4986
+ {
4987
+ "kind": "webfonts#webfont",
4988
+ "family": "Sarina",
4989
+ "variants": [
4990
+ "regular"
4991
+ ],
4992
+ "subsets": [
4993
+ "latin-ext",
4994
+ "latin"
4995
+ ]
4996
+ },
4997
+ {
4998
+ "kind": "webfonts#webfont",
4999
+ "family": "Satisfy",
5000
+ "variants": [
5001
+ "regular"
5002
+ ],
5003
+ "subsets": [
5004
+ "latin"
5005
+ ]
5006
+ },
5007
+ {
5008
+ "kind": "webfonts#webfont",
5009
+ "family": "Schoolbell",
5010
+ "variants": [
5011
+ "regular"
5012
+ ],
5013
+ "subsets": [
5014
+ "latin"
5015
+ ]
5016
+ },
5017
+ {
5018
+ "kind": "webfonts#webfont",
5019
+ "family": "Seaweed Script",
5020
+ "variants": [
5021
+ "regular"
5022
+ ],
5023
+ "subsets": [
5024
+ "latin-ext",
5025
+ "latin"
5026
+ ]
5027
+ },
5028
+ {
5029
+ "kind": "webfonts#webfont",
5030
+ "family": "Sevillana",
5031
+ "variants": [
5032
+ "regular"
5033
+ ],
5034
+ "subsets": [
5035
+ "latin-ext",
5036
+ "latin"
5037
+ ]
5038
+ },
5039
+ {
5040
+ "kind": "webfonts#webfont",
5041
+ "family": "Shadows Into Light",
5042
+ "variants": [
5043
+ "regular"
5044
+ ],
5045
+ "subsets": [
5046
+ "latin"
5047
+ ]
5048
+ },
5049
+ {
5050
+ "kind": "webfonts#webfont",
5051
+ "family": "Shadows Into Light Two",
5052
+ "variants": [
5053
+ "regular"
5054
+ ],
5055
+ "subsets": [
5056
+ "latin-ext",
5057
+ "latin"
5058
+ ]
5059
+ },
5060
+ {
5061
+ "kind": "webfonts#webfont",
5062
+ "family": "Shanti",
5063
+ "variants": [
5064
+ "regular"
5065
+ ],
5066
+ "subsets": [
5067
+ "latin"
5068
+ ]
5069
+ },
5070
+ {
5071
+ "kind": "webfonts#webfont",
5072
+ "family": "Share",
5073
+ "variants": [
5074
+ "regular",
5075
+ "italic",
5076
+ "700",
5077
+ "700italic"
5078
+ ],
5079
+ "subsets": [
5080
+ "latin-ext",
5081
+ "latin"
5082
+ ]
5083
+ },
5084
+ {
5085
+ "kind": "webfonts#webfont",
5086
+ "family": "Shojumaru",
5087
+ "variants": [
5088
+ "regular"
5089
+ ],
5090
+ "subsets": [
5091
+ "latin-ext",
5092
+ "latin"
5093
+ ]
5094
+ },
5095
+ {
5096
+ "kind": "webfonts#webfont",
5097
+ "family": "Short Stack",
5098
+ "variants": [
5099
+ "regular"
5100
+ ],
5101
+ "subsets": [
5102
+ "latin"
5103
+ ]
5104
+ },
5105
+ {
5106
+ "kind": "webfonts#webfont",
5107
+ "family": "Siemreap",
5108
+ "variants": [
5109
+ "regular"
5110
+ ],
5111
+ "subsets": [
5112
+ "khmer"
5113
+ ]
5114
+ },
5115
+ {
5116
+ "kind": "webfonts#webfont",
5117
+ "family": "Sigmar One",
5118
+ "variants": [
5119
+ "regular"
5120
+ ],
5121
+ "subsets": [
5122
+ "latin"
5123
+ ]
5124
+ },
5125
+ {
5126
+ "kind": "webfonts#webfont",
5127
+ "family": "Signika",
5128
+ "variants": [
5129
+ "300",
5130
+ "regular",
5131
+ "600",
5132
+ "700"
5133
+ ],
5134
+ "subsets": [
5135
+ "latin-ext",
5136
+ "latin"
5137
+ ]
5138
+ },
5139
+ {
5140
+ "kind": "webfonts#webfont",
5141
+ "family": "Signika Negative",
5142
+ "variants": [
5143
+ "300",
5144
+ "regular",
5145
+ "600",
5146
+ "700"
5147
+ ],
5148
+ "subsets": [
5149
+ "latin-ext",
5150
+ "latin"
5151
+ ]
5152
+ },
5153
+ {
5154
+ "kind": "webfonts#webfont",
5155
+ "family": "Simonetta",
5156
+ "variants": [
5157
+ "regular",
5158
+ "italic",
5159
+ "900",
5160
+ "900italic"
5161
+ ],
5162
+ "subsets": [
5163
+ "latin-ext",
5164
+ "latin"
5165
+ ]
5166
+ },
5167
+ {
5168
+ "kind": "webfonts#webfont",
5169
+ "family": "Sirin Stencil",
5170
+ "variants": [
5171
+ "regular"
5172
+ ],
5173
+ "subsets": [
5174
+ "latin"
5175
+ ]
5176
+ },
5177
+ {
5178
+ "kind": "webfonts#webfont",
5179
+ "family": "Six Caps",
5180
+ "variants": [
5181
+ "regular"
5182
+ ],
5183
+ "subsets": [
5184
+ "latin"
5185
+ ]
5186
+ },
5187
+ {
5188
+ "kind": "webfonts#webfont",
5189
+ "family": "Slackey",
5190
+ "variants": [
5191
+ "regular"
5192
+ ],
5193
+ "subsets": [
5194
+ "latin"
5195
+ ]
5196
+ },
5197
+ {
5198
+ "kind": "webfonts#webfont",
5199
+ "family": "Smokum",
5200
+ "variants": [
5201
+ "regular"
5202
+ ],
5203
+ "subsets": [
5204
+ "latin"
5205
+ ]
5206
+ },
5207
+ {
5208
+ "kind": "webfonts#webfont",
5209
+ "family": "Smythe",
5210
+ "variants": [
5211
+ "regular"
5212
+ ],
5213
+ "subsets": [
5214
+ "latin"
5215
+ ]
5216
+ },
5217
+ {
5218
+ "kind": "webfonts#webfont",
5219
+ "family": "Sniglet",
5220
+ "variants": [
5221
+ "800"
5222
+ ],
5223
+ "subsets": [
5224
+ "latin"
5225
+ ]
5226
+ },
5227
+ {
5228
+ "kind": "webfonts#webfont",
5229
+ "family": "Snippet",
5230
+ "variants": [
5231
+ "regular"
5232
+ ],
5233
+ "subsets": [
5234
+ "latin"
5235
+ ]
5236
+ },
5237
+ {
5238
+ "kind": "webfonts#webfont",
5239
+ "family": "Sofia",
5240
+ "variants": [
5241
+ "regular"
5242
+ ],
5243
+ "subsets": [
5244
+ "latin"
5245
+ ]
5246
+ },
5247
+ {
5248
+ "kind": "webfonts#webfont",
5249
+ "family": "Sonsie One",
5250
+ "variants": [
5251
+ "regular"
5252
+ ],
5253
+ "subsets": [
5254
+ "latin-ext",
5255
+ "latin"
5256
+ ]
5257
+ },
5258
+ {
5259
+ "kind": "webfonts#webfont",
5260
+ "family": "Sorts Mill Goudy",
5261
+ "variants": [
5262
+ "regular",
5263
+ "italic"
5264
+ ],
5265
+ "subsets": [
5266
+ "latin-ext",
5267
+ "latin"
5268
+ ]
5269
+ },
5270
+ {
5271
+ "kind": "webfonts#webfont",
5272
+ "family": "Source Sans Pro",
5273
+ "variants": [
5274
+ "200",
5275
+ "200italic",
5276
+ "300",
5277
+ "300italic",
5278
+ "regular",
5279
+ "italic",
5280
+ "600",
5281
+ "600italic",
5282
+ "700",
5283
+ "700italic",
5284
+ "900",
5285
+ "900italic"
5286
+ ],
5287
+ "subsets": [
5288
+ "latin-ext",
5289
+ "latin"
5290
+ ]
5291
+ },
5292
+ {
5293
+ "kind": "webfonts#webfont",
5294
+ "family": "Special Elite",
5295
+ "variants": [
5296
+ "regular"
5297
+ ],
5298
+ "subsets": [
5299
+ "latin"
5300
+ ]
5301
+ },
5302
+ {
5303
+ "kind": "webfonts#webfont",
5304
+ "family": "Spicy Rice",
5305
+ "variants": [
5306
+ "regular"
5307
+ ],
5308
+ "subsets": [
5309
+ "latin"
5310
+ ]
5311
+ },
5312
+ {
5313
+ "kind": "webfonts#webfont",
5314
+ "family": "Spinnaker",
5315
+ "variants": [
5316
+ "regular"
5317
+ ],
5318
+ "subsets": [
5319
+ "latin-ext",
5320
+ "latin"
5321
+ ]
5322
+ },
5323
+ {
5324
+ "kind": "webfonts#webfont",
5325
+ "family": "Spirax",
5326
+ "variants": [
5327
+ "regular"
5328
+ ],
5329
+ "subsets": [
5330
+ "latin"
5331
+ ]
5332
+ },
5333
+ {
5334
+ "kind": "webfonts#webfont",
5335
+ "family": "Squada One",
5336
+ "variants": [
5337
+ "regular"
5338
+ ],
5339
+ "subsets": [
5340
+ "latin"
5341
+ ]
5342
+ },
5343
+ {
5344
+ "kind": "webfonts#webfont",
5345
+ "family": "Stardos Stencil",
5346
+ "variants": [
5347
+ "regular",
5348
+ "700"
5349
+ ],
5350
+ "subsets": [
5351
+ "latin"
5352
+ ]
5353
+ },
5354
+ {
5355
+ "kind": "webfonts#webfont",
5356
+ "family": "Stint Ultra Condensed",
5357
+ "variants": [
5358
+ "regular"
5359
+ ],
5360
+ "subsets": [
5361
+ "latin-ext",
5362
+ "latin"
5363
+ ]
5364
+ },
5365
+ {
5366
+ "kind": "webfonts#webfont",
5367
+ "family": "Stint Ultra Expanded",
5368
+ "variants": [
5369
+ "regular"
5370
+ ],
5371
+ "subsets": [
5372
+ "latin-ext",
5373
+ "latin"
5374
+ ]
5375
+ },
5376
+ {
5377
+ "kind": "webfonts#webfont",
5378
+ "family": "Stoke",
5379
+ "variants": [
5380
+ "regular"
5381
+ ],
5382
+ "subsets": [
5383
+ "latin-ext",
5384
+ "latin"
5385
+ ]
5386
+ },
5387
+ {
5388
+ "kind": "webfonts#webfont",
5389
+ "family": "Sue Ellen Francisco",
5390
+ "variants": [
5391
+ "regular"
5392
+ ],
5393
+ "subsets": [
5394
+ "latin"
5395
+ ]
5396
+ },
5397
+ {
5398
+ "kind": "webfonts#webfont",
5399
+ "family": "Sunshiney",
5400
+ "variants": [
5401
+ "regular"
5402
+ ],
5403
+ "subsets": [
5404
+ "latin"
5405
+ ]
5406
+ },
5407
+ {
5408
+ "kind": "webfonts#webfont",
5409
+ "family": "Supermercado One",
5410
+ "variants": [
5411
+ "regular"
5412
+ ],
5413
+ "subsets": [
5414
+ "latin"
5415
+ ]
5416
+ },
5417
+ {
5418
+ "kind": "webfonts#webfont",
5419
+ "family": "Suwannaphum",
5420
+ "variants": [
5421
+ "regular"
5422
+ ],
5423
+ "subsets": [
5424
+ "khmer"
5425
+ ]
5426
+ },
5427
+ {
5428
+ "kind": "webfonts#webfont",
5429
+ "family": "Swanky and Moo Moo",
5430
+ "variants": [
5431
+ "regular"
5432
+ ],
5433
+ "subsets": [
5434
+ "latin"
5435
+ ]
5436
+ },
5437
+ {
5438
+ "kind": "webfonts#webfont",
5439
+ "family": "Syncopate",
5440
+ "variants": [
5441
+ "regular",
5442
+ "700"
5443
+ ],
5444
+ "subsets": [
5445
+ "latin"
5446
+ ]
5447
+ },
5448
+ {
5449
+ "kind": "webfonts#webfont",
5450
+ "family": "Tangerine",
5451
+ "variants": [
5452
+ "regular",
5453
+ "700"
5454
+ ],
5455
+ "subsets": [
5456
+ "latin"
5457
+ ]
5458
+ },
5459
+ {
5460
+ "kind": "webfonts#webfont",
5461
+ "family": "Taprom",
5462
+ "variants": [
5463
+ "regular"
5464
+ ],
5465
+ "subsets": [
5466
+ "khmer"
5467
+ ]
5468
+ },
5469
+ {
5470
+ "kind": "webfonts#webfont",
5471
+ "family": "Telex",
5472
+ "variants": [
5473
+ "regular"
5474
+ ],
5475
+ "subsets": [
5476
+ "latin"
5477
+ ]
5478
+ },
5479
+ {
5480
+ "kind": "webfonts#webfont",
5481
+ "family": "Tenor Sans",
5482
+ "variants": [
5483
+ "regular"
5484
+ ],
5485
+ "subsets": [
5486
+ "cyrillic-ext",
5487
+ "latin-ext",
5488
+ "latin",
5489
+ "cyrillic"
5490
+ ]
5491
+ },
5492
+ {
5493
+ "kind": "webfonts#webfont",
5494
+ "family": "The Girl Next Door",
5495
+ "variants": [
5496
+ "regular"
5497
+ ],
5498
+ "subsets": [
5499
+ "latin"
5500
+ ]
5501
+ },
5502
+ {
5503
+ "kind": "webfonts#webfont",
5504
+ "family": "Tienne",
5505
+ "variants": [
5506
+ "regular",
5507
+ "700",
5508
+ "900"
5509
+ ],
5510
+ "subsets": [
5511
+ "latin"
5512
+ ]
5513
+ },
5514
+ {
5515
+ "kind": "webfonts#webfont",
5516
+ "family": "Tinos",
5517
+ "variants": [
5518
+ "regular",
5519
+ "italic",
5520
+ "700",
5521
+ "700italic"
5522
+ ],
5523
+ "subsets": [
5524
+ "latin"
5525
+ ]
5526
+ },
5527
+ {
5528
+ "kind": "webfonts#webfont",
5529
+ "family": "Titan One",
5530
+ "variants": [
5531
+ "regular"
5532
+ ],
5533
+ "subsets": [
5534
+ "latin-ext",
5535
+ "latin"
5536
+ ]
5537
+ },
5538
+ {
5539
+ "kind": "webfonts#webfont",
5540
+ "family": "Trade Winds",
5541
+ "variants": [
5542
+ "regular"
5543
+ ],
5544
+ "subsets": [
5545
+ "latin"
5546
+ ]
5547
+ },
5548
+ {
5549
+ "kind": "webfonts#webfont",
5550
+ "family": "Trocchi",
5551
+ "variants": [
5552
+ "regular"
5553
+ ],
5554
+ "subsets": [
5555
+ "latin-ext",
5556
+ "latin"
5557
+ ]
5558
+ },
5559
+ {
5560
+ "kind": "webfonts#webfont",
5561
+ "family": "Trochut",
5562
+ "variants": [
5563
+ "regular",
5564
+ "italic",
5565
+ "700"
5566
+ ],
5567
+ "subsets": [
5568
+ "latin"
5569
+ ]
5570
+ },
5571
+ {
5572
+ "kind": "webfonts#webfont",
5573
+ "family": "Trykker",
5574
+ "variants": [
5575
+ "regular"
5576
+ ],
5577
+ "subsets": [
5578
+ "latin-ext",
5579
+ "latin"
5580
+ ]
5581
+ },
5582
+ {
5583
+ "kind": "webfonts#webfont",
5584
+ "family": "Tulpen One",
5585
+ "variants": [
5586
+ "regular"
5587
+ ],
5588
+ "subsets": [
5589
+ "latin"
5590
+ ]
5591
+ },
5592
+ {
5593
+ "kind": "webfonts#webfont",
5594
+ "family": "Ubuntu",
5595
+ "variants": [
5596
+ "300",
5597
+ "300italic",
5598
+ "regular",
5599
+ "italic",
5600
+ "500",
5601
+ "500italic",
5602
+ "700",
5603
+ "700italic"
5604
+ ],
5605
+ "subsets": [
5606
+ "greek-ext",
5607
+ "cyrillic-ext",
5608
+ "greek",
5609
+ "latin-ext",
5610
+ "latin",
5611
+ "cyrillic"
5612
+ ]
5613
+ },
5614
+ {
5615
+ "kind": "webfonts#webfont",
5616
+ "family": "Ubuntu Condensed",
5617
+ "variants": [
5618
+ "regular"
5619
+ ],
5620
+ "subsets": [
5621
+ "greek-ext",
5622
+ "cyrillic-ext",
5623
+ "greek",
5624
+ "latin-ext",
5625
+ "latin",
5626
+ "cyrillic"
5627
+ ]
5628
+ },
5629
+ {
5630
+ "kind": "webfonts#webfont",
5631
+ "family": "Ubuntu Mono",
5632
+ "variants": [
5633
+ "regular",
5634
+ "italic",
5635
+ "700",
5636
+ "700italic"
5637
+ ],
5638
+ "subsets": [
5639
+ "greek-ext",
5640
+ "cyrillic-ext",
5641
+ "greek",
5642
+ "latin-ext",
5643
+ "latin",
5644
+ "cyrillic"
5645
+ ]
5646
+ },
5647
+ {
5648
+ "kind": "webfonts#webfont",
5649
+ "family": "Ultra",
5650
+ "variants": [
5651
+ "regular"
5652
+ ],
5653
+ "subsets": [
5654
+ "latin"
5655
+ ]
5656
+ },
5657
+ {
5658
+ "kind": "webfonts#webfont",
5659
+ "family": "Uncial Antiqua",
5660
+ "variants": [
5661
+ "regular"
5662
+ ],
5663
+ "subsets": [
5664
+ "latin"
5665
+ ]
5666
+ },
5667
+ {
5668
+ "kind": "webfonts#webfont",
5669
+ "family": "UnifrakturCook",
5670
+ "variants": [
5671
+ "700"
5672
+ ],
5673
+ "subsets": [
5674
+ "latin"
5675
+ ]
5676
+ },
5677
+ {
5678
+ "kind": "webfonts#webfont",
5679
+ "family": "UnifrakturMaguntia",
5680
+ "variants": [
5681
+ "regular"
5682
+ ],
5683
+ "subsets": [
5684
+ "latin"
5685
+ ]
5686
+ },
5687
+ {
5688
+ "kind": "webfonts#webfont",
5689
+ "family": "Unkempt",
5690
+ "variants": [
5691
+ "regular",
5692
+ "700"
5693
+ ],
5694
+ "subsets": [
5695
+ "latin"
5696
+ ]
5697
+ },
5698
+ {
5699
+ "kind": "webfonts#webfont",
5700
+ "family": "Unlock",
5701
+ "variants": [
5702
+ "regular"
5703
+ ],
5704
+ "subsets": [
5705
+ "latin"
5706
+ ]
5707
+ },
5708
+ {
5709
+ "kind": "webfonts#webfont",
5710
+ "family": "Unna",
5711
+ "variants": [
5712
+ "regular"
5713
+ ],
5714
+ "subsets": [
5715
+ "latin"
5716
+ ]
5717
+ },
5718
+ {
5719
+ "kind": "webfonts#webfont",
5720
+ "family": "VT323",
5721
+ "variants": [
5722
+ "regular"
5723
+ ],
5724
+ "subsets": [
5725
+ "latin"
5726
+ ]
5727
+ },
5728
+ {
5729
+ "kind": "webfonts#webfont",
5730
+ "family": "Varela",
5731
+ "variants": [
5732
+ "regular"
5733
+ ],
5734
+ "subsets": [
5735
+ "latin-ext",
5736
+ "latin"
5737
+ ]
5738
+ },
5739
+ {
5740
+ "kind": "webfonts#webfont",
5741
+ "family": "Varela Round",
5742
+ "variants": [
5743
+ "regular"
5744
+ ],
5745
+ "subsets": [
5746
+ "latin"
5747
+ ]
5748
+ },
5749
+ {
5750
+ "kind": "webfonts#webfont",
5751
+ "family": "Vast Shadow",
5752
+ "variants": [
5753
+ "regular"
5754
+ ],
5755
+ "subsets": [
5756
+ "latin"
5757
+ ]
5758
+ },
5759
+ {
5760
+ "kind": "webfonts#webfont",
5761
+ "family": "Vibur",
5762
+ "variants": [
5763
+ "regular"
5764
+ ],
5765
+ "subsets": [
5766
+ "latin"
5767
+ ]
5768
+ },
5769
+ {
5770
+ "kind": "webfonts#webfont",
5771
+ "family": "Vidaloka",
5772
+ "variants": [
5773
+ "regular"
5774
+ ],
5775
+ "subsets": [
5776
+ "latin"
5777
+ ]
5778
+ },
5779
+ {
5780
+ "kind": "webfonts#webfont",
5781
+ "family": "Viga",
5782
+ "variants": [
5783
+ "regular"
5784
+ ],
5785
+ "subsets": [
5786
+ "latin-ext",
5787
+ "latin"
5788
+ ]
5789
+ },
5790
+ {
5791
+ "kind": "webfonts#webfont",
5792
+ "family": "Voces",
5793
+ "variants": [
5794
+ "regular"
5795
+ ],
5796
+ "subsets": [
5797
+ "latin-ext",
5798
+ "latin"
5799
+ ]
5800
+ },
5801
+ {
5802
+ "kind": "webfonts#webfont",
5803
+ "family": "Volkhov",
5804
+ "variants": [
5805
+ "regular",
5806
+ "italic",
5807
+ "700",
5808
+ "700italic"
5809
+ ],
5810
+ "subsets": [
5811
+ "latin"
5812
+ ]
5813
+ },
5814
+ {
5815
+ "kind": "webfonts#webfont",
5816
+ "family": "Vollkorn",
5817
+ "variants": [
5818
+ "regular",
5819
+ "italic",
5820
+ "700",
5821
+ "700italic"
5822
+ ],
5823
+ "subsets": [
5824
+ "latin"
5825
+ ]
5826
+ },
5827
+ {
5828
+ "kind": "webfonts#webfont",
5829
+ "family": "Voltaire",
5830
+ "variants": [
5831
+ "regular"
5832
+ ],
5833
+ "subsets": [
5834
+ "latin"
5835
+ ]
5836
+ },
5837
+ {
5838
+ "kind": "webfonts#webfont",
5839
+ "family": "Waiting for the Sunrise",
5840
+ "variants": [
5841
+ "regular"
5842
+ ],
5843
+ "subsets": [
5844
+ "latin"
5845
+ ]
5846
+ },
5847
+ {
5848
+ "kind": "webfonts#webfont",
5849
+ "family": "Wallpoet",
5850
+ "variants": [
5851
+ "regular"
5852
+ ],
5853
+ "subsets": [
5854
+ "latin"
5855
+ ]
5856
+ },
5857
+ {
5858
+ "kind": "webfonts#webfont",
5859
+ "family": "Walter Turncoat",
5860
+ "variants": [
5861
+ "regular"
5862
+ ],
5863
+ "subsets": [
5864
+ "latin"
5865
+ ]
5866
+ },
5867
+ {
5868
+ "kind": "webfonts#webfont",
5869
+ "family": "Wellfleet",
5870
+ "variants": [
5871
+ "regular"
5872
+ ],
5873
+ "subsets": [
5874
+ "latin-ext",
5875
+ "latin"
5876
+ ]
5877
+ },
5878
+ {
5879
+ "kind": "webfonts#webfont",
5880
+ "family": "Wire One",
5881
+ "variants": [
5882
+ "regular"
5883
+ ],
5884
+ "subsets": [
5885
+ "latin"
5886
+ ]
5887
+ },
5888
+ {
5889
+ "kind": "webfonts#webfont",
5890
+ "family": "Yanone Kaffeesatz",
5891
+ "variants": [
5892
+ "200",
5893
+ "300",
5894
+ "regular",
5895
+ "700"
5896
+ ],
5897
+ "subsets": [
5898
+ "latin-ext",
5899
+ "latin"
5900
+ ]
5901
+ },
5902
+ {
5903
+ "kind": "webfonts#webfont",
5904
+ "family": "Yellowtail",
5905
+ "variants": [
5906
+ "regular"
5907
+ ],
5908
+ "subsets": [
5909
+ "latin"
5910
+ ]
5911
+ },
5912
+ {
5913
+ "kind": "webfonts#webfont",
5914
+ "family": "Yeseva One",
5915
+ "variants": [
5916
+ "regular"
5917
+ ],
5918
+ "subsets": [
5919
+ "latin"
5920
+ ]
5921
+ },
5922
+ {
5923
+ "kind": "webfonts#webfont",
5924
+ "family": "Yesteryear",
5925
+ "variants": [
5926
+ "regular"
5927
+ ],
5928
+ "subsets": [
5929
+ "latin"
5930
+ ]
5931
+ },
5932
+ {
5933
+ "kind": "webfonts#webfont",
5934
+ "family": "Zeyada",
5935
+ "variants": [
5936
+ "regular"
5937
+ ],
5938
+ "subsets": [
5939
+ "latin"
5940
+ ]
5941
+ }
5942
+ ]
5943
+ }
admin/widgets/gantry-administrator.css ADDED
@@ -0,0 +1 @@
 
1
+ .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}.clearfix:after{clear:both;}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}.rok-left{float:left;}.rok-right{float:right;}.rok-dropdown-group,.rok-dropdown{position:relative;}.rok-dropdown-open .rok-dropdown{display:block;}.rok-popover-group,.rok-popover{position:relative;}.rok-popover-open .rok-popover{display:block;}i{background-image:url("") !important;background-repeat:no-repeat;background-position:16px 16px;vertical-align:text-top;font-style:normal;display:inline-block;width:16px;height:16px;*margin-right:.3em;}i:last-child{*margin-left:0;}#g4-toolbar ul{list-style:none;margin-right:10px;margin-top:-25px;padding:0;}body{line-height:18px !important;}body div#element-box,body div#element-box div.m{padding:0;border-top:0;border-bottom:0;margin:0 5px;background-color:transparent;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}body .subhead-collapse{display:none;}body .container-fluid{padding:0 1px;}body input:focus,body select:focus{background:#fff;}.g4-messages,.g4-messages .message{display:none;}html #mc-component .g4-wrap{margin:-14px -14px;}html #mc-component #g4-master{right:0;}body{padding-left:0 !important;padding-right:0 !important;}body .navbar-fixed-top,body .navbar-fixed-bottom,body .container-fluid,body .header{margin-left:0;margin-right:0;}html{overflow-y:auto !important;}html #toolbar-box{display:none;}html #content-box{font-family:Arial, sans-serif;float:none;border:0;width:auto;margin:0 -10px 10px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}html #system-message{position:relative;text-shadow:0 1px 0 #fff;display:none;}html #system-message .close{position:absolute;right:0;top:0;text-align:center;line-height:35px;width:35px;height:35px;cursor:pointer;font-size:130%;display:none;}html #system-message-container #system-message{display:block;}html #system-message-container #system-message .message{display:none;}html #system-message-container #system-message .error.message{display:block;}html h1{margin:0;padding:0;font-family:"Oxygen", Arial, sans-serif;font-size:30px;color:#484848;font-weight:normal;text-shadow:0 1px 0 #fff;}#assignments-panel{display:table;}#assignments-panel .g4-panel-left{display:table;}#assignments-panel .g4-panel-left .assignments-left,#assignments-panel .g4-panel-left .assignments-right{display:table-cell;vertical-align:top;}#assignments-panel .g4-panel-left h2{font-size:1.2em;margin:2px 0;}#assignments-panel .g4-panel-left .assignments-block{margin:10px;padding:10px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;-moz-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;}#assignments-panel .g4-panel-left .assignments-block .assignment-search{-webkit-box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;background:#fff;padding:2px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin-top:10px;border:1px solid #cfcfcf;border-top-color:#c6c6c6;opacity:0.5;filter:alpha(opacity=50);}#assignments-panel .g4-panel-left .assignments-block .assignment-search input{background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;padding:0;border:0;text-indent:0;width:100%;font-size:11px;}#assignments-panel .g4-panel-left .assignments-block:hover .assignment-search{opacity:1;filter:alpha(opacity=100);}#assignments-panel .g4-panel-left .assignments-block ul ul{margin-left:18px;}#assignments-panel .g4-panel-left .assignments-left{width:70%;}#assignments-panel .g4-panel-left .assignments-left .assignments-block{background:#f6f6f6;-webkit-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;float:left;width:28%;}#assignments-panel .g4-panel-left .assignments-left .assignments-block.assignments-block-center{margin-left:0;margin-right:0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block.assignments-block-right{margin-right:0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2{min-height:19px;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2 label{display:inline-block;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2.added label{display:none;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2.added{text-decoration:line-through;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside{height:250px;overflow:auto;margin:10px 0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside label,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside a{display:inline;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside a{color:#666;text-decoration:none;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside li.added > label,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside.added label{visibility:hidden;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside li.added > a,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside.added a{text-decoration:line-through;color:#999;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside p{margin:0;}#assignments-panel .g4-panel-left .assignments-right{width:30%;}#assignments-panel .g4-panel-left .assignments-right .assignments-block{margin:10px 10px 10px 0;background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#ddd,#ccc);background-image:-ms-linear-gradient(top,#ddd,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ddd),to(#ccc));background-image:-webkit-linear-gradient(top,#ddd,#ccc);background-image:-o-linear-gradient(top,#ddd,#ccc);background-image:linear-gradient(top,#ddd,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#cccccc', GradientType=0);}#assignments-panel .g4-panel-left .assignments-right .assignments-block #assigned-list{margin-top:10px;}#assignments-panel .g4-panel-left .assignments-right .assignments-block h2{color:#D54E21;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li{display:block;background-color:#a3a3a3;background-image:-moz-linear-gradient(top,#aaa,#999);background-image:-ms-linear-gradient(top,#aaa,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#aaa),to(#999));background-image:-webkit-linear-gradient(top,#aaa,#999);background-image:-o-linear-gradient(top,#aaa,#999);background-image:linear-gradient(top,#aaa,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#aaaaaa', endColorstr='#999999', GradientType=0);border:1px solid #888;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;padding:4px 10px;font-size:11px;margin-bottom:5px;margin-left:10px;position:relative;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li.empty{margin-left:0;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.link{float:left;color:#111;text-shadow:0 1px 0 #ccc;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.link a{text-decoration:none;color:#111;text-shadow:0 1px 0 #ccc;cursor:default;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.type{color:#444;border-left:1px solid #888;text-shadow:0 1px 0 #ccc;text-transform:uppercase;padding-left:10px;float:right;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.delete-assigned{font-size:15px;position:absolute;font-weight:bold;cursor:pointer;left:-13px;top:3px;color:#666;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.delete-assigned:hover{color:#b01c14;}#assignments-panel .g4-panel-left .assignments-right #assigned_override_items{position:absolute;width:1px;height:1px;visibility:hidden;}#assignments-panel .g4-panel-left .footer-block{line-height:2em;}#assignments-panel .g4-panel-left .footer-block .select-all{float:left;}#assignments-panel .g4-panel-left .footer-block .add-button{float:right;}.assignments-search{text-align:center;}.assignments-search label{font-weight:bold;font-size:1.5em;}.assignments-search input{width:50%;font-weight:normal;}.assignments-search,.assignment-search{position:relative;}.assignments-search .assignment-search-clear,.assignment-search .assignment-search-clear{position:absolute;top:3px;right:3px;height:7px;padding:4px;font-weight:bold;line-height:7px !important;border:1px solid #ccc;background:#eee;color:#888;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;display:none;cursor:pointer;}.assignments-search .assignment-search-clear:hover,.assignment-search .assignment-search-clear:hover{background:#f9f9f9;}.assignments-search-global-wrapper{position:relative;display:inline;}.assignments-search-global-wrapper label{display:inherit !important;}.assignments-search-global-wrapper .assignment-search-clear{top:1px;right:12px;}.g4-wrap{width:100%;}#wpcontent{margin-left:147px;}@media only screen and (max-width: 900px){#wpcontent{margin-left:34px;}}body .html-field{background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}body #icon-themes{margin:-10px 10px 0;}.g4-wrap input,.g4-wrap textarea{-webkit-box-sizing:inherit !important;-moz-box-sizing:inherit !important;-ms-box-sizing:inherit !important;box-sizing:inherit !important;}.g4-notice{position:relative;}.g4-notice .close{position:absolute;top:6px;right:9px;cursor:pointer;}.g4-actions .spinner{float:left;display:inline-block;display:none;}.inner-tabs{-webkit-box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;-moz-box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;}.inner-tabs li{cursor:pointer;display:inline-block;margin-bottom:-6px;border-right:1px solid #d1d1d1;border-left:1px solid #f1f1f1;}.inner-tabs li label{font-weight:normal;}.inner-tabs li.first{border-left:0;}.inner-tabs li.hover label{color:#000;}.inner-tabs li.active label{color:#2287C7;font-weight:bold;}.inner-tabs li .g4-cell.g4-col1{background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;width:auto;}.inner-tabs li .g4-cell.g4-col1 label{padding-left:0;}.inner-panel > .wrapper{display:table;width:100%;}#overrides-actions{float:left;margin:12px 0 0 8px;min-width:180px;position:relative;z-index:100;}#overrides-actions .add-edit-input{position:absolute;width:85%;height:9px;top:3px;font-size:90%;padding:3px 0;}#overrides-first{padding:3px 30px 4px 12px;line-height:15px;border:1px solid #c0c0c0;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;background:-moz-linear-gradient(bottom,#e7e7e7,#fff);background:-webkit-gradient(linear,left bottom,left top,from(#e7e7e7),to(#fff));}#overrides-first.slide-down{border-bottom:none;-webkit-border-radius:12px 12px 0 0;-moz-border-radius:12px 12px 0 0;border-radius:12px 12px 0 0;}#overrides-actions a{color:#464646;display:block;font-size:11px;text-decoration:none;padding:3px 5px 3px 10px;}body #overrides-first a{background:url(images/overrides-default.png) 0 50% no-repeat;padding:0 0 0 18px;}#overrides-actions a:hover{color:#000;text-decoration:underline;}#overrides-first a:hover{text-decoration:none;}#overrides-toggle{background:url(images/overrides-arrow.gif) 0 -4px no-repeat;height:22px;position:absolute;right:0px;top:1px;width:28px;cursor:pointer;}#overrides-toggle.hidden{display:none;}#overrides-inside{background-color:#FFFFFF;border-color:#C0C0C0;margin:0;padding:2px 1px;border-width:1px;border-style:solid;position:absolute;z-index:11;display:none;-webkit-border-radius:0 0 12px 12px;-moz-border-radius:0 0 12px 12px;border-radius:0 0 12px 12px;}#overrides-toolbar{float:left;margin:12px 0 0 5px;position:relative;}#overrides-toolbar .overrides-button{float:left;width:29px;height:24px;background:url(images/overrides-toolbar.png);cursor:pointer;}#overrides-toolbar .overrides-button span{display:none;}#overrides-toolbar .button-del{background-position:-29px 0;width:28px;}#overrides-toolbar .button-edit{background-position:-57px 0;}#overrides-toolbar .button-add:hover{background-position:0 -24px;}#overrides-toolbar .button-del:hover{background-position:-29px -24px;}#overrides-toolbar .button-edit:hover{background-position:-57px -24px;}.text-button{display:inline-block;height:24px;background:url(images/overrides-buttons-l.png) 0 0 no-repeat;text-decoration:none;}.text-button span{font-size:11px;font-family:"Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;color:#333;display:inline-block;background:url(images/overrides-buttons-r.png) 100% 0 no-repeat;margin-left:20px;padding:0 10px 0 5px;line-height:24px;height:24px;}.text-button:hover span{color:#000;background-position:100% -24px;}.text-button.button-widget{background-position:0 -48px;}.text-button.button-widget:hover{background-position:0 -72px;}#overrides-switch{float:left;margin:12px 0 0 5px;position:relative;}.g4-wrapper{width:100%;}.clr{clear:both;}.g4-size-60{width:60%;}.g4-size-50{width:50%;}.g4-size-40{width:40%;}.g4-size-35{width:35%;}.g4-size-30{width:30%;}.g4-size-25{width:25%;}.g4-size-20{width:20%;}.g4-size-15{width:15%;}.g4-size-13{width:13%;}#g4-hidden{display:none;}#g4-logo{position:relative;float:right;margin:0 0 0 0;width:160px;height:48px;overflow:hidden;}#g4-logo span{display:block;position:absolute;top:9px;right:23px;width:120px;height:32px;background:url(images/g4-logo-small.png);}.g4-tabs{display:block;height:50px;}.g4-actions{float:right;}.g4-tabs > li,.g4-actions > li{float:left;vertical-align:middle;}.width-100pc{width:100%;}#g4-toolbar{background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fff,#ededed);background-image:-ms-linear-gradient(top,#fff,#ededed);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#ededed));background-image:-webkit-linear-gradient(top,#fff,#ededed);background-image:-o-linear-gradient(top,#fff,#ededed);background-image:linear-gradient(top,#fff,#ededed);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);padding:30px 0;width:100%;-webkit-box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;-moz-box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;}#g4-toolbar h1{padding:0 15px;}#g4-toolbar .rok-button{margin-left:5px;font-size:13px;}#g4-toolbar .rok-buttons-group .rok-button:last-child{margin-left:-3px;}#g4-toolbar .rok-buttons-group .caret{height:4px;}#g4-details-wrapper{position:relative;}#g4-master{position:absolute;background-color:#e43e1f;background-image:-moz-linear-gradient(top,#f54221,#ca381c);background-image:-ms-linear-gradient(top,#f54221,#ca381c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f54221),to(#ca381c));background-image:-webkit-linear-gradient(top,#f54221,#ca381c);background-image:-o-linear-gradient(top,#f54221,#ca381c);background-image:linear-gradient(top,#f54221,#ca381c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f54221', endColorstr='#ca381c', GradientType=0);top:-1px;bottom:0px;right:0;z-index:1;border:1px solid #b03018;-webkit-box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;-moz-box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;}#g4-master.g4-flag-override{background-color:#b8b8b8;background-image:-moz-linear-gradient(top,#ccc,#999);background-image:-ms-linear-gradient(top,#ccc,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ccc),to(#999));background-image:-webkit-linear-gradient(top,#ccc,#999);background-image:-o-linear-gradient(top,#ccc,#999);background-image:linear-gradient(top,#ccc,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#999999', GradientType=0);border:1px solid #999;}#g4-master #g4-flag{text-align:center;position:relative;line-height:50px;font-size:17px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.5);}#g4-master #g4-flag > .arrow,#g4-master #g4-flag > .arrow span{position:absolute;display:block;width:5px;}#g4-master #g4-flag > .arrow{top:50%;right:0;margin-top:-7px;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid #ececec;left:-2px;top:50%;z-index:10;}#g4-details{border-top:1px solid #fff;background:#ececec;height:50px;position:relative;}#g4-details.presets-showing{border-bottom:1px solid #cbcbcb;}#g4-presets{background-color:#f4f4f4;background-image:-moz-linear-gradient(top,#ececec,#fff);background-image:-ms-linear-gradient(top,#ececec,#fff);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ececec),to(#fff));background-image:-webkit-linear-gradient(top,#ececec,#fff);background-image:-o-linear-gradient(top,#ececec,#fff);background-image:linear-gradient(top,#ececec,#fff);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ececec', endColorstr='#ffffff', GradientType=0);-webkit-box-shadow:0 1px 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #fff inset;box-shadow:0 1px 0 0 #fff inset;}#g4-container{margin-top:-2px;padding-bottom:1px;border-bottom:1px solid #ccc;margin:0;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}#g4-container .g4-header{border-top:1px solid #bcbcbc;background-color:#e6e6e6;-webkit-box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;-moz-box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;}#g4-container .g4-body{background:#fff;background-color:#fcfcfc;background-image:-webkit-gradient(linear,0 0,0 100%,from(#f3f3f3),color-stop(50%,#fff),to(#f0f0f0));background-image:-webkit-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:-moz-linear-gradient(top,#f3f3f3,#fff 50%,#f0f0f0);background-image:-ms-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:-o-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f0f0f0', GradientType=0);}.g4-tabs li{color:#717077;padding:15px 20px;margin:0;text-shadow:0 1px 0 #fff;-webkit-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;-moz-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;cursor:pointer;}.g4-tabs li.active .arrow{display:none;}.g4-tabs li:hover{color:#000;}.g4-tabs li.active{margin-top:1px;padding-top:14px;background-color:#e8e8e8;background-image:-moz-linear-gradient(top,#efefef,#ddd);background-image:-ms-linear-gradient(top,#efefef,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#efefef),to(#ddd));background-image:-webkit-linear-gradient(top,#efefef,#ddd);background-image:-o-linear-gradient(top,#efefef,#ddd);background-image:linear-gradient(top,#efefef,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#efefef', endColorstr='#dddddd', GradientType=0);-webkit-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;-moz-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;color:#2287c7;position:relative;}.g4-tabs li.active .arrow,.g4-tabs li.active .arrow span{position:absolute;display:block;}.g4-tabs li.active .arrow{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb;bottom:0;top:inherit;}.g4-tabs li.active .arrow span{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;margin-left:-6px;top:1px;}.g4-tabs li.active .arrow span span{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #f6f6f6;top:1px;margin-left:-6px;}.g4-tabs li .badge{padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}#g4-container .presets-involved,#g4-container .overrides-involved,#g4-container .preset-info,#g4-container .menuitems-involved{-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;background-color:#e3461e;background-image:-moz-linear-gradient(top,#D23C12,#FC562F);background-image:-ms-linear-gradient(top,#D23C12,#FC562F);background-image:-webkit-gradient(linear,0 0,0 100%,from(#D23C12),to(#FC562F));background-image:-webkit-linear-gradient(top,#D23C12,#FC562F);background-image:-o-linear-gradient(top,#D23C12,#FC562F);background-image:linear-gradient(top,#D23C12,#FC562F);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#d23c12', endColorstr='#fc562f', GradientType=0);-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;float:right;height:6px;line-height:7px;margin-top:-3px;margin-bottom:-5px;margin-right:-10px;margin-left:10px;padding:9px;color:#fff;text-shadow:none;display:none;opacity:0;visibility:hidden;}#g4-container .preset-info{width:4px;height:4px;padding:4px;line-height:4px;-webkit-border-radius:30px;-moz-border-radius:30px;border-radius:30px;position:absolute;top:17px;left:-5px;margin:0;display:block;opacity:1;filter:alpha(opacity=100);visibility:visible;}#g4-container .overrides-involved{background-color:#2287c9;background-image:-moz-linear-gradient(top,#1d79b5,#2a9de6);background-image:-ms-linear-gradient(top,#1d79b5,#2a9de6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#1d79b5),to(#2a9de6));background-image:-webkit-linear-gradient(top,#1d79b5,#2a9de6);background-image:-o-linear-gradient(top,#1d79b5,#2a9de6);background-image:linear-gradient(top,#1d79b5,#2a9de6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1d79b5', endColorstr='#2a9de6', GradientType=0);}#g4-container .menuitems-involved{display:block;opacity:1;visibility:visible;background-color:#adadad;background-image:-moz-linear-gradient(top,#bbb,#999);background-image:-ms-linear-gradient(top,#bbb,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#bbb),to(#999));background-image:-webkit-linear-gradient(top,#bbb,#999);background-image:-o-linear-gradient(top,#bbb,#999);background-image:linear-gradient(top,#bbb,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bbbbbb', endColorstr='#999999', GradientType=0);}#g4-container .double-badge .presets-involved{-webkit-border-radius:0 8px 8px 0;-moz-border-radius:0 8px 8px 0;border-radius:0 8px 8px 0;}#g4-container .double-badge .overrides-involved{-webkit-border-radius:8px 0 0 8px;-moz-border-radius:8px 0 0 8px;border-radius:8px 0 0 8px;}.override-wrap #g4-container .preset-info{left:-15px;}#g4-actions li{margin:0 4px;}#g4-panels{padding-top:20px;}.g4-panel{visibility:hidden;margin-bottom:40px;top:-10000px;left:-10000px;width:100%;border-bottom:1px solid #ddd;-webkit-box-shadow:0 1px 1px 0 #fefefe;-moz-box-shadow:0 1px 1px 0 #fefefe;box-shadow:0 1px 1px 0 #fefefe;}.g4-panel.active-panel{visibility:visible;top:0;left:0;}.g4-panel.panel-overview{border:0;margin-bottom:0;}.g4-panel.panel-overview .panelform .g4-row .g4-col2{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background:inherit;}.g4-panel.panel-overview .g4-col1{display:none;}.g4-panel.panel-overview div.template-preview{float:left;margin-right:35px;width:40%;}.g4-panel.panel-overview div.template-preview img{width:100%;margin-top:-10px;}.g4-panel.panel-overview .template-description{margin-left:45%;margin-right:20px;}.g4-panel.panel-overview img.template-preview{float:left;margin-right:30px;margin-bottom:20px;}.g4-panel-left,.g4-panel-right{float:left;position:relative;}.g4-panel-left{width:100%;}.panel-overview .g4-panel-left{width:70%;}.panel-overview .g4-panel-right{width:30%;}.g4-panel-hiddens{position:absolute;visibility:hidden;height:0;}.backgroundpicker{position:relative;}.updater-field,.tips-field,.html-field{background:#eaeaea;border:1px solid #c8c8c8;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin-right:20px;margin-bottom:20px;padding:20px;-webkit-box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;-moz-box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;}.updater-field .h2bar,.tips-field .h2bar,.html-field .h2bar{display:block;min-height:36px;margin-bottom:5px;padding:0;}.updater-field{background-color:#258fd2;background-image:-moz-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-ms-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2A9DE6),to(#1D79B5));background-image:-webkit-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-o-linear-gradient(top,#2A9DE6,#1D79B5);background-image:linear-gradient(top,#2A9DE6,#1D79B5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);}.updater-field.update{background-color:#e43e1f;background-image:-moz-linear-gradient(top,#f54221,#ca381c);background-image:-ms-linear-gradient(top,#f54221,#ca381c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f54221),to(#ca381c));background-image:-webkit-linear-gradient(top,#f54221,#ca381c);background-image:-o-linear-gradient(top,#f54221,#ca381c);background-image:linear-gradient(top,#f54221,#ca381c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f54221', endColorstr='#ca381c', GradientType=0);}.tips-field{position:relative;padding-bottom:50px;}.tips-field .gantrytips-controller{position:absolute;bottom:20px;right:10px;}.tips-field .gantrytips-controller .rok-button{font-size:10px;color:#555 !important;}.tips-field .gantrytips-count{position:absolute;bottom:20px;left:20px;color:#999 !important;}.tips-field .gantrytips-wrapper{position:relative;}.tips-field .gantrytips-wrapper .gantrytips-tip{display:none;}.tips-field .gantrytips-wrapper .gantrytips-tip:first-child{display:block;}.panelform{display:table;border-collapse:collapse;width:100%;}.panelform .selectedset-fields{display:table-row-group;}.panelform .selectedset-fields .g4-row:first-child .g4-cell.g4-col2{-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;}.panelform .g4-row{display:table-row;}.panelform .g4-row:first-child .g4-col2{-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;}.panelform .g4-row .g4-col1{font-weight:bold;text-shadow:1px 1px 1px #fff;color:#555;padding:0 20px;}.panelform .g4-row .g4-col1 label{padding:15px 10px 15px 20px;}.panelform .g4-cell{display:table-cell;padding:10px 20px;vertical-align:middle;}.panelform .g4-cell.g4-col1{width:20%;background:#f6f6f6;-webkit-box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;}.panelform .g4-cell.g4-col2{display:table-cell;padding:0;width:80%;-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;background:#eee;}.panelform .g4-cell.g4-col2 .g4-col2-wrap{padding:10px 20px;position:relative;*zoom:1;}.panelform .g4-cell.g4-col2 .g4-col2-wrap:before,.panelform .g4-cell.g4-col2 .g4-col2-wrap:after{display:table;content:"";}.panelform .g4-cell.g4-col2 .g4-col2-wrap:after{clear:both;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow,.panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow span{position:absolute;display:block;width:5px;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow{top:50%;right:0;margin-top:-6px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #ccc;left:0px;top:50%;z-index:10;}.panel-overview .panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow{display:none;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow span{top:50%;right:0;margin-top:-6px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #f6f6f6;left:-1px;margin-left:-6px;}.panelform .g4-cell .inherit-checkbox{position:relative;z-index:5;float:left;margin-left:0;margin-top:15px;}.panelform .g4-cell .inherit-overlay{position:absolute;top:1px;right:1px;bottom:1px;left:1px;background:#efefef;z-index:5;}.wrapper .chain{display:inline-block;vertical-align:top;margin-right:20px;}.wrapper .chain.chain-hidden{margin-right:0;}.group{clear:both;height:32px;margin:0 0 10px;}.group .alias-label{float:left;width:150px;padding-top:5px;}.group-left,.group-label,.group .wrapper{float:left;}.group-right{float:left;margin-left:25px;}.group-none{float:none;clear:both;}.g4-wrap .group-label{display:block;position:relative;text-align:right;width:75px;display:block;margin-right:10px;}.g4-wrap .group-label label{display:inline-block;line-height:12px;margin:8px 5px 0 0;width:100%;vertical-align:middle;}.group-right .selectbox-wrapper{margin-right:24px;}.group-none .group-label{width:50%;}.group-gradient{border:1px solid #ccc;padding:1px;height:40px;margin-right:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 0 0 #fff;-moz-box-shadow:0 1px 0 0 #fff;box-shadow:0 1px 0 0 #fff;}.assignments-field .g4-cell.g4-col1{vertical-align:top;}@media (max-width: 979px){.g4-tabs li{padding:15px 15px;}}@media (max-width: 767px){.btn-subhead{display:none !important;}.container-fluid{margin:0 -20px;}.container-fluid #g4-master{width:90px;height:50px;}.container-fluid #g4-details{height:auto;padding-bottom:15px;}.container-fluid #g4-details .g4-controlgroup{width:100%;}.container-fluid #g4-details .g4-controlgroup .g4-controls{margin-right:130px;}.container-fluid #g4-details .g4-controlgroup select{max-width:120px;}#g4-toolbar ul.g4-actions{float:none;display:block;margin-top:15px;margin-bottom:-10px;margin-left:15px;*zoom:1;}#g4-toolbar ul.g4-actions:before,#g4-toolbar ul.g4-actions:after{display:table;content:"";}#g4-toolbar ul.g4-actions:after{clear:both;}#g4-toolbar ul.g4-actions ul.rok-dropdown{right:inherit;left:-43px;}.g4-tabs li{padding:15px 10px;}.g4-tabs li .menuitems-involved{margin-left:5px !important;margin-right:-5px !important;}.panel-overview .g4-panel-left,.panel-overview .g4-panel-right,.g4-panel.panel-overview div.template-preview,.g4-panel.panel-overview .template-description{float:none;width:100%;}.panel-overview .g4-panel-left .updater-field,.panel-overview .g4-panel-left .tips-field,.panel-overview .g4-panel-left .html-field,.panel-overview .g4-panel-right .updater-field,.panel-overview .g4-panel-right .tips-field,.panel-overview .g4-panel-right .html-field,.g4-panel.panel-overview div.template-preview .updater-field,.g4-panel.panel-overview div.template-preview .tips-field,.g4-panel.panel-overview div.template-preview .html-field,.g4-panel.panel-overview .template-description .updater-field,.g4-panel.panel-overview .template-description .tips-field,.g4-panel.panel-overview .template-description .html-field{margin:10px 20px;}.g4-panel.panel-overview div.template-preview,.g4-panel.panel-overview .template-description{margin:0 0 20px;}.g4-panel.panel-overview div.template-preview img,.g4-panel.panel-overview .template-description img{margin:-10px auto 0;display:block;}}.g4-wrap select,.g4-wrap textarea,.g4-wrap input[type="text"],.g4-wrap input[type="password"],.g4-wrap input[type="datetime"],.g4-wrap input[type="datetime-local"],.g4-wrap input[type="date"],.g4-wrap input[type="month"],.g4-wrap input[type="time"],.g4-wrap input[type="week"],.g4-wrap input[type="number"],.g4-wrap input[type="email"],.g4-wrap input[type="url"],.g4-wrap input[type="search"],.g4-wrap input[type="tel"],.g4-wrap input[type="color"],.g4-wrap .readonly{display:inline-block;height:18px;padding:5px 0px;text-indent:10px;margin-left:0;margin-bottom:0;font-size:12px;background:#fff;line-height:18px;color:#555;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;z-index:2;}.g4-wrap select{text-indent:0;outline:0;}.g4-wrap select[disabled]{color:#aaa;}.g4-wrap input.required{background:#fff;}.g4-wrap input.readonly,.g4-wrap input.disabled{background:#f3f3f3;color:#6f6f6f;font-weight:normal;-webkit-box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;border:1px solid #d4d4d4;}.g4-wrap .input-append input[type="text"]{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}.g4-wrap .input-append .add-on{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-left:-1px;}.g4-wrap .input-prepend input[type="text"]{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.g4-wrap .input-prepend .add-on{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;margin-right:-4px;}.g4-wrap .add-on{display:inline-block;-webkit-box-shadow:0 1px 0 0 #fff;-moz-box-shadow:0 1px 0 0 #fff;box-shadow:0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;background:#fafafa;color:#999999;padding:5px 10px;height:18px;width:auto;line-height:18px;}.g4-wrap select,.g4-wrap input[type="file"]{height:30px;line-height:30px;}.g4-wrap label{display:block;position:relative;margin-top:0;margin-bottom:0px;}.g4-wrap .chain-label > label{height:16px;margin-bottom:2px;}.g4-wrap .position-field label{margin-top:3px;}.g4-wrap .chain-positions .chain-label > label{display:none;}.g4-wrap .chain-positions .g-position{height:16px;margin-bottom:0;}.g4-wrap fieldset.adminform{padding:0;margin:0;width:100%;}.g4-wrap fieldset.adminform input,.g4-wrap fieldset.adminform textarea,.g4-wrap fieldset.adminform select,.g4-wrap fieldset.adminform img,.g4-wrap fieldset.adminform button{float:inherit;margin:0 0 9px 0;}.g4-wrap fieldset.adminform label{min-width:inherit;}.g4-wrap .g4-controlgroup:before,.g4-wrap .g4-controlgroup:after{display:table;content:"";}.g4-wrap .g4-horizontal-form label{float:left;width:100px;padding-top:5px !important;text-align:right;}.g4-wrap .g4-horizontal-form .g4-controls{margin-left:120px;cursor:text;}.g4-wrap .g4-horizontal-form .g4-controls input,.g4-wrap .g4-horizontal-form .g4-controls select,.g4-wrap .g4-horizontal-form .g4-controls textarea{width:100%;}.g4-wrap .chzn-done{width:auto;}.g4-wrap .chzn-container-single .chzn-single{height:28px;line-height:29px;}#g4-details fieldset{border:0;}#g4-details fieldset div.g4-controlgroup{float:left;padding-top:10px;}#g4-details fieldset div.g4-controlgroup input#jform_title{font-size:12px;}#g4-details fieldset div.g4-controlgroup input#jform_id{width:40px;background-color:#f3f3f3;font-size:inherit;font-weight:inherit;float:inherit;border:1px solid #d4d4d4;margin:0 0 9px 0;}.panelform div#menu-assignment h3{margin-bottom:10px;}#menu-assignment .menu-links{list-style:none;float:left;width:50%;padding:0;}#menu-assignment ul.menu-links li{margin:0;}#menu-assignment ul.menu-links label{padding:0;text-align:left;display:inline-block;}.assignments-field{margin:0 15px;}.assignments-field #menu-assignment{overflow:hidden;}.assignments-field .menu-padder{height:1px;background:#ccc;display:inline-block;margin:0 5px 4px 0;}.assignments-field h2{float:left;margin-top:0;margin-bottom:0;}.assignments-field h3{border-bottom:1px solid #ccc;margin-right:15px;}.assignments-field .jform-rightbtn{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);float:right;}.assignments-field .jform-rightbtn .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.assignments-field .jform-rightbtn:first-child{*margin-left:0;}.assignments-field .jform-rightbtn .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn:hover,.assignments-field .jform-rightbtn.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.assignments-field .jform-rightbtn:hover .caret,.assignments-field .jform-rightbtn.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn:active,.assignments-field .jform-rightbtn.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.assignments-field .jform-rightbtn:active .caret,.assignments-field .jform-rightbtn.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn.rok-button-disabled,.assignments-field .jform-rightbtn.rok-button-disabled:hover,.assignments-field .jform-rightbtn.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.assignments-field .jform-rightbtn.rok-button-disabled .caret,.assignments-field .jform-rightbtn.rok-button-disabled:hover .caret,.assignments-field .jform-rightbtn.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn.rok-button-disabled i,.assignments-field .jform-rightbtn.rok-button-disabled:hover i,.assignments-field .jform-rightbtn.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.assignments-field .jform-rightbtn:active,.assignments-field .jform-rightbtn.rok-button-active{padding:8px 7px;}.assignments-field .jform-rightbtn.rok-button-disabled,.assignments-field .jform-rightbtn.rok-button-disabled:hover,.assignments-field .jform-rightbtn.rok-button-disabled:active{padding:8px 7px;}.assignments-field .jform-rightbtn.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.assignments-field .jform-rightbtn i{margin:-1px 0 -2px;}@font-face{font-family:'OxygenRegular';src:url('../fonts/Oxygen-webfont.eot');src:url('../fonts/Oxygen-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-webfont.woff') format('woff'), url('../fonts/Oxygen-webfont.ttf') format('truetype'), url('../fonts/Oxygen-webfont.svg#OxygenRegular') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenItalic';src:url('../fonts/Oxygen-Italic-webfont.eot');src:url('../fonts/Oxygen-Italic-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-Italic-webfont.woff') format('woff'), url('../fonts/Oxygen-Italic-webfont.ttf') format('truetype'), url('../fonts/Oxygen-Italic-webfont.svg#OxygenItalic') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenBold';src:url('../fonts/Oxygen-Bold-webfont.eot');src:url('../fonts/Oxygen-Bold-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-Bold-webfont.woff') format('woff'), url('../fonts/Oxygen-Bold-webfont.ttf') format('truetype'), url('../fonts/Oxygen-Bold-webfont.svg#OxygenBold') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenBoldItalic';src:url('../fonts/Oxygen-BoldItalic-webfont.eot');src:url('../fonts/Oxygen-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-BoldItalic-webfont.woff') format('woff'), url('../fonts/Oxygen-BoldItalic-webfont.ttf') format('truetype'), url('../fonts/Oxygen-BoldItalic-webfont.svg#OxygenBoldItalic') format('svg');font-weight:normal;font-style:normal;}#g4-logo{font-size:200px;line-height:0px;color:rgba(0,0,0,0.05);text-indent:40px;font-weight:bold;}.g4-wrap{font-size:12px;line-height:18px;}.g4-wrap ul{margin:0;padding:0;list-style:none;}.g4-wrap p{margin:20px 0;font-size:13px;color:#555;}h1 small{color:#9b9b9b;font-size:16px;}.g4-tabs li{font-size:14px;}#g4-sidebar .g4-content h2{font-size:16px;color:#3e3e3e;margin:0;padding:15px 15px 5px;}.g4-tabs .presets-involved,.g4-tabs overrides-involved,.g4-tabs .preset-info,.g4-tabs .menuitems-involved{font-size:13px;font-weight:bold;}#g4-panels h1{font-size:38px;line-height:38px;font-weight:bold;}#g4-panels h1 .g4-version,#g4-panels h1 > span{color:#3680be;font-weight:normal;}#g4-panels h1+h2{margin-top:10px;color:#555;font-weight:normal;}div.template-preview h2,div.template-preview ul{margin:10px 0 10px 10px;}div.template-preview ul{list-style:disc;}div.template-preview ul li{margin-left:20px;margin-bottom:3px;}.gantrytips-tip ul{list-style:disc;margin:10px 0 10px 10px;}.gantrytips-tip ul li{margin-left:10px;margin-bottom:3px;}.tips-field,.html-field{font-size:13px;color:#333;text-shadow:1px 1px 1px #fff;}.tips-field .h2bar,.html-field .h2bar{line-height:26px;font-size:22px;font-weight:bold;color:#555;}#updater #updater-bar{color:#eee;font-size:13px;line-height:26px;font-size:22px;font-weight:bold;text-shadow:0px -1px 0 #1d5792;}#updater #updater-bar span{color:#fff;}#updater #updater-desc{color:#eee;text-shadow:0px -1px 0 #1d5792;}#updater #updater-desc a{color:#fff;}#updater.update #updater-bar,#updater.update #updater-desc{text-shadow:0px -1px 0 #a71f14;}.g4-cell.g4-col1{font-weight:bold;text-shadow:1px 1px 0 #fff;color:#555;}.g4-cell.g4-col1 label,.g4-cell.g4-col1 h2{padding-left:20px;font-size:13px;}.g4-cell.g4-col1 h2{padding-top:45px;}.chain-label > label,.group-label > label,.inner-panels label{font-size:11px;color:#777;text-shadow:1px 1px 0px #fff;}i.spinner{opacity:0;filter:alpha(opacity=0);}i.spinner.spinner-16{background-image:url(../images/loader-16.gif);}i.spinner.spinner-32{background-image:url(../images/loader-32.gif);width:32px;height:32px;}i.spinner.spinner-64{background-image:url(../images/loader-64.gif);width:64px;height:64px;}i.spinner.spinner-128{background-image:url(../images/loader-128.gif);width:128px;height:128px;}i.published{background-position:0 0;}i.unpublished{background-position:-16px 0;}i.info{background-position:-32px 0;}i.edit{background-position:-48px 0;}i.plus{background-position:-64px 0;}.rok-button-primary i.info{background-position:-32px -16px;}.rok-button-primary i.edit{background-position:-48px -16px;}.rok-button-primary i.plus{background-position:-64px -16px;}.xdebug-var-dump i,.xdebug-error i{background:none;display:inline;width:auto;height:auto;}button{margin:0;font-size:100%;vertical-align:middle;}button{*overflow:visible;line-height:normal;}button::-moz-focus-inner{padding:0;border:0;}button{cursor:pointer;-webkit-appearance:button;}.rok-button{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);}.rok-button .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button:first-child{*margin-left:0;}.rok-button .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button:hover,.rok-button.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button:hover .caret,.rok-button.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button:active,.rok-button.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button:active .caret,.rok-button.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button.rok-button-disabled,.rok-button.rok-button-disabled:hover,.rok-button.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button.rok-button-disabled .caret,.rok-button.rok-button-disabled:hover .caret,.rok-button.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button.rok-button-disabled i,.rok-button.rok-button-disabled:hover i,.rok-button.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button:active,.rok-button.rok-button-active{padding:8px 7px;}.rok-button.rok-button-disabled,.rok-button.rok-button-disabled:hover,.rok-button.rok-button-disabled:active{padding:8px 7px;}.rok-button.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button i{margin:-1px 0 -2px;}.rok-button-primary{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);color:#fff;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.45) rgba(255,255,255,0.15) #1c73ac;box-shadow:0 0 0 1px #1573af, 0 3px 5px #c6c6c6;text-shadow:0 -1px 0 #186496;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#258fd2;background-image:-moz-linear-gradient(top,#2a9de6,#1d79b5);background-image:-ms-linear-gradient(top,#2a9de6,#1d79b5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2a9de6),to(#1d79b5));background-image:-webkit-linear-gradient(top,#2a9de6,#1d79b5);background-image:-o-linear-gradient(top,#2a9de6,#1d79b5);background-image:linear-gradient(top,#2a9de6,#1d79b5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);}.rok-button-primary .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button-primary:first-child{*margin-left:0;}.rok-button-primary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:hover,.rok-button-primary.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button-primary:hover .caret,.rok-button-primary.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:active,.rok-button-primary.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-primary:active .caret,.rok-button-primary.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover,.rok-button-primary.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-primary.rok-button-disabled .caret,.rok-button-primary.rok-button-disabled:hover .caret,.rok-button-primary.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary.rok-button-disabled i,.rok-button-primary.rok-button-disabled:hover i,.rok-button-primary.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button-primary:active,.rok-button-primary.rok-button-active{padding:8px 7px;}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover,.rok-button-primary.rok-button-disabled:active{padding:8px 7px;}.rok-button-primary.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button-primary i{margin:-1px 0 -2px;}.rok-button-primary:first-child{*margin-left:0;}.rok-button-primary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:hover,.rok-button-primary.rok-button-hover{color:#fff;background-color:#3697d6;background-image:-moz-linear-gradient(top,#45aae9,#1e7cb9);background-image:-ms-linear-gradient(top,#45aae9,#1e7cb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#45aae9),to(#1e7cb9));background-image:-webkit-linear-gradient(top,#45aae9,#1e7cb9);background-image:-o-linear-gradient(top,#45aae9,#1e7cb9);background-image:linear-gradient(top,#45aae9,#1e7cb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#45aae9', endColorstr='#1e7cb9', GradientType=0);}.rok-button-primary:active,.rok-button-primary.rok-button-active{color:#fff;border:0;-webkit-box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;background-color:#228cd0;background-image:-moz-linear-gradient(top,#259be5,#1c76b1);background-image:-ms-linear-gradient(top,#259be5,#1c76b1);background-image:-webkit-gradient(linear,0 0,0 100%,from(#259be5),to(#1c76b1));background-image:-webkit-linear-gradient(top,#259be5,#1c76b1);background-image:-o-linear-gradient(top,#259be5,#1c76b1);background-image:linear-gradient(top,#259be5,#1c76b1);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#259be5', endColorstr='#1c76b1', GradientType=0);}.rok-button-primary:active,.rok-button-primary.rok-button-active{background-color:#1a82c4;background-image:-moz-linear-gradient(top,#1a91dd,#196a9f);background-image:-ms-linear-gradient(top,#1a91dd,#196a9f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#1a91dd),to(#196a9f));background-image:-webkit-linear-gradient(top,#1a91dd,#196a9f);background-image:-o-linear-gradient(top,#1a91dd,#196a9f);background-image:linear-gradient(top,#1a91dd,#196a9f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1a91dd', endColorstr='#196a9f', GradientType=0);}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover{text-shadow:0 -1px 0 #fff;}.rok-button-secondary{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);color:#fff;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.45) rgba(255,255,255,0.15) #616161;box-shadow:0 0 0 1px #737373, 0 3px 5px #c6c6c6;text-shadow:0 -1px 0 #545454;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#858585;background-image:-moz-linear-gradient(top,#999,#666);background-image:-ms-linear-gradient(top,#999,#666);background-image:-webkit-gradient(linear,0 0,0 100%,from(#999),to(#666));background-image:-webkit-linear-gradient(top,#999,#666);background-image:-o-linear-gradient(top,#999,#666);background-image:linear-gradient(top,#999,#666);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#999999', endColorstr='#666666', GradientType=0);}.rok-button-secondary .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button-secondary:first-child{*margin-left:0;}.rok-button-secondary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:hover,.rok-button-secondary.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button-secondary:hover .caret,.rok-button-secondary.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-secondary:active .caret,.rok-button-secondary.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary.rok-button-disabled,.rok-button-secondary.rok-button-disabled:hover,.rok-button-secondary.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-secondary.rok-button-disabled .caret,.rok-button-secondary.rok-button-disabled:hover .caret,.rok-button-secondary.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary.rok-button-disabled i,.rok-button-secondary.rok-button-disabled:hover i,.rok-button-secondary.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{padding:8px 7px;}.rok-button-secondary.rok-button-disabled,.rok-button-secondary.rok-button-disabled:hover,.rok-button-secondary.rok-button-disabled:active{padding:8px 7px;}.rok-button-secondary.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button-secondary i{margin:-1px 0 -2px;}.rok-button-secondary:first-child{*margin-left:0;}.rok-button-secondary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:hover,.rok-button-secondary.rok-button-hover{color:#fff;background-color:#8f8f8f;background-image:-moz-linear-gradient(top,#a8a8a8,#696969);background-image:-ms-linear-gradient(top,#a8a8a8,#696969);background-image:-webkit-gradient(linear,0 0,0 100%,from(#a8a8a8),to(#696969));background-image:-webkit-linear-gradient(top,#a8a8a8,#696969);background-image:-o-linear-gradient(top,#a8a8a8,#696969);background-image:linear-gradient(top,#a8a8a8,#696969);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#a8a8a8', endColorstr='#696969', GradientType=0);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{color:#fff;border:0;-webkit-box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;background-color:#828282;background-image:-moz-linear-gradient(top,#969696,#636363);background-image:-ms-linear-gradient(top,#969696,#636363);background-image:-webkit-gradient(linear,0 0,0 100%,from(#969696),to(#636363));background-image:-webkit-linear-gradient(top,#969696,#636363);background-image:-o-linear-gradient(top,#969696,#636363);background-image:linear-gradient(top,#969696,#636363);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#969696', endColorstr='#636363', GradientType=0);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{background-color:#727272;background-image:-moz-linear-gradient(top,#616161,#8c8c8c);background-image:-ms-linear-gradient(top,#616161,#8c8c8c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#616161),to(#8c8c8c));background-image:-webkit-linear-gradient(top,#616161,#8c8c8c);background-image:-o-linear-gradient(top,#616161,#8c8c8c);background-image:linear-gradient(top,#616161,#8c8c8c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#616161', endColorstr='#8c8c8c', GradientType=0);}.rok-buttons-group > *{display:inline-block;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;margin-right:0;margin-left:-3px;}.rok-buttons-group > *:first-child{margin-left:0;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}.rok-buttons-group > *:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-right:4px;}#g4-toolbar .rok-dropdown-open ul.rok-dropdown{display:block;}#g4-toolbar ul.rok-dropdown{position:absolute;top:100%;left:0;display:none;float:left;list-style:none;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;z-index:5;background-color:#fefefe;min-width:160px;top:200%;right:-10px;left:inherit;padding:4px 0;border:1px solid #fff;*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:2px 2px 4px 4px;-moz-border-radius:2px 2px 4px 4px;border-radius:2px 2px 4px 4px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);}#g4-toolbar ul.rok-dropdown .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;}#g4-toolbar ul.rok-dropdown > li{display:block;}#g4-toolbar ul.rok-dropdown a{display:block;clear:both;font-weight:normal;white-space:nowrap;}#g4-toolbar ul.rok-dropdown > li > a:hover,#g4-toolbar ul.rok-dropdown .active > a,#g4-toolbar ul.rok-dropdown .active > a:hover{text-decoration:none;}#g4-toolbar ul.rok-dropdown li{text-align:left;}#g4-toolbar ul.rok-dropdown li a{color:#666;}#g4-toolbar ul.rok-dropdown .divider{background-color:#e5e5e5;border-bottom:1px solid #ffffff;margin:5px 1px;}#g4-toolbar ul.rok-dropdown a{margin:0 -1px;padding:3px 15px;line-height:24px;color:;text-shadow:0 1px 0 #fff;text-decoration:none;}#g4-toolbar ul.rok-dropdown > li > a:hover,#g4-toolbar ul.rok-dropdown .active > a,#g4-toolbar ul.rok-dropdown .active > a:hover{background-color:#258fd2;background-image:-moz-linear-gradient(top,#2a9de6,#1d79b5);background-image:-ms-linear-gradient(top,#2a9de6,#1d79b5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2a9de6),to(#1d79b5));background-image:-webkit-linear-gradient(top,#2a9de6,#1d79b5);background-image:-o-linear-gradient(top,#2a9de6,#1d79b5);background-image:linear-gradient(top,#2a9de6,#1d79b5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.5);}.text-verylong{width:375px;}.text-long{width:275px;}.text-regular{width:200px;}.text-medium{width:125px;}.text-short{width:50px;}.text-color{width:75px;}textarea.text-textarea{width:350px;height:120px;padding:5px;font-family:Monaco, Menlo, Consolas, "Courier New", monospace;text-indent:0;}.toggle{display:inline-block;width:80px;height:35px;background:url(images/toggle.png);cursor:hand;}.toggle .toggle-input{display:none;}.toggle.toggle-off{background-position:0 0;}.toggle.toggle-on{background-position:0 -40px;}.toggle.toggle-off.disabled{background-position:0 -80px;}.toggle.toggle-on.disabled{background-position:0 -120px;}.selectedset-group{clear:both;position:relative;}.selectset-group-first{border-top:none;}.selectedset-fields,.selectedset-fields .gantry-field{position:relative;}.selectedset-hidden-field{visibility:hidden;position:absolute;top:-2000px;}#g4-panel .navigation li a{color:#444;}#g4-panel .navigation li a:hover{color:#D54E21;}#g4-panel .navigation li.active a,#gantry-panel .navigation li.active a:hover{color:#1578B9;}.position,.slider{width:192px;height:9px;background:url(images/slider.png) 0 0 no-repeat;position:relative;margin-top:10px;}.position2,.slider2{width:192px;height:9px;background:url(images/slider.png) 0 -14px no-repeat;position:absolute;width:0px;}.position .knob,.slider .knob{width:24px;height:24px;top:-8px;left:-8px;background:url(images/slider.png) -195px 0 no-repeat;position:absolute;cursor:pointer;}.position-field .chain-toggle,.position-field .chain-showmax{margin-top:-3px;}#positions-tip{background:url(slider/images/slider-tip.png) no-repeat;font-size:12px;width:117px;height:50px;text-shadow:1px 1px #000;color:#fff;position:absolute;visibility:hidden;text-align:center;padding:0 4px;line-height:38px;letter-spacing:-1px;top:0;z-index:20;}.navigation{color:#666;}.navigation .title,.navigation .list{float:left;}.navigation .title{font-size:100%;}.navigation .list{margin:0;padding:0;list-style:none;}.navigation .list li{display:inline;}.navigation .list li a{display:block;padding:0 7px;text-decoration:none;color:#aaa;float:left;outline:none;}.navigation .list li.active a{font-weight:bold;text-decoration:underline;color:#333;}.mini-container{text-align:center;background:#fff;height:28px;padding:0;color:#555;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}.mini-container div{height:28px;line-height:28px;}.mini-container .main{background:#666;text-shadow:1px 1px #1b80a0;color:#fff;}.mini-container{width:192px;}.mini-grid-1,.mini-grid-2,.mini-grid-3,.mini-grid-4,.mini-grid-5,.mini-grid-6,.mini-grid-7,.mini-grid-8,.mini-grid-9,.mini-grid-10,.mini-grid-11,.mini-grid-12,.mini-grid-13,.mini-grid-14,.mini-grid-15,.mini-grid-16{display:inline;float:left;position:relative;}.mini-container .mini-grid{border-left:1px solid #d0d0d0;padding-right:1px;}.mini-container .mini-grid:first-child{border-left:0;padding-left:1px;}.col9 .mini-container .mini-grid-1{width:19px;}.col9 .mini-container .mini-grid-2{width:40px;}.col9 .mini-container .mini-grid-3{width:61px;}.col9 .mini-container .mini-grid-4{width:82px;}.col9 .mini-container .mini-grid-5{width:103px;}.col9 .mini-container .mini-grid-6{width:124px;}.col9 .mini-container .mini-grid-7{width:145px;}.col9 .mini-container .mini-grid-8{width:166px;}.col9 .mini-container .mini-grid-9{width:190px;}.col12 .mini-container .mini-grid-1{width:15px;}.col12 .mini-container .mini-grid-2{width:30px;}.col12 .mini-container .mini-grid-3{width:46px;}.col12 .mini-container .mini-grid-4{width:62px;}.col12 .mini-container .mini-grid-5{width:78px;}.col12 .mini-container .mini-grid-6{width:94px;}.col12 .mini-container .mini-grid-7{width:110px;}.col12 .mini-container .mini-grid-8{width:126px;}.col12 .mini-container .mini-grid-9{width:142px;}.col12 .mini-container .mini-grid-10{width:158px;}.col12 .mini-container .mini-grid-11{width:174px;}.col12 .mini-container .mini-grid-12{width:190px;}.col16 .mini-container .mini-grid-1{width:10px;}.col16 .mini-container .mini-grid-2{width:22px;}.col16 .mini-container .mini-grid-3{width:34px;}.col16 .mini-container .mini-grid-4{width:46px;}.col16 .mini-container .mini-grid-5{width:58px;}.col16 .mini-container .mini-grid-6{width:70px;}.col16 .mini-container .mini-grid-7{width:82px;}.col16 .mini-container .mini-grid-8{width:94px;}.col16 .mini-container .mini-grid-9{width:106px;}.col16 .mini-container .mini-grid-10{width:118px;}.col16 .mini-container .mini-grid-11{width:130px;}.col16 .mini-container .mini-grid-12{width:142px;}.col16 .mini-container .mini-grid-13{width:154px;}.col16 .mini-container .mini-grid-14{width:166px;}.col16 .mini-container .mini-grid-15{width:178px;}.col16 .mini-container .mini-grid-16{width:190px;}.graphic-level{background:url(images/graphic-level.png) no-repeat;padding-top:15px;}.miniatures{float:left;}.current-positions{padding-left:210px;color:#999;}.gradient-preview{width:100%;height:100%;}.presets{position:relative;width:1000px;margin:0 auto;}.presets .scroller{margin-bottom:30px;}.presets .scroller .inner{overflow:hidden;width:100%;}.presets .presets-scrollbar{background:#dedede;-webkit-box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;position:absolute;width:100%;height:16px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.presets .presets-scrollbar .bar{position:absolute;top:-1px;left:-1px;height:16px;width:0;border:1px solid #bbb;-webkit-box-shadow:1px 1px 0 0 #fff inset;-moz-box-shadow:1px 1px 0 0 #fff inset;box-shadow:1px 1px 0 0 #fff inset;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#fafafa url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAALBAMAAAC5XnFsAAAAA3NCSVQICAjb4U/gAAAAElBMVEX////+/v7Ozs7Nzc3Ly8uMRgCgvID5AAAABnRSTlP//////wCzv6S/AAAACXBIWXMAAAsSAAALEgHS3X78AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABR0RVh0Q3JlYXRpb24gVGltZQA4LzMvMTLfrdy9AAAAKUlEQVQImWMIYAVBBigVbAqCDKFgwBAoCpUDMYByQapBqhhyYCrEFQQBMiQPAwBHVdkAAAAASUVORK5CYII=) 50% 2px no-repeat;}.presets .presets-scrollbar{position:absolute;left:0;bottom:-15px;}.presets .wrapper{font-size:0;margin:0 auto;}.presets .wrapper .block{font-size:12px;display:inline-block;cursor:pointer;position:relative;margin:20px 8px 10px;-webkit-box-shadow:0 1px 5px rgba(33,33,33,0.1);-moz-box-shadow:0 1px 5px rgba(33,33,33,0.1);box-shadow:0 1px 5px rgba(33,33,33,0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:1px solid #d9d9d9;padding:1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAABGCAMAAAAZ4Z3/AAAAA3NCSVQICAjb4U/gAAAAilBMVEX////+/v79/f38/Pz7+/v39/f29vbz8/Py8vLw8PDv7+/u7u7t7e3s7Ozr6+vq6urp6eno6Ojn5+fi4uLh4eHg4ODf39/b29vY2NjX19fW1tbV1dXU1NTT09PS0tLR0dHQ0NDPz8/Ozs7Nzc3MzMzDw8O5ubmxsbGkpKSampqQkJCLi4uIiIiMRgBq/iXiAAAALnRSTlP///////////////////////////////////////////////////////////8Ago9zVQAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAUdEVYdENyZWF0aW9uIFRpbWUAOC80LzEyQnrkBAAAA5lJREFUaIHtmYt2mzAMhrvFpFcv7Vg2uqVd69YBjP3+rzdJtoEQyDBdgJ3Df1rAMogP3yTChZmlLqYGaNeCFaIFK0QLVogWrBA5rM93N0a8k4TxR+MfNrBuX79fjd8kR1ptn2/tEWE9PK+npKlp/bwhItzcvawmpqm0ernBHWCx2bQVar1jhrDut1OjHGi7MYT143JqkgNdPhrC2kwN0tDOzHI5/WII625qjhYBlvj7WU5SZ7jTsmFFZdHJS5lkfe/y1WK9BWDpuA2Lcx6r4uSlXPO+d3kbgFV4rESK0orbWEdRZCTHGmQ3kZREQkUmtDjdnB/CEnpvsZTOtY5qWFzzHIwJ1aRAo5XyJ6bU0fn5sOAuEWKliOT6jbCY0ibX3JgUjJFOTK5g1GZlkWPd+bAirRAL2wMaJLJWUkwkUAMjTWVgTRNWFc+MZfbQkdIOL3crGvJ4lGM3WUY4EtDL+7J4bixTaGAqcKUQmpVW47EKGHwGBj9nWBOVxWCsb2FYMWLB4Ic75ZW1xIK2gxoAV4Tli/AfOBP7ywJk2IP7amodYkG1xpHHsfNEWYT50HcmuuV0WPBhvOvpGbcLOo23qhikoOAzjoKDzzgKnonjaMEK0X+G5YKcluWK1KLOOqhwdc4PPwnBj+q7sBjnkB5xzgZhcVlhcRcth2C1BR97MrgXmMsxLEBggz8hMLHjVR0ZKbAwIRN6qArLu7M5Y92NDUVCxp1Y3c8gtcoLyFjIP4SWvChyXShVQFSBOsjzIBDDGXRSpKFSHXai8+ZyxsqNvYJB/CrUEdaJ4OOx4CGLvPIHvhOMiGSDfQo5BBrRkBUYxvkBVg5Kypyx7oauwH1+hGVMZ/DxWNZP6S93Nd7GgJsCNG14kjWwpMSE3ueMdTe4IXvc1VptC0RPLEwH/U0gec/SBpZ15nPGI6xaLlnTiXWrDxbD1koOnp23YvmcsYlVpGQfjJXQO0ITS2EyxSqsDMdaG5bPGeturAssD8eCqQTzromVwlKZmFonajS1zUSfM9bc0IZSxBCspqLmtSjGG0WGS1KbfM7YdNPwEIw1puaN1f/NZxwFv/mMow+9+ZxXM3zzuTeE9To1R0PuJ92f8/oB/AqTNsB6mNnnAvdLM9vN6uPKL/wAhQvEzaw+RdGQQqxPm6e5tNf6yX5QtMvp9WbAryr/Xqt4d22PqlX+8c19m12Z3+8THZaaYfBBLVghWrBCtGCFaKZYfwCcAfb/ENSCxAAAAABJRU5ErkJggg==) 50% 60% no-repeat;-webkit-transition:all 0.25s ease-in-out;-moz-transition:all 0.25s ease-in-out;-ms-transition:all 0.25s ease-in-out;-o-transition:all 0.25s ease-in-out;transition:all 0.25s ease-in-out;}.presets .wrapper .block.pulsing{outline:0;border-color:rgba(82,168,236,0.8);-webkit-box-shadow:0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:0 0 8px rgba(82,168,236,0.6);box-shadow:0 0 8px rgba(82,168,236,0.6);-webkit-transition:all 0.25s ease-in-out;-moz-transition:all 0.25s ease-in-out;-ms-transition:all 0.25s ease-in-out;-o-transition:all 0.25s ease-in-out;transition:all 0.25s ease-in-out;}.presets .wrapper .block div.presets-bg{width:180px;height:100px;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.presets .wrapper .block span{display:block;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;border-top:1px solid #fff;border-bottom:1px solid #d9d9d9;background:#f5f5f5;color:#666;text-align:center;font-weight:bold;padding:4px;font-size:14px;line-height:14px;text-shadow:1px 1px 0 #fff;}.presets .wrapper .block .delete-preset{position:absolute;right:4px;top:4px;background:#ddd;border:1px solid #ccc;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;padding:1px 4px;cursor:pointer;}.presets .wrapper .block .delete-preset:hover{background:#e83f1f;border:1px solid #cb2417;}.presets .wrapper .block .delete-preset:hover span{color:#fff;text-shadow:1px 1px 0 #2373bd;}.presets .wrapper .block .delete-preset span{border:0;padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background:transparent;}#gantry-layer{position:absolute;top:0;left:0;right:0;bottom:0;background:#000;z-index:900;}.presets-wrapper-table{display:table;width:100%;height:100%;position:absolute;left:0;top:0;right:0;bottom:0;}.presets-wrapper-table .presets-wrapper-row{display:table-row;}.presets-wrapper-table .presets-wrapper-row .presets-wrapper-cell{display:table-cell;vertical-align:middle;}#presets-namer{position:relative;margin:0 auto;background:#fff;padding:15px;width:80%;max-width:500px;z-index:1500;font-size:13px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}#presets-namer .preset-bottom{text-align:right;}#presets-namer .rok-button{display:inline-block;margin-left:5px;}#presets-namer h2,#presets-namer h3{margin-top:0;margin-bottom:5px;color:#D73D12;font-family:"Oxygen", Arial, sans-serif;}#presets-namer h3{color:#000;text-transform:uppercase;padding-bottom:5px;margin-bottom:10px;position:relative;}#presets-namer h3 span{text-transform:uppercase;color:#C13201;}#presets-namer p{margin:10px 0;}#presets-namer input,#presets-namer input:focus{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;padding:4px;margin:0;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;width:100%;}#presets-namer input.example,#presets-namer input:focus.example{color:#999;font-style:italic;}#presets-namer button{font-size:90%;margin-right:10px;}#presets-namer label span{text-align:right;padding-right:10px;float:left;display:block;width:85px;color:#666;text-transform:uppercase;font-size:80%;line-height:25px;}#presets-namer .preset-namer{background:#e9e9e9;padding:15px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin-bottom:15px;border:1px solid #ccc;}.gantry-layer-wrapper .preset-namer div{margin:5px 10px;}.gantry-layer-close{color:#f64a4a;font-weight:bold;position:absolute;height:20px;width:20px;line-height:20px;top:2px;right:2px;}.roar-body{position:absolute;color:#fff;text-align:left;z-index:999;}.roar-body .roar{position:absolute;width:300px;cursor:pointer;}.roar-body .roar .roar-bg{position:absolute;z-index:1000;width:100%;height:100%;top:0;left:0;background-color:#000;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);-moz-box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);}.roar-body .roar h3,.roar-body .roar p{position:relative;margin:0;color:#fff;visibility:visible;z-index:1001;font-size:13px;padding:5px 10px;}.roar-body .roar p{font-size:12px;padding-top:0;}
admin/widgets/gantry-ie.css CHANGED
@@ -1,7 +1,7 @@
1
  /**
2
  * @version $Id: gantry-ie.css 58595 2012-12-11 19:59:45Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
 
1
  /**
2
  * @version $Id: gantry-ie.css 58595 2012-12-11 19:59:45Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
 
admin/widgets/gantry-ie7.css CHANGED
@@ -1,7 +1,7 @@
1
  /**
2
  * @version $Id: gantry-ie7.css 58595 2012-12-11 19:59:45Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
 
1
  /**
2
  * @version $Id: gantry-ie7.css 58595 2012-12-11 19:59:45Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
 
admin/widgets/gantry-opera.css CHANGED
@@ -1,7 +1,7 @@
1
  /**
2
  * @version $Id: gantry-opera.css 58595 2012-12-11 19:59:45Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
 
1
  /**
2
  * @version $Id: gantry-opera.css 58595 2012-12-11 19:59:45Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
 
admin/widgets/gantry-widgets.css CHANGED
@@ -1,7 +1,7 @@
1
  /**
2
  * @version $Id: gantry-widgets.css 58595 2012-12-11 19:59:45Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
  #screen-meta {z-index:5;}
1
  /**
2
  * @version $Id: gantry-widgets.css 58595 2012-12-11 19:59:45Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
  #screen-meta {z-index:5;}
admin/widgets/gantry-widgets.js CHANGED
@@ -1,7 +1,7 @@
1
  /**
2
  * @version $Id: gantry-widgets.js 58623 2012-12-15 22:01:32Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
 
1
  /**
2
  * @version $Id: gantry-widgets.js 58623 2012-12-15 22:01:32Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
 
admin/widgets/gantry.css CHANGED
@@ -1,7 +1,7 @@
1
  #gantry-panel .gantry-field > label/**
2
  * @version $Id: gantry.css 58595 2012-12-11 19:59:45Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
 
1
  #gantry-panel .gantry-field > label/**
2
  * @version $Id: gantry.css 58595 2012-12-11 19:59:45Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
 
admin/widgets/gantry.js CHANGED
@@ -1,10 +1,3 @@
1
- /**
2
- * @package Gantry Template Framework - RocketTheme
3
- * @version $Id: gantry.js 58644 2012-12-17 22:52:30Z djamil $
4
- * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
- * @license http://www.rockettheme.com/legal/license.php RocketTheme Proprietary Use License
7
- */
8
 
9
  var Gantry = {
10
  init: function() {
@@ -12,77 +5,216 @@ var Gantry = {
12
  Gantry.cookie = Cookie.read('gantry-admin');
13
  Gantry.cleanance();
14
  Gantry.initTabs();
15
- Gantry.selectedSets();
16
  Gantry.inputs();
 
17
  Gantry.Overlay = new Gantry.Layer();
18
  Gantry.Tips.init();
19
- Gantry.dropdown();
20
  Gantry.notices();
 
 
 
 
21
  },
22
 
23
  load: function() {
24
  },
25
 
26
- notices: function() {
27
- var notices = $$('.gantry-notice');
28
- if (notices.length) {
29
- notices.each(function(notice) {
30
- var close = notice.getElement('.close');
31
- if (close) {
32
- var fx = new Fx.Tween(notice, {duration: 200, link: 'ignore', onComplete: function() {
33
- if (document.id(notice)) notice.dispose();
34
- }});
35
- close.addEvent('click', fx.start.pass(['opacity', 0], fx));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  }
37
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  }
39
 
40
- var deletOverride = $$('.overrides-button.button-del');
41
- deletOverride.addEvent('click', function(e) {
42
- var del = confirm(GantryLang['are_you_sure']);
43
- if (!del) e.stop();
44
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  },
46
 
47
  dropdown: function() {
48
  var inside = document.id('overrides-inside'), first = document.id('overrides-first'), delay = null;
49
  var slide = new Fx.Slide('overrides-inside', {
50
  duration: 100,
 
51
  onStart: function() {
52
  var width = document.id('overrides-actions').getSize().x - 4;
53
  inside.setStyle('width', width);
54
  this.wrapper.setStyle('width', width + 4);
55
  },
56
  onComplete: function() {
57
- if (inside.getStyle('margin-top').toInt() !== 0) first.removeClass('slide-down');
58
  }
59
  }).hide();
60
  inside.setStyle('display', 'block');
61
 
62
  var enterFunction = function() {
63
- if (inside.hasClass('slidedown')) {
64
- slide.slideIn();
65
- first.addClass('slide-down');
66
- }
67
  };
68
 
69
  var leaveFunction = function() {
70
- if (inside.hasClass('slideup')) {
71
- slide.slideOut();
72
- }
73
  };
74
 
75
 
76
- $$('#overrides-inside, #overrides-toggle').addEvents({
77
  'mouseenter': function() {
78
- $clear(delay);
79
- inside.removeClass('slideup').addClass('slidedown');
80
- first.addClass('slide-down');
81
  enterFunction();
82
  },
83
  'mouseleave': function() {
84
- $clear(delay);
85
- inside.removeClass('slidedown').addClass('slideup');
86
  delay = leaveFunction.delay(300);
87
  }
88
  });
@@ -111,7 +243,7 @@ var Gantry = {
111
  toggle.removeClass('hidden');
112
  }
113
  else if (e.key == 'enter') {
114
- e.stop();
115
  var list = document.id('overrides-inside').getElements('a');
116
  var index = list.get('text').indexOf(this.value);
117
  if (index != -1) {
@@ -148,7 +280,7 @@ var Gantry = {
148
  },
149
 
150
  'keydown': function(e) {
151
- if (this.hasClass('disabled')) { e.stop(); return; }
152
  },
153
 
154
  'focus': function() {
@@ -156,30 +288,25 @@ var Gantry = {
156
  },
157
 
158
  'keyup': function(e) {
159
- if (this.hasClass('disabled')) { e.stop(); return; }
160
- if (Gantry.MenuItemHead) {
161
- var cache = Gantry.MenuItemHead.Cache[Gantry.Selection];
162
- if (!cache) cache = new Hash({});
163
- cache.set(this.id.replace('params', ''), this.value);
164
- }
165
  }
166
  });
167
  },
168
 
169
- selectedSets: function(){
170
  var sets = $$('.selectedset-switcher select');
171
  var setsToggle;
172
 
173
  sets.each(function(set, i){
174
  var id = set.id.replace('_type', '');
175
- //setsToggle = document.getElement('.selectedset-enabler input[id^='+id+']');
176
  set.store('gantry:values', set.getElements('option').get('value'));
177
  set.addEvent('change', function(){
178
  this.retrieve('gantry:values').each(function(value){
179
  var layer = document.id('set-' + value);
180
  if (layer){
181
  layer.removeClass('selectedset-hidden-field');
182
- layer.setStyle('display', (value == this.value) ? 'block' : 'none');
183
 
184
  if (window.selectboxes && value == this.value){
185
  layer.getElements('.selectbox-wrapper').each(function(wrapper){
@@ -202,14 +329,14 @@ var Gantry = {
202
  if (!this.value.toInt()) layer.setStyle('display', 'none');
203
  else {
204
  layer.removeClass('selectedset-hidden-field');
205
- layer.setStyle('display', (value == sets[j].get('value')) ? 'block' : 'none');
206
  }
207
  }
208
  }, this);
209
  });
210
  });
211
 
212
- var menu = document.id(GantryParamsPrefix + 'menu_type');
213
  if (menu) menu.fireEvent('change');
214
  },
215
 
@@ -217,18 +344,19 @@ var Gantry = {
217
  Gantry.overridesBadges();
218
  Gantry.tabs = [];
219
  Gantry.panels = [];
220
- var paneSlider = document.getElement('.pane-sliders') || document.getElement('#gantry-panel');
221
  var items = paneSlider.getChildren();
222
- var fieldsets = items.getElement('.panelform');
 
223
 
224
- Gantry.tabs = document.getElements('#gantry-tabs li');
225
 
226
  if (!wrapper) {
227
- var wrapper = document.getElement('.gantry-wrapper');
228
  }
229
 
230
  if (!container) {
231
- var container = document.getElement('#gantry-panel');
232
  }
233
 
234
  var widgets = document.getElements('#widget-list .widget .widget-top, #wp_inactive_widgets .widget .widget-top');
@@ -239,56 +367,50 @@ var Gantry = {
239
  });
240
  }
241
 
242
- var innerTabs = fieldsets.getElements('.inner-tabs ul').flatten();
243
-
244
- innerTabs.each(function(innertab){
245
- var tabs = innertab.getElements('li'),
246
- panels = innertab.getParent('.innertabs-field').getElements('.inner-panels .inner-panel');
247
 
248
- tabs.each(function(tab, i) {
 
 
249
  tab.addEvents({
250
  'mouseenter': function() {this.addClass('hover');},
251
  'mouseleave': function() {this.removeClass('hover');},
252
  'click': function() {
253
- panels.setStyle('position', 'absolute');
254
- panels.fade('out');
255
- panels[i].setStyles({'position': 'relative', 'float': 'left', 'top': 0, 'z-index': 5}).fade('in');
 
 
 
 
 
256
  //Gantry.container.tween('height', panel.retrieve('gantry:height'));
257
- tabs.removeClass('active');
258
  this.addClass('active');
259
  }
260
  });
261
  });
262
- }, this);
263
 
264
- Gantry.panels = $$('.gantry-panel');
 
 
 
265
  Gantry.wrapper = wrapper;
266
  Gantry.container = container;
267
  Gantry.tabs = $$(Gantry.tabs);
268
 
269
- var dashboard = new Hash({'contextual-help-link-wrap': 'contextual-help-wrap', 'screen-options-link-wrap': 'screen-options-wrap'});
270
- dashboard.each(function(wrap, lnk) {
271
- var button = document.id(lnk);
272
- var wrapper = document.id(wrap);
273
- if (!button || !wrapper) return;
274
-
275
- var others = $$('#screen-meta-links > div[id!='+lnk+']');
276
- button.addEvent('mouseup', function() {
277
- if (!wrapper.hasClass('contextual-help-open')) others.setStyle('visibility', 'hidden');
278
- else others.setStyle('visibility', 'visible');
279
- });
280
- });
281
-
282
  var clearCache = document.id('cache-clear-wrap');
283
  if (clearCache) {
284
  var ajaxloading = new Asset.image('images/wpspin_dark.gif', {
285
  onload: function() {this.setStyles({'display': 'none'}).addClass('ajax-loading').inject(clearCache, 'top');}
286
  });
287
  clearCache.addEvent('click', function(e) {
288
- e.stop();
289
  new Request.HTML({
290
  url: AdminURI,
291
- onRequest: function() { clearCache.addClass('disabled'); ajaxloading.setStyle('display', 'block'); },
292
  onSuccess: function() { window.location.reload(); }
293
  }).post({
294
  'action': 'gantry_admin',
@@ -307,9 +429,9 @@ var Gantry = {
307
 
308
  initTabs: function() {
309
  var max = 0;
310
- Gantry.panels.setStyles({'position': 'absolute', 'visibility': 'hidden'});
311
- var pan = document.getElement('#gantry-panel .active-panel');
312
- (pan || Gantry.panels[0]).setStyles({'position': 'relative', visibility: 'visible'});
313
  Gantry.panels.set('tween', {duration: 'short', onComplete: function() {
314
  if (!this.to[0].value) this.element.setStyle('display', 'none');
315
  }});
@@ -322,30 +444,99 @@ var Gantry = {
322
  'mouseleave': function() {this.removeClass('hover');},
323
  'click': function() {
324
  Cookie.write('gantry-admin-tab', i);
325
- panel.setStyle('visibility', 'visible');
326
  if (this.hasClass('active')) return;
 
 
 
 
327
  Gantry.panels.setStyle('position', 'absolute');
328
- Gantry.panels.setStyles({'visibility': 'hidden', 'opacity': 0, 'z-index': 5});
329
- panel.setStyles({'display': 'inline-block', 'position': 'relative', 'top': -20, 'z-index': 15, visibility: 'visible'}).morph({'top': 0, 'opacity': 1});
 
330
  //Gantry.container.tween('height', panel.retrieve('gantry:height'));
 
331
  Gantry.tabs.removeClass('active');
332
  this.addClass('active');
333
  }
334
  });
335
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
336
 
337
- //Gantry.tabs[Cookie.read('gantry-admin-tab') || 0].fireEvent('click');
 
 
 
 
 
 
 
 
 
 
338
  }
339
  };
340
 
341
  Gantry.Tips = {
342
  init: function() {
343
- var panels = $$('.gantry-panel'), labels;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
344
  if (document.id(document.body).getElement('.defaults-wrap')) {
345
- labels = panels.getElements('.gantry-panel-left .gantry-field > label:not(.rokchecks), .gantry-panel-left .gantry-field span[class!=chain-label][class!=group-label] > label:not(.rokchecks)');
346
  }
347
  else {
348
- labels = panels.getElements('.gantry-panel-left .gantry-field .base-label label');
349
  }
350
  labels.each(function(labelsList, i){
351
  if (labelsList.length) {
@@ -366,33 +557,6 @@ Gantry.Tips = {
366
  }
367
  };
368
 
369
- Gantry.ToolBar = {
370
- 'add': function(meta_name) {
371
- var screenMeta = document.id('screen-meta');
372
- if (screenMeta) document.id('contextual-'+meta_name+'-wrap').inject(screenMeta, 'top');
373
- (function($){
374
- var othersmeta = $('#screen-meta-links > div[id!=meta-'+meta_name+'-link-wrap]');
375
- $('#meta-'+meta_name+'-link').click(function () {
376
- if (!$('#contextual-'+meta_name+'-wrap').hasClass('contextual-'+meta_name+'-open'))
377
- $('#screen-meta-links > div[id!=meta-'+meta_name+'-link-wrap]').css('visibility', 'hidden');
378
-
379
- $('#contextual-'+meta_name+'-wrap').slideToggle('fast', function() {
380
- if ($(this).hasClass('contextual-'+meta_name+'-open')) {
381
- $('#meta-'+meta_name+'-link').css({'backgroundPosition':'top right'});
382
- othersmeta.css('visibility', '');
383
- $(this).removeClass('contextual-'+meta_name+'-open');
384
- } else {
385
- $('#meta-'+meta_name+'-link').css({'backgroundPosition':'bottom right'});
386
- $(this).addClass('contextual-'+meta_name+'-open');
387
- }
388
- });
389
-
390
- return false;
391
- });
392
- })(jQuery);
393
- }
394
- };
395
-
396
  Gantry.Layer = new Class({
397
  Implements: [Events, Options],
398
  options: {
@@ -406,26 +570,29 @@ Gantry.Layer = new Class({
406
  this.setOptions(options);
407
 
408
  this.id = new Element('div', {id: 'gantry-layer'}).inject(document.body);
 
409
  this.fx = new Fx.Tween(this.id, {
410
- 'duration': this.options.duration,
411
- 'wait': false,
412
- 'onComplete': function() {
 
 
 
413
  if (!this.to[0].value) {
414
  self.open = false;
415
- this.element.setStyle('visibility', 'hidden');
416
  } else {
417
  self.open = true;
418
  self.fireEvent('show');
419
  }
420
  }
421
  }).set('opacity', 0);
 
422
  this.open = false;
423
 
424
  },
425
 
426
  show: function() {
427
- this.calcSizes();
428
- this.fx.element.setStyle('visibility', 'visible');
429
  this.fx.start('opacity', this.options.opacity);
430
  },
431
 
@@ -446,6 +613,63 @@ Gantry.Layer = new Class({
446
  }
447
  });
448
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
449
  window.addEvent('domready', Gantry.init);
450
- window.addEvent('load', Gantry.load);
451
- var Tips = new Class({});
 
 
 
 
 
 
 
1
 
2
  var Gantry = {
3
  init: function() {
5
  Gantry.cookie = Cookie.read('gantry-admin');
6
  Gantry.cleanance();
7
  Gantry.initTabs();
 
8
  Gantry.inputs();
9
+ Gantry.selectedSets();
10
  Gantry.Overlay = new Gantry.Layer();
11
  Gantry.Tips.init();
 
12
  Gantry.notices();
13
+ Gantry.badges();
14
+ Gantry.dropdown();
15
+ Gantry.toolbarButtons();
16
+ Gantry.loadDefaults();
17
  },
18
 
19
  load: function() {
20
  },
21
 
22
+ toolbarButtons: function(){
23
+ var actions = document.getElements('[data-g4-toolbaraction]');
24
+
25
+ actions.each(function(action){
26
+ var perform = action.get('data-g4-toolbaraction');
27
+ if (perform == 'template.apply') return;
28
+
29
+ action.addEvent('click', function(e){
30
+ e.preventDefault();
31
+ form.set('action', perform).submit();
32
+ });
33
+ /*var a = action.getElement('a');
34
+ var onclick = a.get('onclick').replace('javascript:', '');
35
+ a.onclick = function(){};
36
+ a.removeProperty('onclick');
37
+ if (action.id != 'toolbar-new-style'){
38
+ a.addEvent('click', function(e){
39
+ if (a.getElement('span').hasClass('toolbar-inactive')) e.stop();
40
+ else if (action.id != 'toolbar-purge') {
41
+ eval(onclick);
42
+ }
43
+ });
44
+ }*/
45
+
46
+ });
47
+
48
+
49
+ var apply = document.getElement('[data-g4-toolbaraction="template.apply"]');
50
+
51
+ if (apply){
52
+ /* var otherButtons = buttons.clone().filter(function(button){
53
+ return button.id != apply.id;
54
+ });*/
55
+
56
+ var actionButtons = $$(document.getElements('#g4-toolbar .g4-actions > .rok-button').slice(0, -1));
57
+
58
+ var form = document.id('adminForm');
59
+ var currentAction = null;
60
+
61
+ form.set('send', {
62
+ url: form.get('action'),
63
+ method: 'post',
64
+ onSuccess: function(response){
65
+ var msg = JSON.validate(response);
66
+
67
+ if (!msg) msg = "Invalid JSON response from save action.";
68
+ else {
69
+ var json = JSON.decode(response);
70
+ msg = json.message;
71
+ }
72
+
73
+
74
+ document.getElement('[data-actions-spinner]').setStyle('display', 'none');
75
+ growl.alert('Gantry', msg, {duration: 6000});
76
  }
77
  });
78
+
79
+ apply.addEvent('click', function(e){
80
+ //e.preventDefault();
81
+ document.getElement('[data-actions-spinner]').setStyle('display', 'inline-block');
82
+ currentAction = apply;
83
+ if (GantryOverrideIsNew) form.submit();
84
+ else form.send();
85
+ });
86
+ /*var req = new Request({
87
+ url: GantryAjaxURL,
88
+ method: 'post',
89
+ 'onRequest': function(){
90
+ //currentAction.addClass('spinner');
91
+ //actionButtons.addClass('disabled');
92
+ },
93
+ 'onSuccess': function(response){
94
+ //currentAction.removeClass('spinner');
95
+ //actionButtons.removeClass('disabled');
96
+
97
+ growl.alert('Gantry', response, {duration: 6000});
98
+ //Gantry.NoticeBox.getElement('li').set('html', response);
99
+ //Gantry.NoticeBoxFx.start('opacity', [0, 1]);
100
+ }
101
+ });
102
+
103
+ //apply.getElement('a').onclick = function(){};
104
+ //apply.getElement('a').removeProperty('onclick');
105
+ apply.addEvent('click', function(e){
106
+ //e.preventDefault();
107
+
108
+ currentAction = apply;
109
+
110
+ var query = form.toQueryString().parseQueryString();
111
+
112
+ Object.each(query, (function(value, key){
113
+ if (key.contains('[]')) {
114
+ delete query[key];
115
+ query[key.replace('[]', '')] = (typeof value == 'string') ? [value] : value;
116
+ }
117
+ }));
118
+
119
+ req.post(Object.merge(query, {
120
+ 'model': 'template-save',
121
+ 'action': 'save',
122
+ 'task': 'ajax'
123
+ }));
124
+ });*/
125
  }
126
 
127
+ var reset = document.id('toolbar-purge');
128
+ if (reset){
129
+ reset.addEvent('click', function(e){
130
+ e.preventDefault();
131
+
132
+ if (Gantry.defaults){
133
+ var field, toggle;
134
+ Gantry.defaults.each(function(value, key){
135
+ field = document.id(key);
136
+ if (field){
137
+ field.set('value', value);
138
+ if (field.get('tag') == 'select') field.fireEvent('change');
139
+ if (field.hasClass('toggle-input')){
140
+ toggle = field.getParent('.toggle');
141
+ if (value == '0' && !toggle.hasClass('toggle-off')) toggle.removeClass('toggle-on').addClass('toggle-off');
142
+ else if (value == '1' && !toggle.hasClass('toggle-on')) toggle.removeClass('toggle-off').addClass('toggle-on');
143
+ } else if (field.hasClass('slider') || field.hasClass('layouts-input')) {
144
+ var slider = window.sliders[(field.id.replace(/-/, '_')).replace("-", "_")];
145
+ slider.hiddenEl.fireEvent('set', value);
146
+ } else if (field.id.contains('_font_family')){
147
+ if (!value.contains(':')) value = 's:' + value;
148
+ field.set('value', value);
149
+ } else if (field.className.contains('picker-input')){
150
+ document.getElement('[data-moorainbow-trigger=' + field.id + '] .overlay').setStyle('background-color', value);
151
+ }
152
+ }
153
+ });
154
+
155
+ Scroller.involved.setStyle('display', 'none');
156
+ document.getElements('.preset-info').dispose();
157
+
158
+ growl.alert('Gantry', 'Fields have been reset to default values.', {duration: 6000});
159
+ //Gantry.NoticeBox.getElement('li').set('html', 'Fields have been reset to default values.');
160
+ //Gantry.NoticeBoxFx.start('opacity', [0, 1]);
161
+ }
162
+ });
163
+ }
164
+ },
165
+
166
+ notices: function() {
167
+ var notices = document.getElements('.g4-notice');
168
+ if (notices.length){
169
+ document.addEvent('click:relay(.g4-notice .close)', function(event, element){
170
+ event.stopPropagation();
171
+ element.getParent('.g4-notice').set('tween', {
172
+ duration: 250,
173
+ onComplete: function(){
174
+ element.getParent('.g4-notice').dispose();
175
+ }
176
+ });
177
+ element.getParent('.g4-notice').fade('out');
178
+ });
179
+ }
180
  },
181
 
182
  dropdown: function() {
183
  var inside = document.id('overrides-inside'), first = document.id('overrides-first'), delay = null;
184
  var slide = new Fx.Slide('overrides-inside', {
185
  duration: 100,
186
+ link: 'cancel',
187
  onStart: function() {
188
  var width = document.id('overrides-actions').getSize().x - 4;
189
  inside.setStyle('width', width);
190
  this.wrapper.setStyle('width', width + 4);
191
  },
192
  onComplete: function() {
193
+ if (this.open && !delay) first.removeClass('slide-down');
194
  }
195
  }).hide();
196
  inside.setStyle('display', 'block');
197
 
198
  var enterFunction = function() {
199
+ slide.slideIn();
200
+ inside.removeClass('slideup').addClass('slidedown');
201
+ first.addClass('slide-down');
 
202
  };
203
 
204
  var leaveFunction = function() {
205
+ inside.removeClass('slidedown').addClass('slideup');
206
+ slide.slideOut();
207
+ delay = null;
208
  };
209
 
210
 
211
+ $$('#overrides-toggle, #overrides-inside').addEvents({
212
  'mouseenter': function() {
213
+ clearTimeout(delay);
 
 
214
  enterFunction();
215
  },
216
  'mouseleave': function() {
217
+ clearTimeout(delay);
 
218
  delay = leaveFunction.delay(300);
219
  }
220
  });
243
  toggle.removeClass('hidden');
244
  }
245
  else if (e.key == 'enter') {
246
+ e.preventDefault();
247
  var list = document.id('overrides-inside').getElements('a');
248
  var index = list.get('text').indexOf(this.value);
249
  if (index != -1) {
280
  },
281
 
282
  'keydown': function(e) {
283
+ if (this.hasClass('disabled')) { e.preventDefault(); return; }
284
  },
285
 
286
  'focus': function() {
288
  },
289
 
290
  'keyup': function(e) {
291
+ if (this.hasClass('disabled')) { e.preventDefault(); return; }
 
 
 
 
 
292
  }
293
  });
294
  },
295
 
296
+ selectedSets: function(){
297
  var sets = $$('.selectedset-switcher select');
298
  var setsToggle;
299
 
300
  sets.each(function(set, i){
301
  var id = set.id.replace('_type', '');
302
+ setsToggle = document.getElement('.selectedset-enabler input[id^='+id+'], .selectedset-enabler select[id^='+id+']') || document.getElement('.selectedset-field input[id^='+id+'], .selectedset-field select[id^='+id+']');
303
  set.store('gantry:values', set.getElements('option').get('value'));
304
  set.addEvent('change', function(){
305
  this.retrieve('gantry:values').each(function(value){
306
  var layer = document.id('set-' + value);
307
  if (layer){
308
  layer.removeClass('selectedset-hidden-field');
309
+ layer.setStyle('display', (value == this.value) ? 'table-row-group' : 'none');
310
 
311
  if (window.selectboxes && value == this.value){
312
  layer.getElements('.selectbox-wrapper').each(function(wrapper){
329
  if (!this.value.toInt()) layer.setStyle('display', 'none');
330
  else {
331
  layer.removeClass('selectedset-hidden-field');
332
+ layer.setStyle('display', (value == sets[j].get('value')) ? 'table-row-group' : 'none');
333
  }
334
  }
335
  }, this);
336
  });
337
  });
338
 
339
+ var menu = document.id('jform_params_menu_type');
340
  if (menu) menu.fireEvent('change');
341
  },
342
 
344
  Gantry.overridesBadges();
345
  Gantry.tabs = [];
346
  Gantry.panels = [];
347
+ var paneSlider = document.getElement('.pane-sliders') || document.getElement('#g4-panels');
348
  var items = paneSlider.getChildren();
349
+ var fieldsets = $$(items.getElement('.panelform').clean()),
350
+ wrapper, container;
351
 
352
+ Gantry.tabs = document.getElements('.g4-tabs li');
353
 
354
  if (!wrapper) {
355
+ wrapper = document.getElement('.g4-wrapper');
356
  }
357
 
358
  if (!container) {
359
+ container = document.getElement('#g4-panels');
360
  }
361
 
362
  var widgets = document.getElements('#widget-list .widget .widget-top, #wp_inactive_widgets .widget .widget-top');
367
  });
368
  }
369
 
370
+ var innertabs_wrapper = $$(fieldsets.getElements('.inner-tabs').flatten()),
371
+ innerpanels_wrapper = $$(fieldsets.getElements('.inner-panels').flatten()),
372
+ innertabs, innerpanels;
 
 
373
 
374
+ innertabs_wrapper.each(function(wrapper, i){
375
+ innertabs = wrapper.getElements('ul li').flatten();
376
+ innertabs.each(function(tab, j) {
377
  tab.addEvents({
378
  'mouseenter': function() {this.addClass('hover');},
379
  'mouseleave': function() {this.removeClass('hover');},
380
  'click': function() {
381
+ innertabs = wrapper.getElements('ul li').flatten();
382
+ innerpanels = innerpanels_wrapper[i].getElements('.inner-panel').flatten();
383
+
384
+ innertabs = $$(innertabs); innerpanels = $$(innerpanels);
385
+ $$(innerpanels).setStyle('position', 'absolute').removeClass('innerpanel-active');
386
+ innerpanels.setStyle('display', 'none');
387
+ innerpanels[j].set('tween', {duration: 250});
388
+ innerpanels[j].setStyles({'display': 'block', 'position': 'relative', opacity: 0}).addClass('innerpanel-active').fade('in');
389
  //Gantry.container.tween('height', panel.retrieve('gantry:height'));
390
+ innertabs.removeClass('active');
391
  this.addClass('active');
392
  }
393
  });
394
  });
 
395
 
396
+ if (innertabs.length) innertabs[0].fireEvent('click');
397
+ });
398
+
399
+ Gantry.panels = $$('.g4-panel');
400
  Gantry.wrapper = wrapper;
401
  Gantry.container = container;
402
  Gantry.tabs = $$(Gantry.tabs);
403
 
 
 
 
 
 
 
 
 
 
 
 
 
 
404
  var clearCache = document.id('cache-clear-wrap');
405
  if (clearCache) {
406
  var ajaxloading = new Asset.image('images/wpspin_dark.gif', {
407
  onload: function() {this.setStyles({'display': 'none'}).addClass('ajax-loading').inject(clearCache, 'top');}
408
  });
409
  clearCache.addEvent('click', function(e) {
410
+ e.preventDefault();
411
  new Request.HTML({
412
  url: AdminURI,
413
+ onRequest: function() { ajaxloading.setStyle('display', 'block'); },
414
  onSuccess: function() { window.location.reload(); }
415
  }).post({
416
  'action': 'gantry_admin',
429
 
430
  initTabs: function() {
431
  var max = 0;
432
+ Gantry.panels.setStyles({'position': 'absolute'});
433
+ var pan = document.getElement('#g4-panels .active-panel');
434
+ (pan || Gantry.panels[0]).setStyles({'position': 'relative', 'display': 'inline-block', zIndex: 15});
435
  Gantry.panels.set('tween', {duration: 'short', onComplete: function() {
436
  if (!this.to[0].value) this.element.setStyle('display', 'none');
437
  }});
444
  'mouseleave': function() {this.removeClass('hover');},
445
  'click': function() {
446
  Cookie.write('gantry-admin-tab', i);
 
447
  if (this.hasClass('active')) return;
448
+
449
+ $$(Gantry.panels).removeClass('active-panel').setStyle('display', 'none');
450
+ panel.addClass('active-panel');
451
+
452
  Gantry.panels.setStyle('position', 'absolute');
453
+ Gantry.panels.setStyles({'visibility': 'hidden', 'opacity': 0, 'z-index': 5, 'display': 'none'});
454
+ panel.set('morph', {duration: 330});
455
+ panel.setStyles({'display': 'inline-block', 'visibility': 'visible', 'position': 'relative', 'top': -20, 'z-index': 15}).morph({'top': 0, 'opacity': 1});
456
  //Gantry.container.tween('height', panel.retrieve('gantry:height'));
457
+
458
  Gantry.tabs.removeClass('active');
459
  this.addClass('active');
460
  }
461
  });
462
  });
463
+ },
464
+
465
+ badges: function(){
466
+ var checkboxes = $$('#menu-assignment input[type=checkbox][disabled!=disabled]');
467
+ var toggle = $$('button.jform-rightbtn');
468
+ var badge = $$('.menuitems-involved span');
469
+ if (checkboxes.length && badge.length){
470
+ badge = badge[0];
471
+ var value = badge.get('html').clean().toInt();
472
+ checkboxes.addEvent('click', function(){
473
+ if (this.checked) value += 1;
474
+ else value -= 1;
475
+
476
+ badge.set('html', value);
477
+ });
478
+ }
479
+
480
+ if (toggle.length){
481
+ toggle = toggle[0];
482
+ toggle.addEvent('click', function(){
483
+ var checks = document.getElements('#menu-assignment input[type=checkbox][disabled!=disabled]');
484
+ if (checks.length){
485
+ checks = checks.filter(function(check){
486
+ return check.checked;
487
+ });
488
+
489
+ value = checks.length;
490
+ badge.set('html', value);
491
+ }
492
+ });
493
+ }
494
+ },
495
 
496
+ loadDefaults: function() {
497
+ Gantry.defaultsXHR = new Request({
498
+ url: GantryAjaxURL,
499
+ onSuccess: function(response) {
500
+ Gantry.defaults = new Hash(JSON.decode(response));
501
+ }
502
+ }).post({
503
+ action: 'gantry_admin',
504
+ model: 'overrides',
505
+ gantry_action: (GantryIsMaster) ? 'get_default_values' : 'get_base_values'
506
+ });
507
  }
508
  };
509
 
510
  Gantry.Tips = {
511
  init: function() {
512
+ // backward G3 tooltips
513
+ if (typeof GantryPanelsTips != 'undefined'){
514
+ var field = null;
515
+ Object.each(GantryPanelsTips, function(tips, tabname){
516
+ Object.each(tips, function(data, id){
517
+ field = document.id(GantryParamsPrefix + id + '-lbl');
518
+ if (field){
519
+ field.set('data-original-title', data['content']).addClass('g4-tooltips');
520
+ }
521
+ });
522
+ });
523
+ }
524
+
525
+ // twipsy tooltips
526
+ document.getElements('.g4-tooltips').twipsy({placement: 'above-left', offset: {x: -10, y: -8}});
527
+ document.getElements('.hasTip').each(function(tip){
528
+ tip.removeClass('hasTip').addClass('sprocket-tip');
529
+ tip.set('title', tip.get('title').split('::').pop());
530
+ tip.twipsy({placement: 'below-right', offset: {x: 5, y: 5}, html: true});
531
+ });
532
+
533
+
534
+ var panels = $$('.g4-panel'), labels;
535
  if (document.id(document.body).getElement('.defaults-wrap')) {
536
+ labels = panels.getElements('.g4-panel-left .gantry-field > label:not(.rokchecks), .g4-panel-left .gantry-field span[class!=chain-label][class!=group-label] > label:not(.rokchecks)');
537
  }
538
  else {
539
+ labels = panels.getElements('.g4-panel-left .gantry-field .base-label label');
540
  }
541
  labels.each(function(labelsList, i){
542
  if (labelsList.length) {
557
  }
558
  };
559
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
560
  Gantry.Layer = new Class({
561
  Implements: [Events, Options],
562
  options: {
570
  this.setOptions(options);
571
 
572
  this.id = new Element('div', {id: 'gantry-layer'}).inject(document.body);
573
+
574
  this.fx = new Fx.Tween(this.id, {
575
+ duration: this.options.duration,
576
+ link: 'cancel',
577
+ onStart: function(){
578
+ this.id.setStyle('visibility', 'visible');
579
+ }.bind(this),
580
+ onComplete: function() {
581
  if (!this.to[0].value) {
582
  self.open = false;
583
+ self.id.setStyle('visibility', 'hidden');
584
  } else {
585
  self.open = true;
586
  self.fireEvent('show');
587
  }
588
  }
589
  }).set('opacity', 0);
590
+ this.id.setStyle('visibility', 'hidden');
591
  this.open = false;
592
 
593
  },
594
 
595
  show: function() {
 
 
596
  this.fx.start('opacity', this.options.opacity);
597
  },
598
 
613
  }
614
  });
615
 
616
+ if (!Browser.Engine){
617
+ if (Browser.Platform.ios) Browser.Platform.ipod = true;
618
+
619
+ Browser.Engine = {};
620
+
621
+ var setEngine = function(name, version){
622
+ Browser.Engine.name = name;
623
+ Browser.Engine[name + version] = true;
624
+ Browser.Engine.version = version;
625
+ };
626
+
627
+ if (Browser.ie){
628
+ Browser.Engine.trident = true;
629
+
630
+ switch (Browser.version){
631
+ case 6: setEngine('trident', 4); break;
632
+ case 7: setEngine('trident', 5); break;
633
+ case 8: setEngine('trident', 6);
634
+ }
635
+ }
636
+
637
+ if (Browser.firefox){
638
+ Browser.Engine.gecko = true;
639
+
640
+ if (Browser.version >= 3) setEngine('gecko', 19);
641
+ else setEngine('gecko', 18);
642
+ }
643
+
644
+ if (Browser.safari || Browser.chrome){
645
+ Browser.Engine.webkit = true;
646
+
647
+ switch (Browser.version){
648
+ case 2: setEngine('webkit', 419); break;
649
+ case 3: setEngine('webkit', 420); break;
650
+ case 4: setEngine('webkit', 525);
651
+ }
652
+ }
653
+
654
+ if (Browser.opera){
655
+ Browser.Engine.presto = true;
656
+
657
+ if (Browser.version >= 9.6) setEngine('presto', 960);
658
+ else if (Browser.version >= 9.5) setEngine('presto', 950);
659
+ else setEngine('presto', 925);
660
+ }
661
+
662
+ if (Browser.name == 'unknown'){
663
+ switch ((ua.match(/(?:webkit|khtml|gecko)/) || [])[0]){
664
+ case 'webkit':
665
+ case 'khtml':
666
+ Browser.Engine.webkit = true;
667
+ break;
668
+ case 'gecko':
669
+ Browser.Engine.gecko = true;
670
+ }
671
+ }
672
+ }
673
+
674
  window.addEvent('domready', Gantry.init);
675
+ //window.addEvent('load', Gantry.load);
 
admin/widgets/gantry.popupbuttons.js ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ((function(){
2
+ var G4PopupButtons = this.G4PopupButtons = new Class({
3
+ Implements: [Options, Events],
4
+ options: {
5
+ data: 'g4'
6
+ },
7
+ initialize: function(options){
8
+ this.setOptions(options);
9
+
10
+ this.active = null;
11
+ this.attach();
12
+ },
13
+
14
+ attach: function(){
15
+
16
+ var relay = {
17
+ toggle: document.retrieve(this.options.data + ':events:buttonstoggle', function(event, target){
18
+ this.show.call(this, event, target);
19
+ }.bind(this)),
20
+ click: document.retrieve(this.options.data + ':events:itemclick', function(event, target){
21
+ this.hide.call(this, event, target);
22
+ }.bind(this))
23
+ };
24
+
25
+ document.addEvent('click:relay([data-' + this.options.data + '-toggle])', relay.toggle);
26
+ document.addEvent('click:relay([data-' + this.options.data + '-dropdown] >)', relay.click);
27
+ },
28
+
29
+ attachDocument: function(){
30
+ if (document.retrieve(this.options.data + ':attached:document')) return;
31
+
32
+ var relay = {
33
+ document: document.retrieve(this.options.data + ':events:hide', function(event, target){
34
+ target = target || event.target;
35
+ this.hide.call(this);
36
+ }.bind(this))
37
+ };
38
+
39
+ document.addEvent('click', relay.document);
40
+ document.store(this.options.data + ':attached:document', true);
41
+ },
42
+
43
+ detachDocument: function(){
44
+ if (!document.retrieve(this.options.data + ':attached:document')) return;
45
+
46
+ var hide = document.retrieve(this.options.data + ':events:hide');
47
+ document.removeEvent('click', hide);
48
+ document.store(this.options.data + ':attached:document', false);
49
+ },
50
+
51
+ show: function(event, target){
52
+ if (this.active == target) return;
53
+
54
+ this.hide();
55
+ this.attachDocument();
56
+ this.active = target;
57
+
58
+ var value = this.active.get('data-'+this.options.data+'-toggle'),
59
+ popup = document.getElement('[data-'+this.options.data+'-dropdown="'+value+'"]');
60
+
61
+ this.active.addClass('rok-button-active');
62
+ popup.setStyle('display', 'block');
63
+ },
64
+
65
+ hide: function(){
66
+ if (this.active){
67
+ var value = this.active.get('data-'+this.options.data+'-toggle'),
68
+ popup = document.getElement('[data-'+this.options.data+'-dropdown="'+value+'"]');
69
+
70
+ this.active.removeClass('rok-button-active');
71
+ popup.setStyle('display', 'none');
72
+
73
+ this.active = null;
74
+ this.detachDocument();
75
+ }
76
+ }
77
+ });
78
+
79
+ this.g4PopupButtons = new G4PopupButtons();
80
+ })());
admin/widgets/gradient/js/gradient.js CHANGED
@@ -1,8 +1,84 @@
1
- /**
2
- * @version $Id: gradient.js 58623 2012-12-15 22:01:32Z btowles $
3
- * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
- * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
- */
7
-
8
- var GantryGradient={init:function(){var a=$$(".gradient-preview");a.each(function(b){new Element("div").set("text","Sorry. Gradient previews can be seen only on WebKit and Gecko based browsers.").inject(b.addClass("error"));});},add:function(g,a){var c=document.id(g);var f=new Element("div").set("text","Sorry. Gradient previews can only be seen on WebKit and Gecko based browsers.").inject(c);c.getParent().addClass("error");if(Browser.Engine.webkit||Browser.Engine.gecko){var e=["from","fromopacity","toopacity","to","gradient","direction_start","direction_end"];var d=window.moorainbow;var b=GantryGradient.updateGradient.pass([a,c],GantryGradient);e.each(function(h){var l=a+"_"+h;var k=l.replace(/-/g,"_");var i=GantryGradient.updateGradient.pass([a,c],GantryGradient);if(typeof d["r_"+k]!="undefined"){var j=k;d["r_"+j].addEvent("onChange",i);}else{if(document.id(l)&&(h=="fromopacity"||h=="toopacity")){window.sliders[k].addEvent("onDrag",i);}else{if(document.id(l)&&(h=="gradient"||h=="direction_start"||h=="direction_end")){document.id(l).addEvent("change",i);}}}});GantryGradient.updateGradient(a,c);}},updateGradient:function(b,j){var e={from:document.id(b+"_from"),to:document.id(b+"_to"),fromOp:document.id(b+"_fromopacity"),toOp:document.id(b+"_toopacity"),type:document.id(b+"_gradient"),direction_start:document.id(b+"_direction_start"),direction_end:document.id(b+"_direction_end")};var g=e.from.value.hexToRgb(true);var d=e.to.value.hexToRgb(true);g=g.join(", ")+", "+(e.fromOp?e.fromOp.value:1);d=d.join(", ")+", "+(e.toOp?e.toOp.value:1);var h;if(Browser.Engine.webkit){h="-webkit-gradient("+(e.type?e.type.value:"linear")+", "+e.direction_start.value.replace("-"," ")+", "+e.direction_end.value.replace("-"," ")+", from(rgba("+g+")), to(rgba("+d+")))";j.getParent().removeClass("error").getFirst().empty().style.background=h;}else{if(Browser.Engine.gecko){var c=e.direction_start.value.split("-");var f=e.direction_end.value.split("-");var a,i;a=c[0];i=c[1];if(c[0]==f[0]){a="center";}if(c[1]==f[1]){i="center";}h="-moz-"+(e.type?e.type.value:"linear")+"-gradient("+a+" "+i+", rgba("+g+"), rgba("+d+"))";j.getParent().removeClass("error").getFirst().empty().style.background=h;}}}};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ var GantryGradient = {
3
+ init: function() {
4
+ var previews = $$('.gradient-preview');
5
+
6
+ previews.each(function(preview) {
7
+ new Element('div').set('text', 'Sorry. Gradient previews can be seen only on WebKit and Gecko based browsers.').inject(preview.addClass('error'));
8
+ });
9
+ },
10
+
11
+ add: function(id, name) {
12
+ var previewBox = document.id(id);
13
+ var preview = new Element('div').set('text', 'Sorry. Gradient previews can only be seen on WebKit and Gecko based browsers.').inject(previewBox);
14
+ previewBox.getParent().addClass('error');
15
+
16
+ if (Browser.Engine.webkit || Browser.Engine.gecko) {
17
+
18
+ var list = ['from', 'fromopacity', 'toopacity', 'to', 'gradient', 'direction_start', 'direction_end'];
19
+
20
+ var r = window.moorainbow;
21
+ var bound = GantryGradient.updateGradient.pass([name, previewBox], GantryGradient);
22
+ list.each(function(tag) {
23
+
24
+ var title = name + '_' + tag;
25
+ var title2 = title; //title.replace(/-/g, '_');
26
+ var bound = GantryGradient.updateGradient.pass([name, previewBox], GantryGradient);
27
+
28
+ if (typeof r['r_'+title2] != 'undefined') {
29
+
30
+ var cleanTitle = title2;
31
+ r['r_' + cleanTitle].addEvent('onChange', bound);
32
+
33
+ } else if (document.id(title) && (tag == 'fromopacity' || tag == 'toopacity')) {
34
+ window.sliders[title2].addEvent('onDrag', bound);
35
+
36
+ } else if (document.id(title) && (tag == 'gradient' || tag == 'direction_start' || tag == 'direction_end')) {
37
+
38
+ document.id(title).addEvent('change', bound);
39
+
40
+ }
41
+ });
42
+ GantryGradient.updateGradient(name, previewBox);
43
+ }
44
+ },
45
+
46
+ updateGradient: function(name, previewBox) {
47
+ var settings = {
48
+ 'from': document.id(name+'_from'),
49
+ 'to': document.id(name+'_to'),
50
+ 'fromOp': document.id(name+'_fromopacity'),
51
+ 'toOp': document.id(name+'_toopacity'),
52
+ 'type': document.id(name+'_gradient'),
53
+ 'direction_start': document.id(name+'_direction_start'),
54
+ 'direction_end': document.id(name+'_direction_end')
55
+ };
56
+
57
+ var fromColor = settings.from.value.hexToRgb(true);
58
+ var toColor = settings.to.value.hexToRgb(true);
59
+
60
+ fromColor = fromColor.join(', ') + ', ' +(settings.fromOp ? settings.fromOp.value : 1);
61
+ toColor = toColor.join(', ') + ', ' +(settings.toOp ? settings.toOp.value : 1);
62
+
63
+ var gradient;
64
+ if (Browser.Engine.webkit) {
65
+
66
+ gradient = '-webkit-gradient(' + (settings.type ? settings.type.value : 'linear') + ', ' + settings.direction_start.value.replace('-', ' ') + ', ' + settings.direction_end.value.replace('-', ' ') + ', from(rgba(' + fromColor + ')), to(rgba(' + toColor + ')))';
67
+ previewBox.getParent().removeClass('error').getFirst().empty().style.background = gradient;
68
+ } else if (Browser.Engine.gecko) {
69
+ var start = settings.direction_start.value.split('-');
70
+ var end = settings.direction_end.value.split('-');
71
+
72
+ var pointA, pointB;
73
+
74
+ pointA = start[0];
75
+ pointB = start[1];
76
+ if (start[0] == end[0]) pointA = 'center';
77
+ if (start[1] == end[1]) pointB = 'center';
78
+
79
+
80
+ gradient = '-moz-'+(settings.type ? settings.type.value : 'linear')+'-gradient('+ pointA + ' ' + pointB + ', rgba(' + fromColor + '), rgba(' + toColor + '))';
81
+ previewBox.getParent().removeClass('error').getFirst().empty().style.background = gradient;
82
+ }
83
+ }
84
+ };
admin/widgets/growl.js ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Roar - Notifications
3
+ *
4
+ * Inspired by Growl
5
+ *
6
+ * @version 1.0.1
7
+ *
8
+ * @license MIT-style license
9
+ * @author Harald Kirschner <mail [at] digitarald.de>
10
+ * @copyright Author
11
+ */
12
+
13
+ ((function(){
14
+ var Roar = new Class({
15
+
16
+ Implements: [Options, Events, Chain],
17
+
18
+ options: {
19
+ duration: 3000,
20
+ position: 'upperRight',
21
+ container: null,
22
+ bodyFx: null,
23
+ itemFx: null,
24
+ margin: {x: 10, y: 10},
25
+ offset: 10,
26
+ className: 'roar',
27
+ onShow: function(){},
28
+ onHide: function(){},
29
+ onRender: function(){}
30
+ },
31
+
32
+ initialize: function(options) {
33
+ this.setOptions(options);
34
+ this.items = [];
35
+ this.container = document.id(this.options.container) || document;
36
+ },
37
+
38
+ alert: function(title, message, options) {
39
+ var params = Array.from(arguments).link({title: Type.isString, message: Type.isString, options: Type.isObject});
40
+ var items = [new Element('h3', {'html': params.title || ''})];
41
+ if (params.message) items.push(new Element('p', {'html': params.message}));
42
+ return this.inject(items, params.options);
43
+ },
44
+
45
+ inject: function(elements, options) {
46
+ if (!this.body) this.render();
47
+ options = Object.merge(this.options, options || {});
48
+
49
+ var offset = [-this.options.offset, 0];
50
+ var last = this.items.getLast();
51
+ if (last) {
52
+ offset[0] = last.retrieve('roar:offset');
53
+ offset[1] = offset[0] + last.offsetHeight + this.options.offset;
54
+ }
55
+ var to = {'opacity': 1};
56
+ to[this.align.y] = offset;
57
+
58
+ var item = new Element('div', {
59
+ 'class': this.options.className,
60
+ 'opacity': 0
61
+ }).adopt(
62
+ new Element('div', {
63
+ 'class': 'roar-bg',
64
+ 'opacity': 0.7
65
+ }),
66
+ elements
67
+ );
68
+
69
+ item.setStyle(this.align.x, 0).store('roar:offset', offset[1]).set('morph', Object.merge({
70
+ link: 'cancel',
71
+ onStart: Chain.prototype.clearChain,
72
+ transition: 'back:out'
73
+ }, this.options.itemFx));
74
+
75
+ var remove = this.remove.bind(this, item);
76
+ this.items.push(item.addEvent('click', remove));
77
+
78
+ if (this.options.duration) {
79
+ var over = false;
80
+ var trigger = (function() {
81
+ trigger = null;
82
+ if (!over) remove();
83
+ }).delay(this.options.duration);
84
+ item.addEvents({
85
+ mouseover: function() {
86
+ over = true;
87
+ },
88
+ mouseout: function() {
89
+ over = false;
90
+ if (!trigger) remove();
91
+ }
92
+ });
93
+ }
94
+ item.inject(this.body).morph(to);
95
+ return this.fireEvent('onShow', [item, this.items.length]);
96
+ },
97
+
98
+ remove: function(item) {
99
+ var index = this.items.indexOf(item);
100
+ if (index == -1) return this;
101
+ this.items.splice(index, 1);
102
+ item.removeEvents();
103
+ var to = {opacity: 0};
104
+ to[this.align.y] = item.getStyle(this.align.y).toInt() - item.offsetHeight - this.options.offset;
105
+ item.morph(to).get('morph').chain(item.destroy.bind(item));
106
+ return this.fireEvent('onHide', [item, this.items.length]).callChain(item);
107
+ },
108
+
109
+ empty: function() {
110
+ while (this.items.length) this.remove(this.items[0]);
111
+ return this;
112
+ },
113
+
114
+ render: function() {
115
+ this.position = this.options.position;
116
+ if (typeof this.position == 'string') {
117
+ var position = {x: 'center', y: 'center'};
118
+ this.align = {x: 'left', y: 'top'};
119
+ if ((/left|west/i).test(this.position)) position.x = 'left';
120
+ else if ((/right|east/i).test(this.position)) this.align.x = position.x = 'right';
121
+ if ((/upper|top|north/i).test(this.position)) position.y = 'top';
122
+ else if ((/bottom|lower|south/i).test(this.position)) this.align.y = position.y = 'bottom';
123
+ this.position = position;
124
+ }
125
+ this.body = new Element('div', {'class': 'roar-body'}).inject(document.body);
126
+ if (Browser.Engine.trident4) this.body.addClass('roar-body-ugly');
127
+ this.moveTo = this.body.setStyles.bind(this.body);
128
+ this.reposition();
129
+ if (this.options.bodyFx) {
130
+ var morph = new Fx.Morph(this.body, Object.merge({
131
+ chain: 'cancel',
132
+ transition: 'circ:out'
133
+ }, this.options.bodyFx));
134
+ this.moveTo = morph.start.bind(morph);
135
+ }
136
+ var repos = this.reposition.bind(this);
137
+ window.addEvents({
138
+ scroll: repos,
139
+ resize: repos
140
+ });
141
+ this.fireEvent('onRender', this.body);
142
+ },
143
+
144
+ reposition: function() {
145
+ var max = document.getCoordinates(), scroll = document.getScroll(), margin = this.options.margin;
146
+ max.left += scroll.x;
147
+ max.right += scroll.x;
148
+ max.top += scroll.y + 30;
149
+ max.bottom += scroll.y + 30;
150
+ var rel = (typeof this.container == 'element') ? this.container.getCoordinates() : max;
151
+ this.moveTo({
152
+ left: (this.position.x == 'right')
153
+ ? (Math.min(rel.right, max.right) - margin.x)
154
+ : (Math.max(rel.left, max.left) + margin.x),
155
+ top: (this.position.y == 'bottom')
156
+ ? (Math.min(rel.bottom, max.bottom) - margin.y)
157
+ : (Math.max(rel.top, max.top) + margin.y)
158
+ });
159
+ }
160
+
161
+ });
162
+
163
+ window.addEvent('domready', function(){
164
+ this.growl = new Roar();
165
+ });
166
+ })());
admin/widgets/imagepicker/css/imagepicker.css ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .group-colorchooser .group-label, .group-selectbox .group-label {margin:0 10px 0 0;width:55px;}
2
+ .bg-button {background: url(../images/button.png) 0 0 no-repeat;height:32px;font-size: 14px;line-height:32px;text-shadow: 1px 1px 1px #fff;cursor: pointer;display:block;float:left;text-decoration:none;outline:0;}
3
+ .bg-button-right {background: url(../images/button.png) 100% -64px no-repeat;height:32px;margin-left:9px;display:block;float:left;padding-right: 9px;}
4
+ a.bg-button span {color: #21759B;}
5
+ a.bg-button:hover {background-position: 0 -32px;text-decoration:none;}
6
+ a.bg-button:hover .bg-button-right {background-position: 100% -96px;}
7
+ .backgroundpicker-img {float: left;margin-right: 10px;padding:2px;border: 2px solid #ddd;}
8
+ .backgroundpicker .bg-button {margin-top:0;}
9
+ .bg-button-clear {margin-left: 10px;}
10
+ .backgroundpicker-infos {position: absolute; left: 70px; top: 40px;color:#666;font-size:13px;}
11
+ .background-enabled span.chain-label, .background-image span.chain-label {margin-bottom: 10px;}
12
+ .mediadropdown {float: left;margin: 4px 0 0 10px;}
13
+ .mediadropdown .wrapper {margin:0!important;padding:0;min-height:auto;}
admin/widgets/imagepicker/images/button.png ADDED
Binary file
admin/widgets/imagepicker/images/no-image.png ADDED
Binary file
admin/widgets/images/g4-logo-small.png ADDED
Binary file
admin/widgets/images/gantry-master.png ADDED
Binary file
admin/widgets/images/gantry-small.png CHANGED
Binary file
admin/widgets/images/graphic-level.png CHANGED
Binary file
admin/widgets/images/slider.png ADDED
Binary file
admin/widgets/images/spinner.gif CHANGED
Binary file
admin/widgets/images/textinput.png CHANGED
Binary file
admin/widgets/images/tips-pin.png ADDED
Binary file
admin/widgets/images/toggle.png ADDED
Binary file
admin/widgets/moofx.js ADDED
@@ -0,0 +1,1584 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ ---
3
+ provides: moofx
4
+ version: 3.1.0
5
+ description: A CSS3-enabled javascript animation library
6
+ homepage: http://moofx.it
7
+ author: Valerio Proietti <@kamicane> (http://mad4milk.net)
8
+ license: MIT (http://mootools.net/license.txt)
9
+ includes: cubic-bezier by Arian Stolwijk (https://github.com/arian/cubic-bezier)
10
+ ...
11
+ */
12
+
13
+ (function(modules) {
14
+ var cache = {}, require = function(id) {
15
+ var module = cache[id];
16
+ if (!module) {
17
+ module = cache[id] = {};
18
+ var exports = module.exports = {};
19
+ modules[id].call(exports, require, module, exports, window);
20
+ }
21
+ return module.exports;
22
+ };
23
+ window["moofx"] = require("0");
24
+ })({
25
+ "0": function(require, module, exports, global) {
26
+ /* .- 3
27
+ .-.-..-..-.-|-._.
28
+ ' ' '`-'`-' ' ' '
29
+ */
30
+ "use strict";
31
+
32
+ // color and timer
33
+ var color = require("1"), frame = require("2");
34
+
35
+ // if we're in a browser we need ./browser, otherwise ./fx
36
+ var moofx = typeof document !== "undefined" ? require("7") : require("b");
37
+
38
+ moofx.requestFrame = function(callback) {
39
+ frame.request(callback);
40
+ return this;
41
+ };
42
+
43
+ moofx.cancelFrame = function(callback) {
44
+ frame.cancel(callback);
45
+ return this;
46
+ };
47
+
48
+ moofx.color = color;
49
+
50
+ // and export moofx
51
+ module.exports = moofx;
52
+ },
53
+ "1": function(require, module, exports, global) {
54
+ /*
55
+ color
56
+ */
57
+ "use strict";
58
+
59
+ var colors = {
60
+ maroon: "#800000",
61
+ red: "#ff0000",
62
+ orange: "#ffA500",
63
+ yellow: "#ffff00",
64
+ olive: "#808000",
65
+ purple: "#800080",
66
+ fuchsia: "#ff00ff",
67
+ white: "#ffffff",
68
+ lime: "#00ff00",
69
+ green: "#008000",
70
+ navy: "#000080",
71
+ blue: "#0000ff",
72
+ aqua: "#00ffff",
73
+ teal: "#008080",
74
+ black: "#000000",
75
+ silver: "#c0c0c0",
76
+ gray: "#808080",
77
+ transparent: "#0000"
78
+ };
79
+
80
+ var RGBtoRGB = function(r, g, b, a) {
81
+ if (a == null || a === "") a = 1;
82
+ r = parseFloat(r);
83
+ g = parseFloat(g);
84
+ b = parseFloat(b);
85
+ a = parseFloat(a);
86
+ if (!(r <= 255 && r >= 0 && g <= 255 && g >= 0 && b <= 255 && b >= 0 && a <= 1 && a >= 0)) return null;
87
+ return [ Math.round(r), Math.round(g), Math.round(b), a ];
88
+ };
89
+
90
+ var HEXtoRGB = function(hex) {
91
+ if (hex.length === 3) hex += "f";
92
+ if (hex.length === 4) {
93
+ var h0 = hex.charAt(0), h1 = hex.charAt(1), h2 = hex.charAt(2), h3 = hex.charAt(3);
94
+ hex = h0 + h0 + h1 + h1 + h2 + h2 + h3 + h3;
95
+ }
96
+ if (hex.length === 6) hex += "ff";
97
+ var rgb = [];
98
+ for (var i = 0, l = hex.length; i < l; i += 2) rgb.push(parseInt(hex.substr(i, 2), 16) / (i === 6 ? 255 : 1));
99
+ return rgb;
100
+ };
101
+
102
+ // HSL to RGB conversion from:
103
+ // http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript
104
+ // thank you!
105
+ var HUEtoRGB = function(p, q, t) {
106
+ if (t < 0) t += 1;
107
+ if (t > 1) t -= 1;
108
+ if (t < 1 / 6) return p + (q - p) * 6 * t;
109
+ if (t < 1 / 2) return q;
110
+ if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
111
+ return p;
112
+ };
113
+
114
+ var HSLtoRGB = function(h, s, l, a) {
115
+ var r, b, g;
116
+ if (a == null || a === "") a = 1;
117
+ h = parseFloat(h) / 360;
118
+ s = parseFloat(s) / 100;
119
+ l = parseFloat(l) / 100;
120
+ a = parseFloat(a) / 1;
121
+ if (h > 1 || h < 0 || s > 1 || s < 0 || l > 1 || l < 0 || a > 1 || a < 0) return null;
122
+ if (s === 0) {
123
+ r = b = g = l;
124
+ } else {
125
+ var q = l < .5 ? l * (1 + s) : l + s - l * s;
126
+ var p = 2 * l - q;
127
+ r = HUEtoRGB(p, q, h + 1 / 3);
128
+ g = HUEtoRGB(p, q, h);
129
+ b = HUEtoRGB(p, q, h - 1 / 3);
130
+ }
131
+ return [ r * 255, g * 255, b * 255, a ];
132
+ };
133
+
134
+ var keys = [];
135
+
136
+ for (var c in colors) keys.push(c);
137
+
138
+ var shex = "(?:#([a-f0-9]{3,8}))", sval = "\\s*([.\\d%]+)\\s*", sop = "(?:,\\s*([.\\d]+)\\s*)?", slist = "\\(" + [ sval, sval, sval ] + sop + "\\)", srgb = "(?:rgb)a?", shsl = "(?:hsl)a?", skeys = "(" + keys.join("|") + ")";
139
+
140
+ var xhex = RegExp(shex, "i"), xrgb = RegExp(srgb + slist, "i"), xhsl = RegExp(shsl + slist, "i");
141
+
142
+ var color = function(input, array) {
143
+ if (input == null) return null;
144
+ input = (input + "").replace(/\s+/, "");
145
+ var match = colors[input];
146
+ if (match) {
147
+ return color(match, array);
148
+ } else if (match = input.match(xhex)) {
149
+ input = HEXtoRGB(match[1]);
150
+ } else if (match = input.match(xrgb)) {
151
+ input = match.slice(1);
152
+ } else if (match = input.match(xhsl)) {
153
+ input = HSLtoRGB.apply(null, match.slice(1));
154
+ } else return null;
155
+ if (!(input && (input = RGBtoRGB.apply(null, input)))) return null;
156
+ if (array) return input;
157
+ if (input[3] === 1) input.splice(3, 1);
158
+ return "rgb" + (input.length === 4 ? "a" : "") + "(" + input + ")";
159
+ };
160
+
161
+ color.x = RegExp([ skeys, shex, srgb + slist, shsl + slist ].join("|"), "gi");
162
+
163
+ module.exports = color;
164
+ },
165
+ "2": function(require, module, exports, global) {
166
+ /*
167
+ requestFrame / cancelFrame
168
+ */
169
+ "use strict";
170
+
171
+ var array = require("3");
172
+
173
+ var requestFrame = global.requestAnimationFrame || global.webkitRequestAnimationFrame || global.mozRequestAnimationFrame || global.oRequestAnimationFrame || global.msRequestAnimationFrame || function(callback) {
174
+ return setTimeout(callback, 1e3 / 60);
175
+ };
176
+
177
+ var callbacks = [];
178
+
179
+ var iterator = function(time) {
180
+ var split = callbacks.splice(0, callbacks.length);
181
+ for (var i = 0, l = split.length; i < l; i++) split[i](time || (time = +new Date()));
182
+ };
183
+
184
+ var cancel = function(callback) {
185
+ var io = array.indexOf(callbacks, callback);
186
+ if (io > -1) callbacks.splice(io, 1);
187
+ };
188
+
189
+ var request = function(callback) {
190
+ var i = callbacks.push(callback);
191
+ if (i === 1) requestFrame(iterator);
192
+ return function() {
193
+ cancel(callback);
194
+ };
195
+ };
196
+
197
+ exports.request = request;
198
+
199
+ exports.cancel = cancel;
200
+ },
201
+ "3": function(require, module, exports, global) {
202
+ /*
203
+ array
204
+ - array es5 shell
205
+ */
206
+ "use strict";
207
+
208
+ var array = require("4")["array"];
209
+
210
+ var names = ("pop,push,reverse,shift,sort,splice,unshift,concat,join,slice,toString,indexOf,lastIndexOf,forEach,every,some" + ",filter,map,reduce,reduceRight").split(",");
211
+
212
+ for (var methods = {}, i = 0, name, method; name = names[i++]; ) if (method = Array.prototype[name]) methods[name] = method;
213
+
214
+ if (!methods.filter) methods.filter = function(fn, context) {
215
+ var results = [];
216
+ for (var i = 0, l = this.length >>> 0; i < l; i++) if (i in this) {
217
+ var value = this[i];
218
+ if (fn.call(context, value, i, this)) results.push(value);
219
+ }
220
+ return results;
221
+ };
222
+
223
+ if (!methods.indexOf) methods.indexOf = function(item, from) {
224
+ for (var l = this.length >>> 0, i = from < 0 ? Math.max(0, l + from) : from || 0; i < l; i++) {
225
+ if (i in this && this[i] === item) return i;
226
+ }
227
+ return -1;
228
+ };
229
+
230
+ if (!methods.map) methods.map = function(fn, context) {
231
+ var length = this.length >>> 0, results = Array(length);
232
+ for (var i = 0, l = length; i < l; i++) {
233
+ if (i in this) results[i] = fn.call(context, this[i], i, this);
234
+ }
235
+ return results;
236
+ };
237
+
238
+ if (!methods.every) methods.every = function(fn, context) {
239
+ for (var i = 0, l = this.length >>> 0; i < l; i++) {
240
+ if (i in this && !fn.call(context, this[i], i, this)) return false;
241
+ }
242
+ return true;
243
+ };
244
+
245
+ if (!methods.some) methods.some = function(fn, context) {
246
+ for (var i = 0, l = this.length >>> 0; i < l; i++) {
247
+ if (i in this && fn.call(context, this[i], i, this)) return true;
248
+ }
249
+ return false;
250
+ };
251
+
252
+ if (!methods.forEach) methods.forEach = function(fn, context) {
253
+ for (var i = 0, l = this.length >>> 0; i < l; i++) {
254
+ if (i in this) fn.call(context, this[i], i, this);
255
+ }
256
+ };
257
+
258
+ var toString = Object.prototype.toString;
259
+
260
+ array.isArray = Array.isArray || function(self) {
261
+ return toString.call(self) === "[object Array]";
262
+ };
263
+
264
+ module.exports = array.implement(methods);
265
+ },
266
+ "4": function(require, module, exports, global) {
267
+ /*
268
+ shell
269
+ */
270
+ "use strict";
271
+
272
+ var prime = require("5"), type = require("6");
273
+
274
+ var slice = Array.prototype.slice;
275
+
276
+ var ghost = prime({
277
+ constructor: function ghost(self) {
278
+ this.valueOf = function() {
279
+ return self;
280
+ };
281
+ this.toString = function() {
282
+ return self + "";
283
+ };
284
+ this.is = function(object) {
285
+ return self === object;
286
+ };
287
+ }
288
+ });
289
+
290
+ var shell = function(self) {
291
+ if (self == null || self instanceof ghost) return self;
292
+ var g = shell[type(self)];
293
+ return g ? new g(self) : self;
294
+ };
295
+
296
+ var register = function() {
297
+ var g = prime({
298
+ inherits: ghost
299
+ });
300
+ return prime({
301
+ constructor: function(self) {
302
+ return new g(self);
303
+ },
304
+ define: function(key, descriptor) {
305
+ var method = descriptor.value;
306
+ this[key] = function(self) {
307
+ return arguments.length > 1 ? method.apply(self, slice.call(arguments, 1)) : method.call(self);
308
+ };
309
+ g.prototype[key] = function() {
310
+ return shell(method.apply(this.valueOf(), arguments));
311
+ };
312
+ prime.define(this.prototype, key, descriptor);
313
+ return this;
314
+ }
315
+ });
316
+ };
317
+
318
+ for (var types = "string,number,array,object,date,function,regexp".split(","), i = types.length; i--; ) shell[types[i]] = register();
319
+
320
+ module.exports = shell;
321
+ },
322
+ "5": function(require, module, exports, global) {
323
+ /*
324
+ prime
325
+ - prototypal inheritance
326
+ */
327
+ "use strict";
328
+
329
+ var has = function(self, key) {
330
+ return Object.hasOwnProperty.call(self, key);
331
+ };
332
+
333
+ var each = function(object, method, context) {
334
+ for (var key in object) if (method.call(context, object[key], key, object) === false) break;
335
+ return object;
336
+ };
337
+
338
+ if (!{
339
+ valueOf: 0
340
+ }.propertyIsEnumerable("valueOf")) {
341
+ // fix for stupid IE enumeration bug
342
+ var buggy = "constructor,toString,valueOf,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString".split(",");
343
+ var proto = Object.prototype;
344
+ each = function(object, method, context) {
345
+ for (var key in object) if (method.call(context, object[key], key, object) === false) return object;
346
+ for (var i = 0; key = buggy[i]; i++) {
347
+ var value = object[key];
348
+ if ((value !== proto[key] || has(object, key)) && method.call(context, value, key, object) === false) break;
349
+ }
350
+ return object;
351
+ };
352
+ }
353
+
354
+ var create = Object.create || function(self) {
355
+ var constructor = function() {};
356
+ constructor.prototype = self;
357
+ return new constructor();
358
+ };
359
+
360
+ var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
361
+
362
+ var define = Object.defineProperty;
363
+
364
+ try {
365
+ var obj = {
366
+ a: 1
367
+ };
368
+ getOwnPropertyDescriptor(obj, "a");
369
+ define(obj, "a", {
370
+ value: 2
371
+ });
372
+ } catch (e) {
373
+ getOwnPropertyDescriptor = function(object, key) {
374
+ return {
375
+ value: object[key]
376
+ };
377
+ };
378
+ define = function(object, key, descriptor) {
379
+ object[key] = descriptor.value;
380
+ return object;
381
+ };
382
+ }
383
+
384
+ var implement = function(proto) {
385
+ each(proto, function(value, key) {
386
+ if (key !== "constructor" && key !== "define" && key !== "inherits") this.define(key, getOwnPropertyDescriptor(proto, key) || {
387
+ writable: true,
388
+ enumerable: true,
389
+ configurable: true,
390
+ value: value
391
+ });
392
+ }, this);
393
+ return this;
394
+ };
395
+
396
+ var prime = function(proto) {
397
+ var superprime = proto.inherits;
398
+ // if our nice proto object has no own constructor property
399
+ // then we proceed using a ghosting constructor that all it does is
400
+ // call the parent's constructor if it has a superprime, else an empty constructor
401
+ // proto.constructor becomes the effective constructor
402
+ var constructor = has(proto, "constructor") ? proto.constructor : superprime ? function() {
403
+ return superprime.apply(this, arguments);
404
+ } : function() {};
405
+ if (superprime) {
406
+ var superproto = superprime.prototype;
407
+ // inherit from superprime
408
+ var cproto = constructor.prototype = create(superproto);
409
+ // setting constructor.parent to superprime.prototype
410
+ // because it's the shortest possible absolute reference
411
+ constructor.parent = superproto;
412
+ cproto.constructor = constructor;
413
+ }
414
+ // inherit (kindof inherit) define
415
+ constructor.define = proto.define || superprime && superprime.define || function(key, descriptor) {
416
+ define(this.prototype, key, descriptor);
417
+ return this;
418
+ };
419
+ // copy implement (this should never change)
420
+ constructor.implement = implement;
421
+ // finally implement proto and return constructor
422
+ return constructor.implement(proto);
423
+ };
424
+
425
+ prime.has = has;
426
+
427
+ prime.each = each;
428
+
429
+ prime.create = create;
430
+
431
+ prime.define = define;
432
+
433
+ module.exports = prime;
434
+ },
435
+ "6": function(require, module, exports, global) {
436
+ /*
437
+ type
438
+ */
439
+ "use strict";
440
+
441
+ var toString = Object.prototype.toString, types = /number|object|array|string|function|date|regexp|boolean/;
442
+
443
+ var type = function(object) {
444
+ if (object == null) return "null";
445
+ var string = toString.call(object).slice(8, -1).toLowerCase();
446
+ if (string === "number" && isNaN(object)) return "null";
447
+ if (types.test(string)) return string;
448
+ return "object";
449
+ };
450
+
451
+ module.exports = type;
452
+ },
453
+ "7": function(require, module, exports, global) {
454
+ /*
455
+ MooFx
456
+ */
457
+ "use strict";
458
+
459
+ // requires
460
+ var color = require("1"), frame = require("2");
461
+
462
+ var cancelFrame = frame.cancel, requestFrame = frame.request;
463
+
464
+ var prime = require("5"), array = require("3"), string = require("8");
465
+
466
+ var camelize = string.camelize, clean = string.clean, capitalize = string.capitalize;
467
+
468
+ var map = array.map, forEach = array.forEach, indexOf = array.indexOf;
469
+
470
+ var elements = require("a");
471
+
472
+ var fx = require("b");
473
+
474
+ // util
475
+ var hyphenated = {};
476
+
477
+ var hyphenate = function(self) {
478
+ return hyphenated[self] || (hyphenated[self] = string.hyphenate(self));
479
+ };
480
+
481
+ var round = function(n) {
482
+ return Math.round(n * 1e3) / 1e3;
483
+ };
484
+
485
+ // compute > node > property
486
+ var compute = global.getComputedStyle ? function(node) {
487
+ var cts = getComputedStyle(node);
488
+ return function(property) {
489
+ return cts ? cts.getPropertyValue(hyphenate(property)) : "";
490
+ };
491
+ } : /*(css3)?*/ function(node) {
492
+ var cts = node.currentStyle;
493
+ return function(property) {
494
+ return cts ? cts[camelize(property)] : "";
495
+ };
496
+ };
497
+
498
+ /*:null*/
499
+ // pixel ratio retriever
500
+ var test = document.createElement("div");
501
+
502
+ var cssText = "border:none;margin:none;padding:none;visibility:hidden;position:absolute;height:0;";
503
+
504
+ // returns the amount of pixels that takes to make one of the unit
505
+ var pixelRatio = function(element, u) {
506
+ var parent = element.parentNode, ratio = 1;
507
+ if (parent) {
508
+ test.style.cssText = cssText + ("width:100" + u + ";");
509
+ parent.appendChild(test);
510
+ ratio = test.offsetWidth / 100;
511
+ parent.removeChild(test);
512
+ }
513
+ return ratio;
514
+ };
515
+
516
+ // mirror 4 values
517
+ var mirror4 = function(values) {
518
+ var length = values.length;
519
+ if (length === 1) values.push(values[0], values[0], values[0]); else if (length === 2) values.push(values[0], values[1]); else if (length === 3) values.push(values[1]);
520
+ return values;
521
+ };
522
+
523
+ // regular expressions strings
524
+ var sLength = "([-.\\d]+)(%|cm|mm|in|px|pt|pc|em|ex|ch|rem|vw|vh|vm)", sLengthNum = sLength + "?", sBorderStyle = "none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset|inherit";
525
+
526
+ // regular expressions
527
+ var rgLength = RegExp(sLength, "g"), rLengthNum = RegExp(sLengthNum), rgLengthNum = RegExp(sLengthNum, "g"), rBorderStyle = RegExp(sBorderStyle);
528
+
529
+ // normalize > css
530
+ var parseString = function(value) {
531
+ return value == null ? "" : value + "";
532
+ };
533
+
534
+ var parseOpacity = function(value, normalize) {
535
+ if (value == null || value === "") return normalize ? "1" : "";
536
+ return isFinite(value = +value) ? value < 0 ? "0" : value + "" : "1";
537
+ };
538
+
539
+ try {
540
+ test.style.color = "rgba(0,0,0,0.5)";
541
+ } catch (e) {}
542
+
543
+ var rgba = /^rgba/.test(test.style.color);
544
+
545
+ var parseColor = function(value, normalize) {
546
+ var black = "rgba(0,0,0,1)", c;
547
+ if (!value || !(c = color(value, true))) return normalize ? black : "";
548
+ if (normalize) return "rgba(" + c + ")";
549
+ var alpha = c[3];
550
+ if (alpha === 0) return "transparent";
551
+ return !rgba || alpha === 1 ? "rgb(" + c.slice(0, 3) + ")" : "rgba(" + c + ")";
552
+ };
553
+
554
+ var parseLength = function(value, normalize) {
555
+ if (value == null || value === "") return normalize ? "0px" : "";
556
+ var match = string.match(value, rLengthNum);
557
+ return match ? match[1] + (match[2] || "px") : value;
558
+ };
559
+
560
+ var parseBorderStyle = function(value, normalize) {
561
+ if (value == null || value === "") return normalize ? "none" : "";
562
+ var match = value.match(rBorderStyle);
563
+ return match ? value : normalize ? "none" : "";
564
+ };
565
+
566
+ var parseBorder = function(value, normalize) {
567
+ var normalized = "0px none rgba(0,0,0,1)";
568
+ if (value == null || value === "") return normalize ? normalized : "";
569
+ if (value === 0 || value === "none") return normalize ? normalized : value + "";
570
+ var c;
571
+ value = value.replace(color.x, function(match) {
572
+ c = match;
573
+ return "";
574
+ });
575
+ var s = value.match(rBorderStyle), l = value.match(rgLengthNum);
576
+ return clean([ parseLength(l ? l[0] : "", normalize), parseBorderStyle(s ? s[0] : "", normalize), parseColor(c, normalize) ].join(" "));
577
+ };
578
+
579
+ var parseShort4 = function(value, normalize) {
580
+ if (value == null || value === "") return normalize ? "0px 0px 0px 0px" : "";
581
+ return clean(mirror4(map(clean(value).split(" "), function(v) {
582
+ return parseLength(v, normalize);
583
+ })).join(" "));
584
+ };
585
+
586
+ var parseShadow = function(value, normalize, len) {
587
+ var transparent = "rgba(0,0,0,0)", normalized = len === 3 ? transparent + " 0px 0px 0px" : transparent + " 0px 0px 0px 0px";
588
+ if (value == null || value === "") return normalize ? normalized : "";
589
+ if (value === "none") return normalize ? normalized : value;
590
+ var colors = [], value = clean(value).replace(color.x, function(match) {
591
+ colors.push(match);
592
+ return "";
593
+ });
594
+ return map(value.split(","), function(shadow, i) {
595
+ var c = parseColor(colors[i], normalize), inset = /inset/.test(shadow), lengths = shadow.match(rgLengthNum) || [ "0px" ];
596
+ lengths = map(lengths, function(m) {
597
+ return parseLength(m, normalize);
598
+ });
599
+ while (lengths.length < len) lengths.push("0px");
600
+ var ret = inset ? [ "inset", c ] : [ c ];
601
+ return ret.concat(lengths).join(" ");
602
+ }).join(", ");
603
+ };
604
+
605
+ var parse = function(value, normalize) {
606
+ if (value == null || value === "") return "";
607
+ // cant normalize "" || null
608
+ return value.replace(color.x, function(match) {
609
+ return parseColor(match, normalize);
610
+ }).replace(rgLength, function(match) {
611
+ return parseLength(match, normalize);
612
+ });
613
+ };
614
+
615
+ // get && set
616
+ var getters = {}, setters = {}, parsers = {}, aliases = {};
617
+
618
+ var getter = function(key) {
619
+ return getters[key] || (getters[key] = function() {
620
+ var alias = aliases[key] || key, parser = parsers[key] || parse;
621
+ return function() {
622
+ return parser(compute(this)(alias), true);
623
+ };
624
+ }());
625
+ };
626
+
627
+ var setter = function(key) {
628
+ return setters[key] || (setters[key] = function() {
629
+ var alias = aliases[key] || key, parser = parsers[key] || parse;
630
+ return function(value) {
631
+ this.style[alias] = parser(value, false);
632
+ };
633
+ }());
634
+ };
635
+
636
+ // parsers
637
+ var trbl = [ "Top", "Right", "Bottom", "Left" ], tlbl = [ "TopLeft", "TopRight", "BottomRight", "BottomLeft" ];
638
+
639
+ forEach(trbl, function(d) {
640
+ var bd = "border" + d;
641
+ forEach([ "margin" + d, "padding" + d, bd + "Width", d.toLowerCase() ], function(n) {
642
+ parsers[n] = parseLength;
643
+ });
644
+ parsers[bd + "Color"] = parseColor;
645
+ parsers[bd + "Style"] = parseBorderStyle;
646
+ // borderDIR
647
+ parsers[bd] = parseBorder;
648
+ getters[bd] = function() {
649
+ return [ getter(bd + "Width").call(this), getter(bd + "Style").call(this), getter(bd + "Color").call(this) ].join(" ");
650
+ };
651
+ });
652
+
653
+ forEach(tlbl, function(d) {
654
+ parsers["border" + d + "Radius"] = parseLength;
655
+ });
656
+
657
+ parsers.color = parsers.backgroundColor = parseColor;
658
+
659
+ parsers.width = parsers.height = parsers.minWidth = parsers.minHeight = parsers.maxWidth = parsers.maxHeight = parsers.fontSize = parsers.backgroundSize = parseLength;
660
+
661
+ // margin + padding
662
+ forEach([ "margin", "padding" ], function(name) {
663
+ parsers[name] = parseShort4;
664
+ getters[name] = function() {
665
+ return map(trbl, function(d) {
666
+ return getter(name + d).call(this);
667
+ }, this).join(" ");
668
+ };
669
+ });
670
+
671
+ // borders
672
+ // borderDIRWidth, borderDIRStyle, borderDIRColor
673
+ parsers.borderWidth = parseShort4;
674
+
675
+ parsers.borderStyle = function(value, normalize) {
676
+ if (value == null || value === "") return normalize ? mirror4([ "none" ]).join(" ") : "";
677
+ value = clean(value).split(" ");
678
+ return clean(mirror4(map(value, function(v) {
679
+ parseBorderStyle(v, normalize);
680
+ })).join(" "));
681
+ };
682
+
683
+ parsers.borderColor = function(value, normalize) {
684
+ if (!value || !(value = string.match(value, color.x))) return normalize ? mirror4([ "rgba(0,0,0,1)" ]).join(" ") : "";
685
+ return clean(mirror4(map(value, function(v) {
686
+ return parseColor(v, normalize);
687
+ })).join(" "));
688
+ };
689
+
690
+ forEach([ "Width", "Style", "Color" ], function(name) {
691
+ getters["border" + name] = function() {
692
+ return map(trbl, function(d) {
693
+ return getter("border" + d + name).call(this);
694
+ }, this).join(" ");
695
+ };
696
+ });
697
+
698
+ // borderRadius
699
+ parsers.borderRadius = parseShort4;
700
+
701
+ getters.borderRadius = function() {
702
+ return map(tlbl, function(d) {
703
+ return getter("border" + d + "Radius").call(this);
704
+ }, this).join(" ");
705
+ };
706
+
707
+ // border
708
+ parsers.border = parseBorder;
709
+
710
+ getters.border = function() {
711
+ var pvalue;
712
+ for (var i = 0; i < trbl.length; i++) {
713
+ var value = getter("border" + trbl[i]).call(this);
714
+ if (pvalue && value !== pvalue) return null;
715
+ pvalue = value;
716
+ }
717
+ return pvalue;
718
+ };
719
+
720
+ // zIndex
721
+ parsers.zIndex = parseString;
722
+
723
+ // opacity
724
+ parsers.opacity = parseOpacity;
725
+
726
+ /*(css3)?*/
727
+ var filterName = test.style.MsFilter != null && "MsFilter" || test.style.filter != null && "filter";
728
+
729
+ if (filterName && test.style.opacity == null) {
730
+ var matchOp = /alpha\(opacity=([\d.]+)\)/i;
731
+ setters.opacity = function(value) {
732
+ value = (value = parseOpacity(value)) === "1" ? "" : "alpha(opacity=" + Math.round(value * 100) + ")";
733
+ var filter = compute(this)(filterName);
734
+ return this.style[filterName] = matchOp.test(filter) ? filter.replace(matchOp, value) : filter + " " + value;
735
+ };
736
+ getters.opacity = function() {
737
+ var match = compute(this)(filterName).match(matchOp);
738
+ return (!match ? 1 : match[1] / 100) + "";
739
+ };
740
+ }
741
+
742
+ /*:*/
743
+ var parseBoxShadow = parsers.boxShadow = function(value, normalize) {
744
+ return parseShadow(value, normalize, 4);
745
+ };
746
+
747
+ var parseTextShadow = parsers.textShadow = function(value, normalize) {
748
+ return parseShadow(value, normalize, 3);
749
+ };
750
+
751
+ // Aliases
752
+ forEach([ "Webkit", "Moz", "ms", "O", null ], function(prefix) {
753
+ forEach([ "transition", "transform", "transformOrigin", "transformStyle", "perspective", "perspectiveOrigin", "backfaceVisibility" ], function(style) {
754
+ var cc = prefix ? prefix + capitalize(style) : style;
755
+ if (prefix === "ms") hyphenated[cc] = "-ms-" + hyphenate(style);
756
+ if (test.style[cc] != null) aliases[style] = cc;
757
+ });
758
+ });
759
+
760
+ var transitionName = aliases.transition, transformName = aliases.transform;
761
+
762
+ // manually disable css3 transitions in Opera, because they do not work properly.
763
+ if (transitionName === "OTransition") transitionName = null;
764
+
765
+ // this takes care of matrix decomposition on browsers that support only 2d transforms but no CSS3 transitions.
766
+ // basically, IE9 (and Opera as well, since we disabled CSS3 transitions manually)
767
+ var parseTransform2d, Transform2d;
768
+
769
+ /*(css3)?*/
770
+ if (!transitionName && transformName) (function() {
771
+ var unmatrix = require("d");
772
+ var v = "\\s*([-\\d\\w.]+)\\s*";
773
+ var rMatrix = RegExp("matrix\\(" + [ v, v, v, v, v, v ] + "\\)");
774
+ var decomposeMatrix = function(matrix) {
775
+ var d = unmatrix.apply(null, matrix.match(rMatrix).slice(1)) || [ [ 0, 0 ], 0, 0, [ 0, 0 ] ];
776
+ return [ "translate(" + map(d[0], function(v) {
777
+ return round(v) + "px";
778
+ }) + ")", "rotate(" + round(d[1] * 180 / Math.PI) + "deg)", "skewX(" + round(d[2] * 180 / Math.PI) + "deg)", "scale(" + map(d[3], round) + ")" ].join(" ");
779
+ };
780
+ var def0px = function(value) {
781
+ return value || "0px";
782
+ }, def1 = function(value) {
783
+ return value || "1";
784
+ }, def0deg = function(value) {
785
+ return value || "0deg";
786
+ };
787
+ var transforms = {
788
+ translate: function(value) {
789
+ if (!value) value = "0px,0px";
790
+ var values = value.split(",");
791
+ if (!values[1]) values[1] = "0px";
792
+ return map(values, clean) + "";
793
+ },
794
+ translateX: def0px,
795
+ translateY: def0px,
796
+ scale: function(value) {
797
+ if (!value) value = "1,1";
798
+ var values = value.split(",");
799
+ if (!values[1]) values[1] = values[0];
800
+ return map(values, clean) + "";
801
+ },
802
+ scaleX: def1,
803
+ scaleY: def1,
804
+ rotate: def0deg,
805
+ skewX: def0deg,
806
+ skewY: def0deg
807
+ };
808
+ Transform2d = prime({
809
+ constructor: function(transform) {
810
+ var names = this.names = [];
811
+ var values = this.values = [];
812
+ transform.replace(/(\w+)\(([-.\d\s\w,]+)\)/g, function(match, name, value) {
813
+ names.push(name);
814
+ values.push(value);
815
+ });
816
+ },
817
+ identity: function() {
818
+ var functions = [];
819
+ forEach(this.names, function(name) {
820
+ var fn = transforms[name];
821
+ if (fn) functions.push(name + "(" + fn() + ")");
822
+ });
823
+ return functions.join(" ");
824
+ },
825
+ sameType: function(transformObject) {
826
+ return this.names.toString() === transformObject.names.toString();
827
+ },
828
+ // this is, basically, cheating.
829
+ // retrieving the matrix value from the dom, rather than calculating it
830
+ decompose: function() {
831
+ var transform = this.toString();
832
+ test.style.cssText = cssText + hyphenate(transformName) + ":" + transform + ";";
833
+ document.body.appendChild(test);
834
+ var m = compute(test)(transformName);
835
+ if (!m || m === "none") m = "matrix(1, 0, 0, 1, 0, 0)";
836
+ document.body.removeChild(test);
837
+ return decomposeMatrix(m);
838
+ }
839
+ });
840
+ Transform2d.prototype.toString = function(clean) {
841
+ var values = this.values, functions = [];
842
+ forEach(this.names, function(name, i) {
843
+ var fn = transforms[name];
844
+ if (!fn) return;
845
+ var value = fn(values[i]);
846
+ if (!clean || value !== fn()) functions.push(name + "(" + value + ")");
847
+ });
848
+ return functions.length ? functions.join(" ") : "none";
849
+ };
850
+ Transform2d.union = function(from, to) {
851
+ if (from === to) return;
852
+ // nothing to do
853
+ var fromMap, toMap;
854
+ if (from === "none") {
855
+ toMap = new Transform2d(to);
856
+ to = toMap.toString();
857
+ from = toMap.identity();
858
+ fromMap = new Transform2d(from);
859
+ } else if (to === "none") {
860
+ fromMap = new Transform2d(from);
861
+ from = fromMap.toString();
862
+ to = fromMap.identity();
863
+ toMap = new Transform2d(to);
864
+ } else {
865
+ fromMap = new Transform2d(from);
866
+ from = fromMap.toString();
867
+ toMap = new Transform2d(to);
868
+ to = toMap.toString();
869
+ }
870
+ if (from === to) return;
871
+ // nothing to do
872
+ if (!fromMap.sameType(toMap)) {
873
+ from = fromMap.decompose();
874
+ to = toMap.decompose();
875
+ }
876
+ if (from === to) return;
877
+ // nothing to do
878
+ return [ from, to ];
879
+ };
880
+ // this parser makes sure it never gets "matrix"
881
+ parseTransform2d = parsers.transform = function(transform) {
882
+ if (!transform || transform === "none") return "none";
883
+ return new Transform2d(rMatrix.test(transform) ? decomposeMatrix(transform) : transform).toString(true);
884
+ };
885
+ // this getter makes sure we read from the dom only the first time
886
+ // this way we save the actual transform and not "matrix"
887
+ // setting matrix() will use parseTransform2d as well, thus setting the decomposed matrix
888
+ getters.transform = function() {
889
+ var s = this.style;
890
+ return s[transformName] || (s[transformName] = parseTransform2d(compute(this)(transformName)));
891
+ };
892
+ })();
893
+
894
+ /*:*/
895
+ // tries to match from and to values
896
+ var prepare = function(node, property, to) {
897
+ var parser = parsers[property] || parse, from = getter(property).call(node), // "normalized" by the getter
898
+ to = parser(to, true);
899
+ // normalize parsed property
900
+ if (from === to) return;
901
+ if (parser === parseLength || parser === parseBorder || parser === parseShort4) {
902
+ var toAll = to.match(rgLength), i = 0;
903
+ // this should always match something
904
+ if (toAll) from = from.replace(rgLength, function(fromFull, fromValue, fromUnit) {
905
+ var toFull = toAll[i++], toMatched = toFull.match(rLengthNum), toUnit = toMatched[2];
906
+ if (fromUnit !== toUnit) {
907
+ var fromPixels = fromUnit === "px" ? fromValue : pixelRatio(node, fromUnit) * fromValue;
908
+ return round(fromPixels / pixelRatio(node, toUnit)) + toUnit;
909
+ }
910
+ return fromFull;
911
+ });
912
+ if (i > 0) setter(property).call(node, from);
913
+ } else if (parser === parseTransform2d) {
914
+ // IE9/Opera
915
+ return Transform2d.union(from, to);
916
+ }
917
+ /*:*/
918
+ return from !== to ? [ from, to ] : null;
919
+ };
920
+
921
+ // BrowserAnimation
922
+ var BrowserAnimation = prime({
923
+ inherits: fx,
924
+ constructor: function BrowserAnimation(node, property) {
925
+ var _getter = getter(property), _setter = setter(property);
926
+ this.get = function() {
927
+ return _getter.call(node);
928
+ };
929
+ this.set = function(value) {
930
+ return _setter.call(node, value);
931
+ };
932
+ BrowserAnimation.parent.constructor.call(this, this.set);
933
+ this.node = node;
934
+ this.property = property;
935
+ }
936
+ });
937
+
938
+ var JSAnimation;
939
+
940
+ /*(css3)?*/
941
+ JSAnimation = prime({
942
+ inherits: BrowserAnimation,
943
+ constructor: function JSAnimation() {
944
+ return JSAnimation.parent.constructor.apply(this, arguments);
945
+ },
946
+ start: function(to) {
947
+ this.stop();
948
+ if (this.duration === 0) {
949
+ this.cancel(to);
950
+ return this;
951
+ }
952
+ var fromTo = prepare(this.node, this.property, to);
953
+ if (!fromTo) {
954
+ this.cancel(to);
955
+ return this;
956
+ }
957
+ JSAnimation.parent.start.apply(this, fromTo);
958
+ if (!this.cancelStep) return this;
959
+ // the animation would have started but we need additional checks
960
+ var parser = parsers[this.property] || parse;
961
+ // complex interpolations JSAnimation can't handle
962
+ // even CSS3 animation gracefully fail with some of those edge cases
963
+ // other "simple" properties, such as `border` can have different templates
964
+ // because of string properties like "solid" and "dashed"
965
+ if ((parser === parseBoxShadow || parser === parseTextShadow || parser === parse) && this.templateFrom !== this.templateTo) {
966
+ this.cancelStep();
967
+ delete this.cancelStep;
968
+ this.cancel(to);
969
+ }
970
+ return this;
971
+ },
972
+ parseEquation: function(equation) {
973
+ if (typeof equation === "string") return JSAnimation.parent.parseEquation.call(this, equation);
974
+ }
975
+ });
976
+
977
+ /*:*/
978
+ // CSSAnimation
979
+ var remove3 = function(value, a, b, c) {
980
+ var index = indexOf(a, value);
981
+ if (index !== -1) {
982
+ a.splice(index, 1);
983
+ b.splice(index, 1);
984
+ c.splice(index, 1);
985
+ }
986
+ };
987
+
988
+ var CSSAnimation = prime({
989
+ inherits: BrowserAnimation,
990
+ constructor: function CSSAnimation(node, property) {
991
+ CSSAnimation.parent.constructor.call(this, node, property);
992
+ this.hproperty = hyphenate(aliases[property] || property);
993
+ var self = this;
994
+ this.bSetTransitionCSS = function(time) {
995
+ self.setTransitionCSS(time);
996
+ };
997
+ this.bSetStyleCSS = function(time) {
998
+ self.setStyleCSS(time);
999
+ };
1000
+ this.bComplete = function() {
1001
+ self.complete();
1002
+ };
1003
+ },
1004
+ start: function(to) {
1005
+ this.stop();
1006
+ if (this.duration === 0) {
1007
+ this.cancel(to);
1008
+ return this;
1009
+ }
1010
+ var fromTo = prepare(this.node, this.property, to);
1011
+ if (!fromTo) {
1012
+ this.cancel(to);
1013
+ return this;
1014
+ }
1015
+ this.to = fromTo[1];
1016
+ // setting transition styles immediately will make good browsers behave weirdly
1017
+ // because DOM changes are always deferred, so we requestFrame
1018
+ this.cancelSetTransitionCSS = requestFrame(this.bSetTransitionCSS);
1019
+ return this;
1020
+ },
1021
+ setTransitionCSS: function(time) {
1022
+ delete this.cancelSetTransitionCSS;
1023
+ this.resetCSS(true);
1024
+ // firefox flickers if we set css for transition as well as styles at the same time
1025
+ // so, other than deferring transition styles we defer actual styles as well on a requestFrame
1026
+ this.cancelSetStyleCSS = requestFrame(this.bSetStyleCSS);
1027
+ },
1028
+ setStyleCSS: function(time) {
1029
+ delete this.cancelSetStyleCSS;
1030
+ var duration = this.duration;
1031
+ // we use setTimeout instead of transitionEnd because some browsers (looking at you foxy)
1032
+ // incorrectly set event.propertyName, so we cannot check which animation we are canceling
1033
+ this.cancelComplete = setTimeout(this.bComplete, duration);
1034
+ this.endTime = time + duration;
1035
+ this.set(this.to);
1036
+ },
1037
+ complete: function() {
1038
+ delete this.cancelComplete;
1039
+ this.resetCSS();
1040
+ this.callback(this.endTime);
1041
+ },
1042
+ stop: function(hard) {
1043
+ if (this.cancelExit) {
1044
+ this.cancelExit();
1045
+ delete this.cancelExit;
1046
+ } else if (this.cancelSetTransitionCSS) {
1047
+ // if cancelSetTransitionCSS is set, means nothing is set yet
1048
+ this.cancelSetTransitionCSS();
1049
+ //so we cancel and we're good
1050
+ delete this.cancelSetTransitionCSS;
1051
+ } else if (this.cancelSetStyleCSS) {
1052
+ // if cancelSetStyleCSS is set, means transition css has been set, but no actual styles.
1053
+ this.cancelSetStyleCSS();
1054
+ delete this.cancelSetStyleCSS;
1055
+ // if its a hard stop (and not another start on top of the current animation)
1056
+ // we need to reset the transition CSS
1057
+ if (hard) this.resetCSS();
1058
+ } else if (this.cancelComplete) {
1059
+ // if cancelComplete is set, means style and transition css have been set, not yet completed.
1060
+ clearTimeout(this.cancelComplete);
1061
+ delete this.cancelComplete;
1062
+ // if its a hard stop (and not another start on top of the current animation)
1063
+ // we need to reset the transition CSS set the current animation styles
1064
+ if (hard) {
1065
+ this.resetCSS();
1066
+ this.set(this.get());
1067
+ }
1068
+ }
1069
+ return this;
1070
+ },
1071
+ resetCSS: function(inclusive) {
1072
+ var rules = compute(this.node), properties = (rules(transitionName + "Property").replace(/\s+/g, "") || "all").split(","), durations = (rules(transitionName + "Duration").replace(/\s+/g, "") || "0s").split(","), equations = (rules(transitionName + "TimingFunction").replace(/\s+/g, "") || "ease").match(/cubic-bezier\([\d-.,]+\)|([a-z-]+)/g);
1073
+ remove3("all", properties, durations, equations);
1074
+ remove3(this.hproperty, properties, durations, equations);
1075
+ if (inclusive) {
1076
+ properties.push(this.hproperty);
1077
+ durations.push(this.duration + "ms");
1078
+ equations.push("cubic-bezier(" + this.equation + ")");
1079
+ }
1080
+ var nodeStyle = this.node.style;
1081
+ nodeStyle[transitionName + "Property"] = properties;
1082
+ nodeStyle[transitionName + "Duration"] = durations;
1083
+ nodeStyle[transitionName + "TimingFunction"] = equations;
1084
+ },
1085
+ parseEquation: function(equation) {
1086
+ if (typeof equation === "string") return CSSAnimation.parent.parseEquation.call(this, equation, true);
1087
+ }
1088
+ });
1089
+
1090
+ // elements methods
1091
+ var BaseAnimation = transitionName ? CSSAnimation : JSAnimation;
1092
+
1093
+ var moofx = function(x, y) {
1094
+ return typeof x === "function" ? fx(x) : elements(x, y);
1095
+ };
1096
+
1097
+ elements.implement({
1098
+ // {properties}, options or
1099
+ // property, value options
1100
+ animate: function(A, B, C) {
1101
+ var styles = A, options = B;
1102
+ if (typeof A === "string") {
1103
+ styles = {};
1104
+ styles[A] = B;
1105
+ options = C;
1106
+ }
1107
+ if (options == null) options = {};
1108
+ var type = typeof options;
1109
+ options = type === "function" ? {
1110
+ callback: options
1111
+ } : type === "string" || type === "number" ? {
1112
+ duration: options
1113
+ } : options;
1114
+ var callback = options.callback || function() {}, completed = 0, length = 0;
1115
+ options.callback = function(t) {
1116
+ if (++completed === length) callback(t);
1117
+ };
1118
+ for (var property in styles) {
1119
+ var value = styles[property], property = camelize(property);
1120
+ this.forEach(function(node) {
1121
+ length++;
1122
+ var self = elements(node), anims = self._animations || (self._animations = {});
1123
+ var anim = anims[property] || (anims[property] = new BaseAnimation(node, property));
1124
+ anim.setOptions(options).start(value);
1125
+ });
1126
+ }
1127
+ return this;
1128
+ },
1129
+ // {properties} or
1130
+ // property, value
1131
+ style: function(A, B) {
1132
+ var styles = A;
1133
+ if (typeof A === "string") {
1134
+ styles = {};
1135
+ styles[A] = B;
1136
+ }
1137
+ for (var property in styles) {
1138
+ var value = styles[property], set = setter(property = camelize(property));
1139
+ this.forEach(function(node) {
1140
+ var self = elements(node), anims = self._animations, anim;
1141
+ if (anims && (anim = anims[property])) anim.stop(true);
1142
+ set.call(node, value);
1143
+ });
1144
+ }
1145
+ return this;
1146
+ },
1147
+ compute: function(property) {
1148
+ property = camelize(property);
1149
+ var node = this[0];
1150
+ // return default matrix for transform, instead of parsed (for consistency)
1151
+ if (property === "transform" && parseTransform2d) return compute(node)(transformName);
1152
+ var value = getter(property).call(node);
1153
+ // unit conversion to `px`
1154
+ return value != null ? value.replace(rgLength, function(match, value, unit) {
1155
+ return unit === "px" ? match : pixelRatio(node, unit) * value + "px";
1156
+ }) : "";
1157
+ }
1158
+ });
1159
+
1160
+ moofx.parse = function(property, value, normalize) {
1161
+ return (parsers[camelize(property)] || parse)(value, normalize);
1162
+ };
1163
+
1164
+ module.exports = moofx;
1165
+ },
1166
+ "8": function(require, module, exports, global) {
1167
+ /*
1168
+ string methods
1169
+ - string shell
1170
+ */
1171
+ "use strict";
1172
+
1173
+ var string = require("9");
1174
+
1175
+ string.implement({
1176
+ clean: function() {
1177
+ return string.trim((this + "").replace(/\s+/g, " "));
1178
+ },
1179
+ camelize: function() {
1180
+ return (this + "").replace(/-\D/g, function(match) {
1181
+ return match.charAt(1).toUpperCase();
1182
+ });
1183
+ },
1184
+ hyphenate: function() {
1185
+ return (this + "").replace(/[A-Z]/g, function(match) {
1186
+ return "-" + match.toLowerCase();
1187
+ });
1188
+ },
1189
+ capitalize: function() {
1190
+ return (this + "").replace(/\b[a-z]/g, function(match) {
1191
+ return match.toUpperCase();
1192
+ });
1193
+ },
1194
+ escape: function() {
1195
+ return (this + "").replace(/([-.*+?^${}()|[\]\/\\])/g, "\\$1");
1196
+ },
1197
+ number: function() {
1198
+ return parseFloat(this);
1199
+ }
1200
+ });
1201
+
1202
+ if (typeof JSON !== "undefined") string.implement({
1203
+ decode: function() {
1204
+ return JSON.parse(this);
1205
+ }
1206
+ });
1207
+
1208
+ module.exports = string;
1209
+ },
1210
+ "9": function(require, module, exports, global) {
1211
+ /*
1212
+ string
1213
+ - string es5 shell
1214
+ */
1215
+ "use strict";
1216
+
1217
+ var string = require("4")["string"];
1218
+
1219
+ var names = ("charAt,charCodeAt,concat,contains,endsWith,indexOf,lastIndexOf,localeCompare,match,replace,search,slice,split" + ",startsWith,substr,substring,toLocaleLowerCase,toLocaleUpperCase,toLowerCase,toString,toUpperCase,trim,valueOf").split(",");
1220
+
1221
+ for (var methods = {}, i = 0, name, method; name = names[i++]; ) if (method = String.prototype[name]) methods[name] = method;
1222
+
1223
+ if (!methods.trim) methods.trim = function() {
1224
+ return (this + "").replace(/^\s+|\s+$/g, "");
1225
+ };
1226
+
1227
+ module.exports = string.implement(methods);
1228
+ },
1229
+ a: function(require, module, exports, global) {
1230
+ /*
1231
+ elements
1232
+ */
1233
+ "use strict";
1234
+
1235
+ var prime = require("5"), array = require("3").prototype;
1236
+
1237
+ // uniqueID
1238
+ var uniqueIndex = 0;
1239
+
1240
+ var uniqueID = function(n) {
1241
+ return n === global ? "global" : n.uniqueNumber || (n.uniqueNumber = "n:" + (uniqueIndex++).toString(36));
1242
+ };
1243
+
1244
+ var instances = {};
1245
+
1246
+ // elements prime
1247
+ var $ = prime({
1248
+ constructor: function $(n, context) {
1249
+ if (n == null) return this && this.constructor === $ ? new elements() : null;
1250
+ var self = n;
1251
+ if (n.constructor !== elements) {
1252
+ self = new elements();
1253
+ var uid;
1254
+ if (typeof n === "string") {
1255
+ if (!self.search) return null;
1256
+ self[self.length++] = context || document;
1257
+ return self.search(n);
1258
+ }
1259
+ if (n.nodeType || n === global) {
1260
+ self[self.length++] = n;
1261
+ } else if (n.length) {
1262
+ // this could be an array, or any object with a length attribute,
1263
+ // including another instance of elements from another interface.
1264
+ var uniques = {};
1265
+ for (var i = 0, l = n.length; i < l; i++) {
1266
+ // perform elements flattening
1267
+ var nodes = $(n[i], context);
1268
+ if (nodes && nodes.length) for (var j = 0, k = nodes.length; j < k; j++) {
1269
+ var node = nodes[j];
1270
+ uid = uniqueID(node);
1271
+ if (!uniques[uid]) {
1272
+ self[self.length++] = node;
1273
+ uniques[uid] = true;
1274
+ }
1275
+ }
1276
+ }
1277
+ }
1278
+ }
1279
+ if (!self.length) return null;
1280
+ // when length is 1 always use the same elements instance
1281
+ if (self.length === 1) {
1282
+ uid = uniqueID(self[0]);
1283
+ return instances[uid] || (instances[uid] = self);
1284
+ }
1285
+ return self;
1286
+ }
1287
+ });
1288
+
1289
+ var elements = prime({
1290
+ inherits: $,
1291
+ constructor: function elements() {
1292
+ this.length = 0;
1293
+ },
1294
+ unlink: function() {
1295
+ return this.map(function(node, i) {
1296
+ delete instances[uniqueID(node)];
1297
+ return node;
1298
+ });
1299
+ },
1300
+ // straight es5 prototypes (or emulated methods)
1301
+ forEach: array.forEach,
1302
+ map: array.map,
1303
+ filter: array.filter,
1304
+ every: array.every,
1305
+ some: array.some
1306
+ });
1307
+
1308
+ module.exports = $;
1309
+ },
1310
+ b: function(require, module, exports, global) {
1311
+ /*
1312
+ fx
1313
+ */
1314
+ "use strict";
1315
+
1316
+ var prime = require("5"), requestFrame = require("2").request, bezier = require("c");
1317
+
1318
+ var map = require("3").map;
1319
+
1320
+ var sDuration = "([\\d.]+)(s|ms)?", sCubicBezier = "cubic-bezier\\(([-.\\d]+),([-.\\d]+),([-.\\d]+),([-.\\d]+)\\)";
1321
+
1322
+ var rDuration = RegExp(sDuration), rCubicBezier = RegExp(sCubicBezier), rgCubicBezier = RegExp(sCubicBezier, "g");
1323
+
1324
+ // equations collection
1325
+ var equations = {
1326
+ "default": "cubic-bezier(0.25, 0.1, 0.25, 1.0)",
1327
+ linear: "cubic-bezier(0, 0, 1, 1)",
1328
+ "ease-in": "cubic-bezier(0.42, 0, 1.0, 1.0)",
1329
+ "ease-out": "cubic-bezier(0, 0, 0.58, 1.0)",
1330
+ "ease-in-out": "cubic-bezier(0.42, 0, 0.58, 1.0)"
1331
+ };
1332
+
1333
+ equations.ease = equations["default"];
1334
+
1335
+ var compute = function(from, to, delta) {
1336
+ return (to - from) * delta + from;
1337
+ };
1338
+
1339
+ var divide = function(string) {
1340
+ var numbers = [];
1341
+ var template = (string + "").replace(/[-.\d]+/g, function(number) {
1342
+ numbers.push(+number);
1343
+ return "@";
1344
+ });
1345
+ return [ numbers, template ];
1346
+ };
1347
+
1348
+ var Fx = prime({
1349
+ constructor: function Fx(render, options) {
1350
+ // set options
1351
+ this.setOptions(options);
1352
+ // renderer
1353
+ this.render = render || function() {};
1354
+ // bound functions
1355
+ var self = this;
1356
+ this.bStep = function(t) {
1357
+ return self.step(t);
1358
+ };
1359
+ this.bExit = function(time) {
1360
+ self.exit(time);
1361
+ };
1362
+ },
1363
+ setOptions: function(options) {
1364
+ if (options == null) options = {};
1365
+ if (!(this.duration = this.parseDuration(options.duration || "500ms"))) throw new Error("invalid duration");
1366
+ if (!(this.equation = this.parseEquation(options.equation || "default"))) throw new Error("invalid equation");
1367
+ this.callback = options.callback || function() {};
1368
+ return this;
1369
+ },
1370
+ parseDuration: function(duration) {
1371
+ if (duration = (duration + "").match(rDuration)) {
1372
+ var time = +duration[1], unit = duration[2] || "ms";
1373
+ if (unit === "s") return time * 1e3;
1374
+ if (unit === "ms") return time;
1375
+ }
1376
+ },
1377
+ parseEquation: function(equation, array) {
1378
+ var type = typeof equation;
1379
+ if (type === "function") {
1380
+ // function
1381
+ return equation;
1382
+ } else if (type === "string") {
1383
+ // cubic-bezier string
1384
+ equation = equations[equation] || equation;
1385
+ var match = equation.replace(/\s+/g, "").match(rCubicBezier);
1386
+ if (match) {
1387
+ equation = map(match.slice(1), function(v) {
1388
+ return +v;
1389
+ });
1390
+ if (array) return equation;
1391
+ if (equation.toString() === "0,0,1,1") return function(x) {
1392
+ return x;
1393
+ };
1394
+ type = "object";
1395
+ }
1396
+ }
1397
+ if (type === "object") {
1398
+ // array
1399
+ return bezier(equation[0], equation[1], equation[2], equation[3], 1e3 / 60 / this.duration / 4);
1400
+ }
1401
+ },
1402
+ cancel: function(to) {
1403
+ this.to = to;
1404
+ this.cancelExit = requestFrame(this.bExit);
1405
+ },
1406
+ exit: function(time) {
1407
+ this.render(this.to);
1408
+ delete this.cancelExit;
1409
+ this.callback(time);
1410
+ },
1411
+ start: function(from, to) {
1412
+ this.stop();
1413
+ if (this.duration === 0) {
1414
+ this.cancel(to);
1415
+ return this;
1416
+ }
1417
+ this.isArray = false;
1418
+ this.isNumber = false;
1419
+ var fromType = typeof from, toType = typeof to;
1420
+ if (fromType === "object" && toType === "object") {
1421
+ this.isArray = true;
1422
+ } else if (fromType === "number" && toType === "number") {
1423
+ this.isNumber = true;
1424
+ }
1425
+ var from_ = divide(from), to_ = divide(to);
1426
+ this.from = from_[0];
1427
+ this.to = to_[0];
1428
+ this.templateFrom = from_[1];
1429
+ this.templateTo = to_[1];
1430
+ if (this.from.length !== this.to.length || this.from.toString() === this.to.toString()) {
1431
+ this.cancel(to);
1432
+ return this;
1433
+ }
1434
+ delete this.time;
1435
+ this.length = this.from.length;
1436
+ this.cancelStep = requestFrame(this.bStep);
1437
+ return this;
1438
+ },
1439
+ stop: function() {
1440
+ if (this.cancelExit) {
1441
+ this.cancelExit();
1442
+ delete this.cancelExit;
1443
+ } else if (this.cancelStep) {
1444
+ this.cancelStep();
1445
+ delete this.cancelStep;
1446
+ }
1447
+ return this;
1448
+ },
1449
+ step: function(now) {
1450
+ this.time || (this.time = now);
1451
+ var factor = (now - this.time) / this.duration;
1452
+ if (factor > 1) factor = 1;
1453
+ var delta = this.equation(factor), from = this.from, to = this.to, tpl = this.templateTo;
1454
+ for (var i = 0, l = this.length; i < l; i++) {
1455
+ var f = from[i], t = to[i];
1456
+ tpl = tpl.replace("@", t !== f ? compute(f, t, delta) : t);
1457
+ }
1458
+ this.render(this.isArray ? tpl.split(",") : this.isNumber ? +tpl : tpl, factor);
1459
+ if (factor !== 1) {
1460
+ this.cancelStep = requestFrame(this.bStep);
1461
+ } else {
1462
+ delete this.cancelStep;
1463
+ this.callback(now);
1464
+ }
1465
+ }
1466
+ });
1467
+
1468
+ var fx = function(render) {
1469
+ var ffx = new Fx(render);
1470
+ return {
1471
+ start: function(from, to, options) {
1472
+ var type = typeof options;
1473
+ ffx.setOptions(type === "function" ? {
1474
+ callback: options
1475
+ } : type === "string" || type === "number" ? {
1476
+ duration: options
1477
+ } : options).start(from, to);
1478
+ return this;
1479
+ },
1480
+ stop: function() {
1481
+ ffx.stop();
1482
+ return this;
1483
+ }
1484
+ };
1485
+ };
1486
+
1487
+ fx.prototype = Fx.prototype;
1488
+
1489
+ module.exports = fx;
1490
+ },
1491
+ c: function(require, module, exports, global) {
1492
+ module.exports = function(x1, y1, x2, y2, epsilon) {
1493
+ var curveX = function(t) {
1494
+ var v = 1 - t;
1495
+ return 3 * v * v * t * x1 + 3 * v * t * t * x2 + t * t * t;
1496
+ };
1497
+ var curveY = function(t) {
1498
+ var v = 1 - t;
1499
+ return 3 * v * v * t * y1 + 3 * v * t * t * y2 + t * t * t;
1500
+ };
1501
+ var derivativeCurveX = function(t) {
1502
+ var v = 1 - t;
1503
+ return 3 * (2 * (t - 1) * t + v * v) * x1 + 3 * (-t * t * t + 2 * v * t) * x2;
1504
+ };
1505
+ return function(t) {
1506
+ var x = t, t0, t1, t2, x2, d2, i;
1507
+ // First try a few iterations of Newton's method -- normally very fast.
1508
+ for (t2 = x, i = 0; i < 8; i++) {
1509
+ x2 = curveX(t2) - x;
1510
+ if (Math.abs(x2) < epsilon) return curveY(t2);
1511
+ d2 = derivativeCurveX(t2);
1512
+ if (Math.abs(d2) < 1e-6) break;
1513
+ t2 = t2 - x2 / d2;
1514
+ }
1515
+ t0 = 0, t1 = 1, t2 = x;
1516
+ if (t2 < t0) return curveY(t0);
1517
+ if (t2 > t1) return curveY(t1);
1518
+ // Fallback to the bisection method for reliability.
1519
+ while (t0 < t1) {
1520
+ x2 = curveX(t2);
1521
+ if (Math.abs(x2 - x) < epsilon) return curveY(t2);
1522
+ if (x > x2) t0 = t2; else t1 = t2;
1523
+ t2 = (t1 - t0) * .5 + t0;
1524
+ }
1525
+ // Failure
1526
+ return curveY(t2);
1527
+ };
1528
+ };
1529
+ },
1530
+ d: function(require, module, exports, global) {
1531
+ /*
1532
+ Unmatrix 2d
1533
+ - a crude implementation of the slightly bugged pseudo code in http://www.w3.org/TR/css3-2d-transforms/#matrix-decomposition
1534
+ */
1535
+ "use strict";
1536
+
1537
+ // returns the length of the passed vector
1538
+ var length = function(a) {
1539
+ return Math.sqrt(a[0] * a[0] + a[1] * a[1]);
1540
+ };
1541
+
1542
+ // normalizes the length of the passed point to 1
1543
+ var normalize = function(a) {
1544
+ var l = length(a);
1545
+ return l ? [ a[0] / l, a[1] / l ] : [ 0, 0 ];
1546
+ };
1547
+
1548
+ // returns the dot product of the passed points
1549
+ var dot = function(a, b) {
1550
+ return a[0] * b[0] + a[1] * b[1];
1551
+ };
1552
+
1553
+ // returns the principal value of the arc tangent of
1554
+ // y/x, using the signs of both arguments to determine
1555
+ // the quadrant of the return value
1556
+ var atan2 = Math.atan2;
1557
+
1558
+ var combine = function(a, b, ascl, bscl) {
1559
+ return [ ascl * a[0] + bscl * b[0], ascl * a[1] + bscl * b[1] ];
1560
+ };
1561
+
1562
+ module.exports = function(a, b, c, d, tx, ty) {
1563
+ // Make sure the matrix is invertible
1564
+ if (a * d - b * c === 0) return false;
1565
+ // Take care of translation
1566
+ var translate = [ tx, ty ];
1567
+ // Put the components into a 2x2 matrix
1568
+ var m = [ [ a, b ], [ c, d ] ];
1569
+ // Compute X scale factor and normalize first row.
1570
+ var scale = [ length(m[0]) ];
1571
+ m[0] = normalize(m[0]);
1572
+ // Compute shear factor and make 2nd row orthogonal to 1st.
1573
+ var skew = dot(m[0], m[1]);
1574
+ m[1] = combine(m[1], m[0], 1, -skew);
1575
+ // Now, compute Y scale and normalize 2nd row.
1576
+ scale[1] = length(m[1]);
1577
+ // m[1] = normalize(m[1]) //
1578
+ skew /= scale[1];
1579
+ // Now, get the rotation out
1580
+ var rotate = atan2(m[0][1], m[0][0]);
1581
+ return [ translate, rotate, skew, scale ];
1582
+ };
1583
+ }
1584
+ });
admin/widgets/overlays/css/overlays.css ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .overlay-preview {
2
+ width: 100%;
3
+ height: 30px;
4
+ -moz-border-radius: 4px;
5
+ -webkit-border-radius: 4px;
6
+ border-radius: 4px;
7
+ background-position: 50% 50%;
8
+ border: 1px solid rgba(0, 0, 0, 0.2);
9
+ cursor: pointer;
10
+ }
11
+
12
+ .overlay-tip {
13
+ position: absolute;
14
+ background: rgba(0, 0, 0, 0.8);
15
+ color: white;
16
+ padding: 5px 10px;
17
+ -moz-border-radius: 6px;
18
+ -webkit-border-radius: 6px;
19
+ border-radius: 6px;
20
+ visibility: hidden;
21
+ }
22
+
23
+ .wrapper {
24
+ position: relative;
25
+ }
admin/widgets/positions/js/positions-utils.js CHANGED
@@ -1,9 +1,3 @@
1
- /**
2
- * @version $Id: positions-utils.js 58623 2012-12-15 22:01:32Z btowles $
3
- * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
- * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
- */
7
 
8
  var tip;
9
  window.sliders = {};
@@ -31,14 +25,14 @@ String.implement({
31
 
32
  return num;
33
  },
34
-
35
  hex2dec: function() {
36
  if (!isNaN(this.toInt())) return this;
37
  return this.baseConversion(24, 10);
38
  },
39
-
40
  dec2hex: function() {
41
- return this.baseConversion(10, 24);
42
  }
43
  });
44
 
@@ -46,7 +40,7 @@ var tip;
46
  var createTip = function(id) {
47
  var el = document.id(id);
48
  if (el) return el;
49
-
50
  el = new Element('div', {'id': id}).inject(document.body).set('text', '2 | 2 | 2 | 2 | 2 | 2');
51
  el.set('tween', {duration: 200, link: 'cancel'}).fade('out');
52
 
@@ -61,17 +55,17 @@ var updateTip = function(slider) {
61
  output += grid.hex2dec() + ' | ';
62
  }
63
  });
64
-
65
  output = output.substring(0, output.length - 2);
66
-
67
  return output;
68
  };
69
 
70
  var updateSlider = function(slider, range) {
71
  var x = slider;
72
  range = range;
73
-
74
- x.min = 0;
75
  x.max = slider.RT.list[range].length - 1;
76
  x.range = x.max - x.min;
77
  x.steps = x.max;
@@ -80,10 +74,10 @@ var updateSlider = function(slider, range) {
80
 
81
  var grid = (x.stepWidth == Infinity) ? x.full : x.stepWidth;
82
  x.drag.options.grid = grid;
83
-
84
  if (!x.steps) x.drag.detach();
85
  else x.drag.attach();
86
-
87
  slider.RT.current = range;
88
  };
89
 
@@ -94,12 +88,12 @@ var updateBlocks = function(slider, amount, step) {
94
  amount = amount;
95
  blocks.removeClass('main');
96
  blocks.each(function(block, i) {
97
-
98
  if (i < slider.RT.current) blocks[i].setStyle('display', 'block');
99
  else blocks[i].setStyle('display', 'none');
100
  var grid = slider.RT.list[amount][Math.round(step, 0)].toString();
101
  blocks[i].className = '';
102
-
103
  var chr = (amount == 1) ? slider.RT.gridSize : grid.charAt(i).hex2dec();
104
  blocks[i].addClass('mini-grid').addClass('mini-grid-' + chr);
105
 
@@ -110,16 +104,16 @@ var updateBlocks = function(slider, amount, step) {
110
 
111
  var serializeSettings = function(slider, settings) {
112
  var serial = '';
113
-
114
  // grid size
115
  serial += 'a:1:{i:' + slider.RT.gridSize + ';';
116
-
117
  // main index
118
  serial += 'a:' + settings.getLength() + ':{';
119
  settings.each(function(val, key) {
120
  // values of index
121
  serial += 'i:' + key + ';a:' + val.length + ':{';
122
-
123
  for (i = 0, l = val.length; i < l; i++) {
124
  if (slider.RT.type == 'custom') {
125
  var tmp = slider.RT.store[key][i];
@@ -131,7 +125,7 @@ var serializeSettings = function(slider, settings) {
131
 
132
  serial += '}';
133
  });
134
-
135
  serial += '}}';
136
 
137
  return serial;
@@ -143,7 +137,7 @@ var GantryPositions = {
143
  var name2 = name.replace(/-/, '_'),
144
  slider = document.id(name + '-grp').getElement('.position'),
145
  knob = document.id(name + '-grp').getElement('.knob');
146
-
147
  if (!window.sliders) window.sliders = {};
148
  GantryPositionsTools.setEvent(hidden, name2);
149
  window.sliders[name2] = new RokSlider(slider, knob, {
@@ -163,15 +157,17 @@ var GantryPositions = {
163
  this.RT.keyName = keyName || '';
164
  this.RT.type = type;
165
  this.RT.store = {};
166
-
167
  GantryPositionsTools.init.bind(this, [name2])();
168
  },
169
-
170
  onComplete: function() {
171
- GantryPositionsTools.complete.bind(this, [name, hidden])();
 
172
  },
173
  onDrag: function(now) {
174
- GantryPositionsTools.drag.bind(this, [now, name2])();
 
175
  },
176
  onChange: function(position) {
177
  GantryPositionsTools.change.bind(this, position)();
@@ -179,12 +175,12 @@ var GantryPositions = {
179
  });
180
 
181
  window.sliders[name2].RT.navigation[activeNav].fireEvent('click');
182
-
183
  knob.addEvents({
184
  'mousedown': function() {this.addClass('down');},
185
  'mouseup': function() {this.removeClass('down');}
186
  });
187
-
188
  GantryPositionsTools.wrapperTip(name, name2);
189
  }
190
  };
@@ -202,7 +198,7 @@ var GantryPositionsTools = {
202
  if (event) event.stop();
203
  navigation.removeClass('active');
204
  this.addClass('active');
205
-
206
  updateSlider(window.sliders[name], this.getFirst().getFirst().innerHTML.toInt());
207
 
208
  var value = window.sliders[name].RT.defaults[window.sliders[name].RT.current][0];
@@ -214,13 +210,13 @@ var GantryPositionsTools = {
214
  if (key.compareArrays(defaults.keys)) tests.push(i);
215
  });
216
  var list = window.sliders[name].RT.list[window.sliders[name].RT.current];
217
-
218
  tests.each(function(test, j) {
219
  if (list[test] == defaults.values[0]) {
220
  window.sliders[name].set(test);
221
  }
222
  });
223
-
224
  } else {
225
  window.sliders[name].set(window.sliders[name].RT.list[window.sliders[name].RT.current].indexOf(value));
226
  }
@@ -250,23 +246,23 @@ var GantryPositionsTools = {
250
  if (typeOf(now) == 'array') {
251
  name = now[1];
252
  now = now[0];
253
- };
254
  this.element.getFirst().setStyle('width', now + 10);
255
  var step = this.step;
256
-
257
  var layout = this.RT.list[this.RT.current][Math.round(step, 0)], output = '';
258
  if (!layout) return;
259
-
260
  layout = layout.toString();
261
  this.RT.settings[this.RT.current] = [];
262
  this.RT.store[this.RT.current] = [];
263
  for (i = 0, len = this.RT.current; i < len; i++) {
264
- output += layout.charAt(i).hex2dec() + ((i == len - 1) ? '' : ' | ');
265
-
266
  if (this.RT.type == 'custom') {
267
  this.RT.settings[this.RT.current].push(layout.charAt(i));
268
  this.RT.store[this.RT.current].push(this.RT.keys[this.RT.current][Math.round(step,0)][i]);
269
-
270
  } else {
271
  this.RT.settings[this.RT.current].push(layout.charAt(i));
272
  }
@@ -275,20 +271,20 @@ var GantryPositionsTools = {
275
  if (this.RT.type == 'custom') this.RT.blocks[i].set('text', keyIndex);
276
  }
277
  }
278
-
279
  if (!tip) tip = createTip('positions-tip');
280
  tip.set('html', output);
281
-
282
  updateBlocks(window.sliders[name], this.RT.current, step);
283
  },
284
-
285
  change: function(position) {
286
  if(this.options.snap) position = this.toPosition(this.step);
287
  position = position || 0;
288
  this.knob.setStyle(this.property, position);
289
  this.fireEvent('onDrag', position);
290
  },
291
-
292
  wrapperTip: function(name, name2) {
293
  document.id(name + '-wrapper').addEvents({
294
  'mouseenter': function() {
@@ -306,18 +302,19 @@ var GantryPositionsTools = {
306
  }
307
  });
308
  },
309
-
310
  showMax: function(name, name2) {
311
  var wrapper = document.id(name+'-grp').getParent('.chain');
312
  if (!wrapper) return;
313
  wrapper = wrapper.getParent();
314
- var toggle = wrapper.getElement('.chain-toggle input[type=checkbox]');
315
  var select = wrapper.getElement('.chain-showmax select');
316
-
317
- if (!toggle || !select) return;
318
-
 
319
  var list = document.id(name+'-grp').getElements('ul.list li');
320
- var tgl_name = 'toggle' + toggle.id.replace(/\-/g, '');
321
  if (window[tgl_name]) window[tgl_name].addEvent('change', function(state) {
322
  var value = select.get('value').toInt();
323
  if (!state) {
@@ -330,28 +327,41 @@ var GantryPositionsTools = {
330
  excluded.setStyle('display', 'none');
331
  select.fireEvent('attach');
332
  }
333
- });
334
-
335
  select.addEvent('change', function(index) {
336
- if (!index) index = this.value;
337
  else index += 1;
338
- var excluded = $$(list.diff(list.slice(0, index), true));
339
- var active = document.id(name+'-grp').getElement('li.active');
 
 
 
 
340
  if (list.indexOf(active) > index - 1) list[index - 1].fireEvent('click');
341
- list.setStyle('display', 'inline');
342
  excluded.setStyle('display', 'none');
343
- });//.fireEvent('change');
344
-
345
- if (window[tgl_name]) {
 
346
  window[tgl_name].fireEvent('change', window[tgl_name].state);
347
  if (window[tgl_name].state) select.fireEvent('attach');
348
- }
349
  },
350
-
351
  setEvent: function(hidden, name) {
352
  hidden.addEvent('set', function(value) {
353
 
354
- var slider = window.sliders[name].RT;
 
 
 
 
 
 
 
 
355
 
356
  if (!value.contains('{')) value = serialize(value.replace(/\s/g, '').split(','));
357
  value = value.unserialize();
@@ -417,7 +427,7 @@ var GantryPositionsTools = {
417
  }
418
  });
419
  }
420
- });
421
  }
422
  };
423
 
@@ -428,7 +438,7 @@ Array.implement({
428
  for (i = 0; i < compare.length; i++) {
429
  if (daddy.contains(compare[i])) daddy.erase(compare[i]);
430
  }
431
-
432
  return daddy;
433
  }
434
- });
 
 
 
 
 
 
1
 
2
  var tip;
3
  window.sliders = {};
25
 
26
  return num;
27
  },
28
+
29
  hex2dec: function() {
30
  if (!isNaN(this.toInt())) return this;
31
  return this.baseConversion(24, 10);
32
  },
33
+
34
  dec2hex: function() {
35
+ return this.baseConversion(10, 24);
36
  }
37
  });
38
 
40
  var createTip = function(id) {
41
  var el = document.id(id);
42
  if (el) return el;
43
+
44
  el = new Element('div', {'id': id}).inject(document.body).set('text', '2 | 2 | 2 | 2 | 2 | 2');
45
  el.set('tween', {duration: 200, link: 'cancel'}).fade('out');
46
 
55
  output += grid.hex2dec() + ' | ';
56
  }
57
  });
58
+
59
  output = output.substring(0, output.length - 2);
60
+
61
  return output;
62
  };
63
 
64
  var updateSlider = function(slider, range) {
65
  var x = slider;
66
  range = range;
67
+
68
+ x.min = 0;
69
  x.max = slider.RT.list[range].length - 1;
70
  x.range = x.max - x.min;
71
  x.steps = x.max;
74
 
75
  var grid = (x.stepWidth == Infinity) ? x.full : x.stepWidth;
76
  x.drag.options.grid = grid;
77
+
78
  if (!x.steps) x.drag.detach();
79
  else x.drag.attach();
80
+
81
  slider.RT.current = range;
82
  };
83
 
88
  amount = amount;
89
  blocks.removeClass('main');
90
  blocks.each(function(block, i) {
91
+
92
  if (i < slider.RT.current) blocks[i].setStyle('display', 'block');
93
  else blocks[i].setStyle('display', 'none');
94
  var grid = slider.RT.list[amount][Math.round(step, 0)].toString();
95
  blocks[i].className = '';
96
+
97
  var chr = (amount == 1) ? slider.RT.gridSize : grid.charAt(i).hex2dec();
98
  blocks[i].addClass('mini-grid').addClass('mini-grid-' + chr);
99
 
104
 
105
  var serializeSettings = function(slider, settings) {
106
  var serial = '';
107
+
108
  // grid size
109
  serial += 'a:1:{i:' + slider.RT.gridSize + ';';
110
+
111
  // main index
112
  serial += 'a:' + settings.getLength() + ':{';
113
  settings.each(function(val, key) {
114
  // values of index
115
  serial += 'i:' + key + ';a:' + val.length + ':{';
116
+
117
  for (i = 0, l = val.length; i < l; i++) {
118
  if (slider.RT.type == 'custom') {
119
  var tmp = slider.RT.store[key][i];
125
 
126
  serial += '}';
127
  });
128
+
129
  serial += '}}';
130
 
131
  return serial;
137
  var name2 = name.replace(/-/, '_'),
138
  slider = document.id(name + '-grp').getElement('.position'),
139
  knob = document.id(name + '-grp').getElement('.knob');
140
+
141
  if (!window.sliders) window.sliders = {};
142
  GantryPositionsTools.setEvent(hidden, name2);
143
  window.sliders[name2] = new RokSlider(slider, knob, {
157
  this.RT.keyName = keyName || '';
158
  this.RT.type = type;
159
  this.RT.store = {};
160
+
161
  GantryPositionsTools.init.bind(this, [name2])();
162
  },
163
+
164
  onComplete: function() {
165
+ if (MooTools.lang) GantryPositionsTools.complete.bind(this, [name, hidden])();
166
+ else GantryPositionsTools.complete.bind(this, name, hidden)();
167
  },
168
  onDrag: function(now) {
169
+ if (MooTools.lang) GantryPositionsTools.drag.bind(this, [now, name2])();
170
+ else GantryPositionsTools.drag.bind(this, now, name2)();
171
  },
172
  onChange: function(position) {
173
  GantryPositionsTools.change.bind(this, position)();
175
  });
176
 
177
  window.sliders[name2].RT.navigation[activeNav].fireEvent('click');
178
+
179
  knob.addEvents({
180
  'mousedown': function() {this.addClass('down');},
181
  'mouseup': function() {this.removeClass('down');}
182
  });
183
+
184
  GantryPositionsTools.wrapperTip(name, name2);
185
  }
186
  };
198
  if (event) event.stop();
199
  navigation.removeClass('active');
200
  this.addClass('active');
201
+
202
  updateSlider(window.sliders[name], this.getFirst().getFirst().innerHTML.toInt());
203
 
204
  var value = window.sliders[name].RT.defaults[window.sliders[name].RT.current][0];
210
  if (key.compareArrays(defaults.keys)) tests.push(i);
211
  });
212
  var list = window.sliders[name].RT.list[window.sliders[name].RT.current];
213
+
214
  tests.each(function(test, j) {
215
  if (list[test] == defaults.values[0]) {
216
  window.sliders[name].set(test);
217
  }
218
  });
219
+
220
  } else {
221
  window.sliders[name].set(window.sliders[name].RT.list[window.sliders[name].RT.current].indexOf(value));
222
  }
246
  if (typeOf(now) == 'array') {
247
  name = now[1];
248
  now = now[0];
249
+ }
250
  this.element.getFirst().setStyle('width', now + 10);
251
  var step = this.step;
252
+
253
  var layout = this.RT.list[this.RT.current][Math.round(step, 0)], output = '';
254
  if (!layout) return;
255
+
256
  layout = layout.toString();
257
  this.RT.settings[this.RT.current] = [];
258
  this.RT.store[this.RT.current] = [];
259
  for (i = 0, len = this.RT.current; i < len; i++) {
260
+ output += layout.charAt(i).hex2dec() + ((i == len - 1) ? '' : ' | ');
261
+
262
  if (this.RT.type == 'custom') {
263
  this.RT.settings[this.RT.current].push(layout.charAt(i));
264
  this.RT.store[this.RT.current].push(this.RT.keys[this.RT.current][Math.round(step,0)][i]);
265
+
266
  } else {
267
  this.RT.settings[this.RT.current].push(layout.charAt(i));
268
  }
271
  if (this.RT.type == 'custom') this.RT.blocks[i].set('text', keyIndex);
272
  }
273
  }
274
+
275
  if (!tip) tip = createTip('positions-tip');
276
  tip.set('html', output);
277
+
278
  updateBlocks(window.sliders[name], this.RT.current, step);
279
  },
280
+
281
  change: function(position) {
282
  if(this.options.snap) position = this.toPosition(this.step);
283
  position = position || 0;
284
  this.knob.setStyle(this.property, position);
285
  this.fireEvent('onDrag', position);
286
  },
287
+
288
  wrapperTip: function(name, name2) {
289
  document.id(name + '-wrapper').addEvents({
290
  'mouseenter': function() {
302
  }
303
  });
304
  },
305
+
306
  showMax: function(name, name2) {
307
  var wrapper = document.id(name+'-grp').getParent('.chain');
308
  if (!wrapper) return;
309
  wrapper = wrapper.getParent();
310
+ //var toggle = wrapper.getElement('.chain-toggle input[type=hidden]');
311
  var select = wrapper.getElement('.chain-showmax select');
312
+
313
+ if (!select) return;
314
+ //if (!toggle || !select) return;
315
+
316
  var list = document.id(name+'-grp').getElements('ul.list li');
317
+ /*var tgl_name = 'toggle' + toggle.id.replace(/\-/g, '');
318
  if (window[tgl_name]) window[tgl_name].addEvent('change', function(state) {
319
  var value = select.get('value').toInt();
320
  if (!state) {
327
  excluded.setStyle('display', 'none');
328
  select.fireEvent('attach');
329
  }
330
+ });*/
331
+
332
  select.addEvent('change', function(index) {
333
+ if (!index || typeof index == 'object') index = this.get('value').toInt();
334
  else index += 1;
335
+
336
+ var active = document.id(name+'-grp').getElement('li.active'),
337
+ excluded = list.filter(function(item, i){
338
+ return i + 1 > index;
339
+ });
340
+
341
  if (list.indexOf(active) > index - 1) list[index - 1].fireEvent('click');
342
+ list.setStyle('display', 'inline-block');
343
  excluded.setStyle('display', 'none');
344
+
345
+ }).fireEvent('change');
346
+
347
+ /*if (window[tgl_name]) {
348
  window[tgl_name].fireEvent('change', window[tgl_name].state);
349
  if (window[tgl_name].state) select.fireEvent('attach');
350
+ }*/
351
  },
352
+
353
  setEvent: function(hidden, name) {
354
  hidden.addEvent('set', function(value) {
355
 
356
+ var slider = window.sliders[name].RT, currentValue = value;
357
+
358
+ if (value.contains(',')) {
359
+ var split = currentValue.split(',');
360
+ value = {};
361
+ value[slider.gridSize] = {};
362
+ value[slider.gridSize][split.length] = split;
363
+ value = serialize(value);
364
+ }
365
 
366
  if (!value.contains('{')) value = serialize(value.replace(/\s/g, '').split(','));
367
  value = value.unserialize();
427
  }
428
  });
429
  }
430
+ });
431
  }
432
  };
433
 
438
  for (i = 0; i < compare.length; i++) {
439
  if (daddy.contains(compare[i])) daddy.erase(compare[i]);
440
  }
441
+
442
  return daddy;
443
  }
444
+ });
admin/widgets/preset/js/preset-saver.js CHANGED
@@ -1,8 +1,256 @@
1
- /**
2
- * @version $Id: preset-saver.js 58623 2012-12-15 22:01:32Z btowles $
3
- * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
- * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
- */
7
-
8
- Gantry.PresetsSaver={init:function(){var a=$$(".preset-saver");Gantry.PresetsSaver.bounds={show:Gantry.PresetsSaver.build.bind(Gantry.PresetsSaver)};a.each(function(b){b.addEvent("click",function(c){new Event(c).stop();Gantry.Overlay.addEvent("show",Gantry.PresetsSaver.bounds.show);Gantry.Overlay.show();});});Gantry.PresetsSaver.Template=$$("input[name=id]");if(Gantry.PresetsSaver.Template.length){Gantry.PresetsSaver.Template=Gantry.PresetsSaver.Template[0].value;}else{Gantry.PresetsSaver.Template=false;}},build:function(){var f=new Element("div",{id:"presets-namer","class":"gantry-layer-wrapper"}).inject(document.body);var e=new Element("h2").set("text",GantryLang.preset_title).inject(f);var b=new Element("div",{"class":"preset-namer-inner"}).inject(f);Gantry.PresetsSaver.wrapper=f;Gantry.PresetsSaver.innerWrapper=b;var d=new Element("p").set("text",GantryLang.preset_select).inject(b);var c=new Hash(Presets);c.each(function(o,r){var m=new Element("div",{"class":"preset-namer valid-preset-"+r}).inject(b);var n=new Element("h3",{"class":"preset-namer-title"}).set("html",GantryLang.preset_naming+' "<span>'+r+'</span>"').inject(m);if(c.length>1){var q=new Element("span",{"class":"skip"}).set("text",GantryLang.preset_skip).inject(n);}var i=new Element("div").set("html","<label><span>"+GantryLang.preset_name+'</span><input type="text" class="text-long input-name" id="'+r+'_namer_name" /></label>').inject(m);var j=new Element("div").set("html","<label><span>"+GantryLang.key_name+'</span><input type="text" class="text-long input-key example" tabindex="-1" id="'+r+'_namer_key" /></label>').inject(m);var g=i.getElement("input"),l=j.getElement("input");Gantry.PresetsSaver.valExample="ex, Preset 1";Gantry.PresetsSaver.keyExample="(optional) ex, preset1";var p=Gantry.PresetsSaver.valExample,k=Gantry.PresetsSaver.keyExample;g.addClass("example").value=p;l.value=k;g.addEvents({focus:function(){if(this.value==p){this.value="";}this.removeClass("example");},blur:function(){if(this.value==""){this.addClass("example").value=p;}Gantry.PresetsSaver.checkInputs();},keyup:function(){this.value=this.value.replace(/[^a-z0-9\s]/gi,"");if(this.value.length){l.value=this.value.toLowerCase().clean().replace(/\s/g,"");}Gantry.PresetsSaver.checkInputs();}});l.addEvents({focus:function(){if(this.value==k){this.value="";}this.removeClass("example");},blur:function(){if(this.value==""&&(g.value!=""&&g.value!=p)){this.value=g.value.toLowerCase().clean().replace(/\s/g,"");}else{if(this.value==""){this.value=k;}}this.addClass("example");Gantry.PresetsSaver.checkInputs();},keyup:function(s){this.value=this.value.replace(/[^a-z0-9\s]/gi,"");this.value=this.value.toLowerCase().clean().replace(/\s/g,"");Gantry.PresetsSaver.checkInputs();}});if(c.getLength()>1){var h=new Fx.Morph(m,{duration:200,onComplete:function(){m.empty().dispose();Gantry.PresetsSaver.center(f);Gantry.PresetsSaver.checkInputs();}}).set({opacity:1});q.addEvent("click",function(){g.removeEvents("focus").removeEvents("blur").removeEvents("keyup");l.removeEvents("focus").removeEvents("blur").removeEvents("keyup");m.setStyle("overflow","hidden");h.start({opacity:0,height:0});});}});var a=new Element("div",{"class":"preset-bottom"}).inject(f);Gantry.PresetsSaver.savePreset=new Element("button",{disabled:"disabled"}).set("text",GantryLang.save).inject(a);Gantry.PresetsSaver.cancel=new Element("button").set("text",GantryLang.cancel).inject(a);Gantry.PresetsSaver.cancel.addEvent("click",function(g){Gantry.Overlay.removeEvent("show",Gantry.PresetsSaver.bounds.show);f.empty().dispose();Gantry.Overlay.hide();});Gantry.PresetsSaver.savePreset.addEvent("click",Gantry.PresetsSaver.save);Gantry.PresetsSaver.center(f);},checkInputs:function(){var c=[],b=Gantry.PresetsSaver.wrapper.getElements("input");b.each(function(d,e){if(d.value!=""&&d.value!=Gantry.PresetsSaver[(!e%2)?"valExample":"keyExample"]){c[e]=true;}else{c[e]=false;}});var a=c.contains(false);if(a||!b.length){Gantry.PresetsSaver.savePreset.setProperty("disabled","disabled");}else{Gantry.PresetsSaver.savePreset.removeProperty("disabled");}return a;},save:function(){if(!Gantry.PresetsSaver.checkInputs){return;}var a=[];Gantry.PresetsSaver.wrapper.getElements(".preset-namer").each(function(c){a.push(c.getElements("input"));});Gantry.PresetsSaver.data=Gantry.PresetsSaver.getPresets(a);var b=Gantry.PresetsSaver.data;new Request.HTML({url:AdminURI+"?option=com_admin&tmpl=gantry-ajax-admin",onSuccess:Gantry.PresetsSaver.handleResponse}).post({action:"gantry_admin",model:"presets-saver",gantry_action:"add",template:Gantry.PresetsSaver.Template,"presets-data":JSON.encode(b)});},handleResponse:function(k,e,d){var b=Gantry.PresetsSaver.wrapper,j=Gantry.PresetsSaver.innerWrapper;var g,h,c;if(d=="success"){$H(Gantry.PresetsSaver.data).each(function(m,l){$H(m).each(function(n,p){var o=n.name;PresetDropdown.newItem(l,p,o);delete n.name;Presets[l].set(o,n);});});var i=new Element("div",{"class":"preset-success"}).inject(j,"after");j.empty().dispose();g=new Element("div",{"class":"success-icon"}).inject(i);h=new Element("div").set("html","<h3>"+GantryLang.success_save+"</h3>").inject(i);c=new Element("div").set("html",GantryLang.success_msg).inject(i);Gantry.PresetsSaver.savePreset.setStyle("display","none");Gantry.PresetsSaver.cancel.set("html",GantryLang.close);}else{j.setStyle("display","none");var f=new Element("div",{"class":"preset-error"}).inject(j,"after");g=new Element("div",{"class":"error-icon"}).inject(f);h=new Element("div").set("html","<h3>"+GantryLang.fail_save+"</h3>").inject(f);c=new Element("div").set("html",GantryLang.fail_msg).inject(f);var a=Gantry.PresetsSaver.savePreset.clone();Gantry.PresetsSaver.savePreset.setStyle("display","none");a.inject(Gantry.PresetsSaver.savePreset,"before").set("html",GantryLang.retry).addEvent("click",function(){f.empty().dispose();j.setStyle("display","block");Gantry.PresetsSaver.savePreset.setStyle("display","");a.dispose();});}},center:function(d){var c=window.getSize();var a=d.getSize();var b={left:(c.x/2)+window.getScroll().x-a.x/2,top:(c.y/2)+window.getScroll().y-a.y/2};d.setStyles(b);},getPresets:function(c){var b=new Hash(Presets);var e=1,d=0;var a={};b.each(function(g,f){if(!Gantry.PresetsSaver.wrapper.getElement(".valid-preset-"+f)){return;}var h=b.get(f);a[f]={};a[f][c[d][1].value]={};a[f][c[d][1].value]["name"]=c[d][0].value;e=1;h.each(function(i,j){i=new Hash(i);if(e>1){return;}else{i.each(function(n,m){var l=m.replace(/-/,"_"),k=m.replace(/_/,"-");if(document.id(GantryParamsPrefix+l)){a[f][c[d][1].value][k]=document.id(GantryParamsPrefix+l).get("value")||"";}});}e++;});d++;});return a;}};window.addEvent("domready",Gantry.PresetsSaver.init);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ Gantry.PresetsSaver = {
3
+ init: function() {
4
+ var saver = document.id('toolbar-save-preset');
5
+ if (!saver) return;
6
+
7
+ Gantry.PresetsSaver.bounds = {
8
+ 'show': Gantry.PresetsSaver.build.bind(Gantry.PresetsSaver)
9
+ };
10
+
11
+ saver.addEvent('click', function(e) {
12
+ e.stop();
13
+
14
+ Gantry.Overlay.addEvent('show', Gantry.PresetsSaver.bounds.show);
15
+ Gantry.Overlay.show();
16
+ });
17
+
18
+ Gantry.PresetsSaver.Template = $$('input[name=id]');
19
+ if (Gantry.PresetsSaver.Template.length) Gantry.PresetsSaver.Template = Gantry.PresetsSaver.Template[0].value;
20
+ else Gantry.PresetsSaver.Template = false;
21
+ },
22
+
23
+ build: function() {
24
+ var table = new Element('div.presets-wrapper-table').inject(document.body);
25
+ var row = new Element('div.presets-wrapper-row').inject(table);
26
+ var cell = new Element('div.presets-wrapper-cell').inject(row);
27
+ var wrapper = new Element('div', {'id': 'presets-namer', 'class': 'gantry-layer-wrapper'}).inject(cell);
28
+ var title = new Element('h2').set('text', GantryLang.preset_title).inject(wrapper);
29
+ var innerWrapper = new Element('div', {'class': 'preset-namer-inner'}).inject(wrapper);
30
+
31
+ Gantry.PresetsSaver.wrapper = wrapper;
32
+ Gantry.PresetsSaver.innerWrapper = innerWrapper;
33
+
34
+ var desc = new Element('p').set('text', GantryLang.preset_select).inject(innerWrapper),
35
+ skip;
36
+
37
+ var hash = new Hash(Presets);
38
+ hash.each(function(value, key) {
39
+ var namer = new Element('div', {'class': 'preset-namer valid-preset-' + key}).inject(innerWrapper);
40
+ var head = new Element('h3', {'class': 'preset-namer-title'}).set('html', GantryLang.preset_naming + ' "<span>'+key+'</span>"').inject(namer);
41
+ if (hash.length > 1) skip = new Element('span', {'class': 'skip'}).set('text', GantryLang.preset_skip).inject(head);
42
+ var valuename = new Element('div').set('html', '<label><span>'+GantryLang.preset_name+'</span><input type="text" class="text-long input-name" id="'+key+'_namer_name" /></label>').inject(namer);
43
+ var keyname = new Element('div').set('html', '<label><span>'+GantryLang.key_name+'</span><input type="text" class="text-long input-key example" tabindex="-1" id="'+key+'_namer_key" /></label>').inject(namer);
44
+
45
+ var inputValue = valuename.getElement('input'), inputKey = keyname.getElement('input');
46
+
47
+ Gantry.PresetsSaver.valExample = "ex, Preset 1";
48
+ Gantry.PresetsSaver.keyExample = "(optional) ex, preset1";
49
+ var valExample = Gantry.PresetsSaver.valExample, keyExample = Gantry.PresetsSaver.keyExample;
50
+
51
+ inputValue.addClass('example').value = valExample;
52
+ inputKey.value = keyExample;
53
+
54
+ inputValue.addEvents({
55
+ 'focus': function() {if (this.value == valExample) this.value = '';this.removeClass('example');},
56
+ 'blur': function() {if (this.value == '') this.addClass('example').value = valExample;Gantry.PresetsSaver.checkInputs();},
57
+ 'keyup': function() {
58
+ this.value = this.value.replace(/[^a-z0-9\s]/gi, '');
59
+ if (this.value.length) inputKey.value = this.value.toLowerCase().clean().replace(/\s/g, "");
60
+ Gantry.PresetsSaver.checkInputs();
61
+ }
62
+ });
63
+
64
+ inputKey.addEvents({
65
+ 'focus': function() {if (this.value == keyExample) this.value = '';this.removeClass('example');},
66
+ 'blur': function() {
67
+ if (this.value == '' && (inputValue.value != '' && inputValue.value != valExample)) {
68
+ this.value = inputValue.value.toLowerCase().clean().replace(/\s/g, "");
69
+ }
70
+ else if (this.value == '') {
71
+ this.value = keyExample;
72
+ }
73
+ this.addClass('example');
74
+ Gantry.PresetsSaver.checkInputs();
75
+ },
76
+ 'keyup': function(e) {
77
+ this.value = this.value.replace(/[^a-z0-9\s]/gi, '');
78
+ this.value = this.value.toLowerCase().clean().replace(/\s/g, "");
79
+ Gantry.PresetsSaver.checkInputs();
80
+ }
81
+ });
82
+
83
+ if (hash.getLength() > 1) {
84
+ var fx = new Fx.Morph(namer, {
85
+ 'duration': 200,
86
+ onComplete: function() {
87
+ namer.empty().dispose();
88
+ //Gantry.PresetsSaver.center(wrapper);
89
+ Gantry.PresetsSaver.checkInputs();
90
+ }
91
+ }).set({'opacity': 1});
92
+ skip.addEvent('click', function() {
93
+ inputValue.removeEvents('focus').removeEvents('blur').removeEvents('keyup');
94
+ inputKey.removeEvents('focus').removeEvents('blur').removeEvents('keyup');
95
+ namer.setStyle('overflow', 'hidden');
96
+ fx.start({
97
+ 'opacity': 0,
98
+ 'height': 0
99
+ });
100
+ });
101
+ }
102
+ });
103
+
104
+
105
+ GantryLang['save'] = GantryLang['save'].toLowerCase().capitalize();
106
+ GantryLang['cancel'] = GantryLang['cancel'].toLowerCase().capitalize();
107
+ GantryLang['close'] = GantryLang['close'].toLowerCase().capitalize();
108
+ GantryLang['retry'] = GantryLang['retry'].toLowerCase().capitalize();
109
+
110
+ var bottom = new Element('div', {'class': 'preset-bottom'}).inject(wrapper);
111
+ Gantry.PresetsSaver.savePreset = new Element('div', {'class': 'rok-button rok-button-primary rok-button-disabled'}).set('text', GantryLang['save']).inject(bottom);
112
+ Gantry.PresetsSaver.cancel = new Element('div', {'class': 'rok-button'}).set('text', GantryLang['cancel']).inject(bottom);
113
+
114
+ Gantry.PresetsSaver.savePreset.addClass('rok-button-primary');
115
+
116
+ Gantry.PresetsSaver.cancel.addEvent('click', function(e) {
117
+ Gantry.Overlay.removeEvent('show', Gantry.PresetsSaver.bounds.show);
118
+ table.empty().dispose();
119
+ Gantry.Overlay.hide();
120
+ });
121
+
122
+ Gantry.PresetsSaver.savePreset.addEvent('click', Gantry.PresetsSaver.save);
123
+
124
+ //Gantry.PresetsSaver.center(wrapper);
125
+ },
126
+
127
+ checkInputs: function() {
128
+ var checks = [], inputs = Gantry.PresetsSaver.wrapper.getElements('input');
129
+ inputs.each(function(input, i) {
130
+ if (input.value != '' && input.value != Gantry.PresetsSaver[(!i % 2) ? 'valExample' : 'keyExample']) checks[i] = true;
131
+ else checks[i] = false;
132
+ });
133
+
134
+ var check = checks.contains(false);
135
+
136
+
137
+ if (check || !inputs.length) Gantry.PresetsSaver.savePreset.addClass('rok-button-disabled');
138
+ else Gantry.PresetsSaver.savePreset.removeClass('rok-button-disabled');
139
+
140
+ return check;
141
+ },
142
+
143
+ save: function() {
144
+ if (!Gantry.PresetsSaver.checkInputs || Gantry.PresetsSaver.savePreset.hasClass('rok-button-disabled')) return;
145
+ var inputs = [];
146
+ Gantry.PresetsSaver.wrapper.getElements('.preset-namer').each(function(box) {
147
+ inputs.push(box.getElements('input'));
148
+ });
149
+
150
+ Gantry.PresetsSaver.data = Gantry.PresetsSaver.getPresets(inputs);
151
+ var data = Gantry.PresetsSaver.data;
152
+
153
+ new Request.HTML({
154
+ url: GantryAjaxURL,
155
+ onSuccess: Gantry.PresetsSaver.handleResponse
156
+ }).post({
157
+ 'action': 'gantry_admin',
158
+ 'model': 'presets-saver',
159
+ 'gantry_action': 'add',
160
+ 'template': Gantry.PresetsSaver.Template,
161
+ 'presets-data': JSON.encode(data)
162
+ });
163
+ },
164
+
165
+ handleResponse: function(tree, nodes, response) {
166
+ var wrapper = Gantry.PresetsSaver.wrapper, inner = Gantry.PresetsSaver.innerWrapper;
167
+
168
+ var icon, title, msg;
169
+
170
+ if (response.clean() == "success") {
171
+ $H(Gantry.PresetsSaver.data).each(function(value, key) {
172
+ $H(value).each(function(inner_value, inner_key) {
173
+ var name = inner_value.name;
174
+ PresetDropdown.newItem(key, inner_key, name);
175
+ delete inner_value.name;
176
+ Presets[key].set(name, inner_value);
177
+ });
178
+ });
179
+
180
+ /*var success = new Element('div', {'class': 'preset-success'}).inject(inner, 'after');
181
+ inner.empty().dispose();
182
+ icon = new Element('div', {'class': 'success-icon'}).inject(success);
183
+ title = new Element('div').set('html', '<h3>'+ GantryLang.success_save.toLowerCase().capitalize() +'</h3>').inject(success);
184
+ msg = new Element('div').set('html', GantryLang.success_msg).inject(success);
185
+ Gantry.PresetsSaver.savePreset.setStyle('display', 'none');
186
+ Gantry.PresetsSaver.cancel.set('html', GantryLang.close);*/
187
+
188
+ Gantry.PresetsSaver.cancel.fireEvent('click');
189
+ growl.alert('Gantry', GantryLang.success_msg, {duration: 5000});
190
+ } else {
191
+ inner.setStyle('display', 'none');
192
+ var error = new Element('div', {'class': 'preset-error'}).inject(inner, 'after');
193
+ icon = new Element('div', {'class': 'error-icon'}).inject(error);
194
+ title = new Element('div').set('html', '<h3>' + GantryLang.fail_save + '</h3>').inject(error);
195
+ msg = new Element('div').set('html', GantryLang.fail_msg).inject(error);
196
+
197
+ var retry = Gantry.PresetsSaver.savePreset.clone();
198
+ Gantry.PresetsSaver.savePreset.setStyle('display', 'none');
199
+ retry.inject(Gantry.PresetsSaver.savePreset, 'before').set('html', GantryLang.retry).addEvent('click', function() {
200
+ error.empty().dispose();
201
+ inner.setStyle('display', 'block');
202
+ Gantry.PresetsSaver.savePreset.setStyle('display', '');
203
+ retry.dispose();
204
+ });
205
+ }
206
+
207
+ },
208
+
209
+ center: function(el) {
210
+ var winSize = window.getSize();
211
+ var elSize = el.getSize();
212
+
213
+ var positions = {
214
+ 'left': (winSize.x / 2) + window.getScroll().x - elSize.x / 2,
215
+ 'top': (winSize.y / 2) + window.getScroll().y - elSize.y / 2
216
+ };
217
+
218
+ el.setStyles(positions);
219
+ },
220
+
221
+ getPresets: function(inputs) {
222
+ var presets = new Hash(Presets);
223
+ var i = 1, j = 0;
224
+ var storing = {};
225
+
226
+ presets.each(function(value, key) {
227
+ if (!Gantry.PresetsSaver.wrapper.getElement('.valid-preset-' + key)) return;
228
+ var hash = presets.get(key);
229
+
230
+ storing[key] = {};
231
+ storing[key][inputs[j][1].value] = {};
232
+ storing[key][inputs[j][1].value].name = inputs[j][0].value;
233
+
234
+ i = 1;
235
+ hash.each(function(presetvalue, presetkey) {
236
+ presetvalue = new Hash(presetvalue);
237
+
238
+ if (i>1) return;
239
+ else {
240
+ presetvalue.each(function(param, paramkey) {
241
+ var paramkeyUnderscore = paramkey.replace(/-/, '_'),
242
+ paramkeyDash = paramkey.replace(/_/, '-');
243
+ if (document.id(GantryParamsPrefix+paramkeyUnderscore)) storing[key][inputs[j][1].value][paramkeyDash] = document.id(GantryParamsPrefix+paramkeyUnderscore).get('value') || '';
244
+ });
245
+ }
246
+ i++;
247
+ });
248
+
249
+ j++;
250
+ });
251
+
252
+ return storing;
253
+ }
254
+ };
255
+
256
+ window.addEvent('domready', Gantry.PresetsSaver.init);
admin/widgets/preset/js/preset.js CHANGED
@@ -1,9 +1,3 @@
1
- /**
2
- * @version 1.31 December 18, 2012
3
- * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
- * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
- */
7
 
8
  var PresetDropdown = {
9
  list: {},
@@ -12,12 +6,10 @@ var PresetDropdown = {
12
 
13
  var objs = selectboxes.getObjects(PresetDropdown.list[cls].getPrevious());
14
  objs.real.addEvent('change', PresetDropdown.select.bind(PresetDropdown, cls));
15
-
16
- //PresetsBadges.init(cls);
17
  },
18
 
19
  newItem: function(cls, key, value) {
20
- if (!PresetDropdown.list[cls] && $$('.' + cls).length) return Scroller.addBlock(cls, key, value);
21
 
22
  var li = new Element('li').set('text', value);
23
  var option = new Element('option', {value: key}).set('text', value);
@@ -59,7 +51,8 @@ var PresetDropdown = {
59
  'mouseleave': function() {
60
  this.removeClass('hover');
61
  },
62
- 'click': function() {
 
63
  objs.list.removeClass('active');
64
  this.addClass('active');
65
  this.fireEvent('select', [objs, index]);
@@ -76,13 +69,11 @@ var PresetDropdown = {
76
  var master = document.id('master-items');
77
  if (master) master = master.hasClass('active');
78
 
79
- $H(preset).each(function(value, key) {
80
  var el = document.id(GantryParamsPrefix + key);
81
 
82
  var type = el.get('tag');
83
 
84
- if (master && Gantry.MenuItemHead) Gantry.MenuItemHead.getCheckbox(key).fireEvent('switchon');
85
-
86
  switch(type) {
87
  case 'select':
88
  var values = el.getElements('option').getProperty('value');
@@ -93,11 +84,12 @@ var PresetDropdown = {
93
 
94
  case 'input':
95
  var cls = el.getProperty('class');
96
- el.set('value', value);
97
 
98
  if (cls.contains('picker-input')) {
99
- document.id(el).getParent().fireEvent('mouseenter');
100
- el.fireEvent('set', value);
 
101
  } else if (cls.contains('slider')) {
102
  var slider = window['slider' + key];
103
  slider.set(slider.list.indexOf(value));
@@ -117,86 +109,161 @@ var PresetDropdown = {
117
 
118
  var Scroller = {
119
  init: function(cls) {
120
- Scroller.wrapper = $$('.' + cls + ' .scroller .wrapper')[0];
121
- Scroller.bar = $$('.' + cls + ' .bar')[0];
122
 
123
  if (!Scroller.wrapper || !Scroller.bar) return;
124
 
125
- document.id('contextual-preset-wrap').setStyles({'position': 'absolute', 'top': -3000, 'display': 'block'});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
 
127
  Scroller.childrens = Scroller.wrapper.getChildren();
128
 
129
  var size = Scroller.wrapper.getParent().getSize();
130
  var wrapSize = Scroller.wrapper.getSize();
131
  Scroller.barWrapper = new Element('div', {
 
132
  'styles': {
133
- 'position': 'absolute',
134
- 'left': 0,
135
- 'bottom': 0,
136
- 'width': Scroller.bar.getStyle('width'),
137
- 'height': Scroller.bar.getStyle('height')
138
  }
139
  }).inject(Scroller.bar, 'before');
140
 
141
  Scroller.getBarSize();
142
- Scroller.bar.inject(Scroller.barWrapper).setStyles({'bottom': 1, 'left': 0});
143
 
144
  Scroller.children(cls);
145
 
146
- var deleters = $$('.delete-preset');
 
 
147
 
148
  deleters.each(function(deleter) {
149
  deleter.addEvent('click', function(e) {
150
- new Event(e).stop();
151
  Scroller.deleter(this, cls);
152
  });
153
  });
154
 
155
- //PresetsBadges.init(cls);
156
-
157
- if (Scroller.size > size.x) return;
158
-
159
  Scroller.bar.setStyle('width', Scroller.size);
160
  Scroller.drag(Scroller.wrapper, Scroller.bar);
161
 
162
- document.id('contextual-preset-wrap').setStyles({'position': 'relative', 'top': 0, 'display': 'none'});
 
 
 
 
 
 
 
 
 
 
 
 
163
  },
164
 
165
  deleter: function(item, cls) {
166
  var key = item.id.replace('keydelete-', '');
 
 
167
  new Request.HTML({
168
- url: AdminURI + '?option=com_admin&tmpl=gantry-ajax-admin',
169
- onSuccess: function(r) {Scroller.deleteAction(r, item, cls, key);}
 
 
 
170
  }).post({
171
- 'action': 'gantry_admin',
172
  'model': 'presets-saver',
173
  'gantry_action': 'delete',
174
- 'template': Gantry.PresetsSaver.Template,
175
  'preset-title': cls,
176
  'preset-key': key
177
  });
178
  },
179
 
180
  deleteAction: function(r, item, cls, key) {
 
 
 
181
  if (PresetsKeys[cls].contains(key)) {
182
  item.dispose();
183
  } else {
184
  var block = item.getParent();
185
  Scroller.childrens.erase(block);
186
- var blockSize = block.getSize().x;
187
  block.empty().dispose();
188
 
189
  var last = Scroller.childrens.getLast().addClass('last');
190
  var first = Scroller.childrens[0].addClass('first');
191
 
192
- var wrapperSize = Scroller.wrapper.getStyle('width').toInt();
193
- Scroller.wrapper.setStyle('width', wrapperSize - blockSize);
194
- var overflow = Math.abs(Scroller.bar.getStyle('width').toInt() - Scroller.getBarSize());
195
  Scroller.bar.setStyle('width', Scroller.getBarSize());
196
- if (Scroller.bar.getStyle('left').toInt() > Scroller.getBarSize() / 2) Scroller.bar.setStyle('left', Scroller.bar.getStyle('left').toInt() - overflow);
197
  }
198
 
199
- Scroller.wrapper.getParent().scrollTo(wrapperSize);
 
 
 
 
 
 
200
 
201
  if (typeof CustomPresets != 'undefined' && CustomPresets[key]) delete CustomPresets[key];
202
  },
@@ -210,7 +277,9 @@ var Scroller = {
210
  },
211
 
212
  addBlock: function(cls, key, value) {
213
- var preset = Presets[cls].get(value);
 
 
214
  if (!preset) {
215
  if (document.id('contextual-preset-wrap').getStyle('display') == 'none') {
216
  document.id('contextual-preset-wrap').setStyles({'position': 'absolute', 'top': -3000, 'display': 'block'});
@@ -226,24 +295,34 @@ var Scroller = {
226
  var tmp = bg.split("/");
227
 
228
  var img = tmp[tmp.length - 1];
229
- var end = key + '.png")';
230
  var fin = tmp.join("/").replace(img, end);
231
 
232
- newBlock.getFirst().setStyle('background-image', '');
233
- newBlock.getFirst().setStyle('background-image', fin);
234
 
235
  var wrapperSize = Scroller.wrapper.getStyle('width').toInt();
236
  var blockSize = newBlock.getSize().x;
237
- Scroller.wrapper.setStyle('width', wrapperSize + 198);
238
 
239
  Scroller.bar.setStyle('width', Scroller.getBarSize());
240
  Scroller.childrens.push(newBlock);
241
 
 
 
 
 
 
 
 
 
 
 
242
  Scroller.child(cls, newBlock);
243
 
244
- var x = new Element('div', {id: 'keydelete-' + key, 'class': 'delete-preset'}).set('html', '<span>X</span>').inject(newBlock);
245
  x.addEvent('click', function(e) {
246
- new Event(e).stop();
247
  Scroller.deleter(this, cls);
248
  });
249
 
@@ -256,6 +335,7 @@ var Scroller = {
256
  drag: function(wrapper, bar) {
257
  Scroller.dragger = new Drag.Move(bar, {
258
  container: Scroller.barWrapper,
 
259
  onDrag: function() {
260
  var parent = Scroller.wrapper.getParent();
261
  var size = parent.getSize();
@@ -269,47 +349,75 @@ var Scroller = {
269
  },
270
 
271
  child: function(cls, child) {
272
- child.getFirst().setStyle('border', '1px solid #000');
273
- var fx = new Fx.Tween(child.getFirst(), {duration: 300}).set('border-color', '#000');
274
  child.addEvent('click', function(e) {
275
-
276
- new Event(e).stop();
277
-
278
- fx.start('border-color', '#fff')
279
- .chain(function() {this.start('border-color', '#000');})
280
- .chain(function() {this.start('border-color', '#fff');})
281
- .chain(function() {this.start('border-color', '#000');});
282
-
283
  Scroller.updateParams(cls, child);
 
 
 
 
 
284
  });
285
  },
286
 
287
  children: function(cls) {
288
  Scroller.childrens.each(function(child, i) {
289
- child.getFirst().setStyle('border', '1px solid #000');
290
- var fx = new Fx.Tween(child.getFirst(), {duration: 300}).set('border-color', '#000');
291
-
292
  Scroller.labs = new Hash({});
293
- Scroller.involved = $$('.presets-involved');
294
  Scroller.involvedFx = [];
295
  Scroller.involved.each(function(inv) {
296
  Scroller.involvedFx.push(new Fx.Tween(inv, {link: 'cancel'}).set('opacity', 0));
297
  });
298
 
299
  child.addEvent('click', function(e) {
300
- new Event(e).stop();
301
-
302
- fx.start('border-color', '#fff')
303
- .chain(function() {this.start('border-color', '#000');})
304
- .chain(function() {this.start('border-color', '#fff');})
305
- .chain(function() {this.start('border-color', '#000');});
306
-
307
-
308
  Scroller.updateParams(cls, child, i);
 
 
 
 
 
309
  });
310
  });
311
  },
312
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
  updateParams: function(cls, child, index) {
314
  var keyPreset = child.getElement('span').get('text');
315
  var preset = Presets[cls].get(keyPreset);
@@ -339,7 +447,7 @@ var Scroller = {
339
  });
340
  });
341
 
342
- $H(preset).each(function(value, key) {
343
 
344
  if (key == 'name') return;
345
  var el = document.id(GantryParamsPrefix + key.replace(/-/, '_'));
@@ -348,8 +456,7 @@ var Scroller = {
348
  if (!labels.get(keyPreset)) labels.set(keyPreset, []);
349
  var type = el.get('tag');
350
 
351
- var panel = el.getParent('.gantry-panel').className.replace(/[panel|\-|\s|gantry]/g, '').toInt() - 1;
352
- // panel = panel.trim().clean() - 1;
353
 
354
  if (!currentParams[panel]) currentParams[panel] = 0;
355
  currentParams[panel]++;
@@ -362,45 +469,41 @@ var Scroller = {
362
 
363
  if (!lKey.contains(label)) lKey.push(label);
364
  if (!label.retrieve('gantry:notice', false)) {
365
- label.store('gantry:text', label.get('text'));
366
- label.set('html', '<span class="preset-info">&#9679;</span> ' + label.retrieve('gantry:text'));
367
  label.store('gantry:notice', true);
368
  }
369
 
370
- if (master && Gantry.MenuItemHead) Gantry.MenuItemHead.getCheckbox(key).fireEvent('switchon');
371
-
372
- var inherit_input = el.retrieve('gantry:override_checkbox'),
373
- inherit_input_obj = null;
374
-
375
- if (inherit_input){
376
- inherit_input_obj = inherit_input.retrieve('gantry:fields');
377
- inherit_input_obj[el.id] = value;
378
- inherit_input.store('gantry:fields', inherit_input_obj);
379
- }
380
-
381
  switch(type) {
382
  case 'select':
383
- var values = el.getElements('option').getProperty('value');
384
- var objs = selectboxes.getObjects(el.getParent());
385
- selectboxes.select(objs, values.indexOf(value));
386
-
 
 
387
  break;
388
 
389
  case 'input':
390
- var cls = el.getProperty('class');
391
  el.set('value', value);
392
 
393
  if (cls.contains('picker-input')) {
394
- document.id(el).getParent().fireEvent('mouseenter');
395
- el.fireEvent('set', value);
 
396
  } else if (cls.contains('slider')) {
397
- var slider = window.sliders[(GantryParamsPrefix + key.replace(/-/, '_')).replace("-", "_")];
398
  slider.set(slider.list.indexOf(value));
399
  slider.hiddenEl.fireEvent('set', value);
400
  } else if (cls.contains('toggle')) {
401
- var n = (GantryParamsPrefix + key.replace(/-/, '_')).replace("-", '');
402
- window['toggle' + n].set(value.toInt());
403
- window['toggle' + n].fireEvent('onChange', value.toInt());
 
 
 
 
404
  }
405
 
406
  break;
@@ -413,7 +516,7 @@ var Scroller = {
413
  var value = inv.get('text').toInt();
414
  if (!value) {
415
  Scroller.involvedFx[i].element.getParent().removeClass('double-badge');
416
- Scroller.involvedFx[i].cancel().start('opacity', [1, 0]).chain(function() { Scroller.involvedFx[i].element.setStyle('visibility', 'hidden'); this.element.setStyle('display', 'none');});
417
  return;
418
  }
419
 
@@ -421,7 +524,7 @@ var Scroller = {
421
  if (overrides && overrides.getStyle('display') == 'block') Scroller.involvedFx[i].element.getParent().addClass('double-badge');
422
  else Scroller.involvedFx[i].element.getParent().removeClass('double-badge');
423
  inv.setStyle('display', 'block');
424
- Scroller.involvedFx[i].element.setStyle('visibility', 'visible');
425
  Scroller.involvedFx[i].start('opacity', [0, 1]);
426
  });
427
  }
@@ -457,21 +560,21 @@ var PresetsBadges = {
457
 
458
  button.addEvents({
459
  'click': function(e) {
460
- new Event(e).stop();
461
 
462
  this.fireEvent('toggle');
463
  },
464
 
465
  'show': function() {
466
  this.getElement('.number').setStyle('visibility', 'visible');
467
- $$(PresetsBadges.list.get(cls)).setStyle('display', 'block');
468
 
469
  this.showing = true;
470
  },
471
 
472
  'hide': function() {
473
  this.getElement('.number').setStyle('visibility', 'hidden');
474
- $$(PresetsBadges.list.get(cls)).setStyle('display', 'none');
475
 
476
  this.showing = false;
477
  },
@@ -498,7 +601,7 @@ var PresetsBadges = {
498
  label.getElement('.hasTip').setStyle('line-height', height + 15);
499
  }
500
 
501
- var text = (parent) ? parent.getElement('.hasTip').innerHTML : GantryLang['show_parameters'];
502
 
503
  badge = new Element('div', {'class': 'presets-badge'}).inject(wrapper, 'top');
504
 
 
 
 
 
 
 
1
 
2
  var PresetDropdown = {
3
  list: {},
6
 
7
  var objs = selectboxes.getObjects(PresetDropdown.list[cls].getPrevious());
8
  objs.real.addEvent('change', PresetDropdown.select.bind(PresetDropdown, cls));
 
 
9
  },
10
 
11
  newItem: function(cls, key, value) {
12
+ if (!PresetDropdown.list[cls] && document.getElements('.' + cls).length) return Scroller.addBlock(cls, key, value);
13
 
14
  var li = new Element('li').set('text', value);
15
  var option = new Element('option', {value: key}).set('text', value);
51
  'mouseleave': function() {
52
  this.removeClass('hover');
53
  },
54
+ 'click': function(e) {
55
+ if (e.target.hasClass('delete-preset')) return false;
56
  objs.list.removeClass('active');
57
  this.addClass('active');
58
  this.fireEvent('select', [objs, index]);
69
  var master = document.id('master-items');
70
  if (master) master = master.hasClass('active');
71
 
72
+ new Hash(preset).each(function(value, key) {
73
  var el = document.id(GantryParamsPrefix + key);
74
 
75
  var type = el.get('tag');
76
 
 
 
77
  switch(type) {
78
  case 'select':
79
  var values = el.getElements('option').getProperty('value');
84
 
85
  case 'input':
86
  var cls = el.getProperty('class');
87
+ el.setProperty('value', value);
88
 
89
  if (cls.contains('picker-input')) {
90
+ el.fireEvent('keyup');
91
+ } else if (cls.contains('background-picker')){
92
+ el.fireEvent('keyup', value);
93
  } else if (cls.contains('slider')) {
94
  var slider = window['slider' + key];
95
  slider.set(slider.list.indexOf(value));
109
 
110
  var Scroller = {
111
  init: function(cls) {
112
+ Scroller.wrapper = document.getElements('.' + cls + ' .scroller .wrapper')[0];
113
+ Scroller.bar = document.getElements('.' + cls + ' .bar')[0];
114
 
115
  if (!Scroller.wrapper || !Scroller.bar) return;
116
 
117
+ var HookCookie = 'hide';
118
+
119
+ Scroller.hook = document.id('toolbar-show-presets') || document.id('meta-preset-link');
120
+ if (Scroller.hook){
121
+ HookCookie = Cookie.read('gantry-'+GantryTemplate+'-adminpresets') || 'hide';
122
+ /*Scroller.hook.getElement('a').onclick = function(){};
123
+ Scroller.hook.getElement('a').removeProperty('onclick');*/
124
+ //Scroller.buttonText('Show Presets');
125
+ Scroller.hook.removeClass('rok-button-active');
126
+
127
+ document.id('hack-panel').getFirst().setStyle('display', 'block');
128
+ Scroller.slide = new Fx.Slide('hack-panel', {
129
+ duration: 250,
130
+ transition: 'quad:out',
131
+ link: 'cancel',
132
+ resetHeight: true,
133
+ onStart: function(){
134
+ if (this.element.getStyle('margin').toInt() != 0){
135
+ //document.id('g4-details').setStyle('border-bottom-width', 0);
136
+ document.id('g4-details').addClass('presets-showing');
137
+ //document.id('g4-presets').setStyle('border-bottom-width', 1);
138
+ }
139
+
140
+ if (this.element.getStyle('margin').toInt() != 0) Scroller.attachResize();
141
+ else Scroller.detachResize();
142
+ },
143
+ onComplete: function(){
144
+ if (this.element.getStyle('margin').toInt() != 0){
145
+ //document.id('g4-details').setStyle('border-bottom-width', 1);
146
+ document.id('g4-details').removeClass('presets-showing');
147
+ //document.id('g4-presets').setStyle('border-bottom-width', 0);
148
+ }
149
+ }
150
+ });
151
+
152
+ //if (HookCookie == 'show') Scroller.buttonText('Hide Presets');
153
+ //else Scroller.buttonText('Show Presets');
154
+ Scroller.hook[HookCookie == 'show' ? 'addClass' : 'removeClass']('rok-button-active');
155
+
156
+ Scroller.hook.addEvent('click', function(e){
157
+ e.preventDefault();
158
+ if (!Scroller.slide.open) {
159
+ this.addClass('rok-button-active');
160
+ Scroller.slide.slideIn();
161
+ Cookie.write('gantry-'+GantryTemplate+'-adminpresets', 'show');
162
+ } else {
163
+ this.removeClass('rok-button-active');
164
+ Scroller.slide.slideOut();
165
+ Cookie.write('gantry-'+GantryTemplate+'-adminpresets', 'hide');
166
+ }
167
+ });
168
+
169
+ //document.id('g4-presets').setStyle('border-bottom', document.id('g4-details').getStyle('border-bottom'));
170
+ //document.id('g4-presets').setStyle('border-bottom-width', !Scroller.slide.open ? 0 : 1);
171
+ //document.id('g4-details').setStyle('border-bottom-width', Scroller.slide.open ? 0 : 1);
172
+ Scroller.slide[HookCookie == 'show' ? 'show' : 'hide']();
173
+ Scroller[HookCookie == 'show' ? 'attachResize' : 'detachResize']();
174
+ document.id('g4-details')[Scroller.slide.open ? 'addClass' : 'removeClass']('presets-showing');
175
+ }
176
 
177
  Scroller.childrens = Scroller.wrapper.getChildren();
178
 
179
  var size = Scroller.wrapper.getParent().getSize();
180
  var wrapSize = Scroller.wrapper.getSize();
181
  Scroller.barWrapper = new Element('div', {
182
+ 'class': 'presets-scrollbar',
183
  'styles': {
184
+ 'width': Scroller.bar.getSize().x
 
 
 
 
185
  }
186
  }).inject(Scroller.bar, 'before');
187
 
188
  Scroller.getBarSize();
189
+ Scroller.bar.inject(Scroller.barWrapper).setStyles({'left': 0});
190
 
191
  Scroller.children(cls);
192
 
193
+ Scroller.slide[HookCookie == 'show' ? 'show' : 'hide']();
194
+
195
+ var deleters = document.getElements('.delete-preset');
196
 
197
  deleters.each(function(deleter) {
198
  deleter.addEvent('click', function(e) {
199
+ e.preventDefault();
200
  Scroller.deleter(this, cls);
201
  });
202
  });
203
 
 
 
 
 
204
  Scroller.bar.setStyle('width', Scroller.size);
205
  Scroller.drag(Scroller.wrapper, Scroller.bar);
206
 
207
+ if (Scroller.size > size.x){
208
+ Scroller.barWrapper.setStyle('display', 'none');
209
+ Scroller.barWrapper.getPrevious('.scroller').setStyle('margin-bottom', 0);
210
+ Scroller.slide[HookCookie == 'show' ? 'show' : 'hide']();
211
+
212
+ return;
213
+ }
214
+
215
+
216
+ },
217
+
218
+ buttonText: function(txt){
219
+ Scroller.hook.set('text', txt);
220
  },
221
 
222
  deleter: function(item, cls) {
223
  var key = item.id.replace('keydelete-', '');
224
+
225
+ item.getParent('.block').setStyle('opacity', 0.5);
226
  new Request.HTML({
227
+ url: GantryAjaxURL,
228
+ onSuccess: function(r) {
229
+ Scroller.deleteAction(r, item, cls, key);
230
+ growl.alert('Gantry', 'Preset "'+key+'" has been successfully deleted.', {duration: 6000});
231
+ }
232
  }).post({
233
+ action: 'gantry_admin',
234
  'model': 'presets-saver',
235
  'gantry_action': 'delete',
 
236
  'preset-title': cls,
237
  'preset-key': key
238
  });
239
  },
240
 
241
  deleteAction: function(r, item, cls, key) {
242
+ var wrapperSize,
243
+ HookCookie = Cookie.read('gantry-'+GantryTemplate+'-adminpresets') || 'hide';
244
+
245
  if (PresetsKeys[cls].contains(key)) {
246
  item.dispose();
247
  } else {
248
  var block = item.getParent();
249
  Scroller.childrens.erase(block);
 
250
  block.empty().dispose();
251
 
252
  var last = Scroller.childrens.getLast().addClass('last');
253
  var first = Scroller.childrens[0].addClass('first');
254
 
255
+ wrapperSize = Scroller.wrapper.getStyle('width').toInt();
256
+ Scroller.wrapper.setStyle('width', wrapperSize - 200);
 
257
  Scroller.bar.setStyle('width', Scroller.getBarSize());
 
258
  }
259
 
260
+ if (Scroller.size >= Scroller.wrapper.getParent().getSize().x){
261
+ Scroller.barWrapper.setStyle('display', 'none');
262
+ Scroller.barWrapper.getPrevious('.scroller').setStyle('margin-bottom', 0);
263
+ Scroller.slide[HookCookie == 'show' ? 'show' : 'hide']();
264
+ }
265
+
266
+ Scroller.bar.setStyle('left', -2 +(Scroller.barWrapper.getSize().x * Scroller.wrapper.getParent().getScroll().x / Scroller.wrapper.getParent().getScrollSize().x));
267
 
268
  if (typeof CustomPresets != 'undefined' && CustomPresets[key]) delete CustomPresets[key];
269
  },
277
  },
278
 
279
  addBlock: function(cls, key, value) {
280
+ var preset = Presets[cls].get(value),
281
+ HookCookie = Cookie.read('gantry-'+GantryTemplate+'-adminpresets') || 'hide';
282
+
283
  if (!preset) {
284
  if (document.id('contextual-preset-wrap').getStyle('display') == 'none') {
285
  document.id('contextual-preset-wrap').setStyles({'position': 'absolute', 'top': -3000, 'display': 'block'});
295
  var tmp = bg.split("/");
296
 
297
  var img = tmp[tmp.length - 1];
298
+ var end = 'url(' + key + '.png)';
299
  var fin = tmp.join("/").replace(img, end);
300
 
301
+ newBlock.getElement('.presets-bg').setStyle('background-image', '');
302
+ newBlock.getElement('.presets-bg').setStyle('background-image', fin);
303
 
304
  var wrapperSize = Scroller.wrapper.getStyle('width').toInt();
305
  var blockSize = newBlock.getSize().x;
306
+ Scroller.wrapper.setStyle('width', wrapperSize + 200);
307
 
308
  Scroller.bar.setStyle('width', Scroller.getBarSize());
309
  Scroller.childrens.push(newBlock);
310
 
311
+ if (Scroller.size >= Scroller.wrapper.getParent().getSize().x){
312
+ Scroller.barWrapper.setStyle('display', 'none');
313
+ Scroller.barWrapper.getPrevious('.scroller').setStyle('margin-bottom', 0);
314
+ Scroller.slide[HookCookie == 'show' ? 'show' : 'hide']();
315
+ } else {
316
+ Scroller.barWrapper.setStyle('display', 'block');
317
+ Scroller.barWrapper.getPrevious('.scroller').setStyle('margin-bottom', null);
318
+ Scroller.slide[HookCookie == 'show' ? 'show' : 'hide']();
319
+ }
320
+
321
  Scroller.child(cls, newBlock);
322
 
323
+ var x = new Element('div', {id: 'keydelete-' + key, 'class': 'delete-preset'}).set('html', '<span>&times;</span>').inject(newBlock);
324
  x.addEvent('click', function(e) {
325
+ e.stop();
326
  Scroller.deleter(this, cls);
327
  });
328
 
335
  drag: function(wrapper, bar) {
336
  Scroller.dragger = new Drag.Move(bar, {
337
  container: Scroller.barWrapper,
338
+ modifiers: {x: 'left', y: false},
339
  onDrag: function() {
340
  var parent = Scroller.wrapper.getParent();
341
  var size = parent.getSize();
349
  },
350
 
351
  child: function(cls, child) {
 
 
352
  child.addEvent('click', function(e) {
353
+ e.preventDefault();
 
 
 
 
 
 
 
354
  Scroller.updateParams(cls, child);
355
+
356
+ this.addClass('pulsing');
357
+ this.removeClass.delay(250, this, 'pulsing');
358
+ this.addClass.delay(500, this, 'pulsing');
359
+ this.removeClass.delay(750, this, 'pulsing');
360
  });
361
  },
362
 
363
  children: function(cls) {
364
  Scroller.childrens.each(function(child, i) {
 
 
 
365
  Scroller.labs = new Hash({});
366
+ Scroller.involved = document.getElements('.presets-involved');
367
  Scroller.involvedFx = [];
368
  Scroller.involved.each(function(inv) {
369
  Scroller.involvedFx.push(new Fx.Tween(inv, {link: 'cancel'}).set('opacity', 0));
370
  });
371
 
372
  child.addEvent('click', function(e) {
373
+ e.preventDefault();
 
 
 
 
 
 
 
374
  Scroller.updateParams(cls, child, i);
375
+
376
+ this.addClass('pulsing');
377
+ this.removeClass.delay(250, this, 'pulsing');
378
+ this.addClass.delay(500, this, 'pulsing');
379
+ this.removeClass.delay(750, this, 'pulsing');
380
  });
381
  });
382
  },
383
 
384
+ attachResize: function(){
385
+ if (window.retrieve('gantry:presets:resize')) return;
386
+
387
+ window.store('gantry:presets:resize', true);
388
+ window.addEvent('resize', Scroller.resize);
389
+ Scroller.resize.delay(5, Scroller.resize);
390
+ },
391
+
392
+ detachResize: function(){
393
+ if (!window.retrieve('gantry:presets:resize')) return;
394
+
395
+ window.store('gantry:presets:resize', false);
396
+ window.removeEvent('resize', Scroller.resize);
397
+ },
398
+
399
+ resize: function(){
400
+ var winsize = document.id('hack-panel').getSize().x,
401
+ HookCookie = Cookie.read('gantry-'+GantryTemplate+'-adminpresets') || 'hide';
402
+
403
+ winsize = winsize >= 1000 ? 1000 : winsize - 30;
404
+
405
+ Scroller.barWrapper.setStyle('width', winsize);
406
+ Scroller.barWrapper.getParent('.presets').setStyle('width', winsize);
407
+ Scroller.bar.setStyle('width', Scroller.getBarSize());
408
+ Scroller.bar.setStyle('left', -2 +(Scroller.barWrapper.getSize().x * Scroller.wrapper.getParent().getScroll().x / Scroller.wrapper.getParent().getScrollSize().x));
409
+
410
+ if (Scroller.size >= Scroller.wrapper.getParent().getSize().x){
411
+ Scroller.barWrapper.setStyle('display', 'none');
412
+ Scroller.barWrapper.getPrevious('.scroller').setStyle('margin-bottom', 0);
413
+ Scroller.slide[HookCookie == 'show' ? 'show' : 'hide']();
414
+ } else {
415
+ Scroller.barWrapper.setStyle('display', 'block');
416
+ Scroller.barWrapper.getPrevious('.scroller').setStyle('margin-bottom', null);
417
+ Scroller.slide[HookCookie == 'show' ? 'show' : 'hide']();
418
+ }
419
+ },
420
+
421
  updateParams: function(cls, child, index) {
422
  var keyPreset = child.getElement('span').get('text');
423
  var preset = Presets[cls].get(keyPreset);
447
  });
448
  });
449
 
450
+ new Hash(preset).each(function(value, key) {
451
 
452
  if (key == 'name') return;
453
  var el = document.id(GantryParamsPrefix + key.replace(/-/, '_'));
456
  if (!labels.get(keyPreset)) labels.set(keyPreset, []);
457
  var type = el.get('tag');
458
 
459
+ var panel = el.getParent('.g4-panel').className.replace(/[panel|\-|\s|g4]/g, '').toInt() - 1;
 
460
 
461
  if (!currentParams[panel]) currentParams[panel] = 0;
462
  currentParams[panel]++;
469
 
470
  if (!lKey.contains(label)) lKey.push(label);
471
  if (!label.retrieve('gantry:notice', false)) {
472
+ label.store('gantry:text', label.get('html'));
473
+ label.set('html', '<span class="preset-info"></span> ' + label.retrieve('gantry:text'));
474
  label.store('gantry:notice', true);
475
  }
476
 
 
 
 
 
 
 
 
 
 
 
 
477
  switch(type) {
478
  case 'select':
479
+ //var values = el.getElements('option').getProperty('value');
480
+ //var objs = selectboxes.getObjects(el.getParent());
481
+ //selectboxes.select(objs, values.indexOf(value));
482
+ el.set('value', value);
483
+ el.fireEvent('change');
484
+ if (typeof jQuery != 'undefined') jQuery("#" + el.id).trigger("liszt:updated");
485
  break;
486
 
487
  case 'input':
488
+ var cls = el.get('class');
489
  el.set('value', value);
490
 
491
  if (cls.contains('picker-input')) {
492
+ document.getElement('[data-moorainbow-trigger=' + el.id + '] .overlay').setStyle('background-color', value);
493
+ } else if (cls.contains('background-picker')){
494
+ el.fireEvent('keyup', value);
495
  } else if (cls.contains('slider')) {
496
+ var slider = window.sliders[(GantryParamsPrefix + key)];
497
  slider.set(slider.list.indexOf(value));
498
  slider.hiddenEl.fireEvent('set', value);
499
  } else if (cls.contains('toggle')) {
500
+ el.set('value', value);
501
+ el.getParent('.toggle').removeClass('toggle-off').removeClass('toggle-on').addClass(value == '1' ? 'toggle-on' : 'toggle-off');
502
+ //var field = (GantryParamsPrefix + key.replace(/-/, '_')).replace("-", '');
503
+ //field = document.id(field);
504
+ //field.getParent('.toggle-container').fireEvent('mouseenter');
505
+ //field.fireEvent('set', [field.retrieve('details'), value.toInt()]);
506
+ //field.fireEvent('onChange', value.toInt());
507
  }
508
 
509
  break;
516
  var value = inv.get('text').toInt();
517
  if (!value) {
518
  Scroller.involvedFx[i].element.getParent().removeClass('double-badge');
519
+ Scroller.involvedFx[i].cancel().start('opacity', [1, 0]).chain(function() { this.element.setStyle('display', 'none');});
520
  return;
521
  }
522
 
524
  if (overrides && overrides.getStyle('display') == 'block') Scroller.involvedFx[i].element.getParent().addClass('double-badge');
525
  else Scroller.involvedFx[i].element.getParent().removeClass('double-badge');
526
  inv.setStyle('display', 'block');
527
+ Scroller.involvedFx[i].element.setStyles({'visibility': 'visible', 'display': 'block', opacity: 0});
528
  Scroller.involvedFx[i].start('opacity', [0, 1]);
529
  });
530
  }
560
 
561
  button.addEvents({
562
  'click': function(e) {
563
+ e.preventDefault()
564
 
565
  this.fireEvent('toggle');
566
  },
567
 
568
  'show': function() {
569
  this.getElement('.number').setStyle('visibility', 'visible');
570
+ document.getElements(PresetsBadges.list.get(cls)).setStyle('display', 'block');
571
 
572
  this.showing = true;
573
  },
574
 
575
  'hide': function() {
576
  this.getElement('.number').setStyle('visibility', 'hidden');
577
+ document.getElements(PresetsBadges.list.get(cls)).setStyle('display', 'none');
578
 
579
  this.showing = false;
580
  },
601
  label.getElement('.hasTip').setStyle('line-height', height + 15);
602
  }
603
 
604
+ var text = (parent) ? parent.getElement('.hasTip').innerHTML : GantryLang.show_parameters;
605
 
606
  badge = new Element('div', {'class': 'presets-badge'}).inject(wrapper, 'top');
607
 
admin/widgets/radios/js/radios.js CHANGED
@@ -1,8 +1,124 @@
1
- /**
2
- * @version $Id: radios.js 58623 2012-12-15 22:01:32Z btowles $
3
- * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
- * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
- */
7
-
8
- var InputsExclusion=[".content_vote"];var InputsMorph={version:1.7,init:function(d,e){if(!d){d="all";}if(!e){e="";}else{e+=" ";}InputsMorph.rtl=document.body.getStyle("direction")=="rtl";InputsMorph.list=new Hash({all:[]});if(d=="radio"||d=="all"){var a=$$(e+"input[type=radio]");var f=$$(InputsExclusion.join(" input[type=radio], ")+" input[type=radio]");f.each(function(b){a=a.erase(b);});a.each(function(b,c){InputsMorph.setArray("list","all",b);if(InputsMorph.list.has(b.name)){InputsMorph.setArray("list",b.name,b);}else{InputsMorph.list.set(b.name,[b]);}InputsMorph.morph(b,"radios").addEvent(b,"radios");});}if(d=="checkbox"||d=="all"){a=$$(e+"input[type=checkbox]");f=$$(InputsExclusion.join(" input[type=checkbox], ")+" input[type=checkbox]");f.each(function(b){a=a.erase(b);});a.each(function(b,c){InputsMorph.setArray("list","all",b);if(InputsMorph.list.has(b.name)){InputsMorph.setArray("list",b.name,b);}else{InputsMorph.list.set(b.name,[b]);}InputsMorph.morph(b,"checks").addEvent(b,"checks");});}},morph:function(f,e){var j=f.getNext(),h=f.getParent(),g=f.name.replace("[","").replace("]","");if(j&&j.get("tag")=="label"){f.setStyles({position:"absolute",left:"-10000px"});if(InputsMorph.rtl&&Browser.Engine.gecko){f.setStyles({position:"absolute",right:"-10000px"});}else{f.setStyles({position:"absolute",left:"-10000px"});}if(InputsMorph.rtl&&(Browser.Engine.presto)){f.setStyle("display","none");}if(Browser.Engine.trident5){f.setStyle("display","none");}j.addClass("rok"+e+" rok"+g);if(f.checked){j.addClass("rok"+e+"-active");}}else{if(h&&h.get("tag")=="label"){if(InputsMorph.rtl&&Browser.Engine.gecko){f.setStyles({position:"absolute",right:"-10000px"});}else{f.setStyles({position:"absolute",left:"-10000px"});}if(InputsMorph.rtl&&(Browser.Engine.presto)){f.setStyle("display","none");}h.addClass("rok"+e+" rok"+g);if(f.checked){h.addClass("rok"+e+"-active");}}else{var i=new Element("label").wraps(f);if(InputsMorph.rtl&&Browser.Engine.gecko){f.setStyles({position:"absolute",right:"-10000px"});}else{f.setStyles({position:"absolute",left:"-10000px"});}if(InputsMorph.rtl&&(Browser.Engine.presto)){f.setStyle("display","none");}i.addClass("rok"+e+" rok"+g);if(f.checked){i.addClass("rok"+e+"-active");}}}return InputsMorph;},addEvent:function(e,d){e.addEvent("click",function(){InputsMorph.switchReplacement(e,d);});if(Browser.Engine.trident){var g=e.getNext(),f=e.getParent().getParent();if(f&&f.get("tag")=="li"){f.addEvent("click",function(){e.fireEvent("click");});}}return InputsMorph;},switchReplacement:function(l,k){if(k=="checks"){var j=l.getNext(),c=l.getParent(),a="rok"+k+"-active";var i=((j)?j.get("tag")=="label":false);var b=((c)?c.get("tag")=="label":false);if(i||b){if(i){if(j.hasClass(a)&&i){j.removeClass(a);l.removeProperty("checked");}else{if(!j.hasClass(a)&&i){j.addClass(a);l.setProperty("checked","checked");}}}else{if(b){if(c.hasClass(a)&&b){c.removeClass(a);l.removeProperty("checked");}else{if(!c.hasClass(a)&&b){c.addClass(a);l.setProperty("checked","checked");}}}}}}else{InputsMorph.list.get(l.name).each(function(e){var d=e.getNext(),f=e.getParent();var h=l.getNext(),g=l.getParent();$$(d,f).removeClass("rok"+k+"-active");if(d&&d.get("tag")=="label"&&h==d){e.setProperty("checked","checked");d.addClass("rok"+k+"-active");}else{if(f&&f.get("tag")=="label"&&g==f){f.addClass("rok"+k+"-active");e.setProperty("checked","checked");}}});}},setArray:function(f,e,h){var g=InputsMorph[f].get(e);g.push(h);return InputsMorph[f].set(e,g);}};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ var InputsExclusion = ['.content_vote'];
3
+
4
+ var InputsMorph = {
5
+ version: 1.7,
6
+ init: function() {
7
+ InputsMorph.rtl = $(document.body).getStyle('direction') == 'rtl';
8
+ InputsMorph.list = new Hash({
9
+ 'all': []
10
+ });
11
+ var b = $$('.g-surround input[type=radio]');
12
+ var c = $$(InputsExclusion.join(' input[type=radio], ') + ' input[type=radio]');
13
+ c.each(function(a) {
14
+ b = b.remove(a);
15
+ });
16
+ b.each(function(a, i) {
17
+ InputsMorph.setArray('list', 'all', a);
18
+ if (InputsMorph.list.has(a.name)) InputsMorph.setArray('list', a.name, a);
19
+ else InputsMorph.list.set(a.name, [a]);
20
+ InputsMorph.morph(a, 'radios').addEvent(a, 'radios');
21
+ });
22
+ b = $$('input[type=checkbox]');
23
+ c = $$(InputsExclusion.join(' input[type=checkbox], ') + ' input[type=checkbox]');
24
+ c.each(function(a) {
25
+ b = b.remove(a);
26
+ });
27
+ b.each(function(a, i) {
28
+ InputsMorph.setArray('list', 'all', a);
29
+ if (InputsMorph.list.has(a.name)) InputsMorph.setArray('list', a.name, a);
30
+ else InputsMorph.list.set(a.name, [a]);
31
+ InputsMorph.morph(a, 'checks').addEvent(a, 'checks');
32
+ });
33
+ },
34
+ morph: function(a, b) {
35
+ var c = a.getNext(),
36
+ parent = a.getParent(),
37
+ name = a.name.replace('[', '').replace(']', '');
38
+ if (c && c.get('tag') == 'label') {
39
+ a.setStyles({'position': 'absolute', 'left': '-10000px'});
40
+
41
+ if (InputsMorph.rtl && window.gecko) a.setStyles({'position': 'absolute', 'right': '-10000px'});
42
+ else a.setStyles({'position': 'absolute', 'left': '-10000px'});
43
+
44
+ if (InputsMorph.rtl && (window.opera || window.ie)) {a.setStyle('display', 'none');}
45
+ if (window.ie7) a.setStyle('display', 'none');
46
+
47
+ c.addClass('rok' + b + ' rok' + name);
48
+ if (a.checked) c.addClass('rok' + b + '-active');
49
+ } else if (parent && parent.get('tag') == 'label') {
50
+
51
+ if (InputsMorph.rtl && window.gecko) a.setStyles({'position': 'absolute', 'right': '-10000px'});
52
+ else a.setStyles({'position': 'absolute', 'left': '-10000px'});
53
+
54
+ if (InputsMorph.rtl && (window.opera || window.ie)) {a.setStyle('display', 'none');}
55
+
56
+ parent.addClass('rok' + b + ' rok' + name);
57
+ if (a.checked) parent.addClass('rok' + b + '-active');
58
+ }
59
+ return InputsMorph;
60
+ },
61
+ addEvent: function(a, b) {
62
+ a.addEvent('click', function() {
63
+ if (window.opera || window.ie) {
64
+ if (a.opera) {InputsMorph.switchReplacement(a, b);}
65
+ a.opera = (b == 'checks') ? false : true;
66
+ } else InputsMorph.switchReplacement(a, b);
67
+ });
68
+ if (window.opera || window.ie || (a.getNext() && !a.getNext().getProperty('for'))) {
69
+ var c = a.getNext(),
70
+ parent = a.getParent();
71
+ if (c && c.get('tag') == 'label' && (window.ie || (window.opera && !a.opera))) {
72
+ c.addEvent('click', function() {
73
+ if ((window.opera || window.ie) && !a.opera) a.opera = true;
74
+ a.fireEvent('click');
75
+ });
76
+ } else if (parent && parent.get('tag') == 'label' || (a.getParent() && !a.getParent().getProperty('for'))) {
77
+ parent.addEvent('click', function() {
78
+ a.fireEvent('click');
79
+ });
80
+ }
81
+ }
82
+ return InputsMorph;
83
+ },
84
+ switchReplacement: function(d, e) {
85
+ if (e == 'checks') {
86
+ var f = d.getNext(),
87
+ parent = d.getParent(),
88
+ cls = "rok" + e + "-active";
89
+ var g = ((f) ? f.get('tag') == 'label' : false);
90
+ var h = ((parent) ? parent.get('tag') == 'label' : false);
91
+ if (g || h) {
92
+ if (g) {
93
+ if (f.hasClass(cls) && g) f.removeClass(cls);
94
+ else if (!f.hasClass(cls) && g) f.addClass(cls);
95
+ } else if (h) {
96
+ if (parent.hasClass(cls) && h) parent.removeClass(cls);
97
+ else if (!parent.hasClass(cls) && h) parent.addClass(cls);
98
+ }
99
+ }
100
+ } else {
101
+ InputsMorph.list.get(d.name).each(function(a) {
102
+ var b = a.getNext(),
103
+ parent = a.getParent();
104
+ var c = d.getNext(),
105
+ radioparent = d.getParent();
106
+ $$(b, parent).removeClass('rok' + e + '-active');
107
+ if (b && b.get('tag') == 'label' && c == b) {
108
+ a.setProperty('checked', 'checked');
109
+ b.addClass('rok' + e + '-active');
110
+ } else if (parent && parent.get('tag') == 'label' && radioparent == parent) {
111
+ parent.addClass('rok' + e + '-active');
112
+ a.setProperty('checked', 'checked');
113
+ }
114
+ });
115
+ }
116
+ },
117
+ setArray: function(a, b, c) {
118
+ var d = InputsMorph[a].get(b);
119
+ d.push(c);
120
+ return InputsMorph[a].set(b, d);
121
+ }
122
+ };
123
+
124
+ window.addEvent('domready', InputsMorph.init);
admin/widgets/selectbox/js/selectbox.js CHANGED
@@ -1,9 +1,3 @@
1
- /**
2
- * @version 1.31 December 18, 2012
3
- * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
- * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
- */
7
 
8
  var SelectBox = new Class({
9
  Implements: [Events],
 
 
 
 
 
 
1
 
2
  var SelectBox = new Class({
3
  Implements: [Events],
admin/widgets/slider/js/slider-utils.js CHANGED
@@ -1,8 +1,48 @@
1
- /**
2
- * @version $Id: slider-utils.js 58623 2012-12-15 22:01:32Z btowles $
3
- * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
- * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
- */
7
-
8
- var GantrySliders={add:function(h,d,b,g){var c=h.replace(/-/,"_"),e=document.id(h+"-wrapper").getElement(".slider"),a=document.id(h+"-wrapper").getElement(".knob"),f=document.id(h);if(!window.sliders){window.sliders={};}f.addEvents({set:function(k){var j=window.sliders[c];var i=j.list.indexOf(k);j.set(i).fireEvent("onComplete");}});window.sliders[c]=new RokSlider(e,a,{steps:b,snap:true,initialize:function(){this.hiddenEl=f;},onComplete:function(){this.knob.removeClass("down");},onDrag:function(i){this.element.getFirst().setStyle("width",i+10);},onChange:function(i){f.setProperty("value",this.list[i]);},onTick:function(i){if(this.options.snap){i=this.toPosition(this.step);}this.knob.setStyle(this.property,i);this.fireEvent("onDrag",i);}});window.sliders[c].list=d;window.sliders[c].set(g);a.addEvents({mousedown:function(){this.addClass("down");},mouseup:function(){this.removeClass("down");}});}};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ var GantrySliders = {
3
+ add: function(id, children, steps, current){
4
+ var name = document.body.hasClass('wp-admin') ? id : id.replace(/-/, '_'),
5
+ slider = document.id(name + '-wrapper').getElement('.slider'),
6
+ knob = document.id(name + '-wrapper').getElement('.knob'),
7
+ hidden = document.id(id);
8
+
9
+
10
+ if (!window.sliders) window.sliders = {};
11
+ hidden.addEvents({
12
+ 'set': function(value) {
13
+ var slider = window.sliders[name];
14
+ var index = slider.list.indexOf(value);
15
+
16
+ slider.set(index).fireEvent('onComplete');
17
+ }
18
+ });
19
+ window.sliders[name] = new RokSlider(slider, knob, {
20
+ steps: steps,
21
+ snap: true,
22
+ initialize: function() {
23
+ this.hiddenEl = hidden;
24
+ },
25
+ onComplete: function() {
26
+ this.knob.removeClass('down');
27
+ },
28
+ onDrag: function(now) {
29
+ this.element.getFirst().setStyle('width', now + 10);
30
+ },
31
+ onChange: function(step) {
32
+ hidden.setProperty('value', this.list[step]);
33
+ },
34
+ onTick: function(position) {
35
+ if(this.options.snap) position = this.toPosition(this.step);
36
+ this.knob.setStyle(this.property, position);
37
+ this.fireEvent('onDrag', position);
38
+ }
39
+ });
40
+ window.sliders[name].list = children;
41
+ window.sliders[name].set(current);
42
+
43
+ knob.addEvents({
44
+ 'mousedown': function() {this.addClass('down');},
45
+ 'mouseup': function() {this.removeClass('down');}
46
+ });
47
+ }
48
+ };
admin/widgets/slider/js/slider.js CHANGED
@@ -1,8 +1,162 @@
1
- /**
2
- * @version $Id: slider.js 58623 2012-12-15 22:01:32Z btowles $
3
- * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
- * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
- */
7
-
8
- var RokSlider=new Class({options:{onTick:function(a){if(this.options.snap){a=this.toPosition(this.step);}if(isNaN(a)){a=this.options.offset;}this.knob.setStyle(this.property,a);},snap:false,offset:0,range:false,wheel:false,steps:100,mode:"horizontal"},initialize:function(e,a,d){this.setOptions(d);this.element=document.id(e);this.knob=document.id(a);this.previousChange=this.previousEnd=this.step=-1;if(this.options.initialize){this.options.initialize.call(this);}this.element.addEvent("mousedown",this.clickedElement.bind(this));if(this.options.wheel){this.element.addEvent("mousewheel",this.scrolledElement.bindWithEvent(this));}var f,b={},c={x:false,y:false};switch(this.options.mode){case"vertical":this.axis="y";this.property="top";f="offsetHeight";break;case"horizontal":this.axis="x";this.property="left";f="offsetWidth";}this.half=this.knob[f]/2;this.full=this.element[f]-this.knob[f]+(this.options.offset*2);this.min=$chk(this.options.range[0])?this.options.range[0]:0;this.max=$chk(this.options.range[1])?this.options.range[1]:this.options.steps;this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps;this.stepWidth=Number((this.stepSize*this.full/Math.abs(this.range)).toFixed(4));if(isNaN(this.stepWidth)){this.stepWidth=this.full;}this.knob.setStyle("position","relative").setStyle(this.property,-this.options.offset);c[this.axis]=this.property;b[this.axis]=[-this.options.offset,this.full+this.options.offset];this.drag=new Drag(this.knob,{snap:0,limit:b,modifiers:c,onDrag:function(){this.draggedKnob();this.fireEvent("onDrag",[this.drag.value.now.x]);}.bind(this),onComplete:function(){this.draggedKnob();this.end();}.bind(this)});if(this.options.snap){this.drag.options.grid=(this.stepWidth);this.drag.options.limit[this.axis][1]=this.full;}},set:function(a){if(!((this.range>0)^(a<this.min))){a=this.min;}if(!((this.range>0)^(a>this.max))){a=this.max;}this.step=(a);this.checkStep();this.end(true);this.fireEvent("onTick",this.toPosition(this.step));return this;},clickedElement:function(c){c=new Event(c);var b=this.range<0?-1:1;var a=c.page[this.axis]-this.element.getPosition()[this.axis]-this.half;a=a.limit(-this.options.offset,this.full-this.options.offset);this.step=(this.min+b*this.toStep(a));this.checkStep();this.end();this.fireEvent("onTick",a);},scrolledElement:function(a){var b=(this.options.mode=="horizontal")?(a.wheel<0):(a.wheel>0);this.set(b?this.step-this.stepSize:this.step+this.stepSize);a.stop();},draggedKnob:function(){var b=this.range<0?-1:1;var a=this.drag.value.now[this.axis];a=a.limit(-this.options.offset,this.full-this.options.offset);this.step=(this.min+b*this.toStep(a));this.checkStep();},checkStep:function(){this.previousChange=this.step;this.fireEvent("onChange",this.step);},end:function(a){if(this.previousEnd!==this.step){this.previousEnd=this.step;}if(!a){this.fireEvent("onComplete",this.step+"");}},toStep:function(a){var b=(a+this.options.offset)*this.stepSize/this.full*this.steps;return this.options.steps?Math.round(b):b;},toPosition:function(a){return(this.full*Math.abs(this.min-a))/(this.steps*this.stepSize)-this.options.offset;}});RokSlider.implement(new Events);RokSlider.implement(new Options);Drag.implement({drag:function(c){this.out=false;this.mouse.now=c.page;for(var d in this.options.modifiers){if(!this.options.modifiers[d]){continue;}this.value.now[d]=this.mouse.now[d]-this.mouse.pos[d];if(this.limit[d]){if($chk(this.limit[d][1])&&(this.value.now[d]>this.limit[d][1])){this.value.now[d]=this.limit[d][1];this.out=true;}else{if($chk(this.limit[d][0])&&(this.value.now[d]<this.limit[d][0])){this.value.now[d]=this.limit[d][0];this.out=true;}}}var a=(this.value.now[d]-(this.limit[d][0]||0))%this.options.grid[d];var b=(a>this.options.grid[d]/2);if(this.options.grid[d]){this.value.now[d]=(b)?this.value.now[d]-a+this.options.grid[d]:this.value.now[d]-a;}this.element.setStyle(this.options.modifiers[d],this.value.now[d]+this.options.unit);}this.fireEvent("onDrag",this.element);c.stop();}});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ var RokSlider = new Class({
3
+ Implements: [Events, Options],
4
+
5
+ options: {/*
6
+ onChange: $empty,
7
+ onComplete: $empty,*/
8
+ onTick: function(position){
9
+ if(this.options.snap) position = this.toPosition(this.step);
10
+ if (isNaN(position)) position = this.options.offset;
11
+ this.knob.setStyle(this.property, position);
12
+ },
13
+ snap: false,
14
+ offset: 0,
15
+ range: false,
16
+ wheel: false,
17
+ steps: 100,
18
+ mode: 'horizontal'
19
+ },
20
+
21
+ initialize: function(element, knob, options){
22
+ this.setOptions(options);
23
+ this.element = document.id(element);
24
+ this.knob = document.id(knob);
25
+ this.previousChange = this.previousEnd = this.step = -1;
26
+ if (this.options.initialize) this.options.initialize.call(this);
27
+ this.element.addEvent('mousedown', this.clickedElement.bind(this));
28
+ if (this.options.wheel) this.element.addEvent('mousewheel', this.scrolledElement.bindWithEvent(this));
29
+ var offset, limit = {}, modifiers = {'x': false, 'y': false};
30
+ switch (this.options.mode){
31
+ case 'vertical':
32
+ this.axis = 'y';
33
+ this.property = 'top';
34
+ offset = 'offsetHeight';
35
+ break;
36
+ case 'horizontal':
37
+ this.axis = 'x';
38
+ this.property = 'left';
39
+ offset = 'offsetWidth';
40
+ }
41
+ this.half = this.knob[offset] / 2;
42
+ this.full = this.element[offset] - this.knob[offset] + (this.options.offset * 2);
43
+ this.min = this.options.range[0] != null ? this.options.range[0] : 0;
44
+ this.max = this.options.range[1] != null ? this.options.range[1] : this.options.steps;
45
+ this.range = this.max - this.min;
46
+ this.steps = this.options.steps || this.full;
47
+ this.stepSize = Math.abs(this.range) / this.steps;
48
+ this.stepWidth = Number((this.stepSize * this.full / Math.abs(this.range)).toFixed(4));
49
+ if (isNaN(this.stepWidth)) this.stepWidth = this.full;
50
+ this.knob.setStyle('position', 'relative').setStyle(this.property, - this.options.offset);
51
+ modifiers[this.axis] = this.property;
52
+ limit[this.axis] = [- this.options.offset, this.full + this.options.offset];
53
+ this.drag = new Drag(this.knob, {
54
+ snap: 0,
55
+ limit: limit,
56
+ modifiers: modifiers,
57
+ onDrag: function() {
58
+ this.draggedKnob();
59
+ this.fireEvent('onDrag', [this.drag.value.now.x]);
60
+ }.bind(this),
61
+ onComplete: function(){
62
+ this.draggedKnob();
63
+ this.end();
64
+ }.bind(this)
65
+ });
66
+ if (this.options.snap) {
67
+ this.drag.options.grid = (this.stepWidth);
68
+ this.drag.options.limit[this.axis][1] = this.full;
69
+ }
70
+ },
71
+
72
+ set: function(step){
73
+ if (!((this.range > 0) ^ (step < this.min))) step = this.min;
74
+ if (!((this.range > 0) ^ (step > this.max))) step = this.max;
75
+ this.step = (step);
76
+ this.checkStep();
77
+ this.end(true);
78
+ this.fireEvent('onTick', this.toPosition(this.step));
79
+ return this;
80
+ },
81
+
82
+ clickedElement: function(event){
83
+ //event = new Event(event);
84
+ var dir = this.range < 0 ? -1 : 1;
85
+ var position = event.page[this.axis] - this.element.getPosition()[this.axis] - this.half;
86
+ position = position.limit(-this.options.offset, this.full -this.options.offset);
87
+
88
+ this.step = (this.min + dir * this.toStep(position));
89
+
90
+ this.checkStep();
91
+ this.end();
92
+ this.fireEvent('onTick', position);
93
+ },
94
+
95
+ scrolledElement: function(event){
96
+ var mode = (this.options.mode == 'horizontal') ? (event.wheel < 0) : (event.wheel > 0);
97
+ this.set(mode ? this.step - this.stepSize : this.step + this.stepSize);
98
+ event.stop();
99
+ },
100
+
101
+ draggedKnob: function(){
102
+ var dir = this.range < 0 ? -1 : 1;
103
+ var position = this.drag.value.now[this.axis];
104
+ position = position.limit(-this.options.offset, this.full -this.options.offset);
105
+ this.step = (this.min + dir * this.toStep(position));
106
+
107
+ this.checkStep();
108
+ },
109
+
110
+ checkStep: function(){
111
+ this.previousChange = this.step;
112
+ this.fireEvent('onChange', this.step);
113
+ },
114
+
115
+ end: function(complete){
116
+ if (this.previousEnd !== this.step){
117
+ this.previousEnd = this.step;
118
+ }
119
+
120
+ if (!complete) this.fireEvent('onComplete', this.step + '');
121
+ },
122
+
123
+ toStep: function(position){
124
+ var step = (position + this.options.offset) * this.stepSize / this.full * this.steps;
125
+ return this.options.steps ? Math.round(step) : step;
126
+ },
127
+
128
+ toPosition: function(step){
129
+ return (this.full * Math.abs(this.min - step)) / (this.steps * this.stepSize) - this.options.offset;
130
+ }
131
+
132
+ });
133
+
134
+
135
+
136
+ Drag.implement({
137
+ drag: function(event){
138
+ this.out = false;
139
+ this.mouse.now = event.page;
140
+ for (var z in this.options.modifiers){
141
+ if (!this.options.modifiers[z]) continue;
142
+ this.value.now[z] = this.mouse.now[z] - this.mouse.pos[z];
143
+ if (this.limit[z]){
144
+ if (this.limit[z][1] != null && (this.value.now[z] > this.limit[z][1])){
145
+ this.value.now[z] = this.limit[z][1];
146
+ this.out = true;
147
+ } else if (this.limit[z][0] != null && (this.value.now[z] < this.limit[z][0])){
148
+ this.value.now[z] = this.limit[z][0];
149
+ this.out = true;
150
+ }
151
+ }
152
+
153
+ var position = (this.value.now[z] - (this.limit[z][0]||0)) % this.options.grid[z];
154
+ var halfStep = (position > this.options.grid[z] / 2);
155
+
156
+ if (this.options.grid[z]) this.value.now[z] = (halfStep) ? this.value.now[z] - position + this.options.grid[z] : this.value.now[z] - position;
157
+ this.element.setStyle(this.options.modifiers[z], this.value.now[z] + this.options.unit);
158
+ }
159
+ this.fireEvent('onDrag', this.element);
160
+ event.stop();
161
+ }
162
+ });
admin/widgets/slider/js/unserialize.js CHANGED
@@ -21,4 +21,5 @@
21
  // * example 2: unserialize('a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}');
22
  // * returns 2: {firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'}
23
 
24
- String.implement({unserialize:function(){return unserialize(this);}});function unserialize(f){var c=f;var a=function(h){var i=h.charCodeAt(0);if(i<128){return 0;}if(i<2048){return 1;}return 2;};var b=function(j,k,i,h){return;};var g=function(l,n,m){var h=[];var k=l.slice(n,n+1);var j=2;while(k!=m){if((j+n)>l.length){b("Error","Invalid");}h.push(k);k=l.slice(n+(j-1),n+j);j+=1;}return[h.length,h.join("")];};var e=function(m,n,l){var h;h=[];for(var j=0;j<l;j++){var k=m.slice(n+(j-1),n+j);h.push(k);l-=a(k);}return[h.length,h.join("")];};var d=function(z,l){var y;var j;var q=0;var m;var h;var v;var p;if(!l){l=0;}var x=(z.slice(l,l+1)).toLowerCase();var o=l+2;var w=function(i){return i;};switch(x){case"i":w=function(i){return parseInt(i,10);};j=g(z,o,";");q=j[0];y=j[1];o+=q+1;break;case"b":w=function(i){return parseInt(i,10)!==0;};j=g(z,o,";");q=j[0];y=j[1];o+=q+1;break;case"d":w=function(i){return parseFloat(i);};j=g(z,o,";");q=j[0];y=j[1];o+=q+1;break;case"n":y=null;break;case"s":m=g(z,o,":");q=m[0];h=m[1];o+=q+2;j=e(z,o+1,parseInt(h,10));q=j[0];y=j[1];o+=q+2;if(q!=parseInt(h,10)&&q!=y.length){b("SyntaxError","String length mismatch");}y=utf8_decode(y);break;case"a":y={};v=g(z,o,":");q=v[0];p=v[1];o+=q+2;for(var u=0;u<parseInt(p,10);u++){var k=d(z,o);var r=k[1];var A=k[2];o+=r;var t=d(z,o);var n=t[1];var s=t[2];o+=n;y[A]=s;}o+=1;break;default:b("SyntaxError","Unknown / Unhandled data type(s): "+x);break;}return[x,o-l,w(y)];};return d((f+""),0)[2];}function serialize(c){var h=function(o){var n=typeof o,k;var m;if(n=="object"&&!o){return"null";}if(n=="object"){if(!o.constructor){return"object";}var j=o.constructor.toString();k=j.match(/(\w+)\(/);if(k){j=k[1].toLowerCase();}var l=["boolean","number","string","array"];for(m in l){if(j==l[m]){n=l[m];break;}}}return n;};var e=h(c);var a,b="";switch(e){case"function":a="";break;case"boolean":a="b:"+(c?"1":"0");break;case"number":a=(Math.round(c)==c?"i":"d")+":"+c;break;case"string":c=utf8_encode(c);a="s:"+encodeURIComponent(c).replace(/%../g,"x").length+':"'+c+'"';break;case"array":case"object":a="a";var d=0;var f="";var i;var g;for(g in c){b=h(c[g]);if(b=="function"||g=="$family"){continue;}i=(g.match(/^[0-9]+$/)?parseInt(g,10):g);f+=this.serialize(i)+this.serialize(c[g]);d++;}a+=":"+d+":{"+f+"}";break;case"undefined":default:a="N";break;}if(e!="object"&&e!="array"){a+=";";}return a;}function utf8_decode(a){var c=[],e=0,g=0,f=0,d=0,b=0;a+="";while(e<a.length){f=a.charCodeAt(e);if(f<128){c[g++]=String.fromCharCode(f);e++;}else{if((f>191)&&(f<224)){d=a.charCodeAt(e+1);c[g++]=String.fromCharCode(((f&31)<<6)|(d&63));e+=2;}else{d=a.charCodeAt(e+1);b=a.charCodeAt(e+2);c[g++]=String.fromCharCode(((f&15)<<12)|((d&63)<<6)|(b&63));e+=3;}}}return c.join("");}function utf8_encode(a){var h=(a+"");var i="";var b,e;var c=0;b=e=0;c=h.length;for(var d=0;d<c;d++){var g=h.charCodeAt(d);var f=null;if(g<128){e++;}else{if(g>127&&g<2048){f=String.fromCharCode((g>>6)|192)+String.fromCharCode((g&63)|128);}else{f=String.fromCharCode((g>>12)|224)+String.fromCharCode(((g>>6)&63)|128)+String.fromCharCode((g&63)|128);}}if(f!==null){if(e>b){i+=h.substring(b,e);}i+=f;b=e=d+1;}}if(e>b){i+=h.substring(b,h.length);}return i;}
 
21
  // * example 2: unserialize('a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}');
22
  // * returns 2: {firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'}
23
 
24
+
25
+ String.implement({unserialize:function(){var f=this;var c=this;var a=function(h){var i=h.charCodeAt(0);if(i<128){return 0;}if(i<2048){return 1;}return 2;};var b=function(j,k,i,h){return;};var g=function(l,n,m){var h=[];var k=l.slice(n,n+1);var j=2;while(k!=m){if((j+n)>l.length){b("Error","Invalid");}h.push(k);k=l.slice(n+(j-1),n+j);j+=1;}return[h.length,h.join("")];};var e=function(m,n,l){var h;h=[];for(var j=0;j<l;j++){var k=m.slice(n+(j-1),n+j);h.push(k);l-=a(k);}return[h.length,h.join("")];};var d=function(z,l){var y;var j;var q=0;var m;var h;var v;var p;if(!l){l=0;}var x=(z.slice(l,l+1)).toLowerCase();var o=l+2;var w=function(i){return i;};switch(x){case"i":w=function(i){return parseInt(i,10);};j=g(z,o,";");q=j[0];y=j[1];o+=q+1;break;case"b":w=function(i){return parseInt(i,10)!==0;};j=g(z,o,";");q=j[0];y=j[1];o+=q+1;break;case"d":w=function(i){return parseFloat(i);};j=g(z,o,";");q=j[0];y=j[1];o+=q+1;break;case"n":y=null;break;case"s":m=g(z,o,":");q=m[0];h=m[1];o+=q+2;j=e(z,o+1,parseInt(h,10));q=j[0];y=j[1];o+=q+2;if(q!=parseInt(h,10)&&q!=y.length){b("SyntaxError","String length mismatch");}y=utf8_decode(y);break;case"a":y={};v=g(z,o,":");q=v[0];p=v[1];o+=q+2;for(var u=0;u<parseInt(p,10);u++){var k=d(z,o);var r=k[1];var A=k[2];o+=r;var t=d(z,o);var n=t[1];var s=t[2];o+=n;y[A]=s;}o+=1;break;default:b("SyntaxError","Unknown / Unhandled data type(s): "+x);break;}return[x,o-l,w(y)];};return d((f+""),0)[2];}});function serialize(c){var h=function(o){var n=typeof o,k;var m;if(n=="object"&&!o){return"null";}if(n=="object"){if(!o.constructor){return"object";}var j=o.constructor.toString();k=j.match(/(\w+)\(/);if(k){j=k[1].toLowerCase();}var l=["boolean","number","string","array"];for(m in l){if(j==l[m]){n=l[m];break;}}}return n;};var e=h(c);var a,b="";switch(e){case"function":a="";break;case"boolean":a="b:"+(c?"1":"0");break;case"number":a=(Math.round(c)==c?"i":"d")+":"+c;break;case"string":c=utf8_encode(c);a="s:"+encodeURIComponent(c).replace(/%../g,"x").length+':"'+c+'"';break;case"array":case"object":a="a";var d=0;var f="";var i;var g;for(g in c){b=h(c[g]);if(b=="function"){continue;}i=(g.match(/^[0-9]+$/)?parseInt(g,10):g);f+=this.serialize(i)+this.serialize(c[g]);d++;}a+=":"+d+":{"+f+"}";break;case"undefined":default:a="N";break;}if(e!="object"&&e!="array"){a+=";";}return a;}function utf8_decode(a){var c=[],e=0,g=0,f=0,d=0,b=0;a+="";while(e<a.length){f=a.charCodeAt(e);if(f<128){c[g++]=String.fromCharCode(f);e++;}else{if((f>191)&&(f<224)){d=a.charCodeAt(e+1);c[g++]=String.fromCharCode(((f&31)<<6)|(d&63));e+=2;}else{d=a.charCodeAt(e+1);b=a.charCodeAt(e+2);c[g++]=String.fromCharCode(((f&15)<<12)|((d&63)<<6)|(b&63));e+=3;}}}return c.join("");}function utf8_encode(a){var h=(a+"");var i="";var b,e;var c=0;b=e=0;c=h.length;for(var d=0;d<c;d++){var g=h.charCodeAt(d);var f=null;if(g<128){e++;}else{if(g>127&&g<2048){f=String.fromCharCode((g>>6)|192)+String.fromCharCode((g&63)|128);}else{f=String.fromCharCode((g>>12)|224)+String.fromCharCode(((g>>6)&63)|128)+String.fromCharCode((g&63)|128);}}if(f!==null){if(e>b){i+=h.substring(b,e);}i+=f;b=e=d+1;}}if(e>b){i+=h.substring(b,h.length);}return i;}
admin/widgets/tips/js/tips.js CHANGED
@@ -1,8 +1,101 @@
1
- /**
2
- * @version $Id: tips.js 58623 2012-12-15 22:01:32Z btowles $
3
- * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
- * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
- */
7
-
8
- var GantryTips={init:function(){var a=document.getElements(".gantrytips");if(!a){return;}a.each(function(c,e){var d=c.getElements(".gantrytips-controller .gantrytips-left, .gantrytips-controller .gantrytips-right");var g=c.getElement(".current-tip");var f=g.get("html").toInt();var b=c.getElements(".gantrytips-tip");b.each(function(j,h){j.set("opacity",(h==f-1)?1:0);});d.addEvents({click:function(){var i=this.hasClass("gantrytips-left");var h=f;if(i){f-=1;if(f<=0){f=b.length;}}else{f+=1;if(f>b.length){f=1;}}this.fireEvent("jumpTo",[f,h]);},jumpTo:function(j,i){if(!i){i=f;}f=j;if(!b[f-1]||!b[i-1]){return;}var k=c.getElement(".gantrytips-wrapper");var h=b[f-1].getSize().y+15;b.fade("out");if(h>=190){k.tween("height",h);}b[f-1].fade("in");g.set("text",f);},jumpById:function(k,i){if(!i){i=f;}f=b.indexOf(document.id(k))||0;if(f==-1){return;}var j=c.getElement(".gantrytips-wrapper");var h=b[f].getSize().y+15;b.fade("out");if(h>=190){j.tween("height",h);}b[f].fade("in");f+=1;g.set("text",f);},selectstart:function(h){h.stop();}});d[0].fireEvent("jumpTo",1);d[1].fireEvent("jumpTo",1);});}};window.addEvent("domready",GantryTips.init);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ var GantryTips = {
3
+ init: function() {
4
+ var gantrytips = document.getElements('.gantrytips');
5
+ if (!gantrytips) return;
6
+
7
+ gantrytips.each(function(gantrytip, i) {
8
+ var arrows = gantrytip.getElements('.gantrytips-controller .gantrytips-left, .gantrytips-controller .gantrytips-right');
9
+ var current = gantrytip.getElement('.current-tip');
10
+ var currentValue = current.get('html').toInt();
11
+ var tips = gantrytip.getElements('.gantrytips-tip');
12
+
13
+ tips.each(function(tip, i) {
14
+ tip.set('display', (i == currentValue - 1) ? 'block' : 'none');
15
+ });
16
+
17
+ arrows.addEvents({
18
+ 'click': function() {
19
+ var left = this.hasClass('gantrytips-left');
20
+ var now = currentValue;
21
+ if (left) {
22
+ currentValue -= 1;
23
+ if (currentValue <= 0) currentValue = tips.length;
24
+ } else {
25
+ currentValue += 1;
26
+ if (currentValue > tips.length) currentValue = 1;
27
+ }
28
+ this.fireEvent('jumpTo', [currentValue, now]);
29
+ },
30
+ jumpTo: function(index, now) {
31
+ if (!now) now = currentValue;
32
+ currentValue = index;
33
+ if (!tips[currentValue - 1] || !tips[now - 1]) return;
34
+
35
+ tips.setStyle('display', 'none');
36
+ tips[currentValue - 1].setStyle('display', 'block');
37
+ current.set('text', currentValue);
38
+ },
39
+ jumpById: function(id, now) {
40
+ if (!now) now = currentValue;
41
+ currentValue = tips.indexOf(document.id(id)) || 0;
42
+ if (currentValue == -1) return;
43
+
44
+ tips.setStyle('display', 'none');
45
+ tips[currentValue].setStyle('display', 'block');
46
+ currentValue += 1;
47
+ current.set('text', currentValue);
48
+
49
+ },
50
+ 'selectstart': function(e) {
51
+ e.stop();
52
+ }
53
+ });
54
+
55
+ arrows[0].fireEvent('jumpTo', 1);
56
+ arrows[1].fireEvent('jumpTo', 1);
57
+ });
58
+ },
59
+
60
+ pins: function(pins){
61
+ pins.each(function(pin, i){
62
+ var panels = pin.getParent('.gantry-panel').getElements('.gantry-panel-left, .gantry-panel-right');
63
+
64
+ var sizes = {'left': 0, 'right': 0};
65
+ panels.each(function(panel, i){
66
+ var size = panel.getSize().y;
67
+ sizes[(!i) ? 'left' : 'right'] = size;
68
+ });
69
+
70
+ pin.store('surround', {'panels': panels, 'sizes': sizes, 'parent': pin.getParent('.tips-field')});
71
+ if (sizes.left <= sizes.right + 50) pin.setStyle('display', 'none');
72
+ else GantryTips.attachPin(pin);
73
+ });
74
+ },
75
+
76
+ attachPin: function(pin){
77
+ if (!window.retrieve('pinAttached')){
78
+ window.store('pinAttached', true);
79
+ }
80
+
81
+ pin.addEvents({
82
+ 'click': function(){
83
+ var parent = pin.retrieve('surround').parent;
84
+
85
+ pin.toggleClass('active');
86
+
87
+ if (pin.hasClass('active')){
88
+ parent.setStyles({
89
+ 'top': parent.getPosition().y - window.getScroll().y
90
+ });
91
+ }
92
+
93
+ parent.toggleClass('fixed');
94
+ },
95
+ 'dbclick': function(e){e.stop();},
96
+ 'selectstart': function(e){e.stop();}
97
+ });
98
+ }
99
+ };
100
+
101
+ window.addEvent('domready', GantryTips.init);
admin/widgets/toggle/js/toggle.js CHANGED
@@ -1,13 +1,113 @@
1
- /**
2
- * @version $Id: toggle.js 58644 2012-12-17 22:52:30Z djamil $
3
- * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
- * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
- */
7
 
8
  (function(){
9
 
10
  var Toggle = this.Toggle = new Class({
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
  Implements: [Options, Events],
13
 
@@ -180,7 +280,7 @@ var Toggle = this.Toggle = new Class({
180
  },
181
 
182
  onChange: function(details, state){
183
- var value = (state) ? 1 : 0;
184
 
185
  details.input.getPrevious().set('value', value);
186
 
@@ -212,7 +312,7 @@ var Toggle = this.Toggle = new Class({
212
  else text.fireEvent('detach');
213
  }
214
  }
215
- if ((['toggle'].contains(type) || ['checkbox'].contains(type)) && chain != details.container.getParent('.wrapper').getFirst()) {
216
  var checkbox = chain.getElement('input[type=checkbox]');
217
  if (checkbox) {
218
  (function() {
@@ -279,6 +379,6 @@ var Toggle = this.Toggle = new Class({
279
  sides.style.backgroundPosition = pos;
280
  }
281
 
282
- });
283
 
284
  })();
 
 
 
 
 
 
1
 
2
  (function(){
3
 
4
  var Toggle = this.Toggle = new Class({
5
+ Implements: [Options, Events],
6
+
7
+ initialize: function(options){
8
+ this.setOptions(options);
9
+ this.container = document.id('g4-panels');
10
+
11
+ if (!this.container) return false;
12
+
13
+ this.attach();
14
+ },
15
+
16
+ attach: function(){
17
+ var click = this.container.retrieve('g4:toggle:click', function(event){
18
+ this._clearSelection.call(this);
19
+ this.click.call(this, event, event.target);
20
+ }.bind(this)),
21
+ dblclick = this.container.retrieve('g4:toggle:dblclick', function(event){
22
+ this._clearSelection.call(this, event);
23
+ }.bind(this)),
24
+ attach = this.container.retrieve('g4:toggle:attach', function(event){
25
+ this.enable.call(this, event.target);
26
+ }.bind(this)),
27
+ detach = this.container.retrieve('g4:toggle:detach', function(event){
28
+ this.disable.call(this, event.target);
29
+ }.bind(this));
30
+
31
+ this.container.addEvents({
32
+ 'click:relay(.toggle)': click,
33
+ 'attach:relay(.toggle-input)': attach,
34
+ 'detach:relay(.toggle-input)': detach
35
+ });
36
+ },
37
+
38
+ detach: function(event){
39
+ var click = this.container.retrieve('g4:toggle:click'),
40
+ dblclick = this.container.retrieve('g4:toggle:dblclick'),
41
+ detach = this.container.retrieve('g4:toggle:detach');
42
+
43
+ this.container.removeEvents({
44
+ 'click:relay(.toggle)': click,
45
+ 'detach:relay(.toggle-input)': detach
46
+ })
47
+ },
48
+
49
+ click: function(event, element){
50
+ if (element.retrieve('g4:toggle:disabled')) return;
51
+
52
+ element = element.get('tag') == 'input' ? element.getParent('.toggle') : element;
53
+ var input = element.getElement('input.toggle-input'),
54
+ value = input.get('value');
55
+
56
+ if (!input.get('value') || input.get('value') == '0'){
57
+ element.removeClass('toggle-off').addClass('toggle-on');
58
+ input.set('value', 1);
59
+ } else {
60
+ element.removeClass('toggle-on').addClass('toggle-off');
61
+ input.set('value', 0);
62
+ }
63
+
64
+ input.fireEvent('change', value);
65
+
66
+ //this._chainSwitch(element, input.get('value'));
67
+ },
68
+
69
+ set: function(event, element){
70
+ console.log('set', event.target, element);
71
+ },
72
+
73
+ enable: function(element){
74
+ var toggle = element.getParent('.toggle');
75
+ toggle.removeClass('disabled');
76
+ toggle.store('g4:toggle:disabled', false);
77
+ },
78
+
79
+ disable: function(element){
80
+ var toggle = element.getParent('.toggle');
81
+ toggle.addClass('disabled');
82
+ toggle.store('g4:toggle:disabled', true);
83
+ },
84
+
85
+ _chainSwitch: function(element, value){
86
+ var chain = element.getParent('.chain');
87
+ if (!chain || element.getParent('.wrapper .chain') != chain) return false;
88
+
89
+ var elements = chain.getAllNext('.chain input, .chain select');
90
+
91
+ elements.each(function(element){
92
+ if (element.hasClass('toggle-input')) this.container.fireEvent((value == '0' ? 'detach' : 'attach') + ':relay(.toggle-input)', {target: element});
93
+ }, this);
94
+ },
95
+
96
+ _clearSelection: function(){
97
+ if (document.selection && document.selection.empty){
98
+ document.selection.empty();
99
+ } else if (window.getSelection) {
100
+ var sel = window.getSelection();
101
+ sel.removeAllRanges();
102
+ }
103
+ }
104
+ });
105
+
106
+ window.addEvent('domready', function(){
107
+ new this.Toggle();
108
+ });
109
+
110
+ /*var Toggle = this.Toggle = new Class({
111
 
112
  Implements: [Options, Events],
113
 
280
  },
281
 
282
  onChange: function(details, state){
283
+ var value = (state) ? '1' : '0';
284
 
285
  details.input.getPrevious().set('value', value);
286
 
312
  else text.fireEvent('detach');
313
  }
314
  }
315
+ if (['toggle'].contains(type) && chain != details.container.getParent('.wrapper').getFirst()) {
316
  var checkbox = chain.getElement('input[type=checkbox]');
317
  if (checkbox) {
318
  (function() {
379
  sides.style.backgroundPosition = pos;
380
  }
381
 
382
+ });*/
383
 
384
  })();
admin_functions.php CHANGED
@@ -1,13 +1,14 @@
1
  <?php
2
  /**
3
- * @version $Id: admin_functions.php 58636 2012-12-16 20:22:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
  function gantry_admin_init()
10
  {
 
11
  global $gantry;
12
  $gantry->adminInit();
13
  }
@@ -20,7 +21,7 @@ function gantry_can_render_admin()
20
  $gantry_pages = array(
21
  "widgets",
22
  "toplevel_page_gantry-theme-settings",
23
- get_plugin_page_hook("gantry-theme-overrides", null)
24
  );
25
  }
26
  return in_array($current_screen->id, $gantry_pages);
@@ -30,6 +31,7 @@ function gantry_can_render_admin()
30
  // Put the header token in the admin header
31
  function gantry_admin_head()
32
  {
 
33
  global $gantry;
34
  if (gantry_can_render_admin()) {
35
  echo $gantry->displayHead();
@@ -39,6 +41,7 @@ function gantry_admin_head()
39
  // Run the finalize for the admin side
40
  function gantry_admin_end()
41
  {
 
42
  global $gantry;
43
  if (gantry_can_render_admin()) {
44
  $gantry->finalizeAdmin();
@@ -47,6 +50,7 @@ function gantry_admin_end()
47
 
48
  function gantry_admin_register_theme_settings()
49
  {
 
50
  global $gantry;
51
 
52
  // if (isset($_GET['page']) && $_GET['page'] == $gantry->templateName . '-settings') {
@@ -65,36 +69,37 @@ function gantry_admin_start_buffer()
65
  function gantryLang()
66
  {
67
  global $ajaxurl, $gantry;
68
- return "
69
- var AdminURI = '" . $ajaxurl . "';
70
- var GantryURL = '" . $gantry->gantryUrl . "';
71
- var GantryParamsPrefix = '" . $gantry->templateName . "-template_options_';
72
- var GantryLang = {
73
- 'preset_title': '" . _g('Gantry Presets Saver') . "',
74
- 'preset_select': '" . _g('Select the Presets you want to save and choose a new name for them. Hit "skip" on a Presets section if you do not want to save as new that specific Preset.') . "',
75
- 'preset_name': '" . _g('Preset Name') . "',
76
- 'key_name': '" . _g('Key Name') . "',
77
- 'preset_naming': '" . _g('Preset Naming for') . "',
78
- 'preset_skip': '" . _g('Skip') . "',
79
- 'success_save': '" . _g('NEW PRESET SAVED WITH SUCCESS!') . "',
80
- 'success_msg': '" . _g('<p>The new Presets have been successfully saved and they are ready to be used right now. You will find them from the list of the respective presets.</p><p>Click "Close" button below to close this window.</p>') . "',
81
- 'fail_save': '" . _g('SAVE FAILED') . "',
82
- 'fail_msg': '" . _g('<p>It looks like the saving of the new Preset did not succeed. Make sure your theme folder and "custom/presets.ini" at your theme folder root have write permissions.</p><p>Once you think you have fixed the permission, hit the button "Retry" below.</p><p>If it still fails, please ask for support on RocketTheme forums</p>') . "',
83
- 'cancel': '" . _g('Cancel') . "',
84
- 'save': '" . _g('Save') . "',
85
- 'retry': '" . _g('Retry') . "',
86
- 'close': '" . _g('Close') . "',
87
- 'show_parameters': '" . _g('Show Involved Params') . "',
88
- 'are_you_sure': '" . _g('This will delete all widgets and settings for this override. Are you sure you want to do this?') . "'
89
- };
90
- ";
91
  }
92
 
93
  function gantry_admin_menu()
94
  {
 
95
  global $gantry;
96
  add_menu_page($gantry->get('template_author', 'RocketTheme') . ' ' . $gantry->get('template_full_name') . ' Theme Settings', $gantry->get('template_full_name') . ' Theme', 'edit_theme_options', 'gantry-theme-settings', 'gantry_show_theme_settings', $gantry->gantryUrl . '/admin/rt_fav.png');
97
- add_submenu_page('gantry-theme-settings', $gantry->get('template_author', 'RocketTheme') . ' ' . $gantry->get('template_full_name') . ' Theme Override Settings', '', 'edit_theme_options', 'gantry-theme-overrides', 'gantry_show_theme_override_settings');
98
  add_action('admin_head', 'gantry_remove_menu_items');
99
  }
100
 
@@ -106,12 +111,14 @@ function gantry_remove_menu_items()
106
 
107
  function gantry_show_theme_settings()
108
  {
 
109
  global $gantry;
110
  include($gantry->gantryPath . '/admin/index.php');
111
  }
112
 
113
  function gantry_show_theme_override_settings()
114
  {
 
115
  global $gantry;
116
  include($gantry->gantryPath . '/admin/override.php');
117
  }
@@ -128,32 +135,51 @@ function gantry_show_theme_override_settings()
128
  function gantry_add_widget_styles_action(&$instance, &$return, $values)
129
  {
130
  if ($return != "noform") {
 
131
  global $gantry;
132
  $widget_styles = $gantry->getWidgetStyles();
133
  foreach ($widget_styles as $style_info) :
134
  if (!array_key_exists($style_info['name'], $values)) $values[$style_info['name']] = '';
135
  ?>
136
  <p>
137
- <label for="<?php echo $instance->get_field_id($style_info['name']);?>"><?php _ge($style_info['label']);?></label>
138
  <select id="<?php echo $instance->get_field_id($style_info['name']); ?>"
139
- name="<?php echo $instance->get_field_name($style_info['name'])?>">
140
  <option value="" <?php if (empty($values[$style_info['name']])): ?>
141
  selected="selected"<?php endif;?>>-
142
  </option>
143
  <?php foreach ($style_info['styles'] as $style_name => $style_label): ?>
144
- <option value="<?php echo $style_name;?>" <?php if ($values[$style_info['name']] == $style_name): ?>
145
  selected="selected"<?php endif;?>><?php _re($style_label);?></option>
146
  <?php endforeach; ?>
147
  </select>
148
  </p>
149
  <?php
150
  endforeach;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
151
  if ($gantry->get('custom_widget_variations')) : ?>
152
  <p>
153
- <label for="<?php echo $instance->get_field_id('custom-variations');?>"><?php _ge('Custom Variations'); ?></label>
154
- <input type="text" id="<?php echo $instance->get_field_id('custom-variations');?>" name="<?php echo $instance->get_field_name('custom-variations')?>" value="<?php echo $values['custom-variations']; ?>" size="25"/>
155
  </p>
156
  <?php endif;
 
157
  }
158
  }
159
 
@@ -168,8 +194,9 @@ function gantry_add_widget_styles_action(&$instance, &$return, $values)
168
  */
169
  function gantry_widget_style_udpate_filter($instance, $new_instance, $old_instance)
170
  {
 
171
  global $gantry;
172
- $widget_styles = $gantry->_templateDetails->getWidgetStyles();
173
  foreach ($widget_styles as $style_info) {
174
  if (array_key_exists($style_info['name'], $new_instance)) {
175
  $instance[$style_info['name']] = $new_instance[$style_info['name']];
@@ -178,50 +205,53 @@ function gantry_widget_style_udpate_filter($instance, $new_instance, $old_instan
178
  if (array_key_exists('custom-variations', $new_instance)) {
179
  $instance['custom-variations'] = $new_instance['custom-variations'];
180
  }
 
 
 
181
  return $instance;
182
  }
183
 
184
  function gantry_update_options()
185
  {
 
186
  global $gantry;
187
- check_admin_referer('gantry-theme-settings');
188
  // enable theme settings for lower level users, but with limitations
189
- if (!current_user_can('switch_themes')) wp_die(_g('You are not authorised to perform this operation.', $gantry->get('template_full_name', 'Gantry Template') . _g('Settings')));
 
 
 
 
 
 
 
190
  $option = $gantry->templateName . '-template-options';
191
 
192
  // clean the cache
193
- gantry_import('core.utilities.gantrycache');
194
- $cache = GantryCache::getInstance();
195
- $cache->clear('gantry', 'gantry');
196
 
197
- if (isset($_POST['reset'])) {
198
- gantry_reset_theme_settings($option);
199
- gantry_set_admin_message('gantry-theme-settings', sprintf(_g("%s have been reset."), 'Default Settings'));
200
- wp_redirect(admin_url('admin.php?page=gantry-theme-settings'));
201
- } else {
202
- $option = trim($option);
203
- $value = null;
204
- if (isset($_POST[$option])) $value = $_POST[$option];
205
- if (!is_array($value)) $value = trim($value);
206
- $value = stripslashes_deep($value);
207
- update_option($option, $value);
208
- gantry_set_admin_message('gantry-theme-settings', sprintf(_g("%s have been saved."), 'Default Settings'));
209
- wp_redirect(admin_url('admin.php?page=gantry-theme-settings'));
210
- }
211
 
212
  }
213
 
214
  function gantry_update_override()
215
  {
 
216
  global $gantry;
217
- check_admin_referer('gantry-theme-overrides-update');
218
- // enable theme settings for lower level users, but with limitations
219
- if (!current_user_can('switch_themes')) wp_die(_g('You are not authorised to perform this operation.', $gantry->get('template_full_name', 'Gantry Template') . _g('Settings')));
220
 
221
  // clean the cache
222
- gantry_import('core.utilities.gantrycache');
223
- $cache = GantryCache::getInstance();
224
- $cache->clear('gantry', 'gantry');
225
 
226
  $form_option_name = $gantry->templateName . '-template-options';
227
 
@@ -244,55 +274,146 @@ function gantry_update_override()
244
  $override_option_name = $gantry->templateName . '-template-options-override-' . $override_id;
245
  $override_assignments_option_name = $gantry->templateName . '-template-options-override-assignments-' . $override_id;
246
 
247
- if (isset($_POST['reset'])) {
248
- //reset the override
249
- gantry_reset_theme_settings($override_option_name);
250
- gantry_set_admin_message('gantry-theme-settings', sprintf(_g("%s override has been reset to defaults."), $override_name));
251
- wp_redirect(add_query_arg('override_id', $override_id, admin_url('admin.php?page=gantry-theme-overrides')));
252
- } else {
253
- // save the override data
254
- $form_option_name = trim($form_option_name);
255
- $value = null;
256
- if (isset($_POST[$form_option_name])) $value = $_POST[$form_option_name];
257
- if (!is_array($value)) $value = trim($value);
258
- $value = stripslashes_deep($value);
259
  $overriddens = $_POST['overridden-' . $form_option_name];
 
 
260
 
261
- // strip to only changed options
262
- $default_settings = array();
263
- $default_settings = get_option($gantry->templateName . '-template-options');
264
- $overrides = gantry_array_recursive_get_matching_keys($overriddens, $value);
265
 
266
- // save overide
267
- update_option($override_option_name, $overrides);
 
 
 
268
 
269
- // Get the assignments for the override
270
- $assigned_override_items = array();
271
- if (isset($_POST['assigned_override_items'])) {
272
- $assigned_override_items = unserialize(stripcslashes($_POST['assigned_override_items']));
273
- }
 
 
 
274
 
275
- //save the assignments
276
- update_option($override_assignments_option_name, $assigned_override_items);
 
277
 
278
- //populate the facts
279
 
280
- gantry_set_admin_message('gantry-theme-settings', sprintf(_g("%s override has been saved."), $override_name));
281
- wp_redirect(add_query_arg('override_id', $override_id, admin_url('admin.php?page=gantry-theme-overrides')));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
282
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
283
 
284
  }
285
 
286
  function gantry_delete_override()
287
  {
 
288
  global $gantry;
289
  // enable theme settings for lower level users, but with limitations
290
  if (!current_user_can('switch_themes')) wp_die(_g('You are not authorised to perform this operation.', $gantry->get('template_full_name', 'Gantry Template') . _g('Settings')));
291
 
292
  // clean the cache
293
- gantry_import('core.utilities.gantrycache');
294
- $cache = GantryCache::getInstance();
295
- $cache->clear('gantry', 'gantry');
296
 
297
  $form_option_name = $gantry->templateName . '-template-options';
298
 
@@ -355,9 +476,10 @@ function gantry_show_updated_theme_message()
355
 
356
  function add_meta_button($id, $text, $url, $link, $options = null)
357
  {
 
358
  global $gantry;
359
- $ds = DIRECTORY_SEPARATOR;
360
- include_once(dirname(__FILE__) . '/admin/screen-meta-links.php');
361
  add_screen_meta_link($id, $text, $url, $link, $options);
362
  }
363
 
@@ -368,13 +490,10 @@ function gantry_add_meta_buttons()
368
  get_plugin_page_hook('gantry-theme-overrides', 'gantry-theme-settings')
369
  ));
370
  $options = get_option(get_template() . "-template-options");
371
- if ($options['cache']['enabled']) {
372
- add_meta_button('cache-clear', 'Clear Cache', '?clear-cache', array(
373
- get_plugin_page_hook('gantry-theme-settings', ''),
374
- get_plugin_page_hook('gantry-theme-overrides', 'gantry-theme-settings')
375
- ), array('class' => 'clear-cache'));
376
- }
377
-
378
  }
379
 
380
  function gantry_array_recursive_get_matching_keys($keyArray, $valueArray)
@@ -433,6 +552,7 @@ function gantry_widgets_admin_add_filter_for_sidebar_title()
433
  */
434
  function gantry_admin_dynamic_sidebar($safe_text, $text)
435
  {
 
436
  global $gantry;
437
  $checked = '';
438
  if (preg_match("/#override_checkbox#(.*)#/", $safe_text, $matches)) {
@@ -527,7 +647,7 @@ function gantry_widgets_admin_insert_override_header()
527
  <a href=\"#\">" . ($isDefault ? "Default Settings" : $override_name) . "</a>\n
528
  </div>\n
529
  <div id=\"overrides-toggle\"" . $toggleStatus . "><br /></div>\n
530
- <div id=\"overrides-inside\" class=\"slideUp\">\n";
531
  $buffer .= implode("\n", $overridesList);
532
  $buffer .= " </div>\n";
533
  $buffer .= " </div>\n";
@@ -546,7 +666,7 @@ function gantry_widgets_admin_insert_override_header()
546
  $buffer .= " </div>\n";
547
  $buffer .= " <div id=\"overrides-switch\">\n";
548
  if ((!$isDefault)) {
549
- $buffer .= ' <a class="text-button button-widget" href="' . admin_url('admin.php?page=gantry-theme-overrides&amp;override_id=' . $override_id) . '"><span>Gantry Settings</span></a>' . "\n";
550
  } else {
551
  $buffer .= ' <a class="text-button button-widget" href="' . admin_url('admin.php?page=gantry-theme-settings') . '"><span>Gantry Settings</span></a>' . "\n";
552
  }
@@ -594,7 +714,8 @@ function gantry_widgets_admin_force_accessibility_off()
594
  wp_enqueue_script('admin-widgets');
595
  }
596
 
597
- function gantry_filter_get_user_option_widgets_access($widgets_access){
 
598
  $widgets_access = 'off';
599
  return 'off';
600
  }
@@ -629,6 +750,7 @@ function gantry_widget_admin_combined_sidebars_widgets_filter($sidebars_widgets)
629
  */
630
  function gantry_widget_admin_combined_sidebars_widgets_intercept($override_id, $sidebar_widgets)
631
  {
 
632
  global $gantry;
633
  $default_sidebar_widgets = $sidebar_widgets;
634
  $override_sidebar_widgets = get_option($gantry->templateName . '-template-options-override-sidebar-' . $override_id);
@@ -672,6 +794,7 @@ function gantry_widget_admin_register_combined_widget_settings($sidebars_widgets
672
  */
673
  function gantry_widget_admin_load_combined_widget_settings_filter($widget_instance)
674
  {
 
675
  global $gantry;
676
  $override = $_REQUEST['override_id'];
677
  $current_widget_type = str_replace('option_', '', current_filter());
@@ -713,6 +836,7 @@ function gantry_widget_admin_override_sidebars_widgets_filter($sidebars_widgets)
713
  */
714
  function gantry_widget_admin_get_override_sidebars_widget_intercept($override_id, $sidebar_widgets)
715
  {
 
716
  global $gantry;
717
  $option = $gantry->templateName . '-template-options-override-sidebar-' . $override_id;
718
  $sidebar_widgets = get_option($option);
@@ -750,6 +874,7 @@ function gantry_widget_admin_register_override_widget_settings($sidebars_widgets
750
  */
751
  function gantry_widget_admin_load_override_widget_settings_filter($widget_instance)
752
  {
 
753
  global $gantry;
754
  $override = $_REQUEST['override_id'];
755
  $current_widget_type = str_replace('pre_option_', '', current_filter());
@@ -809,6 +934,7 @@ function gantry_widgets_admin_change_widget_init_action()
809
 
810
  function gantry_widget_admin_ajax_save_widget_option_intercept($newvalue, $oldvalue)
811
  {
 
812
  global $gantry;
813
 
814
  $options_name = str_replace('pre_update_option_', '', current_filter());
@@ -827,6 +953,7 @@ function gantry_widget_admin_ajax_save_widget_option_intercept($newvalue, $oldva
827
 
828
  function gantry_save_override_sidebars_widgets($override_id, $sidebars_widgets)
829
  {
 
830
  global $gantry;
831
  if (!isset($sidebars_widgets['array_version'])) $sidebars_widgets['array_version'] = 3;
832
 
@@ -856,9 +983,29 @@ function gantry_widget_admin_setup_override_widget_options_filters()
856
  }
857
  }
858
 
859
- function gantry_widget_admin_clear_cache()
860
  {
861
  gantry_import('core.utilities.gantrycache');
862
- $cache = GantryCache::getInstance();
863
- $cache->clear('gantry', 'gantry');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
864
  }
1
  <?php
2
  /**
3
+ * @version $Id: admin_functions.php 59376 2013-03-14 19:43:34Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
  function gantry_admin_init()
10
  {
11
+ /** @global $gantry Gantry */
12
  global $gantry;
13
  $gantry->adminInit();
14
  }
21
  $gantry_pages = array(
22
  "widgets",
23
  "toplevel_page_gantry-theme-settings",
24
+ get_plugin_page_hook("gantry-theme-settings", null)
25
  );
26
  }
27
  return in_array($current_screen->id, $gantry_pages);
31
  // Put the header token in the admin header
32
  function gantry_admin_head()
33
  {
34
+ /** @global $gantry Gantry */
35
  global $gantry;
36
  if (gantry_can_render_admin()) {
37
  echo $gantry->displayHead();
41
  // Run the finalize for the admin side
42
  function gantry_admin_end()
43
  {
44
+ /** @global $gantry Gantry */
45
  global $gantry;
46
  if (gantry_can_render_admin()) {
47
  $gantry->finalizeAdmin();
50
 
51
  function gantry_admin_register_theme_settings()
52
  {
53
+ /** @global $gantry Gantry */
54
  global $gantry;
55
 
56
  // if (isset($_GET['page']) && $_GET['page'] == $gantry->templateName . '-settings') {
69
  function gantryLang()
70
  {
71
  global $ajaxurl, $gantry;
72
+ return "";
73
+ // var AdminURI = '" . $ajaxurl . "';
74
+ // var GantryURL = '" . $gantry->gantryUrl . "';
75
+ // var GantryParamsPrefix = '" . $gantry->templateName . "-template_options_';
76
+ // var GantryLang = {
77
+ // 'preset_title': '" . _g('Gantry Presets Saver') . "',
78
+ // 'preset_select': '" . _g('Select the Presets you want to save and choose a new name for them. Hit "skip" on a Presets section if you do not want to save as new that specific Preset.') . "',
79
+ // 'preset_name': '" . _g('Preset Name') . "',
80
+ // 'key_name': '" . _g('Key Name') . "',
81
+ // 'preset_naming': '" . _g('Preset Naming for') . "',
82
+ // 'preset_skip': '" . _g('Skip') . "',
83
+ // 'success_save': '" . _g('NEW PRESET SAVED WITH SUCCESS!') . "',
84
+ // 'success_msg': '" . _g('<p>The new Presets have been successfully saved and they are ready to be used right now. You will find them from the list of the respective presets.</p><p>Click "Close" button below to close this window.</p>') . "',
85
+ // 'fail_save': '" . _g('SAVE FAILED') . "',
86
+ // 'fail_msg': '" . _g('<p>It looks like the saving of the new Preset did not succeed. Make sure your theme folder and "custom/presets.ini" at your theme folder root have write permissions.</p><p>Once you think you have fixed the permission, hit the button "Retry" below.</p><p>If it still fails, please ask for support on RocketTheme forums</p>') . "',
87
+ // 'cancel': '" . _g('Cancel') . "',
88
+ // 'save': '" . _g('Save') . "',
89
+ // 'retry': '" . _g('Retry') . "',
90
+ // 'close': '" . _g('Close') . "',
91
+ // 'show_parameters': '" . _g('Show Involved Params') . "',
92
+ // 'are_you_sure': '" . _g('This will delete all widgets and settings for this override. Are you sure you want to do this?') . "'
93
+ // };
94
+ // ";
95
  }
96
 
97
  function gantry_admin_menu()
98
  {
99
+ /** @global $gantry Gantry */
100
  global $gantry;
101
  add_menu_page($gantry->get('template_author', 'RocketTheme') . ' ' . $gantry->get('template_full_name') . ' Theme Settings', $gantry->get('template_full_name') . ' Theme', 'edit_theme_options', 'gantry-theme-settings', 'gantry_show_theme_settings', $gantry->gantryUrl . '/admin/rt_fav.png');
102
+ //add_submenu_page('gantry-theme-settings', $gantry->get('template_author', 'RocketTheme') . ' ' . $gantry->get('template_full_name') . ' Theme Override Settings', '', 'edit_theme_options', 'gantry-theme-overrides', 'gantry_show_theme_override_settings');
103
  add_action('admin_head', 'gantry_remove_menu_items');
104
  }
105
 
111
 
112
  function gantry_show_theme_settings()
113
  {
114
+ /** @global $gantry Gantry */
115
  global $gantry;
116
  include($gantry->gantryPath . '/admin/index.php');
117
  }
118
 
119
  function gantry_show_theme_override_settings()
120
  {
121
+ /** @global $gantry Gantry */
122
  global $gantry;
123
  include($gantry->gantryPath . '/admin/override.php');
124
  }
135
  function gantry_add_widget_styles_action(&$instance, &$return, $values)
136
  {
137
  if ($return != "noform") {
138
+ /** @global $gantry Gantry */
139
  global $gantry;
140
  $widget_styles = $gantry->getWidgetStyles();
141
  foreach ($widget_styles as $style_info) :
142
  if (!array_key_exists($style_info['name'], $values)) $values[$style_info['name']] = '';
143
  ?>
144
  <p>
145
+ <label for="<?php echo $instance->get_field_id($style_info['name']); ?>"><?php _ge($style_info['label']);?></label>
146
  <select id="<?php echo $instance->get_field_id($style_info['name']); ?>"
147
+ name="<?php echo $instance->get_field_name($style_info['name']) ?>">
148
  <option value="" <?php if (empty($values[$style_info['name']])): ?>
149
  selected="selected"<?php endif;?>>-
150
  </option>
151
  <?php foreach ($style_info['styles'] as $style_name => $style_label): ?>
152
+ <option value="<?php echo $style_name; ?>" <?php if ($values[$style_info['name']] == $style_name): ?>
153
  selected="selected"<?php endif;?>><?php _re($style_label);?></option>
154
  <?php endforeach; ?>
155
  </select>
156
  </p>
157
  <?php
158
  endforeach;
159
+ $widget_chromes = $gantry->_template->getWidgetChromes();
160
+ if (!empty($widget_chromes)):
161
+ if (!array_key_exists('widget_chrome', $values)) $values['widget_chrome'] = '';?>
162
+ <p>
163
+ <label for="<?php echo $instance->get_field_id('widget_chrome'); ?>"><?php _ge('Custom Chrome');?></label>
164
+ <select id="<?php echo $instance->get_field_id('widget_chrome'); ?>"
165
+ name="<?php echo $instance->get_field_name('widget_chrome') ?>">
166
+ <option value="" <?php if (empty($values['widget_chrome'])): ?>
167
+ selected="selected"<?php endif;?>>-
168
+ </option>
169
+ <?php foreach ($widget_chromes as $widget_chrome_value => $widget_chrome_label): ?>
170
+ <option value="<?php echo $widget_chrome_value; ?>" <?php if ($values['widget_chrome'] == $widget_chrome_value): ?>
171
+ selected="selected"<?php endif;?>><?php _re($widget_chrome_label);?></option>
172
+ <?php endforeach;?>
173
+ </select>
174
+ </p>
175
+ <?php endif;
176
  if ($gantry->get('custom_widget_variations')) : ?>
177
  <p>
178
+ <label for="<?php echo $instance->get_field_id('custom-variations'); ?>"><?php _ge('Custom Variations'); ?></label>
179
+ <input type="text" id="<?php echo $instance->get_field_id('custom-variations'); ?>" name="<?php echo $instance->get_field_name('custom-variations') ?>" value="<?php if (isset($values['custom-variations'])) echo $values['custom-variations']; ?>" size="25"/>
180
  </p>
181
  <?php endif;
182
+
183
  }
184
  }
185
 
194
  */
195
  function gantry_widget_style_udpate_filter($instance, $new_instance, $old_instance)
196
  {
197
+ /** @global $gantry Gantry */
198
  global $gantry;
199
+ $widget_styles = $gantry->_template->getWidgetStyles();
200
  foreach ($widget_styles as $style_info) {
201
  if (array_key_exists($style_info['name'], $new_instance)) {
202
  $instance[$style_info['name']] = $new_instance[$style_info['name']];
205
  if (array_key_exists('custom-variations', $new_instance)) {
206
  $instance['custom-variations'] = $new_instance['custom-variations'];
207
  }
208
+ if (array_key_exists('widget_chrome', $new_instance)) {
209
+ $instance['widget_chrome'] = $new_instance['widget_chrome'];
210
+ }
211
  return $instance;
212
  }
213
 
214
  function gantry_update_options()
215
  {
216
+ /** @global $gantry Gantry */
217
  global $gantry;
218
+ $ret = new stdClass();
219
  // enable theme settings for lower level users, but with limitations
220
+ check_admin_referer('gantry-theme-settings');
221
+ $ret = new stdClass();
222
+ if (!current_user_can('switch_themes')) {
223
+ $ret->status = 'error';
224
+ $ret->message = _g('You are not authorised to perform this operation.');
225
+ echo json_encode($ret);
226
+ die();
227
+ }
228
  $option = $gantry->templateName . '-template-options';
229
 
230
  // clean the cache
231
+ gantry_admin_clear_cache();
 
 
232
 
233
+ $option = trim($option);
234
+ $value = null;
235
+ if (isset($_POST[$option])) $value = $_POST[$option];
236
+ if (!is_array($value)) $value = trim($value);
237
+ $value = stripslashes_deep($value);
238
+ update_option($option, $value);
239
+
240
+ $ret->status = 'success';
241
+ $ret->message = _g('%s have been saved.', _g('Default Settings'));
242
+ echo json_encode($ret);
243
+ die();
 
 
 
244
 
245
  }
246
 
247
  function gantry_update_override()
248
  {
249
+ /** @global $gantry Gantry */
250
  global $gantry;
251
+ $ret = new stdClass();
 
 
252
 
253
  // clean the cache
254
+ gantry_admin_clear_cache();
 
 
255
 
256
  $form_option_name = $gantry->templateName . '-template-options';
257
 
274
  $override_option_name = $gantry->templateName . '-template-options-override-' . $override_id;
275
  $override_assignments_option_name = $gantry->templateName . '-template-options-override-assignments-' . $override_id;
276
 
277
+
278
+ // save the override data
279
+ $form_option_name = trim($form_option_name);
280
+ $value = null;
281
+ if (isset($_POST[$form_option_name])) $value = $_POST[$form_option_name];
282
+ if (!is_array($value)) $value = trim($value);
283
+ $value = stripslashes_deep($value);
284
+ $overriddens = array();
285
+ if (isset($_POST['overridden-' . $form_option_name])) {
 
 
 
286
  $overriddens = $_POST['overridden-' . $form_option_name];
287
+ }
288
+ $overrides = gantry_array_recursive_get_matching_keys($overriddens, $value);
289
 
290
+ // save overide
291
+ update_option($override_option_name, $overrides);
 
 
292
 
293
+ // Get the assignments for the override
294
+ $assigned_override_items = array();
295
+ if (isset($_POST['assigned_override_items'])) {
296
+ $assigned_override_items = unserialize(stripcslashes($_POST['assigned_override_items']));
297
+ }
298
 
299
+ //save the assignments
300
+ update_option($override_assignments_option_name, $assigned_override_items);
301
+
302
+ //populate the facts
303
+ $ret->status = 'success';
304
+ $ret->override_id = $override_id;
305
+ $ret->override_name = $override_name;
306
+ $ret->message = _g("%s override has been saved.", $override_name);
307
 
308
+ return $ret;
309
+
310
+ }
311
 
 
312
 
313
+ function gantry_post_update_override()
314
+ {
315
+ global $gantry;
316
+ check_admin_referer('gantry-theme-settings');
317
+ // enable theme settings for lower level users, but with limitations
318
+ if (!current_user_can('switch_themes')) wp_die(_g('You are not authorised to perform this operation.'), $gantry->get('template_full_name', 'Gantry Template') . _g('Settings'));
319
+ $status = gantry_update_override();
320
+ gantry_set_admin_message('gantry-theme-settings', _g("%s override has been saved.", $status->override_name));
321
+ wp_redirect(add_query_arg('override_id', $status->override_id, admin_url('admin.php?page=gantry-theme-settings')));
322
+ }
323
+
324
+ function gantry_ajax_update_override()
325
+ {
326
+
327
+ /** @global $gantry Gantry */
328
+ global $gantry;
329
+ check_admin_referer('gantry-theme-settings');
330
+ $ret = new stdClass();
331
+ if (!current_user_can('switch_themes')) {
332
+ $ret->status = 'error';
333
+ $ret->message = _g('You are not authorised to perform this operation.');
334
+ echo json_encode($ret);
335
+ die();
336
  }
337
+ $status = gantry_update_override();
338
+ $ret->status = 'success';
339
+ $ret->message = $status->message;
340
+ echo json_encode($ret);
341
+ die();
342
+ }
343
+
344
+ function gantry_override_save_as_copy()
345
+ {
346
+ /** @global $gantry Gantry */
347
+ global $gantry;
348
+ check_admin_referer('gantry-theme-settings');
349
+ // enable theme settings for lower level users, but with limitations
350
+ if (!current_user_can('switch_themes')) wp_die(_g('You are not authorised to perform this operation.', $gantry->get('template_full_name', 'Gantry Template') . _g('Settings')));
351
+
352
+ // clean the cache
353
+ gantry_admin_clear_cache();
354
+
355
+ $form_option_name = $gantry->templateName . '-template-options';
356
+
357
+ // get the overrides catalog
358
+ $override_id = 0;
359
+ $override_name = _g('SAVE_AS_COPY_SUFFIX', $_POST['override_name']);
360
+ $override_catalog = gantry_get_override_catalog($gantry->templateName);
361
+
362
+ // if its a new override add the basics to the catalog
363
+ if ($override_id == 0) {
364
+ $new_override_id = (count($override_catalog) > 0) ? max(array_keys($override_catalog)) + 1 : 1;
365
+ $override_id = $new_override_id;
366
+ }
367
+
368
+ $override_catalog[$override_id] = $override_name;
369
+ gantry_udpate_override_catalog($override_catalog);
370
+
371
+
372
+ // get the base override name
373
+ $override_option_name = $gantry->templateName . '-template-options-override-' . $override_id;
374
+ $override_assignments_option_name = $gantry->templateName . '-template-options-override-assignments-' . $override_id;
375
+
376
+
377
+ // save the override data
378
+ $form_option_name = trim($form_option_name);
379
+ $value = null;
380
+ if (isset($_POST[$form_option_name])) $value = $_POST[$form_option_name];
381
+ if (!is_array($value)) $value = trim($value);
382
+ $value = stripslashes_deep($value);
383
+ $overriddens = array();
384
+ if (isset($_POST['overridden-' . $form_option_name])) {
385
+ $overriddens = $_POST['overridden-' . $form_option_name];
386
+ }
387
+ $overrides = gantry_array_recursive_get_matching_keys($overriddens, $value);
388
+
389
+ // save overide
390
+ update_option($override_option_name, $overrides);
391
+
392
+ // Get the assignments for the override
393
+ $assigned_override_items = array();
394
+ if (isset($_POST['assigned_override_items'])) {
395
+ $assigned_override_items = unserialize(stripcslashes($_POST['assigned_override_items']));
396
+ }
397
+
398
+ //save the assignments
399
+ update_option($override_assignments_option_name, $assigned_override_items);
400
+
401
+ //populate the facts
402
+
403
+ gantry_set_admin_message('gantry-theme-settings', sprintf(_g("%s override has been saved."), $override_name));
404
+ wp_redirect(add_query_arg('override_id', $override_id, admin_url('admin.php?page=gantry-theme-settings')));
405
 
406
  }
407
 
408
  function gantry_delete_override()
409
  {
410
+ /** @global $gantry Gantry */
411
  global $gantry;
412
  // enable theme settings for lower level users, but with limitations
413
  if (!current_user_can('switch_themes')) wp_die(_g('You are not authorised to perform this operation.', $gantry->get('template_full_name', 'Gantry Template') . _g('Settings')));
414
 
415
  // clean the cache
416
+ gantry_admin_clear_cache();
 
 
417
 
418
  $form_option_name = $gantry->templateName . '-template-options';
419
 
476
 
477
  function add_meta_button($id, $text, $url, $link, $options = null)
478
  {
479
+ /** @global $gantry Gantry */
480
  global $gantry;
481
+ $ds = '/';
482
+ include_once(gantry_clean_path(dirname(__FILE__)) . '/admin/screen-meta-links.php');
483
  add_screen_meta_link($id, $text, $url, $link, $options);
484
  }
485
 
490
  get_plugin_page_hook('gantry-theme-overrides', 'gantry-theme-settings')
491
  ));
492
  $options = get_option(get_template() . "-template-options");
493
+ add_meta_button('cache-clear', 'Clear Cache', '?clear-cache', array(
494
+ get_plugin_page_hook('gantry-theme-settings', ''),
495
+ get_plugin_page_hook('gantry-theme-overrides', 'gantry-theme-settings')
496
+ ), array('class' => 'clear-cache'));
 
 
 
497
  }
498
 
499
  function gantry_array_recursive_get_matching_keys($keyArray, $valueArray)
552
  */
553
  function gantry_admin_dynamic_sidebar($safe_text, $text)
554
  {
555
+ /** @global $gantry Gantry */
556
  global $gantry;
557
  $checked = '';
558
  if (preg_match("/#override_checkbox#(.*)#/", $safe_text, $matches)) {
647
  <a href=\"#\">" . ($isDefault ? "Default Settings" : $override_name) . "</a>\n
648
  </div>\n
649
  <div id=\"overrides-toggle\"" . $toggleStatus . "><br /></div>\n
650
+ <div id=\"overrides-inside\" class=\"slideup\">\n";
651
  $buffer .= implode("\n", $overridesList);
652
  $buffer .= " </div>\n";
653
  $buffer .= " </div>\n";
666
  $buffer .= " </div>\n";
667
  $buffer .= " <div id=\"overrides-switch\">\n";
668
  if ((!$isDefault)) {
669
+ $buffer .= ' <a class="text-button button-widget" href="' . admin_url('admin.php?page=gantry-theme-settings&amp;override_id=' . $override_id) . '"><span>Gantry Settings</span></a>' . "\n";
670
  } else {
671
  $buffer .= ' <a class="text-button button-widget" href="' . admin_url('admin.php?page=gantry-theme-settings') . '"><span>Gantry Settings</span></a>' . "\n";
672
  }
714
  wp_enqueue_script('admin-widgets');
715
  }
716
 
717
+ function gantry_filter_get_user_option_widgets_access($widgets_access)
718
+ {
719
  $widgets_access = 'off';
720
  return 'off';
721
  }
750
  */
751
  function gantry_widget_admin_combined_sidebars_widgets_intercept($override_id, $sidebar_widgets)
752
  {
753
+ /** @global $gantry Gantry */
754
  global $gantry;
755
  $default_sidebar_widgets = $sidebar_widgets;
756
  $override_sidebar_widgets = get_option($gantry->templateName . '-template-options-override-sidebar-' . $override_id);
794
  */
795
  function gantry_widget_admin_load_combined_widget_settings_filter($widget_instance)
796
  {
797
+ /** @global $gantry Gantry */
798
  global $gantry;
799
  $override = $_REQUEST['override_id'];
800
  $current_widget_type = str_replace('option_', '', current_filter());
836
  */
837
  function gantry_widget_admin_get_override_sidebars_widget_intercept($override_id, $sidebar_widgets)
838
  {
839
+ /** @global $gantry Gantry */
840
  global $gantry;
841
  $option = $gantry->templateName . '-template-options-override-sidebar-' . $override_id;
842
  $sidebar_widgets = get_option($option);
874
  */
875
  function gantry_widget_admin_load_override_widget_settings_filter($widget_instance)
876
  {
877
+ /** @global $gantry Gantry */
878
  global $gantry;
879
  $override = $_REQUEST['override_id'];
880
  $current_widget_type = str_replace('pre_option_', '', current_filter());
934
 
935
  function gantry_widget_admin_ajax_save_widget_option_intercept($newvalue, $oldvalue)
936
  {
937
+ /** @global $gantry Gantry */
938
  global $gantry;
939
 
940
  $options_name = str_replace('pre_update_option_', '', current_filter());
953
 
954
  function gantry_save_override_sidebars_widgets($override_id, $sidebars_widgets)
955
  {
956
+ /** @global $gantry Gantry */
957
  global $gantry;
958
  if (!isset($sidebars_widgets['array_version'])) $sidebars_widgets['array_version'] = 3;
959
 
983
  }
984
  }
985
 
986
+ function gantry_admin_clear_cache()
987
  {
988
  gantry_import('core.utilities.gantrycache');
989
+ $cache = GantryCache::getCache(GantryCache::GROUP_NAME);
990
+ $cache->clearGroupCache();
991
+ $adminCache = GantryCache::getCache(GantryCache::ADMIN_GROUP_NAME);
992
+ $adminCache->clearGroupCache();
993
+ }
994
+
995
+
996
+ function gantry_theme_switched($name, $old_theme)
997
+ {
998
+ /** @global $gantry Gantry */
999
+ global $gantry;
1000
+ $gantry->templatePath = get_template_directory();
1001
+ $gantry->templateName = $gantry->getCurrentTemplate();
1002
+ $gantry->_template = new GantryTemplate();
1003
+ $gantry->_template->init($gantry);
1004
+ $gantry->templateInfo = $gantry->_template->getTemplateInfo();
1005
+ $gantry->_base_params_checksum = $gantry->_template->getParamsHash();
1006
+ // Put a base copy of the saved params in the working params
1007
+ $gantry->_working_params = $gantry->_template->getParams();
1008
+ $gantry->_param_names = array_keys($gantry->_template->getParams());
1009
+ $gantry->template_prefix = $gantry->_working_params['template_prefix']['value'];
1010
+ gantry_admin_clear_cache();
1011
  }
ajax-models/example.php CHANGED
@@ -1,12 +1,13 @@
1
  <?php
2
  /**
3
- * @version $Id: example.php 58623 2012-12-15 22:01:32Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
  defined('GANTRY_VERSION') or die();
 
10
  global $gantry;
11
 
12
  print $_GET;
1
  <?php
2
  /**
3
+ * @version $Id: example.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  */
8
 
9
  defined('GANTRY_VERSION') or die();
10
+ /** @global $gantry Gantry */
11
  global $gantry;
12
 
13
  print $_GET;
assets/jui/fonts/IcoMoon.eot ADDED
Binary file
assets/jui/fonts/IcoMoon.svg ADDED
@@ -0,0 +1,378 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>
5
+ This is a custom SVG font generated by IcoMoon.</metadata>
6
+ <defs>
7
+ <font id="IcoMoon" horiz-adv-x="512" >
8
+ <font-face units-per-em="512" ascent="480" descent="-32" />
9
+ <missing-glyph horiz-adv-x="512" />
10
+ <glyph unicode="&#x21;" d="M 256.00,448.00L0.00,192.00l 48.00-48.00l 48.00,48.00l0.00-224.00 l 128.00,0.00 l0.00,96.00 l 64.00,0.00 l0.00-96.00 l 128.00,0.00 L 416.00,192.00 l 48.00-48.00l 48.00,48.00L 256.00,448.00z M 116.00-16.00l-4.00,0.00 L 112.00,208.00 l 4.00,4.00L 116.00-16.00 z M 132.00-16.00l-8.00,0.00 L 124.00,220.00 l 8.00,8.00
11
+ L 132.00-16.00 z M 148.00-16.00l-8.00,0.00 L 140.00,236.00 l 8.00,8.00L 148.00-16.00 z M 164.00-16.00l-8.00,0.00 L 156.00,252.00 l 8.00,8.00L 164.00-16.00 z M 180.00-16.00l-8.00,0.00 L 172.00,268.00 l 8.00,8.00L 180.00-16.00 z M 196.00-16.00l-8.00,0.00 L 188.00,284.00 l 8.00,8.00L 196.00-16.00 z M 212.00,80.00l-4.00,0.00 l0.00-96.00 l-4.00,0.00 L 204.00,300.00
12
+ l 8.00,8.00L 212.00,80.00 z M 228.00,80.00l-8.00,0.00 L 220.00,316.00 l 8.00,8.00L 228.00,80.00 z M 244.00,80.00l-8.00,0.00 L 236.00,332.00 l 8.00,8.00L 244.00,80.00 z M 260.00,80.00l-8.00,0.00 L 252.00,348.00 l 4.00,4.00l 4.00-4.00L 260.00,80.00 z M 276.00,80.00l-8.00,0.00 L 268.00,340.00 l 8.00-8.00L 276.00,80.00 z M 292.00,80.00l-8.00,0.00
13
+ L 284.00,324.00 l 8.00-8.00L 292.00,80.00 z M 308.00-16.00l-4.00,0.00 l0.00,96.00 l-4.00,0.00 L 300.00,308.00 l 8.00-8.00L 308.00-16.00 z M 324.00-16.00l-8.00,0.00 L 316.00,292.00 l 8.00-8.00L 324.00-16.00 z M 340.00-16.00l-8.00,0.00 L 332.00,276.00 l 8.00-8.00L 340.00-16.00 z M 356.00-16.00l-8.00,0.00 L 348.00,260.00 l 8.00-8.00L 356.00-16.00 z
14
+ M 372.00-16.00l-8.00,0.00 L 364.00,244.00 l 8.00-8.00L 372.00-16.00 z M 388.00-16.00l-8.00,0.00 L 380.00,228.00 l 8.00-8.00L 388.00-16.00 z M 400.00-16.00l-4.00,0.00 L 396.00,212.00 l 4.00-4.00L 400.00-16.00 z" />
15
+ <glyph unicode="&#x22;" d="M 311.413,128.632c-11.055,1.759-11.307,32.157-11.307,32.157s 32.484,32.158, 39.564,75.401
16
+ c 19.045,0.00, 30.809,45.973, 11.761,62.148C 352.226,315.365, 375.911,432.00, 256.00,432.00c-119.911,0.00-96.225-116.635-95.432-133.662
17
+ c-19.047-16.175-7.285-62.148, 11.761-62.148c 7.079-43.243, 39.564-75.401, 39.564-75.401s-0.252-30.398-11.307-32.157
18
+ C 164.976,122.966, 32.00,64.315, 32.00,0.00l 224.00,0.00 l 224.00,0.00 C 480.00,64.315, 347.024,122.966, 311.413,128.632z" />
19
+ <glyph unicode="&#x23;" d="M 448.00,256.00l-32.00,0.00 l0.00,96.00 C 416.00,422.691, 344.365,480.00, 256.00,480.00C 167.634,480.00, 96.00,422.691, 96.00,352.00l0.00-96.00 L 64.00,256.00 c-17.602,0.00-32.00-14.40-32.00-32.00l0.00-224.00
20
+ c0.00-17.60, 14.398-32.00, 32.00-32.00l 384.00,0.00 c 17.60,0.00, 32.00,14.40, 32.00,32.00L 480.00,224.00 C 480.00,241.60, 465.60,256.00, 448.00,256.00z M 160.00,352.00c0.00,19.368, 14.312,33.709, 22.843,40.534
21
+ c 8.732,6.985, 19.587,12.79, 31.391,16.784C 227.339,413.752, 241.391,416.00, 256.00,416.00c 14.607,0.00, 28.66-2.248, 41.766-6.682
22
+ c 11.804-3.994, 22.658-9.799, 31.391-16.784C 337.689,385.709, 352.00,371.368, 352.00,352.00l0.00-96.00 L 160.00,256.00 L 160.00,352.00 z" />
23
+ <glyph unicode="&#x24;" d="M 480.00,416.00L 32.00,416.00 C 14.40,416.00,0.00,401.60,0.00,384.00l0.00-224.00 c0.00-17.60, 14.40-32.00, 32.00-32.00l 64.00,0.00 l0.00-96.00 l 72.00,96.00l 312.00,0.00 c 17.60,0.00, 32.00,14.40, 32.00,32.00L 512.00,384.00
24
+ C 512.00,401.60, 497.60,416.00, 480.00,416.00z" />
25
+ <glyph unicode="&#x25;" d="M 128.00,224.00l 224.00,0.00 c 17.594,0.00, 32.00,14.406, 32.00,32.00L 384.00,416.00 c0.00,17.594-14.406,32.00-32.00,32.00L 32.00,448.00 C 14.406,448.00,0.00,433.594,0.00,416.00l0.00-160.00
26
+ c0.00-17.594, 14.404-32.00, 32.00-32.00l 32.00,0.00 l0.00-64.00 L 128.00,224.00zM 480.00,288.00l-64.00,0.00 l0.00-64.00 c0.00-17.594-14.406-32.00-32.00-32.00L 160.00,192.00 l0.00-96.00 c0.00-17.596, 14.404-32.00, 32.00-32.00l 192.00,0.00 l 64.00-64.00l0.00,64.00 l 32.00,0.00 c 17.594,0.00, 32.00,14.404, 32.00,32.00L 512.00,256.00
27
+ C 512.00,273.594, 497.594,288.00, 480.00,288.00z" />
28
+ <glyph unicode="&#x26;" d="M 128.00,160.00c0.00,0.00, 29.412,96.00, 192.00,96.00l0.00-96.00 l 192.00,128.00L 320.00,416.00l0.00-96.00 C 192.00,320.00, 128.00,240.164, 128.00,160.00zM 352.00,96.00L 64.00,96.00 L 64.00,288.00 l 62.938,0.00 c 5.047,5.959, 10.456,11.667, 16.244,17.09c 21.982,20.595, 48.281,36.326, 78.057,46.91L0.00,352.00 l0.00-320.00 l 416.00,0.00
29
+ L 416.00,166.312 l-64.00-42.667L 352.00,96.00 z" />
30
+ <glyph unicode="&#x27;" d="M 288.00,355.814L 288.00,480.00 l 192.00-192.00L 288.00,96.00L 288.00,222.912 C 64.625,228.153, 74.206,71.016, 131.07-32.00
31
+ C-9.286,119.707, 20.52,362.785, 288.00,355.814z" />
32
+ <glyph unicode="&#x28;" d="M 380.931-32.00C 437.794,71.016, 447.375,228.153, 224.00,222.912L 224.00,96.00 L 32.00,288.00L 224.00,480.00l0.00-124.186
33
+ C 491.481,362.785, 521.285,119.707, 380.931-32.00z" />
34
+ <glyph unicode="&#x29;" d="M 448.00,96.00L 448.00,160.00L 384.00,160.00L 384.00,96.00L 320.00,96.00L 320.00,32.00L 384.00,32.00L 384.00-32.00L 448.00-32.00L 448.00,32.00L 512.00,32.00L 512.00,96.00 zM 32.00,448.00L 320.00,448.00L 320.00,352.00L 416.00,352.00L 416.00,192.00L 448.00,192.00L 448.00,352.00L 320.00,480.00L0.00,480.00L0.00-32.00L 288.00-32.00L 288.00,0.00L 32.00,0.00 z" />
35
+ <glyph unicode="&#x2a;" d="M 256.00,480.00C 114.615,480.00,0.00,365.385,0.00,224.00s 114.615-256.00, 256.00-256.00s 256.00,114.615, 256.00,256.00S 397.385,480.00, 256.00,480.00z M 288.00,192.00l0.00-160.00 l-64.00,0.00 L 224.00,192.00 L 64.00,192.00 l0.00,64.00
36
+ l 160.00,0.00 L 224.00,416.00 l 64.00,0.00 l0.00-160.00 l 160.00,0.00 l0.00-64.00 L 288.00,192.00 z" />
37
+ <glyph unicode="&#x2b;" d="M 507.332,401.96L 433.96,475.333c-6.224,6.222-16.404,6.222-22.628,0.00L 384.00,448.00l 96.00-96.00l 27.332,27.333
38
+ C 513.556,385.556, 513.556,395.738, 507.332,401.96zM 128.00,96.00L 256.00,128.00L 448.00,320.00L 352.00,416.00L 160.00,224.00 zM 416.00,32.00L 64.00,32.00 L 64.00,384.00 l 192.00,0.00 l 64.00,64.00L 32.00,448.00 C 14.40,448.00,0.00,433.60,0.00,416.00l0.00-416.00 c0.00-17.60, 14.399-32.00, 32.00-32.00l 416.00,0.00 c 17.60,0.00, 32.00,14.40, 32.00,32.00L 480.00,288.00 l-64.00-64.00L 416.00,32.00 z" />
39
+ <glyph unicode="&#x2c;" d="M 488.00,456.00c-32.00,32.00-64.00,32.00-96.00,0.00l-8.00-8.00l 96.00-96.00l 8.00,8.00C 520.00,392.00, 520.00,424.00, 488.00,456.00zM 32.00,96.00L0.00-32.00l 128.00,32.00l 320.00,320.00l-96.00,96.00L 32.00,96.00z M 128.00,64.00l-32.00,32.00l 256.00,256.00l 32.00-32.00L 128.00,64.00z" />
40
+ <glyph unicode="&#x2d;" d="M0.00,320.00L 16.00,32.00L 496.00,32.00L 512.00,320.00 zM 464.00,384.00L 256.00,384.00L 240.00,416.00L 64.00,416.00L 32.00,352.00L 480.00,352.00 z" />
41
+ <glyph unicode="&#x2e;" d="M 224.00,416.00L 288.00,352.00L 512.00,352.00L 512.00,0.00L0.00,0.00L0.00,416.00 z" />
42
+ <glyph unicode="&#x2f;" d="M0.00,416.00l0.00-384.00 l 512.00,0.00 L 512.00,416.00 L0.00,416.00 z M 480.00,64.00l-32.00,0.00 l-96.00,144.00l-64.00-48.00L 160.00,320.00L 64.00,64.00L 32.00,64.00 L 32.00,384.00 l 448.00,0.00 L 480.00,64.00 zM 352.00,304.00A48.00,48.00 6300.00 1,0 448.00,304A48.00,48.00 6300.00 1,0 352.00,304z" />
43
+ <glyph unicode="&#x30;" d="M 64.00,352.00l0.00-320.00 l 448.00,0.00 L 512.00,352.00 L 64.00,352.00 z M 480.00,85.333L 416.00,192.00l-72.533-60.444L 288.00,224.00L 96.00,64.00L 96.00,320.00 l 384.00,0.00 L 480.00,85.333 zM 128.00,240.00A48.00,48.00 1260.00 1,0 224.00,240A48.00,48.00 1260.00 1,0 128.00,240zM 448.00,416.00L0.00,416.00L0.00,96.00L 32.00,96.00L 32.00,384.00L 448.00,384.00 z" />
44
+ <glyph unicode="&#x31;" d="M0.00,480.00L 128.00,480.00L 128.00,352.00L0.00,352.00zM 192.00,480.00L 512.00,480.00L 512.00,352.00L 192.00,352.00zM0.00,288.00L 128.00,288.00L 128.00,160.00L0.00,160.00zM 192.00,288.00L 512.00,288.00L 512.00,160.00L 192.00,160.00zM0.00,96.00L 128.00,96.00L 128.00-32.00L0.00-32.00zM 192.00,96.00L 512.00,96.00L 512.00-32.00L 192.00-32.00z" />
45
+ <glyph unicode="&#x32;" d="M 512.00,338.75L 466.747,384.00L 377.374,294.624L 326.624,345.375L 415.999,434.75L 370.749,480.00L 281.374,390.625L 224.00,448.00L 180.687,404.688L 436.688,148.687L 480.00,191.999L 422.624,249.375 zM 137.374,105.373c 82.884-82.881, 192.597-18.181, 259.646,37.732L 175.108,365.017
46
+ C 119.196,297.969, 54.494,188.256, 137.374,105.373zM 95.999,127.998L 159.996,64.00L 64.00-31.996L 0.002,32.001z" />
47
+ <glyph unicode="&#x33;" d="M 256.00,448.00L 32.00,352.00L 256.00,256.00L 480.00,352.00 zM 32.00,64.00L 224.00-16.00L 224.00,208.00L 32.00,288.00 zM 288.00-16.00L 480.00,64.00L 480.00,288.00L 288.00,208.00 z" />
48
+ <glyph unicode="&#x34;" d="M 472.037,344.543l-77.289,0.00 c-21.704,0.033-43.327,8.772-22.241,45.979C 393.634,427.804, 408.548,480.00, 323.729,480.00
49
+ c-84.816,0.00-69.901-52.195-48.774-89.478c 21.086-37.207-0.537-45.945-22.243-45.979l-77.29,0.00 c-18.051,0.00-32.819-14.771-32.819-32.818
50
+ l0.00-94.87 c0.00-21.746-8.701-43.492-45.98-22.367c-37.28,21.127-89.478,36.04-89.478-48.778c0.00-84.814, 52.196-69.90, 89.478-48.775
51
+ c 37.279,21.127, 45.98-0.619, 45.98-22.369l0.00-73.747 c0.00-18.053, 14.77-32.818, 32.819-32.818l 77.163,0.00 c 21.749,0.00, 43.495,8.701, 22.37,45.981
52
+ c-21.126,37.277-36.042,89.475, 48.774,89.475c 84.817,0.00, 69.903-52.195, 48.776-89.475C 351.38-23.299, 373.128-32.00, 394.875-32.00l 77.16,0.00
53
+ c 18.053,0.00, 32.821,14.77, 32.821,32.818L 504.856,311.726 C 504.858,329.774, 490.09,344.543, 472.037,344.543z" />
54
+ <glyph unicode="&#x35;" d="M 254.059,418.977C 205.881,476.227, 169.369,480.00, 96.00,480.00l0.00-256.00 c 128.267,64.00, 142.636-8.335, 223.506-1.023
55
+ C 399.234,230.197, 467.031,291.564, 512.00,352.00C 384.644,322.547, 320.54,339.977, 254.059,418.977zM0.00,480.00L 64.00,480.00L 64.00-32.00L0.00-32.00z" />
56
+ <glyph unicode="&#x36;" d="M 499.483,76.77l-211.33,200.009c 32.213,32.712, 64.673,65.683, 71.878,72.889c 13.922,13.909, 32.279,20.021, 32.279,20.021
57
+ l 22.701,32.104l-8.606,8.594l-8.596,8.62l-32.117-22.713c0.00,0.00-6.111-18.357-20.021-32.266c-7.235-7.237-40.464-39.948-73.313-72.305
58
+ l-21.269,20.131c 16.727,33.953, 10.755,76.478-17.825,105.07c-24.70,24.665-59.762,32.521-90.746,23.418l 69.836-72.979l-57.428-57.426
59
+ l-72.99,69.836c-9.092-30.961-1.259-66.071, 23.429-90.758c 28.593-28.571, 71.106-34.555, 105.049-17.791l 19.854-20.98
60
+ c-12.684-12.511-22.656-22.369-27.178-26.894c-9.348,8.456-20.69,19.825-32.324,12.915c-9.937-45.733-50.924-46.198-50.924-46.198
61
+ S 22.869,93.083, 5.99,76.218c-16.877-16.88, 6.573-46.223, 13.298-52.936c 6.725-6.736, 36.066-30.179, 52.945-13.298
62
+ c 16.866,16.865, 113.852,113.853, 113.852,113.853s 0.462,40.976, 46.199,50.924c 6.908,11.632-4.459,22.968-12.917,32.321
63
+ c 4.47,4.47, 14.148,14.261, 26.449,26.731l 199.679-210.994c 13.909-15.317, 36.355-16.80, 49.852-3.316l 7.428,7.429
64
+ C 516.281,40.449, 514.768,62.885, 499.483,76.77z M 196.956,186.924L 48.609,38.578c-3.478-3.479-9.402-3.153-13.286,0.727
65
+ c-3.881,3.882-4.203,9.811-0.737,13.285l 148.355,148.358c 3.455,3.454, 9.404,3.131, 13.286-0.738
66
+ C 200.088,196.328, 200.41,190.38, 196.956,186.924z" />
67
+ <glyph unicode="&#x37;" d="M 181.861,118.974l 20.649,28.908l-22.627,22.628l-28.909-20.648c-5.361,2.997-11.102,5.387-17.133,7.096L 128.00,192.00L 96.00,192.00
68
+ l-5.84-35.043c-6.031-1.709-11.772-4.099-17.133-7.096L 44.118,170.51L 21.49,147.882l 20.649-28.908
69
+ c-2.997-5.36-5.387-11.103-7.096-17.133L0.00,96.00l0.00-32.00 l 35.043-5.841c 1.709-6.03, 4.099-11.772, 7.096-17.133L 21.49,12.118l 22.627-22.628
70
+ l 28.909,20.648c 5.361-2.997, 11.102-5.387, 17.133-7.096L 96.00-32.00l 32.00,0.00 l 5.84,35.043c 6.031,1.709, 11.772,4.099, 17.133,7.096l 28.909-20.648
71
+ l 22.627,22.628l-20.649,28.908c 2.997,5.36, 5.387,11.103, 7.096,17.133L 224.00,64.00l0.00,32.00 l-35.043,5.841
72
+ C 187.248,107.871, 184.858,113.613, 181.861,118.974z M 112.00,48.00c-17.674,0.00-32.00,14.327-32.00,32.00s 14.326,32.00, 32.00,32.00s 32.00-14.327, 32.00-32.00
73
+ S 129.674,48.00, 112.00,48.00zM 512.00,288.00l0.00,32.00 l-33.691,6.125c-0.621,4.023-1.416,7.989-2.362,11.895l 28.779,18.55L 492.48,386.134l-33.472-7.234
74
+ c-2.107,3.455-4.363,6.81-6.746,10.065l 19.503,28.171l-22.628,22.627l-28.171-19.503c-3.256,2.383-6.61,4.638-10.065,6.747
75
+ l 7.234,33.472L 388.571,472.726l-18.55-28.779c-3.906,0.946-7.872,1.741-11.895,2.362L 352.00,480.00l-32.00,0.00 l-6.126-33.691
76
+ c-4.023-0.621-7.988-1.416-11.895-2.362L 283.43,472.726L 253.866,460.48l 7.234-33.472c-3.455-2.108-6.81-4.364-10.065-6.747
77
+ l-28.171,19.503l-22.627-22.627l 19.503-28.171c-2.383-3.255-4.639-6.61-6.747-10.065l-33.472,7.234l-12.246-29.564l 28.779-18.55
78
+ c-0.946-3.906-1.741-7.871-2.362-11.895L 160.00,320.00l0.00-32.00 l 33.691-6.125c 0.621-4.023, 1.416-7.989, 2.362-11.895l-28.779-18.55
79
+ l 12.246-29.564l 33.472,7.234c 2.108-3.455, 4.364-6.809, 6.747-10.065l-19.503-28.171l 22.627-22.628l 28.171,19.503
80
+ c 3.255-2.383, 6.61-4.638, 10.065-6.746l-7.234-33.472l 29.564-12.246l 18.551,28.779c 3.905-0.946, 7.871-1.741, 11.894-2.362L 320.00,128.00l 32.00,0.00
81
+ l 6.126,33.691c 4.022,0.621, 7.988,1.416, 11.895,2.362l 18.55-28.779l 29.564,12.246l-7.234,33.472
82
+ c 3.455,2.108, 6.81,4.363, 10.065,6.746l 28.171-19.503l 22.628,22.628l-19.503,28.171c 2.383,3.256, 4.638,6.61, 6.746,10.065
83
+ l 33.472-7.234l 12.246,29.565l-28.779,18.55c 0.946,3.906, 1.741,7.871, 2.362,11.895L 512.00,288.00z M 336.00,234.40
84
+ c-38.439,0.00-69.60,31.161-69.60,69.60c0.00,38.439, 31.16,69.60, 69.60,69.60s 69.60-31.161, 69.60-69.60C 405.60,265.561, 374.44,234.40, 336.00,234.40z" />
85
+ <glyph unicode="&#x38;" d="M 466.895,174.875c-26.863,46.527-10.708,106.152, 36.076,133.244l-50.313,87.146c-14.375-8.427-31.088-13.259-48.923-13.259
86
+ c-53.768,0.00-97.354,43.873-97.354,97.995L 205.752,480.001 c 0.133-16.705-4.037-33.641-12.979-49.126
87
+ c-26.862-46.528-86.578-62.351-133.431-35.379L 9.03,308.35c 14.485-8.236, 27.025-20.294, 35.943-35.739
88
+ c 26.819-46.454, 10.756-105.96-35.854-133.112l 50.313-87.146c 14.325,8.348, 30.958,13.127, 48.70,13.127
89
+ c 53.598,0.00, 97.072-43.596, 97.35-97.479l 100.627,0.00 c-0.043,16.537, 4.136,33.285, 12.983,48.609
90
+ c 26.818,46.453, 86.388,62.297, 133.207,35.506l 50.313,87.145C 488.222,147.494, 475.766,159.51, 466.895,174.875z M 256.00,120.334
91
+ c-57.254,0.00-103.668,46.412-103.668,103.667c0.00,57.254, 46.413,103.667, 103.668,103.667c 57.254,0.00, 103.666-46.413, 103.666-103.667
92
+ C 359.665,166.746, 313.254,120.334, 256.00,120.334z" />
93
+ <glyph unicode="&#x39;" d="M 144.00,320.00L 80.00,320.00 c-8.80,0.00-16.00-7.20-16.00-16.00l0.00-32.00 c0.00-8.80, 7.20-16.00, 16.00-16.00l 64.00,0.00 c 8.80,0.00, 16.00,7.20, 16.00,16.00l0.00,32.00 C 160.00,312.80, 152.80,320.00, 144.00,320.00zM 96.00,416.00L 128.00,416.00L 128.00,336.00L 96.00,336.00zM 96.00,240.00L 128.00,240.00L 128.00,32.00L 96.00,32.00zM 272.00,192.00l-64.00,0.00 c-8.80,0.00-16.00-7.20-16.00-16.00l0.00-32.00 c0.00-8.80, 7.20-16.00, 16.00-16.00l 64.00,0.00 c 8.801,0.00, 16.00,7.20, 16.00,16.00l0.00,32.00 C 288.00,184.80, 280.801,192.00, 272.00,192.00zM 224.001,416.00L 256.001,416.00L 256.001,208.00L 224.001,208.00zM 224.001,112.00L 256.001,112.00L 256.001,32.00L 224.001,32.00zM 400.00,288.00l-64.00,0.00 c-8.799,0.00-16.00-7.20-16.00-16.00l0.00-32.00 c0.00-8.80, 7.201-16.00, 16.00-16.00l 64.00,0.00 c 8.801,0.00, 16.00,7.20, 16.00,16.00l0.00,32.00 C 416.00,280.80, 408.801,288.00, 400.00,288.00zM 352.00,416.00L 384.00,416.00L 384.00,304.00L 352.00,304.00zM 352.00,208.00L 384.00,208.00L 384.00,32.00L 352.00,32.00zM 440.00,480.00L 40.00,480.00 C 17.944,480.00,0.00,462.056,0.00,440.00l0.00-432.00 c0.00-22.056, 17.944-40.00, 40.00-40.00l 400.00,0.00 c 22.056,0.00, 40.00,17.944, 40.00,40.00L 480.00,440.00
94
+ C 480.00,462.056, 462.056,480.00, 440.00,480.00z M 448.00,8.00c0.00-4.40-3.60-8.00-8.00-8.00L 40.00,0.00 c-4.40,0.00-8.00,3.60-8.00,8.00L 32.00,440.00 c0.00,4.40, 3.60,8.00, 8.00,8.00l 400.00,0.00 c 4.40,0.00, 8.00-3.60, 8.00-8.00L 448.00,8.00 z" />
95
+ <glyph unicode="&#x3a;" d="M 507.882,411.883L 448.00,352.00l-64.00,64.00l 59.882,59.883C 435.057,478.557, 425.698,480.00, 416.00,480.00c-53.021,0.00-96.00-42.98-96.00-96.00
96
+ c0.00-9.697, 1.442-19.057, 4.116-27.882L 123.882,155.883C 115.057,158.557, 105.698,160.00, 96.00,160.00c-53.021,0.00-96.00-42.98-96.00-96.00
97
+ c0.00-9.697, 1.442-19.058, 4.117-27.882L 64.00,96.00l 64.00-64.00l-59.883-59.882C 76.943-30.556, 86.302-32.00, 96.00-32.00c 53.02,0.00, 96.00,42.981, 96.00,96.00
98
+ c0.00,9.698-1.444,19.059-4.118,27.883l 200.234,200.235C 396.943,289.444, 406.302,288.00, 416.00,288.00c 53.02,0.00, 96.00,42.981, 96.00,96.00
99
+ C 512.00,393.698, 510.556,403.058, 507.882,411.883z" />
100
+ <glyph unicode="&#x3b;" d="M 160.061,160.00C 96.036,160.00, 117.88,46.86,0.00,21.363c 32.011-21.324, 125.898-39.027, 192.072,10.668
101
+ C 249.298,75.006, 224.085,160.00, 160.061,160.00zM 505.965,441.965c-32.009,32.007-110.472-72.027-171.617-107.603c-60.98-37.464-144.033-112.027-96.021-160.037
102
+ c 48.01-48.013, 122.571,35.04, 160.036,96.022C 433.938,331.495, 537.973,409.958, 505.965,441.965z" />
103
+ <glyph unicode="&#x3c;" d="M 256.00,368.00C 128.00,368.00, 0.001,256.001,0.00,224.00l0.00,0.00c 0.001-32.001, 128.00-144.00, 256.00-144.00s 255.997,111.999, 256.00,144.00l0.00,0.00
104
+ C 511.997,256.001, 384.00,368.00, 256.00,368.00z M 256.00,128.00c-53.021,0.00-96.00,42.98-96.00,96.00c0.00,53.02, 42.979,96.00, 96.00,96.00c 53.02,0.00, 96.00-42.98, 96.00-96.00
105
+ C 352.00,170.98, 309.02,128.00, 256.00,128.00zM 192.00,224.00A64.00,64.00 1260.00 1,0 320.00,224A64.00,64.00 1260.00 1,0 192.00,224z" />
106
+ <glyph unicode="&#x3d;" d="M0.00,480.00l0.00-512.00 l 512.00,0.00 L 512.00,480.00 L0.00,480.00 z M 480.00,0.00L 32.00,0.00 L 32.00,448.00 l 448.00,0.00 L 480.00,0.00 z" />
107
+ <glyph unicode="&#x3e;" d="M0.00,480.00l0.00-512.00 l 512.00,0.00 L 512.00,480.00 L0.00,480.00 z M 480.00,0.00L 32.00,0.00 L 32.00,448.00 l 448.00,0.00 L 480.00,0.00 zM 384.00,352.00L 224.00,192.00L 128.00,288.00L 64.00,224.00L 224.00,64.00L 448.00,288.00 z" />
108
+ <glyph unicode="&#x3f;" d="M0.00,480.00l0.00-512.00 l 512.00,0.00 L 512.00,480.00 L0.00,480.00 z M 480.00,0.00L 32.00,0.00 L 32.00,448.00 l 448.00,0.00 L 480.00,0.00 zM 128.00,352.00L 384.00,352.00L 384.00,96.00L 128.00,96.00z" />
109
+ <glyph unicode="&#x40;" d="M 512.00,281.475L 335.11,307.179L 256.00,467.47l-79.108-160.291L0.00,281.475l 128.00-124.769L 97.784-19.47L 256.00,63.709l 158.216-83.179
110
+ l-30.217,176.176L 512.00,281.475z M 256.00,90.823l-126.341-66.421l 24.128,140.683L 51.575,264.717l 141.254,20.526L 256.00,413.241
111
+ l 63.172-127.998l 141.253-20.525l-102.214-99.632l 24.13-140.683L 256.00,90.823z" />
112
+ <glyph unicode="&#x41;" d="M 512.00,281.475L 335.11,307.179L 256.00,467.47l-79.108-160.291L0.00,281.475l 128.00-124.769L 97.784-19.47L 256.00,63.709l 158.216-83.179
113
+ l-30.217,176.176L 512.00,281.475z M 256.00,90.823l0.00,322.417l 63.172-127.998l 141.253-20.525l-102.214-99.632l 24.13-140.683L 256.00,90.823z" />
114
+ <glyph unicode="&#x42;" d="M 512.00,281.475L 335.11,307.179L 256.00,467.47l-79.108-160.291L0.00,281.475l 128.00-124.769L 97.784-19.47L 256.00,63.709l 158.216-83.179
115
+ l-30.217,176.176L 512.00,281.475z" />
116
+ <glyph unicode="&#x43;" d="M 160.00,288.00L 224.00,288.00L 224.00,224.00L 160.00,224.00zM 256.00,288.00L 320.00,288.00L 320.00,224.00L 256.00,224.00zM 352.00,288.00L 416.00,288.00L 416.00,224.00L 352.00,224.00zM 64.00,96.00L 128.00,96.00L 128.00,32.00L 64.00,32.00zM 160.00,96.00L 224.00,96.00L 224.00,32.00L 160.00,32.00zM 256.00,96.00L 320.00,96.00L 320.00,32.00L 256.00,32.00zM 160.00,192.00L 224.00,192.00L 224.00,128.00L 160.00,128.00zM 256.00,192.00L 320.00,192.00L 320.00,128.00L 256.00,128.00zM 352.00,192.00L 416.00,192.00L 416.00,128.00L 352.00,128.00zM 64.00,192.00L 128.00,192.00L 128.00,128.00L 64.00,128.00zM 416.00,480.00l0.00-32.00 l-64.00,0.00 L 352.00,480.00 L 128.00,480.00 l0.00-32.00 L 64.00,448.00 L 64.00,480.00 L0.00,480.00 l0.00-512.00 l 480.00,0.00 L 480.00,480.00 L 416.00,480.00 z M 448.00,0.00L 32.00,0.00 L 32.00,352.00 l 416.00,0.00 L 448.00,0.00 z" />
117
+ <glyph unicode="&#x44;" d="M 64.00,320.00L 96.00,320.00L 96.00,288.00L 64.00,288.00zM 128.00,320.00L 160.00,320.00L 160.00,288.00L 128.00,288.00zM 192.00,320.00L 224.00,320.00L 224.00,288.00L 192.00,288.00zM 256.00,320.00L 288.00,320.00L 288.00,288.00L 256.00,288.00zM 320.00,320.00L 352.00,320.00L 352.00,288.00L 320.00,288.00zM 384.00,320.00L 416.00,320.00L 416.00,288.00L 384.00,288.00zM 64.00,256.00L 96.00,256.00L 96.00,224.00L 64.00,224.00zM 128.00,256.00L 160.00,256.00L 160.00,224.00L 128.00,224.00zM 192.00,256.00L 224.00,256.00L 224.00,224.00L 192.00,224.00zM 256.00,256.00L 288.00,256.00L 288.00,224.00L 256.00,224.00zM 320.00,256.00L 352.00,256.00L 352.00,224.00L 320.00,224.00zM 384.00,256.00L 416.00,256.00L 416.00,224.00L 384.00,224.00zM 64.00,192.00L 96.00,192.00L 96.00,160.00L 64.00,160.00zM 128.00,192.00L 160.00,192.00L 160.00,160.00L 128.00,160.00zM 192.00,192.00L 224.00,192.00L 224.00,160.00L 192.00,160.00zM 256.00,192.00L 288.00,192.00L 288.00,160.00L 256.00,160.00zM 320.00,192.00L 352.00,192.00L 352.00,160.00L 320.00,160.00zM 384.00,192.00L 416.00,192.00L 416.00,160.00L 384.00,160.00zM 64.00,128.00L 96.00,128.00L 96.00,96.00L 64.00,96.00zM 128.00,128.00L 160.00,128.00L 160.00,96.00L 128.00,96.00zM 192.00,128.00L 224.00,128.00L 224.00,96.00L 192.00,96.00zM 256.00,128.00L 288.00,128.00L 288.00,96.00L 256.00,96.00zM 320.00,128.00L 352.00,128.00L 352.00,96.00L 320.00,96.00zM 384.00,128.00L 416.00,128.00L 416.00,96.00L 384.00,96.00zM 64.00,64.00L 96.00,64.00L 96.00,32.00L 64.00,32.00zM 128.00,64.00L 160.00,64.00L 160.00,32.00L 128.00,32.00zM 192.00,64.00L 224.00,64.00L 224.00,32.00L 192.00,32.00zM 256.00,64.00L 288.00,64.00L 288.00,32.00L 256.00,32.00zM 320.00,64.00L 352.00,64.00L 352.00,32.00L 320.00,32.00zM 384.00,64.00L 416.00,64.00L 416.00,32.00L 384.00,32.00zM 416.00,448.00L 416.00,480.00 l-64.00,0.00 l0.00-64.00 l-32.00,0.00 L 320.00,448.00 L 160.00,448.00 l0.00-32.00 l-32.00,0.00 L 128.00,480.00 L 64.00,480.00 l0.00-32.00 L0.00,448.00 l0.00-480.00 l 480.00,0.00 L 480.00,448.00 L 416.00,448.00 z M 448.00,0.00L 32.00,0.00 L 32.00,352.00 l 416.00,0.00 L 448.00,0.00 z" />
118
+ <glyph unicode="&#x45;" d="M 256.00,480.00C 114.615,480.00,0.00,365.385,0.00,224.00s 114.615-256.00, 256.00-256.00s 256.00,114.615, 256.00,256.00S 397.385,480.00, 256.00,480.00z M 256.00,32.00
119
+ c-26.51,0.00-48.00,21.49-48.00,48.00s 21.49,48.00, 48.00,48.00s 48.00-21.49, 48.00-48.00S 282.51,32.00, 256.00,32.00z M 368.064,302.971
120
+ c-2.495-8.446-5.956-16.459-10.406-24.007c-4.445-7.567-9.79-14.732-16.019-21.476c-6.229-6.771-13.061-13.267-20.541-19.486
121
+ c-8.363-6.936-15.08-13.076-20.146-18.418c-5.057-5.328-8.488-9.967-10.269-13.867c-3.339-7.174-5.853-24.363-2.691-45.717l-63.959,0.00
122
+ c-0.525,37.938, 5.058,56.501, 11.688,70.258c 6.764,13.884, 19.377,28.554, 37.888,44.031c 8.011,6.567, 14.236,12.408, 18.675,17.479
123
+ c 4.449,5.067, 7.841,9.599, 10.143,13.604c 2.307,4.00, 3.729,7.734, 4.271,11.211c 0.53,3.461, 0.793,7.056, 0.793,10.799
124
+ c0.00,6.938-1.199,13.337-3.603,19.205c-2.396,5.883-5.824,10.938-10.264,15.197c-4.457,4.281-9.696,7.617-15.744,10.021
125
+ c-6.048,2.399-12.804,3.61-20.279,3.61c-29.164,0.00-46.955-20.371-53.365-61.104l-64.027,0.00 c 1.598,17.44, 5.56,33.211, 11.876,47.353
126
+ c 6.313,14.15, 14.576,26.151, 24.813,36.028c 10.231,9.876, 22.146,17.47, 35.754,22.796c 13.60,5.34, 28.409,8.012, 44.419,8.012
127
+ c 17.08,0.00, 32.642-2.441, 46.696-7.332c 14.057-4.899, 26.104-11.709, 36.146-20.42c 10.057-8.713, 17.872-19.119, 23.482-31.211
128
+ c 5.591-12.104, 8.411-25.261, 8.411-39.484C 371.804,320.454, 370.546,311.424, 368.064,302.971z" />
129
+ <glyph unicode="&#x46;" d="M 256.00,480.00C 114.615,480.00,0.00,365.385,0.00,224.00s 114.615-256.00, 256.00-256.00s 256.00,114.615, 256.00,256.00S 397.385,480.00, 256.00,480.00z M 160.00,224.00
130
+ c0.00,53.02, 42.98,96.00, 96.00,96.00s 96.00-42.98, 96.00-96.00s-42.98-96.00-96.00-96.00S 160.00,170.98, 160.00,224.00z M 462.99,138.262L 462.99,138.262l-88.71,36.745
131
+ C 380.539,190.099, 384.00,206.645, 384.00,224.00s-3.461,33.901-9.72,48.993l 61.063,25.293l 27.647,11.452C 473.944,283.327, 480.00,254.373, 480.00,224.00
132
+ C 480.00,193.627, 473.943,164.673, 462.99,138.262L 462.99,138.262z M 341.739,430.99L 341.739,430.99L 341.739,430.99l-36.745-88.71
133
+ C 289.902,348.539, 273.356,352.00, 256.00,352.00s-33.901-3.461-48.993-9.72l-17.23,41.599l-19.515,47.112C 196.673,441.943, 225.628,448.00, 256.00,448.00
134
+ C 286.373,448.00, 315.327,441.943, 341.739,430.99z M 49.01,309.738l 47.112-19.515l 41.599-17.23C 131.462,257.901, 128.00,241.355, 128.00,224.00
135
+ s 3.461-33.901, 9.72-48.993l-88.71-36.745C 38.057,164.673, 32.00,193.627, 32.00,224.00C 32.00,254.373, 38.057,283.327, 49.01,309.738z
136
+ M 170.262,17.01l 11.452,27.647l 25.293,61.063C 222.099,99.461, 238.645,96.00, 256.00,96.00s 33.901,3.461, 48.993,9.72l 36.745-88.71l0.00,0.00l0.00,0.00
137
+ C 315.327,6.058, 286.373,0.00, 256.00,0.00C 225.628,0.00, 196.673,6.057, 170.262,17.01z" />
138
+ <glyph unicode="&#x48;" d="M 503.695,61.288L 291.385,429.02c-19.461,33.709-51.308,33.709-70.77,0.00L 8.306,61.288C-11.156,27.579, 4.768,0.00, 43.691,0.00
139
+ l 424.618,0.00 C 507.233,0.00, 523.156,27.579, 503.695,61.288z M 296.00,352.00l-8.00-192.00l-64.00,0.00 l-8.00,192.00L 296.00,352.00 z M 256.00,32.00c-26.51,0.00-48.00,21.49-48.00,48.00
140
+ s 21.49,48.00, 48.00,48.00s 48.00-21.49, 48.00-48.00S 282.51,32.00, 256.00,32.00z" />
141
+ <glyph unicode="&#x47;" d="M 432.00,432.00L 192.00,192.00L 80.00,304.00L0.00,224.00L 192.00,32.00L 512.00,352.00 z" />
142
+ <glyph unicode="&#x4a;" d="M 256.00,480.00C 114.615,480.00,0.00,365.385,0.00,224.00s 114.615-256.00, 256.00-256.00s 256.00,114.615, 256.00,256.00S 397.385,480.00, 256.00,480.00z M 416.00,128.00l-64.00-64.00l-96.00,96.00l-96.00-96.00
143
+ l-64.00,64.00l 96.00,96.00l-96.00,96.00l 64.00,64.00l 96.00-96.00l 96.00,96.00l 64.00-64.00l-96.00-96.00L 416.00,128.00z" />
144
+ <glyph unicode="&#x4b;" d="M 256.00,480.00C 114.615,480.00,0.00,365.385,0.00,224.00s 114.615-256.00, 256.00-256.00s 256.00,114.615, 256.00,256.00S 397.385,480.00, 256.00,480.00z M 64.00,192.00l0.00,64.00 l 384.00,0.00 l0.00-64.00 L 64.00,192.00 z" />
145
+ <glyph unicode="&#x4c;" d="M 64.00,0.00c0.00-17.673, 14.327-32.00, 32.00-32.00l 320.00,0.00 c 17.674,0.00, 32.00,14.327, 32.00,32.00L 448.00,352.00 L 64.00,352.00 L 64.00,0.00 z M 320.00,288.00l 64.00,0.00 l0.00-256.00 l-64.00,0.00 L 320.00,288.00 z M 224.00,288.00l 64.00,0.00 l0.00-256.00 l-64.00,0.00
146
+ L 224.00,288.00 z M 128.00,288.00l 64.00,0.00 l0.00-256.00 l-64.00,0.00 L 128.00,288.00 zM 448.00,448.00L 320.00,448.00 L 320.00,480.00 L 192.00,480.00 l0.00-32.00 L 64.00,448.00 C 28.654,448.00,0.00,419.346,0.00,384.00l 512.00,0.00 C 512.00,419.346, 483.347,448.00, 448.00,448.00z" />
147
+ <glyph unicode="&#x4d;" d="M 325.608,214.818L 512.00,86.264L 512.00,382.211 zM0.00,382.211L0.00,86.264L 186.388,214.836 zM 256.00,152.309L 211.499,192.264L0.00,64.00L 512.00,64.00L 300.495,192.264 zM 496.64,384.00L 15.36,384.00L 256.00,203.074 z" />
148
+ <glyph unicode="&#x4e;" d="M 325.607,118.95L 512.00-9.605L 512.00,286.343 zM0.00,286.343L0.00-9.605L 186.388,118.968 zM 256.00,56.44L 211.499,96.395L0.00-31.868L 512.00-31.868L 300.494,96.395 zM 15.359,288.00L 496.64,288.00L 255.999,468.926 z" />
149
+ <glyph unicode="&#x4f;" d="M 352.00,384.00L 160.00,384.00 L0.00,192.00l0.00-80.00 l0.00-48.00 c0.00-17.673, 14.327-32.00, 32.00-32.00l 448.00,0.00 c 17.674,0.00, 32.00,14.327, 32.00,32.00l0.00,48.00 l0.00,80.00 L 352.00,384.00z M 384.00,192.00l-64.00-64.00L 192.00,128.00
150
+ l-64.00,64.00L 41.655,192.00 l 133.333,160.00l 162.024,0.00 l 133.333-160.00L 384.00,192.00 z" />
151
+ <glyph unicode="&#x50;" d="M 352.00,384.00L 160.00,384.00 L0.00,192.00l0.00-128.00 c0.00-17.673, 14.327-32.00, 32.00-32.00l 448.00,0.00 c 17.674,0.00, 32.00,14.327, 32.00,32.00L 512.00,192.00 L 352.00,384.00z M 320.00,128.00L 192.00,128.00 l-32.00,32.00l 192.00,0.00
152
+ L 320.00,128.00z M 41.655,192.00l 133.333,160.00l 162.024,0.00 l 133.333-160.00L 41.655,192.00 zM 142.482,288.00L 369.518,288.00L 342.851,320.00L 169.148,320.00 zM 89.149,224.00L 422.852,224.00L 396.185,256.00L 115.815,256.00 z" />
153
+ <glyph unicode="&#x51;" d="M 416.00,448.00L 96.00,448.00 L0.00,352.00l0.00-336.00 c0.00-8.837, 7.163-16.00, 16.00-16.00l 480.00,0.00 c 8.836,0.00, 16.00,7.163, 16.00,16.00L 512.00,352.00 L 416.00,448.00z M 256.00,64.00L 96.00,192.00l 96.00,0.00 l0.00,96.00 l 128.00,0.00 l0.00-96.00 l 96.00,0.00
154
+ L 256.00,64.00z M 77.255,384.00l 32.00,32.00l 293.489,0.00 l 32.00-32.00L 77.255,384.00 z" />
155
+ <glyph unicode="&#x52;" d="M 416.00,448.00L 96.00,448.00 L0.00,352.00l0.00-336.00 c0.00-8.837, 7.163-16.00, 16.00-16.00l 480.00,0.00 c 8.836,0.00, 16.00,7.163, 16.00,16.00L 512.00,352.00 L 416.00,448.00z M 320.00,160.00l0.00-96.00 L 192.00,64.00 l0.00,96.00 L 96.00,160.00 l 160.00,128.00
156
+ l 160.00-128.00L 320.00,160.00 z M 77.255,384.00l 32.00,32.00l 293.488,0.00 l 32.00-32.00L 77.255,384.00 z" />
157
+ <glyph unicode="&#x53;" d="M 449.077,10.754l-114.54,168.305c 65.459,51.835, 83.963,145.677, 39.835,219.126
158
+ C 326.445,477.959, 222.559,503.857, 142.793,455.94C 63.028,408.007, 37.131,304.124, 85.054,224.357
159
+ c 43.213-71.942, 131.962-100.047, 207.479-69.717l 95.143-180.783c 2.95-5.611, 9.802-7.523, 15.229-4.273l 42.784,25.72
160
+ C 451.126-1.433, 452.653,5.518, 449.077,10.754z M 288.781,212.968c-54.211-32.563-124.808-14.959-157.375,39.253
161
+ c-32.565,54.197-14.952,124.794, 39.253,157.36c 54.189,32.57, 124.787,14.961, 157.351-39.245
162
+ C 360.579,316.138, 342.978,245.525, 288.781,212.968z" />
163
+ <glyph unicode="&#x54;" d="M 256.00,480.00C 114.615,480.00,0.00,444.183,0.00,400.00l0.00-48.00 l 192.00-192.00l0.00-160.00 c0.00-17.673, 28.653-32.00, 64.00-32.00c 35.346,0.00, 64.00,14.327, 64.00,32.00L 320.00,160.00 l 192.00,192.00L 512.00,400.00
164
+ C 512.00,444.183, 397.385,480.00, 256.00,480.00z M 47.192,410.588c 11.972,6.829, 28.791,13.31, 48.639,18.744C 139.803,441.37, 196.685,448.00, 256.00,448.00
165
+ c 59.314,0.00, 116.197-6.63, 160.169-18.668c 19.848-5.434, 36.667-11.915, 48.64-18.744c 7.896-4.503, 12.162-8.312, 14.148-10.588
166
+ c-1.986-2.276-6.253-6.084-14.148-10.588c-11.973-6.829-28.792-13.31-48.64-18.744C 372.198,358.63, 315.315,352.00, 256.00,352.00
167
+ c-59.315,0.00-116.197,6.63-160.169,18.668c-19.848,5.434-36.667,11.915-48.639,18.744C 39.296,393.916, 35.03,397.724, 33.043,400.00
168
+ C 35.03,402.276, 39.296,406.084, 47.192,410.588z" />
169
+ <glyph unicode="&#x55;" d="M 154.007,208.00A101.993,101.993 6300.00 1,0 357.993,208A101.993,101.993 6300.00 1,0 154.007,208zM 480.00,352.00L 368.00,352.00 c-8.00,32.00-16.00,64.00-48.00,64.00L 192.00,416.00 c-32.00,0.00-40.00-32.00-48.00-64.00L 32.00,352.00 c-17.60,0.00-32.00-14.40-32.00-32.00l0.00-256.00 c0.00-17.60, 14.40-32.00, 32.00-32.00l 448.00,0.00
170
+ c 17.60,0.00, 32.00,14.40, 32.00,32.00L 512.00,320.00 C 512.00,337.60, 497.60,352.00, 480.00,352.00z M 256.00,64.00c-79.529,0.00-144.00,64.471-144.00,144.00c0.00,79.529, 64.471,144.00, 144.00,144.00
171
+ c 79.529,0.00, 144.00-64.471, 144.00-144.00C 400.00,128.471, 335.53,64.00, 256.00,64.00z M 480.00,288.00l-64.00,0.00 l0.00,32.00 l 64.00,0.00 L 480.00,288.00 z" />
172
+ <glyph unicode="&#x56;" d="M 490.594,399.946C 418.778,410.271, 339.428,416.00, 256.001,416.00c-83.43,0.00-162.778-5.729-234.597-16.054
173
+ C 7.639,346.083,0.00,286.571,0.00,224.00c0.00-62.57, 7.639-122.083, 21.404-175.945C 93.223,37.729, 172.572,32.00, 256.001,32.00
174
+ c 83.427,0.00, 162.776,5.729, 234.593,16.055C 504.36,101.917, 512.00,161.43, 512.00,224.00C 512.00,286.571, 504.36,346.083, 490.594,399.946z
175
+ M 192.001,128.00L 192.001,320.00 l 160.00-96.00L 192.001,128.00z" />
176
+ <glyph unicode="&#x57;" d="M 155.755,448.451l-13.09-340.294c-17.465,8.962-39.377,12.84-62.368,9.578c-49.574-7.021-85.271-44.418-79.729-83.517
177
+ c 5.543-39.102, 50.223-65.101, 99.795-58.078c 43.996,6.235, 77.021,36.395, 80.022,70.43l 0.01-0.019c 0.006,0.077, 0.011,0.193, 0.018,0.28
178
+ c 0.073,0.865, 0.115,1.741, 0.147,2.611c 1.846,35.143, 13.148,302.082, 13.148,302.082l 278.355,28.679l-12.572-240.41
179
+ c-17.863,9.942-40.822,14.371-64.964,10.95c-49.574-7.028-85.268-44.417-79.726-83.521c 5.541-39.098, 50.221-65.102, 99.795-58.071
180
+ c 44.933,6.36, 78.41,37.682, 80.166,72.604l 0.021,0.021C 495.742,97.752, 512.00,473.005, 512.00,473.005L 155.755,448.451z" />
181
+ <glyph unicode="&#x58;" d="M0.00,480.00L 224.00,480.00L 224.00,256.00L0.00,256.00zM 288.00,480.00L 512.00,480.00L 512.00,256.00L 288.00,256.00zM0.00,192.00L 224.00,192.00L 224.00-32.00L0.00-32.00zM 288.00,192.00L 512.00,192.00L 512.00-32.00L 288.00-32.00z" />
182
+ <glyph unicode="&#x59;" d="M0.00,480.00L 128.00,480.00L 128.00,352.00L0.00,352.00zM 192.00,480.00L 320.00,480.00L 320.00,352.00L 192.00,352.00zM 384.00,480.00L 512.00,480.00L 512.00,352.00L 384.00,352.00zM0.00,288.00L 128.00,288.00L 128.00,160.00L0.00,160.00zM 192.00,288.00L 320.00,288.00L 320.00,160.00L 192.00,160.00zM 384.00,288.00L 512.00,288.00L 512.00,160.00L 384.00,160.00zM0.00,96.00L 128.00,96.00L 128.00-32.00L0.00-32.00zM 192.00,96.00L 320.00,96.00L 320.00-32.00L 192.00-32.00zM 384.00,96.00L 512.00,96.00L 512.00-32.00L 384.00-32.00z" />
183
+ <glyph unicode="&#x5a;" d="M 192.00,448.00L 320.00,448.00L 320.00,320.00L 192.00,320.00zM 192.00,288.00L 320.00,288.00L 320.00,160.00L 192.00,160.00zM 192.00,128.00L 320.00,128.00L 320.00,0.00L 192.00,0.00z" />
184
+ <glyph unicode="&#x5b;" d="M 446.141,117.407c 0.852,10.12, 21.951,23.983, 21.934,34.12c-0.049,10.643-18.482,28.455-17.086,39.007
185
+ c 1.104,8.37, 16.555,20.793, 17.059,29.245c 0.898,15.353-19.852,45.40-34.119,51.174c-22.643,9.168-137.705,4.883-137.705,4.883
186
+ c-11.246,19.653, 20.035,68.201, 28.639,89.162c 12.631,30.719, 10.504,71.466-5.471,92.399C 299.879,482.98, 264.063,484.68, 263.325,473.238
187
+ c-5.336-83.01-21.229-106.053-42.505-122.455c-12.786-9.863-23.954-18.497-29.854-33.528
188
+ c-36.261-92.354-65.52-122.037-79.528-125.254L 64.00,192.001 l0.00-198.885 l 145.721-19.501c0.00,0.00, 133.455-12.632, 175.482,0.00
189
+ c 13.223,3.966, 36.039,23.818, 41.432,36.556c 3.074,7.315-1.197,24.622, 2.443,31.677c 5.371,10.458, 28.051,23.559, 28.027,37.771
190
+ C 457.082,89.754, 445.276,107.298, 446.141,117.407z" />
191
+ <glyph unicode="&#x5c;" d="M 468.051,228.233c-0.50,8.447-15.959,20.854-17.063,29.237c-1.398,10.544, 17.047,28.369, 17.076,39.00
192
+ c 0.023,10.137-21.072,24.002-21.93,34.127c-0.861,10.104, 10.953,27.644, 10.969,37.781c 0.025,14.216-22.658,27.314-28.033,37.771
193
+ c-3.631,7.059, 0.643,24.368-2.443,31.681c-5.385,12.739-28.203,32.595-41.414,36.556c-42.035,12.629-175.483,0.00-175.483,0.00L 64.00,454.89
194
+ L 64.00,256.00 l 47.445,0.00 c 13.993-7.782, 43.261-32.282, 79.526-124.636c 5.90-15.034, 17.073-24.288, 29.854-34.143
195
+ c 21.282-16.406, 37.157-39.442, 42.493-122.459c 0.743-11.443, 36.557-9.74, 56.064,15.837c 15.975,20.931, 18.109,61.682, 5.484,92.402
196
+ c-8.604,20.962-39.895,69.511-28.643,89.171c0.00,0.00, 115.066-4.285, 137.701,4.871C 448.192,182.817, 468.942,212.873, 468.051,228.233z" />
197
+ <glyph unicode="&#x49;" d="M 507.331,68.67c-0.002,0.002-0.004,0.004-0.006,0.005L 352.003,224.00l 155.322,155.325c 0.002,0.002, 0.004,0.003, 0.006,0.005
198
+ c 1.672,1.673, 2.881,3.627, 3.656,5.708c 2.123,5.688, 0.912,12.341-3.662,16.915L 433.952,475.326c-4.574,4.573-11.225,5.783-16.914,3.66
199
+ c-2.08-0.775-4.035-1.984-5.709-3.655c0.00-0.002-0.002-0.003-0.004-0.005L 256.001,320.00L 100.677,475.325
200
+ c-0.002,0.002-0.003,0.003-0.005,0.005c-1.673,1.671-3.627,2.88-5.707,3.655c-5.69,2.124-12.341,0.913-16.915-3.66L 4.676,401.951
201
+ c-4.574-4.574-5.784-11.226-3.661-16.914c 0.776-2.08, 1.985-4.036, 3.656-5.708c 0.002-0.001, 0.003-0.003, 0.005-0.005L 160.001,224.00
202
+ L 4.676,68.674c-0.001-0.002-0.003-0.003-0.004-0.005c-1.671-1.673-2.88-3.627-3.657-5.707c-2.124-5.688-0.913-12.341, 3.661-16.915
203
+ l 73.374-73.373c 4.575-4.574, 11.226-5.784, 16.915-3.661c 2.08,0.776, 4.035,1.985, 5.708,3.656c 0.001,0.002, 0.003,0.003, 0.005,0.005
204
+ l 155.324,155.325l 155.324-155.325c 0.002-0.001, 0.004-0.003, 0.006-0.004c 1.674-1.672, 3.627-2.881, 5.707-3.657
205
+ c 5.689-2.123, 12.342-0.913, 16.914,3.661l 73.373,73.374c 4.574,4.574, 5.785,11.227, 3.662,16.915
206
+ C 510.212,65.043, 509.003,66.997, 507.331,68.67z" />
207
+ <glyph unicode="&#x5d;" d="M 496.00,288.00L 320.00,288.00 L 320.00,464.00 c0.00,8.836-7.164,16.00-16.00,16.00l-96.00,0.00 c-8.836,0.00-16.00-7.164-16.00-16.00l0.00-176.00 L 16.00,288.00 c-8.836,0.00-16.00-7.164-16.00-16.00l0.00-96.00
208
+ c0.00-8.836, 7.164-16.00, 16.00-16.00l 176.00,0.00 l0.00-176.00 c0.00-8.836, 7.164-16.00, 16.00-16.00l 96.00,0.00 c 8.836,0.00, 16.00,7.164, 16.00,16.00L 320.00,160.00 l 176.00,0.00 c 8.836,0.00, 16.00,7.164, 16.00,16.00l0.00,96.00
209
+ C 512.00,280.836, 504.836,288.00, 496.00,288.00z" />
210
+ <glyph unicode="&#x5e;" d="M0.00,272.00l0.00-96.00 c0.00-8.836, 7.164-16.00, 16.00-16.00l 480.00,0.00 c 8.836,0.00, 16.00,7.164, 16.00,16.00l0.00,96.00 c0.00,8.836-7.164,16.00-16.00,16.00L 16.00,288.00 C 7.164,288.00,0.00,280.836,0.00,272.00z" />
211
+ <glyph unicode="&#x5f;" d="M 352.00,480.00c-88.365,0.00-160.00-71.634-160.00-160.00c0.00-10.013, 0.929-19.808, 2.688-29.312L0.00,96.00l0.00-96.00 c0.00-17.673, 14.327-32.00, 32.00-32.00
212
+ l 32.00,0.00 l0.00,32.00 l 64.00,0.00 l0.00,64.00 l 64.00,0.00 l0.00,64.00 l 64.00,0.00 l 41.521,41.521C 314.526,163.363, 332.869,160.00, 352.00,160.00c 88.365,0.00, 160.00,71.634, 160.00,160.00S 440.365,480.00, 352.00,480.00z
213
+ M 399.937,319.937c-26.51,0.00-48.00,21.49-48.00,48.00s 21.49,48.00, 48.00,48.00s 48.00-21.49, 48.00-48.00S 426.447,319.937, 399.937,319.937z" />
214
+ <glyph unicode="&#x60;" d="M 0.24,145.083c 2.679-47.049, 39.488-88.803, 91.279-98.567c 60.231-11.338, 110.09,26.223, 120.614,82.178
215
+ c 10.537,55.972-22.22,109.096-82.441,120.438c-4.812,0.906-9.542,1.012-14.271,1.328c 0.172,25.458, 72.882,109.237, 120.208,153.047
216
+ l-34.006,0.00 C 20.17,311.957-2.764,172.124, 0.24,145.083zM 512.00,403.506l-33.999,0.00 C 296.55,311.956, 273.608,172.124, 276.62,145.083c 2.664-47.049, 39.479-88.803, 91.273-98.567
217
+ c 60.233-11.338, 110.072,26.223, 120.613,82.178c 10.541,55.972-22.227,109.096-82.45,120.438c-4.798,0.906-9.528,1.012-14.271,1.328
218
+ C 391.968,275.918, 464.682,359.696, 512.00,403.506z" />
219
+ <glyph unicode="&#x61;" d="M 511.76,302.919c-2.665,47.049-39.484,88.805-91.275,98.566c-60.233,11.338-110.089-26.221-120.615-82.176
220
+ c-10.532-55.97, 22.22-109.093, 82.445-120.438c 4.802-0.908, 9.535-1.013, 14.274-1.329c-0.176-25.463-72.893-109.236-120.214-153.049
221
+ l 34.006,0.00 C 491.829,136.047, 514.767,275.88, 511.76,302.919zM0.00,44.494l 34.006,0.00 C 215.452,136.047, 238.395,275.88, 235.381,302.92c-2.662,47.049-39.48,88.806-91.271,98.565
222
+ C 83.871,412.823, 34.029,375.267, 23.495,319.312c-10.542-55.97, 22.218-109.094, 82.446-120.438c 4.798-0.908, 9.529-1.014, 14.274-1.329
223
+ C 120.04,172.081, 47.323,88.308,0.00,44.494z" />
224
+ <glyph unicode="&#x62;" d="M 256.00,480.00C 114.614,480.00,0.00,444.184,0.00,400.00l0.00-64.00 c0.00-44.183, 114.611-80.00, 256.00-80.00c 141.385,0.00, 256.00,35.817, 256.00,80.00L 512.00,400.00 C 512.00,444.184, 397.385,480.00, 256.00,480.00
225
+ zM 255.193,224.00C 140.566,224.00, 43.94,247.543, 11.32,280.00C 3.705,272.423,0.00,264.361,0.00,256.00l0.00-64.00 c0.00-44.184, 114.611-80.00, 256.00-80.00
226
+ c 141.385,0.00, 256.00,35.816, 256.00,80.00l0.00,64.00 c0.00,8.361-4.516,16.423-12.131,24.00C 467.25,247.543, 369.82,224.00, 255.193,224.00zM 255.193,80.00C 140.566,80.00, 43.94,103.544, 11.32,136.00C 3.705,128.424,0.00,120.361,0.00,112.00l0.00-64.00 c0.00-44.183, 114.611-80.00, 256.00-80.00
227
+ c 141.385,0.00, 256.00,35.817, 256.00,80.00l0.00,64.00 c0.00,8.361-4.516,16.424-12.131,24.00C 467.25,103.544, 369.82,80.00, 255.193,80.00z" />
228
+ <glyph unicode="&#x63;" d="M 256.00,480.00c-81.67,0.00-147.871-66.202-147.871-147.87c0.00-2.014, 0.061-4.101, 0.16-6.224c 0.05-1.234, 0.126-2.454, 0.209-3.682
229
+ c 0.051-0.779, 0.113-1.574, 0.18-2.371c 0.104-1.304, 0.21-2.61, 0.35-3.906C 121.292,196.493, 256.001-32.00, 256.001-32.00
230
+ s 134.705,228.492, 146.97,347.948c 0.143,1.295, 0.245,2.603, 0.351,3.905c 0.065,0.797, 0.131,1.592, 0.183,2.371
231
+ c 0.084,1.229, 0.158,2.447, 0.21,3.683c 0.097,2.124, 0.157,4.211, 0.157,6.224C 403.866,413.799, 337.666,480.00, 256.00,480.00z M 320.00,320.00
232
+ c0.00-35.347-28.654-64.00-64.00-64.00c-35.346,0.00-64.00,28.653-64.00,64.00s 28.654,64.00, 64.00,64.00C 291.346,384.00, 320.00,355.347, 320.00,320.00z" />
233
+ <glyph unicode="&#x64;" d="M 192.00,384.00L 160.00,384.00L 160.00,320.00L 96.00,320.00L 96.00,288.00L 160.00,288.00L 160.00,224.00L 192.00,224.00L 192.00,288.00L 256.00,288.00L 256.00,320.00L 192.00,320.00 zM 318.771,201.076C 339.674,230.021, 352.00,265.568, 352.00,304.00C 352.00,401.202, 273.202,480.00, 176.00,480.00S0.00,401.202,0.00,304.00s 78.798-176.00, 176.00-176.00
234
+ c 38.432,0.00, 73.979,12.326, 102.924,33.229L 448.00-32.00l 64.00,64.00L 318.771,201.076z M 176.00,176.00c-70.692,0.00-128.00,57.308-128.00,128.00S 105.308,432.00, 176.00,432.00
235
+ s 128.00-57.308, 128.00-128.00S 246.693,176.00, 176.00,176.00z" />
236
+ <glyph unicode="&#x65;" d="M 96.00,320.00L 256.00,320.00L 256.00,288.00L 96.00,288.00zM 318.771,201.076C 339.674,230.021, 352.00,265.568, 352.00,304.00C 352.00,401.202, 273.202,480.00, 176.00,480.00S0.00,401.202,0.00,304.00s 78.798-176.00, 176.00-176.00
237
+ c 38.432,0.00, 73.979,12.326, 102.924,33.229L 448.00-32.00l 64.00,64.00L 318.771,201.076z M 176.00,176.00c-70.692,0.00-128.00,57.308-128.00,128.00S 105.308,432.00, 176.00,432.00
238
+ s 128.00-57.308, 128.00-128.00S 246.693,176.00, 176.00,176.00z" />
239
+ <glyph unicode="&#x66;" d="M 176.00,208.00L 80.00,112.00L0.00,192.00L0.00-32.00L 224.00-32.00L 144.00,48.00L 240.00,144.00 zM 288.00,480.00L 368.00,400.00L 272.00,304.00L 336.00,240.00L 432.00,336.00L 512.00,256.00L 512.00,480.00 z" />
240
+ <glyph unicode="&#x67;" d="M 80.00,112.00L0.00,32.00L 64.00-32.00L 144.00,48.00L 224.00-32.00L 224.00,192.00L0.00,192.00 zM 512.00,416.00L 448.00,480.00L 368.00,400.00L 288.00,480.00L 288.00,256.00L 512.00,256.00L 432.00,336.00 z" />
241
+ <glyph unicode="&#x68;" d="M 230.627,294.627L 150.628,374.627L 192.00,416.00L0.00,480.00L 64.00,288.00L 105.373,329.373L 185.373,249.373 zM 326.626,249.373L 406.627,329.372L 447.999,288.00L 512.00,480.00L 320.00,416.00L 361.372,374.627L 281.372,294.627 zM 281.372,153.373L 361.372,73.372L 320.00,32.00L 512.00-32.00L 448.00,160.00L 406.627,118.627L 326.627,198.627 zM 185.374,198.627L 105.373,118.627L 64.001,160.00L0.00-32.00L 192.00,32.00L 150.628,73.373L 230.628,153.373 z" />
242
+ <glyph unicode="&#x69;" d="M 38.627,313.373L 230.627,249.373L 166.627,441.373L 125.255,400.00L 45.255,480.00L0.00,434.746L 80.00,354.745 zM 432.00,354.746L 512.00,434.746L 466.746,480.00L 386.745,400.00L 345.373,441.373L 281.372,249.373L 473.372,313.373 zM 473.372,134.627L 281.372,198.627L 345.372,6.627L 386.745,48.00L 466.745-32.00L 512.00,13.254L 432.00,93.255 zM 80.00,93.254L0.00,13.254L 45.254-32.00L 125.255,48.00L 166.627,6.627L 230.628,198.627L 38.628,134.627 z" />
243
+ <glyph unicode="&#x6a;" d="M 416.00,160.00L 384.00,128.00L 320.00,288.00L 256.00,96.00L 160.00,448.00L 96.00,128.00L0.00,128.00L0.00,96.00L 122.235,96.00L 164.794,308.803L 225.128,87.58L 252.937-14.385L 322.734,195.005L 354.288,116.115L 372.313,71.057L 429.256,128.00L 512.00,128.00L 512.00,160.00 z" />
244
+ <glyph unicode="&#x6b;" d="M 258.181,254.091l 94.386,29.34L 256.00,351.723L 256.00,480.00 L 152.532,405.466L 32.00,448.00l 42.533-120.533L0.00,224.00l 128.00,0.00 l 68.567-96.568l 29.341,94.387
245
+ L 448.00-32.00l 64.00,64.00L 258.181,254.091z M 202.327,277.672l-19.579-62.986l-38.084,53.01L 78.712,267.696 l 39.447,52.861L 96.979,383.021l 62.464-21.182
246
+ l 52.862,39.447l0.00-65.952 l 53.008-38.084L 202.327,277.672z" />
247
+ <glyph unicode="&#x6c;" d="M 512.00,288.00L 512.00,480.00 l-74.985-74.985C 390.689,451.342, 326.694,480.00, 256.00,480.00C 114.615,480.00,0.00,365.385,0.00,224.00s 114.615-256.00, 256.00-256.00
248
+ c 70.692,0.00, 134.692,28.654, 181.02,74.98l-45.255,45.255C 357.02,53.49, 309.02,32.00, 256.00,32.00c-106.039,0.00-192.00,85.961-192.00,192.00
249
+ c0.00,106.039, 85.961,192.00, 192.00,192.00c 53.02,0.00, 101.004-21.506, 135.748-56.252L 320.00,288.00L 512.00,288.00 z" />
250
+ <glyph unicode="&#x6d;" d="M 448.00,384.00L 64.00,384.00 c-35.20,0.00-64.00-28.80-64.00-64.00l0.00-224.00 c0.00-35.20, 28.80-64.00, 64.00-64.00l 384.00,0.00 c 35.20,0.00, 64.00,28.80, 64.00,64.00L 512.00,320.00 C 512.00,355.20, 483.20,384.00, 448.00,384.00z
251
+ M 64.00,96.00c0.00,70.692, 35.817,128.00, 80.00,128.00c-26.51,0.00-48.00,21.49-48.00,48.00s 21.49,48.00, 48.00,48.00s 48.00-21.49, 48.00-48.00s-21.49-48.00-48.00-48.00
252
+ c 44.183,0.00, 80.00-57.308, 80.00-128.00L 64.00,96.00 z M 448.00,96.00L 288.00,96.00 l0.00,32.00 l 160.00,0.00 L 448.00,96.00 z M 448.00,192.00L 288.00,192.00 l0.00,32.00 l 160.00,0.00 L 448.00,192.00 z M 448.00,288.00L 288.00,288.00 l0.00,32.00 l 160.00,0.00 L 448.00,288.00 z" />
253
+ <glyph unicode="&#x6e;" d="M 240.00,448.00C 107.452,448.00,0.00,340.548,0.00,208.00c0.00-132.549, 107.452-240.00, 240.00-240.00c 132.549,0.00, 240.00,107.451, 240.00,240.00
254
+ C 480.00,340.548, 372.549,448.00, 240.00,448.00z M 240.00,0.00c-114.875,0.00-208.00,93.125-208.00,208.00S 125.125,416.00, 240.00,416.00s 208.00-93.125, 208.00-208.00
255
+ S 354.875,0.00, 240.00,0.00zM 256.00,253.258L 256.00,384.00 l-32.00,0.00 l0.00-130.742 c-18.641-6.59-32.00-24.36-32.00-45.258c0.00-26.51, 21.49-48.00, 48.00-48.00c 20.898,0.00, 38.667,13.359, 45.258,32.00
256
+ L 384.00,192.00 l0.00,32.00 l-98.742,0.00 C 280.438,237.635, 269.636,248.437, 256.00,253.258z" />
257
+ <glyph unicode="&#x6f;" d="M 256.00,480.00C 114.615,480.00,0.00,365.385,0.00,224.00s 114.615-256.00, 256.00-256.00s 256.00,114.615, 256.00,256.00S 397.385,480.00, 256.00,480.00z M 256.00,0.00
258
+ C 132.288,0.00, 32.00,100.288, 32.00,224.00S 132.288,448.00, 256.00,448.00s 224.00-100.288, 224.00-224.00S 379.712,0.00, 256.00,0.00zM 128.00,96.00l 169.373,79.17L 384.00,352.00l-173.255-82.745L 128.00,96.00z M 256.00,256.00c 17.673,0.00, 32.00-14.327, 32.00-32.00c0.00-17.673-14.327-32.00-32.00-32.00
259
+ c-17.673,0.00-32.00,14.327-32.00,32.00C 224.00,241.673, 238.327,256.00, 256.00,256.00z" />
260
+ <glyph unicode="&#x70;" d="M 480.00,352.00c 17.673,0.00, 32.00,14.327, 32.00,32.00L 512.00,448.00 l-64.00,0.00 L 448.00,480.00 L 32.00,480.00 C 14.40,480.00,0.00,465.601,0.00,448.00l0.00-448.00 c0.00-17.60, 14.398-32.00, 32.00-32.00l 416.00,0.00 L 448.00,96.00 l 32.00,0.00
261
+ c 17.673,0.00, 32.00,14.327, 32.00,32.00l0.00,64.00 l-64.00,0.00 l0.00,32.00 l 32.00,0.00 c 17.673,0.00, 32.00,14.327, 32.00,32.00l0.00,64.00 l-64.00,0.00 l0.00,32.00 L 480.00,352.00 z M 288.00,333.255
262
+ c 24.992,0.00, 45.255-20.262, 45.255-45.255S 312.992,242.745, 288.00,242.745c-24.994,0.00-45.255,20.262-45.255,45.255
263
+ S 263.006,333.255, 288.00,333.255z M 128.00,0.00L 96.00,0.00 L 96.00,448.00 l 32.00,0.00 L 128.00,0.00 z M 208.656,128.00c0.00,96.00, 53.272,96.00, 79.909,96.00c 26.636,0.00, 79.908,0.00, 79.908-96.00L 208.656,128.00 z
264
+ " />
265
+ <glyph unicode="&#x71;" d="M 426.67,480.00L 85.343,480.00 C 38.405,480.00,0.00,441.594,0.00,394.656l0.00-341.314 C0.00,6.375, 38.406-32.00, 85.344-32.00L 426.67-32.00
266
+ c 46.938,0.00, 85.33,38.374, 85.33,85.342L 512.00,394.656 C 512.00,441.594, 473.608,480.00, 426.67,480.00z M 139.472,64.376C 115.487,64.376, 96.00,83.722, 96.00,107.69
267
+ c0.00,23.842, 19.486,43.406, 43.472,43.406c 24.079,0.00, 43.53-19.564, 43.53-43.406C 183.001,83.722, 163.55,64.376, 139.472,64.376z
268
+ M 248.734,64.002c0.00,40.905-15.904,79.409-44.73,108.222c-28.857,28.875-67.188,44.813-107.952,44.813L 96.052,279.63
269
+ c 118.826,0.00, 215.563-96.721, 215.563-215.627L 248.734,64.002L 248.734,64.002z M 359.814,64.002
270
+ c0.00,145.531-118.329,263.97-263.688,263.97L 96.126,390.596 c 180.001,0.00, 326.473-146.562, 326.473-326.596L 359.814,64.002L 359.814,64.002z" />
271
+ <glyph unicode="&#x72;" d="M 348.916,316.476l-32.476,32.461L 154.035,186.566c-26.907-26.896-26.907-70.524,0.00-97.422
272
+ c 26.902-26.896, 70.53-26.896, 97.437,0.00l 194.886,194.854c 44.857,44.831, 44.857,117.531,0.00,162.363
273
+ c-44.833,44.852-117.556,44.852-162.391,0.00L 79.335,241.788l 0.017-0.016c-0.145-0.152-0.306-0.288-0.438-0.423
274
+ c-62.551-62.548-62.551-163.928,0.00-226.453c 62.527-62.528, 163.934-62.528, 226.494,0.00c 0.137,0.137, 0.258,0.284, 0.41,0.438l 0.016-0.017
275
+ l 139.666,139.646l-32.493,32.46L 273.35,47.792l-0.008,0.00 c-0.148-0.134-0.282-0.285-0.423-0.422
276
+ c-44.537-44.529-116.99-44.529-161.538,0.00c-44.531,44.521-44.531,116.961,0.00,161.489c 0.152,0.152, 0.302,0.291, 0.444,0.423l-0.023,0.03
277
+ l 204.64,204.583c 26.856,26.869, 70.572,26.869, 97.443,0.00c 26.856-26.867, 26.856-70.574,0.00-97.42L 218.999,121.625
278
+ c-8.968-8.961-23.527-8.961-32.486,0.00c-8.947,8.943-8.947,23.516,0.00,32.46L 348.916,316.476z" />
279
+ <glyph unicode="&#x73;" d="M 320.00,480.00L 320.00,416.00L 448.00,288.00L 512.00,288.00 zM 176.00,272.00L 64.00,256.00l 93.793-93.793L0.00-32.00l 194.207,157.793L 288.00,32.00l 16.00,112.00l 112.00,112.00L 288.00,384.00L 176.00,272.00z M 224.00,224.00l-32.00,32.00l 96.00,96.00l 32.00-32.00
280
+ L 224.00,224.00z" />
281
+ <glyph unicode="&#x74;" d="M 256.003,480.00c-85.374,0.00-154.661-68.339-154.661-152.54c0.00-42.102, 25.089-86.239, 53.788-133.976
282
+ c 28.70-47.737, 6.022-100.49, 103.695-99.073c 93.617,1.376, 69.35,44.274, 96.629,92.011c 27.289,47.736, 55.205,98.938, 55.205,141.039
283
+ C 410.66,411.662, 341.371,480.00, 256.003,480.00zM 191.076,80.777l0.00-40.615 c 19.95-6.488, 41.896-10.088, 64.927-10.088c 23.029,0.00, 44.97,3.60, 64.921,10.086l0.00,37.525
284
+ c-11.158-10.273-29.447-13.10-62.10-13.645C 222.605,63.443, 202.953,67.848, 191.076,80.777zM 191.753,14.944c 2.507-13.705, 13.30-46.944, 64.25-46.944c 50.949,0.00, 61.742,33.239, 64.25,46.944
285
+ c-28.826-8.815-41.977-9.291-64.25-9.291C 233.728,5.653, 220.577,6.129, 191.753,14.944z" />
286
+ <glyph unicode="&#x75;" d="M 496.00,0.00L 384.00,0.00L 384.00,16.00L 368.00,16.00L 368.00,0.00L 208.00,0.00L 208.00,16.00L 192.00,16.00L 192.00,0.00L 80.00,0.00L 80.00,16.00L 64.00,16.00L 64.00,0.00L 32.00,0.00L 32.00,144.00L 48.00,144.00L 48.00,160.00L 32.00,160.00L 32.00,272.00L 48.00,272.00L 48.00,288.00L 32.00,288.00L 32.00,400.00L 48.00,400.00L 48.00,416.00L 32.00,416.00L 32.00,480.00L0.00,480.00L0.00-32.00L 512.00-32.00L 512.00,16.00L 496.00,16.00 zM 220.00,284.00L 212.00,276.00L 212.00,149.941L 220.00,157.941 zM 204.00,268.00L 196.00,260.00L 196.00,133.941L 204.00,141.941 zM 188.00,125.941L 188.00,258.00L 180.00,262.00L 180.00,128.833L 187.261,125.202 zM 268.00,332.00L 260.00,324.00L 260.00,197.941L 268.00,205.941 zM 236.00,300.00L 228.00,292.00L 228.00,165.941L 236.00,173.941 zM 172.00,266.00L 164.00,270.00L 164.00,136.833L 172.00,132.833 zM 252.00,316.00L 244.00,308.00L 244.00,181.941L 252.00,189.941 zM 124.00,290.00L 116.00,294.00L 116.00,160.833L 124.00,156.833 zM 92.00,306.00L 84.00,310.00L 84.00,176.833L 92.00,172.833 zM 156.00,274.00L 148.00,278.00L 148.00,144.833L 156.00,140.833 zM 108.00,298.00L 100.00,302.00L 100.00,168.833L 108.00,164.833 zM 76.00,314.00L 68.00,318.00L 68.00,184.833L 76.00,180.833 zM 284.00,348.00L 276.00,340.00L 276.00,213.941L 284.00,221.941 zM 140.00,282.00L 132.00,286.00L 132.00,152.833L 140.00,148.833 zM 412.00,316.00L 404.00,308.00L 404.00,137.267L 412.00,149.267 zM 428.00,332.00L 420.00,324.00L 420.00,161.267L 428.00,173.267 zM 444.00,348.00L 436.00,340.00L 436.00,185.267L 444.00,197.267 zM 476.00,380.00L 468.00,372.00L 468.00,233.267L 476.00,245.267 zM 460.00,364.00L 452.00,356.00L 452.00,209.267L 460.00,221.267 zM 508.00,412.00L 500.00,404.00L 500.00,281.267L 508.00,293.267 zM 492.00,396.00L 484.00,388.00L 484.00,257.267L 492.00,269.267 zM 348.00,312.00L 340.00,317.333L 340.00,162.666L 348.00,152.00 zM 332.00,322.667L 324.00,328.00L 324.00,184.00L 332.00,173.333 zM 300.00,344.00L 292.00,349.333L 292.00,226.667L 300.00,216.00 zM 316.00,333.333L 308.00,338.667L 308.00,205.333L 316.00,194.666 zM 364.00,301.333L 356.00,306.667L 356.00,141.333L 364.00,130.666 zM 396.00,300.00L 388.00,292.00L 388.00,113.268L 396.00,125.267 zM 380.00,290.667L 372.00,296.00L 372.00,119.999L 380.00,109.333 zM 384.00,64.00L 288.00,192.00L 192.00,96.00L 64.00,160.00L 64.00,32.00L 512.00,32.00L 512.00,256.00 z" />
287
+ <glyph unicode="&#x76;" d="M0.00,64.00L 512.00,64.00L 512.00,0.00L0.00,0.00zM 64.00,192.00L 128.00,192.00L 128.00,96.00L 64.00,96.00zM 160.00,320.00L 224.00,320.00L 224.00,96.00L 160.00,96.00zM 256.00,224.00L 320.00,224.00L 320.00,96.00L 256.00,96.00zM 352.00,416.00L 416.00,416.00L 416.00,96.00L 352.00,96.00z" />
288
+ <glyph unicode="&#x77;" d="M 224.00,192.00L 224.00,416.00 C 100.288,416.00,0.00,315.712,0.00,192.00s 100.288-224.00, 224.00-224.00s 224.00,100.288, 224.00,224.00c0.00,36.017-8.514,70.042-23.618,100.191
289
+ L 224.00,192.00zM 456.382,356.191C 419.606,429.599, 343.695,480.00, 256.00,480.00l0.00-224.00 L 456.382,356.191z" />
290
+ <glyph unicode="&#x78;" d="M 256.00,480.00C 114.615,480.00,0.00,365.385,0.00,224.00s 114.615-256.00, 256.00-256.00s 256.00,114.615, 256.00,256.00S 397.385,480.00, 256.00,480.00z M 256.00,32.00
291
+ c-106.039,0.00-192.00,85.961-192.00,192.00c0.00,106.039, 85.961,192.00, 192.00,192.00c 106.039,0.00, 192.00-85.961, 192.00-192.00C 448.00,117.961, 362.039,32.00, 256.00,32.00zM 224.00,352.00A32.00,32.00 4500.00 1,0 288.00,352A32.00,32.00 4500.00 1,0 224.00,352zM 320.00,320.00A32.00,32.00 4500.00 1,0 384.00,320A32.00,32.00 4500.00 1,0 320.00,320zM 128.00,320.00A32.00,32.00 4500.00 1,0 192.00,320A32.00,32.00 4500.00 1,0 128.00,320zM 224.00,128.00L 224.00,96.00L 288.00,96.00L 288.00,128.00L 256.00,288.00 z" />
292
+ <glyph unicode="&#x79;" d="M 192.00,480.00L0.00,224.00L 192.00,224.00L 64.00-32.00L 512.00,288.00L 256.00,288.00L 448.00,480.00 z" />
293
+ <glyph unicode="&#x7a;" d="M 512.00,224.00L 384.00,320.00L 384.00,256.00L 288.00,256.00L 288.00,352.00L 352.00,352.00L 256.00,480.00L 160.00,352.00L 224.00,352.00L 224.00,256.00L 128.00,256.00L 128.00,320.00L0.00,224.00L 128.00,128.00L 128.00,192.00L 224.00,192.00L 224.00,96.00L 160.00,96.00L 256.00-32.00L 352.00,96.00L 288.00,96.00L 288.00,192.00L 384.00,192.00L 384.00,128.00 z" />
294
+ <glyph unicode="&#x7b;" d="M 255.999,224.00L 128.00,352.00L 128.00,96.00 zM 256.00,352.00L 256.00,96.00L 384.00,224.00 z" />
295
+ <glyph unicode="&#x7c;" d="M 256.001,224.00L 384.00,96.00L 384.00,352.00 zM 256.00,96.00L 256.00,352.00L 128.00,224.00 z" />
296
+ <glyph unicode="&#x7d;" d="M 256.001,224.00L 384.00,96.00L 384.00,352.00 zM 128.00,352.00L 64.00,352.00L 64.00,96.00L 128.00,96.00L 128.00,224.00L 256.00,96.00L 256.00,352.00L 128.00,224.00 z" />
297
+ <glyph unicode="&#xe000;" d="M 256.00,224.00L 128.00,352.00L 128.00,96.00 zM 384.00,96.00L 448.00,96.00L 448.00,352.00L 384.00,352.00L 384.00,224.00L 256.001,352.00L 256.001,96.00L 384.00,224.00 z" />
298
+ <glyph unicode="&#xe001;" d="M 437.011,405.01C 390.685,451.338, 326.693,480.00, 256.00,480.00C 146.256,480.00, 52.655,410.936, 16.251,313.906l 59.938-22.477
299
+ C 103.491,364.202, 173.692,416.00, 256.00,416.00c 53.02,0.00, 101.01-21.50, 135.753-56.247L 320.00,288.00l 192.00,0.00 L 512.00,480.00 L 437.011,405.01zM 256.00,32.00c-53.02,0.00-101.013,21.496-135.756,56.244L 192.00,160.00L0.00,160.00 l0.00-192.00 l 74.997,74.997C 121.32-3.334, 185.306-32.00, 256.00-32.00
300
+ c 109.745,0.00, 203.346,69.064, 239.75,166.094l-59.938,22.477C 408.51,83.798, 338.309,32.00, 256.00,32.00z" />
301
+ <glyph unicode="&#xe002;" d="M 512.00,352.00L 384.00,480.00l0.00-96.00 c-65.386,0.00-115.376-15.604-152.825-47.704c-2.625-2.25-5.142-4.55-7.581-6.887
302
+ c 13.76-19.082, 24.358-38.758, 33.886-57.545C 281.641,301.065, 316.507,320.00, 384.00,320.00l0.00-96.00 l0.00,0.00 l0.00-96.00 c-108.223,0.00-132.563,48.68-163.378,110.311
303
+ c-17.153,34.306-34.89,69.78-67.796,97.985C 115.376,368.396, 65.386,384.00,0.00,384.00l0.00-64.00 c 108.223,0.00, 132.563-48.68, 163.378-110.311
304
+ c 17.153-34.306, 34.89-69.78, 67.796-97.985C 268.624,79.604, 318.615,64.00, 384.00,64.00l0.00-96.00 l 128.00,128.00L 384.00,224.00L 512.00,352.00zM0.00,128.00l0.00-64.00 c 65.386,0.00, 115.375,15.604, 152.825,47.704c 2.625,2.249, 5.142,4.55, 7.581,6.888
305
+ c-13.76,19.081-24.359,38.758-33.886,57.545C 102.36,146.936, 67.494,128.00,0.00,128.00z" />
306
+ <glyph unicode="&#xe003;" d="M 416.00,384.00L 320.00,480.00L 64.00,224.00L 320.00-32.00L 416.00,64.00L 256.00,224.00 zM0.00,480.00L0.00-32.00L 64.00-32.00L 64.00,224.00L 64.00,480.00 z" />
307
+ <glyph unicode="&#xe004;" d="M 96.00,64.00L 192.00-32.00L 448.00,224.00L 192.00,480.00L 96.00,384.00L 256.00,224.00 zM 512.00-32.00L 512.00,480.00L 448.00,480.00L 448.00,224.00L 448.00-32.00 z" />
308
+ <glyph unicode="&#xe005;" d="M0.00,160.00L 96.00,64.00L 256.00,224.00L 416.00,64.00L 512.00,160.00L 256.001,416.00 z" />
309
+ <glyph unicode="&#xe006;" d="M 192.00,480.00L 96.00,384.00L 256.00,224.00L 96.00,64.00L 192.00-32.00L 448.00,224.00 z" />
310
+ <glyph unicode="&#xe007;" d="M 512.00,288.00L 416.00,384.00L 256.00,224.00L 96.00,384.00L0.00,288.00L 256.00,32.001 z" />
311
+ <glyph unicode="&#xe008;" d="M 320.00-32.00L 416.00,64.00L 256.00,224.00L 416.00,384.00L 320.00,480.00L 64.00,224.00 z" />
312
+ <glyph unicode="&#xe009;" d="M 128.00,256.00L 128.00,192.001L 224.00,288.00L 224.00,96.001L 288.00,96.00L 288.001,288.00L 384.001,192.00L 384.001,256.00L 256.001,384.00 zM0.00,224.00c0.00-141.384, 114.615-255.999, 256.00-256.00c 141.385,0.00, 256.00,114.615, 256.00,256.00c 0.001,141.385-114.614,256.00-256.00,256.00
313
+ S0.00,365.385,0.00,224.00z M 480.001,224.00C 480.00,100.288, 379.712,0.00, 256.00,0.00C 132.288,0.001, 32.00,100.289, 32.00,224.00c0.00,123.712, 100.288,224.00, 224.00,224.00
314
+ S 480.001,347.712, 480.001,224.00z" />
315
+ <glyph unicode="&#xe00a;" d="M 288.00,352.00L 224.00,352.00L 320.00,256.00L 128.00,256.00L 128.00,192.00L 320.00,192.00L 224.00,96.00L 288.00,96.00L 416.00,224.00 zM 256.00,480.00C 114.615,480.00,0.00,365.385,0.00,224.00s 114.615-256.00, 256.00-256.00s 256.00,114.615, 256.00,256.00S 397.385,480.00, 256.00,480.00z M 256.00,0.00
316
+ C 132.288,0.00, 32.00,100.288, 32.00,224.00S 132.288,448.00, 256.00,448.00s 224.00-100.288, 224.00-224.00S 379.712,0.00, 256.00,0.00z" />
317
+ <glyph unicode="&#xe00b;" d="M 384.00,192.00L 384.00,256.00L 288.00,160.00L 288.00,352.00L 224.00,352.00L 224.00,160.00L 128.00,256.00L 128.00,192.00L 256.00,64.00 zM 512.00,224.00C 512.00,365.385, 397.385,480.00, 256.00,480.00S0.00,365.385,0.00,224.00s 114.615-256.00, 256.00-256.00S 512.00,82.615, 512.00,224.00z M 32.00,224.00
318
+ C 32.00,347.712, 132.288,448.00, 256.00,448.00s 224.00-100.288, 224.00-224.00S 379.712,0.00, 256.00,0.00S 32.00,100.288, 32.00,224.00z" />
319
+ <glyph unicode="&#xe00c;" d="M 224.00,96.00L 288.00,96.00L 192.00,192.00L 384.00,192.00L 384.00,256.00L 192.00,256.00L 288.00,352.00L 224.00,352.00L 96.00,224.00 zM 256.00-32.00c 141.385,0.00, 256.00,114.615, 256.00,256.00S 397.385,480.00, 256.00,480.00C 114.615,480.00,0.00,365.385,0.00,224.00C0.00,82.615, 114.615-32.00, 256.00-32.00z
320
+ M 256.00,448.00c 123.712,0.00, 224.00-100.289, 224.00-224.00S 379.712,0.00, 256.00,0.00S 32.00,100.288, 32.00,224.00C 32.00,347.712, 132.288,448.00, 256.00,448.00z" />
321
+ <glyph unicode="&#xe00d;" d="M 256.00,480.00C 114.615,480.00,0.00,365.385,0.00,224.00s 114.615-256.00, 256.00-256.00s 256.00,114.615, 256.00,256.00S 397.385,480.00, 256.00,480.00z M 256.00,0.00
322
+ C 132.288,0.00, 32.00,100.288, 32.00,224.00S 132.288,448.00, 256.00,448.00s 224.00-100.288, 224.00-224.00S 379.712,0.00, 256.00,0.00zM 192.00,113.148L 384.00,224.00L 192.00,334.852 z" />
323
+ <glyph unicode="&#xe00e;" d="M 384.00,256.00L 256.00,384.00L 128.00,256.00 zM 128.00,160.00L 256.00,32.00L 384.00,160.00 z" />
324
+ <glyph unicode="&#xe00f;" d="M 384.00,160.00L 256.00,288.00L 128.00,160.00 z" />
325
+ <glyph unicode="&#xe010;" d="M 192.001,96.00L 320.001,224.00L 192.001,352.00 z" />
326
+ <glyph unicode="&#xe011;" d="M 128.00,288.00L 256.00,160.00L 384.00,288.00 z" />
327
+ <glyph unicode="&#xe012;" d="M 320.001,352.00L 192.001,224.00L 320.001,95.999 z" />
328
+ <glyph unicode="&#xe013;" d="M 448.00,192.00L 448.00,64.00L 64.00,64.00L 64.00,192.00L0.00,192.00L0.00,0.00L 512.00,0.00L 512.00,192.00 zM 416.00,448.00L 96.00,448.00 l0.00-352.00 l 320.00,0.00 L 416.00,448.00 z M 352.00,160.00L 160.00,160.00 l0.00,32.00 l 192.00,0.00 L 352.00,160.00 z M 352.00,256.00L 160.00,256.00 l0.00,32.00 l 192.00,0.00 L 352.00,256.00 z M 352.00,352.00L 160.00,352.00 L 160.00,384.00 l 192.00,0.00 L 352.00,352.00 z" />
329
+ <glyph unicode="&#xe014;" d="M 257.54,416.00C 92.994,416.00,0.00,306.648,0.00,226.653c0.00-121.887, 109.354-174.477, 200.308-196.956
330
+ C 291.269,7.209, 315.48,48.462, 314.022,96.00c-1.771,57.75, 21.074,62.496, 41.52,60.459C 375.973,154.408, 512.00,122.695, 512.00,214.674
331
+ C 512.002,306.648, 422.072,416.00, 257.54,416.00z M 80.00,152.00c-13.255,0.00-24.00,10.744-24.00,24.00s 10.745,24.00, 24.00,24.00s 24.00-10.744, 24.00-24.00S 93.255,152.00, 80.00,152.00z
332
+ M 112.00,248.00c-13.255,0.00-24.00,10.745-24.00,24.00s 10.745,24.00, 24.00,24.00s 24.00-10.745, 24.00-24.00S 125.255,248.00, 112.00,248.00z M 176.00,336.00c0.00,17.673, 14.327,32.00, 32.00,32.00
333
+ c 17.674,0.00, 32.00-14.327, 32.00-32.00s-14.326-32.00-32.00-32.00C 190.327,304.00, 176.00,318.327, 176.00,336.00z M 256.00,150.724c-30.225,0.00-54.727,18.294-54.727,40.862
334
+ c0.00,22.567, 24.502,40.861, 54.727,40.861c 30.226,0.00, 54.727-18.294, 54.727-40.861C 310.727,169.018, 286.226,150.724, 256.00,150.724z
335
+ M 352.00,272.00c-26.51,0.00-48.00,21.491-48.00,48.00s 21.49,48.00, 48.00,48.00s 48.00-21.491, 48.00-48.00S 378.51,272.00, 352.00,272.00z" />
336
+ <glyph unicode="&#xe015;" d="M 288.00,352.00L 64.00,352.00 c-17.601,0.00-32.00-14.399-32.00-32.00l0.00-192.00 c0.00-17.60, 14.399-32.00, 32.00-32.00l 224.00,0.00 c 17.601,0.00, 32.00,14.40, 32.00,32.00L 320.00,320.00
337
+ C 320.00,337.601, 305.601,352.00, 288.00,352.00zM 352.00,242.286L 352.00,205.715L 480.00,96.00L 480.00,352.00 z" />
338
+ <glyph unicode="&#xe016;" d="M 352.00,480.00L 32.00,480.00 l0.00-512.00 l 448.00,0.00 L 480.00,352.00 L 352.00,480.00z M 448.00,0.00L 64.00,0.00 L 64.00,448.00 l 288.00,0.00 l0.00-96.00 l 96.00,0.00 L 448.00,0.00 z" />
339
+ <glyph unicode="&#xe017;" d="M 320.00,96.00L 512.00,96.00L 512.00,32.00L 320.00,32.00zM 32.00,448.00L 320.00,448.00L 320.00,352.00L 416.00,352.00L 416.00,192.00L 448.00,192.00L 448.00,352.00L 320.00,480.00L0.00,480.00L0.00-32.00L 288.00-32.00L 288.00,0.00L 32.00,0.00 z" />
340
+ <glyph unicode="&#xe018;" d="M 448.00,352.00L 320.00,352.00 L 320.00,416.00 L 256.00,480.00L0.00,480.00 l0.00-384.00 l 192.00,0.00 l0.00-128.00 l 320.00,0.00 L 512.00,288.00 L 448.00,352.00z M 32.00,128.00L 32.00,448.00 l 192.00,0.00 l 64.00-64.00l0.00-32.00 l-96.00,0.00 l0.00-224.00 L 32.00,128.00 z M 480.00,0.00L 224.00,0.00 L 224.00,320.00 l 192.00,0.00 l 64.00-64.00L 480.00,0.00
341
+ z" />
342
+ <glyph unicode="&#xe019;" d="M 64.00,16.00A48.00,48.00 1260.00 1,0 160.00,16A48.00,48.00 1260.00 1,0 64.00,16zM 384.00,16.00A48.00,48.00 1260.00 1,0 480.00,16A48.00,48.00 1260.00 1,0 384.00,16zM 480.00,224.00L 480.00,416.00 L 64.00,416.00 C 64.00,451.346, 35.347,480.00,0.00,480.00l0.00-32.00 c 17.645,0.00, 32.00-14.355, 32.00-32.00l 24.037-206.027C 41.39,198.244, 32.00,180.223, 32.00,160.00
343
+ c0.00-35.348, 28.654-64.00, 64.00-64.00l 384.00,0.00 l0.00,32.00 L 96.00,128.00 c-17.673,0.00-32.00,14.327-32.00,32.00c0.00,0.109, 0.007,0.218, 0.008,0.328L 480.00,224.00z M 67.951,384.00L 448.00,384.00 l0.00-4.00
344
+ L 68.417,380.00 L 67.951,384.00z M 448.00,372.00l0.00-8.00 L 70.284,364.00 l-0.934,8.00L 448.00,372.00 z M 448.00,356.00l0.00-8.00 L 72.151,348.00 l-0.934,8.00L 448.00,356.00 z M 448.00,340.00l0.00-8.00 L 74.018,332.00 l-0.934,8.00L 448.00,340.00 z M 448.00,324.00l0.00-8.00
345
+ L 75.884,316.00 l-0.934,8.00L 448.00,324.00 z M 448.00,308.00l0.00-8.00 L 77.751,300.00 l-0.934,8.00L 448.00,308.00 z M 88.951,204.00l-0.934,8.00l 102.082,0.00 l-52.267-8.00L 88.951,204.00 z M 87.084,220.00l-0.933,8.00
346
+ l 208.481,0.00 l-52.267-8.00L 87.084,220.00 z M 85.218,236.00l-0.934,8.00l 314.882,0.00 l-52.267-8.00L 85.218,236.00 z M 83.351,252.00l-0.933,8.00L 448.00,260.00 l0.00-8.00 L 83.351,252.00 z M 81.484,268.00
347
+ l-0.934,8.00L 448.00,276.00 l0.00-8.00 L 81.484,268.00 z M 79.618,284.00l-0.934,8.00L 448.00,292.00 l0.00-8.00 L 79.618,284.00 z" />
348
+ <glyph unicode="&#xe01a;" d="M 406.494,288.00L 317.573,403.765C 319.134,407.535, 320.00,411.666, 320.00,416.00c0.00,17.673-14.326,32.00-32.00,32.00c-17.673,0.00-32.00-14.327-32.00-32.00
349
+ s 14.327-32.00, 32.00-32.00c 1.421,0.00, 2.816,0.102, 4.188,0.282L 366.144,288.00L 145.857,288.00 l 73.956,96.282C 221.184,384.102, 222.58,384.00, 224.00,384.00
350
+ c 17.673,0.00, 32.00,14.327, 32.00,32.00s-14.327,32.00-32.00,32.00s-32.00-14.327-32.00-32.00c0.00-4.334, 0.866-8.465, 2.427-12.234L 105.506,288.00L0.00,288.00 l0.00-64.00 l 32.00,0.00 l 32.00-256.00l 384.00,0.00
351
+ l 32.00,256.00l 32.00,0.00 l0.00,64.00 L 406.494,288.00 z M 160.00,32.00L 96.00,32.00 l0.00,64.00 l 64.00,0.00 L 160.00,32.00 z M 160.00,160.00L 96.00,160.00 l0.00,64.00 l 64.00,0.00 L 160.00,160.00 z M 288.00,32.00l-64.00,0.00 l0.00,64.00 l 64.00,0.00 L 288.00,32.00 z M 288.00,160.00l-64.00,0.00 l0.00,64.00 l 64.00,0.00 L 288.00,160.00 z
352
+ M 416.00,32.00l-64.00,0.00 l0.00,64.00 l 64.00,0.00 L 416.00,32.00 z M 416.00,160.00l-64.00,0.00 l0.00,64.00 l 64.00,0.00 L 416.00,160.00 z" />
353
+ <glyph unicode="&#xe01b;" d="M 224.00,96.00A32.00,32.00 6300.00 1,0 288.00,96A32.00,32.00 6300.00 1,0 224.00,96zM 256.00,416.00c-96.026,0.00-182.161-42.307-240.815-109.286l 24.081-21.071C 92.055,345.923, 169.577,384.00, 256.00,384.00
354
+ c 86.423,0.00, 163.945-38.077, 216.734-98.357l 24.081,21.071C 438.161,373.693, 352.027,416.00, 256.00,416.00zM 256.00,320.00c-67.218,0.00-127.513-29.615-168.571-76.50l 24.082-21.071C 146.703,262.616, 198.385,288.00, 256.00,288.00
355
+ c 57.616,0.00, 109.297-25.384, 144.489-65.571l 24.082,21.071C 383.513,290.385, 323.219,320.00, 256.00,320.00zM 256.00,224.00c-38.41,0.00-72.865-16.923-96.326-43.715l 24.082-21.071C 201.352,179.308, 227.192,192.00, 256.00,192.00
356
+ c 28.808,0.00, 54.648-12.692, 72.245-32.786l 24.081,21.071C 328.865,207.077, 294.41,224.00, 256.00,224.00z" />
357
+ <glyph unicode="&#xe01c;" d="M 512.00,64.00L 512.00,448.00 L0.00,448.00 l0.00-384.00 l 224.00,0.00 l0.00-32.00 l-96.00,0.00 l0.00-32.00 l 256.00,0.00 l0.00,32.00 l-96.00,0.00 l0.00,32.00 L 512.00,64.00 z M 64.00,384.00l 384.00,0.00 l0.00-256.00 L 64.00,128.00 L 64.00,384.00 z" />
358
+ <glyph unicode="&#xe01d;" d="M 416.00,480.00L 96.00,480.00 C 78.40,480.00, 64.00,465.60, 64.00,448.00l0.00-448.00 c0.00-17.60, 14.40-32.00, 32.00-32.00l 320.00,0.00 c 17.60,0.00, 32.00,14.40, 32.00,32.00L 448.00,448.00 C 448.00,465.60, 433.60,480.00, 416.00,480.00z M 256.00-16.00
359
+ c-8.837,0.00-16.00,7.163-16.00,16.00s 7.163,16.00, 16.00,16.00s 16.00-7.163, 16.00-16.00S 264.837-16.00, 256.00-16.00z M 384.00,32.00L 128.00,32.00 L 128.00,416.00 l 256.00,0.00 L 384.00,32.00 z" />
360
+ <glyph unicode="&#xe01e;" d="M 384.00,480.00L 96.00,480.00 C 78.40,480.00, 64.00,465.601, 64.00,448.00l0.00-448.00 c0.00-17.60, 14.399-32.00, 32.00-32.00l 288.00,0.00 c 17.60,0.00, 32.00,14.40, 32.00,32.00L 416.00,448.00 C 416.00,465.601, 401.60,480.00, 384.00,480.00z
361
+ M 240.00-8.891c-13.746,0.00-24.891,11.145-24.891,24.891s 11.145,24.891, 24.891,24.891s 24.891-11.145, 24.891-24.891
362
+ S 253.746-8.891, 240.00-8.891z M 384.00,64.00L 96.00,64.00 L 96.00,416.00 l 288.00,0.00 L 384.00,64.00 z" />
363
+ <glyph unicode="&#xe01f;" d="M 288.00,158.078l0.00,14.768 c 19.129,16.60, 32.00,47.621, 32.00,83.154c0.00,53.02-28.653,96.00-64.00,96.00c-35.346,0.00-64.00-42.98-64.00-96.00
364
+ c0.00-35.535, 12.872-66.558, 32.003-83.156l0.00-14.766 c-73.031-8.895-128.00-47.634-128.00-94.078L 416.00,64.00 C 416.00,110.444, 361.031,149.184, 288.00,158.078zM 160.84,175.194c-13.354,8.158-30.188,13.814-48.839,15.902l0.00,7.341 c 9.562,8.301, 16.00,23.799, 16.00,41.563
365
+ c0.00,26.51-14.327,48.00-32.00,48.00s-32.00-21.49-32.00-48.00c0.00-17.764, 6.438-33.262, 16.00-41.563l0.00-7.327 c-45.402-5.079-80.00-31.397-80.00-63.109l 89.713,0.00
366
+ C 106.735,147.614, 131.324,163.943, 160.84,175.194zM 432.00,191.11l0.00,7.327 c 9.563,8.301, 16.00,23.799, 16.00,41.563c0.00,26.51-14.327,48.00-32.00,48.00s-32.00-21.49-32.00-48.00
367
+ c0.00-17.764, 6.438-33.262, 16.00-41.563l0.00-7.341 c-18.65-2.088-35.485-7.744-48.84-15.902c 29.516-11.251, 54.104-27.58, 71.127-47.193L 512.00,128.001
368
+ C 512.00,159.713, 477.403,186.031, 432.00,191.11z" />
369
+ <glyph unicode="&#xe020;" d="M 480.00,352.00L 352.00,352.00 L 352.00,384.00 c0.00,17.60-14.40,32.00-32.00,32.00L 192.00,416.00 c-17.602,0.00-32.00-14.40-32.00-32.00l0.00-32.00 L 32.00,352.00 C 14.40,352.00,0.00,337.60,0.00,320.00l0.00-256.00
370
+ c0.00-17.601, 14.398-32.00, 32.00-32.00l 448.00,0.00 c 17.60,0.00, 32.00,14.399, 32.00,32.00L 512.00,320.00 C 512.00,337.60, 497.60,352.00, 480.00,352.00z M 192.00,383.942
371
+ c 0.017,0.02, 0.037,0.041, 0.057,0.058l 127.886,0.00 c 0.021-0.017, 0.041-0.038, 0.059-0.058L 320.002,352.00 L 192.00,352.00 L 192.00,383.942 z M 480.00,224.00l-64.00,0.00 l0.00-48.00
372
+ c0.00-8.801-7.20-16.00-16.00-16.00l-32.00,0.00 c-8.802,0.00-16.00,7.199-16.00,16.00l0.00,48.00 L 160.00,224.00 l0.00-48.00 c0.00-8.801-7.20-16.00-16.00-16.00l-32.00,0.00 c-8.801,0.00-16.00,7.199-16.00,16.00l0.00,48.00 L 32.00,224.00 l0.00,32.00 l 448.00,0.00
373
+ L 480.00,224.00 z" />
374
+ <glyph unicode="&#xe021;" d="M 448.00,128.00L 448.00,64.00L 64.00,64.00L 64.00,128.00L0.00,128.00L0.00,0.00L 512.00,0.00L 512.00,128.00 zM 384.00,288.00L 288.00,288.00L 288.00,448.00L 224.00,448.00L 224.00,288.00L 128.00,288.00L 256.00,96.00 z" />
375
+ <glyph unicode="&#xe022;" d="M 448.00,128.00L 448.00,64.00L 64.00,64.00L 64.00,128.00L0.00,128.00L0.00,0.00L 512.00,0.00L 512.00,128.00 zM 128.00,256.00L 224.00,256.00L 224.00,96.00L 288.00,96.00L 288.00,256.00L 384.00,256.00L 256.00,448.00 z" />
376
+ <glyph unicode="&#xe023;" d="M 96.00,480.00L 96.00-32.00L 256.00,128.00L 416.00-32.00L 416.00,480.00 z" />
377
+ <glyph unicode="&#xe024;" d="M 320.00,448.00L 384.00,384.00L 160.00,160.00L 192.00,128.00L 416.00,352.00L 480.00,288.00L 480.00,448.00 zM 352.00,64.00L 96.00,64.00L 96.00,320.00L 224.00,320.00L 288.00,384.00L 32.00,384.00L 32.00,0.00L 416.00,0.00L 416.00,256.00L 352.00,192.00 z" />
378
+ </font></defs></svg>
assets/jui/fonts/IcoMoon.ttf ADDED
Binary file
assets/jui/fonts/IcoMoon.woff ADDED
Binary file
assets/jui/fonts/fontawesome-webfont.eot ADDED
Binary file
assets/jui/fonts/fontawesome-webfont.svg ADDED
@@ -0,0 +1,255 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata></metadata>
5
+ <defs>
6
+ <font id="FontAwesomeRegular" horiz-adv-x="1843" >
7
+ <font-face units-per-em="2048" ascent="1536" descent="-512" />
8
+ <missing-glyph horiz-adv-x="512" />
9
+ <glyph horiz-adv-x="0" />
10
+ <glyph horiz-adv-x="0" />
11
+ <glyph unicode="&#xd;" horiz-adv-x="512" />
12
+ <glyph unicode=" " horiz-adv-x="512" />
13
+ <glyph unicode="&#x09;" horiz-adv-x="512" />
14
+ <glyph unicode="&#xa0;" horiz-adv-x="512" />
15
+ <glyph unicode="o" horiz-adv-x="1591" />
16
+ <glyph unicode="&#xa8;" horiz-adv-x="2048" />
17
+ <glyph unicode="&#xa9;" horiz-adv-x="2048" />
18
+ <glyph unicode="&#xae;" horiz-adv-x="2048" />
19
+ <glyph unicode="&#xb4;" horiz-adv-x="2048" />
20
+ <glyph unicode="&#xc6;" horiz-adv-x="2048" />
21
+ <glyph unicode="&#xcd;" horiz-adv-x="2048" />
22
+ <glyph unicode="&#x2000;" horiz-adv-x="784" />
23
+ <glyph unicode="&#x2001;" horiz-adv-x="1569" />
24
+ <glyph unicode="&#x2002;" horiz-adv-x="784" />
25
+ <glyph unicode="&#x2003;" horiz-adv-x="1569" />
26
+ <glyph unicode="&#x2004;" horiz-adv-x="523" />
27
+ <glyph unicode="&#x2005;" horiz-adv-x="392" />
28
+ <glyph unicode="&#x2006;" horiz-adv-x="261" />
29
+ <glyph unicode="&#x2007;" horiz-adv-x="261" />
30
+ <glyph unicode="&#x2008;" horiz-adv-x="196" />
31
+ <glyph unicode="&#x2009;" horiz-adv-x="313" />
32
+ <glyph unicode="&#x200a;" horiz-adv-x="87" />
33
+ <glyph unicode="&#x202f;" horiz-adv-x="313" />
34
+ <glyph unicode="&#x203a;" horiz-adv-x="2048" />
35
+ <glyph unicode="&#x205f;" horiz-adv-x="392" />
36
+ <glyph unicode="&#x2122;" horiz-adv-x="2048" />
37
+ <glyph unicode="&#x221e;" horiz-adv-x="2048" />
38
+ <glyph unicode="&#xe000;" horiz-adv-x="1024" d="M0 0z" />
39
+ <glyph unicode="&#xf000;" horiz-adv-x="1536" d="M6 1489q20 47 70 47h1382q51 0 72 -47q20 -47 -17 -84l-610 -610v-641h248q33 0 55.5 -22.5t22.5 -53.5q0 -33 -22.5 -55.5t-55.5 -22.5h-768q-31 0 -53.5 22.5t-22.5 55.5q0 31 22.5 53.5t53.5 22.5h250v641l-610 610q-37 37 -17 84z" />
40
+ <glyph unicode="&#xf001;" horiz-adv-x="1488" d="M0 213q0 57 27.5 103t72.5 77t98.5 47.5t106.5 16.5q25 0 50.5 -4t50.5 -11v779q0 27 16 48t43 29q23 6 99.5 29t178 52.5t215 62.5t211 60.5t164 46t74.5 18.5q35 0 58.5 -23.5t23.5 -58.5v-1028q0 -59 -27.5 -104.5t-73 -76t-99.5 -47t-105 -16.5t-105.5 16.5t-98.5 47 t-71.5 75.5t-27.5 105q0 57 27.5 103t71.5 77t98.5 47t105.5 16q27 0 52.5 -4t49.5 -10v537l-678 -195v-815q0 -59 -27.5 -104.5t-71.5 -76t-98.5 -47t-105.5 -16.5q-53 0 -106.5 16.5t-98.5 47t-72.5 76t-27.5 104.5z" />
41
+ <glyph unicode="&#xf002;" horiz-adv-x="1597" d="M0 901q0 137 52 258t143.5 212t212 143.5t258.5 52.5q137 0 257.5 -52.5t212 -143.5t143.5 -212t52 -258q0 -98 -28.5 -191.5t-81.5 -174.5l358 -359q18 -18 18 -47q0 -16 -18 -43t-45 -53.5t-53.5 -45t-42.5 -18.5q-29 0 -47 19l-359 358q-82 -53 -175 -81.5t-191 -28.5 q-137 0 -258 52t-212.5 143t-143.5 212t-52 258zM266 901q0 -84 32 -156.5t86 -126t127 -85t155 -31.5t154.5 31.5t126.5 85t86 126t32 156.5q0 82 -32 154.5t-86 127t-126.5 86t-154.5 31.5t-155 -31.5t-127 -86t-86 -127t-32 -154.5zM414 901q0 51 19.5 97t54 81t80 54.5 t98.5 19.5q20 0 34.5 -14.5t14.5 -36.5q0 -20 -14.5 -34.5t-34.5 -14.5q-63 0 -107.5 -44t-44.5 -108q0 -20 -14.5 -34.5t-34.5 -14.5q-23 0 -37 14.5t-14 34.5z" />
42
+ <glyph unicode="&#xf003;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h1536v852q-31 -31 -58 -50q-106 -80 -212.5 -159.5t-211.5 -163.5q-61 -49 -131.5 -94t-156.5 -45q-82 0 -153 45t-132 94 q-104 84 -211 164t-213 159q-27 18 -57 50v-852zM154 1317q0 -31 14 -65.5t35.5 -66.5t47 -59.5t50.5 -46.5q100 -76 199.5 -150.5t199.5 -152.5q20 -16 48 -37.5t58 -42t59.5 -35t54.5 -14.5h2h2q25 0 54.5 14.5t59 35t57 42t48.5 37.5q100 78 199.5 153t199.5 150 q25 18 50.5 46t47 60t36 66.5t14.5 65.5v65h-1536v-65z" />
43
+ <glyph unicode="&#xf004;" horiz-adv-x="1802" d="M0 1073q0 113 34 205t97.5 155.5t153.5 98.5t202 35q59 0 117 -18.5t110 -48.5t99 -68.5t88 -77.5q39 39 87 77.5t100.5 68.5t109 48.5t115.5 18.5q113 0 204 -35t154.5 -98.5t97 -155.5t33.5 -205q0 -66 -18.5 -130t-51 -124.5t-74.5 -115t-87 -99.5l-615 -612 q-23 -23 -55 -23q-31 0 -57 23l-615 614q-45 45 -87 99.5t-73.5 114t-50 124t-18.5 129.5z" />
44
+ <glyph unicode="&#xf005;" horiz-adv-x="1675" d="M1 959.5q9 27.5 54 33.5l506 74l227 459q20 41 49 41t50 -41l227 -459l506 -74q45 -6 54 -33.5t-23 -60.5l-367 -356l86 -504q8 -45 -15.5 -62.5t-64.5 5.5l-452 237l-453 -237q-41 -23 -64.5 -5.5t-15.5 62.5l86 504l-364 356q-35 33 -26 60.5z" />
45
+ <glyph unicode="&#xf006;" horiz-adv-x="1675" d="M0 948q0 23 18.5 32t36.5 13l506 74l227 459q6 14 20 27.5t30 13.5q18 0 30.5 -13.5t18.5 -27.5l227 -459l506 -74q18 -4 36.5 -13t18.5 -32q0 -14 -7 -26.5t-17 -22.5l-367 -356l86 -504q0 -4 1 -9t1 -12q0 -20 -9 -34.5t-32 -14.5t-41 13l-452 237l-453 -237 q-18 -12 -39 -13q-23 0 -33 14.5t-10 34.5q0 6 1 11.5t1 9.5l86 504l-364 356q-10 10 -18.5 22.5t-8.5 26.5zM289 866l274 -268l-65 -377l340 178l340 -178l-66 377l274 268l-378 56l-170 344l-170 -344z" />
46
+ <glyph unicode="&#xf007;" horiz-adv-x="1566" d="M0 57v387q0 37 18.5 82t48 86t65.5 74t71 43q18 6 66 13.5t102.5 14.5t104.5 13t77 10q-92 59 -144.5 153.5t-52.5 205.5q0 88 34 165.5t91.5 136t135 92.5t165.5 34t166 -34t136.5 -92.5t92 -136t33.5 -165.5q0 -109 -52 -204.5t-144 -154.5q27 -4 77 -10t104 -13 t101 -14.5t68 -13.5q35 -10 70.5 -42t65.5 -74t48.5 -87t18.5 -82v-387q-10 -4 -22.5 -14t-27 -19.5t-27.5 -16.5t-22 -7h-1370q-35 0 -53 21.5t-45 35.5z" />
47
+ <glyph unicode="&#xf008;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM115 154q0 -16 11 -27.5t28 -11.5h153q16 0 27.5 11t11.5 28v153q0 16 -11 27.5t-28 11.5h-153q-16 0 -27.5 -11t-11.5 -28v-153zM115 512 q0 -16 11 -27.5t28 -11.5h153q16 0 27.5 11.5t11.5 27.5v154q0 16 -11 27.5t-28 11.5h-153q-16 0 -27.5 -11.5t-11.5 -27.5v-154zM115 870q0 -16 11 -27.5t28 -11.5h153q16 0 27.5 11.5t11.5 27.5v154q0 16 -11 27.5t-28 11.5h-153q-16 0 -27.5 -11.5t-11.5 -27.5v-154z M115 1229q0 -16 11 -27.5t28 -11.5h153q16 0 27.5 11t11.5 28v153q0 16 -11 27.5t-28 11.5h-153q-16 0 -27.5 -11t-11.5 -28v-153zM461 154q0 -16 11 -27.5t28 -11.5h843q16 0 27.5 11t11.5 28v512q0 16 -11 27.5t-28 11.5h-843q-16 0 -27.5 -11.5t-11.5 -27.5v-512z M461 870q0 -16 11 -27.5t28 -11.5h843q16 0 27.5 11.5t11.5 27.5v512q0 16 -11 27.5t-28 11.5h-843q-16 0 -27.5 -11t-11.5 -28v-512zM1497 154q0 -16 11.5 -27.5t27.5 -11.5h154q16 0 27.5 11t11.5 28v153q0 16 -11.5 27.5t-27.5 11.5h-154q-16 0 -27.5 -11t-11.5 -28v-153 zM1497 512q0 -16 11.5 -27.5t27.5 -11.5h154q16 0 27.5 11.5t11.5 27.5v154q0 16 -11.5 27.5t-27.5 11.5h-154q-16 0 -27.5 -11.5t-11.5 -27.5v-154zM1497 870q0 -16 11.5 -27.5t27.5 -11.5h154q16 0 27.5 11.5t11.5 27.5v154q0 16 -11.5 27.5t-27.5 11.5h-154 q-16 0 -27.5 -11.5t-11.5 -27.5v-154zM1497 1229q0 -16 11.5 -27.5t27.5 -11.5h154q16 0 27.5 11t11.5 28v153q0 16 -11.5 27.5t-27.5 11.5h-154q-16 0 -27.5 -11t-11.5 -28v-153z" />
48
+ <glyph unicode="&#xf009;" d="M0 78v536q0 33 22.5 55.5t55.5 22.5h690q33 0 55.5 -22.5t22.5 -55.5v-536q0 -33 -22.5 -55.5t-55.5 -22.5h-690q-33 0 -55.5 22.5t-22.5 55.5zM0 922v538q0 31 22.5 53.5t55.5 22.5h690q33 0 55.5 -22.5t22.5 -53.5v-538q0 -33 -22.5 -54.5t-55.5 -21.5h-690 q-33 0 -55.5 21.5t-22.5 54.5zM999 78v536q0 33 21.5 55.5t54.5 22.5h692q31 0 53.5 -22.5t22.5 -55.5v-536q0 -33 -22.5 -55.5t-53.5 -22.5h-692q-33 0 -54.5 22.5t-21.5 55.5zM999 922v538q0 31 21.5 53.5t54.5 22.5h692q31 0 53.5 -22.5t22.5 -53.5v-538 q0 -33 -22.5 -54.5t-53.5 -21.5h-692q-33 0 -54.5 21.5t-21.5 54.5z" />
49
+ <glyph unicode="&#xf00a;" d="M0 78v270q0 33 22.5 54.5t55.5 21.5h358q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5h-358q-33 0 -55.5 22.5t-22.5 55.5zM0 655v226q0 33 22.5 54t55.5 21h358q31 0 53.5 -21.5t22.5 -53.5v-226q0 -33 -22.5 -55t-53.5 -22h-358q-33 0 -55.5 22.5 t-22.5 54.5zM0 1188v272q0 31 22.5 53.5t55.5 22.5h358q31 0 53.5 -22.5t22.5 -53.5v-272q0 -33 -22.5 -55.5t-53.5 -22.5h-358q-33 0 -55.5 22.5t-22.5 55.5zM666 78v270q0 33 22.5 54.5t54.5 21.5h359q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5 h-359q-33 0 -55 22.5t-22 55.5zM666 655v226q0 33 22.5 54t54.5 21h359q31 0 53.5 -21.5t22.5 -53.5v-226q0 -33 -22.5 -55t-53.5 -22h-359q-33 0 -55 22.5t-22 54.5zM666 1188v272q0 31 22.5 53.5t54.5 22.5h359q31 0 53.5 -22.5t22.5 -53.5v-272q0 -33 -22.5 -55.5 t-53.5 -22.5h-359q-33 0 -55 22.5t-22 55.5zM1331 78v270q0 33 22.5 54.5t55.5 21.5h358q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5h-358q-33 0 -55.5 22.5t-22.5 55.5zM1331 655v226q0 33 22.5 54t55.5 21h358q31 0 53.5 -21.5t22.5 -53.5v-226 q0 -33 -22.5 -55t-53.5 -22h-358q-33 0 -55.5 22.5t-22.5 54.5zM1331 1188v272q0 31 22.5 53.5t55.5 22.5h358q31 0 53.5 -22.5t22.5 -53.5v-272q0 -33 -22.5 -55.5t-53.5 -22.5h-358q-33 0 -55.5 22.5t-22.5 55.5z" />
50
+ <glyph unicode="&#xf00b;" d="M0 78v270q0 33 22.5 54.5t55.5 21.5h297q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5h-297q-33 0 -55.5 22.5t-22.5 55.5zM0 655v226q0 33 22.5 54t55.5 21h297q31 0 53.5 -21.5t22.5 -53.5v-226q0 -33 -22.5 -55t-53.5 -22h-297q-33 0 -55.5 22.5 t-22.5 54.5zM0 1188v272q0 31 22.5 53.5t55.5 22.5h297q31 0 53.5 -22.5t22.5 -53.5v-272q0 -33 -22.5 -55.5t-53.5 -22.5h-297q-33 0 -55.5 22.5t-22.5 55.5zM604 78v270q0 33 22.5 54.5t55.5 21.5h1085q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5 h-1085q-33 0 -55.5 22.5t-22.5 55.5zM604 655v226q0 33 22.5 54t55.5 21h1085q31 0 53.5 -21.5t22.5 -53.5v-226q0 -33 -22.5 -55t-53.5 -22h-1085q-33 0 -55.5 22.5t-22.5 54.5zM604 1188v272q0 31 22.5 53.5t55.5 22.5h1085q31 0 53.5 -22.5t22.5 -53.5v-272 q0 -33 -22.5 -55.5t-53.5 -22.5h-1085q-33 0 -55.5 22.5t-22.5 55.5z" />
51
+ <glyph unicode="&#xf00c;" d="M0 732.5q0 33.5 23 55.5l174 175q23 23 56.5 22.5t55.5 -22.5l365 -365q23 -23 56.5 -23t55.5 23l746 745q23 23 56.5 23t56.5 -23l174 -174q23 -23 22.5 -56.5t-22.5 -55.5l-910 -910q-23 -23 -62.5 -39t-72.5 -16h-88q-35 0 -75 16.5t-62 38.5l-526 529 q-23 23 -23 56.5z" />
52
+ <glyph unicode="&#xf00d;" horiz-adv-x="1536" d="M0 192.5q0 38.5 29 67.5l508 510l-508 500q-29 29 -29 67.5t29 67.5l100 100q29 29 68 29t67 -29l504 -504l504 504q29 29 67.5 29t67.5 -29l100 -100q29 -29 29 -68t-29 -67l-508 -510l508 -500q29 -29 29 -66.5t-29 -66.5l-100 -102q-29 -29 -68 -29t-67 29l-504 505 l-506 -505q-29 -29 -66.5 -29t-66.5 29l-100 100q-29 29 -29 67.5z" />
53
+ <glyph unicode="&#xf00e;" horiz-adv-x="1597" d="M0 901q0 137 52 258t143.5 212t212 143.5t258.5 52.5q137 0 259 -52.5t212 -143.5t142 -212t52 -258q0 -102 -28.5 -195.5t-81.5 -170.5l358 -359q18 -18 18 -46t-18 -48l-94 -94q-20 -18 -48 -18.5t-46 18.5l-359 358q-78 -53 -171 -81.5t-195 -28.5q-137 0 -258 52 t-212.5 142t-143.5 211t-52 260zM266 901q0 -84 32 -156.5t86 -126t127 -85t155 -31.5t155.5 31.5t126.5 85t85 126t32 156.5q0 82 -32 154.5t-85 127t-126.5 86t-155.5 31.5t-155 -31.5t-127 -86t-86 -127t-32 -154.5zM399 868v66q0 33 33 33h168v168q0 33 33 32h65 q14 0 24.5 -9t10.5 -23v-168h166q33 0 33 -33v-66q0 -14 -9.5 -24t-23.5 -10h-166v-166q0 -14 -10 -23.5t-25 -9.5h-65q-33 0 -33 33v166h-168q-14 0 -23.5 10t-9.5 24z" />
54
+ <glyph unicode="&#xf010;" horiz-adv-x="1597" d="M0 901q0 137 52 258t143.5 212t212 143.5t258.5 52.5q137 0 259 -52.5t212 -143.5t142 -212t52 -258q0 -102 -28.5 -195.5t-81.5 -170.5l358 -359q18 -18 18 -46t-18 -48l-94 -94q-20 -18 -48 -18.5t-46 18.5l-359 358q-78 -53 -171 -81.5t-195 -28.5q-137 0 -258 52 t-212.5 142t-143.5 211t-52 260zM266 901q0 -84 32 -156.5t86 -126t127 -85t155 -31.5t155.5 31.5t126.5 85t85 126t32 156.5q0 82 -32 154.5t-85 127t-126.5 86t-155.5 31.5t-155 -31.5t-127 -86t-86 -127t-32 -154.5zM399 868v66q0 33 33 33h467q33 0 33 -33v-66 q0 -14 -9.5 -24t-23.5 -10h-467q-14 0 -23.5 10t-9.5 24z" />
55
+ <glyph unicode="&#xf011;" horiz-adv-x="1488" d="M0 713q0 186 86 349t240 267q12 10 28 6q18 -4 25 -16l90 -131q10 -12 6 -27.5t-16 -25.5q-106 -72 -164.5 -182.5t-58.5 -239.5q0 -104 39.5 -197.5t108.5 -162t162 -108.5t197 -40t197.5 40t163.5 108.5t109.5 161.5t39.5 198q0 129 -59 239.5t-164 182.5 q-14 10 -16 24q-4 16 6 29l88 131q10 12 25.5 15t29.5 -5q154 -104 240 -267t86 -349q0 -154 -58.5 -289t-160 -236.5t-237.5 -160t-290 -58.5t-289 58.5t-236 160t-159.5 236.5t-58.5 289zM627 793v704q0 16 11 27.5t28 11.5h157q16 0 27.5 -11.5t11.5 -27.5v-704 q0 -16 -11 -27.5t-28 -11.5h-157q-16 0 -27.5 11t-11.5 28z" />
56
+ <glyph unicode="&#xf012;" d="M0 39v260q0 16 11.5 27.5t27.5 11.5h192q16 0 26.5 -11.5t10.5 -27.5v-260q0 -16 -10 -27.5t-27 -11.5h-192q-39 0 -39 39zM393 39v434q0 16 11.5 27.5t27.5 11.5h193q16 0 26.5 -11.5t10.5 -27.5v-434q0 -16 -10.5 -27.5t-26.5 -11.5h-193q-16 0 -27.5 11.5t-11.5 27.5z M786 39v676q0 16 11.5 27.5t27.5 11.5h193q16 0 27.5 -11.5t11.5 -27.5v-676q0 -16 -11.5 -27.5t-27.5 -11.5h-193q-16 0 -27.5 11.5t-11.5 27.5zM1182 39v995q0 16 10 27.5t27 11.5h192q16 0 27.5 -11t11.5 -28v-995q0 -16 -11.5 -27.5t-27.5 -11.5h-192q-16 0 -26.5 11.5 t-10.5 27.5zM1575 39v1458q0 39 39 39h190q39 0 39 -39v-1458q0 -39 -39 -39h-190q-39 0 -39 39z" />
57
+ <glyph unicode="&#xf013;" horiz-adv-x="1593" d="M0 651v236q0 12 30.5 21.5t68.5 15.5t74 9t48 5q18 61 49 117q-55 82 -120 157l-7 15q0 8 28 38.5t62.5 65.5t66.5 62.5t40 27.5q2 0 26.5 -18.5t54.5 -41t56.5 -43t32.5 -24.5q29 16 58.5 26.5t60.5 20.5q0 12 3 49t9 75t15.5 69t21.5 31h237q14 0 19 -15 q12 -49 17 -103t14 -106q31 -8 59.5 -19t56.5 -28q8 6 34 26.5t55.5 43t53 40t29.5 17.5t37 -27.5t65 -62.5t61.5 -65.5t27.5 -38.5q0 -4 -17.5 -28.5t-39 -53.5t-42 -55.5t-24.5 -32.5q33 -55 51 -123q49 -10 103.5 -13t101.5 -20q16 -4 16 -18v-236q0 -12 -29.5 -21.5 t-68.5 -15.5t-76 -9t-49 -5q-14 -57 -47 -117q55 -82 121 -157l6 -15q0 -8 -27.5 -38.5t-62.5 -65.5t-66.5 -62.5t-40.5 -27.5q-2 0 -26.5 18.5t-54 41t-56 43t-33.5 24.5q-29 -16 -58.5 -27.5t-59.5 -19.5q-2 -12 -5.5 -49.5t-9.5 -76t-14 -69.5t-21 -31h-237q-14 0 -19 17 q-14 49 -19 103t-11 103q-61 18 -117 50q-41 -31 -81 -60.5t-79 -62.5l-12 -4q-6 0 -37 27.5t-64.5 62.5t-61 65.5t-27.5 38.5q0 2 16 26.5t37.5 53.5t42 55.5t26.5 34.5q-33 55 -51 123q-51 10 -104.5 13t-100.5 20q-16 4 -16 18zM557 768q0 -49 18.5 -93t51 -77t77 -52.5 t93.5 -19.5t93 19.5t75.5 52.5t51 77t19.5 93t-19.5 92t-51 76t-75.5 51.5t-93 18.5t-93.5 -18.5t-77 -51.5t-51 -76t-18.5 -92z" />
58
+ <glyph unicode="&#xf014;" horiz-adv-x="1304" d="M0 1175.5v34.5v36t2 36q25 14 71 23.5t98 15.5t102.5 9t78.5 5q-8 82 11.5 128t59.5 68.5t98.5 29t131.5 6.5q55 0 109.5 -3t97.5 -20.5t68.5 -54.5t25.5 -105v-24t-2 -25q29 -2 79 -5t102.5 -9t99.5 -15.5t72 -23.5v-72v-69q-37 -20 -123 -32.5t-185.5 -19t-193.5 -7.5 t-150 -1q-55 0 -150 1t-194.5 7.5t-184.5 18.5t-122 33q-2 16 -2 34.5zM133 154v837q123 -16 244 -21t244 -5h32q129 2 258 6t258 20v-837q0 -63 -44 -108.5t-107 -45.5h-731q-63 0 -108.5 45t-45.5 109zM303 199q0 -16 10.5 -26.5t26.5 -10.5h39q16 0 27.5 10t11.5 27v614 q0 16 -11.5 27.5t-27.5 11.5h-39q-16 0 -26.5 -11.5t-10.5 -27.5v-614zM504 1384q0 -10 1 -22t3 -23q144 2 291 0q0 12 2 23.5t0 21.5v15q-35 10 -74 11t-74 1q-37 0 -75.5 -1t-73.5 -11v-15zM596 199q0 -16 10 -26.5t27 -10.5h39q16 0 27.5 10t11.5 27v614q0 16 -11.5 27.5 t-27.5 11.5h-39q-16 0 -26.5 -11.5t-10.5 -27.5v-614zM887 199q0 -16 11 -26.5t28 -10.5h39q16 0 27.5 10t11.5 27v614q0 16 -11.5 27.5t-27.5 11.5h-39q-16 0 -27.5 -11.5t-11.5 -27.5v-614z" />
59
+ <glyph unicode="&#xf015;" horiz-adv-x="1880" d="M0 809.5q2 15.5 14 26.5l867 710q27 20 59 21q33 0 59 -21l240 -196v102q0 16 11.5 27.5t27.5 11.5h223q16 0 26.5 -11.5t10.5 -27.5v-348l328 -268q12 -10 14 -25.5t-8 -28.5l-45 -53q-10 -14 -29 -14h-65q-16 0 -25 8l-743 608q-25 20 -50 0l-743 -608q-8 -8 -25 -8 h-65q-18 0 -29 14l-45 53q-10 12 -8 27.5zM266 76v622l674 553l674 -553v-622q0 -33 -21.5 -54.5t-54.5 -21.5h-422v498h-352v-498h-422q-33 0 -54.5 21.5t-21.5 54.5z" />
60
+ <glyph unicode="&#xf016;" horiz-adv-x="1228" d="M0 78v1382q0 31 22.5 53.5t55.5 22.5h614q33 0 71 -16.5t60 -38.5l351 -351q23 -23 39 -60.5t16 -70.5v-921q0 -33 -22.5 -55.5t-53.5 -22.5h-1075q-33 0 -55.5 22.5t-22.5 55.5zM154 154h921v692h-459q-31 0 -53 22.5t-22 55.5v458h-387v-1228zM268 326v116h693v-116 h-693zM268 596v115h693v-115h-693zM694 999h381q0 4 -4 13.5t-6 11.5l-350 348q-2 4 -9.5 6t-11.5 4v-383z" />
61
+ <glyph unicode="&#xf017;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM635 608v465q0 33 23.5 56.5t56.5 23.5h80q35 0 57 -23.5t22 -56.5v-305h201q33 0 56.5 -23.5t23.5 -56.5v-80q0 -33 -23.5 -56.5t-56.5 -23.5h-360q-33 0 -56.5 23.5 t-23.5 56.5z" />
62
+ <glyph unicode="&#xf018;" d="M2 35l594 1466q6 14 21.5 24.5t31.5 10.5h195l-8 -170h172l-9 170h195q16 0 31.5 -10t21.5 -25l594 -1466q6 -14 -1 -24.5t-23 -10.5h-740l-26 512h-258l-27 -512h-739q-16 0 -23.5 10t-1.5 25zM807 797h229l-20 413h-189z" />
63
+ <glyph unicode="&#xf019;" d="M0 39v614q0 16 11.5 27.5t27.5 11.5h229q16 0 27.5 -11t11.5 -28v-346h1229v346q0 16 11.5 27.5t27.5 11.5h229q16 0 27.5 -11t11.5 -28v-614q0 -39 -39 -39h-1765q-39 0 -39 39zM345.5 944.5q6.5 16.5 39.5 16.5h307v499q0 31 21.5 53.5t54.5 22.5h307q33 0 55.5 -22.5 t22.5 -53.5v-499h307q31 0 37 -16.5t-16 -39.5l-504 -506q-23 -23 -55.5 -22.5t-55.5 22.5l-504 506q-23 23 -16.5 39.5z" />
64
+ <glyph unicode="&#xf01a;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM414 743q10 25 37 25h208v358q0 16 11.5 28.5t27.5 12.5h201q16 0 27.5 -12t11.5 -29v-358h209q27 0 37 -25t-10 -43l-347 -346q-14 -10 -28 -10t-29 10l-346 346 q-20 18 -10 43z" />
65
+ <glyph unicode="&#xf01b;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177 120t-218 44t-218.5 -44t-177 -120t-119.5 -177t-44 -218zM414 793q-10 25 10 43l346 346q14 10 29 10q14 0 28 -10l347 -346q20 -18 10 -43t-37 -25h-209v-360q0 -16 -11.5 -27.5t-27.5 -11.5h-201q-16 0 -27.5 11t-11.5 28v360h-208 q-27 0 -37 25z" />
66
+ <glyph unicode="&#xf01c;" d="M0 78v577q0 33 9 76t22 72l284 663q12 29 44 49.5t63 20.5h999q31 0 63 -20.5t44 -49.5l284 -663q12 -29 21.5 -72t9.5 -76v-577q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM238 694h387l114 -231h383l117 231h367q-2 4 -2 9.5t-2 9.5l-256 594 h-848l-256 -596q-2 -2 -2 -7.5t-2 -9.5z" />
67
+ <glyph unicode="&#xf01d;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM582 453v628q0 18 16 29q20 8 31 0l545 -315q16 -6 16 -27q0 -20 -16 -27l-545 -315q-8 -4 -15 -4q-8 0 -16 4q-16 10 -16 27z" />
68
+ <glyph unicode="&#xf01e;" horiz-adv-x="1591" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5q141 0 271 -48.5t239 -140.5l161 162q35 35 58.5 24.5t23.5 -57.5v-463q0 -33 -22 -55q-10 -10 -23.5 -16t-29.5 -6h-463q-47 0 -58.5 23.5t23.5 58.5l160 159q-72 57 -159 88t-181 31q-117 0 -218.5 -44t-177 -120 t-119.5 -177t-44 -218t44 -218t119.5 -177t177 -120t218.5 -44q104 0 198.5 37t169 101.5t123.5 153.5t64 191q0 16 14 27q14 10 31 8l157 -20q16 -4 26.5 -16.5t8.5 -28.5q-20 -147 -89.5 -274.5t-176 -220.5t-242 -145.5t-284.5 -52.5q-166 0 -311.5 62.5t-254 171 t-171 254t-62.5 311.5z" />
69
+ <glyph unicode="&#xf021;" horiz-adv-x="1916" d="M6 311l150 437q10 33 39 45t59 4l438 -150q45 -16 46 -40.5t-42 -47.5l-202 -100q53 -78 123.5 -134.5t160.5 -86.5q111 -37 221.5 -28t207 56t170 129t110.5 193q6 16 20.5 22t30.5 2l152 -51q16 -6 23 -20.5t1 -30.5q-53 -158 -159.5 -274.5t-243.5 -184t-296 -81 t-315 39.5q-135 47 -241.5 134t-179.5 208l-205 -100q-43 -23 -63.5 -5.5t-4.5 64.5zM203 1024q53 156 159.5 273.5t243.5 185t295 81t316 -39.5q133 -47 240.5 -134t180.5 -208l205 100q43 23 63.5 5.5t4.5 -62.5l-150 -439q-10 -33 -39 -45t-59 -4l-438 150 q-45 16 -46 40.5t40 47.5l202 100q-51 78 -122.5 134.5t-159.5 86.5q-111 37 -221.5 28t-207 -56t-170 -129t-110.5 -193q-6 -16 -20.5 -22t-30.5 -2l-152 51q-16 6 -23 20.5t-1 30.5z" />
70
+ <glyph unicode="&#xf022;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h1536v1075h-1536v-1075zM307 346v76q0 39 39 39h154q16 0 27.5 -11.5t11.5 -27.5v-76q0 -16 -11.5 -27.5t-27.5 -11.5h-154q-39 0 -39 39 zM307 653v76q0 39 39 39h154q16 0 27.5 -11.5t11.5 -27.5v-76q0 -16 -11.5 -27.5t-27.5 -11.5h-154q-39 0 -39 39zM307 961v75q0 39 39 39h154q16 0 27.5 -11t11.5 -28v-75q0 -16 -11.5 -27.5t-27.5 -11.5h-154q-39 0 -39 39zM692 346v76q0 16 10.5 27.5t26.5 11.5h768 q39 0 39 -39v-76q0 -39 -39 -39h-768q-16 0 -26.5 11.5t-10.5 27.5zM692 653v76q0 16 10.5 27.5t26.5 11.5h768q39 0 39 -39v-76q0 -39 -39 -39h-768q-16 0 -26.5 11.5t-10.5 27.5zM692 961v75q0 16 10.5 27.5t26.5 11.5h768q39 0 39 -39v-75q0 -39 -39 -39h-768 q-16 0 -26.5 11t-10.5 28z" />
71
+ <glyph unicode="&#xf023;" horiz-adv-x="1253" d="M0 117v626q0 39 21.5 69t56.5 42v164q0 113 43 213t117.5 175t175 118t213.5 43t213 -43t175 -118t118 -175.5t43 -212.5v-164q35 -12 56 -42t21 -69v-626q0 -47 -34.5 -82t-81.5 -35h-1020q-47 0 -82 35t-35 82zM313 862h627v156q0 66 -24.5 123t-67.5 99t-100.5 66.5 t-120.5 24.5q-66 0 -122 -24.5t-99.5 -66.5t-68 -99.5t-24.5 -122.5v-156zM494 164h266l-66 285q29 18 47.5 48.5t18.5 65.5q0 55 -39 95t-94 40t-94 -40t-39 -95q0 -35 18 -65.5t47 -46.5z" />
72
+ <glyph unicode="&#xf024;" d="M0 1382q0 63 45 108.5t109 45.5q63 0 108 -45.5t45 -108.5q0 -41 -20.5 -74.5t-55.5 -56.5v-1212q0 -16 -11 -27.5t-27 -11.5h-78q-16 0 -26.5 11.5t-10.5 27.5v1212q-35 23 -56.5 56.5t-21.5 74.5zM307 416v745q0 33 19.5 66t48.5 49q104 55 188 86t144 45q70 16 124 18 q68 0 124.5 -11t107.5 -29.5t99 -43t100 -51.5q63 -29 145 -33q70 -4 164 15.5t207 87.5q29 16 47 6t18 -43v-748q0 -31 -18.5 -64.5t-46.5 -49.5q-113 -68 -207 -87.5t-164 -15.5q-82 4 -145 33q-51 27 -99.5 51.5t-99.5 43t-107.5 29.5t-124.5 11q-55 -2 -124 -18 q-59 -14 -143.5 -45t-188.5 -88q-29 -16 -48.5 -4t-19.5 45z" />
73
+ <glyph unicode="&#xf025;" horiz-adv-x="1916" d="M0 729q0 172 85 324.5t221 266.5t307 180.5t345 66.5t345.5 -66.5t307.5 -180.5t221 -266.5t85 -326.5q0 -182 -78 -350l-27 -60l-174 -26q-27 -104 -110.5 -173t-196.5 -69v-41q0 -16 -12 -27.5t-29 -11.5h-80q-16 0 -27.5 11.5t-11.5 27.5v719q0 16 11.5 28.5 t27.5 12.5h80q16 0 28.5 -12.5t12.5 -28.5v-39q88 0 161 -44t114 -116l39 7q33 90 32 192q0 125 -65.5 233.5t-170 190.5t-232.5 129t-251 47t-250.5 -47t-232 -128t-170 -190.5t-65.5 -232.5q0 -104 32 -194l39 -7q41 72 114 116t161 44v39q0 16 12 28.5t29 12.5h80 q16 0 27 -12.5t11 -28.5v-719q0 -16 -11 -27.5t-27 -11.5h-80q-16 0 -28.5 11.5t-12.5 27.5v41q-55 0 -106.5 18.5t-91.5 50.5t-68.5 76t-40.5 97l-175 26l-26 60q-78 168 -78 352z" />
74
+ <glyph unicode="&#xf026;" horiz-adv-x="905" d="M0 578v380q0 16 11.5 27.5t27.5 11.5h420l325 326q49 51 84 37t35 -86v-1012q0 -72 -34.5 -86t-84.5 37l-325 326h-420q-16 0 -27.5 11t-11.5 28z" />
75
+ <glyph unicode="&#xf027;" horiz-adv-x="1277" d="M0 578v380q0 16 11.5 27.5t27.5 11.5h420l325 326q49 51 84 37t35 -86v-1012q0 -72 -34.5 -86t-84.5 37l-325 326h-420q-16 0 -27.5 11t-11.5 28zM1027 406q-9 32 7 61q84 145 84 301t-84 301q-16 29 -7 61t38 48t60.5 8t48.5 -37q104 -182 104 -381q0 -201 -104 -381 q-23 -41 -70 -41q-20 0 -39 12q-29 16 -38 48z" />
76
+ <glyph unicode="&#xf028;" horiz-adv-x="1916" d="M0 578v380q0 16 11.5 27.5t27.5 11.5h420l325 326q49 51 84 37t35 -86v-1012q0 -72 -34.5 -86t-84.5 37l-325 326h-420q-16 0 -27.5 11t-11.5 28zM1027 406q-9 32 7 61q84 145 84 301t-84 301q-16 29 -7 61t38 48t60.5 8t48.5 -37q104 -182 104 -381q0 -201 -104 -381 q-23 -41 -70 -41q-20 0 -39 12q-29 16 -38 48zM1285 219q-7 33 11 62q141 225 142 487q0 262 -142 487q-18 29 -11 62t36 49q29 18 61 11t50 -36q82 -131 123.5 -275t41.5 -298q0 -309 -167 -573q-10 -18 -29 -27.5t-37 -9.5q-25 0 -43 12q-29 16 -36 49zM1540 33 q-6 33 12 59q100 154 152.5 325t52.5 351t-52 351t-153 323q-18 29 -12 61.5t35 50.5q29 16 61 10.5t50 -32.5q115 -174 173 -366.5t58 -397.5t-58.5 -397.5t-172.5 -364.5q-10 -18 -29 -27.5t-37 -9.5q-25 0 -45 13q-29 18 -35 51z" />
77
+ <glyph unicode="&#xf029;" horiz-adv-x="1536" d="M0 0v698h698v-698h-698zM0 838v698h698v-698h-698zM139 139h420v420h-420v-420zM139 977h420v420h-420v-420zM279 279v141h141v-141h-141zM279 1116v139h141v-139h-141zM838 0v698h417v-139h142v139h139v-419h-420v139h-139v-418h-139zM838 838v698h698v-698h-698z M977 977h420v420h-420v-420zM1116 0v139h139v-139h-139zM1116 1116v139h139v-139h-139zM1397 0v139h139v-139h-139z" />
78
+ <glyph unicode="&#xf02a;" d="M0 0v1536h154v-1536h-154zM227 0v1536h37v-1536h-37zM356 0v1536h117v-1536h-117zM545 0v1536h78v-1536h-78zM715 0v1536h76v-1536h-76zM903 0v1536h37v-1536h-37zM1014 0v1536h153v-1536h-153zM1221 0v1536h77v-1536h-77zM1409 0v1536h39v-1536h-39zM1579 0v1536h37 v-1536h-37zM1690 0v1536h153v-1536h-153z" />
79
+ <glyph unicode="&#xf02b;" horiz-adv-x="1488" d="M0 961v454q0 49 35 85t86 36h454q51 0 113 -24.5t94 -61.5l672 -748q33 -39 34 -88t-34 -84l-526 -526q-35 -35 -86 -36t-86 36l-670 750q-35 37 -60.5 96t-25.5 111zM197 1223q0 -49 33.5 -83t82.5 -34t83 34t34 83t-34 82.5t-83 33.5t-82.5 -33.5t-33.5 -82.5z" />
80
+ <glyph unicode="&#xf02c;" horiz-adv-x="1875" d="M0 961v454q0 49 35 85t86 36h454q25 0 53.5 -6t57.5 -18.5t54.5 -28t41.5 -33.5l670 -748q33 -37 34 -86t-34 -84l-526 -524q-35 -35 -86.5 -37t-83.5 37l-670 746q-35 39 -60.5 98t-25.5 109zM195 1223q0 -47 34.5 -82t83.5 -35q47 0 82 35t35 82q0 49 -35 83.5 t-82 34.5q-49 0 -83.5 -34.5t-34.5 -83.5zM791 1534h174q51 0 112.5 -24.5t93.5 -61.5l670 -748q35 -37 35 -87t-35 -85l-524 -524q-35 -35 -86 -36t-86 36l-12 14l514 514q35 35 34.5 84.5t-34.5 85.5l-670 748q-31 35 -84 56.5t-102 27.5z" />
81
+ <glyph unicode="&#xf02d;" horiz-adv-x="1710" d="M10 311q2 16 4 31.5t4 34.5q0 10 -4 20.5t-2 20.5q2 16 15.5 31.5t25.5 35.5q23 37 45.5 90.5t32.5 92.5q4 16 -1 30.5t-1 26.5q4 16 16.5 27.5t20.5 23.5q10 18 21.5 42t21.5 49.5t16 50t8 40.5t-2 33t0 29q6 16 20.5 26.5t24.5 24.5q10 12 21.5 34.5t23 49.5t19.5 52.5 t10 45.5q2 12 -4 24.5t-2 27.5q4 14 18.5 29.5t26.5 31.5q16 25 28.5 58.5t30 61t46 43t77.5 1.5l-2 -4q31 10 54 10h780q78 0 119 -57q41 -53 18 -129l-283 -906q-18 -63 -77.5 -107t-126.5 -44h-893q-10 0 -20.5 -2t-18.5 -12q-12 -20 0 -56q16 -43 60 -75.5t87 -32.5h946 q29 0 57.5 21.5t37.5 47.5l309 987q4 16 5 29.5t-1 28.5q41 -14 61 -43q41 -53 19 -129l-283 -905q-18 -66 -77.5 -109t-127.5 -43h-946q-41 0 -79.5 14.5t-73.5 39t-61.5 58t-41.5 72.5q-25 68 -2 127zM500 961q-10 -39 26 -39h615q16 0 30.5 11t18.5 28l24 75 q4 16 -3 27.5t-23 11.5h-615q-16 0 -31.5 -11t-19.5 -28zM569 1190q-4 -16 3.5 -26.5t23.5 -10.5h614q16 0 30.5 10.5t21.5 26.5l22 78q4 16 -3 27.5t-24 11.5h-614q-16 0 -30.5 -11.5t-20.5 -27.5z" />
82
+ <glyph unicode="&#xf02e;" horiz-adv-x="1253" d="M0 84v1337q0 47 34 81t81 34h1024q47 0 80.5 -34t33.5 -81v-1337q0 -47 -33.5 -81t-80.5 -34t-80 33l-432 432l-432 -432q-33 -33 -80 -33t-81 34t-34 81z" />
83
+ <glyph unicode="&#xf02f;" d="M0 39v346q0 47 18.5 89t50 73t73.5 49t89 18h1383q47 0 89 -18t72.5 -49t49 -73t18.5 -89v-346q0 -39 -39 -39h-1765q-39 0 -39 39zM268 193q0 -16 11.5 -26.5t27.5 -10.5h1229q16 0 27.5 10t11.5 27v38q0 16 -11.5 27.5t-27.5 11.5h-1229q-16 0 -27.5 -11t-11.5 -28v-38 zM307 729v731q0 31 22.5 53.5t55.5 22.5h651v-383q0 -49 34 -83t81 -34h385v-307h-1229zM1151 1153v383l385 -383h-385z" />
84
+ <glyph unicode="&#xf030;" d="M0 115v1075q0 47 34 82t81 35h366l58 125q18 43 66 73.5t95 30.5h443q47 0 95 -30.5t67 -73.5l57 -125h367q47 0 80.5 -35t33.5 -82v-1075q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM442 653q0 -100 38 -187t102.5 -152.5t153 -103.5t186.5 -38t186 38 t152.5 103.5t102.5 152.5t38 187q0 98 -38 186.5t-102.5 153t-152.5 102.5t-186 38t-186.5 -38t-153 -102.5t-102.5 -152.5t-38 -187zM596 653q0 68 25.5 127.5t69.5 103.5t103.5 69.5t127.5 25.5t127 -25.5t103 -69.5t69.5 -103.5t25.5 -127.5t-25.5 -127t-69.5 -104 t-103.5 -70.5t-126.5 -25.5q-68 0 -127.5 25.5t-103.5 70.5t-69.5 104.5t-25.5 126.5z" />
85
+ <glyph unicode="&#xf031;" horiz-adv-x="1644" d="M0 0l2 80q10 4 29.5 8t48.5 8q92 18 108 33q16 10 50 68l233 614l277 725h73h53l11 -20l202 -482q33 -78 64 -151.5t59 -145.5q29 -72 52.5 -130t42.5 -103q12 -29 28.5 -70t36.5 -94q23 -66 64 -150q25 -49 34 -57q20 -18 68 -24q25 -2 49.5 -9.5t52.5 -17.5 q6 -37 7 -55v-10.5t-3 -16.5q-43 0 -90 2t-98 6q-53 4 -99 6t-87 2h-80t-53 -2l-199 -10l-57 -2q0 20 1 39.5t3 38.5l129 26q57 14 67 25q12 8 13 27q0 14 -7 30l-47 115l-90 227l-446 2q-12 -29 -37 -96t-66 -178q-23 -63 -22 -84q0 -27 16 -43q14 -10 40 -17.5t63 -13.5 q14 -4 84 -12v-59q0 -16 -2 -27q-35 0 -121 5t-224 16l-49 -9q-43 -8 -83 -11t-81 -3h-20zM549 655q135 -2 216 -4t105 0l29 2q-18 51 -40.5 111.5t-51.5 130.5t-51.5 122t-38.5 87z" />
86
+ <glyph unicode="&#xf032;" horiz-adv-x="1419" d="M0 0l2 94q27 6 68 12q39 6 69.5 13.5t55.5 17.5q8 14 13 26.5t7 24.5q6 33 8 81t2 112l-2 498q-2 39 -3 139t-5 266q-4 88 -12 109q-4 8 -13 10q-20 14 -69 16q-23 0 -115 13l-4 84l262 6l383 12h45q8 2 15.5 2h13.5t21.5 -1t39.5 -1h76q92 0 193 -27q18 -4 42.5 -13 t53.5 -26q63 -31 104 -75q45 -47 66 -105q10 -29 15 -58.5t5 -62.5q0 -72 -32 -129q-31 -57 -95 -104q-16 -12 -54 -30.5t-97 -47.5q178 -41 268 -145q92 -104 92 -236q0 -72 -28 -162q-23 -66 -72 -116q-66 -72 -141 -109q-78 -35 -205 -59q-70 -12 -199 -11l-199 5 q-63 2 -138 -2.5t-163 -10.5q-25 -2 -93 -4t-181 -6zM537 1419q0 -12 1 -31.5t3 -44.5q2 -51 4 -119.5t0 -158.5v-98v-78q25 -4 52.5 -6t57.5 -2q176 0 267 65q90 66 90 225q0 113 -86 187q-84 76 -258 76q-53 0 -131 -15zM545 457l4 -271q0 -16 10 -43q74 -33 141 -32 q131 0 220 41q82 39 122 112q18 37 28.5 82t10.5 100q0 113 -43 181q-59 94 -141 125q-80 33 -250 32q-37 0 -61.5 -3t-40.5 -7v-143v-174z" />
87
+ <glyph unicode="&#xf033;" horiz-adv-x="1054" d="M0 0l18 84q12 4 32 9t46 11q41 10 71 19.5t50 19.5q29 39 41 103l29 137l57 268l12 64q23 119 41.5 178t18.5 63l30 156l17 64l22 135l9 49v39q-45 23 -148 28q-14 0 -23.5 1.5t-17.5 1.5l21 104l325 -14q31 -2 49.5 -2h26.5q35 0 89 2t132 6q41 4 68.5 6t38.5 2 q-2 -10 -3 -19.5t-3 -19.5q-4 -10 -7.5 -22.5t-7.5 -28.5q-49 -16 -110 -31q-66 -16 -105 -31q-12 -33 -24 -88q-6 -25 -9.5 -45t-5.5 -37q-23 -100 -40 -175.5t-27 -129.5l-64 -311l-39 -158l-43 -235l-14 -45v-10.5t2 -16.5q35 -8 64.5 -13t58.5 -9q4 0 21.5 -2.5 l45.5 -6.5q-2 -18 -3 -32.5t-3 -26.5q-2 -6 -4 -16.5t-6 -22.5q-8 0 -14 -1t-10 -1q-18 -2 -28.5 -2h-14.5h-11.5t-17.5 4q-8 0 -45 4t-105 12l-202 2q-61 0 -181 -12q-39 -4 -63.5 -6t-36.5 -2z" />
88
+ <glyph unicode="&#xf034;" d="M0 1151q14 37 34.5 110.5t45.5 184.5q8 33 13 54.5t9 31.5h58q4 -6 6 -10t4 -9q29 -57 41 -71q16 -4 129 -4q35 0 66.5 1t60.5 1l20 2l113 2l213 -2h289l55 10q10 8 27 53q2 6 4 12.5t6 16.5l43 2h10.5t16.5 -2q2 -39 1 -97.5t1 -138.5v-100v-57q0 -14 -1 -27.5t-3 -23.5 q-20 -8 -37 -11.5t-31 -7.5q-27 51 -53 129q-29 82 -37 92q-12 14 -27 21q-10 4 -60 4h-138h-31t-35 -4q-6 -43 -6 -72l2 -151v-334l2 -359v-147q0 -72 10 -117q8 -4 21.5 -8t34.5 -8q4 0 21 -4t50 -13q27 -10 49 -18q4 -20 4 -33.5v-17.5v-11.5t-2 -17.5h-34q-47 0 -88 2 t-76 6t-95.5 6t-148.5 2q-16 0 -57 -4t-109 -10q-29 -2 -45 -3t-24 -1q0 10 -1.5 16.5t-1.5 10.5l-2 24v10q18 31 80 50q94 27 135 49q4 10 6.5 25.5t4.5 31.5q4 68 6 176.5t0 255.5l-4 428q-2 90 -2 142.5t-4 72.5q0 8 -7 15q-4 6 -12 6q-16 4 -63 4h-127q-90 0 -119 -21 q-41 -29 -121 -153q-23 -35 -35 -35q-23 12 -36 23.5t-19 19.5zM1383 1305.5q-5 13.5 14 33.5l184 185q14 12 33 12q14 0 31 -12l184 -185q18 -20 13 -33.5t-34 -13.5h-118v-1048h118q29 0 34 -13.5t-13 -31.5l-184 -187q-16 -12 -33 -12q-16 0 -31 12l-184 187 q-18 18 -13 31.5t31 13.5h121v1048h-121q-27 0 -32 13.5z" />
89
+ <glyph unicode="&#xf035;" horiz-adv-x="1536" d="M0 233q0 18 12 31l187 185q18 20 31.5 14t13.5 -33v-121h1048v121q0 27 13.5 33t33.5 -14l185 -185q12 -12 12 -31q0 -18 -12 -30l-185 -187q-20 -18 -33.5 -13t-13.5 34v119h-1048v-119q0 -29 -13.5 -34t-31.5 13l-187 187q-12 12 -12 30zM0 1233q14 29 33.5 87 t44.5 146q6 27 11 43.5t9 26.5h56q8 -12 10 -14q27 -47 37 -58q2 0 35.5 -1t77.5 -1h90.5h74.5h123l19 2h108h203h416l53 6q12 10 24 46l4.5 9l6.5 13h39h28v-188v-80v-45q0 -12 -1 -21.5t-3 -19.5q-33 -10 -63 -15q-25 37 -52 103q-27 59 -34 74q-12 10 -27 14q-6 2 -42 3 t-85 1h-103.5h-97.5h-28.5t-34.5 -2q-2 -18 -3 -32.5t-1 -24.5l4 -445l-2 -119q0 -61 12 -92q12 -6 53 -12q4 0 20.5 -4t45.5 -10q14 -4 26.5 -7.5t22.5 -7.5q2 -16 3 -25.5t1 -13.5t-1 -10t-1 -14h-33q-94 0 -157 6q-66 6 -236 6q-14 0 -53 -3t-105 -7q-27 -2 -43 -3 t-24 -1q0 16 -2 20v21v8q20 27 73 39q90 20 132 41q4 8 6 19t4 26q0 18 1 70.5t1 120t-1 142t-2 139t-2 107.5t-1 47q0 8 -6 13q-2 2 -13 6q-14 2 -59 2h-123q-20 0 -62 -1t-85 -2t-78 -4t-41 -7q-41 -25 -117 -123q-20 -29 -33 -29q-23 10 -35 19.5t-18 15.5z" />
90
+ <glyph unicode="&#xf036;" d="M0 78v115q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM0 500v114q0 33 22.5 55.5t55.5 22.5h1075q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1075 q-33 0 -55.5 22.5t-22.5 55.5zM0 922v114q0 33 22.5 55.5t55.5 22.5h1536q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1536q-33 0 -55.5 21.5t-22.5 54.5zM0 1343v117q0 31 22.5 53.5t55.5 22.5h921q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53 t-53.5 -22h-921q-33 0 -55.5 22.5t-22.5 52.5z" />
91
+ <glyph unicode="&#xf037;" d="M0 78v115q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM78 922v114q0 33 21.5 55.5t54.5 22.5h1536q33 0 55 -22.5t22 -55.5v-114q0 -33 -22.5 -54.5t-54.5 -21.5h-1536 q-33 0 -54.5 21.5t-21.5 54.5zM307 500v114q0 33 22.5 55.5t55.5 22.5h1075q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1075q-33 0 -55.5 22.5t-22.5 55.5zM385 1343v117q0 31 21.5 53.5t54.5 22.5h921q33 0 55.5 -22.5t22.5 -53.5v-117 q0 -31 -22.5 -53t-55.5 -22h-921q-33 0 -54.5 22.5t-21.5 52.5z" />
92
+ <glyph unicode="&#xf038;" d="M0 78v115q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM154 922v114q0 33 22.5 55.5t54.5 22.5h1536q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1536 q-33 0 -55 21.5t-22 54.5zM614 500v114q0 33 22.5 55.5t55.5 22.5h1075q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1075q-33 0 -55.5 22.5t-22.5 55.5zM768 1343v117q0 31 22.5 53.5t55.5 22.5h921q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53 t-53.5 -22h-921q-33 0 -55.5 22.5t-22.5 52.5z" />
93
+ <glyph unicode="&#xf039;" d="M0 78v115q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM0 500v114q0 33 22.5 55.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1689 q-33 0 -55.5 22.5t-22.5 55.5zM0 922v114q0 33 22.5 55.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1689q-33 0 -55.5 21.5t-22.5 54.5zM0 1343v117q0 31 22.5 53.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -53.5v-117 q0 -31 -22.5 -53t-53.5 -22h-1689q-33 0 -55.5 22.5t-22.5 52.5z" />
94
+ <glyph unicode="&#xf03a;" d="M0 78v115q0 31 22.5 53t55.5 22h153q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-153q-33 0 -55.5 22.5t-22.5 55.5zM0 500v114q0 33 22.5 55.5t55.5 22.5h153q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-153 q-33 0 -55.5 22.5t-22.5 55.5zM0 922v114q0 33 22.5 55.5t55.5 22.5h153q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-153q-33 0 -55.5 21.5t-22.5 54.5zM0 1343v117q0 31 22.5 53.5t55.5 22.5h153q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53 t-53.5 -22h-153q-33 0 -55.5 22.5t-22.5 52.5zM461 78v115q0 31 22.5 53t55.5 22h1228q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1228q-33 0 -55.5 22.5t-22.5 55.5zM461 500v114q0 33 22.5 55.5t55.5 22.5h1228q31 0 53.5 -22.5t22.5 -55.5v-114 q0 -33 -22.5 -55.5t-53.5 -22.5h-1228q-33 0 -55.5 22.5t-22.5 55.5zM461 922v114q0 33 22.5 55.5t55.5 22.5h1228q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1228q-33 0 -55.5 21.5t-22.5 54.5zM461 1343v117q0 31 22.5 53.5t55.5 22.5h1228 q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53t-53.5 -22h-1228q-33 0 -55.5 22.5t-22.5 52.5z" />
95
+ <glyph unicode="&#xf03b;" d="M0 756v75q0 39 39 39h213v154q0 31 16.5 37t38.5 -17l215 -215q16 -16 17 -36q0 -18 -17 -35l-215 -215q-23 -23 -39 -17t-16 39v152h-213q-39 0 -39 39zM614 39v1458q0 39 39 39h76q39 0 39 -39v-1458q0 -39 -39 -39h-76q-39 0 -39 39zM922 78v115q0 31 22.5 53t54.5 22 h768q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-768q-33 0 -55 22.5t-22 55.5zM922 500v114q0 33 22.5 55.5t54.5 22.5h615q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-615q-33 0 -55 22.5t-22 55.5zM922 922v114 q0 33 22.5 55.5t54.5 22.5h691q33 0 55 -22.5t22 -55.5v-114q0 -33 -22.5 -54.5t-54.5 -21.5h-691q-33 0 -55 21.5t-22 54.5zM922 1343v117q0 31 22.5 53.5t54.5 22.5h537q33 0 55.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53t-55.5 -22h-537q-33 0 -55 22.5t-22 52.5z" />
96
+ <glyph unicode="&#xf03c;" d="M0 78v115q0 31 22.5 53t53.5 22h768q33 0 55.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-55.5 -22.5h-768q-31 0 -53.5 22.5t-22.5 55.5zM0 500v114q0 33 22.5 55.5t53.5 22.5h614q33 0 55.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-55.5 -22.5h-614 q-31 0 -53.5 22.5t-22.5 55.5zM0 922v114q0 33 22.5 55.5t53.5 22.5h692q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-692q-31 0 -53.5 21.5t-22.5 54.5zM0 1343v117q0 31 22.5 53.5t53.5 22.5h538q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53 t-53.5 -22h-538q-31 0 -53.5 22.5t-22.5 52.5zM1075 39v1458q0 39 39 39h76q16 0 27.5 -11.5t11.5 -27.5v-1458q0 -16 -11.5 -27.5t-27.5 -11.5h-76q-39 0 -39 39zM1305 743q0 16 14 35l217 215q23 23 38 17t15 -39v-152h215q16 0 27.5 -11t11.5 -28v-75q0 -16 -11 -27.5 t-28 -11.5h-215v-154q0 -31 -15 -38t-38 15l-217 218q-14 18 -14 36z" />
97
+ <glyph unicode="&#xf03d;" d="M0 324v768q0 47 18.5 89t50 72.5t73.5 49t89 18.5h768q47 0 89 -18.5t73 -49t49.5 -72.5t18.5 -89v-240l483 471q23 23 55 23q13 -1 29 -7q47 -20 47 -69v-1127q0 -49 -47 -69q-16 -6 -29 -6q-33 0 -55 22l-483 471v-237q0 -47 -18.5 -89t-49.5 -74t-72.5 -50.5 t-89.5 -18.5h-768q-47 0 -89 18.5t-73.5 50.5t-50 73.5t-18.5 89.5z" />
98
+ <glyph unicode="&#xf03e;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h1536v1228h-1536v-1228zM307 307v105l277 360l188 -156l354 537l410 -424v-422h-1229zM307 1073q0 66 45 111t111 45q63 0 108 -45 t45 -111q0 -63 -45 -108t-108 -45q-66 0 -111 45t-45 108z" />
99
+ <glyph unicode="&#xf040;" horiz-adv-x="1536" d="M0 0l137 418l867 866l280 -280l-866 -867zM287 407.5q0 -12.5 10 -22.5q8 -8 22 -8q12 0 21 8l690 690q20 20 0 43q-10 10 -22.5 10t-20.5 -10l-690 -688q-10 -10 -10 -22.5zM1102 1382l119 119q35 35 84 35t84 -35l57 -55l55 -57q35 -35 35 -84.5t-35 -83.5l-119 -119z " />
100
+ <glyph unicode="&#xf041;" horiz-adv-x="1128" d="M0 1001q0 117 44 220.5t121 180.5t180.5 121t219.5 44q117 0 219.5 -44t179 -121t120.5 -180.5t44 -220.5q0 -84 -24.5 -159.5t-65.5 -143.5l-379 -661q-41 -68 -95 -68t-93 68l-381 663q-41 68 -65.5 143t-24.5 158zM285 1001q0 -57 21.5 -108t60.5 -89t89 -59.5 t109 -21.5q57 0 108.5 21.5t89.5 59.5t59.5 89t21.5 108t-21.5 108.5t-59.5 90.5t-89 60.5t-109 21.5q-59 0 -109 -21.5t-89 -60.5t-60.5 -90t-21.5 -109z" />
101
+ <glyph unicode="&#xf042;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44v1118q-117 0 -218.5 -44 t-177 -120t-119.5 -177t-44 -218z" />
102
+ <glyph unicode="&#xf043;" horiz-adv-x="1130" d="M0 535q0 86 23.5 161.5t66.5 141.5q20 33 69.5 99.5t108 154.5t113.5 193.5t90 217.5q10 35 37 51.5t57 12.5q31 4 57.5 -12.5t36.5 -51.5q33 -113 89.5 -218t115 -193t107.5 -154.5t69 -99.5q43 -66 66.5 -141.5t23.5 -161.5q0 -117 -44 -220.5t-120.5 -180.5t-180 -121 t-220.5 -44t-220 44t-180 121t-121 180.5t-44 220.5zM248 410q0 -59 41 -100.5t100 -41.5t100 41t41 101q0 43 -22 75q-6 8 -18.5 24.5t-26.5 39t-28.5 48.5t-22.5 54q-4 20 -23 17q-18 4 -24 -17q-8 -29 -21.5 -54.5t-28 -48t-27 -38.5t-18.5 -25q-23 -33 -22 -75z" />
103
+ <glyph unicode="&#xf044;" d="M0 307v922q0 63 24.5 119.5t65.5 97.5t97.5 65.5t119.5 24.5h1075q4 0 10.5 -1t10.5 -1l-191 -191h-905q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h1075q47 0 81 33.5t34 80.5v445l193 192v-637q0 -63 -25 -118.5t-67 -97.5t-97 -66.5t-119 -24.5 h-1075q-63 0 -119.5 24.5t-97.5 66.5t-65.5 97.5t-24.5 118.5zM631 324l108 329l652 652l221 -222l-651 -651zM866 629q6 -8 17 -8q10 0 16 8l512 510q18 18 0 35q-18 16 -35 0l-510 -510q-18 -18 0 -35zM1501 1415l92 94q29 29 68 29t65 -29l46 -45l45 -45 q27 -29 27.5 -66.5t-27.5 -66.5l-95 -92z" />
104
+ <glyph unicode="&#xf045;" d="M0 307v922q0 63 24.5 119.5t65.5 97.5t97.5 65.5t119.5 24.5h836q-6 -31 -6 -63v-52q-164 -20 -310 -78h-520q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h1075q47 0 81 33.5t34 80.5v111q16 10 31.5 21.5t32.5 27.5l129 127v-287q0 -63 -25 -118.5 t-67 -97.5t-97 -66.5t-119 -24.5h-1075q-63 0 -119.5 24.5t-97.5 66.5t-65.5 97.5t-24.5 118.5zM385 388.5v37.5q0 166 56.5 312.5t173 256t293.5 173t419 65.5v231q0 57 28.5 69.5t69.5 -28.5l392 -391q27 -25 26 -65q0 -39 -26 -64l-392 -391q-41 -41 -69.5 -28.5 t-28.5 69.5v260q-207 0 -364.5 -43t-266 -116.5t-170 -174t-77.5 -215.5q-4 -27 -31 -27q-25 0 -29 27q-4 23 -4 42.5z" />
105
+ <glyph unicode="&#xf046;" d="M0 307v922q0 63 24.5 119.5t65.5 97.5t97.5 65.5t119.5 24.5h1075q27 0 52 -6l-187 -187h-940q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h1075q47 0 81 33.5t34 80.5v326l193 192v-518q0 -63 -25 -118.5t-67 -97.5t-97 -66.5t-119 -24.5h-1075 q-63 0 -119.5 24.5t-97.5 66.5t-65.5 97.5t-24.5 118.5zM385 966.5q0 32.5 23 55.5l98 98q23 23 55.5 23t54.5 -23l340 -340l654 656q23 23 56.5 22.5t55.5 -22.5l99 -99q23 -23 22.5 -55.5t-22.5 -54.5l-711 -711l-98 -98q-23 -23 -55.5 -23t-55.5 23l-100 98l-393 395 q-23 23 -23 55.5z" />
106
+ <glyph unicode="&#xf047;" horiz-adv-x="1597" d="M0 768q0 25 18 43l256 256q27 27 45.5 19.5t18.5 -46.5v-170h360v359h-172q-37 0 -45 18.5t19 44.5l256 256q18 18 43 19q25 0 43 -19l256 -256q27 -27 19.5 -45t-46.5 -18h-172v-359h361v170q0 39 18 46.5t45 -19.5l256 -256q18 -18 18 -43t-18 -43l-256 -256 q-27 -27 -45 -19.5t-18 46.5v176h-361v-365h172q39 0 47 -18.5t-20 -44.5l-256 -256q-18 -18 -43 -19q-25 0 -43 19l-256 256q-27 27 -20 45t46 18h172v365h-360v-176q0 -39 -18.5 -46.5t-45.5 19.5l-256 256q-18 18 -18 43z" />
107
+ <glyph unicode="&#xf048;" horiz-adv-x="1075" d="M0 76q0 -31 22.5 -53.5t53.5 -22.5h153q33 0 55.5 22.5t22.5 53.5v1382q0 33 -22.5 55.5t-55.5 22.5h-153q-31 0 -53.5 -22.5t-22.5 -55.5v-1382zM307.5 768q-0.5 27 16.5 43l653 707q14 18 41 18q6 0 22 -4q35 -18 35 -59v-1412q0 -41 -35 -57q-39 -14 -63 14l-653 705 q-16 18 -16.5 45z" />
108
+ <glyph unicode="&#xf049;" d="M0 76q0 -31 22.5 -53.5t53.5 -22.5h153q33 0 55.5 22.5t22.5 53.5v1382q0 33 -22.5 55.5t-55.5 22.5h-153q-31 0 -53.5 -22.5t-22.5 -55.5v-1382zM307.5 768q-0.5 27 16.5 43l653 707q14 18 41 18q6 0 22 -4q35 -18 35 -59v-1412q0 -41 -35 -57q-39 -14 -63 14l-653 705 q-16 18 -16.5 45zM1075.5 768q-0.5 27 16.5 43l653 707q14 18 41 18q6 0 22 -4q35 -18 35 -59v-1412q0 -41 -35 -57q-39 -14 -63 14l-653 705q-16 18 -16.5 45z" />
109
+ <glyph unicode="&#xf04a;" horiz-adv-x="1536" d="M0 767q0 26 16 44l654 707q14 18 41 18q10 0 22 -6q35 -14 35 -57v-1412q0 -41 -35 -57q-37 -16 -63 14l-654 705q-16 18 -16 44zM768 767q0 26 16 44l654 707q14 18 41 18q10 0 22 -6q35 -14 35 -57v-1412q0 -41 -35 -57q-37 -16 -63 14l-654 705q-16 18 -16 44z" />
110
+ <glyph unicode="&#xf04b;" horiz-adv-x="1349" d="M0 70v1396q0 39 35 60q37 23 69 0l1211 -697q35 -25 35 -61q0 -37 -35 -61l-1211 -697q-16 -10 -34 -10t-35 10q-35 20 -35 60z" />
111
+ <glyph unicode="&#xf04c;" horiz-adv-x="1536" d="M0 70v1396q0 29 20.5 49.5t49.5 20.5h489q29 0 49.5 -20.5t20.5 -49.5v-1396q0 -29 -20.5 -49.5t-49.5 -20.5h-489q-29 0 -49.5 20.5t-20.5 49.5zM907 70v1396q0 29 20.5 49.5t49.5 20.5h489q29 0 49.5 -20.5t20.5 -49.5v-1396q0 -29 -20.5 -49.5t-49.5 -20.5h-489 q-29 0 -49.5 20.5t-20.5 49.5z" />
112
+ <glyph unicode="&#xf04d;" horiz-adv-x="1536" d="M0 70v1396q0 29 20.5 49.5t49.5 20.5h1396q29 0 49.5 -20.5t20.5 -49.5v-1396q0 -29 -20.5 -49.5t-49.5 -20.5h-1396q-29 0 -49.5 20.5t-20.5 49.5z" />
113
+ <glyph unicode="&#xf04e;" horiz-adv-x="1536" d="M0 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57zM768 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57z" />
114
+ <glyph unicode="&#xf050;" d="M0 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57zM768 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57zM1536 76 q0 -31 22.5 -53.5t53.5 -22.5h153q33 0 55.5 22.5t22.5 53.5v1382q0 33 -22.5 55.5t-55.5 22.5h-153q-31 0 -53.5 -22.5t-22.5 -55.5v-1382z" />
115
+ <glyph unicode="&#xf051;" horiz-adv-x="1075" d="M0 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57zM768 76q0 -31 22.5 -53.5t53.5 -22.5h153q33 0 55.5 22.5t22.5 53.5v1382q0 33 -22.5 55.5t-55.5 22.5h-153q-31 0 -53.5 -22.5t-22.5 -55.5 v-1382z" />
116
+ <glyph unicode="&#xf052;" horiz-adv-x="1536" d="M0 70v198q0 29 20.5 49.5t49.5 20.5h1396q29 0 49.5 -20.5t20.5 -49.5v-198q0 -29 -20.5 -49.5t-49.5 -20.5h-1396q-29 0 -49.5 20.5t-20.5 49.5zM6 594q-18 43 14 76l699 698q20 20 49 20.5t49 -20.5l699 -698q33 -33 14 -76q-16 -43 -64 -43h-1396q-47 0 -64 43z" />
117
+ <glyph unicode="&#xf053;" horiz-adv-x="964" d="M0 765q0 38 29 66l671 674q29 29 68 29t68 -29l100 -100q29 -29 29 -68t-29 -67l-508 -510l508 -500q29 -29 29 -66.5t-29 -66.5l-100 -102q-29 -29 -68 -29t-68 29l-671 673q-29 29 -29 67z" />
118
+ <glyph unicode="&#xf054;" horiz-adv-x="964" d="M0 194.5q0 38.5 29 67.5l508 508l-508 502q-29 29 -29 66.5t29 66.5l100 102q29 29 68 29t67 -29l672 -673q29 -29 29 -68t-29 -68l-672 -671q-29 -29 -67.5 -29t-67.5 29l-100 100q-29 29 -29 67.5z" />
119
+ <glyph unicode="&#xf055;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM338 688q0 -33 33 -33h313v-344q0 -33 33 -32h164q33 0 32 32v344h314 q12 0 22.5 9.5t10.5 23.5v158q0 14 -10.5 23.5t-22.5 9.5h-314v346q0 33 -32 32h-164q-33 0 -33 -32v-346h-313q-33 0 -33 -33v-158z" />
120
+ <glyph unicode="&#xf056;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM338 688q0 -33 33 -33h856q12 0 22.5 9.5t10.5 23.5v158q0 14 -10.5 23.5 t-22.5 9.5h-856q-33 0 -33 -33v-158z" />
121
+ <glyph unicode="&#xf057;" horiz-adv-x="1597" d="M0 770q0 154 58.5 301.5t174.5 263.5q117 117 264.5 175.5t301 58.5t301 -58.5t264.5 -175.5t175 -264t58 -301t-58 -301t-175 -264t-264.5 -175.5t-301 -58.5t-301 58.5t-264.5 175.5t-175 264t-58 301zM385 505q0 -13 10 -24l115 -116q10 -10 23.5 -10.5t23.5 10.5 l244 243l219 -221q10 -10 23.5 -10t23.5 10l113 113q23 23 0 47l-222 219l246 246q23 23 0 47l-117 115q-25 25 -47 0l-243 -244l-222 221q-10 10 -23 10t-24 -10l-110 -113q-25 -23 0 -47l219 -219l-242 -244q-10 -10 -10 -23z" />
122
+ <glyph unicode="&#xf058;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 718q0 -20 14 -34l319 -319q14 -14 38 -24.5t44 -10.5h56q20 0 43.5 10 t38.5 25l550 550q14 14 14.5 34t-14.5 34l-104 107q-16 14 -35.5 14t-34.5 -14l-452 -453q-14 -14 -33.5 -14t-34.5 14l-221 221q-14 14 -33.5 14t-36.5 -14l-104 -106q-14 -14 -14 -34z" />
123
+ <glyph unicode="&#xf059;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM532 1100l95 -115q4 -8 20 -12q12 0 23 6l10 8t27.5 17.5t39 16.5t46.5 7 q41 0 69.5 -22.5t28.5 -57.5q0 -37 -24.5 -64.5t-61.5 -60.5q-23 -18 -46.5 -40.5t-43 -51.5t-31.5 -63.5t-12 -79.5v-64q0 -12 9 -21t21 -9h164q12 0 20.5 9t8.5 21v51q0 39 25.5 66.5t62.5 60.5q25 20 49.5 46t46 57t34.5 69.5t13 90.5q0 68 -27.5 121t-73.5 87.5 t-103.5 53t-114.5 18.5q-63 0 -113.5 -16.5t-85.5 -35.5t-53 -35.5t-20 -18.5q-16 -16 -3 -39zM672 252q0 -12 9 -21.5t21 -9.5h164q12 0 20.5 9.5t8.5 21.5v156q0 12 -8 21t-21 9h-164q-12 0 -21 -9t-9 -21v-156z" />
124
+ <glyph unicode="&#xf05a;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM573 858q0 -29 29 -29h86v-409h-78q-12 0 -21 -8.5t-9 -20.5v-139q0 -12 9 -21.5 t21 -9.5h402q12 0 20 9.5t8 21.5v139q0 29 -28 29h-78v577q0 12 -8 21.5t-21 9.5h-303q-12 0 -20.5 -9t-8.5 -22v-139zM686 1151q0 -12 9.5 -21.5t21.5 -9.5h188q12 0 20.5 9.5t8.5 21.5v166q0 29 -29 29h-188q-12 0 -21.5 -8.5t-9.5 -20.5v-166z" />
125
+ <glyph unicode="&#xf05b;" horiz-adv-x="1536" d="M0 692v154q0 16 11.5 26.5t27.5 10.5h164q18 84 59 158.5t99.5 133t133 99.5t158.5 59v164q0 39 39 39h154q16 0 26.5 -11.5t10.5 -27.5v-164q84 -18 158.5 -59t133 -99.5t99.5 -133t59 -158.5h164q16 0 27.5 -10.5t11.5 -26.5v-154q0 -39 -39 -39h-164 q-18 -84 -59 -158.5t-99.5 -133t-133 -99.5t-158.5 -59v-164q0 -16 -10.5 -27.5t-26.5 -11.5h-154q-39 0 -39 39v164q-84 18 -158.5 59t-133 99.5t-99.5 133t-59 158.5h-164q-39 0 -39 39zM365 653q29 -106 105.5 -183t182.5 -105v174q0 16 11.5 26t27.5 10h154 q16 0 26.5 -10t10.5 -26v-174q106 29 183 105.5t105 182.5h-172q-39 0 -38 39v154q0 16 11 26.5t27 10.5h172q-29 106 -105.5 183t-182.5 105v-172q0 -16 -10.5 -27t-26.5 -11h-154q-39 0 -39 38v172q-106 -29 -183 -105.5t-105 -182.5h174q16 0 26 -10.5t10 -26.5v-154 q0 -16 -10 -27.5t-26 -11.5h-174z" />
126
+ <glyph unicode="&#xf05c;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM451 573.5q0 16.5 12 28.5l166 166l-166 166q-12 12 -12 28.5t12 28.5l112 113q29 29 58 0l166 -166l166 166q29 29 57 0l113 -113q29 -29 0 -57l-166 -166l166 -166 q29 -29 0 -57l-113 -113q-12 -12 -28.5 -12t-28.5 12l-166 166l-166 -166q-12 -12 -28.5 -12t-29.5 12l-112 113q-12 12 -12 28.5z" />
127
+ <glyph unicode="&#xf05d;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM332 717.5q0 17.5 10 27.5l115 115q10 10 27.5 10t27.5 -10l178 -180q29 -25 58 0l337 340q10 10 27.5 10t28.5 -10l114 -115q10 -10 10.5 -27.5t-10.5 -27.5l-409 -410 q-12 -12 -32.5 -20t-37.5 -8h-114q-16 0 -37 8t-33 20l-250 250q-10 10 -10 27.5z" />
128
+ <glyph unicode="&#xf05e;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -84 23.5 -160t66.5 -141l770 770q-66 43 -141.5 66.5t-159.5 23.5 q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM498 297q66 -41 141.5 -64.5t159.5 -23.5q117 0 218 44t177 120t120 177t44 218q0 84 -23.5 160t-64.5 141z" />
129
+ <glyph unicode="&#xf060;" horiz-adv-x="1536" d="M0 768q0 39 29 68l671 673q29 29 68 29t68 -29l100 -100q29 -29 29 -67.5t-29 -67.5l-338 -338h842q41 0 68.5 -27.5t27.5 -68.5v-144q0 -39 -27.5 -66.5t-66.5 -27.5h-844l338 -338q29 -29 29 -67.5t-29 -67.5l-100 -100q-29 -29 -68 -29t-68 29l-671 671q-29 29 -29 68 z" />
130
+ <glyph unicode="&#xf061;" horiz-adv-x="1536" d="M0 698v144q0 39 27.5 66.5t66.5 27.5h844l-338 338q-29 29 -29 67.5t29 67.5l100 100q29 29 68 29t68 -29l671 -673q29 -29 29 -67t-29 -67l-671 -673q-29 -29 -68 -29t-68 29l-100 100q-29 29 -29 68t29 67l338 338h-844q-39 0 -66.5 27.5t-27.5 68.5z" />
131
+ <glyph unicode="&#xf062;" horiz-adv-x="1536" d="M-1 768q-1 39 28 68l673 671q29 29 68 29t68 -29l671 -671q29 -29 29 -68t-29 -68l-100 -100q-29 -29 -66.5 -29t-66.5 29l-340 338v-844q0 -39 -27.5 -66.5t-66.5 -27.5h-144q-41 0 -67.5 27.5t-26.5 66.5v844l-338 -338q-29 -29 -67.5 -29t-67.5 29l-100 100 q-29 29 -30 68z" />
132
+ <glyph unicode="&#xf063;" horiz-adv-x="1536" d="M0 766q0 39 29 68l100 100q29 29 68 29t67 -29l338 -338v844q0 39 27.5 66.5t66.5 27.5h144q41 0 67.5 -27.5t26.5 -66.5v-844l340 338q29 29 66.5 29t66.5 -29l102 -100q29 -29 29 -68t-29 -68l-673 -671q-29 -29 -68 -29t-68 29l-671 671q-29 29 -29 68z" />
133
+ <glyph unicode="&#xf064;" d="M0 135q0 209 71.5 393.5t218 322.5t371 219t531.5 83v293q0 72 36 87t89 -36l491 -493q35 -33 35 -82q0 -47 -35 -82l-491 -494q-51 -51 -88 -35.5t-37 86.5v330q-262 -2 -461 -56.5t-336 -147.5t-215 -219t-98 -271q-4 -33 -37 -33h-2q-33 0 -37 33q-6 51 -6 102z" />
134
+ <glyph unicode="&#xf065;" horiz-adv-x="1536" d="M0 86v522q0 53 26.5 64.5t65.5 -25.5l166 -166l274 275q12 12 31 12t33 -12l160 -160q12 -14 12 -32.5t-12 -31.5l-275 -274l166 -166q39 -39 27 -65.5t-66 -26.5h-520q-37 0 -61 25q-27 27 -27 61zM768 972.5q0 18.5 12 31.5l275 274l-166 166q-39 39 -27 65.5t66 26.5 h520q37 0 61 -25q27 -27 27 -61v-522q0 -53 -26.5 -64.5t-65.5 25.5l-166 166l-274 -273q-12 -14 -31 -14t-33 14l-160 158q-12 14 -12 32.5z" />
135
+ <glyph unicode="&#xf066;" horiz-adv-x="1536" d="M0 202.5q0 18.5 12 33.5l275 272l-166 166q-39 39 -27 65.5t66 26.5h520q38 0 61 -25q27 -27 27 -61v-522q0 -53 -26.5 -64.5t-65.5 27.5l-166 166l-274 -275q-12 -14 -31 -14t-33 14l-160 160q-12 12 -12 30.5zM768 854v522q0 53 26.5 64.5t65.5 -27.5l166 -166l274 275 q12 14 31 14t33 -14l160 -160q12 -12 12 -30.5t-12 -33.5l-275 -272l166 -166q39 -39 27 -65.5t-66 -26.5h-520q-41 0 -61 25q-27 27 -27 61z" />
136
+ <glyph unicode="&#xf067;" horiz-adv-x="1536" d="M0 696v144q0 39 27.5 66.5t66.5 27.5h508v506q0 41 26.5 68.5t67.5 27.5h144q39 0 66.5 -27.5t27.5 -66.5v-508h508q39 0 66.5 -27.5t27.5 -66.5v-144q0 -39 -27.5 -66.5t-66.5 -27.5h-508v-506q0 -41 -27.5 -68.5t-66.5 -27.5h-144q-39 0 -66.5 27.5t-27.5 66.5v508 h-506q-41 0 -68.5 26.5t-27.5 67.5z" />
137
+ <glyph unicode="&#xf068;" horiz-adv-x="1536" d="M0 696v144q0 39 27.5 66.5t66.5 27.5h1348q39 0 66.5 -27.5t27.5 -66.5v-144q0 -39 -27.5 -66.5t-66.5 -27.5h-1346q-41 0 -68.5 26.5t-27.5 67.5z" />
138
+ <glyph unicode="&#xf069;" horiz-adv-x="1427" d="M2 1018q-10 37 10 72l72 124q20 35 58 44.5t73 -9.5l332 -192v383q0 41 27.5 68.5t68.5 27.5h141q41 0 69 -27.5t28 -66.5v-385l331 192q35 18 73 9t58 -44l70 -124q20 -35 11 -72t-44 -57l-333 -193l333 -193q35 -20 44.5 -57t-9.5 -72l-72 -124q-20 -35 -58 -44.5 t-73 9.5l-331 192v-383q0 -41 -28 -68.5t-69 -27.5h-141q-41 0 -68.5 27.5t-27.5 66.5v385l-332 -192q-35 -20 -73 -10t-58 45l-72 124q-18 35 -9 72t44 57l334 193l-334 193q-35 20 -45 57z" />
139
+ <glyph unicode="&#xf06a;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM672 1274l14 -739q4 -29 31 -29h162q12 0 21 8t9 21l17 739q0 10 -8 22q-8 8 -23 9 h-193q-14 0 -22 -9q-8 -12 -8 -22zM680 236q0 -12 8 -21.5t21 -9.5h180q12 0 21.5 9t9.5 22v174q0 12 -9.5 21t-21.5 9h-180q-12 0 -20.5 -9t-8.5 -21v-174z" />
140
+ <glyph unicode="&#xf06b;" horiz-adv-x="1880" d="M0 588v391q0 16 11.5 27.5t27.5 11.5h539q-57 0 -107.5 21.5t-87.5 58.5t-58.5 87t-21.5 107t21.5 107.5t58.5 87.5t87 58.5t108 21.5q61 0 115.5 -24.5t88.5 -69.5l158 -203l158 203q35 45 89 69.5t116 24.5q57 0 107 -21.5t87 -58.5t58.5 -87t21.5 -108 q0 -57 -21.5 -107t-58.5 -87t-87 -58.5t-107 -21.5h538q16 0 27.5 -11.5t11.5 -27.5v-391q0 -16 -11 -27.5t-28 -11.5h-117v-432q0 -47 -34.5 -82t-83.5 -35h-1332q-49 0 -82.5 35t-33.5 82v432h-119q-16 0 -27.5 11t-11.5 28zM461 1292q0 -49 33.5 -82.5t83.5 -33.5h237 l-151 196q-10 10 -32 24.5t-54 14.5q-49 0 -83 -35t-34 -84zM743 221q0 -33 24 -56.5t56 -23.5h234q33 0 56.5 23.5t23.5 56.5v797h-394v-797zM1065 1176h238q49 0 82.5 33.5t33.5 82.5t-33.5 84t-82.5 35q-33 0 -54.5 -14.5t-31.5 -24.5z" />
141
+ <glyph unicode="&#xf06c;" horiz-adv-x="1916" d="M6 135q20 53 56 89t71 65q29 23 50.5 43t27.5 43q2 6 0 12t-10 25q-6 12 -11.5 27.5t-9.5 35.5q-25 160 13 295t120 242.5t195 185.5t235 121q82 29 179.5 34t203.5 7q61 0 127 2t127.5 11t113.5 28.5t85 54.5q20 20 38.5 41t38 36t43 24.5t58.5 9.5q23 0 42.5 -11.5 t29.5 -31.5q66 -133 83 -281.5t-18 -322.5q-90 -487 -579 -740q-231 -123 -467 -123q-154 0 -307 54q-23 8 -45.5 20t-44.5 25q-29 16 -57.5 30.5t-49.5 14.5q-10 -2 -23.5 -17.5t-27.5 -35t-26.5 -41t-20.5 -33.5q-14 -23 -26.5 -41.5t-22.5 -32.5q-25 -31 -64 -31h-4 q-29 2 -49.5 12.5t-33.5 24.5t-20.5 28.5t-9.5 22.5q-27 37 -10 78zM401 507.5q2 -32.5 29 -54.5q20 -18 51 -19q37 0 62 27q90 102 181 175t191.5 117t212 62t242.5 14q33 -4 57.5 19.5t26.5 56.5q2 35 -20.5 58.5t-57.5 25.5q-147 6 -277 -16.5t-247 -73.5t-223.5 -133 t-206.5 -199q-23 -27 -21 -59.5z" />
142
+ <glyph unicode="&#xf06d;" horiz-adv-x="1445" d="M0 442q0 123 63.5 254t174.5 238q10 16 33.5 13t31.5 -21q4 -16 0 -29q-8 -35 -14 -84t-4 -101.5t13 -101.5t38 -84q31 -37 78 -49q-49 154 -40 293t49 259t101.5 217t118.5 167t98 106.5t43 39.5q25 18 47 0q10 -8 13.5 -21.5t-0.5 -24.5q0 -2 -15.5 -42.5t-21.5 -102 t7 -134.5t71 -136q37 -43 67.5 -85t52 -93.5t34 -120t12.5 -162.5q0 -33 -31 -39q-12 -2 -24.5 4t-16.5 19q-14 31 -42 49t-63 18q-47 0 -79.5 -33.5t-32.5 -81.5q0 -121 156 -120q98 0 153 63q37 43 53.5 101.5t20.5 114.5t2 102.5t-4 62.5q-6 12 0 29q8 18 31.5 21 t35.5 -13q111 -106 173.5 -237.5t62.5 -254.5q0 -109 -51.5 -195.5t-145.5 -148t-228 -95.5t-298 -34t-298 34t-228.5 95.5t-145.5 148.5t-51 195z" />
143
+ <glyph unicode="&#xf06e;" d="M0 722q0 44 25 83q78 125 178 224t216 168t242.5 104.5t260.5 35.5q135 0 262 -35.5t241.5 -103.5t215 -167t180.5 -226q23 -39 22.5 -83t-22.5 -81q-80 -127 -180.5 -226.5t-215 -167t-241.5 -103t-262 -35.5q-133 0 -260 35.5t-243 104t-216.5 168t-177.5 224.5 q-25 37 -25 81zM154 723q66 -104 149.5 -190.5t182 -145.5t208 -92t228.5 -33t228.5 33t207.5 92t182 145t150 191q-80 129 -187.5 226.5t-236.5 156.5q51 -59 79.5 -133t28.5 -160q0 -96 -35.5 -179t-99 -146.5t-147.5 -99.5t-179 -36q-96 0 -179 36t-146.5 99.5t-99 146.5 t-35.5 179q0 78 25.5 148.5t68.5 128.5q-117 -59 -217.5 -152.5t-175.5 -214.5zM614 813q0 -23 16.5 -40t41.5 -17t41 17.5t16 39.5q0 78 53.5 131t130.5 53q25 0 41.5 17.5t16.5 40.5q0 25 -16.5 41t-41.5 16q-61 0 -116.5 -23.5t-95 -63.5t-63.5 -95.5t-24 -116.5z" />
144
+ <glyph unicode="&#xf070;" d="M0 767q0 44 25 83q78 125 178 224.5t216 168t242.5 104t260.5 35.5q53 0 105 -7t103 -17l89 158q8 14 24 18q12 6 29 -2l133 -76q14 -8 19.5 -23.5t-3.5 -29.5l-774 -1383q-6 -14 -22 -18q-4 -2 -11 -2q-6 0 -18 4l-135 76q-14 8 -18.5 23.5t3.5 29.5l66 115 q-145 68 -269 178.5t-218 259.5q-25 37 -25 81zM154 768q82 -131 191.5 -229.5t240.5 -157.5l57 104q-86 63 -138 159.5t-52 213.5q0 78 25.5 148.5t68.5 130.5q-117 -61 -217.5 -153.5t-175.5 -215.5zM614 858q0 -23 16.5 -40t41.5 -17t41 17.5t16 39.5q0 78 53.5 131 t130.5 53q25 0 41.5 17.5t16.5 40.5q0 25 -16.5 41t-41.5 16q-61 0 -116.5 -23.5t-95 -63.5t-63.5 -95.5t-24 -116.5zM928 154l88 159q209 25 382 145t292 310q-109 170 -263 283l76 137q92 -66 172 -150t146 -188q23 -39 22.5 -83t-22.5 -81q-160 -254 -392.5 -392 t-500.5 -140zM1081 430l285 510q4 -20 6 -39.5t2 -42.5q0 -74 -21.5 -140.5t-60.5 -121.5t-93 -98t-118 -68z" />
145
+ <glyph unicode="&#xf071;" horiz-adv-x="1775" d="M0 92q0 20 6 39t17 35l768 1331q16 27 39.5 48.5t56.5 21.5t56.5 -21.5t39.5 -48.5l770 -1331q10 -16 16.5 -34.5t6.5 -39.5q0 -49 -38 -70.5t-81 -21.5h-1538q-43 0 -81 21.5t-38 70.5zM770 1114l12 -633q0 -14 10.5 -24.5t24.5 -10.5h139q14 0 24.5 10.5t10.5 24.5 l15 633q0 14 -10.5 24.5t-24.5 10.5h-166q-16 0 -25.5 -10.5t-9.5 -24.5zM776 168q0 -16 10.5 -25.5t24.5 -9.5h154q35 0 34 35v147q0 16 -9 26.5t-25 10.5h-154q-14 0 -24.5 -10t-10.5 -27v-147z" />
146
+ <glyph unicode="&#xf072;" horiz-adv-x="1597" d="M0 541v4q0 31 23 57l30 29q20 25 56 24q8 0 10 -2l280 -32q39 63 93.5 134.5t125.5 151.5l-583 457q-31 25 -31 59v4q0 31 23 58l57 57q27 23 57 23h13.5t13.5 -4l803 -293l151 149q70 70 161 110t167 40q72 0 109 -37q20 -18 28 -46t8 -63q0 -76 -38.5 -167t-110.5 -160 l-150 -152l293 -803q6 -12 6 -26q0 -33 -24 -58l-58 -57q-23 -25 -57 -25h-4q-35 4 -59 31l-455 586q-82 -72 -153.5 -126t-135.5 -93l35 -281v-10q0 -33 -22 -55l-31 -31q-23 -23 -58 -23h-4q-39 4 -59 31l-205 272l-274 207q-29 25 -31 60z" />
147
+ <glyph unicode="&#xf073;" horiz-adv-x="1566" d="M0 117v1147q0 47 35 81.5t82 34.5h39v13q0 31 10 62.5t32.5 56t59.5 40t90 15.5t90 -15.5t59.5 -40t33 -56.5t10.5 -62v-13h49v13q0 31 10 62.5t32.5 56t59.5 40t90 15.5t90 -15.5t60.5 -40t34 -56.5t10.5 -62v-13h49v13q0 31 10.5 62.5t33 56t59 40t90.5 15.5 q53 0 90 -15.5t59.5 -40t32.5 -56.5t10 -62v-13h39q47 0 82 -34.5t35 -81.5v-1147q0 -47 -35 -82t-82 -35h-1333q-47 0 -82 35t-35 82zM158 158h282v250h-282v-250zM158 446h282v252h-282v-252zM158 737h282v252h-282v-252zM272 1165q0 -57 76 -57t76 57v228q0 57 -76 57 t-76 -57v-228zM479 158h285v250h-285v-250zM479 446h285v252h-285v-252zM479 737h285v252h-285v-252zM709 1165q0 -31 16 -44t57 -13t58.5 13.5t17.5 43.5v228q0 29 -17.5 43t-58.5 14t-57 -14.5t-16 -42.5v-228zM803 158h284v250h-284v-250zM803 446h284v252h-284v-252z M803 737h284v252h-284v-252zM1126 158h283v250h-283v-250zM1126 446h283v252h-283v-252zM1126 737h283v252h-283v-252zM1143 1165q0 -57 76 -57t75 57v228q0 57 -75 57q-76 0 -76 -57v-228z" />
148
+ <glyph unicode="&#xf074;" d="M0 252v154q0 16 11.5 27t27.5 11h219q51 0 99.5 31t93.5 83t90 119.5t90 139.5q55 88 114.5 175t127 156t147.5 110.5t180 41.5h203v185q0 41 24.5 49t59.5 -21l334 -278q23 -18 22 -45q0 -29 -22 -47l-334 -277q-35 -29 -59.5 -20.5t-24.5 49.5v174h-203 q-53 0 -100 -31.5t-93 -84t-91.5 -120t-90.5 -139.5q-55 -88 -113.5 -174t-126 -154.5t-148.5 -110.5t-179 -42h-219q-16 0 -27.5 11.5t-11.5 27.5zM0 1108v154q0 39 39 38h219q68 0 127 -20t111.5 -56t97.5 -84t88 -104q-61 -90 -117 -178q-4 -8 -9 -14t-9 -15 q-70 102 -139.5 172t-149.5 70h-219q-16 0 -27.5 10.5t-11.5 26.5zM778 481q29 41 56.5 85t56.5 87q4 10 10 17.5t10 17.5q70 -102 139.5 -170.5t149.5 -68.5h203v190q0 41 24.5 49t59.5 -20l334 -277q23 -18 22 -47q0 -27 -22 -45l-334 -279q-35 -29 -59.5 -20.5 t-24.5 49.5v168h-203q-68 0 -127 20.5t-110.5 56.5t-97.5 84t-87 103z" />
149
+ <glyph unicode="&#xf075;" horiz-adv-x="1916" d="M0 866q0 145 76 272.5t206 222.5t303.5 150.5t372.5 55.5t373 -55.5t304 -150.5t206 -222t76 -273q0 -145 -76 -272t-206 -222.5t-304 -150.5t-373 -55q-92 0 -180 12q-176 -139 -411 -192q-25 -4 -50.5 -8.5t-54.5 -8.5q-16 -2 -27.5 6.5t-15.5 24.5t5 26.5t20 20.5 q23 23 43 44.5t36.5 51t30 69.5t23.5 97q-174 98 -275.5 241.5t-101.5 315.5z" />
150
+ <glyph unicode="&#xf076;" horiz-adv-x="1566" d="M0 621v288q0 16 11.5 27.5t27.5 11.5h391q16 0 28.5 -11t12.5 -28v-288q0 -29 22.5 -60t63.5 -58.5t98.5 -45t128.5 -17.5q70 0 128.5 17.5t99.5 45t63.5 58.5t22.5 60v288q0 39 39 39h391q16 0 27.5 -11t11.5 -28v-288q0 -135 -61.5 -254t-168 -207t-249 -139.5 t-304.5 -51.5q-164 0 -306 51.5t-248.5 139.5t-168 206.5t-61.5 254.5zM0 1106v391q0 16 11.5 27.5t27.5 11.5h391q16 0 28.5 -11.5t12.5 -27.5v-391q0 -16 -12.5 -27.5t-28.5 -11.5h-391q-16 0 -27.5 11.5t-11.5 27.5zM1098 1106v391q0 16 11 27.5t28 11.5h391 q16 0 27.5 -11.5t11.5 -27.5v-391q0 -16 -11.5 -27.5t-27.5 -11.5h-391q-39 0 -39 39z" />
151
+ <glyph unicode="&#xf077;" horiz-adv-x="1536" d="M-1 355.5q-1 37.5 28 66.5l673 674q29 29 68 28.5t68 -28.5l671 -674q29 -29 29 -67t-29 -66l-100 -103q-29 -29 -68 -28.5t-67 28.5l-508 510l-500 -510q-29 -29 -67.5 -28.5t-67.5 28.5l-100 103q-29 29 -30 66.5z" />
152
+ <glyph unicode="&#xf078;" horiz-adv-x="1536" d="M0 918.5q0 37.5 29 66.5l100 102q29 29 68 29t67 -29l508 -509l500 509q29 29 67.5 29t67.5 -29l100 -102q29 -29 30 -66.5t-28 -66.5l-673 -674q-29 -29 -68 -28.5t-68 28.5l-671 674q-29 29 -29 66.5z" />
153
+ <glyph unicode="&#xf079;" horiz-adv-x="1916" d="M2.5 1038.5q-12.5 30.5 28.5 75.5l385 424q25 29 63 29q39 0 64 -29l385 -424q41 -45 28.5 -75.5t-67.5 -30.5h-250v-680h174q6 -10 12 -19.5t17 -19.5l252 -281h-695q-33 0 -56.5 23.5t-23.5 56.5v920h-249q-55 0 -67.5 30.5zM823 1526h695q33 0 56 -22.5t23 -57.5v-918 h250q55 0 67.5 -30.5t-28.5 -75.5l-385 -424q-25 -29 -63 -29q-39 0 -64 29l-385 424q-41 45 -28.5 75.5t67.5 30.5h250v678h-174q-6 10 -12.5 20.5t-14.5 20.5z" />
154
+ <glyph unicode="&#xf07a;" d="M0 1421v76q0 39 39 39h231q16 0 38 -4t36 -8q6 -4 14.5 -14.5t15.5 -23.5t12 -26.5t7 -21.5l27 -125h1347q35 0 58 -27t16 -59l-108 -578q-6 -25 -26.5 -42t-49.5 -17h-1084l35 -168q4 -16 17.5 -26.5t29.5 -10.5h856q16 0 27.5 -11.5t11.5 -27.5v-78q0 -16 -11 -26.5 t-28 -10.5h-163h-652h-104q-16 0 -36.5 3.5t-35.5 9.5q-6 2 -14 13t-15.5 24.5t-12.5 27t-7 21.5l-215 1016q-4 16 -17.5 26t-29.5 10h-170q-39 0 -39 39zM582 115q0 47 33.5 81.5t80.5 34.5q49 0 83 -34.5t34 -81.5t-34 -81t-83 -34q-47 0 -80.5 34t-33.5 81zM1233 115 q0 47 33.5 81.5t81.5 34.5q47 0 80.5 -34.5t33.5 -81.5t-33.5 -81t-80.5 -34t-81 34t-34 81z" />
155
+ <glyph unicode="&#xf07b;" d="M0 115v1306q0 47 34 81t81 34h692q47 0 81 -34t34 -81t33.5 -80.5t80.5 -33.5h693q47 0 80.5 -35t33.5 -82v-1075q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81z" />
156
+ <glyph unicode="&#xf07c;" d="M0 379v1042q0 47 34 81t81 34h692q47 0 81 -34t34 -81t33.5 -80.5t80.5 -33.5h443q47 0 80.5 -35t33.5 -82v-221h-1228q-37 0 -72 -12.5t-65.5 -34t-53 -51t-35.5 -64.5zM43 0l246 760q6 23 30.5 39t47.5 16h1476l-260 -758q-6 -23 -30.5 -40t-47.5 -17h-1462z" />
157
+ <glyph unicode="&#xf07d;" horiz-adv-x="798" d="M2 368.5q10 22.5 57 22.5h203v754h-203q-47 0 -57 22.5t25 57.5l319 319q23 23 53 23q31 0 54 -23l321 -319q33 -35 22.5 -57.5t-57.5 -22.5h-202v-754h202q47 0 57.5 -22.5t-24.5 -57.5l-319 -319q-23 -23 -54 -23t-53 23l-321 319q-33 35 -23 57.5z" />
158
+ <glyph unicode="&#xf07e;" horiz-adv-x="1597" d="M0 729q0 31 23 53l319 322q35 33 57.5 23.5t22.5 -56.5v-205h754v203q0 47 22.5 57.5t56.5 -22.5l320 -322q23 -23 22 -53q0 -31 -22 -53l-320 -322q-35 -33 -57 -22.5t-22 57.5v203h-754v-203q0 -47 -22.5 -57t-57.5 24l-319 320q-23 23 -23 53z" />
159
+ <glyph unicode="&#xf080;" d="M0 115v1306q0 47 35 81t82 34h1612q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1612q-47 0 -82 34t-35 81zM154 154h1536v1228h-1536v-1228zM307 264v363h203v-363h-203zM649 264v776h201v-776h-201zM993 264v592h203v-592h-203zM1333 264v922h203v-922 h-203z" />
160
+ <glyph unicode="&#xf081;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t73 15.5h1153q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-1153q-39 0 -73.5 15.5t-60 41t-41 60.5t-15.5 76zM201 559q80 -111 198.5 -169t259.5 -58q96 0 184.5 26.5t160 73.5 t124 112.5t76.5 143.5q82 6 129 57q14 14 4 33q-8 18 -30 15h-4q23 23 30 45q8 20 -8 32q-14 14 -33 2q-8 -4 -29.5 -10t-45.5 -6q-4 0 -7.5 1t-7.5 1q0 2 -1 4t-1 4q-16 61 -57 110.5t-94 72.5q4 4 6 8t6 8q6 16 0 33q-2 6 -12.5 16t-34.5 8q-2 4 -6 8q-12 12 -25 9 q-25 -4 -49 -13l-2 2q-14 8 -31 -2q-59 -37 -98 -100t-68 -135q-35 31 -57 41q-61 35 -129 63.5t-154 61.5q-14 4 -24 -4q-10 -6 -15 -21q-2 -27 8.5 -58.5t38.5 -62.5q-25 -6 -20 -32q12 -68 68 -101l-13 -12q-14 -14 -4 -33q4 -12 26.5 -37.5t65.5 -38.5q-6 -12 -6 -22 t2 -14q6 -33 39 -50q-37 -25 -79 -34t-85 -5.5t-83 20.5t-70 46q-8 8 -19.5 8t-19.5 -8q-23 -18 -4 -39z" />
161
+ <glyph unicode="&#xf082;" horiz-adv-x="1536" d="M2 193v1150q0 39 15.5 75t41 61.5t60.5 41t74 15.5h1153q80 0 136 -56.5t56 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-74 -15.5h-486v643h172q12 0 21.5 8t9.5 21l12 168q0 14 -8 24q-10 10 -23 10h-184v74q0 41 10.5 54.5t53.5 13.5q25 0 55.5 -4t58.5 -11 q6 0 13.5 1.5t11.5 5.5q10 6 14 22l23 162q4 29 -25 35q-90 25 -188 24q-301 0 -301 -293v-84h-103q-33 0 -32 -32v-168q0 -12 9 -21.5t23 -9.5h103v-643h-393q-39 0 -74 15.5t-60.5 41t-41 60.5t-15.5 76z" />
162
+ <glyph unicode="&#xf083;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 160h1536v114h-1536v-114zM154 1145h1536v231h-957l-14 -92h-565v-139zM266 1341h316v93h-316v-93zM557 709q0 -76 28.5 -142.5t78 -116 t116 -78t142.5 -28.5t142 28.5t115.5 78t78 116t28.5 142.5t-28.5 142.5t-78 115.5t-116 77.5t-141.5 28.5q-76 0 -142.5 -28.5t-116 -77.5t-78 -115.5t-28.5 -142.5zM672 709q0 51 19.5 97t53 80t79.5 53t98 19q51 0 97 -19t80 -53t53 -80t19 -97t-19 -97.5t-53 -80 t-80 -53t-97 -19.5t-97.5 19.5t-80 53t-53 79.5t-19.5 98zM743 709q0 -16 12.5 -28.5t28.5 -12.5q18 0 30.5 12.5t12.5 28.5q0 41 28 67.5t67 26.5v2q18 0 30.5 12t12.5 29q0 18 -12.5 30.5t-30.5 12.5q-74 0 -126.5 -53.5t-52.5 -126.5z" />
163
+ <glyph unicode="&#xf084;" horiz-adv-x="1916" d="M0 803.5q-6 111.5 30 230.5t113 228q78 109 179.5 180t209 102t213 17.5t191.5 -74.5q76 -53 121 -134t59 -176.5t-4 -199t-68 -203.5l414 -297l101 139l-105 74q-14 10 -17 27.5t7 32.5l51 69q10 14 26.5 17.5t32.5 -7.5l344 -247q16 -10 18.5 -27.5t-7.5 -32.5l-49 -69 q-10 -14 -27.5 -17.5t-32.5 6.5l-102 76l-101 -139l248 -178q43 -31 52.5 -83t-21.5 -95q-33 -43 -84 -51.5t-94 22.5l-803 573q-78 -80 -170 -130t-186.5 -68.5t-185.5 -2t-167 71.5q-86 61 -133 157.5t-53 208zM230.5 766q7.5 -41 30 -78t58.5 -63q37 -27 79 -36t83 -2 t78 29.5t64 59.5q39 53 41 114.5t-27 114.5q59 -10 116.5 11.5t96.5 74.5q27 37 36 79t2 84t-29.5 79t-59.5 63q-37 27 -79 36t-84 2t-79 -29.5t-63 -59.5q-37 -53 -39 -114.5t26 -114.5q-59 10 -116.5 -12.5t-96.5 -75.5q-27 -37 -36 -79t-1.5 -83z" />
164
+ <glyph unicode="&#xf085;" horiz-adv-x="1916" d="M0 801v180q0 8 22.5 15.5t52 11.5t56.5 7t37 3q12 49 37 88q-23 31 -45.5 61.5t-46.5 59.5l-4 10q0 6 20.5 29.5t47 50t50 47t29.5 20.5q2 0 20.5 -13t41 -30.5t43 -34t24.5 -20.5q43 25 90 37q0 8 3 37t7 57.5t10.5 52t16.5 23.5h178q8 0 15.5 -23.5t11.5 -52t7 -57.5 t5 -37q45 -12 86 -35q31 23 62.5 45.5t60.5 46.5l8 4q4 0 27.5 -21.5t49.5 -47t47.5 -49t21.5 -29.5q0 -4 -13.5 -22.5t-30 -40t-32 -41t-19.5 -25.5q23 -39 39 -92q10 -2 37 -5t55.5 -8.5t51 -11.5t22.5 -14v-178q0 -10 -22.5 -16.5t-51 -11.5t-56.5 -7t-36 -4 q-14 -43 -37 -88q23 -31 44.5 -60.5t48.5 -58.5l2 -10q0 -6 -20.5 -30t-47.5 -50.5t-50.5 -47t-29.5 -20.5q-2 0 -20.5 13.5t-41 31t-42 32.5t-25.5 20q-45 -23 -88 -37q0 -10 -3 -37t-8 -56.5t-12.5 -52t-15.5 -22.5h-178q-8 0 -15.5 22.5t-11.5 52t-7 56t-3 37.5 q-45 12 -88 37q-31 -23 -61.5 -46.5t-59.5 -48.5l-10 -2q-4 0 -27.5 20.5t-49 47t-46 50.5t-20.5 30q0 2 13 20.5t29.5 40t31 41t18.5 25.5q-23 43 -39 94q-10 2 -37 5t-55.5 7t-51 10.5t-22.5 14.5zM420 889q0 -37 14.5 -70t39 -57.5t58 -38.5t70.5 -14t70 14t57.5 38.5 t38.5 57.5t14 70t-14 70.5t-38.5 58t-57.5 39t-70 14.5q-76 0 -129 -53t-53 -129zM1114 373q0 6 13.5 13t31 14.5t33.5 12.5t22 7q4 23 9.5 39t15.5 37q-4 4 -13 17t-18.5 27.5t-16.5 28t-7 17.5t18.5 23.5t43 41t47 40t28.5 24.5l8 4q4 0 16.5 -8.5t25.5 -19.5t25.5 -21.5 t16.5 -14.5q35 12 76 19q2 6 9 21.5t16.5 30.5t17.5 27.5t14 12.5q4 0 34 -7t63.5 -18.5t60.5 -23.5t27 -23q0 -23 -5.5 -47t-9.5 -47q16 -12 28.5 -26.5t22.5 -30.5q25 2 49.5 3t47.5 1q8 0 18 -26.5t17.5 -60.5t12.5 -64.5t5 -39.5q0 -6 -13.5 -13t-29.5 -13t-32.5 -12.5 t-22.5 -8.5q-9 -38 -23 -71q2 -6 11.5 -18.5t18.5 -27t16 -27.5t7 -18q0 -4 -18.5 -23.5t-43 -41t-47 -40.5t-28.5 -26l-8 -4q-4 0 -16.5 8.5t-25.5 19.5t-25.5 21.5t-16.5 14.5q-37 -12 -78 -19q-2 -6 -9 -21.5t-15.5 -30.5t-16.5 -27.5t-14 -12.5t-35 7.5t-62.5 18.5 t-60 23.5t-26.5 22.5q0 23 5 47.5t9 46.5q-16 12 -28.5 26.5t-22.5 30.5q-23 -2 -45.5 -3t-44.5 -1h-14.5t-8.5 11q-2 8 -8 35.5t-13.5 58t-12.5 55.5t-5 29zM1192 1264q0 6 12.5 12t29.5 10t33.5 6t22.5 4q10 33 31 64q-2 4 -8 17.5t-12.5 27.5t-11.5 25.5t-5 15.5 q0 6 21.5 22.5t49 35t51.5 32.5t28 14t13 -9t20.5 -21.5t20.5 -23.5t13 -15q14 4 28.5 6t29.5 0h14q2 4 11 16.5t18.5 25.5t17.5 23.5t12 10.5t30 -11.5t55.5 -26t53 -28.5t23.5 -20q0 -4 -4 -15.5t-8 -26t-8.5 -27.5t-6.5 -17q20 -25 39 -60q51 -4 74 -7t29 -18.5t5 -52 t3 -106.5q0 -6 -12.5 -12.5t-28.5 -10.5t-32.5 -6t-22.5 -4q-13 -36 -31 -63q2 -4 8 -16.5t13.5 -27t12.5 -26.5t5 -14q0 -6 -22.5 -23.5t-50 -36t-51.5 -33t-26 -14.5q-4 0 -14 9.5t-21.5 21.5t-20.5 23.5t-13 15.5q-14 -4 -28.5 -6t-29.5 0h-14q-4 -4 -12 -16.5t-17.5 -26 t-18.5 -23.5t-13 -10t-30 11t-54.5 25.5t-52 29t-23.5 20.5q0 2 3 14.5t8 26.5t9 27.5t6 17.5q-23 23 -38 59q-53 2 -75 5t-29 18.5t-5 52.5t-4 109zM1397 367q0 -49 34.5 -85t84.5 -36q49 0 84.5 34.5t35.5 86.5q0 49 -34.5 83.5t-85.5 34.5q-49 0 -84 -34.5t-35 -83.5z M1446 1206q0 -47 31.5 -78.5t76.5 -31.5q47 0 79 31.5t32 76.5q0 47 -31.5 79t-77.5 32q-47 0 -78.5 -32t-31.5 -77z" />
165
+ <glyph unicode="&#xf086;" horiz-adv-x="1916" d="M0 997q0 119 61.5 222.5t167 180.5t246.5 122t303 45t303.5 -45t247 -122t166.5 -180.5t61 -222.5q0 -117 -61 -221t-166.5 -181t-247 -122t-303.5 -45q-37 0 -73.5 3t-71.5 7q-147 -113 -336 -155q-20 -4 -40.5 -7.5t-43.5 -7.5q-12 -2 -21.5 6.5t-13.5 18.5v2 q-4 12 3 19.5t18 17.5q18 18 34.5 36.5t29.5 42t24.5 55.5t19.5 79q-141 78 -224 195.5t-83 256.5zM649 258q6 4 13.5 8t13.5 8q51 -6 102 -6q197 0 369 56.5t298 155t198.5 231.5t72.5 286q0 41 -6 84q96 -78 151.5 -175t55.5 -208q0 -139 -83 -256.5t-224 -195.5 q8 -47 19 -79t25.5 -55.5t30 -42t33.5 -36.5q10 -10 17.5 -18.5t3.5 -18.5v-2q-2 -12 -12.5 -19.5t-22.5 -5.5q-23 4 -43.5 7.5t-40.5 7.5q-96 20 -180 60t-156 95q-35 -4 -71.5 -7t-73.5 -3q-141 0 -265 35t-225 94z" />
166
+ <glyph unicode="&#xf087;" horiz-adv-x="1597" d="M0 193v643q0 49 35 83.5t84 34.5h348q27 14 43 30.5t35 39.5q16 20 32.5 38.5t34.5 37.5q33 35 76 68.5t66 74.5q16 29 23 64.5t12.5 71.5t12.5 70t23.5 60.5t47 42t81.5 15.5q61 0 111.5 -25.5t85.5 -68.5t54.5 -98.5t19.5 -112.5q0 -59 -17.5 -112.5t-42.5 -107.5 q35 2 70 4.5t70 2.5q55 0 107 -10.5t93 -35t66.5 -67.5t25.5 -109q0 -29 -5 -57t-15 -57q18 -43 18 -90q0 -78 -41 -142q10 -59 -7 -118.5t-58 -104.5q-4 -84 -45 -139.5t-102.5 -89t-135 -47t-143.5 -13.5q-72 0 -144.5 10.5t-142.5 28.5q-70 20 -139.5 43t-142.5 23h-375 q-49 0 -84 34.5t-35 84.5zM236 276q0 -35 22 -57t57 -22q33 0 56.5 22.5t23.5 56.5q0 33 -23.5 56.5t-56.5 23.5q-35 0 -57 -23.5t-22 -56.5zM492 193q70 0 136 -16.5t133.5 -35t141.5 -35t160 -16.5q45 0 98 6t99.5 26.5t78 56.5t31.5 95q0 10 -1 18.5t-3 18.5 q35 16 53.5 53t18.5 74q0 39 -21 68q60 49 60 123q0 23 -12.5 43t-26.5 35q16 29 28.5 57.5t12.5 62.5q0 35 -17.5 55.5t-43 31t-56.5 12.5t-57 2q-45 0 -90.5 -3t-90.5 -3q-31 0 -61.5 3t-58.5 15q0 41 16 78t35.5 74.5t35 78.5t15.5 91q0 33 -10.5 65.5t-29.5 59t-47 44 t-65 17.5h-11t-11 -2q-8 -4 -9 -8t-3 -13q-12 -59 -22.5 -123.5t-39.5 -117.5q-29 -51 -74 -88t-86 -78q-29 -31 -49 -56.5t-41.5 -48t-48.5 -42t-65 -35.5h-2v-643z" />
167
+ <glyph unicode="&#xf088;" horiz-adv-x="1597" d="M0 309q0 29 5 57.5t15 57.5q-18 43 -18 90q0 78 41 141q-10 59 7.5 119t58.5 105q4 84 45 139t102 89t135 47t144 13q72 0 144.5 -10t141.5 -29q70 -20 139.5 -42.5t143.5 -22.5h375q49 0 83.5 -35t34.5 -84v-643q0 -49 -34.5 -84t-83.5 -35h-349q-27 -14 -43 -30.5 t-34 -38.5q-16 -20 -32.5 -39t-35.5 -37q-33 -35 -76 -69t-65 -74q-25 -43 -31 -99.5t-18.5 -106.5t-44 -84t-107.5 -34q-61 0 -111.5 25.5t-85 68.5t-54 98.5t-19.5 112.5q0 59 17.5 112.5t41.5 106.5q-35 -2 -69.5 -4t-69.5 -2q-55 0 -107.5 10.5t-93.5 35t-66.5 67.5 t-25.5 108zM119 309q0 -35 17.5 -55.5t43 -30.5t56 -12t57.5 -2q47 0 91 3t89 3q31 0 61.5 -3t59.5 -15q0 -41 -16.5 -78t-36 -75t-34.5 -79t-15 -90q0 -33 10 -65.5t29.5 -59t47 -43t64.5 -16.5q4 0 11.5 -1t11.5 1q8 4 9 8l3 12q12 59 22.5 124t38.5 118q29 51 74 88 t86 78q29 31 49.5 56.5t42 48t47 42t66.5 35.5h2v643q-72 0 -137.5 16.5t-133 36t-141 36t-159.5 16.5q-45 0 -98.5 -7.5t-99.5 -27t-78 -56t-32 -96.5q0 -10 1 -18t3 -19q-35 -16 -53 -53t-18 -74q0 -39 20 -67q-59 -49 -59 -123q0 -23 12 -43.5t27 -34.5 q-16 -29 -28.5 -57.5t-12.5 -63.5zM1202 860q0 -33 23.5 -56.5t56.5 -23.5q35 0 57.5 23.5t22.5 56.5q0 35 -22.5 57.5t-57.5 22.5q-33 0 -56.5 -22.5t-23.5 -57.5z" />
168
+ <glyph unicode="&#xf089;" horiz-adv-x="837" d="M1 959.5q9 27.5 54 33.5l506 74l227 459q23 41 50 41v-1348l-453 -237q-41 -23 -64.5 -6.5t-15.5 63.5l86 504l-364 356q-35 33 -26 60.5z" />
169
+ <glyph unicode="&#xf08a;" horiz-adv-x="1802" d="M0 1073q0 137 43 231.5t112.5 153t156.5 84t177 25.5q63 0 125 -21.5t115 -53.5t97 -70t75 -68q31 31 76 68.5t98 69.5t113.5 53.5t126.5 21.5q88 0 175 -25.5t156.5 -84t112.5 -153t43 -231.5q0 -94 -34.5 -177t-76.5 -146.5t-79 -102.5t-39 -43l-615 -612 q-26 -23 -57 -23q-33 0 -55 23l-617 614q-4 2 -39.5 41t-77.5 102.5t-77 146.5t-35 177zM160 1073q0 -68 27.5 -131t61.5 -112.5t63 -79.5l28 -29l561 -559l561 559l29 29q29 30 62.5 79.5t61 113t27.5 130.5q0 104 -29.5 169t-77.5 101.5t-106.5 50t-113.5 13.5 q-53 0 -107.5 -25.5t-102.5 -61.5t-86 -74t-56 -60q-25 -31 -62 -31t-61 31q-18 23 -56.5 60.5t-86.5 73.5t-102.5 61.5t-105.5 25.5q-57 0 -115.5 -13.5t-106.5 -50t-77.5 -101t-29.5 -169.5z" />
170
+ <glyph unicode="&#xf08b;" horiz-adv-x="1689" d="M0 307v922q0 63 24.5 118.5t66.5 97.5t97.5 66.5t118.5 24.5h461v-193h-461q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h461v-193h-461q-63 0 -118.5 24.5t-97.5 66.5t-66.5 97.5t-24.5 118.5zM508 584v368q0 33 22.5 54.5t55.5 21.5h428v293 q0 41 39 57q39 14 65 -14l553 -553q18 -18 18.5 -44t-18.5 -42l-553 -553q-18 -18 -43 -18q-10 0 -22 4q-39 16 -39 57v291h-428q-33 0 -55.5 22.5t-22.5 55.5z" />
171
+ <glyph unicode="&#xf08c;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-1150q-80 0 -136.5 56.5t-56.5 136.5zM207 1192q0 -57 40 -97t95 -40q57 0 97 40t40 97q0 55 -40 95t-97 40q-55 0 -95 -40 t-40 -95zM213 240q0 -10 9 -19.5t20 -9.5h200q12 0 20.5 9t8.5 20v706q0 29 -29 29h-200q-10 0 -19.5 -8.5t-9.5 -20.5v-706zM580 240q0 -10 9 -19.5t19 -9.5h201q12 0 20.5 9t8.5 20v383q0 68 26.5 113.5t102.5 45.5q59 0 79.5 -28.5t20.5 -81.5v-432q0 -10 8 -19.5 t21 -9.5h204q10 0 19.5 9t9.5 20v477q0 141 -81 208.5t-216 67.5q-55 0 -107.5 -15t-93.5 -56q0 16 -3 34.5t-25 18.5h-195q-10 0 -19 -8.5t-9 -20.5v-706z" />
172
+ <glyph unicode="&#xf08d;" horiz-adv-x="1916" d="M2 950q8 82 45 172t100 176t139 147.5t152 92.5t145.5 30t121.5 -40q53 -41 73.5 -107.5t12.5 -148.5l301 -225q111 63 215 73t180 -47q55 -41 80.5 -108.5t23.5 -150.5t-30.5 -177t-83.5 -188l428 -410q25 -25 4 -53q-12 -16 -33 -17q-10 0 -18 6l-517 293 q-74 -80 -155.5 -135t-161.5 -80.5t-151.5 -19.5t-127.5 47q-76 55 -95 158.5t9 228.5l-303 223q-76 -33 -145.5 -32t-122.5 40q-51 39 -72.5 104.5t-13.5 147.5zM171 858.5q3 -16.5 15 -27.5q21 -14 50 -14q31 0 65.5 17.5t71.5 46t72.5 66.5t66.5 79q10 14 7 30.5 t-15 26.5q-14 10 -30.5 8.5t-27.5 -16.5q-78 -104 -138 -143t-72 -35q-14 10 -31 7t-27 -15q-10 -14 -7 -30.5zM465 754l364 -271q8 -8 23 -8q20 0 33 17q10 14 8 29.5t-16 25.5l-347 258q-16 -14 -32.5 -27.5t-32.5 -23.5zM829.5 239.5q1.5 -16.5 16.5 -26.5q29 -23 69 -23 q41 0 88.5 21.5t95.5 57.5t94 84.5t87 101.5q10 12 8 28.5t-16 26.5q-12 10 -28.5 8t-26.5 -16q-51 -68 -102.5 -116t-95.5 -75.5t-78 -36t-48 4.5q-14 10 -29.5 7t-25.5 -18q-10 -12 -8.5 -28.5z" />
173
+ <glyph unicode="&#xf08e;" d="M0 307v922q0 63 24.5 119.5t65.5 97.5t97.5 65.5t119.5 24.5h582q-2 -14 -4 -27.5t-2 -29.5v-88q0 -23 6 -48h-582q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h1075q47 0 81 33.5t34 80.5v340q41 -31 90 -49t103 -20v-271q0 -63 -25 -118.5 t-67 -97.5t-97 -66.5t-119 -24.5h-1075q-63 0 -119.5 24.5t-97.5 66.5t-65.5 97.5t-24.5 118.5zM692.5 522q-0.5 25 16.5 41l770 772h-269q-25 0 -41 16.5t-16 41.5v86q-2 23 15.5 40t41.5 17h576q23 0 40 -17.5t17 -39.5v-86v-490q0 -25 -17.5 -42t-39.5 -15h-86 q-25 0 -41.5 16.5t-16.5 40.5v268l-772 -770q-16 -16 -40.5 -16t-41.5 16l-79 80q-16 16 -16.5 41z" />
174
+ <glyph unicode="&#xf090;" horiz-adv-x="1689" d="M0 584v368q0 33 22.5 54.5t55.5 21.5h428v293q0 41 37 57q39 14 67 -14l553 -553q16 -18 16.5 -44t-16.5 -42l-553 -553q-18 -18 -43 -18q-8 0 -24 4q-37 16 -37 57v291h-428q-33 0 -55.5 22.5t-22.5 55.5zM922 0v193h460q47 0 81 33.5t34 80.5v922q0 47 -33.5 80.5 t-81.5 33.5h-460v193h460q63 0 118.5 -24.5t97.5 -65.5t67 -97.5t25 -119.5v-922q0 -63 -25 -118.5t-67 -97.5t-97 -66.5t-119 -24.5h-460z" />
175
+ <glyph unicode="&#xf091;" horiz-adv-x="1689" d="M0 1042v187q0 33 22.5 54.5t55.5 21.5h323q-2 12 -2 25v24v4q0 53 4.5 88t15.5 54.5t31.5 27.5t55.5 8h678q33 0 54.5 -8t32.5 -27.5t15 -54.5t4 -88v-25.5t-2 -27.5h324q33 0 55.5 -21.5t22.5 -54.5v-187q0 -63 -45.5 -130.5t-122 -128t-180 -106.5t-222.5 -65 q-51 -10 -91 -41.5t-40 -70.5q0 -35 17.5 -51.5t39 -31t40 -31.5t22.5 -52q4 -23 -2 -47q-4 -14 23.5 -23.5t67.5 -18.5t82 -22.5t64 -34.5q12 -10 19.5 -39.5t9.5 -64.5q2 -33 -6 -58.5t-29 -25.5h-985q-20 0 -28.5 25.5t-6.5 58.5q2 35 9.5 64.5t19.5 39.5q23 20 64 34 t80.5 23t68.5 18t25 24q-4 14 -4 25.5v21.5q2 35 21.5 52t42 31.5t39.5 31t17 51.5q0 39 -39.5 70.5t-93.5 41.5q-117 20 -220 66.5t-180 106t-122 127t-45 130.5zM154 1042q0 -20 23.5 -54t67.5 -70.5t106.5 -71.5t140.5 -60q-25 80 -44.5 175.5t-33.5 189.5h-260v-109z M1198 786q78 25 140.5 60t106.5 71.5t67.5 70.5t23.5 54v109h-262q-12 -94 -31.5 -189.5t-44.5 -175.5z" />
176
+ <glyph unicode="&#xf092;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-337v25q0 39 2 97t-3.5 115.5t-24.5 104.5t-65 66q188 20 290 110t102 287q0 66 -22.5 128t-67.5 114q6 23 8 45t2 45 q0 41 -9.5 91t-31.5 85h-12q-43 2 -79 -8.5t-68 -27.5t-62.5 -37.5t-65.5 -39.5q-33 4 -65.5 6t-65.5 2t-65.5 -2t-65.5 -6q-35 18 -65.5 39t-62.5 38t-67.5 27.5t-79.5 8.5h-12q-23 -35 -32 -85t-9 -91q0 -23 2 -45.5t8 -44.5q-45 -51 -66.5 -114t-21.5 -128 q0 -193 95.5 -283t281.5 -112q-39 -16 -59.5 -50t-32.5 -75q-27 -8 -49.5 -15.5t-50.5 -7.5q-55 0 -88 28.5t-59.5 62.5t-56.5 62.5t-79 28.5q-4 0 -20.5 -2t-16.5 -12q0 -23 19.5 -32t31.5 -19q39 -31 56.5 -71t39 -76.5t62.5 -62.5t127 -26q35 0 80 11q0 -10 -1 -18.5 t-1 -16.5q0 -29 2 -59.5t-2 -59.5h-317q-80 0 -136.5 56.5t-56.5 136.5z" />
177
+ <glyph unicode="&#xf093;" d="M0 39v614q0 16 11.5 27.5t27.5 11.5h229q16 0 27.5 -11t11.5 -28v-346h1229v346q0 16 11.5 27.5t27.5 11.5h229q16 0 27.5 -11t11.5 -28v-614q0 -39 -39 -39h-1765q-39 0 -39 39zM346 969.5q-6 15.5 16 38.5l504 505q23 23 55.5 23t55.5 -23l506 -505q23 -23 15.5 -38.5 t-38.5 -15.5h-307v-499q0 -33 -22.5 -55.5t-55.5 -22.5h-307q-33 0 -54.5 22.5t-21.5 55.5v499h-307q-33 0 -39 15.5z" />
178
+ <glyph unicode="&#xf094;" horiz-adv-x="1609" d="M2 514q-2 35 1 68.5t7 74.5q4 35 7 72t10 66q14 66 30.5 128t44.5 117q20 41 45 81t54 79q10 14 21 24.5t24 20.5q23 23 45 45.5t49 42.5t57.5 36.5t65.5 33.5q33 16 67.5 29.5t71.5 27.5q70 29 156 51l2 2q45 12 85 17.5t79 5.5q59 0 112.5 -9t106.5 -20q41 -8 85 -15 t93 -7h2q29 0 62.5 5t66.5 5q25 0 45.5 -6t32.5 -25q23 -31 26 -71.5t-2 -75.5q-4 -35 -8 -71t2 -72q4 -23 11.5 -39.5t15.5 -36.5q8 -18 11 -40t7 -42q18 -104 15.5 -195.5t-23 -170.5t-56.5 -148.5t-81 -132.5q-37 -49 -79 -97.5t-92 -91.5t-110.5 -77.5t-134.5 -59.5 q-76 -27 -158.5 -34t-158.5 -11h-31q-104 0 -194.5 16.5t-192.5 16.5h-4q-35 0 -77 -10.5t-83 -12.5h-2q-37 0 -65.5 17.5t-42.5 42.5q-20 35 -17.5 72.5t12.5 68.5t10.5 66.5t-5 75.5t-12.5 81t-9 82z" />
179
+ <glyph unicode="&#xf095;" horiz-adv-x="1597" d="M0 1169q0 55 14.5 114.5t43 114t68.5 98.5t93 69q12 -2 26.5 0t26.5 2q10 0 30 -1l40 -2t38.5 -4.5t27.5 -7.5q8 -6 15 -18t12 -26.5t9.5 -30t8.5 -25.5q6 -18 23.5 -65.5t35.5 -97.5t32.5 -93t14.5 -53q0 -37 -24.5 -68t-54 -57.5t-54.5 -50t-25 -45.5q0 -20 16.5 -49 t26.5 -46q84 -145 188.5 -248.5t252.5 -187.5q18 -10 45.5 -27.5t50.5 -17.5t52.5 32t60 70.5t62 70.5t58.5 32q10 0 51.5 -22.5t89.5 -50t93 -55.5t61 -36q16 -10 46 -25.5t40 -35.5q2 -6 2 -23q0 -16 -3 -36.5t-8 -43t-12 -43t-13 -35.5q-18 -39 -59.5 -71.5t-92.5 -55 t-104.5 -36t-92.5 -13.5q-80 0 -153.5 25.5t-145.5 54.5q-123 45 -232.5 118t-203.5 164t-175 196.5t-144 215.5q-25 41 -52.5 95.5t-51 112t-39 113.5t-15.5 105z" />
180
+ <glyph unicode="&#xf096;" d="M0 307v922q0 63 24.5 118.5t66.5 97.5t97.5 66.5t118.5 24.5h1075q63 0 118.5 -24.5t97.5 -66.5t67 -97.5t25 -118.5v-922q0 -63 -25 -118.5t-67 -97.5t-97 -66.5t-119 -24.5h-1075q-63 0 -118.5 24.5t-97.5 66.5t-66.5 97.5t-24.5 118.5zM193 307q0 -47 33.5 -80.5 t80.5 -33.5h1075q47 0 81 33.5t34 80.5v922q0 47 -34 80.5t-81 33.5h-1075q-47 0 -80.5 -33.5t-33.5 -80.5v-922z" />
181
+ <glyph unicode="&#xf097;" horiz-adv-x="1253" d="M0 84v1337q0 47 34 81t81 34h1024q47 0 80.5 -34t33.5 -81v-1337q0 -47 -33.5 -81t-80.5 -34t-80 33l-432 432l-432 -432q-33 -33 -80 -33t-81 34t-34 81zM158 186l469 471l469 -471v1194h-938v-1194z" />
182
+ <glyph unicode="&#xf098;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-1150q-80 0 -136.5 56.5t-56.5 136.5zM193 1040q2 -35 15 -76.5t30 -78.5q16 -37 33.5 -72t33.5 -63q74 -129 176.5 -241 t225.5 -190q31 -18 67.5 -36.5t75.5 -32.5q41 -16 83 -31.5t81 -21.5q63 -10 112.5 2t90.5 34q27 12 57.5 33.5t44.5 52.5q4 8 9 27t9 38t6.5 37.5t-2.5 29.5q-4 12 -24.5 22t-36.5 21q-43 25 -71.5 41t-67.5 38q-16 10 -36 23.5t-38 13.5q-23 0 -46.5 -27.5t-37.5 -43.5 q-12 -14 -36.5 -43t-47.5 -31q-14 -2 -32.5 10t-37.5 23q-106 59 -182 136t-135 177q-10 16 -21.5 37.5t-7.5 38.5q2 18 24.5 33.5t35.5 29.5q14 16 31.5 37t19.5 43q4 16 -5 38t-16 42q-16 43 -28.5 76t-26.5 76q-6 16 -12 40.5t-21 30.5q-8 4 -26.5 7t-39 4.5t-37.5 0 t-24 -1.5h-8q-33 -16 -62.5 -45.5t-51 -69.5t-34 -88t-9.5 -100z" />
183
+ <glyph unicode="&#xf099;" d="M0 399q0 20 13.5 33.5t33.5 13.5q14 0 31 -12q123 -109 287 -108q59 0 117.5 15t107.5 48q-29 16 -47.5 42t-18.5 58q0 23 8 39q-18 6 -44.5 20.5t-51 34t-41 43t-16.5 46.5q0 16 10 28.5t25 22.5q-41 25 -76 74t-35 98q0 33 33 43q-35 35 -55.5 81t-20.5 95 q0 23 9.5 41.5t37.5 18.5q18 0 84 -27t142.5 -60.5t146.5 -67.5t98 -48q25 -14 47.5 -31.5t44.5 -36.5q20 51 47 106.5t60 106.5t73 96t89 74q8 6 24 6q18 0 27 -8q16 6 41.5 13.5t42.5 7.5q29 0 43 -27q31 0 56.5 -15.5t25.5 -50.5q0 -31 -27 -53q96 -43 159.5 -125 t90.5 -182q6 -2 23 -2q47 0 88 16.5t57 16.5q18 0 31.5 -14.5t13.5 -32.5q0 -23 -19.5 -48.5t-33.5 -39.5q23 4 42 -7.5t19 -38.5q0 -29 -26.5 -50t-61.5 -37.5t-72.5 -25.5t-58.5 -11q-43 -139 -133 -246t-210 -178.5t-258 -109.5t-275 -38q-219 0 -415 93.5t-325 273.5 q-8 16 -8 26z" />
184
+ <glyph unicode="&#xf09a;" horiz-adv-x="790" d="M0 862v203q0 16 11.5 28.5t27.5 12.5h125v102q0 358 366 359q123 0 232 -31q33 -10 29 -43l-27 -199q-4 -16 -16 -26q-16 -10 -31 -6q-35 8 -72.5 12t-66.5 4q-53 0 -65.5 -16.5t-12.5 -67.5v-88h223q14 0 29 -14q10 -10 10 -29l-17 -205q0 -16 -11 -25.5t-27 -9.5h-207 v-784q0 -16 -11.5 -27.5t-27.5 -11.5h-258q-16 0 -27.5 11.5t-11.5 27.5v784h-125q-16 0 -27.5 11.5t-11.5 27.5z" />
185
+ <glyph unicode="&#xf09b;" horiz-adv-x="1847" d="M0 743q0 115 37 222.5t113 193.5l-3 4l3 2q-16 39 -21.5 81t-5.5 85q0 25 2 56.5t8 65.5t15.5 63.5t23.5 50.5h8q61 0 110.5 -12.5t94.5 -35t87 -52t91 -60.5q86 25 178.5 33t182.5 8t182 -8t180 -33q47 31 90 60.5t87 52t93.5 35t110.5 12.5h10q12 -20 21.5 -50 t15.5 -64t9 -65.5t3 -56.5q0 -43 -6 -85t-20 -81v-2l-2 -4q76 -86 112.5 -193.5t36.5 -222.5q0 -233 -66.5 -383.5t-188.5 -236.5t-292 -120t-376 -34q-207 0 -378 34t-292 120t-187.5 236.5t-66.5 383.5zM250 483q0 -145 64.5 -224t165 -116t219 -43t227.5 -6q74 0 152.5 2 t153.5 12.5t142.5 34t117.5 67.5t80 111.5t30 165.5q0 84 -27 147.5t-75 106.5t-114.5 64.5t-146.5 21.5q-78 0 -156.5 -7t-156.5 -7t-157 7t-157 7q-162 0 -262 -87t-100 -257zM494 524q0 66 26.5 113t65.5 47t66.5 -47t27.5 -113t-27.5 -112.5t-66.5 -46.5t-65.5 46.5 t-26.5 112.5zM795 258q-6 16 12 25q16 6 24 -13q27 -76 93 -75q31 0 56.5 20.5t35.5 54.5q8 20 26 13q16 -6 13 -25q-16 -47 -51 -75.5t-80 -28.5q-43 0 -78 28.5t-51 75.5zM864 369q0 -12 17.5 -21.5t42.5 -9.5t42 9.5t17 21.5t-17.5 21t-41.5 9q-25 0 -42.5 -9t-17.5 -21z M1167 524q0 -66 28 -112.5t67 -46.5t65.5 46.5t26.5 112.5t-27 113t-65 47q-39 0 -67 -47t-28 -113z" />
186
+ <glyph unicode="&#xf09c;" horiz-adv-x="1880" d="M0 117v626q0 49 35 84t82 35h665v156q0 113 43 213t118 175t175 118t213 43t213.5 -43t175 -118t117.5 -175.5t43 -212.5v-152q0 -33 -22.5 -55.5t-55.5 -22.5h-80q-33 0 -55 23t-22 55v152q0 66 -25 123t-67 99t-99 66.5t-123 24.5t-122 -24.5t-99 -66.5t-67.5 -99.5 t-24.5 -122.5v-156h119q47 0 81.5 -34.5t34.5 -84.5v-626q0 -47 -34.5 -82t-81.5 -35h-1020q-47 0 -82 35t-35 82zM494 164h266l-66 285q29 18 47.5 48.5t18.5 65.5q0 55 -39 95t-94 40t-94 -40t-39 -95q0 -35 18 -65.5t47 -46.5z" />
187
+ <glyph unicode="&#xf09d;" d="M0 154v1228q0 63 45 108.5t109 45.5h1536q63 0 108 -45t45 -109v-1228q0 -63 -45 -108.5t-108 -45.5h-1536q-63 0 -108.5 45t-45.5 109zM154 154h1536v575h-1536v-575zM154 1114h1536v268h-1536v-268zM260 250v115h307v-115h-307zM676 250v115h446v-115h-446z" />
188
+ <glyph unicode="&#xf09e;" horiz-adv-x="1566" d="M0 236q0 49 18.5 91t50 74.5t75 51t92.5 18.5t91 -18.5t74.5 -51t51 -74.5t18.5 -91t-18.5 -92.5t-51 -75t-74.5 -50t-91 -18.5t-92.5 18.5t-75 50t-50 74.5t-18.5 93zM0 819v158q0 35 25 57q23 23 53 23q2 0 3 -1t3 -1q193 -14 362.5 -95t301 -212.5t212 -301.5 t95.5 -362q4 -35 -21 -59q-23 -25 -57 -25h-158q-29 0 -51.5 20.5t-26.5 51.5q-12 133 -68.5 249.5t-145.5 205.5t-205.5 145.5t-249.5 68.5q-31 4 -51.5 27t-20.5 51zM0 1331v158q0 33 25 55q23 23 53 23h4q301 -16 565 -137t463 -320t319.5 -463t137.5 -565q4 -31 -23 -57 q-23 -25 -55 -25h-158q-31 0 -53.5 21.5t-24.5 52.5q-14 238 -110 446.5t-255 367.5t-368 255t-446 110q-31 2 -52.5 24.5t-21.5 53.5z" />
189
+ <glyph unicode="&#xf0a0;" d="M0 193v382q0 23 6 45.5t12 45.5l238 727q20 63 75.5 103t121.5 40h938q66 0 121 -40t75 -103l238 -727q6 -23 12 -45.5t6 -45.5v-382q0 -41 -15.5 -76t-41 -60.5t-61 -41t-74.5 -15.5h-1458q-80 0 -136.5 56.5t-56.5 136.5zM154 193q0 -16 11 -27.5t28 -11.5h1458 q16 0 27.5 11t11.5 28v382q0 16 -11.5 27.5t-27.5 11.5h-1458q-16 0 -27.5 -11t-11.5 -28v-382zM213 768h1417l-188 578q-4 16 -19.5 26t-31.5 10h-938q-16 0 -31.5 -10t-20.5 -26zM1057 385q0 39 27.5 66.5t68.5 27.5q39 0 66.5 -27.5t27.5 -66.5q0 -41 -27.5 -68.5 t-66.5 -27.5q-41 0 -68.5 27.5t-27.5 68.5zM1364 385q0 39 27.5 66.5t68.5 27.5q39 0 66.5 -27.5t27.5 -66.5q0 -41 -27.5 -68.5t-66.5 -27.5q-41 0 -68.5 27.5t-27.5 68.5z" />
190
+ <glyph unicode="&#xf0a1;" d="M0 754v229q0 63 45 108.5t109 45.5h499q115 0 245 33.5t255 90t235.5 128t186.5 147.5q63 0 108.5 -45t45.5 -109v-368q49 -12 81.5 -52.5t32.5 -93.5t-32.5 -93t-81.5 -52v-369q0 -63 -45.5 -108t-108.5 -45q-68 68 -164 132t-206.5 117.5t-227.5 91.5t-227 50 q-43 -12 -70 -40t-37 -62.5t-2 -70.5t37 -65q-25 -41 -23 -75.5t20.5 -66.5t49.5 -61.5t66 -58.5q-20 -43 -69.5 -65.5t-106 -25.5t-110.5 10.5t-85 43.5q-18 61 -40 125t-36 130.5t-14 138t24 151.5h-200q-63 0 -108.5 45t-45.5 109zM807 741q102 -16 206.5 -49t205 -78 t191.5 -99t165 -112v930q-76 -59 -166 -113.5t-190.5 -98.5t-205 -77.5t-206.5 -48.5v-254z" />
191
+ <glyph unicode="&#xf0a2;" horiz-adv-x="1759" d="M0 317q104 78 172 172.5t109 201t60 224t28 240.5q6 84 56 159t126 131t163 89t167 33q74 0 163 -33t165.5 -88t129 -129t52.5 -158q6 -121 27.5 -239.5t63.5 -227t109.5 -204t167.5 -171.5q-4 -70 -56 -114.5t-120 -44.5h-469q-18 -82 -82.5 -135.5t-150.5 -53.5 t-151.5 53.5t-84.5 135.5h-469q-68 0 -120 45t-56 114zM238 317h1284q-78 86 -129.5 183.5t-84 202t-50 214t-25.5 222.5q-4 55 -41 104t-89 86t-111.5 57.5t-110.5 20.5q-47 0 -107.5 -21.5t-114 -56.5t-91.5 -83t-40 -99q-6 -111 -23.5 -222.5t-51 -218t-87 -205 t-128.5 -184.5zM713 209q0 -70 49 -119t119 -49q18 0 18 20t-18 21q-53 0 -91 37t-38 90q0 20 -19 20q-20 0 -20 -20z" />
192
+ <glyph unicode="&#xf0a3;" horiz-adv-x="1597" d="M0 573q0 33 23 56l143 139l-143 139q-23 23 -23 56q0 25 16.5 45t40.5 26l195 49q-6 18 -15.5 48t-18.5 61t-16 59.5t-7 46.5q0 31 21.5 52.5t51.5 21.5q18 0 47 -7t60 -16.5t60.5 -18.5t47.5 -15l49 194q6 25 27 41.5t45 16.5q35 0 53 -23l142 -143l139 143q23 23 53 23 q27 0 47.5 -15.5t26.5 -42.5l49 -194q18 6 48 15t60.5 18.5t59.5 16.5t47 7q29 0 51.5 -21.5t22.5 -52.5q0 -18 -7 -46.5t-16.5 -59.5t-18.5 -60.5t-15 -48.5l194 -49q25 -6 41 -26.5t16 -44.5q0 -33 -22 -56l-145 -139l145 -139q23 -23 22 -56q0 -25 -16 -45t-41 -26 l-194 -49q6 -18 15 -48t18.5 -61t16.5 -59.5t7 -46.5q0 -29 -21.5 -51.5t-52.5 -22.5q-18 0 -47 7t-59.5 16.5t-60 18.5t-48.5 15l-49 -194q-6 -25 -26.5 -41.5t-45.5 -16.5q-33 0 -55 23l-139 143l-142 -143q-18 -23 -53 -23q-25 0 -45 16.5t-27 41.5l-49 194 q-18 -6 -47.5 -15t-60.5 -18.5t-59.5 -16.5t-47.5 -7q-31 0 -52 22.5t-21 51.5q0 18 7 46.5t16 59.5t18.5 60.5t15.5 48.5l-195 49q-25 6 -41 26.5t-16 44.5z" />
193
+ <glyph unicode="&#xf0a4;" horiz-adv-x="1916" d="M0 193v643q0 49 35 83.5t84 34.5h348q27 14 42 30.5t34 39.5q16 20 33.5 38.5t33.5 37.5q35 35 77 68.5t65 74.5q25 43 29.5 99.5t17 106.5t44 84t109.5 34q61 0 111.5 -25.5t85.5 -68.5t54.5 -98.5t19.5 -112.5q0 -53 -15.5 -104.5t-38.5 -98.5h134l376 -2 q49 0 93.5 -17.5t76 -49.5t50 -75t18.5 -94q0 -49 -18.5 -92t-50 -74.5t-75.5 -49t-94 -17.5h-200q-10 -59 -39 -107q10 -59 -7.5 -117.5t-56.5 -103.5q0 -76 -28.5 -131t-75.5 -90t-109.5 -52.5t-132.5 -17.5q-78 0 -148.5 16.5t-136 36t-128 36t-123.5 16.5h-375 q-49 0 -84 34.5t-35 84.5zM233 276q0 -35 22.5 -57t57.5 -22q33 0 56.5 22.5t23.5 56.5q0 33 -23.5 56.5t-56.5 23.5q-35 0 -57.5 -23.5t-22.5 -56.5zM489 193q70 0 136.5 -16.5t133 -35t133 -35t138.5 -16.5q43 0 84 8t72 27.5t50 52.5t19 82q0 14 -1 26.5t-3 24.5 q35 16 53.5 53t18.5 74q0 39 -20 68q59 49 59 123q0 23 -12.5 43.5t-26.5 34.5q90 0 178 1t178 1q51 0 84 30.5t33 81.5q0 53 -32.5 85t-84.5 32q-172 0 -340 1t-338 1q0 41 16.5 78t35 74.5t34 78.5t15.5 91q0 33 -10.5 65.5t-29 59t-46 44t-64.5 17.5h-11t-11 -2 q-8 -4 -9 -8t-3 -13q-12 -59 -22.5 -123.5t-39.5 -117.5q-29 -51 -73 -88t-85 -78q-29 -31 -49 -56.5t-41.5 -48t-48.5 -42t-65 -35.5h-5v-643z" />
194
+ <glyph unicode="&#xf0a5;" horiz-adv-x="1916" d="M0 821q0 51 18.5 94t50 75t75.5 49.5t94 17.5l376 2h134q-23 47 -38.5 98t-15.5 105q0 57 19.5 112.5t54.5 98.5t85 68.5t112 25.5q78 0 109.5 -34t43.5 -84t17.5 -106.5t29.5 -99.5q23 -41 65 -74.5t77 -68.5q16 -18 33.5 -37t33.5 -39q18 -23 33.5 -39t42.5 -31h348 q49 0 84 -34.5t35 -83.5v-643q0 -49 -35 -84t-84 -35h-375q-61 0 -123.5 -16.5t-128 -36t-136 -36t-148.5 -16.5q-70 0 -132.5 17.5t-109.5 52.5t-75.5 90t-28.5 131q-39 45 -56.5 103.5t-7.5 117.5q-29 47 -39 107h-200q-49 0 -93.5 17.5t-76 49t-50 74.5t-18.5 92z M121 821q0 -51 32.5 -81.5t84.5 -30.5q90 0 178 -1t178 -1q-14 -14 -26.5 -35t-12.5 -43q0 -74 59 -123q-20 -29 -20 -68q0 -37 18.5 -73.5t53.5 -53.5q-2 -12 -3 -24.5t-1 -26.5q0 -49 19 -82t50 -52.5t72 -27.5t84 -8q70 0 137.5 16.5t134 35t133 35t135.5 16.5v643h-4 q-41 16 -66.5 35.5t-47 42t-42 48t-48.5 56.5q-41 41 -85 78t-73 88q-29 53 -39 117.5t-23 123.5q-2 8 -3 12.5t-9 8.5q-4 2 -11 2h-11q-37 0 -65 -17.5t-46 -44t-28.5 -59.5t-10.5 -65q0 -49 15.5 -90.5t34 -79t34.5 -74.5t16 -78q-170 0 -337.5 -1t-339.5 -1 q-51 0 -84 -32t-33 -85zM1524 276q0 -35 23.5 -57t56.5 -22q35 0 57 22.5t22 56.5q0 33 -22.5 56.5t-56.5 23.5q-33 0 -56.5 -23.5t-23.5 -56.5z" />
195
+ <glyph unicode="&#xf0a6;" horiz-adv-x="1597" d="M0 602q0 61 25.5 111.5t68.5 85.5t98.5 54t112.5 19q53 0 104.5 -15t98.5 -38v133l2 377q0 49 17.5 93t49 76t74.5 50.5t94 18.5q49 0 92.5 -18.5t75 -50.5t49 -76t17.5 -93v-201q59 -10 106 -38q59 10 118 -7.5t104 -56.5q76 0 131 -28.5t90 -76t52 -109.5t17 -132 q0 -78 -16 -148.5t-35.5 -136t-36 -128t-16.5 -124.5v-374q0 -49 -35 -84t-84 -35h-643q-49 0 -84 34.5t-35 84.5v348q-14 27 -30.5 42t-38.5 34q-20 16 -39 33.5t-37 33.5q-35 35 -68.5 77t-74.5 64q-43 25 -99.5 30t-106.5 17.5t-84 44t-34 109.5zM120 591q-1 -7 1 -11 q4 -8 8 -9.5t12 -3.5q59 -12 124 -22t118 -39q51 -29 88 -73t78 -85q31 -29 56.5 -49t48 -41.5t42 -48.5t35.5 -66v-4h643q0 70 16.5 136.5t35 133t35 133t16.5 138.5q0 43 -8.5 84t-28 71.5t-52 50t-81.5 19.5q-14 0 -26.5 -1t-25.5 -3q-16 35 -53 53.5t-74 18.5 q-39 0 -67 -21q-49 59 -123 60q-23 0 -43.5 -12.5t-34.5 -26.5q0 90 -1 178t-1 178q0 51 -30.5 84t-82.5 33q-53 0 -84.5 -33t-31.5 -84q0 -172 -1 -340t-1 -338q-41 0 -78 16.5t-75 35t-79 34t-90 15.5q-33 0 -65.5 -10.5t-59 -29t-43 -46t-16.5 -64.5q0 -4 -1 -11z M1210 -37q0 -35 23.5 -57.5t56.5 -22.5q35 0 57.5 22.5t22.5 57.5q0 33 -22.5 56.5t-57.5 23.5q-33 0 -56.5 -23.5t-23.5 -56.5z" />
196
+ <glyph unicode="&#xf0a7;" horiz-adv-x="1597" d="M0 584q0 78 34 109.5t84 44t106.5 17.5t99.5 29q41 23 74.5 65t68.5 77q18 16 36.5 33.5t39.5 33.5q23 18 39 33.5t30 42.5v348q0 49 35 84t84 35h643q49 0 84 -35t35 -84v-375q0 -61 16.5 -123.5t36 -128t35.5 -136t16 -148.5q0 -70 -17 -132.5t-52 -109.5t-90.5 -75.5 t-130.5 -28.5q-45 -39 -103.5 -56.5t-118.5 -7.5q-47 -29 -106 -39v-200q0 -49 -17.5 -93.5t-49 -76t-74.5 -50t-93 -18.5q-51 0 -94 18.5t-74.5 50t-49 75.5t-17.5 94l-2 376v134q-47 -23 -98.5 -38.5t-104.5 -15.5q-57 0 -112.5 19.5t-98.5 54.5t-68.5 85t-25.5 112z M120 595q1 -7 1 -11q0 -37 16.5 -64.5t43 -46t59 -29t65.5 -10.5q49 0 90 15.5t79 34t75 35t78 16.5q0 -170 1 -338t1 -340q0 -51 31.5 -84t84.5 -33q51 0 82 32.5t31 84.5q0 90 1 178t1 178q14 -14 34.5 -26.5t43.5 -12.5q74 0 123 59q29 -20 67 -20q37 0 74 18.5t53 53.5 q12 -2 24.5 -3t27.5 -1q49 0 81.5 19t52 50t28 72t8.5 84q0 70 -16.5 137.5t-35 134t-35 133t-16.5 136.5h-643v-5q-16 -41 -35.5 -66.5t-42 -47t-48 -42t-56.5 -48.5q-41 -41 -78 -85t-88 -73q-53 -29 -117.5 -39t-124.5 -23l-12 -3t-8 -9q-2 -4 -1 -11zM1210 1223 q0 -33 23.5 -56.5t56.5 -23.5q35 0 57.5 23.5t22.5 56.5q0 35 -22.5 57.5t-57.5 22.5q-33 0 -56.5 -23t-23.5 -57z" />
197
+ <glyph unicode="&#xf0a8;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -29 20 -49l490 -490q20 -20 48.5 -20t49.5 20l74 74q20 20 20 48 t-20 50l-246 246h612q29 0 49.5 19.5t20.5 48.5v104q0 29 -20.5 49.5t-49.5 20.5h-612l246 246q20 20 20 48.5t-20 49.5l-74 74q-20 20 -48 20t-50 -20l-490 -490q-20 -20 -20 -49z" />
198
+ <glyph unicode="&#xf0a9;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 717q0 -29 20.5 -49.5t48.5 -20.5h613l-246 -246q-20 -20 -20.5 -48.5 t20.5 -49.5l74 -74q20 -20 47.5 -20t50.5 20l489 490q20 20 20.5 49t-20.5 49l-489 490q-20 20 -49 20t-49 -20l-74 -74q-20 -20 -20.5 -48t20.5 -50l246 -246h-613q-29 0 -49 -19.5t-20 -48.5v-104z" />
199
+ <glyph unicode="&#xf0aa;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -29 20 -49l74 -74q20 -20 48 -20t50 20l246 246v-612q0 -29 19.5 -49.5 t47.5 -20.5h105q29 0 49.5 20.5t20.5 49.5v612l245 -246q20 -20 49 -20t50 20l73 74q20 20 20.5 48t-20.5 50l-489 490q-20 20 -49 20t-49 -20l-490 -490q-20 -20 -20 -49z" />
200
+ <glyph unicode="&#xf0ab;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 769q0 -28 20 -50l490 -490q20 -20 48.5 -20t49.5 20l489 490q20 20 20.5 49 t-20.5 49l-73 74q-20 20 -48 20t-51 -20l-245 -246v612q0 29 -19.5 49.5t-48.5 20.5h-104q-29 0 -49.5 -20.5t-20.5 -49.5v-612l-246 246q-20 20 -49 20t-49 -20l-74 -74q-20 -20 -20 -48z" />
201
+ <glyph unicode="&#xf0ac;" horiz-adv-x="1597" d="M0 768q0 162 63.5 307.5t173 255t254 173t308.5 63.5q162 0 307 -63.5t254.5 -173t173 -255t63.5 -307.5q0 -164 -63.5 -308.5t-173 -254t-254.5 -173t-307 -63.5q-164 0 -308.5 63.5t-254 173t-173 254t-63.5 308.5zM186 1141h4q4 0 12.5 3t8.5 -9q0 -4 -3 -10.5 t11 -6.5q4 0 5 6t3 0l4 -16v-2q0 -4 -5 -6t-3 -6q4 -4 9.5 -4h9.5l4 2l2 2q0 -6 6 -8.5t10 -2.5h2q0 -2 -4 -4t0 -6l23 -4v-2l14 -29q0 -4 -3 -10t-7 -6t-3 3t1 7t-2 7t-15 3q-2 0 -5 -1t-1 -5l12 -26l3 -2l2 -2q-10 0 -13.5 -24t-3.5 -34l4 -18l2 -6v-4l-4 -19l29 -43h6 q2 -4 -2 -8t-2 -8l8 -8q0 -10 4 -14.5t13 -12.5q-2 -12 20.5 -22.5t28.5 -14.5q8 -23 20 -45.5t29 -38.5l2 -14q0 -2 -5 -4t-1 -6l16 -7q4 4 10.5 -8t10.5 -16l-2 -6l12 -17l6 -2l4 8q-4 10 -14 26.5t-20.5 32t-17.5 28t-7 14.5t-2 16t-4 17q6 -4 15 -7.5t15 -7.5 q4 -25 19.5 -40t27.5 -34q-4 -4 0 -5t7 -1q4 -4 4 -14q14 -16 36.5 -44t22.5 -44v-2l-4 -14q6 -16 20.5 -25.5t28.5 -15.5h4q20 -10 41 -21.5t43 -19.5l23 14q8 -2 17 -10t20.5 -18.5t27 -19.5t35.5 -11q14 10 14 -5v-4l25 -30l4 -15q10 -6 20.5 -15t16.5 -20h4 q10 0 16.5 -9t16.5 -9q6 0 6 6q0 14 2 18.5t5 5.5t6 1t3 4l-4 6q-4 0 -6 -5t-6 -1l-14 -8l-17 4l-24 41l8 57q2 4 -7.5 9t-5.5 10q-14 8 -34 8q-4 0 -20.5 -3t-16.5 3t3 16t7 21.5t6 19.5t2 10l13 27l-3 4l-16 4q-4 0 -13 -6t-17.5 -14.5t-14.5 -16.5t-6 -14l-45 -10 q-14 0 -23 12q-4 16 -17 35.5t-13 34.5q0 23 8 43t-6 43q2 0 5 2t1 6l12 14l2 2l2 -2q14 10 37 7t29 14l16 -13q4 -2 9 4.5t5 10.5l-8 4l39 10l2 -6l19 2l22 -14q4 0 8 5t9 1l20 -21q-4 -8 -1 -12t3 -8q0 -6 10.5 -27.5t18.5 -21.5q10 0 9 13t-1 17q0 20 -8 39t-15 39v6 q0 10 12.5 17.5t12.5 9.5q10 8 22.5 16t18.5 19l8 16v10h6t4 6q0 2 -3 3.5t-7 5.5q-4 2 -8 6l6 4q4 6 6 15t-2 16l15 8q-2 -6 4 -8t10 0l10 16q-4 10 -5 7t5 7q10 4 19.5 9.5t19.5 5.5q2 -2 4 -2q6 0 6 2q0 10 -4 12l12 25q14 0 21 12l18 2q6 2 6 8v2l35 10l4 11l-10 14 q2 0 2 4t-4 6t-7 4t-7 4l-4 -2l4 2h6h13t9 9q0 12 -14 12q-18 0 -41.5 -8.5t-32.5 -28.5l-14 -8l18 18l3 6q0 4 -9.5 5.5t-5.5 1.5q18 0 27.5 4t15.5 9t12.5 10t18.5 9q23 -4 44 -2t44 2q6 4 12 8.5t8 10.5l23 4q4 -4 12 2t8 10q0 10 -11 13t-11 14q0 2 1 6t-3 4 q-6 0 -19.5 -6t-19.5 -10q-4 -2 -5 1t-1 7l2 -2l8 4l23 8l4 4q0 6 -7.5 8t-11.5 2t-12 -3t-8 3l2 4q-12 10 -21.5 22.5t-9.5 16.5t1 8.5t-5 4.5q-4 0 -7 -1t-3 5q0 4 -5 17t-14 13l-8 -8q0 -6 -6 -9t-6 -7h-4l-21 -12q-2 4 -5 2t-7 -2h-2l-2 -2q8 0 7 9t-7 9l-16 -4 q-4 0 -4.5 1t2 4t4.5 7t0 8t-6.5 1t-4.5 1h6l5 5q2 2 -1.5 7t-5.5 7l-22 4l-14 12q-2 -2 -7.5 3t-9.5 7l-16 -6l-39 9q-4 0 -8 -2.5t-4 -6.5t4 -6t4 -6t3 -21.5t-5 -13.5l-10 -14q2 -4 7 -7t10 -7.5t9 -10.5t2 -18l-45 -31v-4q0 -8 4 -15t8 -18q10 -4 9.5 -7t-7 -6t-12.5 -6 t-6 -5t-4 -2h-8h-4q0 2 2 3t2 5l-19 12v-2l-8 16q4 10 1 14.5t-3 10.5q0 16 -14.5 16t-30.5 -4q4 2 -1 6.5t-7 4.5q-16 0 -38 14t-36 14q-6 0 -14 -2t-15 -4q4 2 5 10l-13 23l-2 2q-6 0 -14 -5t-8 9q0 2 2 4t0 4q-2 12 5 20.5t11 18.5q4 4 4 8t4 4q8 0 15.5 4.5t17.5 6.5 l2 6q0 4 -21.5 7t-21.5 7l2 2q20 -6 30.5 -7t17.5 2t16.5 8t29.5 14q0 4 -21.5 8t-27.5 8h12q4 0 10.5 -2t10.5 -4q0 -4 6 -5t10 -1l15 10v6l-4 6l22 4q-2 2 1 4t5 2q6 0 12.5 -6t8.5 -6l20 8q-2 2 5.5 3t4.5 6l-14 16q-2 0 -3 3t1 3q10 0 6 10q-8 4 -17 9.5t-20 5.5 q-4 0 -9 -2t-5 -7q0 -4 5 -4t7 -4q4 -4 -2 -4t-6 -2q-8 0 -15 -12t-18 -17q-4 0 -3 2.5t-1 4.5q-2 4 -7 5t-5 5t5 13t-13 9q-8 0 -11.5 -6t-7.5 -12l-22 25l-17 2q0 8 3.5 14t-9.5 16q-6 4 -11 7.5t-11 3.5q-2 0 -9.5 -4.5t-13.5 -8.5t-6 -8t10 -4h-2q-6 0 -6 -8 q0 -2 9.5 -5t13.5 -3q4 2 6 -1.5t6 -3.5l8 3v-5q-2 -2 -2 -4l2 -8l-20 -10q-2 -2 -4 -2t-5 -2q0 -6 5.5 -12.5t-11.5 -6.5l-6 4q0 8 -16.5 13.5t-40 7.5t-47 3t-35.5 1l-33 -10l8 -19q-4 0 -5 -3t3 -5q-4 4 -15 14.5t-15 10.5l-17 4q-35 -2 -78 -33t-84 -72t-75.5 -84 t-53.5 -71zM471 674h2h-2zM487 1413q14 2 25.5 8t24.5 6l6 -4q6 -2 11 -2t9 -4q8 2 17 -2l6 4v8l-2 5l6 -2q6 0 12 10l-2 4q-4 2 -10 4t-10 2t-16.5 -5t-28 -11.5t-29.5 -12.5t-19 -8zM918 86q0 -4 3 -9t3 -9q0 -5 -2 -7q115 20 217 74.5t182 140.5h-2q-8 -4 -14 0l-5 -4 l-12 4h-4l-4 -8l2 8q-6 8 -14 15l-4 2q-4 0 -4 -8q2 16 -8.5 27.5t-26.5 11.5q0 -2 -2 -2h-4l-5 4h7l4 12l-11 8l-2 -2q-14 2 -20 16l-4 2l-2 -2l-4 -2q-12 -4 -21 -8q-12 4 -18 10l-27 -2q0 6 -4 12.5t-12 6.5q-10 0 -20.5 -2t-14.5 -13q0 -4 2 -8t4 -6v-8l-2 -6l-4 -2h-2 l-6 16l6 10q-2 4 -2 10.5t-2 10.5l-2 4h-6l-15 -10h-8l-4 -4q-2 -2 -2 -4t-2 -3l-2 3h-8q-8 -8 -9 -19l3 -4l-9 -6l-2 -4l-6 -4q0 -2 -1 -2t-1 -2v-2v-9l-2 -2v4l-2 2q-2 12 -23 21h-6v-4q2 -6 8.5 -10.5t10.5 -8.5q-2 2 -5 1t-3 -3v-4l14 -20v-39l4 -10q-4 -16 -16 -27v2 l-4 -2l-3 -2l-2 -10l2 -2v-2l-4 4l-2 -13l-12 -4q-6 -4 -5 -11t-5 -11l2 -4l-6 -6q0 -4 -1 -6.5t-1 -6.5l2 -14l6 -4l4 4l2 6l2 -12q0 -4 -4 -8q-6 -4 -12 -9.5t-6 -15.5z" />
202
+ <glyph unicode="&#xf0ad;" horiz-adv-x="1593" d="M8 242q0 33 12.5 62.5t34.5 51.5l609 609q-16 66 -17 122q0 98 38 186.5t102.5 153t151.5 102.5t185 38q94 0 181.5 -36t154.5 -101l-442 -162l-43 -236l184 -153l443 159q-10 -92 -50.5 -171t-104 -137t-145 -91t-174.5 -33q-61 0 -127 17l-606 -607q-47 -47 -112 -47 q-68 0 -115 47q-23 23 -50.5 47.5t-52 52t-41 58.5t-16.5 68zM203 242q0 -33 22.5 -56.5t57.5 -23.5q33 0 56 23.5t23 56.5q0 35 -23.5 57.5t-55.5 22.5q-35 0 -57.5 -23t-22.5 -57z" />
203
+ <glyph unicode="&#xf0ae;" d="M0 76v217q0 31 22.5 53.5t53.5 22.5h1689q33 0 55.5 -22.5t22.5 -53.5v-217q0 -31 -22.5 -53.5t-55.5 -22.5h-1689q-31 0 -53.5 22.5t-22.5 53.5zM0 662v215q0 31 22.5 53t53.5 22h1689q33 0 55.5 -22.5t22.5 -52.5v-215q0 -33 -22.5 -55.5t-55.5 -22.5h-1689 q-31 0 -53.5 22.5t-22.5 55.5zM0 1243v217q0 31 22.5 53.5t53.5 22.5h1689q33 0 55.5 -22.5t22.5 -53.5v-217q0 -31 -22.5 -53.5t-55.5 -22.5h-1689q-31 0 -53.5 22.5t-22.5 53.5zM752 692h999v154h-999v-154zM1059 109h692v153h-692v-153zM1366 1274h385v153h-385v-153z " />
204
+ <glyph unicode="&#xf0b0;" horiz-adv-x="1566" d="M0 1458q0 33 22.5 55.5t55.5 22.5h1411q33 0 55.5 -22.5t22.5 -55.5t-23 -55l-565 -565v-791q0 -33 -22.5 -55.5t-55.5 -22.5t-55 23l-236 235q-23 23 -22 56v555l-565 565q-23 23 -23 55z" />
205
+ <glyph unicode="&#xf0b1;" d="M0 115v512h713q-2 -6 -2 -19v-153q0 -55 38.5 -95.5t96.5 -40.5h153q55 0 94.5 40t39.5 96v153q0 12 -3 19h713v-512q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM0 743v371q0 47 34 81t81 34h424v231q0 31 21.5 53.5t53.5 22.5h615q33 0 55.5 -22.5 t22.5 -53.5v-231h422q47 0 80.5 -34t33.5 -81v-371h-1843zM692 1229h461v153h-461v-153zM825 455v153q0 18 21 19h153q18 0 19 -19v-153q0 -18 -19 -19h-153q-20 0 -21 19z" />
206
+ <glyph unicode="&#xf0b2;" horiz-adv-x="1536" d="M0 80v477q0 51 24.5 61.5t59.5 -24.5l162 -162l340 338l-338 338l-164 -164q-35 -35 -59.5 -25.5t-24.5 60.5v477q0 31 23 57q27 23 57 23h477q51 0 61.5 -24.5t-24.5 -59.5l-160 -158l338 -338l332 334l-162 162q-35 35 -24.5 59.5t61.5 24.5h477q33 0 55 -23 q25 -25 25 -57v-477q0 -51 -24.5 -61.5t-59.5 24.5l-162 162l-334 -334l338 -336l158 160q35 35 59.5 24.5t24.5 -61.5v-477q0 -35 -25 -55q-23 -25 -55 -25h-477q-51 0 -61.5 24.5t24.5 59.5l166 166l-336 336l-340 -340l162 -162q35 -35 24.5 -59.5t-61.5 -24.5h-477 q-31 0 -55 25q-25 20 -25 55z" />
207
+ <glyph unicode="&#xf0c0;" horiz-adv-x="1880" d="M0 852v152q0 18 1 47.5t10 56.5t29.5 46.5t57.5 19.5q-45 29 -71.5 75.5t-26.5 104.5q0 43 16.5 82t46 68.5t68.5 46t82 16.5q45 0 84 -16.5t67.5 -46t46 -68.5t17.5 -82q0 -57 -27.5 -104t-72.5 -76q37 0 57.5 -19.5t29.5 -46.5t11 -56.5t2 -47.5v-152 q-14 -8 -23.5 -18.5t-27.5 -10.5h-328q-16 0 -26.5 10.5t-22.5 18.5zM158 57v387q0 78 45 138.5t98 109.5q10 10 25.5 21.5t33.5 15.5q18 6 41 7t45 5q61 10 130 19.5t135 19.5q-90 57 -144.5 151.5t-54.5 207.5q0 88 34 166.5t92 136t136 91.5t166 34t166 -34t136 -91.5 t92 -136t34 -166.5q0 -113 -54 -207t-145 -152q66 -10 134.5 -19t130.5 -20q23 -4 45 -5t41 -7q18 -4 33.5 -15.5t27.5 -21.5q66 -59 103.5 -116.5t37.5 -131.5v-387q-12 -6 -20 -13t-18.5 -14t-23.5 -14.5t-36 -15.5h-1368q-35 0 -54.5 22.5t-43.5 34.5zM1452 852v152 q0 18 2 47.5t11.5 56.5t30 46.5t56.5 19.5q-45 29 -72.5 75.5t-27.5 104.5q0 43 16.5 82t46 68.5t68.5 46t84 16.5q43 0 82 -16.5t68.5 -46t46 -68.5t16.5 -82q0 -57 -26.5 -104t-71.5 -76q37 0 56.5 -19.5t28.5 -46.5t11 -56.5t2 -47.5v-152q-12 -8 -22.5 -18.5 t-26.5 -10.5h-328q-18 0 -27.5 10.5t-23.5 18.5z" />
208
+ <glyph unicode="&#xf0c1;" horiz-adv-x="1597" d="M0 1137q0 88 34 166.5t92 137t136 92.5t168 34q86 0 166 -33t139 -92q8 -8 21.5 -20.5t26 -25t21.5 -25.5t9 -25q0 -18 -12 -31q-6 -8 -25 -12q-47 -10 -88 -22.5t-86 -31.5q-4 -4 -16 -4t-25.5 10.5t-31 21.5t-42 21.5t-57.5 10.5q-35 0 -66.5 -13.5t-54 -37t-36 -54 t-13.5 -67.5q0 -41 17.5 -75t43 -63.5t56.5 -56.5t57 -53l180 -178q23 -25 54.5 -37t66.5 -12q43 0 73 16t46 16q12 0 39 -21.5t55.5 -49t50 -55t21.5 -42.5q0 -29 -36 -51t-83 -38.5t-94 -26t-72 -9.5q-86 0 -164.5 33t-140.5 92l-303 305q-61 59 -94 139.5t-33 166.5z M578 1010q0 29 35.5 51t82.5 38.5t94 26t72 9.5q86 0 166 -33t139 -92l303 -305q61 -59 94 -139.5t33 -166.5q0 -90 -33.5 -167.5t-92 -136t-137.5 -92.5t-167 -34q-86 0 -165.5 34t-139.5 93q-8 8 -21.5 19.5t-25.5 25t-21.5 26.5t-9.5 26q0 18 13 28q6 8 24 12 q47 10 88 22.5t86 33.5q12 4 17 4q12 0 25.5 -10.5t30.5 -21.5t41 -21.5t58 -10.5q72 0 121 49.5t49 120.5q0 41 -17 76t-44 63.5t-56.5 55.5t-56.5 53l-178 180q-53 49 -123 50q-43 0 -72.5 -17.5t-46.5 -17.5q-12 0 -38.5 21.5t-55 49t-50 56t-21.5 41.5z" />
209
+ <glyph unicode="&#xf0c2;" horiz-adv-x="1880" d="M0 391q0 70 23.5 132.5t64.5 113.5t96.5 86t120.5 51q-33 41 -51 90t-18 105q0 66 24.5 123t66.5 99t99 66.5t123 24.5q113 0 196 -72q18 76 61.5 141.5t103 113.5t133 75t157.5 27q96 0 182 -37t149.5 -100.5t100.5 -149.5t37 -182q0 -57 -13 -109.5t-36 -99.5 q117 -59 188.5 -170t71.5 -248q0 -98 -37 -183t-101.5 -149.5t-149.5 -101.5t-183 -37h-1018q-80 0 -151.5 30.5t-125 84t-84 125t-30.5 151.5z" />
210
+ <glyph unicode="&#xf0c3;" horiz-adv-x="1536" d="M16 72q-39 72 7 141l516 803v366h-78q-33 0 -54.5 22.5t-21.5 55.5q0 31 21.5 53.5t54.5 22.5h614q33 0 55.5 -22.5t22.5 -53.5q0 -33 -22.5 -55.5t-55.5 -22.5h-76v-368l514 -801q45 -70 7 -141q-18 -35 -51 -53.5t-70 -18.5h-1262q-37 0 -69.5 18.5t-51.5 53.5z M377 479h782l-313 490v413h-154v-411z" />
211
+ <glyph unicode="&#xf0c4;" horiz-adv-x="1916" d="M0 180q0 86 44 168t113.5 146.5t154.5 103.5t169 39h13q18 25 57 60.5t63 58.5v12v12q-12 12 -28.5 27.5t-35 32t-33.5 32t-23 27.5q-84 -6 -172.5 33t-160 105.5t-116.5 150.5t-45 168q0 98 62.5 154.5t160.5 56.5q82 0 168 -39t155.5 -103.5t114 -146.5t44.5 -168 q0 -10 -1.5 -21.5t-3.5 -21.5l86 -76l34 17q34 18 90.5 46.5t129 65.5t148.5 76t150.5 77t135 69.5t102.5 52t52 26.5q16 8 37 9q14 0 39 -4.5t52.5 -9.5t53 -11t41.5 -8q29 -4 47.5 -26.5t18.5 -51.5q0 -43 -35 -66l-700 -485l700 -485q35 -23 35 -66q0 -29 -18.5 -51.5 t-47.5 -26.5q-16 -4 -41.5 -9t-53 -10t-52.5 -9.5t-39 -4.5q-10 0 -18.5 2.5t-18.5 6.5l-842 430l-86 -76q2 -10 3.5 -21.5t1.5 -21.5q0 -86 -44.5 -168t-114 -146.5t-155.5 -103.5t-168 -39q-98 0 -160.5 56.5t-62.5 154.5zM197 1358q0 -23 11 -49.5t27.5 -51t35 -45 t34.5 -34.5q35 -29 82 -54.5t94 -25.5q10 0 27 4v6q0 23 -11.5 48.5t-27.5 50t-34.5 46t-35.5 35.5q-35 29 -82 54.5t-94 25.5q-14 0 -26 -4v-6zM199 180q0 -6 2 -10q6 0 11 -1t11 -1q41 0 90 24.5t92.5 61.5t72 83t28.5 89q0 4 -1 5t-1 5q-8 2 -23 2q-41 0 -90 -24.5 t-92 -61.5t-71.5 -83t-28.5 -89zM586 616q53 -25 82 -69l108 96l45 -27l1016 703l-172 31l-975 -498l6 -127zM586 920l35 -35q12 29 36.5 41t53.5 26l-43 37q-29 -45 -82 -69zM741 768q0 35 23.5 57.5t58.5 22.5q33 0 55.5 -22.5t22.5 -57.5q0 -33 -22.5 -56.5t-57.5 -23.5 q-33 0 -56.5 23.5t-23.5 56.5zM903 575l762 -389l172 31l-727 502z" />
212
+ <glyph unicode="&#xf0c5;" horiz-adv-x="1597" d="M0 385v707q0 33 16.5 70.5t38.5 60.5l258 258q23 23 61 39t70 16h463q31 0 53.5 -22.5t22.5 -53.5v-250q16 8 35.5 13.5t40.5 5.5h463q31 0 53 -22.5t22 -53.5v-1075q0 -33 -22.5 -55.5t-52.5 -22.5h-830q-33 0 -55.5 22.5t-22.5 55.5v229h-536q-33 0 -55.5 22.5 t-22.5 55.5zM154 461h460v293q0 45 10.5 87t45.5 74l159 162v305h-278v-321q0 -31 -22.5 -53.5t-53.5 -22.5h-321v-524zM186 1139h211v211zM768 154h676v921h-279v-321q0 -31 -22.5 -53.5t-52.5 -22.5h-322v-524zM801 831h211v211z" />
213
+ <glyph unicode="&#xf0c6;" horiz-adv-x="1470" d="M0 1128q0 90 35 170t94 139.5t139 94.5t170 35q88 0 169 -34t143 -95l655 -656q12 -12 12 -28q0 -10 -11 -26.5t-26.5 -32t-32 -27t-26.5 -11.5q-16 0 -29 13l-655 655q-41 41 -92 61.5t-107 20.5q-57 0 -108 -21.5t-89 -59.5t-59.5 -89t-21.5 -109q0 -55 20.5 -106 t61.5 -92l745 -746q55 -55 133 -55q39 0 74 15.5t60.5 41t41 60.5t15.5 73q0 78 -56 134l-563 563q-29 29 -69 28q-41 0 -71 -29.5t-30 -70.5t29 -70l475 -475q12 -12 12 -28q0 -10 -11 -26.5t-26.5 -32t-32 -27t-26.5 -11.5q-16 0 -29 13l-475 473q-35 37 -55.5 85 t-20.5 99q0 53 20.5 100.5t55.5 83t83.5 56t101.5 20.5q51 0 99 -20.5t85 -55.5l561 -563q102 -102 102 -246q0 -74 -27.5 -137t-74.5 -110t-110.5 -75t-137.5 -28q-143 0 -246 103l-745 745q-61 61 -95 142t-34 169z" />
214
+ <glyph unicode="&#xf0c7;" horiz-adv-x="1536" d="M0 154v1228q0 63 45 108.5t109 45.5h1075q63 0 108 -45l154 -154q45 -45 45 -108v-1075q0 -63 -45 -108.5t-109 -45.5h-1228q-63 0 -108.5 45t-45.5 109zM154 846h1075v536h-1075v-536zM846 922v385h190v-385h-190z" />
215
+ <glyph unicode="&#xf0c8;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-1150q-80 0 -136.5 56.5t-56.5 136.5z" />
216
+ <glyph unicode="&#xf0c9;" d="M0 78v215q0 31 22.5 53.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -53.5v-215q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM0 659v218q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-218q0 -31 -22.5 -53t-53.5 -22h-1689 q-33 0 -55.5 22.5t-22.5 52.5zM0 1243v217q0 31 22.5 53.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -53.5v-217q0 -31 -22.5 -53.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 53.5z" />
217
+ <glyph unicode="&#xf0ca;" d="M0 211q0 39 15.5 75t41 61.5t60.5 40.5t76 15q39 0 73.5 -15t61 -40.5t42 -61.5t15.5 -75q0 -41 -15.5 -76t-42 -60.5t-61.5 -41t-73 -15.5q-80 0 -136.5 56.5t-56.5 136.5zM0 768q0 39 15.5 75t41 61.5t60.5 41t76 15.5q39 0 73.5 -15.5t61 -41t42 -61.5t15.5 -75 q0 -41 -15.5 -76t-42 -60.5t-61.5 -41t-73 -15.5q-41 0 -76 15.5t-60.5 41t-41 60.5t-15.5 76zM0 1325q0 39 15.5 75t41 61.5t60.5 41t76 15.5q39 0 73.5 -15.5t61 -41t42 -61.5t15.5 -75q0 -41 -15.5 -76t-42 -60.5t-61.5 -40.5t-73 -15q-41 0 -76 15t-60.5 40.5t-41 60.5 t-15.5 76zM522 154v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1167q-33 0 -55.5 21.5t-22.5 54.5zM522 711v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5 h-1167q-33 0 -55.5 22.5t-22.5 55.5zM522 1268v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1167q-33 0 -55.5 22.5t-22.5 55.5z" />
218
+ <glyph unicode="&#xf0cb;" d="M0 594q0 55 30.5 90t68.5 61.5t69 50t31 56.5q0 29 -17.5 44t-46.5 15q-25 0 -44 -15t-34 -36l-53 37q23 39 58.5 60.5t78.5 21.5q55 0 96.5 -32t41.5 -91q0 -49 -30 -80t-67 -55.5t-67.5 -47t-30.5 -55.5h143v54h66v-115h-289q-2 10 -3 18.5t-1 18.5zM4 55l37 54 q6 -4 12 -10.5t15 -10.5q12 -8 29.5 -14t37.5 -6q35 0 55.5 18t20.5 47q0 31 -23.5 48.5t-58.5 17.5h-23l-16 37l90 108l6 6t7 6l4 6h-9q-4 -2 -14 -2h-92v-49h-66v111h263v-53l-97 -115q41 -6 74 -35t33 -82t-38 -95t-110 -42q-35 0 -60.5 9t-41.5 20q-25 14 -35 26z M14 1434l105 102h67v-360h93v-62h-259v62h93v258v8h-2q-10 -16 -22.5 -28.5t-29.5 -27.5zM522 154v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1167q-33 0 -55.5 21.5t-22.5 54.5zM522 711v114q0 33 22.5 55.5 t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1167q-33 0 -55.5 22.5t-22.5 55.5zM522 1268v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1167q-33 0 -55.5 22.5t-22.5 55.5z " />
219
+ <glyph unicode="&#xf0cc;" horiz-adv-x="1536" d="M0 692v152h1536v-152h-1536zM268 1114q0 117 44 202t118 141t170 83t203 27q88 0 176 -20.5t172 -49.5q20 -72 27.5 -156t7.5 -157q0 -10 -1 -22.5t-3 -24.5l-13 -2q-23 2 -50 2t-50 6q-18 59 -44 114.5t-62.5 98.5t-88 68.5t-122.5 25.5q-49 0 -94.5 -13.5t-80 -40 t-56 -66.5t-21.5 -93q0 -59 28.5 -102t75.5 -75t105.5 -54.5t118 -42t113.5 -39t93 -41.5h-696q-33 53 -51.5 110.5t-18.5 120.5zM285 310v63v45l110 2q31 -72 64 -134.5t76 -108.5t104 -71.5t152 -25.5q55 0 110 16.5t100.5 48t74 78.5t28.5 109q0 76 -49 128t-119 88 t-146.5 59.5t-132.5 45.5h617q8 -16 15 -38.5t10.5 -48t5.5 -50t2 -43.5q0 -131 -47.5 -226t-127 -156.5t-186 -91.5t-225.5 -30q-53 0 -93 4t-78 12.5t-78 20.5t-93 29q-12 4 -38 12t-36 16q-8 6 -12 50.5t-6 96.5t-2 100z" />
220
+ <glyph unicode="&#xf0cd;" horiz-adv-x="1536" d="M0 0v154h1536v-154h-1536zM0 1532q10 2 19.5 2h19.5q72 0 140.5 -5t137.5 -5q100 0 200.5 2t199.5 6q-4 -16 -1 -36.5t3 -37.5v-8q-66 -10 -108 -7t-65.5 -5t-32.5 -39t-9 -109q0 -137 4 -272t10 -273q8 -147 88 -237t238 -90q125 0 207 29.5t131 88t69.5 146.5t20.5 203 q0 20 -2 65t-5 102.5t-8.5 119t-11.5 113.5t-13 89t-15 45q-33 33 -78 33q-6 0 -23.5 -1t-36 -1t-34 1t-21.5 3l2 82q82 4 163 -3t165 -7q39 0 77.5 5t79.5 5q4 0 9.5 -1t9.5 -1q2 -12 4 -24.5t2 -24.5t-4 -29q-23 -6 -52.5 -8t-58 -7t-48 -16.5t-19.5 -38.5q0 -14 1 -27 t3 -28q2 -6 5 -38.5t5 -79t4 -101.5t4 -103t3 -85t1 -50q0 -37 -2 -80.5t-8 -89t-17.5 -87.5t-29.5 -74q-41 -68 -104.5 -114t-137 -72.5t-153.5 -38t-154 -11.5q-72 0 -144.5 9.5t-140.5 35.5q-96 35 -151 88.5t-84 121t-36 148.5t-7 173v321v42t-1 62.5t-5 60.5t-10 38 q-12 16 -37 23.5t-53.5 10.5t-56.5 3t-44 4z" />
221
+ <glyph unicode="&#xf0ce;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h460v335h-460v-335zM154 565h460v332h-460v-332zM154 975h460v332h-460v-332zM692 154h461v335h-461v-335zM692 565h461v332h-461v-332z M692 975h461v332h-461v-332zM1229 154h461v335h-461v-335zM1229 565h461v332h-461v-332zM1229 975h461v332h-461v-332z" />
222
+ <glyph unicode="&#xf0d0;" d="M0 197q0 39 29 61l1579 1247q20 17 47 17q35 0 59 -29q10 -12 29.5 -33.5t38 -44t32 -47.5t13.5 -43q0 -39 -29 -61l-1579 -1248q-20 -16 -47 -16q-37 0 -59 29q-10 12 -30 33.5t-38 44t-31.5 47t-13.5 43.5zM256 922l117 36l37 117l34 -117l119 -36l-119 -37l-34 -117 l-37 117zM373 1229l235 71l72 236l72 -236l235 -71l-235 -72l-72 -235l-72 235zM942 1382l117 37l37 117l37 -117l116 -37l-116 -36l-37 -117l-37 117zM1286 1153l94 -121l369 291l-94 121zM1536 885l117 35l37 118l36 -118l117 -35l-117 -37l-36 -117l-37 117z" />
223
+ <glyph unicode="&#xf0d1;" d="M0 358v404q0 25 6 51.5t17.5 53t27 51t31.5 40.5l223 222q16 16 41 31.5t51.5 26.5t53 17.5t51.5 6.5h80v198q0 31 22.5 53.5t52.5 22.5h1108q33 0 55.5 -22.5t22.5 -53.5v-1102q0 -31 -22.5 -53t-55.5 -22h-75v-7q0 -63 -25 -119.5t-65.5 -97.5t-97 -65.5t-120.5 -24.5 q-63 0 -119.5 24.5t-97.5 65.5t-65.5 97.5t-24.5 119.5v7h-307v-7q0 -63 -24.5 -119.5t-65.5 -97.5t-97.5 -65.5t-119.5 -24.5t-119.5 24.5t-97.5 65.5t-65.5 97.5t-24.5 119.5v7h-78q-31 0 -53.5 22.5t-22.5 52.5zM193 700h387v369h-78q-10 0 -31.5 -8t-30.5 -17l-223 -221 q-8 -8 -16 -29.5t-8 -31.5v-62zM346 276q0 -47 34 -80.5t81 -33.5t80.5 33.5t33.5 80.5t-33.5 81t-80.5 34t-81 -33.5t-34 -81.5zM1268 276q0 -47 33.5 -80.5t80.5 -33.5t81 33.5t34 80.5t-33.5 81t-81.5 34q-47 0 -80.5 -33.5t-33.5 -81.5z" />
224
+ <glyph unicode="&#xf0d2;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5q-59 0 -115.5 8.5t-112.5 24.5q23 35 46.5 80t35.5 92l11 41q6 23 16 66t29 112q23 -41 76 -70.5t118 -29.5q96 0 176 41 t136.5 114.5t88 174t31.5 217.5q0 88 -35.5 171t-102.5 147.5t-160 102t-208 37.5q-141 0 -248.5 -46t-179 -118.5t-107.5 -160.5t-36 -174q0 -104 40 -187.5t124 -117.5q31 -10 41 20q2 10 7 31.5t9 32.5q4 16 1 23t-13 22q-53 59 -53 155q0 76 27.5 145.5t78.5 122t124 84 t163 31.5q80 0 142.5 -23.5t105.5 -64.5t64.5 -96t21.5 -121q0 -86 -18.5 -164t-52.5 -136t-80 -92t-103 -34q-31 0 -57.5 12.5t-45 34t-25.5 49t1 60.5q18 76 44.5 151.5t26.5 130.5q0 49 -26.5 84t-81.5 35q-66 0 -110 -58.5t-44 -146.5q-2 -23 2 -45q2 -18 7.5 -40.5 t15.5 -41.5q-33 -141 -53.5 -225t-30.5 -131q-12 -55 -18 -80q-10 -45 -13.5 -93t-1.5 -89q-104 45 -192 119.5t-151.5 169t-98.5 207t-35 235.5z" />
225
+ <glyph unicode="&#xf0d3;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-829q27 39 59.5 95.5t49.5 117.5l10 41q6 25 17.5 68t29.5 112q20 -41 75.5 -70.5t121.5 -29.5q96 0 176 42t137 115.5 t89 175t32 220.5q0 90 -37 173t-103.5 147.5t-161 102.5t-208.5 38q-143 0 -251 -46.5t-180.5 -120t-108.5 -162.5t-36 -175q0 -104 40 -188.5t124 -118.5q14 -6 25.5 -1t15.5 21q4 10 8 31.5t8 34.5q8 23 -12 43q-23 29 -37 67.5t-14 91.5q0 76 27.5 145.5t79 123t124 85 t164.5 31.5q82 0 144.5 -23.5t105.5 -64.5t64.5 -97t21.5 -124q0 -86 -18.5 -164t-52 -136t-81 -93t-104.5 -35q-31 0 -57.5 12.5t-45 34t-25.5 49t1 60.5q18 78 45 154.5t27 131.5q0 49 -26.5 85t-82.5 36q-66 0 -110.5 -59t-44.5 -150q-2 -23 2 -45q4 -43 22 -84 q-35 -141 -54.5 -226t-29.5 -132q-12 -55 -18 -80q-16 -70 -14 -142.5t6 -117.5h-260q-80 0 -136.5 56.5t-56.5 136.5z" />
226
+ <glyph unicode="&#xf0d4;" horiz-adv-x="1536" d="M0 342v438q55 -68 120.5 -96.5t153.5 -28.5h36t34 4q-8 -23 -14 -42t-6 -42q0 -41 18 -77.5t43 -67.5q-104 -4 -198.5 -22.5t-186.5 -65.5zM0 1214v129q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5 t-61.5 -41t-75 -15.5h-583q23 39 36 81t13 89q0 70 -21.5 121t-54.5 90t-70.5 69.5t-70.5 57.5t-54.5 53.5t-21.5 59.5q0 49 34 81.5t76 72.5t75.5 99.5t33.5 163.5q0 78 -39 157t-106 122h131l133 76h-428q-129 0 -237.5 -36t-188.5 -143zM2 170q14 57 55 96t96.5 61.5 t115 33t110.5 10.5h31.5t31.5 -2q37 -27 78 -54.5t75 -61.5t55.5 -75t21.5 -92q0 -47 -19 -86h-460q-72 0 -126.5 49t-64.5 121zM102 1094q0 43 11.5 85t35 73.5t59.5 51t85 19.5q68 0 118 -41t81.5 -100.5t47 -128t15.5 -123.5q0 -45 -9 -84t-30.5 -68.5t-56.5 -47 t-84 -17.5q-66 0 -116 39t-85 96t-53.5 123.5t-18.5 122.5zM854 1051h223v-224h109v224h223v108h-223v225h-109v-225h-223v-108z" />
227
+ <glyph unicode="&#xf0d5;" horiz-adv-x="1536" d="M0 262q0 100 56.5 166t139.5 105.5t179 56t174 18.5q-23 29 -41.5 64t-18.5 76q0 23 6.5 41t14.5 40q-16 -4 -33.5 -4h-34.5q-68 0 -130 23.5t-108 66.5t-74 101.5t-28 130.5q0 68 25 128t67 109.5t98 84t120 49.5q88 18 176 18h411l-127 -74h-127q72 -43 107 -120.5 t35 -157.5q0 -94 -33 -149.5t-73 -94.5t-72.5 -70.5t-32.5 -78.5q0 -45 44 -82t97 -82t97 -107.5t44 -161.5q0 -102 -50 -175.5t-126.5 -121t-170 -70t-181.5 -22.5q-66 0 -141.5 15.5t-140 50.5t-106.5 90t-42 137zM174 307q0 -68 35 -116t87 -78.5t114.5 -44t117.5 -13.5 q51 0 104.5 11.5t96.5 38t69.5 68.5t26.5 103q0 49 -21.5 89.5t-53 72t-70.5 59t-76 52.5q-14 2 -29.5 3t-29.5 1q-57 0 -123 -12.5t-121 -41t-91 -75.5t-36 -117zM276 1247q0 -53 17.5 -117.5t51.5 -120t82.5 -92t111.5 -36.5q96 0 134 61.5t38 147.5q0 53 -14.5 118.5 t-45 124t-78 97t-112.5 38.5q-47 0 -82 -18t-57.5 -49t-34 -71t-11.5 -83zM999 1206h215v-215h107v215h215v105h-215v217h-107v-217h-215v-105z" />
228
+ <glyph unicode="&#xf0d6;" d="M0 78v1382q0 31 22.5 53.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -53.5v-1382q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM154 461q63 0 119.5 -24.5t97.5 -65.5t65.5 -97.5t24.5 -119.5h921q0 63 25 119.5t65.5 97.5t97 65.5t120.5 24.5v614 q-63 0 -120 24.5t-97.5 65.5t-65.5 97.5t-25 119.5h-921q0 -63 -24.5 -119.5t-65.5 -97.5t-97.5 -65.5t-119.5 -24.5v-614zM539 768q0 104 29.5 195.5t81.5 159t122 106.5t150 39t149.5 -39t121.5 -106.5t83 -159t31 -195.5t-31 -195.5t-83 -159t-122 -106.5t-149 -39 q-80 0 -150 39t-122 106.5t-81.5 159t-29.5 195.5zM692 969l94 -99l39 35q8 6 11.5 13.5t7.5 11.5q4 2 8 10h2v-16q0 -8 -1 -16.5t-1 -18.5v-283h-139v-129h438v129h-141v529h-140z" />
229
+ <glyph unicode="&#xf0d7;" horiz-adv-x="1228" d="M6 967q20 47 72 47h1075q50 0 70 -47t-17 -84l-536 -537q-27 -23 -56 -22q-29 0 -55 22l-536 537q-37 37 -17 84z" />
230
+ <glyph unicode="&#xf0d8;" horiz-adv-x="1228" d="M6 371q-20 47 17 84l536 536q23 23 55 23q31 0 54 -23l538 -536q37 -37 17 -84t-70 -47h-1077q-50 0 -70 47z" />
231
+ <glyph unicode="&#xf0d9;" horiz-adv-x="692" d="M0 768q0 33 23 55l538 537q16 16 38 21t44 -5q23 -8 36 -27.5t13 -41.5v-1076q0 -25 -13 -43t-36 -28t-44 -5t-38 21l-538 539q-23 23 -23 53z" />
232
+ <glyph unicode="&#xf0da;" horiz-adv-x="692" d="M0 231v1076q0 49 47 69t84 -16l539 -537q23 -23 22 -55q0 -31 -22 -53l-539 -539q-37 -37 -84 -16q-47 20 -47 71z" />
233
+ <glyph unicode="&#xf0db;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h692v1153h-692v-1153zM999 154h691v1153h-691v-1153z" />
234
+ <glyph unicode="&#xf0dc;" horiz-adv-x="1228" d="M0 584q0 31 22.5 54.5t53.5 23.5h1075q33 0 55.5 -23t22.5 -55q0 -33 -23 -56l-536 -536q-23 -23 -56 -23t-55 23l-536 536q-23 23 -23 56zM0 952q0 33 23 56l536 536q23 23 55 23q33 0 56 -23l536 -536q23 -23 23 -56q0 -31 -22.5 -54.5t-55.5 -23.5h-1075 q-31 0 -53.5 23t-22.5 55z" />
235
+ <glyph unicode="&#xf0dd;" horiz-adv-x="1228" d="M0 584q0 31 22.5 54.5t53.5 23.5h1077q31 0 53.5 -23t22.5 -55q0 -33 -23 -56l-536 -536q-23 -23 -56 -23q-35 0 -53 23l-538 536q-23 23 -23 56z" />
236
+ <glyph unicode="&#xf0de;" horiz-adv-x="1228" d="M0 952q0 33 23 56l536 536q23 23 55 23q33 0 56 -23l536 -536q23 -23 23 -56q0 -31 -22.5 -54.5t-53.5 -23.5h-1077q-31 0 -53.5 23t-22.5 55z" />
237
+ <glyph unicode="&#xf0e0;" d="M0 115v905q10 -10 20.5 -17.5t20.5 -15.5q129 -96 256 -191.5t252 -195.5q39 -31 82 -62.5t89 -57t96.5 -41t103.5 -15.5q55 0 105 15.5t96 40t89 56t84 64.5q125 100 252 195.5t256 191.5q10 8 20.5 15.5t20.5 17.5v-905q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34 t-34 81zM2 1434q0 41 36 71.5t77 30.5h1614q41 0 76.5 -30.5t35.5 -71.5q0 -31 -18.5 -69t-45 -75t-57 -67.5t-53.5 -48.5q-123 -92 -241.5 -182.5t-239.5 -182.5q-25 -18 -57.5 -45t-67.5 -51.5t-71 -42t-66 -17.5h-2h-2q-31 0 -67 17.5t-70.5 42t-67.5 51.5t-58 45 q-121 92 -239.5 182t-241.5 183q-23 18 -53.5 48.5t-57 67.5t-45 75t-18.5 69z" />
238
+ <glyph unicode="&#xf0e1;" horiz-adv-x="1576" d="M0 1376q0 39 15.5 74t41 60.5t60 41t73.5 15.5t74 -15.5t61.5 -41t41 -60.5t14.5 -74t-14.5 -73.5t-41 -60t-61.5 -41t-74 -15.5t-73.5 15.5t-60 41t-41 60t-15.5 73.5zM10 41v991q0 16 12.5 28.5t28.5 12.5h281q16 0 28.5 -12t12.5 -29v-991q0 -16 -12.5 -28.5 t-28.5 -12.5h-281q-16 0 -28.5 12.5t-12.5 28.5zM524 41v991q0 16 12.5 28.5t28.5 12.5h273q33 0 37 -25.5t4 -48.5q57 53 129.5 76t150.5 23q190 0 304 -95.5t114 -293.5v-668q0 -16 -12.5 -28.5t-28.5 -12.5h-289q-16 0 -27.5 12.5t-11.5 28.5v604q0 76 -27.5 116 t-111.5 40q-53 0 -89 -17.5t-56.5 -47t-28.5 -70.5t-8 -88v-537q0 -16 -12.5 -28.5t-28.5 -12.5h-281q-16 0 -28.5 12.5t-12.5 28.5z" />
239
+ <glyph unicode="&#xf0e2;" horiz-adv-x="1591" d="M0 662q-4 39 35 45l158 20q12 2 30 -8q12 -8 15 -27q14 -102 63 -191t123 -153.5t169 -101.5t200 -37q115 0 217 44t178 120t120 177t44 218t-44 218t-120 177t-178.5 120t-216.5 44q-94 0 -181.5 -30.5t-158.5 -88.5l159 -159q35 -35 24 -58.5t-58 -23.5h-463 q-16 0 -29.5 6t-24.5 16q-25 25 -24 55v463q0 47 24.5 57.5t59.5 -24.5l162 -162q109 92 238.5 140.5t271.5 48.5q166 0 311 -62.5t253.5 -171t171 -254t62.5 -311.5t-62.5 -311.5t-171 -254t-254 -171t-310.5 -62.5q-150 0 -285 52.5t-241.5 145.5t-176.5 220t-90 275z" />
240
+ <glyph unicode="&#xf0e3;" horiz-adv-x="1916" d="M0 651q0 49 37 91t88 42q35 0 68 -22q-20 14 -21 37q0 8 8 24l334 502q14 20 37 21q16 0 24 -9q-25 18 -40 43t-15 56q0 49 38 90t87 41q33 0 62 -19l514 -342q23 -16 36 -40.5t13 -53.5q0 -25 -10.5 -48.5t-26.5 -41.5t-40 -29.5t-48 -11.5q-33 0 -68 23q20 -14 21 -37 q0 -14 -8 -25l-105 -158l227 -151q14 4 28 6t28 2q53 0 94 -29l475 -315q37 -27 58.5 -65.5t21.5 -84.5q0 -74 -52.5 -126t-125.5 -52q-55 0 -99 31l-475 315q-70 47 -75 131l-228 152l-106 -158q-14 -20 -37 -20q-14 0 -25 8q55 -39 56 -100q0 -25 -10.5 -47.5t-28 -41 t-40 -29.5t-46.5 -11q-35 0 -62 18l-514 342q-49 33 -49 92z" />
241
+ <glyph unicode="&#xf0e4;" horiz-adv-x="1880" d="M0 627q0 195 73.5 365.5t201.5 298.5t299 202t366 74t366 -74t299 -202t201.5 -299t73.5 -365q0 -78 -14.5 -159t-42 -159t-68.5 -149.5t-92 -130.5q-23 -29 -59 -29h-1328q-37 0 -59 29q-53 59 -93 130.5t-67.5 149.5t-42 159t-14.5 159zM158 627q0 -49 33.5 -83 t82.5 -34t83 34t34 83t-34.5 82.5t-82.5 33.5q-49 0 -82.5 -33.5t-33.5 -82.5zM352 1098q0 -49 35 -84t82 -35q49 0 84 35t35 84t-35 82.5t-84 33.5q-47 0 -82 -33.5t-35 -82.5zM743 313q0 -82 57.5 -139t139.5 -57t139.5 57t57.5 139q0 49 -26 91t-67 71q4 14 15.5 55 t27 95.5t33 114t30.5 110.5t22.5 88t9.5 43q0 23 -17.5 40t-40.5 17q-20 0 -35.5 -12t-21.5 -31l-135 -487q-39 -2 -74 -17.5t-60.5 -42t-40 -61.5t-14.5 -74zM823 1292q0 -49 34 -82.5t83 -33.5t83 33.5t34 82.5t-34 83t-83 34t-83 -34t-34 -83zM1292 1098q0 -49 35 -83 t84 -34t83 34t34 83t-34 82.5t-83 33.5t-84 -33.5t-35 -82.5zM1489 627q0 -49 34 -83t83 -34t82.5 34t33.5 83t-33.5 82.5t-82.5 33.5t-83 -33.5t-34 -82.5z" />
242
+ <glyph unicode="&#xf0e5;" horiz-adv-x="1916" d="M0 866q0 123 49 225.5t130 183.5t184.5 139.5t209.5 92.5q94 31 190.5 45.5t194.5 14.5t194.5 -14.5t190.5 -45.5q106 -35 210 -93t185 -139t130 -183.5t49 -225.5t-49 -225t-130 -183t-184.5 -140.5t-210.5 -92.5q-94 -31 -190 -45t-195 -14q-92 0 -180 12 q-92 -72 -195.5 -119t-215.5 -73q-27 -4 -55.5 -10.5t-53.5 -6.5q-16 0 -27.5 11.5t-11.5 27.5q0 12 8.5 21.5t16.5 17.5q31 33 53 60.5t37.5 57.5t25 64.5t17.5 79.5q-78 43 -145.5 100.5t-120 128t-82 153.5t-29.5 175zM160 866q0 -72 24.5 -133t65.5 -113.5t94 -95.5 t111 -75q27 -14 51 -27.5t49 -28.5q-10 -47 -17.5 -94t-19.5 -94q59 29 111.5 64.5t105.5 76.5q55 -8 110.5 -14t112.5 -6q156 0 308 43q84 25 171 68.5t158.5 107t116.5 143.5t45 178t-45 178t-116.5 143.5t-158.5 107.5t-171 69q-152 43 -308 43q-158 0 -307 -43 q-84 -25 -171 -69t-158.5 -107.5t-116.5 -143t-45 -178.5z" />
243
+ <glyph unicode="&#xf0e6;" horiz-adv-x="1916" d="M0 997q0 98 40 182.5t106.5 151t150.5 113.5t170 76q76 25 154.5 36t156.5 11q80 0 159 -11.5t155 -35.5q86 -29 170 -76t149.5 -113.5t105 -150.5t39.5 -183q0 -98 -39.5 -182t-105 -149.5t-149.5 -113.5t-170 -77q-154 -47 -314 -47q-37 0 -72.5 3t-72.5 7 q-150 -115 -336 -155q-20 -4 -43 -9.5t-45 -5.5q-12 0 -21.5 9.5t-9.5 23.5q0 10 7.5 17.5l13.5 13.5q51 51 72.5 96t35.5 117q-63 35 -118.5 82t-97.5 104t-66.5 124t-24.5 142zM160 997q0 -72 30.5 -127t77.5 -99t104.5 -78t112.5 -64l-20 -111q33 18 63.5 42t59.5 46 q47 -6 95 -12t95 -6q135 0 264 41q61 18 124 52t114 81t84 105.5t33 129.5q0 72 -33 131.5t-84 105.5t-113.5 80t-124.5 52q-63 23 -129.5 32t-134.5 9q-66 0 -132 -9t-132 -32q-59 -18 -122.5 -52t-115 -80t-84 -105.5t-32.5 -131.5zM649 258l27 16q51 -6 102 -6 q197 0 381 62q111 37 211 99.5t177 147.5t123 190t46 230q0 41 -6 84q90 -72 148.5 -169t58.5 -214q0 -76 -24.5 -142.5t-66.5 -123.5t-97.5 -104t-118.5 -82q14 -72 35.5 -117t72.5 -96q6 -6 13.5 -14.5t7.5 -18.5q0 -16 -10.5 -23.5t-24.5 -7.5q-20 0 -43 5.5t-41 9.5 q-186 41 -336 155q-37 -4 -72.5 -7t-72.5 -3q-129 0 -254 32t-236 97z" />
244
+ <glyph unicode="&#xf0e7;" horiz-adv-x="933" d="M0 557q0 8 2 10l209 932q4 16 16.5 26.5t28.5 10.5h344q18 0 31.5 -13.5t13.5 -33.5q0 -6 -1 -10t-3 -11l-180 -524q12 4 47 13.5t81 21.5t95 26.5t93 25.5t75 18.5t37 7.5q18 0 31.5 -13.5t13.5 -33.5q0 -12 -2 -19l-565 -1306q-10 -29 -43 -29q-18 0 -33 13.5t-15 33.5 q0 6 3 10l204 914q-12 -4 -48 -14.5t-82 -22.5t-97 -26.5t-95 -27t-76 -19.5t-38 -7q-20 0 -33.5 14.5t-13.5 32.5z" />
245
+ <glyph unicode="&#xf0e8;" d="M0 78v383q0 33 22.5 55.5t55.5 22.5h133v153q0 55 40 94t95 39h518v174h-135q-31 0 -53.5 21.5t-22.5 54.5v385q0 31 22.5 53.5t53.5 22.5h385q31 0 53.5 -22.5t22.5 -53.5v-385q0 -33 -22.5 -54.5t-53.5 -21.5h-135v-174h518q55 0 95 -38.5t40 -94.5v-153h135 q31 0 53.5 -22.5t22.5 -55.5v-383q0 -33 -22.5 -55.5t-53.5 -22.5h-385q-33 0 -54 22.5t-21 55.5v383q0 33 21.5 55.5t53.5 22.5h136v153q0 18 -21 19h-518v-172h135q31 0 53.5 -22.5t22.5 -55.5v-383q0 -33 -22.5 -55.5t-53.5 -22.5h-385q-31 0 -53.5 22.5t-22.5 55.5v383 q0 33 22.5 55.5t53.5 22.5h135v172h-518q-20 0 -20 -19v-153h135q33 0 55.5 -22.5t22.5 -55.5v-383q0 -33 -22.5 -55.5t-55.5 -22.5h-383q-33 0 -55.5 22.5t-22.5 55.5z" />
246
+ <glyph unicode="&#xf0e9;" horiz-adv-x="1884" d="M0 770q31 137 109.5 253t193.5 204t257 141t302 66v53q0 35 23.5 57.5t56.5 22.5q35 0 57.5 -22.5t22.5 -57.5v-53q160 -12 303 -65.5t258 -141.5t192.5 -204t108.5 -253q6 -29 -20 -43q-10 -6 -19 -6q-20 0 -28 12q-98 102 -218 103q-86 0 -163.5 -54.5t-130.5 -152.5 q-10 -23 -35 -23t-35 23q-82 150 -213 194v-526q0 -68 -23.5 -127t-63.5 -104.5t-93.5 -71t-114.5 -25.5t-115.5 25.5t-94.5 71t-63.5 104.5t-23.5 127q0 35 23.5 57.5t56.5 22.5q35 0 57.5 -22.5t22.5 -57.5q0 -70 40 -119t97 -49q55 0 95 49t40 119v526 q-131 -45 -213 -194q-10 -23 -35 -23t-34 23q-53 98 -130 152.5t-163 54.5q-121 0 -217 -103q-12 -12 -31 -12q-10 0 -19 6q-25 14 -20 43z" />
247
+ <glyph unicode="&#xf0ea;" horiz-adv-x="1597" d="M0 385v1075q0 31 22.5 53.5t55.5 22.5h921q31 0 53.5 -22.5t22.5 -53.5v-231h33h61q25 0 55.5 -13.5t49.5 -29.5l280 -281q18 -18 30.5 -49t12.5 -55v-62v-678q0 -27 -17 -44t-44 -17h-860q-27 0 -44.5 17.5t-17.5 43.5v246h-536q-33 0 -55.5 22.5t-22.5 55.5zM276 1321 q0 -12 9.5 -21.5t21.5 -9.5h461q12 0 21.5 9.5t9.5 21.5v61q0 12 -9.5 21.5t-21.5 9.5h-461q-12 0 -21.5 -9t-9.5 -22v-61zM737 123h738v555h-367q-27 0 -44 17.5t-17 43.5v367h-310v-983zM1169 801h306q0 2 -3.5 8t-5.5 10l-280 279q0 4 -6 4q-2 0 -2 1t-2 1t-3.5 1t-3.5 1 v-305z" />
248
+ <glyph unicode="&#xf105;" horiz-adv-x="2048" />
249
+ <glyph unicode="&#xf200;" horiz-adv-x="1536" d="M0 57v379q0 39 20.5 87t54.5 90t74.5 73t81.5 35q-35 -59 -34 -129q0 -59 16 -124t59 -106q-18 -37 -18 -75q0 -72 50 -122t122 -50q37 0 68.5 13t55 36.5t37 55.5t13.5 67t-13.5 66.5t-37 55t-55 38t-68.5 14.5q-18 0 -36.5 -5t-35.5 -14q-12 12 -20 31t-13.5 40.5 t-7.5 41.5t-2 37q0 47 28 86t62 67l142 21q-92 57 -142.5 150.5t-50.5 201.5q0 86 33 162t90 133t133 90t162 33t162 -33t133 -90t90 -133t33 -162q0 -109 -50.5 -202t-142.5 -150l158 -23q18 -16 34.5 -36.5t16.5 -47.5q0 -45 -18 -77q-59 33 -121 32q-45 0 -87 -17 t-77 -46q-6 2 -11 3t-11 1q-47 0 -82 -34t-35 -81t34.5 -80.5t82.5 -33.5q47 0 80.5 33.5t33.5 80.5q0 8 -2 15.5t-4 13.5q16 12 35.5 20.5t42.5 8.5q55 0 95 -39t40 -94q0 -23 -8 -41.5t-19 -34.5q-25 10 -45 10q-47 0 -81.5 -34t-34.5 -81t34.5 -80.5t81.5 -33.5t81 33.5 t34 80.5l-2 4q74 74 74 177q0 74 -41 137q45 70 45 157q0 31 -12 62q41 -4 83 -34t74.5 -72t53 -90t20.5 -89v-379q-10 -6 -22.5 -15t-25.5 -18.5t-26.5 -16.5t-21.5 -7h-1344q-35 0 -52 20.5t-44 36.5zM369 287q0 25 17 41t40 16q25 0 41 -16t16 -41q0 -23 -16 -40.5 t-41 -17.5q-23 0 -40 17.5t-17 40.5z" />
250
+ <glyph unicode="&#xf201;" horiz-adv-x="1597" />
251
+ <glyph unicode="&#xf202;" horiz-adv-x="1597" />
252
+ <glyph unicode="&#xf203;" horiz-adv-x="1597" />
253
+ <glyph unicode="&#xf204;" horiz-adv-x="1597" />
254
+ </font>
255
+ </defs></svg>
assets/jui/fonts/fontawesome-webfont.ttf ADDED
Binary file
assets/jui/fonts/fontawesome-webfont.woff ADDED
Binary file
assets/jui/fonts/icomoon-license.txt ADDED
@@ -0,0 +1,2 @@
 
 
1
+ Icon Set: IcoMoon -- http://keyamoon.com/icomoon/
2
+ License: Arbitrary -- http://keyamoon.com/icomoon/#toLicense
assets/jui/fonts/index.html ADDED
@@ -0,0 +1 @@
 
1
+ <!DOCTYPE html><title></title>
assets/jui/img/glyphicons-halflings-white.png ADDED
Binary file
assets/jui/img/glyphicons-halflings.png ADDED
Binary file
assets/jui/img/index.html ADDED
@@ -0,0 +1 @@
 
1
+ <!DOCTYPE html><title></title>
assets/jui/js/bootstrap.js ADDED
@@ -0,0 +1,2054 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ===================================================
2
+ * bootstrap-transition.js v2.1.0
3
+ * http://twitter.github.com/bootstrap/javascript.html#transitions
4
+ * ===================================================
5
+ * Copyright 2012 Twitter, Inc.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * ========================================================== */
19
+
20
+
21
+ !function ($) {
22
+
23
+ $(function () {
24
+
25
+ "use strict"; // jshint ;_;
26
+
27
+
28
+ /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
29
+ * ======================================================= */
30
+
31
+ $.support.transition = (function () {
32
+
33
+ var transitionEnd = (function () {
34
+
35
+ var el = document.createElement('bootstrap')
36
+ , transEndEventNames = {
37
+ 'WebkitTransition' : 'webkitTransitionEnd'
38
+ , 'MozTransition' : 'transitionend'
39
+ , 'OTransition' : 'oTransitionEnd otransitionend'
40
+ , 'transition' : 'transitionend'
41
+ }
42
+ , name
43
+
44
+ for (name in transEndEventNames){
45
+ if (el.style[name] !== undefined) {
46
+ return transEndEventNames[name]
47
+ }
48
+ }
49
+
50
+ }())
51
+
52
+ return transitionEnd && {
53
+ end: transitionEnd
54
+ }
55
+
56
+ })()
57
+
58
+ })
59
+
60
+ }(window.jQuery);/* ==========================================================
61
+ * bootstrap-alert.js v2.1.0
62
+ * http://twitter.github.com/bootstrap/javascript.html#alerts
63
+ * ==========================================================
64
+ * Copyright 2012 Twitter, Inc.
65
+ *
66
+ * Licensed under the Apache License, Version 2.0 (the "License");
67
+ * you may not use this file except in compliance with the License.
68
+ * You may obtain a copy of the License at
69
+ *
70
+ * http://www.apache.org/licenses/LICENSE-2.0
71
+ *
72
+ * Unless required by applicable law or agreed to in writing, software
73
+ * distributed under the License is distributed on an "AS IS" BASIS,
74
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
75
+ * See the License for the specific language governing permissions and
76
+ * limitations under the License.
77
+ * ========================================================== */
78
+
79
+
80
+ !function ($) {
81
+
82
+ "use strict"; // jshint ;_;
83
+
84
+
85
+ /* ALERT CLASS DEFINITION
86
+ * ====================== */
87
+
88
+ var dismiss = '[data-dismiss="alert"]'
89
+ , Alert = function (el) {
90
+ $(el).on('click', dismiss, this.close)
91
+ }
92
+
93
+ Alert.prototype.close = function (e) {
94
+ var $this = $(this)
95
+ , selector = $this.attr('data-target')
96
+ , $parent
97
+
98
+ if (!selector) {
99
+ selector = $this.attr('href')
100
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
101
+ }
102
+
103
+ $parent = $(selector)
104
+
105
+ e && e.preventDefault()
106
+
107
+ $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
108
+
109
+ $parent.trigger(e = $.Event('close'))
110
+
111
+ if (e.isDefaultPrevented()) return
112
+
113
+ $parent.removeClass('in')
114
+
115
+ function removeElement() {
116
+ $parent
117
+ .trigger('closed')
118
+ .remove()
119
+ }
120
+
121
+ $.support.transition && $parent.hasClass('fade') ?
122
+ $parent.on($.support.transition.end, removeElement) :
123
+ removeElement()
124
+ }
125
+
126
+
127
+ /* ALERT PLUGIN DEFINITION
128
+ * ======================= */
129
+
130
+ $.fn.alert = function (option) {
131
+ return this.each(function () {
132
+ var $this = $(this)
133
+ , data = $this.data('alert')
134
+ if (!data) $this.data('alert', (data = new Alert(this)))
135
+ if (typeof option == 'string') data[option].call($this)
136
+ })
137
+ }
138
+
139
+ $.fn.alert.Constructor = Alert
140
+
141
+
142
+ /* ALERT DATA-API
143
+ * ============== */
144
+
145
+ $(function () {
146
+ $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
147
+ })
148
+
149
+ }(window.jQuery);/* ============================================================
150
+ * bootstrap-button.js v2.1.0
151
+ * http://twitter.github.com/bootstrap/javascript.html#buttons
152
+ * ============================================================
153
+ * Copyright 2012 Twitter, Inc.
154
+ *
155
+ * Licensed under the Apache License, Version 2.0 (the "License");
156
+ * you may not use this file except in compliance with the License.
157
+ * You may obtain a copy of the License at
158
+ *
159
+ * http://www.apache.org/licenses/LICENSE-2.0
160
+ *
161
+ * Unless required by applicable law or agreed to in writing, software
162
+ * distributed under the License is distributed on an "AS IS" BASIS,
163
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
164
+ * See the License for the specific language governing permissions and
165
+ * limitations under the License.
166
+ * ============================================================ */
167
+
168
+
169
+ !function ($) {
170
+
171
+ "use strict"; // jshint ;_;
172
+
173
+
174
+ /* BUTTON PUBLIC CLASS DEFINITION
175
+ * ============================== */
176
+
177
+ var Button = function (element, options) {
178
+ this.$element = $(element)
179
+ this.options = $.extend({}, $.fn.button.defaults, options)
180
+ }
181
+
182
+ Button.prototype.setState = function (state) {
183
+ var d = 'disabled'
184
+ , $el = this.$element
185
+ , data = $el.data()
186
+ , val = $el.is('input') ? 'val' : 'html'
187
+
188
+ state = state + 'Text'
189
+ data.resetText || $el.data('resetText', $el[val]())
190
+
191
+ $el[val](data[state] || this.options[state])
192
+
193
+ // push to event loop to allow forms to submit
194
+ setTimeout(function () {
195
+ state == 'loadingText' ?
196
+ $el.addClass(d).attr(d, d) :
197
+ $el.removeClass(d).removeAttr(d)
198
+ }, 0)
199
+ }
200
+
201
+ Button.prototype.toggle = function () {
202
+ var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
203
+
204
+ $parent && $parent
205
+ .find('.active')
206
+ .removeClass('active')
207
+
208
+ this.$element.toggleClass('active')
209
+ }
210
+
211
+
212
+ /* BUTTON PLUGIN DEFINITION
213
+ * ======================== */
214
+
215
+ $.fn.button = function (option) {
216
+ return this.each(function () {
217
+ var $this = $(this)
218
+ , data = $this.data('button')
219
+ , options = typeof option == 'object' && option
220
+ if (!data) $this.data('button', (data = new Button(this, options)))
221
+ if (option == 'toggle') data.toggle()
222
+ else if (option) data.setState(option)
223
+ })
224
+ }
225
+
226
+ $.fn.button.defaults = {
227
+ loadingText: 'loading...'
228
+ }
229
+
230
+ $.fn.button.Constructor = Button
231
+
232
+
233
+ /* BUTTON DATA-API
234
+ * =============== */
235
+
236
+ $(function () {
237
+ $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
238
+ var $btn = $(e.target)
239
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
240
+ $btn.button('toggle')
241
+ })
242
+ })
243
+
244
+ }(window.jQuery);/* ==========================================================
245
+ * bootstrap-carousel.js v2.1.0
246
+ * http://twitter.github.com/bootstrap/javascript.html#carousel
247
+ * ==========================================================
248
+ * Copyright 2012 Twitter, Inc.
249
+ *
250
+ * Licensed under the Apache License, Version 2.0 (the "License");
251
+ * you may not use this file except in compliance with the License.
252
+ * You may obtain a copy of the License at
253
+ *
254
+ * http://www.apache.org/licenses/LICENSE-2.0
255
+ *
256
+ * Unless required by applicable law or agreed to in writing, software
257
+ * distributed under the License is distributed on an "AS IS" BASIS,
258
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
259
+ * See the License for the specific language governing permissions and
260
+ * limitations under the License.
261
+ * ========================================================== */
262
+
263
+
264
+ !function ($) {
265
+
266
+ "use strict"; // jshint ;_;
267
+
268
+
269
+ /* CAROUSEL CLASS DEFINITION
270
+ * ========================= */
271
+
272
+ var Carousel = function (element, options) {
273
+ this.$element = $(element)
274
+ this.options = options
275
+ this.options.slide && this.slide(this.options.slide)
276
+ this.options.pause == 'hover' && this.$element
277
+ .on('mouseenter', $.proxy(this.pause, this))
278
+ .on('mouseleave', $.proxy(this.cycle, this))
279
+ }
280
+
281
+ Carousel.prototype = {
282
+
283
+ cycle: function (e) {
284
+ if (!e) this.paused = false
285
+ this.options.interval
286
+ && !this.paused
287
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
288
+ return this
289
+ }
290
+
291
+ , to: function (pos) {
292
+ var $active = this.$element.find('.item.active')
293
+ , children = $active.parent().children()
294
+ , activePos = children.index($active)
295
+ , that = this
296
+
297
+ if (pos > (children.length - 1) || pos < 0) return
298
+
299
+ if (this.sliding) {
300
+ return this.$element.one('slid', function () {
301
+ that.to(pos)
302
+ })
303
+ }
304
+
305
+ if (activePos == pos) {
306
+ return this.pause().cycle()
307
+ }
308
+
309
+ return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
310
+ }
311
+
312
+ , pause: function (e) {
313
+ if (!e) this.paused = true
314
+ if (this.$element.find('.next, .prev').length && $.support.transition.end) {
315
+ this.$element.trigger($.support.transition.end)
316
+ this.cycle()
317
+ }
318
+ clearInterval(this.interval)
319
+ this.interval = null
320
+ return this
321
+ }
322
+
323
+ , next: function () {
324
+ if (this.sliding) return
325
+ return this.slide('next')
326
+ }
327
+
328
+ , prev: function () {
329
+ if (this.sliding) return
330
+ return this.slide('prev')
331
+ }
332
+
333
+ , slide: function (type, next) {
334
+ var $active = this.$element.find('.item.active')
335
+ , $next = next || $active[type]()
336
+ , isCycling = this.interval
337
+ , direction = type == 'next' ? 'left' : 'right'
338
+ , fallback = type == 'next' ? 'first' : 'last'
339
+ , that = this
340
+ , e = $.Event('slide', {
341
+ relatedTarget: $next[0]
342
+ })
343
+
344
+ this.sliding = true
345
+
346
+ isCycling && this.pause()
347
+
348
+ $next = $next.length ? $next : this.$element.find('.item')[fallback]()
349
+
350
+ if ($next.hasClass('active')) return
351
+
352
+ if ($.support.transition && this.$element.hasClass('slide')) {
353
+ this.$element.trigger(e)
354
+ if (e.isDefaultPrevented()) return
355
+ $next.addClass(type)
356
+ $next[0].offsetWidth // force reflow
357
+ $active.addClass(direction)
358
+ $next.addClass(direction)
359
+ this.$element.one($.support.transition.end, function () {
360
+ $next.removeClass([type, direction].join(' ')).addClass('active')
361
+ $active.removeClass(['active', direction].join(' '))
362
+ that.sliding = false
363
+ setTimeout(function () { that.$element.trigger('slid') }, 0)
364
+ })
365
+ } else {
366
+ this.$element.trigger(e)
367
+ if (e.isDefaultPrevented()) return
368
+ $active.removeClass('active')
369
+ $next.addClass('active')
370
+ this.sliding = false
371
+ this.$element.trigger('slid')
372
+ }
373
+
374
+ isCycling && this.cycle()
375
+
376
+ return this
377
+ }
378
+
379
+ }
380
+
381
+
382
+ /* CAROUSEL PLUGIN DEFINITION
383
+ * ========================== */
384
+
385
+ $.fn.carousel = function (option) {
386
+ return this.each(function () {
387
+ var $this = $(this)
388
+ , data = $this.data('carousel')
389
+ , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
390
+ , action = typeof option == 'string' ? option : options.slide
391
+ if (!data) $this.data('carousel', (data = new Carousel(this, options)))
392
+ if (typeof option == 'number') data.to(option)
393
+ else if (action) data[action]()
394
+ else if (options.interval) data.cycle()
395
+ })
396
+ }
397
+
398
+ $.fn.carousel.defaults = {
399
+ interval: 5000
400
+ , pause: 'hover'
401
+ }
402
+
403
+ $.fn.carousel.Constructor = Carousel
404
+
405
+
406
+ /* CAROUSEL DATA-API
407
+ * ================= */
408
+
409
+ $(function () {
410
+ $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
411
+ var $this = $(this), href
412
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
413
+ , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
414
+ $target.carousel(options)
415
+ e.preventDefault()
416
+ })
417
+ })
418
+
419
+ }(window.jQuery);/* =============================================================
420
+ * bootstrap-collapse.js v2.1.0
421
+ * http://twitter.github.com/bootstrap/javascript.html#collapse
422
+ * =============================================================
423
+ * Copyright 2012 Twitter, Inc.
424
+ *
425
+ * Licensed under the Apache License, Version 2.0 (the "License");
426
+ * you may not use this file except in compliance with the License.
427
+ * You may obtain a copy of the License at
428
+ *
429
+ * http://www.apache.org/licenses/LICENSE-2.0
430
+ *
431
+ * Unless required by applicable law or agreed to in writing, software
432
+ * distributed under the License is distributed on an "AS IS" BASIS,
433
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
434
+ * See the License for the specific language governing permissions and
435
+ * limitations under the License.
436
+ * ============================================================ */
437
+
438
+
439
+ !function ($) {
440
+
441
+ "use strict"; // jshint ;_;
442
+
443
+
444
+ /* COLLAPSE PUBLIC CLASS DEFINITION
445
+ * ================================ */
446
+
447
+ var Collapse = function (element, options) {
448
+ this.$element = $(element)
449
+ this.options = $.extend({}, $.fn.collapse.defaults, options)
450
+
451
+ if (this.options.parent) {
452
+ this.$parent = $(this.options.parent)
453
+ }
454
+
455
+ this.options.toggle && this.toggle()
456
+ }
457
+
458
+ Collapse.prototype = {
459
+
460
+ constructor: Collapse
461
+
462
+ , dimension: function () {
463
+ var hasWidth = this.$element.hasClass('width')
464
+ return hasWidth ? 'width' : 'height'
465
+ }
466
+
467
+ , show: function () {
468
+ var dimension
469
+ , scroll
470
+ , actives
471
+ , hasData
472
+
473
+ if (this.transitioning) return
474
+
475
+ dimension = this.dimension()
476
+ scroll = $.camelCase(['scroll', dimension].join('-'))
477
+ actives = this.$parent && this.$parent.find('> .accordion-group > .in')
478
+
479
+ if (actives && actives.length) {
480
+ hasData = actives.data('collapse')
481
+ if (hasData && hasData.transitioning) return
482
+ actives.collapse('hide')
483
+ hasData || actives.data('collapse', null)
484
+ }
485
+
486
+ this.$element[dimension](0)
487
+ this.transition('addClass', $.Event('show'), 'shown')
488
+ $.support.transition && this.$element[dimension](this.$element[0][scroll])
489
+ }
490
+
491
+ , hide: function () {
492
+ var dimension
493
+ if (this.transitioning) return
494
+ dimension = this.dimension()
495
+ this.reset(this.$element[dimension]())
496
+ /* >>> JUI >>> */
497
+ this.transition('removeClass', $.Event('hideme'), 'hidden')
498
+ /* <<< JUI <<< */
499
+ this.$element[dimension](0)
500
+ }
501
+
502
+ , reset: function (size) {
503
+ var dimension = this.dimension()
504
+
505
+ this.$element
506
+ .removeClass('collapse')
507
+ [dimension](size || 'auto')
508
+ [0].offsetWidth
509
+
510
+ this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
511
+
512
+ return this
513
+ }
514
+
515
+ , transition: function (method, startEvent, completeEvent) {
516
+ var that = this
517
+ , complete = function () {
518
+ if (startEvent.type == 'show') that.reset()
519
+ that.transitioning = 0
520
+ that.$element.trigger(completeEvent)
521
+ }
522
+
523
+ this.$element.trigger(startEvent)
524
+
525
+ if (startEvent.isDefaultPrevented()) return
526
+
527
+ this.transitioning = 1
528
+
529
+ this.$element[method]('in')
530
+
531
+ $.support.transition && this.$element.hasClass('collapse') ?
532
+ this.$element.one($.support.transition.end, complete) :
533
+ complete()
534
+ }
535
+
536
+ , toggle: function () {
537
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
538
+ }
539
+
540
+ }
541
+
542
+
543
+ /* COLLAPSIBLE PLUGIN DEFINITION
544
+ * ============================== */
545
+
546
+ $.fn.collapse = function (option) {
547
+ return this.each(function () {
548
+ var $this = $(this)
549
+ , data = $this.data('collapse')
550
+ , options = typeof option == 'object' && option
551
+ if (!data) $this.data('collapse', (data = new Collapse(this, options)))
552
+ if (typeof option == 'string') data[option]()
553
+ })
554
+ }
555
+
556
+ $.fn.collapse.defaults = {
557
+ toggle: true
558
+ }
559
+
560
+ $.fn.collapse.Constructor = Collapse
561
+
562
+
563
+ /* COLLAPSIBLE DATA-API
564
+ * ==================== */
565
+
566
+ $(function () {
567
+ $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
568
+ var $this = $(this), href
569
+ , target = $this.attr('data-target')
570
+ || e.preventDefault()
571
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
572
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
573
+ $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
574
+ $(target).collapse(option)
575
+ })
576
+ })
577
+
578
+ }(window.jQuery);/* ============================================================
579
+ * bootstrap-dropdown.js v2.1.0
580
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
581
+ * ============================================================
582
+ * Copyright 2012 Twitter, Inc.
583
+ *
584
+ * Licensed under the Apache License, Version 2.0 (the "License");
585
+ * you may not use this file except in compliance with the License.
586
+ * You may obtain a copy of the License at
587
+ *
588
+ * http://www.apache.org/licenses/LICENSE-2.0
589
+ *
590
+ * Unless required by applicable law or agreed to in writing, software
591
+ * distributed under the License is distributed on an "AS IS" BASIS,
592
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
593
+ * See the License for the specific language governing permissions and
594
+ * limitations under the License.
595
+ * ============================================================ */
596
+
597
+
598
+ !function ($) {
599
+
600
+ "use strict"; // jshint ;_;
601
+
602
+
603
+ /* DROPDOWN CLASS DEFINITION
604
+ * ========================= */
605
+
606
+ var toggle = '[data-toggle=dropdown]'
607
+ , Dropdown = function (element) {
608
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
609
+ /* >>> JUI >>> */
610
+ .on('mouseover.dropdown.data-api', this.toggle)
611
+ /* <<< JUI <<< */
612
+ $('html').on('click.dropdown.data-api', function () {
613
+ /* >>> JUI >>> */
614
+ $el.parent().parent().removeClass('nav-hover')
615
+ /* <<< JUI <<< */
616
+ $el.parent().removeClass('open')
617
+ })
618
+ }
619
+
620
+ Dropdown.prototype = {
621
+
622
+ constructor: Dropdown
623
+
624
+ , toggle: function (e) {
625
+ var $this = $(this)
626
+ , $parent
627
+ , isActive
628
+ /* >>> JUI >>> */
629
+ , isHover
630
+ /* <<< JUI <<< */
631
+
632
+ if ($this.is('.disabled, :disabled')) return
633
+
634
+ $parent = getParent($this)
635
+
636
+ isActive = $parent.hasClass('open')
637
+ /* >>> JUI >>> */
638
+ isHover = $parent.parent().hasClass('nav-hover')
639
+ /* <<< JUI <<< */
640
+
641
+ clearMenus()
642
+
643
+ /* >>> JUI >>> */
644
+ if ((!isActive && e.type == 'click') || (isHover && e.type == 'mouseover')){
645
+ $parent.parent().toggleClass('nav-hover')
646
+ $parent.toggleClass('open')
647
+ }
648
+ /* <<< JUI <<< */
649
+
650
+ // if (!isActive) {
651
+ // $parent.toggleClass('open')
652
+ // $this.focus()
653
+ // }
654
+
655
+ return false
656
+ }
657
+
658
+ , keydown: function (e) {
659
+ var $this
660
+ , $items
661
+ , $active
662
+ , $parent
663
+ , isActive
664
+ , index
665
+
666
+ if (!/(38|40|27)/.test(e.keyCode)) return
667
+
668
+ $this = $(this)
669
+
670
+ e.preventDefault()
671
+ e.stopPropagation()
672
+
673
+ if ($this.is('.disabled, :disabled')) return
674
+
675
+ $parent = getParent($this)
676
+
677
+ isActive = $parent.hasClass('open')
678
+
679
+ if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
680
+
681
+ $items = $('[role=menu] li:not(.divider) a', $parent)
682
+
683
+ if (!$items.length) return
684
+
685
+ index = $items.index($items.filter(':focus'))
686
+
687
+ if (e.keyCode == 38 && index > 0) index-- // up
688
+ if (e.keyCode == 40 && index < $items.length - 1) index++ // down
689
+ if (!~index) index = 0
690
+
691
+ $items
692
+ .eq(index)
693
+ .focus()
694
+ }
695
+
696
+ }
697
+
698
+ function clearMenus() {
699
+ /* >>> JUI >>> */
700
+ $(toggle).parent().parent().removeClass('nav-hover')
701
+ /* <<< JUI <<< */
702
+ getParent($(toggle))
703
+ .removeClass('open')
704
+ }
705
+
706
+ function getParent($this) {
707
+ var selector = $this.attr('data-target')
708
+ , $parent
709
+
710
+ if (!selector) {
711
+ selector = $this.attr('href')
712
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
713
+ }
714
+
715
+ $parent = $(selector)
716
+ $parent.length || ($parent = $this.parent())
717
+
718
+ return $parent
719
+ }
720
+
721
+
722
+ /* DROPDOWN PLUGIN DEFINITION
723
+ * ========================== */
724
+
725
+ $.fn.dropdown = function (option) {
726
+ return this.each(function () {
727
+ var $this = $(this)
728
+ , data = $this.data('dropdown')
729
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
730
+ if (typeof option == 'string') data[option].call($this)
731
+ })
732
+ }
733
+
734
+ $.fn.dropdown.Constructor = Dropdown
735
+
736
+
737
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
738
+ * =================================== */
739
+
740
+ $(function () {
741
+ $('html')
742
+ .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
743
+ $('body')
744
+ .on('click.dropdown touchstart.dropdown.data-api', '.dropdown', function (e) { e.stopPropagation() })
745
+ .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
746
+ .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
747
+ /* >>> JUI >>> */
748
+ .on('mouseover.dropdown.data-api', toggle, Dropdown.prototype.toggle)
749
+ /* <<< JUI <<< */
750
+ })
751
+
752
+ }(window.jQuery);/* =========================================================
753
+ * bootstrap-modal.js v2.1.0
754
+ * http://twitter.github.com/bootstrap/javascript.html#modals
755
+ * =========================================================
756
+ * Copyright 2012 Twitter, Inc.
757
+ *
758
+ * Licensed under the Apache License, Version 2.0 (the "License");
759
+ * you may not use this file except in compliance with the License.
760
+ * You may obtain a copy of the License at
761
+ *
762
+ * http://www.apache.org/licenses/LICENSE-2.0
763
+ *
764
+ * Unless required by applicable law or agreed to in writing, software
765
+ * distributed under the License is distributed on an "AS IS" BASIS,
766
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
767
+ * See the License for the specific language governing permissions and
768
+ * limitations under the License.
769
+ * ========================================================= */
770
+
771
+
772
+ !function ($) {
773
+
774
+ "use strict"; // jshint ;_;
775
+
776
+
777
+ /* MODAL CLASS DEFINITION
778
+ * ====================== */
779
+
780
+ var Modal = function (element, options) {
781
+ this.options = options
782
+ this.$element = $(element)
783
+ .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
784
+ this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
785
+ }
786
+
787
+ Modal.prototype = {
788
+
789
+ constructor: Modal
790
+
791
+ , toggle: function () {
792
+ return this[!this.isShown ? 'show' : 'hide']()
793
+ }
794
+
795
+ , show: function () {
796
+ var that = this
797
+ , e = $.Event('show')
798
+
799
+ this.$element.trigger(e)
800
+
801
+ if (this.isShown || e.isDefaultPrevented()) return
802
+
803
+ $('body').addClass('modal-open')
804
+
805
+ this.isShown = true
806
+
807
+ this.escape()
808
+
809
+ this.backdrop(function () {
810
+ var transition = $.support.transition && that.$element.hasClass('fade')
811
+
812
+ if (!that.$element.parent().length) {
813
+ that.$element.appendTo(document.body) //don't move modals dom position
814
+ }
815
+
816
+ that.$element
817
+ .show()
818
+
819
+ if (transition) {
820
+ that.$element[0].offsetWidth // force reflow
821
+ }
822
+
823
+ that.$element
824
+ .addClass('in')
825
+ .attr('aria-hidden', false)
826
+ .focus()
827
+
828
+ that.enforceFocus()
829
+
830
+ transition ?
831
+ that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
832
+ that.$element.trigger('shown')
833
+
834
+ })
835
+ }
836
+
837
+ , hide: function (e) {
838
+ e && e.preventDefault()
839
+
840
+ var that = this
841
+
842
+ e = $.Event('hide')
843
+
844
+ this.$element.trigger(e)
845
+
846
+ if (!this.isShown || e.isDefaultPrevented()) return
847
+
848
+ this.isShown = false
849
+
850
+ $('body').removeClass('modal-open')
851
+
852
+ this.escape()
853
+
854
+ $(document).off('focusin.modal')
855
+
856
+ this.$element
857
+ .removeClass('in')
858
+ .attr('aria-hidden', true)
859
+
860
+ $.support.transition && this.$element.hasClass('fade') ?
861
+ this.hideWithTransition() :
862
+ this.hideModal()
863
+ }
864
+
865
+ , enforceFocus: function () {
866
+ var that = this
867
+ $(document).on('focusin.modal', function (e) {
868
+ if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
869
+ that.$element.focus()
870
+ }
871
+ })
872
+ }
873
+
874
+ , escape: function () {
875
+ var that = this
876
+ if (this.isShown && this.options.keyboard) {
877
+ this.$element.on('keyup.dismiss.modal', function ( e ) {
878
+ e.which == 27 && that.hide()
879
+ })
880
+ } else if (!this.isShown) {
881
+ this.$element.off('keyup.dismiss.modal')
882
+ }
883
+ }
884
+
885
+ , hideWithTransition: function () {
886
+ var that = this
887
+ , timeout = setTimeout(function () {
888
+ that.$element.off($.support.transition.end)
889
+ that.hideModal()
890
+ }, 500)
891
+
892
+ this.$element.one($.support.transition.end, function () {
893
+ clearTimeout(timeout)
894
+ that.hideModal()
895
+ })
896
+ }
897
+
898
+ , hideModal: function (that) {
899
+ this.$element
900
+ .hide()
901
+ .trigger('hidden')
902
+
903
+ this.backdrop()
904
+ }
905
+
906
+ , removeBackdrop: function () {
907
+ this.$backdrop.remove()
908
+ this.$backdrop = null
909
+ }
910
+
911
+ , backdrop: function (callback) {
912
+ var that = this
913
+ , animate = this.$element.hasClass('fade') ? 'fade' : ''
914
+
915
+ if (this.isShown && this.options.backdrop) {
916
+ var doAnimate = $.support.transition && animate
917
+
918
+ this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
919
+ .appendTo(document.body)
920
+
921
+ if (this.options.backdrop != 'static') {
922
+ this.$backdrop.click($.proxy(this.hide, this))
923
+ }
924
+
925
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
926
+
927
+ this.$backdrop.addClass('in')
928
+
929
+ doAnimate ?
930
+ this.$backdrop.one($.support.transition.end, callback) :
931
+ callback()
932
+
933
+ } else if (!this.isShown && this.$backdrop) {
934
+ this.$backdrop.removeClass('in')
935
+
936
+ $.support.transition && this.$element.hasClass('fade')?
937
+ this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) :
938
+ this.removeBackdrop()
939
+
940
+ } else if (callback) {
941
+ callback()
942
+ }
943
+ }
944
+ }
945
+
946
+
947
+ /* MODAL PLUGIN DEFINITION
948
+ * ======================= */
949
+
950
+ $.fn.modal = function (option) {
951
+ return this.each(function () {
952
+ var $this = $(this)
953
+ , data = $this.data('modal')
954
+ , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
955
+ if (!data) $this.data('modal', (data = new Modal(this, options)))
956
+ if (typeof option == 'string') data[option]()
957
+ else if (options.show) data.show()
958
+ })
959
+ }
960
+
961
+ $.fn.modal.defaults = {
962
+ backdrop: true
963
+ , keyboard: true
964
+ , show: true
965
+ }
966
+
967
+ $.fn.modal.Constructor = Modal
968
+
969
+
970
+ /* MODAL DATA-API
971
+ * ============== */
972
+
973
+ $(function () {
974
+ $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
975
+ var $this = $(this)
976
+ , href = $this.attr('href')
977
+ , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
978
+ , option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
979
+
980
+ e.preventDefault()
981
+
982
+ $target
983
+ .modal(option)
984
+ .one('hide', function () {
985
+ $this.focus()
986
+ })
987
+ })
988
+ })
989
+
990
+ }(window.jQuery);/* ===========================================================
991
+ * bootstrap-tooltip.js v2.1.0
992
+ * http://twitter.github.com/bootstrap/javascript.html#tooltips
993
+ * Inspired by the original jQuery.tipsy by Jason Frame
994
+ * ===========================================================
995
+ * Copyright 2012 Twitter, Inc.
996
+ *
997
+ * Licensed under the Apache License, Version 2.0 (the "License");
998
+ * you may not use this file except in compliance with the License.
999
+ * You may obtain a copy of the License at
1000
+ *
1001
+ * http://www.apache.org/licenses/LICENSE-2.0
1002
+ *
1003
+ * Unless required by applicable law or agreed to in writing, software
1004
+ * distributed under the License is distributed on an "AS IS" BASIS,
1005
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1006
+ * See the License for the specific language governing permissions and
1007
+ * limitations under the License.
1008
+ * ========================================================== */
1009
+
1010
+
1011
+ !function ($) {
1012
+
1013
+ "use strict"; // jshint ;_;
1014
+
1015
+
1016
+ /* TOOLTIP PUBLIC CLASS DEFINITION
1017
+ * =============================== */
1018
+
1019
+ var Tooltip = function (element, options) {
1020
+ this.init('tooltip', element, options)
1021
+ }
1022
+
1023
+ Tooltip.prototype = {
1024
+
1025
+ constructor: Tooltip
1026
+
1027
+ , init: function (type, element, options) {
1028
+ var eventIn
1029
+ , eventOut
1030
+
1031
+ this.type = type
1032
+ this.$element = $(element)
1033
+ this.options = this.getOptions(options)
1034
+ this.enabled = true
1035
+
1036
+ if (this.options.trigger == 'click') {
1037
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
1038
+ } else if (this.options.trigger != 'manual') {
1039
+ eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
1040
+ eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
1041
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
1042
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
1043
+ }
1044
+
1045
+ this.options.selector ?
1046
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
1047
+ this.fixTitle()
1048
+ }
1049
+
1050
+ , getOptions: function (options) {
1051
+ options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
1052
+
1053
+ if (options.delay && typeof options.delay == 'number') {
1054
+ options.delay = {
1055
+ show: options.delay
1056
+ , hide: options.delay
1057
+ }
1058
+ }
1059
+
1060
+ return options
1061
+ }
1062
+
1063
+ , enter: function (e) {
1064
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
1065
+
1066
+ if (!self.options.delay || !self.options.delay.show) return self.show()
1067
+
1068
+ clearTimeout(this.timeout)
1069
+ self.hoverState = 'in'
1070
+ this.timeout = setTimeout(function() {
1071
+ if (self.hoverState == 'in') self.show()
1072
+ }, self.options.delay.show)
1073
+ }
1074
+
1075
+ , leave: function (e) {
1076
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
1077
+
1078
+ if (this.timeout) clearTimeout(this.timeout)
1079
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
1080
+
1081
+ self.hoverState = 'out'
1082
+ this.timeout = setTimeout(function() {
1083
+ if (self.hoverState == 'out') self.hide()
1084
+ }, self.options.delay.hide)
1085
+ }
1086
+
1087
+ , show: function () {
1088
+ var $tip
1089
+ , inside
1090
+ , pos
1091
+ , actualWidth
1092
+ , actualHeight
1093
+ , placement
1094
+ , tp
1095
+
1096
+ if (this.hasContent() && this.enabled) {
1097
+ $tip = this.tip()
1098
+ this.setContent()
1099
+
1100
+ if (this.options.animation) {
1101
+ $tip.addClass('fade')
1102
+ }
1103
+
1104
+ placement = typeof this.options.placement == 'function' ?
1105
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
1106
+ this.options.placement
1107
+
1108
+ inside = /in/.test(placement)
1109
+
1110
+ $tip
1111
+ .remove()
1112
+ .css({ top: 0, left: 0, display: 'block' })
1113
+ .appendTo(inside ? this.$element : document.body)
1114
+
1115
+ pos = this.getPosition(inside)
1116
+
1117
+ actualWidth = $tip[0].offsetWidth
1118
+ actualHeight = $tip[0].offsetHeight
1119
+
1120
+ switch (inside ? placement.split(' ')[1] : placement) {
1121
+ case 'bottom':
1122
+ tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
1123
+ break
1124
+ case 'top':
1125
+ tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
1126
+ break
1127
+ case 'left':
1128
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
1129
+ break
1130
+ case 'right':
1131
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
1132
+ break
1133
+ }
1134
+
1135
+ $tip
1136
+ .css(tp)
1137
+ .addClass(placement)
1138
+ .addClass('in')
1139
+ }
1140
+ }
1141
+
1142
+ , setContent: function () {
1143
+ var $tip = this.tip()
1144
+ , title = this.getTitle()
1145
+
1146
+ $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
1147
+ $tip.removeClass('fade in top bottom left right')
1148
+ }
1149
+
1150
+ , hide: function () {
1151
+ var that = this
1152
+ , $tip = this.tip()
1153
+
1154
+ $tip.removeClass('in')
1155
+
1156
+ function removeWithAnimation() {
1157
+ var timeout = setTimeout(function () {
1158
+ $tip.off($.support.transition.end).remove()
1159
+ }, 500)
1160
+
1161
+ $tip.one($.support.transition.end, function () {
1162
+ clearTimeout(timeout)
1163
+ $tip.remove()
1164
+ })
1165
+ }
1166
+
1167
+ $.support.transition && this.$tip.hasClass('fade') ?
1168
+ removeWithAnimation() :
1169
+ $tip.remove()
1170
+
1171
+ return this
1172
+ }
1173
+
1174
+ , fixTitle: function () {
1175
+ var $e = this.$element
1176
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
1177
+ $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
1178
+ }
1179
+ }
1180
+
1181
+ , hasContent: function () {
1182
+ return this.getTitle()
1183
+ }
1184
+
1185
+ , getPosition: function (inside) {
1186
+ return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
1187
+ width: this.$element[0].offsetWidth
1188
+ , height: this.$element[0].offsetHeight
1189
+ })
1190
+ }
1191
+
1192
+ , getTitle: function () {
1193
+ var title
1194
+ , $e = this.$element
1195
+ , o = this.options
1196
+
1197
+ title = $e.attr('data-original-title')
1198
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
1199
+
1200
+ return title
1201
+ }
1202
+
1203
+ , tip: function () {
1204
+ return this.$tip = this.$tip || $(this.options.template)
1205
+ }
1206
+
1207
+ , validate: function () {
1208
+ if (!this.$element[0].parentNode) {
1209
+ this.hide()
1210
+ this.$element = null
1211
+ this.options = null
1212
+ }
1213
+ }
1214
+
1215
+ , enable: function () {
1216
+ this.enabled = true
1217
+ }
1218
+
1219
+ , disable: function () {
1220
+ this.enabled = false
1221
+ }
1222
+
1223
+ , toggleEnabled: function () {
1224
+ this.enabled = !this.enabled
1225
+ }
1226
+
1227
+ , toggle: function () {
1228
+ this[this.tip().hasClass('in') ? 'hide' : 'show']()
1229
+ }
1230
+
1231
+ , destroy: function () {
1232
+ this.hide().$element.off('.' + this.type).removeData(this.type)
1233
+ }
1234
+
1235
+ }
1236
+
1237
+
1238
+ /* TOOLTIP PLUGIN DEFINITION
1239
+ * ========================= */
1240
+
1241
+ $.fn.tooltip = function ( option ) {
1242
+ return this.each(function () {
1243
+ var $this = $(this)
1244
+ , data = $this.data('tooltip')
1245
+ , options = typeof option == 'object' && option
1246
+ if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
1247
+ if (typeof option == 'string') data[option]()
1248
+ })
1249
+ }
1250
+
1251
+ $.fn.tooltip.Constructor = Tooltip
1252
+
1253
+ $.fn.tooltip.defaults = {
1254
+ animation: true
1255
+ , placement: 'top'
1256
+ , selector: false
1257
+ , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
1258
+ , trigger: 'hover'
1259
+ , title: ''
1260
+ , delay: 0
1261
+ , html: true
1262
+ }
1263
+
1264
+ }(window.jQuery);
1265
+ /* ===========================================================
1266
+ * bootstrap-popover.js v2.1.0
1267
+ * http://twitter.github.com/bootstrap/javascript.html#popovers
1268
+ * ===========================================================
1269
+ * Copyright 2012 Twitter, Inc.
1270
+ *
1271
+ * Licensed under the Apache License, Version 2.0 (the "License");
1272
+ * you may not use this file except in compliance with the License.
1273
+ * You may obtain a copy of the License at
1274
+ *
1275
+ * http://www.apache.org/licenses/LICENSE-2.0
1276
+ *
1277
+ * Unless required by applicable law or agreed to in writing, software
1278
+ * distributed under the License is distributed on an "AS IS" BASIS,
1279
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1280
+ * See the License for the specific language governing permissions and
1281
+ * limitations under the License.
1282
+ * =========================================================== */
1283
+
1284
+
1285
+ !function ($) {
1286
+
1287
+ "use strict"; // jshint ;_;
1288
+
1289
+
1290
+ /* POPOVER PUBLIC CLASS DEFINITION
1291
+ * =============================== */
1292
+
1293
+ var Popover = function (element, options) {
1294
+ this.init('popover', element, options)
1295
+ }
1296
+
1297
+
1298
+ /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
1299
+ ========================================== */
1300
+
1301
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
1302
+
1303
+ constructor: Popover
1304
+
1305
+ , setContent: function () {
1306
+ var $tip = this.tip()
1307
+ , title = this.getTitle()
1308
+ , content = this.getContent()
1309
+
1310
+ $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
1311
+ $tip.find('.popover-content > *')[this.options.html ? 'html' : 'text'](content)
1312
+
1313
+ $tip.removeClass('fade top bottom left right in')
1314
+ }
1315
+
1316
+ , hasContent: function () {
1317
+ return this.getTitle() || this.getContent()
1318
+ }
1319
+
1320
+ , getContent: function () {
1321
+ var content
1322
+ , $e = this.$element
1323
+ , o = this.options
1324
+
1325
+ content = $e.attr('data-content')
1326
+ || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
1327
+
1328
+ return content
1329
+ }
1330
+
1331
+ , tip: function () {
1332
+ if (!this.$tip) {
1333
+ this.$tip = $(this.options.template)
1334
+ }
1335
+ return this.$tip
1336
+ }
1337
+
1338
+ , destroy: function () {
1339
+ this.hide().$element.off('.' + this.type).removeData(this.type)
1340
+ }
1341
+
1342
+ })
1343
+
1344
+
1345
+ /* POPOVER PLUGIN DEFINITION
1346
+ * ======================= */
1347
+
1348
+ $.fn.popover = function (option) {
1349
+ return this.each(function () {
1350
+ var $this = $(this)
1351
+ , data = $this.data('popover')
1352
+ , options = typeof option == 'object' && option
1353
+ if (!data) $this.data('popover', (data = new Popover(this, options)))
1354
+ if (typeof option == 'string') data[option]()
1355
+ })
1356
+ }
1357
+
1358
+ $.fn.popover.Constructor = Popover
1359
+
1360
+ $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
1361
+ placement: 'right'
1362
+ , trigger: 'click'
1363
+ , content: ''
1364
+ , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
1365
+ })
1366
+
1367
+ }(window.jQuery);/* =============================================================
1368
+ * bootstrap-scrollspy.js v2.1.0
1369
+ * http://twitter.github.com/bootstrap/javascript.html#scrollspy
1370
+ * =============================================================
1371
+ * Copyright 2012 Twitter, Inc.
1372
+ *
1373
+ * Licensed under the Apache License, Version 2.0 (the "License");
1374
+ * you may not use this file except in compliance with the License.
1375
+ * You may obtain a copy of the License at
1376
+ *
1377
+ * http://www.apache.org/licenses/LICENSE-2.0
1378
+ *
1379
+ * Unless required by applicable law or agreed to in writing, software
1380
+ * distributed under the License is distributed on an "AS IS" BASIS,
1381
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1382
+ * See the License for the specific language governing permissions and
1383
+ * limitations under the License.
1384
+ * ============================================================== */
1385
+
1386
+
1387
+ !function ($) {
1388
+
1389
+ "use strict"; // jshint ;_;
1390
+
1391
+
1392
+ /* SCROLLSPY CLASS DEFINITION
1393
+ * ========================== */
1394
+
1395
+ function ScrollSpy(element, options) {
1396
+ var process = $.proxy(this.process, this)
1397
+ , $element = $(element).is('body') ? $(window) : $(element)
1398
+ , href
1399
+ this.options = $.extend({}, $.fn.scrollspy.defaults, options)
1400
+ this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
1401
+ this.selector = (this.options.target
1402
+ || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
1403
+ || '') + ' .nav li > a'
1404
+ this.$body = $('body')
1405
+ this.refresh()
1406
+ this.process()
1407
+ }
1408
+
1409
+ ScrollSpy.prototype = {
1410
+
1411
+ constructor: ScrollSpy
1412
+
1413
+ , refresh: function () {
1414
+ var self = this
1415
+ , $targets
1416
+
1417
+ this.offsets = $([])
1418
+ this.targets = $([])
1419
+
1420
+ $targets = this.$body
1421
+ .find(this.selector)
1422
+ .map(function () {
1423
+ var $el = $(this)
1424
+ , href = $el.data('target') || $el.attr('href')
1425
+ , $href = /^#\w/.test(href) && $(href)
1426
+ return ( $href
1427
+ && $href.length
1428
+ && [[ $href.position().top, href ]] ) || null
1429
+ })
1430
+ .sort(function (a, b) { return a[0] - b[0] })
1431
+ .each(function () {
1432
+ self.offsets.push(this[0])
1433
+ self.targets.push(this[1])
1434
+ })
1435
+ }
1436
+
1437
+ , process: function () {
1438
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
1439
+ , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
1440
+ , maxScroll = scrollHeight - this.$scrollElement.height()
1441
+ , offsets = this.offsets
1442
+ , targets = this.targets
1443
+ , activeTarget = this.activeTarget
1444
+ , i
1445
+
1446
+ if (scrollTop >= maxScroll) {
1447
+ return activeTarget != (i = targets.last()[0])
1448
+ && this.activate ( i )
1449
+ }
1450
+
1451
+ for (i = offsets.length; i--;) {
1452
+ activeTarget != targets[i]
1453
+ && scrollTop >= offsets[i]
1454
+ && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
1455
+ && this.activate( targets[i] )
1456
+ }
1457
+ }
1458
+
1459
+ , activate: function (target) {
1460
+ var active
1461
+ , selector
1462
+
1463
+ this.activeTarget = target
1464
+
1465
+ $(this.selector)
1466
+ .parent('.active')
1467
+ .removeClass('active')
1468
+
1469
+ selector = this.selector
1470
+ + '[data-target="' + target + '"],'
1471
+ + this.selector + '[href="' + target + '"]'
1472
+
1473
+ active = $(selector)
1474
+ .parent('li')
1475
+ .addClass('active')
1476
+
1477
+ if (active.parent('.dropdown-menu').length) {
1478
+ active = active.closest('li.dropdown').addClass('active')
1479
+ }
1480
+
1481
+ active.trigger('activate')
1482
+ }
1483
+
1484
+ }
1485
+
1486
+
1487
+ /* SCROLLSPY PLUGIN DEFINITION
1488
+ * =========================== */
1489
+
1490
+ $.fn.scrollspy = function (option) {
1491
+ return this.each(function () {
1492
+ var $this = $(this)
1493
+ , data = $this.data('scrollspy')
1494
+ , options = typeof option == 'object' && option
1495
+ if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
1496
+ if (typeof option == 'string') data[option]()
1497
+ })
1498
+ }
1499
+
1500
+ $.fn.scrollspy.Constructor = ScrollSpy
1501
+
1502
+ $.fn.scrollspy.defaults = {
1503
+ offset: 10
1504
+ }
1505
+
1506
+
1507
+ /* SCROLLSPY DATA-API
1508
+ * ================== */
1509
+
1510
+ $(window).on('load', function () {
1511
+ $('[data-spy="scroll"]').each(function () {
1512
+ var $spy = $(this)
1513
+ $spy.scrollspy($spy.data())
1514
+ })
1515
+ })
1516
+
1517
+ }(window.jQuery);/* ========================================================
1518
+ * bootstrap-tab.js v2.1.0
1519
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
1520
+ * ========================================================
1521
+ * Copyright 2012 Twitter, Inc.
1522
+ *
1523
+ * Licensed under the Apache License, Version 2.0 (the "License");
1524
+ * you may not use this file except in compliance with the License.
1525
+ * You may obtain a copy of the License at
1526
+ *
1527
+ * http://www.apache.org/licenses/LICENSE-2.0
1528
+ *
1529
+ * Unless required by applicable law or agreed to in writing, software
1530
+ * distributed under the License is distributed on an "AS IS" BASIS,
1531
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1532
+ * See the License for the specific language governing permissions and
1533
+ * limitations under the License.
1534
+ * ======================================================== */
1535
+
1536
+
1537
+ !function ($) {
1538
+
1539
+ "use strict"; // jshint ;_;
1540
+
1541
+
1542
+ /* TAB CLASS DEFINITION
1543
+ * ==================== */
1544
+
1545
+ var Tab = function (element) {
1546
+ this.element = $(element)
1547
+ }
1548
+
1549
+ Tab.prototype = {
1550
+
1551
+ constructor: Tab
1552
+
1553
+ , show: function () {
1554
+ var $this = this.element
1555
+ , $ul = $this.closest('ul:not(.dropdown-menu)')
1556
+ , selector = $this.attr('data-target')
1557
+ , previous
1558
+ , $target
1559
+ , e
1560
+
1561
+ if (!selector) {
1562
+ selector = $this.attr('href')
1563
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
1564
+ }
1565
+
1566
+ if ( $this.parent('li').hasClass('active') ) return
1567
+
1568
+ previous = $ul.find('.active a').last()[0]
1569
+
1570
+ e = $.Event('show', {
1571
+ relatedTarget: previous
1572
+ })
1573
+
1574
+ $this.trigger(e)
1575
+
1576
+ if (e.isDefaultPrevented()) return
1577
+
1578
+ $target = $(selector)
1579
+
1580
+ this.activate($this.parent('li'), $ul)
1581
+ this.activate($target, $target.parent(), function () {
1582
+ $this.trigger({
1583
+ type: 'shown'
1584
+ , relatedTarget: previous
1585
+ })
1586
+ })
1587
+ }
1588
+
1589
+ , activate: function ( element, container, callback) {
1590
+ var $active = container.find('> .active')
1591
+ , transition = callback
1592
+ && $.support.transition
1593
+ && $active.hasClass('fade')
1594
+
1595
+ function next() {
1596
+ $active
1597
+ .removeClass('active')
1598
+ .find('> .dropdown-menu > .active')
1599
+ .removeClass('active')
1600
+
1601
+ element.addClass('active')
1602
+
1603
+ if (transition) {
1604
+ element[0].offsetWidth // reflow for transition
1605
+ element.addClass('in')
1606
+ } else {
1607
+ element.removeClass('fade')
1608
+ }
1609
+
1610
+ if ( element.parent('.dropdown-menu') ) {
1611
+ element.closest('li.dropdown').addClass('active')
1612
+ }
1613
+
1614
+ callback && callback()
1615
+ }
1616
+
1617
+ transition ?
1618
+ $active.one($.support.transition.end, next) :
1619
+ next()
1620
+
1621
+ $active.removeClass('in')
1622
+ }
1623
+ }
1624
+
1625
+
1626
+ /* TAB PLUGIN DEFINITION
1627
+ * ===================== */
1628
+
1629
+ $.fn.tab = function ( option ) {
1630
+ return this.each(function () {
1631
+ var $this = $(this)
1632
+ , data = $this.data('tab')
1633
+ if (!data) $this.data('tab', (data = new Tab(this)))
1634
+ if (typeof option == 'string') data[option]()
1635
+ })
1636
+ }
1637
+
1638
+ $.fn.tab.Constructor = Tab
1639
+
1640
+
1641
+ /* TAB DATA-API
1642
+ * ============ */
1643
+
1644
+ $(function () {
1645
+ $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
1646
+ e.preventDefault()
1647
+ $(this).tab('show')
1648
+ })
1649
+ })
1650
+
1651
+ }(window.jQuery);/* =============================================================
1652
+ * bootstrap-typeahead.js v2.1.0
1653
+ * http://twitter.github.com/bootstrap/javascript.html#typeahead
1654
+ * =============================================================
1655
+ * Copyright 2012 Twitter, Inc.
1656
+ *
1657
+ * Licensed under the Apache License, Version 2.0 (the "License");
1658
+ * you may not use this file except in compliance with the License.
1659
+ * You may obtain a copy of the License at
1660
+ *
1661
+ * http://www.apache.org/licenses/LICENSE-2.0
1662
+ *
1663
+ * Unless required by applicable law or agreed to in writing, software
1664
+ * distributed under the License is distributed on an "AS IS" BASIS,
1665
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1666
+ * See the License for the specific language governing permissions and
1667
+ * limitations under the License.
1668
+ * ============================================================ */
1669
+
1670
+
1671
+ !function($){
1672
+
1673
+ "use strict"; // jshint ;_;
1674
+
1675
+
1676
+ /* TYPEAHEAD PUBLIC CLASS DEFINITION
1677
+ * ================================= */
1678
+
1679
+ var Typeahead = function (element, options) {
1680
+ this.$element = $(element)
1681
+ this.options = $.extend({}, $.fn.typeahead.defaults, options)
1682
+ this.matcher = this.options.matcher || this.matcher
1683
+ this.sorter = this.options.sorter || this.sorter
1684
+ this.highlighter = this.options.highlighter || this.highlighter
1685
+ this.updater = this.options.updater || this.updater
1686
+ this.$menu = $(this.options.menu).appendTo('body')
1687
+ this.source = this.options.source
1688
+ this.shown = false
1689
+ this.listen()
1690
+ }
1691
+
1692
+ Typeahead.prototype = {
1693
+
1694
+ constructor: Typeahead
1695
+
1696
+ , select: function () {
1697
+ var val = this.$menu.find('.active').attr('data-value')
1698
+ this.$element
1699
+ .val(this.updater(val))
1700
+ .change()
1701
+ return this.hide()
1702
+ }
1703
+
1704
+ , updater: function (item) {
1705
+ return item
1706
+ }
1707
+
1708
+ , show: function () {
1709
+ var pos = $.extend({}, this.$element.offset(), {
1710
+ height: this.$element[0].offsetHeight
1711
+ })
1712
+
1713
+ this.$menu.css({
1714
+ top: pos.top + pos.height
1715
+ , left: pos.left
1716
+ })
1717
+
1718
+ this.$menu.show()
1719
+ this.shown = true
1720
+ return this
1721
+ }
1722
+
1723
+ , hide: function () {
1724
+ this.$menu.hide()
1725
+ this.shown = false
1726
+ return this
1727
+ }
1728
+
1729
+ , lookup: function (event) {
1730
+ var items
1731
+
1732
+ this.query = this.$element.val()
1733
+
1734
+ if (!this.query || this.query.length < this.options.minLength) {
1735
+ return this.shown ? this.hide() : this
1736
+ }
1737
+
1738
+ items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
1739
+
1740
+ return items ? this.process(items) : this
1741
+ }
1742
+
1743
+ , process: function (items) {
1744
+ var that = this
1745
+
1746
+ items = $.grep(items, function (item) {
1747
+ return that.matcher(item)
1748
+ })
1749
+
1750
+ items = this.sorter(items)
1751
+
1752
+ if (!items.length) {
1753
+ return this.shown ? this.hide() : this
1754
+ }
1755
+
1756
+ return this.render(items.slice(0, this.options.items)).show()
1757
+ }
1758
+
1759
+ , matcher: function (item) {
1760
+ return ~item.toLowerCase().indexOf(this.query.toLowerCase())
1761
+ }
1762
+
1763
+ , sorter: function (items) {
1764
+ var beginswith = []
1765
+ , caseSensitive = []
1766
+ , caseInsensitive = []
1767
+ , item
1768
+
1769
+ while (item = items.shift()) {
1770
+ if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
1771
+ else if (~item.indexOf(this.query)) caseSensitive.push(item)
1772
+ else caseInsensitive.push(item)
1773
+ }
1774
+
1775
+ return beginswith.concat(caseSensitive, caseInsensitive)
1776
+ }
1777
+
1778
+ , highlighter: function (item) {
1779
+ var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
1780
+ return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
1781
+ return '<strong>' + match + '</strong>'
1782
+ })
1783
+ }
1784
+
1785
+ , render: function (items) {
1786
+ var that = this
1787
+
1788
+ items = $(items).map(function (i, item) {
1789
+ i = $(that.options.item).attr('data-value', item)
1790
+ i.find('a').html(that.highlighter(item))
1791
+ return i[0]
1792
+ })
1793
+
1794
+ items.first().addClass('active')
1795
+ this.$menu.html(items)
1796
+ return this
1797
+ }
1798
+
1799
+ , next: function (event) {
1800
+ var active = this.$menu.find('.active').removeClass('active')
1801
+ , next = active.next()
1802
+
1803
+ if (!next.length) {
1804
+ next = $(this.$menu.find('li')[0])
1805
+ }
1806
+
1807
+ next.addClass('active')
1808
+ }
1809
+
1810
+ , prev: function (event) {
1811
+ var active = this.$menu.find('.active').removeClass('active')
1812
+ , prev = active.prev()
1813
+
1814
+ if (!prev.length) {
1815
+ prev = this.$menu.find('li').last()
1816
+ }
1817
+
1818
+ prev.addClass('active')
1819
+ }
1820
+
1821
+ , listen: function () {
1822
+ this.$element
1823
+ .on('blur', $.proxy(this.blur, this))
1824
+ .on('keypress', $.proxy(this.keypress, this))
1825
+ .on('keyup', $.proxy(this.keyup, this))
1826
+
1827
+ if ($.browser.webkit || $.browser.msie) {
1828
+ this.$element.on('keydown', $.proxy(this.keydown, this))
1829
+ }
1830
+
1831
+ this.$menu
1832
+ .on('click', $.proxy(this.click, this))
1833
+ .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
1834
+ }
1835
+
1836
+ , move: function (e) {
1837
+ if (!this.shown) return
1838
+
1839
+ switch(e.keyCode) {
1840
+ case 9: // tab
1841
+ case 13: // enter
1842
+ case 27: // escape
1843
+ e.preventDefault()
1844
+ break
1845
+
1846
+ case 38: // up arrow
1847
+ e.preventDefault()
1848
+ this.prev()
1849
+ break
1850
+
1851
+ case 40: // down arrow
1852
+ e.preventDefault()
1853
+ this.next()
1854
+ break
1855
+ }
1856
+
1857
+ e.stopPropagation()
1858
+ }
1859
+
1860
+ , keydown: function (e) {
1861
+ this.suppressKeyPressRepeat = !~$.inArray(e.keyCode, [40,38,9,13,27])
1862
+ this.move(e)
1863
+ }
1864
+
1865
+ , keypress: function (e) {
1866
+ if (this.suppressKeyPressRepeat) return
1867
+ this.move(e)
1868
+ }
1869
+
1870
+ , keyup: function (e) {
1871
+ switch(e.keyCode) {
1872
+ case 40: // down arrow
1873
+ case 38: // up arrow
1874
+ break
1875
+
1876
+ case 9: // tab
1877
+ case 13: // enter
1878
+ if (!this.shown) return
1879
+ this.select()
1880
+ break
1881
+
1882
+ case 27: // escape
1883
+ if (!this.shown) return
1884
+ this.hide()
1885
+ break
1886
+
1887
+ default:
1888
+ this.lookup()
1889
+ }
1890
+
1891
+ e.stopPropagation()
1892
+ e.preventDefault()
1893
+ }
1894
+
1895
+ , blur: function (e) {
1896
+ var that = this
1897
+ setTimeout(function () { that.hide() }, 150)
1898
+ }
1899
+
1900
+ , click: function (e) {
1901
+ e.stopPropagation()
1902
+ e.preventDefault()
1903
+ this.select()
1904
+ }
1905
+
1906
+ , mouseenter: function (e) {
1907
+ this.$menu.find('.active').removeClass('active')
1908
+ $(e.currentTarget).addClass('active')
1909
+ }
1910
+
1911
+ }
1912
+
1913
+
1914
+ /* TYPEAHEAD PLUGIN DEFINITION
1915
+ * =========================== */
1916
+
1917
+ $.fn.typeahead = function (option) {
1918
+ return this.each(function () {
1919
+ var $this = $(this)
1920
+ , data = $this.data('typeahead')
1921
+ , options = typeof option == 'object' && option
1922
+ if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
1923
+ if (typeof option == 'string') data[option]()
1924
+ })
1925
+ }
1926
+
1927
+ $.fn.typeahead.defaults = {
1928
+ source: []
1929
+ , items: 8
1930
+ , menu: '<ul class="typeahead dropdown-menu"></ul>'
1931
+ , item: '<li><a href="#"></a></li>'
1932
+ , minLength: 1
1933
+ }
1934
+
1935
+ $.fn.typeahead.Constructor = Typeahead
1936
+
1937
+
1938
+ /* TYPEAHEAD DATA-API
1939
+ * ================== */
1940
+
1941
+ $(function () {
1942
+ $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
1943
+ var $this = $(this)
1944
+ if ($this.data('typeahead')) return
1945
+ e.preventDefault()
1946
+ $this.typeahead($this.data())
1947
+ })
1948
+ })
1949
+
1950
+ }(window.jQuery);
1951
+ /* ==========================================================
1952
+ * bootstrap-affix.js v2.1.0
1953
+ * http://twitter.github.com/bootstrap/javascript.html#affix
1954
+ * ==========================================================
1955
+ * Copyright 2012 Twitter, Inc.
1956
+ *
1957
+ * Licensed under the Apache License, Version 2.0 (the "License");
1958
+ * you may not use this file except in compliance with the License.
1959
+ * You may obtain a copy of the License at
1960
+ *
1961
+ * http://www.apache.org/licenses/LICENSE-2.0
1962
+ *
1963
+ * Unless required by applicable law or agreed to in writing, software
1964
+ * distributed under the License is distributed on an "AS IS" BASIS,
1965
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1966
+ * See the License for the specific language governing permissions and
1967
+ * limitations under the License.
1968
+ * ========================================================== */
1969
+
1970
+
1971
+ !function ($) {
1972
+
1973
+ "use strict"; // jshint ;_;
1974
+
1975
+
1976
+ /* AFFIX CLASS DEFINITION
1977
+ * ====================== */
1978
+
1979
+ var Affix = function (element, options) {
1980
+ this.options = $.extend({}, $.fn.affix.defaults, options)
1981
+ this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
1982
+ this.$element = $(element)
1983
+ this.checkPosition()
1984
+ }
1985
+
1986
+ Affix.prototype.checkPosition = function () {
1987
+ if (!this.$element.is(':visible')) return
1988
+
1989
+ var scrollHeight = $(document).height()
1990
+ , scrollTop = this.$window.scrollTop()
1991
+ , position = this.$element.offset()
1992
+ , offset = this.options.offset
1993
+ , offsetBottom = offset.bottom
1994
+ , offsetTop = offset.top
1995
+ , reset = 'affix affix-top affix-bottom'
1996
+ , affix
1997
+
1998
+ if (typeof offset != 'object') offsetBottom = offsetTop = offset
1999
+ if (typeof offsetTop == 'function') offsetTop = offset.top()
2000
+ if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
2001
+
2002
+ affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
2003
+ false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
2004
+ 'bottom' : offsetTop != null && scrollTop <= offsetTop ?
2005
+ 'top' : false
2006
+
2007
+ if (this.affixed === affix) return
2008
+
2009
+ this.affixed = affix
2010
+ this.unpin = affix == 'bottom' ? position.top - scrollTop : null
2011
+
2012
+ this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
2013
+ }
2014
+
2015
+
2016
+ /* AFFIX PLUGIN DEFINITION
2017
+ * ======================= */
2018
+
2019
+ $.fn.affix = function (option) {
2020
+ return this.each(function () {
2021
+ var $this = $(this)
2022
+ , data = $this.data('affix')
2023
+ , options = typeof option == 'object' && option
2024
+ if (!data) $this.data('affix', (data = new Affix(this, options)))
2025
+ if (typeof option == 'string') data[option]()
2026
+ })
2027
+ }
2028
+
2029
+ $.fn.affix.Constructor = Affix
2030
+
2031
+ $.fn.affix.defaults = {
2032
+ offset: 0
2033
+ }
2034
+
2035
+
2036
+ /* AFFIX DATA-API
2037
+ * ============== */
2038
+
2039
+ $(window).on('load', function () {
2040
+ $('[data-spy="affix"]').each(function () {
2041
+ var $spy = $(this)
2042
+ , data = $spy.data()
2043
+
2044
+ data.offset = data.offset || {}
2045
+
2046
+ data.offsetBottom && (data.offset.bottom = data.offsetBottom)
2047
+ data.offsetTop && (data.offset.top = data.offsetTop)
2048
+
2049
+ $spy.affix(data)
2050
+ })
2051
+ })
2052
+
2053
+
2054
+ }(window.jQuery);
assets/jui/js/bootstrap.min.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ===================================================
2
+ * bootstrap-transition.js v2.1.0
3
+ * http://twitter.github.com/bootstrap/javascript.html#transitions
4
+ * ===================================================
5
+ * Copyright 2012 Twitter, Inc.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * ========================================================== */!function(e){e(function(){"use strict";e.support.transition=function(){var e=function(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},n;for(n in t)if(e.style[n]!==undefined)return t[n]}();return e&&{end:e}}()})}(window.jQuery);!function(e){"use strict";var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){function s(){i.trigger("closed").remove()}var n=e(this),r=n.attr("data-target"),i;if(!r){r=n.attr("href");r=r&&r.replace(/.*(?=#[^\s]*$)/,"")}i=e(r);t&&t.preventDefault();i.length||(i=n.hasClass("alert")?n:n.parent());i.trigger(t=e.Event("close"));if(t.isDefaultPrevented())return;i.removeClass("in");e.support.transition&&i.hasClass("fade")?i.on(e.support.transition.end,s):s()};e.fn.alert=function(t){return this.each(function(){var r=e(this),i=r.data("alert");i||r.data("alert",i=new n(this));typeof t=="string"&&i[t].call(r)})};e.fn.alert.Constructor=n;e(function(){e("body").on("click.alert.data-api",t,n.prototype.close)})}(window.jQuery);!function(e){"use strict";var t=function(t,n){this.$element=e(t);this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,r=n.data(),i=n.is("input")?"val":"html";e+="Text";r.resetText||n.data("resetText",n[i]());n[i](r[e]||this.options[e]);setTimeout(function(){e=="loadingText"?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)},0)};t.prototype.toggle=function(){var e=this.$element.parent('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active");this.$element.toggleClass("active")};e.fn.button=function(n){return this.each(function(){var r=e(this),i=r.data("button"),s=typeof n=="object"&&n;i||r.data("button",i=new t(this,s));n=="toggle"?i.toggle():n&&i.setState(n)})};e.fn.button.defaults={loadingText:"loading..."};e.fn.button.Constructor=t;e(function(){e("body").on("click.button.data-api","[data-toggle^=button]",function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn"));n.button("toggle")})})}(window.jQuery);!function(e){"use strict";var t=function(t,n){this.$element=e(t);this.options=n;this.options.slide&&this.slide(this.options.slide);this.options.pause=="hover"&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){t||(this.paused=!1);this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval));return this},to:function(t){var n=this.$element.find(".item.active"),r=n.parent().children(),i=r.index(n),s=this;if(t>r.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){s.to(t)}):i==t?this.pause().cycle():this.slide(t>i?"next":"prev",e(r[t]))},pause:function(t){t||(this.paused=!0);if(this.$element.find(".next, .prev").length&&e.support.transition.end){this.$element.trigger(e.support.transition.end);this.cycle()}clearInterval(this.interval);this.interval=null;return this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f=e.Event("slide",{relatedTarget:i[0]});this.sliding=!0;s&&this.pause();i=i.length?i:this.$element.find(".item")[u]();if(i.hasClass("active"))return;if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t);i[0].offsetWidth;r.addClass(o);i.addClass(o);this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active");r.removeClass(["active",o].join(" "));a.sliding=!1;setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active");i.addClass("active");this.sliding=!1;this.$element.trigger("slid")}s&&this.cycle();return this}};e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s));typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.cycle()})};e.fn.carousel.defaults={interval:5e3,pause:"hover"};e.fn.carousel.Constructor=t;e(function(){e("body").on("click.carousel.data-api","[data-slide]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=!i.data("modal")&&e.extend({},i.data(),n.data());i.carousel(s);t.preventDefault()})})}(window.jQuery);!function(e){"use strict";var t=function(t,n){this.$element=e(t);this.options=e.extend({},e.fn.collapse.defaults,n);this.options.parent&&(this.$parent=e(this.options.parent));this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning)return;t=this.dimension();n=e.camelCase(["scroll",t].join("-"));r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide");i||r.data("collapse",null)}this.$element[t](0);this.transition("addClass",e.Event("show"),"shown");e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning)return;t=this.dimension();this.reset(this.$element[t]());this.transition("removeClass",e.Event("hideme"),"hidden");this.$element[t](0)},reset:function(e){var t=this.dimension();this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth;this.$element[e!==null?"addClass":"removeClass"]("collapse");return this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset();i.transitioning=0;i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1;this.$element[t]("in");e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=typeof n=="object"&&n;i||r.data("collapse",i=new t(this,s));typeof n=="string"&&i[n]()})};e.fn.collapse.defaults={toggle:!0};e.fn.collapse.Constructor=t;e(function(){e("body").on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed");e(i).collapse(s)})})}(window.jQuery);!function(e){"use strict";function r(){e(t).parent().parent().removeClass("nav-hover");i(e(t)).removeClass("open")}function i(t){var n=t.attr("data-target"),r;if(!n){n=t.attr("href");n=n&&n.replace(/.*(?=#[^\s]*$)/,"")}r=e(n);r.length||(r=t.parent());return r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle).on("mouseover.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().parent().removeClass("nav-hover");n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o,u;if(n.is(".disabled, :disabled"))return;s=i(n);o=s.hasClass("open");u=s.parent().hasClass("nav-hover");r();if(!o&&t.type=="click"||u&&t.type=="mouseover"){s.parent().toggleClass("nav-hover");s.toggleClass("open")}return!1},keydown:function(t){var n,r,s,o,u,a;if(!/(38|40|27)/.test(t.keyCode))return;n=e(this);t.preventDefault();t.stopPropagation();if(n.is(".disabled, :disabled"))return;o=i(n);u=o.hasClass("open");if(!u||u&&t.keyCode==27)return n.click();r=e("[role=menu] li:not(.divider) a",o);if(!r.length)return;a=r.index(r.filter(":focus"));t.keyCode==38&&a>0&&a--;t.keyCode==40&&a<r.length-1&&a++;~a||(a=0);r.eq(a).focus()}};e.fn.dropdown=function(t){return this.each(function(){var r=e(this),i=r.data("dropdown");i||r.data("dropdown",i=new n(this));typeof t=="string"&&i[t].call(r)})};e.fn.dropdown.Constructor=n;e(function(){e("html").on("click.dropdown.data-api touchstart.dropdown.data-api",r);e("body").on("click.dropdown touchstart.dropdown.data-api",".dropdown",function(e){e.stopPropagation()}).on("click.dropdown.data-api touchstart.dropdown.data-api",t,n.prototype.toggle).on("keydown.dropdown.data-api touchstart.dropdown.data-api",t+", [role=menu]",n.prototype.keydown).on("mouseover.dropdown.data-api",t,n.prototype.toggle)})}(window.jQuery);!function(e){"use strict";var t=function(t,n){this.options=n;this.$element=e(t).delegate('[data-dismiss="modal"]',"click.dismiss.modal",e.proxy(this.hide,this));this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};t.prototype={constructor:t,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var t=this,n=e.Event("show");this.$element.trigger(n);if(this.isShown||n.isDefaultPrevented())return;e("body").addClass("modal-open");this.isShown=!0;this.escape();this.backdrop(function(){var n=e.support.transition&&t.$element.hasClass("fade");t.$element.parent().length||t.$element.appendTo(document.body);t.$element.show();n&&t.$element[0].offsetWidth;t.$element.addClass("in").attr("aria-hidden",!1).focus();t.enforceFocus();n?t.$element.one(e.support.transition.end,function(){t.$element.trigger("shown")}):t.$element.trigger("shown")})},hide:function(t){t&&t.preventDefault();var n=this;t=e.Event("hide");this.$element.trigger(t);if(!this.isShown||t.isDefaultPrevented())return;this.isShown=!1;e("body").removeClass("modal-open");this.escape();e(document).off("focusin.modal");this.$element.removeClass("in").attr("aria-hidden",!0);e.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal()},enforceFocus:function(){var t=this;e(document).on("focusin.modal",function(e){t.$element[0]!==e.target&&!t.$element.has(e.target).length&&t.$element.focus()})},escape:function(){var e=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(t){t.which==27&&e.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var t=this,n=setTimeout(function(){t.$element.off(e.support.transition.end);t.hideModal()},500);this.$element.one(e.support.transition.end,function(){clearTimeout(n);t.hideModal()})},hideModal:function(e){this.$element.hide().trigger("hidden");this.backdrop()},removeBackdrop:function(){this.$backdrop.remove();this.$backdrop=null},backdrop:function(t){var n=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var i=e.support.transition&&r;this.$backdrop=e('<div class="modal-backdrop '+r+'" />').appendTo(document.body);this.options.backdrop!="static"&&this.$backdrop.click(e.proxy(this.hide,this));i&&this.$backdrop[0].offsetWidth;this.$backdrop.addClass("in");i?this.$backdrop.one(e.support.transition.end,t):t()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(e.support.transition.end,e.proxy(this.removeBackdrop,this)):this.removeBackdrop()}else t&&t()}};e.fn.modal=function(n){return this.each(function(){var r=e(this),i=r.data("modal"),s=e.extend({},e.fn.modal.defaults,r.data(),typeof n=="object"&&n);i||r.data("modal",i=new t(this,s));typeof n=="string"?i[n]():s.show&&i.show()})};e.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0};e.fn.modal.Constructor=t;e(function(){e("body").on("click.modal.data-api",'[data-toggle="modal"]',function(t){var n=e(this),r=n.attr("href"),i=e(n.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),s=i.data("modal")?"toggle":e.extend({remote:!/#/.test(r)&&r},i.data(),n.data());t.preventDefault();i.modal(s).one("hide",function(){n.focus()})})})}(window.jQuery);!function(e){"use strict";var t=function(e,t){this.init("tooltip",e,t)};t.prototype={constructor:t,init:function(t,n,r){var i,s;this.type=t;this.$element=e(n);this.options=this.getOptions(r);this.enabled=!0;if(this.options.trigger=="click")this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this));else if(this.options.trigger!="manual"){i=this.options.trigger=="hover"?"mouseenter":"focus";s=this.options.trigger=="hover"?"mouseleave":"blur";this.$element.on(i+"."+this.type,this.options.selector,e.proxy(this.enter,this));this.$element.on(s+"."+this.type,this.options.selector,e.proxy(this.leave,this))}this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(t){t=e.extend({},e.fn[this.type].defaults,t,this.$element.data());t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay});return t},enter:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);if(!n.options.delay||!n.options.delay.show)return n.show();clearTimeout(this.timeout);n.hoverState="in";this.timeout=setTimeout(function(){n.hoverState=="in"&&n.show()},n.options.delay.show)},leave:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!n.options.delay||!n.options.delay.hide)return n.hide();n.hoverState="out";this.timeout=setTimeout(function(){n.hoverState=="out"&&n.hide()},n.options.delay.hide)},show:function(){var e,t,n,r,i,s,o;if(this.hasContent()&&this.enabled){e=this.tip();this.setContent();this.options.animation&&e.addClass("fade");s=typeof this.options.placement=="function"?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement;t=/in/.test(s);e.remove().css({top:0,left:0,display:"block"}).appendTo(t?this.$element:document.body);n=this.getPosition(t);r=e[0].offsetWidth;i=e[0].offsetHeight;switch(t?s.split(" ")[1]:s){case"bottom":o={top:n.top+n.height,left:n.left+n.width/2-r/2};break;case"top":o={top:n.top-i,left:n.left+n.width/2-r/2};break;case"left":o={top:n.top+n.height/2-i/2,left:n.left-r};break;case"right":o={top:n.top+n.height/2-i/2,left:n.left+n.width}}e.css(o).addClass(s).addClass("in")}},setContent:function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t);e.removeClass("fade in top bottom left right")},hide:function(){function r(){var t=setTimeout(function(){n.off(e.support.transition.end).remove()},500);n.one(e.support.transition.end,function(){clearTimeout(t);n.remove()})}var t=this,n=this.tip();n.removeClass("in");e.support.transition&&this.$tip.hasClass("fade")?r():n.remove();return this},fixTitle:function(){var e=this.$element;(e.attr("title")||typeof e.attr("data-original-title")!="string")&&e.attr("data-original-title",e.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(t){return e.extend({},t?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var e,t=this.$element,n=this.options;e=t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title);return e},tip:function(){return this.$tip=this.$tip||e(this.options.template)},validate:function(){if(!this.$element[0].parentNode){this.hide();this.$element=null;this.options=null}},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};e.fn.tooltip=function(n){return this.each(function(){var r=e(this),i=r.data("tooltip"),s=typeof n=="object"&&n;i||r.data("tooltip",i=new t(this,s));typeof n=="string"&&i[n]()})};e.fn.tooltip.Constructor=t;e.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover",title:"",delay:0,html:!0}}(window.jQuery);!function(e){"use strict";var t=function(e,t){this.init("popover",e,t)};t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:t,setContent:function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t);e.find(".popover-content > *")[this.options.html?"html":"text"](n);e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e,t=this.$element,n=this.options;e=t.attr("data-content")||(typeof n.content=="function"?n.content.call(t[0]):n.content);return e},tip:function(){this.$tip||(this.$tip=e(this.options.template));return this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});e.fn.popover=function(n){return this.each(function(){var r=e(this),i=r.data("popover"),s=typeof n=="object"&&n;i||r.data("popover",i=new t(this,s));typeof n=="string"&&i[n]()})};e.fn.popover.Constructor=t;e.fn.popover.defaults=e.extend({},e.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'})}(window.jQuery);!function(e){"use strict";function t(t,n){var r=e.proxy(this.process,this),i=e(t).is("body")?e(window):e(t),s;this.options=e.extend({},e.fn.scrollspy.defaults,n);this.$scrollElement=i.on("scroll.scroll-spy.data-api",r);this.selector=(this.options.target||(s=e(t).attr("href"))&&s.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a";this.$body=e("body");this.refresh();this.process()}t.prototype={constructor:t,refresh:function(){var t=this,n;this.offsets=e([]);this.targets=e([]);n=this.$body.find(this.selector).map(function(){var t=e(this),n=t.data("target")||t.attr("href"),r=/^#\w/.test(n)&&e(n);return r&&r.length&&[[r.position().top,n]]||null}).sort(function(e,t){return e[0]-t[0]}).each(function(){t.offsets.push(this[0]);t.targets.push(this[1])})},process:function(){var e=this.$scrollElement.scrollTop()+this.options.offset,t=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=t-this.$scrollElement.height(),r=this.offsets,i=this.targets,s=this.activeTarget,o;if(e>=n)return s!=(o=i.last()[0])&&this.activate(o);for(o=r.length;o--;)s!=i[o]&&e>=r[o]&&(!r[o+1]||e<=r[o+1])&&this.activate(i[o])},activate:function(t){var n,r;this.activeTarget=t;e(this.selector).parent(".active").removeClass("active");r=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]';n=e(r).parent("li").addClass("active");n.parent(".dropdown-menu").length&&(n=n.closest("li.dropdown").addClass("active"));n.trigger("activate")}};e.fn.scrollspy=function(n){return this.each(function(){var r=e(this),i=r.data("scrollspy"),s=typeof n=="object"&&n;i||r.data("scrollspy",i=new t(this,s));typeof n=="string"&&i[n]()})};e.fn.scrollspy.Constructor=t;e.fn.scrollspy.defaults={offset:10};e(window).on("load",function(){e('[data-spy="scroll"]').each(function(){var t=e(this);t.scrollspy(t.data())})})}(window.jQuery);!function(e){"use strict";var t=function(t){this.element=e(t)};t.prototype={constructor:t,show:function(){var t=this.element,n=t.closest("ul:not(.dropdown-menu)"),r=t.attr("data-target"),i,s,o;if(!r){r=t.attr("href");r=r&&r.replace(/.*(?=#[^\s]*$)/,"")}if(t.parent("li").hasClass("active"))return;i=n.find(".active a").last()[0];o=e.Event("show",{relatedTarget:i});t.trigger(o);if(o.isDefaultPrevented())return;s=e(r);this.activate(t.parent("li"),n);this.activate(s,s.parent(),function(){t.trigger({type:"shown",relatedTarget:i})})},activate:function(t,n,r){function o(){i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active");t.addClass("active");if(s){t[0].offsetWidth;t.addClass("in")}else t.removeClass("fade");t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active");r&&r()}var i=n.find("> .active"),s=r&&e.support.transition&&i.hasClass("fade");s?i.one(e.support.transition.end,o):o();i.removeClass("in")}};e.fn.tab=function(n){return this.each(function(){var r=e(this),i=r.data("tab");i||r.data("tab",i=new t(this));typeof n=="string"&&i[n]()})};e.fn.tab.Constructor=t;e(function(){e("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(t){t.preventDefault();e(this).tab("show")})})}(window.jQuery);!function(e){"use strict";var t=function(t,n){this.$element=e(t);this.options=e.extend({},e.fn.typeahead.defaults,n);this.matcher=this.options.matcher||this.matcher;this.sorter=this.options.sorter||this.sorter;this.highlighter=this.options.highlighter||this.highlighter;this.updater=this.options.updater||this.updater;this.$menu=e(this.options.menu).appendTo("body");this.source=this.options.source;this.shown=!1;this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");this.$element.val(this.updater(e)).change();return this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});this.$menu.css({top:t.top+t.height,left:t.left});this.$menu.show();this.shown=!0;return this},hide:function(){this.$menu.hide();this.shown=!1;return this},lookup:function(t){var n;this.query=this.$element.val();if(!this.query||this.query.length<this.options.minLength)return this.shown?this.hide():this;n=e.isFunction(this.source)?this.source(this.query,e.proxy(this.process,this)):this.source;return n?this.process(n):this},process:function(t){var n=this;t=e.grep(t,function(e){return n.matcher(e)});t=this.sorter(t);return t.length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(e){return~e.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(e){var t=[],n=[],r=[],i;while(i=e.shift())i.toLowerCase().indexOf(this.query.toLowerCase())?~i.indexOf(this.query)?n.push(i):r.push(i):t.push(i);return t.concat(n,r)},highlighter:function(e){var t=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return e.replace(new RegExp("("+t+")","ig"),function(e,t){return"<strong>"+t+"</strong>"})},render:function(t){var n=this;t=e(t).map(function(t,r){t=e(n.options.item).attr("data-value",r);t.find("a").html(n.highlighter(r));return t[0]});t.first().addClass("active");this.$menu.html(t);return this},next:function(t){var n=this.$menu.find(".active").removeClass("active"),r=n.next();r.length||(r=e(this.$menu.find("li")[0]));r.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active"),n=t.prev();n.length||(n=this.$menu.find("li").last());n.addClass("active")},listen:function(){this.$element.on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyu