Auto Post Thumbnail - Version 3.7.2

Version Description

  • Fixed: generation of featured images
Download this release

Release Info

Developer webtemyk
Plugin Icon 128x128 Auto Post Thumbnail
Version 3.7.2
Comparing to
See all releases

Code changes from version 3.7.0 to 3.7.2

Files changed (103) hide show
  1. admin/ajax/check-license.php +70 -67
  2. admin/assets/css/jquery.flex-images.css +74 -15
  3. admin/assets/css/settings.css +36 -36
  4. admin/assets/css/style.css +59 -37
  5. admin/assets/css/tabs.css +138 -132
  6. admin/assets/img/apt.svg +9 -9
  7. admin/assets/img/loading.svg +7 -1
  8. admin/assets/jquery-ui/jquery.autocolumnlist.js +10 -10
  9. admin/assets/js/admin-thumbnail.js +39 -39
  10. admin/assets/js/check-api.js +7 -10
  11. admin/assets/js/dreamstime-media-views.js +160 -160
  12. admin/assets/js/jscolor.js +1913 -1818
  13. admin/assets/js/media-views.js +137 -137
  14. admin/assets/js/settings.js +2 -2
  15. admin/assets/js/upload-font.js +26 -27
  16. admin/class-wapt-activation.php +9 -7
  17. admin/class-wapt-page.php +7 -6
  18. admin/pages/about.php +4 -4
  19. admin/pages/generate.php +23 -7
  20. admin/pages/license.php +18 -15
  21. admin/pages/settings.php +95 -96
  22. admin/views/media-library.php +87 -68
  23. admin/views/pro.php +2 -4
  24. admin/views/sources/google.php +178 -169
  25. admin/views/tab-about.php +194 -133
  26. admin/views/tab-license.php +84 -84
  27. admin/views/tab-main.php +129 -43
  28. admin/views/tab-settings.php +69 -65
  29. auto-post-thumbnail.php +63 -39
  30. includes/class-wapt-base.php +244 -214
  31. includes/class-wapt-image.php +134 -121
  32. includes/class-wapt-plugin.php +82 -61
  33. includes/controls/class.color.php +14 -15
  34. includes/controls/class.fonts.php +21 -19
  35. includes/controls/class.mediabutton.php +34 -34
  36. languages/apt-ru_RU.mo +0 -0
  37. languages/apt-ru_RU.po +191 -138
  38. languages/apt.pot +165 -118
  39. libs/factory/adverts/boot.php +14 -14
  40. libs/factory/adverts/includes/class-base.php +6 -6
  41. libs/factory/adverts/includes/class-dashboard-widget.php +4 -4
  42. libs/factory/adverts/includes/class-rest-request.php +67 -47
  43. libs/factory/adverts/langs/wbcr_factory_adverts_109-ru_RU.mo +0 -0
  44. libs/factory/adverts/langs/wbcr_factory_adverts_109-ru_RU.po +83 -0
  45. libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +1 -1
  46. libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +1 -1
  47. libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +1 -1
  48. libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +2 -2
  49. libs/factory/bootstrap/assets/css-min/bootstrap.datetimepicker.min.css +1 -1
  50. libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +1 -1
  51. libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +1 -1
  52. libs/factory/bootstrap/assets/css-min/bootstrap.form-metabox.min.css +1 -1
  53. libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +1 -1
  54. libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +1 -1
  55. libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +1 -1
  56. libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +1 -1
  57. libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +1 -1
  58. libs/factory/bootstrap/assets/css-min/bootstrap.tab.min.css +1 -1
  59. libs/factory/bootstrap/assets/css-min/bootstrap.wp-editor.min.css +1 -1
  60. libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +1 -1
  61. libs/factory/bootstrap/assets/css-min/control.color-and-opacity.min.css +1 -1
  62. libs/factory/bootstrap/assets/css-min/control.color.min.css +1 -1
  63. libs/factory/bootstrap/assets/css-min/control.dropdown-and-colors.min.css +1 -1
  64. libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +1 -1
  65. libs/factory/bootstrap/assets/css-min/control.fonts.min.css +1 -1
  66. libs/factory/bootstrap/assets/css-min/control.list.min.css +1 -1
  67. libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +1 -1
  68. libs/factory/bootstrap/assets/css-min/control.pattern.min.css +1 -1
  69. libs/factory/bootstrap/assets/css-min/control.radio-colors.min.css +1 -1
  70. libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +1 -1
  71. libs/factory/bootstrap/assets/css-min/plugin.gradient-picker.min.css +1 -1
  72. libs/factory/bootstrap/assets/css-min/plugin.paddings-editor.min.css +1 -1
  73. libs/factory/bootstrap/assets/js-min/bootstrap.accordion.min.js +1 -1
  74. libs/factory/bootstrap/assets/js-min/bootstrap.collapse.min.js +1 -1
  75. libs/factory/bootstrap/assets/js-min/bootstrap.datetimepicker.min.js +1 -1
  76. libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js +1 -1
  77. libs/factory/bootstrap/assets/js-min/bootstrap.modal.min.js +1 -1
  78. libs/factory/bootstrap/assets/js-min/control.checkbox.min.js +1 -1
  79. libs/factory/bootstrap/assets/js-min/control.color-and-opacity.min.js +1 -1
  80. libs/factory/bootstrap/assets/js-min/control.color.min.js +1 -1
  81. libs/factory/bootstrap/assets/js-min/control.dropdown-and-colors.min.js +1 -1
  82. libs/factory/bootstrap/assets/js-min/control.dropdown.min.js +1 -1
  83. libs/factory/bootstrap/assets/js-min/control.fonts.min.js +1 -1
  84. libs/factory/bootstrap/assets/js-min/control.gradient.min.js +1 -1
  85. libs/factory/bootstrap/assets/js-min/control.integer.min.js +1 -1
  86. libs/factory/bootstrap/assets/js-min/control.list.min.js +1 -1
  87. libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js +1 -1
  88. libs/factory/bootstrap/assets/js-min/control.pattern.min.js +1 -1
  89. libs/factory/bootstrap/assets/js-min/holder.more-link.min.js +1 -1
  90. libs/factory/bootstrap/assets/js-min/plugin.gradient-picker.min.js +1 -1
  91. libs/factory/bootstrap/assets/js-min/plugin.iris.min.js +1 -1
  92. libs/factory/bootstrap/assets/js-min/plugin.paddings-editor.min.js +1 -1
  93. libs/factory/bootstrap/boot.php +15 -15
  94. libs/factory/bootstrap/includes/functions.php +10 -10
  95. libs/factory/core/boot.php +28 -28
  96. libs/factory/core/includes/activation/class-factory-activator.php +3 -3
  97. libs/factory/core/includes/activation/class-factory-update.php +3 -3
  98. libs/factory/core/includes/assets-managment/class-factory-assets-list.php +4 -4
  99. libs/factory/core/includes/assets-managment/class-factory-script-list.php +4 -3
  100. libs/factory/core/includes/assets-managment/class-factory-style-list.php +1 -1
  101. libs/factory/core/includes/class-check-compatibility.php +2 -2
  102. libs/factory/core/includes/class-factory-migrations.php +13 -13
  103. libs/factory/core/includes/class-factory-notices.php +16 -16
admin/ajax/check-license.php CHANGED
@@ -1,87 +1,90 @@
1
  <?php
2
- /**
3
- * Ajax plugin check licensing
4
- * @author Webcraftic <wordpress.webraftic@gmail.com>
5
- * @copyright (c) 2017 Webraftic Ltd
6
- * @version 1.0
7
- */
8
 
9
- // Exit if accessed directly
10
- if( !defined('ABSPATH') ) {
11
- exit;
12
- }
13
 
14
- /**
15
- * Обработчик ajax запросов для проверки, активации, деактивации лицензионного ключа
16
- *
17
- * @since 1.4.0
18
- */
19
- function wapt_check_license()
20
- {
21
- check_admin_referer('license');
22
-
23
- $action = WAPT_Plugin::app()->request->post('license_action', false, true);
24
- $license_key = WAPT_Plugin::app()->request->post('licensekey', null);
25
-
26
- if( empty($action) || !in_array($action, array('activate', 'deactivate', 'sync', 'unsubscribe')) ) {
27
- wp_send_json_error(array('error_message' => __('Licensing action not passed or this action is prohibited!', 'apt')));
28
- die();
29
- }
30
 
31
- $licensing = WAPT_Plugin::app()->premium;
 
32
 
33
- $result = null;
34
- $success_message = '';
 
 
35
 
36
- switch( $action ) {
37
- case 'activate':
38
- if( empty($license_key) || strlen($license_key) > 32 ) {
39
- wp_send_json_error(array('error_message' => __('License key is empty or license key too long (license key is 32 characters long)', 'apt')));
40
- } else {
41
- $result = $licensing->activate($license_key);
42
- $success_message = __('Your license has been successfully activated', 'apt');
43
- }
44
- break;
45
- case 'deactivate':
46
- $result = $licensing->deactivate();
47
- $success_message = __('The license is deactivated', 'apt');
48
- break;
49
- case 'sync':
50
- $result = $licensing->sync();
51
- $success_message = __('The license has been updated', 'apt');
52
- break;
53
- case 'unsubscribe':
54
- $result = $licensing->cancel_paid_subscription();
55
- $success_message = __('Subscription success cancelled', 'apt');
56
- break;
57
- }
58
 
59
- if( is_wp_error($result) ) {
 
60
 
61
- /**
62
- * Экшен выполняет, когда проверка лицензии вернула ошибку
63
- * @param string $action
64
- * @param string $license_key
65
- * @since 1.4.0
66
- */
67
- add_action('wbcr/apt/check_license_error', $action, $license_key);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
 
69
- wp_send_json_error(array('error_message' => $result->get_error_message()));
70
- die();
71
- }
72
 
73
  /**
74
- * Экшен выполняет, когда проверка лицензии успешно завершена
 
75
  * @param string $action
76
  * @param string $license_key
 
77
  * @since 1.4.0
78
  */
79
- add_action('wbcr/apt/check_license_success', $action, $license_key);
80
-
81
- wp_send_json_success(array('message' => $success_message));
82
 
 
83
  die();
84
  }
85
 
86
- add_action('wp_ajax_wapt_check_license', 'wapt_check_license');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
 
1
  <?php
2
+ /**
3
+ * Ajax plugin check licensing
4
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
5
+ * @copyright (c) 2017 Webraftic Ltd
6
+ * @version 1.0
7
+ */
8
 
9
+ // Exit if accessed directly
10
+ if ( ! defined( 'ABSPATH' ) ) {
11
+ exit;
12
+ }
13
 
14
+ /**
15
+ * Обработчик ajax запросов для проверки, активации, деактивации лицензионного ключа
16
+ *
17
+ * @since 1.4.0
18
+ */
19
+ function wapt_check_license() {
20
+ check_admin_referer( 'license' );
 
 
 
 
 
 
 
 
 
21
 
22
+ $action = WAPT_Plugin::app()->request->post( 'license_action', false, true );
23
+ $license_key = WAPT_Plugin::app()->request->post( 'licensekey', null );
24
 
25
+ if ( empty( $action ) || ! in_array( $action, array( 'activate', 'deactivate', 'sync', 'unsubscribe' ) ) ) {
26
+ wp_send_json_error( array( 'error_message' => __( 'Licensing action not passed or this action is prohibited!', 'apt' ) ) );
27
+ die();
28
+ }
29
 
30
+ $licensing = WAPT_Plugin::app()->premium;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
+ $result = null;
33
+ $success_message = '';
34
 
35
+ switch ( $action ) {
36
+ case 'activate':
37
+ if ( empty( $license_key ) || strlen( $license_key ) > 32 ) {
38
+ wp_send_json_error( array( 'error_message' => __( 'License key is empty or license key too long (license key is 32 characters long)', 'apt' ) ) );
39
+ } else {
40
+ $result = $licensing->activate( $license_key );
41
+ $success_message = __( 'Your license has been successfully activated', 'apt' );
42
+ }
43
+ break;
44
+ case 'deactivate':
45
+ $result = $licensing->deactivate();
46
+ $success_message = __( 'The license is deactivated', 'apt' );
47
+ break;
48
+ case 'sync':
49
+ $result = $licensing->sync();
50
+ $success_message = __( 'The license has been updated', 'apt' );
51
+ break;
52
+ case 'unsubscribe':
53
+ $result = $licensing->cancel_paid_subscription();
54
+ $success_message = __( 'Subscription success cancelled', 'apt' );
55
+ break;
56
+ }
57
 
58
+ if ( is_wp_error( $result ) ) {
 
 
59
 
60
  /**
61
+ * Экшен выполняет, когда проверка лицензии вернула ошибку
62
+ *
63
  * @param string $action
64
  * @param string $license_key
65
+ *
66
  * @since 1.4.0
67
  */
68
+ add_action( 'wbcr/apt/check_license_error', $action, $license_key );
 
 
69
 
70
+ wp_send_json_error( array( 'error_message' => $result->get_error_message() ) );
71
  die();
72
  }
73
 
74
+ /**
75
+ * Экшен выполняет, когда проверка лицензии успешно завершена
76
+ *
77
+ * @param string $action
78
+ * @param string $license_key
79
+ *
80
+ * @since 1.4.0
81
+ */
82
+ add_action( 'wbcr/apt/check_license_success', $action, $license_key );
83
+
84
+ wp_send_json_success( array( 'message' => $success_message ) );
85
+
86
+ die();
87
+ }
88
+
89
+ add_action( 'wp_ajax_wapt_check_license', 'wapt_check_license' );
90
 
admin/assets/css/jquery.flex-images.css CHANGED
@@ -1,18 +1,77 @@
1
- ::-webkit-input-placeholder { color: #aaa !important; }
2
- ::-moz-placeholder { color: #aaa !important; }
3
- :-ms-input-placeholder { color: #aaa !important; }
4
- [placeholder] { text-overflow: ellipsis; }
 
 
 
5
 
6
- .flex-images { overflow: hidden; }
7
- .flex-images .item { float: left; margin: 4px; background: #f3f3f3; box-sizing: content-box; overflow: hidden; position: relative; }
8
- .flex-images .item > img { display: block; width: auto; height: 100%; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
  .flex-images .download {
11
- opacity: 0; transition: opacity .3s; position: absolute; top: 0; right: 0; bottom: 0; left: 0;
12
- cursor: pointer; background: rgba(0,0,0,.65); color: #eee;
13
- text-align: center; font-size: 14px; line-height: 1.5;
14
- }
15
- .flex-images .item:hover .download, .flex-images .item.uploading .download { opacity: 1; }
16
- .flex-images .download img { position: absolute; top: 0; left: 0; right: 0; bottom: 0; margin: auto; height: 32px; opacity: .7; }
17
- .flex-images .download div { position: absolute; left: 0; right: 0; bottom: 15px; padding: 0 5px; }
18
- .flex-images .download a { color: #eee; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ::-webkit-input-placeholder {
2
+ color: #aaa !important;
3
+ }
4
+
5
+ ::-moz-placeholder {
6
+ color: #aaa !important;
7
+ }
8
 
9
+ :-ms-input-placeholder {
10
+ color: #aaa !important;
11
+ }
12
+
13
+ [placeholder] {
14
+ text-overflow: ellipsis;
15
+ }
16
+
17
+ .flex-images {
18
+ overflow: hidden;
19
+ }
20
+
21
+ .flex-images .item {
22
+ float: left;
23
+ margin: 4px;
24
+ background: #f3f3f3;
25
+ box-sizing: content-box;
26
+ overflow: hidden;
27
+ position: relative;
28
+ }
29
+
30
+ .flex-images .item > img {
31
+ display: block;
32
+ width: auto;
33
+ height: 100%;
34
+ }
35
 
36
  .flex-images .download {
37
+ opacity: 0;
38
+ transition: opacity .3s;
39
+ position: absolute;
40
+ top: 0;
41
+ right: 0;
42
+ bottom: 0;
43
+ left: 0;
44
+ cursor: pointer;
45
+ background: rgba(0, 0, 0, .65);
46
+ color: #eee;
47
+ text-align: center;
48
+ font-size: 14px;
49
+ line-height: 1.5;
50
+ }
51
+
52
+ .flex-images .item:hover .download, .flex-images .item.uploading .download {
53
+ opacity: 1;
54
+ }
55
+
56
+ .flex-images .download img {
57
+ position: absolute;
58
+ top: 0;
59
+ left: 0;
60
+ right: 0;
61
+ bottom: 0;
62
+ margin: auto;
63
+ height: 32px;
64
+ opacity: .7;
65
+ }
66
+
67
+ .flex-images .download div {
68
+ position: absolute;
69
+ left: 0;
70
+ right: 0;
71
+ bottom: 15px;
72
+ padding: 0 5px;
73
+ }
74
+
75
+ .flex-images .download a {
76
+ color: #eee;
77
+ }
admin/assets/css/settings.css CHANGED
@@ -1,8 +1,8 @@
1
- .wapt-footer
2
- {
3
  padding: 0px 30px;
4
  }
5
- .factory-bootstrap-426 .factory-ajax-loader {
 
6
  width: 120px !important;
7
  background: url("../img/ajax-loader-line.gif") no-repeat center center !important;
8
  background-size: contain !important;
@@ -11,20 +11,19 @@
11
  left: 20px;
12
  top: 5px;
13
  }
14
- .factory-bootstrap-426 select.form-control
15
- {
16
  display: inline;
17
  background: #fff url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E) no-repeat right 5px top 55%;
18
  background-size: 16px 16px !important;
19
  }
20
 
21
- .factory-from-control-integer input
22
- {
23
  width: 80px;
24
  font-size: 16px !important;
25
  }
26
- .factory-bootstrap-426 .btn-default.active, .factory-bootstrap-426 .btn-default:active
27
- {
28
  text-shadow: none;
29
  color: #fff !important;
30
  background-color: #33aad5 !important;
@@ -35,54 +34,55 @@
35
  border-left: 1px solid;
36
  border-color: #0074a2 !important;
37
  }
38
- div.control-group input, div.control-group select
39
- {
40
  box-shadow: 1px 1px 5px -2px #8e8d8d !important;
41
  border: 1px solid #ccc !important;
42
  }
43
- select#wapt_font {border-radius: 3px 0px 0px 3px !important;}
44
- div.control-group select optgroup
45
- {
 
 
 
46
  background-color: #e4e4e4;
47
  }
48
 
49
- div.control-group .btn-group
50
- {
51
  border: 0 !important;
52
  }
53
- .factory-control-text-align-vertical .btn
54
- {
55
  width: 60%;
56
  display: block !important;
57
  border-radius: 0 !important;
58
  }
59
 
60
- .wapt-image-preview-title
61
- {
62
  text-align: center;
63
  vertical-align: middle;
64
  }
65
- .wapt-image-preview
66
- {
67
  background-color: #e8e8e8;
68
  padding: 10px 20px 30px 20px;
69
  }
70
- .wapt-image-preview img
71
- {
72
  padding: 5px;
73
  border: 1px solid #ccc !important;
74
  border-radius: 5px !important;
75
  box-shadow: 1px 1px 5px -2px #8e8d8d !important;
76
  }
77
- .wapt-form-color
78
- {
79
  background-color: #f1f1f1;
80
  }
 
81
  span.wapt-icon-pro,
82
  .wapt-icon-pro input[class*="factory-"]:before,
83
  .wapt-icon-pro button.factory-image:after,
84
- .wapt-icon-pro ~ div.wapt-upload-div button.wapt-upload-button:after
85
- {
86
  display: inline-block;
87
  position: absolute;
88
  content: 'PRO';
@@ -100,25 +100,25 @@ span.wapt-icon-pro,
100
  right: -15px;
101
  z-index: 11;
102
  }
103
- .wapt-icon-pro ~ div.wapt-upload-div button.wapt-upload-button:after
104
- {
105
  position: initial;
106
  }
107
- .wapt-icon-pro input[class*="factory-"] ~ span.factory-units:before
108
- {
109
  right: auto;
110
  left: 0;
111
  }
112
- span.wapt-icon-pro
113
- {
114
  position: initial;
115
  }
 
116
  .wapt-icon-pro input[class*="factory-"],
117
  .wapt-icon-pro button[class*="factory-"],
118
  .wapt-icon-pro button[class*="wapt"],
119
  .wapt-icon-pro img,
120
- .wapt-icon-pro ~ div.wapt-upload-div button.wapt-upload-button
121
- {
122
  pointer-events: none;
123
  cursor: not-allowed;
124
  opacity: .65;
1
+ .wapt-footer {
 
2
  padding: 0px 30px;
3
  }
4
+
5
+ .factory-bootstrap-430 .factory-ajax-loader {
6
  width: 120px !important;
7
  background: url("../img/ajax-loader-line.gif") no-repeat center center !important;
8
  background-size: contain !important;
11
  left: 20px;
12
  top: 5px;
13
  }
14
+
15
+ .factory-bootstrap-430 select.form-control {
16
  display: inline;
17
  background: #fff url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E) no-repeat right 5px top 55%;
18
  background-size: 16px 16px !important;
19
  }
20
 
21
+ .factory-from-control-integer input {
 
22
  width: 80px;
23
  font-size: 16px !important;
24
  }
25
+
26
+ .factory-bootstrap-430 .btn-default.active, .factory-bootstrap-430 .btn-default:active {
27
  text-shadow: none;
28
  color: #fff !important;
29
  background-color: #33aad5 !important;
34
  border-left: 1px solid;
35
  border-color: #0074a2 !important;
36
  }
37
+
38
+ div.control-group input, div.control-group select {
39
  box-shadow: 1px 1px 5px -2px #8e8d8d !important;
40
  border: 1px solid #ccc !important;
41
  }
42
+
43
+ select#wapt_font {
44
+ border-radius: 3px 0px 0px 3px !important;
45
+ }
46
+
47
+ div.control-group select optgroup {
48
  background-color: #e4e4e4;
49
  }
50
 
51
+ div.control-group .btn-group {
 
52
  border: 0 !important;
53
  }
54
+
55
+ .factory-control-text-align-vertical .btn {
56
  width: 60%;
57
  display: block !important;
58
  border-radius: 0 !important;
59
  }
60
 
61
+ .wapt-image-preview-title {
 
62
  text-align: center;
63
  vertical-align: middle;
64
  }
65
+
66
+ .wapt-image-preview {
67
  background-color: #e8e8e8;
68
  padding: 10px 20px 30px 20px;
69
  }
70
+
71
+ .wapt-image-preview img {
72
  padding: 5px;
73
  border: 1px solid #ccc !important;
74
  border-radius: 5px !important;
75
  box-shadow: 1px 1px 5px -2px #8e8d8d !important;
76
  }
77
+
78
+ .wapt-form-color {
79
  background-color: #f1f1f1;
80
  }
81
+
82
  span.wapt-icon-pro,
83
  .wapt-icon-pro input[class*="factory-"]:before,
84
  .wapt-icon-pro button.factory-image:after,
85
+ .wapt-icon-pro ~ div.wapt-upload-div button.wapt-upload-button:after {
 
86
  display: inline-block;
87
  position: absolute;
88
  content: 'PRO';
100
  right: -15px;
101
  z-index: 11;
102
  }
103
+
104
+ .wapt-icon-pro ~ div.wapt-upload-div button.wapt-upload-button:after {
105
  position: initial;
106
  }
107
+
108
+ .wapt-icon-pro input[class*="factory-"] ~ span.factory-units:before {
109
  right: auto;
110
  left: 0;
111
  }
112
+
113
+ span.wapt-icon-pro {
114
  position: initial;
115
  }
116
+
117
  .wapt-icon-pro input[class*="factory-"],
118
  .wapt-icon-pro button[class*="factory-"],
119
  .wapt-icon-pro button[class*="wapt"],
120
  .wapt-icon-pro img,
121
+ .wapt-icon-pro ~ div.wapt-upload-div button.wapt-upload-button {
 
122
  pointer-events: none;
123
  cursor: not-allowed;
124
  opacity: .65;
admin/assets/css/style.css CHANGED
@@ -65,32 +65,32 @@
65
  left: 50%;
66
  z-index: 100;
67
  }
68
- .column-apt-image
69
- {
70
  width: 100px;
71
  }
72
- .apt_thumbs
73
- {
74
  float: left;
75
  margin: 5px;
76
  }
77
- .column-apt
78
- {
79
  float: left;
80
  margin: 5px;
81
  }
82
- .wapt-image-box
83
- {
84
  overflow: hidden;
85
  display: flex;
86
  width: 100%;
87
  height: 100%;
88
  border-radius: 5px;
89
- box-shadow: 1px 1px 5px 0px rgba(0,0,0,0.2);
90
  border: 1px solid #ccc;
91
  }
92
- .wapt-item-generated
93
- {
94
  color: #000000;
95
  font-weight: 500;
96
  font-size: 16px;
@@ -100,25 +100,25 @@
100
  line-height: 1.3;
101
  }
102
 
103
- li.wapt-grid-item
104
- {
105
  width: 180px;
106
  height: 180px;
107
  cursor: pointer;
108
  }
 
109
  .wapt-grid-item {
110
  float: left;
111
  margin: 5px;
112
  }
113
- .wapt-image-box-checked
114
- {
115
  opacity: 0.5;
116
  filter: alpha(opacity=50); /* For IE8 and earlier */
117
  box-shadow: inset 0 0 1px 5px #0073aa, inset 0 0 2px 7px #fff;
118
  }
119
- input
120
- {
121
- padding:7px 7px 7px 9px;
122
  }
123
 
124
  /*
@@ -133,8 +133,7 @@ input
133
  }
134
  */
135
  /* GUTENBERG */
136
- .apt-sidebar-content
137
- {
138
  padding: 10px;
139
  }
140
 
@@ -167,18 +166,18 @@ input
167
  -webkit-box-shadow: inset 0 3px 8px 0 #f8ba36;
168
  box-shadow: inset 0 3px 8px 0 #f8ba36;
169
  }
170
- .purchase-premium
171
- {
172
  text-decoration: none;
173
  }
174
- .wapt-sup-pro
175
- {
176
  font-weight: bold;
177
  color: red;
178
  }
 
179
  /*Filters block*/
180
- .apt-filter-row
181
- {
182
  background: #ffffff;
183
  padding: 20px 10px 20px 10px;
184
  margin: 10px 0px 10px 0px !important;
@@ -186,28 +185,51 @@ input
186
  border-radius: 10px;
187
  }
188
 
189
- .apt-filter-input
190
- {
191
  width: 150px;
192
  }
193
 
194
- .apt-filter-label
195
- {
196
  font-size: 15px;
197
  margin-top: 5px;
198
  margin-left: 5px;
199
  margin-right: 5px;
200
  }
201
 
202
- .checked_api_key_ok
203
- {
204
  border: 2px solid green !important;
205
  }
206
- .checked_api_key_fail
207
- {
208
  border: 2px solid red !important;
209
  }
210
- .checked_api_key_proccess
211
- {
212
  background: #fff url('../img/ajax-loader.gif') 98%/25px no-repeat !important;
213
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  left: 50%;
66
  z-index: 100;
67
  }
68
+
69
+ .column-apt-image {
70
  width: 100px;
71
  }
72
+
73
+ .apt_thumbs {
74
  float: left;
75
  margin: 5px;
76
  }
77
+
78
+ .column-apt {
79
  float: left;
80
  margin: 5px;
81
  }
82
+
83
+ .wapt-image-box {
84
  overflow: hidden;
85
  display: flex;
86
  width: 100%;
87
  height: 100%;
88
  border-radius: 5px;
89
+ box-shadow: 1px 1px 5px 0px rgba(0, 0, 0, 0.2);
90
  border: 1px solid #ccc;
91
  }
92
+
93
+ .wapt-item-generated {
94
  color: #000000;
95
  font-weight: 500;
96
  font-size: 16px;
100
  line-height: 1.3;
101
  }
102
 
103
+ li.wapt-grid-item {
 
104
  width: 180px;
105
  height: 180px;
106
  cursor: pointer;
107
  }
108
+
109
  .wapt-grid-item {
110
  float: left;
111
  margin: 5px;
112
  }
113
+
114
+ .wapt-image-box-checked {
115
  opacity: 0.5;
116
  filter: alpha(opacity=50); /* For IE8 and earlier */
117
  box-shadow: inset 0 0 1px 5px #0073aa, inset 0 0 2px 7px #fff;
118
  }
119
+
120
+ input {
121
+ padding: 7px 7px 7px 9px;
122
  }
123
 
124
  /*
133
  }
134
  */
135
  /* GUTENBERG */
136
+ .apt-sidebar-content {
 
137
  padding: 10px;
138
  }
139
 
166
  -webkit-box-shadow: inset 0 3px 8px 0 #f8ba36;
167
  box-shadow: inset 0 3px 8px 0 #f8ba36;
168
  }
169
+
170
+ .purchase-premium {
171
  text-decoration: none;
172
  }
173
+
174
+ .wapt-sup-pro {
175
  font-weight: bold;
176
  color: red;
177
  }
178
+
179
  /*Filters block*/
180
+ .apt-filter-row {
 
181
  background: #ffffff;
182
  padding: 20px 10px 20px 10px;
183
  margin: 10px 0px 10px 0px !important;
185
  border-radius: 10px;
186
  }
187
 
188
+ .apt-filter-input {
 
189
  width: 150px;
190
  }
191
 
192
+ .apt-filter-label {
 
193
  font-size: 15px;
194
  margin-top: 5px;
195
  margin-left: 5px;
196
  margin-right: 5px;
197
  }
198
 
199
+ .checked_api_key_ok {
 
200
  border: 2px solid green !important;
201
  }
202
+
203
+ .checked_api_key_fail {
204
  border: 2px solid red !important;
205
  }
206
+
207
+ .checked_api_key_proccess {
208
  background: #fff url('../img/ajax-loader.gif') 98%/25px no-repeat !important;
209
+ }
210
+
211
+ .wapt-pro-row {
212
+ opacity: 0.5;
213
+ }
214
+
215
+ .wapt-pro-row input, .wapt-pro-row select {
216
+ pointer-events: none;
217
+ }
218
+ .wapt-pro-row input+span:before, .wapt-pro-row select+span:before {
219
+ display: inline-block;
220
+ position: absolute;
221
+ content: 'PRO';
222
+ background: #ff5722;
223
+ border-radius: 4px;
224
+ color: #fff;
225
+ font-size: 10px;
226
+ line-height: 1;
227
+ font-style: normal;
228
+ padding: 4px 6px;
229
+ margin-left: 4px;
230
+ vertical-align: top;
231
+ top: -10px;
232
+ left: 0;
233
+ right: auto;
234
+ z-index: 11;
235
+ }
admin/assets/css/tabs.css CHANGED
@@ -1,221 +1,227 @@
1
- #wpcontent
2
- {
3
- padding-left: 0 !important;
4
- background-color: white !important;
5
  }
6
- #wpbody-content
7
- {
8
- /*height: 100vh;*/
9
  }
 
10
  a:active, a:focus {
11
- outline: none !important;
12
- box-shadow: none !important;
13
  }
14
- .wis-container {
15
- /*padding: 0px 30px 0px 10px;*/
16
- padding: 1px 0 0 0;
17
- background-color: #ffffff;
 
18
  }
 
19
  .tabs {
20
- position: relative;
21
- width: 100%;
22
- overflow: hidden;
23
- margin: 1em 0 2em;
24
- font-weight: 400;
25
  }
26
 
27
  /* Nav */
28
  .tabs nav {
29
- text-align: left;
30
- margin-bottom: -4px;
31
  }
32
 
33
  .tabs nav ul {
34
- padding: 0;
35
- margin: 0;
36
- list-style: none;
37
- display: inline-block;
38
- margin-left: 25px;
39
  }
40
 
41
  .tabs nav ul li {
42
- border: 1px solid #ccc;
43
- border-bottom: none;
44
- border-top-left-radius: 10px;
45
- border-top-right-radius: 10px;
46
- border-bottom-right-radius: 0px;
47
- border-bottom-left-radius: 0px;
48
- margin: 0 0.25em;
49
- display: block;
50
- float: left;
51
- position: relative;
52
- width: 20em;
53
- background-color: #f1f1f1;
54
  }
 
55
  .tabs nav ul li:hover {
56
- background-color: white;
57
  }
 
58
  .tabs nav li.tab-current {
59
- border: 1px solid #006303;
60
- box-shadow: inset 0px 5px 4px -3px #ff7600;
61
- border-top-left-radius: 10px;
62
- border-top-right-radius: 10px;
63
- border-bottom-right-radius: 0px;
64
- border-bottom-left-radius: 0px;
65
- border-bottom: none;
66
- z-index: 100;
67
- background-color: #f1f1f1;
68
  }
69
 
70
  .tabs nav li.tab-current:before,
71
  .tabs nav li.tab-current:after {
72
- content: '';
73
- position: absolute;
74
- height: 1px;
75
- right: 100%;
76
- bottom: 0;
77
- width: 1000px;
78
- background: #006303;
79
  }
80
 
81
  .tabs nav li.tab-current:after {
82
- right: auto;
83
- left: 100%;
84
- width: 4000px;
85
  }
86
 
87
  .tabs nav a {
88
- color: #becbd2;
89
- display: block;
90
- font-size: 1.45em;
91
- line-height: 2.5;
92
- padding: 0 1.25em;
93
- white-space: nowrap;
94
  }
95
 
96
  .tabs nav a:hover {
97
- color: #006303;
98
  }
99
 
100
  .tabs nav li.tab-current a {
101
- color: #006303;
102
- font-weight: bold;
103
- outline: none !important;
104
  }
105
 
106
  /* Icons */
107
  .tabs nav a:before {
108
- display: inline-block;
109
- vertical-align: middle;
110
- text-transform: none;
111
- font-weight: normal;
112
- font-variant: normal;
113
- line-height: 1;
114
- speak: none;
115
- -webkit-font-smoothing: antialiased;
116
- margin: -0.25em 0.4em 0 0;
117
  }
118
 
119
  .icon-general:before {
120
- content: url(../img/settings-icon.png);
121
  }
 
122
  .icon-image:before {
123
- content: url(../img/image-icon.png);
124
  }
 
125
  .icon-api:before {
126
- content: url(../img/api-icon.png);
127
  }
128
 
129
 
130
  /* Content */
131
- .content
132
- {
133
- border-bottom: 1px solid #006303;
134
- border-top: 0;
135
- background-color: #f1f1f1;
136
- padding: 10px 30px;
137
- /*height: 100vh;*/
138
  }
 
139
  .content section {
140
 
141
- /*padding: 1em 2em;*/
142
- max-width: 1230px;
143
- margin: 0 auto;
144
  }
145
 
146
  .content section:before,
147
  .content section:after {
148
- content: '';
149
- display: table;
150
  }
151
 
152
  .content section:after {
153
- clear: both;
154
  }
155
 
156
  /* Fallback example */
157
  .no-js .content section {
158
- display: block;
159
- padding-bottom: 2em;
160
- border-bottom: 1px solid #006303;
161
  }
162
 
163
  .content section.content-current {
164
- display: block;
165
  }
166
 
167
  /* Example media queries */
168
 
169
  @media screen and (max-width: 52.375em) {
170
- .tabs nav a span {
171
- display: none;
172
- }
173
 
174
- .tabs nav a:before {
175
- margin-right: 0;
176
- }
177
  }
178
 
179
  @media screen and (max-width: 32em) {
180
- .tabs nav ul,
181
- .tabs nav ul li a {
182
- width: 100%;
183
- padding: 0;
184
- }
185
 
186
- .tabs nav ul li {
187
- width: 20%;
188
- width: calc(20% + 1px);
189
- margin: 0 0 0 -1px;
190
- }
191
 
192
- .tabs nav ul li:last-child {
193
- border-right: none;
194
- }
195
  }
196
 
197
  .tabs nav li a {
198
- color: #006303;
199
- text-decoration: none;
200
- outline: none !important;
201
  }
202
 
203
  .tabs nav li a:hover {
204
- font-weight: bold;
205
  }
206
 
207
  p.info {
208
- text-align: center;
209
- padding: 20px;
210
- }
211
- .wapt-page-title
212
- {
213
- text-align: center;
214
- padding: 10px 0;
215
- }
216
- .wapt-page-title h1
217
- {
218
- vertical-align: middle;
219
- color: #000000;
220
- text-shadow: 1px 1px 1px #ccc;
221
  }
1
+ #wpcontent {
2
+ padding-left: 0 !important;
3
+ background-color: white !important;
 
4
  }
5
+
6
+ #wpbody-content {
7
+ /*height: 100vh;*/
8
  }
9
+
10
  a:active, a:focus {
11
+ outline: none !important;
12
+ box-shadow: none !important;
13
  }
14
+
15
+ .wapt-container {
16
+ /*padding: 0px 30px 0px 10px;*/
17
+ padding: 1px 0 0 0;
18
+ background-color: #ffffff;
19
  }
20
+
21
  .tabs {
22
+ position: relative;
23
+ width: 100%;
24
+ overflow: hidden;
25
+ margin: 1em 0 2em;
26
+ font-weight: 400;
27
  }
28
 
29
  /* Nav */
30
  .tabs nav {
31
+ text-align: left;
32
+ margin-bottom: -4px;
33
  }
34
 
35
  .tabs nav ul {
36
+ padding: 0;
37
+ margin: 0;
38
+ list-style: none;
39
+ display: inline-block;
40
+ margin-left: 25px;
41
  }
42
 
43
  .tabs nav ul li {
44
+ border: 1px solid #ccc;
45
+ border-bottom: none;
46
+ border-top-left-radius: 10px;
47
+ border-top-right-radius: 10px;
48
+ border-bottom-right-radius: 0px;
49
+ border-bottom-left-radius: 0px;
50
+ margin: 0 0.25em;
51
+ display: block;
52
+ float: left;
53
+ position: relative;
54
+ width: 20em;
55
+ background-color: #f1f1f1;
56
  }
57
+
58
  .tabs nav ul li:hover {
59
+ background-color: white;
60
  }
61
+
62
  .tabs nav li.tab-current {
63
+ border: 1px solid #006303;
64
+ box-shadow: inset 0px 5px 4px -3px #ff7600;
65
+ border-top-left-radius: 10px;
66
+ border-top-right-radius: 10px;
67
+ border-bottom-right-radius: 0px;
68
+ border-bottom-left-radius: 0px;
69
+ border-bottom: none;
70
+ z-index: 100;
71
+ background-color: #f1f1f1;
72
  }
73
 
74
  .tabs nav li.tab-current:before,
75
  .tabs nav li.tab-current:after {
76
+ content: '';
77
+ position: absolute;
78
+ height: 1px;
79
+ right: 100%;
80
+ bottom: 0;
81
+ width: 1000px;
82
+ background: #006303;
83
  }
84
 
85
  .tabs nav li.tab-current:after {
86
+ right: auto;
87
+ left: 100%;
88
+ width: 4000px;
89
  }
90
 
91
  .tabs nav a {
92
+ color: #becbd2;
93
+ display: block;
94
+ font-size: 1.45em;
95
+ line-height: 2.5;
96
+ padding: 0 1.25em;
97
+ white-space: nowrap;
98
  }
99
 
100
  .tabs nav a:hover {
101
+ color: #006303;
102
  }
103
 
104
  .tabs nav li.tab-current a {
105
+ color: #006303;
106
+ font-weight: bold;
107
+ outline: none !important;
108
  }
109
 
110
  /* Icons */
111
  .tabs nav a:before {
112
+ display: inline-block;
113
+ vertical-align: middle;
114
+ text-transform: none;
115
+ font-weight: normal;
116
+ font-variant: normal;
117
+ line-height: 1;
118
+ speak: none;
119
+ -webkit-font-smoothing: antialiased;
120
+ margin: -0.25em 0.4em 0 0;
121
  }
122
 
123
  .icon-general:before {
124
+ content: url(../img/settings-icon.png);
125
  }
126
+
127
  .icon-image:before {
128
+ content: url(../img/image-icon.png);
129
  }
130
+
131
  .icon-api:before {
132
+ content: url(../img/api-icon.png);
133
  }
134
 
135
 
136
  /* Content */
137
+ .content {
138
+ border-bottom: 1px solid #006303;
139
+ border-top: 0;
140
+ background-color: #f1f1f1;
141
+ padding: 10px 30px;
142
+ /*height: 100vh;*/
 
143
  }
144
+
145
  .content section {
146
 
147
+ /*padding: 1em 2em;*/
148
+ max-width: 1230px;
149
+ margin: 0 auto;
150
  }
151
 
152
  .content section:before,
153
  .content section:after {
154
+ content: '';
155
+ display: table;
156
  }
157
 
158
  .content section:after {
159
+ clear: both;
160
  }
161
 
162
  /* Fallback example */
163
  .no-js .content section {
164
+ display: block;
165
+ padding-bottom: 2em;
166
+ border-bottom: 1px solid #006303;
167
  }
168
 
169
  .content section.content-current {
170
+ display: block;
171
  }
172
 
173
  /* Example media queries */
174
 
175
  @media screen and (max-width: 52.375em) {
176
+ .tabs nav a span {
177
+ display: none;
178
+ }
179
 
180
+ .tabs nav a:before {
181
+ margin-right: 0;
182
+ }
183
  }
184
 
185
  @media screen and (max-width: 32em) {
186
+ .tabs nav ul,
187
+ .tabs nav ul li a {
188
+ width: 100%;
189
+ padding: 0;
190
+ }
191
 
192
+ .tabs nav ul li {
193
+ width: 20%;
194
+ width: calc(20% + 1px);
195
+ margin: 0 0 0 -1px;
196
+ }
197
 
198
+ .tabs nav ul li:last-child {
199
+ border-right: none;
200
+ }
201
  }
202
 
203
  .tabs nav li a {
204
+ color: #006303;
205
+ text-decoration: none;
206
+ outline: none !important;
207
  }
208
 
209
  .tabs nav li a:hover {
210
+ font-weight: bold;
211
  }
212
 
213
  p.info {
214
+ text-align: center;
215
+ padding: 20px;
216
+ }
217
+
218
+ .wapt-page-title {
219
+ text-align: center;
220
+ padding: 10px 0;
221
+ }
222
+
223
+ .wapt-page-title h1 {
224
+ vertical-align: middle;
225
+ color: #000000;
226
+ text-shadow: 1px 1px 1px #ccc;
227
  }
admin/assets/img/apt.svg CHANGED
@@ -1,13 +1,13 @@
1
  <?xml version="1.0" standalone="no"?>
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
- "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
  <svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
- width="99.000000pt" height="95.000000pt" viewBox="0 0 99.000000 95.000000"
6
- preserveAspectRatio="xMidYMid meet">
7
- <metadata>
8
- Created by potrace 1.15, written by Peter Selinger 2001-2017
9
- </metadata>
10
- <g transform="translate(0.000000,95.000000) scale(0.100000,-0.100000)"
11
- fill="#000000" stroke="none">
12
- </g>
13
  </svg>
1
  <?xml version="1.0" standalone="no"?>
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
  <svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
+ width="99.000000pt" height="95.000000pt" viewBox="0 0 99.000000 95.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+ <metadata>
8
+ Created by potrace 1.15, written by Peter Selinger 2001-2017
9
+ </metadata>
10
+ <g transform="translate(0.000000,95.000000) scale(0.100000,-0.100000)"
11
+ fill="#000000" stroke="none">
12
+ </g>
13
  </svg>
admin/assets/img/loading.svg CHANGED
@@ -1 +1,7 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" width="80px" height="80px" viewBox="0 0 128 128" xml:space="preserve"><path d="M0 128V83h17.25v27.75h93.5V83H128v45H0z" fill="#d9d9d9" fill-opacity="1"/><g><path d="M80.92-97.82v51.27h18.15L64-.05l-35.07-46.5h18.15v-51.27h33.84z" fill="#d9d9d9" fill-opacity="1"/><animateTransform attributeName="transform" type="translate" from="0 0" to="0 220" dur="1400ms" repeatCount="indefinite"/></g></svg>
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
3
+ xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" width="80px" height="80px" viewBox="0 0 128 128"
4
+ xml:space="preserve"><path d="M0 128V83h17.25v27.75h93.5V83H128v45H0z" fill="#d9d9d9" fill-opacity="1"/>
5
+ <g><path d="M80.92-97.82v51.27h18.15L64-.05l-35.07-46.5h18.15v-51.27h33.84z" fill="#d9d9d9" fill-opacity="1"/>
6
+ <animateTransform attributeName="transform" type="translate" from="0 0" to="0 220" dur="1400ms"
7
+ repeatCount="indefinite"/></g></svg>
admin/assets/jquery-ui/jquery.autocolumnlist.js CHANGED
@@ -8,18 +8,18 @@
8
  * Author URI: https://neolot.com
9
  */
10
 
11
- (function($) {
12
  var defaults = {
13
  columns: 4,
14
  classname: 'column',
15
  min: 1
16
  };
17
 
18
- $.fn.autocolumnlist = function(params){
19
  var options = $.extend({}, defaults, params);
20
- return this.each(function() {
21
  var data_parameters = $(this).data();
22
- if ( data_parameters ) {
23
  $.each(data_parameters, function (key, value) {
24
  options[key] = value;
25
  });
@@ -28,21 +28,21 @@
28
  var els = $(this).find('> li');
29
  var dimension = els.length;
30
  if (dimension > 0) {
31
- var elCol = Math.ceil(dimension/options.columns);
32
  if (elCol < options.min) {
33
  elCol = options.min;
34
  }
35
  var start = 0;
36
  var end = elCol;
37
 
38
- for (i=0; i<options.columns; i++) {
39
  if ((i + 1) == options.columns) {
40
- els.slice(start, end).wrapAll('<div class="'+options.classname+' last" />');
41
  } else {
42
- els.slice(start, end).wrapAll('<div class="'+options.classname+'" />');
43
  }
44
- start = start+elCol;
45
- end = end+elCol;
46
  }
47
  }
48
  });
8
  * Author URI: https://neolot.com
9
  */
10
 
11
+ (function ($) {
12
  var defaults = {
13
  columns: 4,
14
  classname: 'column',
15
  min: 1
16
  };
17
 
18
+ $.fn.autocolumnlist = function (params) {
19
  var options = $.extend({}, defaults, params);
20
+ return this.each(function () {
21
  var data_parameters = $(this).data();
22
+ if (data_parameters) {
23
  $.each(data_parameters, function (key, value) {
24
  options[key] = value;
25
  });
28
  var els = $(this).find('> li');
29
  var dimension = els.length;
30
  if (dimension > 0) {
31
+ var elCol = Math.ceil(dimension / options.columns);
32
  if (elCol < options.min) {
33
  elCol = options.min;
34
  }
35
  var start = 0;
36
  var end = elCol;
37
 
38
+ for (i = 0; i < options.columns; i++) {
39
  if ((i + 1) == options.columns) {
40
+ els.slice(start, end).wrapAll('<div class="' + options.classname + ' last" />');
41
  } else {
42
+ els.slice(start, end).wrapAll('<div class="' + options.classname + '" />');
43
  }
44
+ start = start + elCol;
45
+ end = end + elCol;
46
  }
47
  }
48
  });
admin/assets/js/admin-thumbnail.js CHANGED
@@ -9,49 +9,49 @@
9
  *
10
  * global ajaxurl, apt_thumb - language array
11
  */
12
- (function($){
13
  //Отображение окна со всеми картинками в тексте поста
14
- jQuery(document).ready(function($){
15
-
16
- jQuery(document).on('click', '#hide_notice_auto_generation', function(e) {
17
- e.preventDefault();
18
- jQuery('#notice_auto_generation').animate({opacity: 'hide' , height: 'hide'}, 200);
19
- jQuery.post ( ajaxurl, {
20
- action: 'hide_notice_auto_generation',
21
- }).done( function( html ) {
22
- console.log('Hided');
23
- });
24
 
25
- });
26
 
27
 
28
- window.aptModalShow = function(that, postid, wpnonce){
29
-
30
- var $modal = $('#post_imgs_'+postid).find('> p');
31
- var $ajaximg = $('#post_imgs_'+postid).find('> span');
32
- //$modal.html('');
33
- $('.imgs').find('> p').html(''); //очистка всех модальных окон, чтобы исключить конфликты
34
-
35
- tb_show( apt_thumb.modal_title, '/?TB_inline&inlineId=post_imgs_'+postid+'&width=620&height=500' );
36
-
37
- $ajaximg.show();
38
- // AJAX запрос для загрузки контента окна
39
- jQuery.post ( ajaxurl, {
40
- action: action_column_get_thumbnails,
41
- post_id: postid,
42
- _ajax_nonce: wpnonce,
43
- cookie: encodeURIComponent( document.cookie )
44
- }).done( function( html ) {
45
- $ajaximg.hide();
46
- $modal.html(html);
47
- $('#wapt_thumbs').autocolumnlist({
48
- columns: 3,
49
- classname: 'wapt-grid-item',
50
- min: 1
 
51
  });
52
- });
53
 
54
- //return false; // для ссылки
55
- }
56
- });
57
  })(jQuery);
9
  *
10
  * global ajaxurl, apt_thumb - language array
11
  */
12
+ (function ($) {
13
  //Отображение окна со всеми картинками в тексте поста
14
+ jQuery(document).ready(function ($) {
15
+
16
+ jQuery(document).on('click', '#hide_notice_auto_generation', function (e) {
17
+ e.preventDefault();
18
+ jQuery('#notice_auto_generation').animate({opacity: 'hide', height: 'hide'}, 200);
19
+ jQuery.post(ajaxurl, {
20
+ action: 'hide_notice_auto_generation',
21
+ }).done(function (html) {
22
+ console.log('Hided');
23
+ });
24
 
25
+ });
26
 
27
 
28
+ window.aptModalShow = function (that, postid, wpnonce) {
29
+
30
+ var $modal = $('#post_imgs_' + postid).find('> p');
31
+ var $ajaximg = $('#post_imgs_' + postid).find('> span');
32
+ //$modal.html('');
33
+ $('.imgs').find('> p').html(''); //очистка всех модальных окон, чтобы исключить конфликты
34
+
35
+ tb_show(apt_thumb.modal_title, '/?TB_inline&inlineId=post_imgs_' + postid + '&width=620&height=500');
36
+
37
+ $ajaximg.show();
38
+ // AJAX запрос для загрузки контента окна
39
+ jQuery.post(ajaxurl, {
40
+ action: action_column_get_thumbnails,
41
+ post_id: postid,
42
+ _ajax_nonce: wpnonce,
43
+ cookie: encodeURIComponent(document.cookie)
44
+ }).done(function (html) {
45
+ $ajaximg.hide();
46
+ $modal.html(html);
47
+ $('#wapt_thumbs').autocolumnlist({
48
+ columns: 3,
49
+ classname: 'wapt-grid-item',
50
+ min: 1
51
+ });
52
  });
 
53
 
54
+ //return false; // для ссылки
55
+ }
56
+ });
57
  })(jQuery);
admin/assets/js/check-api.js CHANGED
@@ -1,8 +1,7 @@
1
- function check_api_google(provider)
2
- {
3
- provider_input = jQuery('#wapt_'+provider+'_apikey');
4
- provider_input2 = jQuery('#wapt_'+provider+'_cse');
5
- if(provider_input.val() !== "" || provider_input2.val() !== "") {
6
  provider_input.addClass("checked_api_key_proccess");
7
  provider_input2.addClass("checked_api_key_proccess");
8
  jQuery.post(ajaxurl, {
@@ -27,9 +26,7 @@ function check_api_google(provider)
27
  provider_input2.addClass("checked_api_key_fail");
28
  }
29
  });
30
- }
31
- else if (provider_input.val() === "" && provider_input2.val() === "")
32
- {
33
  provider_input.removeClass("checked_api_key_proccess");
34
  provider_input2.removeClass("checked_api_key_proccess");
35
  provider_input.removeClass("checked_api_key_fail");
@@ -40,9 +37,9 @@ function check_api_google(provider)
40
  }
41
  }
42
 
43
- jQuery(document).on('change', '#wapt_google_apikey', function(event) {
44
  check_api_google('google');
45
  });
46
- jQuery(document).on('change', '#wapt_google_cse', function(event) {
47
  check_api_google('google');
48
  });
1
+ function check_api_google(provider) {
2
+ provider_input = jQuery('#wapt_' + provider + '_apikey');
3
+ provider_input2 = jQuery('#wapt_' + provider + '_cse');
4
+ if (provider_input.val() !== "" || provider_input2.val() !== "") {
 
5
  provider_input.addClass("checked_api_key_proccess");
6
  provider_input2.addClass("checked_api_key_proccess");
7
  jQuery.post(ajaxurl, {
26
  provider_input2.addClass("checked_api_key_fail");
27
  }
28
  });
29
+ } else if (provider_input.val() === "" && provider_input2.val() === "") {
 
 
30
  provider_input.removeClass("checked_api_key_proccess");
31
  provider_input2.removeClass("checked_api_key_proccess");
32
  provider_input.removeClass("checked_api_key_fail");
37
  }
38
  }
39
 
40
+ jQuery(document).on('change', '#wapt_google_apikey', function (event) {
41
  check_api_google('google');
42
  });
43
+ jQuery(document).on('change', '#wapt_google_cse', function (event) {
44
  check_api_google('google');
45
  });
admin/assets/js/dreamstime-media-views.js CHANGED
@@ -1,165 +1,165 @@
1
- (function($) {
2
- var l10n = wp.media.view.l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n;
3
-
4
- wp.media.view.MediaFrame.Select = wp.media.view.MediaFrame.Select.extend({
5
-
6
- bindHandlers: function() {
7
- this.on('router:create:browse', this.createRouter, this);
8
- this.on('router:render:browse', this.browseRouter, this);
9
- this.on('content:create:browse', this.browseContent, this);
10
- this.on('content:render:upload', this.uploadContent, this);
11
- this.on('toolbar:create:select', this.createSelectToolbar, this);
12
-
13
- this.on('content:create:dreamstime', this.dreamstimeContent, this);
14
- this.on('content:render:dreamstime', this.dreamstimeContent, this);
15
-
16
- this.on('content:create:apt', this.aptContent, this);
17
- this.on('content:render:apt', this.aptContent, this);
18
- },
19
-
20
- browseRouter: function(view) {
21
- view.set({
22
- upload: {
23
- text: l10n.uploadFilesTitle,
24
- priority: 20
25
- },
26
- browse: {
27
- text: l10n.mediaLibraryTitle,
28
- priority: 40
29
- },
30
- dreamstime: {
31
- text: 'Dreamstime',
32
- priority: 60
33
- },
34
- apt: {
35
- text: 'Auto Post thumbnails',
36
- priority: 70
37
- }
38
- });
39
- },
40
-
41
- dreamstimeContent: function(content) {
42
- this.$el.removeClass('hide-toolbar');
43
- this.state().set('src', dreamstimeIframeSrc); //set in Dreamstime::loadCssJs with wp_localize_script()
44
- content.view = new wp.media.view.Iframe({
45
- controller: this
46
- });
47
- },
48
- aptContent: function(content) {
49
- this.$el.removeClass('hide-toolbar');
50
- this.state().set('src', apt_media_iframe.src); //set in Dreamstime::loadCssJs with wp_localize_script()
51
- content.view = new wp.media.view.Iframe({
52
- controller: this
53
- });
54
- }
55
-
56
- });
57
-
58
- var mediaFrameSelect = wp.media.view.MediaFrame.Select;
59
- wp.media.view.MediaFrame.Post = wp.media.view.MediaFrame.Post.extend({
60
- bindHandlers: function() {
61
- var handlers, checkCounts;
62
-
63
- mediaFrameSelect.prototype.bindHandlers.apply(this, arguments);
64
-
65
- this.on('activate', this.activate, this);
66
-
67
- // Only bother checking media type counts if one of the counts is zero
68
- checkCounts = _.find(this.counts, function(type) {
69
- return type.count === 0;
70
- });
71
-
72
- if( typeof checkCounts !== 'undefined' ) {
73
- this.listenTo(wp.media.model.Attachments.all, 'change:type', this.mediaTypeCounts);
74
- }
75
-
76
- this.on('menu:create:gallery', this.createMenu, this);
77
- this.on('menu:create:playlist', this.createMenu, this);
78
- this.on('menu:create:video-playlist', this.createMenu, this);
79
- this.on('toolbar:create:main-insert', this.createToolbar, this);
80
- this.on('toolbar:create:main-gallery', this.createToolbar, this);
81
- this.on('toolbar:create:main-playlist', this.createToolbar, this);
82
- this.on('toolbar:create:main-video-playlist', this.createToolbar, this);
83
- this.on('toolbar:create:featured-image', this.featuredImageToolbar, this);
84
- this.on('toolbar:create:main-embed', this.mainEmbedToolbar, this);
85
-
86
- handlers = {
87
- menu: {
88
- 'default': 'mainMenu',
89
- 'gallery': 'galleryMenu',
90
- 'playlist': 'playlistMenu',
91
- 'video-playlist': 'videoPlaylistMenu'
92
- },
93
-
94
- content: {
95
- 'embed': 'embedContent',
96
- 'edit-image': 'editImageContent',
97
- 'edit-selection': 'editSelectionContent'
98
- },
99
-
100
- toolbar: {
101
- 'main-insert': 'mainInsertToolbar',
102
- 'main-gallery': 'mainGalleryToolbar',
103
- 'gallery-edit': 'galleryEditToolbar',
104
- 'gallery-add': 'galleryAddToolbar',
105
- 'main-playlist': 'mainPlaylistToolbar',
106
- 'playlist-edit': 'playlistEditToolbar',
107
- 'playlist-add': 'playlistAddToolbar',
108
- 'main-video-playlist': 'mainVideoPlaylistToolbar',
109
- 'video-playlist-edit': 'videoPlaylistEditToolbar',
110
- 'video-playlist-add': 'videoPlaylistAddToolbar'
111
- }
112
- };
113
-
114
- _.each(handlers, function(regionHandlers, region) {
115
- _.each(regionHandlers, function(callback, handler) {
116
- this.on(region + ':render:' + handler, this[callback], this);
117
- }, this);
118
- }, this);
119
- },
120
-
121
- browseRouter: function(view) {
122
- view.set({
123
- upload: {
124
- text: l10n.uploadFilesTitle,
125
- priority: 20
126
- },
127
- browse: {
128
- text: l10n.mediaLibraryTitle,
129
- priority: 40
130
- },
131
- dreamstime: {
132
- text: 'Dreamstime',
133
- priority: 60
134
- },
135
- apt: {
136
- text: 'Auto Post thumbnails',
137
- priority: 70
138
- }
139
- });
140
- },
141
-
142
- dreamstimeContent: function(content) {
143
- this.$el.removeClass('hide-toolbar');
144
- this.state().set('src', dreamstimeIframeSrc); //set in Dreamstime::loadCssJs with wp_localize_script()
145
- content.view = new wp.media.view.Iframe({
146
- controller: this
147
- });
148
- },
149
- aptContent: function(content) {
150
- this.$el.removeClass('hide-toolbar');
151
- this.state().set('src', apt_media_iframe.src); //set in Dreamstime::loadCssJs with wp_localize_script()
152
- content.view = new wp.media.view.Iframe({
153
- controller: this
154
- });
155
- }
156
-
157
- });
158
 
159
  }(jQuery));
160
 
161
- window.cvapt_media_refresh = window.cvapt_media_refresh || function() {
162
- wp.media.frame.content.mode('browse');
163
- wp.media.frame.content.get().collection.props.set({ignore: (+new Date())});
164
  }
165
 
1
+ (function ($) {
2
+ var l10n = wp.media.view.l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n;
3
+
4
+ wp.media.view.MediaFrame.Select = wp.media.view.MediaFrame.Select.extend({
5
+
6
+ bindHandlers: function () {
7
+ this.on('router:create:browse', this.createRouter, this);
8
+ this.on('router:render:browse', this.browseRouter, this);
9
+ this.on('content:create:browse', this.browseContent, this);
10
+ this.on('content:render:upload', this.uploadContent, this);
11
+ this.on('toolbar:create:select', this.createSelectToolbar, this);
12
+
13
+ this.on('content:create:dreamstime', this.dreamstimeContent, this);
14
+ this.on('content:render:dreamstime', this.dreamstimeContent, this);
15
+
16
+ this.on('content:create:apt', this.aptContent, this);
17
+ this.on('content:render:apt', this.aptContent, this);
18
+ },
19
+
20
+ browseRouter: function (view) {
21
+ view.set({
22
+ upload: {
23
+ text: l10n.uploadFilesTitle,
24
+ priority: 20
25
+ },
26
+ browse: {
27
+ text: l10n.mediaLibraryTitle,
28
+ priority: 40
29
+ },
30
+ dreamstime: {
31
+ text: 'Dreamstime',
32
+ priority: 60
33
+ },
34
+ apt: {
35
+ text: 'Auto Featured Images',
36
+ priority: 70
37
+ }
38
+ });
39
+ },
40
+
41
+ dreamstimeContent: function (content) {
42
+ this.$el.removeClass('hide-toolbar');
43
+ this.state().set('src', dreamstimeIframeSrc); //set in Dreamstime::loadCssJs with wp_localize_script()
44
+ content.view = new wp.media.view.Iframe({
45
+ controller: this
46
+ });
47
+ },
48
+ aptContent: function (content) {
49
+ this.$el.removeClass('hide-toolbar');
50
+ this.state().set('src', apt_media_iframe.src); //set in Dreamstime::loadCssJs with wp_localize_script()
51
+ content.view = new wp.media.view.Iframe({
52
+ controller: this
53
+ });
54
+ }
55
+
56
+ });
57
+
58
+ var mediaFrameSelect = wp.media.view.MediaFrame.Select;
59
+ wp.media.view.MediaFrame.Post = wp.media.view.MediaFrame.Post.extend({
60
+ bindHandlers: function () {
61
+ var handlers, checkCounts;
62
+
63
+ mediaFrameSelect.prototype.bindHandlers.apply(this, arguments);
64
+
65
+ this.on('activate', this.activate, this);
66
+
67
+ // Only bother checking media type counts if one of the counts is zero
68
+ checkCounts = _.find(this.counts, function (type) {
69
+ return type.count === 0;
70
+ });
71
+
72
+ if (typeof checkCounts !== 'undefined') {
73
+ this.listenTo(wp.media.model.Attachments.all, 'change:type', this.mediaTypeCounts);
74
+ }
75
+
76
+ this.on('menu:create:gallery', this.createMenu, this);
77
+ this.on('menu:create:playlist', this.createMenu, this);
78
+ this.on('menu:create:video-playlist', this.createMenu, this);
79
+ this.on('toolbar:create:main-insert', this.createToolbar, this);
80
+ this.on('toolbar:create:main-gallery', this.createToolbar, this);
81
+ this.on('toolbar:create:main-playlist', this.createToolbar, this);
82
+ this.on('toolbar:create:main-video-playlist', this.createToolbar, this);
83
+ this.on('toolbar:create:featured-image', this.featuredImageToolbar, this);
84
+ this.on('toolbar:create:main-embed', this.mainEmbedToolbar, this);
85
+
86
+ handlers = {
87
+ menu: {
88
+ 'default': 'mainMenu',
89
+ 'gallery': 'galleryMenu',
90
+ 'playlist': 'playlistMenu',
91
+ 'video-playlist': 'videoPlaylistMenu'
92
+ },
93
+
94
+ content: {
95
+ 'embed': 'embedContent',
96
+ 'edit-image': 'editImageContent',
97
+ 'edit-selection': 'editSelectionContent'
98
+ },
99
+
100
+ toolbar: {
101
+ 'main-insert': 'mainInsertToolbar',
102
+ 'main-gallery': 'mainGalleryToolbar',
103
+ 'gallery-edit': 'galleryEditToolbar',
104
+ 'gallery-add': 'galleryAddToolbar',
105
+ 'main-playlist': 'mainPlaylistToolbar',
106
+ 'playlist-edit': 'playlistEditToolbar',
107
+ 'playlist-add': 'playlistAddToolbar',
108
+ 'main-video-playlist': 'mainVideoPlaylistToolbar',
109
+ 'video-playlist-edit': 'videoPlaylistEditToolbar',
110
+ 'video-playlist-add': 'videoPlaylistAddToolbar'
111
+ }
112
+ };
113
+
114
+ _.each(handlers, function (regionHandlers, region) {
115
+ _.each(regionHandlers, function (callback, handler) {
116
+ this.on(region + ':render:' + handler, this[callback], this);
117
+ }, this);
118
+ }, this);
119
+ },
120
+
121
+ browseRouter: function (view) {
122
+ view.set({
123
+ upload: {
124
+ text: l10n.uploadFilesTitle,
125
+ priority: 20
126
+ },
127
+ browse: {
128
+ text: l10n.mediaLibraryTitle,
129
+ priority: 40
130
+ },
131
+ dreamstime: {
132
+ text: 'Dreamstime',
133
+ priority: 60
134
+ },
135
+ apt: {
136
+ text: 'Auto Featured Images',
137
+ priority: 70
138
+ }
139
+ });
140
+ },
141
+
142
+ dreamstimeContent: function (content) {
143
+ this.$el.removeClass('hide-toolbar');
144
+ this.state().set('src', dreamstimeIframeSrc); //set in Dreamstime::loadCssJs with wp_localize_script()
145
+ content.view = new wp.media.view.Iframe({
146
+ controller: this
147
+ });
148
+ },
149
+ aptContent: function (content) {
150
+ this.$el.removeClass('hide-toolbar');
151
+ this.state().set('src', apt_media_iframe.src); //set in Dreamstime::loadCssJs with wp_localize_script()
152
+ content.view = new wp.media.view.Iframe({
153
+ controller: this
154
+ });
155
+ }
156
+
157
+ });
158
 
159
  }(jQuery));
160
 
161
+ window.cvapt_media_refresh = window.cvapt_media_refresh || function () {
162
+ wp.media.frame.content.mode('browse');
163
+ wp.media.frame.content.get().collection.props.set({ignore: (+new Date())});
164
  }
165
 
admin/assets/js/jscolor.js CHANGED
@@ -14,1814 +14,1908 @@
14
  "use strict";
15
 
16
 
17
- if (!window.jscolor) { window.jscolor = (function () {
18
-
19
-
20
- var jsc = {
21
-
22
-
23
- register : function () {
24
- jsc.attachDOMReadyEvent(jsc.init);
25
- jsc.attachEvent(document, 'mousedown', jsc.onDocumentMouseDown);
26
- jsc.attachEvent(document, 'touchstart', jsc.onDocumentTouchStart);
27
- jsc.attachEvent(window, 'resize', jsc.onWindowResize);
28
- },
29
-
30
-
31
- init : function () {
32
- if (jsc.jscolor.lookupClass) {
33
- jsc.jscolor.installByClassName(jsc.jscolor.lookupClass);
34
- }
35
- },
36
-
37
-
38
- tryInstallOnElements : function (elms, className) {
39
- var matchClass = new RegExp('(^|\\s)(' + className + ')(\\s*(\\{[^}]*\\})|\\s|$)', 'i');
40
-
41
- for (var i = 0; i < elms.length; i += 1) {
42
- if (elms[i].type !== undefined && elms[i].type.toLowerCase() == 'color') {
43
- if (jsc.isColorAttrSupported) {
44
- // skip inputs of type 'color' if supported by the browser
45
- continue;
46
- }
47
- }
48
- var m;
49
- if (!elms[i].jscolor && elms[i].className && (m = elms[i].className.match(matchClass))) {
50
- var targetElm = elms[i];
51
- var optsStr = null;
52
-
53
- var dataOptions = jsc.getDataAttr(targetElm, 'jscolor');
54
- if (dataOptions !== null) {
55
- optsStr = dataOptions;
56
- } else if (m[4]) {
57
- optsStr = m[4];
58
- }
59
-
60
- var opts = {};
61
- if (optsStr) {
62
- try {
63
- opts = (new Function ('return (' + optsStr + ')'))();
64
- } catch(eParseError) {
65
- jsc.warn('Error parsing jscolor options: ' + eParseError + ':\n' + optsStr);
66
- }
67
- }
68
- targetElm.jscolor = new jsc.jscolor(targetElm, opts);
69
- }
70
- }
71
- },
72
-
73
-
74
- isColorAttrSupported : (function () {
75
- var elm = document.createElement('input');
76
- if (elm.setAttribute) {
77
- elm.setAttribute('type', 'color');
78
- if (elm.type.toLowerCase() == 'color') {
79
- return true;
80
- }
81
- }
82
- return false;
83
- })(),
84
-
85
-
86
- isCanvasSupported : (function () {
87
- var elm = document.createElement('canvas');
88
- return !!(elm.getContext && elm.getContext('2d'));
89
- })(),
90
-
91
-
92
- fetchElement : function (mixed) {
93
- return typeof mixed === 'string' ? document.getElementById(mixed) : mixed;
94
- },
95
-
96
-
97
- isElementType : function (elm, type) {
98
- return elm.nodeName.toLowerCase() === type.toLowerCase();
99
- },
100
-
101
-
102
- getDataAttr : function (el, name) {
103
- var attrName = 'data-' + name;
104
- var attrValue = el.getAttribute(attrName);
105
- if (attrValue !== null) {
106
- return attrValue;
107
- }
108
- return null;
109
- },
110
-
111
-
112
- attachEvent : function (el, evnt, func) {
113
- if (el.addEventListener) {
114
- el.addEventListener(evnt, func, false);
115
- } else if (el.attachEvent) {
116
- el.attachEvent('on' + evnt, func);
117
- }
118
- },
119
-
120
-
121
- detachEvent : function (el, evnt, func) {
122
- if (el.removeEventListener) {
123
- el.removeEventListener(evnt, func, false);
124
- } else if (el.detachEvent) {
125
- el.detachEvent('on' + evnt, func);
126
- }
127
- },
128
-
129
-
130
- _attachedGroupEvents : {},
131
-
132
-
133
- attachGroupEvent : function (groupName, el, evnt, func) {
134
- if (!jsc._attachedGroupEvents.hasOwnProperty(groupName)) {
135
- jsc._attachedGroupEvents[groupName] = [];
136
- }
137
- jsc._attachedGroupEvents[groupName].push([el, evnt, func]);
138
- jsc.attachEvent(el, evnt, func);
139
- },
140
-
141
-
142
- detachGroupEvents : function (groupName) {
143
- if (jsc._attachedGroupEvents.hasOwnProperty(groupName)) {
144
- for (var i = 0; i < jsc._attachedGroupEvents[groupName].length; i += 1) {
145
- var evt = jsc._attachedGroupEvents[groupName][i];
146
- jsc.detachEvent(evt[0], evt[1], evt[2]);
147
- }
148
- delete jsc._attachedGroupEvents[groupName];
149
- }
150
- },
151
-
152
-
153
- attachDOMReadyEvent : function (func) {
154
- var fired = false;
155
- var fireOnce = function () {
156
- if (!fired) {
157
- fired = true;
158
- func();
159
- }
160
- };
161
-
162
- if (document.readyState === 'complete') {
163
- setTimeout(fireOnce, 1); // async
164
- return;
165
- }
166
-
167
- if (document.addEventListener) {
168
- document.addEventListener('DOMContentLoaded', fireOnce, false);
169
-
170
- // Fallback
171
- window.addEventListener('load', fireOnce, false);
172
-
173
- } else if (document.attachEvent) {
174
- // IE
175
- document.attachEvent('onreadystatechange', function () {
176
- if (document.readyState === 'complete') {
177
- document.detachEvent('onreadystatechange', attachDOMReadyEvent);
178
- fireOnce();
179
- }
180
- })
181
-
182
- // Fallback
183
- window.attachEvent('onload', fireOnce);
184
-
185
- // IE7/8
186
- if (document.documentElement.doScroll && window == window.top) {
187
- var tryScroll = function () {
188
- if (!document.body) { return; }
189
- try {
190
- document.documentElement.doScroll('left');
191
- fireOnce();
192
- } catch (e) {
193
- setTimeout(tryScroll, 1);
194
- }
195
- };
196
- tryScroll();
197
- }
198
- }
199
- },
200
-
201
-
202
- warn : function (msg) {
203
- if (window.console && window.console.warn) {
204
- window.console.warn(msg);
205
- }
206
- },
207
-
208
-
209
- preventDefault : function (e) {
210
- if (e.preventDefault) { e.preventDefault(); }
211
- e.returnValue = false;
212
- },
213
-
214
-
215
- captureTarget : function (target) {
216
- // IE
217
- if (target.setCapture) {
218
- jsc._capturedTarget = target;
219
- jsc._capturedTarget.setCapture();
220
- }
221
- },
222
-
223
-
224
- releaseTarget : function () {
225
- // IE
226
- if (jsc._capturedTarget) {
227
- jsc._capturedTarget.releaseCapture();
228
- jsc._capturedTarget = null;
229
- }
230
- },
231
-
232
-
233
- fireEvent : function (el, evnt) {
234
- if (!el) {
235
- return;
236
- }
237
- if (document.createEvent) {
238
- var ev = document.createEvent('HTMLEvents');
239
- ev.initEvent(evnt, true, true);
240
- el.dispatchEvent(ev);
241
- } else if (document.createEventObject) {
242
- var ev = document.createEventObject();
243
- el.fireEvent('on' + evnt, ev);
244
- } else if (el['on' + evnt]) { // alternatively use the traditional event model
245
- el['on' + evnt]();
246
- }
247
- },
248
-
249
-
250
- classNameToList : function (className) {
251
- return className.replace(/^\s+|\s+$/g, '').split(/\s+/);
252
- },
253
-
254
-
255
- // The className parameter (str) can only contain a single class name
256
- hasClass : function (elm, className) {
257
- if (!className) {
258
- return false;
259
- }
260
- return -1 != (' ' + elm.className.replace(/\s+/g, ' ') + ' ').indexOf(' ' + className + ' ');
261
- },
262
-
263
-
264
- // The className parameter (str) can contain multiple class names separated by whitespace
265
- setClass : function (elm, className) {
266
- var classList = jsc.classNameToList(className);
267
- for (var i = 0; i < classList.length; i += 1) {
268
- if (!jsc.hasClass(elm, classList[i])) {
269
- elm.className += (elm.className ? ' ' : '') + classList[i];
270
- }
271
- }
272
- },
273
-
274
-
275
- // The className parameter (str) can contain multiple class names separated by whitespace
276
- unsetClass : function (elm, className) {
277
- var classList = jsc.classNameToList(className);
278
- for (var i = 0; i < classList.length; i += 1) {
279
- var repl = new RegExp(
280
- '^\\s*' + classList[i] + '\\s*|' +
281
- '\\s*' + classList[i] + '\\s*$|' +
282
- '\\s+' + classList[i] + '(\\s+)',
283
- 'g'
284
- );
285
- elm.className = elm.className.replace(repl, '$1');
286
- }
287
- },
288
-
289
-
290
- getStyle : function (elm) {
291
- return window.getComputedStyle ? window.getComputedStyle(elm) : elm.currentStyle;
292
- },
293
-
294
-
295
- setStyle : (function () {
296
- var helper = document.createElement('div');
297
- var getSupportedProp = function (names) {
298
- for (var i = 0; i < names.length; i += 1) {
299
- if (names[i] in helper.style) {
300
- return names[i];
301
- }
302
- }
303
- };
304
- var props = {
305
- borderRadius: getSupportedProp(['borderRadius', 'MozBorderRadius', 'webkitBorderRadius']),
306
- boxShadow: getSupportedProp(['boxShadow', 'MozBoxShadow', 'webkitBoxShadow'])
307
- };
308
- return function (elm, prop, value) {
309
- switch (prop.toLowerCase()) {
310
- case 'opacity':
311
- var alphaOpacity = Math.round(parseFloat(value) * 100);
312
- elm.style.opacity = value;
313
- elm.style.filter = 'alpha(opacity=' + alphaOpacity + ')';
314
- break;
315
- default:
316
- elm.style[props[prop]] = value;
317
- break;
318
- }
319
- };
320
- })(),
321
-
322
-
323
- setBorderRadius : function (elm, value) {
324
- jsc.setStyle(elm, 'borderRadius', value || '0');
325
- },
326
-
327
-
328
- setBoxShadow : function (elm, value) {
329
- jsc.setStyle(elm, 'boxShadow', value || 'none');
330
- },
331
-
332
-
333
- getElementPos : function (e, relativeToViewport) {
334
- var x=0, y=0;
335
- var rect = e.getBoundingClientRect();
336
- x = rect.left;
337
- y = rect.top;
338
- if (!relativeToViewport) {
339
- var viewPos = jsc.getViewPos();
340
- x += viewPos[0];
341
- y += viewPos[1];
342
- }
343
- return [x, y];
344
- },
345
-
346
-
347
- getElementSize : function (e) {
348
- return [e.offsetWidth, e.offsetHeight];
349
- },
350
-
351
-
352
- // get pointer's X/Y coordinates relative to viewport
353
- getAbsPointerPos : function (e) {
354
- if (!e) { e = window.event; }
355
- var x = 0, y = 0;
356
- if (typeof e.changedTouches !== 'undefined' && e.changedTouches.length) {
357
- // touch devices
358
- x = e.changedTouches[0].clientX;
359
- y = e.changedTouches[0].clientY;
360
- } else if (typeof e.clientX === 'number') {
361
- x = e.clientX;
362
- y = e.clientY;
363
- }
364
- return { x: x, y: y };
365
- },
366
-
367
-
368
- // get pointer's X/Y coordinates relative to target element
369
- getRelPointerPos : function (e) {
370
- if (!e) { e = window.event; }
371
- var target = e.target || e.srcElement;
372
- var targetRect = target.getBoundingClientRect();
373
-
374
- var x = 0, y = 0;
375
-
376
- var clientX = 0, clientY = 0;
377
- if (typeof e.changedTouches !== 'undefined' && e.changedTouches.length) {
378
- // touch devices
379
- clientX = e.changedTouches[0].clientX;
380
- clientY = e.changedTouches[0].clientY;
381
- } else if (typeof e.clientX === 'number') {
382
- clientX = e.clientX;
383
- clientY = e.clientY;
384
- }
385
-
386
- x = clientX - targetRect.left;
387
- y = clientY - targetRect.top;
388
- return { x: x, y: y };
389
- },
390
-
391
-
392
- getViewPos : function () {
393
- var doc = document.documentElement;
394
- return [
395
- (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0),
396
- (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)
397
- ];
398
- },
399
-
400
-
401
- getViewSize : function () {
402
- var doc = document.documentElement;
403
- return [
404
- (window.innerWidth || doc.clientWidth),
405
- (window.innerHeight || doc.clientHeight),
406
- ];
407
- },
408
-
409
-
410
- redrawPosition : function () {
411
-
412
- if (jsc.picker && jsc.picker.owner) {
413
- var thisObj = jsc.picker.owner;
414
-
415
- var tp, vp;
416
-
417
- if (thisObj.fixed) {
418
- // Fixed elements are positioned relative to viewport,
419
- // therefore we can ignore the scroll offset
420
- tp = jsc.getElementPos(thisObj.targetElement, true); // target pos
421
- vp = [0, 0]; // view pos
422
- } else {
423
- tp = jsc.getElementPos(thisObj.targetElement); // target pos
424
- vp = jsc.getViewPos(); // view pos
425
- }
426
-
427
- var ts = jsc.getElementSize(thisObj.targetElement); // target size
428
- var vs = jsc.getViewSize(); // view size
429
- var ps = jsc.getPickerOuterDims(thisObj); // picker size
430
- var a, b, c;
431
- switch (thisObj.position.toLowerCase()) {
432
- case 'left': a=1; b=0; c=-1; break;
433
- case 'right':a=1; b=0; c=1; break;
434
- case 'top': a=0; b=1; c=-1; break;
435
- default: a=0; b=1; c=1; break;
436
- }
437
- var l = (ts[b]+ps[b])/2;
438
-
439
- // compute picker position
440
- if (!thisObj.smartPosition) {
441
- var pp = [
442
- tp[a],
443
- tp[b]+ts[b]-l+l*c
444
- ];
445
- } else {
446
- var pp = [
447
- -vp[a]+tp[a]+ps[a] > vs[a] ?
448
- (-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) :
449
- tp[a],
450
- -vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ?
451
- (-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) :
452
- (tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c)
453
- ];
454
- }
455
-
456
- var x = pp[a];
457
- var y = pp[b];
458
- var positionValue = thisObj.fixed ? 'fixed' : 'absolute';
459
- var contractShadow =
460
- (pp[0] + ps[0] > tp[0] || pp[0] < tp[0] + ts[0]) &&
461
- (pp[1] + ps[1] < tp[1] + ts[1]);
462
-
463
- jsc._drawPosition(thisObj, x, y, positionValue, contractShadow);
464
- }
465
- },
466
-
467
-
468
- _drawPosition : function (thisObj, x, y, positionValue, contractShadow) {
469
- var vShadow = contractShadow ? 0 : thisObj.shadowBlur; // px
470
-
471
- jsc.picker.wrap.style.position = positionValue;
472
- jsc.picker.wrap.style.left = x + 'px';
473
- jsc.picker.wrap.style.top = y + 'px';
474
-
475
- jsc.setBoxShadow(
476
- jsc.picker.boxS,
477
- thisObj.shadow ?
478
- new jsc.BoxShadow(0, vShadow, thisObj.shadowBlur, 0, thisObj.shadowColor) :
479
- null);
480
- },
481
-
482
-
483
- getPickerDims : function (thisObj) {
484
- var displaySlider = !!jsc.getSliderComponent(thisObj);
485
- var dims = [
486
- 2 * thisObj.insetWidth + 2 * thisObj.padding + thisObj.width +
487
- (displaySlider ? 2 * thisObj.insetWidth + jsc.getPadToSliderPadding(thisObj) + thisObj.sliderSize : 0),
488
- 2 * thisObj.insetWidth + 2 * thisObj.padding + thisObj.height +
489
- (thisObj.closable ? 2 * thisObj.insetWidth + thisObj.padding + thisObj.buttonHeight : 0)
490
- ];
491
- return dims;
492
- },
493
-
494
-
495
- getPickerOuterDims : function (thisObj) {
496
- var dims = jsc.getPickerDims(thisObj);
497
- return [
498
- dims[0] + 2 * thisObj.borderWidth,
499
- dims[1] + 2 * thisObj.borderWidth
500
- ];
501
- },
502
-
503
-
504
- getPadToSliderPadding : function (thisObj) {
505
- return Math.max(thisObj.padding, 1.5 * (2 * thisObj.pointerBorderWidth + thisObj.pointerThickness));
506
- },
507
-
508
-
509
- getPadYComponent : function (thisObj) {
510
- switch (thisObj.mode.charAt(1).toLowerCase()) {
511
- case 'v': return 'v'; break;
512
- }
513
- return 's';
514
- },
515
-
516
-
517
- getSliderComponent : function (thisObj) {
518
- if (thisObj.mode.length > 2) {
519
- switch (thisObj.mode.charAt(2).toLowerCase()) {
520
- case 's': return 's'; break;
521
- case 'v': return 'v'; break;
522
- }
523
- }
524
- return null;
525
- },
526
-
527
-
528
- onDocumentMouseDown : function (e) {
529
- if (!e) { e = window.event; }
530
- var target = e.target || e.srcElement;
531
-
532
- if (target._jscLinkedInstance) {
533
- if (target._jscLinkedInstance.showOnClick) {
534
- target._jscLinkedInstance.show();
535
- }
536
- } else if (target._jscControlName) {
537
- jsc.onControlPointerStart(e, target, target._jscControlName, 'mouse');
538
- } else {
539
- // Mouse is outside the picker controls -> hide the color picker!
540
- if (jsc.picker && jsc.picker.owner) {
541
- jsc.picker.owner.hide();
542
- }
543
- }
544
- },
545
-
546
-
547
- onDocumentTouchStart : function (e) {
548
- if (!e) { e = window.event; }
549
- var target = e.target || e.srcElement;
550
-
551
- if (target._jscLinkedInstance) {
552
- if (target._jscLinkedInstance.showOnClick) {
553
- target._jscLinkedInstance.show();
554
- }
555
- } else if (target._jscControlName) {
556
- jsc.onControlPointerStart(e, target, target._jscControlName, 'touch');
557
- } else {
558
- if (jsc.picker && jsc.picker.owner) {
559
- jsc.picker.owner.hide();
560
- }
561
- }
562
- },
563
-
564
-
565
- onWindowResize : function (e) {
566
- jsc.redrawPosition();
567
- },
568
-
569
-
570
- onParentScroll : function (e) {
571
- // hide the picker when one of the parent elements is scrolled
572
- if (jsc.picker && jsc.picker.owner) {
573
- jsc.picker.owner.hide();
574
- }
575
- },
576
-
577
-
578
- _pointerMoveEvent : {
579
- mouse: 'mousemove',
580
- touch: 'touchmove'
581
- },
582
- _pointerEndEvent : {
583
- mouse: 'mouseup',
584
- touch: 'touchend'
585
- },
586
-
587
-
588
- _pointerOrigin : null,
589
- _capturedTarget : null,
590
-
591
-
592
- onControlPointerStart : function (e, target, controlName, pointerType) {
593
- var thisObj = target._jscInstance;
594
-
595
- jsc.preventDefault(e);
596
- jsc.captureTarget(target);
597
-
598
- var registerDragEvents = function (doc, offset) {
599
- jsc.attachGroupEvent('drag', doc, jsc._pointerMoveEvent[pointerType],
600
- jsc.onDocumentPointerMove(e, target, controlName, pointerType, offset));
601
- jsc.attachGroupEvent('drag', doc, jsc._pointerEndEvent[pointerType],
602
- jsc.onDocumentPointerEnd(e, target, controlName, pointerType));
603
- };
604
-
605
- registerDragEvents(document, [0, 0]);
606
-
607
- if (window.parent && window.frameElement) {
608
- var rect = window.frameElement.getBoundingClientRect();
609
- var ofs = [-rect.left, -rect.top];
610
- registerDragEvents(window.parent.window.document, ofs);
611
- }
612
-
613
- var abs = jsc.getAbsPointerPos(e);
614
- var rel = jsc.getRelPointerPos(e);
615
- jsc._pointerOrigin = {
616
- x: abs.x - rel.x,
617
- y: abs.y - rel.y
618
- };
619
-
620
- switch (controlName) {
621
- case 'pad':
622
- // if the slider is at the bottom, move it up
623
- switch (jsc.getSliderComponent(thisObj)) {
624
- case 's': if (thisObj.hsv[1] === 0) { thisObj.fromHSV(null, 100, null); }; break;
625
- case 'v': if (thisObj.hsv[2] === 0) { thisObj.fromHSV(null, null, 100); }; break;
626
- }
627
- jsc.setPad(thisObj, e, 0, 0);
628
- break;
629
-
630
- case 'sld':
631
- jsc.setSld(thisObj, e, 0);
632
- break;
633
- }
634
-
635
- jsc.dispatchFineChange(thisObj);
636
- },
637
-
638
-
639
- onDocumentPointerMove : function (e, target, controlName, pointerType, offset) {
640
- return function (e) {
641
- var thisObj = target._jscInstance;
642
- switch (controlName) {
643
- case 'pad':
644
- if (!e) { e = window.event; }
645
- jsc.setPad(thisObj, e, offset[0], offset[1]);
646
- jsc.dispatchFineChange(thisObj);
647
- break;
648
-
649
- case 'sld':
650
- if (!e) { e = window.event; }
651
- jsc.setSld(thisObj, e, offset[1]);
652
- jsc.dispatchFineChange(thisObj);
653
- break;
654
- }
655
- }
656
- },
657
-
658
-
659
- onDocumentPointerEnd : function (e, target, controlName, pointerType) {
660
- return function (e) {
661
- var thisObj = target._jscInstance;
662
- jsc.detachGroupEvents('drag');
663
- jsc.releaseTarget();
664
- // Always dispatch changes after detaching outstanding mouse handlers,
665
- // in case some user interaction will occur in user's onchange callback
666
- // that would intrude with current mouse events
667
- jsc.dispatchChange(thisObj);
668
- };
669
- },
670
-
671
-
672
- dispatchChange : function (thisObj) {
673
- if (thisObj.valueElement) {
674
- if (jsc.isElementType(thisObj.valueElement, 'input')) {
675
- jsc.fireEvent(thisObj.valueElement, 'change');
676
- }
677
- }
678
- },
679
-
680
-
681
- dispatchFineChange : function (thisObj) {
682
- if (thisObj.onFineChange) {
683
- var callback;
684
- if (typeof thisObj.onFineChange === 'string') {
685
- callback = new Function (thisObj.onFineChange);
686
- } else {
687
- callback = thisObj.onFineChange;
688
- }
689
- callback.call(thisObj);
690
- }
691
- },
692
-
693
-
694
- setPad : function (thisObj, e, ofsX, ofsY) {
695
- var pointerAbs = jsc.getAbsPointerPos(e);
696
- var x = ofsX + pointerAbs.x - jsc._pointerOrigin.x - thisObj.padding - thisObj.insetWidth;
697
- var y = ofsY + pointerAbs.y - jsc._pointerOrigin.y - thisObj.padding - thisObj.insetWidth;
698
-
699
- var xVal = x * (360 / (thisObj.width - 1));
700
- var yVal = 100 - (y * (100 / (thisObj.height - 1)));
701
-
702
- switch (jsc.getPadYComponent(thisObj)) {
703
- case 's': thisObj.fromHSV(xVal, yVal, null, jsc.leaveSld); break;
704
- case 'v': thisObj.fromHSV(xVal, null, yVal, jsc.leaveSld); break;
705
- }
706
- },
707
-
708
-
709
- setSld : function (thisObj, e, ofsY) {
710
- var pointerAbs = jsc.getAbsPointerPos(e);
711
- var y = ofsY + pointerAbs.y - jsc._pointerOrigin.y - thisObj.padding - thisObj.insetWidth;
712
-
713
- var yVal = 100 - (y * (100 / (thisObj.height - 1)));
714
-
715
- switch (jsc.getSliderComponent(thisObj)) {
716
- case 's': thisObj.fromHSV(null, yVal, null, jsc.leavePad); break;
717
- case 'v': thisObj.fromHSV(null, null, yVal, jsc.leavePad); break;
718
- }
719
- },
720
-
721
-
722
- _vmlNS : 'jsc_vml_',
723
- _vmlCSS : 'jsc_vml_css_',
724
- _vmlReady : false,
725
-
726
-
727
- initVML : function () {
728
- if (!jsc._vmlReady) {
729
- // init VML namespace
730
- var doc = document;
731
- if (!doc.namespaces[jsc._vmlNS]) {
732
- doc.namespaces.add(jsc._vmlNS, 'urn:schemas-microsoft-com:vml');
733
- }
734
- if (!doc.styleSheets[jsc._vmlCSS]) {
735
- var tags = ['shape', 'shapetype', 'group', 'background', 'path', 'formulas', 'handles', 'fill', 'stroke', 'shadow', 'textbox', 'textpath', 'imagedata', 'line', 'polyline', 'curve', 'rect', 'roundrect', 'oval', 'arc', 'image'];
736
- var ss = doc.createStyleSheet();
737
- ss.owningElement.id = jsc._vmlCSS;
738
- for (var i = 0; i < tags.length; i += 1) {
739
- ss.addRule(jsc._vmlNS + '\\:' + tags[i], 'behavior:url(#default#VML);');
740
- }
741
- }
742
- jsc._vmlReady = true;
743
- }
744
- },
745
-
746
-
747
- createPalette : function () {
748
-
749
- var paletteObj = {
750
- elm: null,
751
- draw: null
752
- };
753
-
754
- if (jsc.isCanvasSupported) {
755
- // Canvas implementation for modern browsers
756
-
757
- var canvas = document.createElement('canvas');
758
- var ctx = canvas.getContext('2d');
759
-
760
- var drawFunc = function (width, height, type) {
761
- canvas.width = width;
762
- canvas.height = height;
763
-
764
- ctx.clearRect(0, 0, canvas.width, canvas.height);
765
-
766
- var hGrad = ctx.createLinearGradient(0, 0, canvas.width, 0);
767
- hGrad.addColorStop(0 / 6, '#F00');
768
- hGrad.addColorStop(1 / 6, '#FF0');
769
- hGrad.addColorStop(2 / 6, '#0F0');
770
- hGrad.addColorStop(3 / 6, '#0FF');
771
- hGrad.addColorStop(4 / 6, '#00F');
772
- hGrad.addColorStop(5 / 6, '#F0F');
773
- hGrad.addColorStop(6 / 6, '#F00');
774
-
775
- ctx.fillStyle = hGrad;
776
- ctx.fillRect(0, 0, canvas.width, canvas.height);
777
-
778
- var vGrad = ctx.createLinearGradient(0, 0, 0, canvas.height);
779
- switch (type.toLowerCase()) {
780
- case 's':
781
- vGrad.addColorStop(0, 'rgba(255,255,255,0)');
782
- vGrad.addColorStop(1, 'rgba(255,255,255,1)');
783
- break;
784
- case 'v':
785
- vGrad.addColorStop(0, 'rgba(0,0,0,0)');
786
- vGrad.addColorStop(1, 'rgba(0,0,0,1)');
787
- break;
788
- }
789
- ctx.fillStyle = vGrad;
790
- ctx.fillRect(0, 0, canvas.width, canvas.height);
791
- };
792
-
793
- paletteObj.elm = canvas;
794
- paletteObj.draw = drawFunc;
795
-
796
- } else {
797
- // VML fallback for IE 7 and 8
798
-
799
- jsc.initVML();
800
-
801
- var vmlContainer = document.createElement('div');
802
- vmlContainer.style.position = 'relative';
803
- vmlContainer.style.overflow = 'hidden';
804
-
805
- var hGrad = document.createElement(jsc._vmlNS + ':fill');
806
- hGrad.type = 'gradient';
807
- hGrad.method = 'linear';
808
- hGrad.angle = '90';
809
- hGrad.colors = '16.67% #F0F, 33.33% #00F, 50% #0FF, 66.67% #0F0, 83.33% #FF0'
810
-
811
- var hRect = document.createElement(jsc._vmlNS + ':rect');
812
- hRect.style.position = 'absolute';
813
- hRect.style.left = -1 + 'px';
814
- hRect.style.top = -1 + 'px';
815
- hRect.stroked = false;
816
- hRect.appendChild(hGrad);
817
- vmlContainer.appendChild(hRect);
818
-
819
- var vGrad = document.createElement(jsc._vmlNS + ':fill');
820
- vGrad.type = 'gradient';
821
- vGrad.method = 'linear';
822
- vGrad.angle = '180';
823
- vGrad.opacity = '0';
824
-
825
- var vRect = document.createElement(jsc._vmlNS + ':rect');
826
- vRect.style.position = 'absolute';
827
- vRect.style.left = -1 + 'px';
828
- vRect.style.top = -1 + 'px';
829
- vRect.stroked = false;
830
- vRect.appendChild(vGrad);
831
- vmlContainer.appendChild(vRect);
832
-
833
- var drawFunc = function (width, height, type) {
834
- vmlContainer.style.width = width + 'px';
835
- vmlContainer.style.height = height + 'px';
836
-
837
- hRect.style.width =
838
- vRect.style.width =
839
- (width + 1) + 'px';
840
- hRect.style.height =
841
- vRect.style.height =
842
- (height + 1) + 'px';
843
-
844
- // Colors must be specified during every redraw, otherwise IE won't display
845
- // a full gradient during a subsequential redraw
846
- hGrad.color = '#F00';
847
- hGrad.color2 = '#F00';
848
-
849
- switch (type.toLowerCase()) {
850
- case 's':
851
- vGrad.color = vGrad.color2 = '#FFF';
852
- break;
853
- case 'v':
854
- vGrad.color = vGrad.color2 = '#000';
855
- break;
856
- }
857
- };
858
-
859
- paletteObj.elm = vmlContainer;
860
- paletteObj.draw = drawFunc;
861
- }
862
-
863
- return paletteObj;
864
- },
865
-
866
-
867
- createSliderGradient : function () {
868
-
869
- var sliderObj = {
870
- elm: null,
871
- draw: null
872
- };
873
-
874
- if (jsc.isCanvasSupported) {
875
- // Canvas implementation for modern browsers
876
-
877
- var canvas = document.createElement('canvas');
878
- var ctx = canvas.getContext('2d');
879
-
880
- var drawFunc = function (width, height, color1, color2) {
881
- canvas.width = width;
882
- canvas.height = height;
883
-
884
- ctx.clearRect(0, 0, canvas.width, canvas.height);
885
-
886
- var grad = ctx.createLinearGradient(0, 0, 0, canvas.height);
887
- grad.addColorStop(0, color1);
888
- grad.addColorStop(1, color2);
889
-
890
- ctx.fillStyle = grad;
891
- ctx.fillRect(0, 0, canvas.width, canvas.height);
892
- };
893
-
894
- sliderObj.elm = canvas;
895
- sliderObj.draw = drawFunc;
896
-
897
- } else {
898
- // VML fallback for IE 7 and 8
899
-
900
- jsc.initVML();
901
-
902
- var vmlContainer = document.createElement('div');
903
- vmlContainer.style.position = 'relative';
904
- vmlContainer.style.overflow = 'hidden';
905
-
906
- var grad = document.createElement(jsc._vmlNS + ':fill');
907
- grad.type = 'gradient';
908
- grad.method = 'linear';
909
- grad.angle = '180';
910
-
911
- var rect = document.createElement(jsc._vmlNS + ':rect');
912
- rect.style.position = 'absolute';
913
- rect.style.left = -1 + 'px';
914
- rect.style.top = -1 + 'px';
915
- rect.stroked = false;
916
- rect.appendChild(grad);
917
- vmlContainer.appendChild(rect);
918
-
919
- var drawFunc = function (width, height, color1, color2) {
920
- vmlContainer.style.width = width + 'px';
921
- vmlContainer.style.height = height + 'px';
922
-
923
- rect.style.width = (width + 1) + 'px';
924
- rect.style.height = (height + 1) + 'px';
925
-
926
- grad.color = color1;
927
- grad.color2 = color2;
928
- };
929
-
930
- sliderObj.elm = vmlContainer;
931
- sliderObj.draw = drawFunc;
932
- }
933
-
934
- return sliderObj;
935
- },
936
-
937
-
938
- leaveValue : 1<<0,
939
- leaveStyle : 1<<1,
940
- leavePad : 1<<2,
941
- leaveSld : 1<<3,
942
-
943
-
944
- BoxShadow : (function () {
945
- var BoxShadow = function (hShadow, vShadow, blur, spread, color, inset) {
946
- this.hShadow = hShadow;
947
- this.vShadow = vShadow;
948
- this.blur = blur;
949
- this.spread = spread;
950
- this.color = color;
951
- this.inset = !!inset;
952
- };
953
-
954
- BoxShadow.prototype.toString = function () {
955
- var vals = [
956
- Math.round(this.hShadow) + 'px',
957
- Math.round(this.vShadow) + 'px',
958
- Math.round(this.blur) + 'px',
959
- Math.round(this.spread) + 'px',
960
- this.color
961
- ];
962
- if (this.inset) {
963
- vals.push('inset');
964
- }
965
- return vals.join(' ');
966
- };
967
-
968
- return BoxShadow;
969
- })(),
970
-
971
-
972
- //
973
- // Usage:
974
- // var myColor = new jscolor(<targetElement> [, <options>])
975
- //
976
-
977
- jscolor : function (targetElement, options) {
978
-
979
- // General options
980
- //
981
- this.value = null; // initial HEX color. To change it later, use methods fromString(), fromHSV() and fromRGB()
982
- this.valueElement = targetElement; // element that will be used to display and input the color code
983
- this.styleElement = targetElement; // element that will preview the picked color using CSS backgroundColor
984
- this.required = true; // whether the associated text <input> can be left empty
985
- this.refine = true; // whether to refine the entered color code (e.g. uppercase it and remove whitespace)
986
- this.hash = true; // whether to prefix the HEX color code with # symbol
987
- this.uppercase = true; // whether to show the color code in upper case
988
- this.onFineChange = null; // called instantly every time the color changes (value can be either a function or a string with javascript code)
989
- this.activeClass = 'jscolor-active'; // class to be set to the target element when a picker window is open on it
990
- this.overwriteImportant = false; // whether to overwrite colors of styleElement using !important
991
- this.minS = 0; // min allowed saturation (0 - 100)
992
- this.maxS = 100; // max allowed saturation (0 - 100)
993
- this.minV = 0; // min allowed value (brightness) (0 - 100)
994
- this.maxV = 100; // max allowed value (brightness) (0 - 100)
995
-
996
- // Accessing the picked color
997
- //
998
- this.hsv = [0, 0, 100]; // read-only [0-360, 0-100, 0-100]
999
- this.rgb = [255, 255, 255]; // read-only [0-255, 0-255, 0-255]
1000
-
1001
- // Color Picker options
1002
- //
1003
- this.width = 200; // width of color palette (in px)
1004
- this.height = 200; // height of color palette (in px)
1005
- this.showOnClick = true; // whether to display the color picker when user clicks on its target element
1006
- this.mode = 'HSV'; // HSV | HVS | HS | HV - layout of the color picker controls
1007
- this.position = 'right'; // left | right | top | bottom - position relative to the target element
1008
- this.smartPosition = true; // automatically change picker position when there is not enough space for it
1009
- this.sliderSize = 16; // px
1010
- this.crossSize = 8; // px
1011
- this.closable = false; // whether to display the Close button
1012
- this.closeText = 'Close';
1013
- this.buttonColor = '#000000'; // CSS color
1014
- this.buttonHeight = 18; // px
1015
- this.padding = 12; // px
1016
- this.backgroundColor = '#FFFFFF'; // CSS color
1017
- this.borderWidth = 1; // px
1018
- this.borderColor = '#BBBBBB'; // CSS color
1019
- this.borderRadius = 8; // px
1020
- this.insetWidth = 1; // px
1021
- this.insetColor = '#BBBBBB'; // CSS color
1022
- this.shadow = true; // whether to display shadow
1023
- this.shadowBlur = 15; // px
1024
- this.shadowColor = 'rgba(0,0,0,0.2)'; // CSS color
1025
- this.pointerColor = '#4C4C4C'; // px
1026
- this.pointerBorderColor = '#FFFFFF'; // px
1027
- this.pointerBorderWidth = 1; // px
1028
- this.pointerThickness = 2; // px
1029
- this.zIndex = 1000;
1030
- this.container = null; // where to append the color picker (BODY element by default)
1031
-
1032
-
1033
- for (var opt in options) {
1034
- if (options.hasOwnProperty(opt)) {
1035
- this[opt] = options[opt];
1036
- }
1037
- }
1038
-
1039
-
1040
- this.hide = function () {
1041
- if (isPickerOwner()) {
1042
- detachPicker();
1043
- }
1044
- };
1045
-
1046
-
1047
- this.show = function () {
1048
- drawPicker();
1049
- };
1050
-
1051
-
1052
- this.redraw = function () {
1053
- if (isPickerOwner()) {
1054
- drawPicker();
1055
- }
1056
- };
1057
-
1058
-
1059
- this.importColor = function () {
1060
- if (!this.valueElement) {
1061
- this.exportColor();
1062
- } else {
1063
- if (jsc.isElementType(this.valueElement, 'input')) {
1064
- if (!this.refine) {
1065
- if (!this.fromString(this.valueElement.value, jsc.leaveValue)) {
1066
- if (this.styleElement) {
1067
- this.styleElement.style.backgroundImage = this.styleElement._jscOrigStyle.backgroundImage;
1068
- this.styleElement.style.backgroundColor = this.styleElement._jscOrigStyle.backgroundColor;
1069
- this.styleElement.style.color = this.styleElement._jscOrigStyle.color;
1070
- }
1071
- this.exportColor(jsc.leaveValue | jsc.leaveStyle);
1072
- }
1073
- } else if (!this.required && /^\s*$/.test(this.valueElement.value)) {
1074
- this.valueElement.value = '';
1075
- if (this.styleElement) {
1076
- this.styleElement.style.backgroundImage = this.styleElement._jscOrigStyle.backgroundImage;
1077
- this.styleElement.style.backgroundColor = this.styleElement._jscOrigStyle.backgroundColor;
1078
- this.styleElement.style.color = this.styleElement._jscOrigStyle.color;
1079
- }
1080
- this.exportColor(jsc.leaveValue | jsc.leaveStyle);
1081
-
1082
- } else if (this.fromString(this.valueElement.value)) {
1083
- // managed to import color successfully from the value -> OK, don't do anything
1084
- } else {
1085
- this.exportColor();
1086
- }
1087
- } else {
1088
- // not an input element -> doesn't have any value
1089
- this.exportColor();
1090
- }
1091
- }
1092
- };
1093
-
1094
-
1095
- this.exportColor = function (flags) {
1096
- if (!(flags & jsc.leaveValue) && this.valueElement) {
1097
- var value = this.toString();
1098
- if (this.uppercase) { value = value.toUpperCase(); }
1099
- if (this.hash) { value = '#' + value; }
1100
-
1101
- if (jsc.isElementType(this.valueElement, 'input')) {
1102
- this.valueElement.value = value;
1103
- } else {
1104
- this.valueElement.innerHTML = value;
1105
- }
1106
- }
1107
- if (!(flags & jsc.leaveStyle)) {
1108
- if (this.styleElement) {
1109
- var bgColor = '#' + this.toString();
1110
- var fgColor = this.isLight() ? '#000' : '#FFF';
1111
-
1112
- this.styleElement.style.backgroundImage = 'none';
1113
- this.styleElement.style.backgroundColor = bgColor;
1114
- this.styleElement.style.color = fgColor;
1115
-
1116
- if (this.overwriteImportant) {
1117
- this.styleElement.setAttribute('style',
1118
- 'background: ' + bgColor + ' !important; ' +
1119
- 'color: ' + fgColor + ' !important;'
1120
- );
1121
- }
1122
- }
1123
- }
1124
- if (!(flags & jsc.leavePad) && isPickerOwner()) {
1125
- redrawPad();
1126
- }
1127
- if (!(flags & jsc.leaveSld) && isPickerOwner()) {
1128
- redrawSld();
1129
- }
1130
- };
1131
-
1132
-
1133
- // h: 0-360
1134
- // s: 0-100
1135
- // v: 0-100
1136
- //
1137
- this.fromHSV = function (h, s, v, flags) { // null = don't change
1138
- if (h !== null) {
1139
- if (isNaN(h)) { return false; }
1140
- h = Math.max(0, Math.min(360, h));
1141
- }
1142
- if (s !== null) {
1143
- if (isNaN(s)) { return false; }
1144
- s = Math.max(0, Math.min(100, this.maxS, s), this.minS);
1145
- }
1146
- if (v !== null) {
1147
- if (isNaN(v)) { return false; }
1148
- v = Math.max(0, Math.min(100, this.maxV, v), this.minV);
1149
- }
1150
-
1151
- this.rgb = HSV_RGB(
1152
- h===null ? this.hsv[0] : (this.hsv[0]=h),
1153
- s===null ? this.hsv[1] : (this.hsv[1]=s),
1154
- v===null ? this.hsv[2] : (this.hsv[2]=v)
1155
- );
1156
-
1157
- this.exportColor(flags);
1158
- };
1159
-
1160
-
1161
- // r: 0-255
1162
- // g: 0-255
1163
- // b: 0-255
1164
- //
1165
- this.fromRGB = function (r, g, b, flags) { // null = don't change
1166
- if (r !== null) {
1167
- if (isNaN(r)) { return false; }
1168
- r = Math.max(0, Math.min(255, r));
1169
- }
1170
- if (g !== null) {
1171
- if (isNaN(g)) { return false; }
1172
- g = Math.max(0, Math.min(255, g));
1173
- }
1174
- if (b !== null) {
1175
- if (isNaN(b)) { return false; }
1176
- b = Math.max(0, Math.min(255, b));
1177
- }
1178
-
1179
- var hsv = RGB_HSV(
1180
- r===null ? this.rgb[0] : r,
1181
- g===null ? this.rgb[1] : g,
1182
- b===null ? this.rgb[2] : b
1183
- );
1184
- if (hsv[0] !== null) {
1185
- this.hsv[0] = Math.max(0, Math.min(360, hsv[0]));
1186
- }
1187
- if (hsv[2] !== 0) {
1188
- this.hsv[1] = hsv[1]===null ? null : Math.max(0, this.minS, Math.min(100, this.maxS, hsv[1]));
1189
- }
1190
- this.hsv[2] = hsv[2]===null ? null : Math.max(0, this.minV, Math.min(100, this.maxV, hsv[2]));
1191
-
1192
- // update RGB according to final HSV, as some values might be trimmed
1193
- var rgb = HSV_RGB(this.hsv[0], this.hsv[1], this.hsv[2]);
1194
- this.rgb[0] = rgb[0];
1195
- this.rgb[1] = rgb[1];
1196
- this.rgb[2] = rgb[2];
1197
-
1198
- this.exportColor(flags);
1199
- };
1200
-
1201
-
1202
- this.fromString = function (str, flags) {
1203
- var m;
1204
- if (m = str.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i)) {
1205
- // HEX notation
1206
- //
1207
-
1208
- if (m[1].length === 6) {
1209
- // 6-char notation
1210
- this.fromRGB(
1211
- parseInt(m[1].substr(0,2),16),
1212
- parseInt(m[1].substr(2,2),16),
1213
- parseInt(m[1].substr(4,2),16),
1214
- flags
1215
- );
1216
- } else {
1217
- // 3-char notation
1218
- this.fromRGB(
1219
- parseInt(m[1].charAt(0) + m[1].charAt(0),16),
1220
- parseInt(m[1].charAt(1) + m[1].charAt(1),16),
1221
- parseInt(m[1].charAt(2) + m[1].charAt(2),16),
1222
- flags
1223
- );
1224
- }
1225
- return true;
1226
-
1227
- } else if (m = str.match(/^\W*rgba?\(([^)]*)\)\W*$/i)) {
1228
- var params = m[1].split(',');
1229
- var re = /^\s*(\d*)(\.\d+)?\s*$/;
1230
- var mR, mG, mB;
1231
- if (
1232
- params.length >= 3 &&
1233
- (mR = params[0].match(re)) &&
1234
- (mG = params[1].match(re)) &&
1235
- (mB = params[2].match(re))
1236
- ) {
1237
- var r = parseFloat((mR[1] || '0') + (mR[2] || ''));
1238
- var g = parseFloat((mG[1] || '0') + (mG[2] || ''));
1239
- var b = parseFloat((mB[1] || '0') + (mB[2] || ''));
1240
- this.fromRGB(r, g, b, flags);
1241
- return true;
1242
- }
1243
- }
1244
- return false;
1245
- };
1246
-
1247
-
1248
- this.toString = function () {
1249
- return (
1250
- (0x100 | Math.round(this.rgb[0])).toString(16).substr(1) +
1251
- (0x100 | Math.round(this.rgb[1])).toString(16).substr(1) +
1252
- (0x100 | Math.round(this.rgb[2])).toString(16).substr(1)
1253
- );
1254
- };
1255
-
1256
-
1257
- this.toHEXString = function () {
1258
- return '#' + this.toString().toUpperCase();
1259
- };
1260
-
1261
-
1262
- this.toRGBString = function () {
1263
- return ('rgb(' +
1264
- Math.round(this.rgb[0]) + ',' +
1265
- Math.round(this.rgb[1]) + ',' +
1266
- Math.round(this.rgb[2]) + ')'
1267
- );
1268
- };
1269
-
1270
-
1271
- this.isLight = function () {
1272
- return (
1273
- 0.213 * this.rgb[0] +
1274
- 0.715 * this.rgb[1] +
1275
- 0.072 * this.rgb[2] >
1276
- 255 / 2
1277
- );
1278
- };
1279
-
1280
-
1281
- this._processParentElementsInDOM = function () {
1282
- if (this._linkedElementsProcessed) { return; }
1283
- this._linkedElementsProcessed = true;
1284
-
1285
- var elm = this.targetElement;
1286
- do {
1287
- // If the target element or one of its parent nodes has fixed position,
1288
- // then use fixed positioning instead
1289
- //
1290
- // Note: In Firefox, getComputedStyle returns null in a hidden iframe,
1291
- // that's why we need to check if the returned style object is non-empty
1292
- var currStyle = jsc.getStyle(elm);
1293
- if (currStyle && currStyle.position.toLowerCase() === 'fixed') {
1294
- this.fixed = true;
1295
- }
1296
-
1297
- if (elm !== this.targetElement) {
1298
- // Ensure to attach onParentScroll only once to each parent element
1299
- // (multiple targetElements can share the same parent nodes)
1300
- //
1301
- // Note: It's not just offsetParents that can be scrollable,
1302
- // that's why we loop through all parent nodes
1303
- if (!elm._jscEventsAttached) {
1304
- jsc.attachEvent(elm, 'scroll', jsc.onParentScroll);
1305
- elm._jscEventsAttached = true;
1306
- }
1307
- }
1308
- } while ((elm = elm.parentNode) && !jsc.isElementType(elm, 'body'));
1309
- };
1310
-
1311
-
1312
- // r: 0-255
1313
- // g: 0-255
1314
- // b: 0-255
1315
- //
1316
- // returns: [ 0-360, 0-100, 0-100 ]
1317
- //
1318
- function RGB_HSV (r, g, b) {
1319
- r /= 255;
1320
- g /= 255;
1321
- b /= 255;
1322
- var n = Math.min(Math.min(r,g),b);
1323
- var v = Math.max(Math.max(r,g),b);
1324
- var m = v - n;
1325
- if (m === 0) { return [ null, 0, 100 * v ]; }
1326
- var h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m);
1327
- return [
1328
- 60 * (h===6?0:h),
1329
- 100 * (m/v),
1330
- 100 * v
1331
- ];
1332
- }
1333
-
1334
-
1335
- // h: 0-360
1336
- // s: 0-100
1337
- // v: 0-100
1338
- //
1339
- // returns: [ 0-255, 0-255, 0-255 ]
1340
- //
1341
- function HSV_RGB (h, s, v) {
1342
- var u = 255 * (v / 100);
1343
-
1344
- if (h === null) {
1345
- return [ u, u, u ];
1346
- }
1347
-
1348
- h /= 60;
1349
- s /= 100;
1350
-
1351
- var i = Math.floor(h);
1352
- var f = i%2 ? h-i : 1-(h-i);
1353
- var m = u * (1 - s);
1354
- var n = u * (1 - s * f);
1355
- switch (i) {
1356
- case 6:
1357
- case 0: return [u,n,m];
1358
- case 1: return [n,u,m];
1359
- case 2: return [m,u,n];
1360
- case 3: return [m,n,u];
1361
- case 4: return [n,m,u];
1362
- case 5: return [u,m,n];
1363
- }
1364
- }
1365
-
1366
-
1367
- function detachPicker () {
1368
- jsc.unsetClass(THIS.targetElement, THIS.activeClass);
1369
- jsc.picker.wrap.parentNode.removeChild(jsc.picker.wrap);
1370
- delete jsc.picker.owner;
1371
- }
1372
-
1373
-
1374
- function drawPicker () {
1375
-
1376
- // At this point, when drawing the picker, we know what the parent elements are
1377
- // and we can do all related DOM operations, such as registering events on them
1378
- // or checking their positioning
1379
- THIS._processParentElementsInDOM();
1380
-
1381
- if (!jsc.picker) {
1382
- jsc.picker = {
1383
- owner: null,
1384
- wrap : document.createElement('div'),
1385
- box : document.createElement('div'),
1386
- boxS : document.createElement('div'), // shadow area
1387
- boxB : document.createElement('div'), // border
1388
- pad : document.createElement('div'),
1389
- padB : document.createElement('div'), // border
1390
- padM : document.createElement('div'), // mouse/touch area
1391
- padPal : jsc.createPalette(),
1392
- cross : document.createElement('div'),
1393
- crossBY : document.createElement('div'), // border Y
1394
- crossBX : document.createElement('div'), // border X
1395
- crossLY : document.createElement('div'), // line Y
1396
- crossLX : document.createElement('div'), // line X
1397
- sld : document.createElement('div'),
1398
- sldB : document.createElement('div'), // border
1399
- sldM : document.createElement('div'), // mouse/touch area
1400
- sldGrad : jsc.createSliderGradient(),
1401
- sldPtrS : document.createElement('div'), // slider pointer spacer
1402
- sldPtrIB : document.createElement('div'), // slider pointer inner border
1403
- sldPtrMB : document.createElement('div'), // slider pointer middle border
1404
- sldPtrOB : document.createElement('div'), // slider pointer outer border
1405
- btn : document.createElement('div'),
1406
- btnT : document.createElement('span') // text
1407
- };
1408
-
1409
- jsc.picker.pad.appendChild(jsc.picker.padPal.elm);
1410
- jsc.picker.padB.appendChild(jsc.picker.pad);
1411
- jsc.picker.cross.appendChild(jsc.picker.crossBY);
1412
- jsc.picker.cross.appendChild(jsc.picker.crossBX);
1413
- jsc.picker.cross.appendChild(jsc.picker.crossLY);
1414
- jsc.picker.cross.appendChild(jsc.picker.crossLX);
1415
- jsc.picker.padB.appendChild(jsc.picker.cross);
1416
- jsc.picker.box.appendChild(jsc.picker.padB);
1417
- jsc.picker.box.appendChild(jsc.picker.padM);
1418
-
1419
- jsc.picker.sld.appendChild(jsc.picker.sldGrad.elm);
1420
- jsc.picker.sldB.appendChild(jsc.picker.sld);
1421
- jsc.picker.sldB.appendChild(jsc.picker.sldPtrOB);
1422
- jsc.picker.sldPtrOB.appendChild(jsc.picker.sldPtrMB);
1423
- jsc.picker.sldPtrMB.appendChild(jsc.picker.sldPtrIB);
1424
- jsc.picker.sldPtrIB.appendChild(jsc.picker.sldPtrS);
1425
- jsc.picker.box.appendChild(jsc.picker.sldB);
1426
- jsc.picker.box.appendChild(jsc.picker.sldM);
1427
-
1428
- jsc.picker.btn.appendChild(jsc.picker.btnT);
1429
- jsc.picker.box.appendChild(jsc.picker.btn);
1430
-
1431
- jsc.picker.boxB.appendChild(jsc.picker.box);
1432
- jsc.picker.wrap.appendChild(jsc.picker.boxS);
1433
- jsc.picker.wrap.appendChild(jsc.picker.boxB);
1434
- }
1435
-
1436
- var p = jsc.picker;
1437
-
1438
- var displaySlider = !!jsc.getSliderComponent(THIS);
1439
- var dims = jsc.getPickerDims(THIS);
1440
- var crossOuterSize = (2 * THIS.pointerBorderWidth + THIS.pointerThickness + 2 * THIS.crossSize);
1441
- var padToSliderPadding = jsc.getPadToSliderPadding(THIS);
1442
- var borderRadius = Math.min(
1443
- THIS.borderRadius,
1444
- Math.round(THIS.padding * Math.PI)); // px
1445
- var padCursor = 'crosshair';
1446
-
1447
- // wrap
1448
- p.wrap.style.clear = 'both';
1449
- p.wrap.style.width = (dims[0] + 2 * THIS.borderWidth) + 'px';
1450
- p.wrap.style.height = (dims[1] + 2 * THIS.borderWidth) + 'px';
1451
- p.wrap.style.zIndex = THIS.zIndex;
1452
-
1453
- // picker
1454
- p.box.style.width = dims[0] + 'px';
1455
- p.box.style.height = dims[1] + 'px';
1456
-
1457
- p.boxS.style.position = 'absolute';
1458
- p.boxS.style.left = '0';
1459
- p.boxS.style.top = '0';
1460
- p.boxS.style.width = '100%';
1461
- p.boxS.style.height = '100%';
1462
- jsc.setBorderRadius(p.boxS, borderRadius + 'px');
1463
-
1464
- // picker border
1465
- p.boxB.style.position = 'relative';
1466
- p.boxB.style.border = THIS.borderWidth + 'px solid';
1467
- p.boxB.style.borderColor = THIS.borderColor;
1468
- p.boxB.style.background = THIS.backgroundColor;
1469
- jsc.setBorderRadius(p.boxB, borderRadius + 'px');
1470
-
1471
- // IE hack:
1472
- // If the element is transparent, IE will trigger the event on the elements under it,
1473
- // e.g. on Canvas or on elements with border
1474
- p.padM.style.background =
1475
- p.sldM.style.background =
1476
- '#FFF';
1477
- jsc.setStyle(p.padM, 'opacity', '0');
1478
- jsc.setStyle(p.sldM, 'opacity', '0');
1479
-
1480
- // pad
1481
- p.pad.style.position = 'relative';
1482
- p.pad.style.width = THIS.width + 'px';
1483
- p.pad.style.height = THIS.height + 'px';
1484
-
1485
- // pad palettes (HSV and HVS)
1486
- p.padPal.draw(THIS.width, THIS.height, jsc.getPadYComponent(THIS));
1487
-
1488
- // pad border
1489
- p.padB.style.position = 'absolute';
1490
- p.padB.style.left = THIS.padding + 'px';
1491
- p.padB.style.top = THIS.padding + 'px';
1492
- p.padB.style.border = THIS.insetWidth + 'px solid';
1493
- p.padB.style.borderColor = THIS.insetColor;
1494
-
1495
- // pad mouse area
1496
- p.padM._jscInstance = THIS;
1497
- p.padM._jscControlName = 'pad';
1498
- p.padM.style.position = 'absolute';
1499
- p.padM.style.left = '0';
1500
- p.padM.style.top = '0';
1501
- p.padM.style.width = (THIS.padding + 2 * THIS.insetWidth + THIS.width + padToSliderPadding / 2) + 'px';
1502
- p.padM.style.height = dims[1] + 'px';
1503
- p.padM.style.cursor = padCursor;
1504
-
1505
- // pad cross
1506
- p.cross.style.position = 'absolute';
1507
- p.cross.style.left =
1508
- p.cross.style.top =
1509
- '0';
1510
- p.cross.style.width =
1511
- p.cross.style.height =
1512
- crossOuterSize + 'px';
1513
-
1514
- // pad cross border Y and X
1515
- p.crossBY.style.position =
1516
- p.crossBX.style.position =
1517
- 'absolute';
1518
- p.crossBY.style.background =
1519
- p.crossBX.style.background =
1520
- THIS.pointerBorderColor;
1521
- p.crossBY.style.width =
1522
- p.crossBX.style.height =
1523
- (2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px';
1524
- p.crossBY.style.height =
1525
- p.crossBX.style.width =
1526
- crossOuterSize + 'px';
1527
- p.crossBY.style.left =
1528
- p.crossBX.style.top =
1529
- (Math.floor(crossOuterSize / 2) - Math.floor(THIS.pointerThickness / 2) - THIS.pointerBorderWidth) + 'px';
1530
- p.crossBY.style.top =
1531
- p.crossBX.style.left =
1532
- '0';
1533
-
1534
- // pad cross line Y and X
1535
- p.crossLY.style.position =
1536
- p.crossLX.style.position =
1537
- 'absolute';
1538
- p.crossLY.style.background =
1539
- p.crossLX.style.background =
1540
- THIS.pointerColor;
1541
- p.crossLY.style.height =
1542
- p.crossLX.style.width =
1543
- (crossOuterSize - 2 * THIS.pointerBorderWidth) + 'px';
1544
- p.crossLY.style.width =
1545
- p.crossLX.style.height =
1546
- THIS.pointerThickness + 'px';
1547
- p.crossLY.style.left =
1548
- p.crossLX.style.top =
1549
- (Math.floor(crossOuterSize / 2) - Math.floor(THIS.pointerThickness / 2)) + 'px';
1550
- p.crossLY.style.top =
1551
- p.crossLX.style.left =
1552
- THIS.pointerBorderWidth + 'px';
1553
-
1554
- // slider
1555
- p.sld.style.overflow = 'hidden';
1556
- p.sld.style.width = THIS.sliderSize + 'px';
1557
- p.sld.style.height = THIS.height + 'px';
1558
-
1559
- // slider gradient
1560
- p.sldGrad.draw(THIS.sliderSize, THIS.height, '#000', '#000');
1561
-
1562
- // slider border
1563
- p.sldB.style.display = displaySlider ? 'block' : 'none';
1564
- p.sldB.style.position = 'absolute';
1565
- p.sldB.style.right = THIS.padding + 'px';
1566
- p.sldB.style.top = THIS.padding + 'px';
1567
- p.sldB.style.border = THIS.insetWidth + 'px solid';
1568
- p.sldB.style.borderColor = THIS.insetColor;
1569
-
1570
- // slider mouse area
1571
- p.sldM._jscInstance = THIS;
1572
- p.sldM._jscControlName = 'sld';
1573
- p.sldM.style.display = displaySlider ? 'block' : 'none';
1574
- p.sldM.style.position = 'absolute';
1575
- p.sldM.style.right = '0';
1576
- p.sldM.style.top = '0';
1577
- p.sldM.style.width = (THIS.sliderSize + padToSliderPadding / 2 + THIS.padding + 2 * THIS.insetWidth) + 'px';
1578
- p.sldM.style.height = dims[1] + 'px';
1579
- p.sldM.style.cursor = 'default';
1580
-
1581
- // slider pointer inner and outer border
1582
- p.sldPtrIB.style.border =
1583
- p.sldPtrOB.style.border =
1584
- THIS.pointerBorderWidth + 'px solid ' + THIS.pointerBorderColor;
1585
-
1586
- // slider pointer outer border
1587
- p.sldPtrOB.style.position = 'absolute';
1588
- p.sldPtrOB.style.left = -(2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px';
1589
- p.sldPtrOB.style.top = '0';
1590
-
1591
- // slider pointer middle border
1592
- p.sldPtrMB.style.border = THIS.pointerThickness + 'px solid ' + THIS.pointerColor;
1593
-
1594
- // slider pointer spacer
1595
- p.sldPtrS.style.width = THIS.sliderSize + 'px';
1596
- p.sldPtrS.style.height = sliderPtrSpace + 'px';
1597
-
1598
- // the Close button
1599
- function setBtnBorder () {
1600
- var insetColors = THIS.insetColor.split(/\s+/);
1601
- var outsetColor = insetColors.length < 2 ? insetColors[0] : insetColors[1] + ' ' + insetColors[0] + ' ' + insetColors[0] + ' ' + insetColors[1];
1602
- p.btn.style.borderColor = outsetColor;
1603
- }
1604
- p.btn.style.display = THIS.closable ? 'block' : 'none';
1605
- p.btn.style.position = 'absolute';
1606
- p.btn.style.left = THIS.padding + 'px';
1607
- p.btn.style.bottom = THIS.padding + 'px';
1608
- p.btn.style.padding = '0 15px';
1609
- p.btn.style.height = THIS.buttonHeight + 'px';
1610
- p.btn.style.border = THIS.insetWidth + 'px solid';
1611
- setBtnBorder();
1612
- p.btn.style.color = THIS.buttonColor;
1613
- p.btn.style.font = '12px sans-serif';
1614
- p.btn.style.textAlign = 'center';
1615
- try {
1616
- p.btn.style.cursor = 'pointer';
1617
- } catch(eOldIE) {
1618
- p.btn.style.cursor = 'hand';
1619
- }
1620
- p.btn.onmousedown = function () {
1621
- THIS.hide();
1622
- };
1623
- p.btnT.style.lineHeight = THIS.buttonHeight + 'px';
1624
- p.btnT.innerHTML = '';
1625
- p.btnT.appendChild(document.createTextNode(THIS.closeText));
1626
-
1627
- // place pointers
1628
- redrawPad();
1629
- redrawSld();
1630
-
1631
- // If we are changing the owner without first closing the picker,
1632
- // make sure to first deal with the old owner
1633
- if (jsc.picker.owner && jsc.picker.owner !== THIS) {
1634
- jsc.unsetClass(jsc.picker.owner.targetElement, THIS.activeClass);
1635
- }
1636
-
1637
- // Set the new picker owner
1638
- jsc.picker.owner = THIS;
1639
-
1640
- // The redrawPosition() method needs picker.owner to be set, that's why we call it here,
1641
- // after setting the owner
1642
- if (jsc.isElementType(container, 'body')) {
1643
- jsc.redrawPosition();
1644
- } else {
1645
- jsc._drawPosition(THIS, 0, 0, 'relative', false);
1646
- }
1647
-
1648
- if (p.wrap.parentNode != container) {
1649
- container.appendChild(p.wrap);
1650
- }
1651
-
1652
- jsc.setClass(THIS.targetElement, THIS.activeClass);
1653
- }
1654
-
1655
-
1656
- function redrawPad () {
1657
- // redraw the pad pointer
1658
- switch (jsc.getPadYComponent(THIS)) {
1659
- case 's': var yComponent = 1; break;
1660
- case 'v': var yComponent = 2; break;
1661
- }
1662
- var x = Math.round((THIS.hsv[0] / 360) * (THIS.width - 1));
1663
- var y = Math.round((1 - THIS.hsv[yComponent] / 100) * (THIS.height - 1));
1664
- var crossOuterSize = (2 * THIS.pointerBorderWidth + THIS.pointerThickness + 2 * THIS.crossSize);
1665
- var ofs = -Math.floor(crossOuterSize / 2);
1666
- jsc.picker.cross.style.left = (x + ofs) + 'px';
1667
- jsc.picker.cross.style.top = (y + ofs) + 'px';
1668
-
1669
- // redraw the slider
1670
- switch (jsc.getSliderComponent(THIS)) {
1671
- case 's':
1672
- var rgb1 = HSV_RGB(THIS.hsv[0], 100, THIS.hsv[2]);
1673
- var rgb2 = HSV_RGB(THIS.hsv[0], 0, THIS.hsv[2]);
1674
- var color1 = 'rgb(' +
1675
- Math.round(rgb1[0]) + ',' +
1676
- Math.round(rgb1[1]) + ',' +
1677
- Math.round(rgb1[2]) + ')';
1678
- var color2 = 'rgb(' +
1679
- Math.round(rgb2[0]) + ',' +
1680
- Math.round(rgb2[1]) + ',' +
1681
- Math.round(rgb2[2]) + ')';
1682
- jsc.picker.sldGrad.draw(THIS.sliderSize, THIS.height, color1, color2);
1683
- break;
1684
- case 'v':
1685
- var rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 100);
1686
- var color1 = 'rgb(' +
1687
- Math.round(rgb[0]) + ',' +
1688
- Math.round(rgb[1]) + ',' +
1689
- Math.round(rgb[2]) + ')';
1690
- var color2 = '#000';
1691
- jsc.picker.sldGrad.draw(THIS.sliderSize, THIS.height, color1, color2);
1692
- break;
1693
- }
1694
- }
1695
-
1696
-
1697
- function redrawSld () {
1698
- var sldComponent = jsc.getSliderComponent(THIS);
1699
- if (sldComponent) {
1700
- // redraw the slider pointer
1701
- switch (sldComponent) {
1702
- case 's': var yComponent = 1; break;
1703
- case 'v': var yComponent = 2; break;
1704
- }
1705
- var y = Math.round((1 - THIS.hsv[yComponent] / 100) * (THIS.height - 1));
1706
- jsc.picker.sldPtrOB.style.top = (y - (2 * THIS.pointerBorderWidth + THIS.pointerThickness) - Math.floor(sliderPtrSpace / 2)) + 'px';
1707
- }
1708
- }
1709
-
1710
-
1711
- function isPickerOwner () {
1712
- return jsc.picker && jsc.picker.owner === THIS;
1713
- }
1714
-
1715
-
1716
- function blurValue () {
1717
- THIS.importColor();
1718
- }
1719
-
1720
-
1721
- // Find the target element
1722
- if (typeof targetElement === 'string') {
1723
- var id = targetElement;
1724
- var elm = document.getElementById(id);
1725
- if (elm) {
1726
- this.targetElement = elm;
1727
- } else {
1728
- jsc.warn('Could not find target element with ID \'' + id + '\'');
1729
- }
1730
- } else if (targetElement) {
1731
- this.targetElement = targetElement;
1732
- } else {
1733
- jsc.warn('Invalid target element: \'' + targetElement + '\'');
1734
- }
1735
-
1736
- if (this.targetElement._jscLinkedInstance) {
1737
- jsc.warn('Cannot link jscolor twice to the same element. Skipping.');
1738
- return;
1739
- }
1740
- this.targetElement._jscLinkedInstance = this;
1741
-
1742
- // Find the value element
1743
- this.valueElement = jsc.fetchElement(this.valueElement);
1744
- // Find the style element
1745
- this.styleElement = jsc.fetchElement(this.styleElement);
1746
-
1747
- var THIS = this;
1748
- var container =
1749
- this.container ?
1750
- jsc.fetchElement(this.container) :
1751
- document.getElementsByTagName('body')[0];
1752
- var sliderPtrSpace = 3; // px
1753
-
1754
- // For BUTTON elements it's important to stop them from sending the form when clicked
1755
- // (e.g. in Safari)
1756
- if (jsc.isElementType(this.targetElement, 'button')) {
1757
- if (this.targetElement.onclick) {
1758
- var origCallback = this.targetElement.onclick;
1759
- this.targetElement.onclick = function (evt) {
1760
- origCallback.call(this, evt);
1761
- return false;
1762
- };
1763
- } else {
1764
- this.targetElement.onclick = function () { return false; };
1765
- }
1766
- }
1767
-
1768
- /*
1769
- var elm = this.targetElement;
1770
- do {
1771
- // If the target element or one of its offsetParents has fixed position,
1772
- // then use fixed positioning instead
1773
- //
1774
- // Note: In Firefox, getComputedStyle returns null in a hidden iframe,
1775
- // that's why we need to check if the returned style object is non-empty
1776
- var currStyle = jsc.getStyle(elm);
1777
- if (currStyle && currStyle.position.toLowerCase() === 'fixed') {
1778
- this.fixed = true;
1779
- }
1780
-
1781
- if (elm !== this.targetElement) {
1782
- // attach onParentScroll so that we can recompute the picker position
1783
- // when one of the offsetParents is scrolled
1784
- if (!elm._jscEventsAttached) {
1785
- jsc.attachEvent(elm, 'scroll', jsc.onParentScroll);
1786
- elm._jscEventsAttached = true;
1787
- }
1788
- }
1789
- } while ((elm = elm.offsetParent) && !jsc.isElementType(elm, 'body'));
1790
- */
1791
-
1792
- // valueElement
1793
- if (this.valueElement) {
1794
- if (jsc.isElementType(this.valueElement, 'input')) {
1795
- var updateField = function () {
1796
- THIS.fromString(THIS.valueElement.value, jsc.leaveValue);
1797
- jsc.dispatchFineChange(THIS);
1798
- };
1799
- jsc.attachEvent(this.valueElement, 'keyup', updateField);
1800
- jsc.attachEvent(this.valueElement, 'input', updateField);
1801
- jsc.attachEvent(this.valueElement, 'blur', blurValue);
1802
- this.valueElement.setAttribute('autocomplete', 'off');
1803
- }
1804
- }
1805
-
1806
- // styleElement
1807
- if (this.styleElement) {
1808
- this.styleElement._jscOrigStyle = {
1809
- backgroundImage : this.styleElement.style.backgroundImage,
1810
- backgroundColor : this.styleElement.style.backgroundColor,
1811
- color : this.styleElement.style.color
1812
- };
1813
- }
1814
-
1815
- if (this.value) {
1816
- // Try to set the color from the .value option and if unsuccessful,
1817
- // export the current color
1818
- this.fromString(this.value) || this.exportColor();
1819
- } else {
1820
- this.importColor();
1821
- }
1822
- }
1823
-
1824
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1825
 
1826
 
1827
  //================================
@@ -1834,22 +1928,23 @@ var jsc = {
1834
  // You can change what class name will be looked for by setting the property jscolor.lookupClass
1835
  // anywhere in your HTML document. To completely disable the automatic lookup, set it to null.
1836
  //
1837
- jsc.jscolor.lookupClass = 'jscolor';
1838
 
1839
 
1840
- jsc.jscolor.installByClassName = function (className) {
1841
- var inputElms = document.getElementsByTagName('input');
1842
- var buttonElms = document.getElementsByTagName('button');
1843
 
1844
- jsc.tryInstallOnElements(inputElms, className);
1845
- jsc.tryInstallOnElements(buttonElms, className);
1846
- };
1847
 
1848
 
1849
- jsc.register();
1850
 
1851
 
1852
- return jsc.jscolor;
1853
 
1854
 
1855
- })(); }
 
14
  "use strict";
15
 
16
 
17
+ if (!window.jscolor) {
18
+ window.jscolor = (function () {
19
+
20
+
21
+ var jsc = {
22
+
23
+
24
+ register: function () {
25
+ jsc.attachDOMReadyEvent(jsc.init);
26
+ jsc.attachEvent(document, 'mousedown', jsc.onDocumentMouseDown);
27
+ jsc.attachEvent(document, 'touchstart', jsc.onDocumentTouchStart);
28
+ jsc.attachEvent(window, 'resize', jsc.onWindowResize);
29
+ },
30
+
31
+
32
+ init: function () {
33
+ if (jsc.jscolor.lookupClass) {
34
+ jsc.jscolor.installByClassName(jsc.jscolor.lookupClass);
35
+ }
36
+ },
37
+
38
+
39
+ tryInstallOnElements: function (elms, className) {
40
+ var matchClass = new RegExp('(^|\\s)(' + className + ')(\\s*(\\{[^}]*\\})|\\s|$)', 'i');
41
+
42
+ for (var i = 0; i < elms.length; i += 1) {
43
+ if (elms[i].type !== undefined && elms[i].type.toLowerCase() == 'color') {
44
+ if (jsc.isColorAttrSupported) {
45
+ // skip inputs of type 'color' if supported by the browser
46
+ continue;
47
+ }
48
+ }
49
+ var m;
50
+ if (!elms[i].jscolor && elms[i].className && (m = elms[i].className.match(matchClass))) {
51
+ var targetElm = elms[i];
52
+ var optsStr = null;
53
+
54
+ var dataOptions = jsc.getDataAttr(targetElm, 'jscolor');
55
+ if (dataOptions !== null) {
56
+ optsStr = dataOptions;
57
+ } else if (m[4]) {
58
+ optsStr = m[4];
59
+ }
60
+
61
+ var opts = {};
62
+ if (optsStr) {
63
+ try {
64
+ opts = (new Function('return (' + optsStr + ')'))();
65
+ } catch (eParseError) {
66
+ jsc.warn('Error parsing jscolor options: ' + eParseError + ':\n' + optsStr);
67
+ }
68
+ }
69
+ targetElm.jscolor = new jsc.jscolor(targetElm, opts);
70
+ }
71
+ }
72
+ },
73
+
74
+
75
+ isColorAttrSupported: (function () {
76
+ var elm = document.createElement('input');
77
+ if (elm.setAttribute) {
78
+ elm.setAttribute('type', 'color');
79
+ if (elm.type.toLowerCase() == 'color') {
80
+ return true;
81
+ }
82
+ }
83
+ return false;
84
+ })(),
85
+
86
+
87
+ isCanvasSupported: (function () {
88
+ var elm = document.createElement('canvas');
89
+ return !!(elm.getContext && elm.getContext('2d'));
90
+ })(),
91
+
92
+
93
+ fetchElement: function (mixed) {
94
+ return typeof mixed === 'string' ? document.getElementById(mixed) : mixed;
95
+ },
96
+
97
+
98
+ isElementType: function (elm, type) {
99
+ return elm.nodeName.toLowerCase() === type.toLowerCase();
100
+ },
101
+
102
+
103
+ getDataAttr: function (el, name) {
104
+ var attrName = 'data-' + name;
105
+ var attrValue = el.getAttribute(attrName);
106
+ if (attrValue !== null) {
107
+ return attrValue;
108
+ }
109
+ return null;
110
+ },
111
+
112
+
113
+ attachEvent: function (el, evnt, func) {
114
+ if (el.addEventListener) {
115
+ el.addEventListener(evnt, func, false);
116
+ } else if (el.attachEvent) {
117
+ el.attachEvent('on' + evnt, func);
118
+ }
119
+ },
120
+
121
+
122
+ detachEvent: function (el, evnt, func) {
123
+ if (el.removeEventListener) {
124
+ el.removeEventListener(evnt, func, false);
125
+ } else if (el.detachEvent) {
126
+ el.detachEvent('on' + evnt, func);
127
+ }
128
+ },
129
+
130
+
131
+ _attachedGroupEvents: {},
132
+
133
+
134
+ attachGroupEvent: function (groupName, el, evnt, func) {
135
+ if (!jsc._attachedGroupEvents.hasOwnProperty(groupName)) {
136
+ jsc._attachedGroupEvents[groupName] = [];
137
+ }
138
+ jsc._attachedGroupEvents[groupName].push([el, evnt, func]);
139
+ jsc.attachEvent(el, evnt, func);
140
+ },
141
+
142
+
143
+ detachGroupEvents: function (groupName) {
144
+ if (jsc._attachedGroupEvents.hasOwnProperty(groupName)) {
145
+ for (var i = 0; i < jsc._attachedGroupEvents[groupName].length; i += 1) {
146
+ var evt = jsc._attachedGroupEvents[groupName][i];
147
+ jsc.detachEvent(evt[0], evt[1], evt[2]);
148
+ }
149
+ delete jsc._attachedGroupEvents[groupName];
150
+ }
151
+ },
152
+
153
+
154
+ attachDOMReadyEvent: function (func) {
155
+ var fired = false;
156
+ var fireOnce = function () {
157
+ if (!fired) {
158
+ fired = true;
159
+ func();
160
+ }
161
+ };
162
+
163
+ if (document.readyState === 'complete') {
164
+ setTimeout(fireOnce, 1); // async
165
+ return;
166
+ }
167
+
168
+ if (document.addEventListener) {
169
+ document.addEventListener('DOMContentLoaded', fireOnce, false);
170
+
171
+ // Fallback
172
+ window.addEventListener('load', fireOnce, false);
173
+
174
+ } else if (document.attachEvent) {
175
+ // IE
176
+ document.attachEvent('onreadystatechange', function () {
177
+ if (document.readyState === 'complete') {
178
+ document.detachEvent('onreadystatechange', attachDOMReadyEvent);
179
+ fireOnce();
180
+ }
181
+ })
182
+
183
+ // Fallback
184
+ window.attachEvent('onload', fireOnce);
185
+
186
+ // IE7/8
187
+ if (document.documentElement.doScroll && window == window.top) {
188
+ var tryScroll = function () {
189
+ if (!document.body) {
190
+ return;
191
+ }
192
+ try {
193
+ document.documentElement.doScroll('left');
194
+ fireOnce();
195
+ } catch (e) {
196
+ setTimeout(tryScroll, 1);
197
+ }
198
+ };
199
+ tryScroll();
200
+ }
201
+ }
202
+ },
203
+
204
+
205
+ warn: function (msg) {
206
+ if (window.console && window.console.warn) {
207
+ window.console.warn(msg);
208
+ }
209
+ },
210
+
211
+
212
+ preventDefault: function (e) {
213
+ if (e.preventDefault) {
214
+ e.preventDefault();
215
+ }
216
+ e.returnValue = false;
217
+ },
218
+
219
+
220
+ captureTarget: function (target) {
221
+ // IE
222
+ if (target.setCapture) {
223
+ jsc._capturedTarget = target;
224
+ jsc._capturedTarget.setCapture();
225
+ }
226
+ },
227
+
228
+
229
+ releaseTarget: function () {
230
+ // IE
231
+ if (jsc._capturedTarget) {
232
+ jsc._capturedTarget.releaseCapture();
233
+ jsc._capturedTarget = null;
234
+ }
235
+ },
236
+
237
+
238
+ fireEvent: function (el, evnt) {
239
+ if (!el) {
240
+ return;
241
+ }
242
+ if (document.createEvent) {
243
+ var ev = document.createEvent('HTMLEvents');
244
+ ev.initEvent(evnt, true, true);
245
+ el.dispatchEvent(ev);
246
+ } else if (document.createEventObject) {
247
+ var ev = document.createEventObject();
248
+ el.fireEvent('on' + evnt, ev);
249
+ } else if (el['on' + evnt]) { // alternatively use the traditional event model
250
+ el['on' + evnt]();
251
+ }
252
+ },
253
+
254
+
255
+ classNameToList: function (className) {
256
+ return className.replace(/^\s+|\s+$/g, '').split(/\s+/);
257
+ },
258
+
259
+
260
+ // The className parameter (str) can only contain a single class name
261
+ hasClass: function (elm, className) {
262
+ if (!className) {
263
+ return false;
264
+ }
265
+ return -1 != (' ' + elm.className.replace(/\s+/g, ' ') + ' ').indexOf(' ' + className + ' ');
266
+ },
267
+
268
+
269
+ // The className parameter (str) can contain multiple class names separated by whitespace
270
+ setClass: function (elm, className) {
271
+ var classList = jsc.classNameToList(className);
272
+ for (var i = 0; i < classList.length; i += 1) {
273
+ if (!jsc.hasClass(elm, classList[i])) {
274
+ elm.className += (elm.className ? ' ' : '') + classList[i];
275
+ }
276
+ }
277
+ },
278
+
279
+
280
+ // The className parameter (str) can contain multiple class names separated by whitespace
281
+ unsetClass: function (elm, className) {
282
+ var classList = jsc.classNameToList(className);
283
+ for (var i = 0; i < classList.length; i += 1) {
284
+ var repl = new RegExp(
285
+ '^\\s*' + classList[i] + '\\s*|' +
286
+ '\\s*' + classList[i] + '\\s*$|' +
287
+ '\\s+' + classList[i] + '(\\s+)',
288
+ 'g'
289
+ );
290
+ elm.className = elm.className.replace(repl, '$1');
291
+ }
292
+ },
293
+
294
+
295
+ getStyle: function (elm) {
296
+ return window.getComputedStyle ? window.getComputedStyle(elm) : elm.currentStyle;
297
+ },
298
+
299
+
300
+ setStyle: (function () {
301
+ var helper = document.createElement('div');
302
+ var getSupportedProp = function (names) {
303
+ for (var i = 0; i < names.length; i += 1) {
304
+ if (names[i] in helper.style) {
305
+ return names[i];
306
+ }
307
+ }
308
+ };
309
+ var props = {
310
+ borderRadius: getSupportedProp(['borderRadius', 'MozBorderRadius', 'webkitBorderRadius']),
311
+ boxShadow: getSupportedProp(['boxShadow', 'MozBoxShadow', 'webkitBoxShadow'])
312
+ };
313
+ return function (elm, prop, value) {
314
+ switch (prop.toLowerCase()) {
315
+ case 'opacity':
316
+ var alphaOpacity = Math.round(parseFloat(value) * 100);
317
+ elm.style.opacity = value;
318
+ elm.style.filter = 'alpha(opacity=' + alphaOpacity + ')';
319
+ break;
320
+ default:
321
+ elm.style[props[prop]] = value;
322
+ break;
323
+ }
324
+ };
325
+ })(),
326
+
327
+
328
+ setBorderRadius: function (elm, value) {
329
+ jsc.setStyle(elm, 'borderRadius', value || '0');
330
+ },
331
+
332
+
333
+ setBoxShadow: function (elm, value) {
334
+ jsc.setStyle(elm, 'boxShadow', value || 'none');
335
+ },
336
+
337
+
338
+ getElementPos: function (e, relativeToViewport) {
339
+ var x = 0, y = 0;
340
+ var rect = e.getBoundingClientRect();
341
+ x = rect.left;
342
+ y = rect.top;
343
+ if (!relativeToViewport) {
344
+ var viewPos = jsc.getViewPos();
345
+ x += viewPos[0];
346
+ y += viewPos[1];
347
+ }
348
+ return [x, y];
349
+ },
350
+
351
+
352
+ getElementSize: function (e) {
353
+ return [e.offsetWidth, e.offsetHeight];
354
+ },
355
+
356
+
357
+ // get pointer's X/Y coordinates relative to viewport
358
+ getAbsPointerPos: function (e) {
359
+ if (!e) {
360
+ e = window.event;
361
+ }
362
+ var x = 0, y = 0;
363
+ if (typeof e.changedTouches !== 'undefined' && e.changedTouches.length) {
364
+ // touch devices
365
+ x = e.changedTouches[0].clientX;
366
+ y = e.changedTouches[0].clientY;
367
+ } else if (typeof e.clientX === 'number') {
368
+ x = e.clientX;
369
+ y = e.clientY;
370
+ }
371
+ return {x: x, y: y};
372
+ },
373
+
374
+
375
+ // get pointer's X/Y coordinates relative to target element
376
+ getRelPointerPos: function (e) {
377
+ if (!e) {
378
+ e = window.event;
379
+ }
380
+ var target = e.target || e.srcElement;
381
+ var targetRect = target.getBoundingClientRect();
382
+
383
+ var x = 0, y = 0;
384
+
385
+ var clientX = 0, clientY = 0;
386
+ if (typeof e.changedTouches !== 'undefined' && e.changedTouches.length) {
387
+ // touch devices
388
+ clientX = e.changedTouches[0].clientX;
389
+ clientY = e.changedTouches[0].clientY;
390
+ } else if (typeof e.clientX === 'number') {
391
+ clientX = e.clientX;
392
+ clientY = e.clientY;
393
+ }
394
+
395
+ x = clientX - targetRect.left;
396
+ y = clientY - targetRect.top;
397
+ return {x: x, y: y};
398
+ },
399
+
400
+
401
+ getViewPos: function () {
402
+ var doc = document.documentElement;
403
+ return [
404
+ (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0),
405
+ (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)
406
+ ];
407
+ },
408
+
409
+
410
+ getViewSize: function () {
411
+ var doc = document.documentElement;
412
+ return [
413
+ (window.innerWidth || doc.clientWidth),
414
+ (window.innerHeight || doc.clientHeight),
415
+ ];
416
+ },
417
+
418
+
419
+ redrawPosition: function () {
420
+
421
+ if (jsc.picker && jsc.picker.owner) {
422
+ var thisObj = jsc.picker.owner;
423
+
424
+ var tp, vp;
425
+
426
+ if (thisObj.fixed) {
427
+ // Fixed elements are positioned relative to viewport,
428
+ // therefore we can ignore the scroll offset
429
+ tp = jsc.getElementPos(thisObj.targetElement, true); // target pos
430
+ vp = [0, 0]; // view pos
431
+ } else {
432
+ tp = jsc.getElementPos(thisObj.targetElement); // target pos
433
+ vp = jsc.getViewPos(); // view pos
434
+ }
435
+
436
+ var ts = jsc.getElementSize(thisObj.targetElement); // target size
437
+ var vs = jsc.getViewSize(); // view size
438
+ var ps = jsc.getPickerOuterDims(thisObj); // picker size
439
+ var a, b, c;
440
+ switch (thisObj.position.toLowerCase()) {
441
+ case 'left':
442
+ a = 1;
443
+ b = 0;
444
+ c = -1;
445
+ break;
446
+ case 'right':
447
+ a = 1;
448
+ b = 0;
449
+ c = 1;
450
+ break;
451
+ case 'top':
452
+ a = 0;
453
+ b = 1;
454
+ c = -1;
455
+ break;
456
+ default:
457
+ a = 0;
458
+ b = 1;
459
+ c = 1;
460
+ break;
461
+ }
462
+ var l = (ts[b] + ps[b]) / 2;
463
+
464
+ // compute picker position
465
+ if (!thisObj.smartPosition) {
466
+ var pp = [
467
+ tp[a],
468
+ tp[b] + ts[b] - l + l * c
469
+ ];
470
+ } else {
471
+ var pp = [
472
+ -vp[a] + tp[a] + ps[a] > vs[a] ?
473
+ (-vp[a] + tp[a] + ts[a] / 2 > vs[a] / 2 && tp[a] + ts[a] - ps[a] >= 0 ? tp[a] + ts[a] - ps[a] : tp[a]) :
474
+ tp[a],
475
+ -vp[b] + tp[b] + ts[b] + ps[b] - l + l * c > vs[b] ?
476
+ (-vp[b] + tp[b] + ts[b] / 2 > vs[b] / 2 && tp[b] + ts[b] - l - l * c >= 0 ? tp[b] + ts[b] - l - l * c : tp[b] + ts[b] - l + l * c) :
477
+ (tp[b] + ts[b] - l + l * c >= 0 ? tp[b] + ts[b] - l + l * c : tp[b] + ts[b] - l - l * c)
478
+ ];
479
+ }
480
+
481
+ var x = pp[a];
482
+ var y = pp[b];
483
+ var positionValue = thisObj.fixed ? 'fixed' : 'absolute';
484
+ var contractShadow =
485
+ (pp[0] + ps[0] > tp[0] || pp[0] < tp[0] + ts[0]) &&
486
+ (pp[1] + ps[1] < tp[1] + ts[1]);
487
+
488
+ jsc._drawPosition(thisObj, x, y, positionValue, contractShadow);
489
+ }
490
+ },
491
+
492
+
493
+ _drawPosition: function (thisObj, x, y, positionValue, contractShadow) {
494
+ var vShadow = contractShadow ? 0 : thisObj.shadowBlur; // px
495
+
496
+ jsc.picker.wrap.style.position = positionValue;
497
+ jsc.picker.wrap.style.left = x + 'px';
498
+ jsc.picker.wrap.style.top = y + 'px';
499
+
500
+ jsc.setBoxShadow(
501
+ jsc.picker.boxS,
502
+ thisObj.shadow ?
503
+ new jsc.BoxShadow(0, vShadow, thisObj.shadowBlur, 0, thisObj.shadowColor) :
504
+ null);
505
+ },
506
+
507
+
508
+ getPickerDims: function (thisObj) {
509
+ var displaySlider = !!jsc.getSliderComponent(thisObj);
510
+ var dims = [
511
+ 2 * thisObj.insetWidth + 2 * thisObj.padding + thisObj.width +
512
+ (displaySlider ? 2 * thisObj.insetWidth + jsc.getPadToSliderPadding(thisObj) + thisObj.sliderSize : 0),
513
+ 2 * thisObj.insetWidth + 2 * thisObj.padding + thisObj.height +
514
+ (thisObj.closable ? 2 * thisObj.insetWidth + thisObj.padding + thisObj.buttonHeight : 0)
515
+ ];
516
+ return dims;
517
+ },
518
+
519
+
520
+ getPickerOuterDims: function (thisObj) {
521
+ var dims = jsc.getPickerDims(thisObj);
522
+ return [
523
+ dims[0] + 2 * thisObj.borderWidth,
524
+ dims[1] + 2 * thisObj.borderWidth
525
+ ];
526
+ },
527
+
528
+
529
+ getPadToSliderPadding: function (thisObj) {
530
+ return Math.max(thisObj.padding, 1.5 * (2 * thisObj.pointerBorderWidth + thisObj.pointerThickness));
531
+ },
532
+
533
+
534
+ getPadYComponent: function (thisObj) {
535
+ switch (thisObj.mode.charAt(1).toLowerCase()) {
536
+ case 'v':
537
+ return 'v';
538
+ break;
539
+ }
540
+ return 's';
541
+ },
542
+
543
+
544
+ getSliderComponent: function (thisObj) {
545
+ if (thisObj.mode.length > 2) {
546
+ switch (thisObj.mode.charAt(2).toLowerCase()) {
547
+ case 's':
548
+ return 's';
549
+ break;
550
+ case 'v':
551
+ return 'v';
552
+ break;
553
+ }
554
+ }
555
+ return null;
556
+ },
557
+
558
+
559
+ onDocumentMouseDown: function (e) {
560
+ if (!e) {
561
+ e = window.event;
562
+ }
563
+ var target = e.target || e.srcElement;
564
+
565
+ if (target._jscLinkedInstance) {
566
+ if (target._jscLinkedInstance.showOnClick) {
567
+ target._jscLinkedInstance.show();
568
+ }
569
+ } else if (target._jscControlName) {
570
+ jsc.onControlPointerStart(e, target, target._jscControlName, 'mouse');
571
+ } else {
572
+ // Mouse is outside the picker controls -> hide the color picker!
573
+ if (jsc.picker && jsc.picker.owner) {
574
+ jsc.picker.owner.hide();
575
+ }
576
+ }
577
+ },
578
+
579
+
580
+ onDocumentTouchStart: function (e) {
581
+ if (!e) {
582
+ e = window.event;
583
+ }
584
+ var target = e.target || e.srcElement;
585
+
586
+ if (target._jscLinkedInstance) {
587
+ if (target._jscLinkedInstance.showOnClick) {
588
+ target._jscLinkedInstance.show();
589
+ }
590
+ } else if (target._jscControlName) {
591
+ jsc.onControlPointerStart(e, target, target._jscControlName, 'touch');
592
+ } else {
593
+ if (jsc.picker && jsc.picker.owner) {
594
+ jsc.picker.owner.hide();
595
+ }
596
+ }
597
+ },
598
+
599
+
600
+ onWindowResize: function (e) {
601
+ jsc.redrawPosition();
602
+ },
603
+
604
+
605
+ onParentScroll: function (e) {
606
+ // hide the picker when one of the parent elements is scrolled
607
+ if (jsc.picker && jsc.picker.owner) {
608
+ jsc.picker.owner.hide();
609
+ }
610
+ },
611
+
612
+
613
+ _pointerMoveEvent: {
614
+ mouse: 'mousemove',
615
+ touch: 'touchmove'
616
+ },
617
+ _pointerEndEvent: {
618
+ mouse: 'mouseup',
619
+ touch: 'touchend'
620
+ },
621
+
622
+
623
+ _pointerOrigin: null,
624
+ _capturedTarget: null,
625
+
626
+
627
+ onControlPointerStart: function (e, target, controlName, pointerType) {
628
+ var thisObj = target._jscInstance;
629
+
630
+ jsc.preventDefault(e);
631
+ jsc.captureTarget(target);
632
+
633
+ var registerDragEvents = function (doc, offset) {
634
+ jsc.attachGroupEvent('drag', doc, jsc._pointerMoveEvent[pointerType],
635
+ jsc.onDocumentPointerMove(e, target, controlName, pointerType, offset));
636
+ jsc.attachGroupEvent('drag', doc, jsc._pointerEndEvent[pointerType],
637
+ jsc.onDocumentPointerEnd(e, target, controlName, pointerType));
638
+ };
639
+
640
+ registerDragEvents(document, [0, 0]);
641
+
642
+ if (window.parent && window.frameElement) {
643
+ var rect = window.frameElement.getBoundingClientRect();
644
+ var ofs = [-rect.left, -rect.top];
645
+ registerDragEvents(window.parent.window.document, ofs);
646
+ }
647
+
648
+ var abs = jsc.getAbsPointerPos(e);
649
+ var rel = jsc.getRelPointerPos(e);
650
+ jsc._pointerOrigin = {
651
+ x: abs.x - rel.x,
652
+ y: abs.y - rel.y
653
+ };
654
+
655
+ switch (controlName) {
656
+ case 'pad':
657
+ // if the slider is at the bottom, move it up
658
+ switch (jsc.getSliderComponent(thisObj)) {
659
+ case 's':
660
+ if (thisObj.hsv[1] === 0) {
661
+ thisObj.fromHSV(null, 100, null);
662
+ }
663
+
664
+ break;
665
+ case 'v':
666
+ if (thisObj.hsv[2] === 0) {
667
+ thisObj.fromHSV(null, null, 100);
668
+ }
669
+
670
+ break;
671
+ }
672
+ jsc.setPad(thisObj, e, 0, 0);
673
+ break;
674
+
675
+ case 'sld':
676
+ jsc.setSld(thisObj, e, 0);
677
+ break;
678
+ }
679
+
680
+ jsc.dispatchFineChange(thisObj);
681
+ },
682
+
683
+
684
+ onDocumentPointerMove: function (e, target, controlName, pointerType, offset) {
685
+ return function (e) {
686
+ var thisObj = target._jscInstance;
687
+ switch (controlName) {
688
+ case 'pad':
689
+ if (!e) {
690
+ e = window.event;
691
+ }
692
+ jsc.setPad(thisObj, e, offset[0], offset[1]);
693
+ jsc.dispatchFineChange(thisObj);
694
+ break;
695
+
696
+ case 'sld':
697
+ if (!e) {
698
+ e = window.event;
699
+ }
700
+ jsc.setSld(thisObj, e, offset[1]);
701
+ jsc.dispatchFineChange(thisObj);
702
+ break;
703
+ }
704
+ }
705
+ },
706
+
707
+
708
+ onDocumentPointerEnd: function (e, target, controlName, pointerType) {
709
+ return function (e) {
710
+ var thisObj = target._jscInstance;
711
+ jsc.detachGroupEvents('drag');
712
+ jsc.releaseTarget();
713
+ // Always dispatch changes after detaching outstanding mouse handlers,
714
+ // in case some user interaction will occur in user's onchange callback
715
+ // that would intrude with current mouse events
716
+ jsc.dispatchChange(thisObj);
717
+ };
718
+ },
719
+
720
+
721
+ dispatchChange: function (thisObj) {
722
+ if (thisObj.valueElement) {
723
+ if (jsc.isElementType(thisObj.valueElement, 'input')) {
724
+ jsc.fireEvent(thisObj.valueElement, 'change');
725
+ }
726
+ }
727
+ },
728
+
729
+
730
+ dispatchFineChange: function (thisObj) {
731
+ if (thisObj.onFineChange) {
732
+ var callback;
733
+ if (typeof thisObj.onFineChange === 'string') {
734
+ callback = new Function(thisObj.onFineChange);
735
+ } else {
736
+ callback = thisObj.onFineChange;
737
+ }
738
+ callback.call(thisObj);
739
+ }
740
+ },
741
+
742
+
743
+ setPad: function (thisObj, e, ofsX, ofsY) {
744
+ var pointerAbs = jsc.getAbsPointerPos(e);
745
+ var x = ofsX + pointerAbs.x - jsc._pointerOrigin.x - thisObj.padding - thisObj.insetWidth;
746
+ var y = ofsY + pointerAbs.y - jsc._pointerOrigin.y - thisObj.padding - thisObj.insetWidth;
747
+
748
+ var xVal = x * (360 / (thisObj.width - 1));
749
+ var yVal = 100 - (y * (100 / (thisObj.height - 1)));
750
+
751
+ switch (jsc.getPadYComponent(thisObj)) {
752
+ case 's':
753
+ thisObj.fromHSV(xVal, yVal, null, jsc.leaveSld);
754
+ break;
755
+ case 'v':
756
+ thisObj.fromHSV(xVal, null, yVal, jsc.leaveSld);
757
+ break;
758
+ }
759
+ },
760
+
761
+
762
+ setSld: function (thisObj, e, ofsY) {
763
+ var pointerAbs = jsc.getAbsPointerPos(e);
764
+ var y = ofsY + pointerAbs.y - jsc._pointerOrigin.y - thisObj.padding - thisObj.insetWidth;
765
+
766
+ var yVal = 100 - (y * (100 / (thisObj.height - 1)));
767
+
768
+ switch (jsc.getSliderComponent(thisObj)) {
769
+ case 's':
770
+ thisObj.fromHSV(null, yVal, null, jsc.leavePad);
771
+ break;
772
+ case 'v':
773
+ thisObj.fromHSV(null, null, yVal, jsc.leavePad);
774
+ break;
775
+ }
776
+ },
777
+
778
+
779
+ _vmlNS: 'jsc_vml_',
780
+ _vmlCSS: 'jsc_vml_css_',
781
+ _vmlReady: false,
782
+
783
+
784
+ initVML: function () {
785
+ if (!jsc._vmlReady) {
786
+ // init VML namespace
787
+ var doc = document;
788
+ if (!doc.namespaces[jsc._vmlNS]) {
789
+ doc.namespaces.add(jsc._vmlNS, 'urn:schemas-microsoft-com:vml');
790
+ }
791
+ if (!doc.styleSheets[jsc._vmlCSS]) {
792
+ var tags = ['shape', 'shapetype', 'group', 'background', 'path', 'formulas', 'handles', 'fill', 'stroke', 'shadow', 'textbox', 'textpath', 'imagedata', 'line', 'polyline', 'curve', 'rect', 'roundrect', 'oval', 'arc', 'image'];
793
+ var ss = doc.createStyleSheet();
794
+ ss.owningElement.id = jsc._vmlCSS;
795
+ for (var i = 0; i < tags.length; i += 1) {
796
+ ss.addRule(jsc._vmlNS + '\\:' + tags[i], 'behavior:url(#default#VML);');
797
+ }
798
+ }
799
+ jsc._vmlReady = true;
800
+ }
801
+ },
802
+
803
+
804
+ createPalette: function () {
805
+
806
+ var paletteObj = {
807
+ elm: null,
808
+ draw: null
809
+ };
810
+
811
+ if (jsc.isCanvasSupported) {
812
+ // Canvas implementation for modern browsers
813
+
814
+ var canvas = document.createElement('canvas');
815
+ var ctx = canvas.getContext('2d');
816
+
817
+ var drawFunc = function (width, height, type) {
818
+ canvas.width = width;
819
+ canvas.height = height;
820
+
821
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
822
+
823
+ var hGrad = ctx.createLinearGradient(0, 0, canvas.width, 0);
824
+ hGrad.addColorStop(0 / 6, '#F00');
825
+ hGrad.addColorStop(1 / 6, '#FF0');
826
+ hGrad.addColorStop(2 / 6, '#0F0');
827
+ hGrad.addColorStop(3 / 6, '#0FF');
828
+ hGrad.addColorStop(4 / 6, '#00F');
829
+ hGrad.addColorStop(5 / 6, '#F0F');
830
+ hGrad.addColorStop(6 / 6, '#F00');
831
+
832
+ ctx.fillStyle = hGrad;
833
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
834
+
835
+ var vGrad = ctx.createLinearGradient(0, 0, 0, canvas.height);
836
+ switch (type.toLowerCase()) {
837
+ case 's':
838
+ vGrad.addColorStop(0, 'rgba(255,255,255,0)');
839
+ vGrad.addColorStop(1, 'rgba(255,255,255,1)');
840
+ break;
841
+ case 'v':
842
+ vGrad.addColorStop(0, 'rgba(0,0,0,0)');
843
+ vGrad.addColorStop(1, 'rgba(0,0,0,1)');
844
+ break;
845
+ }
846
+ ctx.fillStyle = vGrad;
847
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
848
+ };
849
+
850
+ paletteObj.elm = canvas;
851
+ paletteObj.draw = drawFunc;
852
+
853
+ } else {
854
+ // VML fallback for IE 7 and 8
855
+
856
+ jsc.initVML();
857
+
858
+ var vmlContainer = document.createElement('div');
859
+ vmlContainer.style.position = 'relative';
860
+ vmlContainer.style.overflow = 'hidden';
861
+
862
+ var hGrad = document.createElement(jsc._vmlNS + ':fill');
863
+ hGrad.type = 'gradient';
864
+ hGrad.method = 'linear';
865
+ hGrad.angle = '90';
866
+ hGrad.colors = '16.67% #F0F, 33.33% #00F, 50% #0FF, 66.67% #0F0, 83.33% #FF0'
867
+
868
+ var hRect = document.createElement(jsc._vmlNS + ':rect');
869
+ hRect.style.position = 'absolute';
870
+ hRect.style.left = -1 + 'px';
871
+ hRect.style.top = -1 + 'px';
872
+ hRect.stroked = false;
873
+ hRect.appendChild(hGrad);
874
+ vmlContainer.appendChild(hRect);
875
+
876
+ var vGrad = document.createElement(jsc._vmlNS + ':fill');
877
+ vGrad.type = 'gradient';
878
+ vGrad.method = 'linear';
879
+ vGrad.angle = '180';
880
+ vGrad.opacity = '0';
881
+
882
+ var vRect = document.createElement(jsc._vmlNS + ':rect');
883
+ vRect.style.position = 'absolute';
884
+ vRect.style.left = -1 + 'px';
885
+ vRect.style.top = -1 + 'px';
886
+ vRect.stroked = false;
887
+ vRect.appendChild(vGrad);
888
+ vmlContainer.appendChild(vRect);
889
+
890
+ var drawFunc = function (width, height, type) {
891
+ vmlContainer.style.width = width + 'px';
892
+ vmlContainer.style.height = height + 'px';
893
+
894
+ hRect.style.width =
895
+ vRect.style.width =
896
+ (width + 1) + 'px';
897
+ hRect.style.height =
898
+ vRect.style.height =
899
+ (height + 1) + 'px';
900
+
901
+ // Colors must be specified during every redraw, otherwise IE won't display
902
+ // a full gradient during a subsequential redraw
903
+ hGrad.color = '#F00';
904
+ hGrad.color2 = '#F00';
905
+
906
+ switch (type.toLowerCase()) {
907
+ case 's':
908
+ vGrad.color = vGrad.color2 = '#FFF';
909
+ break;
910
+ case 'v':
911
+ vGrad.color = vGrad.color2 = '#000';
912
+ break;
913
+ }
914
+ };
915
+
916
+ paletteObj.elm = vmlContainer;
917
+ paletteObj.draw = drawFunc;
918
+ }
919
+
920
+ return paletteObj;
921
+ },
922
+
923
+
924
+ createSliderGradient: function () {
925
+
926
+ var sliderObj = {
927
+ elm: null,
928
+ draw: null
929
+ };
930
+
931
+ if (jsc.isCanvasSupported) {
932
+ // Canvas implementation for modern browsers
933
+
934
+ var canvas = document.createElement('canvas');
935
+ var ctx = canvas.getContext('2d');
936
+
937
+ var drawFunc = function (width, height, color1, color2) {
938
+ canvas.width = width;
939
+ canvas.height = height;
940
+
941
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
942
+
943
+ var grad = ctx.createLinearGradient(0, 0, 0, canvas.height);
944
+ grad.addColorStop(0, color1);
945
+ grad.addColorStop(1, color2);
946
+
947
+ ctx.fillStyle = grad;
948
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
949
+ };
950
+
951
+ sliderObj.elm = canvas;
952
+ sliderObj.draw = drawFunc;
953
+
954
+ } else {
955
+ // VML fallback for IE 7 and 8
956
+
957
+ jsc.initVML();
958
+
959
+ var vmlContainer = document.createElement('div');
960
+ vmlContainer.style.position = 'relative';
961
+ vmlContainer.style.overflow = 'hidden';
962
+
963
+ var grad = document.createElement(jsc._vmlNS + ':fill');
964
+ grad.type = 'gradient';
965
+ grad.method = 'linear';
966
+ grad.angle = '180';
967
+
968
+ var rect = document.createElement(jsc._vmlNS + ':rect');
969
+ rect.style.position = 'absolute';
970
+ rect.style.left = -1 + 'px';
971
+ rect.style.top = -1 + 'px';
972
+ rect.stroked = false;
973
+ rect.appendChild(grad);
974
+ vmlContainer.appendChild(rect);
975
+
976
+ var drawFunc = function (width, height, color1, color2) {
977
+ vmlContainer.style.width = width + 'px';
978
+ vmlContainer.style.height = height + 'px';
979
+
980
+ rect.style.width = (width + 1) + 'px';
981
+ rect.style.height = (height + 1) + 'px';
982
+
983
+ grad.color = color1;
984
+ grad.color2 = color2;
985
+ };
986
+
987
+ sliderObj.elm = vmlContainer;
988
+ sliderObj.draw = drawFunc;
989
+ }
990
+
991
+ return sliderObj;
992
+ },
993
+
994
+
995
+ leaveValue: 1 << 0,
996
+ leaveStyle: 1 << 1,
997
+ leavePad: 1 << 2,
998
+ leaveSld: 1 << 3,
999
+
1000
+
1001
+ BoxShadow: (function () {
1002
+ var BoxShadow = function (hShadow, vShadow, blur, spread, color, inset) {
1003
+ this.hShadow = hShadow;
1004
+ this.vShadow = vShadow;
1005
+ this.blur = blur;
1006
+ this.spread = spread;
1007
+ this.color = color;
1008
+ this.inset = !!inset;
1009
+ };
1010
+
1011
+ BoxShadow.prototype.toString = function () {
1012
+ var vals = [
1013
+ Math.round(this.hShadow) + 'px',
1014
+ Math.round(this.vShadow) + 'px',
1015
+ Math.round(this.blur) + 'px',
1016
+ Math.round(this.spread) + 'px',
1017
+ this.color
1018
+ ];
1019
+ if (this.inset) {
1020
+ vals.push('inset');
1021
+ }
1022
+ return vals.join(' ');
1023
+ };
1024
+
1025
+ return BoxShadow;
1026
+ })(),
1027
+
1028
+
1029
+ //
1030
+ // Usage:
1031
+ // var myColor = new jscolor(<targetElement> [, <options>])
1032
+ //
1033
+
1034
+ jscolor: function (targetElement, options) {
1035
+
1036
+ // General options
1037
+ //
1038
+ this.value = null; // initial HEX color. To change it later, use methods fromString(), fromHSV() and fromRGB()
1039
+ this.valueElement = targetElement; // element that will be used to display and input the color code
1040
+ this.styleElement = targetElement; // element that will preview the picked color using CSS backgroundColor
1041
+ this.required = true; // whether the associated text <input> can be left empty
1042
+ this.refine = true; // whether to refine the entered color code (e.g. uppercase it and remove whitespace)
1043
+ this.hash = true; // whether to prefix the HEX color code with # symbol
1044
+ this.uppercase = true; // whether to show the color code in upper case
1045
+ this.onFineChange = null; // called instantly every time the color changes (value can be either a function or a string with javascript code)
1046
+ this.activeClass = 'jscolor-active'; // class to be set to the target element when a picker window is open on it
1047
+ this.overwriteImportant = false; // whether to overwrite colors of styleElement using !important
1048
+ this.minS = 0; // min allowed saturation (0 - 100)
1049
+ this.maxS = 100; // max allowed saturation (0 - 100)
1050
+ this.minV = 0; // min allowed value (brightness) (0 - 100)
1051
+ this.maxV = 100; // max allowed value (brightness) (0 - 100)
1052
+
1053
+ // Accessing the picked color
1054
+ //
1055
+ this.hsv = [0, 0, 100]; // read-only [0-360, 0-100, 0-100]
1056
+ this.rgb = [255, 255, 255]; // read-only [0-255, 0-255, 0-255]
1057
+
1058
+ // Color Picker options
1059
+ //
1060
+ this.width = 200; // width of color palette (in px)
1061
+ this.height = 200; // height of color palette (in px)
1062
+ this.showOnClick = true; // whether to display the color picker when user clicks on its target element
1063
+ this.mode = 'HSV'; // HSV | HVS | HS | HV - layout of the color picker controls
1064
+ this.position = 'right'; // left | right | top | bottom - position relative to the target element
1065
+ this.smartPosition = true; // automatically change picker position when there is not enough space for it
1066
+ this.sliderSize = 16; // px
1067
+ this.crossSize = 8; // px
1068
+ this.closable = false; // whether to display the Close button
1069
+ this.closeText = 'Close';
1070
+ this.buttonColor = '#000000'; // CSS color
1071
+ this.buttonHeight = 18; // px
1072
+ this.padding = 12; // px
1073
+ this.backgroundColor = '#FFFFFF'; // CSS color
1074
+ this.borderWidth = 1; // px
1075
+ this.borderColor = '#BBBBBB'; // CSS color
1076
+ this.borderRadius = 8; // px
1077
+ this.insetWidth = 1; // px
1078
+ this.insetColor = '#BBBBBB'; // CSS color
1079
+ this.shadow = true; // whether to display shadow
1080
+ this.shadowBlur = 15; // px
1081
+ this.shadowColor = 'rgba(0,0,0,0.2)'; // CSS color
1082
+ this.pointerColor = '#4C4C4C'; // px
1083
+ this.pointerBorderColor = '#FFFFFF'; // px
1084
+ this.pointerBorderWidth = 1; // px
1085
+ this.pointerThickness = 2; // px
1086
+ this.zIndex = 1000;
1087
+ this.container = null; // where to append the color picker (BODY element by default)
1088
+
1089
+
1090
+ for (var opt in options) {
1091
+ if (options.hasOwnProperty(opt)) {
1092
+ this[opt] = options[opt];
1093
+ }
1094
+ }
1095
+
1096
+
1097
+ this.hide = function () {
1098
+ if (isPickerOwner()) {
1099
+ detachPicker();
1100
+ }
1101
+ };
1102
+
1103
+
1104
+ this.show = function () {
1105
+ drawPicker();
1106
+ };
1107
+
1108
+
1109
+ this.redraw = function () {
1110
+ if (isPickerOwner()) {
1111
+ drawPicker();
1112
+ }
1113
+ };
1114
+
1115
+
1116
+ this.importColor = function () {
1117
+ if (!this.valueElement) {
1118
+ this.exportColor();
1119
+ } else {
1120
+ if (jsc.isElementType(this.valueElement, 'input')) {
1121
+ if (!this.refine) {
1122
+ if (!this.fromString(this.valueElement.value, jsc.leaveValue)) {
1123
+ if (this.styleElement) {
1124
+ this.styleElement.style.backgroundImage = this.styleElement._jscOrigStyle.backgroundImage;
1125
+ this.styleElement.style.backgroundColor = this.styleElement._jscOrigStyle.backgroundColor;
1126
+ this.styleElement.style.color = this.styleElement._jscOrigStyle.color;
1127
+ }
1128
+ this.exportColor(jsc.leaveValue | jsc.leaveStyle);
1129
+ }
1130
+ } else if (!this.required && /^\s*$/.test(this.valueElement.value)) {
1131
+ this.valueElement.value = '';
1132
+ if (this.styleElement) {
1133
+ this.styleElement.style.backgroundImage = this.styleElement._jscOrigStyle.backgroundImage;
1134
+ this.styleElement.style.backgroundColor = this.styleElement._jscOrigStyle.backgroundColor;
1135
+ this.styleElement.style.color = this.styleElement._jscOrigStyle.color;
1136
+ }
1137
+ this.exportColor(jsc.leaveValue | jsc.leaveStyle);
1138
+
1139
+ } else if (this.fromString(this.valueElement.value)) {
1140
+ // managed to import color successfully from the value -> OK, don't do anything
1141
+ } else {
1142
+ this.exportColor();
1143
+ }
1144
+ } else {
1145
+ // not an input element -> doesn't have any value
1146
+ this.exportColor();
1147
+ }
1148
+ }
1149
+ };
1150
+
1151
+
1152
+ this.exportColor = function (flags) {
1153
+ if (!(flags & jsc.leaveValue) && this.valueElement) {
1154
+ var value = this.toString();
1155
+ if (this.uppercase) {
1156
+ value = value.toUpperCase();
1157
+ }
1158
+ if (this.hash) {
1159
+ value = '#' + value;
1160
+ }
1161
+
1162
+ if (jsc.isElementType(this.valueElement, 'input')) {
1163
+ this.valueElement.value = value;
1164
+ } else {
1165
+ this.valueElement.innerHTML = value;
1166
+ }
1167
+ }
1168
+ if (!(flags & jsc.leaveStyle)) {
1169
+ if (this.styleElement) {
1170
+ var bgColor = '#' + this.toString();
1171
+ var fgColor = this.isLight() ? '#000' : '#FFF';
1172
+
1173
+ this.styleElement.style.backgroundImage = 'none';
1174
+ this.styleElement.style.backgroundColor = bgColor;
1175
+ this.styleElement.style.color = fgColor;
1176
+
1177
+ if (this.overwriteImportant) {
1178
+ this.styleElement.setAttribute('style',
1179
+ 'background: ' + bgColor + ' !important; ' +
1180
+ 'color: ' + fgColor + ' !important;'
1181
+ );
1182
+ }
1183
+ }
1184
+ }
1185
+ if (!(flags & jsc.leavePad) && isPickerOwner()) {
1186
+ redrawPad();
1187
+ }
1188
+ if (!(flags & jsc.leaveSld) && isPickerOwner()) {
1189
+ redrawSld();
1190
+ }
1191
+ };
1192
+
1193
+
1194
+ // h: 0-360
1195
+ // s: 0-100
1196
+ // v: 0-100
1197
+ //
1198
+ this.fromHSV = function (h, s, v, flags) { // null = don't change
1199
+ if (h !== null) {
1200
+ if (isNaN(h)) {
1201
+ return false;
1202
+ }
1203
+ h = Math.max(0, Math.min(360, h));
1204
+ }
1205
+ if (s !== null) {
1206
+ if (isNaN(s)) {
1207
+ return false;
1208
+ }
1209
+ s = Math.max(0, Math.min(100, this.maxS, s), this.minS);
1210
+ }
1211
+ if (v !== null) {
1212
+ if (isNaN(v)) {
1213
+ return false;
1214
+ }
1215
+ v = Math.max(0, Math.min(100, this.maxV, v), this.minV);
1216
+ }
1217
+
1218
+ this.rgb = HSV_RGB(
1219
+ h === null ? this.hsv[0] : (this.hsv[0] = h),
1220
+ s === null ? this.hsv[1] : (this.hsv[1] = s),
1221
+ v === null ? this.hsv[2] : (this.hsv[2] = v)
1222
+ );
1223
+
1224
+ this.exportColor(flags);
1225
+ };
1226
+
1227
+
1228
+ // r: 0-255
1229
+ // g: 0-255
1230
+ // b: 0-255
1231
+ //
1232
+ this.fromRGB = function (r, g, b, flags) { // null = don't change
1233
+ if (r !== null) {
1234
+ if (isNaN(r)) {
1235
+ return false;
1236
+ }
1237
+ r = Math.max(0, Math.min(255, r));
1238
+ }
1239
+ if (g !== null) {
1240
+ if (isNaN(g)) {
1241
+ return false;
1242
+ }
1243
+ g = Math.max(0, Math.min(255, g));
1244
+ }
1245
+ if (b !== null) {
1246
+ if (isNaN(b)) {
1247
+ return false;
1248
+ }
1249
+ b = Math.max(0, Math.min(255, b));
1250
+ }
1251
+
1252
+ var hsv = RGB_HSV(
1253
+ r === null ? this.rgb[0] : r,
1254
+ g === null ? this.rgb[1] : g,
1255
+ b === null ? this.rgb[2] : b
1256
+ );
1257
+ if (hsv[0] !== null) {
1258
+ this.hsv[0] = Math.max(0, Math.min(360, hsv[0]));
1259
+ }
1260
+ if (hsv[2] !== 0) {
1261
+ this.hsv[1] = hsv[1] === null ? null : Math.max(0, this.minS, Math.min(100, this.maxS, hsv[1]));
1262
+ }
1263
+ this.hsv[2] = hsv[2] === null ? null : Math.max(0, this.minV, Math.min(100, this.maxV, hsv[2]));
1264
+
1265
+ // update RGB according to final HSV, as some values might be trimmed
1266
+ var rgb = HSV_RGB(this.hsv[0], this.hsv[1], this.hsv[2]);
1267
+ this.rgb[0] = rgb[0];
1268
+ this.rgb[1] = rgb[1];
1269
+ this.rgb[2] = rgb[2];
1270
+
1271
+ this.exportColor(flags);
1272
+ };
1273
+
1274
+
1275
+ this.fromString = function (str, flags) {
1276
+ var m;
1277
+ if (m = str.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i)) {
1278
+ // HEX notation
1279
+ //
1280
+
1281
+ if (m[1].length === 6) {
1282
+ // 6-char notation
1283
+ this.fromRGB(
1284
+ parseInt(m[1].substr(0, 2), 16),
1285
+ parseInt(m[1].substr(2, 2), 16),
1286
+ parseInt(m[1].substr(4, 2), 16),
1287
+ flags
1288
+ );
1289
+ } else {
1290
+ // 3-char notation
1291
+ this.fromRGB(
1292
+ parseInt(m[1].charAt(0) + m[1].charAt(0), 16),
1293
+ parseInt(m[1].charAt(1) + m[1].charAt(1), 16),
1294
+ parseInt(m[1].charAt(2) + m[1].charAt(2), 16),
1295
+ flags
1296
+ );
1297
+ }
1298
+ return true;
1299
+
1300
+ } else if (m = str.match(/^\W*rgba?\(([^)]*)\)\W*$/i)) {
1301
+ var params = m[1].split(',');
1302
+ var re = /^\s*(\d*)(\.\d+)?\s*$/;
1303
+ var mR, mG, mB;
1304
+ if (
1305
+ params.length >= 3 &&
1306
+ (mR = params[0].match(re)) &&
1307
+ (mG = params[1].match(re)) &&
1308
+ (mB = params[2].match(re))
1309
+ ) {
1310
+ var r = parseFloat((mR[1] || '0') + (mR[2] || ''));
1311
+ var g = parseFloat((mG[1] || '0') + (mG[2] || ''));
1312
+ var b = parseFloat((mB[1] || '0') + (mB[2] || ''));
1313
+ this.fromRGB(r, g, b, flags);
1314
+ return true;
1315
+ }
1316
+ }
1317
+ return false;
1318
+ };
1319
+
1320
+
1321
+ this.toString = function () {
1322
+ return (
1323
+ (0x100 | Math.round(this.rgb[0])).toString(16).substr(1) +
1324
+ (0x100 | Math.round(this.rgb[1])).toString(16).substr(1) +
1325
+ (0x100 | Math.round(this.rgb[2])).toString(16).substr(1)
1326
+ );
1327
+ };
1328
+
1329
+
1330
+ this.toHEXString = function () {
1331
+ return '#' + this.toString().toUpperCase();
1332
+ };
1333
+
1334
+
1335
+ this.toRGBString = function () {
1336
+ return ('rgb(' +
1337
+ Math.round(this.rgb[0]) + ',' +
1338
+ Math.round(this.rgb[1]) + ',' +
1339
+ Math.round(this.rgb[2]) + ')'
1340
+ );
1341
+ };
1342
+
1343
+
1344
+ this.isLight = function () {
1345
+ return (
1346
+ 0.213 * this.rgb[0] +
1347
+ 0.715 * this.rgb[1] +
1348
+ 0.072 * this.rgb[2] >
1349
+ 255 / 2
1350
+ );
1351
+ };
1352
+
1353
+
1354
+ this._processParentElementsInDOM = function () {
1355
+ if (this._linkedElementsProcessed) {
1356
+ return;
1357
+ }
1358
+ this._linkedElementsProcessed = true;
1359
+
1360
+ var elm = this.targetElement;
1361
+ do {
1362
+ // If the target element or one of its parent nodes has fixed position,
1363
+ // then use fixed positioning instead
1364
+ //
1365
+ // Note: In Firefox, getComputedStyle returns null in a hidden iframe,
1366
+ // that's why we need to check if the returned style object is non-empty
1367
+ var currStyle = jsc.getStyle(elm);
1368
+ if (currStyle && currStyle.position.toLowerCase() === 'fixed') {
1369
+ this.fixed = true;
1370
+ }
1371
+
1372
+ if (elm !== this.targetElement) {
1373
+ // Ensure to attach onParentScroll only once to each parent element
1374
+ // (multiple targetElements can share the same parent nodes)
1375
+ //
1376
+ // Note: It's not just offsetParents that can be scrollable,
1377
+ // that's why we loop through all parent nodes
1378
+ if (!elm._jscEventsAttached) {
1379
+ jsc.attachEvent(elm, 'scroll', jsc.onParentScroll);
1380
+ elm._jscEventsAttached = true;
1381
+ }
1382
+ }
1383
+ } while ((elm = elm.parentNode) && !jsc.isElementType(elm, 'body'));
1384
+ };
1385
+
1386
+
1387
+ // r: 0-255
1388
+ // g: 0-255
1389
+ // b: 0-255
1390
+ //
1391
+ // returns: [ 0-360, 0-100, 0-100 ]
1392
+ //
1393
+ function RGB_HSV(r, g, b) {
1394
+ r /= 255;
1395
+ g /= 255;
1396
+ b /= 255;
1397
+ var n = Math.min(Math.min(r, g), b);
1398
+ var v = Math.max(Math.max(r, g), b);
1399
+ var m = v - n;
1400
+ if (m === 0) {
1401
+ return [null, 0, 100 * v];
1402
+ }
1403
+ var h = r === n ? 3 + (b - g) / m : (g === n ? 5 + (r - b) / m : 1 + (g - r) / m);
1404
+ return [
1405
+ 60 * (h === 6 ? 0 : h),
1406
+ 100 * (m / v),
1407
+ 100 * v
1408
+ ];
1409
+ }
1410
+
1411
+
1412
+ // h: 0-360
1413
+ // s: 0-100
1414
+ // v: 0-100
1415
+ //
1416
+ // returns: [ 0-255, 0-255, 0-255 ]
1417
+ //
1418
+ function HSV_RGB(h, s, v) {
1419
+ var u = 255 * (v / 100);
1420
+
1421
+ if (h === null) {
1422
+ return [u, u, u];
1423
+ }
1424
+
1425
+ h /= 60;
1426
+ s /= 100;
1427
+
1428
+ var i = Math.floor(h);
1429
+ var f = i % 2 ? h - i : 1 - (h - i);
1430
+ var m = u * (1 - s);
1431
+ var n = u * (1 - s * f);
1432
+ switch (i) {
1433
+ case 6:
1434
+ case 0:
1435
+ return [u, n, m];
1436
+ case 1:
1437
+ return [n, u, m];
1438
+ case 2:
1439
+ return [m, u, n];
1440
+ case 3:
1441
+ return [m, n, u];
1442
+ case 4:
1443
+ return [n, m, u];
1444
+ case 5:
1445
+ return [u, m, n];
1446
+ }
1447
+ }
1448
+
1449
+
1450
+ function detachPicker() {
1451
+ jsc.unsetClass(THIS.targetElement, THIS.activeClass);
1452
+ jsc.picker.wrap.parentNode.removeChild(jsc.picker.wrap);
1453
+ delete jsc.picker.owner;
1454
+ }
1455
+
1456
+
1457
+ function drawPicker() {
1458
+
1459
+ // At this point, when drawing the picker, we know what the parent elements are
1460
+ // and we can do all related DOM operations, such as registering events on them
1461
+ // or checking their positioning
1462
+ THIS._processParentElementsInDOM();
1463
+
1464
+ if (!jsc.picker) {
1465
+ jsc.picker = {
1466
+ owner: null,
1467
+ wrap: document.createElement('div'),
1468
+ box: document.createElement('div'),
1469
+ boxS: document.createElement('div'), // shadow area
1470
+ boxB: document.createElement('div'), // border
1471
+ pad: document.createElement('div'),
1472
+ padB: document.createElement('div'), // border
1473
+ padM: document.createElement('div'), // mouse/touch area
1474
+ padPal: jsc.createPalette(),
1475
+ cross: document.createElement('div'),
1476
+ crossBY: document.createElement('div'), // border Y
1477
+ crossBX: document.createElement('div'), // border X
1478
+ crossLY: document.createElement('div'), // line Y
1479
+ crossLX: document.createElement('div'), // line X
1480
+ sld: document.createElement('div'),
1481
+ sldB: document.createElement('div'), // border
1482
+ sldM: document.createElement('div'), // mouse/touch area
1483
+ sldGrad: jsc.createSliderGradient(),
1484
+ sldPtrS: document.createElement('div'), // slider pointer spacer
1485
+ sldPtrIB: document.createElement('div'), // slider pointer inner border
1486
+ sldPtrMB: document.createElement('div'), // slider pointer middle border
1487
+ sldPtrOB: document.createElement('div'), // slider pointer outer border
1488
+ btn: document.createElement('div'),
1489
+ btnT: document.createElement('span') // text
1490
+ };
1491
+
1492
+ jsc.picker.pad.appendChild(jsc.picker.padPal.elm);
1493
+ jsc.picker.padB.appendChild(jsc.picker.pad);
1494
+ jsc.picker.cross.appendChild(jsc.picker.crossBY);
1495
+ jsc.picker.cross.appendChild(jsc.picker.crossBX);
1496
+ jsc.picker.cross.appendChild(jsc.picker.crossLY);
1497
+ jsc.picker.cross.appendChild(jsc.picker.crossLX);
1498
+ jsc.picker.padB.appendChild(jsc.picker.cross);
1499
+ jsc.picker.box.appendChild(jsc.picker.padB);
1500
+ jsc.picker.box.appendChild(jsc.picker.padM);
1501
+
1502
+ jsc.picker.sld.appendChild(jsc.picker.sldGrad.elm);
1503
+ jsc.picker.sldB.appendChild(jsc.picker.sld);
1504
+ jsc.picker.sldB.appendChild(jsc.picker.sldPtrOB);
1505
+ jsc.picker.sldPtrOB.appendChild(jsc.picker.sldPtrMB);
1506
+ jsc.picker.sldPtrMB.appendChild(jsc.picker.sldPtrIB);
1507
+ jsc.picker.sldPtrIB.appendChild(jsc.picker.sldPtrS);
1508
+ jsc.picker.box.appendChild(jsc.picker.sldB);
1509
+ jsc.picker.box.appendChild(jsc.picker.sldM);
1510
+
1511
+ jsc.picker.btn.appendChild(jsc.picker.btnT);
1512
+ jsc.picker.box.appendChild(jsc.picker.btn);
1513
+
1514
+ jsc.picker.boxB.appendChild(jsc.picker.box);
1515
+ jsc.picker.wrap.appendChild(jsc.picker.boxS);
1516
+ jsc.picker.wrap.appendChild(jsc.picker.boxB);
1517
+ }
1518
+
1519
+ var p = jsc.picker;
1520
+
1521
+ var displaySlider = !!jsc.getSliderComponent(THIS);
1522
+ var dims = jsc.getPickerDims(THIS);
1523
+ var crossOuterSize = (2 * THIS.pointerBorderWidth + THIS.pointerThickness + 2 * THIS.crossSize);
1524
+ var padToSliderPadding = jsc.getPadToSliderPadding(THIS);
1525
+ var borderRadius = Math.min(
1526
+ THIS.borderRadius,
1527
+ Math.round(THIS.padding * Math.PI)); // px
1528
+ var padCursor = 'crosshair';
1529
+
1530
+ // wrap
1531
+ p.wrap.style.clear = 'both';
1532
+ p.wrap.style.width = (dims[0] + 2 * THIS.borderWidth) + 'px';
1533
+ p.wrap.style.height = (dims[1] + 2 * THIS.borderWidth) + 'px';
1534
+ p.wrap.style.zIndex = THIS.zIndex;
1535
+
1536
+ // picker
1537
+ p.box.style.width = dims[0] + 'px';
1538
+ p.box.style.height = dims[1] + 'px';
1539
+
1540
+ p.boxS.style.position = 'absolute';
1541
+ p.boxS.style.left = '0';
1542
+ p.boxS.style.top = '0';
1543
+ p.boxS.style.width = '100%';
1544
+ p.boxS.style.height = '100%';
1545
+ jsc.setBorderRadius(p.boxS, borderRadius + 'px');
1546
+
1547
+ // picker border
1548
+ p.boxB.style.position = 'relative';
1549
+ p.boxB.style.border = THIS.borderWidth + 'px solid';
1550
+ p.boxB.style.borderColor = THIS.borderColor;
1551
+ p.boxB.style.background = THIS.backgroundColor;
1552
+ jsc.setBorderRadius(p.boxB, borderRadius + 'px');
1553
+
1554
+ // IE hack:
1555
+ // If the element is transparent, IE will trigger the event on the elements under it,
1556
+ // e.g. on Canvas or on elements with border
1557
+ p.padM.style.background =
1558
+ p.sldM.style.background =
1559
+ '#FFF';
1560
+ jsc.setStyle(p.padM, 'opacity', '0');
1561
+ jsc.setStyle(p.sldM, 'opacity', '0');
1562
+
1563
+ // pad
1564
+ p.pad.style.position = 'relative';
1565
+ p.pad.style.width = THIS.width + 'px';
1566
+ p.pad.style.height = THIS.height + 'px';
1567
+
1568
+ // pad palettes (HSV and HVS)
1569
+ p.padPal.draw(THIS.width, THIS.height, jsc.getPadYComponent(THIS));
1570
+
1571
+ // pad border
1572
+ p.padB.style.position = 'absolute';
1573
+ p.padB.style.left = THIS.padding + 'px';
1574
+ p.padB.style.top = THIS.padding + 'px';
1575
+ p.padB.style.border = THIS.insetWidth + 'px solid';
1576
+ p.padB.style.borderColor = THIS.insetColor;
1577
+
1578
+ // pad mouse area
1579
+ p.padM._jscInstance = THIS;
1580
+ p.padM._jscControlName = 'pad';
1581
+ p.padM.style.position = 'absolute';
1582
+ p.padM.style.left = '0';
1583
+ p.padM.style.top = '0';
1584
+ p.padM.style.width = (THIS.padding + 2 * THIS.insetWidth + THIS.width + padToSliderPadding / 2) + 'px';
1585
+ p.padM.style.height = dims[1] + 'px';
1586
+ p.padM.style.cursor = padCursor;
1587
+
1588
+ // pad cross
1589
+ p.cross.style.position = 'absolute';
1590
+ p.cross.style.left =
1591
+ p.cross.style.top =
1592
+ '0';
1593
+ p.cross.style.width =
1594
+ p.cross.style.height =
1595
+ crossOuterSize + 'px';
1596
+
1597
+ // pad cross border Y and X
1598
+ p.crossBY.style.position =
1599
+ p.crossBX.style.position =
1600
+ 'absolute';
1601
+ p.crossBY.style.background =
1602
+ p.crossBX.style.background =
1603
+ THIS.pointerBorderColor;
1604
+ p.crossBY.style.width =
1605
+ p.crossBX.style.height =
1606
+ (2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px';
1607
+ p.crossBY.style.height =
1608
+ p.crossBX.style.width =
1609
+ crossOuterSize + 'px';
1610
+ p.crossBY.style.left =
1611
+ p.crossBX.style.top =
1612
+ (Math.floor(crossOuterSize / 2) - Math.floor(THIS.pointerThickness / 2) - THIS.pointerBorderWidth) + 'px';
1613
+ p.crossBY.style.top =
1614
+ p.crossBX.style.left =
1615
+ '0';
1616
+
1617
+ // pad cross line Y and X
1618
+ p.crossLY.style.position =
1619
+ p.crossLX.style.position =
1620
+ 'absolute';
1621
+ p.crossLY.style.background =
1622
+ p.crossLX.style.background =
1623
+ THIS.pointerColor;
1624
+ p.crossLY.style.height =
1625
+ p.crossLX.style.width =
1626
+ (crossOuterSize - 2 * THIS.pointerBorderWidth) + 'px';
1627
+ p.crossLY.style.width =
1628
+ p.crossLX.style.height =
1629
+ THIS.pointerThickness + 'px';
1630
+ p.crossLY.style.left =
1631
+ p.crossLX.style.top =
1632
+ (Math.floor(crossOuterSize / 2) - Math.floor(THIS.pointerThickness / 2)) + 'px';
1633
+ p.crossLY.style.top =
1634
+ p.crossLX.style.left =
1635
+ THIS.pointerBorderWidth + 'px';
1636
+
1637
+ // slider
1638
+ p.sld.style.overflow = 'hidden';
1639
+ p.sld.style.width = THIS.sliderSize + 'px';
1640
+ p.sld.style.height = THIS.height + 'px';
1641
+
1642
+ // slider gradient
1643
+ p.sldGrad.draw(THIS.sliderSize, THIS.height, '#000', '#000');
1644
+
1645
+ // slider border
1646
+ p.sldB.style.display = displaySlider ? 'block' : 'none';
1647
+ p.sldB.style.position = 'absolute';
1648
+ p.sldB.style.right = THIS.padding + 'px';
1649
+ p.sldB.style.top = THIS.padding + 'px';
1650
+ p.sldB.style.border = THIS.insetWidth + 'px solid';
1651
+ p.sldB.style.borderColor = THIS.insetColor;
1652
+
1653
+ // slider mouse area
1654
+ p.sldM._jscInstance = THIS;
1655
+ p.sldM._jscControlName = 'sld';
1656
+ p.sldM.style.display = displaySlider ? 'block' : 'none';
1657
+ p.sldM.style.position = 'absolute';
1658
+ p.sldM.style.right = '0';
1659
+ p.sldM.style.top = '0';
1660
+ p.sldM.style.width = (THIS.sliderSize + padToSliderPadding / 2 + THIS.padding + 2 * THIS.insetWidth) + 'px';
1661
+ p.sldM.style.height = dims[1] + 'px';
1662
+ p.sldM.style.cursor = 'default';
1663
+
1664
+ // slider pointer inner and outer border
1665
+ p.sldPtrIB.style.border =
1666
+ p.sldPtrOB.style.border =
1667
+ THIS.pointerBorderWidth + 'px solid ' + THIS.pointerBorderColor;
1668
+
1669
+ // slider pointer outer border
1670
+ p.sldPtrOB.style.position = 'absolute';
1671
+ p.sldPtrOB.style.left = -(2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px';
1672
+ p.sldPtrOB.style.top = '0';
1673
+
1674
+ // slider pointer middle border
1675
+ p.sldPtrMB.style.border = THIS.pointerThickness + 'px solid ' + THIS.pointerColor;
1676
+
1677
+ // slider pointer spacer
1678
+ p.sldPtrS.style.width = THIS.sliderSize + 'px';
1679
+ p.sldPtrS.style.height = sliderPtrSpace + 'px';
1680
+
1681
+ // the Close button
1682
+ function setBtnBorder() {
1683
+ var insetColors = THIS.insetColor.split(/\s+/);
1684
+ var outsetColor = insetColors.length < 2 ? insetColors[0] : insetColors[1] + ' ' + insetColors[0] + ' ' + insetColors[0] + ' ' + insetColors[1];
1685
+ p.btn.style.borderColor = outsetColor;
1686
+ }
1687
+
1688
+ p.btn.style.display = THIS.closable ? 'block' : 'none';
1689
+ p.btn.style.position = 'absolute';
1690
+ p.btn.style.left = THIS.padding + 'px';
1691
+ p.btn.style.bottom = THIS.padding + 'px';
1692
+ p.btn.style.padding = '0 15px';
1693
+ p.btn.style.height = THIS.buttonHeight + 'px';
1694
+ p.btn.style.border = THIS.insetWidth + 'px solid';
1695
+ setBtnBorder();
1696
+ p.btn.style.color = THIS.buttonColor;
1697
+ p.btn.style.font = '12px sans-serif';
1698
+ p.btn.style.textAlign = 'center';
1699
+ try {
1700
+ p.btn.style.cursor = 'pointer';
1701
+ } catch (eOldIE) {
1702
+ p.btn.style.cursor = 'hand';
1703
+ }
1704
+ p.btn.onmousedown = function () {
1705
+ THIS.hide();
1706
+ };
1707
+ p.btnT.style.lineHeight = THIS.buttonHeight + 'px';
1708
+ p.btnT.innerHTML = '';
1709
+ p.btnT.appendChild(document.createTextNode(THIS.closeText));
1710
+
1711
+ // place pointers
1712
+ redrawPad();
1713
+ redrawSld();
1714
+
1715
+ // If we are changing the owner without first closing the picker,
1716
+ // make sure to first deal with the old owner
1717
+ if (jsc.picker.owner && jsc.picker.owner !== THIS) {
1718
+ jsc.unsetClass(jsc.picker.owner.targetElement, THIS.activeClass);
1719
+ }
1720
+
1721
+ // Set the new picker owner
1722
+ jsc.picker.owner = THIS;
1723
+
1724
+ // The redrawPosition() method needs picker.owner to be set, that's why we call it here,
1725
+ // after setting the owner
1726
+ if (jsc.isElementType(container, 'body')) {
1727
+ jsc.redrawPosition();
1728
+ } else {
1729
+ jsc._drawPosition(THIS, 0, 0, 'relative', false);
1730
+ }
1731
+
1732
+ if (p.wrap.parentNode != container) {
1733
+ container.appendChild(p.wrap);
1734
+ }
1735
+
1736
+ jsc.setClass(THIS.targetElement, THIS.activeClass);
1737
+ }
1738
+
1739
+
1740
+ function redrawPad() {
1741
+ // redraw the pad pointer
1742
+ switch (jsc.getPadYComponent(THIS)) {
1743
+ case 's':
1744
+ var yComponent = 1;
1745
+ break;
1746
+ case 'v':
1747
+ var yComponent = 2;
1748
+ break;
1749
+ }
1750
+ var x = Math.round((THIS.hsv[0] / 360) * (THIS.width - 1));
1751
+ var y = Math.round((1 - THIS.hsv[yComponent] / 100) * (THIS.height - 1));
1752
+ var crossOuterSize = (2 * THIS.pointerBorderWidth + THIS.pointerThickness + 2 * THIS.crossSize);
1753
+ var ofs = -Math.floor(crossOuterSize / 2);
1754
+ jsc.picker.cross.style.left = (x + ofs) + 'px';
1755
+ jsc.picker.cross.style.top = (y + ofs) + 'px';
1756
+
1757
+ // redraw the slider
1758
+ switch (jsc.getSliderComponent(THIS)) {
1759
+ case 's':
1760
+ var rgb1 = HSV_RGB(THIS.hsv[0], 100, THIS.hsv[2]);
1761
+ var rgb2 = HSV_RGB(THIS.hsv[0], 0, THIS.hsv[2]);
1762
+ var color1 = 'rgb(' +
1763
+ Math.round(rgb1[0]) + ',' +
1764
+ Math.round(rgb1[1]) + ',' +
1765
+ Math.round(rgb1[2]) + ')';
1766
+ var color2 = 'rgb(' +
1767
+ Math.round(rgb2[0]) + ',' +
1768
+ Math.round(rgb2[1]) + ',' +
1769
+ Math.round(rgb2[2]) + ')';
1770
+ jsc.picker.sldGrad.draw(THIS.sliderSize, THIS.height, color1, color2);
1771
+ break;
1772
+ case 'v':
1773
+ var rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 100);
1774
+ var color1 = 'rgb(' +
1775
+ Math.round(rgb[0]) + ',' +
1776
+ Math.round(rgb[1]) + ',' +
1777
+ Math.round(rgb[2]) + ')';
1778
+ var color2 = '#000';
1779
+ jsc.picker.sldGrad.draw(THIS.sliderSize, THIS.height, color1, color2);
1780
+ break;
1781
+ }
1782
+ }
1783
+
1784
+
1785
+ function redrawSld() {
1786
+ var sldComponent = jsc.getSliderComponent(THIS);
1787
+ if (sldComponent) {
1788
+ // redraw the slider pointer
1789
+ switch (sldComponent) {
1790
+ case 's':
1791
+ var yComponent = 1;
1792
+ break;
1793
+ case 'v':
1794
+ var yComponent = 2;
1795
+ break;
1796
+ }
1797
+ var y = Math.round((1 - THIS.hsv[yComponent] / 100) * (THIS.height - 1));
1798
+ jsc.picker.sldPtrOB.style.top = (y - (2 * THIS.pointerBorderWidth + THIS.pointerThickness) - Math.floor(sliderPtrSpace / 2)) + 'px';
1799
+ }
1800
+ }
1801
+
1802
+
1803
+ function isPickerOwner() {
1804
+ return jsc.picker && jsc.picker.owner === THIS;
1805
+ }
1806
+
1807
+
1808
+ function blurValue() {
1809
+ THIS.importColor();
1810
+ }
1811
+
1812
+
1813
+ // Find the target element
1814
+ if (typeof targetElement === 'string') {
1815
+ var id = targetElement;
1816
+ var elm = document.getElementById(id);
1817
+ if (elm) {
1818
+ this.targetElement = elm;
1819
+ } else {
1820
+ jsc.warn('Could not find target element with ID \'' + id + '\'');
1821
+ }
1822
+ } else if (targetElement) {
1823
+ this.targetElement = targetElement;
1824
+ } else {
1825
+ jsc.warn('Invalid target element: \'' + targetElement + '\'');
1826
+ }
1827
+
1828
+ if (this.targetElement._jscLinkedInstance) {
1829
+ jsc.warn('Cannot link jscolor twice to the same element. Skipping.');
1830
+ return;
1831
+ }
1832
+ this.targetElement._jscLinkedInstance = this;
1833
+
1834
+ // Find the value element
1835
+ this.valueElement = jsc.fetchElement(this.valueElement);
1836
+ // Find the style element
1837
+ this.styleElement = jsc.fetchElement(this.styleElement);
1838
+
1839
+ var THIS = this;
1840
+ var container =
1841
+ this.container ?
1842
+ jsc.fetchElement(this.container) :
1843
+ document.getElementsByTagName('body')[0];
1844
+ var sliderPtrSpace = 3; // px
1845
+
1846
+ // For BUTTON elements it's important to stop them from sending the form when clicked
1847
+ // (e.g. in Safari)
1848
+ if (jsc.isElementType(this.targetElement, 'button')) {
1849
+ if (this.targetElement.onclick) {
1850
+ var origCallback = this.targetElement.onclick;
1851
+ this.targetElement.onclick = function (evt) {
1852
+ origCallback.call(this, evt);
1853
+ return false;
1854
+ };
1855
+ } else {
1856
+ this.targetElement.onclick = function () {
1857
+ return false;
1858
+ };
1859
+ }
1860
+ }
1861
+
1862
+ /*
1863
+ var elm = this.targetElement;
1864
+ do {
1865
+ // If the target element or one of its offsetParents has fixed position,
1866
+ // then use fixed positioning instead
1867
+ //
1868
+ // Note: In Firefox, getComputedStyle returns null in a hidden iframe,
1869
+ // that's why we need to check if the returned style object is non-empty
1870
+ var currStyle = jsc.getStyle(elm);
1871
+ if (currStyle && currStyle.position.toLowerCase() === 'fixed') {
1872
+ this.fixed = true;
1873
+ }
1874
+
1875
+ if (elm !== this.targetElement) {
1876
+ // attach onParentScroll so that we can recompute the picker position
1877
+ // when one of the offsetParents is scrolled
1878
+ if (!elm._jscEventsAttached) {
1879
+ jsc.attachEvent(elm, 'scroll', jsc.onParentScroll);
1880
+ elm._jscEventsAttached = true;
1881
+ }
1882
+ }
1883
+ } while ((elm = elm.offsetParent) && !jsc.isElementType(elm, 'body'));
1884
+ */
1885
+
1886
+ // valueElement
1887
+ if (this.valueElement) {
1888
+ if (jsc.isElementType(this.valueElement, 'input')) {
1889
+ var updateField = function () {
1890
+ THIS.fromString(THIS.valueElement.value, jsc.leaveValue);
1891
+ jsc.dispatchFineChange(THIS);
1892
+ };
1893
+ jsc.attachEvent(this.valueElement, 'keyup', updateField);
1894
+ jsc.attachEvent(this.valueElement, 'input', updateField);
1895
+ jsc.attachEvent(this.valueElement, 'blur', blurValue);
1896
+ this.valueElement.setAttribute('autocomplete', 'off');
1897
+ }
1898
+ }
1899
+
1900
+ // styleElement
1901
+ if (this.styleElement) {
1902
+ this.styleElement._jscOrigStyle = {
1903
+ backgroundImage: this.styleElement.style.backgroundImage,
1904
+ backgroundColor: this.styleElement.style.backgroundColor,
1905
+ color: this.styleElement.style.color
1906
+ };
1907
+ }
1908
+
1909
+ if (this.value) {
1910
+ // Try to set the color from the .value option and if unsuccessful,
1911
+ // export the current color
1912
+ this.fromString(this.value) || this.exportColor();
1913
+ } else {
1914
+ this.importColor();
1915
+ }
1916
+ }
1917
+
1918
+ };
1919
 
1920
 
1921
  //================================
1928
  // You can change what class name will be looked for by setting the property jscolor.lookupClass
1929
  // anywhere in your HTML document. To completely disable the automatic lookup, set it to null.
1930
  //
1931
+ jsc.jscolor.lookupClass = 'jscolor';
1932
 
1933
 
1934
+ jsc.jscolor.installByClassName = function (className) {
1935
+ var inputElms = document.getElementsByTagName('input');
1936
+ var buttonElms = document.getElementsByTagName('button');
1937
 
1938
+ jsc.tryInstallOnElements(inputElms, className);
1939
+ jsc.tryInstallOnElements(buttonElms, className);
1940
+ };
1941
 
1942
 
1943
+ jsc.register();
1944
 
1945
 
1946
+ return jsc.jscolor;
1947
 
1948
 
1949
+ })();
1950
+ }
admin/assets/js/media-views.js CHANGED
@@ -1,141 +1,141 @@
1
- (function($) {
2
- var l10n = wp.media.view.l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n;
3
-
4
- wp.media.view.MediaFrame.Select = wp.media.view.MediaFrame.Select.extend({
5
-
6
- bindHandlers: function() {
7
- this.on('router:create:browse', this.createRouter, this);
8
- this.on('router:render:browse', this.browseRouter, this);
9
- this.on('content:create:browse', this.browseContent, this);
10
- this.on('content:render:upload', this.uploadContent, this);
11
- this.on('toolbar:create:select', this.createSelectToolbar, this);
12
-
13
- this.on('content:create:apt', this.aptContent, this);
14
- this.on('content:render:apt', this.aptContent, this);
15
- },
16
-
17
- browseRouter: function(view) {
18
- view.set({
19
- upload: {
20
- text: l10n.uploadFilesTitle,
21
- priority: 20
22
- },
23
- browse: {
24
- text: l10n.mediaLibraryTitle,
25
- priority: 40
26
- },
27
- apt: {
28
- text: '❐ Auto Post Thumbnail',
29
- priority: 60
30
- }
31
- });
32
- },
33
-
34
- aptContent: function(content) {
35
- this.$el.removeClass('hide-toolbar');
36
- this.state().set('src', apt_media_iframe.src); //set in Dreamstime::loadCssJs with wp_localize_script()
37
- content.view = new wp.media.view.Iframe({
38
- controller: this
39
- });
40
- }
41
-
42
- });
43
-
44
- var mediaFrameSelect = wp.media.view.MediaFrame.Select;
45
-
46
- wp.media.view.MediaFrame.Post = wp.media.view.MediaFrame.Post.extend({
47
-
48
- bindHandlers: function() {
49
- var handlers, checkCounts;
50
-
51
- mediaFrameSelect.prototype.bindHandlers.apply(this, arguments);
52
-
53
- this.on('activate', this.activate, this);
54
-
55
- // Only bother checking media type counts if one of the counts is zero
56
- checkCounts = _.find(this.counts, function(type) {
57
- return type.count === 0;
58
- });
59
-
60
- if( typeof checkCounts !== 'undefined' ) {
61
- this.listenTo(wp.media.model.Attachments.all, 'change:type', this.mediaTypeCounts);
62
- }
63
-
64
- this.on('menu:create:gallery', this.createMenu, this);
65
- this.on('menu:create:playlist', this.createMenu, this);
66
- this.on('menu:create:video-playlist', this.createMenu, this);
67
- this.on('toolbar:create:main-insert', this.createToolbar, this);
68
- this.on('toolbar:create:main-gallery', this.createToolbar, this);
69
- this.on('toolbar:create:main-playlist', this.createToolbar, this);
70
- this.on('toolbar:create:main-video-playlist', this.createToolbar, this);
71
- this.on('toolbar:create:featured-image', this.featuredImageToolbar, this);
72
- this.on('toolbar:create:main-embed', this.mainEmbedToolbar, this);
73
-
74
- handlers = {
75
- menu: {
76
- 'default': 'mainMenu',
77
- 'gallery': 'galleryMenu',
78
- 'playlist': 'playlistMenu',
79
- 'video-playlist': 'videoPlaylistMenu'
80
- },
81
-
82
- content: {
83
- 'embed': 'embedContent',
84
- 'edit-image': 'editImageContent',
85
- 'edit-selection': 'editSelectionContent'
86
- },
87
-
88
- toolbar: {
89
- 'main-insert': 'mainInsertToolbar',
90
- 'main-gallery': 'mainGalleryToolbar',
91
- 'gallery-edit': 'galleryEditToolbar',
92
- 'gallery-add': 'galleryAddToolbar',
93
- 'main-playlist': 'mainPlaylistToolbar',
94
- 'playlist-edit': 'playlistEditToolbar',
95
- 'playlist-add': 'playlistAddToolbar',
96
- 'main-video-playlist': 'mainVideoPlaylistToolbar',
97
- 'video-playlist-edit': 'videoPlaylistEditToolbar',
98
- 'video-playlist-add': 'videoPlaylistAddToolbar'
99
- }
100
- };
101
-
102
- _.each(handlers, function(regionHandlers, region) {
103
- _.each(regionHandlers, function(callback, handler) {
104
- this.on(region + ':render:' + handler, this[callback], this);
105
- }, this);
106
- }, this);
107
- },
108
-
109
- browseRouter: function(view) {
110
- view.set({
111
- upload: {
112
- text: l10n.uploadFilesTitle,
113
- priority: 20
114
- },
115
- browse: {
116
- text: l10n.mediaLibraryTitle,
117
- priority: 40
118
- },
119
- apt: {
120
- text: '❐ Auto Post Thumbnail',
121
- priority: 60
122
- }
123
- });
124
- },
125
-
126
- aptContent: function(content) {
127
- this.$el.removeClass('hide-toolbar');
128
- this.state().set('src', apt_media_iframe.src); //set in Dreamstime::loadCssJs with wp_localize_script()
129
- content.view = new wp.media.view.Iframe({
130
- controller: this
131
- });
132
- }
133
-
134
- });
135
 
136
  }(jQuery));
137
 
138
- window.cvapt_media_refresh = window.cvapt_media_refresh || function() {
139
- wp.media.frame.content.mode('browse');
140
- wp.media.frame.content.get().collection.props.set({ignore: (+new Date())});
141
  }
1
+ (function ($) {
2
+ var l10n = wp.media.view.l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n;
3
+
4
+ wp.media.view.MediaFrame.Select = wp.media.view.MediaFrame.Select.extend({
5
+
6
+ bindHandlers: function () {
7
+ this.on('router:create:browse', this.createRouter, this);
8
+ this.on('router:render:browse', this.browseRouter, this);
9
+ this.on('content:create:browse', this.browseContent, this);
10
+ this.on('content:render:upload', this.uploadContent, this);
11
+ this.on('toolbar:create:select', this.createSelectToolbar, this);
12
+
13
+ this.on('content:create:apt', this.aptContent, this);
14
+ this.on('content:render:apt', this.aptContent, this);
15
+ },
16
+
17
+ browseRouter: function (view) {
18
+ view.set({
19
+ upload: {
20
+ text: l10n.uploadFilesTitle,
21
+ priority: 20
22
+ },
23
+ browse: {
24
+ text: l10n.mediaLibraryTitle,
25
+ priority: 40
26
+ },
27
+ apt: {
28
+ text: '❐ Auto Featured Image',
29
+ priority: 60
30
+ }
31
+ });
32
+ },
33
+
34
+ aptContent: function (content) {
35
+ this.$el.removeClass('hide-toolbar');
36
+ this.state().set('src', apt_media_iframe.src); //set in Dreamstime::loadCssJs with wp_localize_script()
37
+ content.view = new wp.media.view.Iframe({
38
+ controller: this
39
+ });
40
+ }
41
+
42
+ });
43
+
44
+ var mediaFrameSelect = wp.media.view.MediaFrame.Select;
45
+
46
+ wp.media.view.MediaFrame.Post = wp.media.view.MediaFrame.Post.extend({
47
+
48
+ bindHandlers: function () {
49
+ var handlers, checkCounts;
50
+
51
+ mediaFrameSelect.prototype.bindHandlers.apply(this, arguments);
52
+
53
+ this.on('activate', this.activate, this);
54
+
55
+ // Only bother checking media type counts if one of the counts is zero
56
+ checkCounts = _.find(this.counts, function (type) {
57
+ return type.count === 0;
58
+ });
59
+
60
+ if (typeof checkCounts !== 'undefined') {
61
+ this.listenTo(wp.media.model.Attachments.all, 'change:type', this.mediaTypeCounts);
62
+ }
63
+
64
+ this.on('menu:create:gallery', this.createMenu, this);
65
+ this.on('menu:create:playlist', this.createMenu, this);
66
+ this.on('menu:create:video-playlist', this.createMenu, this);
67
+ this.on('toolbar:create:main-insert', this.createToolbar, this);
68
+ this.on('toolbar:create:main-gallery', this.createToolbar, this);
69
+ this.on('toolbar:create:main-playlist', this.createToolbar, this);
70
+ this.on('toolbar:create:main-video-playlist', this.createToolbar, this);
71
+ this.on('toolbar:create:featured-image', this.featuredImageToolbar, this);
72
+ this.on('toolbar:create:main-embed', this.mainEmbedToolbar, this);
73
+
74
+ handlers = {
75
+ menu: {
76
+ 'default': 'mainMenu',
77
+ 'gallery': 'galleryMenu',
78
+ 'playlist': 'playlistMenu',
79
+ 'video-playlist': 'videoPlaylistMenu'
80
+ },
81
+
82
+ content: {
83
+ 'embed': 'embedContent',
84
+ 'edit-image': 'editImageContent',
85
+ 'edit-selection': 'editSelectionContent'
86
+ },
87
+
88
+ toolbar: {
89
+ 'main-insert': 'mainInsertToolbar',
90
+ 'main-gallery': 'mainGalleryToolbar',
91
+ 'gallery-edit': 'galleryEditToolbar',
92
+ 'gallery-add': 'galleryAddToolbar',
93
+ 'main-playlist': 'mainPlaylistToolbar',
94
+ 'playlist-edit': 'playlistEditToolbar',
95
+ 'playlist-add': 'playlistAddToolbar',
96
+ 'main-video-playlist': 'mainVideoPlaylistToolbar',
97
+ 'video-playlist-edit': 'videoPlaylistEditToolbar',
98
+ 'video-playlist-add': 'videoPlaylistAddToolbar'
99
+ }
100
+ };
101
+
102
+ _.each(handlers, function (regionHandlers, region) {
103
+ _.each(regionHandlers, function (callback, handler) {
104
+ this.on(region + ':render:' + handler, this[callback], this);
105
+ }, this);
106
+ }, this);
107
+ },
108
+
109
+ browseRouter: function (view) {
110
+ view.set({
111
+ upload: {
112
+ text: l10n.uploadFilesTitle,
113
+ priority: 20
114
+ },
115
+ browse: {
116
+ text: l10n.mediaLibraryTitle,
117
+ priority: 40
118
+ },
119
+ apt: {
120
+ text: '❐ Auto Featured Image',
121
+ priority: 60
122
+ }
123
+ });
124
+ },
125
+
126
+ aptContent: function (content) {
127
+ this.$el.removeClass('hide-toolbar');
128
+ this.state().set('src', apt_media_iframe.src); //set in Dreamstime::loadCssJs with wp_localize_script()
129
+ content.view = new wp.media.view.Iframe({
130
+ controller: this
131
+ });
132
+ }
133
+
134
+ });
135
 
136
  }(jQuery));
137
 
138
+ window.cvapt_media_refresh = window.cvapt_media_refresh || function () {
139
+ wp.media.frame.content.mode('browse');
140
+ wp.media.frame.content.get().collection.props.set({ignore: (+new Date())});
141
  }
admin/assets/js/settings.js CHANGED
@@ -1,5 +1,5 @@
1
- (function($){
2
- $(document).ready(function(){
3
  $('input#wapt_text-line-spacing').attr('step', '0.1');
4
  $('input#wapt_text-line-spacing').attr('min', '0');
5
 
1
+ (function ($) {
2
+ $(document).ready(function () {
3
  $('input#wapt_text-line-spacing').attr('step', '0.1');
4
  $('input#wapt_text-line-spacing').attr('min', '0');
5
 
admin/assets/js/upload-font.js CHANGED
@@ -1,46 +1,46 @@
1
- jQuery(function ( $ ) {
2
 
3
- var $element = $(".factory-bootstrap-426 .factory-wapt-fonts");
4
  var upload_button = $('#wapt-upload-button');
5
  var upload_loader = $('#wapt-upload-loader');
6
 
7
- $element.factoryBootstrap426_dropdownControl();
8
 
9
- upload_button.on('click', function(e){
10
  e.preventDefault();
11
  $('#wapt-font-file').trigger('click');
12
  });
13
 
14
- $('#wapt-font-file').on('change', function(event){
15
  upload_button.attr('disabled', 'disabled');
16
  upload_loader.toggleClass('wapt-loader-invisible');
17
  files = this.files;
18
  //event.stopPropagation(); // остановка всех текущих JS событий
19
 
20
  // ничего не делаем если files пустой
21
- if( typeof files == 'undefined' || files.length < 1) return;
22
 
23
  var data = new FormData();
24
 
25
  // заполняем объект данных файлами в подходящем для отправки формате
26
- $.each( files, function( key, value ){
27
- data.append( key, value );
28
  });
29
 
30
- data.append( 'action', 'wapt_upload_font' );
31
- data.append( 'wpnonce', wapt_upload_font.nonce );
32
- data.append( 'is_font_upload', 1 );
33
 
34
  $.ajax({
35
- url : ajaxurl,
36
- type : 'POST',
37
- data : data,
38
- cache : false,
39
- dataType : 'json',
40
- processData : false,
41
- contentType : false,
42
- success : function( respond, status, jqXHR ){
43
- if( typeof respond.error === 'undefined' ){
44
  $('#wapt-font-file').val([]);
45
  console.log(respond.files);
46
  file = respond.files;
@@ -48,16 +48,15 @@ jQuery(function ( $ ) {
48
  .attr('value', file.name)
49
  .text(file.name)
50
  .appendTo($element);
51
- }
52
- else {
53
- alert('ERROR: ' + respond.error );
54
- console.log('ERROR: ' + respond.error );
55
  }
56
  },
57
- error: function( jqXHR, status, errorThrown ){
58
- console.log( 'AJAX error: ' + status, jqXHR );
59
  },
60
- complete: function( ){
61
  upload_button.removeAttr('disabled');
62
  upload_loader.toggleClass('wapt-loader-invisible');
63
  }
1
+ jQuery(function ($) {
2
 
3
+ var $element = $(".factory-bootstrap-430 .factory-wapt-fonts");
4
  var upload_button = $('#wapt-upload-button');
5
  var upload_loader = $('#wapt-upload-loader');
6
 
7
+ $element.factoryBootstrap430_dropdownControl();
8
 
9
+ upload_button.on('click', function (e) {
10
  e.preventDefault();
11
  $('#wapt-font-file').trigger('click');
12
  });
13
 
14
+ $('#wapt-font-file').on('change', function (event) {
15
  upload_button.attr('disabled', 'disabled');
16
  upload_loader.toggleClass('wapt-loader-invisible');
17
  files = this.files;
18
  //event.stopPropagation(); // остановка всех текущих JS событий
19
 
20
  // ничего не делаем если files пустой
21
+ if (typeof files == 'undefined' || files.length < 1) return;
22
 
23
  var data = new FormData();
24
 
25
  // заполняем объект данных файлами в подходящем для отправки формате
26
+ $.each(files, function (key, value) {
27
+ data.append(key, value);
28
  });
29
 
30
+ data.append('action', 'wapt_upload_font');
31
+ data.append('wpnonce', wapt_upload_font.nonce);
32
+ data.append('is_font_upload', 1);
33
 
34
  $.ajax({
35
+ url: ajaxurl,
36
+ type: 'POST',
37
+ data: data,
38
+ cache: false,
39
+ dataType: 'json',
40
+ processData: false,
41
+ contentType: false,
42
+ success: function (respond, status, jqXHR) {
43
+ if (typeof respond.error === 'undefined') {
44
  $('#wapt-font-file').val([]);
45
  console.log(respond.files);
46
  file = respond.files;
48
  .attr('value', file.name)
49
  .text(file.name)
50
  .appendTo($element);
51
+ } else {
52
+ alert('ERROR: ' + respond.error);
53
+ console.log('ERROR: ' + respond.error);
 
54
  }
55
  },
56
+ error: function (jqXHR, status, errorThrown) {
57
+ console.log('AJAX error: ' + status, jqXHR);
58
  },
59
+ complete: function () {
60
  upload_button.removeAttr('disabled');
61
  upload_loader.toggleClass('wapt-loader-invisible');
62
  }
admin/class-wapt-activation.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
- * @see Wbcr_Factory425_Activator
8
  *
9
  * @version 1.0.1
10
  */
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WAPT_Activation extends Wbcr_Factory425_Activator {
18
 
19
  /**
20
  * Method is executed during the activation of the plugin.
@@ -23,12 +23,14 @@ class WAPT_Activation extends Wbcr_Factory425_Activator {
23
  */
24
  public function activate() {
25
  // Code to be executed during plugin activation
26
- $limit = array(
27
- 'count' => 10,
28
  'expires' => time(),
29
  );
30
- $google_limit = WAPT_Plugin::app()->getOption('google_limit');
31
- if(!$google_limit) WAPT_Plugin::app()->updateOption('google_limit', $limit);
 
 
32
 
33
  //update_option( $this->plugin->getOptionName( 'whats_new_v360' ), 1 );
34
  }
@@ -39,7 +41,7 @@ class WAPT_Activation extends Wbcr_Factory425_Activator {
39
  * @since 1.0.0
40
  */
41
  public function deactivate() {
42
- $apt_ds = WAPT_Plugin::app()->getOption( 'delete_settings', false);
43
 
44
  if ( $apt_ds ) {
45
  // remove plugin options
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
+ * @see Wbcr_Factory429_Activator
8
  *
9
  * @version 1.0.1
10
  */
14
  exit;
15
  }
16
 
17
+ class WAPT_Activation extends Wbcr_Factory429_Activator {
18
 
19
  /**
20
  * Method is executed during the activation of the plugin.
23
  */
24
  public function activate() {
25
  // Code to be executed during plugin activation
26
+ $limit = array(
27
+ 'count' => 10,
28
  'expires' => time(),
29
  );
30
+ $google_limit = WAPT_Plugin::app()->getOption( 'google_limit' );
31
+ if ( ! $google_limit ) {
32
+ WAPT_Plugin::app()->updateOption( 'google_limit', $limit );
33
+ }
34
 
35
  //update_option( $this->plugin->getOptionName( 'whats_new_v360' ), 1 );
36
  }
41
  * @since 1.0.0
42
  */
43
  public function deactivate() {
44
+ $apt_ds = WAPT_Plugin::app()->getOption( 'delete_settings', false );
45
 
46
  if ( $apt_ds ) {
47
  // remove plugin options
admin/class-wapt-page.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
- * @see Wbcr_FactoryPages425_AdminPage
8
  *
9
  * @version 1.0.0
10
  */
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WAPT_Page extends Wbcr_FactoryPages425_AdminPage {
18
 
19
  /**
20
  * Name of the template to get content of. It will be based on plugins /admin/views/ dir.
@@ -30,8 +30,10 @@ class WAPT_Page extends Wbcr_FactoryPages425_AdminPage {
30
  *
31
  * @return mixed Content of the page
32
  */
33
- public function render ($name = '') {
34
- if($name == '') $name = $this->template_name;
 
 
35
  ob_start();
36
  if ( is_callable( $name ) ) {
37
  echo call_user_func( $name );
@@ -79,8 +81,7 @@ class WAPT_Page extends Wbcr_FactoryPages425_AdminPage {
79
  /**
80
  * Show rendered template - $template_name
81
  */
82
- public function indexAction()
83
- {
84
  echo $this->render();
85
  }
86
 
4
  *
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 02.12.2018, Webcraftic
7
+ * @see Wbcr_FactoryPages429_AdminPage
8
  *
9
  * @version 1.0.0
10
  */
14
  exit;
15
  }
16
 
17
+ class WAPT_Page extends Wbcr_FactoryPages429_AdminPage {
18
 
19
  /**
20
  * Name of the template to get content of. It will be based on plugins /admin/views/ dir.
30
  *
31
  * @return mixed Content of the page
32
  */
33
+ public function render( $name = '' ) {
34
+ if ( $name == '' ) {
35
+ $name = $this->template_name;
36
+ }
37
  ob_start();
38
  if ( is_callable( $name ) ) {
39
  echo call_user_func( $name );
81
  /**
82
  * Show rendered template - $template_name
83
  */
84
+ public function indexAction() {
 
85
  echo $this->render();
86
  }
87
 
admin/pages/about.php CHANGED
@@ -40,10 +40,10 @@ class WAPT_About extends WAPT_Page {
40
  * @param WAPT_Plugin $plugin
41
  */
42
  public function __construct( $plugin ) {
43
- $this->id = "wapt_about";
44
- $this->menu_target= $plugin->getPrefix()."generate-".$plugin->getPluginName();
45
- $this->page_title = __( 'About APT', 'apt' );
46
- $this->menu_title = __( 'About', 'apt' );
47
  $this->template_name = "about";
48
 
49
  parent::__construct( $plugin );
40
  * @param WAPT_Plugin $plugin
41
  */
42
  public function __construct( $plugin ) {
43
+ $this->id = "wapt_about";
44
+ $this->menu_target = $plugin->getPrefix() . "generate-" . $plugin->getPluginName();
45
+ $this->page_title = __( 'About APT', 'apt' );
46
+ $this->menu_title = __( 'About', 'apt' );
47
  $this->template_name = "about";
48
 
49
  parent::__construct( $plugin );
admin/pages/generate.php CHANGED
@@ -20,7 +20,7 @@ class WAPT_Generate extends WAPT_Page {
20
  * Mainly used to navigate between pages.
21
  *
22
  * @since 1.0.0
23
- * @see FactoryPages425_AdminPage
24
  *
25
  * @var string
26
  */
@@ -95,17 +95,33 @@ class WAPT_Generate extends WAPT_Page {
95
  /**
96
  * @param WAPT_Plugin $plugin
97
  */
98
- public function __construct( $plugin ) {
99
- $this->id = $plugin->getPrefix()."generate";
100
- $this->menu_title = __( 'Auto Post Thumbnail', 'apt' );
101
- $this->menu_sub_title = __( 'Generate featured images', 'apt' );;
102
- $this->menu_icon = WAPT_PLUGIN_URL . '/admin/assets/img/apt.png';
103
- $this->template_name = "main";
104
 
105
  parent::__construct( $plugin );
106
 
107
  $this->plugin = $plugin;
108
  }
109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
 
111
  }
20
  * Mainly used to navigate between pages.
21
  *
22
  * @since 1.0.0
23
+ * @see FactoryPages429_AdminPage
24
  *
25
  * @var string
26
  */
95
  /**
96
  * @param WAPT_Plugin $plugin
97
  */
98
+ public function __construct( $plugin ) {
99
+ $this->id = $plugin->getPrefix() . "generate";
100
+ $this->menu_title = __( 'Auto Featured Image', 'apt' );
101
+ $this->menu_sub_title = __( 'Generate featured images', 'apt' );
102
+ $this->menu_icon = WAPT_PLUGIN_URL . '/admin/assets/img/apt.png';
103
+ $this->template_name = "main";
104
 
105
  parent::__construct( $plugin );
106
 
107
  $this->plugin = $plugin;
108
  }
109
 
110
+ /**
111
+ * Requests assets (js and css) for the page.
112
+ *
113
+ * @return void
114
+ * @since 1.0.0
115
+ * @see FactoryPages429_AdminPage
116
+ *
117
+ */
118
+ public function assets( $scripts, $styles ) {
119
+ parent::assets( $scripts, $styles );
120
+
121
+ wp_enqueue_style( 'jquery-ui-genpostthumbs', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery-ui.min.css', [], '1.7.2' );
122
+ wp_enqueue_script( 'jquery-progress', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery-ui.progressbar.min.js', [], false, true );
123
+
124
+
125
+ }
126
 
127
  }
admin/pages/license.php CHANGED
@@ -1,6 +1,9 @@
1
  <?php
2
 
3
  // Exit if accessed directly
 
 
 
4
  if ( ! defined( 'ABSPATH' ) ) {
5
  exit;
6
  }
@@ -52,7 +55,7 @@ class WAPT_License extends WAPT_Page {
52
 
53
  /**
54
  * @since 2.0.7
55
- * @var \WBCR\Factory_425\Premium\Provider
56
  */
57
  protected $premium;
58
 
@@ -70,7 +73,7 @@ class WAPT_License extends WAPT_Page {
70
 
71
  /**
72
  * @since 2.0.7
73
- * @var \WBCR\Factory_425\Premium\Interfaces\License
74
  */
75
  protected $premium_license;
76
 
@@ -81,17 +84,17 @@ class WAPT_License extends WAPT_Page {
81
  * {@inheritdoc}
82
  * @param WAPT_Plugin $plugin
83
  */
84
- public function __construct ( $plugin ) {
85
  $this->plugin = $plugin;
86
 
87
  parent::__construct( $plugin );
88
 
89
- $this->id = 'license';
90
- $this->menu_title = __( 'License', 'insert-php' );
91
- $this->page_title = __( 'License of APT', 'apt' );
92
  $this->template_name = "license";
93
- $this->menu_target= $plugin->getPrefix()."generate-".$plugin->getPluginName();
94
- $this->capabilitiy = "manage_options";
95
 
96
  $this->premium = WAPT_Plugin::app()->premium;
97
  $this->is_premium = $this->premium->is_activate();
@@ -103,7 +106,7 @@ class WAPT_License extends WAPT_Page {
103
  /**
104
  * [MAGIC] Magic method that configures assets for a page.
105
  */
106
- public function assets ( $scripts, $styles ) {
107
  parent::assets( $scripts, $styles );
108
 
109
  $this->styles->add( WAPT_PLUGIN_URL . '/admin/assets/css/license-manager.css' );
@@ -122,14 +125,14 @@ class WAPT_License extends WAPT_Page {
122
  *
123
  * @return string Before content.
124
  */
125
- protected function get_plan_description () {
126
  return '';
127
  }
128
 
129
  /**
130
  * @return string
131
  */
132
- protected function get_hidden_license_key () {
133
  if ( ! $this->is_premium ) {
134
  return '';
135
  }
@@ -140,7 +143,7 @@ class WAPT_License extends WAPT_Page {
140
  /**
141
  * @return string
142
  */
143
- protected function get_plan () {
144
  if ( ! $this->is_premium ) {
145
  return 'free';
146
  }
@@ -151,14 +154,14 @@ class WAPT_License extends WAPT_Page {
151
  /**
152
  * @return mixed
153
  */
154
- protected function get_expiration_days () {
155
  return $this->premium_license->get_expiration_time( 'days' );
156
  }
157
 
158
  /**
159
  * @return string
160
  */
161
- protected function get_billing_cycle_readable () {
162
  if ( ! $this->is_premium ) {
163
  return '';
164
  }
@@ -184,7 +187,7 @@ class WAPT_License extends WAPT_Page {
184
  *
185
  * @return string
186
  */
187
- protected function get_license_type () {
188
  if ( ! $this->is_premium ) {
189
  return 'free';
190
  }
1
  <?php
2
 
3
  // Exit if accessed directly
4
+ use WBCR\Factory_429\Premium\Interfaces\License;
5
+ use WBCR\Factory_429\Premium\Provider;
6
+
7
  if ( ! defined( 'ABSPATH' ) ) {
8
  exit;
9
  }
55
 
56
  /**
57
  * @since 2.0.7
58
+ * @var Provider
59
  */
60
  protected $premium;
61
 
73
 
74
  /**
75
  * @since 2.0.7
76
+ * @var License
77
  */
78
  protected $premium_license;
79
 
84
  * {@inheritdoc}
85
  * @param WAPT_Plugin $plugin
86
  */
87
+ public function __construct( $plugin ) {
88
  $this->plugin = $plugin;
89
 
90
  parent::__construct( $plugin );
91
 
92
+ $this->id = 'license';
93
+ $this->menu_title = __( 'License', 'insert-php' );
94
+ $this->page_title = __( 'License of APT', 'apt' );
95
  $this->template_name = "license";
96
+ $this->menu_target = $plugin->getPrefix() . "generate-" . $plugin->getPluginName();
97
+ $this->capabilitiy = "manage_options";
98
 
99
  $this->premium = WAPT_Plugin::app()->premium;
100
  $this->is_premium = $this->premium->is_activate();
106
  /**
107
  * [MAGIC] Magic method that configures assets for a page.
108
  */
109
+ public function assets( $scripts, $styles ) {
110
  parent::assets( $scripts, $styles );
111
 
112
  $this->styles->add( WAPT_PLUGIN_URL . '/admin/assets/css/license-manager.css' );
125
  *
126
  * @return string Before content.
127
  */
128
+ protected function get_plan_description() {
129
  return '';
130
  }
131
 
132
  /**
133
  * @return string
134
  */
135
+ protected function get_hidden_license_key() {
136
  if ( ! $this->is_premium ) {
137
  return '';
138
  }
143
  /**
144
  * @return string
145
  */
146
+ protected function get_plan() {
147
  if ( ! $this->is_premium ) {
148
  return 'free';
149
  }
154
  /**
155
  * @return mixed
156
  */
157
+ protected function get_expiration_days() {
158
  return $this->premium_license->get_expiration_time( 'days' );
159
  }
160
 
161
  /**
162
  * @return string
163
  */
164
+ protected function get_billing_cycle_readable() {
165
  if ( ! $this->is_premium ) {
166
  return '';
167
  }
187
  *
188
  * @return string
189
  */
190
+ protected function get_license_type() {
191
  if ( ! $this->is_premium ) {
192
  return 'free';
193
  }
admin/pages/settings.php CHANGED
@@ -41,14 +41,14 @@ class WAPT_Settings extends WAPT_Page {
41
  * @param WAPT_Plugin $plugin
42
  */
43
  public function __construct( $plugin ) {
44
- $this->id = "wapt_settings";
45
  $this->menu_target = $plugin->getPrefix() . "generate-" . $plugin->getPluginName();
46
  $this->page_title = __( 'Settings of APT', 'apt' );
47
  $this->menu_title = __( 'Settings', 'apt' );
48
  $this->capabilitiy = "manage_options";
49
  $this->template_name = "settings";
50
 
51
- add_action( 'wbcr_factory_forms_423_register_controls', function(){
52
  $colorControls = array(
53
  [
54
  'type' => 'wapt-color',
@@ -67,7 +67,7 @@ class WAPT_Settings extends WAPT_Page {
67
  ],
68
  );
69
  $this->plugin->forms->registerControls( $colorControls );
70
- });
71
 
72
  $this->plugin = $plugin;
73
 
@@ -77,8 +77,8 @@ class WAPT_Settings extends WAPT_Page {
77
  /**
78
  * Returns options for the Basic Settings screen.
79
  *
80
- * @since 3.6.2
81
  * @return array
 
82
  */
83
  public function getOptions_general() {
84
 
@@ -134,19 +134,19 @@ class WAPT_Settings extends WAPT_Page {
134
  /**
135
  * Returns options for the Basic Settings screen.
136
  *
137
- * @since 3.6.2
138
  * @return array
 
139
  */
140
  public function getOptions_image() {
141
 
142
  $is_premium = AutoPostThumbnails::instance()->is_premium();
143
- $pro = $is_premium ? '' : "<br><span class='wapt-icon-pro wapt-icon-pro-span'>PRO</span>";
144
 
145
  $options = [];
146
 
147
  $options[] = [
148
  'type' => 'html',
149
- 'html' => '<h3 style="margin-left:0">'.__( 'Background settings', 'apt' ).'</h3>'
150
  ];
151
 
152
  $options[] = [
@@ -154,17 +154,17 @@ class WAPT_Settings extends WAPT_Page {
154
  ];
155
 
156
  $options[] = [
157
- 'type' => 'dropdown',
158
- 'way' => 'buttons',
159
- 'name' => 'background-type',
160
- 'data' => [
161
  [ 'color', __( 'Color', 'apt' ) ],
162
  [ 'image', __( 'Image', 'apt' ) ],
163
  ],
164
- 'default' => 'color',
165
- 'title' => __( 'Background type', 'apt' ),
166
- 'hint' => __( 'Select the background type for the featured image', 'apt' ),
167
- 'cssClass' => ( !$is_premium) ? [ 'wapt-icon-pro' ] : [],
168
  ];
169
 
170
  $options[] = [
@@ -175,7 +175,7 @@ class WAPT_Settings extends WAPT_Page {
175
  'hint' => __( 'Set the background color for the featured image', 'apt' )
176
  ];
177
 
178
- if($is_premium) {
179
  $options[] = [
180
  'type' => 'wapt-mediabutton',
181
  'name' => 'background-image',
@@ -201,7 +201,7 @@ class WAPT_Settings extends WAPT_Page {
201
  //----------------------------------------------------------------------
202
  $options[] = [
203
  'type' => 'html',
204
- 'html' => '<h3 style="margin-left:0">'.__( 'Font settings', 'apt' ).'</h3>'
205
  ];
206
 
207
  $options[] = [
@@ -209,13 +209,13 @@ class WAPT_Settings extends WAPT_Page {
209
  ];
210
 
211
  $options[] = [
212
- 'type' => 'wapt-fonts',
213
- 'name' => 'font',
214
- 'data' => AutoPostThumbnails::get_fonts(),
215
- 'empty' => '',
216
- 'title' => __( 'Font name', 'apt' ),
217
- 'hint' => __( 'Select a font for the text in the featured image', 'apt' ),
218
- 'cssClass' => ( !$is_premium) ? [ 'wapt-icon-pro' ] : [],
219
  ];
220
 
221
  $options[] = [
@@ -229,16 +229,16 @@ class WAPT_Settings extends WAPT_Page {
229
  ];
230
 
231
  $options[] = [
232
- 'type' => 'wapt-color',
233
- 'name' => 'font-color',
234
- 'title' => __( 'Font color', 'apt' ),
235
- 'hint' => __( 'Set the font color for the featured image', 'apt' )
236
  ];
237
 
238
  //----------------------------------------------------------------------
239
  $options[] = [
240
  'type' => 'html',
241
- 'html' => '<h3 style="margin-left:0">'.__( 'Text settings', 'apt' ).'</h3>'
242
  ];
243
 
244
  $options[] = [
@@ -246,12 +246,12 @@ class WAPT_Settings extends WAPT_Page {
246
  ];
247
 
248
  $options[] = [
249
- 'type' => 'checkbox',
250
- 'way' => 'buttons',
251
- 'name' => 'shadow',
252
- 'default' => '0',
253
- 'title' => __( 'Text shadow', 'apt' ),
254
- 'hint' => __( 'Use text shadow?', 'apt' ),
255
  'eventsOn' => [
256
  'show' => '.factory-control-shadow-color'
257
  ],
@@ -261,10 +261,10 @@ class WAPT_Settings extends WAPT_Page {
261
  ];
262
 
263
  $options[] = [
264
- 'type' => 'wapt-color',
265
- 'name' => 'shadow-color',
266
- 'title' => __( 'Shadow color', 'apt' ),
267
- 'hint' => __( 'Set the shadow color for the text', 'apt' )
268
  ];
269
 
270
  $options[] = [
@@ -295,7 +295,7 @@ class WAPT_Settings extends WAPT_Page {
295
  'type' => 'integer',
296
  'way' => 'text',
297
  'name' => 'text-line-spacing',
298
- 'range' => array(0,3),
299
  'default' => 1.5,
300
  'title' => __( 'Line spacing', 'apt' ),
301
  'hint' => __( 'Set the line spacing', 'apt' )
@@ -304,7 +304,7 @@ class WAPT_Settings extends WAPT_Page {
304
  //----------------------------------------------------------------------
305
  $options[] = [
306
  'type' => 'html',
307
- 'html' => '<h3 style="margin-left:0">'.__( 'Alignment', 'apt' ).'</h3>'
308
  ];
309
 
310
  $options[] = [
@@ -312,39 +312,39 @@ class WAPT_Settings extends WAPT_Page {
312
  ];
313
 
314
  $options[] = [
315
- 'type' => 'dropdown',
316
- 'way' => 'buttons',
317
- 'name' => 'text-align-horizontal',
318
- 'data' => [
319
  [ 'left', __( 'Left', 'apt' ) ],
320
  [ 'center', __( 'Center', 'apt' ) ],
321
  [ 'right', __( 'Right', 'apt' ) ],
322
  ],
323
- 'default' => 'center',
324
- 'title' => __( 'Horizontal text alignment', 'apt' ).$pro,
325
- 'hint' => __( 'Select how to horizontally align the text on the image', 'apt' ),
326
  'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
327
  ];
328
 
329
  $options[] = [
330
- 'type' => 'dropdown',
331
- 'way' => 'buttons',
332
- 'name' => 'text-align-vertical',
333
- 'data' => [
334
  [ 'top', __( 'Top', 'apt' ) ],
335
  [ 'center', __( 'Center', 'apt' ) ],
336
  [ 'bottom', __( 'Bottom', 'apt' ) ],
337
  ],
338
- 'default' => 'center',
339
- 'title' => __( 'Vertical text alignment', 'apt' ).$pro,
340
- 'hint' => __( 'Select how to vertically align the text on the image', 'apt' ),
341
  'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
342
  ];
343
 
344
  //----------------------------------------------------------------------
345
  $options[] = [
346
  'type' => 'html',
347
- 'html' => '<h3 style="margin-left:0">'.__( 'Padding', 'apt' ).'</h3>'
348
  ];
349
 
350
  $options[] = [
@@ -352,31 +352,31 @@ class WAPT_Settings extends WAPT_Page {
352
  ];
353
 
354
  $options[] = [
355
- 'type' => 'integer',
356
- 'way' => 'text',
357
- 'name' => 'text-padding-tb',
358
- 'units' => __( 'px', 'apt' ),
359
- 'default' => 15,
360
- 'title' => __( 'Top/bottom text padding', 'apt' ).$pro,
361
- 'hint' => __( 'Padding at the top and bottom of the text', 'apt' ),
362
- 'cssClass' => ( !$is_premium) ? [ 'wapt-icon-pro' ] : [],
363
  ];
364
 
365
  $options[] = [
366
- 'type' => 'integer',
367
- 'way' => 'text',
368
- 'name' => 'text-padding-lr',
369
- 'units' => __( 'px', 'apt' ),
370
- 'default' => 15,
371
- 'title' => __( 'Left/right text padding', 'apt' ).$pro,
372
- 'hint' => __( 'Padding at the left and right of the text', 'apt' ),
373
- 'cssClass' => ( !$is_premium) ? [ 'wapt-icon-pro' ] : [],
374
  ];
375
 
376
  //----------------------------------------------------------------------
377
  $options[] = [
378
  'type' => 'html',
379
- 'html' => '<h3 style="margin-left:0">'.__( 'Addition of text', 'apt' ).'</h3>'
380
  ];
381
 
382
  $options[] = [
@@ -384,23 +384,23 @@ class WAPT_Settings extends WAPT_Page {
384
  ];
385
 
386
  $options[] = [
387
- 'type' => 'textbox',
388
- 'name' => 'before-text',
389
- 'default' => '',
390
- 'title' => __( 'String before text', 'apt' ).$pro,
391
- 'hint' => __( 'Additional string before text. For a line break, use <b>[br]</b>', 'apt' ),
392
- 'cssClass' => ( !$is_premium) ? [ 'wapt-icon-pro' ] : [],
393
- 'htmlAttrs' => ( !$is_premium ) ? [ 'disabled' => 'disabled' ] : [],
394
  ];
395
 
396
  $options[] = [
397
- 'type' => 'textbox',
398
- 'name' => 'after-text',
399
- 'default' => '',
400
- 'title' => __( 'String after text', 'apt' ).$pro,
401
- 'hint' => __( 'Additional string after text. For a line break, use <b>[br]</b>', 'apt' ),
402
- 'cssClass' => ( !$is_premium) ? [ 'wapt-icon-pro' ] : [],
403
- 'htmlAttrs' => ( !$is_premium ) ? [ 'disabled' => 'disabled' ] : [],
404
  ];
405
 
406
  return $options;
@@ -409,8 +409,8 @@ class WAPT_Settings extends WAPT_Page {
409
  /**
410
  * Returns options for the Basic Settings screen.
411
  *
412
- * @since 3.6.2
413
  * @return array
 
414
  */
415
  public function getOptions_api() {
416
 
@@ -432,8 +432,8 @@ class WAPT_Settings extends WAPT_Page {
432
  ];
433
 
434
  $options[] = [
435
- 'type' => 'hidden',
436
- 'name' => 'ajax_nonce',
437
  'value' => wp_create_nonce( 'check-api-key' )
438
  ];
439
 
@@ -464,21 +464,20 @@ class WAPT_Settings extends WAPT_Page {
464
  }
465
 
466
  public function indexAction() {
467
- wp_enqueue_style( 'wapt-tabs-style', WAPT_PLUGIN_URL.'/admin/assets/css/tabs.css', array(), WAPT_PLUGIN_VERSION );
468
- wp_enqueue_style( 'wapt-settings-style', WAPT_PLUGIN_URL.'/admin/assets/css/settings.css', array(), WAPT_PLUGIN_VERSION );
469
  wp_enqueue_script( 'wapt-settings-script', WAPT_PLUGIN_URL . '/admin/assets/js/settings.js', [], WAPT_PLUGIN_VERSION, true );
470
  // creating a form
471
  global $form;
472
- $form = new Wbcr_FactoryForms423_Form( [
473
  'scope' => substr( $this->plugin->getPrefix(), 0, - 1 ),
474
  'name' => 'setting'
475
  ], $this->plugin );
476
 
477
- $form->setProvider( new Wbcr_FactoryForms423_OptionsValueProvider( $this->plugin ) );
478
 
479
  $wapt_tab = WAPT_Plugin::app()->request->get( 'apt_tab', '' );
480
- switch ($wapt_tab)
481
- {
482
  case 'general':
483
  $form->add( $this->getOptions_general() );
484
  break;
41
  * @param WAPT_Plugin $plugin
42
  */
43
  public function __construct( $plugin ) {
44
+ $this->id = $plugin->getPrefix(). "settings";
45
  $this->menu_target = $plugin->getPrefix() . "generate-" . $plugin->getPluginName();
46
  $this->page_title = __( 'Settings of APT', 'apt' );
47
  $this->menu_title = __( 'Settings', 'apt' );
48
  $this->capabilitiy = "manage_options";
49
  $this->template_name = "settings";
50
 
51
+ add_action( 'wbcr_factory_forms_427_register_controls', function () {
52
  $colorControls = array(
53
  [
54
  'type' => 'wapt-color',
67
  ],
68
  );
69
  $this->plugin->forms->registerControls( $colorControls );
70
+ } );
71
 
72
  $this->plugin = $plugin;
73
 
77
  /**
78
  * Returns options for the Basic Settings screen.
79
  *
 
80
  * @return array
81
+ * @since 3.6.2
82
  */
83
  public function getOptions_general() {
84
 
134
  /**
135
  * Returns options for the Basic Settings screen.
136
  *
 
137
  * @return array
138
+ * @since 3.6.2
139
  */
140
  public function getOptions_image() {
141
 
142
  $is_premium = AutoPostThumbnails::instance()->is_premium();
143
+ $pro = $is_premium ? '' : "<br><span class='wapt-icon-pro wapt-icon-pro-span'>PRO</span>";
144
 
145
  $options = [];
146
 
147
  $options[] = [
148
  'type' => 'html',
149
+ 'html' => '<h3 style="margin-left:0">' . __( 'Background settings', 'apt' ) . '</h3>'
150
  ];
151
 
152
  $options[] = [
154
  ];
155
 
156
  $options[] = [
157
+ 'type' => 'dropdown',
158
+ 'way' => 'buttons',
159
+ 'name' => 'background-type',
160
+ 'data' => [
161
  [ 'color', __( 'Color', 'apt' ) ],
162
  [ 'image', __( 'Image', 'apt' ) ],
163
  ],
164
+ 'default' => 'color',
165
+ 'title' => __( 'Background type', 'apt' ),
166
+ 'hint' => __( 'Select the background type for the featured image', 'apt' ),
167
+ 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
168
  ];
169
 
170
  $options[] = [
175
  'hint' => __( 'Set the background color for the featured image', 'apt' )
176
  ];
177
 
178
+ if ( $is_premium ) {
179
  $options[] = [
180
  'type' => 'wapt-mediabutton',
181
  'name' => 'background-image',
201
  //----------------------------------------------------------------------
202
  $options[] = [
203
  'type' => 'html',
204
+ 'html' => '<h3 style="margin-left:0">' . __( 'Font settings', 'apt' ) . '</h3>'
205
  ];
206
 
207
  $options[] = [
209
  ];
210
 
211
  $options[] = [
212
+ 'type' => 'wapt-fonts',
213
+ 'name' => 'font',
214
+ 'data' => AutoPostThumbnails::get_fonts(),
215
+ 'empty' => '',
216
+ 'title' => __( 'Font name', 'apt' ),
217
+ 'hint' => __( 'Select a font for the text in the featured image', 'apt' ),
218
+ 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
219
  ];
220
 
221
  $options[] = [
229
  ];
230
 
231
  $options[] = [
232
+ 'type' => 'wapt-color',
233
+ 'name' => 'font-color',
234
+ 'title' => __( 'Font color', 'apt' ),
235
+ 'hint' => __( 'Set the font color for the featured image', 'apt' )
236
  ];
237
 
238
  //----------------------------------------------------------------------
239
  $options[] = [
240
  'type' => 'html',
241
+ 'html' => '<h3 style="margin-left:0">' . __( 'Text settings', 'apt' ) . '</h3>'
242
  ];
243
 
244
  $options[] = [
246
  ];
247
 
248
  $options[] = [
249
+ 'type' => 'checkbox',
250
+ 'way' => 'buttons',
251
+ 'name' => 'shadow',
252
+ 'default' => '0',
253
+ 'title' => __( 'Text shadow', 'apt' ),
254
+ 'hint' => __( 'Use text shadow?', 'apt' ),
255
  'eventsOn' => [
256
  'show' => '.factory-control-shadow-color'
257
  ],
261
  ];
262
 
263
  $options[] = [
264
+ 'type' => 'wapt-color',
265
+ 'name' => 'shadow-color',
266
+ 'title' => __( 'Shadow color', 'apt' ),
267
+ 'hint' => __( 'Set the shadow color for the text', 'apt' )
268
  ];
269
 
270
  $options[] = [
295
  'type' => 'integer',
296
  'way' => 'text',
297
  'name' => 'text-line-spacing',
298
+ 'range' => array( 0, 3 ),
299
  'default' => 1.5,
300
  'title' => __( 'Line spacing', 'apt' ),
301
  'hint' => __( 'Set the line spacing', 'apt' )
304
  //----------------------------------------------------------------------
305
  $options[] = [
306
  'type' => 'html',
307
+ 'html' => '<h3 style="margin-left:0">' . __( 'Alignment', 'apt' ) . '</h3>'
308
  ];
309
 
310
  $options[] = [
312
  ];
313
 
314
  $options[] = [
315
+ 'type' => 'dropdown',
316
+ 'way' => 'buttons',
317
+ 'name' => 'text-align-horizontal',
318
+ 'data' => [
319
  [ 'left', __( 'Left', 'apt' ) ],
320
  [ 'center', __( 'Center', 'apt' ) ],
321
  [ 'right', __( 'Right', 'apt' ) ],
322
  ],
323
+ 'default' => 'center',
324
+ 'title' => __( 'Horizontal text alignment', 'apt' ) . $pro,
325
+ 'hint' => __( 'Select how to horizontally align the text on the image', 'apt' ),
326
  'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
327
  ];
328
 
329
  $options[] = [
330
+ 'type' => 'dropdown',
331
+ 'way' => 'buttons',
332
+ 'name' => 'text-align-vertical',
333
+ 'data' => [
334
  [ 'top', __( 'Top', 'apt' ) ],
335
  [ 'center', __( 'Center', 'apt' ) ],
336
  [ 'bottom', __( 'Bottom', 'apt' ) ],
337
  ],
338
+ 'default' => 'center',
339
+ 'title' => __( 'Vertical text alignment', 'apt' ) . $pro,
340
+ 'hint' => __( 'Select how to vertically align the text on the image', 'apt' ),
341
  'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
342
  ];
343
 
344
  //----------------------------------------------------------------------
345
  $options[] = [
346
  'type' => 'html',
347
+ 'html' => '<h3 style="margin-left:0">' . __( 'Padding', 'apt' ) . '</h3>'
348
  ];
349
 
350
  $options[] = [
352
  ];
353
 
354
  $options[] = [
355
+ 'type' => 'integer',
356
+ 'way' => 'text',
357
+ 'name' => 'text-padding-tb',
358
+ 'units' => __( 'px', 'apt' ),
359
+ 'default' => 15,
360
+ 'title' => __( 'Top/bottom text padding', 'apt' ) . $pro,
361
+ 'hint' => __( 'Padding at the top and bottom of the text', 'apt' ),
362
+ 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
363
  ];
364
 
365
  $options[] = [
366
+ 'type' => 'integer',
367
+ 'way' => 'text',
368
+ 'name' => 'text-padding-lr',
369
+ 'units' => __( 'px', 'apt' ),
370
+ 'default' => 15,
371
+ 'title' => __( 'Left/right text padding', 'apt' ) . $pro,
372
+ 'hint' => __( 'Padding at the left and right of the text', 'apt' ),
373
+ 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
374
  ];
375
 
376
  //----------------------------------------------------------------------
377
  $options[] = [
378
  'type' => 'html',
379
+ 'html' => '<h3 style="margin-left:0">' . __( 'Addition of text', 'apt' ) . '</h3>'
380
  ];
381
 
382
  $options[] = [
384
  ];
385
 
386
  $options[] = [
387
+ 'type' => 'textbox',
388
+ 'name' => 'before-text',
389
+ 'default' => '',
390
+ 'title' => __( 'String before text', 'apt' ) . $pro,
391
+ 'hint' => __( 'Additional string before text. For a line break, use <b>[br]</b>', 'apt' ),
392
+ 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
393
+ 'htmlAttrs' => ( ! $is_premium ) ? [ 'disabled' => 'disabled' ] : [],
394
  ];
395
 
396
  $options[] = [
397
+ 'type' => 'textbox',
398
+ 'name' => 'after-text',
399
+ 'default' => '',
400
+ 'title' => __( 'String after text', 'apt' ) . $pro,
401
+ 'hint' => __( 'Additional string after text. For a line break, use <b>[br]</b>', 'apt' ),
402
+ 'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
403
+ 'htmlAttrs' => ( ! $is_premium ) ? [ 'disabled' => 'disabled' ] : [],
404
  ];
405
 
406
  return $options;
409
  /**
410
  * Returns options for the Basic Settings screen.
411
  *
 
412
  * @return array
413
+ * @since 3.6.2
414
  */
415
  public function getOptions_api() {
416
 
432
  ];
433
 
434
  $options[] = [
435
+ 'type' => 'hidden',
436
+ 'name' => 'ajax_nonce',
437
  'value' => wp_create_nonce( 'check-api-key' )
438
  ];
439
 
464
  }
465
 
466
  public function indexAction() {
467
+ wp_enqueue_style( 'wapt-tabs-style', WAPT_PLUGIN_URL . '/admin/assets/css/tabs.css', array(), WAPT_PLUGIN_VERSION );
468
+ wp_enqueue_style( 'wapt-settings-style', WAPT_PLUGIN_URL . '/admin/assets/css/settings.css', array(), WAPT_PLUGIN_VERSION );
469
  wp_enqueue_script( 'wapt-settings-script', WAPT_PLUGIN_URL . '/admin/assets/js/settings.js', [], WAPT_PLUGIN_VERSION, true );
470
  // creating a form
471
  global $form;
472
+ $form = new Wbcr_FactoryForms427_Form( [
473
  'scope' => substr( $this->plugin->getPrefix(), 0, - 1 ),
474
  'name' => 'setting'
475
  ], $this->plugin );
476
 
477
+ $form->setProvider( new Wbcr_FactoryForms427_OptionsValueProvider( $this->plugin ) );
478
 
479
  $wapt_tab = WAPT_Plugin::app()->request->get( 'apt_tab', '' );
480
+ switch ( $wapt_tab ) {
 
481
  case 'general':
482
  $form->add( $this->getOptions_general() );
483
  break;
admin/views/media-library.php CHANGED
@@ -1,53 +1,58 @@
1
  <?php
2
- $ajaxloader = WAPT_PLUGIN_URL."/admin/assets/img/ajax-loader-line.gif";
3
  $apt_content_nonce = wp_create_nonce( 'apt_content' );
4
  ?>
5
 
6
  <div class="tabs">
7
  <ul>
8
- <?php $i = 1;
9
- foreach($this->sources as $src => $slug) {
10
- $is_pro = "";
11
- if(empty($slug) && ! WAPT_Plugin::app()->premium->is_activate()) $is_pro = " (PRO)";
12
- $is_pro = "<sup class='wapt-sup-pro'>".$is_pro."</sup>";
13
-
14
- echo "<li id='tabs-".$i++."'>".strtoupper($src).$is_pro."</li>";
15
- }?>
 
 
16
  </ul>
17
- <div id='ajaxloader' style='display:none;'><img src='<?php echo $ajaxloader;?>' width='150px' alt=''></div>
18
  <div id="media-frame-content">
19
- <?php foreach($this->sources as $src => $slug) {
20
- echo "<div id='tab-".strtolower($src)."' class='tab'></div>";
21
- }?>
22
  </div>
23
  </div>
24
 
25
  <style>
26
- sup
27
- {
28
  font-size: 10px;
29
  }
30
- .tabs{
31
- display:inline-block;
32
- width: 100%;
33
- margin: 5px 0px 10px 0px;
34
- }
35
- .tabs > div{
36
- padding-top:10px;
37
- }
38
- .tabs ul {
 
 
 
39
  margin: 0px;
40
  padding: 0px;
41
  }
42
 
43
- .tabs ul:after{
44
- content:"";
45
- display:block;
46
- clear:both;
47
- height:1px;
48
- background:#008ec2;
49
- }
50
- .tabs ul li{
 
51
  padding: 0px;
52
  cursor: pointer;
53
  display: block;
@@ -59,51 +64,65 @@ $apt_content_nonce = wp_create_nonce( 'apt_content' );
59
  border-radius: 10px 10px 0px 0px;
60
  font-weight: bold;
61
  text-align: center;
62
- }
63
- .tabs ul li.active, .tabs ul li.active:hover{
64
- background:#008ec2;
 
65
  color: #ffffff;
66
- width: 15%;
67
- }
68
- .tabs ul li:hover{
69
- background:#008ec2;
 
70
  color: #dddddd;
71
  }
72
- .tabs li{
 
73
  margin-bottom: 0;
74
  }
75
- .tab
76
- {
77
  padding: 10px;
78
  }
79
- #ajaxloader
80
- {
81
  margin: 20px 10px 10px 30px;
82
  }
83
- #page_num_div
84
- {
85
  display: inline;
86
  font-weight: bold;
87
  padding: 20px;
88
  }
89
- .apt_pages
90
- {
91
  padding-top: 20px;
92
  }
93
- .divform
94
- {
95
- line-height:1.5;margin:1em 0;max-width:500px;position:relative;
 
 
 
96
  }
97
- .input_query
98
- {
99
- width:100%;padding:7px 32px 7px 9px;
 
100
  }
101
- .submit_button
102
- {
103
- height:90%;width:70px;border:0;cursor:pointer;position:absolute;right:0px;top:2px;outline:0;
 
 
 
 
 
 
 
104
  }
105
- .custom-media-button
106
- {
107
  float: right;
108
  padding: 0px 20px 20px 0px;
109
  position: absolute;
@@ -111,19 +130,19 @@ $apt_content_nonce = wp_create_nonce( 'apt_content' );
111
  }
112
  </style>
113
  <script type="text/javascript">
114
- jQuery(document).ready(function() {
115
- jQuery.fn.lightTabs = function(options){
116
 
117
- var createTabs = function(){
118
  tabs = this;
119
  i = 0;
120
 
121
- showPage = function(i){
122
  jQuery(tabs).children("div").children("div").hide();
123
  jQuery(tabs).children("ul").children("li").removeClass("active");
124
- jQuery( '#'+jQuery(tabs).children("div").children("div").attr('id')).html( '' );
125
 
126
- jQuery( '#'+jQuery(tabs).children("div").children("div").eq(i).attr('id')).html( '' );
127
  jQuery(tabs).children("div").children("div").eq(i).show();
128
  jQuery(tabs).children("ul").children("li").eq(i).addClass("active");
129
 
@@ -134,19 +153,19 @@ $apt_content_nonce = wp_create_nonce( 'apt_content' );
134
  wpnonce: '<?php echo $apt_content_nonce; ?>',
135
  }).done(function (content) {
136
  jQuery('#ajaxloader').hide();
137
- jQuery( '#'+jQuery(tabs).children("div").children("div").eq(i).attr('id')).html( content );
138
  });
139
 
140
  };
141
 
142
  showPage(0);
143
 
144
- jQuery(tabs).children("ul").children("li").each(function(index, element){
145
  jQuery(element).attr("data-page", i);
146
  i++;
147
  });
148
 
149
- jQuery(tabs).children("ul").children("li").click(function(){
150
  showPage(parseInt(jQuery(this).attr("data-page")));
151
  });
152
  };
1
  <?php
2
+ $ajaxloader = WAPT_PLUGIN_URL . "/admin/assets/img/ajax-loader-line.gif";
3
  $apt_content_nonce = wp_create_nonce( 'apt_content' );
4
  ?>
5
 
6
  <div class="tabs">
7
  <ul>
8
+ <?php $i = 1;
9
+ foreach ( $this->sources as $src => $slug ) {
10
+ $is_pro = "";
11
+ if ( empty( $slug ) && ! WAPT_Plugin::app()->premium->is_activate() ) {
12
+ $is_pro = " (PRO)";
13
+ }
14
+ $is_pro = "<sup class='wapt-sup-pro'>" . $is_pro . "</sup>";
15
+
16
+ echo "<li id='tabs-" . $i ++ . "'>" . strtoupper( $src ) . $is_pro . "</li>";
17
+ } ?>
18
  </ul>
19
+ <div id='ajaxloader' style='display:none;'><img src='<?php echo $ajaxloader; ?>' width='150px' alt=''></div>
20
  <div id="media-frame-content">
21
+ <?php foreach ( $this->sources as $src => $slug ) {
22
+ echo "<div id='tab-" . strtolower( $src ) . "' class='tab'></div>";
23
+ } ?>
24
  </div>
25
  </div>
26
 
27
  <style>
28
+ sup {
 
29
  font-size: 10px;
30
  }
31
+
32
+ .tabs {
33
+ display: inline-block;
34
+ width: 100%;
35
+ margin: 5px 0px 10px 0px;
36
+ }
37
+
38
+ .tabs > div {
39
+ padding-top: 10px;
40
+ }
41
+
42
+ .tabs ul {
43
  margin: 0px;
44
  padding: 0px;
45
  }
46
 
47
+ .tabs ul:after {
48
+ content: "";
49
+ display: block;
50
+ clear: both;
51
+ height: 1px;
52
+ background: #008ec2;
53
+ }
54
+
55
+ .tabs ul li {
56
  padding: 0px;
57
  cursor: pointer;
58
  display: block;
64
  border-radius: 10px 10px 0px 0px;
65
  font-weight: bold;
66
  text-align: center;
67
+ }
68
+
69
+ .tabs ul li.active, .tabs ul li.active:hover {
70
+ background: #008ec2;
71
  color: #ffffff;
72
+ width: 15%;
73
+ }
74
+
75
+ .tabs ul li:hover {
76
+ background: #008ec2;
77
  color: #dddddd;
78
  }
79
+
80
+ .tabs li {
81
  margin-bottom: 0;
82
  }
83
+
84
+ .tab {
85
  padding: 10px;
86
  }
87
+
88
+ #ajaxloader {
89
  margin: 20px 10px 10px 30px;
90
  }
91
+
92
+ #page_num_div {
93
  display: inline;
94
  font-weight: bold;
95
  padding: 20px;
96
  }
97
+
98
+ .apt_pages {
99
  padding-top: 20px;
100
  }
101
+
102
+ .divform {
103
+ line-height: 1.5;
104
+ margin: 1em 0;
105
+ max-width: 500px;
106
+ position: relative;
107
  }
108
+
109
+ .input_query {
110
+ width: 100%;
111
+ padding: 7px 32px 7px 9px;
112
  }
113
+
114
+ .submit_button {
115
+ height: 90%;
116
+ width: 70px;
117
+ border: 0;
118
+ cursor: pointer;
119
+ position: absolute;
120
+ right: 0px;
121
+ top: 2px;
122
+ outline: 0;
123
  }
124
+
125
+ .custom-media-button {
126
  float: right;
127
  padding: 0px 20px 20px 0px;
128
  position: absolute;
130
  }
131
  </style>
132
  <script type="text/javascript">
133
+ jQuery(document).ready(function () {
134
+ jQuery.fn.lightTabs = function (options) {
135
 
136
+ var createTabs = function () {
137
  tabs = this;
138
  i = 0;
139
 
140
+ showPage = function (i) {
141
  jQuery(tabs).children("div").children("div").hide();
142
  jQuery(tabs).children("ul").children("li").removeClass("active");
143
+ jQuery('#' + jQuery(tabs).children("div").children("div").attr('id')).html('');
144
 
145
+ jQuery('#' + jQuery(tabs).children("div").children("div").eq(i).attr('id')).html('');
146
  jQuery(tabs).children("div").children("div").eq(i).show();
147
  jQuery(tabs).children("ul").children("li").eq(i).addClass("active");
148
 
153
  wpnonce: '<?php echo $apt_content_nonce; ?>',
154
  }).done(function (content) {
155
  jQuery('#ajaxloader').hide();
156
+ jQuery('#' + jQuery(tabs).children("div").children("div").eq(i).attr('id')).html(content);
157
  });
158
 
159
  };
160
 
161
  showPage(0);
162
 
163
+ jQuery(tabs).children("ul").children("li").each(function (index, element) {
164
  jQuery(element).attr("data-page", i);
165
  i++;
166
  });
167
 
168
+ jQuery(tabs).children("ul").children("li").click(function () {
169
  showPage(parseInt(jQuery(this).attr("data-page")));
170
  });
171
  };
admin/views/pro.php CHANGED
@@ -1,6 +1,5 @@
1
  <?php
2
- if(!WAPT_Plugin::app()->premium->is_activate())
3
- {
4
  echo __( "This service available in the PRO version" );
5
  ?>
6
  <a href="<?php echo WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ); ?>"
@@ -11,8 +10,7 @@ if(!WAPT_Plugin::app()->premium->is_activate())
11
  </a>
12
  <?php
13
  }
14
- if(empty($slug) && WAPT_Plugin::app()->premium->is_activate())
15
- {
16
  echo __( "You have activated a premium license, but not install premium add-on to use pro features now." );
17
  }
18
 
1
  <?php
2
+ if ( ! WAPT_Plugin::app()->premium->is_activate() ) {
 
3
  echo __( "This service available in the PRO version" );
4
  ?>
5
  <a href="<?php echo WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ); ?>"
10
  </a>
11
  <?php
12
  }
13
+ if ( empty( $slug ) && WAPT_Plugin::app()->premium->is_activate() ) {
 
14
  echo __( "You have activated a premium license, but not install premium add-on to use pro features now." );
15
  }
16
 
admin/views/sources/google.php CHANGED
@@ -1,180 +1,189 @@
1
- <?php $ajaxloader = WAPT_PLUGIN_URL."/admin/assets/img/ajax-loader-line.gif";
2
  $apt_google_nonce = wp_create_nonce( 'apt_api' );
3
 
4
- $apt_google_key = WAPT_Plugin::app()->getOption('google_apikey');
5
- $apt_google_cse = WAPT_Plugin::app()->getOption('google_cse');
6
-
7
- if(isset($_REQUEST['post'])) $pid = $_REQUEST['post'];
8
- else $pid = 0;
9
-
10
- if($apt_google_key && $apt_google_cse)
11
- {
12
- ?>
13
- <script type="text/javascript">
14
-
15
- function call_api(query, page = 1) {
16
- jQuery.post(ajaxurl,
17
- {
18
- action: 'apt_api_google',
19
- query: query,
20
- page: page,
21
- nonce: '<?php echo $apt_google_nonce; ?>'
22
- },
23
- function (data) {
24
- try {
25
- data = JSON.parse(data);
26
- } catch (e) {
27
- jQuery('#loader_flex').hide();
28
- jQuery('#page_num_div').hide();
29
- jQuery('#prev_page').hide();
30
- jQuery('#next_page').hide();
31
- jQuery('#google_results').html(data);
32
- return false;
33
- }
34
-
35
- if (!parseInt(data.searchInformation.totalResults) > 0) {
36
- jQuery('#loader_flex').hide();
37
- jQuery('#page_num_div').hide();
38
- jQuery('#prev_page').hide();
39
- jQuery('#next_page').hide();
40
- jQuery('#google_results').html('<?php echo __( 'No hits', 'apt' ); ?>');
41
- return false;
42
- }
43
- show_images(data, page);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  });
45
- }
46
-
47
- function show_images(data, page) {
48
- var s = '';
49
- var totalhits = 100; //google limit
50
- if (page > 1) jQuery('#prev_page').show();
51
- else jQuery('#prev_page').hide();
52
- if (page < parseInt(totalhits, 10) / 10) jQuery('#next_page').show();
53
- else jQuery('#next_page').hide();
54
-
55
- jQuery('#page_num_div').html(page);
56
- jQuery('#page_num_div').show();
57
-
58
- jQuery.each(data.items, function (k, v) {
59
- descr = v.title;
60
- if(!descr) descr = "google_image";
61
- s += '<div class="item upload_google" ' +
62
- 'data-service="google" ' +
63
- 'data-title="'+ descr +'" ' +
64
- 'data-url="' + v.link +'" '+
65
- 'data-link="' + v.image.contextLink + '" ' +
66
- 'data-w="' + v.image.width + '" ' +
67
- 'data-h="' + v.image.height + '">' +
68
- '<img src="' + v.image.thumbnailLink + '">' +
69
- '<div class="download"><img src="<?php echo WAPT_PLUGIN_URL . '/admin/assets/img/download.svg' ?>">' +
70
- '<div>' + v.image.width + '×' + v.image.height + '<br>' +
71
- '<a href="'+ v.image.contextLink +'" target="_blank">'+descr.substr(0,15)+'</a>' +
72
- '</div>' +
73
- '</div>' +
74
- '</div>';
75
- //console.log(v.urls.regular);
76
  });
77
- jQuery('#google_results').html(jQuery('#google_results').html() + s);
78
- jQuery('.flex-images').flexImages({rowHeight: 160});
79
- jQuery('#loader_flex').hide();
80
- }
81
-
82
- function do_submit() {
83
- jQuery('#loader_flex').show();
84
- q = jQuery('#query', form).val();
85
- p = jQuery('#page_num', form).val();
86
-
87
- jQuery('#google_results').html('');
88
- call_api(q, p);
89
- }
90
-
91
- jQuery('#prev_page').click(function (e) {
92
- jQuery('#page_num', form).val(parseInt(jQuery('#page_num', form).val(), 10) - 1);
93
- do_submit();
94
- });
95
- jQuery('#next_page').click(function (e) {
96
- jQuery('#page_num', form).val(parseInt(jQuery('#page_num', form).val(), 10) + 1);
97
- do_submit();
98
- });
99
-
100
- //Кнопка поиска
101
- jQuery(document).ready(function () {
102
- form = jQuery('#google_images_form');
103
-
104
- form.submit(function (e) {
105
- e.preventDefault();
106
  do_submit();
107
  });
108
- });
109
-
110
- //загрузка в медиабиблиотеку
111
- jQuery(document).on('click', '.upload_google', function (e) {
112
- if (jQuery(e.target).is('a')) return;
113
- //jQuery(document).off('click', '.upload_google');
114
- // loading animation
115
- var downdiv = jQuery(this);
116
- downdiv.addClass('uploading').find('.download img').replaceWith('<img src="<?php echo WAPT_PLUGIN_URL . '/admin/assets/img/loading.svg' ?>" style="height:80px !important">');
117
- jQuery.post(ajaxurl,
118
- {
119
- action: 'upload_to_library',
120
- is_upload: "1",
121
- service: jQuery(this).data('service'),
122
- image_url: jQuery(this).data('url'),
123
- image_user: jQuery(this).data('user'),
124
- q: q,
125
- postid: <?php echo $pid;?>,
126
- title: jQuery(this).data('title'),
127
- excerpt: '<a href="'+ jQuery(this).data('link') +'" target="_blank">'+jQuery(this).data('title')+'</a>',
128
- wpnonce: '<?php echo $apt_google_nonce; ?>'
129
- },
130
- function (data) {
131
- if (parseInt(data) == data)
132
- {
133
- downdiv.removeClass('uploading').find('.download img').replaceWith('DOWNLOADED');
134
- downdiv.removeClass('upload_google');
135
- jQuery('#apt-button-next').prop('disabled',false);
136
 
137
- if(window.cvapt_media_refresh !== undefined) {
138
- window.parent.window.cvapt_media_refresh();
139
- }
140
- }
141
- else
142
- {
143
- alert(data);
144
- downdiv.removeClass('uploading').find('.download img').replaceWith('ERROR');
145
- downdiv.removeClass('upload_google');
146
- }
147
  });
148
- return false;
149
- });
150
- </script>
151
-
152
- <div style="padding:10px 15px 25px">
153
- <form id="google_images_form" style="margin:0">
154
- <div class="divform">
155
- <input id="query" type="text" value="" class="input_query" autofocus
156
- placeholder="<?php echo __( 'Search...', 'apt' ); ?>">
157
- <input id="page_num" type="hidden" value="1">
158
- <button type="submit" class="submit_button" title="<?php echo __( 'Search', 'apt' ); ?>"><img
159
- src="<?php echo WAPT_PLUGIN_URL . '/admin/assets/img/search.png' ?>"></button>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
  </div>
161
- </form>
162
- <div id="loader_flex" style="display: none;"><img src='<?php echo $ajaxloader; ?>' width='100px' alt=''></div>
163
- <div id="google_results" class="flex-images"></div>
164
- <div class="apt_pages">
165
- <button id="prev_page" style="display: none;"><span class="dashicons dashicons-arrow-left-alt"></span> <?php echo __('Prev','apt'); ?>
166
- </button>
167
- <div id="page_num_div" style="display: none;"></div>
168
- <button id="next_page" style="display: none;"><?php echo __('Next','apt'); ?> <span class="dashicons dashicons-arrow-right-alt"></span>
169
- </button>
170
  </div>
171
- </div>
172
- <?php
173
- }
174
- else
175
- {
176
- ?>
177
- <div><?php echo __('API key is missing. Add it in APT settings','apt');?> ->
178
- <a href="<?= admin_url('admin.php?page=wapt_settings-wbcr_apt'); ?>" target="_blank">here</a></div>
179
- <?php
180
  } ?>
1
+ <?php $ajaxloader = WAPT_PLUGIN_URL . "/admin/assets/img/ajax-loader-line.gif";
2
  $apt_google_nonce = wp_create_nonce( 'apt_api' );
3
 
4
+ $apt_google_key = WAPT_Plugin::app()->getOption( 'google_apikey' );
5
+ $apt_google_cse = WAPT_Plugin::app()->getOption( 'google_cse' );
6
+
7
+ if ( isset( $_REQUEST['post'] ) ) {
8
+ $pid = $_REQUEST['post'];
9
+ } else {
10
+ $pid = 0;
11
+ }
12
+
13
+ if ( $apt_google_key && $apt_google_cse ) {
14
+ ?>
15
+ <script type="text/javascript">
16
+
17
+ function call_api(query, page = 1) {
18
+ jQuery.post(ajaxurl,
19
+ {
20
+ action: 'apt_api_google',
21
+ query: query,
22
+ rights: rights,
23
+ page: page,
24
+ nonce: '<?php echo $apt_google_nonce; ?>'
25
+ },
26
+ function (data) {
27
+ try {
28
+ data = JSON.parse(data);
29
+ } catch (e) {
30
+ jQuery('#loader_flex').hide();
31
+ jQuery('#page_num_div').hide();
32
+ jQuery('#prev_page').hide();
33
+ jQuery('#next_page').hide();
34
+ jQuery('#google_results').html(data);
35
+ return false;
36
+ }
37
+
38
+ if (!parseInt(data.searchInformation.totalResults) > 0) {
39
+ jQuery('#loader_flex').hide();
40
+ jQuery('#page_num_div').hide();
41
+ jQuery('#prev_page').hide();
42
+ jQuery('#next_page').hide();
43
+ jQuery('#google_results').html('<?php echo __( 'No hits', 'apt' ); ?>');
44
+ return false;
45
+ }
46
+ show_images(data, page);
47
+ });
48
+ }
49
+
50
+ function show_images(data, page) {
51
+ var s = '';
52
+ var totalhits = 100; //google limit
53
+ if (page > 1) jQuery('#prev_page').show();
54
+ else jQuery('#prev_page').hide();
55
+ if (page < parseInt(totalhits, 10) / 10) jQuery('#next_page').show();
56
+ else jQuery('#next_page').hide();
57
+
58
+ jQuery('#page_num_div').html(page);
59
+ jQuery('#page_num_div').show();
60
+
61
+ jQuery.each(data.items, function (k, v) {
62
+ descr = v.title;
63
+ if (!descr) descr = "google_image";
64
+ s += '<div class="item upload_google" ' +
65
+ 'data-service="google" ' +
66
+ 'data-title="' + descr + '" ' +
67
+ 'data-url="' + v.link + '" ' +
68
+ 'data-link="' + v.image.contextLink + '" ' +
69
+ 'data-w="' + v.image.width + '" ' +
70
+ 'data-h="' + v.image.height + '">' +
71
+ '<img src="' + v.image.thumbnailLink + '">' +
72
+ '<div class="download"><img src="<?php echo WAPT_PLUGIN_URL . '/admin/assets/img/download.svg' ?>">' +
73
+ '<div>' + v.image.width + '×' + v.image.height + '<br>' +
74
+ '<a href="' + v.image.contextLink + '" target="_blank">' + descr.substr(0, 15) + '</a>' +
75
+ '</div>' +
76
+ '</div>' +
77
+ '</div>';
78
+ //console.log(v.urls.regular);
79
  });
80
+ jQuery('#google_results').html(jQuery('#google_results').html() + s);
81
+ jQuery('.flex-images').flexImages({rowHeight: 160});
82
+ jQuery('#loader_flex').hide();
83
+ }
84
+
85
+ function do_submit() {
86
+ jQuery('#loader_flex').show();
87
+ q = jQuery('#query', form).val();
88
+ p = jQuery('#page_num', form).val();
89
+
90
+ if (jQuery('#filter_rights', form).is(':checked')) {
91
+ rights = 1;
92
+ } else rights = 0;
93
+
94
+ jQuery('#google_results').html('');
95
+ call_api(q, p);
96
+ }
97
+
98
+ jQuery('#prev_page').click(function (e) {
99
+ jQuery('#page_num', form).val(parseInt(jQuery('#page_num', form).val(), 10) - 1);
100
+ do_submit();
 
 
 
 
 
 
 
 
 
 
101
  });
102
+ jQuery('#next_page').click(function (e) {
103
+ jQuery('#page_num', form).val(parseInt(jQuery('#page_num', form).val(), 10) + 1);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  do_submit();
105
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
 
107
+ //Кнопка поиска
108
+ jQuery(document).ready(function () {
109
+ form = jQuery('#google_images_form');
110
+
111
+ form.submit(function (e) {
112
+ e.preventDefault();
113
+ do_submit();
 
 
 
114
  });
115
+ });
116
+
117
+ //загрузка в медиабиблиотеку
118
+ jQuery(document).on('click', '.upload_google', function (e) {
119
+ if (jQuery(e.target).is('a')) return;
120
+ //jQuery(document).off('click', '.upload_google');
121
+ // loading animation
122
+ var downdiv = jQuery(this);
123
+ downdiv.addClass('uploading').find('.download img').replaceWith('<img src="<?php echo WAPT_PLUGIN_URL . '/admin/assets/img/loading.svg' ?>" style="height:80px !important">');
124
+ jQuery.post(ajaxurl,
125
+ {
126
+ action: 'upload_to_library',
127
+ is_upload: "1",
128
+ service: jQuery(this).data('service'),
129
+ image_url: jQuery(this).data('url'),
130
+ image_user: jQuery(this).data('user'),
131
+ q: q,
132
+ postid: <?php echo $pid;?>,
133
+ title: jQuery(this).data('title'),
134
+ excerpt: '<a href="' + jQuery(this).data('link') + '" target="_blank">' + jQuery(this).data('title') + '</a>',
135
+ wpnonce: '<?php echo $apt_google_nonce; ?>'
136
+ },
137
+ function (data) {
138
+ if (parseInt(data) == data) {
139
+ downdiv.removeClass('uploading').find('.download img').replaceWith('DOWNLOADED');
140
+ downdiv.removeClass('upload_google');
141
+ jQuery('#apt-button-next').prop('disabled', false);
142
+
143
+ if (window.cvapt_media_refresh !== undefined) {
144
+ window.parent.window.cvapt_media_refresh();
145
+ }
146
+ } else {
147
+ alert(data);
148
+ downdiv.removeClass('uploading').find('.download img').replaceWith('ERROR');
149
+ downdiv.removeClass('upload_google');
150
+ }
151
+ });
152
+ return false;
153
+ });
154
+ </script>
155
+
156
+ <div style="padding:10px 15px 25px">
157
+ <form id="google_images_form" style="margin:0">
158
+ <div class="divform">
159
+ <input id="query" type="text" value="" class="input_query" autofocus
160
+ placeholder="<?php echo __( 'Search...', 'apt' ); ?>">
161
+ <input id="page_num" type="hidden" value="1">
162
+ <button type="submit" class="submit_button" title="<?php echo __( 'Search', 'apt' ); ?>"><img
163
+ src="<?php echo WAPT_PLUGIN_URL . '/admin/assets/img/search.png' ?>"></button>
164
+ </div>
165
+ <div style="margin:1em 0;padding-left:2px;line-height:2">
166
+ <label style="margin-right:15px;white-space:nowrap">
167
+ <input type="checkbox" id="filter_rights"><?= __( 'Commercial and derived use', 'apt' ); ?>
168
+ </label>
169
+ </div>
170
+ </form>
171
+ <div id="loader_flex" style="display: none;"><img src='<?php echo $ajaxloader; ?>' width='100px' alt=''></div>
172
+ <div id="google_results" class="flex-images"></div>
173
+ <div class="apt_pages">
174
+ <button id="prev_page" style="display: none;"><span
175
+ class="dashicons dashicons-arrow-left-alt"></span> <?php echo __( 'Prev', 'apt' ); ?>
176
+ </button>
177
+ <div id="page_num_div" style="display: none;"></div>
178
+ <button id="next_page" style="display: none;"><?php echo __( 'Next', 'apt' ); ?> <span
179
+ class="dashicons dashicons-arrow-right-alt"></span>
180
+ </button>
181
  </div>
 
 
 
 
 
 
 
 
 
182
  </div>
183
+ <?php
184
+ } else {
185
+ ?>
186
+ <div><?php echo __( 'API key is missing. Add it in APT settings', 'apt' ); ?> ->
187
+ <a href="<?= admin_url( 'admin.php?page=wapt_settings-wbcr_apt' ); ?>" target="_blank">here</a></div>
188
+ <?php
 
 
 
189
  } ?>
admin/views/tab-about.php CHANGED
@@ -79,56 +79,57 @@
79
  #wpfooter {
80
  position: relative !important;
81
  }
82
- .heading-title
83
- {
84
  text-align: center;
85
  }
86
- .heading-container
87
- {
88
  text-align: center;
89
  margin-top: 20px;
90
  }
91
- .heading-container > p > a
92
- {
93
  font-size: 2em;
94
  }
95
- h1.heading-title
96
- {
97
  font-size: 1.8em;
98
  line-height: 1.2em;
99
 
100
  }
101
- h2.image-box-title
102
- {
103
  font-size: 2em;
104
  line-height: 1.2em;
105
  margin: 0;
106
  }
107
- p.image-box-description
108
- {
109
  font-size: 1.15em;
110
  line-height: 1.2em;
111
  margin: 5px;
112
  margin-bottom: 20px;
113
  font-weight: bold;
114
  }
115
- div.text-editor > p
116
- {
117
  font-size: 1.2em;
118
  line-height: 1.5em;
119
  margin: 10px;
120
  }
121
- div.image > img{
 
122
  box-sizing: border-box;
123
  /*border: 1px solid black;*/
124
  box-shadow: 0px 0px 24px rgba(107, 107, 107, 0.5);
125
  text-align: center;
126
- display:block;
127
- margin:auto;
128
  margin-bottom: 30px;
129
  }
130
- hr
131
- {
132
  border: 1px solid black;
133
  }
134
 
@@ -153,150 +154,210 @@
153
  }
154
  }
155
  </style>
156
- <div class="apt-section">
157
- <div class="row">
158
- <div class="widget-container">
159
- <h1 class="heading-title size-default">
160
- We suppose you’ve noticed the changes which happened with Auto Post Thumbnail.
161
- <br>Reading this tutorial you can get more information about new features.</h1>
162
- </div>
163
 
164
- <div class="widget-container">
165
- <div class="divider">
166
- <hr>
167
- </div>
168
  </div>
 
169
 
170
- <div class="heading-container">
171
- <img width="70" height="70" src="https://cm-wp.com/wp-content/uploads/2019/09/icon-6-150x150.png" class="attachment-thumbnail size-thumbnail" alt="">
172
- <h2 class="image-box-title">New image generation tools</h2>
173
- <p class="image-box-description">You can generate featured images by single click as you did in the past. But comparing with last release&nbsp; here appeared some new additional tools, so you can:</p>
174
- </div>
175
- <div class="widget-container">
176
- <div class="text-editor clearfix">
177
- <p>Bulk generate or delete&nbsp;featured images.</p>
178
- </div>
179
- </div>
180
- <div class="widget-container">
181
- <div class="image">
182
- <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/2019-10-03_16-42-43.png" class="attachment-full size-full" alt="" >
183
- </div>
184
- </div>
185
- <div class="widget-container">
186
- <div class="text-editor clearfix"><p>Selective generation and deletion of featured images using filters <a href="https://cm-wp.com/apt/pricing/?utm_source=wordpress.org&amp;utm_content=license_page">(PRO)</a>.</p></div>
187
- </div>
188
- <div class="widget-container">
189
- <div class="image">
190
- <img width="1024" height="320" src="https://cm-wp.com/wp-content/uploads/2019/10/Sequence-01.gif" class="attachment-large size-large" alt="" >
191
- </div>
192
  </div>
193
- <div class="widget-container">
194
- <div class="text-editor clearfix"><p>Disable automatic post thumbnail generation.</p></div>
 
 
 
195
  </div>
196
- <div class="widget-container">
197
- <div class="image">
198
- <img width="500" src="https://cm-wp.com/wp-content/uploads/2019/09/2.png" class="attachment-large size-large" alt="" >
199
- </div>
 
 
 
 
 
 
200
  </div>
201
- <div class="widget-container">
202
- <div class="text-editor clearfix"><p>If you do not want the plug-in settings to be saved, after uninstalling, click “delete settings”</p></div>
 
 
 
 
 
 
203
  </div>
204
- <div class="widget-container">
205
- <div class="image">
206
- <img width="500" height="145" src="https://cm-wp.com/wp-content/uploads/2019/09/3.png" class="attachment-large size-large" alt="" >
207
- </div>
 
 
 
 
 
208
  </div>
 
209
 
210
- <div class="widget-container">
211
- <div class="divider">
212
- <hr>
213
- </div>
214
  </div>
 
215
 
216
- <div class="heading-container">
217
- <div class="image-box-wrapper"><img width="70" height="70" src="https://cm-wp.com/wp-content/uploads/2019/09/icon-2-150x150.png" class="attachment-thumbnail size-thumbnail" alt=""><div class="image-box-content"><h2 class="image-box-title">Bulk featured Images generation or unset in post list</h2><p class="image-box-description">Use bulk actions when you set featured images. For example Generate or Unset all of them.</p></div></div> </div>
218
- <div class="widget-container">
219
- <div class="text-editor clearfix"><p>Also we changed the Posts list interface in dashboard and added a Column for displaying featured images. If any post stays without any featured image you’ll see this from the posts list. Opening post is unnecessary, that’s why It makes the process easier.</p></div>
220
- </div>
221
- <div class="widget-container">
222
- <div class="image">
223
- <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/03.gif" class="attachment-full size-full" alt=""> </div>
224
  </div>
 
 
 
 
 
 
 
 
 
 
 
225
 
226
- <div class="widget-container">
227
- <div class="divider">
228
- <hr>
229
- </div>
230
  </div>
 
231
 
232
- <div class="heading-container">
233
- <div class="image-box-wrapper"><img width="70" height="70" src="https://cm-wp.com/wp-content/uploads/2019/09/icon-3-150x150.png" class="attachment-thumbnail size-thumbnail" alt=""><div class="image-box-content"><h2 class="image-box-title">Featured Images selective generation </h2><p class="image-box-description">Execute custom generation or unset featured images applying this tool for single or some posts.</p></div></div> </div>
234
- <div class="widget-container">
235
- <div class="image">
236
- <img width="500" src="https://cm-wp.com/wp-content/uploads/2019/09/7.png" class="attachment-large size-large" alt="" >
237
- </div>
 
238
  </div>
239
-
240
- <div class="widget-container">
241
- <div class="divider">
242
- <hr>
243
- </div>
244
  </div>
 
245
 
246
- <div class="heading-container">
247
- <div class="image-box-wrapper"><a href="http://cm-wp.com/apt/pricing/"><img width="70" height="70" src="https://cm-wp.com/wp-content/uploads/2019/09/icon-4-150x150.png" class="attachment-thumbnail size-thumbnail" alt=""></a><div class="image-box-content"><h2 class="image-box-title">Manual Featured Images Selection</h2><p class="image-box-description">Select featured images from the post images when you are in dashboard’s Posts list. This feature is available for users who have PRO account.</p></div></div> </div>
248
- <div class="widget-container">
249
- <div class="image">
250
- <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/04.gif" class="attachment-full size-full" alt=""> </div>
251
  </div>
252
- <div class="widget-container">
253
- <div class="text-editor clearfix"><p>You can add featured images even if the picture is not uploaded to the medialibrary but inserted into the post using an external link or shortcode.</p></div>
 
 
 
 
 
 
 
 
254
  </div>
 
 
 
 
 
 
 
 
 
 
255
 
256
- <div class="widget-container">
257
- <div class="divider">
258
- <hr>
259
- </div>
260
  </div>
 
261
 
262
- <div class="heading-container">
263
- <div class="image-box-wrapper"><img width="70" height="70" src="https://cm-wp.com/wp-content/uploads/2019/09/icon1-150x150.png" class="attachment-thumbnail size-thumbnail" alt=""><div class="image-box-content"><h2 class="image-box-title">Image search in Google, Unsplash, Pixabay</h2><p class="image-box-description">Search for images with Creative Commons license.</p></div></div> </div>
264
- <div class="widget-container">
265
- <div class="text-editor clearfix"><p><span style="font-weight: 400;">It appeared new tab in the Media Library =&gt; </span><i><span style="font-weight: 400;">Add from APT. </span></i><span style="font-weight: 400;">There you can find images using popular free stock sites:&nbsp; Google, Pixabay <a href="https://cm-wp.com/apt/pricing/?utm_source=wordpress.org&amp;utm_content=license_page">(pro)</a>, Unsplash <a href="https://cm-wp.com/apt/pricing/?utm_source=wordpress.org&amp;utm_content=license_page">(pro)</a>. Just enter a search query, choose the image and insert it into the Media library by single click.</span></p></div>
 
 
 
266
  </div>
267
- <div class="widget-container">
268
- <div class="image">
269
- <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/05.gif" class="attachment-large size-large" alt="" >
270
- </div>
 
 
 
 
 
 
 
 
271
  </div>
 
272
 
273
- <div class="widget-container">
274
- <div class="divider">
275
- <hr>
276
- </div>
277
  </div>
 
278
 
279
- <div class="heading-container">
280
- <div class="image-box-wrapper"><img width="70" height="70" src="https://cm-wp.com/wp-content/uploads/2019/09/icon-5-150x150.png" class="attachment-thumbnail size-thumbnail" alt=""><div class="image-box-content"><h2 class="image-box-title">Compatibility with Elementor and Gutenberg</h2><p class="image-box-description">Auto Post Thumbnail is compatible with Classic Editor, Gutenberg and Elementor plugins.</p></div></div> </div>
281
- <div class="widget-container">
282
- <div class="image">
283
- <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/007.gif" class="attachment-large size-large" alt="">
284
- </div>
 
 
285
  </div>
286
-
287
- <div class="widget-container">
288
- <div class="divider">
289
- <hr>
290
- </div>
291
  </div>
 
292
 
293
- <div class="heading-container">
294
- <p>
295
- <a href="https://cm-wp.com/apt/apt-f-a-q/?utm_medium=right_banner&amp;utm_campaign=apt&amp;utm_content=link" target="_blank" rel="noopener">F.A.Q.</a>
296
- </p>
297
- <p>
298
- <a href="https://forum.webcraftic.com/" target="_blank" rel="noopener">Get starting free support</a>
299
- </p>
300
  </div>
301
  </div>
302
- </div>
 
 
 
 
 
 
 
 
 
 
 
79
  #wpfooter {
80
  position: relative !important;
81
  }
82
+
83
+ .heading-title {
84
  text-align: center;
85
  }
86
+
87
+ .heading-container {
88
  text-align: center;
89
  margin-top: 20px;
90
  }
91
+
92
+ .heading-container > p > a {
93
  font-size: 2em;
94
  }
95
+
96
+ h1.heading-title {
97
  font-size: 1.8em;
98
  line-height: 1.2em;
99
 
100
  }
101
+
102
+ h2.image-box-title {
103
  font-size: 2em;
104
  line-height: 1.2em;
105
  margin: 0;
106
  }
107
+
108
+ p.image-box-description {
109
  font-size: 1.15em;
110
  line-height: 1.2em;
111
  margin: 5px;
112
  margin-bottom: 20px;
113
  font-weight: bold;
114
  }
115
+
116
+ div.text-editor > p {
117
  font-size: 1.2em;
118
  line-height: 1.5em;
119
  margin: 10px;
120
  }
121
+
122
+ div.image > img {
123
  box-sizing: border-box;
124
  /*border: 1px solid black;*/
125
  box-shadow: 0px 0px 24px rgba(107, 107, 107, 0.5);
126
  text-align: center;
127
+ display: block;
128
+ margin: auto;
129
  margin-bottom: 30px;
130
  }
131
+
132
+ hr {
133
  border: 1px solid black;
134
  }
135
 
154
  }
155
  }
156
  </style>
157
+ <div class="apt-section">
158
+ <div class="row">
159
+ <div class="widget-container">
160
+ <h1 class="heading-title size-default">
161
+ We suppose you’ve noticed the changes which happened with Auto Featured Image.
162
+ <br>Reading this tutorial you can get more information about new features.</h1>
163
+ </div>
164
 
165
+ <div class="widget-container">
166
+ <div class="divider">
167
+ <hr>
 
168
  </div>
169
+ </div>
170
 
171
+ <div class="heading-container">
172
+ <img width="70" height="70" src="https://cm-wp.com/wp-content/uploads/2019/09/icon-6-150x150.png"
173
+ class="attachment-thumbnail size-thumbnail" alt="">
174
+ <h2 class="image-box-title">New image generation tools</h2>
175
+ <p class="image-box-description">You can generate featured images by single click as you did in the past.
176
+ But comparing with last release&nbsp; here appeared some new additional tools, so you can:</p>
177
+ </div>
178
+ <div class="widget-container">
179
+ <div class="text-editor clearfix">
180
+ <p>Bulk generate or delete&nbsp;featured images.</p>
 
 
 
 
 
 
 
 
 
 
 
 
181
  </div>
182
+ </div>
183
+ <div class="widget-container">
184
+ <div class="image">
185
+ <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/2019-10-03_16-42-43.png"
186
+ class="attachment-full size-full" alt="">
187
  </div>
188
+ </div>
189
+ <div class="widget-container">
190
+ <div class="text-editor clearfix"><p>Selective generation and deletion of featured images using filters <a
191
+ href="https://cm-wp.com/apt/pricing/?utm_source=wordpress.org&amp;utm_content=license_page">(PRO)</a>.
192
+ </p></div>
193
+ </div>
194
+ <div class="widget-container">
195
+ <div class="image">
196
+ <img width="1024" height="320" src="https://cm-wp.com/wp-content/uploads/2019/10/Sequence-01.gif"
197
+ class="attachment-large size-large" alt="">
198
  </div>
199
+ </div>
200
+ <div class="widget-container">
201
+ <div class="text-editor clearfix"><p>Disable automatic post thumbnail generation.</p></div>
202
+ </div>
203
+ <div class="widget-container">
204
+ <div class="image">
205
+ <img width="500" src="https://cm-wp.com/wp-content/uploads/2019/09/2.png"
206
+ class="attachment-large size-large" alt="">
207
  </div>
208
+ </div>
209
+ <div class="widget-container">
210
+ <div class="text-editor clearfix"><p>If you do not want the plug-in settings to be saved, after
211
+ uninstalling, click “delete settings”</p></div>
212
+ </div>
213
+ <div class="widget-container">
214
+ <div class="image">
215
+ <img width="500" height="145" src="https://cm-wp.com/wp-content/uploads/2019/09/3.png"
216
+ class="attachment-large size-large" alt="">
217
  </div>
218
+ </div>
219
 
220
+ <div class="widget-container">
221
+ <div class="divider">
222
+ <hr>
 
223
  </div>
224
+ </div>
225
 
226
+ <div class="heading-container">
227
+ <div class="image-box-wrapper"><img width="70" height="70"
228
+ src="https://cm-wp.com/wp-content/uploads/2019/09/icon-2-150x150.png"
229
+ class="attachment-thumbnail size-thumbnail" alt="">
230
+ <div class="image-box-content"><h2 class="image-box-title">Bulk featured Images generation or unset in
231
+ post list</h2>
232
+ <p class="image-box-description">Use bulk actions when you set featured images. For example Generate
233
+ or Unset all of them.</p></div>
234
  </div>
235
+ </div>
236
+ <div class="widget-container">
237
+ <div class="text-editor clearfix"><p>Also we changed the Posts list interface in dashboard and added a
238
+ Column for displaying featured images. If any post stays without any featured image you’ll see this
239
+ from the posts list. Opening post is unnecessary, that’s why It makes the process easier.</p></div>
240
+ </div>
241
+ <div class="widget-container">
242
+ <div class="image">
243
+ <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/03.gif"
244
+ class="attachment-full size-full" alt=""></div>
245
+ </div>
246
 
247
+ <div class="widget-container">
248
+ <div class="divider">
249
+ <hr>
 
250
  </div>
251
+ </div>
252
 
253
+ <div class="heading-container">
254
+ <div class="image-box-wrapper"><img width="70" height="70"
255
+ src="https://cm-wp.com/wp-content/uploads/2019/09/icon-3-150x150.png"
256
+ class="attachment-thumbnail size-thumbnail" alt="">
257
+ <div class="image-box-content"><h2 class="image-box-title">Featured Images selective generation </h2>
258
+ <p class="image-box-description">Execute custom generation or unset featured images applying this
259
+ tool for single or some posts.</p></div>
260
  </div>
261
+ </div>
262
+ <div class="widget-container">
263
+ <div class="image">
264
+ <img width="500" src="https://cm-wp.com/wp-content/uploads/2019/09/7.png"
265
+ class="attachment-large size-large" alt="">
266
  </div>
267
+ </div>
268
 
269
+ <div class="widget-container">
270
+ <div class="divider">
271
+ <hr>
 
 
272
  </div>
273
+ </div>
274
+
275
+ <div class="heading-container">
276
+ <div class="image-box-wrapper"><a href="http://cm-wp.com/apt/pricing/"><img width="70" height="70"
277
+ src="https://cm-wp.com/wp-content/uploads/2019/09/icon-4-150x150.png"
278
+ class="attachment-thumbnail size-thumbnail"
279
+ alt=""></a>
280
+ <div class="image-box-content"><h2 class="image-box-title">Manual Featured Images Selection</h2>
281
+ <p class="image-box-description">Select featured images from the post images when you are in
282
+ dashboard’s Posts list. This feature is available for users who have PRO account.</p></div>
283
  </div>
284
+ </div>
285
+ <div class="widget-container">
286
+ <div class="image">
287
+ <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/04.gif"
288
+ class="attachment-full size-full" alt=""></div>
289
+ </div>
290
+ <div class="widget-container">
291
+ <div class="text-editor clearfix"><p>You can add featured images even if the picture is not uploaded to the
292
+ medialibrary but inserted into the post using an external link or shortcode.</p></div>
293
+ </div>
294
 
295
+ <div class="widget-container">
296
+ <div class="divider">
297
+ <hr>
 
298
  </div>
299
+ </div>
300
 
301
+ <div class="heading-container">
302
+ <div class="image-box-wrapper"><img width="70" height="70"
303
+ src="https://cm-wp.com/wp-content/uploads/2019/09/icon1-150x150.png"
304
+ class="attachment-thumbnail size-thumbnail" alt="">
305
+ <div class="image-box-content"><h2 class="image-box-title">Image search in Google, Unsplash,
306
+ Pixabay</h2>
307
+ <p class="image-box-description">Search for images with Creative Commons license.</p></div>
308
  </div>
309
+ </div>
310
+ <div class="widget-container">
311
+ <div class="text-editor clearfix"><p><span style="font-weight: 400;">It appeared new tab in the Media Library =&gt; </span><i><span
312
+ style="font-weight: 400;">Add from APT. </span></i><span style="font-weight: 400;">There you can find images using popular free stock sites:&nbsp; Google, Pixabay <a
313
+ href="https://cm-wp.com/apt/pricing/?utm_source=wordpress.org&amp;utm_content=license_page">(pro)</a>, Unsplash <a
314
+ href="https://cm-wp.com/apt/pricing/?utm_source=wordpress.org&amp;utm_content=license_page">(pro)</a>. Just enter a search query, choose the image and insert it into the Media library by single click.</span>
315
+ </p></div>
316
+ </div>
317
+ <div class="widget-container">
318
+ <div class="image">
319
+ <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/05.gif"
320
+ class="attachment-large size-large" alt="">
321
  </div>
322
+ </div>
323
 
324
+ <div class="widget-container">
325
+ <div class="divider">
326
+ <hr>
 
327
  </div>
328
+ </div>
329
 
330
+ <div class="heading-container">
331
+ <div class="image-box-wrapper"><img width="70" height="70"
332
+ src="https://cm-wp.com/wp-content/uploads/2019/09/icon-5-150x150.png"
333
+ class="attachment-thumbnail size-thumbnail" alt="">
334
+ <div class="image-box-content"><h2 class="image-box-title">Compatibility with Elementor and
335
+ Gutenberg</h2>
336
+ <p class="image-box-description">Auto Featured Image is compatible with Classic Editor, Gutenberg
337
+ and Elementor plugins.</p></div>
338
  </div>
339
+ </div>
340
+ <div class="widget-container">
341
+ <div class="image">
342
+ <img width="1024" src="https://cm-wp.com/wp-content/uploads/2019/10/007.gif"
343
+ class="attachment-large size-large" alt="">
344
  </div>
345
+ </div>
346
 
347
+ <div class="widget-container">
348
+ <div class="divider">
349
+ <hr>
 
 
 
 
350
  </div>
351
  </div>
352
+
353
+ <div class="heading-container">
354
+ <p>
355
+ <a href="https://cm-wp.com/apt/apt-f-a-q/?utm_medium=right_banner&amp;utm_campaign=apt&amp;utm_content=link"
356
+ target="_blank" rel="noopener">F.A.Q.</a>
357
+ </p>
358
+ <p>
359
+ <a href="https://forum.webcraftic.com/" target="_blank" rel="noopener">Get starting free support</a>
360
+ </p>
361
+ </div>
362
+ </div>
363
+ </div>
admin/views/tab-license.php CHANGED
@@ -1,100 +1,100 @@
1
  <div class="wrap">
2
- <div class="factory-bootstrap-426 factory-fontawesome-000">
3
  <?php wp_nonce_field( 'license' ); ?>
4
- <div id="wapt-license-wrapper"
5
- data-loader="<?php echo WAPT_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
6
- data-plugin="<?php echo get_class( $this->plugin ) ?>">
7
 
8
- <div class="factory-bootstrap-413 onp-page-wrap <?php echo $this->get_license_type() ?>-license-manager-content"
9
- id="license-manager">
10
- <div>
11
- <h3><?php printf( __( 'Activate %s', 'apt' ), $this->plan_name ) ?></h3>
12
  <?php echo $this->get_plan_description() ?>
13
- </div>
14
- <br>
15
 
16
- <div class="onp-container">
17
- <div class="license-details">
18
  <?php if ( $this->get_license_type() == 'free' ): ?>
19
- <a href="<?php echo $this->plugin->get_support()->get_pricing_url( true, 'license_page' ); ?>"
20
- class="purchase-premium" target="_blank" rel="noopener">
21
  <span class="btn btn-gold btn-inner-wrap">
22
  <?php printf( __( 'Upgrade to Premium', 'apt' ), $this->premium->get_price() ) ?>
23
  </span>
24
- </a>
25
- <p><?php printf( __( 'Your current license for %1$s:', 'apt' ), $this->plugin->getPluginTitle() ) ?></p>
26
  <?php endif; ?>
27
- <div class="license-details-block <?php echo $this->get_license_type() ?>-details-block">
28
  <?php if ( $this->is_premium ): ?>
29
- <a data-action="deactivate" href="#"
30
- class="btn btn-default btn-small license-delete-button wapt-control-btn">
31
  <?php _e( 'Delete Key', 'apt' ) ?>
32
- </a>
33
- <a data-action="sync" href="#"
34
- class="btn btn-default btn-small license-synchronization-button wapt-control-btn">
35
  <?php _e( 'Synchronization', 'apt' ) ?>
36
- </a>
37
  <?php endif; ?>
38
- <h3>
39
  <?php echo ucfirst( $this->get_plan() ); ?>
40
 
41
  <?php if ( $this->is_premium && $this->premium_has_subscription ): ?>
42
- <span style="font-size: 15px;">
43
  (<?php printf( __( 'Automatic renewal, every %s', '' ), esc_attr( $this->get_billing_cycle_readable() ) ); ?>
44
  )
45
  </span>
46
  <?php endif; ?>
47
- </h3>
48
  <?php if ( $this->is_premium ): ?>
49
- <div class="license-key-identity">
50
- <code><?php echo esc_attr( $this->get_hidden_license_key() ) ?></code>
51
- </div>
52
  <?php endif; ?>
53
- <div class="license-key-description">
54
- <p><?php _e( 'Public License is a GPLv2 compatible license allowing you to change and use this version of the plugin for free. Please keep in mind this license covers only free edition of the plugin. Premium versions are distributed with other type of a license.', 'apt' ) ?>
55
- </p>
56
  <?php if ( $this->is_premium && $this->premium_has_subscription ): ?>
57
- <p class="activate-trial-hint">
58
  <?php _e( 'You use a paid subscription for the plugin updates. In case you don’t want to receive paid updates, please, click <a data-action="unsubscribe" class="wapt-control-btn" href="#">cancel subscription</a>', 'apt' ) ?>
59
- </p>
60
  <?php endif; ?>
61
 
62
  <?php if ( $this->get_license_type() == 'trial' ): ?>
63
- <p class="activate-error-hint">
64
  <?php printf( __( 'Your license has expired, please extend the license to get updates and support.', 'apt' ), '' ) ?>
65
- </p>
66
  <?php endif; ?>
67
- </div>
68
- <table class="license-params" colspacing="0" colpadding="0">
69
- <tr>
70
- <!--<td class="license-param license-param-domain">
71
  <span class="license-value"><?php echo esc_attr( $_SERVER['SERVER_NAME'] ); ?></span>
72
  <span class="license-value-name"><?php _e( 'domain', 'apt' ) ?></span>
73
  </td>-->
74
- <td class="license-param license-param-days">
75
- <span class="license-value"><?php echo $this->get_plan() ?></span>
76
- <span class="license-value-name"><?php _e( 'plan', 'apt' ) ?></span>
77
- </td>
78
  <?php if ( $this->is_premium ) : ?>
79
- <td class="license-param license-param-sites">
80
  <span class="license-value">
81
  <?php echo esc_attr( $this->premium_license->get_count_active_sites() ); ?>
82
  <?php _e( 'of', 'apt' ) ?>
83
  <?php echo esc_attr( $this->premium_license->get_sites_quota() ); ?></span>
84
- <span class="license-value-name"><?php _e( 'active sites', 'apt' ) ?></span>
85
- </td>
86
  <?php endif; ?>
87
- <td class="license-param license-param-version">
88
- <span class="license-value"><?php echo $this->plugin->getPluginVersion() ?></span>
89
- <span class="license-value-name"><span><?php _e( 'version', 'apt' ) ?></span></span>
90
- </td>
91
  <?php if ( $this->is_premium ): ?>
92
- <td class="license-param license-param-days">
93
  <?php if ( $this->get_license_type() == 'trial' ): ?>
94
- <span class="license-value"><?php _e( 'EXPIRED!', 'apt' ) ?></span>
95
- <span class="license-value-name"><?php _e( 'please update the key', 'apt' ) ?></span>
96
  <?php else: ?>
97
- <span class="license-value">
98
  <?php
99
  if ( $this->premium_license->is_lifetime() ) {
100
  echo 'infiniate';
@@ -104,44 +104,44 @@
104
  ?>
105
  <small> <?php _e( 'day(s)', 'apt' ) ?></small>
106
  </span>
107
- <span class="license-value-name"><?php _e( 'remained', 'apt' ) ?></span>
108
  <?php endif; ?>
109
- </td>
110
  <?php endif; ?>
111
- </tr>
112
- </table>
113
- </div>
114
- </div>
115
- <div class="license-input">
116
- <form action="" method="post">
117
  <?php if ( $this->is_premium ): ?>
118
- <p><?php _e( 'Have a key to activate the premium version? Paste it here:', 'apt' ) ?><p>
119
  <?php else: ?>
120
- <p><?php _e( 'Have a key to activate the plugin? Paste it here:', 'apt' ) ?>
121
- <p>
122
  <?php endif; ?>
123
- <button data-action="activate" class="btn btn-default wapt-control-btn"
124
- type="button"
125
- id="license-submit">
126
  <?php _e( 'Submit Key', 'apt' ) ?>
127
- </button>
128
- <div class="license-key-wrap">
129
- <input type="text" id="license-key" name="licensekey" value=""
130
- class="form-control"/>
131
- </div>
132
  <?php if ( $this->is_premium ): ?>
133
- <p style="margin-top: 10px;">
134
  <?php printf( __( '<a href="%s" target="_blank" rel="noopener">Lean more</a> about the premium version and get the license key to activate it now!', 'apt' ), $this->plugin->get_support()->get_pricing_url( true, 'license_page' ) ); ?>
135
- </p>
136
  <?php else: ?>
137
- <p style="margin-top: 10px;">
138
  <?php printf( __( 'Can’t find your key? Go to <a href="%s" target="_blank" rel="noopener">this page</a> and login using the e-mail address associated with your purchase.', 'apt' ), 'https://users.freemius.com/password/recover' ) ?>
139
- </p>
140
  <?php endif; ?>
141
- </form>
142
- </div>
143
- </div>
144
- </div>
145
- </div>
146
- </div>
147
  </div>
1
  <div class="wrap">
2
+ <div class="factory-bootstrap-430 factory-fontawesome-000">
3
  <?php wp_nonce_field( 'license' ); ?>
4
+ <div id="wapt-license-wrapper"
5
+ data-loader="<?php echo WAPT_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
6
+ data-plugin="<?php echo get_class( $this->plugin ) ?>">
7
 
8
+ <div class="factory-bootstrap-413 onp-page-wrap <?php echo $this->get_license_type() ?>-license-manager-content"
9
+ id="license-manager">
10
+ <div>
11
+ <h3><?php printf( __( 'Activate %s', 'apt' ), $this->plan_name ) ?></h3>
12
  <?php echo $this->get_plan_description() ?>
13
+ </div>
14
+ <br>
15
 
16
+ <div class="onp-container">
17
+ <div class="license-details">
18
  <?php if ( $this->get_license_type() == 'free' ): ?>
19
+ <a href="<?php echo $this->plugin->get_support()->get_pricing_url( true, 'license_page' ); ?>"
20
+ class="purchase-premium" target="_blank" rel="noopener">
21
  <span class="btn btn-gold btn-inner-wrap">
22
  <?php printf( __( 'Upgrade to Premium', 'apt' ), $this->premium->get_price() ) ?>
23
  </span>
24
+ </a>
25
+ <p><?php printf( __( 'Your current license for %1$s:', 'apt' ), $this->plugin->getPluginTitle() ) ?></p>
26
  <?php endif; ?>
27
+ <div class="license-details-block <?php echo $this->get_license_type() ?>-details-block">
28
  <?php if ( $this->is_premium ): ?>
29
+ <a data-action="deactivate" href="#"
30
+ class="btn btn-default btn-small license-delete-button wapt-control-btn">
31
  <?php _e( 'Delete Key', 'apt' ) ?>
32
+ </a>
33
+ <a data-action="sync" href="#"
34
+ class="btn btn-default btn-small license-synchronization-button wapt-control-btn">
35
  <?php _e( 'Synchronization', 'apt' ) ?>
36
+ </a>
37
  <?php endif; ?>
38
+ <h3>
39
  <?php echo ucfirst( $this->get_plan() ); ?>
40
 
41
  <?php if ( $this->is_premium && $this->premium_has_subscription ): ?>
42
+ <span style="font-size: 15px;">
43
  (<?php printf( __( 'Automatic renewal, every %s', '' ), esc_attr( $this->get_billing_cycle_readable() ) ); ?>
44
  )
45
  </span>
46
  <?php endif; ?>
47
+ </h3>
48
  <?php if ( $this->is_premium ): ?>
49
+ <div class="license-key-identity">
50
+ <code><?php echo esc_attr( $this->get_hidden_license_key() ) ?></code>
51
+ </div>
52
  <?php endif; ?>
53
+ <div class="license-key-description">
54
+ <p><?php _e( 'Public License is a GPLv2 compatible license allowing you to change and use this version of the plugin for free. Please keep in mind this license covers only free edition of the plugin. Premium versions are distributed with other type of a license.', 'apt' ) ?>
55
+ </p>
56
  <?php if ( $this->is_premium && $this->premium_has_subscription ): ?>
57
+ <p class="activate-trial-hint">
58
  <?php _e( 'You use a paid subscription for the plugin updates. In case you don’t want to receive paid updates, please, click <a data-action="unsubscribe" class="wapt-control-btn" href="#">cancel subscription</a>', 'apt' ) ?>
59
+ </p>
60
  <?php endif; ?>
61
 
62
  <?php if ( $this->get_license_type() == 'trial' ): ?>
63
+ <p class="activate-error-hint">
64
  <?php printf( __( 'Your license has expired, please extend the license to get updates and support.', 'apt' ), '' ) ?>
65
+ </p>
66
  <?php endif; ?>
67
+ </div>
68
+ <table class="license-params" colspacing="0" colpadding="0">
69
+ <tr>
70
+ <!--<td class="license-param license-param-domain">
71
  <span class="license-value"><?php echo esc_attr( $_SERVER['SERVER_NAME'] ); ?></span>
72
  <span class="license-value-name"><?php _e( 'domain', 'apt' ) ?></span>
73
  </td>-->
74
+ <td class="license-param license-param-days">
75
+ <span class="license-value"><?php echo $this->get_plan() ?></span>
76
+ <span class="license-value-name"><?php _e( 'plan', 'apt' ) ?></span>
77
+ </td>
78
  <?php if ( $this->is_premium ) : ?>
79
+ <td class="license-param license-param-sites">
80
  <span class="license-value">
81
  <?php echo esc_attr( $this->premium_license->get_count_active_sites() ); ?>
82
  <?php _e( 'of', 'apt' ) ?>
83
  <?php echo esc_attr( $this->premium_license->get_sites_quota() ); ?></span>
84
+ <span class="license-value-name"><?php _e( 'active sites', 'apt' ) ?></span>
85
+ </td>
86
  <?php endif; ?>
87
+ <td class="license-param license-param-version">
88
+ <span class="license-value"><?php echo $this->plugin->getPluginVersion() ?></span>
89
+ <span class="license-value-name"><span><?php _e( 'version', 'apt' ) ?></span></span>
90
+ </td>
91
  <?php if ( $this->is_premium ): ?>
92
+ <td class="license-param license-param-days">
93
  <?php if ( $this->get_license_type() == 'trial' ): ?>
94
+ <span class="license-value"><?php _e( 'EXPIRED!', 'apt' ) ?></span>
95
+ <span class="license-value-name"><?php _e( 'please update the key', 'apt' ) ?></span>
96
  <?php else: ?>
97
+ <span class="license-value">
98
  <?php
99
  if ( $this->premium_license->is_lifetime() ) {
100
  echo 'infiniate';
104
  ?>
105
  <small> <?php _e( 'day(s)', 'apt' ) ?></small>
106
  </span>
107
+ <span class="license-value-name"><?php _e( 'remained', 'apt' ) ?></span>
108
  <?php endif; ?>
109
+ </td>
110
  <?php endif; ?>
111
+ </tr>
112
+ </table>
113
+ </div>
114
+ </div>
115
+ <div class="license-input">
116
+ <form action="" method="post">
117
  <?php if ( $this->is_premium ): ?>
118
+ <p><?php _e( 'Have a key to activate the premium version? Paste it here:', 'apt' ) ?><p>
119
  <?php else: ?>
120
+ <p><?php _e( 'Have a key to activate the plugin? Paste it here:', 'apt' ) ?>
121
+ <p>
122
  <?php endif; ?>
123
+ <button data-action="activate" class="btn btn-default wapt-control-btn"
124
+ type="button"
125
+ id="license-submit">
126
  <?php _e( 'Submit Key', 'apt' ) ?>
127
+ </button>
128
+ <div class="license-key-wrap">
129
+ <input type="text" id="license-key" name="licensekey" value=""
130
+ class="form-control"/>
131
+ </div>
132
  <?php if ( $this->is_premium ): ?>
133
+ <p style="margin-top: 10px;">
134
  <?php printf( __( '<a href="%s" target="_blank" rel="noopener">Lean more</a> about the premium version and get the license key to activate it now!', 'apt' ), $this->plugin->get_support()->get_pricing_url( true, 'license_page' ) ); ?>
135
+ </p>
136
  <?php else: ?>
137
+ <p style="margin-top: 10px;">
138
  <?php printf( __( 'Can’t find your key? Go to <a href="%s" target="_blank" rel="noopener">this page</a> and login using the e-mail address associated with your purchase.', 'apt' ), 'https://users.freemius.com/password/recover' ) ?>
139
+ </p>
140
  <?php endif; ?>
141
+ </form>
142
+ </div>
143
+ </div>
144
+ </div>
145
+ </div>
146
+ </div>
147
  </div>
admin/views/tab-main.php CHANGED
@@ -1,29 +1,115 @@
1
  <div class="wrap">
2
  <h2><?php esc_html_e( 'Generate Featured images for posts', 'apt' ) ?></h2>
3
- <div class="factory-bootstrap-426 factory-fontawesome-000">
4
  <div class="row">
5
  <div class="col-md-9">
6
 
7
  <div class="row wrap apt-filter-row">
8
- <?php
9
- if(auto_post_thumbnails()->is_premium())
10
- do_action( 'wapt/filter_form_print');
11
- else {
12
- echo '<div class="col-md-12">';
13
- echo '<a target="_blank" href="'.WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ).'"><img src="'.WAPT_PLUGIN_URL.'/admin/assets/img/premium_filter.png"></a><br />';
14
- printf( __( 'Advanced filter form available in <a href="%s">Premium version</a>', 'aptp' ), WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ) );
15
- echo '</div>';
16
- }
17
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  <div class="col-md-12">&nbsp;</div>
19
 
20
- <div class="col-md-12">
21
- <button class="button button-primary button-large hide-if-no-js" name="generate-post-thumbnails" id="generate-post-thumbnails">
22
- <?php esc_attr_e( 'Generate Featured images', 'apt' ) ?>
23
- </button>&nbsp;
24
- <button class="button button-danger button-large hide-if-no-js" name="delete-post-thumbnails" id="delete-post-thumbnails">
25
- <?php esc_attr_e( 'Delete Featured images', 'apt' ) ?>
26
- </button>
 
 
 
 
 
 
27
  </div>
28
 
29
  <div class="col-md-12">&nbsp;</div>
@@ -46,13 +132,13 @@
46
  </noscript>
47
  <!-- esc_html_e( 'We are generating post thumbnails. Please be patient!', 'apt' ); -->
48
  <script type="text/javascript">
49
- // <![CDATA[
50
- jQuery(document).ready(function($) {
51
- jQuery('#generate-post-thumbnails').on('click', function(event) {
52
  rt_images = [];
53
 
54
- $("#generate-post-thumbnails").attr('disabled','');
55
- $("#delete-post-thumbnails").attr('disabled','');
56
  $("#message").hide();
57
  $("#genpostthumbsbar").show();
58
  $("#genpostthumbsbar").progressbar();
@@ -61,16 +147,16 @@
61
  $.post("admin-ajax.php", {
62
  action: "get-posts-ids",
63
  withThumb: 0,
64
- <?php
65
- if(auto_post_thumbnails()->is_premium()) { ?>
66
  poststatus: $("#filter_poststatus").val(),
67
  posttype: $("#filter_posttype").val(),
68
  date_start: $("#filter_startdate").val(),
69
  date_end: $("#filter_enddate").val(),
70
  category: $("#filter_postcategory").val(),
71
- <?php } ?>
72
  _ajax_nonce: '<?php echo wp_create_nonce( 'get-posts' ); ?>'
73
- }, function(ids) {
74
  rt_images = JSON.parse("[" + ids + "]");
75
 
76
  var rt_total = rt_images.length;
@@ -83,19 +169,19 @@
83
  action: "generatepostthumbnail",
84
  id: id,
85
  _ajax_nonce: '<?php echo wp_create_nonce( 'generate-post-thumbnails' ); ?>'
86
- }, function(posted) {
87
- if( Number(posted) !== 0 ) {
88
  posted_count++;
89
  }
90
  rt_percent = (rt_count / rt_total) * 100;
91
  $("#genpostthumbsbar").progressbar("value", rt_percent);
92
- $("#genpostthumbsbar-percent").html(Math.round(rt_percent) + "% ("+ rt_count + "/" + rt_total +")");
93
  rt_count = rt_count + 1;
94
 
95
- if( rt_images.length ) {
96
  genPostThumb(rt_images.shift());
97
  } else {
98
- setTimeout(function(){
99
  $("#genpostthumbsbar").hide();
100
  $("#genpostthumbsbar").progressbar("value", 0);
101
  $("#generate-post-thumbnails").removeAttr('disabled');
@@ -111,8 +197,8 @@
111
  });
112
  });
113
  //delete thumbnails
114
- jQuery('#delete-post-thumbnails').on('click', function(event) {
115
- if(!confirm('Are sure to delete thumbnails from posts?'))
116
  return;
117
 
118
  rt_images = [];
@@ -126,16 +212,16 @@
126
  $.post("admin-ajax.php", {
127
  action: "get-posts-ids",
128
  withThumb: 1,
129
- <?php
130
- if(auto_post_thumbnails()->is_premium()) { ?>
131
  poststatus: $("#filter_poststatus").val(),
132
  posttype: $("#filter_posttype").val(),
133
  date_start: $("#filter_startdate").val(),
134
  date_end: $("#filter_enddate").val(),
135
  category: $("#filter_postcategory").val(),
136
- <?php } ?>
137
  _ajax_nonce: '<?php echo wp_create_nonce( 'get-posts' ); ?>'
138
- }, function(ids) {
139
  rt_images = JSON.parse("[" + ids + "]");
140
 
141
  var rt_total = rt_images.length;
@@ -148,8 +234,8 @@
148
  action: "delete_post_thumbnails",
149
  id: id,
150
  _ajax_nonce: '<?php echo wp_create_nonce( 'delete-post-thumbnails' ); ?>'
151
- }, function(posted) {
152
- if( Boolean(posted) ) {
153
  posted_count++;
154
  }
155
  rt_percent = (rt_count / rt_total) * 100;
@@ -157,7 +243,7 @@
157
  $("#genpostthumbsbar-percent").html(Math.round(rt_percent) + "%");
158
  rt_count = rt_count + 1;
159
 
160
- if( rt_images.length ) {
161
  delPostThumb(rt_images.shift());
162
  } else {
163
  $("#genpostthumbsbar").hide();
@@ -172,8 +258,8 @@
172
  delPostThumb(rt_images.shift());
173
  });
174
  });
175
- });
176
- // ]]>
177
  </script>
178
  </div>
179
  </div>
1
  <div class="wrap">
2
  <h2><?php esc_html_e( 'Generate Featured images for posts', 'apt' ) ?></h2>
3
+ <div class="factory-bootstrap-430 factory-fontawesome-000">
4
  <div class="row">
5
  <div class="col-md-9">
6
 
7
  <div class="row wrap apt-filter-row">
8
+ <?php
9
+ if ( auto_post_thumbnails()->is_premium() ) {
10
+ do_action( 'wapt/filter_form_print' );
11
+ } else {
12
+ $stati = get_post_stati( array(
13
+ '_builtin' => true,
14
+ "show_in_admin_status_list" => true
15
+ ), 'objects' );
16
+
17
+ $post_types = get_post_types( array(
18
+ 'public' => true,
19
+ 'publicly_queryable' => 1
20
+ ), 'objects', 'or' );
21
+ unset( $post_types['attachment'] ); // удалим attachment
22
+
23
+ $categories = get_categories( array(
24
+ 'taxonomy' => 'category',
25
+ 'type' => 'post',
26
+ 'orderby' => 'name',
27
+ 'order' => 'ASC',
28
+ ) );
29
+ ?>
30
+ <div class="row">
31
+ <div class="col-md-2">
32
+ <label for="filter_posttype"
33
+ class="apt-filter-label"><?php esc_html_e( 'Post type', 'aptp' ) ?></label>
34
+ </div>
35
+ <div class="col-md-10">
36
+ <select name="filter_posttype" id="filter_posttype" class="apt-filter-input">
37
+ <option value="post"><?= __( 'Posts', 'apt' ); ?></option>
38
+ <option value="page"><?= __( 'Pages', 'apt' ); ?></option>
39
+ </select>
40
+ </div>
41
+ </div>
42
+
43
+ <div class="col-md-12">&nbsp;</div>
44
+
45
+ <div class="row wapt-pro-row">
46
+ <div class="col-md-2">
47
+ <label for="filter_poststatus"
48
+ class="apt-filter-label"><?php esc_html_e( 'Post status', 'aptp' ) ?></label>
49
+ </div>
50
+ <div class="col-md-10">
51
+ <select name="filter_poststatus" id="filter_poststatus" class="apt-filter-input" tabindex="-1">
52
+ <option value="">&nbsp;</option>
53
+ <?php
54
+ foreach ( $stati as $status ) {
55
+ echo '<option value="' . $status->name . '">' . $status->label . '</option>';
56
+ }
57
+ ?>
58
+ </select><span>&nbsp;</span>
59
+ </div>
60
+ </div>
61
+
62
+ <div class="col-md-12">&nbsp;</div>
63
+
64
+ <div class="row wapt-pro-row">
65
+ <div class="col-md-2">
66
+ <label for="filter_postcategory"
67
+ class="apt-filter-label"><?php esc_html_e( 'Post category', 'aptp' ) ?></label>
68
+ </div>
69
+ <div class="col-md-10">
70
+ <select name="filter_postcategory" id="filter_postcategory" class="apt-filter-input" tabindex="-1">
71
+ <option value="">&nbsp;</option>
72
+ <?php
73
+ foreach ( $categories as $cat ) {
74
+ echo '<option value="' . $cat->term_id . '">' . $cat->name . ' (' . $cat->count . ')</option>';
75
+ }
76
+ ?>
77
+ </select><span>&nbsp;</span>
78
+ </div>
79
+ </div>
80
+
81
+ <div class="col-md-12">&nbsp;</div>
82
+
83
+ <div class="row wapt-pro-row">
84
+ <div class="col-md-2">
85
+ <label for="filter_startdate"
86
+ class="apt-filter-label"><?php esc_html_e( 'Date from', 'aptp' ) ?></label>
87
+ </div>
88
+ <div class="col-md-10">
89
+ <input type="text" name="filter_startdate" id="filter_startdate"
90
+ class="apt-filter-input datepicker" tabindex="-1"><span>&nbsp;</span>
91
+ <label for="filter_enddate"
92
+ class="apt-filter-label"><?php esc_html_e( 'to', 'aptp' ) ?></label>
93
+ <input type="text" name="filter_enddate" id="filter_enddate"
94
+ class="apt-filter-input datepicker" tabindex="-1"><span>&nbsp;</span>
95
+ </div>
96
+ </div>
97
+ <?php } ?>
98
  <div class="col-md-12">&nbsp;</div>
99
 
100
+ <div class="row">
101
+ <div class="col-md-12">
102
+ <button class="button button-primary button-large hide-if-no-js"
103
+ name="generate-post-thumbnails"
104
+ id="generate-post-thumbnails">
105
+ <?php esc_attr_e( 'Generate Featured images', 'apt' ) ?>
106
+ </button>&nbsp;
107
+ <button class="button button-danger button-large hide-if-no-js"
108
+ name="delete-post-thumbnails"
109
+ id="delete-post-thumbnails">
110
+ <?php esc_attr_e( 'Delete Featured images', 'apt' ) ?>
111
+ </button>
112
+ </div>
113
  </div>
114
 
115
  <div class="col-md-12">&nbsp;</div>
132
  </noscript>
133
  <!-- esc_html_e( 'We are generating post thumbnails. Please be patient!', 'apt' ); -->
134
  <script type="text/javascript">
135
+ // <![CDATA[
136
+ jQuery(document).ready(function ($) {
137
+ jQuery('#generate-post-thumbnails').on('click', function (event) {
138
  rt_images = [];
139
 
140
+ $("#generate-post-thumbnails").attr('disabled', '');
141
+ $("#delete-post-thumbnails").attr('disabled', '');
142
  $("#message").hide();
143
  $("#genpostthumbsbar").show();
144
  $("#genpostthumbsbar").progressbar();
147
  $.post("admin-ajax.php", {
148
  action: "get-posts-ids",
149
  withThumb: 0,
150
+ <?php
151
+ if(auto_post_thumbnails()->is_premium()) { ?>
152
  poststatus: $("#filter_poststatus").val(),
153
  posttype: $("#filter_posttype").val(),
154
  date_start: $("#filter_startdate").val(),
155
  date_end: $("#filter_enddate").val(),
156
  category: $("#filter_postcategory").val(),
157
+ <?php } ?>
158
  _ajax_nonce: '<?php echo wp_create_nonce( 'get-posts' ); ?>'
159
+ }, function (ids) {
160
  rt_images = JSON.parse("[" + ids + "]");
161
 
162
  var rt_total = rt_images.length;
169
  action: "generatepostthumbnail",
170
  id: id,
171
  _ajax_nonce: '<?php echo wp_create_nonce( 'generate-post-thumbnails' ); ?>'
172
+ }, function (posted) {
173
+ if (Number(posted) !== 0) {
174
  posted_count++;
175
  }
176
  rt_percent = (rt_count / rt_total) * 100;
177
  $("#genpostthumbsbar").progressbar("value", rt_percent);
178
+ $("#genpostthumbsbar-percent").html(Math.round(rt_percent) + "% (" + rt_count + "/" + rt_total + ")");
179
  rt_count = rt_count + 1;
180
 
181
+ if (rt_images.length) {
182
  genPostThumb(rt_images.shift());
183
  } else {
184
+ setTimeout(function () {
185
  $("#genpostthumbsbar").hide();
186
  $("#genpostthumbsbar").progressbar("value", 0);
187
  $("#generate-post-thumbnails").removeAttr('disabled');
197
  });
198
  });
199
  //delete thumbnails
200
+ jQuery('#delete-post-thumbnails').on('click', function (event) {
201
+ if (!confirm('Are sure to delete thumbnails from posts?'))
202
  return;
203
 
204
  rt_images = [];
212
  $.post("admin-ajax.php", {
213
  action: "get-posts-ids",
214
  withThumb: 1,
215
+ <?php
216
+ if(auto_post_thumbnails()->is_premium()) { ?>
217
  poststatus: $("#filter_poststatus").val(),
218
  posttype: $("#filter_posttype").val(),
219
  date_start: $("#filter_startdate").val(),
220
  date_end: $("#filter_enddate").val(),
221
  category: $("#filter_postcategory").val(),
222
+ <?php } ?>
223
  _ajax_nonce: '<?php echo wp_create_nonce( 'get-posts' ); ?>'
224
+ }, function (ids) {
225
  rt_images = JSON.parse("[" + ids + "]");
226
 
227
  var rt_total = rt_images.length;
234
  action: "delete_post_thumbnails",
235
  id: id,
236
  _ajax_nonce: '<?php echo wp_create_nonce( 'delete-post-thumbnails' ); ?>'
237
+ }, function (posted) {
238
+ if (Boolean(posted)) {
239
  posted_count++;
240
  }
241
  rt_percent = (rt_count / rt_total) * 100;
243
  $("#genpostthumbsbar-percent").html(Math.round(rt_percent) + "%");
244
  rt_count = rt_count + 1;
245
 
246
+ if (rt_images.length) {
247
  delPostThumb(rt_images.shift());
248
  } else {
249
  $("#genpostthumbsbar").hide();
258
  delPostThumb(rt_images.shift());
259
  });
260
  });
261
+ });
262
+ // ]]>
263
  </script>
264
  </div>
265
  </div>
admin/views/tab-settings.php CHANGED
@@ -3,51 +3,48 @@ global $form;
3
 
4
  $current_url = admin_url( 'admin.php?page=wapt_settings-' . WAPT_Plugin::app()->getPluginName() );
5
  $current_tab = 'general';
6
- $TABS = array(
7
- 'general' => array(
8
  'current' => false,
9
  'caption' => 'General',
10
- 'icon' => 'icon-general',
11
- 'url' => $current_url."&apt_tab=general",
12
  ),
13
  'img_generation' => array(
14
  'current' => false,
15
  'caption' => 'Image generation',
16
- 'icon' => 'icon-image',
17
- 'url' => $current_url."&apt_tab=img_generation",
18
  ),
19
- 'api' => array(
20
  'current' => false,
21
  'caption' => 'API',
22
- 'icon' => 'icon-api',
23
- 'url' => $current_url."&apt_tab=api",
24
  ),
25
  );
26
- if(isset($_GET['apt_tab']) && !empty($_GET['apt_tab']))
27
- {
28
- $current_tab = htmlspecialchars( $_GET['apt_tab']);
29
- $current_url .= "&apt_tab={$current_tab}";
30
- $TABS[$current_tab]['current'] = true;
31
- }
32
- else
33
- {
34
- $current_tab = 'general';
35
- $current_url .= "&apt_tab={$current_tab}";
36
- $TABS[$current_tab]['current'] = true;
37
  }
38
  ?>
39
- <div class="wis-container">
40
- <div class="wapt-page-title"><h1><?php _e( 'Settings', 'apt' ) ?> <?php echo WAPT_Plugin::app()->getPluginTitle()." ".WAPT_Plugin::app()->getPluginVersion(); ?></h1></div>
 
 
41
  <div id="tabs" class="tabs">
42
  <nav>
43
  <ul>
44
  <?php
45
- foreach ($TABS as $key => $tab)
46
- {
47
- if($tab['current']) {
48
  echo "<li class='tab-current'>";
49
- }
50
- else {
51
  echo "<li>";
52
  }
53
  echo "<a href='{$tab['url']}' class='{$tab['icon']}'><span>{$tab['caption']}</span></a>";
@@ -57,67 +54,72 @@ else
57
  </ul>
58
  </nav>
59
  <div class="content">
60
- <section id="section-<?php echo $current_tab;?>">
61
  <div class="wrap">
62
- <div class="factory-bootstrap-426 factory-fontawesome-000">
63
  <div class="row">
64
  <div class="col-md-8">
65
  <form method="post" class="form-horizontal">
66
- <?php if ( ! empty( $wbcr_saved ) ) { ?>
67
  <div id="message" class="alert alert-success">
68
  <p><?php _e( 'The settings have been updated successfully!', 'insert-php' ) ?></p>
69
  </div>
70
- <?php } ?>
71
  <div>
72
- <?php $form->html(); ?>
73
  </div>
74
  <div class="form-group form-horizontal">
75
 
76
  <div class="control-group controls col-sm-10">
77
- <?php wp_nonce_field( $this->plugin->getPrefix() . 'settings_form', $this->plugin->getPrefix() . 'nonce' ); ?>
78
- <input name="<?php echo $this->plugin->getPrefix() . 'saved' ?>" class="btn btn-primary" type="submit" value="<?php _e( 'Save settings', 'insert-php' ) ?>"/>
 
 
79
  </div>
80
  </div>
81
  </form>
82
  </div>
83
  <div class="col-md-4">
84
- <?php if($current_tab == 'img_generation') { ?>
85
- <div id="wapt-image-preview" class="wapt-image-preview">
86
- <div class="wapt-image-preview-title"><h3>Post thumbnail preview</h3></div>
87
- <?php
88
- $format = WAPT_Plugin::app()->getOption( "image-type", "jpg" );
89
- switch($format)
90
- {
91
- case 'png':
92
- $format = 'png';
93
- break;
94
- case 'jpg':
95
- case 'jpeg':
96
- default:
97
- $format = 'jpg';
98
- break;
99
- }
100
 
101
- $posts = get_posts( array( 'numberposts' => 0, ) );
102
- $id = rand(0, count($posts)-1);
103
- if(count($posts) !== 0) $txt = $posts[$id]->post_title;
104
- else $txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas aliquet turpis quis ex elementum malesuada';
 
 
 
105
 
106
- $image = apply_filters('wapt/generate/image', AutoPostThumbnails::generate_image_with_text($txt), $txt);
107
 
108
- $image->save( WAPT_PLUGIN_DIR . "/preview.{$format}", 100, $format);
109
- ?>
110
- <img src="<?php echo WAPT_PLUGIN_URL . "/preview.{$format}?".time(); ?>" width="100%" alt="">
111
- </div>
112
- <?php } ?>
 
113
 
114
- <?php if(!WAPT_Plugin::app()->is_premium()) { ?>
115
  <div id="wapt-dashboard-widget" class="wapt-right-widget">
116
  <div style="padding:20px">
117
- <?php WAPT_Plugin::app()->get_adverts_manager()->render_placement( 'right_sidebar'); ?>
118
  </div>
119
  </div>
120
- <?php } ?>
121
  </div>
122
  </div>
123
  </div>
@@ -131,10 +133,12 @@ else
131
  <p><strong>Having Issues?</strong></p>
132
  <div class="wbcr-clr-support-widget-body">
133
  <p>
134
- We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you! </p>
 
135
  <ul>
136
  <li><span class="dashicons dashicons-sos"></span>
137
- <a href="https://forum.webcraftic.com" target="_blank" rel="noopener">Get starting free support</a>
 
138
  </li>
139
  </ul>
140
  </div>
3
 
4
  $current_url = admin_url( 'admin.php?page=wapt_settings-' . WAPT_Plugin::app()->getPluginName() );
5
  $current_tab = 'general';
6
+ $TABS = array(
7
+ 'general' => array(
8
  'current' => false,
9
  'caption' => 'General',
10
+ 'icon' => 'icon-general',
11
+ 'url' => $current_url . "&apt_tab=general",
12
  ),
13
  'img_generation' => array(
14
  'current' => false,
15
  'caption' => 'Image generation',
16
+ 'icon' => 'icon-image',
17
+ 'url' => $current_url . "&apt_tab=img_generation",
18
  ),
19
+ 'api' => array(
20
  'current' => false,
21
  'caption' => 'API',
22
+ 'icon' => 'icon-api',
23
+ 'url' => $current_url . "&apt_tab=api",
24
  ),
25
  );
26
+ if ( isset( $_GET['apt_tab'] ) && ! empty( $_GET['apt_tab'] ) ) {
27
+ $current_tab = htmlspecialchars( $_GET['apt_tab'] );
28
+ $current_url .= "&apt_tab={$current_tab}";
29
+ $TABS[ $current_tab ]['current'] = true;
30
+ } else {
31
+ $current_tab = 'general';
32
+ $current_url .= "&apt_tab={$current_tab}";
33
+ $TABS[ $current_tab ]['current'] = true;
 
 
 
34
  }
35
  ?>
36
+ <div class="wapt-container">
37
+ <div class="wapt-page-title">
38
+ <h1><?php _e( 'Settings of', 'apt' ) ?>&nbsp;<?php echo WAPT_Plugin::app()->getPluginTitle() . " " . WAPT_Plugin::app()->getPluginVersion(); ?></h1>
39
+ </div>
40
  <div id="tabs" class="tabs">
41
  <nav>
42
  <ul>
43
  <?php
44
+ foreach ( $TABS as $key => $tab ) {
45
+ if ( $tab['current'] ) {
 
46
  echo "<li class='tab-current'>";
47
+ } else {
 
48
  echo "<li>";
49
  }
50
  echo "<a href='{$tab['url']}' class='{$tab['icon']}'><span>{$tab['caption']}</span></a>";
54
  </ul>
55
  </nav>
56
  <div class="content">
57
+ <section id="section-<?php echo $current_tab; ?>">
58
  <div class="wrap">
59
+ <div class="factory-bootstrap-430 factory-fontawesome-000">
60
  <div class="row">
61
  <div class="col-md-8">
62
  <form method="post" class="form-horizontal">
63
+ <?php if ( ! empty( $wbcr_saved ) ) { ?>
64
  <div id="message" class="alert alert-success">
65
  <p><?php _e( 'The settings have been updated successfully!', 'insert-php' ) ?></p>
66
  </div>
67
+ <?php } ?>
68
  <div>
69
+ <?php $form->html(); ?>
70
  </div>
71
  <div class="form-group form-horizontal">
72
 
73
  <div class="control-group controls col-sm-10">
74
+ <?php wp_nonce_field( $this->plugin->getPrefix() . 'settings_form', $this->plugin->getPrefix() . 'nonce' ); ?>
75
+ <input name="<?php echo $this->plugin->getPrefix() . 'saved' ?>"
76
+ class="btn btn-primary" type="submit"
77
+ value="<?php _e( 'Save settings', 'insert-php' ) ?>"/>
78
  </div>
79
  </div>
80
  </form>
81
  </div>
82
  <div class="col-md-4">
83
+ <?php if ( $current_tab == 'img_generation' ) { ?>
84
+ <div id="wapt-image-preview" class="wapt-image-preview">
85
+ <div class="wapt-image-preview-title"><h3>Post thumbnail preview</h3></div>
86
+ <?php
87
+ $format = WAPT_Plugin::app()->getOption( "image-type", "jpg" );
88
+ switch ( $format ) {
89
+ case 'png':
90
+ $format = 'png';
91
+ break;
92
+ case 'jpg':
93
+ case 'jpeg':
94
+ default:
95
+ $format = 'jpg';
96
+ break;
97
+ }
 
98
 
99
+ $posts = get_posts( array( 'numberposts' => 0, ) );
100
+ $id = rand( 0, count( $posts ) - 1 );
101
+ if ( count( $posts ) !== 0 ) {
102
+ $txt = $posts[ $id ]->post_title;
103
+ } else {
104
+ $txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas aliquet turpis quis ex elementum malesuada';
105
+ }
106
 
107
+ $image = apply_filters( 'wapt/generate/image', AutoPostThumbnails::generate_image_with_text( $txt ), $txt );
108
 
109
+ $image->save( WAPT_PLUGIN_DIR . "/preview.{$format}", 100, $format );
110
+ ?>
111
+ <img src="<?php echo WAPT_PLUGIN_URL . "/preview.{$format}?" . time(); ?>"
112
+ width="100%" alt="">
113
+ </div>
114
+ <?php } ?>
115
 
116
+ <?php if ( ! WAPT_Plugin::app()->is_premium() ) { ?>
117
  <div id="wapt-dashboard-widget" class="wapt-right-widget">
118
  <div style="padding:20px">
119
+ <?php WAPT_Plugin::app()->get_adverts_manager()->render_placement( 'right_sidebar' ); ?>
120
  </div>
121
  </div>
122
+ <?php } ?>
123
  </div>
124
  </div>
125
  </div>
133
  <p><strong>Having Issues?</strong></p>
134
  <div class="wbcr-clr-support-widget-body">
135
  <p>
136
+ We provide free support for this plugin. If you are pushed with a problem, just create a new
137
+ ticket. We will definitely help you! </p>
138
  <ul>
139
  <li><span class="dashicons dashicons-sos"></span>
140
+ <a href="https://forum.webcraftic.com" target="_blank" rel="noopener">Get starting free
141
+ support</a>
142
  </li>
143
  </ul>
144
  </div>
auto-post-thumbnail.php CHANGED
@@ -1,16 +1,16 @@
1
  <?php
2
  /*
3
- Plugin Name: Auto Post Thumbnail
4
  Plugin URI: https://cm-wp.com/apt
5
- Description: Automatically generate the Post Thumbnail (Featured Thumbnail) from the first image in post (or any custom post type) only if Post Thumbnail is not set manually.
6
- Version: 3.7.0
7
  Author: Creativemotion <support@cm-wp.com>
8
  Author URI: cm-wp.com
9
  Text Domain: apt
10
  Domain Path: /languages
11
  */
12
 
13
- /* Copyright 2009 Creativemotion
14
 
15
  This program is free software; you can redistribute it and/or modify
16
  it under the terms of the GNU General Public License as published by
@@ -43,9 +43,12 @@ if ( ! defined( 'ABSPATH' ) ) {
43
  require_once( dirname( __FILE__ ) . '/libs/factory/core/includes/class-factory-requirements.php' );
44
 
45
  $plugin_info = array(
46
- 'prefix' => 'wapt_', // Префикс для базы данных и полей формы. Строка должна соответствовать условию [A-z0-9_].
47
- 'plugin_name' => 'wbcr_apt', // Кодовое название плагина, используется как уникальный идентификатор. Строка должна соответствовать условию [A-z0-9_].
48
- 'plugin_title' => __( 'Auto Post Thumbnail', 'apt' ), // Название плагина. То же что и Plugin Name. Используется в интерфейсе и сообщениях.
 
 
 
49
 
50
  // Служба поддержки
51
  // Указываем ссылки и имена страниц сайта плагина, чтобы иметь к ним доступ внутри плагина.
@@ -61,59 +64,80 @@ $plugin_info = array(
61
 
62
  // Настройка обновлений плагина
63
  // Имеется ввиду настройка обновлений из удаленного репозитория. Это может быть wordpress.org, freemius.com, codecanyon.com
64
- 'has_updates' => true, // Нужно ли проверять обновления для этого плагина
 
65
  'updates_settings' => array(
66
- 'repository' => 'wordpress', // Тип репозитория из которого получаем обновления. Может быть wordpress, freemius
67
- 'slug' => 'auto-post-thumbnail', // Слаг плагина в удаленном репозитории
68
- 'maybe_rollback' => true, // Можно ли делать откат к предыдущей версии плагина?
 
 
 
69
  'rollback_settings' => array(
70
- 'prev_stable_version' => '0.0.0' // Нужно указать предыдущую стабильную версию, к которой нужно сделать откат.
 
71
  )
72
  ),
73
 
74
  // Настройка премиум плагина
75
  // Сюда входят настройки лицензирования и премиум обновлений плагина и его надстройки
76
- 'has_premium' => true, // Есть ли у текущего плагина премиум? Если false, премиум модуль загружен не будет
 
77
  'license_settings' => array(
78
  'has_updates' => true,
79
- 'provider' => 'freemius', // Тип лицензионного поставщика, может быть freemius, codecanyon, templatemonster
80
- 'slug' => 'auto-post-thumbnail-premium', // Слаг плагина в выбранном поставщике лицензий и обновлений
81
- 'plugin_id' => '4146', // ID плагина в freemius.com
82
- 'public_key' => 'pk_5e3ec7615d3abb543e25ee6eb2fc7', // Публичный ключ плагина в freemius.com
83
- 'price' => 29, // Минимальная цена плагина, выводится в рекламных блоках
 
 
 
 
 
84
  // Настройка обновлений премиум плагина
85
  'updates_settings' => array(
86
  'maybe_rollback' => true, // Можно ли делать откат к предыдущей версии плагина?
87
  'rollback_settings' => array(
88
- 'prev_stable_version' => '0.0.0' // Нужно указать предыдущую стабильную версию, к которой нужно сделать откат.
 
89
  )
90
  )
91
  ),
92
 
93
  // Настройки рекламы от CreativeMotion
94
- 'render_adverts' => true, // Показывать рекламу CreativeMotion в админке Wordpress?
95
- 'adverts_settings' => array(
96
- 'dashboard_widget' => true, // если true, показывать виджет новостей на страницу Dashboard
97
- 'right_sidebar' => true, // если true, показывать виджет в правом сайбаре интерфейса плагина
98
- 'notice' => true, // если true, показывать сквозное уведомление на всех страницах админ панели Wordpress
 
 
 
 
99
  ),
100
 
101
  // Подключаемые модуль фреймворка
102
  // Необходимые для ускоренной разработки продуктов Webcrfatic
103
  'load_factory_modules' => array(
104
- array( 'libs/factory/bootstrap', 'factory_bootstrap_426', 'admin' ), // Модуль позволяет использовать различные js виджеты и стили оформление форм.
105
- array( 'libs/factory/forms', 'factory_forms_423', 'admin' ), // Модуль позволяет быстро создавать формы и готовые поля настроек
106
- array( 'libs/factory/pages', 'factory_pages_425', 'admin' ), // Модуль позволяет создавать страницы плагина, в том числе шаблонизированные страницы
107
- array( 'libs/factory/freemius', 'factory_freemius_113', 'all' ), // Модуль для работы с freemius.com, содержит api библиотеку и провайдеры для премиум менеджера
108
- array( 'libs/factory/adverts', 'factory_adverts_106', 'admin'), // Модуль для показа рекламы в админпанели Wordpress, вся реклама вытягивается через API Creative Motion
109
- array( 'libs/factory/feedback', 'factory_feedback_102', 'admin'),
 
 
 
 
 
110
  )
111
  );
112
 
113
- $wapt_compatibility = new Wbcr_Factory425_Requirements( __FILE__, array_merge( $plugin_info, array(
114
  'plugin_already_activate' => defined( 'WAPT_PLUGIN_ACTIVE' ),
115
- 'required_php_version' => '5.4',
116
- 'required_wp_version' => '4.2.0',
117
  //'required_clearfy_check_component' => false
118
  ) ) );
119
 
@@ -134,8 +158,8 @@ define( 'WAPT_PLUGIN_VERSION', $wapt_compatibility->get_plugin_version() );
134
 
135
  define( 'WAPT_PLUGIN_FILE', __FILE__ );
136
  define( 'WAPT_ABSPATH', dirname( __FILE__ ) );
137
- define( 'WAPT_PLUGIN_BASENAME', plugin_basename( __FILE__ ));
138
- define( 'WAPT_PLUGIN_SLUG', dirname(plugin_basename( __FILE__ )));
139
  // Ссылка к директории плагина
140
  define( 'WAPT_PLUGIN_URL', plugins_url( null, __FILE__ ) );
141
  // Директория плагина
@@ -153,11 +177,11 @@ require_once( WAPT_PLUGIN_DIR . '/includes/class-wapt-plugin.php' );
153
 
154
  try {
155
  new WAPT_Plugin( __FILE__, array_merge( $plugin_info, array(
156
- 'plugin_version' => WAPT_PLUGIN_VERSION,
157
  'plugin_text_domain' => $wapt_compatibility->get_text_domain()
158
  ) ) );
159
  auto_post_thumbnails();
160
- } catch( Exception $e ) {
161
  global $wapt_exeption;
162
 
163
  $wapt_exeption = $e;
@@ -167,9 +191,9 @@ try {
167
  function wapt_exception_notice() {
168
  global $wapt_exeption;
169
 
170
- $error = sprintf( "The %s plugin has stopped. <b>Error:</b> %s Code: %s", 'Auto Post Thumbnail', $wapt_exeption->getMessage(), $wapt_exeption->getCode() );
171
  echo '<div class="notice notice-error"><p>' . $error . '</p></div>';
172
- };
173
 
174
  add_action( 'admin_notices', 'wapt_exception_notice' );
175
  add_action( 'network_admin_notices', 'wapt_exception_notice' );
1
  <?php
2
  /*
3
+ Plugin Name: Auto Featured Image (Auto Post Thumbnail)
4
  Plugin URI: https://cm-wp.com/apt
5
+ Description: Automatically generate the Featured Image from the first image in post or any custom post type only if Featured Image is not set manually. Featured Image Generation From Title. Native image search for Elementor, Gutenberg, Classic Editor.
6
+ Version: 3.7.2
7
  Author: Creativemotion <support@cm-wp.com>
8
  Author URI: cm-wp.com
9
  Text Domain: apt
10
  Domain Path: /languages
11
  */
12
 
13
+ /* Copyright 2019 Creativemotion
14
 
15
  This program is free software; you can redistribute it and/or modify
16
  it under the terms of the GNU General Public License as published by
43
  require_once( dirname( __FILE__ ) . '/libs/factory/core/includes/class-factory-requirements.php' );
44
 
45
  $plugin_info = array(
46
+ 'prefix' => 'wapt_',
47
+ // Префикс для базы данных и полей формы. Строка должна соответствовать условию [A-z0-9_].
48
+ 'plugin_name' => 'wbcr_apt',
49
+ // Кодовое название плагина, используется как уникальный идентификатор. Строка должна соответствовать условию [A-z0-9_].
50
+ 'plugin_title' => __( 'Auto Featured Image', 'apt' ),
51
+ // Название плагина. То же что и Plugin Name. Используется в интерфейсе и сообщениях.
52
 
53
  // Служба поддержки
54
  // Указываем ссылки и имена страниц сайта плагина, чтобы иметь к ним доступ внутри плагина.
64
 
65
  // Настройка обновлений плагина
66
  // Имеется ввиду настройка обновлений из удаленного репозитория. Это может быть wordpress.org, freemius.com, codecanyon.com
67
+ 'has_updates' => true,
68
+ // Нужно ли проверять обновления для этого плагина
69
  'updates_settings' => array(
70
+ 'repository' => 'wordpress',
71
+ // Тип репозитория из которого получаем обновления. Может быть wordpress, freemius
72
+ 'slug' => 'auto-post-thumbnail',
73
+ // Слаг плагина в удаленном репозитории
74
+ 'maybe_rollback' => true,
75
+ // Можно ли делать откат к предыдущей версии плагина?
76
  'rollback_settings' => array(
77
+ 'prev_stable_version' => '0.0.0'
78
+ // Нужно указать предыдущую стабильную версию, к которой нужно сделать откат.
79
  )
80
  ),
81
 
82
  // Настройка премиум плагина
83
  // Сюда входят настройки лицензирования и премиум обновлений плагина и его надстройки
84
+ 'has_premium' => true,
85
+ // Есть ли у текущего плагина премиум? Если false, премиум модуль загружен не будет
86
  'license_settings' => array(
87
  'has_updates' => true,
88
+ 'provider' => 'freemius',
89
+ // Тип лицензионного поставщика, может быть freemius, codecanyon, templatemonster
90
+ 'slug' => 'auto-post-thumbnail-premium',
91
+ // Слаг плагина в выбранном поставщике лицензий и обновлений
92
+ 'plugin_id' => '4146',
93
+ // ID плагина в freemius.com
94
+ 'public_key' => 'pk_5e3ec7615d3abb543e25ee6eb2fc7',
95
+ // Публичный ключ плагина в freemius.com
96
+ 'price' => 29,
97
+ // Минимальная цена плагина, выводится в рекламных блоках
98
  // Настройка обновлений премиум плагина
99
  'updates_settings' => array(
100
  'maybe_rollback' => true, // Можно ли делать откат к предыдущей версии плагина?
101
  'rollback_settings' => array(
102
+ 'prev_stable_version' => '0.0.0'
103
+ // Нужно указать предыдущую стабильную версию, к которой нужно сделать откат.
104
  )
105
  )
106
  ),
107
 
108
  // Настройки рекламы от CreativeMotion
109
+ 'render_adverts' => true,
110
+ // Показывать рекламу CreativeMotion в админке Wordpress?
111
+ 'adverts_settings' => array(
112
+ 'dashboard_widget' => true,
113
+ // если true, показывать виджет новостей на страницу Dashboard
114
+ 'right_sidebar' => true,
115
+ // если true, показывать виджет в правом сайбаре интерфейса плагина
116
+ 'notice' => true,
117
+ // если true, показывать сквозное уведомление на всех страницах админ панели Wordpress
118
  ),
119
 
120
  // Подключаемые модуль фреймворка
121
  // Необходимые для ускоренной разработки продуктов Webcrfatic
122
  'load_factory_modules' => array(
123
+ array( 'libs/factory/bootstrap', 'factory_bootstrap_430', 'admin' ),
124
+ // Модуль позволяет использовать различные js виджеты и стили оформление форм.
125
+ array( 'libs/factory/forms', 'factory_forms_427', 'admin' ),
126
+ // Модуль позволяет быстро создавать формы и готовые поля настроек
127
+ array( 'libs/factory/pages', 'factory_pages_429', 'admin' ),
128
+ // Модуль позволяет создавать страницы плагина, в том числе шаблонизированные страницы
129
+ array( 'libs/factory/freemius', 'factory_freemius_117', 'all' ),
130
+ // Модуль для работы с freemius.com, содержит api библиотеку и провайдеры для премиум менеджера
131
+ array( 'libs/factory/adverts', 'factory_adverts_109', 'admin' ),
132
+ // Модуль для показа рекламы в админпанели Wordpress, вся реклама вытягивается через API Creative Motion
133
+ array( 'libs/factory/feedback', 'factory_feedback_104', 'admin' ),
134
  )
135
  );
136
 
137
+ $wapt_compatibility = new Wbcr_Factory429_Requirements( __FILE__, array_merge( $plugin_info, array(
138
  'plugin_already_activate' => defined( 'WAPT_PLUGIN_ACTIVE' ),
139
+ 'required_php_version' => '5.4',
140
+ 'required_wp_version' => '4.2.0',
141
  //'required_clearfy_check_component' => false
142
  ) ) );
143
 
158
 
159
  define( 'WAPT_PLUGIN_FILE', __FILE__ );
160
  define( 'WAPT_ABSPATH', dirname( __FILE__ ) );
161
+ define( 'WAPT_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
162
+ define( 'WAPT_PLUGIN_SLUG', dirname( plugin_basename( __FILE__ ) ) );
163
  // Ссылка к директории плагина
164
  define( 'WAPT_PLUGIN_URL', plugins_url( null, __FILE__ ) );
165
  // Директория плагина
177
 
178
  try {
179
  new WAPT_Plugin( __FILE__, array_merge( $plugin_info, array(
180
+ 'plugin_version' => WAPT_PLUGIN_VERSION,
181
  'plugin_text_domain' => $wapt_compatibility->get_text_domain()
182
  ) ) );
183
  auto_post_thumbnails();
184
+ } catch ( Exception $e ) {
185
  global $wapt_exeption;
186
 
187
  $wapt_exeption = $e;
191
  function wapt_exception_notice() {
192
  global $wapt_exeption;
193
 
194
+ $error = sprintf( "The %s plugin has stopped. <b>Error:</b> %s Code: %s", 'Auto Featured Image', $wapt_exeption->getMessage(), $wapt_exeption->getCode() );
195
  echo '<div class="notice notice-error"><p>' . $error . '</p></div>';
196
+ }
197
 
198
  add_action( 'admin_notices', 'wapt_exception_notice' );
199
  add_action( 'network_admin_notices', 'wapt_exception_notice' );
includes/class-wapt-base.php CHANGED
@@ -94,11 +94,10 @@ class AutoPostThumbnails {
94
  add_action( 'rest_api_inserted_post', [ $this, 'publish_post' ], 10, 1 );
95
  // This hook will now handle all sort publishing including posts, custom types, scheduled posts, etc.
96
  add_action( 'transition_post_status', [ $this, 'check_required_transition' ], 10, 3 );
97
- }
98
- else {
99
- if(WAPT_Plugin::app()->getOption( 'auto_generation_notice', 1 )) {
100
- add_action( 'admin_notices', [ $this, 'notice_auto_generation' ] );
101
- }
102
  }
103
 
104
  add_action( 'admin_notices', [ $this, 'check_perms' ] );
@@ -155,7 +154,7 @@ class AutoPostThumbnails {
155
  public function init_admin_menu() {
156
 
157
  //add_options_page(
158
- add_menu_page( 'Auto Post Thumbnail', 'Auto Post Thumbnail', 'manage_options', 'generate-post-thumbnails', [
159
  $this,
160
  'render'
161
  ] );
@@ -201,7 +200,6 @@ class AutoPostThumbnails {
201
  wp_localize_script( 'apt-admin-script-thumbnail', 'action_column_get_thumbnails', $action_column_get_thumbnails );
202
 
203
  if ( is_admin() ) {
204
- wp_enqueue_script( 'jquery-progress', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery-ui.progressbar.min.js', [], false, true );
205
  wp_enqueue_script( 'jquery-autocolumnlist', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery.autocolumnlist.js', [], false, true );
206
  wp_enqueue_script( 'jquery-flex-images', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery.flex-images.min.js', [ 'jquery' ], false, true );
207
  wp_enqueue_style( 'style', WAPT_PLUGIN_URL . '/admin/assets/css/style.css' );
@@ -210,13 +208,12 @@ class AutoPostThumbnails {
210
  'button_text' => __( 'Use as thumbnail', 'apt' ),
211
  'modal_title' => __( 'Change featured image', 'apt' ),
212
  ] );
213
- wp_enqueue_style( 'jquery-ui-genpostthumbs', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery-ui.min.css', [], '1.7.2' );
214
- //wp_enqueue_style( 'jquery-ui-genpostthumbs', plugins_url( 'admin/assets/jquery-ui/redmond/jquery-ui-1.7.2.custom.css', __FILE__ ), array(), '1.7.2' );
215
  }
216
 
217
  wp_enqueue_script(
218
  'apt-admin-check_api',
219
- WAPT_PLUGIN_URL.'/admin/assets/js/check-api.js',
220
  array(),
221
  false,
222
  true
@@ -232,31 +229,30 @@ class AutoPostThumbnails {
232
  * Этот хук реализует условную логику, при которой пользователь переодически будет
233
  * видет страницу "О плагине", а конкретно при активации и обновлении плагина.
234
  */
235
- public function redirect_to_about_page()
236
- {
237
  $plugin = WAPT_Plugin::app();
238
 
239
  // If the user has updated the plugin or activated it for the first time,
240
  // you need to show the page "What's new?"
241
  if ( ! $plugin->isNetworkAdmin() ) {
242
  $about_page_viewed = $plugin->request->get( 'wapt_about_page_viewed', null );
243
- $need_show_about = get_option( $plugin->getOptionName( 'whats_new_v360' ) );
244
  if ( is_null( $about_page_viewed ) ) {
245
- if ( $need_show_about && !(defined( 'DOING_AJAX' ) && DOING_AJAX) && !(defined( 'DOING_CRON' ) && DOING_CRON) ) {
246
  try {
247
  $redirect_url = '';
248
- if ( class_exists( 'Wbcr_FactoryPages425' ) ) {
249
- $redirect_url = admin_url("admin.php?page=wapt_about-wbcr_apt&wapt_about_page_viewed=1");
250
  }
251
  if ( $redirect_url ) {
252
  wp_safe_redirect( $redirect_url );
253
  die();
254
  }
255
- } catch( Exception $e ) {
256
  }
257
  }
258
  } else {
259
- if ( $need_show_about && !(defined( 'DOING_AJAX' ) && DOING_AJAX) && !(defined( 'DOING_CRON' ) && DOING_CRON) ) {
260
  delete_option( $plugin->getOptionName( 'whats_new_v360' ) );
261
  }
262
  }
@@ -266,10 +262,10 @@ class AutoPostThumbnails {
266
  /**
267
  * Метод проверяет активацию премиум плагина и наличие действующего лицензионнного ключа
268
  */
269
- public function is_premium()
270
- {
271
  return WAPT_Plugin::app()->is_premium();
272
  }
 
273
  /**
274
  * Get posts id's
275
  *
@@ -282,25 +278,27 @@ class AutoPostThumbnails {
282
  check_ajax_referer( 'get-posts' );
283
 
284
  $generate = WAPT_Plugin::app()->getOption( "generate_autoimage", 'find' );
285
- if($generate == 'find') $auto_generate = false;
286
- else if($generate == 'generate' || $generate == 'both') $auto_generate = true;
287
- else $auto_generate = false;
 
 
 
 
288
 
289
 
290
- $has_thumb = (bool) $_POST['withThumb'];
291
- if(auto_post_thumbnails()->is_premium()) {
 
292
  $status = $_POST['poststatus'];
293
- $type = $_POST['posttype'];
294
  $category = $_POST['category'];
295
  $date_start = $_POST['date_start'] ? DateTime::createFromFormat( get_option( 'date_format ' ), $_POST['date_start'] )->format( 'Y-m-d' ) : 0;
296
  $date_end = $_POST['date_end'] ? DateTime::createFromFormat( get_option( 'date_format ' ), $_POST['date_end'] )->format( 'Y-m-d' ) : 0;
297
  // Get id's of the posts that satisfy the filters
298
- $query = $this->get_posts_query( $has_thumb,$status, $type, $category, $date_start, $date_end );
299
- }
300
- else
301
- {
302
  // Get id's of all the published posts for which post thumbnails exist or does not exist
303
- $query = $this->get_posts_query($has_thumb);
304
  }
305
 
306
  if ( ! empty( $query->posts ) ) {
@@ -308,14 +306,15 @@ class AutoPostThumbnails {
308
  $ids = [];
309
  foreach ( $query->posts as $post ) {
310
  //если запрошены посты без тамбнеила, значит пользователь хочет сгенерировать их
311
- if(!$has_thumb) {
312
  $images = $this->get_images_from_post( $post->ID );
313
- if ( (isset( $images['urls'] ) && count( $images['urls'] )) || $auto_generate ) {
314
  $ids[] = $post->ID;
315
  }
316
- }
317
- else //иначе он хочет удалить тамбнэйлы
318
  $ids[] = $post->ID;
 
319
  }
320
  $ids = implode( ',', $ids );
321
  echo $ids;
@@ -372,7 +371,7 @@ class AutoPostThumbnails {
372
  set_time_limit( 60 );
373
 
374
  // Pass on the id to our 'publish' callback function.
375
- echo delete_post_thumbnail($id);
376
 
377
  die( - 1 );
378
  }
@@ -384,12 +383,13 @@ class AutoPostThumbnails {
384
  */
385
  public function notice_auto_generation() {
386
  ?>
387
- <div class="notice notice-warning is-dismissible" id="notice_auto_generation">
388
- <p><b>Auto Post Thumbnail:</b> Do you want to enable automatic post thumbnail generation? Enable this option in
389
- <a href="<?php echo admin_url('admin.php?page=wapt_settings-wbcr_apt&tab=general'); ?>">settings</a><br>
 
390
  <a href="#" id="hide_notice_auto_generation">Don't ask again</a>
391
- </p>
392
- </div>
393
  <?php
394
  }
395
 
@@ -397,10 +397,9 @@ class AutoPostThumbnails {
397
  *
398
  */
399
  public function hide_notice_auto_generation() {
400
- if( isset($_POST['action']) && $_POST['action'] === 'hide_notice_auto_generation')
401
- {
402
- WAPT_Plugin::app()->updateOption( 'auto_generation_notice', 0 );
403
- }
404
  }
405
 
406
  /**
@@ -428,7 +427,7 @@ class AutoPostThumbnails {
428
  *
429
  * @param $new_status
430
  * @param $old_status
431
- * @param WP_Post $post Instance of post.
432
  *
433
  * @return void
434
  */
@@ -444,38 +443,39 @@ class AutoPostThumbnails {
444
  *
445
  * @return WP_Query
446
  */
447
- public function get_posts_query($has_thumb = false, $status = 'publish', $type = 'post', $category = 0, $date_start = 0, $date_end = 0) {
448
 
449
- $q_status = $status ? $status : 'any';
450
- $q_type = $type ? $type : 'any';
451
  $q_has_thumb = $has_thumb ? "EXISTS" : "NOT EXISTS";
452
 
453
  $args = array(
454
- 'posts_per_page' => -1,
455
- 'post_status' => $q_status,
456
- 'post_type' => $q_type,
457
- 'meta_query' => array(
458
  'relation' => 'AND',
459
  array(
460
- 'key' => '_thumbnail_id',
461
  'compare' => $q_has_thumb
462
  ),
463
  array(
464
- 'key' => 'skip_post_thumb',
465
  'compare' => 'NOT EXISTS'
466
  ),
467
  ),
468
  );
469
- if($category) $args['cat'] = $category;
470
- if($date_start && $date_start)
471
- {
 
472
  $args['date_query'][] = array(
473
  'after' => $date_start,
474
  'before' => $date_end,
475
  'inclusive' => true,
476
  );
477
  }
478
- $query = new WP_Query( $args);
479
 
480
  // $query = "SELECT * FROM {$wpdb->posts} p WHERE {$q_status_type}
481
  // {$q_date} AND (
@@ -501,7 +501,7 @@ class AutoPostThumbnails {
501
  $images = [];
502
 
503
  //do shortcodes before search images
504
- $post_content = do_shortcode( $post->post_content);
505
 
506
  // Get all images from post's body
507
  preg_match_all( '/<\s*img .*src\s*=\s*[\""\']?([^\""\'>]*).*?>/i', $post_content, $matches );
@@ -581,7 +581,7 @@ class AutoPostThumbnails {
581
  /**
582
  * Function to save first image in post as post thumbnail.
583
  *
584
- * @param int $post_id Post ID.
585
  *
586
  * @return int
587
  */
@@ -594,38 +594,41 @@ class AutoPostThumbnails {
594
  return 0;
595
  }
596
 
597
- $thumb_id = 0;
598
  $autoimage = WAPT_Plugin::app()->getOption( "generate_autoimage", 'find' );
599
- $images = $this->get_images_from_post( $post_id );
600
- if ( (isset( $images['tags'] ) && count( $images['tags'] )) && $autoimage !== 'generate') {
601
 
602
  foreach ( $images['tags'] as $key => $image ) {
603
- $thumb_id = $this->get_thumbnail_id( $image, $images['urls'][$key] );
604
  // If we succeed in generating thumb, let's update post meta
605
  if ( $thumb_id ) {
606
  update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
 
607
  return $thumb_id;
608
  } else {
609
  $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '" . $images['urls'][ $key ] . "'" );
610
- if($thumb_id) {
611
  update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
 
612
  return $thumb_id ? $thumb_id : 0;
613
- }
614
- else {
615
- if(auto_post_thumbnails()->is_premium()) $thumb_id = apply_filters( 'wapt/generate_post_thumb', $images['urls'][ $key ], $post_id );
616
- if($thumb_id) {
 
617
  update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
 
618
  return $thumb_id;
619
  }
620
  }
621
  }
622
  }
623
- }
624
- else {
625
  // создаём свою картинку с заголовком на цветном фоне
626
  if ( $autoimage == 'generate' || $autoimage == 'both' ) {
627
 
628
- $thumb_id = $this->generate_and_attachment($post_id);
629
  if ( $thumb_id ) {
630
  update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
631
 
@@ -662,9 +665,9 @@ class AutoPostThumbnails {
662
  *
663
  * https://gist.github.com/steve-todorov/3671626
664
  *
665
- * @param array $input_array
666
  * @param string $search_value
667
- * @param bool $case_sensitive
668
  *
669
  * @return array
670
  */
@@ -698,14 +701,15 @@ class AutoPostThumbnails {
698
  public function generate_post_thumb( $image_url, $title, $post_id ) {
699
  // Get the URL now for further processing
700
  //$imageUrl = $matches[1][ $key ];
701
- $imageUrl = $image_url;
702
  $imageTitle = $title;
703
 
704
  // Get the file name
705
  $filename = substr( $imageUrl, ( strrpos( $imageUrl, '/' ) ) + 1 );
706
  //исключаем параметры после имени файла
707
- if(strrpos( $filename, '?' ))
708
  $filename = substr( $filename, 0, strrpos( $filename, '?' ) );
 
709
 
710
  if ( ! ( ( $uploads = wp_upload_dir( current_time( 'mysql' ) ) ) && false === $uploads['error'] ) ) {
711
  return null;
@@ -714,19 +718,25 @@ class AutoPostThumbnails {
714
  // Generate unique file name
715
  $filename = wp_unique_filename( $uploads['path'], $filename );
716
 
717
- // Move the file to the uploads dir
718
  $new_file = $uploads['path'] . "/$filename";
 
 
 
 
 
 
719
 
 
720
  if ( ! ini_get( 'allow_url_fopen' ) ) {
721
  $file_data = $this->curl_get_file_contents( $imageUrl );
722
  } else {
723
- $arrContextOptions = array (
724
  "ssl" => array(
725
- "verify_peer" => false,
726
  "verify_peer_name" => false,
727
  ),
728
  );
729
- $file_data = file_get_contents( $imageUrl, false, stream_context_create($arrContextOptions) );
730
  }
731
 
732
 
@@ -741,7 +751,6 @@ class AutoPostThumbnails {
741
  }
742
 
743
  $allowed = get_allowed_mime_types();
744
- $ext = pathinfo( $new_file, PATHINFO_EXTENSION );
745
  if ( ! $this->array_contains_key( $allowed, $ext ) ) {
746
  return null;
747
  }
@@ -833,7 +842,7 @@ class AutoPostThumbnails {
833
  * Function to filling "image" column in Posts table
834
  *
835
  * @param string $colname
836
- * @param int $post_id
837
  */
838
  public function fill_image_column( $colname, $post_id ) {
839
  if ( $colname === 'apt-image' ) {
@@ -861,33 +870,32 @@ class AutoPostThumbnails {
861
  if ( isset( $_POST['thumbnail_id'] ) && ! empty( $_POST['thumbnail_id'] ) ) {
862
  $thumb_id = intval( $_POST['thumbnail_id'] );
863
 
864
- if($thumb_id == -1) //generate image
865
  {
866
- $thumb_id = $this->generate_and_attachment($post_id);
867
  }
868
- }
869
- else if ( isset( $_POST['image'] ) && ! empty( $_POST['image'] ) )
870
- {
871
  $img = $_POST['image'];
872
 
873
  //Совместимость с NexGen
874
- $img = preg_replace('/(thumbs\/thumbs_)/', '.', $img);
875
 
876
  global $wpdb;
877
  $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '" . $img . "'" );
878
- if ( !$thumb_id ) {
879
  //если ссылка на миниатюру, то регулярка сделает ссылку на оригинал. убирает в конце названия файла -150x150
880
- $img = preg_replace('/-[0-9]{1,}x[0-9]{1,}\./', '.', $img);
881
  $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '" . $img . "'" );
882
  }
883
- if ( !$thumb_id ) {
884
  $thumb_id = $this->generate_post_thumb( $img, '', $post_id );
885
  }
886
- }
887
- else {
888
  $thumb_id = 0;
889
  }
890
- if($thumb_id) update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
 
 
891
 
892
  echo $this->apt_getThumbHtml( $post_id, $thumb_id );
893
  }
@@ -924,7 +932,7 @@ class AutoPostThumbnails {
924
  $wpnonce = wp_create_nonce( 'set_post_thumbnail-' . $post_id );
925
  $ajaxloader = WAPT_PLUGIN_URL . "/admin/assets/img/ajax-loader.gif";
926
  $content = "";
927
- $html = "<a title='{$title}' href='#' class='modal-init-js' id='modal-init-js_{$post_id}' " . "onclick='return window.aptModalShow(this, {$post_id}, \"$wpnonce\");'>{$imgTag}</a>" . "<span id='loader_{$post_id}' style='display:none;'><img src='{$ajaxloader}' width='100px' alt=''></span>" . "<div id='post_imgs_{$post_id}' class='imgs' style='display:none;'>" . "<span style='display:none;'><img src='{$ajaxloader}' alt=''></span><p>{$content}</p></div>";
928
 
929
  return $html;
930
  }
@@ -937,7 +945,7 @@ class AutoPostThumbnails {
937
  * @return void
938
  */
939
  public function my_custom_submenu_page() {
940
- add_media_page( __( 'Auto Post Thumbnails', 'apt' ), __( 'Add from APT', 'apt' ), 'manage_options', 'menu-media-apt', [
941
  $this,
942
  'addToMediaFromApt'
943
  ] );
@@ -963,7 +971,7 @@ class AutoPostThumbnails {
963
  * @return array
964
  */
965
  public function addTab( $tabs ) {
966
- $tabs['apttab'] = __( "Auto Post Thumbnail", "apt" );
967
 
968
  return ( $tabs );
969
  }
@@ -1095,7 +1103,7 @@ class AutoPostThumbnails {
1095
 
1096
  $attach_data = wp_generate_attachment_metadata( $attach_id, $target_file_name );
1097
  $result = wp_update_attachment_metadata( $attach_id, $attach_data );
1098
- if (! $result ) {
1099
  //die( 'Error: File attachment metadata error' );
1100
  }
1101
 
@@ -1119,26 +1127,30 @@ class AutoPostThumbnails {
1119
  die( 'Error: Invalid request.' );
1120
  }
1121
 
1122
- if( isset( $_POST['is_font_upload'] ) && count($_FILES) > 0){
1123
- $file = $_FILES[0];
1124
  $upload_dir = wp_upload_dir();
1125
- $upload_dir = $upload_dir['basedir']."/apt_fonts";
1126
- if( ! is_dir( $upload_dir ) ) mkdir( $upload_dir, 0777 );
 
 
1127
 
1128
  $done_files = array();
1129
- $file_name = $file['name'];
1130
 
1131
  // Проверка, что файл является шрифтом TrueType
1132
- $header = file_get_contents($file['tmp_name'], false, null, null, 4);
1133
- if( $header !== "\x00\x01\x00\x00" && $header !== "true" && $header !== "typ1" )
1134
- die( json_encode( array('error' => "The uploaded file is not a TrueType font") ) );
1135
- //-----
1136
-
1137
- if( move_uploaded_file( $file['tmp_name'], "$upload_dir/$file_name" ) ){
1138
- if(realpath( "$upload_dir/$file_name" ))
1139
- $data = array('files' => $file );
1140
- else
1141
- $data = array('error' => "Unable to copy the file to the font folder: $upload_dir");
 
 
1142
  }
1143
 
1144
  die( json_encode( $data ) );
@@ -1154,38 +1166,48 @@ class AutoPostThumbnails {
1154
  if ( ! wp_verify_nonce( $_POST['nonce'], 'apt_api' ) ) {
1155
  die( 'Error: Invalid request.' );
1156
  }
1157
- if ( isset( $_POST['query'] ) )
1158
- {
1159
- $query = $_POST['query'];
1160
- $google_key = WAPT_Plugin::app()->getOption('google_apikey');
1161
- $google_cse = WAPT_Plugin::app()->getOption('google_cse');
1162
 
1163
- if ( isset( $_POST['page'] ) )
1164
  $page = $_POST['page'];
1165
- else
1166
  $page = 1;
 
 
 
 
 
 
 
1167
 
1168
- $start = (($page-1)*10) + 1;
1169
- $url = "https://www.googleapis.com/customsearch/v1?searchType=image&start={$start}&q=".urlencode($query)."&key={$google_key}&cx={$google_cse}";
1170
 
1171
  // Check limits
1172
- $limit = WAPT_Plugin::app()->getOption('google_limit');
1173
- if(!$limit) WAPT_Plugin::app()->updateOption('google_limit', array('expires'=>time(), 'count'=>10));
1174
- if(time()-$limit['expires'] > 3600) //1 hour - 3600 sec
 
 
1175
  {
1176
  $limit['expires'] = time();
1177
- $limit['count'] = 10;
1178
- WAPT_Plugin::app()->updateOption('google_limit', $limit);
1179
  }
1180
 
1181
- if(!WAPT_Plugin::app()->premium->is_active() && !WAPT_Plugin::app()->premium->is_activate()) {
1182
  if ( $limit['count'] < 1 ) {
1183
  die( sprintf( __( 'You have reached the limit at the moment. Try again in an 1 hour or <a href="%s">Upgrade to Premium</a>', 'apt' ), WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ) ) );
1184
  }
1185
  $limit['count'] --;
1186
  }
1187
 
1188
- if($start === 1) WAPT_Plugin::app()->updateOption('google_limit', $limit);
 
 
1189
 
1190
  $response = wp_remote_get( $url, [ 'timeout' => 100 ] );
1191
  if ( is_wp_error( $response ) ) {
@@ -1207,12 +1229,11 @@ class AutoPostThumbnails {
1207
  if ( ! wp_verify_nonce( $_POST['nonce'], 'check-api-key' ) ) {
1208
  die( 'Error: Invalid request.' );
1209
  }
1210
- if ( isset( $_POST['provider'] ) && isset( $_POST['key'] ) && isset( $_POST['key2'] ) )
1211
- {
1212
  $provider = $_POST['provider'];
1213
- $key = $_POST['key'];
1214
- $cx = $_POST['key2'];
1215
- switch ($provider){
1216
  case "google":
1217
  $url = "https://www.googleapis.com/customsearch/v1?q=cat&key={$key}&cx={$cx}";
1218
 
@@ -1220,27 +1241,25 @@ class AutoPostThumbnails {
1220
  if ( is_wp_error( $response ) ) {
1221
  die( 'Error: ' . $response->get_error_message() );
1222
  }
1223
- $result = json_decode( $response['body']);
1224
- echo !isset($result->error->errors) ? true : false;
1225
  break;
1226
  }
1227
  exit;
1228
  }
1229
  }
1230
 
1231
- public function check_api_notice($notices, $plugin_name)
1232
- {
1233
  // Если экшен вызывал не этот плагин, то не выводим это уведомления
1234
  if ( $plugin_name != WAPT_Plugin::app()->getPluginName() ) {
1235
  return $notices;
1236
  }
1237
  // Получаем заголовок плагина
1238
  $plugin_title = WAPT_Plugin::app()->getPluginTitle();
1239
-
1240
- if(!WAPT_Plugin::app()->getOption( 'google_apikey') && !WAPT_Plugin::app()->getOption( 'google_cse') )
1241
- {
1242
  // Задаем текст уведомления
1243
- $notice_text = '<p><b>'.$plugin_title.':</b> <br>' . sprintf(__( "To download images from Google, specify Google API keys in the <a href='%s'>settings</a>.", 'apt' ), admin_url('admin.php?page=wapt_settings-wbcr_apt'))."</p>";
1244
 
1245
  // Задаем настройки уведомления
1246
  $notices[] = [
@@ -1249,18 +1268,18 @@ class AutoPostThumbnails {
1249
  'type' => 'warning',
1250
  'dismissible' => true,
1251
  // На каких страницах показывать уведомление ('plugins', 'dashboard', 'edit')
1252
- 'where' => array('plugins', 'dashboard', 'edit'),
1253
  // Через какое время уведомление снова появится?
1254
  'dismiss_expires' => 0,
1255
  'text' => $notice_text,
1256
- 'classes' => array()
1257
  ];
1258
  }
1259
- return $notices;
 
1260
  }
1261
 
1262
- public function show_about_notice($notices, $plugin_name)
1263
- {
1264
  // Если экшен вызывал не этот плагин, то не выводим это уведомления
1265
  if ( $plugin_name != WAPT_Plugin::app()->getPluginName() ) {
1266
  return $notices;
@@ -1268,45 +1287,51 @@ class AutoPostThumbnails {
1268
  // Получаем заголовок плагина
1269
  $plugin_title = WAPT_Plugin::app()->getPluginTitle();
1270
 
1271
- $notice_text = '<p><b>'.$plugin_title.':</b> ' .
1272
- sprintf(__( "What's new in version 3.7.0? Find out from <a href='%s'>the article</a> on our website.", 'apt' ), 'https://cm-wp.com/auto-featured-image-from-title/')."</p>";
1273
- $notices[] = [
1274
- 'id' => 'apt_show_about_370',
1275
- //error, success, warning
1276
- 'type' => 'info',
1277
- 'dismissible' => true,
1278
- // На каких страницах показывать уведомление ('plugins', 'dashboard', 'edit')
1279
- 'where' => array('plugins', 'dashboard', 'edit'),
1280
- // Через какое время уведомление снова появится?
1281
- 'dismiss_expires' => 0,
1282
- 'text' => $notice_text,
1283
- 'classes' => array()
1284
- ];
1285
- return $notices;
 
1286
  }
 
1287
  /**
1288
  * Получение списка шрифтов из папок
1289
  *
1290
  * @return array
1291
  */
1292
  public static function get_fonts() {
1293
- $upload_dir = wp_upload_dir();
1294
- $upload_dir_fonts = $upload_dir['basedir']."/apt_fonts";
1295
- $plugin_dir_fonts = WAPT_PLUGIN_DIR."/fonts";
1296
- $fonts = array();
1297
 
1298
- $fonts[] = array( 'title' => __('Standard','apt'), 'type' => 'group');
1299
- $files = scandir($plugin_dir_fonts);
1300
  foreach ( $files as $file ) {
1301
- if($file == '.' || $file == '..') continue;
1302
- $name = pathinfo($plugin_dir_fonts.'/'.$file);
1303
- $name = $name['filename'];
1304
- $fonts[] = array( 'value' => $file, 'title' => $name);
 
 
1305
  }
1306
 
1307
- if(is_dir( $upload_dir_fonts )) $files = scandir($upload_dir_fonts);
1308
- if(count($files) && AutoPostThumbnails::instance()->is_premium()) {
1309
- $fonts[] = array( 'title' => __('Uploaded','apt'), 'type' => 'group');
 
 
1310
  foreach ( $files as $file ) {
1311
  if ( $file == '.' || $file == '..' ) {
1312
  continue;
@@ -1333,23 +1358,24 @@ class AutoPostThumbnails {
1333
  *
1334
  * @return WAPT_Image
1335
  */
1336
- public static function generate_image_with_text($text, $pathToSave = '', $format = 'jpg', $width = 800, $height = 600) {
1337
- $font = WAPT_PLUGIN_DIR."/fonts/Arial.ttf";
1338
- $font_size = WAPT_Plugin::app()->getOption( 'font-size', 25);
1339
- $font_color = WAPT_Plugin::app()->getOption( 'font-color', "#ffffff");
1340
- $before_text = '';
1341
- $after_text = '';
1342
- $shadow = WAPT_Plugin::app()->getOption( 'shadow', 0);
1343
- if(!$shadow)
1344
- $shadow_color = '';
1345
- else
1346
- $shadow_color = WAPT_Plugin::app()->getOption( 'shadow-color', "#ffffff");
1347
-
1348
- $background_type = "color";
1349
- $background = WAPT_Plugin::app()->getOption( 'background-color', "#ff6262");
1350
-
1351
- $text_transform = WAPT_Plugin::app()->getOption( 'text-transform', "no");;
1352
- switch($text_transform) {
 
1353
  case 'upper':
1354
  $text = strtoupper( $text );
1355
  break;
@@ -1358,10 +1384,10 @@ class AutoPostThumbnails {
1358
  break;
1359
  }
1360
 
1361
- $text_crop = WAPT_Plugin::app()->getOption( 'text-crop', 100);
1362
- if($text_crop > 0) {
1363
- if ( strlen($text) > $text_crop) {
1364
- $temp = substr( $text, 0, $text_crop);
1365
  $text = substr( $temp, 0, strrpos( $temp, ' ' ) );
1366
  }
1367
 
@@ -1371,24 +1397,27 @@ class AutoPostThumbnails {
1371
  $valign = 'center';
1372
  $padding_tb = 15;
1373
  $padding_lr = 15;
1374
- $line_spacing = WAPT_Plugin::app()->getOption( 'text-line-spacing', 1.5);
1375
 
1376
- $params = array(
1377
- 'text' => $text,
1378
  'pathToSave' => $pathToSave,
1379
- 'format' => $format,
1380
- 'width' => $width,
1381
- 'height' => $height,
1382
  );
1383
- $image = new WAPT_Image( $width, $height, $background, $font, $font_size, $font_color );
1384
  $image->params = $params;
1385
  $image->setPadding( $padding_lr, $padding_tb );
1386
- $image->write_text( $before_text.$text.$after_text, '', '', '', $align, $valign,$line_spacing, $shadow_color );
1387
- if(!empty($pathToSave)) $image->save( $pathToSave, 100, $format );
 
 
1388
 
1389
  return $image;
1390
 
1391
  }
 
1392
  /**
1393
  * Генерация изображения с текстом.
1394
  * Если $pathToSave задан, то файл сохранится по этому пути.
@@ -1397,22 +1426,21 @@ class AutoPostThumbnails {
1397
  *
1398
  * @return integer $thumb_id
1399
  */
1400
- public function generate_and_attachment($post_id) {
1401
  $format = WAPT_Plugin::app()->getOption( "image-type", "jpg" );
1402
- switch($format)
1403
- {
1404
  case 'png':
1405
  $extension = 'png';
1406
- $mime_type = "image/png";
1407
  break;
1408
  case 'jpg':
1409
  case 'jpeg':
1410
  default:
1411
  $extension = 'jpg';
1412
- $mime_type = "image/jpeg";
1413
  break;
1414
  }
1415
- $post = get_post( $post_id, 'OBJECT' );
1416
 
1417
  $uploads = wp_upload_dir( current_time( 'mysql' ) );
1418
 
@@ -1421,9 +1449,9 @@ class AutoPostThumbnails {
1421
  $filename = wp_unique_filename( $uploads['path'], $filename );
1422
 
1423
  // Move the file to the uploads dir
1424
- $image = apply_filters('wapt/generate/image', $this->generate_image_with_text($post->post_title, $uploads['path'] . "/$filename", $extension), $post->post_title, $uploads['path'] . "/$filename", $extension);
1425
 
1426
- if(file_exists( $uploads['path'] . "/$filename")) {
1427
  // Compute the URL
1428
  $file_url = $uploads['url'] . "/$filename";
1429
  $file_path = $uploads['path'] . "/$filename";
@@ -1444,9 +1472,11 @@ class AutoPostThumbnails {
1444
  // Added fix by misthero as suggested
1445
  wp_update_attachment_metadata( $thumb_id, wp_generate_attachment_metadata( $thumb_id, $file_path ) );
1446
  update_attached_file( $thumb_id, $file_path );
 
1447
  return $thumb_id;
1448
  }
1449
  }
 
1450
  return 0;
1451
 
1452
  }
94
  add_action( 'rest_api_inserted_post', [ $this, 'publish_post' ], 10, 1 );
95
  // This hook will now handle all sort publishing including posts, custom types, scheduled posts, etc.
96
  add_action( 'transition_post_status', [ $this, 'check_required_transition' ], 10, 3 );
97
+ } else {
98
+ if ( WAPT_Plugin::app()->getOption( 'auto_generation_notice', 1 ) ) {
99
+ add_action( 'admin_notices', [ $this, 'notice_auto_generation' ] );
100
+ }
 
101
  }
102
 
103
  add_action( 'admin_notices', [ $this, 'check_perms' ] );
154
  public function init_admin_menu() {
155
 
156
  //add_options_page(
157
+ add_menu_page( 'Auto Featured Image', 'Auto Featured Image', 'manage_options', 'generate-post-thumbnails', [
158
  $this,
159
  'render'
160
  ] );
200
  wp_localize_script( 'apt-admin-script-thumbnail', 'action_column_get_thumbnails', $action_column_get_thumbnails );
201
 
202
  if ( is_admin() ) {
 
203
  wp_enqueue_script( 'jquery-autocolumnlist', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery.autocolumnlist.js', [], false, true );
204
  wp_enqueue_script( 'jquery-flex-images', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery.flex-images.min.js', [ 'jquery' ], false, true );
205
  wp_enqueue_style( 'style', WAPT_PLUGIN_URL . '/admin/assets/css/style.css' );
208
  'button_text' => __( 'Use as thumbnail', 'apt' ),
209
  'modal_title' => __( 'Change featured image', 'apt' ),
210
  ] );
211
+
 
212
  }
213
 
214
  wp_enqueue_script(
215
  'apt-admin-check_api',
216
+ WAPT_PLUGIN_URL . '/admin/assets/js/check-api.js',
217
  array(),
218
  false,
219
  true
229
  * Этот хук реализует условную логику, при которой пользователь переодически будет
230
  * видет страницу "О плагине", а конкретно при активации и обновлении плагина.
231
  */
232
+ public function redirect_to_about_page() {
 
233
  $plugin = WAPT_Plugin::app();
234
 
235
  // If the user has updated the plugin or activated it for the first time,
236
  // you need to show the page "What's new?"
237
  if ( ! $plugin->isNetworkAdmin() ) {
238
  $about_page_viewed = $plugin->request->get( 'wapt_about_page_viewed', null );
239
+ $need_show_about = get_option( $plugin->getOptionName( 'whats_new_v360' ) );
240
  if ( is_null( $about_page_viewed ) ) {
241
+ if ( $need_show_about && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && ! ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
242
  try {
243
  $redirect_url = '';
244
+ if ( class_exists( 'Wbcr_FactoryPages429' ) ) {
245
+ $redirect_url = admin_url( "admin.php?page=wapt_about-wbcr_apt&wapt_about_page_viewed=1" );
246
  }
247
  if ( $redirect_url ) {
248
  wp_safe_redirect( $redirect_url );
249
  die();
250
  }
251
+ } catch ( Exception $e ) {
252
  }
253
  }
254
  } else {
255
+ if ( $need_show_about && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && ! ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
256
  delete_option( $plugin->getOptionName( 'whats_new_v360' ) );
257
  }
258
  }
262
  /**
263
  * Метод проверяет активацию премиум плагина и наличие действующего лицензионнного ключа
264
  */
265
+ public function is_premium() {
 
266
  return WAPT_Plugin::app()->is_premium();
267
  }
268
+
269
  /**
270
  * Get posts id's
271
  *
278
  check_ajax_referer( 'get-posts' );
279
 
280
  $generate = WAPT_Plugin::app()->getOption( "generate_autoimage", 'find' );
281
+ if ( $generate == 'find' ) {
282
+ $auto_generate = false;
283
+ } else if ( $generate == 'generate' || $generate == 'both' ) {
284
+ $auto_generate = true;
285
+ } else {
286
+ $auto_generate = false;
287
+ }
288
 
289
 
290
+ $has_thumb = (bool) $_POST['withThumb'];
291
+ $type = $_POST['posttype'];
292
+ if ( auto_post_thumbnails()->is_premium() ) {
293
  $status = $_POST['poststatus'];
 
294
  $category = $_POST['category'];
295
  $date_start = $_POST['date_start'] ? DateTime::createFromFormat( get_option( 'date_format ' ), $_POST['date_start'] )->format( 'Y-m-d' ) : 0;
296
  $date_end = $_POST['date_end'] ? DateTime::createFromFormat( get_option( 'date_format ' ), $_POST['date_end'] )->format( 'Y-m-d' ) : 0;
297
  // Get id's of the posts that satisfy the filters
298
+ $query = $this->get_posts_query( $has_thumb, $type, $status, $category, $date_start, $date_end );
299
+ } else {
 
 
300
  // Get id's of all the published posts for which post thumbnails exist or does not exist
301
+ $query = $this->get_posts_query( $has_thumb, $type );
302
  }
303
 
304
  if ( ! empty( $query->posts ) ) {
306
  $ids = [];
307
  foreach ( $query->posts as $post ) {
308
  //если запрошены посты без тамбнеила, значит пользователь хочет сгенерировать их
309
+ if ( ! $has_thumb ) {
310
  $images = $this->get_images_from_post( $post->ID );
311
+ if ( ( isset( $images['urls'] ) && count( $images['urls'] ) ) || $auto_generate ) {
312
  $ids[] = $post->ID;
313
  }
314
+ } else //иначе он хочет удалить тамбнэйлы
315
+ {
316
  $ids[] = $post->ID;
317
+ }
318
  }
319
  $ids = implode( ',', $ids );
320
  echo $ids;
371
  set_time_limit( 60 );
372
 
373
  // Pass on the id to our 'publish' callback function.
374
+ echo delete_post_thumbnail( $id );
375
 
376
  die( - 1 );
377
  }
383
  */
384
  public function notice_auto_generation() {
385
  ?>
386
+ <div class="notice notice-warning is-dismissible" id="notice_auto_generation">
387
+ <p><b>Auto Featured Image:</b> Do you want to enable automatic post thumbnail generation? Enable this option
388
+ in
389
+ <a href="<?php echo admin_url( 'admin.php?page=wapt_settings-wbcr_apt&tab=general' ); ?>">settings</a><br>
390
  <a href="#" id="hide_notice_auto_generation">Don't ask again</a>
391
+ </p>
392
+ </div>
393
  <?php
394
  }
395
 
397
  *
398
  */
399
  public function hide_notice_auto_generation() {
400
+ if ( isset( $_POST['action'] ) && $_POST['action'] === 'hide_notice_auto_generation' ) {
401
+ WAPT_Plugin::app()->updateOption( 'auto_generation_notice', 0 );
402
+ }
 
403
  }
404
 
405
  /**
427
  *
428
  * @param $new_status
429
  * @param $old_status
430
+ * @param WP_Post $post Instance of post.
431
  *
432
  * @return void
433
  */
443
  *
444
  * @return WP_Query
445
  */
446
+ public function get_posts_query( $has_thumb = false, $type = 'post', $status = 'publish', $category = 0, $date_start = 0, $date_end = 0 ) {
447
 
448
+ $q_status = $status ? $status : 'any';
449
+ $q_type = $type ? $type : 'any';
450
  $q_has_thumb = $has_thumb ? "EXISTS" : "NOT EXISTS";
451
 
452
  $args = array(
453
+ 'posts_per_page' => - 1,
454
+ 'post_status' => $q_status,
455
+ 'post_type' => $q_type,
456
+ 'meta_query' => array(
457
  'relation' => 'AND',
458
  array(
459
+ 'key' => '_thumbnail_id',
460
  'compare' => $q_has_thumb
461
  ),
462
  array(
463
+ 'key' => 'skip_post_thumb',
464
  'compare' => 'NOT EXISTS'
465
  ),
466
  ),
467
  );
468
+ if ( $category ) {
469
+ $args['cat'] = $category;
470
+ }
471
+ if ( $date_start && $date_start ) {
472
  $args['date_query'][] = array(
473
  'after' => $date_start,
474
  'before' => $date_end,
475
  'inclusive' => true,
476
  );
477
  }
478
+ $query = new WP_Query( $args );
479
 
480
  // $query = "SELECT * FROM {$wpdb->posts} p WHERE {$q_status_type}
481
  // {$q_date} AND (
501
  $images = [];
502
 
503
  //do shortcodes before search images
504
+ $post_content = do_shortcode( $post->post_content );
505
 
506
  // Get all images from post's body
507
  preg_match_all( '/<\s*img .*src\s*=\s*[\""\']?([^\""\'>]*).*?>/i', $post_content, $matches );
581
  /**
582
  * Function to save first image in post as post thumbnail.
583
  *
584
+ * @param int $post_id Post ID.
585
  *
586
  * @return int
587
  */
594
  return 0;
595
  }
596
 
597
+ $thumb_id = 0;
598
  $autoimage = WAPT_Plugin::app()->getOption( "generate_autoimage", 'find' );
599
+ $images = $this->get_images_from_post( $post_id );
600
+ if ( ( isset( $images['tags'] ) && count( $images['tags'] ) ) && $autoimage !== 'generate' ) {
601
 
602
  foreach ( $images['tags'] as $key => $image ) {
603
+ $thumb_id = $this->get_thumbnail_id( $image, $images['urls'][ $key ] );
604
  // If we succeed in generating thumb, let's update post meta
605
  if ( $thumb_id ) {
606
  update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
607
+
608
  return $thumb_id;
609
  } else {
610
  $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '" . $images['urls'][ $key ] . "'" );
611
+ if ( $thumb_id ) {
612
  update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
613
+
614
  return $thumb_id ? $thumb_id : 0;
615
+ } else {
616
+ if ( auto_post_thumbnails()->is_premium() ) {
617
+ $thumb_id = apply_filters( 'wapt/generate_post_thumb', $images['urls'][ $key ], $post_id );
618
+ }
619
+ if ( $thumb_id ) {
620
  update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
621
+
622
  return $thumb_id;
623
  }
624
  }
625
  }
626
  }
627
+ } else {
 
628
  // создаём свою картинку с заголовком на цветном фоне
629
  if ( $autoimage == 'generate' || $autoimage == 'both' ) {
630
 
631
+ $thumb_id = $this->generate_and_attachment( $post_id );
632
  if ( $thumb_id ) {
633
  update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
634
 
665
  *
666
  * https://gist.github.com/steve-todorov/3671626
667
  *
668
+ * @param array $input_array
669
  * @param string $search_value
670
+ * @param bool $case_sensitive
671
  *
672
  * @return array
673
  */
701
  public function generate_post_thumb( $image_url, $title, $post_id ) {
702
  // Get the URL now for further processing
703
  //$imageUrl = $matches[1][ $key ];
704
+ $imageUrl = $image_url;
705
  $imageTitle = $title;
706
 
707
  // Get the file name
708
  $filename = substr( $imageUrl, ( strrpos( $imageUrl, '/' ) ) + 1 );
709
  //исключаем параметры после имени файла
710
+ if ( strrpos( $filename, '?' ) ) {
711
  $filename = substr( $filename, 0, strrpos( $filename, '?' ) );
712
+ }
713
 
714
  if ( ! ( ( $uploads = wp_upload_dir( current_time( 'mysql' ) ) ) && false === $uploads['error'] ) ) {
715
  return null;
718
  // Generate unique file name
719
  $filename = wp_unique_filename( $uploads['path'], $filename );
720
 
 
721
  $new_file = $uploads['path'] . "/$filename";
722
+ $ext = pathinfo( $new_file, PATHINFO_EXTENSION );
723
+ if ( empty( $ext ) ) {
724
+ $ext = "jpg";
725
+ $filename .= ".{$ext}";
726
+ $new_file .= ".{$ext}";
727
+ }
728
 
729
+ // Move the file to the uploads dir
730
  if ( ! ini_get( 'allow_url_fopen' ) ) {
731
  $file_data = $this->curl_get_file_contents( $imageUrl );
732
  } else {
733
+ $arrContextOptions = array(
734
  "ssl" => array(
735
+ "verify_peer" => false,
736
  "verify_peer_name" => false,
737
  ),
738
  );
739
+ $file_data = file_get_contents( $imageUrl, false, stream_context_create( $arrContextOptions ) );
740
  }
741
 
742
 
751
  }
752
 
753
  $allowed = get_allowed_mime_types();
 
754
  if ( ! $this->array_contains_key( $allowed, $ext ) ) {
755
  return null;
756
  }
842
  * Function to filling "image" column in Posts table
843
  *
844
  * @param string $colname
845
+ * @param int $post_id
846
  */
847
  public function fill_image_column( $colname, $post_id ) {
848
  if ( $colname === 'apt-image' ) {
870
  if ( isset( $_POST['thumbnail_id'] ) && ! empty( $_POST['thumbnail_id'] ) ) {
871
  $thumb_id = intval( $_POST['thumbnail_id'] );
872
 
873
+ if ( $thumb_id == - 1 ) //generate image
874
  {
875
+ $thumb_id = $this->generate_and_attachment( $post_id );
876
  }
877
+ } else if ( isset( $_POST['image'] ) && ! empty( $_POST['image'] ) ) {
 
 
878
  $img = $_POST['image'];
879
 
880
  //Совместимость с NexGen
881
+ $img = preg_replace( '/(thumbs\/thumbs_)/', '.', $img );
882
 
883
  global $wpdb;
884
  $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '" . $img . "'" );
885
+ if ( ! $thumb_id ) {
886
  //если ссылка на миниатюру, то регулярка сделает ссылку на оригинал. убирает в конце названия файла -150x150
887
+ $img = preg_replace( '/-[0-9]{1,}x[0-9]{1,}\./', '.', $img );
888
  $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '" . $img . "'" );
889
  }
890
+ if ( ! $thumb_id ) {
891
  $thumb_id = $this->generate_post_thumb( $img, '', $post_id );
892
  }
893
+ } else {
 
894
  $thumb_id = 0;
895
  }
896
+ if ( $thumb_id ) {
897
+ update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
898
+ }
899
 
900
  echo $this->apt_getThumbHtml( $post_id, $thumb_id );
901
  }
932
  $wpnonce = wp_create_nonce( 'set_post_thumbnail-' . $post_id );
933
  $ajaxloader = WAPT_PLUGIN_URL . "/admin/assets/img/ajax-loader.gif";
934
  $content = "";
935
+ $html = "<a title='{$title}' href='#' class='modal-init-js' id='modal-init-js_{$post_id}' " . ")'>{$imgTag}</a>" . "<span id='loader_{$post_id}' style='display:none;'><img src='{$ajaxloader}' width='100px' alt=''></span>" . "<div id='post_imgs_{$post_id}' class='imgs' style='display:none;'>" . "<span style='display:none;'><img src='{$ajaxloader}' alt=''></span><p>{$content}</p></div>";
936
 
937
  return $html;
938
  }
945
  * @return void
946
  */
947
  public function my_custom_submenu_page() {
948
+ add_media_page( __( 'Auto Featured Images', 'apt' ), __( 'Add from APT', 'apt' ), 'manage_options', 'menu-media-apt', [
949
  $this,
950
  'addToMediaFromApt'
951
  ] );
971
  * @return array
972
  */
973
  public function addTab( $tabs ) {
974
+ $tabs['apttab'] = __( "Auto Featured Image", "apt" );
975
 
976
  return ( $tabs );
977
  }
1103
 
1104
  $attach_data = wp_generate_attachment_metadata( $attach_id, $target_file_name );
1105
  $result = wp_update_attachment_metadata( $attach_id, $attach_data );
1106
+ if ( ! $result ) {
1107
  //die( 'Error: File attachment metadata error' );
1108
  }
1109
 
1127
  die( 'Error: Invalid request.' );
1128
  }
1129
 
1130
+ if ( isset( $_POST['is_font_upload'] ) && count( $_FILES ) > 0 ) {
1131
+ $file = $_FILES[0];
1132
  $upload_dir = wp_upload_dir();
1133
+ $upload_dir = $upload_dir['basedir'] . "/apt_fonts";
1134
+ if ( ! is_dir( $upload_dir ) ) {
1135
+ mkdir( $upload_dir, 0777 );
1136
+ }
1137
 
1138
  $done_files = array();
1139
+ $file_name = $file['name'];
1140
 
1141
  // Проверка, что файл является шрифтом TrueType
1142
+ $header = file_get_contents( $file['tmp_name'], false, null, null, 4 );
1143
+ if ( $header !== "\x00\x01\x00\x00" && $header !== "true" && $header !== "typ1" ) {
1144
+ die( json_encode( array( 'error' => "The uploaded file is not a TrueType font" ) ) );
1145
+ }
1146
+ //-----
1147
+
1148
+ if ( move_uploaded_file( $file['tmp_name'], "$upload_dir/$file_name" ) ) {
1149
+ if ( realpath( "$upload_dir/$file_name" ) ) {
1150
+ $data = array( 'files' => $file );
1151
+ } else {
1152
+ $data = array( 'error' => "Unable to copy the file to the font folder: $upload_dir" );
1153
+ }
1154
  }
1155
 
1156
  die( json_encode( $data ) );
1166
  if ( ! wp_verify_nonce( $_POST['nonce'], 'apt_api' ) ) {
1167
  die( 'Error: Invalid request.' );
1168
  }
1169
+ if ( isset( $_POST['query'] ) ) {
1170
+ $query = $_POST['query'];
1171
+ $google_key = WAPT_Plugin::app()->getOption( 'google_apikey' );
1172
+ $google_cse = WAPT_Plugin::app()->getOption( 'google_cse' );
 
1173
 
1174
+ if ( isset( $_POST['page'] ) ) {
1175
  $page = $_POST['page'];
1176
+ } else {
1177
  $page = 1;
1178
+ }
1179
+
1180
+ if ( isset( $_POST['rights'] ) && (int) $_POST['rights'] ) {
1181
+ $rights = "&rights=(cc_publicdomain%7Ccc_attribute%7Ccc_sharealike).-(cc_noncommercial%7Ccc_nonderived)";
1182
+ } else {
1183
+ $rights = '';
1184
+ }
1185
 
1186
+ $start = ( ( $page - 1 ) * 10 ) + 1;
1187
+ $url = "https://www.googleapis.com/customsearch/v1?searchType=image&start={$start}{$rights}&q=" . urlencode( $query ) . "&key={$google_key}&cx={$google_cse}";
1188
 
1189
  // Check limits
1190
+ $limit = WAPT_Plugin::app()->getOption( 'google_limit' );
1191
+ if ( ! $limit ) {
1192
+ WAPT_Plugin::app()->updateOption( 'google_limit', array( 'expires' => time(), 'count' => 10 ) );
1193
+ }
1194
+ if ( time() - $limit['expires'] > 3600 ) //1 hour - 3600 sec
1195
  {
1196
  $limit['expires'] = time();
1197
+ $limit['count'] = 10;
1198
+ WAPT_Plugin::app()->updateOption( 'google_limit', $limit );
1199
  }
1200
 
1201
+ if ( ! WAPT_Plugin::app()->premium->is_active() && ! WAPT_Plugin::app()->premium->is_activate() ) {
1202
  if ( $limit['count'] < 1 ) {
1203
  die( sprintf( __( 'You have reached the limit at the moment. Try again in an 1 hour or <a href="%s">Upgrade to Premium</a>', 'apt' ), WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ) ) );
1204
  }
1205
  $limit['count'] --;
1206
  }
1207
 
1208
+ if ( $start === 1 ) {
1209
+ WAPT_Plugin::app()->updateOption( 'google_limit', $limit );
1210
+ }
1211
 
1212
  $response = wp_remote_get( $url, [ 'timeout' => 100 ] );
1213
  if ( is_wp_error( $response ) ) {
1229
  if ( ! wp_verify_nonce( $_POST['nonce'], 'check-api-key' ) ) {
1230
  die( 'Error: Invalid request.' );
1231
  }
1232
+ if ( isset( $_POST['provider'] ) && isset( $_POST['key'] ) && isset( $_POST['key2'] ) ) {
 
1233
  $provider = $_POST['provider'];
1234
+ $key = $_POST['key'];
1235
+ $cx = $_POST['key2'];
1236
+ switch ( $provider ) {
1237
  case "google":
1238
  $url = "https://www.googleapis.com/customsearch/v1?q=cat&key={$key}&cx={$cx}";
1239
 
1241
  if ( is_wp_error( $response ) ) {
1242
  die( 'Error: ' . $response->get_error_message() );
1243
  }
1244
+ $result = json_decode( $response['body'] );
1245
+ echo ! isset( $result->error->errors ) ? true : false;
1246
  break;
1247
  }
1248
  exit;
1249
  }
1250
  }
1251
 
1252
+ public function check_api_notice( $notices, $plugin_name ) {
 
1253
  // Если экшен вызывал не этот плагин, то не выводим это уведомления
1254
  if ( $plugin_name != WAPT_Plugin::app()->getPluginName() ) {
1255
  return $notices;
1256
  }
1257
  // Получаем заголовок плагина
1258
  $plugin_title = WAPT_Plugin::app()->getPluginTitle();
1259
+
1260
+ if ( ! WAPT_Plugin::app()->getOption( 'google_apikey' ) && ! WAPT_Plugin::app()->getOption( 'google_cse' ) ) {
 
1261
  // Задаем текст уведомления
1262
+ $notice_text = '<p><b>' . $plugin_title . ':</b> <br>' . sprintf( __( "To download images from Google, specify Google API keys in the <a href='%s'>settings</a>.", 'apt' ), admin_url( 'admin.php?page=wapt_settings-wbcr_apt' ) ) . "</p>";
1263
 
1264
  // Задаем настройки уведомления
1265
  $notices[] = [
1268
  'type' => 'warning',
1269
  'dismissible' => true,
1270
  // На каких страницах показывать уведомление ('plugins', 'dashboard', 'edit')
1271
+ 'where' => array( 'plugins', 'dashboard', 'edit' ),
1272
  // Через какое время уведомление снова появится?
1273
  'dismiss_expires' => 0,
1274
  'text' => $notice_text,
1275
+ 'classes' => array()
1276
  ];
1277
  }
1278
+
1279
+ return $notices;
1280
  }
1281
 
1282
+ public function show_about_notice( $notices, $plugin_name ) {
 
1283
  // Если экшен вызывал не этот плагин, то не выводим это уведомления
1284
  if ( $plugin_name != WAPT_Plugin::app()->getPluginName() ) {
1285
  return $notices;
1287
  // Получаем заголовок плагина
1288
  $plugin_title = WAPT_Plugin::app()->getPluginTitle();
1289
 
1290
+ $notice_text = '<p><b>' . $plugin_title . ':</b> ' .
1291
+ sprintf( __( "What's new in version 3.7.0? Find out from <a href='%s'>the article</a> on our website.", 'apt' ), 'https://cm-wp.com/auto-featured-image-from-title/' ) . "</p>";
1292
+ $notices[] = [
1293
+ 'id' => 'apt_show_about_370',
1294
+ //error, success, warning
1295
+ 'type' => 'info',
1296
+ 'dismissible' => true,
1297
+ // На каких страницах показывать уведомление ('plugins', 'dashboard', 'edit')
1298
+ 'where' => array( 'plugins', 'dashboard', 'edit' ),
1299
+ // Через какое время уведомление снова появится?
1300
+ 'dismiss_expires' => 0,
1301
+ 'text' => $notice_text,
1302
+ 'classes' => array()
1303
+ ];
1304
+
1305
+ return $notices;
1306
  }
1307
+
1308
  /**
1309
  * Получение списка шрифтов из папок
1310
  *
1311
  * @return array
1312
  */
1313
  public static function get_fonts() {
1314
+ $upload_dir = wp_upload_dir();
1315
+ $upload_dir_fonts = $upload_dir['basedir'] . "/apt_fonts";
1316
+ $plugin_dir_fonts = WAPT_PLUGIN_DIR . "/fonts";
1317
+ $fonts = array();
1318
 
1319
+ $fonts[] = array( 'title' => __( 'Standard', 'apt' ), 'type' => 'group' );
1320
+ $files = scandir( $plugin_dir_fonts );
1321
  foreach ( $files as $file ) {
1322
+ if ( $file == '.' || $file == '..' ) {
1323
+ continue;
1324
+ }
1325
+ $name = pathinfo( $plugin_dir_fonts . '/' . $file );
1326
+ $name = $name['filename'];
1327
+ $fonts[] = array( 'value' => $file, 'title' => $name );
1328
  }
1329
 
1330
+ if ( is_dir( $upload_dir_fonts ) ) {
1331
+ $files = scandir( $upload_dir_fonts );
1332
+ }
1333
+ if ( count( $files ) && AutoPostThumbnails::instance()->is_premium() ) {
1334
+ $fonts[] = array( 'title' => __( 'Uploaded', 'apt' ), 'type' => 'group' );
1335
  foreach ( $files as $file ) {
1336
  if ( $file == '.' || $file == '..' ) {
1337
  continue;
1358
  *
1359
  * @return WAPT_Image
1360
  */
1361
+ public static function generate_image_with_text( $text, $pathToSave = '', $format = 'jpg', $width = 800, $height = 600 ) {
1362
+ $font = WAPT_PLUGIN_DIR . "/fonts/Arial.ttf";
1363
+ $font_size = WAPT_Plugin::app()->getOption( 'font-size', 25 );
1364
+ $font_color = WAPT_Plugin::app()->getOption( 'font-color', "#ffffff" );
1365
+ $before_text = '';
1366
+ $after_text = '';
1367
+ $shadow = WAPT_Plugin::app()->getOption( 'shadow', 0 );
1368
+ if ( ! $shadow ) {
1369
+ $shadow_color = '';
1370
+ } else {
1371
+ $shadow_color = WAPT_Plugin::app()->getOption( 'shadow-color', "#ffffff" );
1372
+ }
1373
+
1374
+ $background_type = "color";
1375
+ $background = WAPT_Plugin::app()->getOption( 'background-color', "#ff6262" );
1376
+
1377
+ $text_transform = WAPT_Plugin::app()->getOption( 'text-transform', "no" );
1378
+ switch ( $text_transform ) {
1379
  case 'upper':
1380
  $text = strtoupper( $text );
1381
  break;
1384
  break;
1385
  }
1386
 
1387
+ $text_crop = WAPT_Plugin::app()->getOption( 'text-crop', 100 );
1388
+ if ( $text_crop > 0 ) {
1389
+ if ( strlen( $text ) > $text_crop ) {
1390
+ $temp = substr( $text, 0, $text_crop );
1391
  $text = substr( $temp, 0, strrpos( $temp, ' ' ) );
1392
  }
1393
 
1397
  $valign = 'center';
1398
  $padding_tb = 15;
1399
  $padding_lr = 15;
1400
+ $line_spacing = WAPT_Plugin::app()->getOption( 'text-line-spacing', 1.5 );
1401
 
1402
+ $params = array(
1403
+ 'text' => $text,
1404
  'pathToSave' => $pathToSave,
1405
+ 'format' => $format,
1406
+ 'width' => $width,
1407
+ 'height' => $height,
1408
  );
1409
+ $image = new WAPT_Image( $width, $height, $background, $font, $font_size, $font_color );
1410
  $image->params = $params;
1411
  $image->setPadding( $padding_lr, $padding_tb );
1412
+ $image->write_text( $before_text . $text . $after_text, '', '', '', $align, $valign, $line_spacing, $shadow_color );
1413
+ if ( ! empty( $pathToSave ) ) {
1414
+ $image->save( $pathToSave, 100, $format );
1415
+ }
1416
 
1417
  return $image;
1418
 
1419
  }
1420
+
1421
  /**
1422
  * Генерация изображения с текстом.
1423
  * Если $pathToSave задан, то файл сохранится по этому пути.
1426
  *
1427
  * @return integer $thumb_id
1428
  */
1429
+ public function generate_and_attachment( $post_id ) {
1430
  $format = WAPT_Plugin::app()->getOption( "image-type", "jpg" );
1431
+ switch ( $format ) {
 
1432
  case 'png':
1433
  $extension = 'png';
1434
+ $mime_type = "image/png";
1435
  break;
1436
  case 'jpg':
1437
  case 'jpeg':
1438
  default:
1439
  $extension = 'jpg';
1440
+ $mime_type = "image/jpeg";
1441
  break;
1442
  }
1443
+ $post = get_post( $post_id, 'OBJECT' );
1444
 
1445
  $uploads = wp_upload_dir( current_time( 'mysql' ) );
1446
 
1449
  $filename = wp_unique_filename( $uploads['path'], $filename );
1450
 
1451
  // Move the file to the uploads dir
1452
+ $image = apply_filters( 'wapt/generate/image', $this->generate_image_with_text( $post->post_title, $uploads['path'] . "/$filename", $extension ), $post->post_title, $uploads['path'] . "/$filename", $extension );
1453
 
1454
+ if ( file_exists( $uploads['path'] . "/$filename" ) ) {
1455
  // Compute the URL
1456
  $file_url = $uploads['url'] . "/$filename";
1457
  $file_path = $uploads['path'] . "/$filename";
1472
  // Added fix by misthero as suggested
1473
  wp_update_attachment_metadata( $thumb_id, wp_generate_attachment_metadata( $thumb_id, $file_path ) );
1474
  update_attached_file( $thumb_id, $file_path );
1475
+
1476
  return $thumb_id;
1477
  }
1478
  }
1479
+
1480
  return 0;
1481
 
1482
  }
includes/class-wapt-image.php CHANGED
@@ -12,7 +12,6 @@ if ( ! defined( 'ABSPATH' ) ) {
12
  * @copyright (c) 2020 Webraftic Ltd
13
  * @version 1.0
14
  */
15
-
16
  class WAPT_Image {
17
 
18
  /**
@@ -34,7 +33,7 @@ class WAPT_Image {
34
  /**
35
  * @var string
36
  */
37
- private $font_path = WAPT_PLUGIN_DIR."/fonts/arial.ttf";
38
 
39
  /**
40
  * @var integer
@@ -99,7 +98,7 @@ class WAPT_Image {
99
  */
100
  public function setPadding( $padding_left, $padding_top ) {
101
  $this->padding_left = $padding_left;
102
- $this->padding_top = $padding_top;
103
  }
104
 
105
  /**
@@ -120,7 +119,9 @@ class WAPT_Image {
120
  * @param string $font_path
121
  */
122
  public function setFontPath( $font_path ) {
123
- if(file_exists( $font_path)) $this->font_path = $font_path;
 
 
124
  }
125
 
126
  /**
@@ -129,7 +130,7 @@ class WAPT_Image {
129
  * @param string $font
130
  */
131
  public function setFont( $font ) {
132
- $this->font_path = WAPT_PLUGIN_DIR."/fonts/{$font}.ttf";
133
  }
134
 
135
  /**
@@ -149,7 +150,7 @@ class WAPT_Image {
149
  /**
150
  * @param string $text
151
  */
152
- public function setText($text) {
153
  $this->text = $text;
154
  }
155
 
@@ -174,14 +175,14 @@ class WAPT_Image {
174
  public function __construct( $width, $height, $background = '#ffffff', $font = '', $font_size = 0, $font_color = '#000000' ) {
175
  self::$app = $this;
176
 
177
- $this->width = $width;
178
- $this->height = $height;
179
  $this->background = $background;
180
- $this->font_path = $font;
181
- $this->font_size = $font_size;
182
  $this->font_color = $font_color;
183
 
184
- $this->image = $this->create($width, $height, $background);
185
  }
186
 
187
  /**
@@ -198,42 +199,40 @@ class WAPT_Image {
198
  *
199
  * @return Resource
200
  */
201
- public function create($width, $height, $background = '#ffffff') {
202
- if(is_numeric( $background)) //image
203
  {
204
- $image = wp_get_attachment_metadata( $background);
205
- if($image) {
206
  $upload_dir = wp_upload_dir();
207
- $file_path = $upload_dir['basedir'].'/'.$image['file'];
208
- $file_type = wp_check_filetype( $file_path );
209
  switch ( $file_type['type'] ) {
210
  case 'image/jpeg':
211
  $im = imagecreatefromjpeg( $file_path );
212
- $this->setWidth( $image['width']);
213
- $this->setHeight( $image['height']);
214
  break;
215
 
216
  case 'image/png':
217
  $im = imagecreatefrompng( $file_path );
218
- imagesavealpha($im, true);
219
- $this->setWidth( $image['width']);
220
- $this->setHeight( $image['height']);
221
  break;
222
 
223
  default:
224
- $im = $this->create( $width, $height);
225
  break;
226
  }
 
 
227
  }
228
- else {
229
- $im = $this->create( $width, $height);
230
- }
231
- }
232
- else { //color
233
- $im = imagecreatetruecolor($width, $height);
234
- $color = $this->color_hex_to_rgb( $background);
235
- $bg_color = imagecolorallocate($im, $color['r'], $color['g'], $color['b']);
236
- imagefill($im, 0, 0, $bg_color);
237
  }
238
 
239
  return $im;
@@ -242,12 +241,16 @@ class WAPT_Image {
242
  /**
243
  * Convert hex color to RGB
244
  *
245
- * @param string $hex
 
246
  * @return array
247
  */
248
- private function color_hex_to_rgb($hex = '') {
249
- if(empty($hex)) $hex = $this->font_color;
250
- list($r, $g, $b) = sscanf($hex, "#%02x%02x%02x");
 
 
 
251
  return array(
252
  'r' => $r,
253
  'g' => $g,
@@ -266,23 +269,21 @@ class WAPT_Image {
266
  *
267
  * @return array|false
268
  */
269
- public function get_font_char_size()
270
- {
271
- if($this->font_path !== '' && $this->font_size !== 0) {
272
 
273
- $text = !empty($this->text) ? $this->text : $this->reference_text;
274
  //$txt_image = $this->create( 500, 500 );
275
- $box = imagettfbbox($this->font_size, 0, $this->font_path, $text);
276
- $width = $box[2]-$box[0];
277
- $height = $box[1]-$box[7];
278
  $result = array(
279
- 'width' => ceil($width / strlen( $text )), //средняя ширина одного символа
280
  'height' => $height, //высота одного символа
281
  );
282
 
283
  return $result;
284
- }
285
- else {
286
  return false;
287
  }
288
  }
@@ -290,159 +291,171 @@ class WAPT_Image {
290
  /**
291
  * Write text on the image
292
  *
293
- * @param string $text
294
- * @param string $font = ''
295
  * @param integer $font_size = 0
296
- * @param string $font_color = '#000000'
297
- * @param string $align
298
- * @param string $valign
299
- * @param float $line_spacing
300
- * @param string $shadow_color
301
  *
302
  * @return bool
303
  */
304
- public function write_text($text, $font = '', $font_size = '', $font_color = '', $align = 'left', $valign = 'top', $line_spacing = '1.5', $shadow_color = '')
305
- {
306
- if(!empty($text)) {
307
- if(empty($font)) $font = $this->font_path;
308
- if(empty($font_size)) $font_size = $this->font_size;
309
- if(empty($font_color)) $font_color = $this->font_color;
310
- $this->setText( $text);
 
 
 
 
 
311
  $char_size = $this->get_font_char_size();
312
 
313
- $pad_left = (int)$this->padding_left;
314
- $pad_top = (int)$this->padding_top;
315
 
316
- $color = $this->color_hex_to_rgb($font_color);
317
- $font_color = imagecolorallocate($this->image, $color['r'], $color['g'], $color['b']);
318
- if(!empty($shadow_color)) {
319
  $color = $this->color_hex_to_rgb( $shadow_color );
320
  $shadow_color = imagecolorallocate( $this->image, $color['r'], $color['g'], $color['b'] );
321
  }
322
- $line_spacing = (float)$line_spacing;
323
-
324
- $width = $this->width - $pad_left*2;
325
- $height = $this->height - $pad_top*2;
326
-
327
- $chars_per_line = ceil($width/$char_size['width'] *0.9); //count of chars per line
328
- $text2 = wordwrap ($text, $chars_per_line, "\n", false);
329
- $text2 = str_replace( "[br]", "\n", $text2);
330
- $line_count = count(explode("\n",$text2));
331
- $lines = explode("\n",$text2);
332
- for ($i=0; $i<$line_count; $i++) {
333
- $box = imagettfbbox( $font_size, 0, $font, $this->commas_cut( $lines[$i] ) );
334
  $w = $box[4] - $box[6];
335
- if($w > $width) { $font_size--; $i=0; }
 
 
 
336
 
337
  }
338
 
339
  $text_height = $line_count * $char_size['height'];
340
- while ( $text_height > $height || ($height-$text_height <= (2*$pad_left))) {
341
- $this->font_size--;
342
- $font_size--;
343
  $char_size = $this->get_font_char_size();
344
- if(!$char_size) break;
345
- $line_width = ceil($width/$char_size['width'] * 0.9); //count of chars per line
346
- $text2 = wordwrap ( $text, (int)$line_width, "\n", false);
347
- $text2 = str_replace( "[br]", "\n", $text2);
348
- $line_count = count(explode("\n",$text2));
349
- $text_height = $line_count * ($char_size['height']*$line_spacing);
 
 
350
  }
351
- $width = $this->width;
352
  $height = $this->height;
353
 
354
- $lines = explode("\n",$text2);
355
- if($valign == "bottom") $lines = array_reverse( $lines);
 
 
356
 
357
  foreach ( $lines as $key => $line ) {
358
  $box = imagettfbbox( $font_size, 0, $font, $this->commas_cut( $line ) );
359
- $h = $char_size['height'] * count( $lines ) + ($line_spacing-1)*$char_size['height'] * count( $lines );
360
  $w = $box[4] - $box[6];
361
- $num = $line_spacing*$key;
362
 
363
- switch ($align.'-'.$valign)
364
- {
365
  case 'left-top':
366
  $x = $pad_left;
367
- $y = ceil($pad_top + $char_size['height'] + ($char_size['height']*$num));
368
  break;
369
  case 'left-center':
370
  $x = $pad_left;
371
- $y = ceil(($height/2 - $h/2) + $char_size['height'] + ($char_size['height']*$num));
372
  break;
373
  case 'left-bottom':
374
  $x = $pad_left;
375
- $y = ceil(($height-$pad_top)-($char_size['height']*$num));
376
  break;
377
  //-------------------------
378
  case 'center-top':
379
- $x = ceil($width/2-$w/2);
380
- $y = ceil($pad_top + $char_size['height'] + ($char_size['height']*$num));
381
  break;
382
  case 'center-center':
383
- $x = ceil($width/2-$w/2);
384
- $y = ceil(($height/2 - $h/2) + $char_size['height'] + ($char_size['height']*$num));
385
  break;
386
  case 'center-bottom':
387
- $x = ceil($width/2-$w/2);
388
- $y = ceil(($height-$pad_top)-($char_size['height']*$num));
389
  break;
390
  //-------------------------
391
  case 'right-top':
392
  $x = $width - $w - $pad_left;
393
- $y = ceil($pad_top + $char_size['height'] + ($char_size['height']*$num));
394
  break;
395
  case 'right-center':
396
  $x = $width - $w - $pad_left;
397
- $y = ceil(($height/2 - $h/2) + $char_size['height'] + ($char_size['height']*$num));
398
  break;
399
  case 'right-bottom':
400
  $x = $width - $w - $pad_left;
401
- $y = ceil(($height-$pad_top)-($char_size['height']*$num));
402
  break;
403
  }
404
  //shadow
405
- if(!empty($shadow_color)) imagettftext($this->image, $font_size, 0, $x+2, $y+2, $shadow_color, $font, trim($line));
 
 
406
 
407
  //text
408
- imagettftext($this->image, $font_size, 0, (int)$x, (int)$y, $font_color, $font, trim($line));
409
  //imagerectangle($this->image, 0,$y,$width,$y, 1);
410
  //imagerectangle($this->image, 0,$height/2,$width,$height/2, 2);
411
  }
412
 
413
  return true;
414
- }
415
- else {
416
  return false;
417
  }
418
  }
 
419
  /**
420
  * Save image
421
  *
422
- * @param string $text
423
  *
424
  * @return string
425
  */
426
- public function commas_cut($text) {
427
- return str_replace( ',', '', $text);
428
  }
429
 
430
  /**
431
  * Save image
432
  *
433
- * @param string $path
434
- * @param integer $quality
435
- * @param string $format
436
  */
437
- public function save($path, $quality = 100, $format = 'jpg') {
438
- switch (strtolower( $format))
439
- {
440
  case 'jpg':
441
  case 'jpeg':
442
- imagejpeg($this->image, $path, $quality);
443
  break;
444
  case 'png':
445
- imagepng($this->image, $path);
446
  break;
447
  }
448
  }
12
  * @copyright (c) 2020 Webraftic Ltd
13
  * @version 1.0
14
  */
 
15
  class WAPT_Image {
16
 
17
  /**
33
  /**
34
  * @var string
35
  */
36
+ private $font_path = WAPT_PLUGIN_DIR . "/fonts/arial.ttf";
37
 
38
  /**
39
  * @var integer
98
  */
99
  public function setPadding( $padding_left, $padding_top ) {
100
  $this->padding_left = $padding_left;
101
+ $this->padding_top = $padding_top;
102
  }
103
 
104
  /**
119
  * @param string $font_path
120
  */
121
  public function setFontPath( $font_path ) {
122
+ if ( file_exists( $font_path ) ) {
123
+ $this->font_path = $font_path;
124
+ }
125
  }
126
 
127
  /**
130
  * @param string $font
131
  */
132
  public function setFont( $font ) {
133
+ $this->font_path = WAPT_PLUGIN_DIR . "/fonts/{$font}.ttf";
134
  }
135
 
136
  /**
150
  /**
151
  * @param string $text
152
  */
153
+ public function setText( $text ) {
154
  $this->text = $text;
155
  }
156
 
175
  public function __construct( $width, $height, $background = '#ffffff', $font = '', $font_size = 0, $font_color = '#000000' ) {
176
  self::$app = $this;
177
 
178
+ $this->width = $width;
179
+ $this->height = $height;
180
  $this->background = $background;
181
+ $this->font_path = $font;
182
+ $this->font_size = $font_size;
183
  $this->font_color = $font_color;
184
 
185
+ $this->image = $this->create( $width, $height, $background );
186
  }
187
 
188
  /**
199
  *
200
  * @return Resource
201
  */
202
+ public function create( $width, $height, $background = '#ffffff' ) {
203
+ if ( is_numeric( $background ) ) //image
204
  {
205
+ $image = wp_get_attachment_metadata( $background );
206
+ if ( $image ) {
207
  $upload_dir = wp_upload_dir();
208
+ $file_path = $upload_dir['basedir'] . '/' . $image['file'];
209
+ $file_type = wp_check_filetype( $file_path );
210
  switch ( $file_type['type'] ) {
211
  case 'image/jpeg':
212
  $im = imagecreatefromjpeg( $file_path );
213
+ $this->setWidth( $image['width'] );
214
+ $this->setHeight( $image['height'] );
215
  break;
216
 
217
  case 'image/png':
218
  $im = imagecreatefrompng( $file_path );
219
+ imagesavealpha( $im, true );
220
+ $this->setWidth( $image['width'] );
221
+ $this->setHeight( $image['height'] );
222
  break;
223
 
224
  default:
225
+ $im = $this->create( $width, $height );
226
  break;
227
  }
228
+ } else {
229
+ $im = $this->create( $width, $height );
230
  }
231
+ } else { //color
232
+ $im = imagecreatetruecolor( $width, $height );
233
+ $color = $this->color_hex_to_rgb( $background );
234
+ $bg_color = imagecolorallocate( $im, $color['r'], $color['g'], $color['b'] );
235
+ imagefill( $im, 0, 0, $bg_color );
 
 
 
 
236
  }
237
 
238
  return $im;
241
  /**
242
  * Convert hex color to RGB
243
  *
244
+ * @param string $hex
245
+ *
246
  * @return array
247
  */
248
+ private function color_hex_to_rgb( $hex = '' ) {
249
+ if ( empty( $hex ) ) {
250
+ $hex = $this->font_color;
251
+ }
252
+ list( $r, $g, $b ) = sscanf( $hex, "#%02x%02x%02x" );
253
+
254
  return array(
255
  'r' => $r,
256
  'g' => $g,
269
  *
270
  * @return array|false
271
  */
272
+ public function get_font_char_size() {
273
+ if ( $this->font_path !== '' && $this->font_size !== 0 ) {
 
274
 
275
+ $text = ! empty( $this->text ) ? $this->text : $this->reference_text;
276
  //$txt_image = $this->create( 500, 500 );
277
+ $box = imagettfbbox( $this->font_size, 0, $this->font_path, $text );
278
+ $width = $box[2] - $box[0];
279
+ $height = $box[1] - $box[7];
280
  $result = array(
281
+ 'width' => ceil( $width / strlen( $text ) ), //средняя ширина одного символа
282
  'height' => $height, //высота одного символа
283
  );
284
 
285
  return $result;
286
+ } else {
 
287
  return false;
288
  }
289
  }
291
  /**
292
  * Write text on the image
293
  *
294
+ * @param string $text
295
+ * @param string $font = ''
296
  * @param integer $font_size = 0
297
+ * @param string $font_color = '#000000'
298
+ * @param string $align
299
+ * @param string $valign
300
+ * @param float $line_spacing
301
+ * @param string $shadow_color
302
  *
303
  * @return bool
304
  */
305
+ public function write_text( $text, $font = '', $font_size = '', $font_color = '', $align = 'left', $valign = 'top', $line_spacing = '1.5', $shadow_color = '' ) {
306
+ if ( ! empty( $text ) ) {
307
+ if ( empty( $font ) ) {
308
+ $font = $this->font_path;
309
+ }
310
+ if ( empty( $font_size ) ) {
311
+ $font_size = $this->font_size;
312
+ }
313
+ if ( empty( $font_color ) ) {
314
+ $font_color = $this->font_color;
315
+ }
316
+ $this->setText( $text );
317
  $char_size = $this->get_font_char_size();
318
 
319
+ $pad_left = (int) $this->padding_left;
320
+ $pad_top = (int) $this->padding_top;
321
 
322
+ $color = $this->color_hex_to_rgb( $font_color );
323
+ $font_color = imagecolorallocate( $this->image, $color['r'], $color['g'], $color['b'] );
324
+ if ( ! empty( $shadow_color ) ) {
325
  $color = $this->color_hex_to_rgb( $shadow_color );
326
  $shadow_color = imagecolorallocate( $this->image, $color['r'], $color['g'], $color['b'] );
327
  }
328
+ $line_spacing = (float) $line_spacing;
329
+
330
+ $width = $this->width - $pad_left * 2;
331
+ $height = $this->height - $pad_top * 2;
332
+
333
+ $chars_per_line = ceil( $width / $char_size['width'] * 0.9 ); //count of chars per line
334
+ $text2 = wordwrap( $text, $chars_per_line, "\n", false );
335
+ $text2 = str_replace( "[br]", "\n", $text2 );
336
+ $line_count = count( explode( "\n", $text2 ) );
337
+ $lines = explode( "\n", $text2 );
338
+ for ( $i = 0; $i < $line_count; $i ++ ) {
339
+ $box = imagettfbbox( $font_size, 0, $font, $this->commas_cut( $lines[ $i ] ) );
340
  $w = $box[4] - $box[6];
341
+ if ( $w > $width ) {
342
+ $font_size --;
343
+ $i = 0;
344
+ }
345
 
346
  }
347
 
348
  $text_height = $line_count * $char_size['height'];
349
+ while ( $text_height > $height || ( $height - $text_height <= ( 2 * $pad_left ) ) ) {
350
+ $this->font_size --;
351
+ $font_size --;
352
  $char_size = $this->get_font_char_size();
353
+ if ( ! $char_size ) {
354
+ break;
355
+ }
356
+ $line_width = ceil( $width / $char_size['width'] * 0.9 ); //count of chars per line
357
+ $text2 = wordwrap( $text, (int) $line_width, "\n", false );
358
+ $text2 = str_replace( "[br]", "\n", $text2 );
359
+ $line_count = count( explode( "\n", $text2 ) );
360
+ $text_height = $line_count * ( $char_size['height'] * $line_spacing );
361
  }
362
+ $width = $this->width;
363
  $height = $this->height;
364
 
365
+ $lines = explode( "\n", $text2 );
366
+ if ( $valign == "bottom" ) {
367
+ $lines = array_reverse( $lines );
368
+ }
369
 
370
  foreach ( $lines as $key => $line ) {
371
  $box = imagettfbbox( $font_size, 0, $font, $this->commas_cut( $line ) );
372
+ $h = $char_size['height'] * count( $lines ) + ( $line_spacing - 1 ) * $char_size['height'] * count( $lines );
373
  $w = $box[4] - $box[6];
374
+ $num = $line_spacing * $key;
375
 
376
+ switch ( $align . '-' . $valign ) {
 
377
  case 'left-top':
378
  $x = $pad_left;
379
+ $y = ceil( $pad_top + $char_size['height'] + ( $char_size['height'] * $num ) );
380
  break;
381
  case 'left-center':
382
  $x = $pad_left;
383
+ $y = ceil( ( $height / 2 - $h / 2 ) + $char_size['height'] + ( $char_size['height'] * $num ) );
384
  break;
385
  case 'left-bottom':
386
  $x = $pad_left;
387
+ $y = ceil( ( $height - $pad_top ) - ( $char_size['height'] * $num ) );
388
  break;
389
  //-------------------------
390
  case 'center-top':
391
+ $x = ceil( $width / 2 - $w / 2 );
392
+ $y = ceil( $pad_top + $char_size['height'] + ( $char_size['height'] * $num ) );
393
  break;
394
  case 'center-center':
395
+ $x = ceil( $width / 2 - $w / 2 );
396
+ $y = ceil( ( $height / 2 - $h / 2 ) + $char_size['height'] + ( $char_size['height'] * $num ) );
397
  break;
398
  case 'center-bottom':
399
+ $x = ceil( $width / 2 - $w / 2 );
400
+ $y = ceil( ( $height - $pad_top ) - ( $char_size['height'] * $num ) );
401
  break;
402
  //-------------------------
403
  case 'right-top':
404
  $x = $width - $w - $pad_left;
405
+ $y = ceil( $pad_top + $char_size['height'] + ( $char_size['height'] * $num ) );
406
  break;
407
  case 'right-center':
408
  $x = $width - $w - $pad_left;
409
+ $y = ceil( ( $height / 2 - $h / 2 ) + $char_size['height'] + ( $char_size['height'] * $num ) );
410
  break;
411
  case 'right-bottom':
412
  $x = $width - $w - $pad_left;
413
+ $y = ceil( ( $height - $pad_top ) - ( $char_size['height'] * $num ) );
414
  break;
415
  }
416
  //shadow
417
+ if ( ! empty( $shadow_color ) ) {
418
+ imagettftext( $this->image, $font_size, 0, $x + 2, $y + 2, $shadow_color, $font, trim( $line ) );
419
+ }
420
 
421
  //text
422
+ imagettftext( $this->image, $font_size, 0, (int) $x, (int) $y, $font_color, $font, trim( $line ) );
423
  //imagerectangle($this->image, 0,$y,$width,$y, 1);
424
  //imagerectangle($this->image, 0,$height/2,$width,$height/2, 2);
425
  }
426
 
427
  return true;
428
+ } else {
 
429
  return false;
430
  }
431
  }
432
+
433
  /**
434
  * Save image
435
  *
436
+ * @param string $text
437
  *
438
  * @return string
439
  */
440
+ public function commas_cut( $text ) {
441
+ return str_replace( ',', '', $text );
442
  }
443
 
444
  /**
445
  * Save image
446
  *
447
+ * @param string $path
448
+ * @param integer $quality
449
+ * @param string $format
450
  */
451
+ public function save( $path, $quality = 100, $format = 'jpg' ) {
452
+ switch ( strtolower( $format ) ) {
 
453
  case 'jpg':
454
  case 'jpeg':
455
+ imagejpeg( $this->image, $path, $quality );
456
  break;
457
  case 'png':
458
+ imagepng( $this->image, $path );
459
  break;
460
  }
461
  }
includes/class-wapt-plugin.php CHANGED
@@ -6,18 +6,17 @@ if ( ! defined( 'ABSPATH' ) ) {
6
  }
7
 
8
  /**
9
- * Основной класс плагина Auto Post Thumbnail
10
  *
11
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
12
  * @copyright (c) 2018 Webraftic Ltd
13
  * @version 1.0
14
  */
15
-
16
- class WAPT_Plugin extends Wbcr_Factory425_Plugin {
17
 
18
  /**
19
  * @see self::app()
20
- * @var Wbcr_Factory425_Plugin
21
  */
22
  private static $app;
23
 
@@ -25,6 +24,7 @@ class WAPT_Plugin extends Wbcr_Factory425_Plugin {
25
  * @var integer
26
  */
27
  public $numberOfColumn;
 
28
  /**
29
  * Конструктор
30
  *
@@ -32,7 +32,7 @@ class WAPT_Plugin extends Wbcr_Factory425_Plugin {
32
  * Подробнее о свойстве $app см. self::app()
33
  *
34
  * @param string $plugin_path
35
- * @param array $data
36
  *
37
  * @throws Exception
38
  */
@@ -51,14 +51,16 @@ class WAPT_Plugin extends Wbcr_Factory425_Plugin {
51
  $this->admin_scripts();
52
  //------ ACTIONS ------
53
  // filter posts
54
- add_action( 'restrict_manage_posts', [ $this, 'add_posts_filters']);
55
- add_action( 'pre_get_posts', [ $this, 'posts_filter'], 10, 1 );
56
  add_filter( 'views_edit-post', [ $this, 'add_filter_link' ], 10, 1 );
57
  // bulk actions
58
- add_filter( 'bulk_actions-edit-post', [ $this, 'register_bulk_action_generate'] );
59
- add_filter( 'handle_bulk_actions-edit-post', [ $this, 'bulk_action_generate_handler'], 10, 3 );
60
- add_action( 'admin_notices', [ $this, 'apt_bulk_action_admin_notice'] );
61
- add_action( 'admin_notices', [ $this, 'update_admin_notice'] );
 
 
62
  }
63
  $this->global_scripts();
64
  }
@@ -72,7 +74,7 @@ class WAPT_Plugin extends Wbcr_Factory425_Plugin {
72
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
73
  * классам.
74
  *
75
- * @return Wbcr_Factory425_Plugin
76
  */
77
  public static function app() {
78
  return self::$app;
@@ -83,17 +85,17 @@ class WAPT_Plugin extends Wbcr_Factory425_Plugin {
83
  *
84
  * @return bool
85
  */
86
- public function is_premium()
87
- {
88
- if(
89
  $this->premium->is_active() &&
90
  $this->premium->is_activate() &&
91
  is_plugin_active( "{$this->premium->get_setting('slug')}/{$this->premium->get_setting('slug')}.php" )
92
  //$this->premium->is_install_package()
93
- )
94
  return true;
95
- else
96
  return false;
 
97
  }
98
 
99
  /**
@@ -136,31 +138,30 @@ class WAPT_Plugin extends Wbcr_Factory425_Plugin {
136
  *
137
  * @return array(string)
138
  */
139
- public function register_bulk_action_generate($bulk_actions)
140
- {
141
- $bulk_actions['apt_generate_thumb'] = __('Generate featured image', 'apt');
142
- $bulk_actions['apt_delete_thumb'] = __('Unset featured image', 'apt');
143
  return $bulk_actions;
144
  }
 
145
  /**
146
  * Handler of bulk option for posts
147
  *
148
  * @return string
149
  */
150
- public function bulk_action_generate_handler($redirect_to, $doaction, $post_ids)
151
- {
152
- if( $doaction !== 'apt_generate_thumb' && $doaction !== 'apt_delete_thumb' )
153
  return $redirect_to;
 
154
 
155
- foreach( $post_ids as $post_id )
156
- {
157
- switch($doaction)
158
- {
159
  case 'apt_generate_thumb':
160
- $thumb = auto_post_thumbnails()->publish_post($post_id);
161
  break;
162
  case 'apt_delete_thumb':
163
- delete_post_thumbnail($post_id);
164
  break;
165
  }
166
  }
@@ -173,44 +174,46 @@ class WAPT_Plugin extends Wbcr_Factory425_Plugin {
173
 
174
  return $redirect_to;
175
  }
 
176
  /**
177
  * Admin notice after bulk action
178
  *
179
  */
180
- public function apt_bulk_action_admin_notice()
181
- {
182
- if( empty( $_GET['apt_bulk_action'] ) )
183
  return;
 
184
 
185
  $data = $_GET['apt_bulk_action'];
186
- $msg = __('Processed posts: ','apt').intval($data);
187
- echo '<div id="message" class="updated"><p>'. $msg .'</p></div>';
188
  }
 
189
  /**
190
  * Admin notice
191
  *
192
  */
193
- public function update_admin_notice()
194
- {
195
- if( defined( 'WAPTP_PLUGIN_VERSION') && str_replace( '.', '', WAPTP_PLUGIN_VERSION) < 130 ) {
196
- $msg = __( 'To use premium features, update the <b>Auto Post Thumbnail Premium</b> plugin!', 'apt' );
197
  echo '<div id="message" class="notice notice-warning is-dismissible"><p>' . $msg . '</p></div>';
198
  }
199
  }
 
200
  /**
201
  * Add filter on the Posts list tables.
202
  *
203
  * @param $post_type string
204
  * @param $witch string
205
  */
206
- public function add_posts_filters()
207
- {
208
  $screen = get_current_screen();
209
 
210
- if(!empty($screen) && "post" == $screen->post_type)
211
- {
212
  $apt_is_image = false;
213
- if(isset($_GET['apt_is_image'])) $apt_is_image = $_GET['apt_is_image'];
 
 
214
 
215
  echo '<select name="apt_is_image">' .
216
  '<option value="-1">' . __( 'Featured Image', 'apt' ) . '</option>' .
@@ -226,21 +229,25 @@ class WAPT_Plugin extends Wbcr_Factory425_Plugin {
226
  * @param $query WP_Query
227
  *
228
  */
229
- public function posts_filter($query)
230
- {
231
- if( ! is_admin() ) return; // выходим если не админка
 
232
 
233
  // убедимся что мы на нужной странице админки
234
- require_once(ABSPATH.'wp-admin/includes/screen.php');
235
  $cs = get_current_screen();
236
- if( empty($cs->post_type) || $cs->post_type != 'post' || $cs->id != 'edit-post' ) return;
 
 
237
 
238
- if(isset($_GET['apt_is_image']) && $_GET['apt_is_image'] != -1) {
239
- if((int)$_GET['apt_is_image'] == 1)
240
  $compare = 'EXISTS';
241
- else
242
  $compare = 'NOT EXISTS';
243
- $query->set( 'meta_query', array(array('key' => '_thumbnail_id','compare' => $compare)) );
 
244
  }
245
  }
246
 
@@ -248,15 +255,29 @@ class WAPT_Plugin extends Wbcr_Factory425_Plugin {
248
  * Add filter on the Posts list tables.
249
  *
250
  */
251
- public function add_filter_link($views)
252
- {
253
- $query = auto_post_thumbnails()->get_posts_query(false, 'publish','post');
254
- $posts = $query->post_count;
255
-
256
- $q = add_query_arg( array('apt_is_image' => '0', 'post_type' => 'post'), 'edit.php' );
257
- $views['apt_filter'] = '<a href="'.$q.'">'.__('Without featured image','apt').'</a> ('.$posts.')';
258
- unset($my);
259
  return $views;
 
260
 
 
 
 
 
 
 
 
 
 
 
 
 
261
  }
 
262
  }
6
  }
7
 
8
  /**
9
+ * Основной класс плагина Auto Featured Image
10
  *
11
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
12
  * @copyright (c) 2018 Webraftic Ltd
13
  * @version 1.0
14
  */
15
+ class WAPT_Plugin extends Wbcr_Factory429_Plugin {
 
16
 
17
  /**
18
  * @see self::app()
19
+ * @var Wbcr_Factory429_Plugin
20
  */
21
  private static $app;
22
 
24
  * @var integer
25
  */
26
  public $numberOfColumn;
27
+
28
  /**
29
  * Конструктор
30
  *
32
  * Подробнее о свойстве $app см. self::app()
33
  *
34
  * @param string $plugin_path
35
+ * @param array $data
36
  *
37
  * @throws Exception
38
  */
51
  $this->admin_scripts();
52
  //------ ACTIONS ------
53
  // filter posts
54
+ add_action( 'restrict_manage_posts', [ $this, 'add_posts_filters' ] );
55
+ add_action( 'pre_get_posts', [ $this, 'posts_filter' ], 10, 1 );
56
  add_filter( 'views_edit-post', [ $this, 'add_filter_link' ], 10, 1 );
57
  // bulk actions
58
+ add_filter( 'bulk_actions-edit-post', [ $this, 'register_bulk_action_generate' ] );
59
+ add_filter( 'handle_bulk_actions-edit-post', [ $this, 'bulk_action_generate_handler' ], 10, 3 );
60
+ add_action( 'admin_notices', [ $this, 'apt_bulk_action_admin_notice' ] );
61
+ add_action( 'admin_notices', [ $this, 'update_admin_notice' ] );
62
+
63
+ add_filter( 'plugin_action_links_' . WAPT_PLUGIN_BASENAME, [ $this, 'plugin_action_link' ] );
64
  }
65
  $this->global_scripts();
66
  }
74
  * Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
75
  * классам.
76
  *
77
+ * @return Wbcr_Factory429_Plugin
78
  */
79
  public static function app() {
80
  return self::$app;
85
  *
86
  * @return bool
87
  */
88
+ public function is_premium() {
89
+ if (
 
90
  $this->premium->is_active() &&
91
  $this->premium->is_activate() &&
92
  is_plugin_active( "{$this->premium->get_setting('slug')}/{$this->premium->get_setting('slug')}.php" )
93
  //$this->premium->is_install_package()
94
+ ) {
95
  return true;
96
+ } else {
97
  return false;
98
+ }
99
  }
100
 
101
  /**
138
  *
139
  * @return array(string)
140
  */
141
+ public function register_bulk_action_generate( $bulk_actions ) {
142
+ $bulk_actions['apt_generate_thumb'] = __( 'Generate featured image', 'apt' );
143
+ $bulk_actions['apt_delete_thumb'] = __( 'Unset featured image', 'apt' );
144
+
145
  return $bulk_actions;
146
  }
147
+
148
  /**
149
  * Handler of bulk option for posts
150
  *
151
  * @return string
152
  */
153
+ public function bulk_action_generate_handler( $redirect_to, $doaction, $post_ids ) {
154
+ if ( $doaction !== 'apt_generate_thumb' && $doaction !== 'apt_delete_thumb' ) {
 
155
  return $redirect_to;
156
+ }
157
 
158
+ foreach ( $post_ids as $post_id ) {
159
+ switch ( $doaction ) {
 
 
160
  case 'apt_generate_thumb':
161
+ $thumb = auto_post_thumbnails()->publish_post( $post_id );
162
  break;
163
  case 'apt_delete_thumb':
164
+ delete_post_thumbnail( $post_id );
165
  break;
166
  }
167
  }
174
 
175
  return $redirect_to;
176
  }
177
+
178
  /**
179
  * Admin notice after bulk action
180
  *
181
  */
182
+ public function apt_bulk_action_admin_notice() {
183
+ if ( empty( $_GET['apt_bulk_action'] ) ) {
 
184
  return;
185
+ }
186
 
187
  $data = $_GET['apt_bulk_action'];
188
+ $msg = __( 'Processed posts: ', 'apt' ) . intval( $data );
189
+ echo '<div id="message" class="updated"><p>' . $msg . '</p></div>';
190
  }
191
+
192
  /**
193
  * Admin notice
194
  *
195
  */
196
+ public function update_admin_notice() {
197
+ if ( defined( 'WAPTP_PLUGIN_VERSION' ) && str_replace( '.', '', WAPTP_PLUGIN_VERSION ) < 130 ) {
198
+ $msg = __( 'To use premium features, update the <b>Auto Featured Image Premium</b> plugin!', 'apt' );
 
199
  echo '<div id="message" class="notice notice-warning is-dismissible"><p>' . $msg . '</p></div>';
200
  }
201
  }
202
+
203
  /**
204
  * Add filter on the Posts list tables.
205
  *
206
  * @param $post_type string
207
  * @param $witch string
208
  */
209
+ public function add_posts_filters() {
 
210
  $screen = get_current_screen();
211
 
212
+ if ( ! empty( $screen ) && "post" == $screen->post_type ) {
 
213
  $apt_is_image = false;
214
+ if ( isset( $_GET['apt_is_image'] ) ) {
215
+ $apt_is_image = $_GET['apt_is_image'];
216
+ }
217
 
218
  echo '<select name="apt_is_image">' .
219
  '<option value="-1">' . __( 'Featured Image', 'apt' ) . '</option>' .
229
  * @param $query WP_Query
230
  *
231
  */
232
+ public function posts_filter( $query ) {
233
+ if ( ! is_admin() ) {
234
+ return;
235
+ } // выходим если не админка
236
 
237
  // убедимся что мы на нужной странице админки
238
+ require_once( ABSPATH . 'wp-admin/includes/screen.php' );
239
  $cs = get_current_screen();
240
+ if ( empty( $cs->post_type ) || $cs->post_type != 'post' || $cs->id != 'edit-post' ) {
241
+ return;
242
+ }
243
 
244
+ if ( isset( $_GET['apt_is_image'] ) && $_GET['apt_is_image'] != - 1 ) {
245
+ if ( (int) $_GET['apt_is_image'] == 1 ) {
246
  $compare = 'EXISTS';
247
+ } else {
248
  $compare = 'NOT EXISTS';
249
+ }
250
+ $query->set( 'meta_query', array( array( 'key' => '_thumbnail_id', 'compare' => $compare ) ) );
251
  }
252
  }
253
 
255
  * Add filter on the Posts list tables.
256
  *
257
  */
258
+ public function add_filter_link( $views ) {
259
+ $query = auto_post_thumbnails()->get_posts_query( false, 'post', 'publish' );
260
+ $posts = $query->post_count;
261
+
262
+ $q = add_query_arg( array( 'apt_is_image' => '0', 'post_type' => 'post' ), 'edit.php' );
263
+ $views['apt_filter'] = '<a href="' . $q . '">' . __( 'Without featured image', 'apt' ) . '</a> (' . $posts . ')';
264
+ unset( $my );
265
+
266
  return $views;
267
+ }
268
 
269
+ /**
270
+ * Adds the plugin action link on Plugins table
271
+ *
272
+ * @param array $links links array
273
+ *
274
+ * @return array
275
+ */
276
+ public function plugin_action_link( $links ) {
277
+ $link_generate = '<a href="' . esc_url( $this->getPluginPageUrl( $this->getPrefix() . "generate" ) ) . '">' . esc_html__( 'Generate', 'apt' ) . '</a>';
278
+ array_unshift( $links, $link_generate );
279
+
280
+ return $links;
281
  }
282
+
283
  }
includes/controls/class.color.php CHANGED
@@ -13,43 +13,42 @@
13
  */
14
 
15
  // Exit if accessed directly
16
- if( !defined('ABSPATH') ) {
17
  exit;
18
  }
19
 
20
- if( !class_exists('Wapt_FactoryForms_ColorControl') ) {
21
 
22
- class Wapt_FactoryForms_ColorControl extends Wbcr_FactoryForms423_Control {
23
 
24
  public $type = 'wapt-color';
25
 
26
  /**
27
  * Shows the html markup of the control.
28
  *
29
- * @since 1.0.0
30
  * @return void
 
31
  */
32
- public function html()
33
- {
34
- $name = $this->getNameOnForm();
35
- $value = esc_attr($this->getValue());
36
 
37
- if( !$value ) {
38
  $value = '#ffffff';
39
  }
40
  ?>
41
- <script src="<?php echo WAPT_PLUGIN_URL;?>/admin/assets/js/jscolor.js"></script>
42
  <style>
43
- .wapt-jscolor
44
- {
45
  padding: 15px !important;
46
  font-size: 16px !important;
47
  cursor: pointer;
48
  }
49
  </style>
50
- <div <?php $this->attrs() ?>>
51
- <input type="text" readonly id="<?php echo $name; ?>" name="<?php echo $name; ?>" class="factory-input-text jscolor wapt-jscolor" value="<?php echo $value; ?>">
52
- </div>
 
53
  <?php
54
  }
55
  }
13
  */
14
 
15
  // Exit if accessed directly
16
+ if ( ! defined( 'ABSPATH' ) ) {
17
  exit;
18
  }
19
 
20
+ if ( ! class_exists( 'Wapt_FactoryForms_ColorControl' ) ) {
21
 
22
+ class Wapt_FactoryForms_ColorControl extends Wbcr_FactoryForms427_Control {
23
 
24
  public $type = 'wapt-color';
25
 
26
  /**
27
  * Shows the html markup of the control.
28
  *
 
29
  * @return void
30
+ * @since 1.0.0
31
  */
32
+ public function html() {
33
+ $name = $this->getNameOnForm();
34
+ $value = esc_attr( $this->getValue() );
 
35
 
36
+ if ( ! $value ) {
37
  $value = '#ffffff';
38
  }
39
  ?>
40
+ <script src="<?php echo WAPT_PLUGIN_URL; ?>/admin/assets/js/jscolor.js"></script>
41
  <style>
42
+ .wapt-jscolor {
 
43
  padding: 15px !important;
44
  font-size: 16px !important;
45
  cursor: pointer;
46
  }
47
  </style>
48
+ <div <?php $this->attrs() ?>>
49
+ <input type="text" readonly id="<?php echo $name; ?>" name="<?php echo $name; ?>"
50
+ class="factory-input-text jscolor wapt-jscolor" value="<?php echo $value; ?>">
51
+ </div>
52
  <?php
53
  }
54
  }
includes/controls/class.fonts.php CHANGED
@@ -22,69 +22,71 @@ if ( ! defined( 'ABSPATH' ) ) {
22
 
23
  if ( ! class_exists( 'Wapt_FactoryForms_FontsControl' ) ) {
24
 
25
- class Wapt_FactoryForms_FontsControl extends Wbcr_FactoryForms423_DropdownControl {
26
 
27
  public $type = 'wapt-fonts';
28
 
29
  /**
30
  * Shows the assets
31
  *
32
- * @since 1.0.0
33
  * @return void
 
34
  */
35
  public function assets() {
36
  wp_enqueue_script( 'apt-upload-font', WAPT_PLUGIN_URL . '/admin/assets/js/upload-font.js', [], false, true );
37
  wp_localize_script( 'apt-upload-font', 'wapt_upload_font', [ 'nonce' => wp_create_nonce( 'wapt_upload_font' ) ] );
38
  ?>
39
  <style>
40
- .wapt-upload-div
41
- {
42
  margin: 10px 0px;
43
  display: inline;
44
  vertical-align: middle;
45
  margin-left: -5px !important;
46
  }
47
- .wapt-upload-button
48
- {
49
  height: 34px;
50
  box-shadow: 1px 1px 5px -2px #8e8d8d;
51
  border: 1px solid #ccc;
52
  border-radius: 0px 3px 3px 0px;
53
  }
54
- .wapt-upload-loader
55
- {
56
  height: 34px;
57
  display: inline;
58
  margin-left: 5px !important;
59
  }
60
- .wapt-loader-invisible
61
- {
62
  display: none !important;
63
  }
64
 
65
 
66
  </style>
67
- <?php
68
  }
 
69
  /**
70
  * Shows the html markup of the control.
71
  *
72
- * @since 1.0.0
73
  * @return void
 
74
  */
75
  public function html() {
76
 
77
- parent::addCssClass( 'factory-hidden');
78
- parent::addCssClass( 'wapt-form-control');
79
- parent::html();
80
 
81
- $this->assets();
82
  ?>
83
- <div class="wapt-upload-div">
84
  <input type="file" accept=".ttf" id="wapt-font-file" style="display: none;">
85
  <button id="wapt-upload-button" class="wapt-upload-button">Upload custom font</button>
86
- <div id="wapt-upload-loader" class="wapt-upload-loader wapt-loader-invisible"><img src="<?php echo WAPT_PLUGIN_URL;?>/admin/assets/img/ajax-loader.gif" alt="" height="34"></div>
87
- </div>
 
 
88
  <?php
89
 
90
  }
22
 
23
  if ( ! class_exists( 'Wapt_FactoryForms_FontsControl' ) ) {
24
 
25
+ class Wapt_FactoryForms_FontsControl extends Wbcr_FactoryForms427_DropdownControl {
26
 
27
  public $type = 'wapt-fonts';
28
 
29
  /**
30
  * Shows the assets
31
  *
 
32
  * @return void
33
+ * @since 1.0.0
34
  */
35
  public function assets() {
36
  wp_enqueue_script( 'apt-upload-font', WAPT_PLUGIN_URL . '/admin/assets/js/upload-font.js', [], false, true );
37
  wp_localize_script( 'apt-upload-font', 'wapt_upload_font', [ 'nonce' => wp_create_nonce( 'wapt_upload_font' ) ] );
38
  ?>
39
  <style>
40
+ .wapt-upload-div {
 
41
  margin: 10px 0px;
42
  display: inline;
43
  vertical-align: middle;
44
  margin-left: -5px !important;
45
  }
46
+
47
+ .wapt-upload-button {
48
  height: 34px;
49
  box-shadow: 1px 1px 5px -2px #8e8d8d;
50
  border: 1px solid #ccc;
51
  border-radius: 0px 3px 3px 0px;
52
  }
53
+
54
+ .wapt-upload-loader {
55
  height: 34px;
56
  display: inline;
57
  margin-left: 5px !important;
58
  }
59
+
60
+ .wapt-loader-invisible {
61
  display: none !important;
62
  }
63
 
64
 
65
  </style>
66
+ <?php
67
  }
68
+
69
  /**
70
  * Shows the html markup of the control.
71
  *
 
72
  * @return void
73
+ * @since 1.0.0
74
  */
75
  public function html() {
76
 
77
+ parent::addCssClass( 'factory-hidden' );
78
+ parent::addCssClass( 'wapt-form-control' );
79
+ parent::html();
80
 
81
+ $this->assets();
82
  ?>
83
+ <div class="wapt-upload-div">
84
  <input type="file" accept=".ttf" id="wapt-font-file" style="display: none;">
85
  <button id="wapt-upload-button" class="wapt-upload-button">Upload custom font</button>
86
+ <div id="wapt-upload-loader" class="wapt-upload-loader wapt-loader-invisible"><img
87
+ src="<?php echo WAPT_PLUGIN_URL; ?>/admin/assets/img/ajax-loader.gif" alt="" height="34">
88
+ </div>
89
+ </div>
90
  <?php
91
 
92
  }
includes/controls/class.mediabutton.php CHANGED
@@ -14,74 +14,71 @@
14
  */
15
 
16
  // Exit if accessed directly
17
- if( !defined('ABSPATH') ) {
18
  exit;
19
  }
20
 
21
- if( !class_exists('Wapt_FactoryForms_MediaButtonControl') ) {
22
 
23
- class Wapt_FactoryForms_MediaButtonControl extends Wbcr_FactoryForms423_Control {
24
 
25
  public $type = 'wapt-mediabutton';
26
 
27
  /**
28
  * Shows the html markup of the control.
29
  *
30
- * @since 1.0.0
31
  * @return void
 
32
  */
33
- public function html()
34
- {
35
  wp_enqueue_media();
36
 
37
- $name = $this->getNameOnForm();
38
- $value = esc_attr($this->getValue());
39
- $button_text = esc_attr($this->options['text']);
40
  $thumbnail_url = '';
41
- $image_class = 'wapt-invisible';
42
 
43
- if( !$value ) {
44
- $value = 0;
45
  $thumbnail_url = '';
46
- }
47
- else {
48
- $thumbnail = wp_get_attachment_image_src((int)$value, 'thumbnail');
49
- if(is_array( $thumbnail)) {
50
  $thumbnail_url = $thumbnail[0];
51
- $image_class = 'wapt-visible';
52
  }
53
- }
54
  ?>
55
  <style>
56
- .wapt-bg-image-thumb
57
- {
58
  margin: 10px 0px;
59
  border-radius: 10px;
60
- box-shadow: 2px 2px 5px 0px rgba(0,0,0,0.5);
61
  }
62
- .wapt-invisible
63
- {
64
  display: none;
65
  }
66
- .wapt-visible
67
- {
68
  display: block;
69
  }
70
  </style>
71
  <script lang="js">
72
- jQuery(function ( $ ) {
73
 
74
  var frame;
75
- $(document).on('click', '#wapt-select-image', function ( event ) {
76
  event.preventDefault();
77
- if( frame ) {
78
  frame.open();
79
  return;
80
  }
81
 
82
  frame = wp.media({
83
  //title : 'Выберите файл',
84
- button : {
85
  //text: 'Использовать этот файл'
86
  },
87
  multiple: false
@@ -98,11 +95,14 @@ if( !class_exists('Wapt_FactoryForms_MediaButtonControl') ) {
98
  });
99
  });
100
  </script>
101
- <div <?php $this->attrs() ?>>
102
- <img src="<?php echo $thumbnail_url?>" alt="" class="wapt-bg-image-thumb <?php echo $image_class; ?>" id="wapt-bg-image-thumb">
103
- <button class="button button-primary button-large <?php echo $name; ?>" id="wapt-select-image"><?php echo $button_text; ?></button>
104
- <input type="hidden" id="<?php echo $name; ?>" name="<?php echo $name; ?>" class="factory-input-text" value="<?php echo $value; ?>">
105
- </div>
 
 
 
106
  <?php
107
  }
108
  }
14
  */
15
 
16
  // Exit if accessed directly
17
+ if ( ! defined( 'ABSPATH' ) ) {
18
  exit;
19
  }
20
 
21
+ if ( ! class_exists( 'Wapt_FactoryForms_MediaButtonControl' ) ) {
22
 
23
+ class Wapt_FactoryForms_MediaButtonControl extends Wbcr_FactoryForms427_Control {
24
 
25
  public $type = 'wapt-mediabutton';
26
 
27
  /**
28
  * Shows the html markup of the control.
29
  *
 
30
  * @return void
31
+ * @since 1.0.0
32
  */
33
+ public function html() {
 
34
  wp_enqueue_media();
35
 
36
+ $name = $this->getNameOnForm();
37
+ $value = esc_attr( $this->getValue() );
38
+ $button_text = esc_attr( $this->options['text'] );
39
  $thumbnail_url = '';
40
+ $image_class = 'wapt-invisible';
41
 
42
+ if ( ! $value ) {
43
+ $value = 0;
44
  $thumbnail_url = '';
45
+ } else {
46
+ $thumbnail = wp_get_attachment_image_src( (int) $value, 'thumbnail' );
47
+ if ( is_array( $thumbnail ) ) {
 
48
  $thumbnail_url = $thumbnail[0];
49
+ $image_class = 'wapt-visible';
50
  }
51
+ }
52
  ?>
53
  <style>
54
+ .wapt-bg-image-thumb {
 
55
  margin: 10px 0px;
56
  border-radius: 10px;
57
+ box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 0.5);
58
  }
59
+
60
+ .wapt-invisible {
61
  display: none;
62
  }
63
+
64
+ .wapt-visible {
65
  display: block;
66
  }
67
  </style>
68
  <script lang="js">
69
+ jQuery(function ($) {
70
 
71
  var frame;
72
+ $(document).on('click', '#wapt-select-image', function (event) {
73
  event.preventDefault();
74
+ if (frame) {
75
  frame.open();
76
  return;
77
  }
78
 
79
  frame = wp.media({
80
  //title : 'Выберите файл',
81
+ button: {
82
  //text: 'Использовать этот файл'
83
  },
84
  multiple: false
95
  });
96
  });
97
  </script>
98
+ <div <?php $this->attrs() ?>>
99
+ <img src="<?php echo $thumbnail_url ?>" alt="" class="wapt-bg-image-thumb <?php echo $image_class; ?>"
100
+ id="wapt-bg-image-thumb">
101
+ <button class="button button-primary button-large <?php echo $name; ?>"
102
+ id="wapt-select-image"><?php echo $button_text; ?></button>
103
+ <input type="hidden" id="<?php echo $name; ?>" name="<?php echo $name; ?>" class="factory-input-text"
104
+ value="<?php echo $value; ?>">
105
+ </div>
106
  <?php
107
  }
108
  }
languages/apt-ru_RU.mo CHANGED
Binary file
languages/apt-ru_RU.po CHANGED
@@ -1,10 +1,10 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: Auto Post Thumbnail\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2020-02-10 11:21+0000\n"
6
- "PO-Revision-Date: 2020-02-10 12:05+0000\n"
7
- "Last-Translator: admin <webtemyk@yandex.ru>\n"
8
  "Language-Team: Русский\n"
9
  "Language: ru_RU\n"
10
  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && "
@@ -13,43 +13,42 @@ msgstr ""
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
  "X-Generator: Loco https://localise.biz/\n"
16
- "X-Loco-Version: 2.3.1; wp-5.3.2"
17
 
18
- #. Name of the plugin
19
- #: auto-post-thumbnail.php:48 includes/class-wapt-base.php:959
20
  #: admin/pages/generate.php:100
21
- msgid "Auto Post Thumbnail"
22
- msgstr "Auto Post Thumbnail"
23
 
24
- #: includes/class-wapt-base.php:207
25
  msgid "Use as thumbnail"
26
  msgstr "Применить изображение"
27
 
28
- #: includes/class-wapt-base.php:208 includes/class-wapt-base.php:916
29
  msgid "Change featured image"
30
  msgstr "Изменить изображение"
31
 
32
- #: includes/class-wapt-base.php:411
33
  msgid "This plugin has been automatically deactivated."
34
  msgstr "Этот плагин был автоматически деактивирован."
35
 
36
- #: includes/class-wapt-base.php:819 admin/pages/settings.php:154
37
  msgid "Image"
38
  msgstr "Изображение"
39
 
40
- #: includes/class-wapt-base.php:913
41
  msgid "No image"
42
  msgstr "Нет изображений"
43
 
44
- #: includes/class-wapt-base.php:933
45
- msgid "Auto Post Thumbnails"
46
- msgstr "Auto Post Thumbnails"
47
 
48
- #: includes/class-wapt-base.php:933
49
  msgid "Add from APT"
50
  msgstr "Добавить через APT"
51
 
52
- #: includes/class-wapt-base.php:1176
53
  #, php-format
54
  msgid ""
55
  "You have reached the limit at the moment. Try again in an 1 hour or <a "
@@ -58,7 +57,7 @@ msgstr ""
58
  "На данный момент Вы достигли лимита запросов. Повторите попытку через 1 час "
59
  "или <a href=\"%s\">обновите до Premium</a>"
60
 
61
- #: includes/class-wapt-base.php:1236
62
  #, php-format
63
  msgid ""
64
  "To download images from Google, specify Google API keys in the <a href='%s'>"
@@ -67,54 +66,66 @@ msgstr ""
67
  "Чтобы загружать изображения из Google, укажите ключи API Google в <a "
68
  "href='%s'>настройках</a>."
69
 
70
- #: includes/class-wapt-base.php:1265
71
  #, php-format
72
  msgid ""
73
  "What's new in version 3.7.0? Find out from <a href='%s'>the article</a> on "
74
  "our website."
75
  msgstr ""
76
 
77
- #: includes/class-wapt-base.php:1291
78
  msgid "Standard"
79
- msgstr ""
80
 
81
- #: includes/class-wapt-base.php:1302
82
  msgid "Uploaded"
83
- msgstr ""
84
 
85
- #: includes/class-wapt-plugin.php:140
86
  msgid "Generate featured image"
87
  msgstr "Генерировать изображение"
88
 
89
- #: includes/class-wapt-plugin.php:141
90
  msgid "Unset featured image"
91
  msgstr "Убрать изображение"
92
 
93
- #: includes/class-wapt-plugin.php:185
94
  msgid "Processed posts: "
95
  msgstr "Обработано постов:"
96
 
97
- #: includes/class-wapt-plugin.php:204
 
 
 
 
 
 
 
 
98
  msgid "Featured Image"
99
  msgstr "Изображение"
100
 
101
- #: includes/class-wapt-plugin.php:205
102
  msgid "With image"
103
  msgstr "С изображением"
104
 
105
- #: includes/class-wapt-plugin.php:206
106
  msgid "Without image"
107
  msgstr "Без изображения"
108
 
109
- #: includes/class-wapt-plugin.php:245
110
  msgid "Without featured image"
111
  msgstr "Без изображения"
112
 
113
- #: admin/ajax/check-license.php:27
 
 
 
 
114
  msgid "Licensing action not passed or this action is prohibited!"
115
  msgstr "Licensing action not passed or this action is prohibited!"
116
 
117
- #: admin/ajax/check-license.php:39
118
  msgid ""
119
  "License key is empty or license key too long (license key is 32 characters "
120
  "long)"
@@ -122,25 +133,25 @@ msgstr ""
122
  "Лицензионный ключ пуст или слишком длинный (длина лицензионного ключа "
123
  "составляет 32 символа)"
124
 
125
- #: admin/ajax/check-license.php:42
126
  msgid "Your license has been successfully activated"
127
  msgstr "Ваша лицензия успешно активирована"
128
 
129
- #: admin/ajax/check-license.php:47
130
  msgid "The license is deactivated"
131
  msgstr "Ваша лицензия деактивирована"
132
 
133
- #: admin/ajax/check-license.php:51
134
  msgid "The license has been updated"
135
  msgstr "Ваша лицензия была обновлена"
136
 
137
- #: admin/ajax/check-license.php:55
138
  msgid "Subscription success cancelled"
139
  msgstr "Подписка успешно отменена"
140
 
141
  #: admin/pages/about.php:45
142
  msgid "About APT"
143
- msgstr "О плагине Auto Post Thumbnail"
144
 
145
  #: admin/pages/about.php:46
146
  msgid "About"
@@ -150,284 +161,307 @@ msgstr "О плагине"
150
  msgid "Generate featured images"
151
  msgstr "Генератор изображений"
152
 
153
- #: admin/pages/license.php:91
154
  msgid "License of APT"
155
- msgstr "Лицензия Auto Post Thumbnail"
156
 
157
  #: admin/pages/settings.php:46
158
  msgid "Settings of APT"
159
- msgstr "Настройки Auto Post Thumbnail"
160
 
161
- #. text
162
- #: admin/pages/settings.php:47 admin/views/tab-settings.php:40
163
  msgid "Settings"
164
  msgstr "Настройки"
165
 
166
  #: admin/pages/settings.php:100
167
- msgid "Automatic set featured image on save"
168
- msgstr "Автодобавление изображения записи"
169
 
170
  #: admin/pages/settings.php:102
171
- msgid "Set the first image in a post as the featured image"
172
- msgstr "При сохранении, первое изображение станет изображением поста"
173
 
174
- #. text
175
- #: admin/pages/settings.php:109 admin/pages/settings.php:111
176
- msgid "Delete settings when removing the plugin"
177
- msgstr "Удалять настройки при удалении плагина"
 
 
 
178
 
179
- #: admin/pages/settings.php:118
180
- msgid "Generate featured image from title"
181
- msgstr "Генерировать изображение поста из заголовка"
182
 
183
- #: admin/pages/settings.php:120
 
 
 
 
184
  msgid ""
185
- "A featured image will be created automatically from the title on a colored "
186
- "background"
 
 
 
 
 
187
  msgstr ""
188
- "Изображение поста будет создано автоматически из заголовка на цветном фоне"
 
 
 
 
 
 
 
 
 
 
 
 
189
 
190
- #: admin/pages/settings.php:141
191
  msgid "Background settings"
192
  msgstr "Настройки фона"
193
 
194
- #: admin/pages/settings.php:153
195
  msgid "Color"
196
  msgstr "Цвет"
197
 
198
- #: admin/pages/settings.php:157
199
  msgid "Background type"
200
  msgstr "Тип фона"
201
 
202
- #: admin/pages/settings.php:158
203
  msgid "Select the background type for the featured image"
204
  msgstr "Тип фона для изображения поста"
205
 
206
- #: admin/pages/settings.php:166
207
  msgid "Background color for the image"
208
  msgstr "Цвет фона"
209
 
210
- #: admin/pages/settings.php:167
211
  msgid "Set the background color for the featured image"
212
  msgstr "Цвет фона для изображения поста"
213
 
214
- #: admin/pages/settings.php:174
215
  msgid "Select image"
216
  msgstr "Выбрать изображение"
217
 
218
- #: admin/pages/settings.php:175
219
  msgid "Background image"
220
  msgstr "Фоновое изображение"
221
 
222
- #: admin/pages/settings.php:176
223
  msgid "Set the background image. Only JPG or PNG"
224
  msgstr "Изображение для фона. Только JPG или PNG"
225
 
226
- #: admin/pages/settings.php:186
227
  msgid "JPEG"
228
  msgstr "JPEG"
229
 
230
- #: admin/pages/settings.php:187
231
  msgid "PNG"
232
  msgstr "PNG"
233
 
234
- #: admin/pages/settings.php:190
235
  msgid "Image format"
236
  msgstr "Формат изображения"
237
 
238
- #: admin/pages/settings.php:191
239
  msgid "Set format to save images"
240
  msgstr "В каком формате сохранять изображения поста"
241
 
242
- #: admin/pages/settings.php:196
243
  msgid "Font settings"
244
  msgstr "Настройки шрифта"
245
 
246
- #: admin/pages/settings.php:208
247
  msgid "Font name"
248
  msgstr "Шрифт"
249
 
250
- #: admin/pages/settings.php:209
251
  msgid "Select a font for the text in the featured image"
252
  msgstr "Шрифт текста на изображении поста"
253
 
254
- #: admin/pages/settings.php:219
255
  msgid "Font size"
256
  msgstr "Размер шрифта"
257
 
258
- #: admin/pages/settings.php:220
259
  msgid "Set the font size for the featured image"
260
  msgstr "Размер шрифта на изображении поста"
261
 
262
- #: admin/pages/settings.php:226
263
  msgid "Font color"
264
  msgstr "Цвет шрифта"
265
 
266
- #: admin/pages/settings.php:227
267
  msgid "Set the font color for the featured image"
268
  msgstr "Цвет шрифта на изображении поста"
269
 
270
- #: admin/pages/settings.php:233
271
  msgid "Text settings"
272
  msgstr "Настройки текста"
273
 
274
- #: admin/pages/settings.php:245
275
  msgid "Text shadow"
276
  msgstr "Тень"
277
 
278
- #: admin/pages/settings.php:246
279
  msgid "Use text shadow?"
280
  msgstr "Рисовать тень для текста?"
281
 
282
- #: admin/pages/settings.php:258
283
  msgid "Shadow color"
284
  msgstr "Цвет тени"
285
 
286
- #: admin/pages/settings.php:259
287
  msgid "Set the shadow color for the text"
288
  msgstr "Цвет тени для текста"
289
 
290
- #: admin/pages/settings.php:267
291
  msgid "No transform"
292
  msgstr "Нет"
293
 
294
- #: admin/pages/settings.php:268
295
  msgid "Uppercase"
296
  msgstr "ЗАГЛАВНЫЕ"
297
 
298
- #: admin/pages/settings.php:269
299
  msgid "Lowercase"
300
  msgstr "строчные"
301
 
302
- #: admin/pages/settings.php:272
303
  msgid "Text transform"
304
  msgstr "Преобразование текста"
305
 
306
- #: admin/pages/settings.php:273
307
  msgid "Select type of text transformation"
308
  msgstr "Выберите тип преобразования текста"
309
 
310
- #: admin/pages/settings.php:280
311
  msgid "chars"
312
  msgstr "символов"
313
 
314
- #: admin/pages/settings.php:282
315
  msgid "Text length"
316
  msgstr "Длина текста"
317
 
318
- #: admin/pages/settings.php:283
319
  msgid "Set the maximum text length"
320
  msgstr "Максимальная длинна текста (обрезается по словам)"
321
 
322
- #: admin/pages/settings.php:292
323
  msgid "Line spacing"
324
  msgstr "Межстрочный интервал"
325
 
326
- #: admin/pages/settings.php:293
327
  msgid "Set the line spacing"
328
  msgstr "Интервал между строками текста (коэффициент от размера шрифта)"
329
 
330
- #: admin/pages/settings.php:299
331
  msgid "Alignment"
332
  msgstr "Выравнивание"
333
 
334
- #: admin/pages/settings.php:311
335
  msgid "Left"
336
  msgstr "Слева"
337
 
338
- #: admin/pages/settings.php:312 admin/pages/settings.php:327
339
  msgid "Center"
340
  msgstr "По центру"
341
 
342
- #: admin/pages/settings.php:313
343
  msgid "Right"
344
  msgstr "Справа"
345
 
346
- #: admin/pages/settings.php:316
347
  msgid "Horizontal text alignment"
348
  msgstr "Горизонтальное выравнивание"
349
 
350
- #: admin/pages/settings.php:317
351
  msgid "Select how to horizontally align the text on the image"
352
  msgstr "Горизонтальное выравнивание текста на изображении поста"
353
 
354
- #: admin/pages/settings.php:326
355
  msgid "Top"
356
  msgstr "Вверху"
357
 
358
- #: admin/pages/settings.php:328
359
  msgid "Bottom"
360
  msgstr "Внизу"
361
 
362
- #: admin/pages/settings.php:331
363
  msgid "Vertical text alignment"
364
  msgstr "Вертикальное выравнивание"
365
 
366
- #: admin/pages/settings.php:332
367
  msgid "Select how to vertically align the text on the image"
368
  msgstr "Вертикальное выравнивание текста на изображении поста"
369
 
370
- #: admin/pages/settings.php:339
371
  msgid "Padding"
372
  msgstr "Отступы"
373
 
374
- #: admin/pages/settings.php:350 admin/pages/settings.php:361
375
  msgid "px"
376
  msgstr "px"
377
 
378
- #: admin/pages/settings.php:352
379
  msgid "Top/bottom text padding"
380
  msgstr "Верхний/нижний отступ"
381
 
382
- #: admin/pages/settings.php:353
383
  msgid "Padding at the top and bottom of the text"
384
  msgstr "Отступ сверху и снизу от текста"
385
 
386
- #: admin/pages/settings.php:363
387
  msgid "Left/right text padding"
388
  msgstr "Левый/правый отступ"
389
 
390
- #: admin/pages/settings.php:364
391
  msgid "Padding at the left and right of the text"
392
  msgstr "Отступ слева и справа от текста"
393
 
394
- #: admin/pages/settings.php:371
395
  msgid "Addition of text"
396
  msgstr "Добавление текста"
397
 
398
- #: admin/pages/settings.php:382
399
  msgid "String before text"
400
  msgstr "Текст до"
401
 
402
- #: admin/pages/settings.php:383
403
  msgid "Additional string before text. For a line break, use <b>[br]</b>"
404
  msgstr ""
405
  "Дополнительный текст перед текстом. Для переноса строки используйте <b>[br]"
406
  "</b>"
407
 
408
- #: admin/pages/settings.php:392
409
  msgid "String after text"
410
  msgstr "Текст после"
411
 
412
- #: admin/pages/settings.php:393
413
  msgid "Additional string after text. For a line break, use <b>[br]</b>"
414
  msgstr ""
415
  "Дополнительный текст после текста. Для переноса строки используйте <b>[br]"
416
  "</b>"
417
 
418
- #: admin/pages/settings.php:419
419
  msgid "How to get google api key & custom search engine id"
420
  msgstr "Как получить Google API key и Custom Search Engine ID"
421
 
422
- #: admin/pages/settings.php:436
423
  msgid "API key for Google"
424
  msgstr "API ключ Google"
425
 
426
- #: admin/pages/settings.php:444
427
  msgid "Google Custom Search Engine ID"
428
  msgstr "Google Custom Search Engine ID"
429
 
430
- #: admin/pages/settings.php:445
431
  msgid "You can get API key after registration on the site"
432
  msgstr "Вы можете получить API ключ на сайте"
433
 
@@ -545,15 +579,23 @@ msgstr ""
545
  msgid "Generate Featured images for posts"
546
  msgstr "Генератор изображений для постов"
547
 
548
- #: admin/views/tab-main.php:22
 
 
 
 
 
 
 
 
549
  msgid "Generate Featured images"
550
  msgstr "Сгенерировать изображения"
551
 
552
- #: admin/views/tab-main.php:25
553
  msgid "Delete Featured images"
554
  msgstr "Убрать изображения"
555
 
556
- #: admin/views/tab-main.php:42
557
  msgid ""
558
  "Note: Thumbnails won't be generated for posts that already have post "
559
  "thumbnail or <strong><em>skip_post_thumb</em></strong> custom meta field."
@@ -562,54 +604,65 @@ msgstr ""
562
  "уже есть изображение или имеют заполненное мета поле <strong><em>"
563
  "skip_post_thumb</em></strong>."
564
 
565
- #: admin/views/tab-main.php:44
566
  msgid "You must enable Javascript in order to proceed!"
567
  msgstr "Вам нужно включить JavaScript чтобы продолжить!"
568
 
569
- #: admin/views/tab-main.php:103 admin/views/tab-main.php:164
570
  msgid "All done! Processed posts:"
571
  msgstr "Завершено! Обработано постов: "
572
 
573
- #: admin/views/tab-main.php:103
574
  msgid "Set featured image in posts:"
575
  msgstr "Добавлены изображения в посты:"
576
 
577
- #: admin/views/tab-main.php:164
578
  msgid "Delete featured image in posts:"
579
  msgstr "Убраны изображения из постов:"
580
 
581
- #: admin/views/sources/google.php:40
 
 
 
 
582
  msgid "No hits"
583
  msgstr "Нет результатов"
584
 
585
- #: admin/views/sources/google.php:156
586
  msgid "Search..."
587
  msgstr "Запрос для поиска"
588
 
589
- #: admin/views/sources/google.php:158
590
  msgid "Search"
591
  msgstr "Поиск"
592
 
593
- #: admin/views/sources/google.php:165
 
 
 
 
594
  msgid "Prev"
595
  msgstr "Предыдущая"
596
 
597
- #: admin/views/sources/google.php:168
598
  msgid "Next"
599
  msgstr "Следующая"
600
 
601
- #: admin/views/sources/google.php:177
602
  msgid "API key is missing. Add it in APT settings"
603
- msgstr "Ключ API не задан. Добавьте его в настройках Auto Post Thumbnail"
 
 
 
 
604
 
605
  #. Description of the plugin
606
  msgid ""
607
- "Automatically generate the Post Thumbnail (Featured Thumbnail) from the "
608
- "first image in post (or any custom post type) only if Post Thumbnail is not "
609
- "set manually."
 
610
  msgstr ""
611
- "Автоматически генерировать изображения для записи из ее первой картинки, "
612
- "только если изображение не установлено вручную."
613
 
614
  #. URI of the plugin
615
  msgid "https://cm-wp.com/apt"
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: Auto Featured Image\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2020-07-23 08:21+0000\n"
6
+ "PO-Revision-Date: 2020-07-23 08:33+0000\n"
7
+ "Last-Translator: \n"
8
  "Language-Team: Русский\n"
9
  "Language: ru_RU\n"
10
  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && "
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
  "X-Generator: Loco https://localise.biz/\n"
16
+ "X-Loco-Version: 2.4.0; wp-5.4.2"
17
 
18
+ #: auto-post-thumbnail.php:50 includes/class-wapt-base.php:978
 
19
  #: admin/pages/generate.php:100
20
+ msgid "Auto Featured Image"
21
+ msgstr "Auto Featured Image"
22
 
23
+ #: includes/class-wapt-base.php:208
24
  msgid "Use as thumbnail"
25
  msgstr "Применить изображение"
26
 
27
+ #: includes/class-wapt-base.php:209 includes/class-wapt-base.php:935
28
  msgid "Change featured image"
29
  msgstr "Изменить изображение"
30
 
31
+ #: includes/class-wapt-base.php:418
32
  msgid "This plugin has been automatically deactivated."
33
  msgstr "Этот плагин был автоматически деактивирован."
34
 
35
+ #: includes/class-wapt-base.php:839 admin/pages/settings.php:162
36
  msgid "Image"
37
  msgstr "Изображение"
38
 
39
+ #: includes/class-wapt-base.php:932
40
  msgid "No image"
41
  msgstr "Нет изображений"
42
 
43
+ #: includes/class-wapt-base.php:952
44
+ msgid "Auto Featured Images"
45
+ msgstr "Auto Featured Images"
46
 
47
+ #: includes/class-wapt-base.php:952
48
  msgid "Add from APT"
49
  msgstr "Добавить через APT"
50
 
51
+ #: includes/class-wapt-base.php:1207
52
  #, php-format
53
  msgid ""
54
  "You have reached the limit at the moment. Try again in an 1 hour or <a "
57
  "На данный момент Вы достигли лимита запросов. Повторите попытку через 1 час "
58
  "или <a href=\"%s\">обновите до Premium</a>"
59
 
60
+ #: includes/class-wapt-base.php:1266
61
  #, php-format
62
  msgid ""
63
  "To download images from Google, specify Google API keys in the <a href='%s'>"
66
  "Чтобы загружать изображения из Google, укажите ключи API Google в <a "
67
  "href='%s'>настройках</a>."
68
 
69
+ #: includes/class-wapt-base.php:1295
70
  #, php-format
71
  msgid ""
72
  "What's new in version 3.7.0? Find out from <a href='%s'>the article</a> on "
73
  "our website."
74
  msgstr ""
75
 
76
+ #: includes/class-wapt-base.php:1323
77
  msgid "Standard"
78
+ msgstr "Стандартные"
79
 
80
+ #: includes/class-wapt-base.php:1338
81
  msgid "Uploaded"
82
+ msgstr "Загруженные"
83
 
84
+ #: includes/class-wapt-plugin.php:142
85
  msgid "Generate featured image"
86
  msgstr "Генерировать изображение"
87
 
88
+ #: includes/class-wapt-plugin.php:143
89
  msgid "Unset featured image"
90
  msgstr "Убрать изображение"
91
 
92
+ #: includes/class-wapt-plugin.php:188
93
  msgid "Processed posts: "
94
  msgstr "Обработано постов:"
95
 
96
+ #: includes/class-wapt-plugin.php:198
97
+ msgid ""
98
+ "To use premium features, update the <b>Auto Featured Image Premium</b> "
99
+ "plugin!"
100
+ msgstr ""
101
+ "Чтобы пользоваться премиум функциями, обновите плагин <b>Auto Featured Image "
102
+ "Premium</b>!"
103
+
104
+ #: includes/class-wapt-plugin.php:219
105
  msgid "Featured Image"
106
  msgstr "Изображение"
107
 
108
+ #: includes/class-wapt-plugin.php:220
109
  msgid "With image"
110
  msgstr "С изображением"
111
 
112
+ #: includes/class-wapt-plugin.php:221
113
  msgid "Without image"
114
  msgstr "Без изображения"
115
 
116
+ #: includes/class-wapt-plugin.php:263
117
  msgid "Without featured image"
118
  msgstr "Без изображения"
119
 
120
+ #: includes/class-wapt-plugin.php:277
121
+ msgid "Generate"
122
+ msgstr "Генерировать"
123
+
124
+ #: admin/ajax/check-license.php:26
125
  msgid "Licensing action not passed or this action is prohibited!"
126
  msgstr "Licensing action not passed or this action is prohibited!"
127
 
128
+ #: admin/ajax/check-license.php:38
129
  msgid ""
130
  "License key is empty or license key too long (license key is 32 characters "
131
  "long)"
133
  "Лицензионный ключ пуст или слишком длинный (длина лицензионного ключа "
134
  "составляет 32 символа)"
135
 
136
+ #: admin/ajax/check-license.php:41
137
  msgid "Your license has been successfully activated"
138
  msgstr "Ваша лицензия успешно активирована"
139
 
140
+ #: admin/ajax/check-license.php:46
141
  msgid "The license is deactivated"
142
  msgstr "Ваша лицензия деактивирована"
143
 
144
+ #: admin/ajax/check-license.php:50
145
  msgid "The license has been updated"
146
  msgstr "Ваша лицензия была обновлена"
147
 
148
+ #: admin/ajax/check-license.php:54
149
  msgid "Subscription success cancelled"
150
  msgstr "Подписка успешно отменена"
151
 
152
  #: admin/pages/about.php:45
153
  msgid "About APT"
154
+ msgstr "О плагине Auto Featured Image"
155
 
156
  #: admin/pages/about.php:46
157
  msgid "About"
161
  msgid "Generate featured images"
162
  msgstr "Генератор изображений"
163
 
164
+ #: admin/pages/license.php:94
165
  msgid "License of APT"
166
+ msgstr "Лицензия Auto Featured Image"
167
 
168
  #: admin/pages/settings.php:46
169
  msgid "Settings of APT"
170
+ msgstr "Настройки Auto Featured Image"
171
 
172
+ #: admin/pages/settings.php:47
 
173
  msgid "Settings"
174
  msgstr "Настройки"
175
 
176
  #: admin/pages/settings.php:100
177
+ msgid "Add featured image when saving a post"
178
+ msgstr "Добавлять featured image во время сохранения поста"
179
 
180
  #: admin/pages/settings.php:102
181
+ msgid "Automatically add featured image when saving a post"
182
+ msgstr "Автоматически добавлять featured image во время сохранения поста"
183
 
184
+ #: admin/pages/settings.php:110
185
+ msgid "Find in post"
186
+ msgstr "Искать в посте"
187
+
188
+ #: admin/pages/settings.php:111
189
+ msgid "Generate from title"
190
+ msgstr "Генерировать из заголовка"
191
 
192
+ #: admin/pages/settings.php:112
193
+ msgid "Both"
194
+ msgstr "Оба способа"
195
 
196
+ #: admin/pages/settings.php:115
197
+ msgid "Featured image"
198
+ msgstr "Featured image"
199
+
200
+ #: admin/pages/settings.php:116
201
  msgid ""
202
+ "How to generate featured image:\n"
203
+ "\t\t\t\t\t\t\t<br> <b>Find in post:</b> search for the first image in the "
204
+ "post text\n"
205
+ "\t\t\t\t\t\t\t<br> <b>Generate from title:</b> created from the title on a "
206
+ "colored background\n"
207
+ "\t\t\t\t\t\t\t<br> <b>Both:</b> find an image in the post text, if it is not "
208
+ "present, generate it from the title"
209
  msgstr ""
210
+ "Как генерировать featured image:\n"
211
+ "\t\t\t\t\t\t\t<br> <b>Искать в посте:</b> искать первое изображение в тексте "
212
+ "поста\n"
213
+ "\t\t\t\t\t\t\t<br> <b>Генерировать из заголовка:</b> создать изображение с "
214
+ "текстом из заголовка на цветном фоне\n"
215
+ "\t\t\t\t\t\t\t<br> <b>Оба способа:</b> find an image in the post text, if it "
216
+ "is not present, generate it from the title\n"
217
+ "\t\t\t\t\t\t\t<br> <b>Оба способа:</b> искать первое изображение в тексте "
218
+ "поста, если его нет в тексте, тогда генерировать из заголовка"
219
+
220
+ #: admin/pages/settings.php:126 admin/pages/settings.php:128
221
+ msgid "Delete settings when removing the plugin"
222
+ msgstr "Удалять настройки при удалении плагина"
223
 
224
+ #: admin/pages/settings.php:149
225
  msgid "Background settings"
226
  msgstr "Настройки фона"
227
 
228
+ #: admin/pages/settings.php:161
229
  msgid "Color"
230
  msgstr "Цвет"
231
 
232
+ #: admin/pages/settings.php:165
233
  msgid "Background type"
234
  msgstr "Тип фона"
235
 
236
+ #: admin/pages/settings.php:166
237
  msgid "Select the background type for the featured image"
238
  msgstr "Тип фона для изображения поста"
239
 
240
+ #: admin/pages/settings.php:174
241
  msgid "Background color for the image"
242
  msgstr "Цвет фона"
243
 
244
+ #: admin/pages/settings.php:175
245
  msgid "Set the background color for the featured image"
246
  msgstr "Цвет фона для изображения поста"
247
 
248
+ #: admin/pages/settings.php:182
249
  msgid "Select image"
250
  msgstr "Выбрать изображение"
251
 
252
+ #: admin/pages/settings.php:183
253
  msgid "Background image"
254
  msgstr "Фоновое изображение"
255
 
256
+ #: admin/pages/settings.php:184
257
  msgid "Set the background image. Only JPG or PNG"
258
  msgstr "Изображение для фона. Только JPG или PNG"
259
 
260
+ #: admin/pages/settings.php:194
261
  msgid "JPEG"
262
  msgstr "JPEG"
263
 
264
+ #: admin/pages/settings.php:195
265
  msgid "PNG"
266
  msgstr "PNG"
267
 
268
+ #: admin/pages/settings.php:198
269
  msgid "Image format"
270
  msgstr "Формат изображения"
271
 
272
+ #: admin/pages/settings.php:199
273
  msgid "Set format to save images"
274
  msgstr "В каком формате сохранять изображения поста"
275
 
276
+ #: admin/pages/settings.php:204
277
  msgid "Font settings"
278
  msgstr "Настройки шрифта"
279
 
280
+ #: admin/pages/settings.php:216
281
  msgid "Font name"
282
  msgstr "Шрифт"
283
 
284
+ #: admin/pages/settings.php:217
285
  msgid "Select a font for the text in the featured image"
286
  msgstr "Шрифт текста на изображении поста"
287
 
288
+ #: admin/pages/settings.php:227
289
  msgid "Font size"
290
  msgstr "Размер шрифта"
291
 
292
+ #: admin/pages/settings.php:228
293
  msgid "Set the font size for the featured image"
294
  msgstr "Размер шрифта на изображении поста"
295
 
296
+ #: admin/pages/settings.php:234
297
  msgid "Font color"
298
  msgstr "Цвет шрифта"
299
 
300
+ #: admin/pages/settings.php:235
301
  msgid "Set the font color for the featured image"
302
  msgstr "Цвет шрифта на изображении поста"
303
 
304
+ #: admin/pages/settings.php:241
305
  msgid "Text settings"
306
  msgstr "Настройки текста"
307
 
308
+ #: admin/pages/settings.php:253
309
  msgid "Text shadow"
310
  msgstr "Тень"
311
 
312
+ #: admin/pages/settings.php:254
313
  msgid "Use text shadow?"
314
  msgstr "Рисовать тень для текста?"
315
 
316
+ #: admin/pages/settings.php:266
317
  msgid "Shadow color"
318
  msgstr "Цвет тени"
319
 
320
+ #: admin/pages/settings.php:267
321
  msgid "Set the shadow color for the text"
322
  msgstr "Цвет тени для текста"
323
 
324
+ #: admin/pages/settings.php:275
325
  msgid "No transform"
326
  msgstr "Нет"
327
 
328
+ #: admin/pages/settings.php:276
329
  msgid "Uppercase"
330
  msgstr "ЗАГЛАВНЫЕ"
331
 
332
+ #: admin/pages/settings.php:277
333
  msgid "Lowercase"
334
  msgstr "строчные"
335
 
336
+ #: admin/pages/settings.php:280
337
  msgid "Text transform"
338
  msgstr "Преобразование текста"
339
 
340
+ #: admin/pages/settings.php:281
341
  msgid "Select type of text transformation"
342
  msgstr "Выберите тип преобразования текста"
343
 
344
+ #: admin/pages/settings.php:288
345
  msgid "chars"
346
  msgstr "символов"
347
 
348
+ #: admin/pages/settings.php:290
349
  msgid "Text length"
350
  msgstr "Длина текста"
351
 
352
+ #: admin/pages/settings.php:291
353
  msgid "Set the maximum text length"
354
  msgstr "Максимальная длинна текста (обрезается по словам)"
355
 
356
+ #: admin/pages/settings.php:300
357
  msgid "Line spacing"
358
  msgstr "Межстрочный интервал"
359
 
360
+ #: admin/pages/settings.php:301
361
  msgid "Set the line spacing"
362
  msgstr "Интервал между строками текста (коэффициент от размера шрифта)"
363
 
364
+ #: admin/pages/settings.php:307
365
  msgid "Alignment"
366
  msgstr "Выравнивание"
367
 
368
+ #: admin/pages/settings.php:319
369
  msgid "Left"
370
  msgstr "Слева"
371
 
372
+ #: admin/pages/settings.php:320 admin/pages/settings.php:335
373
  msgid "Center"
374
  msgstr "По центру"
375
 
376
+ #: admin/pages/settings.php:321
377
  msgid "Right"
378
  msgstr "Справа"
379
 
380
+ #: admin/pages/settings.php:324
381
  msgid "Horizontal text alignment"
382
  msgstr "Горизонтальное выравнивание"
383
 
384
+ #: admin/pages/settings.php:325
385
  msgid "Select how to horizontally align the text on the image"
386
  msgstr "Горизонтальное выравнивание текста на изображении поста"
387
 
388
+ #: admin/pages/settings.php:334
389
  msgid "Top"
390
  msgstr "Вверху"
391
 
392
+ #: admin/pages/settings.php:336
393
  msgid "Bottom"
394
  msgstr "Внизу"
395
 
396
+ #: admin/pages/settings.php:339
397
  msgid "Vertical text alignment"
398
  msgstr "Вертикальное выравнивание"
399
 
400
+ #: admin/pages/settings.php:340
401
  msgid "Select how to vertically align the text on the image"
402
  msgstr "Вертикальное выравнивание текста на изображении поста"
403
 
404
+ #: admin/pages/settings.php:347
405
  msgid "Padding"
406
  msgstr "Отступы"
407
 
408
+ #: admin/pages/settings.php:358 admin/pages/settings.php:369
409
  msgid "px"
410
  msgstr "px"
411
 
412
+ #: admin/pages/settings.php:360
413
  msgid "Top/bottom text padding"
414
  msgstr "Верхний/нижний отступ"
415
 
416
+ #: admin/pages/settings.php:361
417
  msgid "Padding at the top and bottom of the text"
418
  msgstr "Отступ сверху и снизу от текста"
419
 
420
+ #: admin/pages/settings.php:371
421
  msgid "Left/right text padding"
422
  msgstr "Левый/правый отступ"
423
 
424
+ #: admin/pages/settings.php:372
425
  msgid "Padding at the left and right of the text"
426
  msgstr "Отступ слева и справа от текста"
427
 
428
+ #: admin/pages/settings.php:379
429
  msgid "Addition of text"
430
  msgstr "Добавление текста"
431
 
432
+ #: admin/pages/settings.php:390
433
  msgid "String before text"
434
  msgstr "Текст до"
435
 
436
+ #: admin/pages/settings.php:391
437
  msgid "Additional string before text. For a line break, use <b>[br]</b>"
438
  msgstr ""
439
  "Дополнительный текст перед текстом. Для переноса строки используйте <b>[br]"
440
  "</b>"
441
 
442
+ #: admin/pages/settings.php:400
443
  msgid "String after text"
444
  msgstr "Текст после"
445
 
446
+ #: admin/pages/settings.php:401
447
  msgid "Additional string after text. For a line break, use <b>[br]</b>"
448
  msgstr ""
449
  "Дополнительный текст после текста. Для переноса строки используйте <b>[br]"
450
  "</b>"
451
 
452
+ #: admin/pages/settings.php:427
453
  msgid "How to get google api key & custom search engine id"
454
  msgstr "Как получить Google API key и Custom Search Engine ID"
455
 
456
+ #: admin/pages/settings.php:444
457
  msgid "API key for Google"
458
  msgstr "API ключ Google"
459
 
460
+ #: admin/pages/settings.php:452
461
  msgid "Google Custom Search Engine ID"
462
  msgstr "Google Custom Search Engine ID"
463
 
464
+ #: admin/pages/settings.php:453
465
  msgid "You can get API key after registration on the site"
466
  msgstr "Вы можете получить API ключ на сайте"
467
 
579
  msgid "Generate Featured images for posts"
580
  msgstr "Генератор изображений для постов"
581
 
582
+ #: admin/views/tab-main.php:37
583
+ msgid "Posts"
584
+ msgstr "Посты"
585
+
586
+ #: admin/views/tab-main.php:38
587
+ msgid "Pages"
588
+ msgstr "Страницы"
589
+
590
+ #: admin/views/tab-main.php:105
591
  msgid "Generate Featured images"
592
  msgstr "Сгенерировать изображения"
593
 
594
+ #: admin/views/tab-main.php:110
595
  msgid "Delete Featured images"
596
  msgstr "Убрать изображения"
597
 
598
+ #: admin/views/tab-main.php:128
599
  msgid ""
600
  "Note: Thumbnails won't be generated for posts that already have post "
601
  "thumbnail or <strong><em>skip_post_thumb</em></strong> custom meta field."
604
  "уже есть изображение или имеют заполненное мета поле <strong><em>"
605
  "skip_post_thumb</em></strong>."
606
 
607
+ #: admin/views/tab-main.php:130
608
  msgid "You must enable Javascript in order to proceed!"
609
  msgstr "Вам нужно включить JavaScript чтобы продолжить!"
610
 
611
+ #: admin/views/tab-main.php:189 admin/views/tab-main.php:252
612
  msgid "All done! Processed posts:"
613
  msgstr "Завершено! Обработано постов: "
614
 
615
+ #: admin/views/tab-main.php:189
616
  msgid "Set featured image in posts:"
617
  msgstr "Добавлены изображения в посты:"
618
 
619
+ #: admin/views/tab-main.php:252
620
  msgid "Delete featured image in posts:"
621
  msgstr "Убраны изображения из постов:"
622
 
623
+ #: admin/views/tab-settings.php:38
624
+ msgid "Settings of"
625
+ msgstr "Настройки"
626
+
627
+ #: admin/views/sources/google.php:43
628
  msgid "No hits"
629
  msgstr "Нет результатов"
630
 
631
+ #: admin/views/sources/google.php:160
632
  msgid "Search..."
633
  msgstr "Запрос для поиска"
634
 
635
+ #: admin/views/sources/google.php:162
636
  msgid "Search"
637
  msgstr "Поиск"
638
 
639
+ #: admin/views/sources/google.php:167
640
+ msgid "Commercial and derived use"
641
+ msgstr "Коммерческое и производное использование"
642
+
643
+ #: admin/views/sources/google.php:175
644
  msgid "Prev"
645
  msgstr "Предыдущая"
646
 
647
+ #: admin/views/sources/google.php:178
648
  msgid "Next"
649
  msgstr "Следующая"
650
 
651
+ #: admin/views/sources/google.php:186
652
  msgid "API key is missing. Add it in APT settings"
653
+ msgstr "Ключ API не задан. Добавьте его в настройках Auto Featured Image"
654
+
655
+ #. Name of the plugin
656
+ msgid "Auto Featured Image (Auto Post Thumbnail)"
657
+ msgstr ""
658
 
659
  #. Description of the plugin
660
  msgid ""
661
+ "Automatically generate the Featured Image from the first image in post or "
662
+ "any custom post type only if Featured Image is not set manually. Featured "
663
+ "Image Generation From Title. Native image search for Elementor, Gutenberg, "
664
+ "Classic Editor."
665
  msgstr ""
 
 
666
 
667
  #. URI of the plugin
668
  msgid "https://cm-wp.com/apt"
languages/apt.pot CHANGED
@@ -1,9 +1,9 @@
1
  #, fuzzy
2
  msgid ""
3
  msgstr ""
4
- "Project-Id-Version: Auto Post Thumbnail\n"
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2020-02-10 11:21+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
@@ -15,120 +15,129 @@ msgstr ""
15
  "X-Generator: Loco https://localise.biz/\n"
16
  "X-Loco-Version: 2.2.0; wp-4.9.8"
17
 
18
- #. Name of the plugin
19
- #: auto-post-thumbnail.php:48 includes/class-wapt-base.php:959
20
  #: admin/pages/generate.php:100
21
- msgid "Auto Post Thumbnail"
22
  msgstr ""
23
 
24
- #: includes/class-wapt-base.php:207
25
  msgid "Use as thumbnail"
26
  msgstr ""
27
 
28
- #: includes/class-wapt-base.php:208 includes/class-wapt-base.php:916
29
  msgid "Change featured image"
30
  msgstr ""
31
 
32
- #: includes/class-wapt-base.php:411
33
  msgid "This plugin has been automatically deactivated."
34
  msgstr ""
35
 
36
- #: includes/class-wapt-base.php:819 admin/pages/settings.php:154
37
  msgid "Image"
38
  msgstr ""
39
 
40
- #: includes/class-wapt-base.php:913
41
  msgid "No image"
42
  msgstr ""
43
 
44
- #: includes/class-wapt-base.php:933
45
- msgid "Auto Post Thumbnails"
46
  msgstr ""
47
 
48
- #: includes/class-wapt-base.php:933
49
  msgid "Add from APT"
50
  msgstr ""
51
 
52
- #: includes/class-wapt-base.php:1176
53
  #, php-format
54
  msgid ""
55
  "You have reached the limit at the moment. Try again in an 1 hour or <a "
56
  "href=\"%s\">Upgrade to Premium</a>"
57
  msgstr ""
58
 
59
- #: includes/class-wapt-base.php:1236
60
  #, php-format
61
  msgid ""
62
  "To download images from Google, specify Google API keys in the <a href='%s'>"
63
  "settings</a>."
64
  msgstr ""
65
 
66
- #: includes/class-wapt-base.php:1265
67
  #, php-format
68
  msgid ""
69
  "What's new in version 3.7.0? Find out from <a href='%s'>the article</a> on "
70
  "our website."
71
  msgstr ""
72
 
73
- #: includes/class-wapt-base.php:1291
74
  msgid "Standard"
75
  msgstr ""
76
 
77
- #: includes/class-wapt-base.php:1302
78
  msgid "Uploaded"
79
  msgstr ""
80
 
81
- #: includes/class-wapt-plugin.php:140
82
  msgid "Generate featured image"
83
  msgstr ""
84
 
85
- #: includes/class-wapt-plugin.php:141
86
  msgid "Unset featured image"
87
  msgstr ""
88
 
89
- #: includes/class-wapt-plugin.php:185
90
  msgid "Processed posts: "
91
  msgstr ""
92
 
93
- #: includes/class-wapt-plugin.php:204
 
 
 
 
 
 
94
  msgid "Featured Image"
95
  msgstr ""
96
 
97
- #: includes/class-wapt-plugin.php:205
98
  msgid "With image"
99
  msgstr ""
100
 
101
- #: includes/class-wapt-plugin.php:206
102
  msgid "Without image"
103
  msgstr ""
104
 
105
- #: includes/class-wapt-plugin.php:245
106
  msgid "Without featured image"
107
  msgstr ""
108
 
109
- #: admin/ajax/check-license.php:27
 
 
 
 
110
  msgid "Licensing action not passed or this action is prohibited!"
111
  msgstr ""
112
 
113
- #: admin/ajax/check-license.php:39
114
  msgid ""
115
  "License key is empty or license key too long (license key is 32 characters "
116
  "long)"
117
  msgstr ""
118
 
119
- #: admin/ajax/check-license.php:42
120
  msgid "Your license has been successfully activated"
121
  msgstr ""
122
 
123
- #: admin/ajax/check-license.php:47
124
  msgid "The license is deactivated"
125
  msgstr ""
126
 
127
- #: admin/ajax/check-license.php:51
128
  msgid "The license has been updated"
129
  msgstr ""
130
 
131
- #: admin/ajax/check-license.php:55
132
  msgid "Subscription success cancelled"
133
  msgstr ""
134
 
@@ -144,7 +153,7 @@ msgstr ""
144
  msgid "Generate featured images"
145
  msgstr ""
146
 
147
- #: admin/pages/license.php:91
148
  msgid "License of APT"
149
  msgstr ""
150
 
@@ -152,269 +161,286 @@ msgstr ""
152
  msgid "Settings of APT"
153
  msgstr ""
154
 
155
- #: admin/pages/settings.php:47 admin/views/tab-settings.php:40
156
  msgid "Settings"
157
  msgstr ""
158
 
159
  #: admin/pages/settings.php:100
160
- msgid "Automatic set featured image on save"
161
  msgstr ""
162
 
163
  #: admin/pages/settings.php:102
164
- msgid "Set the first image in a post as the featured image"
165
  msgstr ""
166
 
167
- #: admin/pages/settings.php:109 admin/pages/settings.php:111
168
- msgid "Delete settings when removing the plugin"
 
 
 
 
 
 
 
 
169
  msgstr ""
170
 
171
- #: admin/pages/settings.php:118
172
- msgid "Generate featured image from title"
173
  msgstr ""
174
 
175
- #: admin/pages/settings.php:120
176
  msgid ""
177
- "A featured image will be created automatically from the title on a colored "
178
- "background"
 
 
 
 
 
179
  msgstr ""
180
 
181
- #: admin/pages/settings.php:141
 
 
 
 
182
  msgid "Background settings"
183
  msgstr ""
184
 
185
- #: admin/pages/settings.php:153
186
  msgid "Color"
187
  msgstr ""
188
 
189
- #: admin/pages/settings.php:157
190
  msgid "Background type"
191
  msgstr ""
192
 
193
- #: admin/pages/settings.php:158
194
  msgid "Select the background type for the featured image"
195
  msgstr ""
196
 
197
- #: admin/pages/settings.php:166
198
  msgid "Background color for the image"
199
  msgstr ""
200
 
201
- #: admin/pages/settings.php:167
202
  msgid "Set the background color for the featured image"
203
  msgstr ""
204
 
205
- #: admin/pages/settings.php:174
206
  msgid "Select image"
207
  msgstr ""
208
 
209
- #: admin/pages/settings.php:175
210
  msgid "Background image"
211
  msgstr ""
212
 
213
- #: admin/pages/settings.php:176
214
  msgid "Set the background image. Only JPG or PNG"
215
  msgstr ""
216
 
217
- #: admin/pages/settings.php:186
218
  msgid "JPEG"
219
  msgstr ""
220
 
221
- #: admin/pages/settings.php:187
222
  msgid "PNG"
223
  msgstr ""
224
 
225
- #: admin/pages/settings.php:190
226
  msgid "Image format"
227
  msgstr ""
228
 
229
- #: admin/pages/settings.php:191
230
  msgid "Set format to save images"
231
  msgstr ""
232
 
233
- #: admin/pages/settings.php:196
234
  msgid "Font settings"
235
  msgstr ""
236
 
237
- #: admin/pages/settings.php:208
238
  msgid "Font name"
239
  msgstr ""
240
 
241
- #: admin/pages/settings.php:209
242
  msgid "Select a font for the text in the featured image"
243
  msgstr ""
244
 
245
- #: admin/pages/settings.php:219
246
  msgid "Font size"
247
  msgstr ""
248
 
249
- #: admin/pages/settings.php:220
250
  msgid "Set the font size for the featured image"
251
  msgstr ""
252
 
253
- #: admin/pages/settings.php:226
254
  msgid "Font color"
255
  msgstr ""
256
 
257
- #: admin/pages/settings.php:227
258
  msgid "Set the font color for the featured image"
259
  msgstr ""
260
 
261
- #: admin/pages/settings.php:233
262
  msgid "Text settings"
263
  msgstr ""
264
 
265
- #: admin/pages/settings.php:245
266
  msgid "Text shadow"
267
  msgstr ""
268
 
269
- #: admin/pages/settings.php:246
270
  msgid "Use text shadow?"
271
  msgstr ""
272
 
273
- #: admin/pages/settings.php:258
274
  msgid "Shadow color"
275
  msgstr ""
276
 
277
- #: admin/pages/settings.php:259
278
  msgid "Set the shadow color for the text"
279
  msgstr ""
280
 
281
- #: admin/pages/settings.php:267
282
  msgid "No transform"
283
  msgstr ""
284
 
285
- #: admin/pages/settings.php:268
286
  msgid "Uppercase"
287
  msgstr ""
288
 
289
- #: admin/pages/settings.php:269
290
  msgid "Lowercase"
291
  msgstr ""
292
 
293
- #: admin/pages/settings.php:272
294
  msgid "Text transform"
295
  msgstr ""
296
 
297
- #: admin/pages/settings.php:273
298
  msgid "Select type of text transformation"
299
  msgstr ""
300
 
301
- #: admin/pages/settings.php:280
302
  msgid "chars"
303
  msgstr ""
304
 
305
- #: admin/pages/settings.php:282
306
  msgid "Text length"
307
  msgstr ""
308
 
309
- #: admin/pages/settings.php:283
310
  msgid "Set the maximum text length"
311
  msgstr ""
312
 
313
- #: admin/pages/settings.php:292
314
  msgid "Line spacing"
315
  msgstr ""
316
 
317
- #: admin/pages/settings.php:293
318
  msgid "Set the line spacing"
319
  msgstr ""
320
 
321
- #: admin/pages/settings.php:299
322
  msgid "Alignment"
323
  msgstr ""
324
 
325
- #: admin/pages/settings.php:311
326
  msgid "Left"
327
  msgstr ""
328
 
329
- #: admin/pages/settings.php:312 admin/pages/settings.php:327
330
  msgid "Center"
331
  msgstr ""
332
 
333
- #: admin/pages/settings.php:313
334
  msgid "Right"
335
  msgstr ""
336
 
337
- #: admin/pages/settings.php:316
338
  msgid "Horizontal text alignment"
339
  msgstr ""
340
 
341
- #: admin/pages/settings.php:317
342
  msgid "Select how to horizontally align the text on the image"
343
  msgstr ""
344
 
345
- #: admin/pages/settings.php:326
346
  msgid "Top"
347
  msgstr ""
348
 
349
- #: admin/pages/settings.php:328
350
  msgid "Bottom"
351
  msgstr ""
352
 
353
- #: admin/pages/settings.php:331
354
  msgid "Vertical text alignment"
355
  msgstr ""
356
 
357
- #: admin/pages/settings.php:332
358
  msgid "Select how to vertically align the text on the image"
359
  msgstr ""
360
 
361
- #: admin/pages/settings.php:339
362
  msgid "Padding"
363
  msgstr ""
364
 
365
- #: admin/pages/settings.php:350 admin/pages/settings.php:361
366
  msgid "px"
367
  msgstr ""
368
 
369
- #: admin/pages/settings.php:352
370
  msgid "Top/bottom text padding"
371
  msgstr ""
372
 
373
- #: admin/pages/settings.php:353
374
  msgid "Padding at the top and bottom of the text"
375
  msgstr ""
376
 
377
- #: admin/pages/settings.php:363
378
  msgid "Left/right text padding"
379
  msgstr ""
380
 
381
- #: admin/pages/settings.php:364
382
  msgid "Padding at the left and right of the text"
383
  msgstr ""
384
 
385
- #: admin/pages/settings.php:371
386
  msgid "Addition of text"
387
  msgstr ""
388
 
389
- #: admin/pages/settings.php:382
390
  msgid "String before text"
391
  msgstr ""
392
 
393
- #: admin/pages/settings.php:383
394
  msgid "Additional string before text. For a line break, use <b>[br]</b>"
395
  msgstr ""
396
 
397
- #: admin/pages/settings.php:392
398
  msgid "String after text"
399
  msgstr ""
400
 
401
- #: admin/pages/settings.php:393
402
  msgid "Additional string after text. For a line break, use <b>[br]</b>"
403
  msgstr ""
404
 
405
- #: admin/pages/settings.php:419
406
  msgid "How to get google api key & custom search engine id"
407
  msgstr ""
408
 
409
- #: admin/pages/settings.php:436
410
  msgid "API key for Google"
411
  msgstr ""
412
 
413
- #: admin/pages/settings.php:444
414
  msgid "Google Custom Search Engine ID"
415
  msgstr ""
416
 
417
- #: admin/pages/settings.php:445
418
  msgid "You can get API key after registration on the site"
419
  msgstr ""
420
 
@@ -528,65 +554,86 @@ msgstr ""
528
  msgid "Generate Featured images for posts"
529
  msgstr ""
530
 
531
- #: admin/views/tab-main.php:22
 
 
 
 
 
 
 
 
532
  msgid "Generate Featured images"
533
  msgstr ""
534
 
535
- #: admin/views/tab-main.php:25
536
  msgid "Delete Featured images"
537
  msgstr ""
538
 
539
- #: admin/views/tab-main.php:42
540
  msgid ""
541
  "Note: Thumbnails won't be generated for posts that already have post "
542
  "thumbnail or <strong><em>skip_post_thumb</em></strong> custom meta field."
543
  msgstr ""
544
 
545
- #: admin/views/tab-main.php:44
546
  msgid "You must enable Javascript in order to proceed!"
547
  msgstr ""
548
 
549
- #: admin/views/tab-main.php:103 admin/views/tab-main.php:164
550
  msgid "All done! Processed posts:"
551
  msgstr ""
552
 
553
- #: admin/views/tab-main.php:103
554
  msgid "Set featured image in posts:"
555
  msgstr ""
556
 
557
- #: admin/views/tab-main.php:164
558
  msgid "Delete featured image in posts:"
559
  msgstr ""
560
 
561
- #: admin/views/sources/google.php:40
 
 
 
 
562
  msgid "No hits"
563
  msgstr ""
564
 
565
- #: admin/views/sources/google.php:156
566
  msgid "Search..."
567
  msgstr ""
568
 
569
- #: admin/views/sources/google.php:158
570
  msgid "Search"
571
  msgstr ""
572
 
573
- #: admin/views/sources/google.php:165
 
 
 
 
574
  msgid "Prev"
575
  msgstr ""
576
 
577
- #: admin/views/sources/google.php:168
578
  msgid "Next"
579
  msgstr ""
580
 
581
- #: admin/views/sources/google.php:177
582
  msgid "API key is missing. Add it in APT settings"
583
  msgstr ""
584
 
 
 
 
 
585
  #. Description of the plugin
586
  msgid ""
587
- "Automatically generate the Post Thumbnail (Featured Thumbnail) from the "
588
- "first image in post (or any custom post type) only if Post Thumbnail is not "
589
- "set manually."
 
590
  msgstr ""
591
 
592
  #. URI of the plugin
1
  #, fuzzy
2
  msgid ""
3
  msgstr ""
4
+ "Project-Id-Version: Auto Featured Image\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2020-07-23 08:21+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
15
  "X-Generator: Loco https://localise.biz/\n"
16
  "X-Loco-Version: 2.2.0; wp-4.9.8"
17
 
18
+ #: auto-post-thumbnail.php:50 includes/class-wapt-base.php:978
 
19
  #: admin/pages/generate.php:100
20
+ msgid "Auto Featured Image"
21
  msgstr ""
22
 
23
+ #: includes/class-wapt-base.php:208
24
  msgid "Use as thumbnail"
25
  msgstr ""
26
 
27
+ #: includes/class-wapt-base.php:209 includes/class-wapt-base.php:935
28
  msgid "Change featured image"
29
  msgstr ""
30
 
31
+ #: includes/class-wapt-base.php:418
32
  msgid "This plugin has been automatically deactivated."
33
  msgstr ""
34
 
35
+ #: includes/class-wapt-base.php:839 admin/pages/settings.php:162
36
  msgid "Image"
37
  msgstr ""
38
 
39
+ #: includes/class-wapt-base.php:932
40
  msgid "No image"
41
  msgstr ""
42
 
43
+ #: includes/class-wapt-base.php:952
44
+ msgid "Auto Featured Images"
45
  msgstr ""
46
 
47
+ #: includes/class-wapt-base.php:952
48
  msgid "Add from APT"
49
  msgstr ""
50
 
51
+ #: includes/class-wapt-base.php:1207
52
  #, php-format
53
  msgid ""
54
  "You have reached the limit at the moment. Try again in an 1 hour or <a "
55
  "href=\"%s\">Upgrade to Premium</a>"
56
  msgstr ""
57
 
58
+ #: includes/class-wapt-base.php:1266
59
  #, php-format
60
  msgid ""
61
  "To download images from Google, specify Google API keys in the <a href='%s'>"
62
  "settings</a>."
63
  msgstr ""
64
 
65
+ #: includes/class-wapt-base.php:1295
66
  #, php-format
67
  msgid ""
68
  "What's new in version 3.7.0? Find out from <a href='%s'>the article</a> on "
69
  "our website."
70
  msgstr ""
71
 
72
+ #: includes/class-wapt-base.php:1323
73
  msgid "Standard"
74
  msgstr ""
75
 
76
+ #: includes/class-wapt-base.php:1338
77
  msgid "Uploaded"
78
  msgstr ""
79
 
80
+ #: includes/class-wapt-plugin.php:142
81
  msgid "Generate featured image"
82
  msgstr ""
83
 
84
+ #: includes/class-wapt-plugin.php:143
85
  msgid "Unset featured image"
86
  msgstr ""
87
 
88
+ #: includes/class-wapt-plugin.php:188
89
  msgid "Processed posts: "
90
  msgstr ""
91
 
92
+ #: includes/class-wapt-plugin.php:198
93
+ msgid ""
94
+ "To use premium features, update the <b>Auto Featured Image Premium</b> "
95
+ "plugin!"
96
+ msgstr ""
97
+
98
+ #: includes/class-wapt-plugin.php:219
99
  msgid "Featured Image"
100
  msgstr ""
101
 
102
+ #: includes/class-wapt-plugin.php:220
103
  msgid "With image"
104
  msgstr ""
105
 
106
+ #: includes/class-wapt-plugin.php:221
107
  msgid "Without image"
108
  msgstr ""
109
 
110
+ #: includes/class-wapt-plugin.php:263
111
  msgid "Without featured image"
112
  msgstr ""
113
 
114
+ #: includes/class-wapt-plugin.php:277
115
+ msgid "Generate"
116
+ msgstr ""
117
+
118
+ #: admin/ajax/check-license.php:26
119
  msgid "Licensing action not passed or this action is prohibited!"
120
  msgstr ""
121
 
122
+ #: admin/ajax/check-license.php:38
123
  msgid ""
124
  "License key is empty or license key too long (license key is 32 characters "
125
  "long)"
126
  msgstr ""
127
 
128
+ #: admin/ajax/check-license.php:41
129
  msgid "Your license has been successfully activated"
130
  msgstr ""
131
 
132
+ #: admin/ajax/check-license.php:46
133
  msgid "The license is deactivated"
134
  msgstr ""
135
 
136
+ #: admin/ajax/check-license.php:50
137
  msgid "The license has been updated"
138
  msgstr ""
139
 
140
+ #: admin/ajax/check-license.php:54
141
  msgid "Subscription success cancelled"
142
  msgstr ""
143
 
153
  msgid "Generate featured images"
154
  msgstr ""
155
 
156
+ #: admin/pages/license.php:94
157
  msgid "License of APT"
158
  msgstr ""
159
 
161
  msgid "Settings of APT"
162
  msgstr ""
163
 
164
+ #: admin/pages/settings.php:47
165
  msgid "Settings"
166
  msgstr ""
167
 
168
  #: admin/pages/settings.php:100
169
+ msgid "Add featured image when saving a post"
170
  msgstr ""
171
 
172
  #: admin/pages/settings.php:102
173
+ msgid "Automatically add featured image when saving a post"
174
  msgstr ""
175
 
176
+ #: admin/pages/settings.php:110
177
+ msgid "Find in post"
178
+ msgstr ""
179
+
180
+ #: admin/pages/settings.php:111
181
+ msgid "Generate from title"
182
+ msgstr ""
183
+
184
+ #: admin/pages/settings.php:112
185
+ msgid "Both"
186
  msgstr ""
187
 
188
+ #: admin/pages/settings.php:115
189
+ msgid "Featured image"
190
  msgstr ""
191
 
192
+ #: admin/pages/settings.php:116
193
  msgid ""
194
+ "How to generate featured image:\n"
195
+ "\t\t\t\t\t\t\t<br> <b>Find in post:</b> search for the first image in the "
196
+ "post text\n"
197
+ "\t\t\t\t\t\t\t<br> <b>Generate from title:</b> created from the title on a "
198
+ "colored background\n"
199
+ "\t\t\t\t\t\t\t<br> <b>Both:</b> find an image in the post text, if it is not "
200
+ "present, generate it from the title"
201
  msgstr ""
202
 
203
+ #: admin/pages/settings.php:126 admin/pages/settings.php:128
204
+ msgid "Delete settings when removing the plugin"
205
+ msgstr ""
206
+
207
+ #: admin/pages/settings.php:149
208
  msgid "Background settings"
209
  msgstr ""
210
 
211
+ #: admin/pages/settings.php:161
212
  msgid "Color"
213
  msgstr ""
214
 
215
+ #: admin/pages/settings.php:165
216
  msgid "Background type"
217
  msgstr ""
218
 
219
+ #: admin/pages/settings.php:166
220
  msgid "Select the background type for the featured image"
221
  msgstr ""
222
 
223
+ #: admin/pages/settings.php:174
224
  msgid "Background color for the image"
225
  msgstr ""
226
 
227
+ #: admin/pages/settings.php:175
228
  msgid "Set the background color for the featured image"
229
  msgstr ""
230
 
231
+ #: admin/pages/settings.php:182
232
  msgid "Select image"
233
  msgstr ""
234
 
235
+ #: admin/pages/settings.php:183
236
  msgid "Background image"
237
  msgstr ""
238
 
239
+ #: admin/pages/settings.php:184
240
  msgid "Set the background image. Only JPG or PNG"
241
  msgstr ""
242
 
243
+ #: admin/pages/settings.php:194
244
  msgid "JPEG"
245
  msgstr ""
246
 
247
+ #: admin/pages/settings.php:195
248
  msgid "PNG"
249
  msgstr ""
250
 
251
+ #: admin/pages/settings.php:198
252
  msgid "Image format"
253
  msgstr ""
254
 
255
+ #: admin/pages/settings.php:199
256
  msgid "Set format to save images"
257
  msgstr ""
258
 
259
+ #: admin/pages/settings.php:204
260
  msgid "Font settings"
261
  msgstr ""
262
 
263
+ #: admin/pages/settings.php:216
264
  msgid "Font name"
265
  msgstr ""
266
 
267
+ #: admin/pages/settings.php:217
268
  msgid "Select a font for the text in the featured image"
269
  msgstr ""
270
 
271
+ #: admin/pages/settings.php:227
272
  msgid "Font size"
273
  msgstr ""
274
 
275
+ #: admin/pages/settings.php:228
276
  msgid "Set the font size for the featured image"
277
  msgstr ""
278
 
279
+ #: admin/pages/settings.php:234
280
  msgid "Font color"
281
  msgstr ""
282
 
283
+ #: admin/pages/settings.php:235
284
  msgid "Set the font color for the featured image"
285
  msgstr ""
286
 
287
+ #: admin/pages/settings.php:241
288
  msgid "Text settings"
289
  msgstr ""
290
 
291
+ #: admin/pages/settings.php:253
292
  msgid "Text shadow"
293
  msgstr ""
294
 
295
+ #: admin/pages/settings.php:254
296
  msgid "Use text shadow?"
297
  msgstr ""
298
 
299
+ #: admin/pages/settings.php:266
300
  msgid "Shadow color"
301
  msgstr ""
302
 
303
+ #: admin/pages/settings.php:267
304
  msgid "Set the shadow color for the text"
305
  msgstr ""
306
 
307
+ #: admin/pages/settings.php:275
308
  msgid "No transform"
309
  msgstr ""
310
 
311
+ #: admin/pages/settings.php:276
312
  msgid "Uppercase"
313
  msgstr ""
314
 
315
+ #: admin/pages/settings.php:277
316
  msgid "Lowercase"
317
  msgstr ""
318
 
319
+ #: admin/pages/settings.php:280
320
  msgid "Text transform"
321
  msgstr ""
322
 
323
+ #: admin/pages/settings.php:281
324
  msgid "Select type of text transformation"
325
  msgstr ""
326
 
327
+ #: admin/pages/settings.php:288
328
  msgid "chars"
329
  msgstr ""
330
 
331
+ #: admin/pages/settings.php:290
332
  msgid "Text length"
333
  msgstr ""
334
 
335
+ #: admin/pages/settings.php:291
336
  msgid "Set the maximum text length"
337
  msgstr ""
338
 
339
+ #: admin/pages/settings.php:300
340
  msgid "Line spacing"
341
  msgstr ""
342
 
343
+ #: admin/pages/settings.php:301
344
  msgid "Set the line spacing"
345
  msgstr ""
346
 
347
+ #: admin/pages/settings.php:307
348
  msgid "Alignment"
349
  msgstr ""
350
 
351
+ #: admin/pages/settings.php:319
352
  msgid "Left"
353
  msgstr ""
354
 
355
+ #: admin/pages/settings.php:320 admin/pages/settings.php:335
356
  msgid "Center"
357
  msgstr ""
358
 
359
+ #: admin/pages/settings.php:321
360
  msgid "Right"
361
  msgstr ""
362
 
363
+ #: admin/pages/settings.php:324
364
  msgid "Horizontal text alignment"
365
  msgstr ""
366
 
367
+ #: admin/pages/settings.php:325
368
  msgid "Select how to horizontally align the text on the image"
369
  msgstr ""
370
 
371
+ #: admin/pages/settings.php:334
372
  msgid "Top"
373
  msgstr ""
374
 
375
+ #: admin/pages/settings.php:336
376
  msgid "Bottom"
377
  msgstr ""
378
 
379
+ #: admin/pages/settings.php:339
380
  msgid "Vertical text alignment"
381
  msgstr ""
382
 
383
+ #: admin/pages/settings.php:340
384
  msgid "Select how to vertically align the text on the image"
385
  msgstr ""
386
 
387
+ #: admin/pages/settings.php:347
388
  msgid "Padding"
389
  msgstr ""
390
 
391
+ #: admin/pages/settings.php:358 admin/pages/settings.php:369
392
  msgid "px"
393
  msgstr ""
394
 
395
+ #: admin/pages/settings.php:360
396
  msgid "Top/bottom text padding"
397
  msgstr ""
398
 
399
+ #: admin/pages/settings.php:361
400
  msgid "Padding at the top and bottom of the text"
401
  msgstr ""
402
 
403
+ #: admin/pages/settings.php:371
404
  msgid "Left/right text padding"
405
  msgstr ""
406
 
407
+ #: admin/pages/settings.php:372
408
  msgid "Padding at the left and right of the text"
409
  msgstr ""
410
 
411
+ #: admin/pages/settings.php:379
412
  msgid "Addition of text"
413
  msgstr ""
414
 
415
+ #: admin/pages/settings.php:390
416
  msgid "String before text"
417
  msgstr ""
418
 
419
+ #: admin/pages/settings.php:391
420
  msgid "Additional string before text. For a line break, use <b>[br]</b>"
421
  msgstr ""
422
 
423
+ #: admin/pages/settings.php:400
424
  msgid "String after text"
425
  msgstr ""
426
 
427
+ #: admin/pages/settings.php:401
428
  msgid "Additional string after text. For a line break, use <b>[br]</b>"
429
  msgstr ""
430
 
431
+ #: admin/pages/settings.php:427
432
  msgid "How to get google api key & custom search engine id"
433
  msgstr ""
434
 
435
+ #: admin/pages/settings.php:444
436
  msgid "API key for Google"
437
  msgstr ""
438
 
439
+ #: admin/pages/settings.php:452
440
  msgid "Google Custom Search Engine ID"
441
  msgstr ""
442
 
443
+ #: admin/pages/settings.php:453
444
  msgid "You can get API key after registration on the site"
445
  msgstr ""
446
 
554
  msgid "Generate Featured images for posts"
555
  msgstr ""
556
 
557
+ #: admin/views/tab-main.php:37
558
+ msgid "Posts"
559
+ msgstr ""
560
+
561
+ #: admin/views/tab-main.php:38
562
+ msgid "Pages"
563
+ msgstr ""
564
+
565
+ #: admin/views/tab-main.php:105
566
  msgid "Generate Featured images"
567
  msgstr ""
568
 
569
+ #: admin/views/tab-main.php:110
570
  msgid "Delete Featured images"
571
  msgstr ""
572
 
573
+ #: admin/views/tab-main.php:128
574
  msgid ""
575
  "Note: Thumbnails won't be generated for posts that already have post "
576
  "thumbnail or <strong><em>skip_post_thumb</em></strong> custom meta field."
577
  msgstr ""
578
 
579
+ #: admin/views/tab-main.php:130
580
  msgid "You must enable Javascript in order to proceed!"
581
  msgstr ""
582
 
583
+ #: admin/views/tab-main.php:189 admin/views/tab-main.php:252
584
  msgid "All done! Processed posts:"
585
  msgstr ""
586
 
587
+ #: admin/views/tab-main.php:189
588
  msgid "Set featured image in posts:"
589
  msgstr ""
590
 
591
+ #: admin/views/tab-main.php:252
592
  msgid "Delete featured image in posts:"
593
  msgstr ""
594
 
595
+ #: admin/views/tab-settings.php:38
596
+ msgid "Settings of"
597
+ msgstr ""
598
+
599
+ #: admin/views/sources/google.php:43
600
  msgid "No hits"
601
  msgstr ""
602
 
603
+ #: admin/views/sources/google.php:160
604
  msgid "Search..."
605
  msgstr ""
606
 
607
+ #: admin/views/sources/google.php:162
608
  msgid "Search"
609
  msgstr ""
610
 
611
+ #: admin/views/sources/google.php:167
612
+ msgid "Commercial and derived use"
613
+ msgstr ""
614
+
615
+ #: admin/views/sources/google.php:175
616
  msgid "Prev"
617
  msgstr ""
618
 
619
+ #: admin/views/sources/google.php:178
620
  msgid "Next"
621
  msgstr ""
622
 
623
+ #: admin/views/sources/google.php:186
624
  msgid "API key is missing. Add it in APT settings"
625
  msgstr ""
626
 
627
+ #. Name of the plugin
628
+ msgid "Auto Featured Image (Auto Post Thumbnail)"
629
+ msgstr ""
630
+
631
  #. Description of the plugin
632
  msgid ""
633
+ "Automatically generate the Featured Image from the first image in post or "
634
+ "any custom post type only if Featured Image is not set manually. Featured "
635
+ "Image Generation From Title. Native image search for Elementor, Gutenberg, "
636
+ "Classic Editor."
637
  msgstr ""
638
 
639
  #. URI of the plugin
libs/factory/adverts/boot.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- use WBCR\Factory_Adverts_106\Base;
4
 
5
  /**
6
  * Factory Adverts
@@ -16,35 +16,35 @@ use WBCR\Factory_Adverts_106\Base;
16
  */
17
 
18
  // Exit if accessed directly
19
- if ( ! defined( 'ABSPATH' ) ) {
20
  exit;
21
  }
22
 
23
- if ( defined( 'FACTORY_ADVERTS_106_LOADED' ) || ( defined( 'FACTORY_ADVERTS_BLOCK' ) && FACTORY_ADVERTS_BLOCK ) ) {
24
  return;
25
  }
26
 
27
  # Устанавливаем константу, что модуль уже загружен
28
- define( 'FACTORY_ADVERTS_106_LOADED', true );
29
 
30
  # Устанавливаем версию модуля
31
- define( 'FACTORY_ADVERTS_106_VERSION', '1.0.6' );
32
 
33
  # Регистрируем тектовый домен, для интернализации интерфейса модуля
34
- load_plugin_textdomain( 'wbcr_factory_adverts_106', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
35
 
36
  # Устанавливаем директорию модуля
37
- define( 'FACTORY_ADVERTS_106_DIR', dirname( __FILE__ ) );
38
 
39
  # Устанавливаем url модуля
40
- define( 'FACTORY_ADVERTS_106_URL', plugins_url( null, __FILE__ ) );
41
 
42
- require_once( FACTORY_ADVERTS_106_DIR . '/includes/class-rest-request.php' );
43
- require_once( FACTORY_ADVERTS_106_DIR . '/includes/class-base.php' );
44
 
45
  /**
46
- * @param Wbcr_Factory425_Plugin $plugin
47
  */
48
- add_action( 'wbcr_factory_adverts_106_plugin_created', function ( $plugin ) {
49
- $plugin->set_adverts_manager( "WBCR\Factory_Adverts_106\Base" );
50
- } );
1
  <?php
2
 
3
+ use WBCR\Factory_Adverts_109\Base;
4
 
5
  /**
6
  * Factory Adverts
16
  */
17
 
18
  // Exit if accessed directly
19
+ if( !defined('ABSPATH') ) {
20
  exit;
21
  }
22
 
23
+ if( defined('FACTORY_ADVERTS_109_LOADED') || (defined('FACTORY_ADVERTS_BLOCK') && FACTORY_ADVERTS_BLOCK) ) {
24
  return;
25
  }
26
 
27
  # Устанавливаем константу, что модуль уже загружен
28
+ define('FACTORY_ADVERTS_109_LOADED', true);
29
 
30
  # Устанавливаем версию модуля
31
+ define('FACTORY_ADVERTS_109_VERSION', '1.0.9');
32
 
33
  # Регистрируем тектовый домен, для интернализации интерфейса модуля
34
+ load_plugin_textdomain('wbcr_factory_adverts_109', false, dirname(plugin_basename(__FILE__)) . '/langs');
35
 
36
  # Устанавливаем директорию модуля
37
+ define('FACTORY_ADVERTS_109_DIR', dirname(__FILE__));
38
 
39
  # Устанавливаем url модуля
40
+ define('FACTORY_ADVERTS_109_URL', plugins_url(null, __FILE__));
41
 
42
+ require_once(FACTORY_ADVERTS_109_DIR . '/includes/class-rest-request.php');
43
+ require_once(FACTORY_ADVERTS_109_DIR . '/includes/class-base.php');
44
 
45
  /**
46
+ * @param Wbcr_Factory429_Plugin $plugin
47
  */
48
+ add_action('wbcr_factory_adverts_109_plugin_created', function ($plugin) {
49
+ $plugin->set_adverts_manager("WBCR\Factory_Adverts_109\Base");
50
+ });
libs/factory/adverts/includes/class-base.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Adverts_106;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
@@ -28,7 +28,7 @@ class Base {
28
  *
29
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
30
  * @since 1.0.1
31
- * @var \Wbcr_Factory425_Plugin
32
  */
33
  private $plugin;
34
 
@@ -53,7 +53,7 @@ class Base {
53
  *
54
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
55
  * @since 1.0.1
56
- * @var \WBCR\Factory_Adverts_106\Creative_Motion_API
57
  */
58
  private $api;
59
 
@@ -82,9 +82,9 @@ class Base {
82
  *
83
  * @since 1.0.0 Added
84
  *
85
- * @param \Wbcr_Factory425_Plugin $plugin
86
  */
87
- public function __construct( \Wbcr_Factory425_Plugin $plugin, $settings ) {
88
  $this->plugin = $plugin;
89
 
90
  $this->settings = wp_parse_args( $settings, [
@@ -257,7 +257,7 @@ class Base {
257
  $content = $this->get_debug_message( 'dashboard_widget' );
258
  }
259
 
260
- require_once FACTORY_ADVERTS_106_DIR . '/includes/class-dashboard-widget.php';
261
  new Dashboard_Widget( $this->plugin, $content );
262
  }
263
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_109;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
28
  *
29
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
30
  * @since 1.0.1
31
+ * @var \Wbcr_Factory429_Plugin
32
  */
33
  private $plugin;
34
 
53
  *
54
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
55
  * @since 1.0.1
56
+ * @var \WBCR\Factory_Adverts_109\Creative_Motion_API
57
  */
58
  private $api;
59
 
82
  *
83
  * @since 1.0.0 Added
84
  *
85
+ * @param \Wbcr_Factory429_Plugin $plugin
86
  */
87
+ public function __construct( \Wbcr_Factory429_Plugin $plugin, $settings ) {
88
  $this->plugin = $plugin;
89
 
90
  $this->settings = wp_parse_args( $settings, [
257
  $content = $this->get_debug_message( 'dashboard_widget' );
258
  }
259
 
260
+ require_once FACTORY_ADVERTS_109_DIR . '/includes/class-dashboard-widget.php';
261
  new Dashboard_Widget( $this->plugin, $content );
262
  }
263
  }
libs/factory/adverts/includes/class-dashboard-widget.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Adverts_106;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
@@ -35,7 +35,7 @@ class Dashboard_Widget {
35
  *
36
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
37
  * @since 1.0.1
38
- * @var \Wbcr_Factory425_Plugin
39
  */
40
  private $plugin;
41
 
@@ -46,10 +46,10 @@ class Dashboard_Widget {
46
  *
47
  * @since 1.0.0 Added
48
  *
49
- * @param \Wbcr_Factory425_Plugin $plugin
50
  * @param string $content
51
  */
52
- public function __construct( \Wbcr_Factory425_Plugin $plugin, $content ) {
53
 
54
  $this->plugin = $plugin;
55
  $this->content = $content;
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_109;
4
 
5
  // Exit if accessed directly
6
  if ( ! defined( 'ABSPATH' ) ) {
35
  *
36
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
37
  * @since 1.0.1
38
+ * @var \Wbcr_Factory429_Plugin
39
  */
40
  private $plugin;
41
 
46
  *
47
  * @since 1.0.0 Added
48
  *
49
+ * @param \Wbcr_Factory429_Plugin $plugin
50
  * @param string $content
51
  */
52
+ public function __construct( \Wbcr_Factory429_Plugin $plugin, $content ) {
53
 
54
  $this->plugin = $plugin;
55
  $this->content = $content;
libs/factory/adverts/includes/class-rest-request.php CHANGED
@@ -1,9 +1,9 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_Adverts_106;
4
 
5
  // Exit if accessed directly
6
- if ( ! defined( 'ABSPATH' ) ) {
7
  exit;
8
  }
9
 
@@ -65,7 +65,7 @@ class Creative_Motion_API {
65
  *
66
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
67
  * @since 1.0.1
68
- * @var \Wbcr_Factory425_Plugin
69
  */
70
  private $plugin;
71
 
@@ -75,32 +75,34 @@ class Creative_Motion_API {
75
  *
76
  * Variable initialization.
77
  *
 
78
  * @since 1.0.0 Added
79
  *
80
- * @param \Wbcr_Factory425_Plugin $plugin_name
81
  */
82
- public function __construct( \Wbcr_Factory425_Plugin $plugin ) {
 
83
  $this->plugin = $plugin;
84
  }
85
 
86
  /**
87
  * Get adverts content.
88
  *
89
- * @author Alexander Kovalev <alex.kovalevv@gmail.com>
90
- * @since 1.0.1
91
- *
92
  * @param $position
93
  *
94
  * @return string|\WP_Error
 
 
 
95
  */
96
- public function get_content( $position ) {
97
- $data = $this->get_cache( $position );
 
98
 
99
- if ( is_wp_error( $data ) ) {
100
  return $data;
101
  }
102
 
103
- return strip_tags( $data['content'], '<b>,<a>,<i>,<strong>,<img>,<ul>,<ol>,<li>' );
104
  }
105
 
106
  /**
@@ -108,47 +110,52 @@ class Creative_Motion_API {
108
  *
109
  * If data in the cache, not empty and not expired, then get data from cache. Or get data from server.
110
  *
111
- * @author Alexander Kovalev <alex.kovalevv@gmail.com>
112
- *
113
- * @since 1.0.1 Полностью переписан, с перехватом api ошибок
114
- * @since 1.0.0 Added
115
- *
116
  * @return mixed array(
117
  * 'plugin' => 'wbcr_insert_php',
118
  * 'content' => '<p></p>',
119
  * 'expires' => 1563542199,
120
  * );
 
 
 
 
 
121
  */
122
- private function get_cache( $position ) {
 
123
 
124
- if ( defined( 'FACTORY_ADVERTS_DEBUG' ) && FACTORY_ADVERTS_DEBUG ) {
125
- return $this->do_api_request( $position );
126
  }
127
 
128
- $key = $this->plugin->getPrefix() . md5( $position . 'adverts_transient_' );
 
 
 
 
129
 
130
- $cached = get_transient( $key );
131
 
132
- if ( $cached !== false ) {
133
- if ( isset( $cached['error_code'] ) && isset( $cached['error'] ) ) {
134
- return new \WP_Error( $cached['error_code'], $cached['error'] );
135
  }
136
-
137
  return $cached;
138
  }
139
 
140
- $data = $this->do_api_request( $position );
141
 
142
- if ( is_wp_error( $data ) ) {
143
- set_transient( $key, [
144
- 'error' => $data->get_error_message(),
145
  'error_code' => $data->get_error_code()
146
- ], self::SERVER_UNAVAILABLE_INTERVAL * HOUR_IN_SECONDS );
147
 
148
  return $data;
149
  }
150
-
151
- set_transient( $key, $data, self::DEFAULT_REQUESTS_INTERVAL * HOUR_IN_SECONDS );
152
 
153
  return $data;
154
  }
@@ -159,39 +166,52 @@ class Creative_Motion_API {
159
  * In some case on the server (Apache) in the .htaccess must be set
160
  * RewriteRule ^wp-json/(.*)[?](.*) /?rest_route=/$1&$2 [L]
161
  *
162
- * @since 1.0.1 Добавлен перехват ошибок, рефакторинг кода.
163
- * @since 1.0.0 Added
164
- *
165
  * @return mixed array(
166
  * 'plugin' => 'wbcr_insert_php',
167
  * 'content' => '<p></p>',
168
  * 'expires' => 1563542199,
169
  * );
 
 
 
170
  */
171
- private function do_api_request( $position ) {
 
172
  $default_result = [
173
  'content' => '',
174
  'expires' => self::DEFAULT_REQUESTS_INTERVAL * HOUR_IN_SECONDS,
175
  ];
176
 
177
- $url = untrailingslashit( self::SERVER_URL ) . '/wp-json' . self::REST_ROUTE;
178
- $url = add_query_arg( [ 'plugin' => $this->plugin->getPluginName(), 'position' => $position ], $url );
 
 
 
 
 
 
 
 
 
 
 
 
179
 
180
- $response = wp_remote_get( $url );
181
 
182
- $code = wp_remote_retrieve_response_code( $response );
183
- $body = wp_remote_retrieve_body( $response );
184
 
185
- $data = @json_decode( $body, true );
186
 
187
- if ( is_wp_error( $response ) ) {
188
  return $response;
189
  }
190
 
191
- if ( 200 !== $code ) {
192
- return new \WP_Error( 'http_request_error', 'Failed request to the remote server. Code: ' . $code );
193
  }
194
 
195
- return wp_parse_args( $data, $default_result );
196
  }
197
  }
1
  <?php
2
 
3
+ namespace WBCR\Factory_Adverts_109;
4
 
5
  // Exit if accessed directly
6
+ if( !defined('ABSPATH') ) {
7
  exit;
8
  }
9
 
65
  *
66
  * @author Alexander Kovalev <alex.kovalevv@gmail.com>
67
  * @since 1.0.1
68
+ * @var \Wbcr_Factory429_Plugin
69
  */
70
  private $plugin;
71
 
75
  *
76
  * Variable initialization.
77
  *
78
+ * @param \Wbcr_Factory429_Plugin $plugin_name
79
  * @since 1.0.0 Added
80
  *
 
81
  */
82
+ public function __construct(\Wbcr_Factory429_Plugin $plugin)
83
+ {
84
  $this->plugin = $plugin;
85
  }
86
 
87
  /**
88
  * Get adverts content.
89
  *
 
 
 
90
  * @param $position
91
  *
92
  * @return string|\WP_Error
93
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
94
+ * @since 1.0.1
95
+ *
96
  */
97
+ public function get_content($position)
98
+ {
99
+ $data = $this->get_cache($position);
100
 
101
+ if( is_wp_error($data) ) {
102
  return $data;
103
  }
104
 
105
+ return strip_tags($data['content'], '<b>,<a>,<i>,<strong>,<img>,<ul>,<ol>,<li>');
106
  }
107
 
108
  /**
110
  *
111
  * If data in the cache, not empty and not expired, then get data from cache. Or get data from server.
112
  *
 
 
 
 
 
113
  * @return mixed array(
114
  * 'plugin' => 'wbcr_insert_php',
115
  * 'content' => '<p></p>',
116
  * 'expires' => 1563542199,
117
  * );
118
+ * @since 1.0.1 Полностью переписан, с перехватом api ошибок
119
+ * @since 1.0.0 Added
120
+ *
121
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
122
+ *
123
  */
124
+ private function get_cache($position)
125
+ {
126
 
127
+ if( defined('FACTORY_ADVERTS_DEBUG') && FACTORY_ADVERTS_DEBUG ) {
128
+ return $this->do_api_request($position);
129
  }
130
 
131
+ $key = $this->plugin->getPrefix() . md5($position . 'adverts_transient_');
132
+
133
+ if( 'ru_RU' === get_locale() ) {
134
+ $key .= 'ru_';
135
+ }
136
 
137
+ $cached = get_transient($key);
138
 
139
+ if( $cached !== false ) {
140
+ if( isset($cached['error_code']) && isset($cached['error']) ) {
141
+ return new \WP_Error($cached['error_code'], $cached['error']);
142
  }
143
+
144
  return $cached;
145
  }
146
 
147
+ $data = $this->do_api_request($position);
148
 
149
+ if( is_wp_error($data) ) {
150
+ set_transient($key, [
151
+ 'error' => $data->get_error_message(),
152
  'error_code' => $data->get_error_code()
153
+ ], self::SERVER_UNAVAILABLE_INTERVAL * HOUR_IN_SECONDS);
154
 
155
  return $data;
156
  }
157
+
158
+ set_transient($key, $data, self::DEFAULT_REQUESTS_INTERVAL * HOUR_IN_SECONDS);
159
 
160
  return $data;
161
  }
166
  * In some case on the server (Apache) in the .htaccess must be set
167
  * RewriteRule ^wp-json/(.*)[?](.*) /?rest_route=/$1&$2 [L]
168
  *
 
 
 
169
  * @return mixed array(
170
  * 'plugin' => 'wbcr_insert_php',
171
  * 'content' => '<p></p>',
172
  * 'expires' => 1563542199,
173
  * );
174
+ * @since 1.0.0 Added
175
+ *
176
+ * @since 1.0.1 Добавлен перехват ошибок, рефакторинг кода.
177
  */
178
+ private function do_api_request($position)
179
+ {
180
  $default_result = [
181
  'content' => '',
182
  'expires' => self::DEFAULT_REQUESTS_INTERVAL * HOUR_IN_SECONDS,
183
  ];
184
 
185
+ $url = untrailingslashit(self::SERVER_URL) . '/wp-json' . self::REST_ROUTE;
186
+
187
+ $ads_ID = $this->plugin->getPluginName();
188
+
189
+ if( 'ru_RU' === get_locale() ) {
190
+ $ads_ID .= '-ru';
191
+ }
192
+
193
+ $url = add_query_arg([
194
+ 'plugin' => $ads_ID,
195
+ 'position' => $position,
196
+ 'plugin_title' => $this->plugin->getPluginTitle(),
197
+ 'lang' => get_locale()
198
+ ], $url);
199
 
200
+ $response = wp_remote_get($url);
201
 
202
+ $code = wp_remote_retrieve_response_code($response);
203
+ $body = wp_remote_retrieve_body($response);
204
 
205
+ $data = @json_decode($body, true);
206
 
207
+ if( is_wp_error($response) ) {
208
  return $response;
209
  }
210
 
211
+ if( 200 !== $code ) {
212
+ return new \WP_Error('http_request_error', 'Failed request to the remote server. Code: ' . $code);
213
  }
214
 
215
+ return wp_parse_args($data, $default_result);
216
  }
217
  }
libs/factory/adverts/langs/wbcr_factory_adverts_109-ru_RU.mo ADDED
Binary file
libs/factory/adverts/langs/wbcr_factory_adverts_109-ru_RU.po ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: factory_forms\n"
4
+ "POT-Creation-Date: 2018-10-16 22:44+0300\n"
5
+ "PO-Revision-Date: 2018-10-16 22:45+0300\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
8
+ "Language: ru_RU\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 2.1.1\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+
20
+ #: includes/check-compatibility.php:80
21
+ msgid "warning"
22
+ msgstr "предупреждение"
23
+
24
+ #: includes/check-compatibility.php:82
25
+ #, php-format
26
+ msgid "The %s plugin has stopped."
27
+ msgstr "Работа плагина %s была остановлена."
28
+
29
+ #: includes/check-compatibility.php:83
30
+ msgid "Possible reasons:"
31
+ msgstr "Возможные причины:"
32
+
33
+ #: includes/check-compatibility.php:89
34
+ #, php-format
35
+ msgid "You need to update the PHP version to %s or higher!"
36
+ msgstr "Вам нужно обновить версию PHP до %s или выше!"
37
+
38
+ #: includes/check-compatibility.php:94
39
+ #, php-format
40
+ msgid "You need to update WordPress to %s or higher!"
41
+ msgstr "Вам нужно обновить WordPress до %s или выше!"
42
+
43
+ #: includes/functions.php:132
44
+ #, php-format
45
+ msgid ""
46
+ "%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead."
47
+ msgstr ""
48
+ "%1$s является <strong>устаревшим,</strong> начиная с версии %2$s в "
49
+ "Wordpress! Используйте %3$s."
50
+
51
+ #: includes/functions.php:134
52
+ #, php-format
53
+ msgid ""
54
+ "%1$s is <strong>deprecated</strong> since version %2$s with no alternative "
55
+ "available."
56
+ msgstr ""
57
+ "%1$s был вызван с параметром, который является <strong>устаревшими</strong> "
58
+ "начиная с версии %2$s , в настоящее время доступных альтернатив нет."
59
+
60
+ #: includes/plugin.class.php:202 includes/plugin.class.php:237
61
+ msgid ""
62
+ "You are trying to call this earlier than the plugin menu will be registered."
63
+ msgstr ""
64
+ "Вы пытаетесь вызвать это раньше, чем будет зарегистрировано меню плагина."
65
+
66
+ #: includes/plugin.class.php:220
67
+ msgid ""
68
+ "You are trying to get a link to a page that does not have multisite mode. "
69
+ "Clicking this link will lead the user to a non-existent page."
70
+ msgstr ""
71
+ "Вы пытаетесь получить ссылку на страницу, которая не имеет "
72
+ "многопользовательского режима. Щелчок по этой ссылке приведет пользователя "
73
+ "к несуществующей странице."
74
+
75
+ #: includes/plugin.class.php:222
76
+ msgid ""
77
+ "Trying to get a link to an unregistered page. You are trying to call this "
78
+ "earlier than the plugin menu will be registered."
79
+ msgstr ""
80
+ "Попытка получить ссылку на незарегистрированную страницу. Вы пытаетесь "
81
+ "вызвать это раньше, чем будет зарегистрировано меню плагина."
82
+
83
+
libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-accordion{margin:0 0 30px;border-top:1px solid #DDD;border-right:1px solid #DDD;border-left:1px solid #DDD;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.factory-bootstrap-426 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-426 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-426 .factory-accordion-item{display:none}.factory-bootstrap-426 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-426 .factory-accordion>h3.active:hover{cursor:default}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-accordion{margin:0 0 30px;border-top:1px solid #DDD;border-right:1px solid #DDD;border-left:1px solid #DDD;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.factory-bootstrap-430 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-430 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-430 .factory-accordion-item{display:none}.factory-bootstrap-430 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-430 .factory-accordion>h3.active:hover{cursor:default}
libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .btn-primary{background:#e1a948;border-color:#d39323;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-426 .btn-primary:focus,.factory-bootstrap-426 .btn-primary:hover{background:#db9825;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8be74,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8be74,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-426 .btn-primary:active{background:#db9825;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-426 .btn-primary:disabled,.factory-bootstrap-426 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-426 .btn-group .btn.active.value{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.factory-bootstrap-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .btn-primary{background:#e1a948;border-color:#d39323;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-430 .btn-primary:focus,.factory-bootstrap-430 .btn-primary:hover{background:#db9825;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8be74,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8be74,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-430 .btn-primary:active{background:#db9825;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-430 .btn-primary:disabled,.factory-bootstrap-430 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-430 .btn-group .btn.active.value{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.factory-bootstrap-430 .pagination>.active>a,.factory-bootstrap-430 .pagination>.active>a:focus,.factory-bootstrap-430 .pagination>.active>a:hover,.factory-bootstrap-430 .pagination>.active>span,.factory-bootstrap-430 .pagination>.active>span:focus,.factory-bootstrap-430 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .btn-primary{background:#c7a589;border-color:#b78a66;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-426 .btn-primary:focus,.factory-bootstrap-426 .btn-primary:hover{background:#ba906d;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 1px 0 #d7bfac,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #d7bfac,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-426 .btn-primary:active{background:#ba906d;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-426 .btn-primary:disabled,.factory-bootstrap-426 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-426 .btn-group .btn.active.value{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.factory-bootstrap-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .btn-primary{background:#c7a589;border-color:#b78a66;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-430 .btn-primary:focus,.factory-bootstrap-430 .btn-primary:hover{background:#ba906d;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 1px 0 #d7bfac,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #d7bfac,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-430 .btn-primary:active{background:#ba906d;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-430 .btn-primary:disabled,.factory-bootstrap-430 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-430 .btn-group .btn.active.value{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.factory-bootstrap-430 .pagination>.active>a,.factory-bootstrap-430 .pagination>.active>a:focus,.factory-bootstrap-430 .pagination>.active>a:hover,.factory-bootstrap-430 .pagination>.active>span,.factory-bootstrap-430 .pagination>.active>span:focus,.factory-bootstrap-430 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css CHANGED
@@ -8,7 +8,7 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 article,.factory-bootstrap-426 aside,.factory-bootstrap-426 details,.factory-bootstrap-426 figcaption,.factory-bootstrap-426 figure,.factory-bootstrap-426 footer,.factory-bootstrap-426 header,.factory-bootstrap-426 hgroup,.factory-bootstrap-426 main,.factory-bootstrap-426 nav,.factory-bootstrap-426 section,.factory-bootstrap-426 summary{display:block}.factory-bootstrap-426 audio,.factory-bootstrap-426 canvas,.factory-bootstrap-426 video{display:inline-block}.factory-bootstrap-426 audio:not([controls]){display:none;height:0}.factory-bootstrap-426 [hidden],.factory-bootstrap-426 template{display:none}.factory-bootstrap-426 body{margin:0}.factory-bootstrap-426 a{background:0 0}.factory-bootstrap-426 a:focus{outline:thin dotted}.factory-bootstrap-426 a:active,.factory-bootstrap-426 a:hover{outline:0}.factory-bootstrap-426 h1{margin:.67em 0}.factory-bootstrap-426 b,.factory-bootstrap-426 strong{font-weight:700}.factory-bootstrap-426 dfn{font-style:italic}.factory-bootstrap-426 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-426 mark{color:#000;background:#ff0}.factory-bootstrap-426 code,.factory-bootstrap-426 kbd,.factory-bootstrap-426 pre,.factory-bootstrap-426 samp{font-size:1em}.factory-bootstrap-426 pre{white-space:pre-wrap}.factory-bootstrap-426 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-426 sub,.factory-bootstrap-426 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-426 sup{top:-.5em}.factory-bootstrap-426 sub{bottom:-.25em}.factory-bootstrap-426 img{border:0}.factory-bootstrap-426 svg:not(:root){overflow:hidden}.factory-bootstrap-426 figure{margin:0}.factory-bootstrap-426 button,.factory-bootstrap-426 input,.factory-bootstrap-426 select,.factory-bootstrap-426 textarea{margin:0}.factory-bootstrap-426 button,.factory-bootstrap-426 select{text-transform:none}.factory-bootstrap-426 select{padding-right:4px!important}.factory-bootstrap-426 button,.factory-bootstrap-426 input[type=reset],.factory-bootstrap-426 input[type=submit],html .factory-bootstrap-426 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-426 button[disabled],html .factory-bootstrap-426 input[disabled]{cursor:default}.factory-bootstrap-426 input[type=checkbox],.factory-bootstrap-426 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-426 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-426 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-426 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-426 button::-moz-focus-inner,.factory-bootstrap-426 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-426 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-426 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-426 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-426 a,.factory-bootstrap-426 a:visited{text-decoration:underline}.factory-bootstrap-426 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-426 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-426 a[href^="javascript:"]:after,.factory-bootstrap-426 a[href^="#"]:after{content:""}.factory-bootstrap-426 blockquote,.factory-bootstrap-426 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-426 thead{display:table-header-group}.factory-bootstrap-426 img,.factory-bootstrap-426 tr{page-break-inside:avoid}.factory-bootstrap-426 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-426 h2,.factory-bootstrap-426 h3,.factory-bootstrap-426 p{orphans:3;widows:3}.factory-bootstrap-426 h2,.factory-bootstrap-426 h3{page-break-after:avoid}.factory-bootstrap-426 select{background:#fff!important}.factory-bootstrap-426 .navbar{display:none}.factory-bootstrap-426 .table td,.factory-bootstrap-426 .table th{background-color:#fff!important}.factory-bootstrap-426 .btn>.caret,.factory-bootstrap-426 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-426 .label{border:1px solid #000}.factory-bootstrap-426 .table{border-collapse:collapse!important}.factory-bootstrap-426 .table-bordered td,.factory-bootstrap-426 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-426 *,.factory-bootstrap-426 :after,.factory-bootstrap-426 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-426{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-426 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-426 button,.factory-bootstrap-426 input,.factory-bootstrap-426 select,.factory-bootstrap-426 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-426 img{vertical-align:middle}.factory-bootstrap-426 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-426 .img-rounded{border-radius:6px}.factory-bootstrap-426 .img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-426 .img-circle{border-radius:50%}.factory-bootstrap-426 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-426 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-426 .h1,.factory-bootstrap-426 .h2,.factory-bootstrap-426 .h3,.factory-bootstrap-426 .h4,.factory-bootstrap-426 .h5,.factory-bootstrap-426 .h6,.factory-bootstrap-426 h1,.factory-bootstrap-426 h2,.factory-bootstrap-426 h3,.factory-bootstrap-426 h4,.factory-bootstrap-426 h5,.factory-bootstrap-426 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-426 .h1 .small,.factory-bootstrap-426 .h1 small,.factory-bootstrap-426 .h2 .small,.factory-bootstrap-426 .h2 small,.factory-bootstrap-426 .h3 .small,.factory-bootstrap-426 .h3 small,.factory-bootstrap-426 .h4 .small,.factory-bootstrap-426 .h4 small,.factory-bootstrap-426 .h5 .small,.factory-bootstrap-426 .h5 small,.factory-bootstrap-426 .h6 .small,.factory-bootstrap-426 .h6 small,.factory-bootstrap-426 h1 .small,.factory-bootstrap-426 h1 small,.factory-bootstrap-426 h2 .small,.factory-bootstrap-426 h2 small,.factory-bootstrap-426 h3 .small,.factory-bootstrap-426 h3 small,.factory-bootstrap-426 h4 .small,.factory-bootstrap-426 h4 small,.factory-bootstrap-426 h5 .small,.factory-bootstrap-426 h5 small,.factory-bootstrap-426 h6 .small,.factory-bootstrap-426 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-426 h1,.factory-bootstrap-426 h2,.factory-bootstrap-426 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-426 h1 .small,.factory-bootstrap-426 h1 small,.factory-bootstrap-426 h2 .small,.factory-bootstrap-426 h2 small,.factory-bootstrap-426 h3 .small,.factory-bootstrap-426 h3 small{font-size:65%}.factory-bootstrap-426 h4,.factory-bootstrap-426 h5,.factory-bootstrap-426 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-426 h4 .small,.factory-bootstrap-426 h4 small,.factory-bootstrap-426 h5 .small,.factory-bootstrap-426 h5 small,.factory-bootstrap-426 h6 .small,.factory-bootstrap-426 h6 small{font-size:75%}.factory-bootstrap-426 .h1,.factory-bootstrap-426 h1{font-size:36px}.factory-bootstrap-426 .h2,.factory-bootstrap-426 h2{font-size:30px}.factory-bootstrap-426 .h3,.factory-bootstrap-426 h3{font-size:24px}.factory-bootstrap-426 .h4,.factory-bootstrap-426 h4{font-size:18px}.factory-bootstrap-426 .h5,.factory-bootstrap-426 h5{font-size:14px}.factory-bootstrap-426 .h6,.factory-bootstrap-426 h6{font-size:12px}.factory-bootstrap-426 p{margin:0 0 10px}.factory-bootstrap-426 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-426 .small,.factory-bootstrap-426 small{font-size:85%}.factory-bootstrap-426 cite{font-style:normal}.factory-bootstrap-426 .text-muted{color:#999}.factory-bootstrap-426 .text-primary{color:#428bca}.factory-bootstrap-426 .text-primary:hover{color:#3071a9}.factory-bootstrap-426 .text-warning{color:#8a6d3b}.factory-bootstrap-426 .text-warning:hover{color:#66512c}.factory-bootstrap-426 .text-danger{color:#a94442}.factory-bootstrap-426 .text-danger:hover{color:#843534}.factory-bootstrap-426 .text-success{color:#3c763d}.factory-bootstrap-426 .text-success:hover{color:#2b542c}.factory-bootstrap-426 .text-info{color:#31708f}.factory-bootstrap-426 .text-info:hover{color:#245269}.factory-bootstrap-426 .text-left{text-align:left}.factory-bootstrap-426 .text-right{text-align:right}.factory-bootstrap-426 .text-center{text-align:center}.factory-bootstrap-426 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-426 ol,.factory-bootstrap-426 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-426 ol ol,.factory-bootstrap-426 ol ul,.factory-bootstrap-426 ul ol,.factory-bootstrap-426 ul ul{margin-bottom:0}.factory-bootstrap-426 .list-inline,.factory-bootstrap-426 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-426 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-426 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-426 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-426 dd,.factory-bootstrap-426 dt{line-height:1.428571429}.factory-bootstrap-426 dt{font-weight:700}.factory-bootstrap-426 dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:after,.dl-horizontal dd:before{display:table;content:" "}.dl-horizontal dd:after{clear:both}}.factory-bootstrap-426 abbr[data-original-title],.factory-bootstrap-426 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-426 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-426 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-426 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-426 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-426 blockquote .small,.factory-bootstrap-426 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-426 blockquote .small:before,.factory-bootstrap-426 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-426 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-426 blockquote.pull-right .small,.factory-bootstrap-426 blockquote.pull-right p,.factory-bootstrap-426 blockquote.pull-right small{text-align:right}.factory-bootstrap-426 blockquote.pull-right .small:before,.factory-bootstrap-426 blockquote.pull-right small:before{content:''}.factory-bootstrap-426 blockquote.pull-right .small:after,.factory-bootstrap-426 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-426 blockquote:after,.factory-bootstrap-426 blockquote:before{content:""}.factory-bootstrap-426 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-426 code,.factory-bootstrap-426 kbd,.factory-bootstrap-426 pre,.factory-bootstrap-426 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-426 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-426 pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-426 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-426 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-426 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-426 .container:after,.factory-bootstrap-426 .container:before{display:table;content:" "}.factory-bootstrap-426 .container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.factory-bootstrap-426 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-426 .row:after,.factory-bootstrap-426 .row:before{display:table;content:" "}.factory-bootstrap-426 .row:after{clear:both}.factory-bootstrap-426 .col-lg-1,.factory-bootstrap-426 .col-lg-10,.factory-bootstrap-426 .col-lg-11,.factory-bootstrap-426 .col-lg-12,.factory-bootstrap-426 .col-lg-2,.factory-bootstrap-426 .col-lg-3,.factory-bootstrap-426 .col-lg-4,.factory-bootstrap-426 .col-lg-5,.factory-bootstrap-426 .col-lg-6,.factory-bootstrap-426 .col-lg-7,.factory-bootstrap-426 .col-lg-8,.factory-bootstrap-426 .col-lg-9,.factory-bootstrap-426 .col-md-1,.factory-bootstrap-426 .col-md-10,.factory-bootstrap-426 .col-md-11,.factory-bootstrap-426 .col-md-12,.factory-bootstrap-426 .col-md-2,.factory-bootstrap-426 .col-md-3,.factory-bootstrap-426 .col-md-4,.factory-bootstrap-426 .col-md-5,.factory-bootstrap-426 .col-md-6,.factory-bootstrap-426 .col-md-7,.factory-bootstrap-426 .col-md-8,.factory-bootstrap-426 .col-md-9,.factory-bootstrap-426 .col-sm-1,.factory-bootstrap-426 .col-sm-10,.factory-bootstrap-426 .col-sm-11,.factory-bootstrap-426 .col-sm-12,.factory-bootstrap-426 .col-sm-2,.factory-bootstrap-426 .col-sm-3,.factory-bootstrap-426 .col-sm-4,.factory-bootstrap-426 .col-sm-5,.factory-bootstrap-426 .col-sm-6,.factory-bootstrap-426 .col-sm-7,.factory-bootstrap-426 .col-sm-8,.factory-bootstrap-426 .col-sm-9,.factory-bootstrap-426 .col-xs-1,.factory-bootstrap-426 .col-xs-10,.factory-bootstrap-426 .col-xs-11,.factory-bootstrap-426 .col-xs-12,.factory-bootstrap-426 .col-xs-2,.factory-bootstrap-426 .col-xs-3,.factory-bootstrap-426 .col-xs-4,.factory-bootstrap-426 .col-xs-5,.factory-bootstrap-426 .col-xs-6,.factory-bootstrap-426 .col-xs-7,.factory-bootstrap-426 .col-xs-8,.factory-bootstrap-426 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-426 .col-xs-1,.factory-bootstrap-426 .col-xs-10,.factory-bootstrap-426 .col-xs-11,.factory-bootstrap-426 .col-xs-12,.factory-bootstrap-426 .col-xs-2,.factory-bootstrap-426 .col-xs-3,.factory-bootstrap-426 .col-xs-4,.factory-bootstrap-426 .col-xs-5,.factory-bootstrap-426 .col-xs-6,.factory-bootstrap-426 .col-xs-7,.factory-bootstrap-426 .col-xs-8,.factory-bootstrap-426 .col-xs-9{float:left}.factory-bootstrap-426 .col-xs-12{width:100%}.factory-bootstrap-426 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-426 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-426 .col-xs-9{width:75%}.factory-bootstrap-426 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-426 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-426 .col-xs-6{width:50%}.factory-bootstrap-426 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-426 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-426 .col-xs-3{width:25%}.factory-bootstrap-426 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-426 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-426 .col-xs-pull-12{right:100%}.factory-bootstrap-426 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-426 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-426 .col-xs-pull-9{right:75%}.factory-bootstrap-426 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-426 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-426 .col-xs-pull-6{right:50%}.factory-bootstrap-426 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-426 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-426 .col-xs-pull-3{right:25%}.factory-bootstrap-426 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-426 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-426 .col-xs-pull-0{right:0}.factory-bootstrap-426 .col-xs-push-12{left:100%}.factory-bootstrap-426 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-426 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-426 .col-xs-push-9{left:75%}.factory-bootstrap-426 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-426 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-426 .col-xs-push-6{left:50%}.factory-bootstrap-426 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-426 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-426 .col-xs-push-3{left:25%}.factory-bootstrap-426 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-426 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-426 .col-xs-push-0{left:0}.factory-bootstrap-426 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-426 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-426 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-426 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-426 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-426 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-426 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-426 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-426 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-426 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-426 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-426 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-426 .col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}.factory-bootstrap-426 table{max-width:100%;background-color:transparent}.factory-bootstrap-426 th{text-align:left}.factory-bootstrap-426 .table{width:100%;margin-bottom:20px}.factory-bootstrap-426 .table>tbody>tr>td,.factory-bootstrap-426 .table>tbody>tr>th,.factory-bootstrap-426 .table>tfoot>tr>td,.factory-bootstrap-426 .table>tfoot>tr>th,.factory-bootstrap-426 .table>thead>tr>td,.factory-bootstrap-426 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-426 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-426 .table>caption+thead>tr:first-child>td,.factory-bootstrap-426 .table>caption+thead>tr:first-child>th,.factory-bootstrap-426 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-426 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-426 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-426 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-426 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-426 .table .table{background-color:#fff}.factory-bootstrap-426 .table-condensed>tbody>tr>td,.factory-bootstrap-426 .table-condensed>tbody>tr>th,.factory-bootstrap-426 .table-condensed>tfoot>tr>td,.factory-bootstrap-426 .table-condensed>tfoot>tr>th,.factory-bootstrap-426 .table-condensed>thead>tr>td,.factory-bootstrap-426 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-426 .table-bordered,.factory-bootstrap-426 .table-bordered>tbody>tr>td,.factory-bootstrap-426 .table-bordered>tbody>tr>th,.factory-bootstrap-426 .table-bordered>tfoot>tr>td,.factory-bootstrap-426 .table-bordered>tfoot>tr>th,.factory-bootstrap-426 .table-bordered>thead>tr>td,.factory-bootstrap-426 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-426 .table-bordered>thead>tr>td,.factory-bootstrap-426 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-426 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-426 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-426 .table-hover>tbody>tr:hover>td,.factory-bootstrap-426 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-426 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-426 table td[class*=col-],.factory-bootstrap-426 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-426 .table>tbody>.active>td,.factory-bootstrap-426 .table>tbody>.active>th,.factory-bootstrap-426 .table>tbody>tr>.active,.factory-bootstrap-426 .table>tfoot>.active>td,.factory-bootstrap-426 .table>tfoot>.active>th,.factory-bootstrap-426 .table>tfoot>tr>.active,.factory-bootstrap-426 .table>thead>.active>td,.factory-bootstrap-426 .table>thead>.active>th,.factory-bootstrap-426 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-426 .table-hover>tbody>.active:hover>td,.factory-bootstrap-426 .table-hover>tbody>.active:hover>th,.factory-bootstrap-426 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-426 .table>tbody>.success>td,.factory-bootstrap-426 .table>tbody>.success>th,.factory-bootstrap-426 .table>tbody>tr>.success,.factory-bootstrap-426 .table>tfoot>.success>td,.factory-bootstrap-426 .table>tfoot>.success>th,.factory-bootstrap-426 .table>tfoot>tr>.success,.factory-bootstrap-426 .table>thead>.success>td,.factory-bootstrap-426 .table>thead>.success>th,.factory-bootstrap-426 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-426 .table-hover>tbody>.success:hover>td,.factory-bootstrap-426 .table-hover>tbody>.success:hover>th,.factory-bootstrap-426 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-426 .table>tbody>.danger>td,.factory-bootstrap-426 .table>tbody>.danger>th,.factory-bootstrap-426 .table>tbody>tr>.danger,.factory-bootstrap-426 .table>tfoot>.danger>td,.factory-bootstrap-426 .table>tfoot>.danger>th,.factory-bootstrap-426 .table>tfoot>tr>.danger,.factory-bootstrap-426 .table>thead>.danger>td,.factory-bootstrap-426 .table>thead>.danger>th,.factory-bootstrap-426 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-426 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-426 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-426 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-426 .table>tbody>.warning>td,.factory-bootstrap-426 .table>tbody>.warning>th,.factory-bootstrap-426 .table>tbody>tr>.warning,.factory-bootstrap-426 .table>tfoot>.warning>td,.factory-bootstrap-426 .table>tfoot>.warning>th,.factory-bootstrap-426 .table>tfoot>tr>.warning,.factory-bootstrap-426 .table>thead>.warning>td,.factory-bootstrap-426 .table>thead>.warning>th,.factory-bootstrap-426 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-426 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-426 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-426 .table-hover>tbody>tr>.warning:hover{background-color:#faf2cc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.factory-bootstrap-426 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-426 legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-426 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-426 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-426 input[type=checkbox],.factory-bootstrap-426 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-426 input[type=file]{display:block}.factory-bootstrap-426 select[multiple],.factory-bootstrap-426 select[size]{height:auto}.factory-bootstrap-426 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-426 input[type=checkbox]:focus,.factory-bootstrap-426 input[type=file]:focus,.factory-bootstrap-426 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-426 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-426 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-426 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-426 .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.factory-bootstrap-426 .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-426 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-426 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-426 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-426 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-426 .form-control[disabled],.factory-bootstrap-426 .form-control[readonly],.factory-bootstrap-426 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-426 textarea.form-control{height:auto}.factory-bootstrap-426 .form-group{margin-bottom:15px}.factory-bootstrap-426 .checkbox,.factory-bootstrap-426 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-426 .checkbox label,.factory-bootstrap-426 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-426 .checkbox input[type=checkbox],.factory-bootstrap-426 .checkbox-inline input[type=checkbox],.factory-bootstrap-426 .radio input[type=radio],.factory-bootstrap-426 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-426 .checkbox+.checkbox,.factory-bootstrap-426 .radio+.radio{margin-top:-5px}.factory-bootstrap-426 .checkbox-inline,.factory-bootstrap-426 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-426 .checkbox-inline+.checkbox-inline,.factory-bootstrap-426 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-426 .checkbox-inline[disabled],.factory-bootstrap-426 .checkbox[disabled],.factory-bootstrap-426 .radio-inline[disabled],.factory-bootstrap-426 .radio[disabled],.factory-bootstrap-426 fieldset[disabled] .checkbox,.factory-bootstrap-426 fieldset[disabled] .checkbox-inline,.factory-bootstrap-426 fieldset[disabled] .radio,.factory-bootstrap-426 fieldset[disabled] .radio-inline,.factory-bootstrap-426 fieldset[disabled] input[type=checkbox],.factory-bootstrap-426 fieldset[disabled] input[type=radio],.factory-bootstrap-426 input[type=checkbox][disabled],.factory-bootstrap-426 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-426 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-426 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-426 textarea.input-sm{height:auto}.factory-bootstrap-426 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-426 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-426 textarea.input-lg{height:auto}.factory-bootstrap-426 .has-warning .checkbox,.factory-bootstrap-426 .has-warning .checkbox-inline,.factory-bootstrap-426 .has-warning .control-label,.factory-bootstrap-426 .has-warning .help-block,.factory-bootstrap-426 .has-warning .radio,.factory-bootstrap-426 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-426 .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-426 .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.factory-bootstrap-426 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-426 .has-error .checkbox,.factory-bootstrap-426 .has-error .checkbox-inline,.factory-bootstrap-426 .has-error .control-label,.factory-bootstrap-426 .has-error .help-block,.factory-bootstrap-426 .has-error .radio,.factory-bootstrap-426 .has-error .radio-inline{color:#a94442}.factory-bootstrap-426 .controls{display:block}.factory-bootstrap-426 .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-426 .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.factory-bootstrap-426 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-426 .has-success .checkbox,.factory-bootstrap-426 .has-success .checkbox-inline,.factory-bootstrap-426 .has-success .control-label,.factory-bootstrap-426 .has-success .help-block,.factory-bootstrap-426 .has-success .radio,.factory-bootstrap-426 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-426 .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-426 .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.factory-bootstrap-426 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-426 .form-control-static{margin-bottom:0}.factory-bootstrap-426 .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;font-weight:400}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline select.form-control{width:auto}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.factory-bootstrap-426 .form-horizontal .checkbox,.factory-bootstrap-426 .form-horizontal .checkbox-inline,.factory-bootstrap-426 .form-horizontal .control-label,.factory-bootstrap-426 .form-horizontal .radio,.factory-bootstrap-426 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-426 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-426 .form-horizontal .checkbox,.factory-bootstrap-426 .form-horizontal .radio{min-height:27px}.factory-bootstrap-426 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-426 .form-horizontal .form-group:after,.factory-bootstrap-426 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-426 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-426 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-426 .btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.factory-bootstrap-426 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-426 .btn{text-decoration:none}.factory-bootstrap-426 .btn:focus,.factory-bootstrap-426 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-426 .btn.disabled,.factory-bootstrap-426 .btn[disabled],.factory-bootstrap-426 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-426 .btn-default.active,.factory-bootstrap-426 .btn-default:active,.factory-bootstrap-426 .btn-default:focus,.factory-bootstrap-426 .btn-default:hover,.factory-bootstrap-426 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-426 .btn-default.active,.factory-bootstrap-426 .btn-default:active,.factory-bootstrap-426 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-426 .btn-default.disabled,.factory-bootstrap-426 .btn-default.disabled.active,.factory-bootstrap-426 .btn-default.disabled:active,.factory-bootstrap-426 .btn-default.disabled:focus,.factory-bootstrap-426 .btn-default.disabled:hover,.factory-bootstrap-426 .btn-default[disabled],.factory-bootstrap-426 .btn-default[disabled].active,.factory-bootstrap-426 .btn-default[disabled]:active,.factory-bootstrap-426 .btn-default[disabled]:focus,.factory-bootstrap-426 .btn-default[disabled]:hover,.factory-bootstrap-426 fieldset[disabled] .btn-default,.factory-bootstrap-426 fieldset[disabled] .btn-default.active,.factory-bootstrap-426 fieldset[disabled] .btn-default:active,.factory-bootstrap-426 fieldset[disabled] .btn-default:focus,.factory-bootstrap-426 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-426 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-426 .btn-primary.active,.factory-bootstrap-426 .btn-primary:active,.factory-bootstrap-426 .btn-primary:focus,.factory-bootstrap-426 .btn-primary:hover,.factory-bootstrap-426 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-426 .btn-primary.active,.factory-bootstrap-426 .btn-primary:active,.factory-bootstrap-426 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-426 .btn-primary.disabled,.factory-bootstrap-426 .btn-primary.disabled.active,.factory-bootstrap-426 .btn-primary.disabled:active,.factory-bootstrap-426 .btn-primary.disabled:focus,.factory-bootstrap-426 .btn-primary.disabled:hover,.factory-bootstrap-426 .btn-primary[disabled],.factory-bootstrap-426 .btn-primary[disabled].active,.factory-bootstrap-426 .btn-primary[disabled]:active,.factory-bootstrap-426 .btn-primary[disabled]:focus,.factory-bootstrap-426 .btn-primary[disabled]:hover,.factory-bootstrap-426 fieldset[disabled] .btn-primary,.factory-bootstrap-426 fieldset[disabled] .btn-primary.active,.factory-bootstrap-426 fieldset[disabled] .btn-primary:active,.factory-bootstrap-426 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-426 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-426 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-426 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-426 .btn-warning.active,.factory-bootstrap-426 .btn-warning:active,.factory-bootstrap-426 .btn-warning:focus,.factory-bootstrap-426 .btn-warning:hover,.factory-bootstrap-426 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-426 .btn-warning.active,.factory-bootstrap-426 .btn-warning:active,.factory-bootstrap-426 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-426 .btn-warning.disabled,.factory-bootstrap-426 .btn-warning.disabled.active,.factory-bootstrap-426 .btn-warning.disabled:active,.factory-bootstrap-426 .btn-warning.disabled:focus,.factory-bootstrap-426 .btn-warning.disabled:hover,.factory-bootstrap-426 .btn-warning[disabled],.factory-bootstrap-426 .btn-warning[disabled].active,.factory-bootstrap-426 .btn-warning[disabled]:active,.factory-bootstrap-426 .btn-warning[disabled]:focus,.factory-bootstrap-426 .btn-warning[disabled]:hover,.factory-bootstrap-426 fieldset[disabled] .btn-warning,.factory-bootstrap-426 fieldset[disabled] .btn-warning.active,.factory-bootstrap-426 fieldset[disabled] .btn-warning:active,.factory-bootstrap-426 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-426 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-426 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-426 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-426 .btn-success.active,.factory-bootstrap-426 .btn-success:active,.factory-bootstrap-426 .btn-success:focus,.factory-bootstrap-426 .btn-success:hover,.factory-bootstrap-426 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-426 .btn-success.active,.factory-bootstrap-426 .btn-success:active,.factory-bootstrap-426 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-426 .btn-success.disabled,.factory-bootstrap-426 .btn-success.disabled.active,.factory-bootstrap-426 .btn-success.disabled:active,.factory-bootstrap-426 .btn-success.disabled:focus,.factory-bootstrap-426 .btn-success.disabled:hover,.factory-bootstrap-426 .btn-success[disabled],.factory-bootstrap-426 .btn-success[disabled].active,.factory-bootstrap-426 .btn-success[disabled]:active,.factory-bootstrap-426 .btn-success[disabled]:focus,.factory-bootstrap-426 .btn-success[disabled]:hover,.factory-bootstrap-426 fieldset[disabled] .btn-success,.factory-bootstrap-426 fieldset[disabled] .btn-success.active,.factory-bootstrap-426 fieldset[disabled] .btn-success:active,.factory-bootstrap-426 fieldset[disabled] .btn-success:focus,.factory-bootstrap-426 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-426 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-426 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-426 .btn-info.active,.factory-bootstrap-426 .btn-info:active,.factory-bootstrap-426 .btn-info:focus,.factory-bootstrap-426 .btn-info:hover,.factory-bootstrap-426 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-426 .btn-info.active,.factory-bootstrap-426 .btn-info:active,.factory-bootstrap-426 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-426 .btn-info.disabled,.factory-bootstrap-426 .btn-info.disabled.active,.factory-bootstrap-426 .btn-info.disabled:active,.factory-bootstrap-426 .btn-info.disabled:focus,.factory-bootstrap-426 .btn-info.disabled:hover,.factory-bootstrap-426 .btn-info[disabled],.factory-bootstrap-426 .btn-info[disabled].active,.factory-bootstrap-426 .btn-info[disabled]:active,.factory-bootstrap-426 .btn-info[disabled]:focus,.factory-bootstrap-426 .btn-info[disabled]:hover,.factory-bootstrap-426 fieldset[disabled] .btn-info,.factory-bootstrap-426 fieldset[disabled] .btn-info.active,.factory-bootstrap-426 fieldset[disabled] .btn-info:active,.factory-bootstrap-426 fieldset[disabled] .btn-info:focus,.factory-bootstrap-426 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-426 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-426 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-426 .btn-link,.factory-bootstrap-426 .btn-link:active,.factory-bootstrap-426 .btn-link[disabled],.factory-bootstrap-426 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-426 .btn-link,.factory-bootstrap-426 .btn-link:active,.factory-bootstrap-426 .btn-link:focus,.factory-bootstrap-426 .btn-link:hover{border-color:transparent}.factory-bootstrap-426 .btn-link:focus,.factory-bootstrap-426 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-426 .btn-link[disabled]:focus,.factory-bootstrap-426 .btn-link[disabled]:hover,.factory-bootstrap-426 fieldset[disabled] .btn-link:focus,.factory-bootstrap-426 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-426 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-426 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-426 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-426 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-426 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-426 input[type=button].btn-block,.factory-bootstrap-426 input[type=reset].btn-block,.factory-bootstrap-426 input[type=submit].btn-block{width:100%}.factory-bootstrap-426 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-426 .fade.in{opacity:1}.factory-bootstrap-426 .collapse{display:none}.factory-bootstrap-426 .collapse.in{display:block}.factory-bootstrap-426 .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular) format('svg')}.factory-bootstrap-426 .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;line-height:1;-moz-osx-font-smoothing:grayscale}.factory-bootstrap-426 .glyphicon:empty{width:1em}.factory-bootstrap-426 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-426 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-426 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-426 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-426 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-426 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-426 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-426 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-426 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-426 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-426 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-426 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-426 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-426 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-426 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-426 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-426 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-426 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-426 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-426 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-426 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-426 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-426 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-426 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-426 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-426 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-426 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-426 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-426 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-426 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-426 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-426 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-426 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-426 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-426 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-426 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-426 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-426 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-426 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-426 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-426 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-426 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-426 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-426 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-426 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-426 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-426 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-426 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-426 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-426 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-426 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-426 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-426 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-426 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-426 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-426 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-426 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-426 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-426 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-426 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-426 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-426 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-426 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-426 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-426 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-426 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-426 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-426 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-426 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-426 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-426 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-426 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-426 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-426 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-426 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-426 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-426 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-426 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-426 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-426 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-426 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-426 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-426 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-426 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-426 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-426 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-426 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-426 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-426 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-426 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-426 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-426 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-426 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-426 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-426 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-426 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-426 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-426 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-426 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-426 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-426 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-426 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-426 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-426 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-426 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-426 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-426 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-426 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-426 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-426 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-426 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-426 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-426 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-426 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-426 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-426 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-426 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-426 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-426 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-426 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-426 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-426 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-426 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-426 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-426 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-426 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-426 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-426 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-426 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-426 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-426 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-426 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-426 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-426 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-426 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-426 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-426 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-426 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-426 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-426 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-426 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-426 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-426 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-426 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-426 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-426 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-426 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-426 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-426 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-426 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-426 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-426 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-426 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-426 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-426 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-426 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-426 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-426 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-426 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-426 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-426 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-426 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-426 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-426 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-426 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-426 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-426 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-426 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-426 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-426 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-426 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-426 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-426 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-426 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-426 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-426 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-426 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-426 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-426 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-426 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-426 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-426 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-426 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-426 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-426 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-426 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-426 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-426 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-426 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-426 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-426 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-426 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-426 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-426 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-426 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-426 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-426 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-426 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-426 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-426 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-426 .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.factory-bootstrap-426 .dropdown{position:relative}.factory-bootstrap-426 .dropdown-toggle:focus{outline:0}.factory-bootstrap-426 .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.factory-bootstrap-426 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-426 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-426 .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.factory-bootstrap-426 .dropdown-menu>li>a:focus,.factory-bootstrap-426 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-426 .dropdown-menu>.active>a,.factory-bootstrap-426 .dropdown-menu>.active>a:focus,.factory-bootstrap-426 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-426 .dropdown-menu>.disabled>a,.factory-bootstrap-426 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-426 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-426 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-426 .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-426 .open>.dropdown-menu{display:block}.factory-bootstrap-426 .open>a{outline:0}.factory-bootstrap-426 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-426 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-426 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-426 .dropup .caret,.factory-bootstrap-426 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-426 .dropup .dropdown-menu,.factory-bootstrap-426 .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.factory-bootstrap-426 .btn-group,.factory-bootstrap-426 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-426 .btn-group-vertical>.btn,.factory-bootstrap-426 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-426 .btn-group-vertical>.btn.active,.factory-bootstrap-426 .btn-group-vertical>.btn:active,.factory-bootstrap-426 .btn-group-vertical>.btn:focus,.factory-bootstrap-426 .btn-group-vertical>.btn:hover,.factory-bootstrap-426 .btn-group>.btn.active,.factory-bootstrap-426 .btn-group>.btn:active,.factory-bootstrap-426 .btn-group>.btn:focus,.factory-bootstrap-426 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-426 .btn-group-vertical>.btn:focus,.factory-bootstrap-426 .btn-group>.btn:focus{outline:0}.factory-bootstrap-426 .btn-group .btn+.btn,.factory-bootstrap-426 .btn-group .btn+.btn-group,.factory-bootstrap-426 .btn-group .btn-group+.btn,.factory-bootstrap-426 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-426 .btn-toolbar:after,.factory-bootstrap-426 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-426 .btn-toolbar:after{clear:both}.factory-bootstrap-426 .btn-toolbar .btn-group{float:left}.factory-bootstrap-426 .btn-toolbar>.btn+.btn,.factory-bootstrap-426 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-426 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-426 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-426 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-426 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-426 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-426 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-426 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-426 .btn-group>.btn-group{float:left}.factory-bootstrap-426 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-426 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-426 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-426 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-426 .btn-group .dropdown-toggle:active,.factory-bootstrap-426 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-426 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-426 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-426 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-426 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-426 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-426 .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.factory-bootstrap-426 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-426 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-426 .btn-group .btn.active.value{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-426 .btn .caret{margin-left:0}.factory-bootstrap-426 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-426 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-426 .btn-group-vertical>.btn,.factory-bootstrap-426 .btn-group-vertical>.btn-group,.factory-bootstrap-426 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-426 .btn-group-vertical>.btn-group:after,.factory-bootstrap-426 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-426 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-426 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-426 .btn-group-vertical>.btn+.btn,.factory-bootstrap-426 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-426 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-426 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-426 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-426 .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-426 .btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.factory-bootstrap-426 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-426 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-426 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-426 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-426 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-426 .btn-group-justified>.btn,.factory-bootstrap-426 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-426 .btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.factory-bootstrap-426 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-426 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-426 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-426 .input-group-lg>.form-control,.factory-bootstrap-426 .input-group-lg>.input-group-addon,.factory-bootstrap-426 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-426 select.input-group-lg>.form-control,.factory-bootstrap-426 select.input-group-lg>.input-group-addon,.factory-bootstrap-426 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-426 textarea.input-group-lg>.form-control,.factory-bootstrap-426 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-426 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-426 .input-group-sm>.form-control,.factory-bootstrap-426 .input-group-sm>.input-group-addon,.factory-bootstrap-426 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-426 select.input-group-sm>.form-control,.factory-bootstrap-426 select.input-group-sm>.input-group-addon,.factory-bootstrap-426 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-426 textarea.input-group-sm>.form-control,.factory-bootstrap-426 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-426 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-426 .input-group .form-control,.factory-bootstrap-426 .input-group-addon,.factory-bootstrap-426 .input-group-btn{display:table-cell}.factory-bootstrap-426 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-426 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-426 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-426 .input-group-addon,.factory-bootstrap-426 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-426 .input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-426 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-426 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-426 .input-group-addon input[type=checkbox],.factory-bootstrap-426 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-426 .input-group .form-control:first-child,.factory-bootstrap-426 .input-group-addon:first-child,.factory-bootstrap-426 .input-group-btn:first-child>.btn,.factory-bootstrap-426 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-426 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-426 .input-group-addon:first-child{border-right:0}.factory-bootstrap-426 .input-group .form-control:last-child,.factory-bootstrap-426 .input-group-addon:last-child,.factory-bootstrap-426 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-426 .input-group-btn:last-child>.btn,.factory-bootstrap-426 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-426 .input-group-addon:last-child{border-left:0}.factory-bootstrap-426 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-426 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-426 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-426 .input-group-btn>.btn{position:relative}.factory-bootstrap-426 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-426 .input-group-btn>.btn:active,.factory-bootstrap-426 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-426 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-426 .nav:after,.factory-bootstrap-426 .nav:before{display:table;content:" "}.factory-bootstrap-426 .nav:after{clear:both}.factory-bootstrap-426 .nav>li{position:relative;display:block}.factory-bootstrap-426 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-426 .nav>li>a:focus,.factory-bootstrap-426 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-426 .nav>li.disabled>a{color:#999}.factory-bootstrap-426 .nav>li.disabled>a:focus,.factory-bootstrap-426 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-426 .nav .open>a,.factory-bootstrap-426 .nav .open>a:focus,.factory-bootstrap-426 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-426 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-426 .nav>li>a>img{max-width:none}.factory-bootstrap-426 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-426 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-426 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-426 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-426 .nav-tabs>li.active>a,.factory-bootstrap-426 .nav-tabs>li.active>a:focus,.factory-bootstrap-426 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-426 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-426 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-426 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-426 .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-426 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-426 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-426 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-426 .nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-426 .nav-pills>li{float:left}.factory-bootstrap-426 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-426 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-426 .nav-pills>li.active>a,.factory-bootstrap-426 .nav-pills>li.active>a:focus,.factory-bootstrap-426 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-426 .nav-stacked>li{float:none}.factory-bootstrap-426 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-426 .nav-justified{width:100%}.factory-bootstrap-426 .nav-justified>li{float:none}.factory-bootstrap-426 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-426 .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-426 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-426 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-426 .nav-tabs-justified>.active>a,.factory-bootstrap-426 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-426 .nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-426 .tab-content>.tab-pane{display:none}.factory-bootstrap-426 .tab-content>.active{display:block}.factory-bootstrap-426 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-426 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-426 .navbar:after,.factory-bootstrap-426 .navbar:before{display:table;content:" "}.factory-bootstrap-426 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-426 .navbar-header:after,.factory-bootstrap-426 .navbar-header:before{display:table;content:" "}.factory-bootstrap-426 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-426 .navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.factory-bootstrap-426 .navbar-collapse:after,.factory-bootstrap-426 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-426 .navbar-collapse:after{clear:both}.factory-bootstrap-426 .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.factory-bootstrap-426 .container>.navbar-collapse,.factory-bootstrap-426 .container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.factory-bootstrap-426 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-426 .navbar-fixed-bottom,.factory-bootstrap-426 .navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.factory-bootstrap-426 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-426 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-426 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-426 .navbar-brand:focus,.factory-bootstrap-426 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-426 .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.factory-bootstrap-426 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-426 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-426 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-426 .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.factory-bootstrap-426 .navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form select.form-control{width:auto}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.factory-bootstrap-426 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-426 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-426 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-426 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-426 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-426 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-426 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-426 .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.factory-bootstrap-426 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-426 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-426 .navbar-default .navbar-brand:focus,.factory-bootstrap-426 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-426 .navbar-default .navbar-nav>li>a,.factory-bootstrap-426 .navbar-default .navbar-text{color:#777}.factory-bootstrap-426 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-426 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-426 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-426 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-426 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-426 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-426 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-426 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-426 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-426 .navbar-default .navbar-toggle:focus,.factory-bootstrap-426 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-426 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-426 .navbar-default .navbar-collapse,.factory-bootstrap-426 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-426 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-426 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-426 .navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.factory-bootstrap-426 .navbar-default .navbar-link{color:#777}.factory-bootstrap-426 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-426 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-426 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-426 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-426 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-426 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-426 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-426 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-426 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-426 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-426 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-426 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-426 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-426 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-426 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-426 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-426 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-426 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-426 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-426 .navbar-inverse .navbar-collapse,.factory-bootstrap-426 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-426 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-426 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-426 .navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.factory-bootstrap-426 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-426 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-426 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-426 .breadcrumb>li{display:inline-block}.factory-bootstrap-426 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-426 .breadcrumb>.active{color:#999}.factory-bootstrap-426 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-426 .pagination>li{display:inline}.factory-bootstrap-426 .pagination>li>a,.factory-bootstrap-426 .pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-426 .pagination>li:first-child>a,.factory-bootstrap-426 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-426 .pagination>li:last-child>a,.factory-bootstrap-426 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-426 .pagination>li>a:focus,.factory-bootstrap-426 .pagination>li>a:hover,.factory-bootstrap-426 .pagination>li>span:focus,.factory-bootstrap-426 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-426 .pagination>.disabled>a,.factory-bootstrap-426 .pagination>.disabled>a:focus,.factory-bootstrap-426 .pagination>.disabled>a:hover,.factory-bootstrap-426 .pagination>.disabled>span,.factory-bootstrap-426 .pagination>.disabled>span:focus,.factory-bootstrap-426 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-426 .pagination-lg>li>a,.factory-bootstrap-426 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-426 .pagination-lg>li:first-child>a,.factory-bootstrap-426 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-426 .pagination-lg>li:last-child>a,.factory-bootstrap-426 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-426 .pagination-sm>li>a,.factory-bootstrap-426 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-426 .pagination-sm>li:first-child>a,.factory-bootstrap-426 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-426 .pagination-sm>li:last-child>a,.factory-bootstrap-426 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-426 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-426 .pager:after,.factory-bootstrap-426 .pager:before{display:table;content:" "}.factory-bootstrap-426 .pager:after{clear:both}.factory-bootstrap-426 .pager li{display:inline}.factory-bootstrap-426 .pager li>a,.factory-bootstrap-426 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-426 .pager li>a:focus,.factory-bootstrap-426 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-426 .pager .next>a,.factory-bootstrap-426 .pager .next>span{float:right}.factory-bootstrap-426 .pager .previous>a,.factory-bootstrap-426 .pager .previous>span{float:left}.factory-bootstrap-426 .pager .disabled>a,.factory-bootstrap-426 .pager .disabled>a:focus,.factory-bootstrap-426 .pager .disabled>a:hover,.factory-bootstrap-426 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-426 .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.factory-bootstrap-426 .label[href]:focus,.factory-bootstrap-426 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-426 .label:empty{display:none}.factory-bootstrap-426 .btn .label{position:relative;top:-1px}.factory-bootstrap-426 .label-default{background-color:#999}.factory-bootstrap-426 .label-default[href]:focus,.factory-bootstrap-426 .label-default[href]:hover{background-color:gray}.factory-bootstrap-426 .label-primary{background-color:#428bca}.factory-bootstrap-426 .label-primary[href]:focus,.factory-bootstrap-426 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-426 .label-success{background-color:#5cb85c}.factory-bootstrap-426 .label-success[href]:focus,.factory-bootstrap-426 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-426 .label-info{background-color:#5bc0de}.factory-bootstrap-426 .label-info[href]:focus,.factory-bootstrap-426 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-426 .label-warning{background-color:#f0ad4e}.factory-bootstrap-426 .label-warning[href]:focus,.factory-bootstrap-426 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-426 .label-danger{background-color:#d9534f}.factory-bootstrap-426 .label-danger[href]:focus,.factory-bootstrap-426 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-426 .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.factory-bootstrap-426 .badge:empty{display:none}.factory-bootstrap-426 .btn .badge{position:relative;top:-1px}.factory-bootstrap-426 a.badge:focus,.factory-bootstrap-426 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-426 .nav-pills>.active>a>.badge,.factory-bootstrap-426 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-426 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-426 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-426 .jumbotron .h1,.factory-bootstrap-426 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-426 .jumbotron p{line-height:1.4}.factory-bootstrap-426 .container .jumbotron{border-radius:6px}.factory-bootstrap-426 .jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.factory-bootstrap-426 .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-426 .thumbnail a>img,.factory-bootstrap-426 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-426 a.thumbnail.active,.factory-bootstrap-426 a.thumbnail:focus,.factory-bootstrap-426 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-426 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-426 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-426 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-426 .alert .alert-link{font-weight:700}.factory-bootstrap-426 .alert>p,.factory-bootstrap-426 .alert>ul{margin-bottom:0}.factory-bootstrap-426 .alert>p+p{margin-top:5px}.factory-bootstrap-426 .alert-dismissable{padding-right:35px}.factory-bootstrap-426 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-426 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-426 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-426 .alert-info .alert-link{color:#245269}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.factory-bootstrap-426 .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.factory-bootstrap-426 .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#2ea2cc;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.factory-bootstrap-426 .progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,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);background-image:linear-gradient(45deg,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);background-size:40px 40px}.factory-bootstrap-426 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-426 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-426 .progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,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);background-image:linear-gradient(45deg,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)}.factory-bootstrap-426 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-426 .progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,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);background-image:linear-gradient(45deg,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)}.factory-bootstrap-426 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-426 .progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,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);background-image:linear-gradient(45deg,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)}.factory-bootstrap-426 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-426 .progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,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);background-image:linear-gradient(45deg,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)}.factory-bootstrap-426 .media,.factory-bootstrap-426 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-426 .media,.factory-bootstrap-426 .media .media{margin-top:15px}.factory-bootstrap-426 .media:first-child{margin-top:0}.factory-bootstrap-426 .media-object{display:block}.factory-bootstrap-426 .media-heading{margin:0 0 5px}.factory-bootstrap-426 .media>.pull-left{margin-right:10px}.factory-bootstrap-426 .media>.pull-right{margin-left:10px}.factory-bootstrap-426 .media-list{padding-left:0;list-style:none}.factory-bootstrap-426 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-426 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-426 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-426 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-426 .list-group-item>.badge{float:right}.factory-bootstrap-426 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-426 a.list-group-item{color:#555}.factory-bootstrap-426 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-426 a.list-group-item:focus,.factory-bootstrap-426 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-426 a.list-group-item.active,.factory-bootstrap-426 a.list-group-item.active:focus,.factory-bootstrap-426 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-426 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-426 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-426 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-426 a.list-group-item.active .list-group-item-text,.factory-bootstrap-426 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-426 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-426 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-426 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-426 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-426 .panel-body{padding:15px}.factory-bootstrap-426 .panel-body:after,.factory-bootstrap-426 .panel-body:before{display:table;content:" "}.factory-bootstrap-426 .panel-body:after{clear:both}.factory-bootstrap-426 .panel>.list-group{margin-bottom:0}.factory-bootstrap-426 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-426 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-426 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-426 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-426 .panel>.table,.factory-bootstrap-426 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-426 .panel>.panel-body+.table,.factory-bootstrap-426 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-426 .panel>.table>tbody:first-child td,.factory-bootstrap-426 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-426 .panel>.table-bordered,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-426 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-426 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-426 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-426 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-426 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-426 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-426 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-426 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-426 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-426 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-426 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-426 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-426 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-426 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-426 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-426 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-426 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-426 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-426 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-426 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-426 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-426 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-426 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-426 .panel-title>a{color:inherit}.factory-bootstrap-426 .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.factory-bootstrap-426 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-426 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-426 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-426 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-426 .panel-group .panel-footer{border-top:0}.factory-bootstrap-426 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-426 .panel-default{border-color:#ddd}.factory-bootstrap-426 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-426 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-426 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-426 .panel-primary{border-color:#428bca}.factory-bootstrap-426 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-426 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-426 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-426 .panel-success{border-color:#d6e9c6}.factory-bootstrap-426 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-426 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-426 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-426 .panel-warning{border-color:#faebcc}.factory-bootstrap-426 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-426 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-426 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-426 .panel-danger{border-color:#ebccd1}.factory-bootstrap-426 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-426 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-426 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-426 .panel-info{border-color:#bce8f1}.factory-bootstrap-426 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-426 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-426 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-426 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-426 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-426 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-426 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-426 .close{float:right;font-size:14px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.3;filter:alpha(opacity=30)}.factory-bootstrap-426 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-426 .close:focus,.factory-bootstrap-426 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-426 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-426 .modal-open{overflow:hidden}.factory-bootstrap-426 .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll;width:auto;margin-left:0;background-color:transparent;border:0}.factory-bootstrap-426 .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.factory-bootstrap-426 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-426 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-426 .modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box}.factory-bootstrap-426 .modal-backdrop,.factory-bootstrap-426-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-426 .modal-backdrop.fade,.factory-bootstrap-426-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-426 .modal-backdrop.in,.factory-bootstrap-426-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-426 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-426 .modal-header .close{margin-top:-2px}.factory-bootstrap-426 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-426 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-426 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-426 .modal-footer:after,.factory-bootstrap-426 .modal-footer:before{display:table;content:" "}.factory-bootstrap-426 .modal-footer:after{clear:both}.factory-bootstrap-426 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-426 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-426 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-426 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-426 .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}}.factory-bootstrap-426 .tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.factory-bootstrap-426 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-426 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-426 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-426 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-426 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-426 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-426 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-426 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-426 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-426 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-426 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-426 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-426 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-426 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-426 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-426 .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);background-clip:padding-box}.factory-bootstrap-426 .popover.top{margin-top:-10px}.factory-bootstrap-426 .popover.right{margin-left:10px}.factory-bootstrap-426 .popover.bottom{margin-top:10px}.factory-bootstrap-426 .popover.left{margin-left:-10px}.factory-bootstrap-426 .popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.factory-bootstrap-426 .popover-content{padding:9px 14px}.factory-bootstrap-426 .popover .arrow,.factory-bootstrap-426 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-426 .popover .arrow{border-width:11px}.factory-bootstrap-426 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-426 .popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.factory-bootstrap-426 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-426 .popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.factory-bootstrap-426 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-426 .popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.factory-bootstrap-426 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-426 .popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0}.factory-bootstrap-426 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-426 .carousel{position:relative}.factory-bootstrap-426 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-426 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-426 .carousel-inner>.item>a>img,.factory-bootstrap-426 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-426 .carousel-inner>.active,.factory-bootstrap-426 .carousel-inner>.next,.factory-bootstrap-426 .carousel-inner>.prev{display:block}.factory-bootstrap-426 .carousel-inner>.active{left:0}.factory-bootstrap-426 .carousel-inner>.next,.factory-bootstrap-426 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-426 .carousel-inner>.next{left:100%}.factory-bootstrap-426 .carousel-inner>.prev{left:-100%}.factory-bootstrap-426 .carousel-inner>.next.left,.factory-bootstrap-426 .carousel-inner>.prev.right{left:0}.factory-bootstrap-426 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-426 .carousel-inner>.active.right{left:100%}.factory-bootstrap-426 .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-426 .carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.factory-bootstrap-426 .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.factory-bootstrap-426 .carousel-control:focus,.factory-bootstrap-426 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-426 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-426 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-426 .carousel-control .icon-next,.factory-bootstrap-426 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-426 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-426 .carousel-control .icon-prev{left:50%}.factory-bootstrap-426 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-426 .carousel-control .icon-next{right:50%}.factory-bootstrap-426 .carousel-control .icon-next,.factory-bootstrap-426 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-426 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-426 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-426 .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.factory-bootstrap-426 .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.factory-bootstrap-426 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-426 .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.factory-bootstrap-426 .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.factory-bootstrap-426 .clearfix:after,.factory-bootstrap-426 .clearfix:before{display:table;content:" "}.factory-bootstrap-426 .clearfix:after{clear:both}.factory-bootstrap-426 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-426 .pull-right{float:right!important}.factory-bootstrap-426 .pull-left{float:left!important}.factory-bootstrap-426 .hide{display:none!important}.factory-bootstrap-426 .show{display:block!important}.factory-bootstrap-426 .invisible{visibility:hidden}.factory-bootstrap-426 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-426 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-426 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-426 .visible-lg,.factory-bootstrap-426 .visible-md,.factory-bootstrap-426 .visible-sm,.factory-bootstrap-426 .visible-xs,.factory-bootstrap-426 td.visible-lg,.factory-bootstrap-426 td.visible-md,.factory-bootstrap-426 td.visible-sm,.factory-bootstrap-426 td.visible-xs,.factory-bootstrap-426 th.visible-lg,.factory-bootstrap-426 th.visible-md,.factory-bootstrap-426 th.visible-sm,.factory-bootstrap-426 th.visible-xs,.factory-bootstrap-426 tr.visible-lg,.factory-bootstrap-426 tr.visible-md,.factory-bootstrap-426 tr.visible-sm,.factory-bootstrap-426 tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}table.visible-xs.visible-sm{display:table}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}table.visible-xs.visible-md{display:table}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}table.visible-xs.visible-lg{display:table}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}table.visible-sm.visible-xs{display:table}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}table.visible-sm.visible-md{display:table}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}table.visible-sm.visible-lg{display:table}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-md.visible-xs{display:block!important}table.visible-md.visible-xs{display:table}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}table.visible-md.visible-sm{display:table}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}table.visible-md.visible-lg{display:table}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}table.visible-lg.visible-xs{display:table}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}table.visible-lg.visible-sm{display:table}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}table.visible-lg.visible-md{display:table}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.factory-bootstrap-426 .hidden-xs{display:block!important}.factory-bootstrap-426 table.hidden-xs{display:table}.factory-bootstrap-426 tr.hidden-xs{display:table-row!important}.factory-bootstrap-426 td.hidden-xs,.factory-bootstrap-426 th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.factory-bootstrap-426 .hidden-sm{display:block!important}.factory-bootstrap-426 table.hidden-sm{display:table}.factory-bootstrap-426 tr.hidden-sm{display:table-row!important}.factory-bootstrap-426 td.hidden-sm,.factory-bootstrap-426 th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.factory-bootstrap-426 .hidden-md{display:block!important}.factory-bootstrap-426 table.hidden-md{display:table}.factory-bootstrap-426 tr.hidden-md{display:table-row!important}.factory-bootstrap-426 td.hidden-md,.factory-bootstrap-426 th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.factory-bootstrap-426 .hidden-lg{display:block!important}.factory-bootstrap-426 table.hidden-lg{display:table}.factory-bootstrap-426 tr.hidden-lg{display:table-row!important}.factory-bootstrap-426 td.hidden-lg,.factory-bootstrap-426 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-426 .hidden-lg.hidden-xs,.factory-bootstrap-426 td.hidden-lg.hidden-xs,.factory-bootstrap-426 th.hidden-lg.hidden-xs,.factory-bootstrap-426 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-426 .hidden-lg.hidden-sm,.factory-bootstrap-426 td.hidden-lg.hidden-sm,.factory-bootstrap-426 th.hidden-lg.hidden-sm,.factory-bootstrap-426 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-426 .hidden-lg.hidden-md,.factory-bootstrap-426 td.hidden-lg.hidden-md,.factory-bootstrap-426 th.hidden-lg.hidden-md,.factory-bootstrap-426 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-426 .hidden-lg,.factory-bootstrap-426 td.hidden-lg,.factory-bootstrap-426 th.hidden-lg,.factory-bootstrap-426 tr.hidden-lg{display:none!important}}.factory-bootstrap-426 .visible-print,.factory-bootstrap-426 td.visible-print,.factory-bootstrap-426 th.visible-print,.factory-bootstrap-426 tr.visible-print{display:none!important}@media print{.factory-bootstrap-426 .visible-print{display:block!important}.factory-bootstrap-426 table.visible-print{display:table}.factory-bootstrap-426 tr.visible-print{display:table-row!important}.factory-bootstrap-426 td.visible-print,.factory-bootstrap-426 th.visible-print{display:table-cell!important}.factory-bootstrap-426 .hidden-print,.factory-bootstrap-426 td.hidden-print,.factory-bootstrap-426 th.hidden-print,.factory-bootstrap-426 tr.hidden-print{display:none!important}}/*!
12
  * Factory Default Bootstrap Theme
13
  *
14
  * The code is based on Bootstrap v2.1.1
@@ -22,4 +22,4 @@
22
  *
23
  * @package factory-bootstrap
24
  * @since 1.0.0
25
- */.factory-bootstrap-426 .btn-danger,.factory-bootstrap-426 .btn-default,.factory-bootstrap-426 .btn-info,.factory-bootstrap-426 .btn-primary,.factory-bootstrap-426 .btn-success,.factory-bootstrap-426 .btn-warning{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-426 .btn-danger.active,.factory-bootstrap-426 .btn-danger:active,.factory-bootstrap-426 .btn-default.active,.factory-bootstrap-426 .btn-default:active,.factory-bootstrap-426 .btn-info.active,.factory-bootstrap-426 .btn-info:active,.factory-bootstrap-426 .btn-primary.active,.factory-bootstrap-426 .btn-primary:active,.factory-bootstrap-426 .btn-success.active,.factory-bootstrap-426 .btn-success:active,.factory-bootstrap-426 .btn-warning.active,.factory-bootstrap-426 .btn-warning:active{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.factory-bootstrap-426 .btn.active,.factory-bootstrap-426 .btn:active{background-image:none}.factory-bootstrap-426 .btn-default{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.factory-bootstrap-426 .btn-default.active,.factory-bootstrap-426 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-426 .btn-gold{font-weight:700;padding:7px 12px;cursor:pointer;line-height:16px;display:inline-block;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;box-shadow:#e3e3e3 0 1px 1px;-moz-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);-webkit-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);text-shadow:1px 1px 0 #ffe8b2;color:#7c5d1b;border:1px solid #d6a437;background:#feeb80}.factory-bootstrap-426 .btn-gold:focus,.factory-bootstrap-426 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-426 .btn-gold.active,.factory-bootstrap-426 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-426 .btn-primary{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.factory-bootstrap-426 .btn-primary:focus,.factory-bootstrap-426 .btn-primary:hover{background:#1e8cbe;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.factory-bootstrap-426 .btn-primary.active,.factory-bootstrap-426 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-426 .btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-426 .btn-success:focus,.factory-bootstrap-426 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-426 .btn-success.active,.factory-bootstrap-426 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-426 .btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-426 .btn-warning:focus,.factory-bootstrap-426 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-426 .btn-warning.active,.factory-bootstrap-426 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-426 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-426 .btn-danger.active,.factory-bootstrap-426 .btn-danger:active,.factory-bootstrap-426 .btn-danger:focus,.factory-bootstrap-426 .btn-danger:hover,.factory-bootstrap-426 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-426 .btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-426 .btn-info:focus,.factory-bootstrap-426 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-426 .btn-info.active,.factory-bootstrap-426 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-426 .img-thumbnail,.factory-bootstrap-426 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-426 .dropdown-menu>li>a:focus,.factory-bootstrap-426 .dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-426 .dropdown-menu>.active>a,.factory-bootstrap-426 .dropdown-menu>.active>a:focus,.factory-bootstrap-426 .dropdown-menu>.active>a:hover{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-426 .navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.factory-bootstrap-426 .navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.factory-bootstrap-426 .navbar-brand,.factory-bootstrap-426 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-426 .navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-426 .navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.factory-bootstrap-426 .navbar-inverse .navbar-brand,.factory-bootstrap-426 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-426 .navbar-fixed-bottom,.factory-bootstrap-426 .navbar-fixed-top,.factory-bootstrap-426 .navbar-static-top{border-radius:0}.factory-bootstrap-426 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-426 .alert .actions{padding-top:10px}.factory-bootstrap-426 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-426 .alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0)}.factory-bootstrap-426 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-426 .alert-normal,.factory-bootstrap-426 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-426 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-426 .alert-danger a:not(.btn),.factory-bootstrap-426 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-426 .progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.factory-bootstrap-426 .progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.factory-bootstrap-426 .progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.factory-bootstrap-426 .progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.factory-bootstrap-426 .progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.factory-bootstrap-426 .progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.factory-bootstrap-426 .list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-426 .list-group-item.active,.factory-bootstrap-426 .list-group-item.active:focus,.factory-bootstrap-426 .list-group-item.active:hover{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0)}.factory-bootstrap-426 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-426 .panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-426 .panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-426 .panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.factory-bootstrap-426 .panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.factory-bootstrap-426 .panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.factory-bootstrap-426 .panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.factory-bootstrap-426 .well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}.factory-bootstrap-426 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-426 .factory-hidden{display:none}.factory-bootstrap-426 .factory-ajax-loader{width:25px;height:25px;background:url(../assets/images/loader-sm-tr.gif)}.factory-control-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:5px;padding:4px 10px 3px;max-width:500px;display:inline-block}.factory-control-error i{margin:0 7px 0 1px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 article,.factory-bootstrap-430 aside,.factory-bootstrap-430 details,.factory-bootstrap-430 figcaption,.factory-bootstrap-430 figure,.factory-bootstrap-430 footer,.factory-bootstrap-430 header,.factory-bootstrap-430 hgroup,.factory-bootstrap-430 main,.factory-bootstrap-430 nav,.factory-bootstrap-430 section,.factory-bootstrap-430 summary{display:block}.factory-bootstrap-430 audio,.factory-bootstrap-430 canvas,.factory-bootstrap-430 video{display:inline-block}.factory-bootstrap-430 audio:not([controls]){display:none;height:0}.factory-bootstrap-430 [hidden],.factory-bootstrap-430 template{display:none}.factory-bootstrap-430 body{margin:0}.factory-bootstrap-430 a{background:0 0}.factory-bootstrap-430 a:focus{outline:thin dotted}.factory-bootstrap-430 a:active,.factory-bootstrap-430 a:hover{outline:0}.factory-bootstrap-430 h1{margin:.67em 0}.factory-bootstrap-430 b,.factory-bootstrap-430 strong{font-weight:700}.factory-bootstrap-430 dfn{font-style:italic}.factory-bootstrap-430 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-430 mark{color:#000;background:#ff0}.factory-bootstrap-430 code,.factory-bootstrap-430 kbd,.factory-bootstrap-430 pre,.factory-bootstrap-430 samp{font-size:1em}.factory-bootstrap-430 pre{white-space:pre-wrap}.factory-bootstrap-430 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-430 sub,.factory-bootstrap-430 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-430 sup{top:-.5em}.factory-bootstrap-430 sub{bottom:-.25em}.factory-bootstrap-430 img{border:0}.factory-bootstrap-430 svg:not(:root){overflow:hidden}.factory-bootstrap-430 figure{margin:0}.factory-bootstrap-430 button,.factory-bootstrap-430 input,.factory-bootstrap-430 select,.factory-bootstrap-430 textarea{margin:0}.factory-bootstrap-430 button,.factory-bootstrap-430 select{text-transform:none}.factory-bootstrap-430 select{padding-right:4px!important}.factory-bootstrap-430 button,.factory-bootstrap-430 input[type=reset],.factory-bootstrap-430 input[type=submit],html .factory-bootstrap-430 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-430 button[disabled],html .factory-bootstrap-430 input[disabled]{cursor:default}.factory-bootstrap-430 input[type=checkbox],.factory-bootstrap-430 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-430 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-430 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-430 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-430 button::-moz-focus-inner,.factory-bootstrap-430 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-430 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-430 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-430 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-430 a,.factory-bootstrap-430 a:visited{text-decoration:underline}.factory-bootstrap-430 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-430 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-430 a[href^="javascript:"]:after,.factory-bootstrap-430 a[href^="#"]:after{content:""}.factory-bootstrap-430 blockquote,.factory-bootstrap-430 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-430 thead{display:table-header-group}.factory-bootstrap-430 img,.factory-bootstrap-430 tr{page-break-inside:avoid}.factory-bootstrap-430 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-430 h2,.factory-bootstrap-430 h3,.factory-bootstrap-430 p{orphans:3;widows:3}.factory-bootstrap-430 h2,.factory-bootstrap-430 h3{page-break-after:avoid}.factory-bootstrap-430 select{background:#fff!important}.factory-bootstrap-430 .navbar{display:none}.factory-bootstrap-430 .table td,.factory-bootstrap-430 .table th{background-color:#fff!important}.factory-bootstrap-430 .btn>.caret,.factory-bootstrap-430 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-430 .label{border:1px solid #000}.factory-bootstrap-430 .table{border-collapse:collapse!important}.factory-bootstrap-430 .table-bordered td,.factory-bootstrap-430 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-430 *,.factory-bootstrap-430 :after,.factory-bootstrap-430 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-430{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-430 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-430 button,.factory-bootstrap-430 input,.factory-bootstrap-430 select,.factory-bootstrap-430 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-430 img{vertical-align:middle}.factory-bootstrap-430 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-430 .img-rounded{border-radius:6px}.factory-bootstrap-430 .img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-430 .img-circle{border-radius:50%}.factory-bootstrap-430 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-430 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-430 .h1,.factory-bootstrap-430 .h2,.factory-bootstrap-430 .h3,.factory-bootstrap-430 .h4,.factory-bootstrap-430 .h5,.factory-bootstrap-430 .h6,.factory-bootstrap-430 h1,.factory-bootstrap-430 h2,.factory-bootstrap-430 h3,.factory-bootstrap-430 h4,.factory-bootstrap-430 h5,.factory-bootstrap-430 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-430 .h1 .small,.factory-bootstrap-430 .h1 small,.factory-bootstrap-430 .h2 .small,.factory-bootstrap-430 .h2 small,.factory-bootstrap-430 .h3 .small,.factory-bootstrap-430 .h3 small,.factory-bootstrap-430 .h4 .small,.factory-bootstrap-430 .h4 small,.factory-bootstrap-430 .h5 .small,.factory-bootstrap-430 .h5 small,.factory-bootstrap-430 .h6 .small,.factory-bootstrap-430 .h6 small,.factory-bootstrap-430 h1 .small,.factory-bootstrap-430 h1 small,.factory-bootstrap-430 h2 .small,.factory-bootstrap-430 h2 small,.factory-bootstrap-430 h3 .small,.factory-bootstrap-430 h3 small,.factory-bootstrap-430 h4 .small,.factory-bootstrap-430 h4 small,.factory-bootstrap-430 h5 .small,.factory-bootstrap-430 h5 small,.factory-bootstrap-430 h6 .small,.factory-bootstrap-430 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-430 h1,.factory-bootstrap-430 h2,.factory-bootstrap-430 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-430 h1 .small,.factory-bootstrap-430 h1 small,.factory-bootstrap-430 h2 .small,.factory-bootstrap-430 h2 small,.factory-bootstrap-430 h3 .small,.factory-bootstrap-430 h3 small{font-size:65%}.factory-bootstrap-430 h4,.factory-bootstrap-430 h5,.factory-bootstrap-430 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-430 h4 .small,.factory-bootstrap-430 h4 small,.factory-bootstrap-430 h5 .small,.factory-bootstrap-430 h5 small,.factory-bootstrap-430 h6 .small,.factory-bootstrap-430 h6 small{font-size:75%}.factory-bootstrap-430 .h1,.factory-bootstrap-430 h1{font-size:36px}.factory-bootstrap-430 .h2,.factory-bootstrap-430 h2{font-size:30px}.factory-bootstrap-430 .h3,.factory-bootstrap-430 h3{font-size:24px}.factory-bootstrap-430 .h4,.factory-bootstrap-430 h4{font-size:18px}.factory-bootstrap-430 .h5,.factory-bootstrap-430 h5{font-size:14px}.factory-bootstrap-430 .h6,.factory-bootstrap-430 h6{font-size:12px}.factory-bootstrap-430 p{margin:0 0 10px}.factory-bootstrap-430 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-430 .small,.factory-bootstrap-430 small{font-size:85%}.factory-bootstrap-430 cite{font-style:normal}.factory-bootstrap-430 .text-muted{color:#999}.factory-bootstrap-430 .text-primary{color:#428bca}.factory-bootstrap-430 .text-primary:hover{color:#3071a9}.factory-bootstrap-430 .text-warning{color:#8a6d3b}.factory-bootstrap-430 .text-warning:hover{color:#66512c}.factory-bootstrap-430 .text-danger{color:#a94442}.factory-bootstrap-430 .text-danger:hover{color:#843534}.factory-bootstrap-430 .text-success{color:#3c763d}.factory-bootstrap-430 .text-success:hover{color:#2b542c}.factory-bootstrap-430 .text-info{color:#31708f}.factory-bootstrap-430 .text-info:hover{color:#245269}.factory-bootstrap-430 .text-left{text-align:left}.factory-bootstrap-430 .text-right{text-align:right}.factory-bootstrap-430 .text-center{text-align:center}.factory-bootstrap-430 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-430 ol,.factory-bootstrap-430 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-430 ol ol,.factory-bootstrap-430 ol ul,.factory-bootstrap-430 ul ol,.factory-bootstrap-430 ul ul{margin-bottom:0}.factory-bootstrap-430 .list-inline,.factory-bootstrap-430 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-430 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-430 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-430 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-430 dd,.factory-bootstrap-430 dt{line-height:1.428571429}.factory-bootstrap-430 dt{font-weight:700}.factory-bootstrap-430 dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:after,.dl-horizontal dd:before{display:table;content:" "}.dl-horizontal dd:after{clear:both}}.factory-bootstrap-430 abbr[data-original-title],.factory-bootstrap-430 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-430 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-430 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-430 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-430 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-430 blockquote .small,.factory-bootstrap-430 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-430 blockquote .small:before,.factory-bootstrap-430 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-430 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-430 blockquote.pull-right .small,.factory-bootstrap-430 blockquote.pull-right p,.factory-bootstrap-430 blockquote.pull-right small{text-align:right}.factory-bootstrap-430 blockquote.pull-right .small:before,.factory-bootstrap-430 blockquote.pull-right small:before{content:''}.factory-bootstrap-430 blockquote.pull-right .small:after,.factory-bootstrap-430 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-430 blockquote:after,.factory-bootstrap-430 blockquote:before{content:""}.factory-bootstrap-430 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-430 code,.factory-bootstrap-430 kbd,.factory-bootstrap-430 pre,.factory-bootstrap-430 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-430 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-430 pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-430 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-430 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-430 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-430 .container:after,.factory-bootstrap-430 .container:before{display:table;content:" "}.factory-bootstrap-430 .container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.factory-bootstrap-430 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-430 .row:after,.factory-bootstrap-430 .row:before{display:table;content:" "}.factory-bootstrap-430 .row:after{clear:both}.factory-bootstrap-430 .col-lg-1,.factory-bootstrap-430 .col-lg-10,.factory-bootstrap-430 .col-lg-11,.factory-bootstrap-430 .col-lg-12,.factory-bootstrap-430 .col-lg-2,.factory-bootstrap-430 .col-lg-3,.factory-bootstrap-430 .col-lg-4,.factory-bootstrap-430 .col-lg-5,.factory-bootstrap-430 .col-lg-6,.factory-bootstrap-430 .col-lg-7,.factory-bootstrap-430 .col-lg-8,.factory-bootstrap-430 .col-lg-9,.factory-bootstrap-430 .col-md-1,.factory-bootstrap-430 .col-md-10,.factory-bootstrap-430 .col-md-11,.factory-bootstrap-430 .col-md-12,.factory-bootstrap-430 .col-md-2,.factory-bootstrap-430 .col-md-3,.factory-bootstrap-430 .col-md-4,.factory-bootstrap-430 .col-md-5,.factory-bootstrap-430 .col-md-6,.factory-bootstrap-430 .col-md-7,.factory-bootstrap-430 .col-md-8,.factory-bootstrap-430 .col-md-9,.factory-bootstrap-430 .col-sm-1,.factory-bootstrap-430 .col-sm-10,.factory-bootstrap-430 .col-sm-11,.factory-bootstrap-430 .col-sm-12,.factory-bootstrap-430 .col-sm-2,.factory-bootstrap-430 .col-sm-3,.factory-bootstrap-430 .col-sm-4,.factory-bootstrap-430 .col-sm-5,.factory-bootstrap-430 .col-sm-6,.factory-bootstrap-430 .col-sm-7,.factory-bootstrap-430 .col-sm-8,.factory-bootstrap-430 .col-sm-9,.factory-bootstrap-430 .col-xs-1,.factory-bootstrap-430 .col-xs-10,.factory-bootstrap-430 .col-xs-11,.factory-bootstrap-430 .col-xs-12,.factory-bootstrap-430 .col-xs-2,.factory-bootstrap-430 .col-xs-3,.factory-bootstrap-430 .col-xs-4,.factory-bootstrap-430 .col-xs-5,.factory-bootstrap-430 .col-xs-6,.factory-bootstrap-430 .col-xs-7,.factory-bootstrap-430 .col-xs-8,.factory-bootstrap-430 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-430 .col-xs-1,.factory-bootstrap-430 .col-xs-10,.factory-bootstrap-430 .col-xs-11,.factory-bootstrap-430 .col-xs-12,.factory-bootstrap-430 .col-xs-2,.factory-bootstrap-430 .col-xs-3,.factory-bootstrap-430 .col-xs-4,.factory-bootstrap-430 .col-xs-5,.factory-bootstrap-430 .col-xs-6,.factory-bootstrap-430 .col-xs-7,.factory-bootstrap-430 .col-xs-8,.factory-bootstrap-430 .col-xs-9{float:left}.factory-bootstrap-430 .col-xs-12{width:100%}.factory-bootstrap-430 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-430 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-430 .col-xs-9{width:75%}.factory-bootstrap-430 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-430 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-430 .col-xs-6{width:50%}.factory-bootstrap-430 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-430 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-430 .col-xs-3{width:25%}.factory-bootstrap-430 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-430 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-430 .col-xs-pull-12{right:100%}.factory-bootstrap-430 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-430 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-430 .col-xs-pull-9{right:75%}.factory-bootstrap-430 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-430 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-430 .col-xs-pull-6{right:50%}.factory-bootstrap-430 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-430 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-430 .col-xs-pull-3{right:25%}.factory-bootstrap-430 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-430 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-430 .col-xs-pull-0{right:0}.factory-bootstrap-430 .col-xs-push-12{left:100%}.factory-bootstrap-430 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-430 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-430 .col-xs-push-9{left:75%}.factory-bootstrap-430 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-430 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-430 .col-xs-push-6{left:50%}.factory-bootstrap-430 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-430 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-430 .col-xs-push-3{left:25%}.factory-bootstrap-430 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-430 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-430 .col-xs-push-0{left:0}.factory-bootstrap-430 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-430 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-430 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-430 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-430 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-430 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-430 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-430 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-430 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-430 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-430 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-430 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-430 .col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}.factory-bootstrap-430 table{max-width:100%;background-color:transparent}.factory-bootstrap-430 th{text-align:left}.factory-bootstrap-430 .table{width:100%;margin-bottom:20px}.factory-bootstrap-430 .table>tbody>tr>td,.factory-bootstrap-430 .table>tbody>tr>th,.factory-bootstrap-430 .table>tfoot>tr>td,.factory-bootstrap-430 .table>tfoot>tr>th,.factory-bootstrap-430 .table>thead>tr>td,.factory-bootstrap-430 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-430 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-430 .table>caption+thead>tr:first-child>td,.factory-bootstrap-430 .table>caption+thead>tr:first-child>th,.factory-bootstrap-430 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-430 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-430 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-430 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-430 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-430 .table .table{background-color:#fff}.factory-bootstrap-430 .table-condensed>tbody>tr>td,.factory-bootstrap-430 .table-condensed>tbody>tr>th,.factory-bootstrap-430 .table-condensed>tfoot>tr>td,.factory-bootstrap-430 .table-condensed>tfoot>tr>th,.factory-bootstrap-430 .table-condensed>thead>tr>td,.factory-bootstrap-430 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-430 .table-bordered,.factory-bootstrap-430 .table-bordered>tbody>tr>td,.factory-bootstrap-430 .table-bordered>tbody>tr>th,.factory-bootstrap-430 .table-bordered>tfoot>tr>td,.factory-bootstrap-430 .table-bordered>tfoot>tr>th,.factory-bootstrap-430 .table-bordered>thead>tr>td,.factory-bootstrap-430 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-430 .table-bordered>thead>tr>td,.factory-bootstrap-430 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-430 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-430 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-430 .table-hover>tbody>tr:hover>td,.factory-bootstrap-430 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-430 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-430 table td[class*=col-],.factory-bootstrap-430 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-430 .table>tbody>.active>td,.factory-bootstrap-430 .table>tbody>.active>th,.factory-bootstrap-430 .table>tbody>tr>.active,.factory-bootstrap-430 .table>tfoot>.active>td,.factory-bootstrap-430 .table>tfoot>.active>th,.factory-bootstrap-430 .table>tfoot>tr>.active,.factory-bootstrap-430 .table>thead>.active>td,.factory-bootstrap-430 .table>thead>.active>th,.factory-bootstrap-430 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-430 .table-hover>tbody>.active:hover>td,.factory-bootstrap-430 .table-hover>tbody>.active:hover>th,.factory-bootstrap-430 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-430 .table>tbody>.success>td,.factory-bootstrap-430 .table>tbody>.success>th,.factory-bootstrap-430 .table>tbody>tr>.success,.factory-bootstrap-430 .table>tfoot>.success>td,.factory-bootstrap-430 .table>tfoot>.success>th,.factory-bootstrap-430 .table>tfoot>tr>.success,.factory-bootstrap-430 .table>thead>.success>td,.factory-bootstrap-430 .table>thead>.success>th,.factory-bootstrap-430 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-430 .table-hover>tbody>.success:hover>td,.factory-bootstrap-430 .table-hover>tbody>.success:hover>th,.factory-bootstrap-430 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-430 .table>tbody>.danger>td,.factory-bootstrap-430 .table>tbody>.danger>th,.factory-bootstrap-430 .table>tbody>tr>.danger,.factory-bootstrap-430 .table>tfoot>.danger>td,.factory-bootstrap-430 .table>tfoot>.danger>th,.factory-bootstrap-430 .table>tfoot>tr>.danger,.factory-bootstrap-430 .table>thead>.danger>td,.factory-bootstrap-430 .table>thead>.danger>th,.factory-bootstrap-430 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-430 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-430 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-430 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-430 .table>tbody>.warning>td,.factory-bootstrap-430 .table>tbody>.warning>th,.factory-bootstrap-430 .table>tbody>tr>.warning,.factory-bootstrap-430 .table>tfoot>.warning>td,.factory-bootstrap-430 .table>tfoot>.warning>th,.factory-bootstrap-430 .table>tfoot>tr>.warning,.factory-bootstrap-430 .table>thead>.warning>td,.factory-bootstrap-430 .table>thead>.warning>th,.factory-bootstrap-430 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-430 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-430 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-430 .table-hover>tbody>tr>.warning:hover{background-color:#faf2cc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.factory-bootstrap-430 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-430 legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-430 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-430 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-430 input[type=checkbox],.factory-bootstrap-430 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-430 input[type=file]{display:block}.factory-bootstrap-430 select[multiple],.factory-bootstrap-430 select[size]{height:auto}.factory-bootstrap-430 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-430 input[type=checkbox]:focus,.factory-bootstrap-430 input[type=file]:focus,.factory-bootstrap-430 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-430 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-430 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-430 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-430 .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.factory-bootstrap-430 .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-430 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-430 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-430 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-430 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-430 .form-control[disabled],.factory-bootstrap-430 .form-control[readonly],.factory-bootstrap-430 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-430 textarea.form-control{height:auto}.factory-bootstrap-430 .form-group{margin-bottom:15px}.factory-bootstrap-430 .checkbox,.factory-bootstrap-430 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-430 .checkbox label,.factory-bootstrap-430 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-430 .checkbox input[type=checkbox],.factory-bootstrap-430 .checkbox-inline input[type=checkbox],.factory-bootstrap-430 .radio input[type=radio],.factory-bootstrap-430 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-430 .checkbox+.checkbox,.factory-bootstrap-430 .radio+.radio{margin-top:-5px}.factory-bootstrap-430 .checkbox-inline,.factory-bootstrap-430 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-430 .checkbox-inline+.checkbox-inline,.factory-bootstrap-430 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-430 .checkbox-inline[disabled],.factory-bootstrap-430 .checkbox[disabled],.factory-bootstrap-430 .radio-inline[disabled],.factory-bootstrap-430 .radio[disabled],.factory-bootstrap-430 fieldset[disabled] .checkbox,.factory-bootstrap-430 fieldset[disabled] .checkbox-inline,.factory-bootstrap-430 fieldset[disabled] .radio,.factory-bootstrap-430 fieldset[disabled] .radio-inline,.factory-bootstrap-430 fieldset[disabled] input[type=checkbox],.factory-bootstrap-430 fieldset[disabled] input[type=radio],.factory-bootstrap-430 input[type=checkbox][disabled],.factory-bootstrap-430 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-430 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-430 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-430 textarea.input-sm{height:auto}.factory-bootstrap-430 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-430 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-430 textarea.input-lg{height:auto}.factory-bootstrap-430 .has-warning .checkbox,.factory-bootstrap-430 .has-warning .checkbox-inline,.factory-bootstrap-430 .has-warning .control-label,.factory-bootstrap-430 .has-warning .help-block,.factory-bootstrap-430 .has-warning .radio,.factory-bootstrap-430 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-430 .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-430 .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.factory-bootstrap-430 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-430 .has-error .checkbox,.factory-bootstrap-430 .has-error .checkbox-inline,.factory-bootstrap-430 .has-error .control-label,.factory-bootstrap-430 .has-error .help-block,.factory-bootstrap-430 .has-error .radio,.factory-bootstrap-430 .has-error .radio-inline{color:#a94442}.factory-bootstrap-430 .controls{display:block}.factory-bootstrap-430 .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-430 .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.factory-bootstrap-430 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-430 .has-success .checkbox,.factory-bootstrap-430 .has-success .checkbox-inline,.factory-bootstrap-430 .has-success .control-label,.factory-bootstrap-430 .has-success .help-block,.factory-bootstrap-430 .has-success .radio,.factory-bootstrap-430 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-430 .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-430 .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.factory-bootstrap-430 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-430 .form-control-static{margin-bottom:0}.factory-bootstrap-430 .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;font-weight:400}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline select.form-control{width:auto}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.factory-bootstrap-430 .form-horizontal .checkbox,.factory-bootstrap-430 .form-horizontal .checkbox-inline,.factory-bootstrap-430 .form-horizontal .control-label,.factory-bootstrap-430 .form-horizontal .radio,.factory-bootstrap-430 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-430 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-430 .form-horizontal .checkbox,.factory-bootstrap-430 .form-horizontal .radio{min-height:27px}.factory-bootstrap-430 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-430 .form-horizontal .form-group:after,.factory-bootstrap-430 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-430 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-430 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-430 .btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.factory-bootstrap-430 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-430 .btn{text-decoration:none}.factory-bootstrap-430 .btn:focus,.factory-bootstrap-430 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-430 .btn.disabled,.factory-bootstrap-430 .btn[disabled],.factory-bootstrap-430 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-430 .btn-default.active,.factory-bootstrap-430 .btn-default:active,.factory-bootstrap-430 .btn-default:focus,.factory-bootstrap-430 .btn-default:hover,.factory-bootstrap-430 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-430 .btn-default.active,.factory-bootstrap-430 .btn-default:active,.factory-bootstrap-430 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-430 .btn-default.disabled,.factory-bootstrap-430 .btn-default.disabled.active,.factory-bootstrap-430 .btn-default.disabled:active,.factory-bootstrap-430 .btn-default.disabled:focus,.factory-bootstrap-430 .btn-default.disabled:hover,.factory-bootstrap-430 .btn-default[disabled],.factory-bootstrap-430 .btn-default[disabled].active,.factory-bootstrap-430 .btn-default[disabled]:active,.factory-bootstrap-430 .btn-default[disabled]:focus,.factory-bootstrap-430 .btn-default[disabled]:hover,.factory-bootstrap-430 fieldset[disabled] .btn-default,.factory-bootstrap-430 fieldset[disabled] .btn-default.active,.factory-bootstrap-430 fieldset[disabled] .btn-default:active,.factory-bootstrap-430 fieldset[disabled] .btn-default:focus,.factory-bootstrap-430 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-430 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-430 .btn-primary.active,.factory-bootstrap-430 .btn-primary:active,.factory-bootstrap-430 .btn-primary:focus,.factory-bootstrap-430 .btn-primary:hover,.factory-bootstrap-430 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-430 .btn-primary.active,.factory-bootstrap-430 .btn-primary:active,.factory-bootstrap-430 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-430 .btn-primary.disabled,.factory-bootstrap-430 .btn-primary.disabled.active,.factory-bootstrap-430 .btn-primary.disabled:active,.factory-bootstrap-430 .btn-primary.disabled:focus,.factory-bootstrap-430 .btn-primary.disabled:hover,.factory-bootstrap-430 .btn-primary[disabled],.factory-bootstrap-430 .btn-primary[disabled].active,.factory-bootstrap-430 .btn-primary[disabled]:active,.factory-bootstrap-430 .btn-primary[disabled]:focus,.factory-bootstrap-430 .btn-primary[disabled]:hover,.factory-bootstrap-430 fieldset[disabled] .btn-primary,.factory-bootstrap-430 fieldset[disabled] .btn-primary.active,.factory-bootstrap-430 fieldset[disabled] .btn-primary:active,.factory-bootstrap-430 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-430 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-430 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-430 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-430 .btn-warning.active,.factory-bootstrap-430 .btn-warning:active,.factory-bootstrap-430 .btn-warning:focus,.factory-bootstrap-430 .btn-warning:hover,.factory-bootstrap-430 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-430 .btn-warning.active,.factory-bootstrap-430 .btn-warning:active,.factory-bootstrap-430 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-430 .btn-warning.disabled,.factory-bootstrap-430 .btn-warning.disabled.active,.factory-bootstrap-430 .btn-warning.disabled:active,.factory-bootstrap-430 .btn-warning.disabled:focus,.factory-bootstrap-430 .btn-warning.disabled:hover,.factory-bootstrap-430 .btn-warning[disabled],.factory-bootstrap-430 .btn-warning[disabled].active,.factory-bootstrap-430 .btn-warning[disabled]:active,.factory-bootstrap-430 .btn-warning[disabled]:focus,.factory-bootstrap-430 .btn-warning[disabled]:hover,.factory-bootstrap-430 fieldset[disabled] .btn-warning,.factory-bootstrap-430 fieldset[disabled] .btn-warning.active,.factory-bootstrap-430 fieldset[disabled] .btn-warning:active,.factory-bootstrap-430 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-430 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-430 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-430 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-430 .btn-success.active,.factory-bootstrap-430 .btn-success:active,.factory-bootstrap-430 .btn-success:focus,.factory-bootstrap-430 .btn-success:hover,.factory-bootstrap-430 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-430 .btn-success.active,.factory-bootstrap-430 .btn-success:active,.factory-bootstrap-430 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-430 .btn-success.disabled,.factory-bootstrap-430 .btn-success.disabled.active,.factory-bootstrap-430 .btn-success.disabled:active,.factory-bootstrap-430 .btn-success.disabled:focus,.factory-bootstrap-430 .btn-success.disabled:hover,.factory-bootstrap-430 .btn-success[disabled],.factory-bootstrap-430 .btn-success[disabled].active,.factory-bootstrap-430 .btn-success[disabled]:active,.factory-bootstrap-430 .btn-success[disabled]:focus,.factory-bootstrap-430 .btn-success[disabled]:hover,.factory-bootstrap-430 fieldset[disabled] .btn-success,.factory-bootstrap-430 fieldset[disabled] .btn-success.active,.factory-bootstrap-430 fieldset[disabled] .btn-success:active,.factory-bootstrap-430 fieldset[disabled] .btn-success:focus,.factory-bootstrap-430 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-430 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-430 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-430 .btn-info.active,.factory-bootstrap-430 .btn-info:active,.factory-bootstrap-430 .btn-info:focus,.factory-bootstrap-430 .btn-info:hover,.factory-bootstrap-430 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-430 .btn-info.active,.factory-bootstrap-430 .btn-info:active,.factory-bootstrap-430 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-430 .btn-info.disabled,.factory-bootstrap-430 .btn-info.disabled.active,.factory-bootstrap-430 .btn-info.disabled:active,.factory-bootstrap-430 .btn-info.disabled:focus,.factory-bootstrap-430 .btn-info.disabled:hover,.factory-bootstrap-430 .btn-info[disabled],.factory-bootstrap-430 .btn-info[disabled].active,.factory-bootstrap-430 .btn-info[disabled]:active,.factory-bootstrap-430 .btn-info[disabled]:focus,.factory-bootstrap-430 .btn-info[disabled]:hover,.factory-bootstrap-430 fieldset[disabled] .btn-info,.factory-bootstrap-430 fieldset[disabled] .btn-info.active,.factory-bootstrap-430 fieldset[disabled] .btn-info:active,.factory-bootstrap-430 fieldset[disabled] .btn-info:focus,.factory-bootstrap-430 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-430 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-430 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-430 .btn-link,.factory-bootstrap-430 .btn-link:active,.factory-bootstrap-430 .btn-link[disabled],.factory-bootstrap-430 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-430 .btn-link,.factory-bootstrap-430 .btn-link:active,.factory-bootstrap-430 .btn-link:focus,.factory-bootstrap-430 .btn-link:hover{border-color:transparent}.factory-bootstrap-430 .btn-link:focus,.factory-bootstrap-430 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-430 .btn-link[disabled]:focus,.factory-bootstrap-430 .btn-link[disabled]:hover,.factory-bootstrap-430 fieldset[disabled] .btn-link:focus,.factory-bootstrap-430 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-430 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-430 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-430 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-430 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-430 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-430 input[type=button].btn-block,.factory-bootstrap-430 input[type=reset].btn-block,.factory-bootstrap-430 input[type=submit].btn-block{width:100%}.factory-bootstrap-430 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-430 .fade.in{opacity:1}.factory-bootstrap-430 .collapse{display:none}.factory-bootstrap-430 .collapse.in{display:block}.factory-bootstrap-430 .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular) format('svg')}.factory-bootstrap-430 .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;line-height:1;-moz-osx-font-smoothing:grayscale}.factory-bootstrap-430 .glyphicon:empty{width:1em}.factory-bootstrap-430 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-430 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-430 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-430 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-430 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-430 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-430 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-430 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-430 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-430 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-430 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-430 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-430 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-430 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-430 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-430 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-430 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-430 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-430 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-430 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-430 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-430 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-430 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-430 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-430 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-430 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-430 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-430 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-430 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-430 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-430 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-430 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-430 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-430 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-430 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-430 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-430 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-430 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-430 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-430 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-430 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-430 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-430 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-430 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-430 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-430 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-430 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-430 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-430 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-430 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-430 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-430 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-430 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-430 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-430 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-430 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-430 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-430 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-430 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-430 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-430 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-430 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-430 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-430 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-430 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-430 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-430 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-430 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-430 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-430 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-430 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-430 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-430 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-430 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-430 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-430 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-430 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-430 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-430 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-430 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-430 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-430 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-430 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-430 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-430 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-430 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-430 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-430 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-430 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-430 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-430 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-430 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-430 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-430 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-430 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-430 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-430 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-430 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-430 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-430 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-430 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-430 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-430 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-430 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-430 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-430 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-430 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-430 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-430 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-430 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-430 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-430 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-430 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-430 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-430 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-430 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-430 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-430 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-430 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-430 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-430 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-430 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-430 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-430 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-430 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-430 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-430 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-430 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-430 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-430 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-430 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-430 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-430 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-430 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-430 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-430 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-430 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-430 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-430 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-430 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-430 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-430 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-430 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-430 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-430 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-430 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-430 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-430 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-430 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-430 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-430 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-430 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-430 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-430 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-430 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-430 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-430 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-430 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-430 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-430 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-430 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-430 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-430 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-430 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-430 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-430 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-430 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-430 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-430 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-430 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-430 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-430 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-430 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-430 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-430 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-430 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-430 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-430 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-430 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-430 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-430 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-430 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-430 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-430 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-430 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-430 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-430 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-430 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-430 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-430 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-430 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-430 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-430 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-430 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-430 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-430 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-430 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-430 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-430 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-430 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-430 .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.factory-bootstrap-430 .dropdown{position:relative}.factory-bootstrap-430 .dropdown-toggle:focus{outline:0}.factory-bootstrap-430 .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.factory-bootstrap-430 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-430 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-430 .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.factory-bootstrap-430 .dropdown-menu>li>a:focus,.factory-bootstrap-430 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-430 .dropdown-menu>.active>a,.factory-bootstrap-430 .dropdown-menu>.active>a:focus,.factory-bootstrap-430 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-430 .dropdown-menu>.disabled>a,.factory-bootstrap-430 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-430 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-430 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-430 .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-430 .open>.dropdown-menu{display:block}.factory-bootstrap-430 .open>a{outline:0}.factory-bootstrap-430 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-430 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-430 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-430 .dropup .caret,.factory-bootstrap-430 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-430 .dropup .dropdown-menu,.factory-bootstrap-430 .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.factory-bootstrap-430 .btn-group,.factory-bootstrap-430 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-430 .btn-group-vertical>.btn,.factory-bootstrap-430 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-430 .btn-group-vertical>.btn.active,.factory-bootstrap-430 .btn-group-vertical>.btn:active,.factory-bootstrap-430 .btn-group-vertical>.btn:focus,.factory-bootstrap-430 .btn-group-vertical>.btn:hover,.factory-bootstrap-430 .btn-group>.btn.active,.factory-bootstrap-430 .btn-group>.btn:active,.factory-bootstrap-430 .btn-group>.btn:focus,.factory-bootstrap-430 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-430 .btn-group-vertical>.btn:focus,.factory-bootstrap-430 .btn-group>.btn:focus{outline:0}.factory-bootstrap-430 .btn-group .btn+.btn,.factory-bootstrap-430 .btn-group .btn+.btn-group,.factory-bootstrap-430 .btn-group .btn-group+.btn,.factory-bootstrap-430 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-430 .btn-toolbar:after,.factory-bootstrap-430 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-430 .btn-toolbar:after{clear:both}.factory-bootstrap-430 .btn-toolbar .btn-group{float:left}.factory-bootstrap-430 .btn-toolbar>.btn+.btn,.factory-bootstrap-430 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-430 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-430 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-430 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-430 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-430 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-430 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-430 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-430 .btn-group>.btn-group{float:left}.factory-bootstrap-430 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-430 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-430 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-430 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-430 .btn-group .dropdown-toggle:active,.factory-bootstrap-430 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-430 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-430 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-430 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-430 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-430 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-430 .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.factory-bootstrap-430 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-430 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-430 .btn-group .btn.active.value{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-430 .btn .caret{margin-left:0}.factory-bootstrap-430 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-430 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-430 .btn-group-vertical>.btn,.factory-bootstrap-430 .btn-group-vertical>.btn-group,.factory-bootstrap-430 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-430 .btn-group-vertical>.btn-group:after,.factory-bootstrap-430 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-430 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-430 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-430 .btn-group-vertical>.btn+.btn,.factory-bootstrap-430 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-430 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-430 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-430 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-430 .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-430 .btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.factory-bootstrap-430 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-430 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-430 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-430 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-430 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-430 .btn-group-justified>.btn,.factory-bootstrap-430 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-430 .btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.factory-bootstrap-430 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-430 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-430 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-430 .input-group-lg>.form-control,.factory-bootstrap-430 .input-group-lg>.input-group-addon,.factory-bootstrap-430 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-430 select.input-group-lg>.form-control,.factory-bootstrap-430 select.input-group-lg>.input-group-addon,.factory-bootstrap-430 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-430 textarea.input-group-lg>.form-control,.factory-bootstrap-430 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-430 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-430 .input-group-sm>.form-control,.factory-bootstrap-430 .input-group-sm>.input-group-addon,.factory-bootstrap-430 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-430 select.input-group-sm>.form-control,.factory-bootstrap-430 select.input-group-sm>.input-group-addon,.factory-bootstrap-430 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-430 textarea.input-group-sm>.form-control,.factory-bootstrap-430 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-430 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-430 .input-group .form-control,.factory-bootstrap-430 .input-group-addon,.factory-bootstrap-430 .input-group-btn{display:table-cell}.factory-bootstrap-430 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-430 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-430 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-430 .input-group-addon,.factory-bootstrap-430 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-430 .input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-430 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-430 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-430 .input-group-addon input[type=checkbox],.factory-bootstrap-430 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-430 .input-group .form-control:first-child,.factory-bootstrap-430 .input-group-addon:first-child,.factory-bootstrap-430 .input-group-btn:first-child>.btn,.factory-bootstrap-430 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-430 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-430 .input-group-addon:first-child{border-right:0}.factory-bootstrap-430 .input-group .form-control:last-child,.factory-bootstrap-430 .input-group-addon:last-child,.factory-bootstrap-430 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-430 .input-group-btn:last-child>.btn,.factory-bootstrap-430 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-430 .input-group-addon:last-child{border-left:0}.factory-bootstrap-430 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-430 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-430 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-430 .input-group-btn>.btn{position:relative}.factory-bootstrap-430 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-430 .input-group-btn>.btn:active,.factory-bootstrap-430 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-430 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-430 .nav:after,.factory-bootstrap-430 .nav:before{display:table;content:" "}.factory-bootstrap-430 .nav:after{clear:both}.factory-bootstrap-430 .nav>li{position:relative;display:block}.factory-bootstrap-430 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-430 .nav>li>a:focus,.factory-bootstrap-430 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-430 .nav>li.disabled>a{color:#999}.factory-bootstrap-430 .nav>li.disabled>a:focus,.factory-bootstrap-430 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-430 .nav .open>a,.factory-bootstrap-430 .nav .open>a:focus,.factory-bootstrap-430 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-430 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-430 .nav>li>a>img{max-width:none}.factory-bootstrap-430 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-430 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-430 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-430 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-430 .nav-tabs>li.active>a,.factory-bootstrap-430 .nav-tabs>li.active>a:focus,.factory-bootstrap-430 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-430 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-430 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-430 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-430 .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-430 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-430 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-430 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-430 .nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-430 .nav-pills>li{float:left}.factory-bootstrap-430 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-430 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-430 .nav-pills>li.active>a,.factory-bootstrap-430 .nav-pills>li.active>a:focus,.factory-bootstrap-430 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-430 .nav-stacked>li{float:none}.factory-bootstrap-430 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-430 .nav-justified{width:100%}.factory-bootstrap-430 .nav-justified>li{float:none}.factory-bootstrap-430 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-430 .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-430 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-430 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-430 .nav-tabs-justified>.active>a,.factory-bootstrap-430 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-430 .nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-430 .tab-content>.tab-pane{display:none}.factory-bootstrap-430 .tab-content>.active{display:block}.factory-bootstrap-430 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-430 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-430 .navbar:after,.factory-bootstrap-430 .navbar:before{display:table;content:" "}.factory-bootstrap-430 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-430 .navbar-header:after,.factory-bootstrap-430 .navbar-header:before{display:table;content:" "}.factory-bootstrap-430 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-430 .navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.factory-bootstrap-430 .navbar-collapse:after,.factory-bootstrap-430 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-430 .navbar-collapse:after{clear:both}.factory-bootstrap-430 .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.factory-bootstrap-430 .container>.navbar-collapse,.factory-bootstrap-430 .container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.factory-bootstrap-430 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-430 .navbar-fixed-bottom,.factory-bootstrap-430 .navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.factory-bootstrap-430 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-430 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-430 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-430 .navbar-brand:focus,.factory-bootstrap-430 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-430 .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.factory-bootstrap-430 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-430 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-430 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-430 .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.factory-bootstrap-430 .navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form select.form-control{width:auto}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.factory-bootstrap-430 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-430 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-430 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-430 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-430 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-430 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-430 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-430 .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.factory-bootstrap-430 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-430 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-430 .navbar-default .navbar-brand:focus,.factory-bootstrap-430 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-430 .navbar-default .navbar-nav>li>a,.factory-bootstrap-430 .navbar-default .navbar-text{color:#777}.factory-bootstrap-430 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-430 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-430 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-430 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-430 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-430 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-430 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-430 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-430 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-430 .navbar-default .navbar-toggle:focus,.factory-bootstrap-430 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-430 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-430 .navbar-default .navbar-collapse,.factory-bootstrap-430 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-430 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-430 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-430 .navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.factory-bootstrap-430 .navbar-default .navbar-link{color:#777}.factory-bootstrap-430 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-430 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-430 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-430 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-430 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-430 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-430 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-430 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-430 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-430 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-430 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-430 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-430 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-430 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-430 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-430 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-430 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-430 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-430 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-430 .navbar-inverse .navbar-collapse,.factory-bootstrap-430 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-430 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-430 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-430 .navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.factory-bootstrap-430 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-430 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-430 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-430 .breadcrumb>li{display:inline-block}.factory-bootstrap-430 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-430 .breadcrumb>.active{color:#999}.factory-bootstrap-430 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-430 .pagination>li{display:inline}.factory-bootstrap-430 .pagination>li>a,.factory-bootstrap-430 .pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-430 .pagination>li:first-child>a,.factory-bootstrap-430 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-430 .pagination>li:last-child>a,.factory-bootstrap-430 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-430 .pagination>li>a:focus,.factory-bootstrap-430 .pagination>li>a:hover,.factory-bootstrap-430 .pagination>li>span:focus,.factory-bootstrap-430 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-430 .pagination>.active>a,.factory-bootstrap-430 .pagination>.active>a:focus,.factory-bootstrap-430 .pagination>.active>a:hover,.factory-bootstrap-430 .pagination>.active>span,.factory-bootstrap-430 .pagination>.active>span:focus,.factory-bootstrap-430 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-430 .pagination>.disabled>a,.factory-bootstrap-430 .pagination>.disabled>a:focus,.factory-bootstrap-430 .pagination>.disabled>a:hover,.factory-bootstrap-430 .pagination>.disabled>span,.factory-bootstrap-430 .pagination>.disabled>span:focus,.factory-bootstrap-430 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-430 .pagination-lg>li>a,.factory-bootstrap-430 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-430 .pagination-lg>li:first-child>a,.factory-bootstrap-430 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-430 .pagination-lg>li:last-child>a,.factory-bootstrap-430 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-430 .pagination-sm>li>a,.factory-bootstrap-430 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-430 .pagination-sm>li:first-child>a,.factory-bootstrap-430 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-430 .pagination-sm>li:last-child>a,.factory-bootstrap-430 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-430 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-430 .pager:after,.factory-bootstrap-430 .pager:before{display:table;content:" "}.factory-bootstrap-430 .pager:after{clear:both}.factory-bootstrap-430 .pager li{display:inline}.factory-bootstrap-430 .pager li>a,.factory-bootstrap-430 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-430 .pager li>a:focus,.factory-bootstrap-430 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-430 .pager .next>a,.factory-bootstrap-430 .pager .next>span{float:right}.factory-bootstrap-430 .pager .previous>a,.factory-bootstrap-430 .pager .previous>span{float:left}.factory-bootstrap-430 .pager .disabled>a,.factory-bootstrap-430 .pager .disabled>a:focus,.factory-bootstrap-430 .pager .disabled>a:hover,.factory-bootstrap-430 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-430 .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.factory-bootstrap-430 .label[href]:focus,.factory-bootstrap-430 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-430 .label:empty{display:none}.factory-bootstrap-430 .btn .label{position:relative;top:-1px}.factory-bootstrap-430 .label-default{background-color:#999}.factory-bootstrap-430 .label-default[href]:focus,.factory-bootstrap-430 .label-default[href]:hover{background-color:gray}.factory-bootstrap-430 .label-primary{background-color:#428bca}.factory-bootstrap-430 .label-primary[href]:focus,.factory-bootstrap-430 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-430 .label-success{background-color:#5cb85c}.factory-bootstrap-430 .label-success[href]:focus,.factory-bootstrap-430 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-430 .label-info{background-color:#5bc0de}.factory-bootstrap-430 .label-info[href]:focus,.factory-bootstrap-430 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-430 .label-warning{background-color:#f0ad4e}.factory-bootstrap-430 .label-warning[href]:focus,.factory-bootstrap-430 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-430 .label-danger{background-color:#d9534f}.factory-bootstrap-430 .label-danger[href]:focus,.factory-bootstrap-430 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-430 .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.factory-bootstrap-430 .badge:empty{display:none}.factory-bootstrap-430 .btn .badge{position:relative;top:-1px}.factory-bootstrap-430 a.badge:focus,.factory-bootstrap-430 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-430 .nav-pills>.active>a>.badge,.factory-bootstrap-430 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-430 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-430 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-430 .jumbotron .h1,.factory-bootstrap-430 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-430 .jumbotron p{line-height:1.4}.factory-bootstrap-430 .container .jumbotron{border-radius:6px}.factory-bootstrap-430 .jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.factory-bootstrap-430 .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-430 .thumbnail a>img,.factory-bootstrap-430 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-430 a.thumbnail.active,.factory-bootstrap-430 a.thumbnail:focus,.factory-bootstrap-430 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-430 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-430 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-430 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-430 .alert .alert-link{font-weight:700}.factory-bootstrap-430 .alert>p,.factory-bootstrap-430 .alert>ul{margin-bottom:0}.factory-bootstrap-430 .alert>p+p{margin-top:5px}.factory-bootstrap-430 .alert-dismissable{padding-right:35px}.factory-bootstrap-430 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-430 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-430 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-430 .alert-info .alert-link{color:#245269}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.factory-bootstrap-430 .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.factory-bootstrap-430 .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#2ea2cc;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.factory-bootstrap-430 .progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,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);background-image:linear-gradient(45deg,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);background-size:40px 40px}.factory-bootstrap-430 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-430 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-430 .progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,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);background-image:linear-gradient(45deg,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)}.factory-bootstrap-430 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-430 .progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,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);background-image:linear-gradient(45deg,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)}.factory-bootstrap-430 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-430 .progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,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);background-image:linear-gradient(45deg,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)}.factory-bootstrap-430 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-430 .progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,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);background-image:linear-gradient(45deg,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)}.factory-bootstrap-430 .media,.factory-bootstrap-430 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-430 .media,.factory-bootstrap-430 .media .media{margin-top:15px}.factory-bootstrap-430 .media:first-child{margin-top:0}.factory-bootstrap-430 .media-object{display:block}.factory-bootstrap-430 .media-heading{margin:0 0 5px}.factory-bootstrap-430 .media>.pull-left{margin-right:10px}.factory-bootstrap-430 .media>.pull-right{margin-left:10px}.factory-bootstrap-430 .media-list{padding-left:0;list-style:none}.factory-bootstrap-430 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-430 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-430 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-430 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-430 .list-group-item>.badge{float:right}.factory-bootstrap-430 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-430 a.list-group-item{color:#555}.factory-bootstrap-430 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-430 a.list-group-item:focus,.factory-bootstrap-430 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-430 a.list-group-item.active,.factory-bootstrap-430 a.list-group-item.active:focus,.factory-bootstrap-430 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-430 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-430 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-430 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-430 a.list-group-item.active .list-group-item-text,.factory-bootstrap-430 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-430 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-430 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-430 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-430 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-430 .panel-body{padding:15px}.factory-bootstrap-430 .panel-body:after,.factory-bootstrap-430 .panel-body:before{display:table;content:" "}.factory-bootstrap-430 .panel-body:after{clear:both}.factory-bootstrap-430 .panel>.list-group{margin-bottom:0}.factory-bootstrap-430 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-430 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-430 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-430 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-430 .panel>.table,.factory-bootstrap-430 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-430 .panel>.panel-body+.table,.factory-bootstrap-430 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-430 .panel>.table>tbody:first-child td,.factory-bootstrap-430 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-430 .panel>.table-bordered,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-430 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-430 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-430 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-430 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-430 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-430 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-430 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-430 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-430 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-430 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-430 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-430 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-430 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-430 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-430 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-430 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-430 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-430 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-430 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-430 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-430 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-430 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-430 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-430 .panel-title>a{color:inherit}.factory-bootstrap-430 .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.factory-bootstrap-430 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-430 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-430 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-430 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-430 .panel-group .panel-footer{border-top:0}.factory-bootstrap-430 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-430 .panel-default{border-color:#ddd}.factory-bootstrap-430 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-430 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-430 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-430 .panel-primary{border-color:#428bca}.factory-bootstrap-430 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-430 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-430 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-430 .panel-success{border-color:#d6e9c6}.factory-bootstrap-430 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-430 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-430 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-430 .panel-warning{border-color:#faebcc}.factory-bootstrap-430 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-430 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-430 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-430 .panel-danger{border-color:#ebccd1}.factory-bootstrap-430 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-430 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-430 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-430 .panel-info{border-color:#bce8f1}.factory-bootstrap-430 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-430 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-430 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-430 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-430 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-430 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-430 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-430 .close{float:right;font-size:14px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.3;filter:alpha(opacity=30)}.factory-bootstrap-430 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-430 .close:focus,.factory-bootstrap-430 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-430 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-430 .modal-open{overflow:hidden}.factory-bootstrap-430 .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll;width:auto;margin-left:0;background-color:transparent;border:0}.factory-bootstrap-430 .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.factory-bootstrap-430 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-430 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-430 .modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box}.factory-bootstrap-430 .modal-backdrop,.factory-bootstrap-430-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-430 .modal-backdrop.fade,.factory-bootstrap-430-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-430 .modal-backdrop.in,.factory-bootstrap-430-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-430 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-430 .modal-header .close{margin-top:-2px}.factory-bootstrap-430 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-430 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-430 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-430 .modal-footer:after,.factory-bootstrap-430 .modal-footer:before{display:table;content:" "}.factory-bootstrap-430 .modal-footer:after{clear:both}.factory-bootstrap-430 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-430 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-430 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-430 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-430 .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}}.factory-bootstrap-430 .tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.factory-bootstrap-430 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-430 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-430 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-430 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-430 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-430 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-430 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-430 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-430 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-430 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-430 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-430 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-430 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-430 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-430 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-430 .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);background-clip:padding-box}.factory-bootstrap-430 .popover.top{margin-top:-10px}.factory-bootstrap-430 .popover.right{margin-left:10px}.factory-bootstrap-430 .popover.bottom{margin-top:10px}.factory-bootstrap-430 .popover.left{margin-left:-10px}.factory-bootstrap-430 .popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.factory-bootstrap-430 .popover-content{padding:9px 14px}.factory-bootstrap-430 .popover .arrow,.factory-bootstrap-430 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-430 .popover .arrow{border-width:11px}.factory-bootstrap-430 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-430 .popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.factory-bootstrap-430 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-430 .popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.factory-bootstrap-430 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-430 .popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.factory-bootstrap-430 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-430 .popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0}.factory-bootstrap-430 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-430 .carousel{position:relative}.factory-bootstrap-430 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-430 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-430 .carousel-inner>.item>a>img,.factory-bootstrap-430 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-430 .carousel-inner>.active,.factory-bootstrap-430 .carousel-inner>.next,.factory-bootstrap-430 .carousel-inner>.prev{display:block}.factory-bootstrap-430 .carousel-inner>.active{left:0}.factory-bootstrap-430 .carousel-inner>.next,.factory-bootstrap-430 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-430 .carousel-inner>.next{left:100%}.factory-bootstrap-430 .carousel-inner>.prev{left:-100%}.factory-bootstrap-430 .carousel-inner>.next.left,.factory-bootstrap-430 .carousel-inner>.prev.right{left:0}.factory-bootstrap-430 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-430 .carousel-inner>.active.right{left:100%}.factory-bootstrap-430 .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-430 .carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.factory-bootstrap-430 .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.factory-bootstrap-430 .carousel-control:focus,.factory-bootstrap-430 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-430 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-430 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-430 .carousel-control .icon-next,.factory-bootstrap-430 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-430 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-430 .carousel-control .icon-prev{left:50%}.factory-bootstrap-430 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-430 .carousel-control .icon-next{right:50%}.factory-bootstrap-430 .carousel-control .icon-next,.factory-bootstrap-430 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-430 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-430 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-430 .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.factory-bootstrap-430 .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.factory-bootstrap-430 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-430 .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.factory-bootstrap-430 .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.factory-bootstrap-430 .clearfix:after,.factory-bootstrap-430 .clearfix:before{display:table;content:" "}.factory-bootstrap-430 .clearfix:after{clear:both}.factory-bootstrap-430 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-430 .pull-right{float:right!important}.factory-bootstrap-430 .pull-left{float:left!important}.factory-bootstrap-430 .hide{display:none!important}.factory-bootstrap-430 .show{display:block!important}.factory-bootstrap-430 .invisible{visibility:hidden}.factory-bootstrap-430 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-430 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-430 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-430 .visible-lg,.factory-bootstrap-430 .visible-md,.factory-bootstrap-430 .visible-sm,.factory-bootstrap-430 .visible-xs,.factory-bootstrap-430 td.visible-lg,.factory-bootstrap-430 td.visible-md,.factory-bootstrap-430 td.visible-sm,.factory-bootstrap-430 td.visible-xs,.factory-bootstrap-430 th.visible-lg,.factory-bootstrap-430 th.visible-md,.factory-bootstrap-430 th.visible-sm,.factory-bootstrap-430 th.visible-xs,.factory-bootstrap-430 tr.visible-lg,.factory-bootstrap-430 tr.visible-md,.factory-bootstrap-430 tr.visible-sm,.factory-bootstrap-430 tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}table.visible-xs.visible-sm{display:table}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}table.visible-xs.visible-md{display:table}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}table.visible-xs.visible-lg{display:table}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}table.visible-sm.visible-xs{display:table}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}table.visible-sm.visible-md{display:table}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}table.visible-sm.visible-lg{display:table}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-md.visible-xs{display:block!important}table.visible-md.visible-xs{display:table}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}table.visible-md.visible-sm{display:table}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}table.visible-md.visible-lg{display:table}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}table.visible-lg.visible-xs{display:table}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}table.visible-lg.visible-sm{display:table}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}table.visible-lg.visible-md{display:table}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.factory-bootstrap-430 .hidden-xs{display:block!important}.factory-bootstrap-430 table.hidden-xs{display:table}.factory-bootstrap-430 tr.hidden-xs{display:table-row!important}.factory-bootstrap-430 td.hidden-xs,.factory-bootstrap-430 th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.factory-bootstrap-430 .hidden-sm{display:block!important}.factory-bootstrap-430 table.hidden-sm{display:table}.factory-bootstrap-430 tr.hidden-sm{display:table-row!important}.factory-bootstrap-430 td.hidden-sm,.factory-bootstrap-430 th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.factory-bootstrap-430 .hidden-md{display:block!important}.factory-bootstrap-430 table.hidden-md{display:table}.factory-bootstrap-430 tr.hidden-md{display:table-row!important}.factory-bootstrap-430 td.hidden-md,.factory-bootstrap-430 th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.factory-bootstrap-430 .hidden-lg{display:block!important}.factory-bootstrap-430 table.hidden-lg{display:table}.factory-bootstrap-430 tr.hidden-lg{display:table-row!important}.factory-bootstrap-430 td.hidden-lg,.factory-bootstrap-430 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-430 .hidden-lg.hidden-xs,.factory-bootstrap-430 td.hidden-lg.hidden-xs,.factory-bootstrap-430 th.hidden-lg.hidden-xs,.factory-bootstrap-430 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-430 .hidden-lg.hidden-sm,.factory-bootstrap-430 td.hidden-lg.hidden-sm,.factory-bootstrap-430 th.hidden-lg.hidden-sm,.factory-bootstrap-430 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-430 .hidden-lg.hidden-md,.factory-bootstrap-430 td.hidden-lg.hidden-md,.factory-bootstrap-430 th.hidden-lg.hidden-md,.factory-bootstrap-430 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-430 .hidden-lg,.factory-bootstrap-430 td.hidden-lg,.factory-bootstrap-430 th.hidden-lg,.factory-bootstrap-430 tr.hidden-lg{display:none!important}}.factory-bootstrap-430 .visible-print,.factory-bootstrap-430 td.visible-print,.factory-bootstrap-430 th.visible-print,.factory-bootstrap-430 tr.visible-print{display:none!important}@media print{.factory-bootstrap-430 .visible-print{display:block!important}.factory-bootstrap-430 table.visible-print{display:table}.factory-bootstrap-430 tr.visible-print{display:table-row!important}.factory-bootstrap-430 td.visible-print,.factory-bootstrap-430 th.visible-print{display:table-cell!important}.factory-bootstrap-430 .hidden-print,.factory-bootstrap-430 td.hidden-print,.factory-bootstrap-430 th.hidden-print,.factory-bootstrap-430 tr.hidden-print{display:none!important}}/*!
12
  * Factory Default Bootstrap Theme
13
  *
14
  * The code is based on Bootstrap v2.1.1
22
  *
23
  * @package factory-bootstrap
24
  * @since 1.0.0
25
+ */.factory-bootstrap-430 .btn-danger,.factory-bootstrap-430 .btn-default,.factory-bootstrap-430 .btn-info,.factory-bootstrap-430 .btn-primary,.factory-bootstrap-430 .btn-success,.factory-bootstrap-430 .btn-warning{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-430 .btn-danger.active,.factory-bootstrap-430 .btn-danger:active,.factory-bootstrap-430 .btn-default.active,.factory-bootstrap-430 .btn-default:active,.factory-bootstrap-430 .btn-info.active,.factory-bootstrap-430 .btn-info:active,.factory-bootstrap-430 .btn-primary.active,.factory-bootstrap-430 .btn-primary:active,.factory-bootstrap-430 .btn-success.active,.factory-bootstrap-430 .btn-success:active,.factory-bootstrap-430 .btn-warning.active,.factory-bootstrap-430 .btn-warning:active{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.factory-bootstrap-430 .btn.active,.factory-bootstrap-430 .btn:active{background-image:none}.factory-bootstrap-430 .btn-default{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.factory-bootstrap-430 .btn-default.active,.factory-bootstrap-430 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-430 .btn-gold{font-weight:700;padding:7px 12px;cursor:pointer;line-height:16px;display:inline-block;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;box-shadow:#e3e3e3 0 1px 1px;-moz-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);-webkit-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);text-shadow:1px 1px 0 #ffe8b2;color:#7c5d1b;border:1px solid #d6a437;background:#feeb80}.factory-bootstrap-430 .btn-gold:focus,.factory-bootstrap-430 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-430 .btn-gold.active,.factory-bootstrap-430 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-430 .btn-primary{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.factory-bootstrap-430 .btn-primary:focus,.factory-bootstrap-430 .btn-primary:hover{background:#1e8cbe;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.factory-bootstrap-430 .btn-primary.active,.factory-bootstrap-430 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-430 .btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-430 .btn-success:focus,.factory-bootstrap-430 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-430 .btn-success.active,.factory-bootstrap-430 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-430 .btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-430 .btn-warning:focus,.factory-bootstrap-430 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-430 .btn-warning.active,.factory-bootstrap-430 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-430 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-430 .btn-danger.active,.factory-bootstrap-430 .btn-danger:active,.factory-bootstrap-430 .btn-danger:focus,.factory-bootstrap-430 .btn-danger:hover,.factory-bootstrap-430 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-430 .btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-430 .btn-info:focus,.factory-bootstrap-430 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-430 .btn-info.active,.factory-bootstrap-430 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-430 .img-thumbnail,.factory-bootstrap-430 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-430 .dropdown-menu>li>a:focus,.factory-bootstrap-430 .dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-430 .dropdown-menu>.active>a,.factory-bootstrap-430 .dropdown-menu>.active>a:focus,.factory-bootstrap-430 .dropdown-menu>.active>a:hover{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-430 .navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.factory-bootstrap-430 .navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.factory-bootstrap-430 .navbar-brand,.factory-bootstrap-430 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-430 .navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-430 .navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.factory-bootstrap-430 .navbar-inverse .navbar-brand,.factory-bootstrap-430 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-430 .navbar-fixed-bottom,.factory-bootstrap-430 .navbar-fixed-top,.factory-bootstrap-430 .navbar-static-top{border-radius:0}.factory-bootstrap-430 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-430 .alert .actions{padding-top:10px}.factory-bootstrap-430 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-430 .alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0)}.factory-bootstrap-430 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-430 .alert-normal,.factory-bootstrap-430 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-430 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-430 .alert-danger a:not(.btn),.factory-bootstrap-430 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-430 .progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.factory-bootstrap-430 .progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.factory-bootstrap-430 .progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.factory-bootstrap-430 .progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.factory-bootstrap-430 .progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.factory-bootstrap-430 .progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.factory-bootstrap-430 .list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-430 .list-group-item.active,.factory-bootstrap-430 .list-group-item.active:focus,.factory-bootstrap-430 .list-group-item.active:hover{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0)}.factory-bootstrap-430 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-430 .panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-430 .panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-430 .panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.factory-bootstrap-430 .panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.factory-bootstrap-430 .panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.factory-bootstrap-430 .panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.factory-bootstrap-430 .well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}.factory-bootstrap-430 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-430 .factory-hidden{display:none}.factory-bootstrap-430 .factory-ajax-loader{width:25px;height:25px;background:url(../assets/images/loader-sm-tr.gif)}.factory-control-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:5px;padding:4px 10px 3px;max-width:500px;display:inline-block}.factory-control-error i{margin:0 7px 0 1px}
libs/factory/bootstrap/assets/css-min/bootstrap.datetimepicker.min.css CHANGED
@@ -12,4 +12,4 @@
12
  * Datetimepicker for Bootstrap 3
13
  * version : 4.17.47
14
  * https://github.com/Eonasdan/bootstrap-datetimepicker/
15
- */.factory-bootstrap-426 .bootstrap-datetimepicker-widget{list-style:none}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu:after,.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);top:-7px;left:7px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);bottom:-7px;left:6px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .list-unstyled{margin:0}.factory-bootstrap-426 .bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.factory-bootstrap-426 .bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .timepicker-hour,.factory-bootstrap-426 .bootstrap-datetimepicker-widget .timepicker-minute,.factory-bootstrap-426 .bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.factory-bootstrap-426 .bootstrap-datetimepicker-widget button[data-action]{padding:6px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Hours"}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Minutes"}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Hours"}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Minutes"}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .btn[data-action=showHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Hours"}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Minutes"}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle AM/PM"}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .btn[data-action=clear]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Clear the picker"}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .btn[data-action=today]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Set the date to today"}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .picker-switch{text-align:center}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle Date and Time Screens"}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table{width:100%;margin:0}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table th.disabled,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Previous Month"}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Next Month"}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.day:hover,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.hour:hover,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.minute:hover,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.new,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.old{color:#777}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.today{position:relative}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.active,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.disabled,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td span:hover{background:#eee}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td span.old{color:#777}.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td span.disabled,.factory-bootstrap-426 .bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.factory-bootstrap-426 .bootstrap-datetimepicker-widget.wider{width:21em}.factory-bootstrap-426 .bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.factory-bootstrap-426 .input-group.date .input-group-addon{cursor:pointer}.factory-bootstrap-426 .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}
12
  * Datetimepicker for Bootstrap 3
13
  * version : 4.17.47
14
  * https://github.com/Eonasdan/bootstrap-datetimepicker/
15
+ */.factory-bootstrap-430 .bootstrap-datetimepicker-widget{list-style:none}.factory-bootstrap-430 .bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.factory-bootstrap-430 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.factory-bootstrap-430 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.factory-bootstrap-430 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.factory-bootstrap-430 .bootstrap-datetimepicker-widget.dropdown-menu:after,.factory-bootstrap-430 .bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.factory-bootstrap-430 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);top:-7px;left:7px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);bottom:-7px;left:6px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .list-unstyled{margin:0}.factory-bootstrap-430 .bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.factory-bootstrap-430 .bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .timepicker-hour,.factory-bootstrap-430 .bootstrap-datetimepicker-widget .timepicker-minute,.factory-bootstrap-430 .bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.factory-bootstrap-430 .bootstrap-datetimepicker-widget button[data-action]{padding:6px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Hours"}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Minutes"}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Hours"}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Minutes"}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .btn[data-action=showHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Hours"}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Minutes"}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle AM/PM"}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .btn[data-action=clear]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Clear the picker"}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .btn[data-action=today]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Set the date to today"}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .picker-switch{text-align:center}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle Date and Time Screens"}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table{width:100%;margin:0}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td,.factory-bootstrap-430 .bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table th.disabled,.factory-bootstrap-430 .bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Previous Month"}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Next Month"}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.day:hover,.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.hour:hover,.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.minute:hover,.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.new,.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.old{color:#777}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.today{position:relative}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.active,.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.disabled,.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td span:hover{background:#eee}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td span.old{color:#777}.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td span.disabled,.factory-bootstrap-430 .bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-430 .bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.factory-bootstrap-430 .bootstrap-datetimepicker-widget.wider{width:21em}.factory-bootstrap-430 .bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.factory-bootstrap-430 .input-group.date .input-group-addon{cursor:pointer}.factory-bootstrap-430 .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}
libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .btn-primary{background:#a3b745;border-color:#839237;color:#fff;-webkit-box-shadow:inset 0 1px 0 #c0cd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #c0cd7b,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-426 .btn-primary:focus,.factory-bootstrap-426 .btn-primary:hover{background:#89993a;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 1px 0 #b7c669,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #b7c669,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-426 .btn-primary:active{background:#89993a;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-426 .btn-primary:disabled,.factory-bootstrap-426 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-426 .btn-group .btn.active.value{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.factory-bootstrap-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .btn-primary{background:#a3b745;border-color:#839237;color:#fff;-webkit-box-shadow:inset 0 1px 0 #c0cd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #c0cd7b,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-430 .btn-primary:focus,.factory-bootstrap-430 .btn-primary:hover{background:#89993a;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 1px 0 #b7c669,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #b7c669,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-430 .btn-primary:active{background:#89993a;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-430 .btn-primary:disabled,.factory-bootstrap-430 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-430 .btn-group .btn.active.value{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.factory-bootstrap-430 .pagination>.active>a,.factory-bootstrap-430 .pagination>.active>a:focus,.factory-bootstrap-430 .pagination>.active>a:hover,.factory-bootstrap-430 .pagination>.active>span,.factory-bootstrap-430 .pagination>.active>span:focus,.factory-bootstrap-430 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-426 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-426 .factory-form-group .factory-hint-icon{display:block;width:16px;height:16px;line-height:13px;padding:0;font-size:11px;text-align:center;position:absolute;top:-5px;right:-3px;color:#fff;background:#E91E63;border-radius:3px}.factory-bootstrap-426 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-426 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-426 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-426 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-426 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-426 .factory-form-group legend+.control-group{margin-top:0}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-430 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-430 .factory-form-group .factory-hint-icon{display:block;width:16px;height:16px;line-height:13px;padding:0;font-size:11px;text-align:center;position:absolute;top:-5px;right:-3px;color:#fff;background:#E91E63;border-radius:3px}.factory-bootstrap-430 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-430 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-430 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-430 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-430 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-430 .factory-form-group legend+.control-group{margin-top:0}
libs/factory/bootstrap/assets/css-min/bootstrap.form-metabox.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-form-metabox{padding:15px 10px 10px}.factory-form-metabox .control-group:last-child{margin-bottom:0}#side-sortables .factory-bootstrap-426 .control-label{float:left;width:100%;text-align:left;position:relative;top:1px}#side-sortables .factory-bootstrap-426 .control-icon{float:left;margin:0 6px 0 0}#side-sortables .factory-bootstrap-426 input{float:right;position:relative;top:-25px}#side-sortables .factory-bootstrap-426 .col-sm-10{margin:0;width:100%}#side-sortables .factory-bootstrap-426 .form-group{float:none;width:auto;overflow:auto;margin-bottom:0;border-top:1px solid #f7f7f7;padding-top:15px;margin-top:15px}#side-sortables .factory-bootstrap-426 .form-group:first-child{border-top:0;padding-top:0;margin-top:0}
8
  */
9
 
10
 
11
+ .factory-form-metabox{padding:15px 10px 10px}.factory-form-metabox .control-group:last-child{margin-bottom:0}#side-sortables .factory-bootstrap-430 .control-label{float:left;width:100%;text-align:left;position:relative;top:1px}#side-sortables .factory-bootstrap-430 .control-icon{float:left;margin:0 6px 0 0}#side-sortables .factory-bootstrap-430 input{float:right;position:relative;top:-25px}#side-sortables .factory-bootstrap-430 .col-sm-10{margin:0;width:100%}#side-sortables .factory-bootstrap-430 .form-group{float:none;width:auto;overflow:auto;margin-bottom:0;border-top:1px solid #f7f7f7;padding-top:15px;margin-top:15px}#side-sortables .factory-bootstrap-430 .form-group:first-child{border-top:0;padding-top:0;margin-top:0}
libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .btn-primary{background:#04a4cc;border-color:#037c9a;color:#fff;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-426 .btn-primary:focus,.factory-bootstrap-426 .btn-primary:hover{background:#0384a4;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 1px 0 #09cafa,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #09cafa,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-426 .btn-primary:active{background:#0384a4;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-426 .btn-primary:disabled,.factory-bootstrap-426 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-426 .btn-group .btn.active.value{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.factory-bootstrap-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .btn-primary{background:#04a4cc;border-color:#037c9a;color:#fff;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-430 .btn-primary:focus,.factory-bootstrap-430 .btn-primary:hover{background:#0384a4;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 1px 0 #09cafa,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #09cafa,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-430 .btn-primary:active{background:#0384a4;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-430 .btn-primary:disabled,.factory-bootstrap-430 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-430 .btn-group .btn.active.value{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.factory-bootstrap-430 .pagination>.active>a,.factory-bootstrap-430 .pagination>.active>a:focus,.factory-bootstrap-430 .pagination>.active>a:hover,.factory-bootstrap-430 .pagination>.active>span,.factory-bootstrap-430 .pagination>.active>span:focus,.factory-bootstrap-430 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .btn-primary{background:#e14d43;border-color:#d02a21;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ec8a85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8a85,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-426 .btn-primary:focus,.factory-bootstrap-426 .btn-primary:hover{background:#d92c23;border-color:#ba251e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8756f,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8756f,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-426 .btn-primary:active{background:#d92c23;border-color:#ba251e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-426 .btn-primary:disabled,.factory-bootstrap-426 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-426 .btn-group .btn.active.value{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.factory-bootstrap-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .btn-primary{background:#e14d43;border-color:#d02a21;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ec8a85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8a85,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-430 .btn-primary:focus,.factory-bootstrap-430 .btn-primary:hover{background:#d92c23;border-color:#ba251e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8756f,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8756f,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-430 .btn-primary:active{background:#d92c23;border-color:#ba251e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-430 .btn-primary:disabled,.factory-bootstrap-430 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-430 .btn-group .btn.active.value{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.factory-bootstrap-430 .pagination>.active>a,.factory-bootstrap-430 .pagination>.active>a:focus,.factory-bootstrap-430 .pagination>.active>a:hover,.factory-bootstrap-430 .pagination>.active>span,.factory-bootstrap-430 .pagination>.active>span:focus,.factory-bootstrap-430 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .btn-primary{background:#9ebaa0;border-color:#80a583;color:#fff;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-426 .btn-primary:focus,.factory-bootstrap-426 .btn-primary:hover{background:#86a988;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bccfbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bccfbd,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-426 .btn-primary:active{background:#86a988;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-426 .btn-primary:disabled,.factory-bootstrap-426 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-426 .btn-group .btn.active.value{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.factory-bootstrap-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .btn-primary{background:#9ebaa0;border-color:#80a583;color:#fff;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-430 .btn-primary:focus,.factory-bootstrap-430 .btn-primary:hover{background:#86a988;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bccfbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bccfbd,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-430 .btn-primary:active{background:#86a988;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-430 .btn-primary:disabled,.factory-bootstrap-430 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-430 .btn-group .btn.active.value{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.factory-bootstrap-430 .pagination>.active>a,.factory-bootstrap-430 .pagination>.active>a:focus,.factory-bootstrap-430 .pagination>.active>a:hover,.factory-bootstrap-430 .pagination>.active>span,.factory-bootstrap-430 .pagination>.active>span:focus,.factory-bootstrap-430 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .btn-primary{background:#dd823b;border-color:#c36822;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8ab7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ab7c,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-426 .btn-primary:focus,.factory-bootstrap-426 .btn-primary:hover{background:#cc6c23;border-color:#ad5c1e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e59d66,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e59d66,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-426 .btn-primary:active{background:#cc6c23;border-color:#ad5c1e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-426 .btn-primary:disabled,.factory-bootstrap-426 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-426 .btn-group .btn.active.value{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}.factory-bootstrap-426 .pagination>.active>a,.factory-bootstrap-426 .pagination>.active>a:focus,.factory-bootstrap-426 .pagination>.active>a:hover,.factory-bootstrap-426 .pagination>.active>span,.factory-bootstrap-426 .pagination>.active>span:focus,.factory-bootstrap-426 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .btn-primary{background:#dd823b;border-color:#c36822;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8ab7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ab7c,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-430 .btn-primary:focus,.factory-bootstrap-430 .btn-primary:hover{background:#cc6c23;border-color:#ad5c1e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e59d66,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e59d66,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-430 .btn-primary:active{background:#cc6c23;border-color:#ad5c1e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-430 .btn-primary:disabled,.factory-bootstrap-430 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-430 .btn-group .btn.active.value{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}.factory-bootstrap-430 .pagination>.active>a,.factory-bootstrap-430 .pagination>.active>a:focus,.factory-bootstrap-430 .pagination>.active>a:hover,.factory-bootstrap-430 .pagination>.active>span,.factory-bootstrap-430 .pagination>.active>span:focus,.factory-bootstrap-430 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
libs/factory/bootstrap/assets/css-min/bootstrap.tab.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-tab{overflow:hidden;margin-bottom:25px}.factory-bootstrap-426 .factory-tab .form-group{overflow:hidden}.factory-bootstrap-426 .factory-tab+.form-group{margin-top:30px}.factory-bootstrap-426 .nav-tabs a{text-decoration:none}.factory-bootstrap-426 .factory-align-horizontal .nav-tabs{border-bottom:0}.factory-bootstrap-426 .factory-align-vertical .factory-headers{float:left;width:150px}.factory-bootstrap-426 .factory-align-vertical .factory-headers .nav-tabs{border-bottom:0;display:block;margin:0;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}.factory-bootstrap-426 .factory-tab .factory-bodies{background-color:#fff;-webkit-border-radius:0 3px 3px;-moz-border-radius:0 3px 3px;border-radius:0 3px 3px;border:1px solid #DDD;padding:30px 15px 25px 10px}.factory-bootstrap-426 .factory-align-vertical .factory-bodies{min-height:250px;margin-left:150px}.factory-bootstrap-426 .factory-align-vertical .factory-bodies .actory-tab-item{clear:both}.factory-bootstrap-426 .form-horizontal .factory-align-vertical .form-group{margin-left:-5px}.factory-bootstrap-426 .factory-align-vertical .nav-tabs li{float:none}.factory-bootstrap-426 .factory-align-vertical .nav-tabs li a{margin-right:-1px;margin-bottom:0;position:relative;z-index:10;padding:10px 0 9px 15px;-webkit-border-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-moz-border-radius:3px;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;border-radius:3px;border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-426 .factory-align-vertical .nav-tabs>.active>a{border:1px solid #DDD!important;border-right:1px solid #fff!important}.factory-bootstrap-426 .factory-align-vertical .nav-tabs>li a:hover{color:#21759B;z-index:5;border-color:transparent}.factory-bootstrap-426 .factory-align-vertical .control-label{width:20%;max-width:140px}.factory-bootstrap-426 .factory-align-vertical .control-group{width:80%}.factory-bootstrap-426 .factory-align-vertical .control-group input[type=text],.factory-bootstrap-426 .factory-align-vertical .control-group textarea{width:90%}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-tab{overflow:hidden;margin-bottom:25px}.factory-bootstrap-430 .factory-tab .form-group{overflow:hidden}.factory-bootstrap-430 .factory-tab+.form-group{margin-top:30px}.factory-bootstrap-430 .nav-tabs a{text-decoration:none}.factory-bootstrap-430 .factory-align-horizontal .nav-tabs{border-bottom:0}.factory-bootstrap-430 .factory-align-vertical .factory-headers{float:left;width:150px}.factory-bootstrap-430 .factory-align-vertical .factory-headers .nav-tabs{border-bottom:0;display:block;margin:0;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}.factory-bootstrap-430 .factory-tab .factory-bodies{background-color:#fff;-webkit-border-radius:0 3px 3px;-moz-border-radius:0 3px 3px;border-radius:0 3px 3px;border:1px solid #DDD;padding:30px 15px 25px 10px}.factory-bootstrap-430 .factory-align-vertical .factory-bodies{min-height:250px;margin-left:150px}.factory-bootstrap-430 .factory-align-vertical .factory-bodies .actory-tab-item{clear:both}.factory-bootstrap-430 .form-horizontal .factory-align-vertical .form-group{margin-left:-5px}.factory-bootstrap-430 .factory-align-vertical .nav-tabs li{float:none}.factory-bootstrap-430 .factory-align-vertical .nav-tabs li a{margin-right:-1px;margin-bottom:0;position:relative;z-index:10;padding:10px 0 9px 15px;-webkit-border-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-moz-border-radius:3px;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;border-radius:3px;border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-430 .factory-align-vertical .nav-tabs>.active>a{border:1px solid #DDD!important;border-right:1px solid #fff!important}.factory-bootstrap-430 .factory-align-vertical .nav-tabs>li a:hover{color:#21759B;z-index:5;border-color:transparent}.factory-bootstrap-430 .factory-align-vertical .control-label{width:20%;max-width:140px}.factory-bootstrap-430 .factory-align-vertical .control-group{width:80%}.factory-bootstrap-430 .factory-align-vertical .control-group input[type=text],.factory-bootstrap-430 .factory-align-vertical .control-group textarea{width:90%}
libs/factory/bootstrap/assets/css-min/bootstrap.wp-editor.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-426 .wp-editor-wrap .button,.factory-bootstrap-426 .wp-editor-wrap input,.factory-bootstrap-426 .wp-editor-wrap textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-426 .switch-html,.factory-bootstrap-426 .switch-tmce{color:#777}.factory-bootstrap-426 .html-active .switch-html,.factory-bootstrap-426 .tmce-active .switch-tmce{color:#555}.factory-bootstrap-426 .switch-html:hover,.factory-bootstrap-426 .switch-tmce:hover{color:#777}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-430 .wp-editor-wrap .button,.factory-bootstrap-430 .wp-editor-wrap input,.factory-bootstrap-430 .wp-editor-wrap textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-430 .switch-html,.factory-bootstrap-430 .switch-tmce{color:#777}.factory-bootstrap-430 .html-active .switch-html,.factory-bootstrap-430 .tmce-active .switch-tmce{color:#555}.factory-bootstrap-430 .switch-html:hover,.factory-bootstrap-430 .switch-tmce:hover{color:#777}
libs/factory/bootstrap/assets/css-min/control.checkbox.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- #side-sortables .factory-bootstrap-426 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-426 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-426 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-426 .factory-buttons-way .factory-on.active{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-426 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-426 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-426 .factory-buttons-way .factory-on.active{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.admin-color-blue .factory-bootstrap-426 .factory-buttons-way .factory-on.active{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.admin-color-coffee .factory-bootstrap-426 .factory-buttons-way .factory-on.active{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.admin-color-ectoplasm .factory-bootstrap-426 .factory-buttons-way .factory-on.active{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.admin-color-midnight .factory-bootstrap-426 .factory-buttons-way .factory-on.active{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.admin-color-ocean .factory-bootstrap-426 .factory-buttons-way .factory-on.active{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.admin-color-sunrise .factory-bootstrap-426 .factory-buttons-way .factory-on.active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}
8
  */
9
 
10
 
11
+ #side-sortables .factory-bootstrap-430 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-430 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-430 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-430 .factory-buttons-way .factory-on.active{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-430 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-430 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-430 .factory-buttons-way .factory-on.active{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.admin-color-blue .factory-bootstrap-430 .factory-buttons-way .factory-on.active{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.admin-color-coffee .factory-bootstrap-430 .factory-buttons-way .factory-on.active{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.admin-color-ectoplasm .factory-bootstrap-430 .factory-buttons-way .factory-on.active{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.admin-color-midnight .factory-bootstrap-430 .factory-buttons-way .factory-on.active{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.admin-color-ocean .factory-bootstrap-430 .factory-buttons-way .factory-on.active{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.admin-color-sunrise .factory-bootstrap-430 .factory-buttons-way .factory-on.active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}
libs/factory/bootstrap/assets/css-min/control.color-and-opacity.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-control-row{padding-left:105px;position:relative}.factory-bootstrap-426 .factory-control-row .factory-color-wrap{position:absolute;left:0;top:0}.factory-bootstrap-426 .factory-control-row .factory-opacity-wrap{width:100%}.factory-bootstrap-426 .iris-picker{margin-top:10px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-control-row{padding-left:105px;position:relative}.factory-bootstrap-430 .factory-control-row .factory-color-wrap{position:absolute;left:0;top:0}.factory-bootstrap-430 .factory-control-row .factory-opacity-wrap{width:100%}.factory-bootstrap-430 .iris-picker{margin-top:10px}
libs/factory/bootstrap/assets/css-min/control.color.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-color{position:relative}.factory-bootstrap-426 .factory-color .factory-color-hex{display:inline-block;width:65px;text-align:left;vertical-align:top;border-top-right-radius:3px;border-bottom-right-radius:3px;border-radius:3px;z-index:1;position:relative;margin-left:26px;border-top-left-radius:0;border-bottom-left-radius:0}.factory-bootstrap-426 .factory-color .factory-background,.factory-bootstrap-426 .factory-color .factory-pattern{cursor:pointer;height:26px;width:26px;position:absolute;border-radius:5px;background:transparent url(../../images/color_picker_pattern.jpg) center center repeat;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34);z-index:1;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.factory-bootstrap-426 .factory-color .factory-background{z-index:2;border-radius:3px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-color{position:relative}.factory-bootstrap-430 .factory-color .factory-color-hex{display:inline-block;width:65px;text-align:left;vertical-align:top;border-top-right-radius:3px;border-bottom-right-radius:3px;border-radius:3px;z-index:1;position:relative;margin-left:26px;border-top-left-radius:0;border-bottom-left-radius:0}.factory-bootstrap-430 .factory-color .factory-background,.factory-bootstrap-430 .factory-color .factory-pattern{cursor:pointer;height:26px;width:26px;position:absolute;border-radius:5px;background:transparent url(../../images/color_picker_pattern.jpg) center center repeat;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34);z-index:1;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.factory-bootstrap-430 .factory-color .factory-background{z-index:2;border-radius:3px}
libs/factory/bootstrap/assets/css-min/control.dropdown-and-colors.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-dropdown-and-colors .factory-colors-wrap,.factory-bootstrap-426 .factory-dropdown-and-colors .factory-dropdown-wrap{display:inline-block}.factory-bootstrap-426 .factory-dropdown-and-colors .factory-dropdown-wrap{min-width:200px;max-width:300px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-dropdown-and-colors .factory-colors-wrap,.factory-bootstrap-430 .factory-dropdown-and-colors .factory-dropdown-wrap{display:inline-block}.factory-bootstrap-430 .factory-dropdown-and-colors .factory-dropdown-wrap{min-width:200px;max-width:300px}
libs/factory/bootstrap/assets/css-min/control.dropdown.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-426 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-426 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-426 .factory-dropdown.factory-buttons-way .active{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.admin-color-blue .factory-bootstrap-426 .factory-dropdown.factory-buttons-way .active{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.admin-color-coffee .factory-bootstrap-426 .factory-dropdown.factory-buttons-way .active{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.admin-color-ectoplasm .factory-bootstrap-426 .factory-dropdown.factory-buttons-way .active{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.admin-color-midnight .factory-bootstrap-426 .factory-dropdown.factory-buttons-way .active{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.admin-color-ocean .factory-bootstrap-426 .factory-dropdown.factory-buttons-way .active{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.admin-color-sunrise .factory-bootstrap-426 .factory-dropdown.factory-buttons-way .active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}.factory-bootstrap-426 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-426 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-426 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-426 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-430 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-430 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-430 .factory-dropdown.factory-buttons-way .active{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.admin-color-blue .factory-bootstrap-430 .factory-dropdown.factory-buttons-way .active{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.admin-color-coffee .factory-bootstrap-430 .factory-dropdown.factory-buttons-way .active{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.admin-color-ectoplasm .factory-bootstrap-430 .factory-dropdown.factory-buttons-way .active{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.admin-color-midnight .factory-bootstrap-430 .factory-dropdown.factory-buttons-way .active{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.admin-color-ocean .factory-bootstrap-430 .factory-dropdown.factory-buttons-way .active{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.admin-color-sunrise .factory-bootstrap-430 .factory-dropdown.factory-buttons-way .active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}.factory-bootstrap-430 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-430 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-430 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-430 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
libs/factory/bootstrap/assets/css-min/control.fonts.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-font .factory-control-row{padding:0;vertical-align:top}.factory-bootstrap-426 .factory-font .factory-color-wrap{position:static;display:inline-block;vertical-align:top}.factory-bootstrap-426 .factory-font .factory-size-wrap{display:inline-block;width:70px;vertical-align:top}.factory-bootstrap-426 .iris-picker{margin-top:10px}.factory-bootstrap-426 .factory-font .factory-family-wrap{padding-bottom:10px}.factory-bootstrap-426 .factory-font .chosen-results{max-height:150px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-font .factory-control-row{padding:0;vertical-align:top}.factory-bootstrap-430 .factory-font .factory-color-wrap{position:static;display:inline-block;vertical-align:top}.factory-bootstrap-430 .factory-font .factory-size-wrap{display:inline-block;width:70px;vertical-align:top}.factory-bootstrap-430 .iris-picker{margin-top:10px}.factory-bootstrap-430 .factory-font .factory-family-wrap{padding-bottom:10px}.factory-bootstrap-430 .factory-font .chosen-results{max-height:150px}
libs/factory/bootstrap/assets/css-min/control.list.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-list li input{margin:0 5px 0 0;position:relative;top:1px;outline:0!important}.factory-bootstrap-426 .factory-list li span{vertical-align:bottom;line-height:100%}.factory-bootstrap-426 .factory-list .factory-error{position:relative;display:inline-block}.factory-bootstrap-426 .factory-list .factory-error i{color:#f47665;margin:0 7px 0 1px;cursor:help}.factory-bootstrap-426 .factory-list .factory-error-text{display:none;position:absolute;width:300px}.factory-bootstrap-426 .factory-list .factory-error-text,.factory-bootstrap-426 .factory-list-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;padding:10px 12px 12px;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:2px}.factory-bootstrap-426 .factory-list-error{padding:5px 10px;max-width:500px;display:inline-block}.factory-bootstrap-426 .factory-list-error i{margin:0 7px 0 1px}.factory-bootstrap-426 .factory-list .factory-error-text a{color:#fff;font-weight:700}.factory-bootstrap-426 .factory-list .factory-has-error:hover .factory-error-text{display:block}.factory-bootstrap-426 .factory-list .factory-has-error{cursor:default}.opanda-connect-buttons .opanda-has-error .opanda-error{display:inline-block}.factory-bootstrap-426 .factory-checklist-way.factory-empty{font-style:italic;margin-top:7px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-list li input{margin:0 5px 0 0;position:relative;top:1px;outline:0!important}.factory-bootstrap-430 .factory-list li span{vertical-align:bottom;line-height:100%}.factory-bootstrap-430 .factory-list .factory-error{position:relative;display:inline-block}.factory-bootstrap-430 .factory-list .factory-error i{color:#f47665;margin:0 7px 0 1px;cursor:help}.factory-bootstrap-430 .factory-list .factory-error-text{display:none;position:absolute;width:300px}.factory-bootstrap-430 .factory-list .factory-error-text,.factory-bootstrap-430 .factory-list-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;padding:10px 12px 12px;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:2px}.factory-bootstrap-430 .factory-list-error{padding:5px 10px;max-width:500px;display:inline-block}.factory-bootstrap-430 .factory-list-error i{margin:0 7px 0 1px}.factory-bootstrap-430 .factory-list .factory-error-text a{color:#fff;font-weight:700}.factory-bootstrap-430 .factory-list .factory-has-error:hover .factory-error-text{display:block}.factory-bootstrap-430 .factory-list .factory-has-error{cursor:default}.opanda-connect-buttons .opanda-has-error .opanda-error{display:inline-block}.factory-bootstrap-430 .factory-checklist-way.factory-empty{font-style:italic;margin-top:7px}
libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-426 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-426 .factory-mtextbox-item .factory-mtextbox-remove-item{position:absolute;top:0;right:0;bottom:0;width:40px;border-radius:0 3px 3px 0;outline:0}.factory-bootstrap-426 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-426 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-426 .factory-mtextbox-add-item{display:block;margin-top:10px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-430 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-430 .factory-mtextbox-item .factory-mtextbox-remove-item{position:absolute;top:0;right:0;bottom:0;width:40px;border-radius:0 3px 3px 0;outline:0}.factory-bootstrap-430 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-430 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-430 .factory-mtextbox-add-item{display:block;margin-top:10px}
libs/factory/bootstrap/assets/css-min/control.pattern.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-pattern .factory-pattern-controls{vertical-align:middle}.factory-bootstrap-426 .factory-pattern .factory-preview-wrap{display:inline-block;vertical-align:middle}.factory-bootstrap-426 .factory-pattern .factory-preview{width:100px;height:26px;background:transparent url(../assets/images/color_picker_pattern.jpg) repeat;border:0;border-radius:3px;cursor:pointer;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34)!important;position:relative}.factory-bootstrap-426 .factory-pattern .factory-preview.factory-empty{background:transparent url(../assets/images/color_picker_pattern.jpg) repeat!important}.factory-bootstrap-426 .factory-pattern .factory-preview span{position:absolute;top:0;left:76px;background:#111;width:26px;height:26px;border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0;z-index:99;border-bottom:2px solid #000}.factory-bootstrap-426 .factory-pattern .factory-preview span:hover{background:#161616}.factory-bootstrap-426 .factory-pattern .factory-preview span:after{content:'';width:0;height:0;border:transparent solid 5px;border-top-color:#96a6a6;position:absolute;top:10px;right:7px;z-index:1}.factory-bootstrap-426 .factory-pattern.factory-patterns-panel-active .factory-preview span:after{border-top-color:transparent;border-bottom-color:#96a6a6;top:4px}.factory-bootstrap-426 .factory-pattern .factory-color-panel{padding:10px;margin-top:10px;background:rgba(255,255,255,.04);border-radius:3px;display:none}.factory-bootstrap-426 .factory-pattern.factory-color-panel-active .factory-color-panel{display:block}.factory-bootstrap-426 .factory-pattern .factory-color-label{margin-right:5px}.factory-bootstrap-426 .factory-pattern .factory-color,.factory-bootstrap-426 .factory-pattern .factory-color-label{display:inline-block;vertical-align:middle}.factory-bootstrap-426 .factory-pattern .factory-color-panel .factory-hint{margin-top:7px}.factory-bootstrap-426 .factory-pattern .factory-patterns-panel{display:none;margin-top:10px;padding:2px 0 0;border-top:1px solid #272727;overflow:visible}.factory-bootstrap-426 .factory-pattern .factory-patterns-group{clear:both;padding:2px 0 0;border-bottom:1px solid #272727;padding-bottom:10px}.factory-bootstrap-426 .factory-pattern .factory-patterns-group-title{margin-top:10px}.factory-bootstrap-426 .factory-pattern .factory-patterns-row{padding-top:10px}.factory-bootstrap-426 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel{display:block}.factory-bootstrap-426 .factory-pattern .factory-patterns-item,.factory-bootstrap-426 .factory-pattern .factory-patterns-item div{width:46px;height:46px}.factory-bootstrap-426 .factory-pattern .factory-patterns-item{display:inline-block;cursor:pointer;position:relative;vertical-align:top}.factory-bootstrap-426 .factory-pattern .factory-patterns-item+.factory-patterns-item{margin-left:10px}.factory-bootstrap-426 .factory-pattern .factory-patterns-item div{position:absolute;border-radius:100%;border:4px solid #333}.factory-bootstrap-426 .factory-pattern .factory-patterns-item:hover .factory-pattern-holder{width:64px;height:64px;top:-10px;left:-10px;border:1px solid #333;z-index:10}.factory-bootstrap-426 .factory-pattern .factory-no-preview{background:#2f2f2f;line-height:46px;border-radius:100%;text-align:center;font-size:20px}.factory-bootstrap-426 .factory-pattern .factory-no-preview:hover{background:#333}.factory-bootstrap-426 .factory-pattern .factory-button .fa{font-size:14px;margin-right:1px}.factory-bootstrap-426 .factory-pattern .factory-button span{position:relative;top:-1px}.factory-bootstrap-426 .factory-pattern .factory-button+.factory-button{margin-left:3px}.factory-bootstrap-426 .factory-pattern .factory-change-color-btn{margin-left:5px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-pattern .factory-pattern-controls{vertical-align:middle}.factory-bootstrap-430 .factory-pattern .factory-preview-wrap{display:inline-block;vertical-align:middle}.factory-bootstrap-430 .factory-pattern .factory-preview{width:100px;height:26px;background:transparent url(../assets/images/color_picker_pattern.jpg) repeat;border:0;border-radius:3px;cursor:pointer;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34)!important;position:relative}.factory-bootstrap-430 .factory-pattern .factory-preview.factory-empty{background:transparent url(../assets/images/color_picker_pattern.jpg) repeat!important}.factory-bootstrap-430 .factory-pattern .factory-preview span{position:absolute;top:0;left:76px;background:#111;width:26px;height:26px;border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0;z-index:99;border-bottom:2px solid #000}.factory-bootstrap-430 .factory-pattern .factory-preview span:hover{background:#161616}.factory-bootstrap-430 .factory-pattern .factory-preview span:after{content:'';width:0;height:0;border:transparent solid 5px;border-top-color:#96a6a6;position:absolute;top:10px;right:7px;z-index:1}.factory-bootstrap-430 .factory-pattern.factory-patterns-panel-active .factory-preview span:after{border-top-color:transparent;border-bottom-color:#96a6a6;top:4px}.factory-bootstrap-430 .factory-pattern .factory-color-panel{padding:10px;margin-top:10px;background:rgba(255,255,255,.04);border-radius:3px;display:none}.factory-bootstrap-430 .factory-pattern.factory-color-panel-active .factory-color-panel{display:block}.factory-bootstrap-430 .factory-pattern .factory-color-label{margin-right:5px}.factory-bootstrap-430 .factory-pattern .factory-color,.factory-bootstrap-430 .factory-pattern .factory-color-label{display:inline-block;vertical-align:middle}.factory-bootstrap-430 .factory-pattern .factory-color-panel .factory-hint{margin-top:7px}.factory-bootstrap-430 .factory-pattern .factory-patterns-panel{display:none;margin-top:10px;padding:2px 0 0;border-top:1px solid #272727;overflow:visible}.factory-bootstrap-430 .factory-pattern .factory-patterns-group{clear:both;padding:2px 0 0;border-bottom:1px solid #272727;padding-bottom:10px}.factory-bootstrap-430 .factory-pattern .factory-patterns-group-title{margin-top:10px}.factory-bootstrap-430 .factory-pattern .factory-patterns-row{padding-top:10px}.factory-bootstrap-430 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel{display:block}.factory-bootstrap-430 .factory-pattern .factory-patterns-item,.factory-bootstrap-430 .factory-pattern .factory-patterns-item div{width:46px;height:46px}.factory-bootstrap-430 .factory-pattern .factory-patterns-item{display:inline-block;cursor:pointer;position:relative;vertical-align:top}.factory-bootstrap-430 .factory-pattern .factory-patterns-item+.factory-patterns-item{margin-left:10px}.factory-bootstrap-430 .factory-pattern .factory-patterns-item div{position:absolute;border-radius:100%;border:4px solid #333}.factory-bootstrap-430 .factory-pattern .factory-patterns-item:hover .factory-pattern-holder{width:64px;height:64px;top:-10px;left:-10px;border:1px solid #333;z-index:10}.factory-bootstrap-430 .factory-pattern .factory-no-preview{background:#2f2f2f;line-height:46px;border-radius:100%;text-align:center;font-size:20px}.factory-bootstrap-430 .factory-pattern .factory-no-preview:hover{background:#333}.factory-bootstrap-430 .factory-pattern .factory-button .fa{font-size:14px;margin-right:1px}.factory-bootstrap-430 .factory-pattern .factory-button span{position:relative;top:-1px}.factory-bootstrap-430 .factory-pattern .factory-button+.factory-button{margin-left:3px}.factory-bootstrap-430 .factory-pattern .factory-change-color-btn{margin-left:5px}
libs/factory/bootstrap/assets/css-min/control.radio-colors.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-from-radio-label,.factory-bootstrap-426 .factory-from-radio-label>span{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s}.factory-bootstrap-426 .factory-from-radio-label{position:relative;width:30px;height:30px;border-radius:3px;background-color:#fff;border:1px solid rgba(0,0,0,.1)}.factory-bootstrap-426 .factory-from-radio-label:hover{background-color:#f5f2f2;border:1px solid rgba(0,0,0,.2)}.factory-bootstrap-426 .factory-from-radio-label>span{display:block;position:absolute;top:2px;left:2px;right:2px;bottom:2px;text-indent:-9999px;background-color:#fff}.factory-bootstrap-426 .factory-from-radio-label .factory-radio-color:checked+span{border:5px solid #fff}.factory-bootstrap-426 .factory-radio-color{opacity:0}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-from-radio-label,.factory-bootstrap-430 .factory-from-radio-label>span{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s}.factory-bootstrap-430 .factory-from-radio-label{position:relative;width:30px;height:30px;border-radius:3px;background-color:#fff;border:1px solid rgba(0,0,0,.1)}.factory-bootstrap-430 .factory-from-radio-label:hover{background-color:#f5f2f2;border:1px solid rgba(0,0,0,.2)}.factory-bootstrap-430 .factory-from-radio-label>span{display:block;position:absolute;top:2px;left:2px;right:2px;bottom:2px;text-indent:-9999px;background-color:#fff}.factory-bootstrap-430 .factory-from-radio-label .factory-radio-color:checked+span{border:5px solid #fff}.factory-bootstrap-430 .factory-radio-color{opacity:0}
libs/factory/bootstrap/assets/css-min/holder.more-link.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-426 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-426 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-426 .factory-tab .factory-more-link-hide{position:absolute;margin-top:-35px;background-color:#fff;padding:0 5px;right:20px;color:#bbb;text-decoration:none}.factory-bootstrap-426 .factory-tab .factory-more-link-hide:hover{color:#999}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-430 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-430 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-430 .factory-tab .factory-more-link-hide{position:absolute;margin-top:-35px;background-color:#fff;padding:0 5px;right:20px;color:#bbb;text-decoration:none}.factory-bootstrap-430 .factory-tab .factory-more-link-hide:hover{color:#999}
libs/factory/bootstrap/assets/css-min/plugin.gradient-picker.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-gradient-picker-wrap{margin-bottom:20px}.factory-bootstrap-426 .gradientPicker-preview{width:100%;height:30px;border-radius:3px;background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-426 .factory-color-picker-container{display:none;padding-top:15px}.factory-bootstrap-426 .factory-point,.factory-bootstrap-426 .factory-point-color{position:absolute;width:10px;height:10px;border:0;font-size:0;border-radius:50% 50% 100% 100%;-moz-border-radius:50% 50% 100% 100%;-webkit-border-radius:50% 50% 100% 100%;cursor:pointer;overflow:hidden}.factory-bootstrap-426 .factory-point-color{border-radius:0}.factory-bootstrap-426 .factory-point{background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-426 .factory-current-point{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.factory-bootstrap-426 .factory-points{position:relative;height:10px;width:100%;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D) 5 0,pointer}.factory-bootstrap-426 .gradientPicker-iris-wrap{display:none;position:absolute;left:0;top:78px;width:212px;height:212px;background:#111;border:1px solid #222;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;z-index:9999}.factory-bootstrap-426 .gradientPicker-iris-wrap .iris-border,.factory-bootstrap-426 .gradientPicker-iris-wrap .iris-picker{border:0;background:#111}.factory-bootstrap-426 .gradientPicker-pallets{padding:8px 0 3px;margin-bottom:10px;border-bottom:1px solid #323232;border-top:1px solid #323232;font-size:0;line-height:0;text-align:center}.factory-bootstrap-426 .factory-preset-gradient,.factory-bootstrap-426 .factory-secondary-color{width:22px;height:22px;border-radius:100%}.factory-bootstrap-426 .factory-preset-gradient{display:inline-block;cursor:pointer;margin-bottom:3px;position:relative}.factory-bootstrap-426 .factory-preset-gradient:hover{opacity:.9}.factory-bootstrap-426 .factory-preset-gradient+.factory-preset-gradient{margin-left:5px}.factory-bootstrap-426 .factory-secondary-color-wrap{width:11px;height:22px;position:absolute;overflow:hidden;right:0}.factory-bootstrap-426 .factory-secondary-color{position:absolute;left:-11px;background-color:red}.factory-bootstrap-426 .gradientPicker-filldirection{width:200px;margin-top:5px}.factory-bootstrap-426 .gradientPicker-ptConfig .color-chooser{float:left}.factory-bootstrap-426 .factory-color-picker-container .factory-slider{padding-left:75px;padding-right:60px;position:relative}.factory-bootstrap-426 .factory-color-picker-container .factory-color-hex{top:0;left:0;position:absolute;width:65px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-gradient-picker-wrap{margin-bottom:20px}.factory-bootstrap-430 .gradientPicker-preview{width:100%;height:30px;border-radius:3px;background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-430 .factory-color-picker-container{display:none;padding-top:15px}.factory-bootstrap-430 .factory-point,.factory-bootstrap-430 .factory-point-color{position:absolute;width:10px;height:10px;border:0;font-size:0;border-radius:50% 50% 100% 100%;-moz-border-radius:50% 50% 100% 100%;-webkit-border-radius:50% 50% 100% 100%;cursor:pointer;overflow:hidden}.factory-bootstrap-430 .factory-point-color{border-radius:0}.factory-bootstrap-430 .factory-point{background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-430 .factory-current-point{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.factory-bootstrap-430 .factory-points{position:relative;height:10px;width:100%;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D) 5 0,pointer}.factory-bootstrap-430 .gradientPicker-iris-wrap{display:none;position:absolute;left:0;top:78px;width:212px;height:212px;background:#111;border:1px solid #222;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;z-index:9999}.factory-bootstrap-430 .gradientPicker-iris-wrap .iris-border,.factory-bootstrap-430 .gradientPicker-iris-wrap .iris-picker{border:0;background:#111}.factory-bootstrap-430 .gradientPicker-pallets{padding:8px 0 3px;margin-bottom:10px;border-bottom:1px solid #323232;border-top:1px solid #323232;font-size:0;line-height:0;text-align:center}.factory-bootstrap-430 .factory-preset-gradient,.factory-bootstrap-430 .factory-secondary-color{width:22px;height:22px;border-radius:100%}.factory-bootstrap-430 .factory-preset-gradient{display:inline-block;cursor:pointer;margin-bottom:3px;position:relative}.factory-bootstrap-430 .factory-preset-gradient:hover{opacity:.9}.factory-bootstrap-430 .factory-preset-gradient+.factory-preset-gradient{margin-left:5px}.factory-bootstrap-430 .factory-secondary-color-wrap{width:11px;height:22px;position:absolute;overflow:hidden;right:0}.factory-bootstrap-430 .factory-secondary-color{position:absolute;left:-11px;background-color:red}.factory-bootstrap-430 .gradientPicker-filldirection{width:200px;margin-top:5px}.factory-bootstrap-430 .gradientPicker-ptConfig .color-chooser{float:left}.factory-bootstrap-430 .factory-color-picker-container .factory-slider{padding-left:75px;padding-right:60px;position:relative}.factory-bootstrap-430 .factory-color-picker-container .factory-color-hex{top:0;left:0;position:absolute;width:65px}
libs/factory/bootstrap/assets/css-min/plugin.paddings-editor.min.css CHANGED
@@ -8,4 +8,4 @@
8
  */
9
 
10
 
11
- .factory-bootstrap-426 .factory-paddings-editor{padding-left:135px;height:90px;position:relative}.factory-bootstrap-426 .factory-paddings-editor .factory-rectangle{width:120px;height:90px;border-radius:10px;background-color:#a6b6b6;overflow:hidden;cursor:pointer;-moz-box-sizing:content-box;box-sizing:content-box;position:absolute;top:0;left:0}.factory-bootstrap-426 .factory-paddings-editor .factory-side{width:100%;height:100%;position:absolute}.factory-bootstrap-426 .factory-paddings-editor .factory-side-center{width:30px;height:30px;border-radius:100%;background-color:#bac9c9;position:absolute;top:30px;left:45px;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-426 .factory-paddings-editor .factory-side-center:hover{background-color:#c0cece}.factory-bootstrap-426 .factory-paddings-editor .factory-side-center.factory-active{background-color:#829595}.factory-bootstrap-426 .factory-paddings-editor .factory-side-top{height:30px;top:0;left:0}.factory-bootstrap-426 .factory-paddings-editor .factory-side-right{width:45px;top:0;right:0}.factory-bootstrap-426 .factory-paddings-editor .factory-side-bottom{height:30px;bottom:0;left:0}.factory-bootstrap-426 .factory-paddings-editor .factory-side-left{width:45px;top:0;left:0}.factory-bootstrap-426 .factory-paddings-editor .factory-rectangle .factory-visible-value{color:#1b1f1f;background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-426 .factory-paddings-editor .factory-rectangle .factory-side.factory-active .factory-visible-value{background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-426 .factory-paddings-editor .factory-visible-value em{font-style:normal}.factory-bootstrap-426 .factory-paddings-editor .factory-side-bottom,.factory-bootstrap-426 .factory-paddings-editor .factory-side-top{text-align:center;line-height:30px}.factory-bootstrap-426 .factory-paddings-editor .factory-side-left,.factory-bootstrap-426 .factory-paddings-editor .factory-side-right{line-height:90px;text-align:center}.factory-bootstrap-426 .factory-paddings-editor .factory-slider-container{font-style:italic}.factory-bootstrap-426 .factory-paddings-editor .factory-slider{padding-right:0;margin-top:7px}
8
  */
9
 
10
 
11
+ .factory-bootstrap-430 .factory-paddings-editor{padding-left:135px;height:90px;position:relative}.factory-bootstrap-430 .factory-paddings-editor .factory-rectangle{width:120px;height:90px;border-radius:10px;background-color:#a6b6b6;overflow:hidden;cursor:pointer;-moz-box-sizing:content-box;box-sizing:content-box;position:absolute;top:0;left:0}.factory-bootstrap-430 .factory-paddings-editor .factory-side{width:100%;height:100%;position:absolute}.factory-bootstrap-430 .factory-paddings-editor .factory-side-center{width:30px;height:30px;border-radius:100%;background-color:#bac9c9;position:absolute;top:30px;left:45px;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-430 .factory-paddings-editor .factory-side-center:hover{background-color:#c0cece}.factory-bootstrap-430 .factory-paddings-editor .factory-side-center.factory-active{background-color:#829595}.factory-bootstrap-430 .factory-paddings-editor .factory-side-top{height:30px;top:0;left:0}.factory-bootstrap-430 .factory-paddings-editor .factory-side-right{width:45px;top:0;right:0}.factory-bootstrap-430 .factory-paddings-editor .factory-side-bottom{height:30px;bottom:0;left:0}.factory-bootstrap-430 .factory-paddings-editor .factory-side-left{width:45px;top:0;left:0}.factory-bootstrap-430 .factory-paddings-editor .factory-rectangle .factory-visible-value{color:#1b1f1f;background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-430 .factory-paddings-editor .factory-rectangle .factory-side.factory-active .factory-visible-value{background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-430 .factory-paddings-editor .factory-visible-value em{font-style:normal}.factory-bootstrap-430 .factory-paddings-editor .factory-side-bottom,.factory-bootstrap-430 .factory-paddings-editor .factory-side-top{text-align:center;line-height:30px}.factory-bootstrap-430 .factory-paddings-editor .factory-side-left,.factory-bootstrap-430 .factory-paddings-editor .factory-side-right{line-height:90px;text-align:center}.factory-bootstrap-430 .factory-paddings-editor .factory-slider-container{font-style:italic}.factory-bootstrap-430 .factory-paddings-editor .factory-slider{padding-right:0;margin-top:7px}
libs/factory/bootstrap/assets/js-min/bootstrap.accordion.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a,b,c,d){"use strict";a.fn.factoryBootstrap426_accordion=function(){return this.each(function(){var b=a(this),c=!1;a("."+b.attr("class")+" > div:first").show(),a("."+b.attr("class")+" > div:first").add("."+b.attr("class")+" > h3:first").addClass("active"),a("."+b.attr("class")+" > h3").on("click",function(){var d=a(this),e=d.next();return d.hasClass("active")||c||(c=!0,d.parent().children("div").slideUp(500),a("."+b.attr("class")+" > h3").removeClass("active"),d.addClass("active"),e.addClass("active").slideDown({duration:500,complete:function(){c=!1,b.trigger("shown.bs.accordion",[d])},progress:function(){b.trigger("progress.bs.accordion",[d])}})),!1})})},a(function(){a(".factory-bootstrap-426 .factory-accordion").factoryBootstrap426_accordion()})}(jQuery,window,document);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a,b,c,d){"use strict";a.fn.factoryBootstrap430_accordion=function(){return this.each(function(){var b=a(this),c=!1;a("."+b.attr("class")+" > div:first").show(),a("."+b.attr("class")+" > div:first").add("."+b.attr("class")+" > h3:first").addClass("active"),a("."+b.attr("class")+" > h3").on("click",function(){var d=a(this),e=d.next();return d.hasClass("active")||c||(c=!0,d.parent().children("div").slideUp(500),a("."+b.attr("class")+" > h3").removeClass("active"),d.addClass("active"),e.addClass("active").slideDown({duration:500,complete:function(){c=!1,b.trigger("shown.bs.accordion",[d])},progress:function(){b.trigger("progress.bs.accordion",[d])}})),!1})})},a(function(){a(".factory-bootstrap-430 .factory-accordion").factoryBootstrap430_accordion()})}(jQuery,window,document);
libs/factory/bootstrap/assets/js-min/bootstrap.collapse.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- +function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},a.fn.factoryBootstrap426_collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.factoryBootstrap426_collapse.Constructor=b,a(document).on("click.bs.collapse.data-api","[data-toggle=factory-collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=factory-collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ +function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},a.fn.factoryBootstrap430_collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.factoryBootstrap430_collapse.Constructor=b,a(document).on("click.bs.collapse.data-api","[data-toggle=factory-collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=factory-collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery);
libs/factory/bootstrap/assets/js-min/bootstrap.datetimepicker.min.js CHANGED
@@ -15,4 +15,4 @@
15
  =========================================================
16
  */
17
  !function(a){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],a);else if("object"==typeof exports)module.exports=a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t","delete":46,46:"delete"},w={},x=function(){return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&""!==d.timeZone},y=function(a){var c;return c=void 0===a||null===a?b():b.isDate(a)||b.isMoment(a)?b(a):x()?b.tz(a,j,d.useStrict,d.timeZone):b(a,j,d.useStrict),x()&&c.tz(d.timeZone),c},z=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==i.indexOf("Y");case"M":return-1!==i.indexOf("M");case"d":return-1!==i.toLowerCase().indexOf("d");case"h":case"H":return-1!==i.toLowerCase().indexOf("h");case"m":return-1!==i.indexOf("m");case"s":return-1!==i.indexOf("s");default:return!1}},A=function(){return z("h")||z("m")||z("s")},B=function(){return z("y")||z("M")||z("d")},C=function(){var b=a("<thead>").append(a("<tr>").append(a("<th>").addClass("prev").attr("data-action","previous").append(a("<span>").addClass(d.icons.previous))).append(a("<th>").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("<th>").addClass("next").attr("data-action","next").append(a("<span>").addClass(d.icons.next)))),c=a("<tbody>").append(a("<tr>").append(a("<td>").attr("colspan",d.calendarWeeks?"8":"7")));return[a("<div>").addClass("datepicker-days").append(a("<table>").addClass("table-condensed").append(b).append(a("<tbody>"))),a("<div>").addClass("datepicker-months").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-years").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-decades").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone()))]},D=function(){var b=a("<tr>"),c=a("<tr>"),e=a("<tr>");return z("h")&&(b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-hour").attr({"data-time-component":"hours",title:d.tooltips.pickHour}).attr("data-action","showHours"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(a("<span>").addClass(d.icons.down))))),z("m")&&(z("h")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:d.tooltips.pickMinute}).attr("data-action","showMinutes"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(a("<span>").addClass(d.icons.down))))),z("s")&&(z("m")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-second").attr({"data-time-component":"seconds",title:d.tooltips.pickSecond}).attr("data-action","showSeconds"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(a("<span>").addClass(d.icons.down))))),h||(b.append(a("<td>").addClass("separator")),c.append(a("<td>").append(a("<button>").addClass("btn btn-primary").attr({"data-action":"togglePeriod",tabindex:"-1",title:d.tooltips.togglePeriod}))),e.append(a("<td>").addClass("separator"))),a("<div>").addClass("timepicker-picker").append(a("<table>").addClass("table-condensed").append([b,c,e]))},E=function(){var b=a("<div>").addClass("timepicker-hours").append(a("<table>").addClass("table-condensed")),c=a("<div>").addClass("timepicker-minutes").append(a("<table>").addClass("table-condensed")),d=a("<div>").addClass("timepicker-seconds").append(a("<table>").addClass("table-condensed")),e=[D()];return z("h")&&e.push(b),z("m")&&e.push(c),z("s")&&e.push(d),e},F=function(){var b=[];return d.showTodayButton&&b.push(a("<td>").append(a("<a>").attr({"data-action":"today",title:d.tooltips.today}).append(a("<span>").addClass(d.icons.today)))),!d.sideBySide&&B()&&A()&&b.push(a("<td>").append(a("<a>").attr({"data-action":"togglePicker",title:d.tooltips.selectTime}).append(a("<span>").addClass(d.icons.time)))),d.showClear&&b.push(a("<td>").append(a("<a>").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("<span>").addClass(d.icons.clear)))),d.showClose&&b.push(a("<td>").append(a("<a>").attr({"data-action":"close",title:d.tooltips.close}).append(a("<span>").addClass(d.icons.close)))),a("<table>").addClass("table-condensed").append(a("<tbody>").append(a("<tr>").append(b)))},G=function(){var b=a("<div>").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("<div>").addClass("datepicker").append(C()),e=a("<div>").addClass("timepicker").append(E()),f=a("<ul>").addClass("list-unstyled"),g=a("<li>").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(F());return d.inline&&b.removeClass("dropdown-menu"),h&&b.addClass("usetwentyfour"),z("s")&&!h&&b.addClass("wider"),d.sideBySide&&B()&&A()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(g),b.append(a("<div>").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(g),b):("top"===d.toolbarPlacement&&f.append(g),B()&&f.append(a("<li>").addClass(d.collapse&&A()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&f.append(g),A()&&f.append(a("<li>").addClass(d.collapse&&B()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&f.append(g),b.append(f))},H=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},I=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()<f.top?"top":"bottom"),"auto"===h&&(h=b.width()<f.left+o.outerWidth()/2&&f.left+o.outerWidth()>a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"static"===b.css("position")&&(b=b.parents().filter(function(){return"static"!==a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a non-static positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?b.outerHeight()-(b===c?0:e.top):"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},J=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},K=function(a){"y"===a&&(a="YYYY"),J({type:"dp.update",change:a,viewDate:f.clone()})},L=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[k].clsName).show())},M=function(){var b=a("<tr>"),c=f.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a("<th>").addClass("cw").text("#"));c.isBefore(f.clone().endOf("w"));)b.append(a("<th>").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},N=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},O=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},P=function(a){return d.disabledHours[a.format("H")]===!0},Q=function(a){return d.enabledHours[a.format("H")]===!0},R=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&N(b))return!1;if(d.enabledDates&&"d"===c&&!O(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&-1!==d.daysOfWeekDisabled.indexOf(b.day()))return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&P(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!Q(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){return b.isBetween(this[0],this[1])?(e=!0,!1):void 0}),e)return!1}return!0},S=function(){for(var b=[],c=f.clone().startOf("y").startOf("d");c.isSame(f,"y");)b.push(a("<span>").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},T=function(){var b=o.find(".datepicker-months"),c=b.find("th"),g=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),R(f.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(f.year()),R(f.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),g.removeClass("active"),e.isSame(f,"y")&&!m&&g.eq(e.month()).addClass("active"),g.each(function(b){R(f.clone().month(b),"M")||a(this).addClass("disabled")})},U=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=f.clone().subtract(5,"y"),g=f.clone().add(6,"y"),h="";for(b.eq(0).find("span").attr("title",d.tooltips.prevDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.nextDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+g.year()),d.maxDate&&d.maxDate.isBefore(g,"y")&&b.eq(2).addClass("disabled");!c.isAfter(g,"y");)h+='<span data-action="selectYear" class="year'+(c.isSame(e,"y")&&!m?" active":"")+(R(c,"y")?"":" disabled")+'">'+c.year()+"</span>",c.add(1,"y");a.find("td").html(h)},V=function(){var a,c=o.find(".datepicker-decades"),g=c.find("th"),h=b({y:f.year()-f.year()%100-1}),i=h.clone().add(100,"y"),j=h.clone(),k=!1,l=!1,m="";for(g.eq(0).find("span").attr("title",d.tooltips.prevCentury),g.eq(2).find("span").attr("title",d.tooltips.nextCentury),c.find(".disabled").removeClass("disabled"),(h.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(h,"y"))&&g.eq(0).addClass("disabled"),g.eq(1).text(h.year()+"-"+i.year()),(h.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(i,"y"))&&g.eq(2).addClass("disabled");!h.isAfter(i,"y");)a=h.year()+12,k=d.minDate&&d.minDate.isAfter(h,"y")&&d.minDate.year()<=a,l=d.maxDate&&d.maxDate.isAfter(h,"y")&&d.maxDate.year()<=a,m+='<span data-action="selectDecade" class="decade'+(e.isAfter(h)&&e.year()<=a?" active":"")+(R(h,"y")||k||l?"":" disabled")+'" data-selection="'+(h.year()+6)+'">'+(h.year()+1)+" - "+(h.year()+12)+"</span>",h.add(12,"y");m+="<span></span><span></span><span></span>",c.find("td").html(m),g.eq(1).text(j.year()+1+"-"+h.year())},W=function(){var b,c,g,h=o.find(".datepicker-days"),i=h.find("th"),j=[],k=[];if(B()){for(i.eq(0).find("span").attr("title",d.tooltips.prevMonth),i.eq(1).attr("title",d.tooltips.selectMonth),i.eq(2).find("span").attr("title",d.tooltips.nextMonth),h.find(".disabled").removeClass("disabled"),i.eq(1).text(f.format(d.dayViewHeaderFormat)),R(f.clone().subtract(1,"M"),"M")||i.eq(0).addClass("disabled"),R(f.clone().add(1,"M"),"M")||i.eq(2).addClass("disabled"),b=f.clone().startOf("M").startOf("w").startOf("d"),g=0;42>g;g++)0===b.weekday()&&(c=a("<tr>"),d.calendarWeeks&&c.append('<td class="cw">'+b.week()+"</td>"),j.push(c)),k=["day"],b.isBefore(f,"M")&&k.push("old"),b.isAfter(f,"M")&&k.push("new"),b.isSame(e,"d")&&!m&&k.push("active"),R(b,"d")||k.push("disabled"),b.isSame(y(),"d")&&k.push("today"),(0===b.day()||6===b.day())&&k.push("weekend"),J({type:"dp.classify",date:b,classNames:k}),c.append('<td data-action="selectDay" data-day="'+b.format("L")+'" class="'+k.join(" ")+'">'+b.date()+"</td>"),b.add(1,"d");h.find("tbody").empty().append(j),T(),U(),V()}},X=function(){var b=o.find(".timepicker-hours table"),c=f.clone().startOf("d"),d=[],e=a("<tr>");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,"d")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectHour" class="hour'+(R(c,"h")?"":" disabled")+'">'+c.format(h?"HH":"hh")+"</td>"),c.add(1,"h");b.empty().append(d)},Y=function(){for(var b=o.find(".timepicker-minutes table"),c=f.clone().startOf("h"),e=[],g=a("<tr>"),h=1===d.stepping?5:d.stepping;f.isSame(c,"h");)c.minute()%(4*h)===0&&(g=a("<tr>"),e.push(g)),g.append('<td data-action="selectMinute" class="minute'+(R(c,"m")?"":" disabled")+'">'+c.format("mm")+"</td>"),c.add(h,"m");b.empty().append(e)},Z=function(){for(var b=o.find(".timepicker-seconds table"),c=f.clone().startOf("m"),d=[],e=a("<tr>");f.isSame(c,"m");)c.second()%20===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectSecond" class="second'+(R(c,"s")?"":" disabled")+'">'+c.format("ss")+"</td>"),c.add(5,"s");b.empty().append(d)},$=function(){var a,b,c=o.find(".timepicker span[data-time-component]");h||(a=o.find(".timepicker [data-action=togglePeriod]"),b=e.clone().add(e.hours()>=12?-12:12,"h"),a.text(e.format("A")),R(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(e.format(h?"HH":"hh")),c.filter("[data-time-component=minutes]").text(e.format("mm")),c.filter("[data-time-component=seconds]").text(e.format("ss")),X(),Y(),Z()},_=function(){o&&(W(),$())},aa=function(a){var b=m?null:e;if(!a)return m=!0,g.val(""),c.data("date",""),J({type:"dp.change",date:!1,oldDate:b}),void _();if(a=a.clone().locale(d.locale),x()&&a.tz(d.timeZone),1!==d.stepping)for(a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping).seconds(0);d.minDate&&a.isBefore(d.minDate);)a.add(d.stepping,"minutes");R(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data("date",e.format(i)),m=!1,_(),J({type:"dp.change",date:e.clone(),oldDate:b})):(d.keepInvalid?J({type:"dp.change",date:a,oldDate:b}):g.val(m?"":e.format(i)),J({type:"dp.error",date:a,oldDate:b}))},ba=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?l:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",I),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,J({type:"dp.hide",date:e.clone()}),g.blur(),f=e.clone(),l)):l},ca=function(){aa(null)},da=function(a){return void 0===d.parseInputDate?(!b.isMoment(a)||a instanceof Date)&&(a=y(a)):a=d.parseInputDate(a),a},ea={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),W(),K(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),W(),K(a)},pickerSwitch:function(){L(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));f.month(c),k===p?(aa(e.clone().year(f.year()).month(f.month())),d.inline||ba()):(L(-1),W()),K("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDay:function(b){var c=f.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),aa(c.date(parseInt(a(b.target).text(),10))),A()||d.keepOpen||d.inline||ba()},incrementHours:function(){var a=e.clone().add(1,"h");R(a,"h")&&aa(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,"m");R(a,"m")&&aa(a)},incrementSeconds:function(){var a=e.clone().add(1,"s");R(a,"s")&&aa(a)},decrementHours:function(){var a=e.clone().subtract(1,"h");R(a,"h")&&aa(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,"m");R(a,"m")&&aa(a)},decrementSeconds:function(){var a=e.clone().subtract(1,"s");R(a,"s")&&aa(a)},togglePeriod:function(){aa(e.clone().add(e.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),aa(e.clone().hours(c)),ea.showPicker.call(l)},selectMinute:function(b){aa(e.clone().minutes(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},selectSecond:function(b){aa(e.clone().seconds(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},clear:ca,today:function(){var a=y();R(a,"d")&&aa(a)},close:ba},fa=function(b){return a(b.currentTarget).is(".disabled")?!1:(ea[a(b.currentTarget).data("action")].apply(l,arguments),!1)},ga=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop("disabled")||!d.ignoreReadonly&&g.prop("readonly")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?aa(da(g.val().trim())):m&&d.useCurrent&&(d.inline||g.is("input")&&0===g.val().trim().length)&&(b=y(),"string"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),aa(b)),o=G(),M(),S(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),_(),L(),a(window).on("resize",I),o.on("click","[data-action]",fa),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),I(),o.show(),d.focusOnShow&&!g.is(":focus")&&g.focus(),J({type:"dp.show"}),l)},ha=function(){return o?ba():ga()},ia=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k="p";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ja=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ka=function(b){var c=a(b.target).val().trim(),d=c?da(c):null;return aa(d),b.stopImmediatePropagation(),!1},la=function(){g.on({change:ka,blur:d.debug?"":ba,keydown:ia,keyup:ja,focus:d.allowInputToggle?ga:""}),c.is("input")?g.on({focus:ga}):n&&(n.on("click",ha),n.on("mousedown",!1))},ma=function(){g.off({change:ka,blur:blur,keydown:ia,keyup:ja,focus:d.allowInputToggle?ba:""}),c.is("input")?g.off({focus:ga}):n&&(n.off("click",ha),n.off("mousedown",!1))},na=function(b){var c={};return a.each(b,function(){var a=da(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},oa=function(b){var c={};return a.each(b,function(){c[this]=!0}),Object.keys(c).length?c:!1},pa=function(){var a=d.format||"L LT";i=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf("a")<1&&i.replace(/\[.*?\]/g,"").indexOf("h")<1,z("y")&&(p=2),z("M")&&(p=1),z("d")&&(p=0),k=Math.max(p,k),m||aa(e)};if(l.destroy=function(){ba(),ma(),c.removeData("DateTimePicker"),c.removeData("date")},l.toggle=ha,l.show=ga,l.hide=ba,l.disable=function(){return ba(),n&&n.hasClass("btn")&&n.addClass("disabled"),g.prop("disabled",!0),l},l.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),g.prop("disabled",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError("option "+a+" is not recognized!");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return aa(null===a?null:da(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a string or boolean:false parameter "+a);return d.format=a,i&&pa(),l},l.timeZone=function(a){if(0===arguments.length)return d.timeZone;if("string"!=typeof a)throw new TypeError("newZone() expects a string parameter");return d.timeZone=a,l},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,j&&pa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=na(b),d.enabledDates=!1,_(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=na(b),d.disabledDates=!1,_(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,_(),l;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!R(e,"d");){if(e.add(1,"d"),31===b)throw"Tried 31 times to find a valid date";b++}aa(e)}return _(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&aa(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,"m")),_(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&aa(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,"m")),_(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;"string"==typeof a&&(a="now"===a||"moment"===a?y():y(a));var b=da(a);if(!b.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!R(b))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=b,(d.defaultDate&&d.inline||""===g.val().trim())&&aa(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&pa(),o&&(ba(),ga()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?l:(d.collapse=a,o&&(ba(),ga()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(ba(),ga()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(ba(),ga()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(ba(),ga()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,k=Math.max(r.indexOf(a),p),L(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(ba(),ga()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return _(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,_(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(ba(),ga()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(ba(),ga()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(ba(),ga()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,l},l.clear=function(){return ca(),l},l.keyBinds=function(a){return 0===arguments.length?d.keyBinds:(d.keyBinds=a,l)},l.getMoment=function(a){return y(a)},l.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");
18
- return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate;if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,_(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(d.disabledHours=oa(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=oa(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return f=da(a),K(),l},c.is("input"))g=c;else if(g=c.find(d.datepickerInput),0===g.length)g=c.find("input");else if(!g.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").length?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!g.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return e=y(),f=e.clone(),a.extend(!0,d,H()),l.options(d),pa(),la(),g.prop("disabled")&&l.disable(),g.is("input")&&0!==g.val().trim().length?aa(da(g.val().trim())):d.defaultDate&&void 0===g.attr("placeholder")&&aa(d.defaultDate),d.inline&&ga(),l};return a.fn.factoryBootstrap426_DatetimePickerControl=function(b){b=b||{};var d,e=Array.prototype.slice.call(arguments,1),f=!0,g=["destroy","hide","show","toggle"];if("object"==typeof b)return this.each(function(){var d,e=a(this);e.data("DateTimePicker")||(d=a.extend(!0,{},a.fn.factoryBootstrap426_DatetimePickerControl.defaults,b),e.data("DateTimePicker",c(e,d)))});if("string"==typeof b)return this.each(function(){var c=a(this),g=c.data("DateTimePicker");if(!g)throw new Error('bootstrap-datetimepicker("'+b+'") method was called on an element that is not using DateTimePicker');d=g[b].apply(g,e),f=d===g}),f||a.inArray(b,g)>-1?this:d;throw new TypeError("Invalid arguments for DateTimePicker: "+b)},a.fn.factoryBootstrap426_DatetimePickerControl.defaults={timeZone:"",format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"fa fa-clock-o",date:"fa fa-calendar",up:"fa fa-arrow-up",down:"fa fa-arrow-down",previous:"fa fa-arrow-left",next:"fa fa-arrow-right",today:"fa fa-thumb-tack",clear:"fa fa-trash",close:"fa fa-times"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(7,"d")):this.date(b.clone().add(this.stepping(),"m"))}},down:function(a){if(!a)return void this.show();var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(7,"d")):this.date(b.clone().subtract(this.stepping(),"m"))},"control up":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(1,"y")):this.date(b.clone().add(1,"h"))}},"control down":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(1,"y")):this.date(b.clone().subtract(1,"h"))}},left:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"d"))}},right:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"d"))}},pageUp:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a&&a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(this.getMoment())},"delete":function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1},a.fn.factoryBootstrap426_DatetimePickerControl}),function(a){a(function(){a(".factory-bootstrap-426 .factory-datetimepicker").factoryBootstrap426_DatetimePickerControl(),a(".factory-bootstrap-426 .factory-datetimepicker-range-0").factoryBootstrap426_DatetimePickerControl(),a(".factory-bootstrap-426 .factory-datetimepicker-range-1").factoryBootstrap426_DatetimePickerControl({useCurrent:!1}),a(".factory-bootstrap-426 .factory-datetimepicker-range-0").on("dp.change",function(b){a(".factory-bootstrap-426 .factory-datetimepicker-range-1").data("DateTimePicker").minDate(b.date)}),a(".factory-bootstrap-426 .factory-datetimepicker-range-1").on("dp.change",function(b){a(".factory-bootstrap-426 .factory-datetimepicker-range-0").data("DateTimePicker").maxDate(b.date)})})}(jQuery);
15
  =========================================================
16
  */
17
  !function(a){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],a);else if("object"==typeof exports)module.exports=a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t","delete":46,46:"delete"},w={},x=function(){return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&""!==d.timeZone},y=function(a){var c;return c=void 0===a||null===a?b():b.isDate(a)||b.isMoment(a)?b(a):x()?b.tz(a,j,d.useStrict,d.timeZone):b(a,j,d.useStrict),x()&&c.tz(d.timeZone),c},z=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==i.indexOf("Y");case"M":return-1!==i.indexOf("M");case"d":return-1!==i.toLowerCase().indexOf("d");case"h":case"H":return-1!==i.toLowerCase().indexOf("h");case"m":return-1!==i.indexOf("m");case"s":return-1!==i.indexOf("s");default:return!1}},A=function(){return z("h")||z("m")||z("s")},B=function(){return z("y")||z("M")||z("d")},C=function(){var b=a("<thead>").append(a("<tr>").append(a("<th>").addClass("prev").attr("data-action","previous").append(a("<span>").addClass(d.icons.previous))).append(a("<th>").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("<th>").addClass("next").attr("data-action","next").append(a("<span>").addClass(d.icons.next)))),c=a("<tbody>").append(a("<tr>").append(a("<td>").attr("colspan",d.calendarWeeks?"8":"7")));return[a("<div>").addClass("datepicker-days").append(a("<table>").addClass("table-condensed").append(b).append(a("<tbody>"))),a("<div>").addClass("datepicker-months").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-years").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-decades").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone()))]},D=function(){var b=a("<tr>"),c=a("<tr>"),e=a("<tr>");return z("h")&&(b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-hour").attr({"data-time-component":"hours",title:d.tooltips.pickHour}).attr("data-action","showHours"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(a("<span>").addClass(d.icons.down))))),z("m")&&(z("h")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:d.tooltips.pickMinute}).attr("data-action","showMinutes"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(a("<span>").addClass(d.icons.down))))),z("s")&&(z("m")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-second").attr({"data-time-component":"seconds",title:d.tooltips.pickSecond}).attr("data-action","showSeconds"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(a("<span>").addClass(d.icons.down))))),h||(b.append(a("<td>").addClass("separator")),c.append(a("<td>").append(a("<button>").addClass("btn btn-primary").attr({"data-action":"togglePeriod",tabindex:"-1",title:d.tooltips.togglePeriod}))),e.append(a("<td>").addClass("separator"))),a("<div>").addClass("timepicker-picker").append(a("<table>").addClass("table-condensed").append([b,c,e]))},E=function(){var b=a("<div>").addClass("timepicker-hours").append(a("<table>").addClass("table-condensed")),c=a("<div>").addClass("timepicker-minutes").append(a("<table>").addClass("table-condensed")),d=a("<div>").addClass("timepicker-seconds").append(a("<table>").addClass("table-condensed")),e=[D()];return z("h")&&e.push(b),z("m")&&e.push(c),z("s")&&e.push(d),e},F=function(){var b=[];return d.showTodayButton&&b.push(a("<td>").append(a("<a>").attr({"data-action":"today",title:d.tooltips.today}).append(a("<span>").addClass(d.icons.today)))),!d.sideBySide&&B()&&A()&&b.push(a("<td>").append(a("<a>").attr({"data-action":"togglePicker",title:d.tooltips.selectTime}).append(a("<span>").addClass(d.icons.time)))),d.showClear&&b.push(a("<td>").append(a("<a>").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("<span>").addClass(d.icons.clear)))),d.showClose&&b.push(a("<td>").append(a("<a>").attr({"data-action":"close",title:d.tooltips.close}).append(a("<span>").addClass(d.icons.close)))),a("<table>").addClass("table-condensed").append(a("<tbody>").append(a("<tr>").append(b)))},G=function(){var b=a("<div>").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("<div>").addClass("datepicker").append(C()),e=a("<div>").addClass("timepicker").append(E()),f=a("<ul>").addClass("list-unstyled"),g=a("<li>").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(F());return d.inline&&b.removeClass("dropdown-menu"),h&&b.addClass("usetwentyfour"),z("s")&&!h&&b.addClass("wider"),d.sideBySide&&B()&&A()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(g),b.append(a("<div>").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(g),b):("top"===d.toolbarPlacement&&f.append(g),B()&&f.append(a("<li>").addClass(d.collapse&&A()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&f.append(g),A()&&f.append(a("<li>").addClass(d.collapse&&B()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&f.append(g),b.append(f))},H=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},I=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()<f.top?"top":"bottom"),"auto"===h&&(h=b.width()<f.left+o.outerWidth()/2&&f.left+o.outerWidth()>a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"static"===b.css("position")&&(b=b.parents().filter(function(){return"static"!==a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a non-static positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?b.outerHeight()-(b===c?0:e.top):"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},J=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},K=function(a){"y"===a&&(a="YYYY"),J({type:"dp.update",change:a,viewDate:f.clone()})},L=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[k].clsName).show())},M=function(){var b=a("<tr>"),c=f.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a("<th>").addClass("cw").text("#"));c.isBefore(f.clone().endOf("w"));)b.append(a("<th>").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},N=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},O=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},P=function(a){return d.disabledHours[a.format("H")]===!0},Q=function(a){return d.enabledHours[a.format("H")]===!0},R=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&N(b))return!1;if(d.enabledDates&&"d"===c&&!O(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&-1!==d.daysOfWeekDisabled.indexOf(b.day()))return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&P(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!Q(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){return b.isBetween(this[0],this[1])?(e=!0,!1):void 0}),e)return!1}return!0},S=function(){for(var b=[],c=f.clone().startOf("y").startOf("d");c.isSame(f,"y");)b.push(a("<span>").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},T=function(){var b=o.find(".datepicker-months"),c=b.find("th"),g=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),R(f.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(f.year()),R(f.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),g.removeClass("active"),e.isSame(f,"y")&&!m&&g.eq(e.month()).addClass("active"),g.each(function(b){R(f.clone().month(b),"M")||a(this).addClass("disabled")})},U=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=f.clone().subtract(5,"y"),g=f.clone().add(6,"y"),h="";for(b.eq(0).find("span").attr("title",d.tooltips.prevDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.nextDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+g.year()),d.maxDate&&d.maxDate.isBefore(g,"y")&&b.eq(2).addClass("disabled");!c.isAfter(g,"y");)h+='<span data-action="selectYear" class="year'+(c.isSame(e,"y")&&!m?" active":"")+(R(c,"y")?"":" disabled")+'">'+c.year()+"</span>",c.add(1,"y");a.find("td").html(h)},V=function(){var a,c=o.find(".datepicker-decades"),g=c.find("th"),h=b({y:f.year()-f.year()%100-1}),i=h.clone().add(100,"y"),j=h.clone(),k=!1,l=!1,m="";for(g.eq(0).find("span").attr("title",d.tooltips.prevCentury),g.eq(2).find("span").attr("title",d.tooltips.nextCentury),c.find(".disabled").removeClass("disabled"),(h.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(h,"y"))&&g.eq(0).addClass("disabled"),g.eq(1).text(h.year()+"-"+i.year()),(h.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(i,"y"))&&g.eq(2).addClass("disabled");!h.isAfter(i,"y");)a=h.year()+12,k=d.minDate&&d.minDate.isAfter(h,"y")&&d.minDate.year()<=a,l=d.maxDate&&d.maxDate.isAfter(h,"y")&&d.maxDate.year()<=a,m+='<span data-action="selectDecade" class="decade'+(e.isAfter(h)&&e.year()<=a?" active":"")+(R(h,"y")||k||l?"":" disabled")+'" data-selection="'+(h.year()+6)+'">'+(h.year()+1)+" - "+(h.year()+12)+"</span>",h.add(12,"y");m+="<span></span><span></span><span></span>",c.find("td").html(m),g.eq(1).text(j.year()+1+"-"+h.year())},W=function(){var b,c,g,h=o.find(".datepicker-days"),i=h.find("th"),j=[],k=[];if(B()){for(i.eq(0).find("span").attr("title",d.tooltips.prevMonth),i.eq(1).attr("title",d.tooltips.selectMonth),i.eq(2).find("span").attr("title",d.tooltips.nextMonth),h.find(".disabled").removeClass("disabled"),i.eq(1).text(f.format(d.dayViewHeaderFormat)),R(f.clone().subtract(1,"M"),"M")||i.eq(0).addClass("disabled"),R(f.clone().add(1,"M"),"M")||i.eq(2).addClass("disabled"),b=f.clone().startOf("M").startOf("w").startOf("d"),g=0;42>g;g++)0===b.weekday()&&(c=a("<tr>"),d.calendarWeeks&&c.append('<td class="cw">'+b.week()+"</td>"),j.push(c)),k=["day"],b.isBefore(f,"M")&&k.push("old"),b.isAfter(f,"M")&&k.push("new"),b.isSame(e,"d")&&!m&&k.push("active"),R(b,"d")||k.push("disabled"),b.isSame(y(),"d")&&k.push("today"),(0===b.day()||6===b.day())&&k.push("weekend"),J({type:"dp.classify",date:b,classNames:k}),c.append('<td data-action="selectDay" data-day="'+b.format("L")+'" class="'+k.join(" ")+'">'+b.date()+"</td>"),b.add(1,"d");h.find("tbody").empty().append(j),T(),U(),V()}},X=function(){var b=o.find(".timepicker-hours table"),c=f.clone().startOf("d"),d=[],e=a("<tr>");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,"d")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectHour" class="hour'+(R(c,"h")?"":" disabled")+'">'+c.format(h?"HH":"hh")+"</td>"),c.add(1,"h");b.empty().append(d)},Y=function(){for(var b=o.find(".timepicker-minutes table"),c=f.clone().startOf("h"),e=[],g=a("<tr>"),h=1===d.stepping?5:d.stepping;f.isSame(c,"h");)c.minute()%(4*h)===0&&(g=a("<tr>"),e.push(g)),g.append('<td data-action="selectMinute" class="minute'+(R(c,"m")?"":" disabled")+'">'+c.format("mm")+"</td>"),c.add(h,"m");b.empty().append(e)},Z=function(){for(var b=o.find(".timepicker-seconds table"),c=f.clone().startOf("m"),d=[],e=a("<tr>");f.isSame(c,"m");)c.second()%20===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectSecond" class="second'+(R(c,"s")?"":" disabled")+'">'+c.format("ss")+"</td>"),c.add(5,"s");b.empty().append(d)},$=function(){var a,b,c=o.find(".timepicker span[data-time-component]");h||(a=o.find(".timepicker [data-action=togglePeriod]"),b=e.clone().add(e.hours()>=12?-12:12,"h"),a.text(e.format("A")),R(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(e.format(h?"HH":"hh")),c.filter("[data-time-component=minutes]").text(e.format("mm")),c.filter("[data-time-component=seconds]").text(e.format("ss")),X(),Y(),Z()},_=function(){o&&(W(),$())},aa=function(a){var b=m?null:e;if(!a)return m=!0,g.val(""),c.data("date",""),J({type:"dp.change",date:!1,oldDate:b}),void _();if(a=a.clone().locale(d.locale),x()&&a.tz(d.timeZone),1!==d.stepping)for(a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping).seconds(0);d.minDate&&a.isBefore(d.minDate);)a.add(d.stepping,"minutes");R(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data("date",e.format(i)),m=!1,_(),J({type:"dp.change",date:e.clone(),oldDate:b})):(d.keepInvalid?J({type:"dp.change",date:a,oldDate:b}):g.val(m?"":e.format(i)),J({type:"dp.error",date:a,oldDate:b}))},ba=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?l:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",I),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,J({type:"dp.hide",date:e.clone()}),g.blur(),f=e.clone(),l)):l},ca=function(){aa(null)},da=function(a){return void 0===d.parseInputDate?(!b.isMoment(a)||a instanceof Date)&&(a=y(a)):a=d.parseInputDate(a),a},ea={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),W(),K(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),W(),K(a)},pickerSwitch:function(){L(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));f.month(c),k===p?(aa(e.clone().year(f.year()).month(f.month())),d.inline||ba()):(L(-1),W()),K("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDay:function(b){var c=f.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),aa(c.date(parseInt(a(b.target).text(),10))),A()||d.keepOpen||d.inline||ba()},incrementHours:function(){var a=e.clone().add(1,"h");R(a,"h")&&aa(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,"m");R(a,"m")&&aa(a)},incrementSeconds:function(){var a=e.clone().add(1,"s");R(a,"s")&&aa(a)},decrementHours:function(){var a=e.clone().subtract(1,"h");R(a,"h")&&aa(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,"m");R(a,"m")&&aa(a)},decrementSeconds:function(){var a=e.clone().subtract(1,"s");R(a,"s")&&aa(a)},togglePeriod:function(){aa(e.clone().add(e.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),aa(e.clone().hours(c)),ea.showPicker.call(l)},selectMinute:function(b){aa(e.clone().minutes(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},selectSecond:function(b){aa(e.clone().seconds(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},clear:ca,today:function(){var a=y();R(a,"d")&&aa(a)},close:ba},fa=function(b){return a(b.currentTarget).is(".disabled")?!1:(ea[a(b.currentTarget).data("action")].apply(l,arguments),!1)},ga=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop("disabled")||!d.ignoreReadonly&&g.prop("readonly")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?aa(da(g.val().trim())):m&&d.useCurrent&&(d.inline||g.is("input")&&0===g.val().trim().length)&&(b=y(),"string"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),aa(b)),o=G(),M(),S(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),_(),L(),a(window).on("resize",I),o.on("click","[data-action]",fa),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),I(),o.show(),d.focusOnShow&&!g.is(":focus")&&g.focus(),J({type:"dp.show"}),l)},ha=function(){return o?ba():ga()},ia=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k="p";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ja=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ka=function(b){var c=a(b.target).val().trim(),d=c?da(c):null;return aa(d),b.stopImmediatePropagation(),!1},la=function(){g.on({change:ka,blur:d.debug?"":ba,keydown:ia,keyup:ja,focus:d.allowInputToggle?ga:""}),c.is("input")?g.on({focus:ga}):n&&(n.on("click",ha),n.on("mousedown",!1))},ma=function(){g.off({change:ka,blur:blur,keydown:ia,keyup:ja,focus:d.allowInputToggle?ba:""}),c.is("input")?g.off({focus:ga}):n&&(n.off("click",ha),n.off("mousedown",!1))},na=function(b){var c={};return a.each(b,function(){var a=da(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},oa=function(b){var c={};return a.each(b,function(){c[this]=!0}),Object.keys(c).length?c:!1},pa=function(){var a=d.format||"L LT";i=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf("a")<1&&i.replace(/\[.*?\]/g,"").indexOf("h")<1,z("y")&&(p=2),z("M")&&(p=1),z("d")&&(p=0),k=Math.max(p,k),m||aa(e)};if(l.destroy=function(){ba(),ma(),c.removeData("DateTimePicker"),c.removeData("date")},l.toggle=ha,l.show=ga,l.hide=ba,l.disable=function(){return ba(),n&&n.hasClass("btn")&&n.addClass("disabled"),g.prop("disabled",!0),l},l.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),g.prop("disabled",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError("option "+a+" is not recognized!");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return aa(null===a?null:da(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a string or boolean:false parameter "+a);return d.format=a,i&&pa(),l},l.timeZone=function(a){if(0===arguments.length)return d.timeZone;if("string"!=typeof a)throw new TypeError("newZone() expects a string parameter");return d.timeZone=a,l},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,j&&pa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=na(b),d.enabledDates=!1,_(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=na(b),d.disabledDates=!1,_(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,_(),l;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!R(e,"d");){if(e.add(1,"d"),31===b)throw"Tried 31 times to find a valid date";b++}aa(e)}return _(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&aa(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,"m")),_(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&aa(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,"m")),_(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;"string"==typeof a&&(a="now"===a||"moment"===a?y():y(a));var b=da(a);if(!b.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!R(b))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=b,(d.defaultDate&&d.inline||""===g.val().trim())&&aa(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&pa(),o&&(ba(),ga()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?l:(d.collapse=a,o&&(ba(),ga()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(ba(),ga()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(ba(),ga()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(ba(),ga()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,k=Math.max(r.indexOf(a),p),L(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(ba(),ga()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return _(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,_(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(ba(),ga()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(ba(),ga()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(ba(),ga()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,l},l.clear=function(){return ca(),l},l.keyBinds=function(a){return 0===arguments.length?d.keyBinds:(d.keyBinds=a,l)},l.getMoment=function(a){return y(a)},l.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");
18
+ return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate;if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,_(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(d.disabledHours=oa(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=oa(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return f=da(a),K(),l},c.is("input"))g=c;else if(g=c.find(d.datepickerInput),0===g.length)g=c.find("input");else if(!g.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").length?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!g.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return e=y(),f=e.clone(),a.extend(!0,d,H()),l.options(d),pa(),la(),g.prop("disabled")&&l.disable(),g.is("input")&&0!==g.val().trim().length?aa(da(g.val().trim())):d.defaultDate&&void 0===g.attr("placeholder")&&aa(d.defaultDate),d.inline&&ga(),l};return a.fn.factoryBootstrap430_DatetimePickerControl=function(b){b=b||{};var d,e=Array.prototype.slice.call(arguments,1),f=!0,g=["destroy","hide","show","toggle"];if("object"==typeof b)return this.each(function(){var d,e=a(this);e.data("DateTimePicker")||(d=a.extend(!0,{},a.fn.factoryBootstrap430_DatetimePickerControl.defaults,b),e.data("DateTimePicker",c(e,d)))});if("string"==typeof b)return this.each(function(){var c=a(this),g=c.data("DateTimePicker");if(!g)throw new Error('bootstrap-datetimepicker("'+b+'") method was called on an element that is not using DateTimePicker');d=g[b].apply(g,e),f=d===g}),f||a.inArray(b,g)>-1?this:d;throw new TypeError("Invalid arguments for DateTimePicker: "+b)},a.fn.factoryBootstrap430_DatetimePickerControl.defaults={timeZone:"",format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"fa fa-clock-o",date:"fa fa-calendar",up:"fa fa-arrow-up",down:"fa fa-arrow-down",previous:"fa fa-arrow-left",next:"fa fa-arrow-right",today:"fa fa-thumb-tack",clear:"fa fa-trash",close:"fa fa-times"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(7,"d")):this.date(b.clone().add(this.stepping(),"m"))}},down:function(a){if(!a)return void this.show();var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(7,"d")):this.date(b.clone().subtract(this.stepping(),"m"))},"control up":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(1,"y")):this.date(b.clone().add(1,"h"))}},"control down":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(1,"y")):this.date(b.clone().subtract(1,"h"))}},left:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"d"))}},right:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"d"))}},pageUp:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a&&a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(this.getMoment())},"delete":function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1},a.fn.factoryBootstrap430_DatetimePickerControl}),function(a){a(function(){a(".factory-bootstrap-430 .factory-datetimepicker").factoryBootstrap430_DatetimePickerControl(),a(".factory-bootstrap-430 .factory-datetimepicker-range-0").factoryBootstrap430_DatetimePickerControl(),a(".factory-bootstrap-430 .factory-datetimepicker-range-1").factoryBootstrap430_DatetimePickerControl({useCurrent:!1}),a(".factory-bootstrap-430 .factory-datetimepicker-range-0").on("dp.change",function(b){a(".factory-bootstrap-430 .factory-datetimepicker-range-1").data("DateTimePicker").minDate(b.date)}),a(".factory-bootstrap-430 .factory-datetimepicker-range-1").on("dp.change",function(b){a(".factory-bootstrap-430 .factory-datetimepicker-range-0").data("DateTimePicker").maxDate(b.date)})})}(jQuery);
libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- +function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=factory-dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}},a.fn.factoryBootstrap426_dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.factoryBootstrap426_dropdown.Constructor=f,a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ +function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=factory-dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}},a.fn.factoryBootstrap430_dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.factoryBootstrap430_dropdown.Constructor=f,a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(jQuery);
libs/factory/bootstrap/assets/js-min/bootstrap.modal.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- +function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="factory-bootstrap-426-modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.factoryBootstrap426_modal;a.fn.factoryBootstrap426_modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.factoryBootstrap426_modal.Constructor=b,a.fn.factoryBootstrap426_modal.noConflict=function(){return a.fn.factoryBootstrap426_modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="factory-modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("factory-modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.factoryBootstrap426_modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ +function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="factory-bootstrap-430-modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.factoryBootstrap430_modal;a.fn.factoryBootstrap430_modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.factoryBootstrap430_modal.Constructor=b,a.fn.factoryBootstrap430_modal.noConflict=function(){return a.fn.factoryBootstrap430_modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="factory-modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("factory-modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.factoryBootstrap430_modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.checkbox.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){var b=function(b){var c=this;this.$element=a(b),this.$result=this.$element.find(".factory-result"),this.$on=this.$element.find(".factory-on"),this.$off=this.$element.find(".factory-off");var d=this.$element.is(".factory-tumbler"),e=this.$element.is(".factory-has-tumbler-hint"),f=this.$element.data("tumbler-function"),g=this.$element.data("tumbler-delay");g||(g=3e3),this.callByPath=function(a,b){for(var c=a.split("."),d=window,e=0;e<c.length;e++)d=d[c[e]];d.apply(d,b)},this.$on.click(function(){return c.$off.removeClass("active"),c.$on.addClass("active"),d?setTimeout(function(){c.$on.removeClass("active"),c.$off.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.attr("checked","checked"),c.$result.val(1),c.$result.trigger("change")),!1}),this.$off.click(function(){return c.$on.removeClass("active"),c.$off.addClass("active"),d?setTimeout(function(){c.$off.removeClass("active"),c.$on.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.removeAttr("checked"),c.$result.val(0),c.$result.trigger("change")),!1}),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){(void 0!==window.__factory_checkbox_control_events_off_data||void 0!==window.__factory_checkbox_control_events_on_data)&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.prop("checked"),f=window.__factory_checkbox_control_events_on_data[d],g=window.__factory_checkbox_control_events_off_data[d];if(f||g){var h,i;void 0===window.__factory_checkbox_control_detach_elements&&(window.__factory_checkbox_control_detach_elements={}),h=window.__factory_checkbox_control_detach_elements,i=e?f:g;for(var j in i)if(i.hasOwnProperty(j)){var k,l=i[j];a.isArray(l)||(k=c.hashCode(d+l));var m;switch(j){case"hide":"string"==typeof l&&a(l).hide(0);break;case"show":"string"==typeof l&&a(l).fadeIn(200);break;case"detach":"string"==typeof l&&a(l).each(function(b){h[k]||(h[k]={}),h[k][b]||(h[k][b]={}),h[k][b].recovery_contanier=a(this).parent(),h[k][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(h[k]){for(var n in h[k])h[k].hasOwnProperty(n)&&h[k][n].recovery_contanier&&h[k][n].element&&h[k][n].recovery_contanier.append(h[k][n].element);delete h[k]}break;case"removeClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).removeClass(l[m]);break;case"addClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).addClass(l[m]);break;case"setValue":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&void 0!==l[m]&&null!==l[m]&&(console.log(l[m]),a(m).val(l[m]))}}}},this.executeEvents(this.$result)};a.fn.factoryBootstrap426_checkboxControl=function(c){if("string"==typeof c){var d=a(this).data("factory.checkbox.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.checkbox.control");d||c.data("factory.checkbox.control",d=new b(this))})},a.fn.factoryBootstrap426_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-426 .factory-checkbox.factory-buttons-way").factoryBootstrap426_checkboxControl()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){var b=function(b){var c=this;this.$element=a(b),this.$result=this.$element.find(".factory-result"),this.$on=this.$element.find(".factory-on"),this.$off=this.$element.find(".factory-off");var d=this.$element.is(".factory-tumbler"),e=this.$element.is(".factory-has-tumbler-hint"),f=this.$element.data("tumbler-function"),g=this.$element.data("tumbler-delay");g||(g=3e3),this.callByPath=function(a,b){for(var c=a.split("."),d=window,e=0;e<c.length;e++)d=d[c[e]];d.apply(d,b)},this.$on.click(function(){return c.$off.removeClass("active"),c.$on.addClass("active"),d?setTimeout(function(){c.$on.removeClass("active"),c.$off.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.attr("checked","checked"),c.$result.val(1),c.$result.trigger("change")),!1}),this.$off.click(function(){return c.$on.removeClass("active"),c.$off.addClass("active"),d?setTimeout(function(){c.$off.removeClass("active"),c.$on.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.removeAttr("checked"),c.$result.val(0),c.$result.trigger("change")),!1}),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){(void 0!==window.__factory_checkbox_control_events_off_data||void 0!==window.__factory_checkbox_control_events_on_data)&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.prop("checked"),f=window.__factory_checkbox_control_events_on_data[d],g=window.__factory_checkbox_control_events_off_data[d];if(f||g){var h,i;void 0===window.__factory_checkbox_control_detach_elements&&(window.__factory_checkbox_control_detach_elements={}),h=window.__factory_checkbox_control_detach_elements,i=e?f:g;for(var j in i)if(i.hasOwnProperty(j)){var k,l=i[j];a.isArray(l)||(k=c.hashCode(d+l));var m;switch(j){case"hide":"string"==typeof l&&a(l).hide(0);break;case"show":"string"==typeof l&&a(l).fadeIn(200);break;case"detach":"string"==typeof l&&a(l).each(function(b){h[k]||(h[k]={}),h[k][b]||(h[k][b]={}),h[k][b].recovery_contanier=a(this).parent(),h[k][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(h[k]){for(var n in h[k])h[k].hasOwnProperty(n)&&h[k][n].recovery_contanier&&h[k][n].element&&h[k][n].recovery_contanier.append(h[k][n].element);delete h[k]}break;case"removeClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).removeClass(l[m]);break;case"addClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).addClass(l[m]);break;case"setValue":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&void 0!==l[m]&&null!==l[m]&&(console.log(l[m]),a(m).val(l[m]))}}}},this.executeEvents(this.$result)};a.fn.factoryBootstrap430_checkboxControl=function(c){if("string"==typeof c){var d=a(this).data("factory.checkbox.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.checkbox.control");d||c.data("factory.checkbox.control",d=new b(this))})},a.fn.factoryBootstrap430_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-430 .factory-checkbox.factory-buttons-way").factoryBootstrap430_checkboxControl()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.color-and-opacity.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a,b){a(function(){a(function(){a(".factory-bootstrap-426 .factory-color-and-opacity").each(function(){var b=a(this),c=b.find(".factory-color"),d=b.find(".factory-integer");d.change(function(){var a=d.find(".factory-result").val()/100;c.find(".factory-background").css("opacity",a)}),d.change(),d.on("click.color.factory",function(a){a.stopPropagation()})})})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a,b){a(function(){a(function(){a(".factory-bootstrap-430 .factory-color-and-opacity").each(function(){var b=a(this),c=b.find(".factory-color"),d=b.find(".factory-integer");d.change(function(){var a=d.find(".factory-result").val()/100;c.find(".factory-background").css("opacity",a)}),d.change(),d.on("click.color.factory",function(a){a.stopPropagation()})})})})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.color.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){a.widget("factoryBootstrap426.colorControl",{_create:function(){this.$element=this.element,this.$picker=this.$element.find(".factory-color-hex"),this.$preview=this.$element.find(".factory-preview"),this.$background=this.$element.find(".factory-background"),this._init()},_init:function(b){var c=this,d={width:216,palettes:["#16a086","#27ae61","#2a80b9","#8f44ad","#2d3e50","#f49c14","#c1392b","#bec3c7"],hide:!0,change:function(a,b){c.$background.css({background:b.color.toString()}),c.$element.trigger("change.color.factory",[b.color.toString()]),c.$element.trigger("updated.color.factory",[b.color.toString()])}},e=this.$element.data("picker-target");e&&(d.target=a(e)),this.$picker.factoryBootstrap426_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap426_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap426_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap426_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap426_iris("show")},getValue:function(){return this.$picker.val()},setValue:function(a,b){this.$picker.val(a),b&&self.$picker.trigger("change")}}),a(function(){a.widget.bridge("factoryBootstrap426_colorControl",a.factoryBootstrap426.colorControl),a(".factory-bootstrap-426 .factory-color").factoryBootstrap426_colorControl({})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){a.widget("factoryBootstrap430.colorControl",{_create:function(){this.$element=this.element,this.$picker=this.$element.find(".factory-color-hex"),this.$preview=this.$element.find(".factory-preview"),this.$background=this.$element.find(".factory-background"),this._init()},_init:function(b){var c=this,d={width:216,palettes:["#16a086","#27ae61","#2a80b9","#8f44ad","#2d3e50","#f49c14","#c1392b","#bec3c7"],hide:!0,change:function(a,b){c.$background.css({background:b.color.toString()}),c.$element.trigger("change.color.factory",[b.color.toString()]),c.$element.trigger("updated.color.factory",[b.color.toString()])}},e=this.$element.data("picker-target");e&&(d.target=a(e)),this.$picker.factoryBootstrap430_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap430_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap430_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap430_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap430_iris("show")},getValue:function(){return this.$picker.val()},setValue:function(a,b){this.$picker.val(a),b&&self.$picker.trigger("change")}}),a(function(){a.widget.bridge("factoryBootstrap430_colorControl",a.factoryBootstrap430.colorControl),a(".factory-bootstrap-430 .factory-color").factoryBootstrap430_colorControl({})})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.dropdown-and-colors.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){var b=function(b){var c=a(b),d=c.find(".factory-colors-inner-wrap");c.find("select").change(function(){var b=c.find("select option:selected"),e=b.data("colors"),f=d.data("radio-name");if(f&&e){d.html("");for(var g=0;g<e.length;g++){var h=e[g],i=a('<span class="factory-form-radio-item"><label class="factory-from-radio-label"><input type="radio" name="'+f+'" class="factory-radio-color" value="'+h[0]+'" checked="checked"><span style="background-color:'+h[1]+'"></span></label></span>');d.append(i)}}})};a.fn.factoryBootstrap426_dropdownAndColors=function(c){if("string"==typeof c){var d=a(this).data("factory.dropdownAndColors.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.dropdownAndColors.control");d||c.data("factory.dropdownAndColors.control",d=new b(this))})},a.fn.factoryBootstrap426_dropdownAndColors.Constructor=b,a(function(){a(".factory-bootstrap-426 .factory-dropdown-and-colors").factoryBootstrap426_dropdownAndColors()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){var b=function(b){var c=a(b),d=c.find(".factory-colors-inner-wrap");c.find("select").change(function(){var b=c.find("select option:selected"),e=b.data("colors"),f=d.data("radio-name");if(f&&e){d.html("");for(var g=0;g<e.length;g++){var h=e[g],i=a('<span class="factory-form-radio-item"><label class="factory-from-radio-label"><input type="radio" name="'+f+'" class="factory-radio-color" value="'+h[0]+'" checked="checked"><span style="background-color:'+h[1]+'"></span></label></span>');d.append(i)}}})};a.fn.factoryBootstrap430_dropdownAndColors=function(c){if("string"==typeof c){var d=a(this).data("factory.dropdownAndColors.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.dropdownAndColors.control");d||c.data("factory.dropdownAndColors.control",d=new b(this))})},a.fn.factoryBootstrap430_dropdownAndColors.Constructor=b,a(function(){a(".factory-bootstrap-430 .factory-dropdown-and-colors").factoryBootstrap430_dropdownAndColors()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.dropdown.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name")||this.$element.attr("name"),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){void 0!==window.factory_dropdown_control_events_data&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.val(),f=window.factory_dropdown_control_events_data[d];if(f&&f[e]){var g;void 0===window.__factory_dropdown_control_detach_elements&&(window.__factory_dropdown_control_detach_elements={}),g=window.__factory_dropdown_control_detach_elements;for(var h in f[e])if(f[e].hasOwnProperty(h)){var i,j=f[e][h];switch(a.isArray(j)||(i=c.hashCode(d+j)),h){case"hide":"string"==typeof j&&a(j).hide(0);break;case"show":"string"==typeof j&&a(j).fadeIn(200);break;case"detach":"string"==typeof j&&a(j).each(function(b){g[i]||(g[i]={}),g[i][b]||(g[i][b]={}),g[i][b].recovery_contanier=a(this).parent(),g[i][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(g[i]){for(var k in g[i])g[i].hasOwnProperty(k)&&g[i][k].recovery_contanier&&g[i][k].element&&g[i][k].recovery_contanier.append(g[i][k].element);delete g[i]}break;case"removeClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).removeClass(j[l]);break;case"addClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).addClass(j[l])}}}},"buttons"===this.way)this.$result=this.$element.find(".factory-result"),this.$hints=this.$element.find(".factory-hints"),this.$buttons=this.$element.find(".btn"),c.executeEvents(this.$result),this.$buttons.click(function(){var b=a(this).data("value");return c.$buttons.removeClass("active"),a(this).addClass("active"),c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+b).fadeIn(),c.$result.val(b),c.$result.trigger("change"),!1});else if("ddslick"===this.way){c.executeEvents(c.$element.find(".factory-result"));var d=window["factory_"+this.name+"_data"],e=this.$element.find(".factory-ddslick"),f=this.$element.data("width")||300,g=this.$element.data("align")||"right";a(d).each(function(){return this.imageHoverSrc?void(a("<img/>")[0].src=this.imageHoverSrc):!0}),e.ddslick({data:d,width:f,imagePosition:g,selectText:"- select -",onSelected:function(a){a.selectedData.imageHoverSrc&&c.$element.find(".dd-selected-image").attr("src",a.selectedData.imageHoverSrc);var b=c.$element.find(".factory-result").val(a.selectedData.value);b.change()}})}else{c.executeEvents(this.$element),this.$hints=this.$element.next(),this.$hints.hasClass("factory-hints")&&(this.$element.change(function(){return c.updateHints(),!1}),this.updateHints=function(){var a=c.$element.val();c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+a).show()},c.updateHints()),this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(a){console&&console.log&&console.log(a.responseText),c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length)for(var d in a){var e=a[d];c.addListItem(e)}else this.$element.append("<option>"+b.emptyList+"</li>");this.$element.trigger("factory-loaded")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<option />").attr("value",b.value).text(b.title).appendTo(this.$element),e=c.getAjaxData();e.selected&&e.selected==b.value&&d.attr("selected","selected")},this.showError=function(b){this.clearList();var d=a("<div class='factory-control-error'></div>").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),e=c.getAjaxData();this.$element.append("<option>"+e.emptyList+"</li>"),this.$element.after(d),this.$element.addClass("factory-has-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var h=this.$element.data("ajax");h&&this.loadData()}};a.fn.factoryBootstrap426_dropdownControl=function(c){if("string"==typeof c){var d=a(this).data("factory.dropdown.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.dropdown.control");d||c.data("factory.dropdown.control",d=new b(this))})},a.fn.factoryBootstrap426_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-426 .factory-dropdown").factoryBootstrap426_dropdownControl()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name")||this.$element.attr("name"),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){void 0!==window.factory_dropdown_control_events_data&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.val(),f=window.factory_dropdown_control_events_data[d];if(f&&f[e]){var g;void 0===window.__factory_dropdown_control_detach_elements&&(window.__factory_dropdown_control_detach_elements={}),g=window.__factory_dropdown_control_detach_elements;for(var h in f[e])if(f[e].hasOwnProperty(h)){var i,j=f[e][h];switch(a.isArray(j)||(i=c.hashCode(d+j)),h){case"hide":"string"==typeof j&&a(j).hide(0);break;case"show":"string"==typeof j&&a(j).fadeIn(200);break;case"detach":"string"==typeof j&&a(j).each(function(b){g[i]||(g[i]={}),g[i][b]||(g[i][b]={}),g[i][b].recovery_contanier=a(this).parent(),g[i][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(g[i]){for(var k in g[i])g[i].hasOwnProperty(k)&&g[i][k].recovery_contanier&&g[i][k].element&&g[i][k].recovery_contanier.append(g[i][k].element);delete g[i]}break;case"removeClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).removeClass(j[l]);break;case"addClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).addClass(j[l])}}}},"buttons"===this.way)this.$result=this.$element.find(".factory-result"),this.$hints=this.$element.find(".factory-hints"),this.$buttons=this.$element.find(".btn"),c.executeEvents(this.$result),this.$buttons.click(function(){var b=a(this).data("value");return c.$buttons.removeClass("active"),a(this).addClass("active"),c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+b).fadeIn(),c.$result.val(b),c.$result.trigger("change"),!1});else if("ddslick"===this.way){c.executeEvents(c.$element.find(".factory-result"));var d=window["factory_"+this.name+"_data"],e=this.$element.find(".factory-ddslick"),f=this.$element.data("width")||300,g=this.$element.data("align")||"right";a(d).each(function(){return this.imageHoverSrc?void(a("<img/>")[0].src=this.imageHoverSrc):!0}),e.ddslick({data:d,width:f,imagePosition:g,selectText:"- select -",onSelected:function(a){a.selectedData.imageHoverSrc&&c.$element.find(".dd-selected-image").attr("src",a.selectedData.imageHoverSrc);var b=c.$element.find(".factory-result").val(a.selectedData.value);b.change()}})}else{c.executeEvents(this.$element),this.$hints=this.$element.next(),this.$hints.hasClass("factory-hints")&&(this.$element.change(function(){return c.updateHints(),!1}),this.updateHints=function(){var a=c.$element.val();c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+a).show()},c.updateHints()),this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(a){console&&console.log&&console.log(a.responseText),c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length)for(var d in a){var e=a[d];c.addListItem(e)}else this.$element.append("<option>"+b.emptyList+"</li>");this.$element.trigger("factory-loaded")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<option />").attr("value",b.value).text(b.title).appendTo(this.$element),e=c.getAjaxData();e.selected&&e.selected==b.value&&d.attr("selected","selected")},this.showError=function(b){this.clearList();var d=a("<div class='factory-control-error'></div>").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),e=c.getAjaxData();this.$element.append("<option>"+e.emptyList+"</li>"),this.$element.after(d),this.$element.addClass("factory-has-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var h=this.$element.data("ajax");h&&this.loadData()}};a.fn.factoryBootstrap430_dropdownControl=function(c){if("string"==typeof c){var d=a(this).data("factory.dropdown.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.dropdown.control");d||c.data("factory.dropdown.control",d=new b(this))})},a.fn.factoryBootstrap430_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-430 .factory-dropdown").factoryBootstrap430_dropdownControl()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.fonts.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){a.widget("factoryBootstrap426.fontControl",{_create:function(){this.$element=this.element,this.$family=this.$element.find(".factory-family-wrap select"),this.$googleFontData=this.$element.find(".factory-google-font-data"),this.fontSelectorName=this.$family.attr("name"),this.googleFontsOptions={frameName:this.element.data("google-fonts-frame-name")},this.googleFontsOptions.frameName||(this.googleFontsOptions.frameName="preview"),this._initUI(),this._bindEvents()},_initUI:function(){this.$family.chosen()},_bindEvents:function(){var a=this;this.$family.change(function(b){var c=a._getCurrentOption(),d=c.data("google-font");if(d){var e=c.data("family"),f=c.data("variants").split(","),g=c.data("subsets").split(",");a._loadGoogleFont(e,f,g)}else a.$googleFontData.val("")})},_getCurrentOption:function(){var a=this.$family.val();return this._getOptionByValue(a)},_getOptionByValue:function(a){var b=this.$family.find("option[value='"+a+"']");return b},_loadGoogleFont:function(b,c,d){var c=this._filterGoogleFontVariantsBeforeLoading(b,c,d),d=this._filterGoogleFontSubsetsBeforeLoading(b,c,d);this.$googleFontData.val(this._encode64(JSON.stringify({name:b,styles:c,subsets:d})));var e=this._getTargetToLoadGoogleFont(),f=this.fontSelectorName+"-font-loader",g=e.find("#"+f);e.find("#"+f).length>0&&g.remove();var h="http://fonts.googleapis.com/css";c&&c.length&&(b=b+":"+c.join(",")),h=h+"?family="+b,d&&d.length&&(h=h+"&subset="+d.join(",")),a('<link id="'+f+'" rel="stylesheet" type="text/css" href="'+h+'" >').appendTo(e)},_filterGoogleFontVariantsBeforeLoading:function(b,c,d){var e=this;return a(document).trigger("factory-filter-google-font-variants",[c,e.$element,b,d]),c},_filterGoogleFontSubsetsBeforeLoading:function(b,c,d){var e=this;return a(document).trigger("factory-filter-google-font-subsets",[d,e.$element,c,d]),d},_getTargetToLoadGoogleFont:function(){var b=this.googleFontsOptions.frameName,c=a("head");if(b){var d=a('iframe[name="'+b+'"]');if(0===d.length)return console.error("The preview container not found.");c=d.contents().find("head")}return c},_base64KeyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_encode64:function(a){a=escape(a);var b,c,d,e,f,g="",h="",i="",j=0;do b=a.charCodeAt(j++),c=a.charCodeAt(j++),h=a.charCodeAt(j++),d=b>>2,e=(3&b)<<4|c>>4,f=(15&c)<<2|h>>6,i=63&h,isNaN(c)?f=i=64:isNaN(h)&&(i=64),g=g+this._base64KeyStr.charAt(d)+this._base64KeyStr.charAt(e)+this._base64KeyStr.charAt(f)+this._base64KeyStr.charAt(i),b=c=h="",d=e=f=i="";while(j<a.length);return g}}),a(function(){a.widget.bridge("factoryBootstrap426_fontControl",a.factoryBootstrap426.fontControl),a(".factory-bootstrap-426 .factory-font").factoryBootstrap426_fontControl({})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){a.widget("factoryBootstrap430.fontControl",{_create:function(){this.$element=this.element,this.$family=this.$element.find(".factory-family-wrap select"),this.$googleFontData=this.$element.find(".factory-google-font-data"),this.fontSelectorName=this.$family.attr("name"),this.googleFontsOptions={frameName:this.element.data("google-fonts-frame-name")},this.googleFontsOptions.frameName||(this.googleFontsOptions.frameName="preview"),this._initUI(),this._bindEvents()},_initUI:function(){this.$family.chosen()},_bindEvents:function(){var a=this;this.$family.change(function(b){var c=a._getCurrentOption(),d=c.data("google-font");if(d){var e=c.data("family"),f=c.data("variants").split(","),g=c.data("subsets").split(",");a._loadGoogleFont(e,f,g)}else a.$googleFontData.val("")})},_getCurrentOption:function(){var a=this.$family.val();return this._getOptionByValue(a)},_getOptionByValue:function(a){var b=this.$family.find("option[value='"+a+"']");return b},_loadGoogleFont:function(b,c,d){var c=this._filterGoogleFontVariantsBeforeLoading(b,c,d),d=this._filterGoogleFontSubsetsBeforeLoading(b,c,d);this.$googleFontData.val(this._encode64(JSON.stringify({name:b,styles:c,subsets:d})));var e=this._getTargetToLoadGoogleFont(),f=this.fontSelectorName+"-font-loader",g=e.find("#"+f);e.find("#"+f).length>0&&g.remove();var h="http://fonts.googleapis.com/css";c&&c.length&&(b=b+":"+c.join(",")),h=h+"?family="+b,d&&d.length&&(h=h+"&subset="+d.join(",")),a('<link id="'+f+'" rel="stylesheet" type="text/css" href="'+h+'" >').appendTo(e)},_filterGoogleFontVariantsBeforeLoading:function(b,c,d){var e=this;return a(document).trigger("factory-filter-google-font-variants",[c,e.$element,b,d]),c},_filterGoogleFontSubsetsBeforeLoading:function(b,c,d){var e=this;return a(document).trigger("factory-filter-google-font-subsets",[d,e.$element,c,d]),d},_getTargetToLoadGoogleFont:function(){var b=this.googleFontsOptions.frameName,c=a("head");if(b){var d=a('iframe[name="'+b+'"]');if(0===d.length)return console.error("The preview container not found.");c=d.contents().find("head")}return c},_base64KeyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_encode64:function(a){a=escape(a);var b,c,d,e,f,g="",h="",i="",j=0;do b=a.charCodeAt(j++),c=a.charCodeAt(j++),h=a.charCodeAt(j++),d=b>>2,e=(3&b)<<4|c>>4,f=(15&c)<<2|h>>6,i=63&h,isNaN(c)?f=i=64:isNaN(h)&&(i=64),g=g+this._base64KeyStr.charAt(d)+this._base64KeyStr.charAt(e)+this._base64KeyStr.charAt(f)+this._base64KeyStr.charAt(i),b=c=h="",d=e=f=i="";while(j<a.length);return g}}),a(function(){a.widget.bridge("factoryBootstrap430_fontControl",a.factoryBootstrap430.fontControl),a(".factory-bootstrap-430 .factory-font").factoryBootstrap430_fontControl({})})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.gradient.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){var b=function(b){this.$element=a(b),this.$picker=this.$element.find(".factory-gradient-picker"),this.$result=this.$element.find(".factory-result"),this.init()};b.prototype.init=function(){var a=this,b=this.$element.data("directions"),c=this.$element.data("points"),d=c?c.split(","):[];this.$picker.gradientPicker({change:function(b,c){a.$result.val(c).trigger("keyup")},fillDirection:b,controlPoints:d})},a.fn.factoryBootstrap426_gradientControl=function(c){return this.each(function(){var d=a(this),e=d.data("factory.gradient-control");e||d.data("factory.gradient-control",e=new b(this)),"string"==typeof c&&e[c].call(e)})},a.fn.factoryBootstrap426_gradientControl.Constructor=b,a(function(){a(".factory-bootstrap-426 .factory-gradient").factoryBootstrap426_gradientControl()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){var b=function(b){this.$element=a(b),this.$picker=this.$element.find(".factory-gradient-picker"),this.$result=this.$element.find(".factory-result"),this.init()};b.prototype.init=function(){var a=this,b=this.$element.data("directions"),c=this.$element.data("points"),d=c?c.split(","):[];this.$picker.gradientPicker({change:function(b,c){a.$result.val(c).trigger("keyup")},fillDirection:b,controlPoints:d})},a.fn.factoryBootstrap430_gradientControl=function(c){return this.each(function(){var d=a(this),e=d.data("factory.gradient-control");e||d.data("factory.gradient-control",e=new b(this)),"string"==typeof c&&e[c].call(e)})},a.fn.factoryBootstrap430_gradientControl.Constructor=b,a(function(){a(".factory-bootstrap-430 .factory-gradient").factoryBootstrap430_gradientControl()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.integer.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){var b=function(b){this.$element=a(b),this.$element.hasClass("factory-has-slider")&&this.createSlider()};b.prototype.createSlider=function(){var a=this,b=this.$element.find(".factory-slider-container");this.$bar=b.find(".factory-bar"),this.$result=b.find(".factory-result"),this.$visibleValue=b.find(".factory-visible-value"),this.units=b.data("units"),this.rangeStart=b.data("range-start"),this.rangeEnd=b.data("range-end"),this.step=b.data("step"),this.step||(this.step=1);var c=this.$result.val();this.$bar.noUiSlider({start:parseInt(c),range:{min:a.rangeStart,max:a.rangeEnd},connect:"lower",step:a.step}),this.$bar.on("slide set",function(){a.setValue(parseInt(a.$bar.val()))})},b.prototype.setValue=function(a,b){this.$result.val(a),this.$visibleValue.length>0&&(this.units?this.$visibleValue.text(a+this.units):this.$visibleValue.text(a)),b&&this.$bar.noUiSlider({start:a},!0),this.$result.trigger("keyup"),this.$element.trigger("change")},b.prototype.getValue=function(){return this.$result.val()},b.prototype.api=function(){return this},a.fn.factoryBootstrap426_integerControl=function(c){if("string"==typeof c){var d=a(this).data("factory.integer-control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.integer-control");d||c.data("factory.integer-control",d=new b(this))})},a.fn.factoryBootstrap426_integerControl.Constructor=b,a(function(){a(".factory-bootstrap-426 .factory-integer").factoryBootstrap426_integerControl()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){var b=function(b){this.$element=a(b),this.$element.hasClass("factory-has-slider")&&this.createSlider()};b.prototype.createSlider=function(){var a=this,b=this.$element.find(".factory-slider-container");this.$bar=b.find(".factory-bar"),this.$result=b.find(".factory-result"),this.$visibleValue=b.find(".factory-visible-value"),this.units=b.data("units"),this.rangeStart=b.data("range-start"),this.rangeEnd=b.data("range-end"),this.step=b.data("step"),this.step||(this.step=1);var c=this.$result.val();this.$bar.noUiSlider({start:parseInt(c),range:{min:a.rangeStart,max:a.rangeEnd},connect:"lower",step:a.step}),this.$bar.on("slide set",function(){a.setValue(parseInt(a.$bar.val()))})},b.prototype.setValue=function(a,b){this.$result.val(a),this.$visibleValue.length>0&&(this.units?this.$visibleValue.text(a+this.units):this.$visibleValue.text(a)),b&&this.$bar.noUiSlider({start:a},!0),this.$result.trigger("keyup"),this.$element.trigger("change")},b.prototype.getValue=function(){return this.$result.val()},b.prototype.api=function(){return this},a.fn.factoryBootstrap430_integerControl=function(c){if("string"==typeof c){var d=a(this).data("factory.integer-control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.integer-control");d||c.data("factory.integer-control",d=new b(this))})},a.fn.factoryBootstrap430_integerControl.Constructor=b,a(function(){a(".factory-bootstrap-430 .factory-integer").factoryBootstrap430_integerControl()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.list.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name"),"checklist"===this.way){this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(){c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length){this.$element.removeClass("factory-empty");for(var d in a){var e=a[d];c.addListItem(e)}}else this.$element.addClass("factory-empty"),this.$element.append("<li>"+b.emptyList+"</li>")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<li>"),e=a("<label>").attr("for","factory-checklist-"+c.name+"-"+b.value).appendTo(d),f=a("<span>").appendTo(e),g=a("<input />").attr("type","checkbox").attr("name",c.name+"[]").val(b.value).attr("id","factory-checklist-"+c.name+"-"+b.value).appendTo(f),h=(a("<span>"+b.title+"</span>").appendTo(e),c.getAjaxData());h.selected.length&&a.inArray(b.value,h.selected)>=0&&g.attr("checked","checked"),this.$element.append(d)},this.showError=function(b){this.$element.html("").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),this.$element.addClass("factory-list-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var d=this.$element.data("ajax");d&&this.loadData()}};a.fn.factoryBootstrap426_listControl=function(c){if("string"==typeof c){var d=a(this).data("factory.list.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.list.control");d||c.data("factory.list.control",d=new b(this))})},a.fn.factoryBootstrap426_listControl.Constructor=b,a(function(){a(".factory-bootstrap-426 .factory-list").factoryBootstrap426_listControl()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name"),"checklist"===this.way){this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(){c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length){this.$element.removeClass("factory-empty");for(var d in a){var e=a[d];c.addListItem(e)}}else this.$element.addClass("factory-empty"),this.$element.append("<li>"+b.emptyList+"</li>")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<li>"),e=a("<label>").attr("for","factory-checklist-"+c.name+"-"+b.value).appendTo(d),f=a("<span>").appendTo(e),g=a("<input />").attr("type","checkbox").attr("name",c.name+"[]").val(b.value).attr("id","factory-checklist-"+c.name+"-"+b.value).appendTo(f),h=(a("<span>"+b.title+"</span>").appendTo(e),c.getAjaxData());h.selected.length&&a.inArray(b.value,h.selected)>=0&&g.attr("checked","checked"),this.$element.append(d)},this.showError=function(b){this.$element.html("").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),this.$element.addClass("factory-list-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var d=this.$element.data("ajax");d&&this.loadData()}};a.fn.factoryBootstrap430_listControl=function(c){if("string"==typeof c){var d=a(this).data("factory.list.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.list.control");d||c.data("factory.list.control",d=new b(this))})},a.fn.factoryBootstrap430_listControl.Constructor=b,a(function(){a(".factory-bootstrap-430 .factory-list").factoryBootstrap430_listControl()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){"use strict";var b=function(b){this.$element=a(b);var c=a(".factory-mtextbox-item",this.$element).eq(0).clone(!0);a(".factory-mtextbox-add-item",this.$element).on("click",function(){var b=a(this).closest(".factory-multiple-textbox-group").find(".factory-mtextbox-items"),d=c.clone(!0),e=a('<button class="btn btn-default btn-small factory-mtextbox-remove-item"><i class="fa fa-times" aria-hidden="true"></i></button>');return b.append(d.append(e)),d.find('input[type="text"]').val("").focus(),!1}),a(document).on("click",".factory-mtextbox-remove-item",function(){return a(this).closest(".factory-mtextbox-item").remove(),!1})};a.fn.factoryBootstrap426_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-426 .factory-multiple-textbox-group").factoryBootstrap426_MultipleTextboxControl()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){"use strict";var b=function(b){this.$element=a(b);var c=a(".factory-mtextbox-item",this.$element).eq(0).clone(!0);a(".factory-mtextbox-add-item",this.$element).on("click",function(){var b=a(this).closest(".factory-multiple-textbox-group").find(".factory-mtextbox-items"),d=c.clone(!0),e=a('<button class="btn btn-default btn-small factory-mtextbox-remove-item"><i class="fa fa-times" aria-hidden="true"></i></button>');return b.append(d.append(e)),d.find('input[type="text"]').val("").focus(),!1}),a(document).on("click",".factory-mtextbox-remove-item",function(){return a(this).closest(".factory-mtextbox-item").remove(),!1})};a.fn.factoryBootstrap430_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-430 .factory-multiple-textbox-group").factoryBootstrap430_MultipleTextboxControl()})}(jQuery);
libs/factory/bootstrap/assets/js-min/control.pattern.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){a.widget("factoryBootstrap426.patternControl",{_create:function(){this.$element=this.element,this.$preview=this.$element.find(".factory-preview"),this.$patternResult=this.$element.find(".factory-pattern-result"),this.$colorResult=this.$element.find(".factory-color-result"),this.$patterns=this.$element.find(".factory-patterns-panel"),this.$patternItems=this.$element.find(".factory-patterns-item"),this.$btnUpload=this.$element.find(".factory-upload-btn"),this.$btnChangeColor=this.$element.find(".factory-change-color-btn"),this.$colorPanel=this.$element.find(".factory-color-panel"),this.$colorContol=this.$element.find(".factory-color"),this._initMainPanel(),this._initColorPickerPanel(),this._initPatternsPanel()},_initMainPanel:function(){var a=this;this.$preview.on("click",function(){return a.togglePatternsPanel(),!1}),this.$btnChangeColor.on("click",function(){return a.toggleColorPanel(),!1})},togglePatternsPanel:function(){this.$element.hasClass("factory-patterns-panel-active")?this.hidePatternsPanel():this.showPatternsPanel()},hidePatternsPanel:function(){this.$element.removeClass("factory-patterns-panel-active")},showPatternsPanel:function(){this.$element.addClass("factory-patterns-panel-active")},hasColor:function(){return this.$element.hasClass("factory-color-panel-active")},toggleColorPanel:function(){this.hasColor()?this.hideColorPanel():this.showColorPanel()},hideColorPanel:function(){this.$element.removeClass("factory-color-panel-active"),this.$btnChangeColor.removeClass("button-active"),this.$colorResult.val(""),this.$colorResult.trigger("change"),this.$element.trigger("change")},showColorPanel:function(){this.$element.addClass("factory-color-panel-active"),this.$btnChangeColor.addClass("button-active"),this.$colorResult.val(this.$colorContol.factoryBootstrap426_colorControl("getValue")),this.$colorResult.trigger("change"),this.$element.trigger("change")},_initColorPickerPanel:function(){var a=this;this.$colorContol.bind("updated.color.factory",function(b,c){return a.$colorResult.val(c),!1})},_initPatternsPanel:function(){var b=this,c=!0,d=wp.media.editor.send.attachment;this.$btnUpload.on("click",function(){return c=!0,wp.media.editor.send.attachment=function(a,e){return c?(b.$preview.css({background:"url("+e.url+") repeat",border:"0",fontSize:"0"}),void b.$patternResult.attr("value",e.url).trigger("change")):d.apply(this,[a,e])},wp.media.editor.open(b.$btnUpload),a(".add_media").on("click",function(){c=!1}),!1}),this.$patternItems.on("click",function(){if(a(this).data("pattern")){var c=a(this).data("pattern");b.$preview.removeClass("factory-empty"),b.$preview.css({background:"url("+c+") repeat"}),b.$patternResult.attr("value",c).trigger("change")}})}}),a(function(){a.widget.bridge("factoryBootstrap426_patternControl",a.factoryBootstrap426.patternControl),a(".factory-bootstrap-426 .factory-pattern").factoryBootstrap426_patternControl({})})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){a.widget("factoryBootstrap430.patternControl",{_create:function(){this.$element=this.element,this.$preview=this.$element.find(".factory-preview"),this.$patternResult=this.$element.find(".factory-pattern-result"),this.$colorResult=this.$element.find(".factory-color-result"),this.$patterns=this.$element.find(".factory-patterns-panel"),this.$patternItems=this.$element.find(".factory-patterns-item"),this.$btnUpload=this.$element.find(".factory-upload-btn"),this.$btnChangeColor=this.$element.find(".factory-change-color-btn"),this.$colorPanel=this.$element.find(".factory-color-panel"),this.$colorContol=this.$element.find(".factory-color"),this._initMainPanel(),this._initColorPickerPanel(),this._initPatternsPanel()},_initMainPanel:function(){var a=this;this.$preview.on("click",function(){return a.togglePatternsPanel(),!1}),this.$btnChangeColor.on("click",function(){return a.toggleColorPanel(),!1})},togglePatternsPanel:function(){this.$element.hasClass("factory-patterns-panel-active")?this.hidePatternsPanel():this.showPatternsPanel()},hidePatternsPanel:function(){this.$element.removeClass("factory-patterns-panel-active")},showPatternsPanel:function(){this.$element.addClass("factory-patterns-panel-active")},hasColor:function(){return this.$element.hasClass("factory-color-panel-active")},toggleColorPanel:function(){this.hasColor()?this.hideColorPanel():this.showColorPanel()},hideColorPanel:function(){this.$element.removeClass("factory-color-panel-active"),this.$btnChangeColor.removeClass("button-active"),this.$colorResult.val(""),this.$colorResult.trigger("change"),this.$element.trigger("change")},showColorPanel:function(){this.$element.addClass("factory-color-panel-active"),this.$btnChangeColor.addClass("button-active"),this.$colorResult.val(this.$colorContol.factoryBootstrap430_colorControl("getValue")),this.$colorResult.trigger("change"),this.$element.trigger("change")},_initColorPickerPanel:function(){var a=this;this.$colorContol.bind("updated.color.factory",function(b,c){return a.$colorResult.val(c),!1})},_initPatternsPanel:function(){var b=this,c=!0,d=wp.media.editor.send.attachment;this.$btnUpload.on("click",function(){return c=!0,wp.media.editor.send.attachment=function(a,e){return c?(b.$preview.css({background:"url("+e.url+") repeat",border:"0",fontSize:"0"}),void b.$patternResult.attr("value",e.url).trigger("change")):d.apply(this,[a,e])},wp.media.editor.open(b.$btnUpload),a(".add_media").on("click",function(){c=!1}),!1}),this.$patternItems.on("click",function(){if(a(this).data("pattern")){var c=a(this).data("pattern");b.$preview.removeClass("factory-empty"),b.$preview.css({background:"url("+c+") repeat"}),b.$patternResult.attr("value",c).trigger("change")}})}}),a(function(){a.widget.bridge("factoryBootstrap430_patternControl",a.factoryBootstrap430.patternControl),a(".factory-bootstrap-430 .factory-pattern").factoryBootstrap430_patternControl({})})}(jQuery);
libs/factory/bootstrap/assets/js-min/holder.more-link.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a,b,c,d){"use strict";var e="factoryBootstrap426_moreLink";a.fn[e]=function(b,c){return this.each(function(){var b=a(this);b.find(".factory-more-link-show").click(function(){return a(a(this).attr("href")).fadeIn(),a(this).hide(),!1}),b.find(".factory-more-link-hide").click(function(){var b=a(a(this).attr("href"));return b.fadeOut(300,function(){b.parents(".factory-more-link").find(".factory-more-link-show").show()}),!1})})},a(function(){a(".factory-bootstrap-426 .factory-more-link").factoryBootstrap426_moreLink()})}(jQuery,window,document);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a,b,c,d){"use strict";var e="factoryBootstrap430_moreLink";a.fn[e]=function(b,c){return this.each(function(){var b=a(this);b.find(".factory-more-link-show").click(function(){return a(a(this).attr("href")).fadeIn(),a(this).hide(),!1}),b.find(".factory-more-link-hide").click(function(){var b=a(a(this).attr("href"));return b.fadeOut(300,function(){b.parents(".factory-more-link").find(".factory-more-link-show").show()}),!1})})},a(function(){a(".factory-bootstrap-430 .factory-more-link").factoryBootstrap430_moreLink()})}(jQuery,window,document);
libs/factory/bootstrap/assets/js-min/plugin.gradient-picker.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function($){function ctrlPtComparator(a,b){return a.position-b.position}function bind(a,b){return"function"==typeof a.bind?a.bind(b):function(){a.apply(b,arguments)}}function GradientSelection(a,b){var c=this;this.$el=a,this.$presets=this.$el.find(".gradientPicker-pallets"),this.$presetsItems=this.$presets.find(".factory-preset-gradient"),this.$preview=this.$el.find(".gradientPicker-preview"),this.$pointsContainer=this.$el.find(".factory-points"),this.$colorPickerContainer=this.$el.find(".factory-color-picker-container"),this.$colorPicker=this.$el.find(".factory-color-picker"),this.$colorHex=this.$el.find(".factory-color-hex"),this.$opacitySliderContainer=this.$el.find(".factory-slider-container"),this.$opacitySlider=this.$el.find(".factory-bar"),this.$el.css("position","relative"),this.opts=b,this._createPresetGradients(),this._createPreview(),this._createColorPicker(),this._createDirectionDropdown(),this.controlPoints=[],b.controlPoints=b.controlPoints||[];for(var d=0;d<b.controlPoints.length;++d){var e=this.createCtrlPt(b.controlPoints[d]);this.controlPoints.push(e)}0===this.controlPoints.length&&(this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("primary")+" 0% 1")),this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("secondary")+" 100% 1"))),$(document).on("click.gp.factory",function(){c.hideColorPicker()}),this.$colorPickerContainer.on("click.gp.factory",function(a){a.stopPropagation()}),this.$pointsContainer.on("click.gp.factory",function(a){a.stopPropagation(),c.placePoint(a)}),this.updatePreview()}function ControlPoint(a,b,c){var d=this;if(this.parent=a,this.$container=a.$pointsContainer,this.$el=$('<span class="factory-point"></span>'),this.$pointColor=$('<span class="factory-point-color"></span>').appendTo(this.$el),this.$container.append(this.$el),"string"==typeof b?(b=b.split(" "),this.position=parseFloat(b[1])/100,this.color=b[0],this.opacity=b[2]):(this.position=b.position,this.color=b.color,this.opacity=b.opacity),this.outerWidth=this.$el.outerWidth(),this.$pointColor.css({"background-color":d.color,opacity:d.opacity}),"horizontal"===c){var e=(d.$container.width()-this.$el.outerWidth())*this.position;this.$el.css("left",e)}else{var f=(d.$container.height()-this.$el.outerHeight())*this.position;this.$el.css("top",f)}this.drag=bind(this.drag,this),this.stop=bind(this.stop,this),this.$el.disableSelection().css("webkit-user-select","none").draggable({axis:"horizontal"===c?"x":"y",drag:this.drag,stop:this.stop,containment:d.$container,cancel:null}),this.$el.on("click.gp.factory",function(a){d.parent.currentPoint===d?d.parent.hideColorPicker(d):d.parent.showColorPicker(d),a.stopPropagation()})}$.event.special.destroyed||($.event.special.destroyed={remove:function(a){a.handler&&a.handler()}});var agent=window.navigator.userAgent,browserPrefix=["-webkit-","-moz-","-ms-"],x,y=0;GradientSelection.prototype={_createPresetGradients:function(){var a=this;this.$presetsItems.each(function(){var a=$(this),b=$('<span class="factory-secondary-color-wrap"></span>').appendTo(a),c=$('<span class="factory-secondary-color"></span>').appendTo(b);a.css("background",a.data("primary")),c.css("background",a.data("secondary"))}),this.$presetsItems.click(function(){var b=$(this).data("primary"),c=$(this).data("secondary");a.setGradient([b+" 0% 1",c+" 100% 1"])})},_createPreview:function(){var a=this.$preview[0];a.width=0===a.clientWidth?210:a.clientWidth,a.height=0===a.clientHeight?30:a.clientHeight,this.g2d=a.getContext("2d")},_createColorPicker:function(){var a=this;this.$colorPicker.factoryBootstrap426_iris({width:217,palettes:["#16a086","#27ae61","#2a80b9","#8f44ad","#2d3e50","#f49c14","#c1392b","#bec3c7"],hide:!0,change:function(b,c){a.currentPoint.updateColor(c.color.toString()),a._colorLock||a.$colorHex.val(c.color.toString())}}),a.$colorHex.on("change paste keyup",function(){a._colorLock=!0,a.$colorPicker.factoryBootstrap426_iris("color",a.$colorHex.val()),a._cancelColorLock()}),this.$opacitySlider.noUiSlider({start:100,range:{min:0,max:100},step:1}),this.$opacitySlider.on("slide",function(){var b=parseInt(a.$opacitySlider.val()),c=b+"%";a.$opacitySliderContainer.find(".factory-visible-value").text(c),a.currentPoint.updateOpacity(b/100)}),this.$opacitySlider.on("set",function(){a.$result.val(a.getValue()),a.$result.trigger("change")})},_repeatColorLock:!1,_colorLock:!1,_colorLockTimer:!1,_cancelColorLock:function(a){var b=this;return b._colorLockTimer&&!a?(this._repeatColorLock=!0,!1):void(this._colorLockTimer=setTimeout(function(){return b._repeatColorLock?(b._repeatColorLock=!1,b._cancelColorLock(!0),!1):(b._colorLock=!1,b._colorLockTimer=!1,void(b._repeatColorLock=!1))},500))},_createDirectionDropdown:function(){var a=this,b=factory&&factory.res&&factory.res.resVertical||"vertical",c=factory&&factory.res&&factory.res.resHorizontal||"horizontal";this.$directionDropdown=$('<select class="gradientPicker-filldirection"><option value="vertical"'+("top"===a.opts.fillDirection?" selected":"")+">"+b+'</option><option value="horizontal"'+("left"===a.opts.fillDirection?" selected":"")+">"+c+"</option></select>"),this.$el.append(this.$directionDropdown),this.$directionDropdown.chosen(),this.$directionDropdown.change(function(){a.setGradientDirection($(this).val())})},showColorPicker:function(a){this.currentPoint=a,$(".factory-current-point").removeClass("factory-current-point"),a.$el.addClass("factory-current-point"),this.$colorPickerContainer.show(),this.$colorPicker.factoryBootstrap426_iris("show"),this.$colorPicker.factoryBootstrap426_iris("option","color",a.color),this.$opacitySlider.val(100*a.opacity),this.$opacitySlider.trigger("slide")},hideColorPicker:function(){$(".factory-current-point").removeClass("factory-current-point"),this.currentPoint=!1,this.$colorPickerContainer.hide()},isColorPickerShown:function(){return this.currentPoint},docClicked:function(){$(".gradientPicker-iris-wrap").hide(),$(".gradientPicker-ctrlPt").removeClass("open")},createCtrlPt:function(a){return new ControlPoint(this,a,this.opts.orientation)},updateOptions:function(a,b){if($.extend(this.opts,a),b){this.controlPoints=[],this.$pointsContainer.html("");for(var c=0;c<this.opts.controlPoints.length;++c){var d=this.createCtrlPt(this.opts.controlPoints[c]);this.controlPoints.push(d)}}switch(this.updatePreview(),this.opts.fillDirection){case"top":fillDirectCheck="horizontal";break;case"left":fillDirectCheck="vertical";break;default:fillDirectCheck=!1}fillDirectCheck&&$(".gradientPicker-filldirection",this.$el).find('option[value="'+fillDirectCheck+'"]').prop("selected",!0)},updatePreview:function(){var a=[];if(this.controlPoints.sort(ctrlPtComparator),this.g2d.clearRect(0,0,this.g2d.canvas.width,this.g2d.canvas.height),"horizontal"===this.opts.orientation)for(var b=this.g2d.createLinearGradient(0,0,this.g2d.canvas.width,0),c=0;c<this.controlPoints.length;++c){var d=this.controlPoints[c];b.addColorStop(d.position,"rgba("+hexToRgb(d.color).r+","+hexToRgb(d.color).g+","+hexToRgb(d.color).b+", "+d.opacity+")"),a.push({position:d.position,color:d.color,opacity:d.opacity})}if(this.g2d.fillStyle=b,this.g2d.fillRect(0,0,this.g2d.canvas.width,this.g2d.canvas.height),this.opts.generateStyles)var e=this._generatePreviewStyles();this.opts.change(a,e)},removeControlPoint:function(a){var b=this.controlPoints.indexOf(a);-1!=b&&(this.controlPoints.splice(b,1),a.$el.remove())},placePoint:function(a){a.stopPropagation();var b=$(a.target).offset(),c=a.pageX-b.left,d=a.pageY-b.top,e=this.g2d.getImageData(c,d,1,1),f="rgb("+e.data[0]+","+e.data[1]+","+e.data[2]+")",g=1/255*e.data[3],h=this.createCtrlPt({position:c/this.g2d.canvas.width,color:rgb2hex(f),opacity:g});this.controlPoints.push(h),this.controlPoints.sort(ctrlPtComparator),this.showColorPicker(h)},setGradient:function(a){this.updateOptions({controlPoints:a},!0),this.updatePreview()},setGradientDirection:function(a){switch(a){case"horizontal":this.updateOptions({type:"linear",fillDirection:"top"},!1);break;case"vertical":this.updateOptions({type:"linear",fillDirection:"left"},!1)}},_generatePreviewStyles:function(){var a={};a.filldirection=this.opts.fillDirection,a.color_points=[];for(var b=0;b<this.controlPoints.length;++b){var c=this.controlPoints[b];a.color_points.push(c.color+" "+(100*c.position|0)+"% "+c.opacity)}return JSON.stringify(a)},_genPalletsBackground:function(a,b){return cssRules="linear-gradient(90deg, "+a+" 0%, "+b+" 100%)",agent.indexOf("WebKit")>=0?crossBrowserRule=browserPrefix[0]+cssRules:agent.indexOf("Mozilla")>=0?crossBrowserRule=browserPrefix[1]+cssRules:agent.indexOf("Microsoft")>=0?crossBrowserRule=browserPrefix[2]+cssRules:crossBrowserRule=cssRules,crossBrowserRule}},ControlPoint.prototype={updateColor:function(a){this.color=a,this.$pointColor.css("background-color",a),this.parent.updatePreview()},updateOpacity:function(a){this.opacity=a,this.$pointColor.css("opacity",a),this.parent.updatePreview()},drag:function(e,ui){var stopPointPosition=eval(this.$el.parent().offset().top+this.$el.parent().height()+20);e.pageY>stopPointPosition&&this.remove();var left=ui.position.left;this.position=left/(this.$container.width()-this.outerWidth),this.parent.updatePreview()},stop:function(){this.parent.updatePreview()},remove:function(){this.parent.removeControlPoint(this),this.parent.hideColorPicker(),this.parent.updatePreview()}};var methods={init:function(a){a=$.extend({controlPoints:["#FFF 0% 1","#000 100% 1"],orientation:"horizontal",type:"linear",fillDirection:"left",generateStyles:!0,change:function(){}},a),this.each(function(){var b=$(this),c=new GradientSelection(b,a);b.data("gradientPicker-sel",c)})},update:function(a){this.each(function(){var b=$(this),c=b.data("gradientPicker-sel");null!=c&&c.updateOptions(a,!0)})}};$.fn.gradientPicker=function(a,b){"string"==typeof a&&"init"!==a?methods[a].call(this,b):(b=a,methods.init.call(this,b))}}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function($){function ctrlPtComparator(a,b){return a.position-b.position}function bind(a,b){return"function"==typeof a.bind?a.bind(b):function(){a.apply(b,arguments)}}function GradientSelection(a,b){var c=this;this.$el=a,this.$presets=this.$el.find(".gradientPicker-pallets"),this.$presetsItems=this.$presets.find(".factory-preset-gradient"),this.$preview=this.$el.find(".gradientPicker-preview"),this.$pointsContainer=this.$el.find(".factory-points"),this.$colorPickerContainer=this.$el.find(".factory-color-picker-container"),this.$colorPicker=this.$el.find(".factory-color-picker"),this.$colorHex=this.$el.find(".factory-color-hex"),this.$opacitySliderContainer=this.$el.find(".factory-slider-container"),this.$opacitySlider=this.$el.find(".factory-bar"),this.$el.css("position","relative"),this.opts=b,this._createPresetGradients(),this._createPreview(),this._createColorPicker(),this._createDirectionDropdown(),this.controlPoints=[],b.controlPoints=b.controlPoints||[];for(var d=0;d<b.controlPoints.length;++d){var e=this.createCtrlPt(b.controlPoints[d]);this.controlPoints.push(e)}0===this.controlPoints.length&&(this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("primary")+" 0% 1")),this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("secondary")+" 100% 1"))),$(document).on("click.gp.factory",function(){c.hideColorPicker()}),this.$colorPickerContainer.on("click.gp.factory",function(a){a.stopPropagation()}),this.$pointsContainer.on("click.gp.factory",function(a){a.stopPropagation(),c.placePoint(a)}),this.updatePreview()}function ControlPoint(a,b,c){var d=this;if(this.parent=a,this.$container=a.$pointsContainer,this.$el=$('<span class="factory-point"></span>'),this.$pointColor=$('<span class="factory-point-color"></span>').appendTo(this.$el),this.$container.append(this.$el),"string"==typeof b?(b=b.split(" "),this.position=parseFloat(b[1])/100,this.color=b[0],this.opacity=b[2]):(this.position=b.position,this.color=b.color,this.opacity=b.opacity),this.outerWidth=this.$el.outerWidth(),this.$pointColor.css({"background-color":d.color,opacity:d.opacity}),"horizontal"===c){var e=(d.$container.width()-this.$el.outerWidth())*this.position;this.$el.css("left",e)}else{var f=(d.$container.height()-this.$el.outerHeight())*this.position;this.$el.css("top",f)}this.drag=bind(this.drag,this),this.stop=bind(this.stop,this),this.$el.disableSelection().css("webkit-user-select","none").draggable({axis:"horizontal"===c?"x":"y",drag:this.drag,stop:this.stop,containment:d.$container,cancel:null}),this.$el.on("click.gp.factory",function(a){d.parent.currentPoint===d?d.parent.hideColorPicker(d):d.parent.showColorPicker(d),a.stopPropagation()})}$.event.special.destroyed||($.event.special.destroyed={remove:function(a){a.handler&&a.handler()}});var agent=window.navigator.userAgent,browserPrefix=["-webkit-","-moz-","-ms-"],x,y=0;GradientSelection.prototype={_createPresetGradients:function(){var a=this;this.$presetsItems.each(function(){var a=$(this),b=$('<span class="factory-secondary-color-wrap"></span>').appendTo(a),c=$('<span class="factory-secondary-color"></span>').appendTo(b);a.css("background",a.data("primary")),c.css("background",a.data("secondary"))}),this.$presetsItems.click(function(){var b=$(this).data("primary"),c=$(this).data("secondary");a.setGradient([b+" 0% 1",c+" 100% 1"])})},_createPreview:function(){var a=this.$preview[0];a.width=0===a.clientWidth?210:a.clientWidth,a.height=0===a.clientHeight?30:a.clientHeight,this.g2d=a.getContext("2d")},_createColorPicker:function(){var a=this;this.$colorPicker.factoryBootstrap430_iris({width:217,palettes:["#16a086","#27ae61","#2a80b9","#8f44ad","#2d3e50","#f49c14","#c1392b","#bec3c7"],hide:!0,change:function(b,c){a.currentPoint.updateColor(c.color.toString()),a._colorLock||a.$colorHex.val(c.color.toString())}}),a.$colorHex.on("change paste keyup",function(){a._colorLock=!0,a.$colorPicker.factoryBootstrap430_iris("color",a.$colorHex.val()),a._cancelColorLock()}),this.$opacitySlider.noUiSlider({start:100,range:{min:0,max:100},step:1}),this.$opacitySlider.on("slide",function(){var b=parseInt(a.$opacitySlider.val()),c=b+"%";a.$opacitySliderContainer.find(".factory-visible-value").text(c),a.currentPoint.updateOpacity(b/100)}),this.$opacitySlider.on("set",function(){a.$result.val(a.getValue()),a.$result.trigger("change")})},_repeatColorLock:!1,_colorLock:!1,_colorLockTimer:!1,_cancelColorLock:function(a){var b=this;return b._colorLockTimer&&!a?(this._repeatColorLock=!0,!1):void(this._colorLockTimer=setTimeout(function(){return b._repeatColorLock?(b._repeatColorLock=!1,b._cancelColorLock(!0),!1):(b._colorLock=!1,b._colorLockTimer=!1,void(b._repeatColorLock=!1))},500))},_createDirectionDropdown:function(){var a=this,b=factory&&factory.res&&factory.res.resVertical||"vertical",c=factory&&factory.res&&factory.res.resHorizontal||"horizontal";this.$directionDropdown=$('<select class="gradientPicker-filldirection"><option value="vertical"'+("top"===a.opts.fillDirection?" selected":"")+">"+b+'</option><option value="horizontal"'+("left"===a.opts.fillDirection?" selected":"")+">"+c+"</option></select>"),this.$el.append(this.$directionDropdown),this.$directionDropdown.chosen(),this.$directionDropdown.change(function(){a.setGradientDirection($(this).val())})},showColorPicker:function(a){this.currentPoint=a,$(".factory-current-point").removeClass("factory-current-point"),a.$el.addClass("factory-current-point"),this.$colorPickerContainer.show(),this.$colorPicker.factoryBootstrap430_iris("show"),this.$colorPicker.factoryBootstrap430_iris("option","color",a.color),this.$opacitySlider.val(100*a.opacity),this.$opacitySlider.trigger("slide")},hideColorPicker:function(){$(".factory-current-point").removeClass("factory-current-point"),this.currentPoint=!1,this.$colorPickerContainer.hide()},isColorPickerShown:function(){return this.currentPoint},docClicked:function(){$(".gradientPicker-iris-wrap").hide(),$(".gradientPicker-ctrlPt").removeClass("open")},createCtrlPt:function(a){return new ControlPoint(this,a,this.opts.orientation)},updateOptions:function(a,b){if($.extend(this.opts,a),b){this.controlPoints=[],this.$pointsContainer.html("");for(var c=0;c<this.opts.controlPoints.length;++c){var d=this.createCtrlPt(this.opts.controlPoints[c]);this.controlPoints.push(d)}}switch(this.updatePreview(),this.opts.fillDirection){case"top":fillDirectCheck="horizontal";break;case"left":fillDirectCheck="vertical";break;default:fillDirectCheck=!1}fillDirectCheck&&$(".gradientPicker-filldirection",this.$el).find('option[value="'+fillDirectCheck+'"]').prop("selected",!0)},updatePreview:function(){var a=[];if(this.controlPoints.sort(ctrlPtComparator),this.g2d.clearRect(0,0,this.g2d.canvas.width,this.g2d.canvas.height),"horizontal"===this.opts.orientation)for(var b=this.g2d.createLinearGradient(0,0,this.g2d.canvas.width,0),c=0;c<this.controlPoints.length;++c){var d=this.controlPoints[c];b.addColorStop(d.position,"rgba("+hexToRgb(d.color).r+","+hexToRgb(d.color).g+","+hexToRgb(d.color).b+", "+d.opacity+")"),a.push({position:d.position,color:d.color,opacity:d.opacity})}if(this.g2d.fillStyle=b,this.g2d.fillRect(0,0,this.g2d.canvas.width,this.g2d.canvas.height),this.opts.generateStyles)var e=this._generatePreviewStyles();this.opts.change(a,e)},removeControlPoint:function(a){var b=this.controlPoints.indexOf(a);-1!=b&&(this.controlPoints.splice(b,1),a.$el.remove())},placePoint:function(a){a.stopPropagation();var b=$(a.target).offset(),c=a.pageX-b.left,d=a.pageY-b.top,e=this.g2d.getImageData(c,d,1,1),f="rgb("+e.data[0]+","+e.data[1]+","+e.data[2]+")",g=1/255*e.data[3],h=this.createCtrlPt({position:c/this.g2d.canvas.width,color:rgb2hex(f),opacity:g});this.controlPoints.push(h),this.controlPoints.sort(ctrlPtComparator),this.showColorPicker(h)},setGradient:function(a){this.updateOptions({controlPoints:a},!0),this.updatePreview()},setGradientDirection:function(a){switch(a){case"horizontal":this.updateOptions({type:"linear",fillDirection:"top"},!1);break;case"vertical":this.updateOptions({type:"linear",fillDirection:"left"},!1)}},_generatePreviewStyles:function(){var a={};a.filldirection=this.opts.fillDirection,a.color_points=[];for(var b=0;b<this.controlPoints.length;++b){var c=this.controlPoints[b];a.color_points.push(c.color+" "+(100*c.position|0)+"% "+c.opacity)}return JSON.stringify(a)},_genPalletsBackground:function(a,b){return cssRules="linear-gradient(90deg, "+a+" 0%, "+b+" 100%)",agent.indexOf("WebKit")>=0?crossBrowserRule=browserPrefix[0]+cssRules:agent.indexOf("Mozilla")>=0?crossBrowserRule=browserPrefix[1]+cssRules:agent.indexOf("Microsoft")>=0?crossBrowserRule=browserPrefix[2]+cssRules:crossBrowserRule=cssRules,crossBrowserRule}},ControlPoint.prototype={updateColor:function(a){this.color=a,this.$pointColor.css("background-color",a),this.parent.updatePreview()},updateOpacity:function(a){this.opacity=a,this.$pointColor.css("opacity",a),this.parent.updatePreview()},drag:function(e,ui){var stopPointPosition=eval(this.$el.parent().offset().top+this.$el.parent().height()+20);e.pageY>stopPointPosition&&this.remove();var left=ui.position.left;this.position=left/(this.$container.width()-this.outerWidth),this.parent.updatePreview()},stop:function(){this.parent.updatePreview()},remove:function(){this.parent.removeControlPoint(this),this.parent.hideColorPicker(),this.parent.updatePreview()}};var methods={init:function(a){a=$.extend({controlPoints:["#FFF 0% 1","#000 100% 1"],orientation:"horizontal",type:"linear",fillDirection:"left",generateStyles:!0,change:function(){}},a),this.each(function(){var b=$(this),c=new GradientSelection(b,a);b.data("gradientPicker-sel",c)})},update:function(a){this.each(function(){var b=$(this),c=b.data("gradientPicker-sel");null!=c&&c.updateOptions(a,!0)})}};$.fn.gradientPicker=function(a,b){"string"==typeof a&&"init"!==a?methods[a].call(this,b):(b=a,methods.init.call(this,b))}}(jQuery);
libs/factory/bootstrap/assets/js-min/plugin.iris.min.js CHANGED
@@ -10,4 +10,4 @@
10
  /*! Iris Color Picker - v1.0.4 - 2013-11-18
11
  * https://github.com/Automattic/Iris
12
  * Copyright (c) 2013 Matt Wiebe; Licensed GPLv2 */
13
- !function(a,b){function c(){var b,c;j?k="filter":(b=a('<div id="iris-gradtest" />'),c="linear-gradient(top,#fff,#000)",a.each(l,function(a,d){return b.css("backgroundImage",d+c),b.css("backgroundImage").match("gradient")?(k=a,!1):void 0}),k===!1&&(b.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),b.css("backgroundImage").match("gradient")&&(k="webkit")),b.remove())}function d(b,c){return b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),"webkit"===k?f(b,c):l[k]+"linear-gradient("+b+", "+c.join(", ")+")"}function e(b,c){var d,e,f,h,i,j,k,l,m;b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),d="top"===b?0:1,e=a(this),f=c.length-1,h="filter",i=1===d?"left":"top",j=1===d?"right":"bottom",k=1===d?"height":"width",l='<div class="iris-ie-gradient-shim" style="position:absolute;'+k+":100%;"+i+":%start%;"+j+":%end%;"+h+':%filter%;" data-color:"%color%"></div>',m="","static"===e.css("position")&&e.css({position:"relative"}),c=g(c),a.each(c,function(a,b){var e,g,h;return a===f?!1:(e=c[a+1],void(b.stop!==e.stop&&(g=100-parseFloat(e.stop)+"%",b.octoHex=new Color(b.color).toIEOctoHex(),e.octoHex=new Color(e.color).toIEOctoHex(),h="progid:DXImageTransform.Microsoft.Gradient(GradientType="+d+", StartColorStr='"+b.octoHex+"', EndColorStr='"+e.octoHex+"')",m+=l.replace("%start%",b.stop).replace("%end%",g).replace("%filter%",h))))}),e.find(".iris-ie-gradient-shim").remove(),a(m).prependTo(e)}function f(b,c){var d=[];return b="top"===b?"0% 0%,0% 100%,":"0% 100%,100% 100%,",c=g(c),a.each(c,function(a,b){d.push("color-stop("+parseFloat(b.stop)/100+", "+b.color+")")}),"-webkit-gradient(linear,"+b+d.join(",")+")"}function g(b){var c=[],d=[],e=[],f=b.length-1;return a.each(b,function(a,b){var e=b,f=!1,g=b.match(/1?[0-9]{1,2}%$/);g&&(e=b.replace(/\s?1?[0-9]{1,2}%$/,""),f=g.shift()),c.push(e),d.push(f)}),d[0]===!1&&(d[0]="0%"),d[f]===!1&&(d[f]="100%"),d=h(d),a.each(d,function(a){e[a]={color:c[a],stop:d[a]}}),e}function h(b){var c,d,e,f,g=0,i=b.length-1,j=0,k=!1;if(b.length<=2||a.inArray(!1,b)<0)return b;for(;j<b.length-1;)k||b[j]!==!1?k&&b[j]!==!1&&(i=j,j=b.length):(g=j-1,k=!0),j++;for(d=i-g,f=parseInt(b[g].replace("%"),10),c=(parseFloat(b[i].replace("%"))-f)/d,j=g+1,e=1;i>j;)b[j]=f+e*c+"%",e++,j++;return h(b)}var i,j,k,l,m,n,o,p,q;return i='<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>',o=navigator.userAgent.toLowerCase(),p="Microsoft Internet Explorer"===navigator.appName,q=p?parseFloat(o.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,j=p&&10>q,k=!1,l=["-moz-","-webkit-","-o-","-ms-"],m='.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;top:none;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}',j&&7>=q?(a.fn.iris=a.noop,void(a.support.iris=!1)):(a.support.factoryBootstrap426_iris=!0,a.fn.factoryBootstrap426_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap426_raninbowGradient=function(b,c){var d,e,f,g;for(b=b||"top",d=a.extend({},{s:100,l:50},c),e="hsl(%h%,"+d.s+"%,"+d.l+"%)",f=0,g=[];360>=f;)g.push(e.replace("%h%",f)),f+=30;return this.each(function(){a(this).factoryBootstrap426_gradient(b,g)})},n={options:{color:!1,mode:"hsl",controls:{horiz:"s",vert:"l",strip:"h"},hide:!0,border:!0,target:!1,width:200,palettes:!1},_color:"",_palettes:["#000","#fff","#d33","#d93","#ee2","#81d742","#1e73be","#8224e3"],_inited:!1,_defaultHSLControls:{horiz:"s",vert:"l",strip:"h"},_defaultHSVControls:{horiz:"h",vert:"v",strip:"s"},_scale:{h:360,s:100,l:100,v:100},_create:function(){var b=this,d=b.element,e=b.options.color||d.val();k===!1&&c(),d.is("input")?(b.options.target?b.picker=a(i).appendTo(b.options.target):b.picker=a(i).insertAfter(d),b._addInputListeners(d)):(d.append(i),b.picker=d.find(".iris-picker")),p?9===q?b.picker.addClass("iris-ie-9"):8>=q&&b.picker.addClass("iris-ie-lt9"):o.indexOf("compatible")<0&&o.indexOf("khtml")<0&&o.match(/mozilla/)&&b.picker.addClass("iris-mozilla"),b.options.palettes&&b._addPalettes(),b._color=new Color(e).setHSpace(b.options.mode),b.options.color=b._color.toString(),b.controls={square:b.picker.find(".iris-square"),squareDrag:b.picker.find(".iris-square-value"),horiz:b.picker.find(".iris-square-horiz"),vert:b.picker.find(".iris-square-vert"),strip:b.picker.find(".iris-strip"),stripSlider:b.picker.find(".iris-strip .iris-slider-offset")},"hsv"===b.options.mode&&b._has("l",b.options.controls)?b.options.controls=b._defaultHSVControls:"hsl"===b.options.mode&&b._has("v",b.options.controls)&&(b.options.controls=b._defaultHSLControls),b.hue=b._color.h(),b.options.hide&&b.picker.hide(),b.options.border&&b.picker.addClass("iris-border"),b._initControls(),b.active="external",b._dimensions(),b._change()},_has:function(b,c){var d=!1;return a.each(c,function(a,c){return b===c?(d=!0,!1):void 0}),d},_addPalettes:function(){var b=a('<div class="iris-palette-container" />'),c=a('<a class="iris-palette" tabindex="0" />'),d=a.isArray(this.options.palettes)?this.options.palettes:this._palettes;this.picker.find(".iris-palette-container").length&&(b=this.picker.find(".iris-palette-container").detach().html("")),a.each(d,function(a,d){c.clone().data("color",d).css("backgroundColor",d).appendTo(b).height(10).width(10)}),this.picker.append(b)},_paint:function(){var a=this;a._paintDimension("top","strip"),a._paintDimension("top","vert"),a._paintDimension("left","horiz")},_paintDimension:function(a,b){var c,d=this,e=d._color,f=d.options.mode,g=d._getHSpaceColor(),h=d.controls[b],i=d.options.controls;if(b!==d.active&&("square"!==d.active||"strip"===b))switch(i[b]){case"h":if("hsv"===f){switch(g=e.clone(),b){case"horiz":g[i.vert](100);break;case"vert":g[i.horiz](100);break;case"strip":g.setHSpace("hsl")}c=g.toHsl()}else c="strip"===b?{s:g.s,l:g.l}:{s:100,l:g.l};h.factoryBootstrap426_raninbowGradient(a,c);break;case"s":"hsv"===f?"vert"===b?c=[e.clone().a(0).s(0).toCSS("rgba"),e.clone().a(1).s(0).toCSS("rgba")]:"strip"===b?c=[e.clone().s(100).toCSS("hsl"),e.clone().s(0).toCSS("hsl")]:"horiz"===b&&(c=["#fff","hsl("+g.h+",100%,50%)"]):c="vert"===b&&"h"===d.options.controls.horiz?["hsla(0, 0%, "+g.l+"%, 0)","hsla(0, 0%, "+g.l+"%, 1)"]:["hsl("+g.h+",0%,50%)","hsl("+g.h+",100%,50%)"],h.factoryBootstrap426_gradient(a,c);break;case"l":c="strip"===b?["hsl("+g.h+",100%,100%)","hsl("+g.h+", "+g.s+"%,50%)","hsl("+g.h+",100%,0%)"]:["#fff","rgba(255,255,255,0) 50%","rgba(0,0,0,0) 50%","rgba(0,0,0,1)"],h.factoryBootstrap426_gradient(a,c);break;case"v":c="strip"===b?[e.clone().v(100).toCSS(),e.clone().v(0).toCSS()]:["rgba(0,0,0,0)","#000"],h.factoryBootstrap426_gradient(a,c)}},_getHSpaceColor:function(){return"hsv"===this.options.mode?this._color.toHsv():this._color.toHsl()},_dimensions:function(b){var c,d,e,f,g=this,h=g.options,i=g.controls,j=i.square,k=g.picker.find(".iris-strip"),l="77.5%",m="12%",n=20,o=h.border?h.width-n:h.width,p=a.isArray(h.palettes)?h.palettes.length:g._palettes.length;return b&&(j.css("width",""),k.css("width",""),g.picker.css({width:"",height:""})),l=o*(parseFloat(l)/100),m=o*(parseFloat(m)/100),c=h.border?l+n:l,j.width(l).height(l),k.height(l).width(m),g.picker.css({width:h.width,height:c}),h.palettes?(d=2*l/100,f=l-(p-1)*d,e=f/p,g.picker.find(".iris-palette").each(function(b){var c=0===b?0:d;a(this).css({width:e,height:e,marginLeft:c})}),g.picker.css("paddingBottom",e+d),void k.height(e+d+l)):g.picker.css("paddingBottom","")},_addInputListeners:function(a){var b=this,c=100,d=function(c){var d=new Color(a.val()),e=a.val().replace(/^#/,"");a.removeClass("iris-error"),d.error?""!==e&&a.addClass("iris-error"):d.toString()!==b._color.toString()&&("keyup"===c.type&&e.match(/^[0-9a-fA-F]{3}$/)||b._setOption("color",d.toString()))};a.on("change",d).on("keyup",b._debounce(d,c)),b.options.hide&&a.one("focus",function(){b.show()})},_initControls:function(){var b=this,c=b.controls,d=c.square,e=b.options.controls,f=b._scale[e.strip];c.stripSlider.slider({orientation:"vertical",max:f,slide:function(a,c){b.active="strip","h"===e.strip&&(c.value=f-c.value),b._color[e.strip](c.value),b._change.apply(b,arguments)}}),c.squareDrag.draggable({containment:"parent",zIndex:1e3,cursor:"move",drag:function(a,c){b._squareDrag(a,c)},start:function(){d.addClass("iris-dragging"),a(this).addClass("ui-state-focus")},stop:function(){d.removeClass("iris-dragging"),a(this).removeClass("ui-state-focus")}}).on("mousedown mouseup",function(c){var d="ui-state-focus";c.preventDefault(),"mousedown"===c.type?(b.picker.find("."+d).removeClass(d).blur(),a(this).addClass(d).focus()):a(this).removeClass(d)}).on("keydown",function(a){var d=c.square,e=c.squareDrag,f=e.position(),g=b.options.width/100;switch(a.altKey&&(g*=10),a.keyCode){case 37:f.left-=g;break;case 38:f.top-=g;break;case 39:f.left+=g;break;case 40:f.top+=g;break;default:return!0}f.left=Math.max(0,Math.min(f.left,d.width())),f.top=Math.max(0,Math.min(f.top,d.height())),e.css(f),b._squareDrag(a,{position:f}),a.preventDefault()}),d.mousedown(function(c){var d,e;1===c.which&&a(c.target).is("div")&&(d=b.controls.square.offset(),e={top:c.pageY-d.top,left:c.pageX-d.left},c.preventDefault(),b._squareDrag(c,{position:e}),c.target=b.controls.squareDrag.get(0),b.controls.squareDrag.css(e).trigger(c))}),b.options.palettes&&b._paletteListeners()},_paletteListeners:function(){var b=this;b.picker.find(".iris-palette-container").on("click.palette",".iris-palette",function(){b._color.fromCSS(a(this).data("color")),b.active="external",b._change()}).on("keydown.palette",".iris-palette",function(b){return 13!==b.keyCode&&32!==b.keyCode?!0:(b.stopPropagation(),void a(this).click())})},_squareDrag:function(a,b){var c=this,d=c.options.controls,e=c._squareDimensions(),f=Math.round((e.h-b.position.top)/e.h*c._scale[d.vert]),g=c._scale[d.horiz]-Math.round((e.w-b.position.left)/e.w*c._scale[d.horiz]);c._color[d.horiz](g)[d.vert](f),c.active="square",c._change.apply(c,arguments)},_setOption:function(b,c){var d,e,f,g=this,h=g.options[b],i=!1;switch(g.options[b]=c,b){case"color":c=""+c,d=c.replace(/^#/,""),e=new Color(c).setHSpace(g.options.mode),e.error?g.options[b]=h:(g._color=e,g.options.color=g.options[b]=g._color.toString(),g.active="external",g._change());break;case"palettes":i=!0,c?g._addPalettes():g.picker.find(".iris-palette-container").remove(),h||g._paletteListeners();break;case"width":i=!0;break;case"border":i=!0,f=c?"addClass":"removeClass",g.picker[f]("iris-border");break;case"mode":case"controls":if(h===c)return;return f=g.element,h=g.options,h.hide=!g.picker.is(":visible"),g.destroy(),g.picker.remove(),a(g.element).iris(h)}i&&g._dimensions(!0)},_squareDimensions:function(a){var c,d,e=this.controls.square;return a!==b&&e.data("dimensions")?e.data("dimensions"):(d=this.controls.squareDrag,c={w:e.width(),h:e.height()},e.data("dimensions",c),c)},_isNonHueControl:function(a,b){return"square"===a&&"h"===this.options.controls.strip?!0:"external"===b||"h"===b&&"strip"===a?!1:!0},_change:function(){var b=this,c=b.controls,d=b._getHSpaceColor(),e=["square","strip"],f=b.options.controls,g=f[b.active]||"external",h=b.hue;"strip"===b.active?e=[]:"external"!==b.active&&e.pop(),a.each(e,function(a,e){var g,h,i;if(e!==b.active)switch(e){case"strip":g="h"===f.strip?b._scale[f.strip]-d[f.strip]:d[f.strip],c.stripSlider.slider("value",g);break;case"square":h=b._squareDimensions(),i={left:d[f.horiz]/b._scale[f.horiz]*h.w,top:h.h-d[f.vert]/b._scale[f.vert]*h.h},b.controls.squareDrag.css(i)}}),d.h!==h&&b._isNonHueControl(b.active,g)&&b._color.h(h),b.hue=b._color.h(),b.options.color=b._color.toString(),b._inited&&b._trigger("change",{type:b.active},{color:b._color}),b.element.is(":input")&&!b._color.error&&(b.element.removeClass("iris-error"),b.element.val()!==b._color.toString()&&b.element.val(b._color.toString())),b._paint(),b._inited=!0,b.active=!1},_debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},show:function(){this.picker.show()},hide:function(){this.picker.hide()},toggle:function(){this.picker.toggle()},color:function(a){return a===!0?this._color.clone():a===b?this._color.toString():void this.option("color",a)}},a.widget("a8c.factoryBootstrap426_iris",n),void a('<style id="iris-css">'+m+"</style>").appendTo("head"))}(jQuery);
10
  /*! Iris Color Picker - v1.0.4 - 2013-11-18
11
  * https://github.com/Automattic/Iris
12
  * Copyright (c) 2013 Matt Wiebe; Licensed GPLv2 */
13
+ !function(a,b){function c(){var b,c;j?k="filter":(b=a('<div id="iris-gradtest" />'),c="linear-gradient(top,#fff,#000)",a.each(l,function(a,d){return b.css("backgroundImage",d+c),b.css("backgroundImage").match("gradient")?(k=a,!1):void 0}),k===!1&&(b.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),b.css("backgroundImage").match("gradient")&&(k="webkit")),b.remove())}function d(b,c){return b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),"webkit"===k?f(b,c):l[k]+"linear-gradient("+b+", "+c.join(", ")+")"}function e(b,c){var d,e,f,h,i,j,k,l,m;b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),d="top"===b?0:1,e=a(this),f=c.length-1,h="filter",i=1===d?"left":"top",j=1===d?"right":"bottom",k=1===d?"height":"width",l='<div class="iris-ie-gradient-shim" style="position:absolute;'+k+":100%;"+i+":%start%;"+j+":%end%;"+h+':%filter%;" data-color:"%color%"></div>',m="","static"===e.css("position")&&e.css({position:"relative"}),c=g(c),a.each(c,function(a,b){var e,g,h;return a===f?!1:(e=c[a+1],void(b.stop!==e.stop&&(g=100-parseFloat(e.stop)+"%",b.octoHex=new Color(b.color).toIEOctoHex(),e.octoHex=new Color(e.color).toIEOctoHex(),h="progid:DXImageTransform.Microsoft.Gradient(GradientType="+d+", StartColorStr='"+b.octoHex+"', EndColorStr='"+e.octoHex+"')",m+=l.replace("%start%",b.stop).replace("%end%",g).replace("%filter%",h))))}),e.find(".iris-ie-gradient-shim").remove(),a(m).prependTo(e)}function f(b,c){var d=[];return b="top"===b?"0% 0%,0% 100%,":"0% 100%,100% 100%,",c=g(c),a.each(c,function(a,b){d.push("color-stop("+parseFloat(b.stop)/100+", "+b.color+")")}),"-webkit-gradient(linear,"+b+d.join(",")+")"}function g(b){var c=[],d=[],e=[],f=b.length-1;return a.each(b,function(a,b){var e=b,f=!1,g=b.match(/1?[0-9]{1,2}%$/);g&&(e=b.replace(/\s?1?[0-9]{1,2}%$/,""),f=g.shift()),c.push(e),d.push(f)}),d[0]===!1&&(d[0]="0%"),d[f]===!1&&(d[f]="100%"),d=h(d),a.each(d,function(a){e[a]={color:c[a],stop:d[a]}}),e}function h(b){var c,d,e,f,g=0,i=b.length-1,j=0,k=!1;if(b.length<=2||a.inArray(!1,b)<0)return b;for(;j<b.length-1;)k||b[j]!==!1?k&&b[j]!==!1&&(i=j,j=b.length):(g=j-1,k=!0),j++;for(d=i-g,f=parseInt(b[g].replace("%"),10),c=(parseFloat(b[i].replace("%"))-f)/d,j=g+1,e=1;i>j;)b[j]=f+e*c+"%",e++,j++;return h(b)}var i,j,k,l,m,n,o,p,q;return i='<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>',o=navigator.userAgent.toLowerCase(),p="Microsoft Internet Explorer"===navigator.appName,q=p?parseFloat(o.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,j=p&&10>q,k=!1,l=["-moz-","-webkit-","-o-","-ms-"],m='.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;top:none;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}',j&&7>=q?(a.fn.iris=a.noop,void(a.support.iris=!1)):(a.support.factoryBootstrap430_iris=!0,a.fn.factoryBootstrap430_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap430_raninbowGradient=function(b,c){var d,e,f,g;for(b=b||"top",d=a.extend({},{s:100,l:50},c),e="hsl(%h%,"+d.s+"%,"+d.l+"%)",f=0,g=[];360>=f;)g.push(e.replace("%h%",f)),f+=30;return this.each(function(){a(this).factoryBootstrap430_gradient(b,g)})},n={options:{color:!1,mode:"hsl",controls:{horiz:"s",vert:"l",strip:"h"},hide:!0,border:!0,target:!1,width:200,palettes:!1},_color:"",_palettes:["#000","#fff","#d33","#d93","#ee2","#81d742","#1e73be","#8224e3"],_inited:!1,_defaultHSLControls:{horiz:"s",vert:"l",strip:"h"},_defaultHSVControls:{horiz:"h",vert:"v",strip:"s"},_scale:{h:360,s:100,l:100,v:100},_create:function(){var b=this,d=b.element,e=b.options.color||d.val();k===!1&&c(),d.is("input")?(b.options.target?b.picker=a(i).appendTo(b.options.target):b.picker=a(i).insertAfter(d),b._addInputListeners(d)):(d.append(i),b.picker=d.find(".iris-picker")),p?9===q?b.picker.addClass("iris-ie-9"):8>=q&&b.picker.addClass("iris-ie-lt9"):o.indexOf("compatible")<0&&o.indexOf("khtml")<0&&o.match(/mozilla/)&&b.picker.addClass("iris-mozilla"),b.options.palettes&&b._addPalettes(),b._color=new Color(e).setHSpace(b.options.mode),b.options.color=b._color.toString(),b.controls={square:b.picker.find(".iris-square"),squareDrag:b.picker.find(".iris-square-value"),horiz:b.picker.find(".iris-square-horiz"),vert:b.picker.find(".iris-square-vert"),strip:b.picker.find(".iris-strip"),stripSlider:b.picker.find(".iris-strip .iris-slider-offset")},"hsv"===b.options.mode&&b._has("l",b.options.controls)?b.options.controls=b._defaultHSVControls:"hsl"===b.options.mode&&b._has("v",b.options.controls)&&(b.options.controls=b._defaultHSLControls),b.hue=b._color.h(),b.options.hide&&b.picker.hide(),b.options.border&&b.picker.addClass("iris-border"),b._initControls(),b.active="external",b._dimensions(),b._change()},_has:function(b,c){var d=!1;return a.each(c,function(a,c){return b===c?(d=!0,!1):void 0}),d},_addPalettes:function(){var b=a('<div class="iris-palette-container" />'),c=a('<a class="iris-palette" tabindex="0" />'),d=a.isArray(this.options.palettes)?this.options.palettes:this._palettes;this.picker.find(".iris-palette-container").length&&(b=this.picker.find(".iris-palette-container").detach().html("")),a.each(d,function(a,d){c.clone().data("color",d).css("backgroundColor",d).appendTo(b).height(10).width(10)}),this.picker.append(b)},_paint:function(){var a=this;a._paintDimension("top","strip"),a._paintDimension("top","vert"),a._paintDimension("left","horiz")},_paintDimension:function(a,b){var c,d=this,e=d._color,f=d.options.mode,g=d._getHSpaceColor(),h=d.controls[b],i=d.options.controls;if(b!==d.active&&("square"!==d.active||"strip"===b))switch(i[b]){case"h":if("hsv"===f){switch(g=e.clone(),b){case"horiz":g[i.vert](100);break;case"vert":g[i.horiz](100);break;case"strip":g.setHSpace("hsl")}c=g.toHsl()}else c="strip"===b?{s:g.s,l:g.l}:{s:100,l:g.l};h.factoryBootstrap430_raninbowGradient(a,c);break;case"s":"hsv"===f?"vert"===b?c=[e.clone().a(0).s(0).toCSS("rgba"),e.clone().a(1).s(0).toCSS("rgba")]:"strip"===b?c=[e.clone().s(100).toCSS("hsl"),e.clone().s(0).toCSS("hsl")]:"horiz"===b&&(c=["#fff","hsl("+g.h+",100%,50%)"]):c="vert"===b&&"h"===d.options.controls.horiz?["hsla(0, 0%, "+g.l+"%, 0)","hsla(0, 0%, "+g.l+"%, 1)"]:["hsl("+g.h+",0%,50%)","hsl("+g.h+",100%,50%)"],h.factoryBootstrap430_gradient(a,c);break;case"l":c="strip"===b?["hsl("+g.h+",100%,100%)","hsl("+g.h+", "+g.s+"%,50%)","hsl("+g.h+",100%,0%)"]:["#fff","rgba(255,255,255,0) 50%","rgba(0,0,0,0) 50%","rgba(0,0,0,1)"],h.factoryBootstrap430_gradient(a,c);break;case"v":c="strip"===b?[e.clone().v(100).toCSS(),e.clone().v(0).toCSS()]:["rgba(0,0,0,0)","#000"],h.factoryBootstrap430_gradient(a,c)}},_getHSpaceColor:function(){return"hsv"===this.options.mode?this._color.toHsv():this._color.toHsl()},_dimensions:function(b){var c,d,e,f,g=this,h=g.options,i=g.controls,j=i.square,k=g.picker.find(".iris-strip"),l="77.5%",m="12%",n=20,o=h.border?h.width-n:h.width,p=a.isArray(h.palettes)?h.palettes.length:g._palettes.length;return b&&(j.css("width",""),k.css("width",""),g.picker.css({width:"",height:""})),l=o*(parseFloat(l)/100),m=o*(parseFloat(m)/100),c=h.border?l+n:l,j.width(l).height(l),k.height(l).width(m),g.picker.css({width:h.width,height:c}),h.palettes?(d=2*l/100,f=l-(p-1)*d,e=f/p,g.picker.find(".iris-palette").each(function(b){var c=0===b?0:d;a(this).css({width:e,height:e,marginLeft:c})}),g.picker.css("paddingBottom",e+d),void k.height(e+d+l)):g.picker.css("paddingBottom","")},_addInputListeners:function(a){var b=this,c=100,d=function(c){var d=new Color(a.val()),e=a.val().replace(/^#/,"");a.removeClass("iris-error"),d.error?""!==e&&a.addClass("iris-error"):d.toString()!==b._color.toString()&&("keyup"===c.type&&e.match(/^[0-9a-fA-F]{3}$/)||b._setOption("color",d.toString()))};a.on("change",d).on("keyup",b._debounce(d,c)),b.options.hide&&a.one("focus",function(){b.show()})},_initControls:function(){var b=this,c=b.controls,d=c.square,e=b.options.controls,f=b._scale[e.strip];c.stripSlider.slider({orientation:"vertical",max:f,slide:function(a,c){b.active="strip","h"===e.strip&&(c.value=f-c.value),b._color[e.strip](c.value),b._change.apply(b,arguments)}}),c.squareDrag.draggable({containment:"parent",zIndex:1e3,cursor:"move",drag:function(a,c){b._squareDrag(a,c)},start:function(){d.addClass("iris-dragging"),a(this).addClass("ui-state-focus")},stop:function(){d.removeClass("iris-dragging"),a(this).removeClass("ui-state-focus")}}).on("mousedown mouseup",function(c){var d="ui-state-focus";c.preventDefault(),"mousedown"===c.type?(b.picker.find("."+d).removeClass(d).blur(),a(this).addClass(d).focus()):a(this).removeClass(d)}).on("keydown",function(a){var d=c.square,e=c.squareDrag,f=e.position(),g=b.options.width/100;switch(a.altKey&&(g*=10),a.keyCode){case 37:f.left-=g;break;case 38:f.top-=g;break;case 39:f.left+=g;break;case 40:f.top+=g;break;default:return!0}f.left=Math.max(0,Math.min(f.left,d.width())),f.top=Math.max(0,Math.min(f.top,d.height())),e.css(f),b._squareDrag(a,{position:f}),a.preventDefault()}),d.mousedown(function(c){var d,e;1===c.which&&a(c.target).is("div")&&(d=b.controls.square.offset(),e={top:c.pageY-d.top,left:c.pageX-d.left},c.preventDefault(),b._squareDrag(c,{position:e}),c.target=b.controls.squareDrag.get(0),b.controls.squareDrag.css(e).trigger(c))}),b.options.palettes&&b._paletteListeners()},_paletteListeners:function(){var b=this;b.picker.find(".iris-palette-container").on("click.palette",".iris-palette",function(){b._color.fromCSS(a(this).data("color")),b.active="external",b._change()}).on("keydown.palette",".iris-palette",function(b){return 13!==b.keyCode&&32!==b.keyCode?!0:(b.stopPropagation(),void a(this).click())})},_squareDrag:function(a,b){var c=this,d=c.options.controls,e=c._squareDimensions(),f=Math.round((e.h-b.position.top)/e.h*c._scale[d.vert]),g=c._scale[d.horiz]-Math.round((e.w-b.position.left)/e.w*c._scale[d.horiz]);c._color[d.horiz](g)[d.vert](f),c.active="square",c._change.apply(c,arguments)},_setOption:function(b,c){var d,e,f,g=this,h=g.options[b],i=!1;switch(g.options[b]=c,b){case"color":c=""+c,d=c.replace(/^#/,""),e=new Color(c).setHSpace(g.options.mode),e.error?g.options[b]=h:(g._color=e,g.options.color=g.options[b]=g._color.toString(),g.active="external",g._change());break;case"palettes":i=!0,c?g._addPalettes():g.picker.find(".iris-palette-container").remove(),h||g._paletteListeners();break;case"width":i=!0;break;case"border":i=!0,f=c?"addClass":"removeClass",g.picker[f]("iris-border");break;case"mode":case"controls":if(h===c)return;return f=g.element,h=g.options,h.hide=!g.picker.is(":visible"),g.destroy(),g.picker.remove(),a(g.element).iris(h)}i&&g._dimensions(!0)},_squareDimensions:function(a){var c,d,e=this.controls.square;return a!==b&&e.data("dimensions")?e.data("dimensions"):(d=this.controls.squareDrag,c={w:e.width(),h:e.height()},e.data("dimensions",c),c)},_isNonHueControl:function(a,b){return"square"===a&&"h"===this.options.controls.strip?!0:"external"===b||"h"===b&&"strip"===a?!1:!0},_change:function(){var b=this,c=b.controls,d=b._getHSpaceColor(),e=["square","strip"],f=b.options.controls,g=f[b.active]||"external",h=b.hue;"strip"===b.active?e=[]:"external"!==b.active&&e.pop(),a.each(e,function(a,e){var g,h,i;if(e!==b.active)switch(e){case"strip":g="h"===f.strip?b._scale[f.strip]-d[f.strip]:d[f.strip],c.stripSlider.slider("value",g);break;case"square":h=b._squareDimensions(),i={left:d[f.horiz]/b._scale[f.horiz]*h.w,top:h.h-d[f.vert]/b._scale[f.vert]*h.h},b.controls.squareDrag.css(i)}}),d.h!==h&&b._isNonHueControl(b.active,g)&&b._color.h(h),b.hue=b._color.h(),b.options.color=b._color.toString(),b._inited&&b._trigger("change",{type:b.active},{color:b._color}),b.element.is(":input")&&!b._color.error&&(b.element.removeClass("iris-error"),b.element.val()!==b._color.toString()&&b.element.val(b._color.toString())),b._paint(),b._inited=!0,b.active=!1},_debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},show:function(){this.picker.show()},hide:function(){this.picker.hide()},toggle:function(){this.picker.toggle()},color:function(a){return a===!0?this._color.clone():a===b?this._color.toString():void this.option("color",a)}},a.widget("a8c.factoryBootstrap430_iris",n),void a('<style id="iris-css">'+m+"</style>").appendTo("head"))}(jQuery);
libs/factory/bootstrap/assets/js-min/plugin.paddings-editor.min.js CHANGED
@@ -7,4 +7,4 @@
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
- !function(a){var b=function(b){this.$element=a(b),this.$rectangle=this.$element.find(".factory-rectangle"),this.$center=this.$element.find(".factory-side-center"),this.$bar=this.$element.find(".factory-bar"),this.$sides=this.$element.find(".factory-side"),this.$result=this.$element.find(".factory-result"),this.units=this.$element.data("units"),this.rangeStart=this.$element.data("range-start"),this.rangeEnd=this.$element.data("range-end"),this.step=this.$element.data("step"),this._createCanvas(),this._createSlider(),this._initMouse(),this.selectSide("center")};b.prototype._createCanvas=function(){var b=this;this._recalculateSizes(),this.$canvas=a("<canvas width='"+b.elementWidth+"' height='"+b.elementHeight+"'>").appendTo(this.$rectangle),this.canvasContext=this.$canvas.get(0).getContext("2d"),this._redraw()},b.prototype._createSlider=function(){var a=this;this.$bar.noUiSlider({start:parseInt(a.$center.data("value")),range:{min:a.rangeStart,max:a.rangeEnd},step:a.step}),this.$bar.on("slide",function(){var b=parseInt(a.$bar.val()),c=b+a.units;"center"===a.activeSide?(a.$sides.data("value",b),a.$sides.find(".factory-visible-value").text(c)):(a.$activeSide.data("value",b),a.$activeSide.find(".factory-visible-value").text(c))}),this.$bar.on("set",function(){a.$result.val(a.getValue()),a.$result.trigger("change")})},b.prototype.getValue=function(){var a=this.$element.find(".factory-side-top").data("value"),b=this.$element.find(".factory-side-right").data("value"),c=this.$element.find(".factory-side-bottom").data("value"),d=this.$element.find(".factory-side-left").data("value");return a+this.units+" "+b+this.units+" "+c+this.units+" "+d+this.units},b.prototype.selectSide=function(a){this.activeSide!==a&&(this.activeSide=a,this.$activeSide=this.$element.find(".factory-side-"+this.activeSide),this.$element.find(".factory-side.factory-active").removeClass("factory-active"),this.$activeSide.addClass("factory-active"),this._redraw(),this.$bar.val(this.$activeSide.data("value")))},b.prototype._initMouse=function(){var a=this;this._recalculateSizes(),this.$rectangle.on("mousemove.paddings-editor",function(b){a.hoveredSide=a._getCurrentSide(b.pageX,b.pageY),a.hoveredSide!==a.lastHoveredSide&&(a.lastHoveredSide=a.hoveredSide,a._redraw())}),this.$rectangle.on("mouseleave.paddings-editor",function(b){a.hoveredSide=a.lastHoveredSide=null,a._redraw()}),this.$rectangle.on("click.paddings-editor",function(b){var c=a._getCurrentSide(b.pageX,b.pageY);a.selectSide(c)})},b.prototype._getCurrentSide=function(a,b){var c=this.$element.offset(),d=a-c.left,e=b-c.top,f=d-this.centerX,g=e-this.centerY,h=Math.sqrt(Math.pow(f,2)+Math.pow(g,2));if(h<=this.centerR)return"center";var i=this.elementHeight,j=this.elementWidth,k=-this.elementWidth*this.elementHeight,l=-(k+i*d)/j,m=-this.elementHeight,n=this.elementWidth,o=0,p=-(o+m*d)/n;return e>l&&p>e?"right":l>e&&e>p?"left":l>e&&p>e?"top":e>l&&e>p?"bottom":null},b.prototype._redraw=function(){this.canvasContext.clearRect(0,0,this.elementWidth,this.elementHeight),this._highlightSide("top","#a6b6b6"),this._highlightSide("bottom","#a6b6b6"),this._highlightSide("left","#aec0c0"),this._highlightSide("right","#aec0c0"),this._highlightSide(this.hoveredSide,"#c0cece"),this.activeSide&&this._highlightSide(this.activeSide,"#829595")},b.prototype._highlightSide=function(a,b){a&&"center"!==a&&(this.canvasContext.fillStyle=b,this.canvasContext.beginPath(),"top"===a?(this.canvasContext.moveTo(0,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,0)):"bottom"===a?(this.canvasContext.moveTo(0,this.elementHeight),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,this.elementHeight)):"left"===a?(this.canvasContext.moveTo(0,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(0,this.elementHeight)):"right"===a&&(this.canvasContext.moveTo(this.elementWidth,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,this.elementHeight)),this.canvasContext.closePath(),this.canvasContext.fill())},b.prototype._recalculateSizes=function(){this.elementOffset=this.$element.offset(),this.elementWidth=this.$rectangle.innerWidth(),this.elementHeight=this.$rectangle.innerHeight(),this.centerSize=this.$center.innerWidth(),this.centerR=this.centerSize/2,this.centerX=this.elementWidth/2,this.centerY=this.elementHeight/2},a.fn.factoryBootstrap426_paddingsEditor=function(c){if("string"==typeof c){var d=a(this).data("factory.paddings-editor");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.paddings-editor");d||c.data("factory.paddings-editor",d=new b(this))})},a.fn.factoryBootstrap426_paddingsEditor.Constructor=b,a(function(){a(".factory-bootstrap-426 .factory-paddings-editor").factoryBootstrap426_paddingsEditor()})}(jQuery);
7
  * Support: http://webcraftic.com/contact-us/
8
  */
9
 
10
+ !function(a){var b=function(b){this.$element=a(b),this.$rectangle=this.$element.find(".factory-rectangle"),this.$center=this.$element.find(".factory-side-center"),this.$bar=this.$element.find(".factory-bar"),this.$sides=this.$element.find(".factory-side"),this.$result=this.$element.find(".factory-result"),this.units=this.$element.data("units"),this.rangeStart=this.$element.data("range-start"),this.rangeEnd=this.$element.data("range-end"),this.step=this.$element.data("step"),this._createCanvas(),this._createSlider(),this._initMouse(),this.selectSide("center")};b.prototype._createCanvas=function(){var b=this;this._recalculateSizes(),this.$canvas=a("<canvas width='"+b.elementWidth+"' height='"+b.elementHeight+"'>").appendTo(this.$rectangle),this.canvasContext=this.$canvas.get(0).getContext("2d"),this._redraw()},b.prototype._createSlider=function(){var a=this;this.$bar.noUiSlider({start:parseInt(a.$center.data("value")),range:{min:a.rangeStart,max:a.rangeEnd},step:a.step}),this.$bar.on("slide",function(){var b=parseInt(a.$bar.val()),c=b+a.units;"center"===a.activeSide?(a.$sides.data("value",b),a.$sides.find(".factory-visible-value").text(c)):(a.$activeSide.data("value",b),a.$activeSide.find(".factory-visible-value").text(c))}),this.$bar.on("set",function(){a.$result.val(a.getValue()),a.$result.trigger("change")})},b.prototype.getValue=function(){var a=this.$element.find(".factory-side-top").data("value"),b=this.$element.find(".factory-side-right").data("value"),c=this.$element.find(".factory-side-bottom").data("value"),d=this.$element.find(".factory-side-left").data("value");return a+this.units+" "+b+this.units+" "+c+this.units+" "+d+this.units},b.prototype.selectSide=function(a){this.activeSide!==a&&(this.activeSide=a,this.$activeSide=this.$element.find(".factory-side-"+this.activeSide),this.$element.find(".factory-side.factory-active").removeClass("factory-active"),this.$activeSide.addClass("factory-active"),this._redraw(),this.$bar.val(this.$activeSide.data("value")))},b.prototype._initMouse=function(){var a=this;this._recalculateSizes(),this.$rectangle.on("mousemove.paddings-editor",function(b){a.hoveredSide=a._getCurrentSide(b.pageX,b.pageY),a.hoveredSide!==a.lastHoveredSide&&(a.lastHoveredSide=a.hoveredSide,a._redraw())}),this.$rectangle.on("mouseleave.paddings-editor",function(b){a.hoveredSide=a.lastHoveredSide=null,a._redraw()}),this.$rectangle.on("click.paddings-editor",function(b){var c=a._getCurrentSide(b.pageX,b.pageY);a.selectSide(c)})},b.prototype._getCurrentSide=function(a,b){var c=this.$element.offset(),d=a-c.left,e=b-c.top,f=d-this.centerX,g=e-this.centerY,h=Math.sqrt(Math.pow(f,2)+Math.pow(g,2));if(h<=this.centerR)return"center";var i=this.elementHeight,j=this.elementWidth,k=-this.elementWidth*this.elementHeight,l=-(k+i*d)/j,m=-this.elementHeight,n=this.elementWidth,o=0,p=-(o+m*d)/n;return e>l&&p>e?"right":l>e&&e>p?"left":l>e&&p>e?"top":e>l&&e>p?"bottom":null},b.prototype._redraw=function(){this.canvasContext.clearRect(0,0,this.elementWidth,this.elementHeight),this._highlightSide("top","#a6b6b6"),this._highlightSide("bottom","#a6b6b6"),this._highlightSide("left","#aec0c0"),this._highlightSide("right","#aec0c0"),this._highlightSide(this.hoveredSide,"#c0cece"),this.activeSide&&this._highlightSide(this.activeSide,"#829595")},b.prototype._highlightSide=function(a,b){a&&"center"!==a&&(this.canvasContext.fillStyle=b,this.canvasContext.beginPath(),"top"===a?(this.canvasContext.moveTo(0,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,0)):"bottom"===a?(this.canvasContext.moveTo(0,this.elementHeight),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,this.elementHeight)):"left"===a?(this.canvasContext.moveTo(0,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(0,this.elementHeight)):"right"===a&&(this.canvasContext.moveTo(this.elementWidth,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,this.elementHeight)),this.canvasContext.closePath(),this.canvasContext.fill())},b.prototype._recalculateSizes=function(){this.elementOffset=this.$element.offset(),this.elementWidth=this.$rectangle.innerWidth(),this.elementHeight=this.$rectangle.innerHeight(),this.centerSize=this.$center.innerWidth(),this.centerR=this.centerSize/2,this.centerX=this.elementWidth/2,this.centerY=this.elementHeight/2},a.fn.factoryBootstrap430_paddingsEditor=function(c){if("string"==typeof c){var d=a(this).data("factory.paddings-editor");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.paddings-editor");d||c.data("factory.paddings-editor",d=new b(this))})},a.fn.factoryBootstrap430_paddingsEditor.Constructor=b,a(function(){a(".factory-bootstrap-430 .factory-paddings-editor").factoryBootstrap430_paddingsEditor()})}(jQuery);
libs/factory/bootstrap/boot.php CHANGED
@@ -10,37 +10,37 @@
10
  */
11
 
12
  // Exit if accessed directly
13
- if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
  // module provides function only for the admin area
18
- if ( ! is_admin() ) {
19
  return;
20
  }
21
 
22
- if ( defined( 'FACTORY_BOOTSTRAP_426_LOADED' ) ) {
23
  return;
24
  }
25
 
26
- define( 'FACTORY_BOOTSTRAP_426_VERSION', '4.2.6' );
27
- define( 'FACTORY_BOOTSTRAP_426_LOADED', true );
28
 
29
- if ( ! defined( 'FACTORY_FLAT_ADMIN' ) ) {
30
- define( 'FACTORY_FLAT_ADMIN', true );
31
  }
32
 
33
- define( 'FACTORY_BOOTSTRAP_426_DIR', dirname( __FILE__ ) );
34
- define( 'FACTORY_BOOTSTRAP_426_URL', plugins_url( null, __FILE__ ) );
35
 
36
- require_once( FACTORY_BOOTSTRAP_426_DIR . '/includes/functions.php' );
37
 
38
  /**
39
- * @param Wbcr_Factory425_Plugin $plugin
40
  */
41
- add_action( 'wbcr_factory_bootstrap_426_plugin_created', function ( $plugin ) {
42
- $manager = new Wbcr_FactoryBootstrap426_Manager( $plugin );
43
- $plugin->setBootstap( $manager );
44
- } );
45
 
46
 
10
  */
11
 
12
  // Exit if accessed directly
13
+ if( !defined('ABSPATH') ) {
14
  exit;
15
  }
16
 
17
  // module provides function only for the admin area
18
+ if( !is_admin() ) {
19
  return;
20
  }
21
 
22
+ if( defined('FACTORY_BOOTSTRAP_430_LOADED') ) {
23
  return;
24
  }
25
 
26
+ define('FACTORY_BOOTSTRAP_430_VERSION', '4.3.0');
27
+ define('FACTORY_BOOTSTRAP_430_LOADED', true);
28
 
29
+ if( !defined('FACTORY_FLAT_ADMIN') ) {
30
+ define('FACTORY_FLAT_ADMIN', true);
31
  }
32
 
33
+ define('FACTORY_BOOTSTRAP_430_DIR', dirname(__FILE__));
34
+ define('FACTORY_BOOTSTRAP_430_URL', plugins_url(null, __FILE__));
35
 
36
+ require_once(FACTORY_BOOTSTRAP_430_DIR . '/includes/functions.php');
37
 
38
  /**
39
+ * @param Wbcr_Factory429_Plugin $plugin
40
  */
41
+ add_action('wbcr_factory_bootstrap_430_plugin_created', function ($plugin) {
42
+ $manager = new Wbcr_FactoryBootstrap430_Manager($plugin);
43
+ $plugin->setBootstap($manager);
44
+ });
45
 
46
 
libs/factory/bootstrap/includes/functions.php CHANGED
@@ -20,13 +20,13 @@ if ( ! defined( 'ABSPATH' ) ) {
20
  *
21
  * @since 3.2.0
22
  */
23
- class Wbcr_FactoryBootstrap426_Manager {
24
 
25
  /**
26
  * A plugin for which the manager was created.
27
  *
28
  * @since 3.2.0
29
- * @var Wbcr_Factory425_Plugin
30
  */
31
  public $plugin;
32
 
@@ -51,7 +51,7 @@ class Wbcr_FactoryBootstrap426_Manager {
51
  *
52
  * @since 1.0.0
53
  */
54
- public function __construct( Wbcr_Factory425_Plugin $plugin ) {
55
  $this->plugin = $plugin;
56
 
57
  add_action( 'admin_enqueue_scripts', [ $this, 'loadAssets' ] );
@@ -111,8 +111,8 @@ class Wbcr_FactoryBootstrap426_Manager {
111
  */
112
  public function loadAssets( $hook ) {
113
 
114
- do_action( 'wbcr_factory_425_bootstrap_enqueue_scripts', $hook );
115
- do_action( 'wbcr_factory_425_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook );
116
 
117
  $dependencies = [];
118
  if ( ! empty( $this->scripts ) ) {
@@ -156,8 +156,8 @@ class Wbcr_FactoryBootstrap426_Manager {
156
  $cache_enable = apply_filters( 'wbcr/factory/bootstrap/cache_enable', true );
157
 
158
  $cache_id = md5( implode( ',', $this->scripts ) . $type . $this->plugin->getPluginVersion() );
159
- $cache_dir_path = FACTORY_BOOTSTRAP_426_DIR . '/assets/cache/';
160
- $cache_dir_url = FACTORY_BOOTSTRAP_426_URL . '/assets/cache/';
161
 
162
  $cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
163
  $cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
@@ -184,7 +184,7 @@ class Wbcr_FactoryBootstrap426_Manager {
184
  foreach ( $scripts as $script_to_load ) {
185
  $script_to_load = sanitize_text_field( $script_to_load );
186
  if ( $cache_enable && $cache_dir_exists ) {
187
- $fname = FACTORY_BOOTSTRAP_426_DIR . "/assets/$type-min/$script_to_load.min." . $type;
188
  if ( file_exists( $fname ) ) {
189
  $f = @fopen( $fname, 'r' );
190
  $concat_files[] = @fread( $f, filesize( $fname ) );
@@ -192,9 +192,9 @@ class Wbcr_FactoryBootstrap426_Manager {
192
  }
193
  } else {
194
  if ( $type == 'js' ) {
195
- wp_enqueue_script( md5( $script_to_load ), FACTORY_BOOTSTRAP_426_URL . "/assets/$type-min/$script_to_load.min." . $type, $is_first ? $dependencies : false, $this->plugin->getPluginVersion() );
196
  } else {
197
- wp_enqueue_style( md5( $script_to_load ), FACTORY_BOOTSTRAP_426_URL . "/assets/$type-min/$script_to_load.min." . $type, [], $this->plugin->getPluginVersion() );
198
  }
199
  $is_first = false;
200
  }
20
  *
21
  * @since 3.2.0
22
  */
23
+ class Wbcr_FactoryBootstrap430_Manager {
24
 
25
  /**
26
  * A plugin for which the manager was created.
27
  *
28
  * @since 3.2.0
29
+ * @var Wbcr_Factory429_Plugin
30
  */
31
  public $plugin;
32
 
51
  *
52
  * @since 1.0.0
53
  */
54
+ public function __construct( Wbcr_Factory429_Plugin $plugin ) {
55
  $this->plugin = $plugin;
56
 
57
  add_action( 'admin_enqueue_scripts', [ $this, 'loadAssets' ] );
111
  */
112
  public function loadAssets( $hook ) {
113
 
114
+ do_action( 'wbcr_factory_429_bootstrap_enqueue_scripts', $hook );
115
+ do_action( 'wbcr_factory_429_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook );
116
 
117
  $dependencies = [];
118
  if ( ! empty( $this->scripts ) ) {
156
  $cache_enable = apply_filters( 'wbcr/factory/bootstrap/cache_enable', true );
157
 
158
  $cache_id = md5( implode( ',', $this->scripts ) . $type . $this->plugin->getPluginVersion() );
159
+ $cache_dir_path = FACTORY_BOOTSTRAP_430_DIR . '/assets/cache/';
160
+ $cache_dir_url = FACTORY_BOOTSTRAP_430_URL . '/assets/cache/';
161
 
162
  $cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
163
  $cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
184
  foreach ( $scripts as $script_to_load ) {
185
  $script_to_load = sanitize_text_field( $script_to_load );
186
  if ( $cache_enable && $cache_dir_exists ) {
187
+ $fname = FACTORY_BOOTSTRAP_430_DIR . "/assets/$type-min/$script_to_load.min." . $type;
188
  if ( file_exists( $fname ) ) {
189
  $f = @fopen( $fname, 'r' );
190
  $concat_files[] = @fread( $f, filesize( $fname ) );
192
  }
193
  } else {
194
  if ( $type == 'js' ) {
195
+ wp_enqueue_script( md5( $script_to_load ), FACTORY_BOOTSTRAP_430_URL . "/assets/$type-min/$script_to_load.min." . $type, $is_first ? $dependencies : false, $this->plugin->getPluginVersion() );
196
  } else {
197
+ wp_enqueue_style( md5( $script_to_load ), FACTORY_BOOTSTRAP_430_URL . "/assets/$type-min/$script_to_load.min." . $type, [], $this->plugin->getPluginVersion() );
198
  }
199
  $is_first = false;
200
  }
libs/factory/core/boot.php CHANGED
@@ -10,53 +10,53 @@
10
  */
11
 
12
  // Exit if accessed directly
13
- if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- if ( defined( 'FACTORY_425_LOADED' ) ) {
18
  return;
19
  }
20
 
21
- define( 'FACTORY_425_LOADED', true );
22
 
23
- define( 'FACTORY_425_VERSION', '4.2.5' );
24
 
25
- define( 'FACTORY_425_DIR', dirname( __FILE__ ) );
26
- define( 'FACTORY_425_URL', plugins_url( null, __FILE__ ) );
27
 
28
- load_plugin_textdomain( 'wbcr_factory_425', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
29
 
30
  #comp merge
31
- require_once( FACTORY_425_DIR . '/includes/functions.php' );
32
 
33
- require_once( FACTORY_425_DIR . '/includes/entities/class-factory-paths.php' );
34
- require_once( FACTORY_425_DIR . '/includes/entities/class-factory-support.php' );
35
 
36
- require_once( FACTORY_425_DIR . '/includes/class-factory-requests.php' );
37
- require_once( FACTORY_425_DIR . '/includes/class-factory-options.php' );
38
- require_once( FACTORY_425_DIR . '/includes/class-factory-plugin-base.php' );
39
- require_once( FACTORY_425_DIR . '/includes/class-factory-migrations.php' );
40
- require_once( FACTORY_425_DIR . '/includes/class-factory-notices.php' );
41
 
42
  // ASSETS
43
- require_once( FACTORY_425_DIR . '/includes/assets-managment/class-factory-assets-list.php' );
44
- require_once( FACTORY_425_DIR . '/includes/assets-managment/class-factory-script-list.php' );
45
- require_once( FACTORY_425_DIR . '/includes/assets-managment/class-factory-style-list.php' );
46
 
47
  // PREMIUM
48
- require_once( FACTORY_425_DIR . '/includes/premium/class-factory-license-interface.php' );
49
- require_once( FACTORY_425_DIR . '/includes/premium/class-factory-provider-abstract.php' );
50
- require_once( FACTORY_425_DIR . '/includes/premium/class-factory-manager.php' );
51
 
52
  // UPDATES
53
- require_once( FACTORY_425_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php' );
54
- require_once( FACTORY_425_DIR . '/includes/updates/repositories/class-factory-wordpress.php' );
55
- require_once( FACTORY_425_DIR . '/includes/updates/class-factory-upgrader.php' );
56
- require_once( FACTORY_425_DIR . '/includes/updates/class-factory-premium-upgrader.php' );
57
 
58
- require_once( FACTORY_425_DIR . '/includes/class-factory-plugin-abstract.php' );
59
 
60
- require_once( FACTORY_425_DIR . '/includes/activation/class-factory-activator.php' );
61
- require_once( FACTORY_425_DIR . '/includes/activation/class-factory-update.php' );
62
  #endcomp
10
  */
11
 
12
  // Exit if accessed directly
13
+ if( !defined('ABSPATH') ) {
14
  exit;
15
  }
16
 
17
+ if( defined('FACTORY_429_LOADED') ) {
18
  return;
19
  }
20
 
21
+ define('FACTORY_429_LOADED', true);
22
 
23
+ define('FACTORY_429_VERSION', '4.2.9');
24
 
25
+ define('FACTORY_429_DIR', dirname(__FILE__));
26
+ define('FACTORY_429_URL', plugins_url(null, __FILE__));
27
 
28
+ load_plugin_textdomain('wbcr_factory_429', false, dirname(plugin_basename(__FILE__)) . '/langs');
29
 
30
  #comp merge
31
+ require_once(FACTORY_429_DIR . '/includes/functions.php');
32
 
33
+ require_once(FACTORY_429_DIR . '/includes/entities/class-factory-paths.php');
34
+ require_once(FACTORY_429_DIR . '/includes/entities/class-factory-support.php');
35
 
36
+ require_once(FACTORY_429_DIR . '/includes/class-factory-requests.php');
37
+ require_once(FACTORY_429_DIR . '/includes/class-factory-options.php');
38
+ require_once(FACTORY_429_DIR . '/includes/class-factory-plugin-base.php');
39
+ require_once(FACTORY_429_DIR . '/includes/class-factory-migrations.php');
40
+ require_once(FACTORY_429_DIR . '/includes/class-factory-notices.php');
41
 
42
  // ASSETS
43
+ require_once(FACTORY_429_DIR . '/includes/assets-managment/class-factory-assets-list.php');
44
+ require_once(FACTORY_429_DIR . '/includes/assets-managment/class-factory-script-list.php');
45
+ require_once(FACTORY_429_DIR . '/includes/assets-managment/class-factory-style-list.php');
46
 
47
  // PREMIUM
48
+ require_once(FACTORY_429_DIR . '/includes/premium/class-factory-license-interface.php');
49
+ require_once(FACTORY_429_DIR . '/includes/premium/class-factory-provider-abstract.php');
50
+ require_once(FACTORY_429_DIR . '/includes/premium/class-factory-manager.php');
51
 
52
  // UPDATES
53
+ require_once(FACTORY_429_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php');
54
+ require_once(FACTORY_429_DIR . '/includes/updates/repositories/class-factory-wordpress.php');
55
+ require_once(FACTORY_429_DIR . '/includes/updates/class-factory-upgrader.php');
56
+ require_once(FACTORY_429_DIR . '/includes/updates/class-factory-premium-upgrader.php');
57
 
58
+ require_once(FACTORY_429_DIR . '/includes/class-factory-plugin-abstract.php');
59
 
60
+ require_once(FACTORY_429_DIR . '/includes/activation/class-factory-activator.php');
61
+ require_once(FACTORY_429_DIR . '/includes/activation/class-factory-update.php');
62
  #endcomp
libs/factory/core/includes/activation/class-factory-activator.php CHANGED
@@ -19,16 +19,16 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  *
20
  * @since 1.0.0
21
  */
22
- abstract class Wbcr_Factory425_Activator {
23
 
24
  /**
25
  * Curent plugin.
26
  *
27
- * @var Wbcr_Factory425_Plugin
28
  */
29
  public $plugin;
30
 
31
- public function __construct( Wbcr_Factory425_Plugin $plugin ) {
32
  $this->plugin = $plugin;
33
  }
34
 
19
  *
20
  * @since 1.0.0
21
  */
22
+ abstract class Wbcr_Factory429_Activator {
23
 
24
  /**
25
  * Curent plugin.
26
  *
27
+ * @var Wbcr_Factory429_Plugin
28
  */
29
  public $plugin;
30
 
31
+ public function __construct( Wbcr_Factory429_Plugin $plugin ) {
32
  $this->plugin = $plugin;
33
  }
34
 
libs/factory/core/includes/activation/class-factory-update.php CHANGED
@@ -20,16 +20,16 @@ if ( ! defined( 'ABSPATH' ) ) {
20
  *
21
  * @since 1.0.0
22
  */
23
- abstract class Wbcr_Factory425_Update {
24
 
25
  /**
26
  * Current plugin
27
  *
28
- * @var Wbcr_Factory425_Plugin
29
  */
30
  var $plugin;
31
 
32
- public function __construct( Wbcr_Factory425_Plugin $plugin ) {
33
  $this->plugin = $plugin;
34
  }
35
 
20
  *
21
  * @since 1.0.0
22
  */
23
+ abstract class Wbcr_Factory429_Update {
24
 
25
  /**
26
  * Current plugin
27
  *
28
+ * @var Wbcr_Factory429_Plugin
29
  */
30
  var $plugin;
31
 
32
+ public function __construct( Wbcr_Factory429_Plugin $plugin ) {
33
  $this->plugin = $plugin;
34
  }
35
 
libs/factory/core/includes/assets-managment/class-factory-assets-list.php CHANGED
@@ -19,7 +19,7 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  *
20
  * @since 1.0.0
21
  */
22
- class Wbcr_Factory425_AssetsList {
23
 
24
  protected $all = [];
25
  public $header_place = [];
@@ -29,15 +29,15 @@ class Wbcr_Factory425_AssetsList {
29
  protected $default_place;
30
 
31
  /**
32
- * @var Wbcr_Factory425_Plugin
33
  */
34
  protected $plugin;
35
 
36
  /**
37
- * @param Wbcr_Factory425_Plugin $plugin
38
  * @param bool $defaultIsFooter
39
  */
40
- public function __construct( Wbcr_Factory425_Plugin $plugin, $defaultIsFooter = true ) {
41
  $this->plugin = $plugin;
42
 
43
  if ( $defaultIsFooter ) {
19
  *
20
  * @since 1.0.0
21
  */
22
+ class Wbcr_Factory429_AssetsList {
23
 
24
  protected $all = [];
25
  public $header_place = [];
29
  protected $default_place;
30
 
31
  /**
32
+ * @var Wbcr_Factory429_Plugin
33
  */
34
  protected $plugin;
35
 
36
  /**
37
+ * @param Wbcr_Factory429_Plugin $plugin
38
  * @param bool $defaultIsFooter
39
  */
40
+ public function __construct( Wbcr_Factory429_Plugin $plugin, $defaultIsFooter = true ) {
41
  $this->plugin = $plugin;
42
 
43
  if ( $defaultIsFooter ) {
libs/factory/core/includes/assets-managment/class-factory-script-list.php CHANGED
@@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_Factory425_ScriptList extends Wbcr_Factory425_AssetsList {
24
 
25
  public $localize_data = [];
26
  public $use_ajax = false;
@@ -149,7 +149,7 @@ class Wbcr_Factory425_ScriptList extends Wbcr_Factory425_AssetsList {
149
  * @param string $varname
150
  * @param string $data
151
  *
152
- * @return Wbcr_Factory425_ScriptList $this
153
  */
154
  public function localize( $varname, $data ) {
155
  $bindTo = count( $this->all ) == 0 ? null : end( $this->all );
@@ -158,7 +158,8 @@ class Wbcr_Factory425_ScriptList extends Wbcr_Factory425_AssetsList {
158
  return $this;
159
  }
160
 
161
- $this->localize_data[ $bindTo ] = [ $varname, $data ];
 
162
 
163
  return $this;
164
  }
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_Factory429_ScriptList extends Wbcr_Factory429_AssetsList {
24
 
25
  public $localize_data = [];
26
  public $use_ajax = false;
149
  * @param string $varname
150
  * @param string $data
151
  *
152
+ * @return Wbcr_Factory429_ScriptList $this
153
  */
154
  public function localize( $varname, $data ) {
155
  $bindTo = count( $this->all ) == 0 ? null : end( $this->all );
158
  return $this;
159
  }
160
 
161
+ $handle = ! empty( $bindTo['handle'] ) ? $bindTo['handle'] : $bindTo['file_url'];
162
+ $this->localize_data[ $handle ] = [ $varname, $data ];
163
 
164
  return $this;
165
  }
libs/factory/core/includes/assets-managment/class-factory-style-list.php CHANGED
@@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_Factory425_StyleList extends Wbcr_Factory425_AssetsList {
24
 
25
  /**
26
  * Adds new items to the collection (default place).
20
  *
21
  * @since 1.0.0
22
  */
23
+ class Wbcr_Factory429_StyleList extends Wbcr_Factory429_AssetsList {
24
 
25
  /**
26
  * Adds new items to the collection (default place).
libs/factory/core/includes/class-check-compatibility.php CHANGED
@@ -82,12 +82,12 @@ if ( ! class_exists( 'Wbcr_Factory_Compatibility' ) ) {
82
 
83
  if ( ! $this->isPhpCompatibility() ) {
84
  $has_one = true;
85
- $notice_text .= '- ' . sprintf( __( 'You need to update the PHP version to %s or higher!', 'wbcr_factory_425' ), $this->required_php_version ) . '<br>';
86
  }
87
 
88
  if ( ! $this->isWpCompatibility() ) {
89
  $has_one = true;
90
- $notice_text .= '- ' . sprintf( __( 'You need to update WordPress to %s or higher!', 'wbcr_factory_425' ), $this->required_wp_version ) . '<br>';
91
  }
92
 
93
  if ( $has_one ) {
82
 
83
  if ( ! $this->isPhpCompatibility() ) {
84
  $has_one = true;
85
+ $notice_text .= '- ' . sprintf( __( 'You need to update the PHP version to %s or higher!', 'wbcr_factory_429' ), $this->required_php_version ) . '<br>';
86
  }
87
 
88
  if ( ! $this->isWpCompatibility() ) {
89
  $has_one = true;
90
+ $notice_text .= '- ' . sprintf( __( 'You need to update WordPress to %s or higher!', 'wbcr_factory_429' ), $this->required_wp_version ) . '<br>';
91
  }
92
 
93
  if ( $has_one ) {
libs/factory/core/includes/class-factory-migrations.php CHANGED
@@ -1,9 +1,9 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_425;
4
 
5
  use Exception;
6
- use Wbcr_Factory425_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
@@ -35,11 +35,11 @@ class Migrations {
35
  /**
36
  * Migrations constructor.
37
  *
38
- * @param Wbcr_Factory425_Plugin $plugin
39
  *
40
  * @throws Exception
41
  */
42
- public function __construct( Wbcr_Factory425_Plugin $plugin ) {
43
 
44
  $this->plugin = $plugin;
45
  $plugin_name = $plugin->getPluginName();
@@ -129,14 +129,14 @@ class Migrations {
129
  $fix_migration_error_url = add_query_arg( 'wbcr_factory_fix_migration_error', 1 );
130
 
131
  $notice_text = $migration_error_text;
132
- $notice_text .= "<br><br><a href='{$fix_migration_error_url}' class='button button-default'>" . __( 'I fixed, confirm migration', 'wbcr_factory_425' ) . "</a>";
133
 
134
  $notices[] = [
135
  'id' => 'migration_debug_bar',
136
  'type' => 'error',
137
  'dismissible' => false,
138
  'dismiss_expires' => 0,
139
- 'text' => '<p><b>' . $this->plugin->getPluginTitle() . ' ' . __( 'migration error', 'wbcr_factory_425' ) . '</b><br>' . $notice_text . '</p>'
140
  ];
141
 
142
  return $notices;
@@ -162,19 +162,19 @@ class Migrations {
162
 
163
  $migrate_url = add_query_arg( 'wbcr_factory_test_migration', 1 );
164
 
165
- $notice_text = __( "Plugin activated:", "wbcr_factory_425" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
166
 
167
- $notice_text .= __( "Old plugin version (debug):", "wbcr_factory_425" ) . ' ' . $this->get_old_plugin_version() . "<br>";
168
- $notice_text .= __( "Current plugin version:", "wbcr_factory_425" ) . ' ' . $this->get_current_plugin_version() . "<br>";
169
- $notice_text .= __( "Need migration:", "wbcr_factory_425" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
170
- $notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_425" ) . "</a><br>";
171
 
172
  $notices[] = [
173
  'id' => 'migration_debug_bar',
174
  'type' => 'warning',
175
  'dismissible' => false,
176
  'dismiss_expires' => 0,
177
- 'text' => '<p><b style="color:red;">' . $this->plugin->getPluginTitle() . ' ' . __( 'migrations DEBUG bar', 'wbcr_factory_425' ) . '</b><br>' . $notice_text . '</p>'
178
  ];
179
 
180
  return $notices;
@@ -505,7 +505,7 @@ class Migrations {
505
  $classes = [];
506
 
507
  if ( ! function_exists( 'token_get_all' ) ) {
508
- throw new Exception( __( 'There is no PHP Tokenizer extension installed on your server, you cannot use the token_get_all function.', 'wbcr_factory_425' ) );
509
  }
510
 
511
  $tokens = token_get_all( $phpCode );
1
  <?php
2
 
3
+ namespace WBCR\Factory_429;
4
 
5
  use Exception;
6
+ use Wbcr_Factory429_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
35
  /**
36
  * Migrations constructor.
37
  *
38
+ * @param Wbcr_Factory429_Plugin $plugin
39
  *
40
  * @throws Exception
41
  */
42
+ public function __construct( Wbcr_Factory429_Plugin $plugin ) {
43
 
44
  $this->plugin = $plugin;
45
  $plugin_name = $plugin->getPluginName();
129
  $fix_migration_error_url = add_query_arg( 'wbcr_factory_fix_migration_error', 1 );
130
 
131
  $notice_text = $migration_error_text;
132
+ $notice_text .= "<br><br><a href='{$fix_migration_error_url}' class='button button-default'>" . __( 'I fixed, confirm migration', 'wbcr_factory_429' ) . "</a>";
133
 
134
  $notices[] = [
135
  'id' => 'migration_debug_bar',
136
  'type' => 'error',
137
  'dismissible' => false,
138
  'dismiss_expires' => 0,
139
+ 'text' => '<p><b>' . $this->plugin->getPluginTitle() . ' ' . __( 'migration error', 'wbcr_factory_429' ) . '</b><br>' . $notice_text . '</p>'
140
  ];
141
 
142
  return $notices;
162
 
163
  $migrate_url = add_query_arg( 'wbcr_factory_test_migration', 1 );
164
 
165
+ $notice_text = __( "Plugin activated:", "wbcr_factory_429" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
166
 
167
+ $notice_text .= __( "Old plugin version (debug):", "wbcr_factory_429" ) . ' ' . $this->get_old_plugin_version() . "<br>";
168
+ $notice_text .= __( "Current plugin version:", "wbcr_factory_429" ) . ' ' . $this->get_current_plugin_version() . "<br>";
169
+ $notice_text .= __( "Need migration:", "wbcr_factory_429" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
170
+ $notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_429" ) . "</a><br>";
171
 
172
  $notices[] = [
173
  'id' => 'migration_debug_bar',
174
  'type' => 'warning',
175
  'dismissible' => false,
176
  'dismiss_expires' => 0,
177
+ 'text' => '<p><b style="color:red;">' . $this->plugin->getPluginTitle() . ' ' . __( 'migrations DEBUG bar', 'wbcr_factory_429' ) . '</b><br>' . $notice_text . '</p>'
178
  ];
179
 
180
  return $notices;
505
  $classes = [];
506
 
507
  if ( ! function_exists( 'token_get_all' ) ) {
508
+ throw new Exception( __( 'There is no PHP Tokenizer extension installed on your server, you cannot use the token_get_all function.', 'wbcr_factory_429' ) );
509
  }
510
 
511
  $tokens = token_get_all( $phpCode );
libs/factory/core/includes/class-factory-notices.php CHANGED
@@ -1,11 +1,11 @@
1
  <?php
2
 
3
- namespace WBCR\Factory_425;
4
 
5
- use Wbcr_Factory425_Plugin;
6
 
7
  // Exit if accessed directly
8
- if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
10
  }
11
 
@@ -27,7 +27,7 @@ if ( ! defined( 'ABSPATH' ) ) {
27
  class Notices {
28
 
29
  /**
30
- * @var Wbcr_Factory425_Plugin
31
  */
32
  protected $plugin;
33
  /**
@@ -58,22 +58,23 @@ class Notices {
58
  /**
59
  * Инициализируем уведомлений сразу после загрузки модуля уведомлений
60
  *
61
- * @param Wbcr_Factory425_Plugin $plugin
62
  */
63
- public function __construct( $plugin ) {
 
64
  //default notices
65
  //---
66
 
67
- $this->plugin = $plugin;
68
- $this->dissmised_notices = $this->plugin->getPopulateOption( 'factory_dismissed_notices', [] );
69
 
70
- add_action( 'current_screen', [ $this, 'currentScreenAction' ] );
71
 
72
- if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
73
- add_action( 'wp_ajax_' . $this->plugin->getPluginName() . '_dismiss_notice', [
74
  $this,
75
  'dismiss_notice'
76
- ] );
77
  }
78
  }
79
 
@@ -82,51 +83,37 @@ class Notices {
82
  * Уведомления собираются через фильтр wbcr_factory_admin_notices, если в массиве уведомлений,
83
  * хотя бы одно, соответствует условиям в параметре $notice['where'], то метод печает вспомогательные скрипты и уведомления.
84
  */
85
- public function currentScreenAction() {
 
86
  /**
87
- * @since 2.1.2 - является устаревшим
88
  */
89
- $this->notices = wbcr_factory_425_apply_filters_deprecated( 'wbcr_factory_notices_000_list', [
90
- $t
1
  <?php
2
 
3
+ namespace WBCR\Factory_429;
4
 
5
+ use Wbcr_Factory429_Plugin;
6
 
7
  // Exit if accessed directly
8
+ if( !defined('ABSPATH') ) {
9
  exit;
10
  }
11
 
27
  class Notices {
28
 
29
  /**
30
+ * @var Wbcr_Factory429_Plugin
31
  */
32
  protected $plugin;
33
  /**
58
  /**
59
  * Инициализируем уведомлений сразу после загрузки модуля уведомлений
60
  *
61
+ * @param Wbcr_Factory429_Plugin $plugin
62
  */
63
+ public function __construct($plugin)
64
+ {
65
  //default notices
66
  //---
67
 
68
+ $this->plugin = $plugin;
69
+ $this->dissmised_notices = $this->plugin->getPopulateOption('factory_dismissed_notices', []);
70
 
71
+ add_action('current_screen', [$this, 'currentScreenAction']);
72
 
73
+ if( defined('DOING_AJAX') && DOING_AJAX ) {
74
+ add_action('wp_ajax_' . $this->plugin->getPluginName() . '_dismiss_notice', [
75
  $this,
76
  'dismiss_notice'
77
+ ]);
78
  }
79
  }
80
 
83
  * Уведомления собираются через фильтр wbcr_factory_admin_notices, если в массиве уведомлений,
84
  * хотя бы одно, соответствует условиям в параметре $notice['where'], то метод печает вспомогательные скрипты и уведомления.
85
  */
86
+ public function currentScreenAction()
87
+ {
88
  /**
89
+ * @since 2.1.2 - Добавлен, модуль factory_notices_000 был удален. Поэтому в этому хуке мы заменили префикс на factory_429
90
  */