Livemesh SiteOrigin Widgets - Version 1.3

Version Description

  • New widgets - Flat style buttons and Icon List widget
  • New fields - Datepicker and Timepicker for developing SiteOrigin widgets
  • Fixed - Some themes squeeze the images in a Livemesh grid or Team widget.
  • Fixed - Couple of widgets fail to display the post links.
  • Fixed - The testimonials slider not aligned to the center
  • Some styling improvements and fixes
Download this release

Release Info

Developer livemesh
Plugin Icon 128x128 Livemesh SiteOrigin Widgets
Version 1.3
Comparing to
See all releases

Code changes from version 1.2 to 1.3

Files changed (78) hide show
  1. assets/css/lsow-admin.css +3 -0
  2. assets/css/lsow-admin.css.map +1 -1
  3. assets/css/lsow-admin.scss +4 -0
  4. assets/css/lsow-frontend.css +114 -8
  5. assets/css/lsow-frontend.css.map +1 -1
  6. assets/css/lsow-frontend.scss +120 -7
  7. assets/css/magnific-popup.css +85 -125
  8. assets/js/jquery.magnific-popup.js +1457 -1657
  9. assets/js/jquery.magnific-popup.min.js +4 -4
  10. assets/js/jquery.powertip.js +1166 -0
  11. assets/js/jquery.powertip.min.js +8 -0
  12. includes/class-lsow-setup.php +1 -1
  13. includes/fields/css/images/ui-icons_444444_256x240.png +0 -0
  14. includes/fields/css/images/ui-icons_555555_256x240.png +0 -0
  15. includes/fields/css/images/ui-icons_777620_256x240.png +0 -0
  16. includes/fields/css/images/ui-icons_777777_256x240.png +0 -0
  17. includes/fields/css/images/ui-icons_cc0000_256x240.png +0 -0
  18. includes/fields/css/images/ui-icons_ffffff_256x240.png +0 -0
  19. includes/fields/css/jquery-ui-timepicker-addon.css +30 -0
  20. includes/fields/css/jquery-ui.css +715 -0
  21. includes/fields/datepicker.class.php +23 -0
  22. includes/fields/js/datepicker-field.js +41 -0
  23. includes/fields/js/datepicker-field.min.js +1 -0
  24. includes/fields/js/jquery-ui-timepicker-addon.js +2291 -0
  25. includes/fields/js/jquery-ui-timepicker-addon.min.js +5 -0
  26. includes/fields/js/timepicker-field.js +46 -0
  27. includes/fields/js/timepicker-field.min.js +1 -0
  28. includes/fields/timepicker.class.php +29 -0
  29. includes/helper-functions.php +28 -0
  30. includes/widgets/lsow-accordion-widget/css/style.css +2 -1
  31. includes/widgets/lsow-accordion-widget/css/style.css.map +1 -1
  32. includes/widgets/lsow-accordion-widget/css/style.scss +1 -0
  33. includes/widgets/lsow-accordion-widget/lsow-accordion-widget.php +1 -1
  34. includes/widgets/lsow-button-widget/assets/banner.svg +19 -0
  35. includes/widgets/lsow-button-widget/css/style.css +119 -0
  36. includes/widgets/lsow-button-widget/css/style.css.map +7 -0
  37. includes/widgets/lsow-button-widget/css/style.scss +82 -0
  38. includes/widgets/lsow-button-widget/lsow-button-widget.php +246 -0
  39. includes/widgets/lsow-button-widget/tpl/default.php +59 -0
  40. includes/widgets/lsow-carousel-widget/lsow-carousel-widget.php +1 -1
  41. includes/widgets/lsow-clients-widget/lsow-clients-widget.php +1 -1
  42. includes/widgets/lsow-clients-widget/tpl/default.php +2 -1
  43. includes/widgets/lsow-heading-widget/css/style.css +30 -25
  44. includes/widgets/lsow-heading-widget/css/style.css.map +1 -1
  45. includes/widgets/lsow-heading-widget/css/style.scss +48 -30
  46. includes/widgets/lsow-heading-widget/lsow-heading-widget.php +13 -1
  47. includes/widgets/lsow-heading-widget/tpl/default.php +2 -1
  48. includes/widgets/lsow-hero-image-widget/lsow-hero-image-widget.php +2 -2
  49. includes/widgets/lsow-hero-image-widget/tpl/default.php +1 -1
  50. includes/widgets/lsow-icon-list-widget/assets/banner.svg +59 -0
  51. includes/widgets/lsow-icon-list-widget/css/style.css +66 -0
  52. includes/widgets/lsow-icon-list-widget/css/style.css.map +7 -0
  53. includes/widgets/lsow-icon-list-widget/css/style.scss +70 -0
  54. includes/widgets/lsow-icon-list-widget/js/icon-list.js +9 -0
  55. includes/widgets/lsow-icon-list-widget/js/icon-list.min.js +1 -0
  56. includes/widgets/lsow-icon-list-widget/lsow-icon-list-widget.php +191 -0
  57. includes/widgets/lsow-icon-list-widget/styles/default.less +22 -0
  58. includes/widgets/lsow-icon-list-widget/tpl/default.php +77 -0
  59. includes/widgets/lsow-odometers-widget/lsow-odometers-widget.php +1 -1
  60. includes/widgets/lsow-piecharts-widget/lsow-piecharts-widget.php +1 -1
  61. includes/widgets/lsow-portfolio-widget/lsow-portfolio-widget.php +3 -3
  62. includes/widgets/lsow-posts-carousel-widget/lsow-posts-carousel-widget.php +1 -1
  63. includes/widgets/lsow-pricing-table-widget/lsow-pricing-table-widget.php +1 -1
  64. includes/widgets/lsow-pricing-table-widget/tpl/default.php +22 -23
  65. includes/widgets/lsow-services-widget/lsow-services-widget.php +1 -1
  66. includes/widgets/lsow-stats-bar-widget/lsow-stats-bar-widget.php +1 -1
  67. includes/widgets/lsow-tabs-widget/css/style.css +3 -2
  68. includes/widgets/lsow-tabs-widget/css/style.css.map +1 -1
  69. includes/widgets/lsow-tabs-widget/css/style.scss +2 -1
  70. includes/widgets/lsow-tabs-widget/js/tabs.js +0 -8
  71. includes/widgets/lsow-tabs-widget/lsow-tabs-widget.php +1 -1
  72. includes/widgets/lsow-team-members-widget/lsow-team-members-widget.php +1 -1
  73. includes/widgets/lsow-testimonials-slider-widget/css/style.css +2 -1
  74. includes/widgets/lsow-testimonials-slider-widget/css/style.css.map +1 -1
  75. includes/widgets/lsow-testimonials-slider-widget/css/style.scss +1 -0
  76. includes/widgets/lsow-testimonials-widget/lsow-testimonials-widget.php +1 -1
  77. livemesh-so-widgets.php +2 -2
  78. readme.txt +13 -3
assets/css/lsow-admin.css CHANGED
@@ -1,4 +1,7 @@
1
  .center {
2
  text-align: center; }
3
 
 
 
 
4
  /*# sourceMappingURL=lsow-admin.css.map */
1
  .center {
2
  text-align: center; }
3
 
4
+ .siteorigin-widget-form .siteorigin-widget-field .lsow-widget-input-datepicker, .siteorigin-widget-form .siteorigin-widget-field .lsow-widget-input-timepicker {
5
+ max-width: 230px; }
6
+
7
  /*# sourceMappingURL=lsow-admin.css.map */
assets/css/lsow-admin.css.map CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "version": 3,
3
- "mappings": "AAAA,OAAQ;EACN,UAAU,EAAE,MAAM",
4
  "sources": ["lsow-admin.scss"],
5
  "names": [],
6
  "file": "lsow-admin.css"
1
  {
2
  "version": 3,
3
+ "mappings": "AAAA,OAAQ;EACN,UAAU,EAAE,MAAM;;AAGpB,8JAA+J;EAC7J,SAAS,EAAE,KAAK",
4
  "sources": ["lsow-admin.scss"],
5
  "names": [],
6
  "file": "lsow-admin.css"
assets/css/lsow-admin.scss CHANGED
@@ -1,3 +1,7 @@
1
  .center {
2
  text-align: center;
 
 
 
 
3
  }
1
  .center {
2
  text-align: center;
3
+ }
4
+
5
+ .siteorigin-widget-form .siteorigin-widget-field .lsow-widget-input-datepicker, .siteorigin-widget-form .siteorigin-widget-field .lsow-widget-input-timepicker {
6
+ max-width: 230px;
7
  }
assets/css/lsow-frontend.css CHANGED
@@ -14,19 +14,21 @@ html {
14
  .panel-grid .widget {
15
  overflow: initial; }
16
 
17
- .lsow-container ol, .lsow-container ul, .lsow-container ol li, .lsow-container ul li, .lsow-container ol:hover, .lsow-container ul:hover, .lsow-container ul li:hover, .lsow-container ol li:hover, .lsow-container ol li a, .lsow-container ul li a, .lsow-container ol li a:hover, .lsow-container ul li a:hover, .lsow-container img {
18
  padding: 0;
19
  margin: 0;
20
  border: none;
21
  box-shadow: none;
22
  list-style: none;
23
  background: none; }
24
- .lsow-container ol:before, .lsow-container ol:after, .lsow-container ul:before, .lsow-container ul:after, .lsow-container ol li:before, .lsow-container ol li:after, .lsow-container ul li:before, .lsow-container ul li:after, .lsow-container ol:hover:before, .lsow-container ol:hover:after, .lsow-container ul:hover:before, .lsow-container ul:hover:after, .lsow-container ul li:hover:before, .lsow-container ul li:hover:after, .lsow-container ol li:hover:before, .lsow-container ol li:hover:after, .lsow-container ol li a:before, .lsow-container ol li a:after, .lsow-container ul li a:before, .lsow-container ul li a:after, .lsow-container ol li a:hover:before, .lsow-container ol li a:hover:after, .lsow-container ul li a:hover:before, .lsow-container ul li a:hover:after, .lsow-container img:before, .lsow-container img:after {
25
  display: none; }
26
  .lsow-container a {
27
  text-decoration: initial; }
28
  .lsow-container img {
29
- max-width: 100%; }
 
 
30
 
31
  /* ------- General styles ------------ */
32
  .lsow-container {
@@ -223,6 +225,13 @@ html {
223
  width: 100%; } }
224
 
225
  /* --------------- Flexslider Styles -------------- */
 
 
 
 
 
 
 
226
  .lsow-container .lsow-flex-direction-nav li {
227
  position: initial; }
228
  .lsow-container .lsow-flex-direction-nav a, .lsow-container .lsow-flex-direction-nav a:hover {
@@ -254,14 +263,12 @@ html {
254
  -moz-transition: all 0.3s ease-in-out 0s;
255
  -ms-transition: all 0.3s ease-in-out 0s;
256
  transition: all 0.3s ease-in-out 0s; }
257
- .lsow-container .lsow-flex-direction-nav a:before, .lsow-container .lsow-flex-direction-nav a:hover:before, .lsow-container .lsow-flex-direction-nav a:hover:before, .lsow-container .lsow-flex-direction-nav a:hover:hover:before {
258
  margin: 2px;
259
  vertical-align: middle;
260
  display: inline;
261
  font-family: inherit !important;
262
  opacity: 1; }
263
- .lsow-container .lsow-flex-direction-nav a:hover, .lsow-container .lsow-flex-direction-nav a:hover:hover {
264
- color: #888; }
265
  .lsow-dark-bg .lsow-container .lsow-flex-direction-nav a, .lsow-dark-bg .lsow-container .lsow-flex-direction-nav a:hover {
266
  color: #888; }
267
  .lsow-dark-bg .lsow-container .lsow-flex-direction-nav a:hover, .lsow-dark-bg .lsow-container .lsow-flex-direction-nav a:hover:hover {
@@ -282,7 +289,9 @@ html {
282
  width: 100%;
283
  position: absolute;
284
  bottom: -40px;
285
- text-align: center; }
 
 
286
  .lsow-container .lsow-flex-control-nav li, .lsow-container .lsow-flex-control-nav li:hover {
287
  margin: 0 8px 0 0;
288
  padding: 0;
@@ -395,9 +404,12 @@ html {
395
  .lsow-dark-bg .lsow-container ul.slick-dots li button {
396
  background: #888 !important;
397
  border-color: #888 !important; }
398
- .lsow-container ul.slick-dots li button:hover {
399
  background: none !important;
400
  border-color: #aaa !important; }
 
 
 
401
 
402
  /* -------- Widget separator headline ------------ */
403
  .lsow-widget-heading {
@@ -418,4 +430,98 @@ html {
418
  font-size: 32px;
419
  line-height: 44px; } }
420
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
421
  /*# sourceMappingURL=lsow-frontend.css.map */
14
  .panel-grid .widget {
15
  overflow: initial; }
16
 
17
+ .lsow-container ol, .lsow-container ul, .lsow-container ol > li, .lsow-container ul > li, .lsow-container ol:hover, .lsow-container ul:hover, .lsow-container ul > li:hover, .lsow-container ol > li:hover, .lsow-container ol > li > a, .lsow-container ul > li > a, .lsow-container ol > li > a:hover, .lsow-container ul > li > a:hover, .lsow-container img {
18
  padding: 0;
19
  margin: 0;
20
  border: none;
21
  box-shadow: none;
22
  list-style: none;
23
  background: none; }
24
+ .lsow-container ol:before, .lsow-container ol:after, .lsow-container ul:before, .lsow-container ul:after, .lsow-container ol > li:before, .lsow-container ol > li:after, .lsow-container ul > li:before, .lsow-container ul > li:after, .lsow-container ol:hover:before, .lsow-container ol:hover:after, .lsow-container ul:hover:before, .lsow-container ul:hover:after, .lsow-container ul > li:hover:before, .lsow-container ul > li:hover:after, .lsow-container ol > li:hover:before, .lsow-container ol > li:hover:after, .lsow-container ol > li > a:before, .lsow-container ol > li > a:after, .lsow-container ul > li > a:before, .lsow-container ul > li > a:after, .lsow-container ol > li > a:hover:before, .lsow-container ol > li > a:hover:after, .lsow-container ul > li > a:hover:before, .lsow-container ul > li > a:hover:after, .lsow-container img:before, .lsow-container img:after {
25
  display: none; }
26
  .lsow-container a {
27
  text-decoration: initial; }
28
  .lsow-container img {
29
+ max-width: 100%;
30
+ width: auto;
31
+ height: auto; }
32
 
33
  /* ------- General styles ------------ */
34
  .lsow-container {
225
  width: 100%; } }
226
 
227
  /* --------------- Flexslider Styles -------------- */
228
+ .lsow-container .lsow-thumbnailslider.lsow-flexslider {
229
+ margin: 0; }
230
+ .lsow-container .lsow-thumbnailslider.lsow-flexslider .lsow-slide {
231
+ margin: 0 5px; }
232
+ .lsow-container .lsow-flex-direction-nav {
233
+ padding: 0 !important;
234
+ margin: 0 !important; }
235
  .lsow-container .lsow-flex-direction-nav li {
236
  position: initial; }
237
  .lsow-container .lsow-flex-direction-nav a, .lsow-container .lsow-flex-direction-nav a:hover {
263
  -moz-transition: all 0.3s ease-in-out 0s;
264
  -ms-transition: all 0.3s ease-in-out 0s;
265
  transition: all 0.3s ease-in-out 0s; }
266
+ .lsow-container .lsow-flex-direction-nav a:before, .lsow-container .lsow-flex-direction-nav a:hover:before {
267
  margin: 2px;
268
  vertical-align: middle;
269
  display: inline;
270
  font-family: inherit !important;
271
  opacity: 1; }
 
 
272
  .lsow-dark-bg .lsow-container .lsow-flex-direction-nav a, .lsow-dark-bg .lsow-container .lsow-flex-direction-nav a:hover {
273
  color: #888; }
274
  .lsow-dark-bg .lsow-container .lsow-flex-direction-nav a:hover, .lsow-dark-bg .lsow-container .lsow-flex-direction-nav a:hover:hover {
289
  width: 100%;
290
  position: absolute;
291
  bottom: -40px;
292
+ text-align: center;
293
+ padding: 0 !important;
294
+ margin: 0 !important; }
295
  .lsow-container .lsow-flex-control-nav li, .lsow-container .lsow-flex-control-nav li:hover {
296
  margin: 0 8px 0 0;
297
  padding: 0;
404
  .lsow-dark-bg .lsow-container ul.slick-dots li button {
405
  background: #888 !important;
406
  border-color: #888 !important; }
407
+ .lsow-container ul.slick-dots li button:hover, .lsow-container ul.slick-dots li.slick-active button {
408
  background: none !important;
409
  border-color: #aaa !important; }
410
+ .lsow-container ul.slick-dots li.slick-active button {
411
+ width: 14px;
412
+ height: 14px; }
413
 
414
  /* -------- Widget separator headline ------------ */
415
  .lsow-widget-heading {
430
  font-size: 32px;
431
  line-height: 44px; } }
432
 
433
+ /*------------- Powertip Tooltip ----------- */
434
+ /* PowerTip Plugin */
435
+ #powerTip {
436
+ cursor: default;
437
+ background-color: #333;
438
+ background-color: rgba(0, 0, 0, 0.8);
439
+ border-radius: 6px;
440
+ color: #fff;
441
+ display: none;
442
+ padding: 10px;
443
+ position: absolute;
444
+ white-space: nowrap;
445
+ z-index: 2147483647; }
446
+
447
+ #powerTip:before {
448
+ content: "";
449
+ position: absolute; }
450
+
451
+ #powerTip.n:before, #powerTip.s:before {
452
+ border-right: 5px solid transparent;
453
+ border-left: 5px solid transparent;
454
+ left: 50%;
455
+ margin-left: -5px; }
456
+
457
+ #powerTip.e:before, #powerTip.w:before {
458
+ border-bottom: 5px solid transparent;
459
+ border-top: 5px solid transparent;
460
+ margin-top: -5px;
461
+ top: 50%; }
462
+
463
+ #powerTip.n:before {
464
+ border-top: 10px solid #333;
465
+ border-top: 10px solid rgba(0, 0, 0, 0.8);
466
+ bottom: -10px; }
467
+
468
+ #powerTip.e:before {
469
+ border-right: 10px solid #333;
470
+ border-right: 10px solid rgba(0, 0, 0, 0.8);
471
+ left: -10px; }
472
+
473
+ #powerTip.s:before {
474
+ border-bottom: 10px solid #333;
475
+ border-bottom: 10px solid rgba(0, 0, 0, 0.8);
476
+ top: -10px; }
477
+
478
+ #powerTip.w:before {
479
+ border-left: 10px solid #333;
480
+ border-left: 10px solid rgba(0, 0, 0, 0.8);
481
+ right: -10px; }
482
+
483
+ #powerTip.ne:before, #powerTip.se:before {
484
+ border-right: 10px solid transparent;
485
+ border-left: 0;
486
+ left: 10px; }
487
+
488
+ #powerTip.nw:before, #powerTip.sw:before {
489
+ border-left: 10px solid transparent;
490
+ border-right: 0;
491
+ right: 10px; }
492
+
493
+ #powerTip.ne:before, #powerTip.nw:before {
494
+ border-top: 10px solid #333;
495
+ border-top: 10px solid rgba(0, 0, 0, 0.8);
496
+ bottom: -10px; }
497
+
498
+ #powerTip.se:before, #powerTip.sw:before {
499
+ border-bottom: 10px solid #333;
500
+ border-bottom: 10px solid rgba(0, 0, 0, 0.8);
501
+ top: -10px; }
502
+
503
+ #powerTip.nw-alt:before, #powerTip.ne-alt:before,
504
+ #powerTip.sw-alt:before, #powerTip.se-alt:before {
505
+ border-top: 10px solid #333;
506
+ border-top: 10px solid rgba(0, 0, 0, 0.8);
507
+ bottom: -10px;
508
+ border-left: 5px solid transparent;
509
+ border-right: 5px solid transparent;
510
+ left: 10px; }
511
+
512
+ #powerTip.ne-alt:before {
513
+ left: auto;
514
+ right: 10px; }
515
+
516
+ #powerTip.sw-alt:before, #powerTip.se-alt:before {
517
+ border-top: none;
518
+ border-bottom: 10px solid #333;
519
+ border-bottom: 10px solid rgba(0, 0, 0, 0.8);
520
+ bottom: auto;
521
+ top: -10px; }
522
+
523
+ #powerTip.se-alt:before {
524
+ left: auto;
525
+ right: 10px; }
526
+
527
  /*# sourceMappingURL=lsow-frontend.css.map */
assets/css/lsow-frontend.css.map CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "version": 3,
3
- "mappings": "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",
4
  "sources": ["../../../../bower_components/neat/app/assets/stylesheets/grid/_box-sizing.scss","lsow-frontend.scss","../../../../bower_components/neat/app/assets/stylesheets/grid/_omega.scss","_lsow-lib.scss","../../../../bower_components/neat/app/assets/stylesheets/grid/_span-columns.scss"],
5
  "names": [],
6
  "file": "lsow-frontend.css"
1
  {
2
  "version": 3,
3
+ "mappings": "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",
4
  "sources": ["../../../../bower_components/neat/app/assets/stylesheets/grid/_box-sizing.scss","lsow-frontend.scss","../../../../bower_components/neat/app/assets/stylesheets/grid/_omega.scss","_lsow-lib.scss","../../../../bower_components/neat/app/assets/stylesheets/grid/_span-columns.scss"],
5
  "names": [],
6
  "file": "lsow-frontend.css"
assets/css/lsow-frontend.scss CHANGED
@@ -11,7 +11,7 @@
11
  }
12
 
13
  .lsow-container {
14
- ol, ul, ol li, ul li, ol:hover, ul:hover, ul li:hover, ol li:hover, ol li a, ul li a, ol li a:hover, ul li a:hover, img {
15
  padding: 0;
16
  margin: 0;
17
  border: none;
@@ -27,6 +27,8 @@
27
  }
28
  img {
29
  max-width: 100%;
 
 
30
  }
31
  }
32
 
@@ -239,6 +241,16 @@ $grid-columns: 12;
239
  /* --------------- Flexslider Styles -------------- */
240
 
241
  .lsow-container {
 
 
 
 
 
 
 
 
 
 
242
  .lsow-flex-direction-nav li {
243
  position: initial;
244
  }
@@ -260,16 +272,13 @@ $grid-columns: 12;
260
  text-align: center;
261
  color: #aaa;
262
  @include vendorize(transition, all 0.3s ease-in-out 0s);
263
- &:before, &:hover:before {
264
  margin: 2px;
265
  vertical-align: middle;
266
  display: inline;
267
  font-family: inherit !important;
268
  opacity: 1;
269
  }
270
- &:hover {
271
- color: #888;
272
- }
273
  .lsow-dark-bg & {
274
  color: #888;
275
  &:hover {
@@ -297,6 +306,8 @@ $grid-columns: 12;
297
  position: absolute;
298
  bottom: -40px;
299
  text-align: center;
 
 
300
  li, li:hover {
301
  margin: 0 8px 0 0;
302
  padding: 0;
@@ -415,10 +426,14 @@ $grid-columns: 12;
415
  border-color: #888 !important;
416
  }
417
  }
418
- li button:hover {
419
  background: none !important;
420
  border-color: #aaa !important;
421
  }
 
 
 
 
422
  }
423
  }
424
 
@@ -433,4 +448,102 @@ $grid-columns: 12;
433
  font-size: 32px;
434
  line-height: 44px;
435
  }
436
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  }
12
 
13
  .lsow-container {
14
+ ol, ul, ol > li, ul > li, ol:hover, ul:hover, ul > li:hover, ol > li:hover, ol > li > a, ul > li > a, ol > li > a:hover, ul > li > a:hover, img {
15
  padding: 0;
16
  margin: 0;
17
  border: none;
27
  }
28
  img {
29
  max-width: 100%;
30
+ width: auto;
31
+ height: auto;
32
  }
33
  }
34
 
241
  /* --------------- Flexslider Styles -------------- */
242
 
243
  .lsow-container {
244
+ .lsow-thumbnailslider.lsow-flexslider {
245
+ margin: 0;
246
+ }
247
+ .lsow-thumbnailslider.lsow-flexslider .lsow-slide {
248
+ margin: 0 5px;
249
+ }
250
+ .lsow-flex-direction-nav {
251
+ padding: 0 !important;
252
+ margin: 0 !important;
253
+ }
254
  .lsow-flex-direction-nav li {
255
  position: initial;
256
  }
272
  text-align: center;
273
  color: #aaa;
274
  @include vendorize(transition, all 0.3s ease-in-out 0s);
275
+ &:before {
276
  margin: 2px;
277
  vertical-align: middle;
278
  display: inline;
279
  font-family: inherit !important;
280
  opacity: 1;
281
  }
 
 
 
282
  .lsow-dark-bg & {
283
  color: #888;
284
  &:hover {
306
  position: absolute;
307
  bottom: -40px;
308
  text-align: center;
309
+ padding: 0 !important;
310
+ margin: 0 !important;
311
  li, li:hover {
312
  margin: 0 8px 0 0;
313
  padding: 0;
426
  border-color: #888 !important;
427
  }
428
  }
429
+ li button:hover, li.slick-active button {
430
  background: none !important;
431
  border-color: #aaa !important;
432
  }
433
+ li.slick-active button {
434
+ width: 14px;
435
+ height: 14px;
436
+ }
437
  }
438
  }
439
 
448
  font-size: 32px;
449
  line-height: 44px;
450
  }
451
+ }
452
+
453
+ /*------------- Powertip Tooltip ----------- */
454
+
455
+ /* PowerTip Plugin */
456
+ #powerTip {
457
+ cursor: default;
458
+ background-color: #333;
459
+ background-color: rgba(0, 0, 0, 0.8);
460
+ border-radius: 6px;
461
+ color: #fff;
462
+ display: none;
463
+ padding: 10px;
464
+ position: absolute;
465
+ white-space: nowrap;
466
+ z-index: 2147483647;
467
+ }
468
+ #powerTip:before {
469
+ content: "";
470
+ position: absolute;
471
+ }
472
+ #powerTip.n:before, #powerTip.s:before {
473
+ border-right: 5px solid transparent;
474
+ border-left: 5px solid transparent;
475
+ left: 50%;
476
+ margin-left: -5px;
477
+ }
478
+ #powerTip.e:before, #powerTip.w:before {
479
+ border-bottom: 5px solid transparent;
480
+ border-top: 5px solid transparent;
481
+ margin-top: -5px;
482
+ top: 50%;
483
+ }
484
+ #powerTip.n:before {
485
+ border-top: 10px solid #333;
486
+ border-top: 10px solid rgba(0, 0, 0, 0.8);
487
+ bottom: -10px;
488
+ }
489
+ #powerTip.e:before {
490
+ border-right: 10px solid #333;
491
+ border-right: 10px solid rgba(0, 0, 0, 0.8);
492
+ left: -10px;
493
+ }
494
+ #powerTip.s:before {
495
+ border-bottom: 10px solid #333;
496
+ border-bottom: 10px solid rgba(0, 0, 0, 0.8);
497
+ top: -10px;
498
+ }
499
+ #powerTip.w:before {
500
+ border-left: 10px solid #333;
501
+ border-left: 10px solid rgba(0, 0, 0, 0.8);
502
+ right: -10px;
503
+ }
504
+ #powerTip.ne:before, #powerTip.se:before {
505
+ border-right: 10px solid transparent;
506
+ border-left: 0;
507
+ left: 10px;
508
+ }
509
+ #powerTip.nw:before, #powerTip.sw:before {
510
+ border-left: 10px solid transparent;
511
+ border-right: 0;
512
+ right: 10px;
513
+ }
514
+ #powerTip.ne:before, #powerTip.nw:before {
515
+ border-top: 10px solid #333;
516
+ border-top: 10px solid rgba(0, 0, 0, 0.8);
517
+ bottom: -10px;
518
+ }
519
+ #powerTip.se:before, #powerTip.sw:before {
520
+ border-bottom: 10px solid #333;
521
+ border-bottom: 10px solid rgba(0, 0, 0, 0.8);
522
+ top: -10px;
523
+ }
524
+ #powerTip.nw-alt:before, #powerTip.ne-alt:before,
525
+ #powerTip.sw-alt:before, #powerTip.se-alt:before {
526
+ border-top: 10px solid #333;
527
+ border-top: 10px solid rgba(0, 0, 0, 0.8);
528
+ bottom: -10px;
529
+ border-left: 5px solid transparent;
530
+ border-right: 5px solid transparent;
531
+ left: 10px;
532
+ }
533
+ #powerTip.ne-alt:before {
534
+ left: auto;
535
+ right: 10px;
536
+ }
537
+ #powerTip.sw-alt:before, #powerTip.se-alt:before {
538
+ border-top: none;
539
+ border-bottom: 10px solid #333;
540
+ border-bottom: 10px solid rgba(0, 0, 0, 0.8);
541
+ bottom: auto;
542
+ top: -10px;
543
+ }
544
+ #powerTip.se-alt:before {
545
+ left: auto;
546
+ right: 10px;
547
+ }
548
+
549
+
assets/css/magnific-popup.css CHANGED
@@ -8,8 +8,7 @@
8
  overflow: hidden;
9
  position: fixed;
10
  background: #0b0b0b;
11
- opacity: 0.8;
12
- filter: alpha(opacity=80); }
13
 
14
  .mfp-wrap {
15
  top: 0;
@@ -29,8 +28,6 @@
29
  left: 0;
30
  top: 0;
31
  padding: 0 8px;
32
- -webkit-box-sizing: border-box;
33
- -moz-box-sizing: border-box;
34
  box-sizing: border-box; }
35
 
36
  .mfp-container:before {
@@ -96,10 +93,10 @@
96
  left: 8px;
97
  right: 8px;
98
  z-index: 1044; }
99
- .mfp-preloader a {
100
- color: #CCC; }
101
- .mfp-preloader a:hover {
102
- color: #FFF; }
103
 
104
  .mfp-s-ready .mfp-preloader {
105
  display: none; }
@@ -118,8 +115,8 @@ button.mfp-arrow {
118
  outline: none;
119
  padding: 0;
120
  z-index: 1046;
121
- -webkit-box-shadow: none;
122
- box-shadow: none; }
123
 
124
  button::-moz-focus-inner {
125
  padding: 0;
@@ -135,18 +132,16 @@ button::-moz-focus-inner {
135
  text-decoration: none;
136
  text-align: center;
137
  opacity: 0.65;
138
- filter: alpha(opacity=65);
139
  padding: 0 0 18px 10px;
140
  color: #FFF;
141
  font-style: normal;
142
  font-size: 28px;
143
  font-family: Arial, Baskerville, monospace; }
144
- .mfp-close:hover,
145
- .mfp-close:focus {
146
- opacity: 1;
147
- filter: alpha(opacity=100); }
148
- .mfp-close:active {
149
- top: 1px; }
150
 
151
  .mfp-close-btn-in .mfp-close {
152
  color: #333; }
@@ -171,7 +166,6 @@ button::-moz-focus-inner {
171
  .mfp-arrow {
172
  position: absolute;
173
  opacity: 0.65;
174
- filter: alpha(opacity=65);
175
  margin: 0;
176
  top: 50%;
177
  margin-top: -55px;
@@ -179,82 +173,73 @@ button::-moz-focus-inner {
179
  width: 90px;
180
  height: 110px;
181
  -webkit-tap-highlight-color: transparent; }
182
- .mfp-arrow:active {
183
- margin-top: -54px; }
184
- .mfp-arrow:hover,
185
- .mfp-arrow:focus {
186
- opacity: 1;
187
- filter: alpha(opacity=100); }
188
- .mfp-arrow:before,
189
- .mfp-arrow:after,
190
- .mfp-arrow .mfp-b,
191
- .mfp-arrow .mfp-a {
192
- content: '';
193
- display: block;
194
- width: 0;
195
- height: 0;
196
- position: absolute;
197
- left: 0;
198
- top: 0;
199
- margin-top: 35px;
200
- margin-left: 35px;
201
- border: medium inset transparent; }
202
- .mfp-arrow:after,
203
- .mfp-arrow .mfp-a {
204
- border-top-width: 13px;
205
- border-bottom-width: 13px;
206
- top: 8px; }
207
- .mfp-arrow:before,
208
- .mfp-arrow .mfp-b {
209
- border-top-width: 21px;
210
- border-bottom-width: 21px;
211
- opacity: 0.7; }
212
 
213
  .mfp-arrow-left {
214
  left: 0; }
215
- .mfp-arrow-left:after,
216
- .mfp-arrow-left .mfp-a {
217
- border-right: 17px solid #FFF;
218
- margin-left: 31px; }
219
- .mfp-arrow-left:before,
220
- .mfp-arrow-left .mfp-b {
221
- margin-left: 25px;
222
- border-right: 27px solid #3F3F3F; }
223
 
224
  .mfp-arrow-right {
225
  right: 0; }
226
- .mfp-arrow-right:after,
227
- .mfp-arrow-right .mfp-a {
228
- border-left: 17px solid #FFF;
229
- margin-left: 39px; }
230
- .mfp-arrow-right:before,
231
- .mfp-arrow-right .mfp-b {
232
- border-left: 27px solid #3F3F3F; }
233
 
234
  .mfp-iframe-holder {
235
  padding-top: 40px;
236
  padding-bottom: 40px; }
237
- .mfp-iframe-holder .mfp-content {
238
- line-height: 0;
239
- width: 100%;
240
- max-width: 900px; }
241
- .mfp-iframe-holder .mfp-close {
242
- top: -40px; }
243
 
244
  .mfp-iframe-scaler {
245
  width: 100%;
246
  height: 0;
247
  overflow: hidden;
248
  padding-top: 56.25%; }
249
- .mfp-iframe-scaler iframe {
250
- position: absolute;
251
- display: block;
252
- top: 0;
253
- left: 0;
254
- width: 100%;
255
- height: 100%;
256
- box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
257
- background: #000; }
258
 
259
  /* Main image in popup */
260
  img.mfp-img {
@@ -263,8 +248,6 @@ img.mfp-img {
263
  height: auto;
264
  display: block;
265
  line-height: 0;
266
- -webkit-box-sizing: border-box;
267
- -moz-box-sizing: border-box;
268
  box-sizing: border-box;
269
  padding: 40px 0 40px;
270
  margin: 0 auto; }
@@ -272,26 +255,26 @@ img.mfp-img {
272
  /* The shadow behind the image */
273
  .mfp-figure {
274
  line-height: 0; }
275
- .mfp-figure:after {
276
- content: '';
277
- position: absolute;
278
- left: 0;
279
- top: 40px;
280
- bottom: 40px;
281
- display: block;
282
- right: 0;
283
- width: auto;
284
- height: auto;
285
- z-index: -1;
286
- box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
287
- background: #444; }
288
- .mfp-figure small {
289
- color: #BDBDBD;
290
- display: block;
291
- font-size: 12px;
292
- line-height: 14px; }
293
- .mfp-figure figure {
294
- margin: 0; }
295
 
296
  .mfp-bottom-bar {
297
  margin-top: -36px;
@@ -336,11 +319,9 @@ img.mfp-img {
336
  top: auto;
337
  padding: 3px 5px;
338
  position: fixed;
339
- -webkit-box-sizing: border-box;
340
- -moz-box-sizing: border-box;
341
  box-sizing: border-box; }
342
- .mfp-img-mobile .mfp-bottom-bar:empty {
343
- padding: 0; }
344
  .mfp-img-mobile .mfp-counter {
345
  right: 5px;
346
  top: 3px; }
@@ -368,24 +349,3 @@ img.mfp-img {
368
  .mfp-container {
369
  padding-left: 6px;
370
  padding-right: 6px; } }
371
-
372
- .mfp-ie7 .mfp-img {
373
- padding: 0; }
374
-
375
- .mfp-ie7 .mfp-bottom-bar {
376
- width: 600px;
377
- left: 50%;
378
- margin-left: -300px;
379
- margin-top: 5px;
380
- padding-bottom: 5px; }
381
-
382
- .mfp-ie7 .mfp-container {
383
- padding: 0; }
384
-
385
- .mfp-ie7 .mfp-content {
386
- padding-top: 44px; }
387
-
388
- .mfp-ie7 .mfp-close {
389
- top: 0;
390
- right: 0;
391
- padding-top: 0; }
8
  overflow: hidden;
9
  position: fixed;
10
  background: #0b0b0b;
11
+ opacity: 0.8; }
 
12
 
13
  .mfp-wrap {
14
  top: 0;
28
  left: 0;
29
  top: 0;
30
  padding: 0 8px;
 
 
31
  box-sizing: border-box; }
32
 
33
  .mfp-container:before {
93
  left: 8px;
94
  right: 8px;
95
  z-index: 1044; }
96
+ .mfp-preloader a {
97
+ color: #CCC; }
98
+ .mfp-preloader a:hover {
99
+ color: #FFF; }
100
 
101
  .mfp-s-ready .mfp-preloader {
102
  display: none; }
115
  outline: none;
116
  padding: 0;
117
  z-index: 1046;
118
+ box-shadow: none;
119
+ touch-action: manipulation; }
120
 
121
  button::-moz-focus-inner {
122
  padding: 0;
132
  text-decoration: none;
133
  text-align: center;
134
  opacity: 0.65;
 
135
  padding: 0 0 18px 10px;
136
  color: #FFF;
137
  font-style: normal;
138
  font-size: 28px;
139
  font-family: Arial, Baskerville, monospace; }
140
+ .mfp-close:hover,
141
+ .mfp-close:focus {
142
+ opacity: 1; }
143
+ .mfp-close:active {
144
+ top: 1px; }
 
145
 
146
  .mfp-close-btn-in .mfp-close {
147
  color: #333; }
166
  .mfp-arrow {
167
  position: absolute;
168
  opacity: 0.65;
 
169
  margin: 0;
170
  top: 50%;
171
  margin-top: -55px;
173
  width: 90px;
174
  height: 110px;
175
  -webkit-tap-highlight-color: transparent; }
176
+ .mfp-arrow:active {
177
+ margin-top: -54px; }
178
+ .mfp-arrow:hover,
179
+ .mfp-arrow:focus {
180
+ opacity: 1; }
181
+ .mfp-arrow:before,
182
+ .mfp-arrow:after {
183
+ content: '';
184
+ display: block;
185
+ width: 0;
186
+ height: 0;
187
+ position: absolute;
188
+ left: 0;
189
+ top: 0;
190
+ margin-top: 35px;
191
+ margin-left: 35px;
192
+ border: medium inset transparent; }
193
+ .mfp-arrow:after {
194
+ border-top-width: 13px;
195
+ border-bottom-width: 13px;
196
+ top: 8px; }
197
+ .mfp-arrow:before {
198
+ border-top-width: 21px;
199
+ border-bottom-width: 21px;
200
+ opacity: 0.7; }
 
 
 
 
 
201
 
202
  .mfp-arrow-left {
203
  left: 0; }
204
+ .mfp-arrow-left:after {
205
+ border-right: 17px solid #FFF;
206
+ margin-left: 31px; }
207
+ .mfp-arrow-left:before {
208
+ margin-left: 25px;
209
+ border-right: 27px solid #3F3F3F; }
 
 
210
 
211
  .mfp-arrow-right {
212
  right: 0; }
213
+ .mfp-arrow-right:after {
214
+ border-left: 17px solid #FFF;
215
+ margin-left: 39px; }
216
+ .mfp-arrow-right:before {
217
+ border-left: 27px solid #3F3F3F; }
 
 
218
 
219
  .mfp-iframe-holder {
220
  padding-top: 40px;
221
  padding-bottom: 40px; }
222
+ .mfp-iframe-holder .mfp-content {
223
+ line-height: 0;
224
+ width: 100%;
225
+ max-width: 900px; }
226
+ .mfp-iframe-holder .mfp-close {
227
+ top: -40px; }
228
 
229
  .mfp-iframe-scaler {
230
  width: 100%;
231
  height: 0;
232
  overflow: hidden;
233
  padding-top: 56.25%; }
234
+ .mfp-iframe-scaler iframe {
235
+ position: absolute;
236
+ display: block;
237
+ top: 0;
238
+ left: 0;
239
+ width: 100%;
240
+ height: 100%;
241
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
242
+ background: #000; }
243
 
244
  /* Main image in popup */
245
  img.mfp-img {
248
  height: auto;
249
  display: block;
250
  line-height: 0;
 
 
251
  box-sizing: border-box;
252
  padding: 40px 0 40px;
253
  margin: 0 auto; }
255
  /* The shadow behind the image */
256
  .mfp-figure {
257
  line-height: 0; }
258
+ .mfp-figure:after {
259
+ content: '';
260
+ position: absolute;
261
+ left: 0;
262
+ top: 40px;
263
+ bottom: 40px;
264
+ display: block;
265
+ right: 0;
266
+ width: auto;
267
+ height: auto;
268
+ z-index: -1;
269
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
270
+ background: #444; }
271
+ .mfp-figure small {
272
+ color: #BDBDBD;
273
+ display: block;
274
+ font-size: 12px;
275
+ line-height: 14px; }
276
+ .mfp-figure figure {
277
+ margin: 0; }
278
 
279
  .mfp-bottom-bar {
280
  margin-top: -36px;
319
  top: auto;
320
  padding: 3px 5px;
321
  position: fixed;
 
 
322
  box-sizing: border-box; }
323
+ .mfp-img-mobile .mfp-bottom-bar:empty {
324
+ padding: 0; }
325
  .mfp-img-mobile .mfp-counter {
326
  right: 5px;
327
  top: 3px; }
349
  .mfp-container {
350
  padding-left: 6px;
351
  padding-right: 6px; } }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/jquery.magnific-popup.js CHANGED
@@ -1,2060 +1,1860 @@
1
- /*! Magnific Popup - v1.0.0 - 2015-09-17
2
- * http://dimsemenov.com/plugins/magnific-popup/
3
- * Copyright (c) 2015 Dmitry Semenov; */
4
- ;(function (factory) {
5
- if (typeof define === 'function' && define.amd) {
6
- // AMD. Register as an anonymous module.
7
- define(['jquery'], factory);
8
- } else if (typeof exports === 'object') {
9
- // Node/CommonJS
10
- factory(require('jquery'));
11
- } else {
12
- // Browser globals
13
- factory(window.jQuery || window.Zepto);
14
- }
15
- }(function($) {
16
-
17
- /*>>core*/
18
- /**
19
- *
20
- * Magnific Popup Core JS file
21
- *
22
- */
23
-
24
-
25
- /**
26
- * Private static constants
27
- */
28
- var CLOSE_EVENT = 'Close',
29
- BEFORE_CLOSE_EVENT = 'BeforeClose',
30
- AFTER_CLOSE_EVENT = 'AfterClose',
31
- BEFORE_APPEND_EVENT = 'BeforeAppend',
32
- MARKUP_PARSE_EVENT = 'MarkupParse',
33
- OPEN_EVENT = 'Open',
34
- CHANGE_EVENT = 'Change',
35
- NS = 'mfp',
36
- EVENT_NS = '.' + NS,
37
- READY_CLASS = 'mfp-ready',
38
- REMOVING_CLASS = 'mfp-removing',
39
- PREVENT_CLOSE_CLASS = 'mfp-prevent-close';
40
-
41
-
42
- /**
43
- * Private vars
44
- */
45
- /*jshint -W079 */
46
- var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this'
47
- MagnificPopup = function(){},
48
- _isJQ = !!(window.jQuery),
49
- _prevStatus,
50
- _window = $(window),
51
- _document,
52
- _prevContentType,
53
- _wrapClasses,
54
- _currPopupType;
55
-
56
-
57
- /**
58
- * Private functions
59
- */
60
- var _mfpOn = function(name, f) {
61
- mfp.ev.on(NS + name + EVENT_NS, f);
62
- },
63
- _getEl = function(className, appendTo, html, raw) {
64
- var el = document.createElement('div');
65
- el.className = 'mfp-'+className;
66
- if(html) {
67
- el.innerHTML = html;
68
- }
69
- if(!raw) {
70
- el = $(el);
71
- if(appendTo) {
72
- el.appendTo(appendTo);
73
- }
74
- } else if(appendTo) {
75
- appendTo.appendChild(el);
76
- }
77
- return el;
78
- },
79
- _mfpTrigger = function(e, data) {
80
- mfp.ev.triggerHandler(NS + e, data);
81
 
82
- if(mfp.st.callbacks) {
83
- // converts "mfpEventName" to "eventName" callback and triggers it if it's present
84
- e = e.charAt(0).toLowerCase() + e.slice(1);
85
- if(mfp.st.callbacks[e]) {
86
- mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  }
88
- }
89
- },
90
- _getCloseBtn = function(type) {
91
- if(type !== _currPopupType || !mfp.currTemplate.closeBtn) {
92
- mfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) );
93
- _currPopupType = type;
94
- }
95
- return mfp.currTemplate.closeBtn;
96
- },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  // Initialize Magnific Popup only when called at least once
98
- _checkInstance = function() {
99
- if(!$.magnificPopup.instance) {
100
- /*jshint -W020 */
101
- mfp = new MagnificPopup();
102
- mfp.init();
103
- $.magnificPopup.instance = mfp;
104
- }
105
- },
106
  // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr
107
- supportsTransitions = function() {
108
- var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist
109
- v = ['ms','O','Moz','Webkit']; // 'v' for vendor
110
 
111
- if( s['transition'] !== undefined ) {
112
- return true;
113
- }
114
-
115
- while( v.length ) {
116
- if( v.pop() + 'Transition' in s ) {
117
  return true;
118
  }
119
- }
120
-
121
- return false;
122
- };
123
 
 
 
 
 
 
124
 
 
 
125
 
126
- /**
127
- * Public functions
128
- */
129
- MagnificPopup.prototype = {
130
 
131
- constructor: MagnificPopup,
132
 
133
  /**
134
- * Initializes Magnific Popup plugin.
135
- * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed
136
  */
137
- init: function() {
138
- var appVersion = navigator.appVersion;
139
- mfp.isIE7 = appVersion.indexOf("MSIE 7.") !== -1;
140
- mfp.isIE8 = appVersion.indexOf("MSIE 8.") !== -1;
141
- mfp.isLowIE = mfp.isIE7 || mfp.isIE8;
142
- mfp.isAndroid = (/android/gi).test(appVersion);
143
- mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion);
144
- mfp.supportsTransition = supportsTransitions();
145
-
146
- // We disable fixed positioned lightbox on devices that don't handle it nicely.
147
- // If you know a better way of detecting this - let me know.
148
- mfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) );
149
- _document = $(document);
150
-
151
- mfp.popupsCache = {};
152
- },
153
 
154
- /**
155
- * Opens popup
156
- * @param data [description]
157
- */
158
- open: function(data) {
159
 
160
- var i;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
161
 
162
- if(data.isObj === false) {
163
- // convert jQuery collection to array to avoid conflicts later
164
- mfp.items = data.items.toArray();
 
 
165
 
166
- mfp.index = 0;
167
- var items = data.items,
168
- item;
169
- for(i = 0; i < items.length; i++) {
170
- item = items[i];
171
- if(item.parsed) {
172
- item = item.el[0];
173
- }
174
- if(item === data.el[0]) {
175
- mfp.index = i;
176
- break;
 
 
 
 
 
 
 
177
  }
 
 
 
178
  }
179
- } else {
180
- mfp.items = $.isArray(data.items) ? data.items : [data.items];
181
- mfp.index = data.index || 0;
182
- }
183
 
184
- // if popup is already opened - we just update the content
185
- if(mfp.isOpen) {
186
- mfp.updateItemHTML();
187
- return;
188
- }
189
-
190
- mfp.types = [];
191
- _wrapClasses = '';
192
- if(data.mainEl && data.mainEl.length) {
193
- mfp.ev = data.mainEl.eq(0);
194
- } else {
195
- mfp.ev = _document;
196
- }
197
 
198
- if(data.key) {
199
- if(!mfp.popupsCache[data.key]) {
200
- mfp.popupsCache[data.key] = {};
 
 
 
201
  }
202
- mfp.currTemplate = mfp.popupsCache[data.key];
203
- } else {
204
- mfp.currTemplate = {};
205
- }
206
 
 
 
 
 
 
 
 
 
207
 
208
 
209
- mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data );
210
- mfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos;
211
 
212
- if(mfp.st.modal) {
213
- mfp.st.closeOnContentClick = false;
214
- mfp.st.closeOnBgClick = false;
215
- mfp.st.showCloseBtn = false;
216
- mfp.st.enableEscapeKey = false;
217
- }
218
-
219
 
220
- // Building markup
221
- // main containers are created only once
222
- if(!mfp.bgOverlay) {
 
 
 
223
 
224
- // Dark overlay
225
- mfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() {
226
- mfp.close();
227
- });
228
 
229
- mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) {
230
- if(mfp._checkIfClose(e.target)) {
 
 
 
 
231
  mfp.close();
232
- }
233
- });
234
 
235
- mfp.container = _getEl('container', mfp.wrap);
236
- }
 
 
 
237
 
238
- mfp.contentContainer = _getEl('content');
239
- if(mfp.st.preloader) {
240
- mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading);
241
- }
242
 
 
 
 
 
243
 
244
- // Initializing modules
245
- var modules = $.magnificPopup.modules;
246
- for(i = 0; i < modules.length; i++) {
247
- var n = modules[i];
248
- n = n.charAt(0).toUpperCase() + n.slice(1);
249
- mfp['init'+n].call(mfp);
250
- }
251
- _mfpTrigger('BeforeOpen');
 
252
 
253
 
254
- if(mfp.st.showCloseBtn) {
255
- // Close button
256
- if(!mfp.st.closeBtnInside) {
257
- mfp.wrap.append( _getCloseBtn() );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
  } else {
259
- _mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) {
260
- values.close_replaceWith = _getCloseBtn(item.type);
 
 
 
 
 
 
 
261
  });
262
- _wrapClasses += ' mfp-close-btn-in';
263
  }
264
- }
265
-
266
- if(mfp.st.alignTop) {
267
- _wrapClasses += ' mfp-align-top';
268
- }
269
 
270
-
271
 
272
- if(mfp.fixedContentPos) {
273
- mfp.wrap.css({
274
- overflow: mfp.st.overflowY,
275
- overflowX: 'hidden',
276
- overflowY: mfp.st.overflowY
277
- });
278
- } else {
279
- mfp.wrap.css({
280
- top: _window.scrollTop(),
281
- position: 'absolute'
282
- });
283
- }
284
- if( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) {
285
- mfp.bgOverlay.css({
286
- height: _document.height(),
287
- position: 'absolute'
288
- });
289
- }
290
 
291
-
 
 
 
 
 
 
 
292
 
293
- if(mfp.st.enableEscapeKey) {
294
- // Close on ESC key
295
- _document.on('keyup' + EVENT_NS, function(e) {
296
- if(e.keyCode === 27) {
297
- mfp.close();
298
- }
299
  });
300
- }
301
 
302
- _window.on('resize' + EVENT_NS, function() {
303
- mfp.updateSize();
304
- });
305
 
 
 
 
306
 
307
- if(!mfp.st.closeOnContentClick) {
308
- _wrapClasses += ' mfp-auto-cursor';
309
- }
310
-
311
- if(_wrapClasses)
312
- mfp.wrap.addClass(_wrapClasses);
313
 
314
 
315
- // this triggers recalculation of layout, so we get it once to not to trigger twice
316
- var windowHeight = mfp.wH = _window.height();
317
 
318
-
319
- var windowStyles = {};
320
 
321
- if( mfp.fixedContentPos ) {
322
- if(mfp._hasScrollBar(windowHeight)){
323
- var s = mfp._getScrollbarSize();
324
- if(s) {
325
- windowStyles.marginRight = s;
326
- }
327
- }
328
- }
329
 
330
- if(mfp.fixedContentPos) {
331
- if(!mfp.isIE7) {
332
- windowStyles.overflow = 'hidden';
333
- } else {
334
- // ie7 double-scroll bug
335
- $('body, html').css('overflow', 'hidden');
 
336
  }
337
- }
338
 
339
-
340
-
341
- var classesToadd = mfp.st.mainClass;
342
- if(mfp.isIE7) {
343
- classesToadd += ' mfp-ie7';
344
- }
345
- if(classesToadd) {
346
- mfp._addClassToMFP( classesToadd );
347
- }
348
 
349
- // add content
350
- mfp.updateItemHTML();
351
-
352
- _mfpTrigger('BuildControls');
353
-
354
- // remove scrollbar, add margin e.t.c
355
- $('html').css(windowStyles);
356
-
357
- // add everything to DOM
358
- mfp.bgOverlay.add(mfp.wrap).prependTo( mfp.st.prependTo || $(document.body) );
359
-
360
- // Save last focused element
361
- mfp._lastFocusedEl = document.activeElement;
362
-
363
- // Wait for next cycle to allow CSS transition
364
- setTimeout(function() {
365
-
366
- if(mfp.content) {
367
- mfp._addClassToMFP(READY_CLASS);
368
- mfp._setFocus();
369
- } else {
370
- // if content is not defined (not loaded e.t.c) we add class only for BG
371
- mfp.bgOverlay.addClass(READY_CLASS);
372
  }
373
-
374
- // Trap the focus in popup
375
- _document.on('focusin' + EVENT_NS, mfp._onFocusIn);
376
 
377
- }, 16);
 
378
 
379
- mfp.isOpen = true;
380
- mfp.updateSize(windowHeight);
381
- _mfpTrigger(OPEN_EVENT);
382
 
383
- return data;
384
- },
385
 
386
- /**
387
- * Closes the popup
388
- */
389
- close: function() {
390
- if(!mfp.isOpen) return;
391
- _mfpTrigger(BEFORE_CLOSE_EVENT);
392
-
393
- mfp.isOpen = false;
394
- // for CSS3 animation
395
- if(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition ) {
396
- mfp._addClassToMFP(REMOVING_CLASS);
397
  setTimeout(function() {
398
- mfp._close();
399
- }, mfp.st.removalDelay);
400
- } else {
401
- mfp._close();
402
- }
403
- },
404
 
405
- /**
406
- * Helper for close() function
407
- */
408
- _close: function() {
409
- _mfpTrigger(CLOSE_EVENT);
 
 
410
 
411
- var classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' ';
 
412
 
413
- mfp.bgOverlay.detach();
414
- mfp.wrap.detach();
415
- mfp.container.empty();
416
 
417
- if(mfp.st.mainClass) {
418
- classesToRemove += mfp.st.mainClass + ' ';
419
- }
420
 
421
- mfp._removeClassFromMFP(classesToRemove);
 
422
 
423
- if(mfp.fixedContentPos) {
424
- var windowStyles = {marginRight: ''};
425
- if(mfp.isIE7) {
426
- $('body, html').css('overflow', '');
 
 
 
 
 
 
 
 
 
 
427
  } else {
428
- windowStyles.overflow = '';
429
  }
430
- $('html').css(windowStyles);
431
- }
432
-
433
- _document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS);
434
- mfp.ev.off(EVENT_NS);
435
-
436
- // clean up DOM elements that aren't removed
437
- mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style');
438
- mfp.bgOverlay.attr('class', 'mfp-bg');
439
- mfp.container.attr('class', 'mfp-container');
440
-
441
- // remove close button from target element
442
- if(mfp.st.showCloseBtn &&
443
- (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) {
444
- if(mfp.currTemplate.closeBtn)
445
- mfp.currTemplate.closeBtn.detach();
446
- }
447
-
448
 
449
- if(mfp._lastFocusedEl) {
450
- $(mfp._lastFocusedEl).focus(); // put tab focus back
451
- }
452
- mfp.currItem = null;
453
- mfp.content = null;
454
- mfp.currTemplate = null;
455
- mfp.prevHeight = 0;
456
-
457
- _mfpTrigger(AFTER_CLOSE_EVENT);
458
- },
459
-
460
- updateSize: function(winHeight) {
461
-
462
- if(mfp.isIOS) {
463
- // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2
464
- var zoomLevel = document.documentElement.clientWidth / window.innerWidth;
465
- var height = window.innerHeight * zoomLevel;
466
- mfp.wrap.css('height', height);
467
- mfp.wH = height;
468
- } else {
469
- mfp.wH = winHeight || _window.height();
470
- }
471
- // Fixes #84: popup incorrectly positioned with position:relative on body
472
- if(!mfp.fixedContentPos) {
473
- mfp.wrap.css('height', mfp.wH);
474
- }
475
 
476
- _mfpTrigger('Resize');
477
 
478
- },
 
 
479
 
480
- /**
481
- * Set content of popup based on current index
482
- */
483
- updateItemHTML: function() {
484
- var item = mfp.items[mfp.index];
485
 
486
- // Detach and perform modifications
487
- mfp.contentContainer.detach();
488
 
489
- if(mfp.content)
490
- mfp.content.detach();
 
 
 
 
 
 
 
491
 
492
- if(!item.parsed) {
493
- item = mfp.parseEl( mfp.index );
494
- }
495
 
496
- var type = item.type;
 
 
 
497
 
498
- _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]);
499
- // BeforeChange event works like so:
500
- // _mfpOn('BeforeChange', function(e, prevType, newType) { });
501
-
502
- mfp.currItem = item;
 
503
 
504
-
505
 
506
-
 
 
 
 
 
 
507
 
508
- if(!mfp.currTemplate[type]) {
509
- var markup = mfp.st[type] ? mfp.st[type].markup : false;
510
 
511
- // allows to modify markup
512
- _mfpTrigger('FirstMarkupParse', markup);
513
 
514
- if(markup) {
515
- mfp.currTemplate[type] = $(markup);
 
 
 
 
516
  } else {
517
- // if there is no markup found we just define that template is parsed
518
- mfp.currTemplate[type] = true;
 
 
 
519
  }
520
- }
521
 
522
- if(_prevContentType && _prevContentType !== item.type) {
523
- mfp.container.removeClass('mfp-'+_prevContentType+'-holder');
524
- }
525
-
526
- var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]);
527
- mfp.appendContent(newContent, type);
528
 
529
- item.preloaded = true;
530
 
531
- _mfpTrigger(CHANGE_EVENT, item);
532
- _prevContentType = item.type;
533
-
534
- // Append container back after its content changed
535
- mfp.container.prepend(mfp.contentContainer);
536
 
537
- _mfpTrigger('AfterChange');
538
- },
539
 
 
 
540
 
541
- /**
542
- * Set HTML content of popup
543
- */
544
- appendContent: function(newContent, type) {
545
- mfp.content = newContent;
546
-
547
- if(newContent) {
548
- if(mfp.st.showCloseBtn && mfp.st.closeBtnInside &&
549
- mfp.currTemplate[type] === true) {
550
- // if there is no markup, we just append close button element inside
551
- if(!mfp.content.find('.mfp-close').length) {
552
- mfp.content.append(_getCloseBtn());
553
- }
554
- } else {
555
- mfp.content = newContent;
556
  }
557
- } else {
558
- mfp.content = '';
559
- }
560
-
561
- _mfpTrigger(BEFORE_APPEND_EVENT);
562
- mfp.container.addClass('mfp-'+type+'-holder');
563
-
564
- mfp.contentContainer.append(mfp.content);
565
- },
566
 
 
567
 
 
 
 
568
 
569
-
570
- /**
571
- * Creates Magnific Popup data object based on given data
572
- * @param {int} index Index of item to parse
573
- */
574
- parseEl: function(index) {
575
- var item = mfp.items[index],
576
- type;
577
 
578
- if(item.tagName) {
579
- item = { el: $(item) };
580
- } else {
581
- type = item.type;
582
- item = { data: item, src: item.src };
583
- }
584
 
585
- if(item.el) {
586
- var types = mfp.types;
587
 
588
- // check for 'mfp-TYPE' class
589
- for(var i = 0; i < types.length; i++) {
590
- if( item.el.hasClass('mfp-'+types[i]) ) {
591
- type = types[i];
592
- break;
593
  }
594
  }
595
 
596
- item.src = item.el.attr('data-mfp-src');
597
- if(!item.src) {
598
- item.src = item.el.attr('href');
599
  }
600
- }
601
 
602
- item.type = type || mfp.st.type || 'inline';
603
- item.index = index;
604
- item.parsed = true;
605
- mfp.items[index] = item;
606
- _mfpTrigger('ElementParse', item);
607
 
608
- return mfp.items[index];
609
- },
610
 
 
 
611
 
612
- /**
613
- * Initializes single popup or a group of popups
614
- */
615
- addGroup: function(el, options) {
616
- var eHandler = function(e) {
617
- e.mfpEl = this;
618
- mfp._openClick(e, el, options);
619
- };
620
 
621
- if(!options) {
622
- options = {};
623
- }
624
 
625
- var eName = 'click.magnificPopup';
626
- options.mainEl = el;
627
-
628
- if(options.items) {
629
- options.isObj = true;
630
- el.off(eName).on(eName, eHandler);
631
- } else {
632
- options.isObj = false;
633
- if(options.delegate) {
634
- el.off(eName).on(eName, options.delegate , eHandler);
 
 
 
 
 
 
 
635
  } else {
636
- options.items = el;
637
- el.off(eName).on(eName, eHandler);
638
  }
639
- }
640
- },
641
- _openClick: function(e, el, options) {
642
- var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick;
643
 
 
 
644
 
645
- if(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) {
646
- return;
647
- }
648
 
649
- var disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn;
650
 
651
- if(disableOn) {
652
- if($.isFunction(disableOn)) {
653
- if( !disableOn.call(mfp) ) {
654
- return true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
655
  }
656
- } else { // else it's number
657
- if( _window.width() < disableOn ) {
658
- return true;
 
659
  }
660
  }
661
- }
662
-
663
- if(e.type) {
664
- e.preventDefault();
665
 
666
- // This will prevent popup from closing if element is inside and popup is already opened
667
- if(mfp.isOpen) {
668
- e.stopPropagation();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
669
  }
670
- }
671
-
672
 
673
- options.el = $(e.mfpEl);
674
- if(options.delegate) {
675
- options.items = el.find(options.delegate);
676
- }
677
- mfp.open(options);
678
- },
679
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
680
 
681
- /**
682
- * Updates text on preloader
683
- */
684
- updateStatus: function(status, text) {
685
 
686
- if(mfp.preloader) {
687
- if(_prevStatus !== status) {
688
- mfp.container.removeClass('mfp-s-'+_prevStatus);
689
  }
690
 
691
- if(!text && status === 'loading') {
692
- text = mfp.st.tLoading;
 
 
 
 
 
 
 
 
 
 
693
  }
694
 
695
- var data = {
696
- status: status,
697
- text: text
698
- };
699
- // allows to modify status
700
- _mfpTrigger('UpdateStatus', data);
701
 
702
- status = data.status;
703
- text = data.text;
 
 
 
704
 
705
- mfp.preloader.html(text);
 
 
 
 
 
706
 
707
- mfp.preloader.find('a').on('click', function(e) {
708
- e.stopImmediatePropagation();
709
- });
710
 
711
- mfp.container.addClass('mfp-s-'+status);
712
- _prevStatus = status;
713
- }
714
- },
715
 
 
 
 
 
716
 
717
- /*
718
- "Private" helpers that aren't private at all
719
- */
720
- // Check to close popup or not
721
- // "target" is an element that was clicked
722
- _checkIfClose: function(target) {
723
 
724
- if($(target).hasClass(PREVENT_CLOSE_CLASS)) {
725
- return;
726
- }
 
 
 
727
 
728
- var closeOnContent = mfp.st.closeOnContentClick;
729
- var closeOnBg = mfp.st.closeOnBgClick;
730
 
731
- if(closeOnContent && closeOnBg) {
732
- return true;
733
- } else {
734
 
735
- // We close the popup if click is on close button or on preloader. Or if there is no content.
736
- if(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) {
737
- return true;
 
 
 
738
  }
 
739
 
740
- // if click is outside the content
741
- if( (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) ) {
742
- if(closeOnBg) {
743
- // last check, if the clicked element is in DOM, (in case it's removed onclick)
744
- if( $.contains(document, target) ) {
745
- return true;
746
- }
747
- }
748
- } else if(closeOnContent) {
749
- return true;
750
  }
751
 
752
- }
753
- return false;
754
- },
755
- _addClassToMFP: function(cName) {
756
- mfp.bgOverlay.addClass(cName);
757
- mfp.wrap.addClass(cName);
758
- },
759
- _removeClassFromMFP: function(cName) {
760
- this.bgOverlay.removeClass(cName);
761
- mfp.wrap.removeClass(cName);
762
- },
763
- _hasScrollBar: function(winHeight) {
764
- return ( (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) );
765
- },
766
- _setFocus: function() {
767
- (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus();
768
- },
769
- _onFocusIn: function(e) {
770
- if( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) {
771
- mfp._setFocus();
772
- return false;
773
- }
774
- },
775
- _parseMarkup: function(template, values, item) {
776
- var arr;
777
- if(item.data) {
778
- values = $.extend(item.data, values);
779
- }
780
- _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] );
781
 
782
- $.each(values, function(key, value) {
783
- if(value === undefined || value === false) {
784
  return true;
785
- }
786
- arr = key.split('_');
787
- if(arr.length > 1) {
788
- var el = template.find(EVENT_NS + '-'+arr[0]);
789
 
790
- if(el.length > 0) {
791
- var attr = arr[1];
792
- if(attr === 'replaceWith') {
793
- if(el[0] !== value[0]) {
794
- el.replaceWith(value);
 
 
 
 
 
 
795
  }
796
- } else if(attr === 'img') {
797
- if(el.is('img')) {
798
- el.attr('src', value);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
799
  } else {
800
- el.replaceWith( '<img src="'+value+'" class="' + el.attr('class') + '" />' );
801
  }
802
- } else {
803
- el.attr(arr[1], value);
804
  }
 
 
 
805
  }
 
 
806
 
807
- } else {
808
- template.find(EVENT_NS + '-'+key).html(value);
809
- }
810
- });
811
- },
812
-
813
- _getScrollbarSize: function() {
814
- // thx David
815
- if(mfp.scrollbarSize === undefined) {
816
- var scrollDiv = document.createElement("div");
817
- scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';
818
- document.body.appendChild(scrollDiv);
819
- mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;
820
- document.body.removeChild(scrollDiv);
821
  }
822
- return mfp.scrollbarSize;
823
- }
824
-
825
- }; /* MagnificPopup core prototype end */
826
 
 
827
 
828
 
829
 
830
- /**
831
- * Public static functions
832
- */
833
- $.magnificPopup = {
834
- instance: null,
835
- proto: MagnificPopup.prototype,
836
- modules: [],
837
 
838
- open: function(options, index) {
839
- _checkInstance();
840
-
841
- if(!options) {
842
- options = {};
843
- } else {
844
- options = $.extend(true, {}, options);
845
- }
846
-
847
 
848
- options.isObj = true;
849
- options.index = index || 0;
850
- return this.instance.open(options);
851
- },
852
 
853
- close: function() {
854
- return $.magnificPopup.instance && $.magnificPopup.instance.close();
855
- },
 
 
856
 
857
- registerModule: function(name, module) {
858
- if(module.options) {
859
- $.magnificPopup.defaults[name] = module.options;
860
- }
861
- $.extend(this.proto, module.proto);
862
- this.modules.push(name);
863
- },
864
 
865
- defaults: {
 
 
866
 
867
- // Info about options is in docs:
868
- // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options
869
-
870
- disableOn: 0,
 
 
 
871
 
872
- key: null,
873
 
874
- midClick: false,
 
875
 
876
- mainClass: '',
877
 
878
- preloader: true,
879
 
880
- focus: '', // CSS selector of input to focus after popup is opened
881
-
882
- closeOnContentClick: false,
883
 
884
- closeOnBgClick: true,
885
 
886
- closeBtnInside: true,
887
 
888
- showCloseBtn: true,
889
 
890
- enableEscapeKey: true,
891
 
892
- modal: false,
893
 
894
- alignTop: false,
895
-
896
- removalDelay: 0,
897
 
898
- prependTo: null,
899
-
900
- fixedContentPos: 'auto',
901
-
902
- fixedBgPos: 'auto',
903
 
904
- overflowY: 'auto',
905
 
906
- closeMarkup: '<button title="%title%" type="button" class="mfp-close">&#215;</button>',
907
 
908
- tClose: 'Close (Esc)',
909
 
910
- tLoading: 'Loading...'
911
 
912
- }
913
- };
914
 
 
915
 
 
916
 
917
- $.fn.magnificPopup = function(options) {
918
- _checkInstance();
919
 
920
- var jqEl = $(this);
921
 
922
- // We call some API method of first param is a string
923
- if (typeof options === "string" ) {
924
 
925
- if(options === 'open') {
926
- var items,
927
- itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup,
928
- index = parseInt(arguments[1], 10) || 0;
929
 
930
- if(itemOpts.items) {
931
- items = itemOpts.items[index];
932
- } else {
933
- items = jqEl;
934
- if(itemOpts.delegate) {
935
- items = items.find(itemOpts.delegate);
936
- }
937
- items = items.eq( index );
938
- }
939
- mfp._openClick({mfpEl:items}, jqEl, itemOpts);
940
- } else {
941
- if(mfp.isOpen)
942
- mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1));
943
- }
944
 
945
- } else {
946
- // clone options obj
947
- options = $.extend(true, {}, options);
948
-
949
- /*
950
- * As Zepto doesn't support .data() method for objects
951
- * and it works only in normal browsers
952
- * we assign "options" object directly to the DOM element. FTW!
953
- */
954
- if(_isJQ) {
955
- jqEl.data('magnificPopup', options);
956
- } else {
957
- jqEl[0].magnificPopup = options;
958
  }
 
959
 
960
- mfp.addGroup(jqEl, options);
961
-
962
- }
963
- return jqEl;
964
- };
965
 
966
 
967
- //Quick benchmark
968
- /*
969
- var start = performance.now(),
970
- i,
971
- rounds = 1000;
972
 
973
- for(i = 0; i < rounds; i++) {
974
 
975
- }
976
- console.log('Test #1:', performance.now() - start);
977
 
978
- start = performance.now();
979
- for(i = 0; i < rounds; i++) {
 
 
980
 
981
- }
982
- console.log('Test #2:', performance.now() - start);
983
- */
 
 
 
 
 
 
 
 
 
 
 
984
 
 
 
 
985
 
986
- /*>>core*/
 
 
 
 
 
 
 
 
 
987
 
988
- /*>>inline*/
989
 
990
- var INLINE_NS = 'inline',
991
- _hiddenClass,
992
- _inlinePlaceholder,
993
- _lastInlineElement,
994
- _putInlineElementsBack = function() {
995
- if(_lastInlineElement) {
996
- _inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach();
997
- _lastInlineElement = null;
998
  }
 
999
  };
1000
 
1001
- $.magnificPopup.registerModule(INLINE_NS, {
1002
- options: {
1003
- hiddenClass: 'hide', // will be appended with `mfp-` prefix
1004
- markup: '',
1005
- tNotFound: 'Content not found'
1006
- },
1007
- proto: {
1008
 
1009
- initInline: function() {
1010
- mfp.types.push(INLINE_NS);
1011
 
1012
- _mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() {
1013
- _putInlineElementsBack();
1014
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
1015
  },
 
1016
 
1017
- getInline: function(item, template) {
 
1018
 
1019
- _putInlineElementsBack();
 
 
 
1020
 
1021
- if(item.src) {
1022
- var inlineSt = mfp.st.inline,
1023
- el = $(item.src);
1024
 
1025
- if(el.length) {
 
 
 
 
1026
 
1027
- // If target element has parent - we replace it with placeholder and put it back after popup is closed
1028
- var parent = el[0].parentNode;
1029
- if(parent && parent.tagName) {
1030
- if(!_inlinePlaceholder) {
1031
- _hiddenClass = inlineSt.hiddenClass;
1032
- _inlinePlaceholder = _getEl(_hiddenClass);
1033
- _hiddenClass = 'mfp-'+_hiddenClass;
 
 
 
 
 
1034
  }
1035
- // replace target inline element with placeholder
1036
- _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);
 
 
 
1037
  }
1038
 
1039
- mfp.updateStatus('ready');
1040
- } else {
1041
- mfp.updateStatus('error', inlineSt.tNotFound);
1042
- el = $('<div>');
1043
  }
1044
 
1045
- item.inlineElement = el;
1046
- return el;
 
1047
  }
1048
-
1049
- mfp.updateStatus('ready');
1050
- mfp._parseMarkup(template, {}, item);
1051
- return template;
1052
  }
1053
- }
1054
- });
1055
 
1056
- /*>>inline*/
1057
 
1058
- /*>>ajax*/
1059
- var AJAX_NS = 'ajax',
1060
- _ajaxCur,
1061
- _removeAjaxCursor = function() {
1062
- if(_ajaxCur) {
1063
- $(document.body).removeClass(_ajaxCur);
1064
- }
1065
- },
1066
- _destroyAjaxRequest = function() {
1067
- _removeAjaxCursor();
1068
- if(mfp.req) {
1069
- mfp.req.abort();
1070
- }
1071
- };
1072
 
1073
- $.magnificPopup.registerModule(AJAX_NS, {
1074
 
1075
- options: {
1076
- settings: null,
1077
- cursor: 'mfp-ajax-cur',
1078
- tError: '<a href="%url%">The content</a> could not be loaded.'
1079
- },
1080
 
1081
- proto: {
1082
- initAjax: function() {
1083
- mfp.types.push(AJAX_NS);
1084
- _ajaxCur = mfp.st.ajax.cursor;
1085
 
1086
- _mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest);
1087
- _mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest);
1088
- },
1089
- getAjax: function(item) {
1090
 
1091
- if(_ajaxCur) {
1092
- $(document.body).addClass(_ajaxCur);
1093
- }
1094
 
1095
- mfp.updateStatus('loading');
1096
 
1097
- var opts = $.extend({
1098
- url: item.src,
1099
- success: function(data, textStatus, jqXHR) {
1100
- var temp = {
1101
- data:data,
1102
- xhr:jqXHR
1103
- };
1104
 
1105
- _mfpTrigger('ParseAjax', temp);
1106
 
1107
- mfp.appendContent( $(temp.data), AJAX_NS );
1108
 
1109
- item.finished = true;
1110
 
1111
- _removeAjaxCursor();
1112
 
1113
- mfp._setFocus();
1114
 
1115
- setTimeout(function() {
1116
- mfp.wrap.addClass(READY_CLASS);
1117
- }, 16);
1118
 
1119
- mfp.updateStatus('ready');
1120
 
1121
- _mfpTrigger('AjaxContentAdded');
1122
- },
1123
- error: function() {
1124
- _removeAjaxCursor();
1125
- item.finished = item.loadError = true;
1126
- mfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src));
1127
- }
1128
- }, mfp.st.ajax.settings);
1129
 
1130
- mfp.req = $.ajax(opts);
1131
 
1132
- return '';
 
1133
  }
1134
- }
1135
- });
1136
 
 
1137
 
 
 
 
 
 
1138
 
 
1139
 
 
 
 
 
 
 
 
 
 
1140
 
1141
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1142
 
1143
- /*>>ajax*/
 
 
 
1144
 
1145
- /*>>image*/
1146
- var _imgInterval,
1147
- _getTitle = function(item) {
1148
- if(item.data && item.data.title !== undefined)
1149
- return item.data.title;
1150
 
1151
- var src = mfp.st.image.titleSrc;
 
 
 
 
1152
 
1153
- if(src) {
1154
- if($.isFunction(src)) {
1155
- return src.call(mfp, item);
1156
- } else if(item.el) {
1157
- return item.el.attr(src) || '';
1158
- }
1159
- }
1160
- return '';
1161
- };
1162
 
1163
- $.magnificPopup.registerModule('image', {
1164
-
1165
- options: {
1166
- markup: '<div class="mfp-figure">'+
1167
- '<div class="mfp-close"></div>'+
1168
- '<figure>'+
1169
- '<div class="mfp-img"></div>'+
1170
- '<figcaption>'+
1171
- '<div class="mfp-bottom-bar">'+
1172
- '<div class="mfp-title"></div>'+
1173
- '<div class="mfp-counter"></div>'+
1174
- '</div>'+
1175
- '</figcaption>'+
1176
- '</figure>'+
1177
- '</div>',
1178
- cursor: 'mfp-zoom-out-cur',
1179
- titleSrc: 'title',
1180
- verticalFit: true,
1181
- tError: '<a href="%url%">The image</a> could not be loaded.'
1182
- },
1183
-
1184
- proto: {
1185
- initImage: function() {
1186
- var imgSt = mfp.st.image,
1187
- ns = '.image';
1188
-
1189
- mfp.types.push('image');
1190
-
1191
- _mfpOn(OPEN_EVENT+ns, function() {
1192
- if(mfp.currItem.type === 'image' && imgSt.cursor) {
1193
- $(document.body).addClass(imgSt.cursor);
1194
  }
1195
- });
1196
-
1197
- _mfpOn(CLOSE_EVENT+ns, function() {
1198
- if(imgSt.cursor) {
1199
- $(document.body).removeClass(imgSt.cursor);
 
 
 
 
 
 
 
1200
  }
1201
- _window.off('resize' + EVENT_NS);
1202
- });
 
1203
 
1204
- _mfpOn('Resize'+ns, mfp.resizeImage);
1205
- if(mfp.isLowIE) {
1206
- _mfpOn('AfterChange', mfp.resizeImage);
1207
- }
1208
- },
1209
- resizeImage: function() {
1210
- var item = mfp.currItem;
1211
- if(!item || !item.img) return;
1212
 
1213
- if(mfp.st.image.verticalFit) {
1214
- var decr = 0;
1215
- // fix box-sizing in ie7/8
1216
- if(mfp.isLowIE) {
1217
- decr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10);
1218
- }
1219
- item.img.css('max-height', mfp.wH-decr);
1220
- }
1221
- },
1222
- _onImageHasSize: function(item) {
1223
- if(item.img) {
1224
-
1225
- item.hasSize = true;
1226
 
1227
- if(_imgInterval) {
1228
- clearInterval(_imgInterval);
1229
- }
1230
-
1231
- item.isCheckingImgSize = false;
1232
 
1233
- _mfpTrigger('ImageHasSize', item);
1234
 
1235
- if(item.imgHidden) {
1236
- if(mfp.content)
1237
- mfp.content.removeClass('mfp-loading');
1238
-
1239
- item.imgHidden = false;
1240
- }
1241
 
1242
- }
1243
- },
1244
 
1245
- /**
1246
- * Function that loops until the image has size to display elements that rely on it asap
1247
- */
1248
- findImageSize: function(item) {
1249
 
1250
- var counter = 0,
1251
- img = item.img[0],
1252
- mfpSetInterval = function(delay) {
 
1253
 
1254
- if(_imgInterval) {
1255
- clearInterval(_imgInterval);
1256
- }
1257
- // decelerating interval that checks for size of an image
1258
- _imgInterval = setInterval(function() {
1259
- if(img.naturalWidth > 0) {
1260
- mfp._onImageHasSize(item);
1261
- return;
1262
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1263
 
1264
- if(counter > 200) {
1265
- clearInterval(_imgInterval);
1266
- }
 
 
1267
 
1268
- counter++;
1269
- if(counter === 3) {
1270
- mfpSetInterval(10);
1271
- } else if(counter === 40) {
1272
- mfpSetInterval(50);
1273
- } else if(counter === 100) {
1274
- mfpSetInterval(500);
1275
- }
1276
- }, delay);
1277
- };
1278
 
1279
- mfpSetInterval(1);
1280
- },
1281
 
1282
- getImage: function(item, template) {
 
1283
 
1284
- var guard = 0,
1285
 
1286
- // image load complete handler
1287
- onLoadComplete = function() {
1288
- if(item) {
1289
- if (item.img[0].complete) {
 
 
 
 
 
 
 
 
 
 
 
 
1290
  item.img.off('.mfploader');
1291
-
1292
  if(item === mfp.currItem){
1293
  mfp._onImageHasSize(item);
1294
-
1295
- mfp.updateStatus('ready');
1296
  }
1297
 
1298
  item.hasSize = true;
1299
  item.loaded = true;
1300
-
1301
- _mfpTrigger('ImageLoadComplete');
1302
-
1303
- }
1304
- else {
1305
- // if image complete check fails 200 times (20 sec), we assume that there was an error.
1306
- guard++;
1307
- if(guard < 200) {
1308
- setTimeout(onLoadComplete,100);
1309
- } else {
1310
- onLoadError();
1311
- }
1312
  }
1313
- }
1314
- },
1315
 
1316
- // image error handler
1317
- onLoadError = function() {
1318
- if(item) {
1319
- item.img.off('.mfploader');
1320
- if(item === mfp.currItem){
1321
- mfp._onImageHasSize(item);
1322
- mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );
1323
- }
1324
 
1325
- item.hasSize = true;
1326
- item.loaded = true;
1327
- item.loadError = true;
 
 
 
1328
  }
1329
- },
1330
- imgSt = mfp.st.image;
1331
 
 
 
 
 
 
1332
 
1333
- var el = template.find('.mfp-img');
1334
- if(el.length) {
1335
- var img = document.createElement('img');
1336
- img.className = 'mfp-img';
1337
- if(item.el && item.el.find('img').length) {
1338
- img.alt = item.el.find('img').attr('alt');
1339
  }
1340
- item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError);
1341
- img.src = item.src;
1342
 
1343
- // without clone() "error" event is not firing when IMG is replaced by new IMG
1344
- // TODO: find a way to avoid such cloning
1345
- if(el.is('img')) {
1346
- item.img = item.img.clone();
1347
- }
1348
 
1349
- img = item.img[0];
1350
- if(img.naturalWidth > 0) {
1351
- item.hasSize = true;
1352
- } else if(!img.width) {
1353
- item.hasSize = false;
1354
- }
1355
- }
1356
 
1357
- mfp._parseMarkup(template, {
1358
- title: _getTitle(item),
1359
- img_replaceWith: item.img
1360
- }, item);
1361
 
1362
- mfp.resizeImage();
 
 
 
 
 
 
 
 
1363
 
1364
- if(item.hasSize) {
1365
- if(_imgInterval) clearInterval(_imgInterval);
1366
 
1367
- if(item.loadError) {
 
1368
  template.addClass('mfp-loading');
1369
- mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );
1370
- } else {
1371
- template.removeClass('mfp-loading');
1372
- mfp.updateStatus('ready');
1373
  }
 
1374
  return template;
1375
  }
1376
-
1377
- mfp.updateStatus('loading');
1378
- item.loading = true;
1379
-
1380
- if(!item.hasSize) {
1381
- item.imgHidden = true;
1382
- template.addClass('mfp-loading');
1383
- mfp.findImageSize(item);
1384
- }
1385
-
1386
- return template;
1387
  }
1388
- }
1389
- });
1390
-
1391
-
1392
-
1393
- /*>>image*/
1394
-
1395
- /*>>zoom*/
1396
- var hasMozTransform,
1397
- getHasMozTransform = function() {
1398
- if(hasMozTransform === undefined) {
1399
- hasMozTransform = document.createElement('p').style.MozTransform !== undefined;
1400
- }
1401
- return hasMozTransform;
1402
- };
1403
 
1404
- $.magnificPopup.registerModule('zoom', {
1405
 
1406
- options: {
1407
- enabled: false,
1408
- easing: 'ease-in-out',
1409
- duration: 300,
1410
- opener: function(element) {
1411
- return element.is('img') ? element : element.find('img');
1412
- }
1413
- },
1414
 
1415
- proto: {
1416
 
1417
- initZoom: function() {
1418
- var zoomSt = mfp.st.zoom,
1419
- ns = '.zoom',
1420
- image;
1421
-
1422
- if(!zoomSt.enabled || !mfp.supportsTransition) {
1423
- return;
1424
  }
 
1425
 
1426
- var duration = zoomSt.duration,
1427
- getElToAnimate = function(image) {
1428
- var newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'),
1429
- transition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing,
1430
- cssObj = {
1431
- position: 'fixed',
1432
- zIndex: 9999,
1433
- left: 0,
1434
- top: 0,
1435
- '-webkit-backface-visibility': 'hidden'
1436
- },
1437
- t = 'transition';
1438
 
1439
- cssObj['-webkit-'+t] = cssObj['-moz-'+t] = cssObj['-o-'+t] = cssObj[t] = transition;
 
 
 
1440
 
1441
- newImg.css(cssObj);
1442
- return newImg;
1443
- },
1444
- showMainContent = function() {
1445
- mfp.content.css('visibility', 'visible');
1446
- },
1447
- openTimeout,
1448
- animatedImg;
1449
 
1450
- _mfpOn('BuildControls'+ns, function() {
1451
- if(mfp._allowZoom()) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1452
 
1453
- clearTimeout(openTimeout);
1454
- mfp.content.css('visibility', 'hidden');
1455
 
1456
- // Basically, all code below does is clones existing image, puts in on top of the current one and animated it
1457
-
1458
- image = mfp._getItemToZoom();
 
1459
 
1460
- if(!image) {
1461
- showMainContent();
1462
- return;
1463
- }
1464
 
1465
- animatedImg = getElToAnimate(image);
1466
-
1467
- animatedImg.css( mfp._getOffset() );
1468
 
1469
- mfp.wrap.append(animatedImg);
1470
 
1471
- openTimeout = setTimeout(function() {
1472
- animatedImg.css( mfp._getOffset( true ) );
1473
  openTimeout = setTimeout(function() {
 
 
1474
 
1475
- showMainContent();
1476
 
1477
- setTimeout(function() {
1478
- animatedImg.remove();
1479
- image = animatedImg = null;
1480
- _mfpTrigger('ZoomAnimationEnded');
1481
- }, 16); // avoid blink when switching images
1482
 
1483
- }, duration); // this timeout equals animation duration
1484
 
1485
- }, 16); // by adding this timeout we avoid short glitch at the beginning of animation
1486
 
1487
 
1488
- // Lots of timeouts...
1489
- }
1490
- });
1491
- _mfpOn(BEFORE_CLOSE_EVENT+ns, function() {
1492
- if(mfp._allowZoom()) {
1493
 
1494
- clearTimeout(openTimeout);
1495
 
1496
- mfp.st.removalDelay = duration;
1497
 
1498
- if(!image) {
1499
- image = mfp._getItemToZoom();
1500
  if(!image) {
1501
- return;
 
 
 
 
1502
  }
1503
- animatedImg = getElToAnimate(image);
 
 
 
 
 
 
 
1504
  }
1505
-
1506
-
1507
- animatedImg.css( mfp._getOffset(true) );
1508
- mfp.wrap.append(animatedImg);
1509
- mfp.content.css('visibility', 'hidden');
1510
-
1511
- setTimeout(function() {
1512
- animatedImg.css( mfp._getOffset() );
1513
- }, 16);
1514
- }
1515
 
1516
- });
1517
 
1518
- _mfpOn(CLOSE_EVENT+ns, function() {
1519
- if(mfp._allowZoom()) {
1520
- showMainContent();
1521
- if(animatedImg) {
1522
- animatedImg.remove();
 
 
1523
  }
1524
- image = null;
1525
- }
1526
- });
1527
- },
1528
 
1529
- _allowZoom: function() {
1530
- return mfp.currItem.type === 'image';
1531
- },
1532
 
1533
- _getItemToZoom: function() {
1534
- if(mfp.currItem.hasSize) {
1535
- return mfp.currItem.img;
1536
- } else {
1537
- return false;
1538
- }
1539
- },
1540
 
1541
- // Get element postion relative to viewport
1542
- _getOffset: function(isLarge) {
1543
- var el;
1544
- if(isLarge) {
1545
- el = mfp.currItem.img;
1546
- } else {
1547
- el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem);
1548
- }
1549
 
1550
- var offset = el.offset();
1551
- var paddingTop = parseInt(el.css('padding-top'),10);
1552
- var paddingBottom = parseInt(el.css('padding-bottom'),10);
1553
- offset.top -= ( $(window).scrollTop() - paddingTop );
1554
 
1555
 
1556
- /*
1557
-
1558
- Animating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa.
1559
 
1560
- */
1561
- var obj = {
1562
- width: el.width(),
1563
- // fix Zepto height+padding issue
1564
- height: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop
1565
- };
1566
 
1567
- // I hate to do this, but there is no another option
1568
- if( getHasMozTransform() ) {
1569
- obj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)';
1570
- } else {
1571
- obj.left = offset.left;
1572
- obj.top = offset.top;
 
 
 
 
 
 
 
 
 
1573
  }
1574
- return obj;
1575
  }
 
1576
 
1577
- }
1578
- });
1579
 
1580
 
 
1581
 
1582
- /*>>zoom*/
1583
 
1584
- /*>>iframe*/
 
1585
 
1586
- var IFRAME_NS = 'iframe',
1587
- _emptyPage = '//about:blank',
1588
-
1589
- _fixIframeBugs = function(isShowing) {
1590
- if(mfp.currTemplate[IFRAME_NS]) {
1591
- var el = mfp.currTemplate[IFRAME_NS].find('iframe');
1592
- if(el.length) {
1593
- // reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug
1594
- if(!isShowing) {
1595
- el[0].src = _emptyPage;
1596
- }
1597
 
1598
- // IE8 black screen bug fix
1599
- if(mfp.isIE8) {
1600
- el.css('display', isShowing ? 'block' : 'none');
 
1601
  }
1602
  }
1603
- }
1604
- };
1605
 
1606
- $.magnificPopup.registerModule(IFRAME_NS, {
1607
 
1608
- options: {
1609
- markup: '<div class="mfp-iframe-scaler">'+
1610
- '<div class="mfp-close"></div>'+
1611
- '<iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe>'+
1612
- '</div>',
1613
 
1614
- srcAction: 'iframe_src',
1615
 
1616
- // we don't care and support only one default type of URL by default
1617
- patterns: {
1618
- youtube: {
1619
- index: 'youtube.com',
1620
- id: 'v=',
1621
- src: '//www.youtube.com/embed/%id%?autoplay=1'
1622
- },
1623
- vimeo: {
1624
- index: 'vimeo.com/',
1625
- id: '/',
1626
- src: '//player.vimeo.com/video/%id%?autoplay=1'
1627
- },
1628
- gmaps: {
1629
- index: '//maps.google.',
1630
- src: '%id%&output=embed'
 
1631
  }
1632
- }
1633
- },
1634
-
1635
- proto: {
1636
- initIframe: function() {
1637
- mfp.types.push(IFRAME_NS);
1638
-
1639
- _mfpOn('BeforeChange', function(e, prevType, newType) {
1640
- if(prevType !== newType) {
1641
- if(prevType === IFRAME_NS) {
1642
- _fixIframeBugs(); // iframe if removed
1643
- } else if(newType === IFRAME_NS) {
1644
- _fixIframeBugs(true); // iframe is showing
1645
- }
1646
- }// else {
1647
  // iframe source is switched, don't do anything
1648
- //}
1649
- });
1650
 
1651
- _mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function() {
1652
- _fixIframeBugs();
1653
- });
1654
- },
1655
 
1656
- getIframe: function(item, template) {
1657
- var embedSrc = item.src;
1658
- var iframeSt = mfp.st.iframe;
1659
-
1660
- $.each(iframeSt.patterns, function() {
1661
- if(embedSrc.indexOf( this.index ) > -1) {
1662
- if(this.id) {
1663
- if(typeof this.id === 'string') {
1664
- embedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length);
1665
- } else {
1666
- embedSrc = this.id.call( this, embedSrc );
 
1667
  }
 
 
1668
  }
1669
- embedSrc = this.src.replace('%id%', embedSrc );
1670
- return false; // break;
 
 
 
1671
  }
1672
- });
1673
-
1674
- var dataObj = {};
1675
- if(iframeSt.srcAction) {
1676
- dataObj[iframeSt.srcAction] = embedSrc;
1677
- }
1678
- mfp._parseMarkup(template, dataObj, item);
1679
 
1680
- mfp.updateStatus('ready');
1681
 
1682
- return template;
 
1683
  }
1684
- }
1685
- });
1686
 
1687
 
1688
 
1689
- /*>>iframe*/
1690
 
1691
- /*>>gallery*/
1692
- /**
1693
- * Get looped index depending on number of slides
1694
- */
1695
- var _getLoopedId = function(index) {
1696
- var numSlides = mfp.items.length;
1697
- if(index > numSlides - 1) {
1698
- return index - numSlides;
1699
- } else if(index < 0) {
1700
- return numSlides + index;
1701
- }
1702
- return index;
1703
- },
1704
- _replaceCurrTotal = function(text, curr, total) {
1705
- return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total);
1706
- };
 
 
1707
 
1708
- $.magnificPopup.registerModule('gallery', {
 
 
 
 
 
 
 
 
 
 
1709
 
1710
- options: {
1711
- enabled: false,
1712
- arrowMarkup: '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',
1713
- preload: [0,2],
1714
- navigateByImgClick: true,
1715
- arrows: true,
1716
 
1717
- tPrev: 'Previous (Left arrow key)',
1718
- tNext: 'Next (Right arrow key)',
1719
- tCounter: '%curr% of %total%'
1720
- },
1721
 
1722
- proto: {
1723
- initGallery: function() {
1724
 
1725
- var gSt = mfp.st.gallery,
1726
- ns = '.mfp-gallery',
1727
- supportsFastClick = Boolean($.fn.mfpFastClick);
1728
 
1729
- mfp.direction = true; // true - next, false - prev
1730
-
1731
- if(!gSt || !gSt.enabled ) return false;
1732
 
1733
- _wrapClasses += ' mfp-gallery';
1734
 
1735
- _mfpOn(OPEN_EVENT+ns, function() {
 
 
 
 
 
 
 
1736
 
1737
- if(gSt.navigateByImgClick) {
1738
- mfp.wrap.on('click'+ns, '.mfp-img', function() {
1739
- if(mfp.items.length > 1) {
 
1740
  mfp.next();
1741
- return false;
1742
  }
1743
  });
1744
- }
1745
 
1746
- _document.on('keydown'+ns, function(e) {
1747
- if (e.keyCode === 37) {
1748
- mfp.prev();
1749
- } else if (e.keyCode === 39) {
1750
- mfp.next();
1751
  }
1752
  });
1753
- });
1754
 
1755
- _mfpOn('UpdateStatus'+ns, function(e, data) {
1756
- if(data.text) {
1757
- data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length);
1758
- }
1759
- });
1760
 
1761
- _mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item) {
1762
- var l = mfp.items.length;
1763
- values.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : '';
1764
- });
 
 
 
 
 
 
 
 
1765
 
1766
- _mfpOn('BuildControls' + ns, function() {
1767
- if(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) {
1768
- var markup = gSt.arrowMarkup,
1769
- arrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS),
1770
- arrowRight = mfp.arrowRight = $( markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right') ).addClass(PREVENT_CLOSE_CLASS);
1771
-
1772
- var eName = supportsFastClick ? 'mfpFastClick' : 'click';
1773
- arrowLeft[eName](function() {
1774
- mfp.prev();
1775
- });
1776
- arrowRight[eName](function() {
1777
- mfp.next();
1778
- });
1779
-
1780
- // Polyfill for :before and :after (adds elements with classes mfp-a and mfp-b)
1781
- if(mfp.isIE7) {
1782
- _getEl('b', arrowLeft[0], false, true);
1783
- _getEl('a', arrowLeft[0], false, true);
1784
- _getEl('b', arrowRight[0], false, true);
1785
- _getEl('a', arrowRight[0], false, true);
1786
  }
 
1787
 
1788
- mfp.container.append(arrowLeft.add(arrowRight));
1789
- }
1790
- });
1791
 
1792
- _mfpOn(CHANGE_EVENT+ns, function() {
1793
- if(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout);
 
 
 
1794
 
1795
- mfp._preloadTimeout = setTimeout(function() {
1796
- mfp.preloadNearbyImages();
1797
- mfp._preloadTimeout = null;
1798
- }, 16);
1799
- });
1800
 
 
 
 
 
 
1801
 
1802
- _mfpOn(CLOSE_EVENT+ns, function() {
1803
- _document.off(ns);
1804
- mfp.wrap.off('click'+ns);
1805
-
1806
- if(mfp.arrowLeft && supportsFastClick) {
1807
- mfp.arrowLeft.add(mfp.arrowRight).destroyMfpFastClick();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1808
  }
1809
- mfp.arrowRight = mfp.arrowLeft = null;
1810
- });
1811
-
1812
- },
1813
- next: function() {
1814
- mfp.direction = true;
1815
- mfp.index = _getLoopedId(mfp.index + 1);
1816
- mfp.updateItemHTML();
1817
- },
1818
- prev: function() {
1819
- mfp.direction = false;
1820
- mfp.index = _getLoopedId(mfp.index - 1);
1821
- mfp.updateItemHTML();
1822
- },
1823
- goTo: function(newIndex) {
1824
- mfp.direction = (newIndex >= mfp.index);
1825
- mfp.index = newIndex;
1826
- mfp.updateItemHTML();
1827
- },
1828
- preloadNearbyImages: function() {
1829
- var p = mfp.st.gallery.preload,
1830
- preloadBefore = Math.min(p[0], mfp.items.length),
1831
- preloadAfter = Math.min(p[1], mfp.items.length),
1832
- i;
1833
-
1834
- for(i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) {
1835
- mfp._preloadItem(mfp.index+i);
1836
- }
1837
- for(i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) {
1838
- mfp._preloadItem(mfp.index-i);
1839
- }
1840
- },
1841
- _preloadItem: function(index) {
1842
- index = _getLoopedId(index);
1843
-
1844
- if(mfp.items[index].preloaded) {
1845
- return;
1846
- }
1847
-
1848
- var item = mfp.items[index];
1849
- if(!item.parsed) {
1850
- item = mfp.parseEl( index );
1851
- }
1852
-
1853
- _mfpTrigger('LazyLoad', item);
1854
-
1855
- if(item.type === 'image') {
1856
- item.img = $('<img class="mfp-img" />').on('load.mfploader', function() {
1857
- item.hasSize = true;
1858
- }).on('error.mfploader', function() {
1859
- item.hasSize = true;
1860
- item.loadError = true;
1861
- _mfpTrigger('LazyLoadError', item);
1862
- }).attr('src', item.src);
1863
- }
1864
-
1865
-
1866
- item.preloaded = true;
1867
- }
1868
- }
1869
- });
1870
 
1871
- /*
1872
- Touch Support that might be implemented some day
 
1873
 
1874
- addSwipeGesture: function() {
1875
- var startX,
1876
- moved,
1877
- multipleTouches;
1878
 
1879
- return;
1880
 
1881
- var namespace = '.mfp',
1882
- addEventNames = function(pref, down, move, up, cancel) {
1883
- mfp._tStart = pref + down + namespace;
1884
- mfp._tMove = pref + move + namespace;
1885
- mfp._tEnd = pref + up + namespace;
1886
- mfp._tCancel = pref + cancel + namespace;
1887
- };
 
 
1888
 
1889
- if(window.navigator.msPointerEnabled) {
1890
- addEventNames('MSPointer', 'Down', 'Move', 'Up', 'Cancel');
1891
- } else if('ontouchstart' in window) {
1892
- addEventNames('touch', 'start', 'move', 'end', 'cancel');
1893
- } else {
1894
- return;
1895
- }
1896
- _window.on(mfp._tStart, function(e) {
1897
- var oE = e.originalEvent;
1898
- multipleTouches = moved = false;
1899
- startX = oE.pageX || oE.changedTouches[0].pageX;
1900
- }).on(mfp._tMove, function(e) {
1901
- if(e.originalEvent.touches.length > 1) {
1902
- multipleTouches = e.originalEvent.touches.length;
1903
- } else {
1904
- //e.preventDefault();
1905
- moved = true;
1906
- }
1907
- }).on(mfp._tEnd + ' ' + mfp._tCancel, function(e) {
1908
- if(moved && !multipleTouches) {
1909
- var oE = e.originalEvent,
1910
- diff = startX - (oE.pageX || oE.changedTouches[0].pageX);
1911
 
1912
- if(diff > 20) {
1913
- mfp.next();
1914
- } else if(diff < -20) {
1915
- mfp.prev();
1916
  }
1917
  }
1918
  });
1919
- },
1920
- */
1921
-
1922
-
1923
- /*>>gallery*/
1924
 
1925
- /*>>retina*/
1926
 
1927
- var RETINA_NS = 'retina';
1928
 
1929
- $.magnificPopup.registerModule(RETINA_NS, {
1930
- options: {
1931
- replaceSrc: function(item) {
1932
- return item.src.replace(/\.\w+$/, function(m) { return '@2x' + m; });
1933
- },
1934
- ratio: 1 // Function or number. Set to 1 to disable.
1935
- },
1936
- proto: {
1937
- initRetina: function() {
1938
- if(window.devicePixelRatio > 1) {
1939
-
1940
- var st = mfp.st.retina,
1941
- ratio = st.ratio;
1942
-
1943
- ratio = !isNaN(ratio) ? ratio : ratio();
1944
-
1945
- if(ratio > 1) {
1946
- _mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item) {
1947
- item.img.css({
1948
- 'max-width': item.img[0].naturalWidth / ratio,
1949
- 'width': '100%'
1950
- });
1951
- });
1952
- _mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item) {
1953
- item.src = st.replaceSrc(item, ratio);
1954
- });
1955
- }
1956
- }
1957
 
1958
- }
1959
- }
1960
- });
1961
-
1962
- /*>>retina*/
1963
-
1964
- /*>>fastclick*/
1965
- /**
1966
- * FastClick event implementation. (removes 300ms delay on touch devices)
1967
- * Based on https://developers.google.com/mobile/articles/fast_buttons
1968
- *
1969
- * You may use it outside the Magnific Popup by calling just:
1970
- *
1971
- * $('.your-el').mfpFastClick(function() {
1972
- * console.log('Clicked!');
1973
- * });
1974
- *
1975
- * To unbind:
1976
- * $('.your-el').destroyMfpFastClick();
1977
- *
1978
- *
1979
- * Note that it's a very basic and simple implementation, it blocks ghost click on the same element where it was bound.
1980
- * If you need something more advanced, use plugin by FT Labs https://github.com/ftlabs/fastclick
1981
- *
1982
- */
1983
-
1984
- (function() {
1985
- var ghostClickDelay = 1000,
1986
- supportsTouch = 'ontouchstart' in window,
1987
- unbindTouchMove = function() {
1988
- _window.off('touchmove'+ns+' touchend'+ns);
1989
  },
1990
- eName = 'mfpFastClick',
1991
- ns = '.'+eName;
1992
-
1993
-
1994
- // As Zepto.js doesn't have an easy way to add custom events (like jQuery), so we implement it in this way
1995
- $.fn.mfpFastClick = function(callback) {
1996
-
1997
- return $(this).each(function() {
1998
-
1999
- var elem = $(this),
2000
- lock;
2001
-
2002
- if( supportsTouch ) {
2003
-
2004
- var timeout,
2005
- startX,
2006
- startY,
2007
- pointerMoved,
2008
- point,
2009
- numPointers;
2010
-
2011
- elem.on('touchstart' + ns, function(e) {
2012
- pointerMoved = false;
2013
- numPointers = 1;
2014
 
2015
- point = e.originalEvent ? e.originalEvent.touches[0] : e.touches[0];
2016
- startX = point.clientX;
2017
- startY = point.clientY;
2018
 
2019
- _window.on('touchmove'+ns, function(e) {
2020
- point = e.originalEvent ? e.originalEvent.touches : e.touches;
2021
- numPointers = point.length;
2022
- point = point[0];
2023
- if (Math.abs(point.clientX - startX) > 10 ||
2024
- Math.abs(point.clientY - startY) > 10) {
2025
- pointerMoved = true;
2026
- unbindTouchMove();
2027
- }
2028
- }).on('touchend'+ns, function(e) {
2029
- unbindTouchMove();
2030
- if(pointerMoved || numPointers > 1) {
2031
- return;
2032
- }
2033
- lock = true;
2034
- e.preventDefault();
2035
- clearTimeout(timeout);
2036
- timeout = setTimeout(function() {
2037
- lock = false;
2038
- }, ghostClickDelay);
2039
- callback();
2040
- });
2041
- });
2042
-
2043
- }
2044
 
2045
- elem.on('click' + ns, function() {
2046
- if(!lock) {
2047
- callback();
 
 
 
 
 
 
 
 
2048
  }
2049
- });
2050
- });
2051
- };
2052
 
2053
- $.fn.destroyMfpFastClick = function() {
2054
- $(this).off('touchstart' + ns + ' click' + ns);
2055
- if(supportsTouch) _window.off('touchmove'+ns+' touchend'+ns);
2056
- };
2057
- })();
2058
 
2059
- /*>>fastclick*/
2060
- _checkInstance(); }));
1
+ /*! Magnific Popup - v1.1.0 - 2016-02-20
2
+ * http://dimsemenov.com/plugins/magnific-popup/
3
+ * Copyright (c) 2016 Dmitry Semenov; */
4
+ ;(function (factory) {
5
+ if (typeof define === 'function' && define.amd) {
6
+ // AMD. Register as an anonymous module.
7
+ define(['jquery'], factory);
8
+ } else if (typeof exports === 'object') {
9
+ // Node/CommonJS
10
+ factory(require('jquery'));
11
+ } else {
12
+ // Browser globals
13
+ factory(window.jQuery || window.Zepto);
14
+ }
15
+ }(function($) {
16
+
17
+ /*>>core*/
18
+ /**
19
+ *
20
+ * Magnific Popup Core JS file
21
+ *
22
+ */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
+
25
+ /**
26
+ * Private static constants
27
+ */
28
+ var CLOSE_EVENT = 'Close',
29
+ BEFORE_CLOSE_EVENT = 'BeforeClose',
30
+ AFTER_CLOSE_EVENT = 'AfterClose',
31
+ BEFORE_APPEND_EVENT = 'BeforeAppend',
32
+ MARKUP_PARSE_EVENT = 'MarkupParse',
33
+ OPEN_EVENT = 'Open',
34
+ CHANGE_EVENT = 'Change',
35
+ NS = 'mfp',
36
+ EVENT_NS = '.' + NS,
37
+ READY_CLASS = 'mfp-ready',
38
+ REMOVING_CLASS = 'mfp-removing',
39
+ PREVENT_CLOSE_CLASS = 'mfp-prevent-close';
40
+
41
+
42
+ /**
43
+ * Private vars
44
+ */
45
+ /*jshint -W079 */
46
+ var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this'
47
+ MagnificPopup = function(){},
48
+ _isJQ = !!(window.jQuery),
49
+ _prevStatus,
50
+ _window = $(window),
51
+ _document,
52
+ _prevContentType,
53
+ _wrapClasses,
54
+ _currPopupType;
55
+
56
+
57
+ /**
58
+ * Private functions
59
+ */
60
+ var _mfpOn = function(name, f) {
61
+ mfp.ev.on(NS + name + EVENT_NS, f);
62
+ },
63
+ _getEl = function(className, appendTo, html, raw) {
64
+ var el = document.createElement('div');
65
+ el.className = 'mfp-'+className;
66
+ if(html) {
67
+ el.innerHTML = html;
68
  }
69
+ if(!raw) {
70
+ el = $(el);
71
+ if(appendTo) {
72
+ el.appendTo(appendTo);
73
+ }
74
+ } else if(appendTo) {
75
+ appendTo.appendChild(el);
76
+ }
77
+ return el;
78
+ },
79
+ _mfpTrigger = function(e, data) {
80
+ mfp.ev.triggerHandler(NS + e, data);
81
+
82
+ if(mfp.st.callbacks) {
83
+ // converts "mfpEventName" to "eventName" callback and triggers it if it's present
84
+ e = e.charAt(0).toLowerCase() + e.slice(1);
85
+ if(mfp.st.callbacks[e]) {
86
+ mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]);
87
+ }
88
+ }
89
+ },
90
+ _getCloseBtn = function(type) {
91
+ if(type !== _currPopupType || !mfp.currTemplate.closeBtn) {
92
+ mfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) );
93
+ _currPopupType = type;
94
+ }
95
+ return mfp.currTemplate.closeBtn;
96
+ },
97
  // Initialize Magnific Popup only when called at least once
98
+ _checkInstance = function() {
99
+ if(!$.magnificPopup.instance) {
100
+ /*jshint -W020 */
101
+ mfp = new MagnificPopup();
102
+ mfp.init();
103
+ $.magnificPopup.instance = mfp;
104
+ }
105
+ },
106
  // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr
107
+ supportsTransitions = function() {
108
+ var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist
109
+ v = ['ms','O','Moz','Webkit']; // 'v' for vendor
110
 
111
+ if( s['transition'] !== undefined ) {
 
 
 
 
 
112
  return true;
113
  }
 
 
 
 
114
 
115
+ while( v.length ) {
116
+ if( v.pop() + 'Transition' in s ) {
117
+ return true;
118
+ }
119
+ }
120
 
121
+ return false;
122
+ };
123
 
 
 
 
 
124
 
 
125
 
126
  /**
127
+ * Public functions
 
128
  */
129
+ MagnificPopup.prototype = {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
 
131
+ constructor: MagnificPopup,
 
 
 
 
132
 
133
+ /**
134
+ * Initializes Magnific Popup plugin.
135
+ * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed
136
+ */
137
+ init: function() {
138
+ var appVersion = navigator.appVersion;
139
+ mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener;
140
+ mfp.isAndroid = (/android/gi).test(appVersion);
141
+ mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion);
142
+ mfp.supportsTransition = supportsTransitions();
143
+
144
+ // We disable fixed positioned lightbox on devices that don't handle it nicely.
145
+ // If you know a better way of detecting this - let me know.
146
+ mfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) );
147
+ _document = $(document);
148
+
149
+ mfp.popupsCache = {};
150
+ },
151
 
152
+ /**
153
+ * Opens popup
154
+ * @param data [description]
155
+ */
156
+ open: function(data) {
157
 
158
+ var i;
159
+
160
+ if(data.isObj === false) {
161
+ // convert jQuery collection to array to avoid conflicts later
162
+ mfp.items = data.items.toArray();
163
+
164
+ mfp.index = 0;
165
+ var items = data.items,
166
+ item;
167
+ for(i = 0; i < items.length; i++) {
168
+ item = items[i];
169
+ if(item.parsed) {
170
+ item = item.el[0];
171
+ }
172
+ if(item === data.el[0]) {
173
+ mfp.index = i;
174
+ break;
175
+ }
176
  }
177
+ } else {
178
+ mfp.items = $.isArray(data.items) ? data.items : [data.items];
179
+ mfp.index = data.index || 0;
180
  }
 
 
 
 
181
 
182
+ // if popup is already opened - we just update the content
183
+ if(mfp.isOpen) {
184
+ mfp.updateItemHTML();
185
+ return;
186
+ }
 
 
 
 
 
 
 
 
187
 
188
+ mfp.types = [];
189
+ _wrapClasses = '';
190
+ if(data.mainEl && data.mainEl.length) {
191
+ mfp.ev = data.mainEl.eq(0);
192
+ } else {
193
+ mfp.ev = _document;
194
  }
 
 
 
 
195
 
196
+ if(data.key) {
197
+ if(!mfp.popupsCache[data.key]) {
198
+ mfp.popupsCache[data.key] = {};
199
+ }
200
+ mfp.currTemplate = mfp.popupsCache[data.key];
201
+ } else {
202
+ mfp.currTemplate = {};
203
+ }
204
 
205
 
 
 
206
 
207
+ mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data );
208
+ mfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos;
 
 
 
 
 
209
 
210
+ if(mfp.st.modal) {
211
+ mfp.st.closeOnContentClick = false;
212
+ mfp.st.closeOnBgClick = false;
213
+ mfp.st.showCloseBtn = false;
214
+ mfp.st.enableEscapeKey = false;
215
+ }
216
 
 
 
 
 
217
 
218
+ // Building markup
219
+ // main containers are created only once
220
+ if(!mfp.bgOverlay) {
221
+
222
+ // Dark overlay
223
+ mfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() {
224
  mfp.close();
225
+ });
 
226
 
227
+ mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) {
228
+ if(mfp._checkIfClose(e.target)) {
229
+ mfp.close();
230
+ }
231
+ });
232
 
233
+ mfp.container = _getEl('container', mfp.wrap);
234
+ }
 
 
235
 
236
+ mfp.contentContainer = _getEl('content');
237
+ if(mfp.st.preloader) {
238
+ mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading);
239
+ }
240
 
241
+
242
+ // Initializing modules
243
+ var modules = $.magnificPopup.modules;
244
+ for(i = 0; i < modules.length; i++) {
245
+ var n = modules[i];
246
+ n = n.charAt(0).toUpperCase() + n.slice(1);
247
+ mfp['init'+n].call(mfp);
248
+ }
249
+ _mfpTrigger('BeforeOpen');
250
 
251
 
252
+ if(mfp.st.showCloseBtn) {
253
+ // Close button
254
+ if(!mfp.st.closeBtnInside) {
255
+ mfp.wrap.append( _getCloseBtn() );
256
+ } else {
257
+ _mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) {
258
+ values.close_replaceWith = _getCloseBtn(item.type);
259
+ });
260
+ _wrapClasses += ' mfp-close-btn-in';
261
+ }
262
+ }
263
+
264
+ if(mfp.st.alignTop) {
265
+ _wrapClasses += ' mfp-align-top';
266
+ }
267
+
268
+
269
+
270
+ if(mfp.fixedContentPos) {
271
+ mfp.wrap.css({
272
+ overflow: mfp.st.overflowY,
273
+ overflowX: 'hidden',
274
+ overflowY: mfp.st.overflowY
275
+ });
276
  } else {
277
+ mfp.wrap.css({
278
+ top: _window.scrollTop(),
279
+ position: 'absolute'
280
+ });
281
+ }
282
+ if( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) {
283
+ mfp.bgOverlay.css({
284
+ height: _document.height(),
285
+ position: 'absolute'
286
  });
 
287
  }
 
 
 
 
 
288
 
 
289
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
290
 
291
+ if(mfp.st.enableEscapeKey) {
292
+ // Close on ESC key
293
+ _document.on('keyup' + EVENT_NS, function(e) {
294
+ if(e.keyCode === 27) {
295
+ mfp.close();
296
+ }
297
+ });
298
+ }
299
 
300
+ _window.on('resize' + EVENT_NS, function() {
301
+ mfp.updateSize();
 
 
 
 
302
  });
 
303
 
 
 
 
304
 
305
+ if(!mfp.st.closeOnContentClick) {
306
+ _wrapClasses += ' mfp-auto-cursor';
307
+ }
308
 
309
+ if(_wrapClasses)
310
+ mfp.wrap.addClass(_wrapClasses);
 
 
 
 
311
 
312
 
313
+ // this triggers recalculation of layout, so we get it once to not to trigger twice
314
+ var windowHeight = mfp.wH = _window.height();
315
 
 
 
316
 
317
+ var windowStyles = {};
 
 
 
 
 
 
 
318
 
319
+ if( mfp.fixedContentPos ) {
320
+ if(mfp._hasScrollBar(windowHeight)){
321
+ var s = mfp._getScrollbarSize();
322
+ if(s) {
323
+ windowStyles.marginRight = s;
324
+ }
325
+ }
326
  }
 
327
 
328
+ if(mfp.fixedContentPos) {
329
+ if(!mfp.isIE7) {
330
+ windowStyles.overflow = 'hidden';
331
+ } else {
332
+ // ie7 double-scroll bug
333
+ $('body, html').css('overflow', 'hidden');
334
+ }
335
+ }
 
336
 
337
+
338
+
339
+ var classesToadd = mfp.st.mainClass;
340
+ if(mfp.isIE7) {
341
+ classesToadd += ' mfp-ie7';
342
+ }
343
+ if(classesToadd) {
344
+ mfp._addClassToMFP( classesToadd );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
345
  }
 
 
 
346
 
347
+ // add content
348
+ mfp.updateItemHTML();
349
 
350
+ _mfpTrigger('BuildControls');
 
 
351
 
352
+ // remove scrollbar, add margin e.t.c
353
+ $('html').css(windowStyles);
354
 
355
+ // add everything to DOM
356
+ mfp.bgOverlay.add(mfp.wrap).prependTo( mfp.st.prependTo || $(document.body) );
357
+
358
+ // Save last focused element
359
+ mfp._lastFocusedEl = document.activeElement;
360
+
361
+ // Wait for next cycle to allow CSS transition
 
 
 
 
362
  setTimeout(function() {
 
 
 
 
 
 
363
 
364
+ if(mfp.content) {
365
+ mfp._addClassToMFP(READY_CLASS);
366
+ mfp._setFocus();
367
+ } else {
368
+ // if content is not defined (not loaded e.t.c) we add class only for BG
369
+ mfp.bgOverlay.addClass(READY_CLASS);
370
+ }
371
 
372
+ // Trap the focus in popup
373
+ _document.on('focusin' + EVENT_NS, mfp._onFocusIn);
374
 
375
+ }, 16);
 
 
376
 
377
+ mfp.isOpen = true;
378
+ mfp.updateSize(windowHeight);
379
+ _mfpTrigger(OPEN_EVENT);
380
 
381
+ return data;
382
+ },
383
 
384
+ /**
385
+ * Closes the popup
386
+ */
387
+ close: function() {
388
+ if(!mfp.isOpen) return;
389
+ _mfpTrigger(BEFORE_CLOSE_EVENT);
390
+
391
+ mfp.isOpen = false;
392
+ // for CSS3 animation
393
+ if(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition ) {
394
+ mfp._addClassToMFP(REMOVING_CLASS);
395
+ setTimeout(function() {
396
+ mfp._close();
397
+ }, mfp.st.removalDelay);
398
  } else {
399
+ mfp._close();
400
  }
401
+ },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
402
 
403
+ /**
404
+ * Helper for close() function
405
+ */
406
+ _close: function() {
407
+ _mfpTrigger(CLOSE_EVENT);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
408
 
409
+ var classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' ';
410
 
411
+ mfp.bgOverlay.detach();
412
+ mfp.wrap.detach();
413
+ mfp.container.empty();
414
 
415
+ if(mfp.st.mainClass) {
416
+ classesToRemove += mfp.st.mainClass + ' ';
417
+ }
 
 
418
 
419
+ mfp._removeClassFromMFP(classesToRemove);
 
420
 
421
+ if(mfp.fixedContentPos) {
422
+ var windowStyles = {marginRight: ''};
423
+ if(mfp.isIE7) {
424
+ $('body, html').css('overflow', '');
425
+ } else {
426
+ windowStyles.overflow = '';
427
+ }
428
+ $('html').css(windowStyles);
429
+ }
430
 
431
+ _document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS);
432
+ mfp.ev.off(EVENT_NS);
 
433
 
434
+ // clean up DOM elements that aren't removed
435
+ mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style');
436
+ mfp.bgOverlay.attr('class', 'mfp-bg');
437
+ mfp.container.attr('class', 'mfp-container');
438
 
439
+ // remove close button from target element
440
+ if(mfp.st.showCloseBtn &&
441
+ (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) {
442
+ if(mfp.currTemplate.closeBtn)
443
+ mfp.currTemplate.closeBtn.detach();
444
+ }
445
 
 
446
 
447
+ if(mfp.st.autoFocusLast && mfp._lastFocusedEl) {
448
+ $(mfp._lastFocusedEl).focus(); // put tab focus back
449
+ }
450
+ mfp.currItem = null;
451
+ mfp.content = null;
452
+ mfp.currTemplate = null;
453
+ mfp.prevHeight = 0;
454
 
455
+ _mfpTrigger(AFTER_CLOSE_EVENT);
456
+ },
457
 
458
+ updateSize: function(winHeight) {
 
459
 
460
+ if(mfp.isIOS) {
461
+ // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2
462
+ var zoomLevel = document.documentElement.clientWidth / window.innerWidth;
463
+ var height = window.innerHeight * zoomLevel;
464
+ mfp.wrap.css('height', height);
465
+ mfp.wH = height;
466
  } else {
467
+ mfp.wH = winHeight || _window.height();
468
+ }
469
+ // Fixes #84: popup incorrectly positioned with position:relative on body
470
+ if(!mfp.fixedContentPos) {
471
+ mfp.wrap.css('height', mfp.wH);
472
  }
 
473
 
474
+ _mfpTrigger('Resize');
 
 
 
 
 
475
 
476
+ },
477
 
478
+ /**
479
+ * Set content of popup based on current index
480
+ */
481
+ updateItemHTML: function() {
482
+ var item = mfp.items[mfp.index];
483
 
484
+ // Detach and perform modifications
485
+ mfp.contentContainer.detach();
486
 
487
+ if(mfp.content)
488
+ mfp.content.detach();
489
 
490
+ if(!item.parsed) {
491
+ item = mfp.parseEl( mfp.index );
 
 
 
 
 
 
 
 
 
 
 
 
 
492
  }
 
 
 
 
 
 
 
 
 
493
 
494
+ var type = item.type;
495
 
496
+ _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]);
497
+ // BeforeChange event works like so:
498
+ // _mfpOn('BeforeChange', function(e, prevType, newType) { });
499
 
500
+ mfp.currItem = item;
 
 
 
 
 
 
 
501
 
502
+ if(!mfp.currTemplate[type]) {
503
+ var markup = mfp.st[type] ? mfp.st[type].markup : false;
 
 
 
 
504
 
505
+ // allows to modify markup
506
+ _mfpTrigger('FirstMarkupParse', markup);
507
 
508
+ if(markup) {
509
+ mfp.currTemplate[type] = $(markup);
510
+ } else {
511
+ // if there is no markup found we just define that template is parsed
512
+ mfp.currTemplate[type] = true;
513
  }
514
  }
515
 
516
+ if(_prevContentType && _prevContentType !== item.type) {
517
+ mfp.container.removeClass('mfp-'+_prevContentType+'-holder');
 
518
  }
 
519
 
520
+ var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]);
521
+ mfp.appendContent(newContent, type);
 
 
 
522
 
523
+ item.preloaded = true;
 
524
 
525
+ _mfpTrigger(CHANGE_EVENT, item);
526
+ _prevContentType = item.type;
527
 
528
+ // Append container back after its content changed
529
+ mfp.container.prepend(mfp.contentContainer);
 
 
 
 
 
 
530
 
531
+ _mfpTrigger('AfterChange');
532
+ },
 
533
 
534
+
535
+ /**
536
+ * Set HTML content of popup
537
+ */
538
+ appendContent: function(newContent, type) {
539
+ mfp.content = newContent;
540
+
541
+ if(newContent) {
542
+ if(mfp.st.showCloseBtn && mfp.st.closeBtnInside &&
543
+ mfp.currTemplate[type] === true) {
544
+ // if there is no markup, we just append close button element inside
545
+ if(!mfp.content.find('.mfp-close').length) {
546
+ mfp.content.append(_getCloseBtn());
547
+ }
548
+ } else {
549
+ mfp.content = newContent;
550
+ }
551
  } else {
552
+ mfp.content = '';
 
553
  }
 
 
 
 
554
 
555
+ _mfpTrigger(BEFORE_APPEND_EVENT);
556
+ mfp.container.addClass('mfp-'+type+'-holder');
557
 
558
+ mfp.contentContainer.append(mfp.content);
559
+ },
 
560
 
 
561
 
562
+ /**
563
+ * Creates Magnific Popup data object based on given data
564
+ * @param {int} index Index of item to parse
565
+ */
566
+ parseEl: function(index) {
567
+ var item = mfp.items[index],
568
+ type;
569
+
570
+ if(item.tagName) {
571
+ item = { el: $(item) };
572
+ } else {
573
+ type = item.type;
574
+ item = { data: item, src: item.src };
575
+ }
576
+
577
+ if(item.el) {
578
+ var types = mfp.types;
579
+
580
+ // check for 'mfp-TYPE' class
581
+ for(var i = 0; i < types.length; i++) {
582
+ if( item.el.hasClass('mfp-'+types[i]) ) {
583
+ type = types[i];
584
+ break;
585
+ }
586
  }
587
+
588
+ item.src = item.el.attr('data-mfp-src');
589
+ if(!item.src) {
590
+ item.src = item.el.attr('href');
591
  }
592
  }
 
 
 
 
593
 
594
+ item.type = type || mfp.st.type || 'inline';
595
+ item.index = index;
596
+ item.parsed = true;
597
+ mfp.items[index] = item;
598
+ _mfpTrigger('ElementParse', item);
599
+
600
+ return mfp.items[index];
601
+ },
602
+
603
+
604
+ /**
605
+ * Initializes single popup or a group of popups
606
+ */
607
+ addGroup: function(el, options) {
608
+ var eHandler = function(e) {
609
+ e.mfpEl = this;
610
+ mfp._openClick(e, el, options);
611
+ };
612
+
613
+ if(!options) {
614
+ options = {};
615
  }
 
 
616
 
617
+ var eName = 'click.magnificPopup';
618
+ options.mainEl = el;
 
 
 
 
619
 
620
+ if(options.items) {
621
+ options.isObj = true;
622
+ el.off(eName).on(eName, eHandler);
623
+ } else {
624
+ options.isObj = false;
625
+ if(options.delegate) {
626
+ el.off(eName).on(eName, options.delegate , eHandler);
627
+ } else {
628
+ options.items = el;
629
+ el.off(eName).on(eName, eHandler);
630
+ }
631
+ }
632
+ },
633
+ _openClick: function(e, el, options) {
634
+ var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick;
635
 
 
 
 
 
636
 
637
+ if(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) {
638
+ return;
 
639
  }
640
 
641
+ var disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn;
642
+
643
+ if(disableOn) {
644
+ if($.isFunction(disableOn)) {
645
+ if( !disableOn.call(mfp) ) {
646
+ return true;
647
+ }
648
+ } else { // else it's number
649
+ if( _window.width() < disableOn ) {
650
+ return true;
651
+ }
652
+ }
653
  }
654
 
655
+ if(e.type) {
656
+ e.preventDefault();
 
 
 
 
657
 
658
+ // This will prevent popup from closing if element is inside and popup is already opened
659
+ if(mfp.isOpen) {
660
+ e.stopPropagation();
661
+ }
662
+ }
663
 
664
+ options.el = $(e.mfpEl);
665
+ if(options.delegate) {
666
+ options.items = el.find(options.delegate);
667
+ }
668
+ mfp.open(options);
669
+ },
670
 
 
 
 
671
 
672
+ /**
673
+ * Updates text on preloader
674
+ */
675
+ updateStatus: function(status, text) {
676
 
677
+ if(mfp.preloader) {
678
+ if(_prevStatus !== status) {
679
+ mfp.container.removeClass('mfp-s-'+_prevStatus);
680
+ }
681
 
682
+ if(!text && status === 'loading') {
683
+ text = mfp.st.tLoading;
684
+ }
 
 
 
685
 
686
+ var data = {
687
+ status: status,
688
+ text: text
689
+ };
690
+ // allows to modify status
691
+ _mfpTrigger('UpdateStatus', data);
692
 
693
+ status = data.status;
694
+ text = data.text;
695
 
696
+ mfp.preloader.html(text);
 
 
697
 
698
+ mfp.preloader.find('a').on('click', function(e) {
699
+ e.stopImmediatePropagation();
700
+ });
701
+
702
+ mfp.container.addClass('mfp-s-'+status);
703
+ _prevStatus = status;
704
  }
705
+ },
706
 
707
+
708
+ /*
709
+ "Private" helpers that aren't private at all
710
+ */
711
+ // Check to close popup or not
712
+ // "target" is an element that was clicked
713
+ _checkIfClose: function(target) {
714
+
715
+ if($(target).hasClass(PREVENT_CLOSE_CLASS)) {
716
+ return;
717
  }
718
 
719
+ var closeOnContent = mfp.st.closeOnContentClick;
720
+ var closeOnBg = mfp.st.closeOnBgClick;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
721
 
722
+ if(closeOnContent && closeOnBg) {
 
723
  return true;
724
+ } else {
 
 
 
725
 
726
+ // We close the popup if click is on close button or on preloader. Or if there is no content.
727
+ if(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) {
728
+ return true;
729
+ }
730
+
731
+ // if click is outside the content
732
+ if( (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) ) {
733
+ if(closeOnBg) {
734
+ // last check, if the clicked element is in DOM, (in case it's removed onclick)
735
+ if( $.contains(document, target) ) {
736
+ return true;
737
  }
738
+ }
739
+ } else if(closeOnContent) {
740
+ return true;
741
+ }
742
+
743
+ }
744
+ return false;
745
+ },
746
+ _addClassToMFP: function(cName) {
747
+ mfp.bgOverlay.addClass(cName);
748
+ mfp.wrap.addClass(cName);
749
+ },
750
+ _removeClassFromMFP: function(cName) {
751
+ this.bgOverlay.removeClass(cName);
752
+ mfp.wrap.removeClass(cName);
753
+ },
754
+ _hasScrollBar: function(winHeight) {
755
+ return ( (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) );
756
+ },
757
+ _setFocus: function() {
758
+ (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus();
759
+ },
760
+ _onFocusIn: function(e) {
761
+ if( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) {
762
+ mfp._setFocus();
763
+ return false;
764
+ }
765
+ },
766
+ _parseMarkup: function(template, values, item) {
767
+ var arr;
768
+ if(item.data) {
769
+ values = $.extend(item.data, values);
770
+ }
771
+ _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] );
772
+
773
+ $.each(values, function(key, value) {
774
+ if(value === undefined || value === false) {
775
+ return true;
776
+ }
777
+ arr = key.split('_');
778
+ if(arr.length > 1) {
779
+ var el = template.find(EVENT_NS + '-'+arr[0]);
780
+
781
+ if(el.length > 0) {
782
+ var attr = arr[1];
783
+ if(attr === 'replaceWith') {
784
+ if(el[0] !== value[0]) {
785
+ el.replaceWith(value);
786
+ }
787
+ } else if(attr === 'img') {
788
+ if(el.is('img')) {
789
+ el.attr('src', value);
790
+ } else {
791
+ el.replaceWith( $('<img>').attr('src', value).attr('class', el.attr('class')) );
792
+ }
793
  } else {
794
+ el.attr(arr[1], value);
795
  }
 
 
796
  }
797
+
798
+ } else {
799
+ template.find(EVENT_NS + '-'+key).html(value);
800
  }
801
+ });
802
+ },
803
 
804
+ _getScrollbarSize: function() {
805
+ // thx David
806
+ if(mfp.scrollbarSize === undefined) {
807
+ var scrollDiv = document.createElement("div");
808
+ scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';
809
+ document.body.appendChild(scrollDiv);
810
+ mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;
811
+ document.body.removeChild(scrollDiv);
812
+ }
813
+ return mfp.scrollbarSize;
 
 
 
 
814
  }
 
 
 
 
815
 
816
+ }; /* MagnificPopup core prototype end */
817
 
818
 
819
 
 
 
 
 
 
 
 
820
 
821
+ /**
822
+ * Public static functions
823
+ */
824
+ $.magnificPopup = {
825
+ instance: null,
826
+ proto: MagnificPopup.prototype,
827
+ modules: [],
 
 
828
 
829
+ open: function(options, index) {
830
+ _checkInstance();
 
 
831
 
832
+ if(!options) {
833
+ options = {};
834
+ } else {
835
+ options = $.extend(true, {}, options);
836
+ }
837
 
838
+ options.isObj = true;
839
+ options.index = index || 0;
840
+ return this.instance.open(options);
841
+ },
 
 
 
842
 
843
+ close: function() {
844
+ return $.magnificPopup.instance && $.magnificPopup.instance.close();
845
+ },
846
 
847
+ registerModule: function(name, module) {
848
+ if(module.options) {
849
+ $.magnificPopup.defaults[name] = module.options;
850
+ }
851
+ $.extend(this.proto, module.proto);
852
+ this.modules.push(name);
853
+ },
854
 
855
+ defaults: {
856
 
857
+ // Info about options is in docs:
858
+ // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options
859
 
860
+ disableOn: 0,
861
 
862
+ key: null,
863
 
864
+ midClick: false,
 
 
865
 
866
+ mainClass: '',
867
 
868
+ preloader: true,
869
 
870
+ focus: '', // CSS selector of input to focus after popup is opened
871
 
872
+ closeOnContentClick: false,
873
 
874
+ closeOnBgClick: true,
875
 
876
+ closeBtnInside: true,
 
 
877
 
878
+ showCloseBtn: true,
 
 
 
 
879
 
880
+ enableEscapeKey: true,
881
 
882
+ modal: false,
883
 
884
+ alignTop: false,
885
 
886
+ removalDelay: 0,
887
 
888
+ prependTo: null,
 
889
 
890
+ fixedContentPos: 'auto',
891
 
892
+ fixedBgPos: 'auto',
893
 
894
+ overflowY: 'auto',
 
895
 
896
+ closeMarkup: '<button title="%title%" type="button" class="mfp-close">&#215;</button>',
897
 
898
+ tClose: 'Close (Esc)',
 
899
 
900
+ tLoading: 'Loading...',
 
 
 
901
 
902
+ autoFocusLast: true
 
 
 
 
 
 
 
 
 
 
 
 
 
903
 
 
 
 
 
 
 
 
 
 
 
 
 
 
904
  }
905
+ };
906
 
 
 
 
 
 
907
 
908
 
909
+ $.fn.magnificPopup = function(options) {
910
+ _checkInstance();
 
 
 
911
 
912
+ var jqEl = $(this);
913
 
914
+ // We call some API method of first param is a string
915
+ if (typeof options === "string" ) {
916
 
917
+ if(options === 'open') {
918
+ var items,
919
+ itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup,
920
+ index = parseInt(arguments[1], 10) || 0;
921
 
922
+ if(itemOpts.items) {
923
+ items = itemOpts.items[index];
924
+ } else {
925
+ items = jqEl;
926
+ if(itemOpts.delegate) {
927
+ items = items.find(itemOpts.delegate);
928
+ }
929
+ items = items.eq( index );
930
+ }
931
+ mfp._openClick({mfpEl:items}, jqEl, itemOpts);
932
+ } else {
933
+ if(mfp.isOpen)
934
+ mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1));
935
+ }
936
 
937
+ } else {
938
+ // clone options obj
939
+ options = $.extend(true, {}, options);
940
 
941
+ /*
942
+ * As Zepto doesn't support .data() method for objects
943
+ * and it works only in normal browsers
944
+ * we assign "options" object directly to the DOM element. FTW!
945
+ */
946
+ if(_isJQ) {
947
+ jqEl.data('magnificPopup', options);
948
+ } else {
949
+ jqEl[0].magnificPopup = options;
950
+ }
951
 
952
+ mfp.addGroup(jqEl, options);
953
 
 
 
 
 
 
 
 
 
954
  }
955
+ return jqEl;
956
  };
957
 
958
+ /*>>core*/
 
 
 
 
 
 
959
 
960
+ /*>>inline*/
 
961
 
962
+ var INLINE_NS = 'inline',
963
+ _hiddenClass,
964
+ _inlinePlaceholder,
965
+ _lastInlineElement,
966
+ _putInlineElementsBack = function() {
967
+ if(_lastInlineElement) {
968
+ _inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach();
969
+ _lastInlineElement = null;
970
+ }
971
+ };
972
+
973
+ $.magnificPopup.registerModule(INLINE_NS, {
974
+ options: {
975
+ hiddenClass: 'hide', // will be appended with `mfp-` prefix
976
+ markup: '',
977
+ tNotFound: 'Content not found'
978
  },
979
+ proto: {
980
 
981
+ initInline: function() {
982
+ mfp.types.push(INLINE_NS);
983
 
984
+ _mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() {
985
+ _putInlineElementsBack();
986
+ });
987
+ },
988
 
989
+ getInline: function(item, template) {
 
 
990
 
991
+ _putInlineElementsBack();
992
+
993
+ if(item.src) {
994
+ var inlineSt = mfp.st.inline,
995
+ el = $(item.src);
996
 
997
+ if(el.length) {
998
+
999
+ // If target element has parent - we replace it with placeholder and put it back after popup is closed
1000
+ var parent = el[0].parentNode;
1001
+ if(parent && parent.tagName) {
1002
+ if(!_inlinePlaceholder) {
1003
+ _hiddenClass = inlineSt.hiddenClass;
1004
+ _inlinePlaceholder = _getEl(_hiddenClass);
1005
+ _hiddenClass = 'mfp-'+_hiddenClass;
1006
+ }
1007
+ // replace target inline element with placeholder
1008
+ _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);
1009
  }
1010
+
1011
+ mfp.updateStatus('ready');
1012
+ } else {
1013
+ mfp.updateStatus('error', inlineSt.tNotFound);
1014
+ el = $('<div>');
1015
  }
1016
 
1017
+ item.inlineElement = el;
1018
+ return el;
 
 
1019
  }
1020
 
1021
+ mfp.updateStatus('ready');
1022
+ mfp._parseMarkup(template, {}, item);
1023
+ return template;
1024
  }
 
 
 
 
1025
  }
1026
+ });
 
1027
 
1028
+ /*>>inline*/
1029
 
1030
+ /*>>ajax*/
1031
+ var AJAX_NS = 'ajax',
1032
+ _ajaxCur,
1033
+ _removeAjaxCursor = function() {
1034
+ if(_ajaxCur) {
1035
+ $(document.body).removeClass(_ajaxCur);
1036
+ }
1037
+ },
1038
+ _destroyAjaxRequest = function() {
1039
+ _removeAjaxCursor();
1040
+ if(mfp.req) {
1041
+ mfp.req.abort();
1042
+ }
1043
+ };
1044
 
1045
+ $.magnificPopup.registerModule(AJAX_NS, {
1046
 
1047
+ options: {
1048
+ settings: null,
1049
+ cursor: 'mfp-ajax-cur',
1050
+ tError: '<a href="%url%">The content</a> could not be loaded.'
1051
+ },
1052
 
1053
+ proto: {
1054
+ initAjax: function() {
1055
+ mfp.types.push(AJAX_NS);
1056
+ _ajaxCur = mfp.st.ajax.cursor;
1057
 
1058
+ _mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest);
1059
+ _mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest);
1060
+ },
1061
+ getAjax: function(item) {
1062
 
1063
+ if(_ajaxCur) {
1064
+ $(document.body).addClass(_ajaxCur);
1065
+ }
1066
 
1067
+ mfp.updateStatus('loading');
1068
 
1069
+ var opts = $.extend({
1070
+ url: item.src,
1071
+ success: function(data, textStatus, jqXHR) {
1072
+ var temp = {
1073
+ data:data,
1074
+ xhr:jqXHR
1075
+ };
1076
 
1077
+ _mfpTrigger('ParseAjax', temp);
1078
 
1079
+ mfp.appendContent( $(temp.data), AJAX_NS );
1080
 
1081
+ item.finished = true;
1082
 
1083
+ _removeAjaxCursor();
1084
 
1085
+ mfp._setFocus();
1086
 
1087
+ setTimeout(function() {
1088
+ mfp.wrap.addClass(READY_CLASS);
1089
+ }, 16);
1090
 
1091
+ mfp.updateStatus('ready');
1092
 
1093
+ _mfpTrigger('AjaxContentAdded');
1094
+ },
1095
+ error: function() {
1096
+ _removeAjaxCursor();
1097
+ item.finished = item.loadError = true;
1098
+ mfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src));
1099
+ }
1100
+ }, mfp.st.ajax.settings);
1101
 
1102
+ mfp.req = $.ajax(opts);
1103
 
1104
+ return '';
1105
+ }
1106
  }
1107
+ });
 
1108
 
1109
+ /*>>ajax*/
1110
 
1111
+ /*>>image*/
1112
+ var _imgInterval,
1113
+ _getTitle = function(item) {
1114
+ if(item.data && item.data.title !== undefined)
1115
+ return item.data.title;
1116
 
1117
+ var src = mfp.st.image.titleSrc;
1118
 
1119
+ if(src) {
1120
+ if($.isFunction(src)) {
1121
+ return src.call(mfp, item);
1122
+ } else if(item.el) {
1123
+ return item.el.attr(src) || '';
1124
+ }
1125
+ }
1126
+ return '';
1127
+ };
1128
 
1129
+ $.magnificPopup.registerModule('image', {
1130
+
1131
+ options: {
1132
+ markup: '<div class="mfp-figure">'+
1133
+ '<div class="mfp-close"></div>'+
1134
+ '<figure>'+
1135
+ '<div class="mfp-img"></div>'+
1136
+ '<figcaption>'+
1137
+ '<div class="mfp-bottom-bar">'+
1138
+ '<div class="mfp-title"></div>'+
1139
+ '<div class="mfp-counter"></div>'+
1140
+ '</div>'+
1141
+ '</figcaption>'+
1142
+ '</figure>'+
1143
+ '</div>',
1144
+ cursor: 'mfp-zoom-out-cur',
1145
+ titleSrc: 'title',
1146
+ verticalFit: true,
1147
+ tError: '<a href="%url%">The image</a> could not be loaded.'
1148
+ },
1149
 
1150
+ proto: {
1151
+ initImage: function() {
1152
+ var imgSt = mfp.st.image,
1153
+ ns = '.image';
1154
 
1155
+ mfp.types.push('image');
 
 
 
 
1156
 
1157
+ _mfpOn(OPEN_EVENT+ns, function() {
1158
+ if(mfp.currItem.type === 'image' && imgSt.cursor) {
1159
+ $(document.body).addClass(imgSt.cursor);
1160
+ }
1161
+ });
1162
 
1163
+ _mfpOn(CLOSE_EVENT+ns, function() {
1164
+ if(imgSt.cursor) {
1165
+ $(document.body).removeClass(imgSt.cursor);
1166
+ }
1167
+ _window.off('resize' + EVENT_NS);
1168
+ });
 
 
 
1169
 
1170
+ _mfpOn('Resize'+ns, mfp.resizeImage);
1171
+ if(mfp.isLowIE) {
1172
+ _mfpOn('AfterChange', mfp.resizeImage);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1173
  }
1174
+ },
1175
+ resizeImage: function() {
1176
+ var item = mfp.currItem;
1177
+ if(!item || !item.img) return;
1178
+
1179
+ if(mfp.st.image.verticalFit) {
1180
+ var decr = 0;
1181
+ // fix box-sizing in ie7/8
1182
+ if(mfp.isLowIE) {
1183
+ decr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10);
1184
+ }
1185
+ item.img.css('max-height', mfp.wH-decr);
1186
  }
1187
+ },
1188
+ _onImageHasSize: function(item) {
1189
+ if(item.img) {
1190
 
1191
+ item.hasSize = true;
 
 
 
 
 
 
 
1192
 
1193
+ if(_imgInterval) {
1194
+ clearInterval(_imgInterval);
1195
+ }
 
 
 
 
 
 
 
 
 
 
1196
 
1197
+ item.isCheckingImgSize = false;
 
 
 
 
1198
 
1199
+ _mfpTrigger('ImageHasSize', item);
1200
 
1201
+ if(item.imgHidden) {
1202
+ if(mfp.content)
1203
+ mfp.content.removeClass('mfp-loading');
 
 
 
1204
 
1205
+ item.imgHidden = false;
1206
+ }
1207
 
1208
+ }
1209
+ },
 
 
1210
 
1211
+ /**
1212
+ * Function that loops until the image has size to display elements that rely on it asap
1213
+ */
1214
+ findImageSize: function(item) {
1215
 
1216
+ var counter = 0,
1217
+ img = item.img[0],
1218
+ mfpSetInterval = function(delay) {
1219
+
1220
+ if(_imgInterval) {
1221
+ clearInterval(_imgInterval);
 
 
1222
  }
1223
+ // decelerating interval that checks for size of an image
1224
+ _imgInterval = setInterval(function() {
1225
+ if(img.naturalWidth > 0) {
1226
+ mfp._onImageHasSize(item);
1227
+ return;
1228
+ }
1229
+
1230
+ if(counter > 200) {
1231
+ clearInterval(_imgInterval);
1232
+ }
1233
+
1234
+ counter++;
1235
+ if(counter === 3) {
1236
+ mfpSetInterval(10);
1237
+ } else if(counter === 40) {
1238
+ mfpSetInterval(50);
1239
+ } else if(counter === 100) {
1240
+ mfpSetInterval(500);
1241
+ }
1242
+ }, delay);
1243
+ };
1244
+
1245
+ mfpSetInterval(1);
1246
+ },
1247
+
1248
+ getImage: function(item, template) {
1249
+
1250
+ var guard = 0,
1251
 
1252
+ // image load complete handler
1253
+ onLoadComplete = function() {
1254
+ if(item) {
1255
+ if (item.img[0].complete) {
1256
+ item.img.off('.mfploader');
1257
 
1258
+ if(item === mfp.currItem){
1259
+ mfp._onImageHasSize(item);
 
 
 
 
 
 
 
 
1260
 
1261
+ mfp.updateStatus('ready');
1262
+ }
1263
 
1264
+ item.hasSize = true;
1265
+ item.loaded = true;
1266
 
1267
+ _mfpTrigger('ImageLoadComplete');
1268
 
1269
+ }
1270
+ else {
1271
+ // if image complete check fails 200 times (20 sec), we assume that there was an error.
1272
+ guard++;
1273
+ if(guard < 200) {
1274
+ setTimeout(onLoadComplete,100);
1275
+ } else {
1276
+ onLoadError();
1277
+ }
1278
+ }
1279
+ }
1280
+ },
1281
+
1282
+ // image error handler
1283
+ onLoadError = function() {
1284
+ if(item) {
1285
  item.img.off('.mfploader');
 
1286
  if(item === mfp.currItem){
1287
  mfp._onImageHasSize(item);
1288
+ mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );
 
1289
  }
1290
 
1291
  item.hasSize = true;
1292
  item.loaded = true;
1293
+ item.loadError = true;
 
 
 
 
 
 
 
 
 
 
 
1294
  }
1295
+ },
1296
+ imgSt = mfp.st.image;
1297
 
 
 
 
 
 
 
 
 
1298
 
1299
+ var el = template.find('.mfp-img');
1300
+ if(el.length) {
1301
+ var img = document.createElement('img');
1302
+ img.className = 'mfp-img';
1303
+ if(item.el && item.el.find('img').length) {
1304
+ img.alt = item.el.find('img').attr('alt');
1305
  }
1306
+ item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError);
1307
+ img.src = item.src;
1308
 
1309
+ // without clone() "error" event is not firing when IMG is replaced by new IMG
1310
+ // TODO: find a way to avoid such cloning
1311
+ if(el.is('img')) {
1312
+ item.img = item.img.clone();
1313
+ }
1314
 
1315
+ img = item.img[0];
1316
+ if(img.naturalWidth > 0) {
1317
+ item.hasSize = true;
1318
+ } else if(!img.width) {
1319
+ item.hasSize = false;
1320
+ }
1321
  }
 
 
1322
 
1323
+ mfp._parseMarkup(template, {
1324
+ title: _getTitle(item),
1325
+ img_replaceWith: item.img
1326
+ }, item);
 
1327
 
1328
+ mfp.resizeImage();
 
 
 
 
 
 
1329
 
1330
+ if(item.hasSize) {
1331
+ if(_imgInterval) clearInterval(_imgInterval);
 
 
1332
 
1333
+ if(item.loadError) {
1334
+ template.addClass('mfp-loading');
1335
+ mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );
1336
+ } else {
1337
+ template.removeClass('mfp-loading');
1338
+ mfp.updateStatus('ready');
1339
+ }
1340
+ return template;
1341
+ }
1342
 
1343
+ mfp.updateStatus('loading');
1344
+ item.loading = true;
1345
 
1346
+ if(!item.hasSize) {
1347
+ item.imgHidden = true;
1348
  template.addClass('mfp-loading');
1349
+ mfp.findImageSize(item);
 
 
 
1350
  }
1351
+
1352
  return template;
1353
  }
 
 
 
 
 
 
 
 
 
 
 
1354
  }
1355
+ });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1356
 
1357
+ /*>>image*/
1358
 
1359
+ /*>>zoom*/
1360
+ var hasMozTransform,
1361
+ getHasMozTransform = function() {
1362
+ if(hasMozTransform === undefined) {
1363
+ hasMozTransform = document.createElement('p').style.MozTransform !== undefined;
1364
+ }
1365
+ return hasMozTransform;
1366
+ };
1367
 
1368
+ $.magnificPopup.registerModule('zoom', {
1369
 
1370
+ options: {
1371
+ enabled: false,
1372
+ easing: 'ease-in-out',
1373
+ duration: 300,
1374
+ opener: function(element) {
1375
+ return element.is('img') ? element : element.find('img');
 
1376
  }
1377
+ },
1378
 
1379
+ proto: {
 
 
 
 
 
 
 
 
 
 
 
1380
 
1381
+ initZoom: function() {
1382
+ var zoomSt = mfp.st.zoom,
1383
+ ns = '.zoom',
1384
+ image;
1385
 
1386
+ if(!zoomSt.enabled || !mfp.supportsTransition) {
1387
+ return;
1388
+ }
 
 
 
 
 
1389
 
1390
+ var duration = zoomSt.duration,
1391
+ getElToAnimate = function(image) {
1392
+ var newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'),
1393
+ transition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing,
1394
+ cssObj = {
1395
+ position: 'fixed',
1396
+ zIndex: 9999,
1397
+ left: 0,
1398
+ top: 0,
1399
+ '-webkit-backface-visibility': 'hidden'
1400
+ },
1401
+ t = 'transition';
1402
+
1403
+ cssObj['-webkit-'+t] = cssObj['-moz-'+t] = cssObj['-o-'+t] = cssObj[t] = transition;
1404
+
1405
+ newImg.css(cssObj);
1406
+ return newImg;
1407
+ },
1408
+ showMainContent = function() {
1409
+ mfp.content.css('visibility', 'visible');
1410
+ },
1411
+ openTimeout,
1412
+ animatedImg;
1413
+
1414
+ _mfpOn('BuildControls'+ns, function() {
1415
+ if(mfp._allowZoom()) {
1416
+
1417
+ clearTimeout(openTimeout);
1418
+ mfp.content.css('visibility', 'hidden');
1419
+
1420
+ // Basically, all code below does is clones existing image, puts in on top of the current one and animated it
1421
 
1422
+ image = mfp._getItemToZoom();
 
1423
 
1424
+ if(!image) {
1425
+ showMainContent();
1426
+ return;
1427
+ }
1428
 
1429
+ animatedImg = getElToAnimate(image);
 
 
 
1430
 
1431
+ animatedImg.css( mfp._getOffset() );
 
 
1432
 
1433
+ mfp.wrap.append(animatedImg);
1434
 
 
 
1435
  openTimeout = setTimeout(function() {
1436
+ animatedImg.css( mfp._getOffset( true ) );
1437
+ openTimeout = setTimeout(function() {
1438
 
1439
+ showMainContent();
1440
 
1441
+ setTimeout(function() {
1442
+ animatedImg.remove();
1443
+ image = animatedImg = null;
1444
+ _mfpTrigger('ZoomAnimationEnded');
1445
+ }, 16); // avoid blink when switching images
1446
 
1447
+ }, duration); // this timeout equals animation duration
1448
 
1449
+ }, 16); // by adding this timeout we avoid short glitch at the beginning of animation
1450
 
1451
 
1452
+ // Lots of timeouts...
1453
+ }
1454
+ });
1455
+ _mfpOn(BEFORE_CLOSE_EVENT+ns, function() {
1456
+ if(mfp._allowZoom()) {
1457
 
1458
+ clearTimeout(openTimeout);
1459
 
1460
+ mfp.st.removalDelay = duration;
1461
 
 
 
1462
  if(!image) {
1463
+ image = mfp._getItemToZoom();
1464
+ if(!image) {
1465
+ return;
1466
+ }
1467
+ animatedImg = getElToAnimate(image);
1468
  }
1469
+
1470
+ animatedImg.css( mfp._getOffset(true) );
1471
+ mfp.wrap.append(animatedImg);
1472
+ mfp.content.css('visibility', 'hidden');
1473
+
1474
+ setTimeout(function() {
1475
+ animatedImg.css( mfp._getOffset() );
1476
+ }, 16);
1477
  }
 
 
 
 
 
 
 
 
 
 
1478
 
1479
+ });
1480
 
1481
+ _mfpOn(CLOSE_EVENT+ns, function() {
1482
+ if(mfp._allowZoom()) {
1483
+ showMainContent();
1484
+ if(animatedImg) {
1485
+ animatedImg.remove();
1486
+ }
1487
+ image = null;
1488
  }
1489
+ });
1490
+ },
 
 
1491
 
1492
+ _allowZoom: function() {
1493
+ return mfp.currItem.type === 'image';
1494
+ },
1495
 
1496
+ _getItemToZoom: function() {
1497
+ if(mfp.currItem.hasSize) {
1498
+ return mfp.currItem.img;
1499
+ } else {
1500
+ return false;
1501
+ }
1502
+ },
1503
 
1504
+ // Get element postion relative to viewport
1505
+ _getOffset: function(isLarge) {
1506
+ var el;
1507
+ if(isLarge) {
1508
+ el = mfp.currItem.img;
1509
+ } else {
1510
+ el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem);
1511
+ }
1512
 
1513
+ var offset = el.offset();
1514
+ var paddingTop = parseInt(el.css('padding-top'),10);
1515
+ var paddingBottom = parseInt(el.css('padding-bottom'),10);
1516
+ offset.top -= ( $(window).scrollTop() - paddingTop );
1517
 
1518
 
1519
+ /*
 
 
1520
 
1521
+ Animating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa.
 
 
 
 
 
1522
 
1523
+ */
1524
+ var obj = {
1525
+ width: el.width(),
1526
+ // fix Zepto height+padding issue
1527
+ height: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop
1528
+ };
1529
+
1530
+ // I hate to do this, but there is no another option
1531
+ if( getHasMozTransform() ) {
1532
+ obj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)';
1533
+ } else {
1534
+ obj.left = offset.left;
1535
+ obj.top = offset.top;
1536
+ }
1537
+ return obj;
1538
  }
1539
+
1540
  }
1541
+ });
1542
 
 
 
1543
 
1544
 
1545
+ /*>>zoom*/
1546
 
1547
+ /*>>iframe*/
1548
 
1549
+ var IFRAME_NS = 'iframe',
1550
+ _emptyPage = '//about:blank',
1551
 
1552
+ _fixIframeBugs = function(isShowing) {
1553
+ if(mfp.currTemplate[IFRAME_NS]) {
1554
+ var el = mfp.currTemplate[IFRAME_NS].find('iframe');
1555
+ if(el.length) {
1556
+ // reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug
1557
+ if(!isShowing) {
1558
+ el[0].src = _emptyPage;
1559
+ }
 
 
 
1560
 
1561
+ // IE8 black screen bug fix
1562
+ if(mfp.isIE8) {
1563
+ el.css('display', isShowing ? 'block' : 'none');
1564
+ }
1565
  }
1566
  }
1567
+ };
 
1568
 
1569
+ $.magnificPopup.registerModule(IFRAME_NS, {
1570
 
1571
+ options: {
1572
+ markup: '<div class="mfp-iframe-scaler">'+
1573
+ '<div class="mfp-close"></div>'+
1574
+ '<iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe>'+
1575
+ '</div>',
1576
 
1577
+ srcAction: 'iframe_src',
1578
 
1579
+ // we don't care and support only one default type of URL by default
1580
+ patterns: {
1581
+ youtube: {
1582
+ index: 'youtube.com',
1583
+ id: 'v=',
1584
+ src: '//www.youtube.com/embed/%id%?autoplay=1'
1585
+ },
1586
+ vimeo: {
1587
+ index: 'vimeo.com/',
1588
+ id: '/',
1589
+ src: '//player.vimeo.com/video/%id%?autoplay=1'
1590
+ },
1591
+ gmaps: {
1592
+ index: '//maps.google.',
1593
+ src: '%id%&output=embed'
1594
+ }
1595
  }
1596
+ },
1597
+
1598
+ proto: {
1599
+ initIframe: function() {
1600
+ mfp.types.push(IFRAME_NS);
1601
+
1602
+ _mfpOn('BeforeChange', function(e, prevType, newType) {
1603
+ if(prevType !== newType) {
1604
+ if(prevType === IFRAME_NS) {
1605
+ _fixIframeBugs(); // iframe if removed
1606
+ } else if(newType === IFRAME_NS) {
1607
+ _fixIframeBugs(true); // iframe is showing
1608
+ }
1609
+ }// else {
 
1610
  // iframe source is switched, don't do anything
1611
+ //}
1612
+ });
1613
 
1614
+ _mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function() {
1615
+ _fixIframeBugs();
1616
+ });
1617
+ },
1618
 
1619
+ getIframe: function(item, template) {
1620
+ var embedSrc = item.src;
1621
+ var iframeSt = mfp.st.iframe;
1622
+
1623
+ $.each(iframeSt.patterns, function() {
1624
+ if(embedSrc.indexOf( this.index ) > -1) {
1625
+ if(this.id) {
1626
+ if(typeof this.id === 'string') {
1627
+ embedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length);
1628
+ } else {
1629
+ embedSrc = this.id.call( this, embedSrc );
1630
+ }
1631
  }
1632
+ embedSrc = this.src.replace('%id%', embedSrc );
1633
+ return false; // break;
1634
  }
1635
+ });
1636
+
1637
+ var dataObj = {};
1638
+ if(iframeSt.srcAction) {
1639
+ dataObj[iframeSt.srcAction] = embedSrc;
1640
  }
1641
+ mfp._parseMarkup(template, dataObj, item);
 
 
 
 
 
 
1642
 
1643
+ mfp.updateStatus('ready');
1644
 
1645
+ return template;
1646
+ }
1647
  }
1648
+ });
 
1649
 
1650
 
1651
 
1652
+ /*>>iframe*/
1653
 
1654
+ /*>>gallery*/
1655
+ /**
1656
+ * Get looped index depending on number of slides
1657
+ */
1658
+ var _getLoopedId = function(index) {
1659
+ var numSlides = mfp.items.length;
1660
+ if(index > numSlides - 1) {
1661
+ return index - numSlides;
1662
+ } else if(index < 0) {
1663
+ return numSlides + index;
1664
+ }
1665
+ return index;
1666
+ },
1667
+ _replaceCurrTotal = function(text, curr, total) {
1668
+ return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total);
1669
+ };
1670
+
1671
+ $.magnificPopup.registerModule('gallery', {
1672
 
1673
+ options: {
1674
+ enabled: false,
1675
+ arrowMarkup: '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',
1676
+ preload: [0,2],
1677
+ navigateByImgClick: true,
1678
+ arrows: true,
1679
+
1680
+ tPrev: 'Previous (Left arrow key)',
1681
+ tNext: 'Next (Right arrow key)',
1682
+ tCounter: '%curr% of %total%'
1683
+ },
1684
 
1685
+ proto: {
1686
+ initGallery: function() {
 
 
 
 
1687
 
1688
+ var gSt = mfp.st.gallery,
1689
+ ns = '.mfp-gallery';
 
 
1690
 
1691
+ mfp.direction = true; // true - next, false - prev
 
1692
 
1693
+ if(!gSt || !gSt.enabled ) return false;
 
 
1694
 
1695
+ _wrapClasses += ' mfp-gallery';
 
 
1696
 
1697
+ _mfpOn(OPEN_EVENT+ns, function() {
1698
 
1699
+ if(gSt.navigateByImgClick) {
1700
+ mfp.wrap.on('click'+ns, '.mfp-img', function() {
1701
+ if(mfp.items.length > 1) {
1702
+ mfp.next();
1703
+ return false;
1704
+ }
1705
+ });
1706
+ }
1707
 
1708
+ _document.on('keydown'+ns, function(e) {
1709
+ if (e.keyCode === 37) {
1710
+ mfp.prev();
1711
+ } else if (e.keyCode === 39) {
1712
  mfp.next();
 
1713
  }
1714
  });
1715
+ });
1716
 
1717
+ _mfpOn('UpdateStatus'+ns, function(e, data) {
1718
+ if(data.text) {
1719
+ data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length);
 
 
1720
  }
1721
  });
 
1722
 
1723
+ _mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item) {
1724
+ var l = mfp.items.length;
1725
+ values.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : '';
1726
+ });
 
1727
 
1728
+ _mfpOn('BuildControls' + ns, function() {
1729
+ if(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) {
1730
+ var markup = gSt.arrowMarkup,
1731
+ arrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS),
1732
+ arrowRight = mfp.arrowRight = $( markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right') ).addClass(PREVENT_CLOSE_CLASS);
1733
+
1734
+ arrowLeft.click(function() {
1735
+ mfp.prev();
1736
+ });
1737
+ arrowRight.click(function() {
1738
+ mfp.next();
1739
+ });
1740
 
1741
+ mfp.container.append(arrowLeft.add(arrowRight));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1742
  }
1743
+ });
1744
 
1745
+ _mfpOn(CHANGE_EVENT+ns, function() {
1746
+ if(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout);
 
1747
 
1748
+ mfp._preloadTimeout = setTimeout(function() {
1749
+ mfp.preloadNearbyImages();
1750
+ mfp._preloadTimeout = null;
1751
+ }, 16);
1752
+ });
1753
 
 
 
 
 
 
1754
 
1755
+ _mfpOn(CLOSE_EVENT+ns, function() {
1756
+ _document.off(ns);
1757
+ mfp.wrap.off('click'+ns);
1758
+ mfp.arrowRight = mfp.arrowLeft = null;
1759
+ });
1760
 
1761
+ },
1762
+ next: function() {
1763
+ mfp.direction = true;
1764
+ mfp.index = _getLoopedId(mfp.index + 1);
1765
+ mfp.updateItemHTML();
1766
+ },
1767
+ prev: function() {
1768
+ mfp.direction = false;
1769
+ mfp.index = _getLoopedId(mfp.index - 1);
1770
+ mfp.updateItemHTML();
1771
+ },
1772
+ goTo: function(newIndex) {
1773
+ mfp.direction = (newIndex >= mfp.index);
1774
+ mfp.index = newIndex;
1775
+ mfp.updateItemHTML();
1776
+ },
1777
+ preloadNearbyImages: function() {
1778
+ var p = mfp.st.gallery.preload,
1779
+ preloadBefore = Math.min(p[0], mfp.items.length),
1780
+ preloadAfter = Math.min(p[1], mfp.items.length),
1781
+ i;
1782
+
1783
+ for(i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) {
1784
+ mfp._preloadItem(mfp.index+i);
1785
  }
1786
+ for(i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) {
1787
+ mfp._preloadItem(mfp.index-i);
1788
+ }
1789
+ },
1790
+ _preloadItem: function(index) {
1791
+ index = _getLoopedId(index);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1792
 
1793
+ if(mfp.items[index].preloaded) {
1794
+ return;
1795
+ }
1796
 
1797
+ var item = mfp.items[index];
1798
+ if(!item.parsed) {
1799
+ item = mfp.parseEl( index );
1800
+ }
1801
 
1802
+ _mfpTrigger('LazyLoad', item);
1803
 
1804
+ if(item.type === 'image') {
1805
+ item.img = $('<img class="mfp-img" />').on('load.mfploader', function() {
1806
+ item.hasSize = true;
1807
+ }).on('error.mfploader', function() {
1808
+ item.hasSize = true;
1809
+ item.loadError = true;
1810
+ _mfpTrigger('LazyLoadError', item);
1811
+ }).attr('src', item.src);
1812
+ }
1813
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1814
 
1815
+ item.preloaded = true;
 
 
 
1816
  }
1817
  }
1818
  });
 
 
 
 
 
1819
 
1820
+ /*>>gallery*/
1821
 
1822
+ /*>>retina*/
1823
 
1824
+ var RETINA_NS = 'retina';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1825
 
1826
+ $.magnificPopup.registerModule(RETINA_NS, {
1827
+ options: {
1828
+ replaceSrc: function(item) {
1829
+ return item.src.replace(/\.\w+$/, function(m) { return '@2x' + m; });
1830
+ },
1831
+ ratio: 1 // Function or number. Set to 1 to disable.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1832
  },
1833
+ proto: {
1834
+ initRetina: function() {
1835
+ if(window.devicePixelRatio > 1) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1836
 
1837
+ var st = mfp.st.retina,
1838
+ ratio = st.ratio;
 
1839
 
1840
+ ratio = !isNaN(ratio) ? ratio : ratio();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1841
 
1842
+ if(ratio > 1) {
1843
+ _mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item) {
1844
+ item.img.css({
1845
+ 'max-width': item.img[0].naturalWidth / ratio,
1846
+ 'width': '100%'
1847
+ });
1848
+ });
1849
+ _mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item) {
1850
+ item.src = st.replaceSrc(item, ratio);
1851
+ });
1852
+ }
1853
  }
 
 
 
1854
 
1855
+ }
1856
+ }
1857
+ });
 
 
1858
 
1859
+ /*>>retina*/
1860
+ _checkInstance(); }));
assets/js/jquery.magnific-popup.min.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! Magnific Popup - v1.0.0 - 2015-09-17
2
- * http://dimsemenov.com/plugins/magnific-popup/
3
- * Copyright (c) 2015 Dmitry Semenov; */
4
- !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isIE7=-1!==c.indexOf("MSIE 7."),b.isIE8=-1!==c.indexOf("MSIE 8."),b.isLowIE=b.isIE7||b.isIE8,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e<h.length;e++)if(g=h[e],g.parsed&&(g=g.el[0]),g===c.el[0]){b.index=e;break}}else b.items=a.isArray(c.items)?c.items:[c.items],b.index=c.index||0;if(b.isOpen)return void b.updateItemHTML();b.types=[],f="",c.mainEl&&c.mainEl.length?b.ev=c.mainEl.eq(0):b.ev=d,c.key?(b.popupsCache[c.key]||(b.popupsCache[c.key]={}),b.currTemplate=b.popupsCache[c.key]):b.currTemplate={},b.st=a.extend(!0,{},a.magnificPopup.defaults,c),b.fixedContentPos="auto"===b.st.fixedContentPos?!b.probablyMobile:b.st.fixedContentPos,b.st.modal&&(b.st.closeOnContentClick=!1,b.st.closeOnBgClick=!1,b.st.showCloseBtn=!1,b.st.enableEscapeKey=!1),b.bgOverlay||(b.bgOverlay=x("bg").on("click"+p,function(){b.close()}),b.wrap=x("wrap").attr("tabindex",-1).on("click"+p,function(a){b._checkIfClose(a.target)&&b.close()}),b.container=x("container",b.wrap)),b.contentContainer=x("content"),b.st.preloader&&(b.preloader=x("preloader",b.container,b.st.tLoading));var i=a.magnificPopup.modules;for(e=0;e<i.length;e++){var j=i[e];j=j.charAt(0).toUpperCase()+j.slice(1),b["init"+j].call(b)}y("BeforeOpen"),b.st.showCloseBtn&&(b.st.closeBtnInside?(w(l,function(a,b,c,d){c.close_replaceWith=z(d.type)}),f+=" mfp-close-btn-in"):b.wrap.append(z())),b.st.alignTop&&(f+=" mfp-align-top"),b.fixedContentPos?b.wrap.css({overflow:b.st.overflowY,overflowX:"hidden",overflowY:b.st.overflowY}):b.wrap.css({top:v.scrollTop(),position:"absolute"}),(b.st.fixedBgPos===!1||"auto"===b.st.fixedBgPos&&!b.fixedContentPos)&&b.bgOverlay.css({height:d.height(),position:"absolute"}),b.st.enableEscapeKey&&d.on("keyup"+p,function(a){27===a.keyCode&&b.close()}),v.on("resize"+p,function(){b.updateSize()}),b.st.closeOnContentClick||(f+=" mfp-auto-cursor"),f&&b.wrap.addClass(f);var k=b.wH=v.height(),n={};if(b.fixedContentPos&&b._hasScrollBar(k)){var o=b._getScrollbarSize();o&&(n.marginRight=o)}b.fixedContentPos&&(b.isIE7?a("body, html").css("overflow","hidden"):n.overflow="hidden");var r=b.st.mainClass;return b.isIE7&&(r+=" mfp-ie7"),r&&b._addClassToMFP(r),b.updateItemHTML(),y("BuildControls"),a("html").css(n),b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo||a(document.body)),b._lastFocusedEl=document.activeElement,setTimeout(function(){b.content?(b._addClassToMFP(q),b._setFocus()):b.bgOverlay.addClass(q),d.on("focusin"+p,b._onFocusIn)},16),b.isOpen=!0,b.updateSize(k),y(m),c},close:function(){b.isOpen&&(y(i),b.isOpen=!1,b.st.removalDelay&&!b.isLowIE&&b.supportsTransition?(b._addClassToMFP(r),setTimeout(function(){b._close()},b.st.removalDelay)):b._close())},_close:function(){y(h);var c=r+" "+q+" ";if(b.bgOverlay.detach(),b.wrap.detach(),b.container.empty(),b.st.mainClass&&(c+=b.st.mainClass+" "),b._removeClassFromMFP(c),b.fixedContentPos){var e={marginRight:""};b.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}d.off("keyup"+p+" focusin"+p),b.ev.off(p),b.wrap.attr("class","mfp-wrap").removeAttr("style"),b.bgOverlay.attr("class","mfp-bg"),b.container.attr("class","mfp-container"),!b.st.showCloseBtn||b.st.closeBtnInside&&b.currTemplate[b.currItem.type]!==!0||b.currTemplate.closeBtn&&b.currTemplate.closeBtn.detach(),b._lastFocusedEl&&a(b._lastFocusedEl).focus(),b.currItem=null,b.content=null,b.currTemplate=null,b.prevHeight=0,y(j)},updateSize:function(a){if(b.isIOS){var c=document.documentElement.clientWidth/window.innerWidth,d=window.innerHeight*c;b.wrap.css("height",d),b.wH=d}else b.wH=a||v.height();b.fixedContentPos||b.wrap.css("height",b.wH),y("Resize")},updateItemHTML:function(){var c=b.items[b.index];b.contentContainer.detach(),b.content&&b.content.detach(),c.parsed||(c=b.parseEl(b.index));var d=c.type;if(y("BeforeChange",[b.currItem?b.currItem.type:"",d]),b.currItem=c,!b.currTemplate[d]){var f=b.st[d]?b.st[d].markup:!1;y("FirstMarkupParse",f),f?b.currTemplate[d]=a(f):b.currTemplate[d]=!0}e&&e!==c.type&&b.container.removeClass("mfp-"+e+"-holder");var g=b["get"+d.charAt(0).toUpperCase()+d.slice(1)](c,b.currTemplate[d]);b.appendContent(g,d),c.preloaded=!0,y(n,c),e=c.type,b.container.prepend(b.contentContainer),y("AfterChange")},appendContent:function(a,c){b.content=a,a?b.st.showCloseBtn&&b.st.closeBtnInside&&b.currTemplate[c]===!0?b.content.find(".mfp-close").length||b.content.append(z()):b.content=a:b.content="",y(k),b.container.addClass("mfp-"+c+"-holder"),b.contentContainer.append(b.content)},parseEl:function(c){var d,e=b.items[c];if(e.tagName?e={el:a(e)}:(d=e.type,e={data:e,src:e.src}),e.el){for(var f=b.types,g=0;g<f.length;g++)if(e.el.hasClass("mfp-"+f[g])){d=f[g];break}e.src=e.el.attr("data-mfp-src"),e.src||(e.src=e.el.attr("href"))}return e.type=d||b.st.type||"inline",e.index=c,e.parsed=!0,b.items[c]=e,y("ElementParse",e),b.items[c]},addGroup:function(a,c){var d=function(d){d.mfpEl=this,b._openClick(d,a,c)};c||(c={});var e="click.magnificPopup";c.mainEl=a,c.items?(c.isObj=!0,a.off(e).on(e,d)):(c.isObj=!1,c.delegate?a.off(e).on(e,c.delegate,d):(c.items=a,a.off(e).on(e,d)))},_openClick:function(c,d,e){var f=void 0!==e.midClick?e.midClick:a.magnificPopup.defaults.midClick;if(f||!(2===c.which||c.ctrlKey||c.metaKey||c.altKey||c.shiftKey)){var g=void 0!==e.disableOn?e.disableOn:a.magnificPopup.defaults.disableOn;if(g)if(a.isFunction(g)){if(!g.call(b))return!0}else if(v.width()<g)return!0;c.type&&(c.preventDefault(),b.isOpen&&c.stopPropagation()),e.el=a(c.mfpEl),e.delegate&&(e.items=d.find(e.delegate)),b.open(e)}},updateStatus:function(a,d){if(b.preloader){c!==a&&b.container.removeClass("mfp-s-"+c),d||"loading"!==a||(d=b.st.tLoading);var e={status:a,text:d};y("UpdateStatus",e),a=e.status,d=e.text,b.preloader.html(d),b.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),b.container.addClass("mfp-s-"+a),c=a}},_checkIfClose:function(c){if(!a(c).hasClass(s)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},_addClassToMFP:function(a){b.bgOverlay.addClass(a),b.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),b.wrap.removeClass(a)},_hasScrollBar:function(a){return(b.isIE7?d.height():document.body.scrollHeight)>(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(a,c){if(void 0===c||c===!1)return!0;if(e=a.split("_"),e.length>1){var d=b.find(p+"-"+e[0]);if(d.length>0){var f=e[1];"replaceWith"===f?d[0]!==c[0]&&d.replaceWith(c):"img"===f?d.is("img")?d.attr("src",c):d.replaceWith('<img src="'+c+'" class="'+d.attr("class")+'" />'):d.attr(e[1],c)}}else b.find(p+"-"+a).html(c)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:"Close (Esc)",tLoading:"Loading..."}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("<div>");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery",g=Boolean(a.fn.mfpFastClick);return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s),h=g?"mfpFastClick":"click";e[h](function(){b.prev()}),f[h](function(){b.next()}),b.isIE7&&(x("b",e[0],!1,!0),x("a",e[0],!1,!0),x("b",f[0],!1,!0),x("a",f[0],!1,!0)),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowLeft&&g&&b.arrowLeft.add(b.arrowRight).destroyMfpFastClick(),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('<img class="mfp-img" />').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),function(){var b=1e3,c="ontouchstart"in window,d=function(){v.off("touchmove"+f+" touchend"+f)},e="mfpFastClick",f="."+e;a.fn.mfpFastClick=function(e){return a(this).each(function(){var g,h=a(this);if(c){var i,j,k,l,m,n;h.on("touchstart"+f,function(a){l=!1,n=1,m=a.originalEvent?a.originalEvent.touches[0]:a.touches[0],j=m.clientX,k=m.clientY,v.on("touchmove"+f,function(a){m=a.originalEvent?a.originalEvent.touches:a.touches,n=m.length,m=m[0],(Math.abs(m.clientX-j)>10||Math.abs(m.clientY-k)>10)&&(l=!0,d())}).on("touchend"+f,function(a){d(),l||n>1||(g=!0,a.preventDefault(),clearTimeout(i),i=setTimeout(function(){g=!1},b),e())})})}h.on("click"+f,function(){g||e()})})},a.fn.destroyMfpFastClick=function(){a(this).off("touchstart"+f+" click"+f),c&&v.off("touchmove"+f+" touchend"+f)}}(),A()});
1
+ /*! Magnific Popup - v1.1.0 - 2016-02-20
2
+ * http://dimsemenov.com/plugins/magnific-popup/
3
+ * Copyright (c) 2016 Dmitry Semenov; */
4
+ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isLowIE=b.isIE8=document.all&&!document.addEventListener,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e<h.length;e++)if(g=h[e],g.parsed&&(g=g.el[0]),g===c.el[0]){b.index=e;break}}else b.items=a.isArray(c.items)?c.items:[c.items],b.index=c.index||0;if(b.isOpen)return void b.updateItemHTML();b.types=[],f="",c.mainEl&&c.mainEl.length?b.ev=c.mainEl.eq(0):b.ev=d,c.key?(b.popupsCache[c.key]||(b.popupsCache[c.key]={}),b.currTemplate=b.popupsCache[c.key]):b.currTemplate={},b.st=a.extend(!0,{},a.magnificPopup.defaults,c),b.fixedContentPos="auto"===b.st.fixedContentPos?!b.probablyMobile:b.st.fixedContentPos,b.st.modal&&(b.st.closeOnContentClick=!1,b.st.closeOnBgClick=!1,b.st.showCloseBtn=!1,b.st.enableEscapeKey=!1),b.bgOverlay||(b.bgOverlay=x("bg").on("click"+p,function(){b.close()}),b.wrap=x("wrap").attr("tabindex",-1).on("click"+p,function(a){b._checkIfClose(a.target)&&b.close()}),b.container=x("container",b.wrap)),b.contentContainer=x("content"),b.st.preloader&&(b.preloader=x("preloader",b.container,b.st.tLoading));var i=a.magnificPopup.modules;for(e=0;e<i.length;e++){var j=i[e];j=j.charAt(0).toUpperCase()+j.slice(1),b["init"+j].call(b)}y("BeforeOpen"),b.st.showCloseBtn&&(b.st.closeBtnInside?(w(l,function(a,b,c,d){c.close_replaceWith=z(d.type)}),f+=" mfp-close-btn-in"):b.wrap.append(z())),b.st.alignTop&&(f+=" mfp-align-top"),b.fixedContentPos?b.wrap.css({overflow:b.st.overflowY,overflowX:"hidden",overflowY:b.st.overflowY}):b.wrap.css({top:v.scrollTop(),position:"absolute"}),(b.st.fixedBgPos===!1||"auto"===b.st.fixedBgPos&&!b.fixedContentPos)&&b.bgOverlay.css({height:d.height(),position:"absolute"}),b.st.enableEscapeKey&&d.on("keyup"+p,function(a){27===a.keyCode&&b.close()}),v.on("resize"+p,function(){b.updateSize()}),b.st.closeOnContentClick||(f+=" mfp-auto-cursor"),f&&b.wrap.addClass(f);var k=b.wH=v.height(),n={};if(b.fixedContentPos&&b._hasScrollBar(k)){var o=b._getScrollbarSize();o&&(n.marginRight=o)}b.fixedContentPos&&(b.isIE7?a("body, html").css("overflow","hidden"):n.overflow="hidden");var r=b.st.mainClass;return b.isIE7&&(r+=" mfp-ie7"),r&&b._addClassToMFP(r),b.updateItemHTML(),y("BuildControls"),a("html").css(n),b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo||a(document.body)),b._lastFocusedEl=document.activeElement,setTimeout(function(){b.content?(b._addClassToMFP(q),b._setFocus()):b.bgOverlay.addClass(q),d.on("focusin"+p,b._onFocusIn)},16),b.isOpen=!0,b.updateSize(k),y(m),c},close:function(){b.isOpen&&(y(i),b.isOpen=!1,b.st.removalDelay&&!b.isLowIE&&b.supportsTransition?(b._addClassToMFP(r),setTimeout(function(){b._close()},b.st.removalDelay)):b._close())},_close:function(){y(h);var c=r+" "+q+" ";if(b.bgOverlay.detach(),b.wrap.detach(),b.container.empty(),b.st.mainClass&&(c+=b.st.mainClass+" "),b._removeClassFromMFP(c),b.fixedContentPos){var e={marginRight:""};b.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}d.off("keyup"+p+" focusin"+p),b.ev.off(p),b.wrap.attr("class","mfp-wrap").removeAttr("style"),b.bgOverlay.attr("class","mfp-bg"),b.container.attr("class","mfp-container"),!b.st.showCloseBtn||b.st.closeBtnInside&&b.currTemplate[b.currItem.type]!==!0||b.currTemplate.closeBtn&&b.currTemplate.closeBtn.detach(),b.st.autoFocusLast&&b._lastFocusedEl&&a(b._lastFocusedEl).focus(),b.currItem=null,b.content=null,b.currTemplate=null,b.prevHeight=0,y(j)},updateSize:function(a){if(b.isIOS){var c=document.documentElement.clientWidth/window.innerWidth,d=window.innerHeight*c;b.wrap.css("height",d),b.wH=d}else b.wH=a||v.height();b.fixedContentPos||b.wrap.css("height",b.wH),y("Resize")},updateItemHTML:function(){var c=b.items[b.index];b.contentContainer.detach(),b.content&&b.content.detach(),c.parsed||(c=b.parseEl(b.index));var d=c.type;if(y("BeforeChange",[b.currItem?b.currItem.type:"",d]),b.currItem=c,!b.currTemplate[d]){var f=b.st[d]?b.st[d].markup:!1;y("FirstMarkupParse",f),f?b.currTemplate[d]=a(f):b.currTemplate[d]=!0}e&&e!==c.type&&b.container.removeClass("mfp-"+e+"-holder");var g=b["get"+d.charAt(0).toUpperCase()+d.slice(1)](c,b.currTemplate[d]);b.appendContent(g,d),c.preloaded=!0,y(n,c),e=c.type,b.container.prepend(b.contentContainer),y("AfterChange")},appendContent:function(a,c){b.content=a,a?b.st.showCloseBtn&&b.st.closeBtnInside&&b.currTemplate[c]===!0?b.content.find(".mfp-close").length||b.content.append(z()):b.content=a:b.content="",y(k),b.container.addClass("mfp-"+c+"-holder"),b.contentContainer.append(b.content)},parseEl:function(c){var d,e=b.items[c];if(e.tagName?e={el:a(e)}:(d=e.type,e={data:e,src:e.src}),e.el){for(var f=b.types,g=0;g<f.length;g++)if(e.el.hasClass("mfp-"+f[g])){d=f[g];break}e.src=e.el.attr("data-mfp-src"),e.src||(e.src=e.el.attr("href"))}return e.type=d||b.st.type||"inline",e.index=c,e.parsed=!0,b.items[c]=e,y("ElementParse",e),b.items[c]},addGroup:function(a,c){var d=function(d){d.mfpEl=this,b._openClick(d,a,c)};c||(c={});var e="click.magnificPopup";c.mainEl=a,c.items?(c.isObj=!0,a.off(e).on(e,d)):(c.isObj=!1,c.delegate?a.off(e).on(e,c.delegate,d):(c.items=a,a.off(e).on(e,d)))},_openClick:function(c,d,e){var f=void 0!==e.midClick?e.midClick:a.magnificPopup.defaults.midClick;if(f||!(2===c.which||c.ctrlKey||c.metaKey||c.altKey||c.shiftKey)){var g=void 0!==e.disableOn?e.disableOn:a.magnificPopup.defaults.disableOn;if(g)if(a.isFunction(g)){if(!g.call(b))return!0}else if(v.width()<g)return!0;c.type&&(c.preventDefault(),b.isOpen&&c.stopPropagation()),e.el=a(c.mfpEl),e.delegate&&(e.items=d.find(e.delegate)),b.open(e)}},updateStatus:function(a,d){if(b.preloader){c!==a&&b.container.removeClass("mfp-s-"+c),d||"loading"!==a||(d=b.st.tLoading);var e={status:a,text:d};y("UpdateStatus",e),a=e.status,d=e.text,b.preloader.html(d),b.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),b.container.addClass("mfp-s-"+a),c=a}},_checkIfClose:function(c){if(!a(c).hasClass(s)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},_addClassToMFP:function(a){b.bgOverlay.addClass(a),b.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),b.wrap.removeClass(a)},_hasScrollBar:function(a){return(b.isIE7?d.height():document.body.scrollHeight)>(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(c,d){if(void 0===d||d===!1)return!0;if(e=c.split("_"),e.length>1){var f=b.find(p+"-"+e[0]);if(f.length>0){var g=e[1];"replaceWith"===g?f[0]!==d[0]&&f.replaceWith(d):"img"===g?f.is("img")?f.attr("src",d):f.replaceWith(a("<img>").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(p+"-"+c).html(d)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("<div>");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('<img class="mfp-img" />').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()});
assets/js/jquery.powertip.js ADDED
@@ -0,0 +1,1166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ PowerTip - v1.2.0 - 2013-04-03
3
+ http://stevenbenner.github.com/jquery-powertip/
4
+ Copyright (c) 2013 Steven Benner (http://stevenbenner.com/).
5
+ Released under MIT license.
6
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
7
+ */
8
+ (function(factory) {
9
+ if (typeof define === 'function' && define.amd) {
10
+ // AMD. Register as an anonymous module.
11
+ define(['jquery'], factory);
12
+ } else {
13
+ // Browser globals
14
+ factory(jQuery);
15
+ }
16
+ }(function($) {
17
+
18
+ // useful private variables
19
+ var $document = $(document),
20
+ $window = $(window),
21
+ $body = $('body');
22
+
23
+ // constants
24
+ var DATA_DISPLAYCONTROLLER = 'displayController',
25
+ DATA_HASACTIVEHOVER = 'hasActiveHover',
26
+ DATA_FORCEDOPEN = 'forcedOpen',
27
+ DATA_HASMOUSEMOVE = 'hasMouseMove',
28
+ DATA_MOUSEONTOTIP = 'mouseOnToPopup',
29
+ DATA_ORIGINALTITLE = 'originalTitle',
30
+ DATA_POWERTIP = 'powertip',
31
+ DATA_POWERTIPJQ = 'powertipjq',
32
+ DATA_POWERTIPTARGET = 'powertiptarget',
33
+ RAD2DEG = 180 / Math.PI;
34
+
35
+ /**
36
+ * Session data
37
+ * Private properties global to all powerTip instances
38
+ */
39
+ var session = {
40
+ isTipOpen: false,
41
+ isFixedTipOpen: false,
42
+ isClosing: false,
43
+ tipOpenImminent: false,
44
+ activeHover: null,
45
+ currentX: 0,
46
+ currentY: 0,
47
+ previousX: 0,
48
+ previousY: 0,
49
+ desyncTimeout: null,
50
+ mouseTrackingActive: false,
51
+ delayInProgress: false,
52
+ windowWidth: 0,
53
+ windowHeight: 0,
54
+ scrollTop: 0,
55
+ scrollLeft: 0
56
+ };
57
+
58
+ /**
59
+ * Collision enumeration
60
+ * @enum {number}
61
+ */
62
+ var Collision = {
63
+ none: 0,
64
+ top: 1,
65
+ bottom: 2,
66
+ left: 4,
67
+ right: 8
68
+ };
69
+
70
+ /**
71
+ * Display hover tooltips on the matched elements.
72
+ * @param {(Object|string)} opts The options object to use for the plugin, or
73
+ * the name of a method to invoke on the first matched element.
74
+ * @param {*=} [arg] Argument for an invoked method (optional).
75
+ * @return {jQuery} jQuery object for the matched selectors.
76
+ */
77
+ $.fn.powerTip = function(opts, arg) {
78
+ // don't do any work if there were no matched elements
79
+ if (!this.length) {
80
+ return this;
81
+ }
82
+
83
+ // handle api method calls on the plugin, e.g. powerTip('hide')
84
+ if ($.type(opts) === 'string' && $.powerTip[opts]) {
85
+ return $.powerTip[opts].call(this, this, arg);
86
+ }
87
+
88
+ // extend options and instantiate TooltipController
89
+ var options = $.extend({}, $.fn.powerTip.defaults, opts),
90
+ tipController = new TooltipController(options);
91
+
92
+ // hook mouse and viewport dimension tracking
93
+ initTracking();
94
+
95
+ // setup the elements
96
+ this.each(function elementSetup() {
97
+ var $this = $(this),
98
+ dataPowertip = $this.data(DATA_POWERTIP),
99
+ dataElem = $this.data(DATA_POWERTIPJQ),
100
+ dataTarget = $this.data(DATA_POWERTIPTARGET),
101
+ title;
102
+
103
+ // handle repeated powerTip calls on the same element by destroying the
104
+ // original instance hooked to it and replacing it with this call
105
+ if ($this.data(DATA_DISPLAYCONTROLLER)) {
106
+ $.powerTip.destroy($this);
107
+ }
108
+
109
+ // attempt to use title attribute text if there is no data-powertip,
110
+ // data-powertipjq or data-powertiptarget. If we do use the title
111
+ // attribute, delete the attribute so the browser will not show it
112
+ title = $this.attr('title');
113
+ if (!dataPowertip && !dataTarget && !dataElem && title) {
114
+ $this.data(DATA_POWERTIP, title);
115
+ $this.data(DATA_ORIGINALTITLE, title);
116
+ $this.removeAttr('title');
117
+ }
118
+
119
+ // create hover controllers for each element
120
+ $this.data(
121
+ DATA_DISPLAYCONTROLLER,
122
+ new DisplayController($this, options, tipController)
123
+ );
124
+ });
125
+
126
+ // attach events to matched elements if the manual options is not enabled
127
+ if (!options.manual) {
128
+ this.on({
129
+ // mouse events
130
+ 'mouseenter.powertip': function elementMouseEnter(event) {
131
+ $.powerTip.show(this, event);
132
+ },
133
+ 'mouseleave.powertip': function elementMouseLeave() {
134
+ $.powerTip.hide(this);
135
+ },
136
+ // keyboard events
137
+ 'focus.powertip': function elementFocus() {
138
+ $.powerTip.show(this);
139
+ },
140
+ 'blur.powertip': function elementBlur() {
141
+ $.powerTip.hide(this, true);
142
+ },
143
+ 'keydown.powertip': function elementKeyDown(event) {
144
+ // close tooltip when the escape key is pressed
145
+ if (event.keyCode === 27) {
146
+ $.powerTip.hide(this, true);
147
+ }
148
+ }
149
+ });
150
+ }
151
+
152
+ return this;
153
+ };
154
+
155
+ /**
156
+ * Default options for the powerTip plugin.
157
+ */
158
+ $.fn.powerTip.defaults = {
159
+ fadeInTime: 200,
160
+ fadeOutTime: 100,
161
+ followMouse: false,
162
+ popupId: 'powerTip',
163
+ intentSensitivity: 7,
164
+ intentPollInterval: 100,
165
+ closeDelay: 100,
166
+ placement: 'n',
167
+ smartPlacement: false,
168
+ offset: 10,
169
+ mouseOnToPopup: false,
170
+ manual: false
171
+ };
172
+
173
+ /**
174
+ * Default smart placement priority lists.
175
+ * The first item in the array is the highest priority, the last is the lowest.
176
+ * The last item is also the default, which will be used if all previous options
177
+ * do not fit.
178
+ */
179
+ $.fn.powerTip.smartPlacementLists = {
180
+ n: ['n', 'ne', 'nw', 's'],
181
+ e: ['e', 'ne', 'se', 'w', 'nw', 'sw', 'n', 's', 'e'],
182
+ s: ['s', 'se', 'sw', 'n'],
183
+ w: ['w', 'nw', 'sw', 'e', 'ne', 'se', 'n', 's', 'w'],
184
+ nw: ['nw', 'w', 'sw', 'n', 's', 'se', 'nw'],
185
+ ne: ['ne', 'e', 'se', 'n', 's', 'sw', 'ne'],
186
+ sw: ['sw', 'w', 'nw', 's', 'n', 'ne', 'sw'],
187
+ se: ['se', 'e', 'ne', 's', 'n', 'nw', 'se'],
188
+ 'nw-alt': ['nw-alt', 'n', 'ne-alt', 'sw-alt', 's', 'se-alt', 'w', 'e'],
189
+ 'ne-alt': ['ne-alt', 'n', 'nw-alt', 'se-alt', 's', 'sw-alt', 'e', 'w'],
190
+ 'sw-alt': ['sw-alt', 's', 'se-alt', 'nw-alt', 'n', 'ne-alt', 'w', 'e'],
191
+ 'se-alt': ['se-alt', 's', 'sw-alt', 'ne-alt', 'n', 'nw-alt', 'e', 'w']
192
+ };
193
+
194
+ /**
195
+ * Public API
196
+ */
197
+ $.powerTip = {
198
+ /**
199
+ * Attempts to show the tooltip for the specified element.
200
+ * @param {jQuery|Element} element The element to open the tooltip for.
201
+ * @param {jQuery.Event=} event jQuery event for hover intent and mouse
202
+ * tracking (optional).
203
+ */
204
+ show: function apiShowTip(element, event) {
205
+ if (event) {
206
+ trackMouse(event);
207
+ session.previousX = event.pageX;
208
+ session.previousY = event.pageY;
209
+ $(element).data(DATA_DISPLAYCONTROLLER).show();
210
+ } else {
211
+ $(element).first().data(DATA_DISPLAYCONTROLLER).show(true, true);
212
+ }
213
+ return element;
214
+ },
215
+
216
+ /**
217
+ * Repositions the tooltip on the element.
218
+ * @param {jQuery|Element} element The element the tooltip is shown for.
219
+ */
220
+ reposition: function apiResetPosition(element) {
221
+ $(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();
222
+ return element;
223
+ },
224
+
225
+ /**
226
+ * Attempts to close any open tooltips.
227
+ * @param {(jQuery|Element)=} element The element with the tooltip that
228
+ * should be closed (optional).
229
+ * @param {boolean=} immediate Disable close delay (optional).
230
+ */
231
+ hide: function apiCloseTip(element, immediate) {
232
+ if (element) {
233
+ $(element).first().data(DATA_DISPLAYCONTROLLER).hide(immediate);
234
+ } else {
235
+ if (session.activeHover) {
236
+ session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true);
237
+ }
238
+ }
239
+ return element;
240
+ },
241
+
242
+ /**
243
+ * Destroy and roll back any powerTip() instance on the specified element.
244
+ * @param {jQuery|Element} element The element with the powerTip instance.
245
+ */
246
+ destroy: function apiDestroy(element) {
247
+ $(element).off('.powertip').each(function destroy() {
248
+ var $this = $(this),
249
+ dataAttributes = [
250
+ DATA_ORIGINALTITLE,
251
+ DATA_DISPLAYCONTROLLER,
252
+ DATA_HASACTIVEHOVER,
253
+ DATA_FORCEDOPEN
254
+ ];
255
+
256
+ if ($this.data(DATA_ORIGINALTITLE)) {
257
+ $this.attr('title', $this.data(DATA_ORIGINALTITLE));
258
+ dataAttributes.push(DATA_POWERTIP);
259
+ }
260
+
261
+ $this.removeData(dataAttributes);
262
+ });
263
+ return element;
264
+ }
265
+ };
266
+
267
+ // API aliasing
268
+ $.powerTip.showTip = $.powerTip.show;
269
+ $.powerTip.closeTip = $.powerTip.hide;
270
+
271
+ /**
272
+ * Creates a new CSSCoordinates object.
273
+ * @private
274
+ * @constructor
275
+ */
276
+ function CSSCoordinates() {
277
+ var me = this;
278
+
279
+ // initialize object properties
280
+ me.top = 'auto';
281
+ me.left = 'auto';
282
+ me.right = 'auto';
283
+ me.bottom = 'auto';
284
+
285
+ /**
286
+ * Set a property to a value.
287
+ * @private
288
+ * @param {string} property The name of the property.
289
+ * @param {number} value The value of the property.
290
+ */
291
+ me.set = function(property, value) {
292
+ if ($.isNumeric(value)) {
293
+ me[property] = Math.round(value);
294
+ }
295
+ };
296
+ }
297
+
298
+ /**
299
+ * Creates a new tooltip display controller.
300
+ * @private
301
+ * @constructor
302
+ * @param {jQuery} element The element that this controller will handle.
303
+ * @param {Object} options Options object containing settings.
304
+ * @param {TooltipController} tipController The TooltipController object for
305
+ * this instance.
306
+ */
307
+ function DisplayController(element, options, tipController) {
308
+ var hoverTimer = null;
309
+
310
+ /**
311
+ * Begins the process of showing a tooltip.
312
+ * @private
313
+ * @param {boolean=} immediate Skip intent testing (optional).
314
+ * @param {boolean=} forceOpen Ignore cursor position and force tooltip to
315
+ * open (optional).
316
+ */
317
+ function openTooltip(immediate, forceOpen) {
318
+ cancelTimer();
319
+ if (!element.data(DATA_HASACTIVEHOVER)) {
320
+ if (!immediate) {
321
+ session.tipOpenImminent = true;
322
+ hoverTimer = setTimeout(
323
+ function intentDelay() {
324
+ hoverTimer = null;
325
+ checkForIntent();
326
+ },
327
+ options.intentPollInterval
328
+ );
329
+ } else {
330
+ if (forceOpen) {
331
+ element.data(DATA_FORCEDOPEN, true);
332
+ }
333
+ tipController.showTip(element);
334
+ }
335
+ }
336
+ }
337
+
338
+ /**
339
+ * Begins the process of closing a tooltip.
340
+ * @private
341
+ * @param {boolean=} disableDelay Disable close delay (optional).
342
+ */
343
+ function closeTooltip(disableDelay) {
344
+ cancelTimer();
345
+ session.tipOpenImminent = false;
346
+ if (element.data(DATA_HASACTIVEHOVER)) {
347
+ element.data(DATA_FORCEDOPEN, false);
348
+ if (!disableDelay) {
349
+ session.delayInProgress = true;
350
+ hoverTimer = setTimeout(
351
+ function closeDelay() {
352
+ hoverTimer = null;
353
+ tipController.hideTip(element);
354
+ session.delayInProgress = false;
355
+ },
356
+ options.closeDelay
357
+ );
358
+ } else {
359
+ tipController.hideTip(element);
360
+ }
361
+ }
362
+ }
363
+
364
+ /**
365
+ * Checks mouse position to make sure that the user intended to hover on the
366
+ * specified element before showing the tooltip.
367
+ * @private
368
+ */
369
+ function checkForIntent() {
370
+ // calculate mouse position difference
371
+ var xDifference = Math.abs(session.previousX - session.currentX),
372
+ yDifference = Math.abs(session.previousY - session.currentY),
373
+ totalDifference = xDifference + yDifference;
374
+
375
+ // check if difference has passed the sensitivity threshold
376
+ if (totalDifference < options.intentSensitivity) {
377
+ tipController.showTip(element);
378
+ } else {
379
+ // try again
380
+ session.previousX = session.currentX;
381
+ session.previousY = session.currentY;
382
+ openTooltip();
383
+ }
384
+ }
385
+
386
+ /**
387
+ * Cancels active hover timer.
388
+ * @private
389
+ */
390
+ function cancelTimer() {
391
+ hoverTimer = clearTimeout(hoverTimer);
392
+ session.delayInProgress = false;
393
+ }
394
+
395
+ /**
396
+ * Repositions the tooltip on this element.
397
+ * @private
398
+ */
399
+ function repositionTooltip() {
400
+ tipController.resetPosition(element);
401
+ }
402
+
403
+ // expose the methods
404
+ this.show = openTooltip;
405
+ this.hide = closeTooltip;
406
+ this.cancel = cancelTimer;
407
+ this.resetPosition = repositionTooltip;
408
+ }
409
+
410
+ /**
411
+ * Creates a new Placement Calculator.
412
+ * @private
413
+ * @constructor
414
+ */
415
+ function PlacementCalculator() {
416
+ /**
417
+ * Compute the CSS position to display a tooltip at the specified placement
418
+ * relative to the specified element.
419
+ * @private
420
+ * @param {jQuery} element The element that the tooltip should target.
421
+ * @param {string} placement The placement for the tooltip.
422
+ * @param {number} tipWidth Width of the tooltip element in pixels.
423
+ * @param {number} tipHeight Height of the tooltip element in pixels.
424
+ * @param {number} offset Distance to offset tooltips in pixels.
425
+ * @return {CSSCoordinates} A CSSCoordinates object with the position.
426
+ */
427
+ function computePlacementCoords(element, placement, tipWidth, tipHeight, offset) {
428
+ var placementBase = placement.split('-')[0], // ignore 'alt' for corners
429
+ coords = new CSSCoordinates(),
430
+ position;
431
+
432
+ if (isSvgElement(element)) {
433
+ position = getSvgPlacement(element, placementBase);
434
+ } else {
435
+ position = getHtmlPlacement(element, placementBase);
436
+ }
437
+
438
+ // calculate the appropriate x and y position in the document
439
+ switch (placement) {
440
+ case 'n':
441
+ coords.set('left', position.left - (tipWidth / 2));
442
+ coords.set('bottom', session.windowHeight - position.top + offset);
443
+ break;
444
+ case 'e':
445
+ coords.set('left', position.left + offset);
446
+ coords.set('top', position.top - (tipHeight / 2));
447
+ break;
448
+ case 's':
449
+ coords.set('left', position.left - (tipWidth / 2));
450
+ coords.set('top', position.top + offset);
451
+ break;
452
+ case 'w':
453
+ coords.set('top', position.top - (tipHeight / 2));
454
+ coords.set('right', session.windowWidth - position.left + offset);
455
+ break;
456
+ case 'nw':
457
+ coords.set('bottom', session.windowHeight - position.top + offset);
458
+ coords.set('right', session.windowWidth - position.left - 20);
459
+ break;
460
+ case 'nw-alt':
461
+ coords.set('left', position.left);
462
+ coords.set('bottom', session.windowHeight - position.top + offset);
463
+ break;
464
+ case 'ne':
465
+ coords.set('left', position.left - 20);
466
+ coords.set('bottom', session.windowHeight - position.top + offset);
467
+ break;
468
+ case 'ne-alt':
469
+ coords.set('bottom', session.windowHeight - position.top + offset);
470
+ coords.set('right', session.windowWidth - position.left);
471
+ break;
472
+ case 'sw':
473
+ coords.set('top', position.top + offset);
474
+ coords.set('right', session.windowWidth - position.left - 20);
475
+ break;
476
+ case 'sw-alt':
477
+ coords.set('left', position.left);
478
+ coords.set('top', position.top + offset);
479
+ break;
480
+ case 'se':
481
+ coords.set('left', position.left - 20);
482
+ coords.set('top', position.top + offset);
483
+ break;
484
+ case 'se-alt':
485
+ coords.set('top', position.top + offset);
486
+ coords.set('right', session.windowWidth - position.left);
487
+ break;
488
+ }
489
+
490
+ return coords;
491
+ }
492
+
493
+ /**
494
+ * Finds the tooltip attachment point in the document for a HTML DOM element
495
+ * for the specified placement.
496
+ * @private
497
+ * @param {jQuery} element The element that the tooltip should target.
498
+ * @param {string} placement The placement for the tooltip.
499
+ * @return {Object} An object with the top,left position values.
500
+ */
501
+ function getHtmlPlacement(element, placement) {
502
+ var objectOffset = element.offset(),
503
+ objectWidth = element.outerWidth(),
504
+ objectHeight = element.outerHeight(),
505
+ left,
506
+ top;
507
+
508
+ // calculate the appropriate x and y position in the document
509
+ switch (placement) {
510
+ case 'n':
511
+ left = objectOffset.left + objectWidth / 2;
512
+ top = objectOffset.top;
513
+ break;
514
+ case 'e':
515
+ left = objectOffset.left + objectWidth;
516
+ top = objectOffset.top + objectHeight / 2;
517
+ break;
518
+ case 's':
519
+ left = objectOffset.left + objectWidth / 2;
520
+ top = objectOffset.top + objectHeight;
521
+ break;
522
+ case 'w':
523
+ left = objectOffset.left;
524
+ top = objectOffset.top + objectHeight / 2;
525
+ break;
526
+ case 'nw':
527
+ left = objectOffset.left;
528
+ top = objectOffset.top;
529
+ break;
530
+ case 'ne':
531
+ left = objectOffset.left + objectWidth;
532
+ top = objectOffset.top;
533
+ break;
534
+ case 'sw':
535
+ left = objectOffset.left;
536
+ top = objectOffset.top + objectHeight;
537
+ break;
538
+ case 'se':
539
+ left = objectOffset.left + objectWidth;
540
+ top = objectOffset.top + objectHeight;
541
+ break;
542
+ }
543
+
544
+ return {
545
+ top: top,
546
+ left: left
547
+ };
548
+ }
549
+
550
+ /**
551
+ * Finds the tooltip attachment point in the document for a SVG element for
552
+ * the specified placement.
553
+ * @private
554
+ * @param {jQuery} element The element that the tooltip should target.
555
+ * @param {string} placement The placement for the tooltip.
556
+ * @return {Object} An object with the top,left position values.
557
+ */
558
+ function getSvgPlacement(element, placement) {
559
+ var svgElement = element.closest('svg')[0],
560
+ domElement = element[0],
561
+ point = svgElement.createSVGPoint(),
562
+ boundingBox = domElement.getBBox(),
563
+ matrix = domElement.getScreenCTM(),
564
+ halfWidth = boundingBox.width / 2,
565
+ halfHeight = boundingBox.height / 2,
566
+ placements = [],
567
+ placementKeys = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'],
568
+ coords,
569
+ rotation,
570
+ steps,
571
+ x;
572
+
573
+ function pushPlacement() {
574
+ placements.push(point.matrixTransform(matrix));
575
+ }
576
+
577
+ // get bounding box corners and midpoints
578
+ point.x = boundingBox.x;
579
+ point.y = boundingBox.y;
580
+ pushPlacement();
581
+ point.x += halfWidth;
582
+ pushPlacement();
583
+ point.x += halfWidth;
584
+ pushPlacement();
585
+ point.y += halfHeight;
586
+ pushPlacement();
587
+ point.y += halfHeight;
588
+ pushPlacement();
589
+ point.x -= halfWidth;
590
+ pushPlacement();
591
+ point.x -= halfWidth;
592
+ pushPlacement();
593
+ point.y -= halfHeight;
594
+ pushPlacement();
595
+
596
+ // determine rotation
597
+ if (placements[0].y !== placements[1].y || placements[0].x !== placements[7].x) {
598
+ rotation = Math.atan2(matrix.b, matrix.a) * RAD2DEG;
599
+ steps = Math.ceil(((rotation % 360) - 22.5) / 45);
600
+ if (steps < 1) {
601
+ steps += 8;
602
+ }
603
+ while (steps--) {
604
+ placementKeys.push(placementKeys.shift());
605
+ }
606
+ }
607
+
608
+ // find placement
609
+ for (x = 0; x < placements.length; x++) {
610
+ if (placementKeys[x] === placement) {
611
+ coords = placements[x];
612
+ break;
613
+ }
614
+ }
615
+
616
+ return {
617
+ top: coords.y + session.scrollTop,
618
+ left: coords.x + session.scrollLeft
619
+ };
620
+ }
621
+
622
+ // expose methods
623
+ this.compute = computePlacementCoords;
624
+ }
625
+
626
+ /**
627
+ * Creates a new tooltip controller.
628
+ * @private
629
+ * @constructor
630
+ * @param {Object} options Options object containing settings.
631
+ */
632
+ function TooltipController(options) {
633
+ var placementCalculator = new PlacementCalculator(),
634
+ tipElement = $('#' + options.popupId);
635
+
636
+ // build and append tooltip div if it does not already exist
637
+ if (tipElement.length === 0) {
638
+ tipElement = $('<div/>', { id: options.popupId });
639
+ // grab body element if it was not populated when the script loaded
640
+ // note: this hack exists solely for jsfiddle support
641
+ if ($body.length === 0) {
642
+ $body = $('body');
643
+ }
644
+ $body.append(tipElement);
645
+ }
646
+
647
+ // hook mousemove for cursor follow tooltips
648
+ if (options.followMouse) {
649
+ // only one positionTipOnCursor hook per tooltip element, please
650
+ if (!tipElement.data(DATA_HASMOUSEMOVE)) {
651
+ $document.on('mousemove', positionTipOnCursor);
652
+ $window.on('scroll', positionTipOnCursor);
653
+ tipElement.data(DATA_HASMOUSEMOVE, true);
654
+ }
655
+ }
656
+
657
+ // if we want to be able to mouse onto the tooltip then we need to attach
658
+ // hover events to the tooltip that will cancel a close request on hover and
659
+ // start a new close request on mouseleave
660
+ if (options.mouseOnToPopup) {
661
+ tipElement.on({
662
+ mouseenter: function tipMouseEnter() {
663
+ // we only let the mouse stay on the tooltip if it is set to let
664
+ // users interact with it
665
+ if (tipElement.data(DATA_MOUSEONTOTIP)) {
666
+ // check activeHover in case the mouse cursor entered the
667
+ // tooltip during the fadeOut and close cycle
668
+ if (session.activeHover) {
669
+ session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel();
670
+ }
671
+ }
672
+ },
673
+ mouseleave: function tipMouseLeave() {
674
+ // check activeHover in case the mouse cursor entered the
675
+ // tooltip during the fadeOut and close cycle
676
+ if (session.activeHover) {
677
+ session.activeHover.data(DATA_DISPLAYCONTROLLER).hide();
678
+ }
679
+ }
680
+ });
681
+ }
682
+
683
+ /**
684
+ * Gives the specified element the active-hover state and queues up the
685
+ * showTip function.
686
+ * @private
687
+ * @param {jQuery} element The element that the tooltip should target.
688
+ */
689
+ function beginShowTip(element) {
690
+ element.data(DATA_HASACTIVEHOVER, true);
691
+ // show tooltip, asap
692
+ tipElement.queue(function queueTipInit(next) {
693
+ showTip(element);
694
+ next();
695
+ });
696
+ }
697
+
698
+ /**
699
+ * Shows the tooltip, as soon as possible.
700
+ * @private
701
+ * @param {jQuery} element The element that the tooltip should target.
702
+ */
703
+ function showTip(element) {
704
+ var tipContent;
705
+
706
+ // it is possible, especially with keyboard navigation, to move on to
707
+ // another element with a tooltip during the queue to get to this point
708
+ // in the code. if that happens then we need to not proceed or we may
709
+ // have the fadeout callback for the last tooltip execute immediately
710
+ // after this code runs, causing bugs.
711
+ if (!element.data(DATA_HASACTIVEHOVER)) {
712
+ return;
713
+ }
714
+
715
+ // if the tooltip is open and we got asked to open another one then the
716
+ // old one is still in its fadeOut cycle, so wait and try again
717
+ if (session.isTipOpen) {
718
+ if (!session.isClosing) {
719
+ hideTip(session.activeHover);
720
+ }
721
+ tipElement.delay(100).queue(function queueTipAgain(next) {
722
+ showTip(element);
723
+ next();
724
+ });
725
+ return;
726
+ }
727
+
728
+ // trigger powerTipPreRender event
729
+ element.trigger('powerTipPreRender');
730
+
731
+ // set tooltip content
732
+ tipContent = getTooltipContent(element);
733
+ if (tipContent) {
734
+ tipElement.empty().append(tipContent);
735
+ } else {
736
+ // we have no content to display, give up
737
+ return;
738
+ }
739
+
740
+ // trigger powerTipRender event
741
+ element.trigger('powerTipRender');
742
+
743
+ session.activeHover = element;
744
+ session.isTipOpen = true;
745
+
746
+ tipElement.data(DATA_MOUSEONTOTIP, options.mouseOnToPopup);
747
+
748
+ // set tooltip position
749
+ if (!options.followMouse) {
750
+ positionTipOnElement(element);
751
+ session.isFixedTipOpen = true;
752
+ } else {
753
+ positionTipOnCursor();
754
+ }
755
+
756
+ // fadein
757
+ tipElement.fadeIn(options.fadeInTime, function fadeInCallback() {
758
+ // start desync polling
759
+ if (!session.desyncTimeout) {
760
+ session.desyncTimeout = setInterval(closeDesyncedTip, 500);
761
+ }
762
+
763
+ // trigger powerTipOpen event
764
+ element.trigger('powerTipOpen');
765
+ });
766
+ }
767
+
768
+ /**
769
+ * Hides the tooltip.
770
+ * @private
771
+ * @param {jQuery} element The element that the tooltip should target.
772
+ */
773
+ function hideTip(element) {
774
+ // reset session
775
+ session.isClosing = true;
776
+ session.activeHover = null;
777
+ session.isTipOpen = false;
778
+
779
+ // stop desync polling
780
+ session.desyncTimeout = clearInterval(session.desyncTimeout);
781
+
782
+ // reset element state
783
+ element.data(DATA_HASACTIVEHOVER, false);
784
+ element.data(DATA_FORCEDOPEN, false);
785
+
786
+ // fade out
787
+ tipElement.fadeOut(options.fadeOutTime, function fadeOutCallback() {
788
+ var coords = new CSSCoordinates();
789
+
790
+ // reset session and tooltip element
791
+ session.isClosing = false;
792
+ session.isFixedTipOpen = false;
793
+ tipElement.removeClass();
794
+
795
+ // support mouse-follow and fixed position tips at the same time by
796
+ // moving the tooltip to the last cursor location after it is hidden
797
+ coords.set('top', session.currentY + options.offset);
798
+ coords.set('left', session.currentX + options.offset);
799
+ tipElement.css(coords);
800
+
801
+ // trigger powerTipClose event
802
+ element.trigger('powerTipClose');
803
+ });
804
+ }
805
+
806
+ /**
807
+ * Moves the tooltip to the users mouse cursor.
808
+ * @private
809
+ */
810
+ function positionTipOnCursor() {
811
+ // to support having fixed tooltips on the same page as cursor tooltips,
812
+ // where both instances are referencing the same tooltip element, we
813
+ // need to keep track of the mouse position constantly, but we should
814
+ // only set the tip location if a fixed tip is not currently open, a tip
815
+ // open is imminent or active, and the tooltip element in question does
816
+ // have a mouse-follow using it.
817
+ if (!session.isFixedTipOpen && (session.isTipOpen || (session.tipOpenImminent && tipElement.data(DATA_HASMOUSEMOVE)))) {
818
+ // grab measurements
819
+ var tipWidth = tipElement.outerWidth(),
820
+ tipHeight = tipElement.outerHeight(),
821
+ coords = new CSSCoordinates(),
822
+ collisions,
823
+ collisionCount;
824
+
825
+ // grab collisions
826
+ coords.set('top', session.currentY + options.offset);
827
+ coords.set('left', session.currentX + options.offset);
828
+ collisions = getViewportCollisions(
829
+ coords,
830
+ tipWidth,
831
+ tipHeight
832
+ );
833
+
834
+ // handle tooltip view port collisions
835
+ if (collisions !== Collision.none) {
836
+ collisionCount = countFlags(collisions);
837
+ if (collisionCount === 1) {
838
+ // if there is only one collision (bottom or right) then
839
+ // simply constrain the tooltip to the view port
840
+ if (collisions === Collision.right) {
841
+ coords.set('left', session.windowWidth - tipWidth);
842
+ } else if (collisions === Collision.bottom) {
843
+ coords.set('top', session.scrollTop + session.windowHeight - tipHeight);
844
+ }
845
+ } else {
846
+ // if the tooltip has more than one collision then it is
847
+ // trapped in the corner and should be flipped to get it out
848
+ // of the users way
849
+ coords.set('left', session.currentX - tipWidth - options.offset);
850
+ coords.set('top', session.currentY - tipHeight - options.offset);
851
+ }
852
+ }
853
+
854
+ // position the tooltip
855
+ tipElement.css(coords);
856
+ }
857
+ }
858
+
859
+ /**
860
+ * Sets the tooltip to the correct position relative to the specified target
861
+ * element. Based on options settings.
862
+ * @private
863
+ * @param {jQuery} element The element that the tooltip should target.
864
+ */
865
+ function positionTipOnElement(element) {
866
+ var priorityList,
867
+ finalPlacement;
868
+
869
+ if (options.smartPlacement) {
870
+ priorityList = $.fn.powerTip.smartPlacementLists[options.placement];
871
+
872
+ // iterate over the priority list and use the first placement option
873
+ // that does not collide with the view port. if they all collide
874
+ // then the last placement in the list will be used.
875
+ $.each(priorityList, function(idx, pos) {
876
+ // place tooltip and find collisions
877
+ var collisions = getViewportCollisions(
878
+ placeTooltip(element, pos),
879
+ tipElement.outerWidth(),
880
+ tipElement.outerHeight()
881
+ );
882
+
883
+ // update the final placement variable
884
+ finalPlacement = pos;
885
+
886
+ // break if there were no collisions
887
+ if (collisions === Collision.none) {
888
+ return false;
889
+ }
890
+ });
891
+ } else {
892
+ // if we're not going to use the smart placement feature then just
893
+ // compute the coordinates and do it
894
+ placeTooltip(element, options.placement);
895
+ finalPlacement = options.placement;
896
+ }
897
+
898
+ // add placement as class for CSS arrows
899
+ tipElement.addClass(finalPlacement);
900
+ }
901
+
902
+ /**
903
+ * Sets the tooltip position to the appropriate values to show the tip at
904
+ * the specified placement. This function will iterate and test the tooltip
905
+ * to support elastic tooltips.
906
+ * @private
907
+ * @param {jQuery} element The element that the tooltip should target.
908
+ * @param {string} placement The placement for the tooltip.
909
+ * @return {CSSCoordinates} A CSSCoordinates object with the top, left, and
910
+ * right position values.
911
+ */
912
+ function placeTooltip(element, placement) {
913
+ var iterationCount = 0,
914
+ tipWidth,
915
+ tipHeight,
916
+ coords = new CSSCoordinates();
917
+
918
+ // set the tip to 0,0 to get the full expanded width
919
+ coords.set('top', 0);
920
+ coords.set('left', 0);
921
+ tipElement.css(coords);
922
+
923
+ // to support elastic tooltips we need to check for a change in the
924
+ // rendered dimensions after the tooltip has been positioned
925
+ do {
926
+ // grab the current tip dimensions
927
+ tipWidth = tipElement.outerWidth();
928
+ tipHeight = tipElement.outerHeight();
929
+
930
+ // get placement coordinates
931
+ coords = placementCalculator.compute(
932
+ element,
933
+ placement,
934
+ tipWidth,
935
+ tipHeight,
936
+ options.offset
937
+ );
938
+
939
+ // place the tooltip
940
+ tipElement.css(coords);
941
+ } while (
942
+ // sanity check: limit to 5 iterations, and...
943
+ ++iterationCount <= 5 &&
944
+ // try again if the dimensions changed after placement
945
+ (tipWidth !== tipElement.outerWidth() || tipHeight !== tipElement.outerHeight())
946
+ );
947
+
948
+ return coords;
949
+ }
950
+
951
+ /**
952
+ * Checks for a tooltip desync and closes the tooltip if one occurs.
953
+ * @private
954
+ */
955
+ function closeDesyncedTip() {
956
+ var isDesynced = false;
957
+ // It is possible for the mouse cursor to leave an element without
958
+ // firing the mouseleave or blur event. This most commonly happens when
959
+ // the element is disabled under mouse cursor. If this happens it will
960
+ // result in a desynced tooltip because the tooltip was never asked to
961
+ // close. So we should periodically check for a desync situation and
962
+ // close the tip if such a situation arises.
963
+ if (session.isTipOpen && !session.isClosing && !session.delayInProgress) {
964
+ // user moused onto another tip or active hover is disabled
965
+ if (session.activeHover.data(DATA_HASACTIVEHOVER) === false || session.activeHover.is(':disabled')) {
966
+ isDesynced = true;
967
+ } else {
968
+ // hanging tip - have to test if mouse position is not over the
969
+ // active hover and not over a tooltip set to let the user
970
+ // interact with it.
971
+ // for keyboard navigation: this only counts if the element does
972
+ // not have focus.
973
+ // for tooltips opened via the api: we need to check if it has
974
+ // the forcedOpen flag.
975
+ if (!isMouseOver(session.activeHover) && !session.activeHover.is(':focus') && !session.activeHover.data(DATA_FORCEDOPEN)) {
976
+ if (tipElement.data(DATA_MOUSEONTOTIP)) {
977
+ if (!isMouseOver(tipElement)) {
978
+ isDesynced = true;
979
+ }
980
+ } else {
981
+ isDesynced = true;
982
+ }
983
+ }
984
+ }
985
+
986
+ if (isDesynced) {
987
+ // close the desynced tip
988
+ hideTip(session.activeHover);
989
+ }
990
+ }
991
+ }
992
+
993
+ // expose methods
994
+ this.showTip = beginShowTip;
995
+ this.hideTip = hideTip;
996
+ this.resetPosition = positionTipOnElement;
997
+ }
998
+
999
+ /**
1000
+ * Determine whether a jQuery object is an SVG element
1001
+ * @private
1002
+ * @param {jQuery} element The element to check
1003
+ * @return {boolean} Whether this is an SVG element
1004
+ */
1005
+ function isSvgElement(element) {
1006
+ return window.SVGElement && element[0] instanceof SVGElement;
1007
+ }
1008
+
1009
+ /**
1010
+ * Initializes the viewport dimension cache and hooks up the mouse position
1011
+ * tracking and viewport dimension tracking events.
1012
+ * Prevents attaching the events more than once.
1013
+ * @private
1014
+ */
1015
+ function initTracking() {
1016
+ if (!session.mouseTrackingActive) {
1017
+ session.mouseTrackingActive = true;
1018
+
1019
+ // grab the current viewport dimensions on load
1020
+ $(function getViewportDimensions() {
1021
+ session.scrollLeft = $window.scrollLeft();
1022
+ session.scrollTop = $window.scrollTop();
1023
+ session.windowWidth = $window.width();
1024
+ session.windowHeight = $window.height();
1025
+ });
1026
+
1027
+ // hook mouse move tracking
1028
+ $document.on('mousemove', trackMouse);
1029
+
1030
+ // hook viewport dimensions tracking
1031
+ $window.on({
1032
+ resize: function trackResize() {
1033
+ session.windowWidth = $window.width();
1034
+ session.windowHeight = $window.height();
1035
+ },
1036
+ scroll: function trackScroll() {
1037
+ var x = $window.scrollLeft(),
1038
+ y = $window.scrollTop();
1039
+ if (x !== session.scrollLeft) {
1040
+ session.currentX += x - session.scrollLeft;
1041
+ session.scrollLeft = x;
1042
+ }
1043
+ if (y !== session.scrollTop) {
1044
+ session.currentY += y - session.scrollTop;
1045
+ session.scrollTop = y;
1046
+ }
1047
+ }
1048
+ });
1049
+ }
1050
+ }
1051
+
1052
+ /**
1053
+ * Saves the current mouse coordinates to the session object.
1054
+ * @private
1055
+ * @param {jQuery.Event} event The mousemove event for the document.
1056
+ */
1057
+ function trackMouse(event) {
1058
+ session.currentX = event.pageX;
1059
+ session.currentY = event.pageY;
1060
+ }
1061
+
1062
+ /**
1063
+ * Tests if the mouse is currently over the specified element.
1064
+ * @private
1065
+ * @param {jQuery} element The element to check for hover.
1066
+ * @return {boolean}
1067
+ */
1068
+ function isMouseOver(element) {
1069
+ // use getBoundingClientRect() because jQuery's width() and height()
1070
+ // methods do not work with SVG elements
1071
+ // compute width/height because those properties do not exist on the object
1072
+ // returned by getBoundingClientRect() in older versions of IE
1073
+ var elementPosition = element.offset(),
1074
+ elementBox = element[0].getBoundingClientRect(),
1075
+ elementWidth = elementBox.right - elementBox.left,
1076
+ elementHeight = elementBox.bottom - elementBox.top;
1077
+
1078
+ return session.currentX >= elementPosition.left &&
1079
+ session.currentX <= elementPosition.left + elementWidth &&
1080
+ session.currentY >= elementPosition.top &&
1081
+ session.currentY <= elementPosition.top + elementHeight;
1082
+ }
1083
+
1084
+ /**
1085
+ * Fetches the tooltip content from the specified element's data attributes.
1086
+ * @private
1087
+ * @param {jQuery} element The element to get the tooltip content for.
1088
+ * @return {(string|jQuery|undefined)} The text/HTML string, jQuery object, or
1089
+ * undefined if there was no tooltip content for the element.
1090
+ */
1091
+ function getTooltipContent(element) {
1092
+ var tipText = element.data(DATA_POWERTIP),
1093
+ tipObject = element.data(DATA_POWERTIPJQ),
1094
+ tipTarget = element.data(DATA_POWERTIPTARGET),
1095
+ targetElement,
1096
+ content;
1097
+
1098
+ if (tipText) {
1099
+ if ($.isFunction(tipText)) {
1100
+ tipText = tipText.call(element[0]);
1101
+ }
1102
+ content = tipText;
1103
+ } else if (tipObject) {
1104
+ if ($.isFunction(tipObject)) {
1105
+ tipObject = tipObject.call(element[0]);
1106
+ }
1107
+ if (tipObject.length > 0) {
1108
+ content = tipObject.clone(true, true);
1109
+ }
1110
+ } else if (tipTarget) {
1111
+ targetElement = $('#' + tipTarget);
1112
+ if (targetElement.length > 0) {
1113
+ content = targetElement.html();
1114
+ }
1115
+ }
1116
+
1117
+ return content;
1118
+ }
1119
+
1120
+ /**
1121
+ * Finds any viewport collisions that an element (the tooltip) would have if it
1122
+ * were absolutely positioned at the specified coordinates.
1123
+ * @private
1124
+ * @param {CSSCoordinates} coords Coordinates for the element.
1125
+ * @param {number} elementWidth Width of the element in pixels.
1126
+ * @param {number} elementHeight Height of the element in pixels.
1127
+ * @return {number} Value with the collision flags.
1128
+ */
1129
+ function getViewportCollisions(coords, elementWidth, elementHeight) {
1130
+ var viewportTop = session.scrollTop,
1131
+ viewportLeft = session.scrollLeft,
1132
+ viewportBottom = viewportTop + session.windowHeight,
1133
+ viewportRight = viewportLeft + session.windowWidth,
1134
+ collisions = Collision.none;
1135
+
1136
+ if (coords.top < viewportTop || Math.abs(coords.bottom - session.windowHeight) - elementHeight < viewportTop) {
1137
+ collisions |= Collision.top;
1138
+ }
1139
+ if (coords.top + elementHeight > viewportBottom || Math.abs(coords.bottom - session.windowHeight) > viewportBottom) {
1140
+ collisions |= Collision.bottom;
1141
+ }
1142
+ if (coords.left < viewportLeft || coords.right + elementWidth > viewportRight) {
1143
+ collisions |= Collision.left;
1144
+ }
1145
+ if (coords.left + elementWidth > viewportRight || coords.right < viewportLeft) {
1146
+ collisions |= Collision.right;
1147
+ }
1148
+
1149
+ return collisions;
1150
+ }
1151
+
1152
+ /**
1153
+ * Counts the number of bits set on a flags value.
1154
+ * @param {number} value The flags value.
1155
+ * @return {number} The number of bits that have been set.
1156
+ */
1157
+ function countFlags(value) {
1158
+ var count = 0;
1159
+ while (value) {
1160
+ value &= value - 1;
1161
+ count++;
1162
+ }
1163
+ return count;
1164
+ }
1165
+
1166
+ }));
assets/js/jquery.powertip.min.js ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ /*!
2
+ PowerTip - v1.2.0 - 2013-04-03
3
+ http://stevenbenner.github.com/jquery-powertip/
4
+ Copyright (c) 2013 Steven Benner (http://stevenbenner.com/).
5
+ Released under MIT license.
6
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
7
+ */
8
+ (function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(){var t=this;t.top="auto",t.left="auto",t.right="auto",t.bottom="auto",t.set=function(o,n){e.isNumeric(n)&&(t[o]=Math.round(n))}}function o(e,t,o){function n(n,i){r(),e.data(v)||(n?(i&&e.data(m,!0),o.showTip(e)):(P.tipOpenImminent=!0,l=setTimeout(function(){l=null,s()},t.intentPollInterval)))}function i(n){r(),P.tipOpenImminent=!1,e.data(v)&&(e.data(m,!1),n?o.hideTip(e):(P.delayInProgress=!0,l=setTimeout(function(){l=null,o.hideTip(e),P.delayInProgress=!1},t.closeDelay)))}function s(){var i=Math.abs(P.previousX-P.currentX),s=Math.abs(P.previousY-P.currentY),r=i+s;t.intentSensitivity>r?o.showTip(e):(P.previousX=P.currentX,P.previousY=P.currentY,n())}function r(){l=clearTimeout(l),P.delayInProgress=!1}function a(){o.resetPosition(e)}var l=null;this.show=n,this.hide=i,this.cancel=r,this.resetPosition=a}function n(){function e(e,i,r,a,l){var p,c=i.split("-")[0],u=new t;switch(p=s(e)?n(e,c):o(e,c),i){case"n":u.set("left",p.left-r/2),u.set("bottom",P.windowHeight-p.top+l);break;case"e":u.set("left",p.left+l),u.set("top",p.top-a/2);break;case"s":u.set("left",p.left-r/2),u.set("top",p.top+l);break;case"w":u.set("top",p.top-a/2),u.set("right",P.windowWidth-p.left+l);break;case"nw":u.set("bottom",P.windowHeight-p.top+l),u.set("right",P.windowWidth-p.left-20);break;case"nw-alt":u.set("left",p.left),u.set("bottom",P.windowHeight-p.top+l);break;case"ne":u.set("left",p.left-20),u.set("bottom",P.windowHeight-p.top+l);break;case"ne-alt":u.set("bottom",P.windowHeight-p.top+l),u.set("right",P.windowWidth-p.left);break;case"sw":u.set("top",p.top+l),u.set("right",P.windowWidth-p.left-20);break;case"sw-alt":u.set("left",p.left),u.set("top",p.top+l);break;case"se":u.set("left",p.left-20),u.set("top",p.top+l);break;case"se-alt":u.set("top",p.top+l),u.set("right",P.windowWidth-p.left)}return u}function o(e,t){var o,n,i=e.offset(),s=e.outerWidth(),r=e.outerHeight();switch(t){case"n":o=i.left+s/2,n=i.top;break;case"e":o=i.left+s,n=i.top+r/2;break;case"s":o=i.left+s/2,n=i.top+r;break;case"w":o=i.left,n=i.top+r/2;break;case"nw":o=i.left,n=i.top;break;case"ne":o=i.left+s,n=i.top;break;case"sw":o=i.left,n=i.top+r;break;case"se":o=i.left+s,n=i.top+r}return{top:n,left:o}}function n(e,t){function o(){d.push(p.matrixTransform(u))}var n,i,s,r,a=e.closest("svg")[0],l=e[0],p=a.createSVGPoint(),c=l.getBBox(),u=l.getScreenCTM(),f=c.width/2,w=c.height/2,d=[],h=["nw","n","ne","e","se","s","sw","w"];if(p.x=c.x,p.y=c.y,o(),p.x+=f,o(),p.x+=f,o(),p.y+=w,o(),p.y+=w,o(),p.x-=f,o(),p.x-=f,o(),p.y-=w,o(),d[0].y!==d[1].y||d[0].x!==d[7].x)for(i=Math.atan2(u.b,u.a)*O,s=Math.ceil((i%360-22.5)/45),1>s&&(s+=8);s--;)h.push(h.shift());for(r=0;d.length>r;r++)if(h[r]===t){n=d[r];break}return{top:n.y+P.scrollTop,left:n.x+P.scrollLeft}}this.compute=e}function i(o){function i(e){e.data(v,!0),O.queue(function(t){s(e),t()})}function s(e){var t;if(e.data(v)){if(P.isTipOpen)return P.isClosing||r(P.activeHover),O.delay(100).queue(function(t){s(e),t()}),void 0;e.trigger("powerTipPreRender"),t=p(e),t&&(O.empty().append(t),e.trigger("powerTipRender"),P.activeHover=e,P.isTipOpen=!0,O.data(g,o.mouseOnToPopup),o.followMouse?a():(b(e),P.isFixedTipOpen=!0),O.fadeIn(o.fadeInTime,function(){P.desyncTimeout||(P.desyncTimeout=setInterval(H,500)),e.trigger("powerTipOpen")}))}}function r(e){P.isClosing=!0,P.activeHover=null,P.isTipOpen=!1,P.desyncTimeout=clearInterval(P.desyncTimeout),e.data(v,!1),e.data(m,!1),O.fadeOut(o.fadeOutTime,function(){var n=new t;P.isClosing=!1,P.isFixedTipOpen=!1,O.removeClass(),n.set("top",P.currentY+o.offset),n.set("left",P.currentX+o.offset),O.css(n),e.trigger("powerTipClose")})}function a(){if(!P.isFixedTipOpen&&(P.isTipOpen||P.tipOpenImminent&&O.data(T))){var e,n,i=O.outerWidth(),s=O.outerHeight(),r=new t;r.set("top",P.currentY+o.offset),r.set("left",P.currentX+o.offset),e=c(r,i,s),e!==I.none&&(n=u(e),1===n?e===I.right?r.set("left",P.windowWidth-i):e===I.bottom&&r.set("top",P.scrollTop+P.windowHeight-s):(r.set("left",P.currentX-i-o.offset),r.set("top",P.currentY-s-o.offset))),O.css(r)}}function b(t){var n,i;o.smartPlacement?(n=e.fn.powerTip.smartPlacementLists[o.placement],e.each(n,function(e,o){var n=c(y(t,o),O.outerWidth(),O.outerHeight());return i=o,n===I.none?!1:void 0})):(y(t,o.placement),i=o.placement),O.addClass(i)}function y(e,n){var i,s,r=0,a=new t;a.set("top",0),a.set("left",0),O.css(a);do i=O.outerWidth(),s=O.outerHeight(),a=k.compute(e,n,i,s,o.offset),O.css(a);while(5>=++r&&(i!==O.outerWidth()||s!==O.outerHeight()));return a}function H(){var e=!1;!P.isTipOpen||P.isClosing||P.delayInProgress||(P.activeHover.data(v)===!1||P.activeHover.is(":disabled")?e=!0:l(P.activeHover)||P.activeHover.is(":focus")||P.activeHover.data(m)||(O.data(g)?l(O)||(e=!0):e=!0),e&&r(P.activeHover))}var k=new n,O=e("#"+o.popupId);0===O.length&&(O=e("<div/>",{id:o.popupId}),0===d.length&&(d=e("body")),d.append(O)),o.followMouse&&(O.data(T)||(f.on("mousemove",a),w.on("scroll",a),O.data(T,!0))),o.mouseOnToPopup&&O.on({mouseenter:function(){O.data(g)&&P.activeHover&&P.activeHover.data(h).cancel()},mouseleave:function(){P.activeHover&&P.activeHover.data(h).hide()}}),this.showTip=i,this.hideTip=r,this.resetPosition=b}function s(e){return window.SVGElement&&e[0]instanceof SVGElement}function r(){P.mouseTrackingActive||(P.mouseTrackingActive=!0,e(function(){P.scrollLeft=w.scrollLeft(),P.scrollTop=w.scrollTop(),P.windowWidth=w.width(),P.windowHeight=w.height()}),f.on("mousemove",a),w.on({resize:function(){P.windowWidth=w.width(),P.windowHeight=w.height()},scroll:function(){var e=w.scrollLeft(),t=w.scrollTop();e!==P.scrollLeft&&(P.currentX+=e-P.scrollLeft,P.scrollLeft=e),t!==P.scrollTop&&(P.currentY+=t-P.scrollTop,P.scrollTop=t)}}))}function a(e){P.currentX=e.pageX,P.currentY=e.pageY}function l(e){var t=e.offset(),o=e[0].getBoundingClientRect(),n=o.right-o.left,i=o.bottom-o.top;return P.currentX>=t.left&&P.currentX<=t.left+n&&P.currentY>=t.top&&P.currentY<=t.top+i}function p(t){var o,n,i=t.data(y),s=t.data(H),r=t.data(k);return i?(e.isFunction(i)&&(i=i.call(t[0])),n=i):s?(e.isFunction(s)&&(s=s.call(t[0])),s.length>0&&(n=s.clone(!0,!0))):r&&(o=e("#"+r),o.length>0&&(n=o.html())),n}function c(e,t,o){var n=P.scrollTop,i=P.scrollLeft,s=n+P.windowHeight,r=i+P.windowWidth,a=I.none;return(n>e.top||n>Math.abs(e.bottom-P.windowHeight)-o)&&(a|=I.top),(e.top+o>s||Math.abs(e.bottom-P.windowHeight)>s)&&(a|=I.bottom),(i>e.left||e.right+t>r)&&(a|=I.left),(e.left+t>r||i>e.right)&&(a|=I.right),a}function u(e){for(var t=0;e;)e&=e-1,t++;return t}var f=e(document),w=e(window),d=e("body"),h="displayController",v="hasActiveHover",m="forcedOpen",T="hasMouseMove",g="mouseOnToPopup",b="originalTitle",y="powertip",H="powertipjq",k="powertiptarget",O=180/Math.PI,P={isTipOpen:!1,isFixedTipOpen:!1,isClosing:!1,tipOpenImminent:!1,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,mouseTrackingActive:!1,delayInProgress:!1,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0},I={none:0,top:1,bottom:2,left:4,right:8};e.fn.powerTip=function(t,n){if(!this.length)return this;if("string"===e.type(t)&&e.powerTip[t])return e.powerTip[t].call(this,this,n);var s=e.extend({},e.fn.powerTip.defaults,t),a=new i(s);return r(),this.each(function(){var t,n=e(this),i=n.data(y),r=n.data(H),l=n.data(k);n.data(h)&&e.powerTip.destroy(n),t=n.attr("title"),i||l||r||!t||(n.data(y,t),n.data(b,t),n.removeAttr("title")),n.data(h,new o(n,s,a))}),s.manual||this.on({"mouseenter.powertip":function(t){e.powerTip.show(this,t)},"mouseleave.powertip":function(){e.powerTip.hide(this)},"focus.powertip":function(){e.powerTip.show(this)},"blur.powertip":function(){e.powerTip.hide(this,!0)},"keydown.powertip":function(t){27===t.keyCode&&e.powerTip.hide(this,!0)}}),this},e.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:!1,popupId:"powerTip",intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:!1,offset:10,mouseOnToPopup:!1,manual:!1},e.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]},e.powerTip={show:function(t,o){return o?(a(o),P.previousX=o.pageX,P.previousY=o.pageY,e(t).data(h).show()):e(t).first().data(h).show(!0,!0),t},reposition:function(t){return e(t).first().data(h).resetPosition(),t},hide:function(t,o){return t?e(t).first().data(h).hide(o):P.activeHover&&P.activeHover.data(h).hide(!0),t},destroy:function(t){return e(t).off(".powertip").each(function(){var t=e(this),o=[b,h,v,m];t.data(b)&&(t.attr("title",t.data(b)),o.push(y)),t.removeData(o)}),t}},e.powerTip.showTip=e.powerTip.show,e.powerTip.closeTip=e.powerTip.hide});
includes/class-lsow-setup.php CHANGED
@@ -194,7 +194,7 @@ if (!class_exists('LSOW_Setup')):
194
  }
195
 
196
  function custom_fields_class_paths($class_paths) {
197
- $class_paths[] = LSOW_PLUGIN_DIR . 'includes/custom-fields/';
198
  return $class_paths;
199
  }
200
 
194
  }
195
 
196
  function custom_fields_class_paths($class_paths) {
197
+ $class_paths[] = LSOW_PLUGIN_DIR . 'includes/fields/';
198
  return $class_paths;
199
  }
200
 
includes/fields/css/images/ui-icons_444444_256x240.png ADDED
Binary file
includes/fields/css/images/ui-icons_555555_256x240.png ADDED
Binary file
includes/fields/css/images/ui-icons_777620_256x240.png ADDED
Binary file
includes/fields/css/images/ui-icons_777777_256x240.png ADDED
Binary file
includes/fields/css/images/ui-icons_cc0000_256x240.png ADDED
Binary file
includes/fields/css/images/ui-icons_ffffff_256x240.png ADDED
Binary file
includes/fields/css/jquery-ui-timepicker-addon.css ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ui-timepicker-div .ui-widget-header { margin-bottom: 8px; }
2
+ .ui-timepicker-div dl { text-align: left; }
3
+ .ui-timepicker-div dl dt { float: left; clear:left; padding: 0 0 0 5px; }
4
+ .ui-timepicker-div dl dd { margin: 0 10px 10px 40%; }
5
+ .ui-timepicker-div td { font-size: 90%; }
6
+ .ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }
7
+ .ui-timepicker-div .ui_tpicker_unit_hide{ display: none; }
8
+
9
+ .ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input { background: none; color: inherit; border: none; outline: none; border-bottom: solid 1px #555; width: 95%; }
10
+ .ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input:focus { border-bottom-color: #aaa; }
11
+
12
+ .ui-timepicker-rtl{ direction: rtl; }
13
+ .ui-timepicker-rtl dl { text-align: right; padding: 0 5px 0 0; }
14
+ .ui-timepicker-rtl dl dt{ float: right; clear: right; }
15
+ .ui-timepicker-rtl dl dd { margin: 0 40% 10px 10px; }
16
+
17
+ /* Shortened version style */
18
+ .ui-timepicker-div.ui-timepicker-oneLine { padding-right: 2px; }
19
+ .ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time,
20
+ .ui-timepicker-div.ui-timepicker-oneLine dt { display: none; }
21
+ .ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time_label { display: block; padding-top: 2px; }
22
+ .ui-timepicker-div.ui-timepicker-oneLine dl { text-align: right; }
23
+ .ui-timepicker-div.ui-timepicker-oneLine dl dd,
24
+ .ui-timepicker-div.ui-timepicker-oneLine dl dd > div { display:inline-block; margin:0; }
25
+ .ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_minute:before,
26
+ .ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_second:before { content:':'; display:inline-block; }
27
+ .ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_millisec:before,
28
+ .ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_microsec:before { content:'.'; display:inline-block; }
29
+ .ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide,
30
+ .ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide:before{ display: none; }
includes/fields/css/jquery-ui.css ADDED
@@ -0,0 +1,715 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*! jQuery UI - v1.11.4 - 2016-05-12
2
+ * http://jqueryui.com
3
+ * Includes: core.css, datepicker.css, slider.css, theme.css
4
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
5
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */
6
+
7
+ /* Layout helpers
8
+ ----------------------------------*/
9
+ .ui-helper-hidden {
10
+ display: none;
11
+ }
12
+ .ui-helper-hidden-accessible {
13
+ border: 0;
14
+ clip: rect(0 0 0 0);
15
+ height: 1px;
16
+ margin: -1px;
17
+ overflow: hidden;
18
+ padding: 0;
19
+ position: absolute;
20
+ width: 1px;
21
+ }
22
+ .ui-helper-reset {
23
+ margin: 0;
24
+ padding: 0;
25
+ border: 0;
26
+ outline: 0;
27
+ line-height: 1.3;
28
+ text-decoration: none;
29
+ font-size: 100%;
30
+ list-style: none;
31
+ }
32
+ .ui-helper-clearfix:before,
33
+ .ui-helper-clearfix:after {
34
+ content: "";
35
+ display: table;
36
+ border-collapse: collapse;
37
+ }
38
+ .ui-helper-clearfix:after {
39
+ clear: both;
40
+ }
41
+ .ui-helper-clearfix {
42
+ min-height: 0; /* support: IE7 */
43
+ }
44
+ .ui-helper-zfix {
45
+ width: 100%;
46
+ height: 100%;
47
+ top: 0;
48
+ left: 0;
49
+ position: absolute;
50
+ opacity: 0;
51
+ filter:Alpha(Opacity=0); /* support: IE8 */
52
+ }
53
+
54
+ .ui-front {
55
+ z-index: 100;
56
+ }
57
+
58
+
59
+ /* Interaction Cues
60
+ ----------------------------------*/
61
+ .ui-state-disabled {
62
+ cursor: default !important;
63
+ }
64
+
65
+
66
+ /* Icons
67
+ ----------------------------------*/
68
+
69
+ /* states and images */
70
+ .ui-icon {
71
+ display: block;
72
+ text-indent: -99999px;
73
+ overflow: hidden;
74
+ background-repeat: no-repeat;
75
+ }
76
+
77
+
78
+ /* Misc visuals
79
+ ----------------------------------*/
80
+
81
+ /* Overlays */
82
+ .ui-widget-overlay {
83
+ position: fixed;
84
+ top: 0;
85
+ left: 0;
86
+ width: 100%;
87
+ height: 100%;
88
+ }
89
+ .ui-datepicker {
90
+ width: 17em;
91
+ padding: .2em .2em 0;
92
+ display: none;
93
+ }
94
+ .ui-datepicker .ui-datepicker-header {
95
+ position: relative;
96
+ padding: .2em 0;
97
+ }
98
+ .ui-datepicker .ui-datepicker-prev,
99
+ .ui-datepicker .ui-datepicker-next {
100
+ position: absolute;
101
+ top: 2px;
102
+ width: 1.8em;
103
+ height: 1.8em;
104
+ }
105
+ .ui-datepicker .ui-datepicker-prev-hover,
106
+ .ui-datepicker .ui-datepicker-next-hover {
107
+ top: 1px;
108
+ }
109
+ .ui-datepicker .ui-datepicker-prev {
110
+ left: 2px;
111
+ }
112
+ .ui-datepicker .ui-datepicker-next {
113
+ right: 2px;
114
+ }
115
+ .ui-datepicker .ui-datepicker-prev-hover {
116
+ left: 1px;
117
+ }
118
+ .ui-datepicker .ui-datepicker-next-hover {
119
+ right: 1px;
120
+ }
121
+ .ui-datepicker .ui-datepicker-prev span,
122
+ .ui-datepicker .ui-datepicker-next span {
123
+ display: block;
124
+ position: absolute;
125
+ left: 50%;
126
+ margin-left: -8px;
127
+ top: 50%;
128
+ margin-top: -8px;
129
+ }
130
+ .ui-datepicker .ui-datepicker-title {
131
+ margin: 0 2.3em;
132
+ line-height: 1.8em;
133
+ text-align: center;
134
+ }
135
+ .ui-datepicker .ui-datepicker-title select {
136
+ font-size: 1em;
137
+ margin: 1px 0;
138
+ }
139
+ .ui-datepicker select.ui-datepicker-month,
140
+ .ui-datepicker select.ui-datepicker-year {
141
+ width: 45%;
142
+ }
143
+ .ui-datepicker table {
144
+ width: 100%;
145
+ font-size: .9em;
146
+ border-collapse: collapse;
147
+ margin: 0 0 .4em;
148
+ }
149
+ .ui-datepicker th {
150
+ padding: .7em .3em;
151
+ text-align: center;
152
+ font-weight: bold;
153
+ border: 0;
154
+ }
155
+ .ui-datepicker td {
156
+ border: 0;
157
+ padding: 1px;
158
+ }
159
+ .ui-datepicker td span,
160
+ .ui-datepicker td a {
161
+ display: block;
162
+ padding: .2em;
163
+ text-align: right;
164
+ text-decoration: none;
165
+ }
166
+ .ui-datepicker .ui-datepicker-buttonpane {
167
+ background-image: none;
168
+ margin: .7em 0 0 0;
169
+ padding: 0 .2em;
170
+ border-left: 0;
171
+ border-right: 0;
172
+ border-bottom: 0;
173
+ }
174
+ .ui-datepicker .ui-datepicker-buttonpane button {
175
+ float: right;
176
+ margin: .5em .2em .4em;
177
+ cursor: pointer;
178
+ padding: .2em .6em .3em .6em;
179
+ width: auto;
180
+ overflow: visible;
181
+ }
182
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
183
+ float: left;
184
+ }
185
+
186
+ /* with multiple calendars */
187
+ .ui-datepicker.ui-datepicker-multi {
188
+ width: auto;
189
+ }
190
+ .ui-datepicker-multi .ui-datepicker-group {
191
+ float: left;
192
+ }
193
+ .ui-datepicker-multi .ui-datepicker-group table {
194
+ width: 95%;
195
+ margin: 0 auto .4em;
196
+ }
197
+ .ui-datepicker-multi-2 .ui-datepicker-group {
198
+ width: 50%;
199
+ }
200
+ .ui-datepicker-multi-3 .ui-datepicker-group {
201
+ width: 33.3%;
202
+ }
203
+ .ui-datepicker-multi-4 .ui-datepicker-group {
204
+ width: 25%;
205
+ }
206
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
207
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
208
+ border-left-width: 0;
209
+ }
210
+ .ui-datepicker-multi .ui-datepicker-buttonpane {
211
+ clear: left;
212
+ }
213
+ .ui-datepicker-row-break {
214
+ clear: both;
215
+ width: 100%;
216
+ font-size: 0;
217
+ }
218
+
219
+ /* RTL support */
220
+ .ui-datepicker-rtl {
221
+ direction: rtl;
222
+ }
223
+ .ui-datepicker-rtl .ui-datepicker-prev {
224
+ right: 2px;
225
+ left: auto;
226
+ }
227
+ .ui-datepicker-rtl .ui-datepicker-next {
228
+ left: 2px;
229
+ right: auto;
230
+ }
231
+ .ui-datepicker-rtl .ui-datepicker-prev:hover {
232
+ right: 1px;
233
+ left: auto;
234
+ }
235
+ .ui-datepicker-rtl .ui-datepicker-next:hover {
236
+ left: 1px;
237
+ right: auto;
238
+ }
239
+ .ui-datepicker-rtl .ui-datepicker-buttonpane {
240
+ clear: right;
241
+ }
242
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button {
243
+ float: left;
244
+ }
245
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
246
+ .ui-datepicker-rtl .ui-datepicker-group {
247
+ float: right;
248
+ }
249
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
250
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
251
+ border-right-width: 0;
252
+ border-left-width: 1px;
253
+ }
254
+ .ui-slider {
255
+ position: relative;
256
+ text-align: left;
257
+ }
258
+ .ui-slider .ui-slider-handle {
259
+ position: absolute;
260
+ z-index: 2;
261
+ width: 1.2em;
262
+ height: 1.2em;
263
+ cursor: default;
264
+ -ms-touch-action: none;
265
+ touch-action: none;
266
+ }
267
+ .ui-slider .ui-slider-range {
268
+ position: absolute;
269
+ z-index: 1;
270
+ font-size: .7em;
271
+ display: block;
272
+ border: 0;
273
+ background-position: 0 0;
274
+ }
275
+
276
+ /* support: IE8 - See #6727 */
277
+ .ui-slider.ui-state-disabled .ui-slider-handle,
278
+ .ui-slider.ui-state-disabled .ui-slider-range {
279
+ filter: inherit;
280
+ }
281
+
282
+ .ui-slider-horizontal {
283
+ height: .8em;
284
+ }
285
+ .ui-slider-horizontal .ui-slider-handle {
286
+ top: -.3em;
287
+ margin-left: -.6em;
288
+ }
289
+ .ui-slider-horizontal .ui-slider-range {
290
+ top: 0;
291
+ height: 100%;
292
+ }
293
+ .ui-slider-horizontal .ui-slider-range-min {
294
+ left: 0;
295
+ }
296
+ .ui-slider-horizontal .ui-slider-range-max {
297
+ right: 0;
298
+ }
299
+
300
+ .ui-slider-vertical {
301
+ width: .8em;
302
+ height: 100px;
303
+ }
304
+ .ui-slider-vertical .ui-slider-handle {
305
+ left: -.3em;
306
+ margin-left: 0;
307
+ margin-bottom: -.6em;
308
+ }
309
+ .ui-slider-vertical .ui-slider-range {
310
+ left: 0;
311
+ width: 100%;
312
+ }
313
+ .ui-slider-vertical .ui-slider-range-min {
314
+ bottom: 0;
315
+ }
316
+ .ui-slider-vertical .ui-slider-range-max {
317
+ top: 0;
318
+ }
319
+
320
+ /* Component containers
321
+ ----------------------------------*/
322
+ .ui-widget {
323
+ font-family: Arial,Helvetica,sans-serif;
324
+ font-size: 1em;
325
+ }
326
+ .ui-widget .ui-widget {
327
+ font-size: 1em;
328
+ }
329
+ .ui-widget input,
330
+ .ui-widget select,
331
+ .ui-widget textarea,
332
+ .ui-widget button {
333
+ font-family: Arial,Helvetica,sans-serif;
334
+ font-size: 1em;
335
+ }
336
+ .ui-widget-content {
337
+ border: 1px solid #dddddd;
338
+ background: #ffffff;
339
+ color: #333333;
340
+ }
341
+ .ui-widget-content a {
342
+ color: #333333;
343
+ }
344
+ .ui-widget-header {
345
+ border: 1px solid #dddddd;
346
+ background: #e9e9e9;
347
+ color: #333333;
348
+ font-weight: bold;
349
+ }
350
+ .ui-widget-header a {
351
+ color: #333333;
352
+ }
353
+
354
+ /* Interaction states
355
+ ----------------------------------*/
356
+ .ui-state-default,
357
+ .ui-widget-content .ui-state-default,
358
+ .ui-widget-header .ui-state-default {
359
+ border: 1px solid #c5c5c5;
360
+ background: #f6f6f6;
361
+ font-weight: normal;
362
+ color: #454545;
363
+ }
364
+ .ui-state-default a,
365
+ .ui-state-default a:link,
366
+ .ui-state-default a:visited {
367
+ color: #454545;
368
+ text-decoration: none;
369
+ }
370
+ .ui-state-hover,
371
+ .ui-widget-content .ui-state-hover,
372
+ .ui-widget-header .ui-state-hover,
373
+ .ui-state-focus,
374
+ .ui-widget-content .ui-state-focus,
375
+ .ui-widget-header .ui-state-focus {
376
+ border: 1px solid #cccccc;
377
+ background: #ededed;
378
+ font-weight: normal;
379
+ color: #2b2b2b;
380
+ }
381
+ .ui-state-hover a,
382
+ .ui-state-hover a:hover,
383
+ .ui-state-hover a:link,
384
+ .ui-state-hover a:visited,
385
+ .ui-state-focus a,
386
+ .ui-state-focus a:hover,
387
+ .ui-state-focus a:link,
388
+ .ui-state-focus a:visited {
389
+ color: #2b2b2b;
390
+ text-decoration: none;
391
+ }
392
+ .ui-state-active,
393
+ .ui-widget-content .ui-state-active,
394
+ .ui-widget-header .ui-state-active {
395
+ border: 1px solid #003eff;
396
+ background: #007fff;
397
+ font-weight: normal;
398
+ color: #ffffff;
399
+ }
400
+ .ui-state-active a,
401
+ .ui-state-active a:link,
402
+ .ui-state-active a:visited {
403
+ color: #ffffff;
404
+ text-decoration: none;
405
+ }
406
+
407
+ /* Interaction Cues
408
+ ----------------------------------*/
409
+ .ui-state-highlight,
410
+ .ui-widget-content .ui-state-highlight,
411
+ .ui-widget-header .ui-state-highlight {
412
+ border: 1px solid #dad55e;
413
+ background: #fffa90;
414
+ color: #777620;
415
+ }
416
+ .ui-state-highlight a,
417
+ .ui-widget-content .ui-state-highlight a,
418
+ .ui-widget-header .ui-state-highlight a {
419
+ color: #777620;
420
+ }
421
+ .ui-state-error,
422
+ .ui-widget-content .ui-state-error,
423
+ .ui-widget-header .ui-state-error {
424
+ border: 1px solid #f1a899;
425
+ background: #fddfdf;
426
+ color: #5f3f3f;
427
+ }
428
+ .ui-state-error a,
429
+ .ui-widget-content .ui-state-error a,
430
+ .ui-widget-header .ui-state-error a {
431
+ color: #5f3f3f;
432
+ }
433
+ .ui-state-error-text,
434
+ .ui-widget-content .ui-state-error-text,
435
+ .ui-widget-header .ui-state-error-text {
436
+ color: #5f3f3f;
437
+ }
438
+ .ui-priority-primary,
439
+ .ui-widget-content .ui-priority-primary,
440
+ .ui-widget-header .ui-priority-primary {
441
+ font-weight: bold;
442
+ }
443
+ .ui-priority-secondary,
444
+ .ui-widget-content .ui-priority-secondary,
445
+ .ui-widget-header .ui-priority-secondary {
446
+ opacity: .7;
447
+ filter:Alpha(Opacity=70); /* support: IE8 */
448
+ font-weight: normal;
449
+ }
450
+ .ui-state-disabled,
451
+ .ui-widget-content .ui-state-disabled,
452
+ .ui-widget-header .ui-state-disabled {
453
+ opacity: .35;
454
+ filter:Alpha(Opacity=35); /* support: IE8 */
455
+ background-image: none;
456
+ }
457
+ .ui-state-disabled .ui-icon {
458
+ filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
459
+ }
460
+
461
+ /* Icons
462
+ ----------------------------------*/
463
+
464
+ /* states and images */
465
+ .ui-icon {
466
+ width: 16px;
467
+ height: 16px;
468
+ }
469
+ .ui-icon,
470
+ .ui-widget-content .ui-icon {
471
+ background-image: url("images/ui-icons_444444_256x240.png");
472
+ }
473
+ .ui-widget-header .ui-icon {
474
+ background-image: url("images/ui-icons_444444_256x240.png");
475
+ }
476
+ .ui-state-default .ui-icon {
477
+ background-image: url("images/ui-icons_777777_256x240.png");
478
+ }
479
+ .ui-state-hover .ui-icon,
480
+ .ui-state-focus .ui-icon {
481
+ background-image: url("images/ui-icons_555555_256x240.png");
482
+ }
483
+ .ui-state-active .ui-icon {
484
+ background-image: url("images/ui-icons_ffffff_256x240.png");
485
+ }
486
+ .ui-state-highlight .ui-icon {
487
+ background-image: url("images/ui-icons_777620_256x240.png");
488
+ }
489
+ .ui-state-error .ui-icon,
490
+ .ui-state-error-text .ui-icon {
491
+ background-image: url("images/ui-icons_cc0000_256x240.png");
492
+ }
493
+
494
+ /* positioning */
495
+ .ui-icon-blank { background-position: 16px 16px; }
496
+ .ui-icon-carat-1-n { background-position: 0 0; }
497
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
498
+ .ui-icon-carat-1-e { background-position: -32px 0; }
499
+ .ui-icon-carat-1-se { background-position: -48px 0; }
500
+ .ui-icon-carat-1-s { background-position: -64px 0; }
501
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
502
+ .ui-icon-carat-1-w { background-position: -96px 0; }
503
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
504
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
505
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
506
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
507
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
508
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
509
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
510
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
511
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
512
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
513
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
514
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
515
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
516
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
517
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
518
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
519
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
520
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
521
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
522
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
523
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
524
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
525
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
526
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
527
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
528
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
529
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
530
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
531
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
532
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
533
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
534
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
535
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
536
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
537
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
538
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
539
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
540
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
541
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
542
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
543
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
544
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
545
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
546
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
547
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
548
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
549
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
550
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
551
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
552
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
553
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
554
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
555
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
556
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
557
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
558
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
559
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
560
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
561
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
562
+ .ui-icon-extlink { background-position: -32px -80px; }
563
+ .ui-icon-newwin { background-position: -48px -80px; }
564
+ .ui-icon-refresh { background-position: -64px -80px; }
565
+ .ui-icon-shuffle { background-position: -80px -80px; }
566
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
567
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
568
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
569
+ .ui-icon-folder-open { background-position: -16px -96px; }
570
+ .ui-icon-document { background-position: -32px -96px; }
571
+ .ui-icon-document-b { background-position: -48px -96px; }
572
+ .ui-icon-note { background-position: -64px -96px; }
573
+ .ui-icon-mail-closed { background-position: -80px -96px; }
574
+ .ui-icon-mail-open { background-position: -96px -96px; }
575
+ .ui-icon-suitcase { background-position: -112px -96px; }
576
+ .ui-icon-comment { background-position: -128px -96px; }
577
+ .ui-icon-person { background-position: -144px -96px; }
578
+ .ui-icon-print { background-position: -160px -96px; }
579
+ .ui-icon-trash { background-position: -176px -96px; }
580
+ .ui-icon-locked { background-position: -192px -96px; }
581
+ .ui-icon-unlocked { background-position: -208px -96px; }
582
+ .ui-icon-bookmark { background-position: -224px -96px; }
583
+ .ui-icon-tag { background-position: -240px -96px; }
584
+ .ui-icon-home { background-position: 0 -112px; }
585
+ .ui-icon-flag { background-position: -16px -112px; }
586
+ .ui-icon-calendar { background-position: -32px -112px; }
587
+ .ui-icon-cart { background-position: -48px -112px; }
588
+ .ui-icon-pencil { background-position: -64px -112px; }
589
+ .ui-icon-clock { background-position: -80px -112px; }
590
+ .ui-icon-disk { background-position: -96px -112px; }
591
+ .ui-icon-calculator { background-position: -112px -112px; }
592
+ .ui-icon-zoomin { background-position: -128px -112px; }
593
+ .ui-icon-zoomout { background-position: -144px -112px; }
594
+ .ui-icon-search { background-position: -160px -112px; }
595
+ .ui-icon-wrench { background-position: -176px -112px; }
596
+ .ui-icon-gear { background-position: -192px -112px; }
597
+ .ui-icon-heart { background-position: -208px -112px; }
598
+ .ui-icon-star { background-position: -224px -112px; }
599
+ .ui-icon-link { background-position: -240px -112px; }
600
+ .ui-icon-cancel { background-position: 0 -128px; }
601
+ .ui-icon-plus { background-position: -16px -128px; }
602
+ .ui-icon-plusthick { background-position: -32px -128px; }
603
+ .ui-icon-minus { background-position: -48px -128px; }
604
+ .ui-icon-minusthick { background-position: -64px -128px; }
605
+ .ui-icon-close { background-position: -80px -128px; }
606
+ .ui-icon-closethick { background-position: -96px -128px; }
607
+ .ui-icon-key { background-position: -112px -128px; }
608
+ .ui-icon-lightbulb { background-position: -128px -128px; }
609
+ .ui-icon-scissors { background-position: -144px -128px; }
610
+ .ui-icon-clipboard { background-position: -160px -128px; }
611
+ .ui-icon-copy { background-position: -176px -128px; }
612
+ .ui-icon-contact { background-position: -192px -128px; }
613
+ .ui-icon-image { background-position: -208px -128px; }
614
+ .ui-icon-video { background-position: -224px -128px; }
615
+ .ui-icon-script { background-position: -240px -128px; }
616
+ .ui-icon-alert { background-position: 0 -144px; }
617
+ .ui-icon-info { background-position: -16px -144px; }
618
+ .ui-icon-notice { background-position: -32px -144px; }
619
+ .ui-icon-help { background-position: -48px -144px; }
620
+ .ui-icon-check { background-position: -64px -144px; }
621
+ .ui-icon-bullet { background-position: -80px -144px; }
622
+ .ui-icon-radio-on { background-position: -96px -144px; }
623
+ .ui-icon-radio-off { background-position: -112px -144px; }
624
+ .ui-icon-pin-w { background-position: -128px -144px; }
625
+ .ui-icon-pin-s { background-position: -144px -144px; }
626
+ .ui-icon-play { background-position: 0 -160px; }
627
+ .ui-icon-pause { background-position: -16px -160px; }
628
+ .ui-icon-seek-next { background-position: -32px -160px; }
629
+ .ui-icon-seek-prev { background-position: -48px -160px; }
630
+ .ui-icon-seek-end { background-position: -64px -160px; }
631
+ .ui-icon-seek-start { background-position: -80px -160px; }
632
+ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
633
+ .ui-icon-seek-first { background-position: -80px -160px; }
634
+ .ui-icon-stop { background-position: -96px -160px; }
635
+ .ui-icon-eject { background-position: -112px -160px; }
636
+ .ui-icon-volume-off { background-position: -128px -160px; }
637
+ .ui-icon-volume-on { background-position: -144px -160px; }
638
+ .ui-icon-power { background-position: 0 -176px; }
639
+ .ui-icon-signal-diag { background-position: -16px -176px; }
640
+ .ui-icon-signal { background-position: -32px -176px; }
641
+ .ui-icon-battery-0 { background-position: -48px -176px; }
642
+ .ui-icon-battery-1 { background-position: -64px -176px; }
643
+ .ui-icon-battery-2 { background-position: -80px -176px; }
644
+ .ui-icon-battery-3 { background-position: -96px -176px; }
645
+ .ui-icon-circle-plus { background-position: 0 -192px; }
646
+ .ui-icon-circle-minus { background-position: -16px -192px; }
647
+ .ui-icon-circle-close { background-position: -32px -192px; }
648
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
649
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
650
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
651
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
652
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
653
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
654
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
655
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
656
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
657
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
658
+ .ui-icon-circle-check { background-position: -208px -192px; }
659
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
660
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
661
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
662
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
663
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
664
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
665
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
666
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
667
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
668
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
669
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
670
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
671
+
672
+
673
+ /* Misc visuals
674
+ ----------------------------------*/
675
+
676
+ /* Corner radius */
677
+ .ui-corner-all,
678
+ .ui-corner-top,
679
+ .ui-corner-left,
680
+ .ui-corner-tl {
681
+ border-top-left-radius: 3px;
682
+ }
683
+ .ui-corner-all,
684
+ .ui-corner-top,
685
+ .ui-corner-right,
686
+ .ui-corner-tr {
687
+ border-top-right-radius: 3px;
688
+ }
689
+ .ui-corner-all,
690
+ .ui-corner-bottom,
691
+ .ui-corner-left,
692
+ .ui-corner-bl {
693
+ border-bottom-left-radius: 3px;
694
+ }
695
+ .ui-corner-all,
696
+ .ui-corner-bottom,
697
+ .ui-corner-right,
698
+ .ui-corner-br {
699
+ border-bottom-right-radius: 3px;
700
+ }
701
+
702
+ /* Overlays */
703
+ .ui-widget-overlay {
704
+ background: #aaaaaa;
705
+ opacity: .3;
706
+ filter: Alpha(Opacity=30); /* support: IE8 */
707
+ }
708
+ .ui-widget-shadow {
709
+ margin: 0px 0 0 0px;
710
+ padding: 5px;
711
+ background: #666666;
712
+ opacity: .3;
713
+ filter: Alpha(Opacity=30); /* support: IE8 */
714
+ border-radius: 8px;
715
+ }
includes/fields/datepicker.class.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Class LSOW_Custom_Field_Datepicker
5
+ */
6
+ class LSOW_Custom_Field_Datepicker extends SiteOrigin_Widget_Field_Text_Input_Base {
7
+
8
+ protected function get_input_classes() {
9
+ $input_classes = parent::get_input_classes();
10
+ $input_classes[] = 'lsow-widget-input-datepicker';
11
+ return $input_classes;
12
+ }
13
+
14
+ public function enqueue_scripts() {
15
+
16
+ /* load jQuery-ui datepicker */
17
+ wp_enqueue_script('jquery-ui-datepicker');
18
+
19
+ wp_enqueue_script('lsow-datepicker-field', plugin_dir_url(__FILE__) . 'js/datepicker-field' . SOW_BUNDLE_JS_SUFFIX . '.js', array('jquery', 'jquery-ui-datepicker'), SOW_BUNDLE_VERSION);
20
+
21
+ wp_enqueue_style('lsow-datepicker-css', plugin_dir_url(__FILE__) . 'css/jquery-ui.css', false, "1.11.4", false);
22
+ }
23
+ }
includes/fields/js/datepicker-field.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(function ($) {
2
+
3
+ var setup = function (widgetForm) {
4
+
5
+ if (typeof widgetForm.data('initialised') == 'undefined') {
6
+
7
+ $(widgetForm).find('.lsow-widget-input-datepicker').each(function (index, element) {
8
+ $(element).datepicker();
9
+ });
10
+
11
+ $(widgetForm).data('initialised', true);
12
+ }
13
+ else {
14
+ setTimeout(function () {
15
+ setup(widgetForm);
16
+ }, 500);
17
+ }
18
+ };
19
+
20
+ $(document).on('sowsetupform', function (e) {
21
+ var $form = $(e.target);
22
+
23
+ if ($form.is('.siteorigin-widget-field-repeater-item-form')) {
24
+ if ($form.is(':visible')) {
25
+ setup($form);
26
+ }
27
+ else {
28
+ $form.on('slideToggleOpenComplete', function onSlideToggleComplete() {
29
+ if ($form.is(':visible')) {
30
+ setup($form);
31
+ $form.off('slideToggleOpenComplete');
32
+ }
33
+ })
34
+ }
35
+ }
36
+ else {
37
+ setup($form);
38
+ }
39
+ });
40
+
41
+ });
includes/fields/js/datepicker-field.min.js ADDED
@@ -0,0 +1 @@
 
1
+ jQuery(function(e){var i=function(t){"undefined"==typeof t.data("initialised")?(e(t).find(".lsow-widget-input-datepicker").each(function(i,t){e(t).datepicker()}),e(t).data("initialised",!0)):setTimeout(function(){i(t)},500)};e(document).on("sowsetupform",function(t){var n=e(t.target);n.is(".siteorigin-widget-field-repeater-item-form")?n.is(":visible")?i(n):n.on("slideToggleOpenComplete",function(){n.is(":visible")&&(i(n),n.off("slideToggleOpenComplete"))}):i(n)})});
includes/fields/js/jquery-ui-timepicker-addon.js ADDED
@@ -0,0 +1,2291 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*! jQuery Timepicker Addon - v1.6.3 - 2016-04-20
2
+ * http://trentrichardson.com/examples/timepicker
3
+ * Copyright (c) 2016 Trent Richardson; Licensed MIT */
4
+ (function (factory) {
5
+ if (typeof define === 'function' && define.amd) {
6
+ define(['jquery', 'jquery-ui'], factory);
7
+ } else {
8
+ factory(jQuery);
9
+ }
10
+ }(function ($) {
11
+
12
+ /*
13
+ * Lets not redefine timepicker, Prevent "Uncaught RangeError: Maximum call stack size exceeded"
14
+ */
15
+ $.ui.timepicker = $.ui.timepicker || {};
16
+ if ($.ui.timepicker.version) {
17
+ return;
18
+ }
19
+
20
+ /*
21
+ * Extend jQueryUI, get it started with our version number
22
+ */
23
+ $.extend($.ui, {
24
+ timepicker: {
25
+ version: "1.6.3"
26
+ }
27
+ });
28
+
29
+ /*
30
+ * Timepicker manager.
31
+ * Use the singleton instance of this class, $.timepicker, to interact with the time picker.
32
+ * Settings for (groups of) time pickers are maintained in an instance object,
33
+ * allowing multiple different settings on the same page.
34
+ */
35
+ var Timepicker = function () {
36
+ this.regional = []; // Available regional settings, indexed by language code
37
+ this.regional[''] = { // Default regional settings
38
+ currentText: 'Now',
39
+ closeText: 'Done',
40
+ amNames: ['AM', 'A'],
41
+ pmNames: ['PM', 'P'],
42
+ timeFormat: 'HH:mm',
43
+ timeSuffix: '',
44
+ timeOnlyTitle: 'Choose Time',
45
+ timeText: 'Time',
46
+ hourText: 'Hour',
47
+ minuteText: 'Minute',
48
+ secondText: 'Second',
49
+ millisecText: 'Millisecond',
50
+ microsecText: 'Microsecond',
51
+ timezoneText: 'Time Zone',
52
+ isRTL: false
53
+ };
54
+ this._defaults = { // Global defaults for all the datetime picker instances
55
+ showButtonPanel: true,
56
+ timeOnly: false,
57
+ timeOnlyShowDate: false,
58
+ showHour: null,
59
+ showMinute: null,
60
+ showSecond: null,
61
+ showMillisec: null,
62
+ showMicrosec: null,
63
+ showTimezone: null,
64
+ showTime: true,
65
+ stepHour: 1,
66
+ stepMinute: 1,
67
+ stepSecond: 1,
68
+ stepMillisec: 1,
69
+ stepMicrosec: 1,
70
+ hour: 0,
71
+ minute: 0,
72
+ second: 0,
73
+ millisec: 0,
74
+ microsec: 0,
75
+ timezone: null,
76
+ hourMin: 0,
77
+ minuteMin: 0,
78
+ secondMin: 0,
79
+ millisecMin: 0,
80
+ microsecMin: 0,
81
+ hourMax: 23,
82
+ minuteMax: 59,
83
+ secondMax: 59,
84
+ millisecMax: 999,
85
+ microsecMax: 999,
86
+ minDateTime: null,
87
+ maxDateTime: null,
88
+ maxTime: null,
89
+ minTime: null,
90
+ onSelect: null,
91
+ hourGrid: 0,
92
+ minuteGrid: 0,
93
+ secondGrid: 0,
94
+ millisecGrid: 0,
95
+ microsecGrid: 0,
96
+ alwaysSetTime: true,
97
+ separator: ' ',
98
+ altFieldTimeOnly: true,
99
+ altTimeFormat: null,
100
+ altSeparator: null,
101
+ altTimeSuffix: null,
102
+ altRedirectFocus: true,
103
+ pickerTimeFormat: null,
104
+ pickerTimeSuffix: null,
105
+ showTimepicker: true,
106
+ timezoneList: null,
107
+ addSliderAccess: false,
108
+ sliderAccessArgs: null,
109
+ controlType: 'slider',
110
+ oneLine: false,
111
+ defaultValue: null,
112
+ parse: 'strict',
113
+ afterInject: null
114
+ };
115
+ $.extend(this._defaults, this.regional['']);
116
+ };
117
+
118
+ $.extend(Timepicker.prototype, {
119
+ $input: null,
120
+ $altInput: null,
121
+ $timeObj: null,
122
+ inst: null,
123
+ hour_slider: null,
124
+ minute_slider: null,
125
+ second_slider: null,
126
+ millisec_slider: null,
127
+ microsec_slider: null,
128
+ timezone_select: null,
129
+ maxTime: null,
130
+ minTime: null,
131
+ hour: 0,
132
+ minute: 0,
133
+ second: 0,
134
+ millisec: 0,
135
+ microsec: 0,
136
+ timezone: null,
137
+ hourMinOriginal: null,
138
+ minuteMinOriginal: null,
139
+ secondMinOriginal: null,
140
+ millisecMinOriginal: null,
141
+ microsecMinOriginal: null,
142
+ hourMaxOriginal: null,
143
+ minuteMaxOriginal: null,
144
+ secondMaxOriginal: null,
145
+ millisecMaxOriginal: null,
146
+ microsecMaxOriginal: null,
147
+ ampm: '',
148
+ formattedDate: '',
149
+ formattedTime: '',
150
+ formattedDateTime: '',
151
+ timezoneList: null,
152
+ units: ['hour', 'minute', 'second', 'millisec', 'microsec'],
153
+ support: {},
154
+ control: null,
155
+
156
+ /*
157
+ * Override the default settings for all instances of the time picker.
158
+ * @param {Object} settings object - the new settings to use as defaults (anonymous object)
159
+ * @return {Object} the manager object
160
+ */
161
+ setDefaults: function (settings) {
162
+ extendRemove(this._defaults, settings || {});
163
+ return this;
164
+ },
165
+
166
+ /*
167
+ * Create a new Timepicker instance
168
+ */
169
+ _newInst: function ($input, opts) {
170
+ var tp_inst = new Timepicker(),
171
+ inlineSettings = {},
172
+ fns = {},
173
+ overrides, i;
174
+
175
+ for (var attrName in this._defaults) {
176
+ if (this._defaults.hasOwnProperty(attrName)) {
177
+ var attrValue = $input.attr('time:' + attrName);
178
+ if (attrValue) {
179
+ try {
180
+ inlineSettings[attrName] = eval(attrValue);
181
+ } catch (err) {
182
+ inlineSettings[attrName] = attrValue;
183
+ }
184
+ }
185
+ }
186
+ }
187
+
188
+ overrides = {
189
+ beforeShow: function (input, dp_inst) {
190
+ if ($.isFunction(tp_inst._defaults.evnts.beforeShow)) {
191
+ return tp_inst._defaults.evnts.beforeShow.call($input[0], input, dp_inst, tp_inst);
192
+ }
193
+ },
194
+ onChangeMonthYear: function (year, month, dp_inst) {
195
+ // Update the time as well : this prevents the time from disappearing from the $input field.
196
+ // tp_inst._updateDateTime(dp_inst);
197
+ if ($.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)) {
198
+ tp_inst._defaults.evnts.onChangeMonthYear.call($input[0], year, month, dp_inst, tp_inst);
199
+ }
200
+ },
201
+ onClose: function (dateText, dp_inst) {
202
+ if (tp_inst.timeDefined === true && $input.val() !== '') {
203
+ tp_inst._updateDateTime(dp_inst);
204
+ }
205
+ if ($.isFunction(tp_inst._defaults.evnts.onClose)) {
206
+ tp_inst._defaults.evnts.onClose.call($input[0], dateText, dp_inst, tp_inst);
207
+ }
208
+ }
209
+ };
210
+ for (i in overrides) {
211
+ if (overrides.hasOwnProperty(i)) {
212
+ fns[i] = opts[i] || this._defaults[i] || null;
213
+ }
214
+ }
215
+
216
+ tp_inst._defaults = $.extend({}, this._defaults, inlineSettings, opts, overrides, {
217
+ evnts: fns,
218
+ timepicker: tp_inst // add timepicker as a property of datepicker: $.datepicker._get(dp_inst, 'timepicker');
219
+ });
220
+ tp_inst.amNames = $.map(tp_inst._defaults.amNames, function (val) {
221
+ return val.toUpperCase();
222
+ });
223
+ tp_inst.pmNames = $.map(tp_inst._defaults.pmNames, function (val) {
224
+ return val.toUpperCase();
225
+ });
226
+
227
+ // detect which units are supported
228
+ tp_inst.support = detectSupport(
229
+ tp_inst._defaults.timeFormat +
230
+ (tp_inst._defaults.pickerTimeFormat ? tp_inst._defaults.pickerTimeFormat : '') +
231
+ (tp_inst._defaults.altTimeFormat ? tp_inst._defaults.altTimeFormat : ''));
232
+
233
+ // controlType is string - key to our this._controls
234
+ if (typeof(tp_inst._defaults.controlType) === 'string') {
235
+ if (tp_inst._defaults.controlType === 'slider' && typeof($.ui.slider) === 'undefined') {
236
+ tp_inst._defaults.controlType = 'select';
237
+ }
238
+ tp_inst.control = tp_inst._controls[tp_inst._defaults.controlType];
239
+ }
240
+ // controlType is an object and must implement create, options, value methods
241
+ else {
242
+ tp_inst.control = tp_inst._defaults.controlType;
243
+ }
244
+
245
+ // prep the timezone options
246
+ var timezoneList = [-720, -660, -600, -570, -540, -480, -420, -360, -300, -270, -240, -210, -180, -120, -60,
247
+ 0, 60, 120, 180, 210, 240, 270, 300, 330, 345, 360, 390, 420, 480, 525, 540, 570, 600, 630, 660, 690, 720, 765, 780, 840];
248
+ if (tp_inst._defaults.timezoneList !== null) {
249
+ timezoneList = tp_inst._defaults.timezoneList;
250
+ }
251
+ var tzl = timezoneList.length, tzi = 0, tzv = null;
252
+ if (tzl > 0 && typeof timezoneList[0] !== 'object') {
253
+ for (; tzi < tzl; tzi++) {
254
+ tzv = timezoneList[tzi];
255
+ timezoneList[tzi] = { value: tzv, label: $.timepicker.timezoneOffsetString(tzv, tp_inst.support.iso8601) };
256
+ }
257
+ }
258
+ tp_inst._defaults.timezoneList = timezoneList;
259
+
260
+ // set the default units
261
+ tp_inst.timezone = tp_inst._defaults.timezone !== null ? $.timepicker.timezoneOffsetNumber(tp_inst._defaults.timezone) :
262
+ ((new Date()).getTimezoneOffset() * -1);
263
+ tp_inst.hour = tp_inst._defaults.hour < tp_inst._defaults.hourMin ? tp_inst._defaults.hourMin :
264
+ tp_inst._defaults.hour > tp_inst._defaults.hourMax ? tp_inst._defaults.hourMax : tp_inst._defaults.hour;
265
+ tp_inst.minute = tp_inst._defaults.minute < tp_inst._defaults.minuteMin ? tp_inst._defaults.minuteMin :
266
+ tp_inst._defaults.minute > tp_inst._defaults.minuteMax ? tp_inst._defaults.minuteMax : tp_inst._defaults.minute;
267
+ tp_inst.second = tp_inst._defaults.second < tp_inst._defaults.secondMin ? tp_inst._defaults.secondMin :
268
+ tp_inst._defaults.second > tp_inst._defaults.secondMax ? tp_inst._defaults.secondMax : tp_inst._defaults.second;
269
+ tp_inst.millisec = tp_inst._defaults.millisec < tp_inst._defaults.millisecMin ? tp_inst._defaults.millisecMin :
270
+ tp_inst._defaults.millisec > tp_inst._defaults.millisecMax ? tp_inst._defaults.millisecMax : tp_inst._defaults.millisec;
271
+ tp_inst.microsec = tp_inst._defaults.microsec < tp_inst._defaults.microsecMin ? tp_inst._defaults.microsecMin :
272
+ tp_inst._defaults.microsec > tp_inst._defaults.microsecMax ? tp_inst._defaults.microsecMax : tp_inst._defaults.microsec;
273
+ tp_inst.ampm = '';
274
+ tp_inst.$input = $input;
275
+
276
+ if (tp_inst._defaults.altField) {
277
+ tp_inst.$altInput = $(tp_inst._defaults.altField);
278
+ if (tp_inst._defaults.altRedirectFocus === true) {
279
+ tp_inst.$altInput.css({
280
+ cursor: 'pointer'
281
+ }).focus(function () {
282
+ $input.trigger("focus");
283
+ });
284
+ }
285
+ }
286
+
287
+ if (tp_inst._defaults.minDate === 0 || tp_inst._defaults.minDateTime === 0) {
288
+ tp_inst._defaults.minDate = new Date();
289
+ }
290
+ if (tp_inst._defaults.maxDate === 0 || tp_inst._defaults.maxDateTime === 0) {
291
+ tp_inst._defaults.maxDate = new Date();
292
+ }
293
+
294
+ // datepicker needs minDate/maxDate, timepicker needs minDateTime/maxDateTime..
295
+ if (tp_inst._defaults.minDate !== undefined && tp_inst._defaults.minDate instanceof Date) {
296
+ tp_inst._defaults.minDateTime = new Date(tp_inst._defaults.minDate.getTime());
297
+ }
298
+ if (tp_inst._defaults.minDateTime !== undefined && tp_inst._defaults.minDateTime instanceof Date) {
299
+ tp_inst._defaults.minDate = new Date(tp_inst._defaults.minDateTime.getTime());
300
+ }
301
+ if (tp_inst._defaults.maxDate !== undefined && tp_inst._defaults.maxDate instanceof Date) {
302
+ tp_inst._defaults.maxDateTime = new Date(tp_inst._defaults.maxDate.getTime());
303
+ }
304
+ if (tp_inst._defaults.maxDateTime !== undefined && tp_inst._defaults.maxDateTime instanceof Date) {
305
+ tp_inst._defaults.maxDate = new Date(tp_inst._defaults.maxDateTime.getTime());
306
+ }
307
+ tp_inst.$input.bind('focus', function () {
308
+ tp_inst._onFocus();
309
+ });
310
+
311
+ return tp_inst;
312
+ },
313
+
314
+ /*
315
+ * add our sliders to the calendar
316
+ */
317
+ _addTimePicker: function (dp_inst) {
318
+ var currDT = $.trim((this.$altInput && this._defaults.altFieldTimeOnly) ? this.$input.val() + ' ' + this.$altInput.val() : this.$input.val());
319
+
320
+ this.timeDefined = this._parseTime(currDT);
321
+ this._limitMinMaxDateTime(dp_inst, false);
322
+ this._injectTimePicker();
323
+ this._afterInject();
324
+ },
325
+
326
+ /*
327
+ * parse the time string from input value or _setTime
328
+ */
329
+ _parseTime: function (timeString, withDate) {
330
+ if (!this.inst) {
331
+ this.inst = $.datepicker._getInst(this.$input[0]);
332
+ }
333
+
334
+ if (withDate || !this._defaults.timeOnly) {
335
+ var dp_dateFormat = $.datepicker._get(this.inst, 'dateFormat');
336
+ try {
337
+ var parseRes = parseDateTimeInternal(dp_dateFormat, this._defaults.timeFormat, timeString, $.datepicker._getFormatConfig(this.inst), this._defaults);
338
+ if (!parseRes.timeObj) {
339
+ return false;
340
+ }
341
+ $.extend(this, parseRes.timeObj);
342
+ } catch (err) {
343
+ $.timepicker.log("Error parsing the date/time string: " + err +
344
+ "\ndate/time string = " + timeString +
345
+ "\ntimeFormat = " + this._defaults.timeFormat +
346
+ "\ndateFormat = " + dp_dateFormat);
347
+ return false;
348
+ }
349
+ return true;
350
+ } else {
351
+ var timeObj = $.datepicker.parseTime(this._defaults.timeFormat, timeString, this._defaults);
352
+ if (!timeObj) {
353
+ return false;
354
+ }
355
+ $.extend(this, timeObj);
356
+ return true;
357
+ }
358
+ },
359
+
360
+ /*
361
+ * Handle callback option after injecting timepicker
362
+ */
363
+ _afterInject: function() {
364
+ var o = this.inst.settings;
365
+ if ($.isFunction(o.afterInject)) {
366
+ o.afterInject.call(this);
367
+ }
368
+ },
369
+
370
+ /*
371
+ * generate and inject html for timepicker into ui datepicker
372
+ */
373
+ _injectTimePicker: function () {
374
+ var $dp = this.inst.dpDiv,
375
+ o = this.inst.settings,
376
+ tp_inst = this,
377
+ litem = '',
378
+ uitem = '',
379
+ show = null,
380
+ max = {},
381
+ gridSize = {},
382
+ size = null,
383
+ i = 0,
384
+ l = 0;
385
+
386
+ // Prevent displaying twice
387
+ if ($dp.find("div.ui-timepicker-div").length === 0 && o.showTimepicker) {
388
+ var noDisplay = ' ui_tpicker_unit_hide',
389
+ html = '<div class="ui-timepicker-div' + (o.isRTL ? ' ui-timepicker-rtl' : '') + (o.oneLine && o.controlType === 'select' ? ' ui-timepicker-oneLine' : '') + '"><dl>' + '<dt class="ui_tpicker_time_label' + ((o.showTime) ? '' : noDisplay) + '">' + o.timeText + '</dt>' +
390
+ '<dd class="ui_tpicker_time '+ ((o.showTime) ? '' : noDisplay) + '"><input class="ui_tpicker_time_input" ' + (o.timeInput ? '' : 'disabled') + '/></dd>';
391
+
392
+ // Create the markup
393
+ for (i = 0, l = this.units.length; i < l; i++) {
394
+ litem = this.units[i];
395
+ uitem = litem.substr(0, 1).toUpperCase() + litem.substr(1);
396
+ show = o['show' + uitem] !== null ? o['show' + uitem] : this.support[litem];
397
+
398
+ // Added by Peter Medeiros:
399
+ // - Figure out what the hour/minute/second max should be based on the step values.
400
+ // - Example: if stepMinute is 15, then minMax is 45.
401
+ max[litem] = parseInt((o[litem + 'Max'] - ((o[litem + 'Max'] - o[litem + 'Min']) % o['step' + uitem])), 10);
402
+ gridSize[litem] = 0;
403
+
404
+ html += '<dt class="ui_tpicker_' + litem + '_label' + (show ? '' : noDisplay) + '">' + o[litem + 'Text'] + '</dt>' +
405
+ '<dd class="ui_tpicker_' + litem + (show ? '' : noDisplay) + '"><div class="ui_tpicker_' + litem + '_slider' + (show ? '' : noDisplay) + '"></div>';
406
+
407
+ if (show && o[litem + 'Grid'] > 0) {
408
+ html += '<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>';
409
+
410
+ if (litem === 'hour') {
411
+ for (var h = o[litem + 'Min']; h <= max[litem]; h += parseInt(o[litem + 'Grid'], 10)) {
412
+ gridSize[litem]++;
413
+ var tmph = $.datepicker.formatTime(this.support.ampm ? 'hht' : 'HH', {hour: h}, o);
414
+ html += '<td data-for="' + litem + '">' + tmph + '</td>';
415
+ }
416
+ }
417
+ else {
418
+ for (var m = o[litem + 'Min']; m <= max[litem]; m += parseInt(o[litem + 'Grid'], 10)) {
419
+ gridSize[litem]++;
420
+ html += '<td data-for="' + litem + '">' + ((m < 10) ? '0' : '') + m + '</td>';
421
+ }
422
+ }
423
+
424
+ html += '</tr></table></div>';
425
+ }
426
+ html += '</dd>';
427
+ }
428
+
429
+ // Timezone
430
+ var showTz = o.showTimezone !== null ? o.showTimezone : this.support.timezone;
431
+ html += '<dt class="ui_tpicker_timezone_label' + (showTz ? '' : noDisplay) + '">' + o.timezoneText + '</dt>';
432
+ html += '<dd class="ui_tpicker_timezone' + (showTz ? '' : noDisplay) + '"></dd>';
433
+
434
+ // Create the elements from string
435
+ html += '</dl></div>';
436
+ var $tp = $(html);
437
+
438
+ // if we only want time picker...
439
+ if (o.timeOnly === true) {
440
+ $tp.prepend('<div class="ui-widget-header ui-helper-clearfix ui-corner-all">' + '<div class="ui-datepicker-title">' + o.timeOnlyTitle + '</div>' + '</div>');
441
+ $dp.find('.ui-datepicker-header, .ui-datepicker-calendar').hide();
442
+ }
443
+
444
+ // add sliders, adjust grids, add events
445
+ for (i = 0, l = tp_inst.units.length; i < l; i++) {
446
+ litem = tp_inst.units[i];
447
+ uitem = litem.substr(0, 1).toUpperCase() + litem.substr(1);
448
+ show = o['show' + uitem] !== null ? o['show' + uitem] : this.support[litem];
449
+
450
+ // add the slider
451
+ tp_inst[litem + '_slider'] = tp_inst.control.create(tp_inst, $tp.find('.ui_tpicker_' + litem + '_slider'), litem, tp_inst[litem], o[litem + 'Min'], max[litem], o['step' + uitem]);
452
+
453
+ // adjust the grid and add click event
454
+ if (show && o[litem + 'Grid'] > 0) {
455
+ size = 100 * gridSize[litem] * o[litem + 'Grid'] / (max[litem] - o[litem + 'Min']);
456
+ $tp.find('.ui_tpicker_' + litem + ' table').css({
457
+ width: size + "%",
458
+ marginLeft: o.isRTL ? '0' : ((size / (-2 * gridSize[litem])) + "%"),
459
+ marginRight: o.isRTL ? ((size / (-2 * gridSize[litem])) + "%") : '0',
460
+ borderCollapse: 'collapse'
461
+ }).find("td").click(function (e) {
462
+ var $t = $(this),
463
+ h = $t.html(),
464
+ n = parseInt(h.replace(/[^0-9]/g), 10),
465
+ ap = h.replace(/[^apm]/ig),
466
+ f = $t.data('for'); // loses scope, so we use data-for
467
+
468
+ if (f === 'hour') {
469
+ if (ap.indexOf('p') !== -1 && n < 12) {
470
+ n += 12;
471
+ }
472
+ else {
473
+ if (ap.indexOf('a') !== -1 && n === 12) {
474
+ n = 0;
475
+ }
476
+ }
477
+ }
478
+
479
+ tp_inst.control.value(tp_inst, tp_inst[f + '_slider'], litem, n);
480
+
481
+ tp_inst._onTimeChange();
482
+ tp_inst._onSelectHandler();
483
+ }).css({
484
+ cursor: 'pointer',
485
+ width: (100 / gridSize[litem]) + '%',
486
+ textAlign: 'center',
487
+ overflow: 'hidden'
488
+ });
489
+ } // end if grid > 0
490
+ } // end for loop
491
+
492
+ // Add timezone options
493
+ this.timezone_select = $tp.find('.ui_tpicker_timezone').append('<select></select>').find("select");
494
+ $.fn.append.apply(this.timezone_select,
495
+ $.map(o.timezoneList, function (val, idx) {
496
+ return $("<option />").val(typeof val === "object" ? val.value : val).text(typeof val === "object" ? val.label : val);
497
+ }));
498
+ if (typeof(this.timezone) !== "undefined" && this.timezone !== null && this.timezone !== "") {
499
+ var local_timezone = (new Date(this.inst.selectedYear, this.inst.selectedMonth, this.inst.selectedDay, 12)).getTimezoneOffset() * -1;
500
+ if (local_timezone === this.timezone) {
501
+ selectLocalTimezone(tp_inst);
502
+ } else {
503
+ this.timezone_select.val(this.timezone);
504
+ }
505
+ } else {
506
+ if (typeof(this.hour) !== "undefined" && this.hour !== null && this.hour !== "") {
507
+ this.timezone_select.val(o.timezone);
508
+ } else {
509
+ selectLocalTimezone(tp_inst);
510
+ }
511
+ }
512
+ this.timezone_select.change(function () {
513
+ tp_inst._onTimeChange();
514
+ tp_inst._onSelectHandler();
515
+ tp_inst._afterInject();
516
+ });
517
+ // End timezone options
518
+
519
+ // inject timepicker into datepicker
520
+ var $buttonPanel = $dp.find('.ui-datepicker-buttonpane');
521
+ if ($buttonPanel.length) {
522
+ $buttonPanel.before($tp);
523
+ } else {
524
+ $dp.append($tp);
525
+ }
526
+
527
+ this.$timeObj = $tp.find('.ui_tpicker_time_input');
528
+ this.$timeObj.change(function () {
529
+ var timeFormat = tp_inst.inst.settings.timeFormat;
530
+ var parsedTime = $.datepicker.parseTime(timeFormat, this.value);
531
+ var update = new Date();
532
+ if (parsedTime) {
533
+ update.setHours(parsedTime.hour);
534
+ update.setMinutes(parsedTime.minute);
535
+ update.setSeconds(parsedTime.second);
536
+ $.datepicker._setTime(tp_inst.inst, update);
537
+ } else {
538
+ this.value = tp_inst.formattedTime;
539
+ this.blur();
540
+ }
541
+ });
542
+
543
+ if (this.inst !== null) {
544
+ var timeDefined = this.timeDefined;
545
+ this._onTimeChange();
546
+ this.timeDefined = timeDefined;
547
+ }
548
+
549
+ // slideAccess integration: http://trentrichardson.com/2011/11/11/jquery-ui-sliders-and-touch-accessibility/
550
+ if (this._defaults.addSliderAccess) {
551
+ var sliderAccessArgs = this._defaults.sliderAccessArgs,
552
+ rtl = this._defaults.isRTL;
553
+ sliderAccessArgs.isRTL = rtl;
554
+
555
+ setTimeout(function () { // fix for inline mode
556
+ if ($tp.find('.ui-slider-access').length === 0) {
557
+ $tp.find('.ui-slider:visible').sliderAccess(sliderAccessArgs);
558
+
559
+ // fix any grids since sliders are shorter
560
+ var sliderAccessWidth = $tp.find('.ui-slider-access:eq(0)').outerWidth(true);
561
+ if (sliderAccessWidth) {
562
+ $tp.find('table:visible').each(function () {
563
+ var $g = $(this),
564
+ oldWidth = $g.outerWidth(),
565
+ oldMarginLeft = $g.css(rtl ? 'marginRight' : 'marginLeft').toString().replace('%', ''),
566
+ newWidth = oldWidth - sliderAccessWidth,
567
+ newMarginLeft = ((oldMarginLeft * newWidth) / oldWidth) + '%',
568
+ css = { width: newWidth, marginRight: 0, marginLeft: 0 };
569
+ css[rtl ? 'marginRight' : 'marginLeft'] = newMarginLeft;
570
+ $g.css(css);
571
+ });
572
+ }
573
+ }
574
+ }, 10);
575
+ }
576
+ // end slideAccess integration
577
+
578
+ tp_inst._limitMinMaxDateTime(this.inst, true);
579
+ }
580
+ },
581
+
582
+ /*
583
+ * This function tries to limit the ability to go outside the
584
+ * min/max date range
585
+ */
586
+ _limitMinMaxDateTime: function (dp_inst, adjustSliders) {
587
+ var o = this._defaults,
588
+ dp_date = new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay);
589
+
590
+ if (!this._defaults.showTimepicker) {
591
+ return;
592
+ } // No time so nothing to check here
593
+
594
+ if ($.datepicker._get(dp_inst, 'minDateTime') !== null && $.datepicker._get(dp_inst, 'minDateTime') !== undefined && dp_date) {
595
+ var minDateTime = $.datepicker._get(dp_inst, 'minDateTime'),
596
+ minDateTimeDate = new Date(minDateTime.getFullYear(), minDateTime.getMonth(), minDateTime.getDate(), 0, 0, 0, 0);
597
+
598
+ if (this.hourMinOriginal === null || this.minuteMinOriginal === null || this.secondMinOriginal === null || this.millisecMinOriginal === null || this.microsecMinOriginal === null) {
599
+ this.hourMinOriginal = o.hourMin;
600
+ this.minuteMinOriginal = o.minuteMin;
601
+ this.secondMinOriginal = o.secondMin;
602
+ this.millisecMinOriginal = o.millisecMin;
603
+ this.microsecMinOriginal = o.microsecMin;
604
+ }
605
+
606
+ if (dp_inst.settings.timeOnly || minDateTimeDate.getTime() === dp_date.getTime()) {
607
+ this._defaults.hourMin = minDateTime.getHours();
608
+ if (this.hour <= this._defaults.hourMin) {
609
+ this.hour = this._defaults.hourMin;
610
+ this._defaults.minuteMin = minDateTime.getMinutes();
611
+ if (this.minute <= this._defaults.minuteMin) {
612
+ this.minute = this._defaults.minuteMin;
613
+ this._defaults.secondMin = minDateTime.getSeconds();
614
+ if (this.second <= this._defaults.secondMin) {
615
+ this.second = this._defaults.secondMin;
616
+ this._defaults.millisecMin = minDateTime.getMilliseconds();
617
+ if (this.millisec <= this._defaults.millisecMin) {
618
+ this.millisec = this._defaults.millisecMin;
619
+ this._defaults.microsecMin = minDateTime.getMicroseconds();
620
+ } else {
621
+ if (this.microsec < this._defaults.microsecMin) {
622
+ this.microsec = this._defaults.microsecMin;
623
+ }
624
+ this._defaults.microsecMin = this.microsecMinOriginal;
625
+ }
626
+ } else {
627
+ this._defaults.millisecMin = this.millisecMinOriginal;
628
+ this._defaults.microsecMin = this.microsecMinOriginal;
629
+ }
630
+ } else {
631
+ this._defaults.secondMin = this.secondMinOriginal;
632
+ this._defaults.millisecMin = this.millisecMinOriginal;
633
+ this._defaults.microsecMin = this.microsecMinOriginal;
634
+ }
635
+ } else {
636
+ this._defaults.minuteMin = this.minuteMinOriginal;
637
+ this._defaults.secondMin = this.secondMinOriginal;
638
+ this._defaults.millisecMin = this.millisecMinOriginal;
639
+ this._defaults.microsecMin = this.microsecMinOriginal;
640
+ }
641
+ } else {
642
+ this._defaults.hourMin = this.hourMinOriginal;
643
+ this._defaults.minuteMin = this.minuteMinOriginal;
644
+ this._defaults.secondMin = this.secondMinOriginal;
645
+ this._defaults.millisecMin = this.millisecMinOriginal;
646
+ this._defaults.microsecMin = this.microsecMinOriginal;
647
+ }
648
+ }
649
+
650
+ if ($.datepicker._get(dp_inst, 'maxDateTime') !== null && $.datepicker._get(dp_inst, 'maxDateTime') !== undefined && dp_date) {
651
+ var maxDateTime = $.datepicker._get(dp_inst, 'maxDateTime'),
652
+ maxDateTimeDate = new Date(maxDateTime.getFullYear(), maxDateTime.getMonth(), maxDateTime.getDate(), 0, 0, 0, 0);
653
+
654
+ if (this.hourMaxOriginal === null || this.minuteMaxOriginal === null || this.secondMaxOriginal === null || this.millisecMaxOriginal === null) {
655
+ this.hourMaxOriginal = o.hourMax;
656
+ this.minuteMaxOriginal = o.minuteMax;
657
+ this.secondMaxOriginal = o.secondMax;
658
+ this.millisecMaxOriginal = o.millisecMax;
659
+ this.microsecMaxOriginal = o.microsecMax;
660
+ }
661
+
662
+ if (dp_inst.settings.timeOnly || maxDateTimeDate.getTime() === dp_date.getTime()) {
663
+ this._defaults.hourMax = maxDateTime.getHours();
664
+ if (this.hour >= this._defaults.hourMax) {
665
+ this.hour = this._defaults.hourMax;
666
+ this._defaults.minuteMax = maxDateTime.getMinutes();
667
+ if (this.minute >= this._defaults.minuteMax) {
668
+ this.minute = this._defaults.minuteMax;
669
+ this._defaults.secondMax = maxDateTime.getSeconds();
670
+ if (this.second >= this._defaults.secondMax) {
671
+ this.second = this._defaults.secondMax;
672
+ this._defaults.millisecMax = maxDateTime.getMilliseconds();
673
+ if (this.millisec >= this._defaults.millisecMax) {
674
+ this.millisec = this._defaults.millisecMax;
675
+ this._defaults.microsecMax = maxDateTime.getMicroseconds();
676
+ } else {
677
+ if (this.microsec > this._defaults.microsecMax) {
678
+ this.microsec = this._defaults.microsecMax;
679
+ }
680
+ this._defaults.microsecMax = this.microsecMaxOriginal;
681
+ }
682
+ } else {
683
+ this._defaults.millisecMax = this.millisecMaxOriginal;
684
+ this._defaults.microsecMax = this.microsecMaxOriginal;
685
+ }
686
+ } else {
687
+ this._defaults.secondMax = this.secondMaxOriginal;
688
+ this._defaults.millisecMax = this.millisecMaxOriginal;
689
+ this._defaults.microsecMax = this.microsecMaxOriginal;
690
+ }
691
+ } else {
692
+ this._defaults.minuteMax = this.minuteMaxOriginal;
693
+ this._defaults.secondMax = this.secondMaxOriginal;
694
+ this._defaults.millisecMax = this.millisecMaxOriginal;
695
+ this._defaults.microsecMax = this.microsecMaxOriginal;
696
+ }
697
+ } else {
698
+ this._defaults.hourMax = this.hourMaxOriginal;
699
+ this._defaults.minuteMax = this.minuteMaxOriginal;
700
+ this._defaults.secondMax = this.secondMaxOriginal;
701
+ this._defaults.millisecMax = this.millisecMaxOriginal;
702
+ this._defaults.microsecMax = this.microsecMaxOriginal;
703
+ }
704
+ }
705
+
706
+ if (dp_inst.settings.minTime!==null) {
707
+ var tempMinTime=new Date("01/01/1970 " + dp_inst.settings.minTime);
708
+ if (this.hour<tempMinTime.getHours()) {
709
+ this.hour=this._defaults.hourMin=tempMinTime.getHours();
710
+ this.minute=this._defaults.minuteMin=tempMinTime.getMinutes();
711
+ } else if (this.hour===tempMinTime.getHours() && this.minute<tempMinTime.getMinutes()) {
712
+ this.minute=this._defaults.minuteMin=tempMinTime.getMinutes();
713
+ } else {
714
+ if (this._defaults.hourMin<tempMinTime.getHours()) {
715
+ this._defaults.hourMin=tempMinTime.getHours();
716
+ this._defaults.minuteMin=tempMinTime.getMinutes();
717
+ } else if (this._defaults.hourMin===tempMinTime.getHours()===this.hour && this._defaults.minuteMin<tempMinTime.getMinutes()) {
718
+ this._defaults.minuteMin=tempMinTime.getMinutes();
719
+ } else {
720
+ this._defaults.minuteMin=0;
721
+ }
722
+ }
723
+ }
724
+
725
+ if (dp_inst.settings.maxTime!==null) {
726
+ var tempMaxTime=new Date("01/01/1970 " + dp_inst.settings.maxTime);
727
+ if (this.hour>tempMaxTime.getHours()) {
728
+ this.hour=this._defaults.hourMax=tempMaxTime.getHours();
729
+ this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
730
+ } else if (this.hour===tempMaxTime.getHours() && this.minute>tempMaxTime.getMinutes()) {
731
+ this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
732
+ } else {
733
+ if (this._defaults.hourMax>tempMaxTime.getHours()) {
734
+ this._defaults.hourMax=tempMaxTime.getHours();
735
+ this._defaults.minuteMax=tempMaxTime.getMinutes();
736
+ } else if (this._defaults.hourMax===tempMaxTime.getHours()===this.hour && this._defaults.minuteMax>tempMaxTime.getMinutes()) {
737
+ this._defaults.minuteMax=tempMaxTime.getMinutes();
738
+ } else {
739
+ this._defaults.minuteMax=59;
740
+ }
741
+ }
742
+ }
743
+
744
+ if (adjustSliders !== undefined && adjustSliders === true) {
745
+ var hourMax = parseInt((this._defaults.hourMax - ((this._defaults.hourMax - this._defaults.hourMin) % this._defaults.stepHour)), 10),
746
+ minMax = parseInt((this._defaults.minuteMax - ((this._defaults.minuteMax - this._defaults.minuteMin) % this._defaults.stepMinute)), 10),
747
+ secMax = parseInt((this._defaults.secondMax - ((this._defaults.secondMax - this._defaults.secondMin) % this._defaults.stepSecond)), 10),
748
+ millisecMax = parseInt((this._defaults.millisecMax - ((this._defaults.millisecMax - this._defaults.millisecMin) % this._defaults.stepMillisec)), 10),
749
+ microsecMax = parseInt((this._defaults.microsecMax - ((this._defaults.microsecMax - this._defaults.microsecMin) % this._defaults.stepMicrosec)), 10);
750
+
751
+ if (this.hour_slider) {
752
+ this.control.options(this, this.hour_slider, 'hour', { min: this._defaults.hourMin, max: hourMax, step: this._defaults.stepHour });
753
+ this.control.value(this, this.hour_slider, 'hour', this.hour - (this.hour % this._defaults.stepHour));
754
+ }
755
+ if (this.minute_slider) {
756
+ this.control.options(this, this.minute_slider, 'minute', { min: this._defaults.minuteMin, max: minMax, step: this._defaults.stepMinute });
757
+ this.control.value(this, this.minute_slider, 'minute', this.minute - (this.minute % this._defaults.stepMinute));
758
+ }
759
+ if (this.second_slider) {
760
+ this.control.options(this, this.second_slider, 'second', { min: this._defaults.secondMin, max: secMax, step: this._defaults.stepSecond });
761
+ this.control.value(this, this.second_slider, 'second', this.second - (this.second % this._defaults.stepSecond));
762
+ }
763
+ if (this.millisec_slider) {
764
+ this.control.options(this, this.millisec_slider, 'millisec', { min: this._defaults.millisecMin, max: millisecMax, step: this._defaults.stepMillisec });
765
+ this.control.value(this, this.millisec_slider, 'millisec', this.millisec - (this.millisec % this._defaults.stepMillisec));
766
+ }
767
+ if (this.microsec_slider) {
768
+ this.control.options(this, this.microsec_slider, 'microsec', { min: this._defaults.microsecMin, max: microsecMax, step: this._defaults.stepMicrosec });
769
+ this.control.value(this, this.microsec_slider, 'microsec', this.microsec - (this.microsec % this._defaults.stepMicrosec));
770
+ }
771
+ }
772
+
773
+ },
774
+
775
+ /*
776
+ * when a slider moves, set the internal time...
777
+ * on time change is also called when the time is updated in the text field
778
+ */
779
+ _onTimeChange: function () {
780
+ if (!this._defaults.showTimepicker) {
781
+ return;
782
+ }
783
+ var hour = (this.hour_slider) ? this.control.value(this, this.hour_slider, 'hour') : false,
784
+ minute = (this.minute_slider) ? this.control.value(this, this.minute_slider, 'minute') : false,
785
+ second = (this.second_slider) ? this.control.value(this, this.second_slider, 'second') : false,
786
+ millisec = (this.millisec_slider) ? this.control.value(this, this.millisec_slider, 'millisec') : false,
787
+ microsec = (this.microsec_slider) ? this.control.value(this, this.microsec_slider, 'microsec') : false,
788
+ timezone = (this.timezone_select) ? this.timezone_select.val() : false,
789
+ o = this._defaults,
790
+ pickerTimeFormat = o.pickerTimeFormat || o.timeFormat,
791
+ pickerTimeSuffix = o.pickerTimeSuffix || o.timeSuffix;
792
+
793
+ if (typeof(hour) === 'object') {
794
+ hour = false;
795
+ }
796
+ if (typeof(minute) === 'object') {
797
+ minute = false;
798
+ }
799
+ if (typeof(second) === 'object') {
800
+ second = false;
801
+ }
802
+ if (typeof(millisec) === 'object') {
803
+ millisec = false;
804
+ }
805
+ if (typeof(microsec) === 'object') {
806
+ microsec = false;
807
+ }
808
+ if (typeof(timezone) === 'object') {
809
+ timezone = false;
810
+ }
811
+
812
+ if (hour !== false) {
813
+ hour = parseInt(hour, 10);
814
+ }
815
+ if (minute !== false) {
816
+ minute = parseInt(minute, 10);
817
+ }
818
+ if (second !== false) {
819
+ second = parseInt(second, 10);
820
+ }
821
+ if (millisec !== false) {
822
+ millisec = parseInt(millisec, 10);
823
+ }
824
+ if (microsec !== false) {
825
+ microsec = parseInt(microsec, 10);
826
+ }
827
+ if (timezone !== false) {
828
+ timezone = timezone.toString();
829
+ }
830
+
831
+ var ampm = o[hour < 12 ? 'amNames' : 'pmNames'][0];
832
+
833
+ // If the update was done in the input field, the input field should not be updated.
834
+ // If the update was done using the sliders, update the input field.
835
+ var hasChanged = (
836
+ hour !== parseInt(this.hour,10) || // sliders should all be numeric
837
+ minute !== parseInt(this.minute,10) ||
838
+ second !== parseInt(this.second,10) ||
839
+ millisec !== parseInt(this.millisec,10) ||
840
+ microsec !== parseInt(this.microsec,10) ||
841
+ (this.ampm.length > 0 && (hour < 12) !== ($.inArray(this.ampm.toUpperCase(), this.amNames) !== -1)) ||
842
+ (this.timezone !== null && timezone !== this.timezone.toString()) // could be numeric or "EST" format, so use toString()
843
+ );
844
+
845
+ if (hasChanged) {
846
+
847
+ if (hour !== false) {
848
+ this.hour = hour;
849
+ }
850
+ if (minute !== false) {
851
+ this.minute = minute;
852
+ }
853
+ if (second !== false) {
854
+ this.second = second;
855
+ }
856
+ if (millisec !== false) {
857
+ this.millisec = millisec;
858
+ }
859
+ if (microsec !== false) {
860
+ this.microsec = microsec;
861
+ }
862
+ if (timezone !== false) {
863
+ this.timezone = timezone;
864
+ }
865
+
866
+ if (!this.inst) {
867
+ this.inst = $.datepicker._getInst(this.$input[0]);
868
+ }
869
+
870
+ this._limitMinMaxDateTime(this.inst, true);
871
+ }
872
+ if (this.support.ampm) {
873
+ this.ampm = ampm;
874
+ }
875
+
876
+ // Updates the time within the timepicker
877
+ this.formattedTime = $.datepicker.formatTime(o.timeFormat, this, o);
878
+ if (this.$timeObj) {
879
+ if (pickerTimeFormat === o.timeFormat) {
880
+ this.$timeObj.val(this.formattedTime + pickerTimeSuffix);
881
+ }
882
+ else {
883
+ this.$timeObj.val($.datepicker.formatTime(pickerTimeFormat, this, o) + pickerTimeSuffix);
884
+ }
885
+ if (this.$timeObj[0].setSelectionRange) {
886
+ var sPos = this.$timeObj[0].selectionStart;
887
+ var ePos = this.$timeObj[0].selectionEnd;
888
+ this.$timeObj[0].setSelectionRange(sPos, ePos);
889
+ }
890
+ }
891
+
892
+ this.timeDefined = true;
893
+ if (hasChanged) {
894
+ this._updateDateTime();
895
+ //this.$input.focus(); // may automatically open the picker on setDate
896
+ }
897
+ },
898
+
899
+ /*
900
+ * call custom onSelect.
901
+ * bind to sliders slidestop, and grid click.
902
+ */
903
+ _onSelectHandler: function () {
904
+ var onSelect = this._defaults.onSelect || this.inst.settings.onSelect;
905
+ var inputEl = this.$input ? this.$input[0] : null;
906
+ if (onSelect && inputEl) {
907
+ onSelect.apply(inputEl, [this.formattedDateTime, this]);
908
+ }
909
+ },
910
+
911
+ /*
912
+ * update our input with the new date time..
913
+ */
914
+ _updateDateTime: function (dp_inst) {
915
+ dp_inst = this.inst || dp_inst;
916
+ var dtTmp = (dp_inst.currentYear > 0?
917
+ new Date(dp_inst.currentYear, dp_inst.currentMonth, dp_inst.currentDay) :
918
+ new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
919
+ dt = $.datepicker._daylightSavingAdjust(dtTmp),
920
+ //dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
921
+ //dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.currentYear, dp_inst.currentMonth, dp_inst.currentDay)),
922
+ dateFmt = $.datepicker._get(dp_inst, 'dateFormat'),
923
+ formatCfg = $.datepicker._getFormatConfig(dp_inst),
924
+ timeAvailable = dt !== null && this.timeDefined;
925
+ this.formattedDate = $.datepicker.formatDate(dateFmt, (dt === null ? new Date() : dt), formatCfg);
926
+ var formattedDateTime = this.formattedDate;
927
+
928
+ // if a slider was changed but datepicker doesn't have a value yet, set it
929
+ if (dp_inst.lastVal === "") {
930
+ dp_inst.currentYear = dp_inst.selectedYear;
931
+ dp_inst.currentMonth = dp_inst.selectedMonth;
932
+ dp_inst.currentDay = dp_inst.selectedDay;
933
+ }
934
+
935
+ /*
936
+ * remove following lines to force every changes in date picker to change the input value
937
+ * Bug descriptions: when an input field has a default value, and click on the field to pop up the date picker.
938
+ * If the user manually empty the value in the input field, the date picker will never change selected value.
939
+ */
940
+ //if (dp_inst.lastVal !== undefined && (dp_inst.lastVal.length > 0 && this.$input.val().length === 0)) {
941
+ // return;
942
+ //}
943
+
944
+ if (this._defaults.timeOnly === true && this._defaults.timeOnlyShowDate === false) {
945
+ formattedDateTime = this.formattedTime;
946
+ } else if ((this._defaults.timeOnly !== true && (this._defaults.alwaysSetTime || timeAvailable)) || (this._defaults.timeOnly === true && this._defaults.timeOnlyShowDate === true)) {
947
+ formattedDateTime += this._defaults.separator + this.formattedTime + this._defaults.timeSuffix;
948
+ }
949
+
950
+ this.formattedDateTime = formattedDateTime;
951
+
952
+ if (!this._defaults.showTimepicker) {
953
+ this.$input.val(this.formattedDate);
954
+ } else if (this.$altInput && this._defaults.timeOnly === false && this._defaults.altFieldTimeOnly === true) {
955
+ this.$altInput.val(this.formattedTime);
956
+ this.$input.val(this.formattedDate);
957
+ } else if (this.$altInput) {
958
+ this.$input.val(formattedDateTime);
959
+ var altFormattedDateTime = '',
960
+ altSeparator = this._defaults.altSeparator !== null ? this._defaults.altSeparator : this._defaults.separator,
961
+ altTimeSuffix = this._defaults.altTimeSuffix !== null ? this._defaults.altTimeSuffix : this._defaults.timeSuffix;
962
+
963
+ if (!this._defaults.timeOnly) {
964
+ if (this._defaults.altFormat) {
965
+ altFormattedDateTime = $.datepicker.formatDate(this._defaults.altFormat, (dt === null ? new Date() : dt), formatCfg);
966
+ }
967
+ else {
968
+ altFormattedDateTime = this.formattedDate;
969
+ }
970
+
971
+ if (altFormattedDateTime) {
972
+ altFormattedDateTime += altSeparator;
973
+ }
974
+ }
975
+
976
+ if (this._defaults.altTimeFormat !== null) {
977
+ altFormattedDateTime += $.datepicker.formatTime(this._defaults.altTimeFormat, this, this._defaults) + altTimeSuffix;
978
+ }
979
+ else {
980
+ altFormattedDateTime += this.formattedTime + altTimeSuffix;
981
+ }
982
+ this.$altInput.val(altFormattedDateTime);
983
+ } else {
984
+ this.$input.val(formattedDateTime);
985
+ }
986
+
987
+ this.$input.trigger("change");
988
+ },
989
+
990
+ _onFocus: function () {
991
+ if (!this.$input.val() && this._defaults.defaultValue) {
992
+ this.$input.val(this._defaults.defaultValue);
993
+ var inst = $.datepicker._getInst(this.$input.get(0)),
994
+ tp_inst = $.datepicker._get(inst, 'timepicker');
995
+ if (tp_inst) {
996
+ if (tp_inst._defaults.timeOnly && (inst.input.val() !== inst.lastVal)) {
997
+ try {
998
+ $.datepicker._updateDatepicker(inst);
999
+ } catch (err) {
1000
+ $.timepicker.log(err);
1001
+ }
1002
+ }
1003
+ }
1004
+ }
1005
+ },
1006
+
1007
+ /*
1008
+ * Small abstraction to control types
1009
+ * We can add more, just be sure to follow the pattern: create, options, value
1010
+ */
1011
+ _controls: {
1012
+ // slider methods
1013
+ slider: {
1014
+ create: function (tp_inst, obj, unit, val, min, max, step) {
1015
+ var rtl = tp_inst._defaults.isRTL; // if rtl go -60->0 instead of 0->60
1016
+ return obj.prop('slide', null).slider({
1017
+ orientation: "horizontal",
1018
+ value: rtl ? val * -1 : val,
1019
+ min: rtl ? max * -1 : min,
1020
+ max: rtl ? min * -1 : max,
1021
+ step: step,
1022
+ slide: function (event, ui) {
1023
+ tp_inst.control.value(tp_inst, $(this), unit, rtl ? ui.value * -1 : ui.value);
1024
+ tp_inst._onTimeChange();
1025
+ },
1026
+ stop: function (event, ui) {
1027
+ tp_inst._onSelectHandler();
1028
+ }
1029
+ });
1030
+ },
1031
+ options: function (tp_inst, obj, unit, opts, val) {
1032
+ if (tp_inst._defaults.isRTL) {
1033
+ if (typeof(opts) === 'string') {
1034
+ if (opts === 'min' || opts === 'max') {
1035
+ if (val !== undefined) {
1036
+ return obj.slider(opts, val * -1);
1037
+ }
1038
+ return Math.abs(obj.slider(opts));
1039
+ }
1040
+ return obj.slider(opts);
1041
+ }
1042
+ var min = opts.min,
1043
+ max = opts.max;
1044
+ opts.min = opts.max = null;
1045
+ if (min !== undefined) {
1046
+ opts.max = min * -1;
1047
+ }
1048
+ if (max !== undefined) {
1049
+ opts.min = max * -1;
1050
+ }
1051
+ return obj.slider(opts);
1052
+ }
1053
+ if (typeof(opts) === 'string' && val !== undefined) {
1054
+ return obj.slider(opts, val);
1055
+ }
1056
+ return obj.slider(opts);
1057
+ },
1058
+ value: function (tp_inst, obj, unit, val) {
1059
+ if (tp_inst._defaults.isRTL) {
1060
+ if (val !== undefined) {
1061
+ return obj.slider('value', val * -1);
1062
+ }
1063
+ return Math.abs(obj.slider('value'));
1064
+ }
1065
+ if (val !== undefined) {
1066
+ return obj.slider('value', val);
1067
+ }
1068
+ return obj.slider('value');
1069
+ }
1070
+ },
1071
+ // select methods
1072
+ select: {
1073
+ create: function (tp_inst, obj, unit, val, min, max, step) {
1074
+ var sel = '<select class="ui-timepicker-select ui-state-default ui-corner-all" data-unit="' + unit + '" data-min="' + min + '" data-max="' + max + '" data-step="' + step + '">',
1075
+ format = tp_inst._defaults.pickerTimeFormat || tp_inst._defaults.timeFormat;
1076
+
1077
+ for (var i = min; i <= max; i += step) {
1078
+ sel += '<option value="' + i + '"' + (i === val ? ' selected' : '') + '>';
1079
+ if (unit === 'hour') {
1080
+ sel += $.datepicker.formatTime($.trim(format.replace(/[^ht ]/ig, '')), {hour: i}, tp_inst._defaults);
1081
+ }
1082
+ else if (unit === 'millisec' || unit === 'microsec' || i >= 10) { sel += i; }
1083
+ else {sel += '0' + i.toString(); }
1084
+ sel += '</option>';
1085
+ }
1086
+ sel += '</select>';
1087
+
1088
+ obj.children('select').remove();
1089
+
1090
+ $(sel).appendTo(obj).change(function (e) {
1091
+ tp_inst._onTimeChange();
1092
+ tp_inst._onSelectHandler();
1093
+ tp_inst._afterInject();
1094
+ });
1095
+
1096
+ return obj;
1097
+ },
1098
+ options: function (tp_inst, obj, unit, opts, val) {
1099
+ var o = {},
1100
+ $t = obj.children('select');
1101
+ if (typeof(opts) === 'string') {
1102
+ if (val === undefined) {
1103
+ return $t.data(opts);
1104
+ }
1105
+ o[opts] = val;
1106
+ }
1107
+ else { o = opts; }
1108
+ return tp_inst.control.create(tp_inst, obj, $t.data('unit'), $t.val(), o.min>=0 ? o.min : $t.data('min'), o.max || $t.data('max'), o.step || $t.data('step'));
1109
+ },
1110
+ value: function (tp_inst, obj, unit, val) {
1111
+ var $t = obj.children('select');
1112
+ if (val !== undefined) {
1113
+ return $t.val(val);
1114
+ }
1115
+ return $t.val();
1116
+ }
1117
+ }
1118
+ } // end _controls
1119
+
1120
+ });
1121
+
1122
+ $.fn.extend({
1123
+ /*
1124
+ * shorthand just to use timepicker.
1125
+ */
1126
+ timepicker: function (o) {
1127
+ o = o || {};
1128
+ var tmp_args = Array.prototype.slice.call(arguments);
1129
+
1130
+ if (typeof o === 'object') {
1131
+ tmp_args[0] = $.extend(o, {
1132
+ timeOnly: true
1133
+ });
1134
+ }
1135
+
1136
+ return $(this).each(function () {
1137
+ $.fn.datetimepicker.apply($(this), tmp_args);
1138
+ });
1139
+ },
1140
+
1141
+ /*
1142
+ * extend timepicker to datepicker
1143
+ */
1144
+ datetimepicker: function (o) {
1145
+ o = o || {};
1146
+ var tmp_args = arguments;
1147
+
1148
+ if (typeof(o) === 'string') {
1149
+ if (o === 'getDate' || (o === 'option' && tmp_args.length === 2 && typeof (tmp_args[1]) === 'string')) {
1150
+ return $.fn.datepicker.apply($(this[0]), tmp_args);
1151
+ } else {
1152
+ return this.each(function () {
1153
+ var $t = $(this);
1154
+ $t.datepicker.apply($t, tmp_args);
1155
+ });
1156
+ }
1157
+ } else {
1158
+ return this.each(function () {
1159
+ var $t = $(this);
1160
+ $t.datepicker($.timepicker._newInst($t, o)._defaults);
1161
+ });
1162
+ }
1163
+ }
1164
+ });
1165
+
1166
+ /*
1167
+ * Public Utility to parse date and time
1168
+ */
1169
+ $.datepicker.parseDateTime = function (dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings) {
1170
+ var parseRes = parseDateTimeInternal(dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings);
1171
+ if (parseRes.timeObj) {
1172
+ var t = parseRes.timeObj;
1173
+ parseRes.date.setHours(t.hour, t.minute, t.second, t.millisec);
1174
+ parseRes.date.setMicroseconds(t.microsec);
1175
+ }
1176
+
1177
+ return parseRes.date;
1178
+ };
1179
+
1180
+ /*
1181
+ * Public utility to parse time
1182
+ */
1183
+ $.datepicker.parseTime = function (timeFormat, timeString, options) {
1184
+ var o = extendRemove(extendRemove({}, $.timepicker._defaults), options || {}),
1185
+ iso8601 = (timeFormat.replace(/\'.*?\'/g, '').indexOf('Z') !== -1);
1186
+
1187
+ // Strict parse requires the timeString to match the timeFormat exactly
1188
+ var strictParse = function (f, s, o) {
1189
+
1190
+ // pattern for standard and localized AM/PM markers
1191
+ var getPatternAmpm = function (amNames, pmNames) {
1192
+ var markers = [];
1193
+ if (amNames) {
1194
+ $.merge(markers, amNames);
1195
+ }
1196
+ if (pmNames) {
1197
+ $.merge(markers, pmNames);
1198
+ }
1199
+ markers = $.map(markers, function (val) {
1200
+ return val.replace(/[.*+?|()\[\]{}\\]/g, '\\$&');
1201
+ });
1202
+ return '(' + markers.join('|') + ')?';
1203
+ };
1204
+
1205
+ // figure out position of time elements.. cause js cant do named captures
1206
+ var getFormatPositions = function (timeFormat) {
1207
+ var finds = timeFormat.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|c{1}|t{1,2}|z|'.*?')/g),
1208
+ orders = {
1209
+ h: -1,
1210
+ m: -1,
1211
+ s: -1,
1212
+ l: -1,
1213
+ c: -1,
1214
+ t: -1,
1215
+ z: -1
1216
+ };
1217
+
1218
+ if (finds) {
1219
+ for (var i = 0; i < finds.length; i++) {
1220
+ if (orders[finds[i].toString().charAt(0)] === -1) {
1221
+ orders[finds[i].toString().charAt(0)] = i + 1;
1222
+ }
1223
+ }
1224
+ }
1225
+ return orders;
1226
+ };
1227
+
1228
+ var regstr = '^' + f.toString()
1229
+ .replace(/([hH]{1,2}|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g, function (match) {
1230
+ var ml = match.length;
1231
+ switch (match.charAt(0).toLowerCase()) {
1232
+ case 'h':
1233
+ return ml === 1 ? '(\\d?\\d)' : '(\\d{' + ml + '})';
1234
+ case 'm':
1235
+ return ml === 1 ? '(\\d?\\d)' : '(\\d{' + ml + '})';
1236
+ case 's':
1237
+ return ml === 1 ? '(\\d?\\d)' : '(\\d{' + ml + '})';
1238
+ case 'l':
1239
+ return '(\\d?\\d?\\d)';
1240
+ case 'c':
1241
+ return '(\\d?\\d?\\d)';
1242
+ case 'z':
1243
+ return '(z|[-+]\\d\\d:?\\d\\d|\\S+)?';
1244
+ case 't':
1245
+ return getPatternAmpm(o.amNames, o.pmNames);
1246
+ default: // literal escaped in quotes
1247
+ return '(' + match.replace(/\'/g, "").replace(/(\.|\$|\^|\\|\/|\(|\)|\[|\]|\?|\+|\*)/g, function (m) { return "\\" + m; }) + ')?';
1248
+ }
1249
+ })
1250
+ .replace(/\s/g, '\\s?') +
1251
+ o.timeSuffix + '$',
1252
+ order = getFormatPositions(f),
1253
+ ampm = '',
1254
+ treg;
1255
+
1256
+ treg = s.match(new RegExp(regstr, 'i'));
1257
+
1258
+ var resTime = {
1259
+ hour: 0,
1260
+ minute: 0,
1261
+ second: 0,
1262
+ millisec: 0,
1263
+ microsec: 0
1264
+ };
1265
+
1266
+ if (treg) {
1267
+ if (order.t !== -1) {
1268
+ if (treg[order.t] === undefined || treg[order.t].length === 0) {
1269
+ ampm = '';
1270
+ resTime.ampm = '';
1271
+ } else {
1272
+ ampm = $.inArray(treg[order.t].toUpperCase(), $.map(o.amNames, function (x,i) { return x.toUpperCase(); })) !== -1 ? 'AM' : 'PM';
1273
+ resTime.ampm = o[ampm === 'AM' ? 'amNames' : 'pmNames'][0];
1274
+ }
1275
+ }
1276
+
1277
+ if (order.h !== -1) {
1278
+ if (ampm === 'AM' && treg[order.h] === '12') {
1279
+ resTime.hour = 0; // 12am = 0 hour
1280
+ } else {
1281
+ if (ampm === 'PM' && treg[order.h] !== '12') {
1282
+ resTime.hour = parseInt(treg[order.h], 10) + 12; // 12pm = 12 hour, any other pm = hour + 12
1283
+ } else {
1284
+ resTime.hour = Number(treg[order.h]);
1285
+ }
1286
+ }
1287
+ }
1288
+
1289
+ if (order.m !== -1) {
1290
+ resTime.minute = Number(treg[order.m]);
1291
+ }
1292
+ if (order.s !== -1) {
1293
+ resTime.second = Number(treg[order.s]);
1294
+ }
1295
+ if (order.l !== -1) {
1296
+ resTime.millisec = Number(treg[order.l]);
1297
+ }
1298
+ if (order.c !== -1) {
1299
+ resTime.microsec = Number(treg[order.c]);
1300
+ }
1301
+ if (order.z !== -1 && treg[order.z] !== undefined) {
1302
+ resTime.timezone = $.timepicker.timezoneOffsetNumber(treg[order.z]);
1303
+ }
1304
+
1305
+
1306
+ return resTime;
1307
+ }
1308
+ return false;
1309
+ };// end strictParse
1310
+
1311
+ // First try JS Date, if that fails, use strictParse
1312
+ var looseParse = function (f, s, o) {
1313
+ try {
1314
+ var d = new Date('2012-01-01 ' + s);
1315
+ if (isNaN(d.getTime())) {
1316
+ d = new Date('2012-01-01T' + s);
1317
+ if (isNaN(d.getTime())) {
1318
+ d = new Date('01/01/2012 ' + s);
1319
+ if (isNaN(d.getTime())) {
1320
+ throw "Unable to parse time with native Date: " + s;
1321
+ }
1322
+ }
1323
+ }
1324
+
1325
+ return {
1326
+ hour: d.getHours(),
1327
+ minute: d.getMinutes(),
1328
+ second: d.getSeconds(),
1329
+ millisec: d.getMilliseconds(),
1330
+ microsec: d.getMicroseconds(),
1331
+ timezone: d.getTimezoneOffset() * -1
1332
+ };
1333
+ }
1334
+ catch (err) {
1335
+ try {
1336
+ return strictParse(f, s, o);
1337
+ }
1338
+ catch (err2) {
1339
+ $.timepicker.log("Unable to parse \ntimeString: " + s + "\ntimeFormat: " + f);
1340
+ }
1341
+ }
1342
+ return false;
1343
+ }; // end looseParse
1344
+
1345
+ if (typeof o.parse === "function") {
1346
+ return o.parse(timeFormat, timeString, o);
1347
+ }
1348
+ if (o.parse === 'loose') {
1349
+ return looseParse(timeFormat, timeString, o);
1350
+ }
1351
+ return strictParse(timeFormat, timeString, o);
1352
+ };
1353
+
1354
+ /**
1355
+ * Public utility to format the time
1356
+ * @param {string} format format of the time
1357
+ * @param {Object} time Object not a Date for timezones
1358
+ * @param {Object} [options] essentially the regional[].. amNames, pmNames, ampm
1359
+ * @returns {string} the formatted time
1360
+ */
1361
+ $.datepicker.formatTime = function (format, time, options) {
1362
+ options = options || {};
1363
+ options = $.extend({}, $.timepicker._defaults, options);
1364
+ time = $.extend({
1365
+ hour: 0,
1366
+ minute: 0,
1367
+ second: 0,
1368
+ millisec: 0,
1369
+ microsec: 0,
1370
+ timezone: null
1371
+ }, time);
1372
+
1373
+ var tmptime = format,
1374
+ ampmName = options.amNames[0],
1375
+ hour = parseInt(time.hour, 10);
1376
+
1377
+ if (hour > 11) {
1378
+ ampmName = options.pmNames[0];
1379
+ }
1380
+
1381
+ tmptime = tmptime.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g, function (match) {
1382
+ switch (match) {
1383
+ case 'HH':
1384
+ return ('0' + hour).slice(-2);
1385
+ case 'H':
1386
+ return hour;
1387
+ case 'hh':
1388
+ return ('0' + convert24to12(hour)).slice(-2);
1389
+ case 'h':
1390
+ return convert24to12(hour);
1391
+ case 'mm':
1392
+ return ('0' + time.minute).slice(-2);
1393
+ case 'm':
1394
+ return time.minute;
1395
+ case 'ss':
1396
+ return ('0' + time.second).slice(-2);
1397
+ case 's':
1398
+ return time.second;
1399
+ case 'l':
1400
+ return ('00' + time.millisec).slice(-3);
1401
+ case 'c':
1402
+ return ('00' + time.microsec).slice(-3);
1403
+ case 'z':
1404
+ return $.timepicker.timezoneOffsetString(time.timezone === null ? options.timezone : time.timezone, false);
1405
+ case 'Z':
1406
+ return $.timepicker.timezoneOffsetString(time.timezone === null ? options.timezone : time.timezone, true);
1407
+ case 'T':
1408
+ return ampmName.charAt(0).toUpperCase();
1409
+ case 'TT':
1410
+ return ampmName.toUpperCase();
1411
+ case 't':
1412
+ return ampmName.charAt(0).toLowerCase();
1413
+ case 'tt':
1414
+ return ampmName.toLowerCase();
1415
+ default:
1416
+ return match.replace(/'/g, "");
1417
+ }
1418
+ });
1419
+
1420
+ return tmptime;
1421
+ };
1422
+
1423
+ /*
1424
+ * the bad hack :/ override datepicker so it doesn't close on select
1425
+ // inspired: http://stackoverflow.com/questions/1252512/jquery-datepicker-prevent-closing-picker-when-clicking-a-date/1762378#1762378
1426
+ */
1427
+ $.datepicker._base_selectDate = $.datepicker._selectDate;
1428
+ $.datepicker._selectDate = function (id, dateStr) {
1429
+ var inst = this._getInst($(id)[0]),
1430
+ tp_inst = this._get(inst, 'timepicker'),
1431
+ was_inline;
1432
+
1433
+ if (tp_inst && inst.settings.showTimepicker) {
1434
+ tp_inst._limitMinMaxDateTime(inst, true);
1435
+ was_inline = inst.inline;
1436
+ inst.inline = inst.stay_open = true;
1437
+ //This way the onSelect handler called from calendarpicker get the full dateTime
1438
+ this._base_selectDate(id, dateStr);
1439
+ inst.inline = was_inline;
1440
+ inst.stay_open = false;
1441
+ this._notifyChange(inst);
1442
+ this._updateDatepicker(inst);
1443
+ } else {
1444
+ this._base_selectDate(id, dateStr);
1445
+ }
1446
+ };
1447
+
1448
+ /*
1449
+ * second bad hack :/ override datepicker so it triggers an event when changing the input field
1450
+ * and does not redraw the datepicker on every selectDate event
1451
+ */
1452
+ $.datepicker._base_updateDatepicker = $.datepicker._updateDatepicker;
1453
+ $.datepicker._updateDatepicker = function (inst) {
1454
+
1455
+ // don't popup the datepicker if there is another instance already opened
1456
+ var input = inst.input[0];
1457
+ if ($.datepicker._curInst && $.datepicker._curInst !== inst && $.datepicker._datepickerShowing && $.datepicker._lastInput !== input) {
1458
+ return;
1459
+ }
1460
+
1461
+ if (typeof(inst.stay_open) !== 'boolean' || inst.stay_open === false) {
1462
+
1463
+ this._base_updateDatepicker(inst);
1464
+
1465
+ // Reload the time control when changing something in the input text field.
1466
+ var tp_inst = this._get(inst, 'timepicker');
1467
+ if (tp_inst) {
1468
+ tp_inst._addTimePicker(inst);
1469
+ }
1470
+ }
1471
+ };
1472
+
1473
+ /*
1474
+ * third bad hack :/ override datepicker so it allows spaces and colon in the input field
1475
+ */
1476
+ $.datepicker._base_doKeyPress = $.datepicker._doKeyPress;
1477
+ $.datepicker._doKeyPress = function (event) {
1478
+ var inst = $.datepicker._getInst(event.target),
1479
+ tp_inst = $.datepicker._get(inst, 'timepicker');
1480
+
1481
+ if (tp_inst) {
1482
+ if ($.datepicker._get(inst, 'constrainInput')) {
1483
+ var ampm = tp_inst.support.ampm,
1484
+ tz = tp_inst._defaults.showTimezone !== null ? tp_inst._defaults.showTimezone : tp_inst.support.timezone,
1485
+ dateChars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')),
1486
+ datetimeChars = tp_inst._defaults.timeFormat.toString()
1487
+ .replace(/[hms]/g, '')
1488
+ .replace(/TT/g, ampm ? 'APM' : '')
1489
+ .replace(/Tt/g, ampm ? 'AaPpMm' : '')
1490
+ .replace(/tT/g, ampm ? 'AaPpMm' : '')
1491
+ .replace(/T/g, ampm ? 'AP' : '')
1492
+ .replace(/tt/g, ampm ? 'apm' : '')
1493
+ .replace(/t/g, ampm ? 'ap' : '') +
1494
+ " " + tp_inst._defaults.separator +
1495
+ tp_inst._defaults.timeSuffix +
1496
+ (tz ? tp_inst._defaults.timezoneList.join('') : '') +
1497
+ (tp_inst._defaults.amNames.join('')) + (tp_inst._defaults.pmNames.join('')) +
1498
+ dateChars,
1499
+ chr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode);
1500
+ return event.ctrlKey || (chr < ' ' || !dateChars || datetimeChars.indexOf(chr) > -1);
1501
+ }
1502
+ }
1503
+
1504
+ return $.datepicker._base_doKeyPress(event);
1505
+ };
1506
+
1507
+ /*
1508
+ * Fourth bad hack :/ override _updateAlternate function used in inline mode to init altField
1509
+ * Update any alternate field to synchronise with the main field.
1510
+ */
1511
+ $.datepicker._base_updateAlternate = $.datepicker._updateAlternate;
1512
+ $.datepicker._updateAlternate = function (inst) {
1513
+ var tp_inst = this._get(inst, 'timepicker');
1514
+ if (tp_inst) {
1515
+ var altField = tp_inst._defaults.altField;
1516
+ if (altField) { // update alternate field too
1517
+ var altFormat = tp_inst._defaults.altFormat || tp_inst._defaults.dateFormat,
1518
+ date = this._getDate(inst),
1519
+ formatCfg = $.datepicker._getFormatConfig(inst),
1520
+ altFormattedDateTime = '',
1521
+ altSeparator = tp_inst._defaults.altSeparator ? tp_inst._defaults.altSeparator : tp_inst._defaults.separator,
1522
+ altTimeSuffix = tp_inst._defaults.altTimeSuffix ? tp_inst._defaults.altTimeSuffix : tp_inst._defaults.timeSuffix,
1523
+ altTimeFormat = tp_inst._defaults.altTimeFormat !== null ? tp_inst._defaults.altTimeFormat : tp_inst._defaults.timeFormat;
1524
+
1525
+ altFormattedDateTime += $.datepicker.formatTime(altTimeFormat, tp_inst, tp_inst._defaults) + altTimeSuffix;
1526
+ if (!tp_inst._defaults.timeOnly && !tp_inst._defaults.altFieldTimeOnly && date !== null) {
1527
+ if (tp_inst._defaults.altFormat) {
1528
+ altFormattedDateTime = $.datepicker.formatDate(tp_inst._defaults.altFormat, date, formatCfg) + altSeparator + altFormattedDateTime;
1529
+ }
1530
+ else {
1531
+ altFormattedDateTime = tp_inst.formattedDate + altSeparator + altFormattedDateTime;
1532
+ }
1533
+ }
1534
+ $(altField).val( inst.input.val() ? altFormattedDateTime : "");
1535
+ }
1536
+ }
1537
+ else {
1538
+ $.datepicker._base_updateAlternate(inst);
1539
+ }
1540
+ };
1541
+
1542
+ /*
1543
+ * Override key up event to sync manual input changes.
1544
+ */
1545
+ $.datepicker._base_doKeyUp = $.datepicker._doKeyUp;
1546
+ $.datepicker._doKeyUp = function (event) {
1547
+ var inst = $.datepicker._getInst(event.target),
1548
+ tp_inst = $.datepicker._get(inst, 'timepicker');
1549
+
1550
+ if (tp_inst) {
1551
+ if (tp_inst._defaults.timeOnly && (inst.input.val() !== inst.lastVal)) {
1552
+ try {
1553
+ $.datepicker._updateDatepicker(inst);
1554
+ } catch (err) {
1555
+ $.timepicker.log(err);
1556
+ }
1557
+ }
1558
+ }
1559
+
1560
+ return $.datepicker._base_doKeyUp(event);
1561
+ };
1562
+
1563
+ /*
1564
+ * override "Today" button to also grab the time and set it to input field.
1565
+ */
1566
+ $.datepicker._base_gotoToday = $.datepicker._gotoToday;
1567
+ $.datepicker._gotoToday = function (id) {
1568
+ var inst = this._getInst($(id)[0]);
1569
+ this._base_gotoToday(id);
1570
+ var tp_inst = this._get(inst, 'timepicker');
1571
+ if (!tp_inst) {
1572
+ return;
1573
+ }
1574
+
1575
+ var tzoffset = $.timepicker.timezoneOffsetNumber(tp_inst.timezone);
1576
+ var now = new Date();
1577
+ now.setMinutes(now.getMinutes() + now.getTimezoneOffset() + parseInt(tzoffset, 10));
1578
+ this._setTime(inst, now);
1579
+ this._setDate(inst, now);
1580
+ tp_inst._onSelectHandler();
1581
+ };
1582
+
1583
+ /*
1584
+ * Disable & enable the Time in the datetimepicker
1585
+ */
1586
+ $.datepicker._disableTimepickerDatepicker = function (target) {
1587
+ var inst = this._getInst(target);
1588
+ if (!inst) {
1589
+ return;
1590
+ }
1591
+
1592
+ var tp_inst = this._get(inst, 'timepicker');
1593
+ $(target).datepicker('getDate'); // Init selected[Year|Month|Day]
1594
+ if (tp_inst) {
1595
+ inst.settings.showTimepicker = false;
1596
+ tp_inst._defaults.showTimepicker = false;
1597
+ tp_inst._updateDateTime(inst);
1598
+ }
1599
+ };
1600
+
1601
+ $.datepicker._enableTimepickerDatepicker = function (target) {
1602
+ var inst = this._getInst(target);
1603
+ if (!inst) {
1604
+ return;
1605
+ }
1606
+
1607
+ var tp_inst = this._get(inst, 'timepicker');
1608
+ $(target).datepicker('getDate'); // Init selected[Year|Month|Day]
1609
+ if (tp_inst) {
1610
+ inst.settings.showTimepicker = true;
1611
+ tp_inst._defaults.showTimepicker = true;
1612
+ tp_inst._addTimePicker(inst); // Could be disabled on page load
1613
+ tp_inst._updateDateTime(inst);
1614
+ }
1615
+ };
1616
+
1617
+ /*
1618
+ * Create our own set time function
1619
+ */
1620
+ $.datepicker._setTime = function (inst, date) {
1621
+ var tp_inst = this._get(inst, 'timepicker');
1622
+ if (tp_inst) {
1623
+ var defaults = tp_inst._defaults;
1624
+
1625
+ // calling _setTime with no date sets time to defaults
1626
+ tp_inst.hour = date ? date.getHours() : defaults.hour;
1627
+ tp_inst.minute = date ? date.getMinutes() : defaults.minute;
1628
+ tp_inst.second = date ? date.getSeconds() : defaults.second;
1629
+ tp_inst.millisec = date ? date.getMilliseconds() : defaults.millisec;
1630
+ tp_inst.microsec = date ? date.getMicroseconds() : defaults.microsec;
1631
+
1632
+ //check if within min/max times..
1633
+ tp_inst._limitMinMaxDateTime(inst, true);
1634
+
1635
+ tp_inst._onTimeChange();
1636
+ tp_inst._updateDateTime(inst);
1637
+ }
1638
+ };
1639
+
1640
+ /*
1641
+ * Create new public method to set only time, callable as $().datepicker('setTime', date)
1642
+ */
1643
+ $.datepicker._setTimeDatepicker = function (target, date, withDate) {
1644
+ var inst = this._getInst(target);
1645
+ if (!inst) {
1646
+ return;
1647
+ }
1648
+
1649
+ var tp_inst = this._get(inst, 'timepicker');
1650
+
1651
+ if (tp_inst) {
1652
+ this._setDateFromField(inst);
1653
+ var tp_date;
1654
+ if (date) {
1655
+ if (typeof date === "string") {
1656
+ tp_inst._parseTime(date, withDate);
1657
+ tp_date = new Date();
1658
+ tp_date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);
1659
+ tp_date.setMicroseconds(tp_inst.microsec);
1660
+ } else {
1661
+ tp_date = new Date(date.getTime());
1662
+ tp_date.setMicroseconds(date.getMicroseconds());
1663
+ }
1664
+ if (tp_date.toString() === 'Invalid Date') {
1665
+ tp_date = undefined;
1666
+ }
1667
+ this._setTime(inst, tp_date);
1668
+ }
1669
+ }
1670
+
1671
+ };
1672
+
1673
+ /*
1674
+ * override setDate() to allow setting time too within Date object
1675
+ */
1676
+ $.datepicker._base_setDateDatepicker = $.datepicker._setDateDatepicker;
1677
+ $.datepicker._setDateDatepicker = function (target, _date) {
1678
+ var inst = this._getInst(target);
1679
+ var date = _date;
1680
+ if (!inst) {
1681
+ return;
1682
+ }
1683
+
1684
+ if (typeof(_date) === 'string') {
1685
+ date = new Date(_date);
1686
+ if (!date.getTime()) {
1687
+ this._base_setDateDatepicker.apply(this, arguments);
1688
+ date = $(target).datepicker('getDate');
1689
+ }
1690
+ }
1691
+
1692
+ var tp_inst = this._get(inst, 'timepicker');
1693
+ var tp_date;
1694
+ if (date instanceof Date) {
1695
+ tp_date = new Date(date.getTime());
1696
+ tp_date.setMicroseconds(date.getMicroseconds());
1697
+ } else {
1698
+ tp_date = date;
1699
+ }
1700
+
1701
+ // This is important if you are using the timezone option, javascript's Date
1702
+ // object will only return the timezone offset for the current locale, so we
1703
+ // adjust it accordingly. If not using timezone option this won't matter..
1704
+ // If a timezone is different in tp, keep the timezone as is
1705
+ if (tp_inst && tp_date) {
1706
+ // look out for DST if tz wasn't specified
1707
+ if (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {
1708
+ tp_inst.timezone = tp_date.getTimezoneOffset() * -1;
1709
+ }
1710
+ date = $.timepicker.timezoneAdjust(date, $.timepicker.timezoneOffsetString(-date.getTimezoneOffset()), tp_inst.timezone);
1711
+ tp_date = $.timepicker.timezoneAdjust(tp_date, $.timepicker.timezoneOffsetString(-tp_date.getTimezoneOffset()), tp_inst.timezone);
1712
+ }
1713
+
1714
+ this._updateDatepicker(inst);
1715
+ this._base_setDateDatepicker.apply(this, arguments);
1716
+ this._setTimeDatepicker(target, tp_date, true);
1717
+ };
1718
+
1719
+ /*
1720
+ * override getDate() to allow getting time too within Date object
1721
+ */
1722
+ $.datepicker._base_getDateDatepicker = $.datepicker._getDateDatepicker;
1723
+ $.datepicker._getDateDatepicker = function (target, noDefault) {
1724
+ var inst = this._getInst(target);
1725
+ if (!inst) {
1726
+ return;
1727
+ }
1728
+
1729
+ var tp_inst = this._get(inst, 'timepicker');
1730
+
1731
+ if (tp_inst) {
1732
+ // if it hasn't yet been defined, grab from field
1733
+ if (inst.lastVal === undefined) {
1734
+ this._setDateFromField(inst, noDefault);
1735
+ }
1736
+
1737
+ var date = this._getDate(inst);
1738
+
1739
+ var currDT = null;
1740
+
1741
+ if (tp_inst.$altInput && tp_inst._defaults.altFieldTimeOnly) {
1742
+ currDT = tp_inst.$input.val() + ' ' + tp_inst.$altInput.val();
1743
+ }
1744
+ else if (tp_inst.$input.get(0).tagName !== 'INPUT' && tp_inst.$altInput) {
1745
+ /**
1746
+ * in case the datetimepicker has been applied to a non-input tag for inline UI,
1747
+ * and the user has not configured the plugin to display only time in altInput,
1748
+ * pick current date time from the altInput (and hope for the best, for now, until "ER1" is applied)
1749
+ *
1750
+ * @todo ER1. Since altInput can have a totally difference format, convert it to standard format by reading input format from "altFormat" and "altTimeFormat" option values
1751
+ */
1752
+ currDT = tp_inst.$altInput.val();
1753
+ }
1754
+ else {
1755
+ currDT = tp_inst.$input.val();
1756
+ }
1757
+
1758
+ if (date && tp_inst._parseTime(currDT, !inst.settings.timeOnly)) {
1759
+ date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);
1760
+ date.setMicroseconds(tp_inst.microsec);
1761
+
1762
+ // This is important if you are using the timezone option, javascript's Date
1763
+ // object will only return the timezone offset for the current locale, so we
1764
+ // adjust it accordingly. If not using timezone option this won't matter..
1765
+ if (tp_inst.timezone != null) {
1766
+ // look out for DST if tz wasn't specified
1767
+ if (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {
1768
+ tp_inst.timezone = date.getTimezoneOffset() * -1;
1769
+ }
1770
+ date = $.timepicker.timezoneAdjust(date, tp_inst.timezone, $.timepicker.timezoneOffsetString(-date.getTimezoneOffset()));
1771
+ }
1772
+ }
1773
+ return date;
1774
+ }
1775
+ return this._base_getDateDatepicker(target, noDefault);
1776
+ };
1777
+
1778
+ /*
1779
+ * override parseDate() because UI 1.8.14 throws an error about "Extra characters"
1780
+ * An option in datapicker to ignore extra format characters would be nicer.
1781
+ */
1782
+ $.datepicker._base_parseDate = $.datepicker.parseDate;
1783
+ $.datepicker.parseDate = function (format, value, settings) {
1784
+ var date;
1785
+ try {
1786
+ date = this._base_parseDate(format, value, settings);
1787
+ } catch (err) {
1788
+ // Hack! The error message ends with a colon, a space, and
1789
+ // the "extra" characters. We rely on that instead of
1790
+ // attempting to perfectly reproduce the parsing algorithm.
1791
+ if (err.indexOf(":") >= 0) {
1792
+ date = this._base_parseDate(format, value.substring(0, value.length - (err.length - err.indexOf(':') - 2)), settings);
1793
+ $.timepicker.log("Error parsing the date string: " + err + "\ndate string = " + value + "\ndate format = " + format);
1794
+ } else {
1795
+ throw err;
1796
+ }
1797
+ }
1798
+ return date;
1799
+ };
1800
+
1801
+ /*
1802
+ * override formatDate to set date with time to the input
1803
+ */
1804
+ $.datepicker._base_formatDate = $.datepicker._formatDate;
1805
+ $.datepicker._formatDate = function (inst, day, month, year) {
1806
+ var tp_inst = this._get(inst, 'timepicker');
1807
+ if (tp_inst) {
1808
+ tp_inst._updateDateTime(inst);
1809
+ return tp_inst.$input.val();
1810
+ }
1811
+ return this._base_formatDate(inst);
1812
+ };
1813
+
1814
+ /*
1815
+ * override options setter to add time to maxDate(Time) and minDate(Time). MaxDate
1816
+ */
1817
+ $.datepicker._base_optionDatepicker = $.datepicker._optionDatepicker;
1818
+ $.datepicker._optionDatepicker = function (target, name, value) {
1819
+ var inst = this._getInst(target),
1820
+ name_clone;
1821
+ if (!inst) {
1822
+ return null;
1823
+ }
1824
+
1825
+ var tp_inst = this._get(inst, 'timepicker');
1826
+ if (tp_inst) {
1827
+ var min = null,
1828
+ max = null,
1829
+ onselect = null,
1830
+ overrides = tp_inst._defaults.evnts,
1831
+ fns = {},
1832
+ prop,
1833
+ ret,
1834
+ oldVal,
1835
+ $target;
1836
+ if (typeof name === 'string') { // if min/max was set with the string
1837
+ if (name === 'minDate' || name === 'minDateTime') {
1838
+ min = value;
1839
+ } else if (name === 'maxDate' || name === 'maxDateTime') {
1840
+ max = value;
1841
+ } else if (name === 'onSelect') {
1842
+ onselect = value;
1843
+ } else if (overrides.hasOwnProperty(name)) {
1844
+ if (typeof (value) === 'undefined') {
1845
+ return overrides[name];
1846
+ }
1847
+ fns[name] = value;
1848
+ name_clone = {}; //empty results in exiting function after overrides updated
1849
+ }
1850
+ } else if (typeof name === 'object') { //if min/max was set with the JSON
1851
+ if (name.minDate) {
1852
+ min = name.minDate;
1853
+ } else if (name.minDateTime) {
1854
+ min = name.minDateTime;
1855
+ } else if (name.maxDate) {
1856
+ max = name.maxDate;
1857
+ } else if (name.maxDateTime) {
1858
+ max = name.maxDateTime;
1859
+ }
1860
+ for (prop in overrides) {
1861
+ if (overrides.hasOwnProperty(prop) && name[prop]) {
1862
+ fns[prop] = name[prop];
1863
+ }
1864
+ }
1865
+ }
1866
+ for (prop in fns) {
1867
+ if (fns.hasOwnProperty(prop)) {
1868
+ overrides[prop] = fns[prop];
1869
+ if (!name_clone) { name_clone = $.extend({}, name); }
1870
+ delete name_clone[prop];
1871
+ }
1872
+ }
1873
+ if (name_clone && isEmptyObject(name_clone)) { return; }
1874
+ if (min) { //if min was set
1875
+ if (min === 0) {
1876
+ min = new Date();
1877
+ } else {
1878
+ min = new Date(min);
1879
+ }
1880
+ tp_inst._defaults.minDate = min;
1881
+ tp_inst._defaults.minDateTime = min;
1882
+ } else if (max) { //if max was set
1883
+ if (max === 0) {
1884
+ max = new Date();
1885
+ } else {
1886
+ max = new Date(max);
1887
+ }
1888
+ tp_inst._defaults.maxDate = max;
1889
+ tp_inst._defaults.maxDateTime = max;
1890
+ } else if (onselect) {
1891
+ tp_inst._defaults.onSelect = onselect;
1892
+ }
1893
+
1894
+ // Datepicker will override our date when we call _base_optionDatepicker when
1895
+ // calling minDate/maxDate, so we will first grab the value, call
1896
+ // _base_optionDatepicker, then set our value back.
1897
+ if(min || max){
1898
+ $target = $(target);
1899
+ oldVal = $target.datetimepicker('getDate');
1900
+ ret = this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);
1901
+ $target.datetimepicker('setDate', oldVal);
1902
+ return ret;
1903
+ }
1904
+ }
1905
+ if (value === undefined) {
1906
+ return this._base_optionDatepicker.call($.datepicker, target, name);
1907
+ }
1908
+ return this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);
1909
+ };
1910
+
1911
+ /*
1912
+ * jQuery isEmptyObject does not check hasOwnProperty - if someone has added to the object prototype,
1913
+ * it will return false for all objects
1914
+ */
1915
+ var isEmptyObject = function (obj) {
1916
+ var prop;
1917
+ for (prop in obj) {
1918
+ if (obj.hasOwnProperty(prop)) {
1919
+ return false;
1920
+ }
1921
+ }
1922
+ return true;
1923
+ };
1924
+
1925
+ /*
1926
+ * jQuery extend now ignores nulls!
1927
+ */
1928
+ var extendRemove = function (target, props) {
1929
+ $.extend(target, props);
1930
+ for (var name in props) {
1931
+ if (props[name] === null || props[name] === undefined) {
1932
+ target[name] = props[name];
1933
+ }
1934
+ }
1935
+ return target;
1936
+ };
1937
+
1938
+ /*
1939
+ * Determine by the time format which units are supported
1940
+ * Returns an object of booleans for each unit
1941
+ */
1942
+ var detectSupport = function (timeFormat) {
1943
+ var tf = timeFormat.replace(/'.*?'/g, '').toLowerCase(), // removes literals
1944
+ isIn = function (f, t) { // does the format contain the token?
1945
+ return f.indexOf(t) !== -1 ? true : false;
1946
+ };
1947
+ return {
1948
+ hour: isIn(tf, 'h'),
1949
+ minute: isIn(tf, 'm'),
1950
+ second: isIn(tf, 's'),
1951
+ millisec: isIn(tf, 'l'),
1952
+ microsec: isIn(tf, 'c'),
1953
+ timezone: isIn(tf, 'z'),
1954
+ ampm: isIn(tf, 't') && isIn(timeFormat, 'h'),
1955
+ iso8601: isIn(timeFormat, 'Z')
1956
+ };
1957
+ };
1958
+
1959
+ /*
1960
+ * Converts 24 hour format into 12 hour
1961
+ * Returns 12 hour without leading 0
1962
+ */
1963
+ var convert24to12 = function (hour) {
1964
+ hour %= 12;
1965
+
1966
+ if (hour === 0) {
1967
+ hour = 12;
1968
+ }
1969
+
1970
+ return String(hour);
1971
+ };
1972
+
1973
+ var computeEffectiveSetting = function (settings, property) {
1974
+ return settings && settings[property] ? settings[property] : $.timepicker._defaults[property];
1975
+ };
1976
+
1977
+ /*
1978
+ * Splits datetime string into date and time substrings.
1979
+ * Throws exception when date can't be parsed
1980
+ * Returns {dateString: dateString, timeString: timeString}
1981
+ */
1982
+ var splitDateTime = function (dateTimeString, timeSettings) {
1983
+ // The idea is to get the number separator occurrences in datetime and the time format requested (since time has
1984
+ // fewer unknowns, mostly numbers and am/pm). We will use the time pattern to split.
1985
+ var separator = computeEffectiveSetting(timeSettings, 'separator'),
1986
+ format = computeEffectiveSetting(timeSettings, 'timeFormat'),
1987
+ timeParts = format.split(separator), // how many occurrences of separator may be in our format?
1988
+ timePartsLen = timeParts.length,
1989
+ allParts = dateTimeString.split(separator),
1990
+ allPartsLen = allParts.length;
1991
+
1992
+ if (allPartsLen > 1) {
1993
+ return {
1994
+ dateString: allParts.splice(0, allPartsLen - timePartsLen).join(separator),
1995
+ timeString: allParts.splice(0, timePartsLen).join(separator)
1996
+ };
1997
+ }
1998
+
1999
+ return {
2000
+ dateString: dateTimeString,
2001
+ timeString: ''
2002
+ };
2003
+ };
2004
+
2005
+ /*
2006
+ * Internal function to parse datetime interval
2007
+ * Returns: {date: Date, timeObj: Object}, where
2008
+ * date - parsed date without time (type Date)
2009
+ * timeObj = {hour: , minute: , second: , millisec: , microsec: } - parsed time. Optional
2010
+ */
2011
+ var parseDateTimeInternal = function (dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings) {
2012
+ var date,
2013
+ parts,
2014
+ parsedTime;
2015
+
2016
+ parts = splitDateTime(dateTimeString, timeSettings);
2017
+ date = $.datepicker._base_parseDate(dateFormat, parts.dateString, dateSettings);
2018
+
2019
+ if (parts.timeString === '') {
2020
+ return {
2021
+ date: date
2022
+ };
2023
+ }
2024
+
2025
+ parsedTime = $.datepicker.parseTime(timeFormat, parts.timeString, timeSettings);
2026
+
2027
+ if (!parsedTime) {
2028
+ throw 'Wrong time format';
2029
+ }
2030
+
2031
+ return {
2032
+ date: date,
2033
+ timeObj: parsedTime
2034
+ };
2035
+ };
2036
+
2037
+ /*
2038
+ * Internal function to set timezone_select to the local timezone
2039
+ */
2040
+ var selectLocalTimezone = function (tp_inst, date) {
2041
+ if (tp_inst && tp_inst.timezone_select) {
2042
+ var now = date || new Date();
2043
+ tp_inst.timezone_select.val(-now.getTimezoneOffset());
2044
+ }
2045
+ };
2046
+
2047
+ /*
2048
+ * Create a Singleton Instance
2049
+ */
2050
+ $.timepicker = new Timepicker();
2051
+
2052
+ /**
2053
+ * Get the timezone offset as string from a date object (eg '+0530' for UTC+5.5)
2054
+ * @param {number} tzMinutes if not a number, less than -720 (-1200), or greater than 840 (+1400) this value is returned
2055
+ * @param {boolean} iso8601 if true formats in accordance to iso8601 "+12:45"
2056
+ * @return {string}
2057
+ */
2058
+ $.timepicker.timezoneOffsetString = function (tzMinutes, iso8601) {
2059
+ if (isNaN(tzMinutes) || tzMinutes > 840 || tzMinutes < -720) {
2060
+ return tzMinutes;
2061
+ }
2062
+
2063
+ var off = tzMinutes,
2064
+ minutes = off % 60,
2065
+ hours = (off - minutes) / 60,
2066
+ iso = iso8601 ? ':' : '',
2067
+ tz = (off >= 0 ? '+' : '-') + ('0' + Math.abs(hours)).slice(-2) + iso + ('0' + Math.abs(minutes)).slice(-2);
2068
+
2069
+ if (tz === '+00:00') {
2070
+ return 'Z';
2071
+ }
2072
+ return tz;
2073
+ };
2074
+
2075
+ /**
2076
+ * Get the number in minutes that represents a timezone string
2077
+ * @param {string} tzString formatted like "+0500", "-1245", "Z"
2078
+ * @return {number} the offset minutes or the original string if it doesn't match expectations
2079
+ */
2080
+ $.timepicker.timezoneOffsetNumber = function (tzString) {
2081
+ var normalized = tzString.toString().replace(':', ''); // excuse any iso8601, end up with "+1245"
2082
+
2083
+ if (normalized.toUpperCase() === 'Z') { // if iso8601 with Z, its 0 minute offset
2084
+ return 0;
2085
+ }
2086
+
2087
+ if (!/^(\-|\+)\d{4}$/.test(normalized)) { // possibly a user defined tz, so just give it back
2088
+ return parseInt(tzString, 10);
2089
+ }
2090
+
2091
+ return ((normalized.substr(0, 1) === '-' ? -1 : 1) * // plus or minus
2092
+ ((parseInt(normalized.substr(1, 2), 10) * 60) + // hours (converted to minutes)
2093
+ parseInt(normalized.substr(3, 2), 10))); // minutes
2094
+ };
2095
+
2096
+ /**
2097
+ * No way to set timezone in js Date, so we must adjust the minutes to compensate. (think setDate, getDate)
2098
+ * @param {Date} date
2099
+ * @param {string} fromTimezone formatted like "+0500", "-1245"
2100
+ * @param {string} toTimezone formatted like "+0500", "-1245"
2101
+ * @return {Date}
2102
+ */
2103
+ $.timepicker.timezoneAdjust = function (date, fromTimezone, toTimezone) {
2104
+ var fromTz = $.timepicker.timezoneOffsetNumber(fromTimezone);
2105
+ var toTz = $.timepicker.timezoneOffsetNumber(toTimezone);
2106
+ if (!isNaN(toTz)) {
2107
+ date.setMinutes(date.getMinutes() + (-fromTz) - (-toTz));
2108
+ }
2109
+ return date;
2110
+ };
2111
+
2112
+ /**
2113
+ * Calls `timepicker()` on the `startTime` and `endTime` elements, and configures them to
2114
+ * enforce date range limits.
2115
+ * n.b. The input value must be correctly formatted (reformatting is not supported)
2116
+ * @param {Element} startTime
2117
+ * @param {Element} endTime
2118
+ * @param {Object} options Options for the timepicker() call
2119
+ * @return {jQuery}
2120
+ */
2121
+ $.timepicker.timeRange = function (startTime, endTime, options) {
2122
+ return $.timepicker.handleRange('timepicker', startTime, endTime, options);
2123
+ };
2124
+
2125
+ /**
2126
+ * Calls `datetimepicker` on the `startTime` and `endTime` elements, and configures them to
2127
+ * enforce date range limits.
2128
+ * @param {Element} startTime
2129
+ * @param {Element} endTime
2130
+ * @param {Object} options Options for the `timepicker()` call. Also supports `reformat`,
2131
+ * a boolean value that can be used to reformat the input values to the `dateFormat`.
2132
+ * @param {string} method Can be used to specify the type of picker to be added
2133
+ * @return {jQuery}
2134
+ */
2135
+ $.timepicker.datetimeRange = function (startTime, endTime, options) {
2136
+ $.timepicker.handleRange('datetimepicker', startTime, endTime, options);
2137
+ };
2138
+
2139
+ /**
2140
+ * Calls `datepicker` on the `startTime` and `endTime` elements, and configures them to
2141
+ * enforce date range limits.
2142
+ * @param {Element} startTime
2143
+ * @param {Element} endTime
2144
+ * @param {Object} options Options for the `timepicker()` call. Also supports `reformat`,
2145
+ * a boolean value that can be used to reformat the input values to the `dateFormat`.
2146
+ * @return {jQuery}
2147
+ */
2148
+ $.timepicker.dateRange = function (startTime, endTime, options) {
2149
+ $.timepicker.handleRange('datepicker', startTime, endTime, options);
2150
+ };
2151
+
2152
+ /**
2153
+ * Calls `method` on the `startTime` and `endTime` elements, and configures them to
2154
+ * enforce date range limits.
2155
+ * @param {string} method Can be used to specify the type of picker to be added
2156
+ * @param {Element} startTime
2157
+ * @param {Element} endTime
2158
+ * @param {Object} options Options for the `timepicker()` call. Also supports `reformat`,
2159
+ * a boolean value that can be used to reformat the input values to the `dateFormat`.
2160
+ * @return {jQuery}
2161
+ */
2162
+ $.timepicker.handleRange = function (method, startTime, endTime, options) {
2163
+ options = $.extend({}, {
2164
+ minInterval: 0, // min allowed interval in milliseconds
2165
+ maxInterval: 0, // max allowed interval in milliseconds
2166
+ start: {}, // options for start picker
2167
+ end: {} // options for end picker
2168
+ }, options);
2169
+
2170
+ // for the mean time this fixes an issue with calling getDate with timepicker()
2171
+ var timeOnly = false;
2172
+ if(method === 'timepicker'){
2173
+ timeOnly = true;
2174
+ method = 'datetimepicker';
2175
+ }
2176
+
2177
+ function checkDates(changed, other) {
2178
+ var startdt = startTime[method]('getDate'),
2179
+ enddt = endTime[method]('getDate'),
2180
+ changeddt = changed[method]('getDate');
2181
+
2182
+ if (startdt !== null) {
2183
+ var minDate = new Date(startdt.getTime()),
2184
+ maxDate = new Date(startdt.getTime());
2185
+
2186
+ minDate.setMilliseconds(minDate.getMilliseconds() + options.minInterval);
2187
+ maxDate.setMilliseconds(maxDate.getMilliseconds() + options.maxInterval);
2188
+
2189
+ if (options.minInterval > 0 && minDate > enddt) { // minInterval check
2190
+ endTime[method]('setDate', minDate);
2191
+ }
2192
+ else if (options.maxInterval > 0 && maxDate < enddt) { // max interval check
2193
+ endTime[method]('setDate', maxDate);
2194
+ }
2195
+ else if (startdt > enddt) {
2196
+ other[method]('setDate', changeddt);
2197
+ }
2198
+ }
2199
+ }
2200
+
2201
+ function selected(changed, other, option) {
2202
+ if (!changed.val()) {
2203
+ return;
2204
+ }
2205
+ var date = changed[method].call(changed, 'getDate');
2206
+ if (date !== null && options.minInterval > 0) {
2207
+ if (option === 'minDate') {
2208
+ date.setMilliseconds(date.getMilliseconds() + options.minInterval);
2209
+ }
2210
+ if (option === 'maxDate') {
2211
+ date.setMilliseconds(date.getMilliseconds() - options.minInterval);
2212
+ }
2213
+ }
2214
+
2215
+ if (date.getTime) {
2216
+ other[method].call(other, 'option', option, date);
2217
+ }
2218
+ }
2219
+
2220
+ $.fn[method].call(startTime, $.extend({
2221
+ timeOnly: timeOnly,
2222
+ onClose: function (dateText, inst) {
2223
+ checkDates($(this), endTime);
2224
+ },
2225
+ onSelect: function (selectedDateTime) {
2226
+ selected($(this), endTime, 'minDate');
2227
+ }
2228
+ }, options, options.start));
2229
+ $.fn[method].call(endTime, $.extend({
2230
+ timeOnly: timeOnly,
2231
+ onClose: function (dateText, inst) {
2232
+ checkDates($(this), startTime);
2233
+ },
2234
+ onSelect: function (selectedDateTime) {
2235
+ selected($(this), startTime, 'maxDate');
2236
+ }
2237
+ }, options, options.end));
2238
+
2239
+ checkDates(startTime, endTime);
2240
+
2241
+ selected(startTime, endTime, 'minDate');
2242
+ selected(endTime, startTime, 'maxDate');
2243
+
2244
+ return $([startTime.get(0), endTime.get(0)]);
2245
+ };
2246
+
2247
+ /**
2248
+ * Log error or data to the console during error or debugging
2249
+ * @param {Object} err pass any type object to log to the console during error or debugging
2250
+ * @return {void}
2251
+ */
2252
+ $.timepicker.log = function () {
2253
+ // Older IE (9, maybe 10) throw error on accessing `window.console.log.apply`, so check first.
2254
+ if (window.console && window.console.log && window.console.log.apply) {
2255
+ window.console.log.apply(window.console, Array.prototype.slice.call(arguments));
2256
+ }
2257
+ };
2258
+
2259
+ /*
2260
+ * Add util object to allow access to private methods for testability.
2261
+ */
2262
+ $.timepicker._util = {
2263
+ _extendRemove: extendRemove,
2264
+ _isEmptyObject: isEmptyObject,
2265
+ _convert24to12: convert24to12,
2266
+ _detectSupport: detectSupport,
2267
+ _selectLocalTimezone: selectLocalTimezone,
2268
+ _computeEffectiveSetting: computeEffectiveSetting,
2269
+ _splitDateTime: splitDateTime,
2270
+ _parseDateTimeInternal: parseDateTimeInternal
2271
+ };
2272
+
2273
+ /*
2274
+ * Microsecond support
2275
+ */
2276
+ if (!Date.prototype.getMicroseconds) {
2277
+ Date.prototype.microseconds = 0;
2278
+ Date.prototype.getMicroseconds = function () { return this.microseconds; };
2279
+ Date.prototype.setMicroseconds = function (m) {
2280
+ this.setMilliseconds(this.getMilliseconds() + Math.floor(m / 1000));
2281
+ this.microseconds = m % 1000;
2282
+ return this;
2283
+ };
2284
+ }
2285
+
2286
+ /*
2287
+ * Keep up with the version
2288
+ */
2289
+ $.timepicker.version = "1.6.3";
2290
+
2291
+ }));
includes/fields/js/jquery-ui-timepicker-addon.min.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ /*! jQuery Timepicker Addon - v1.6.3 - 2016-04-20
2
+ * http://trentrichardson.com/examples/timepicker
3
+ * Copyright (c) 2016 Trent Richardson; Licensed MIT */
4
+ !function(a){"function"==typeof define&&define.amd?define(["jquery","jquery-ui"],a):a(jQuery)}(function($){if($.ui.timepicker=$.ui.timepicker||{},!$.ui.timepicker.version){$.extend($.ui,{timepicker:{version:"1.6.3"}});var Timepicker=function(){this.regional=[],this.regional[""]={currentText:"Now",closeText:"Done",amNames:["AM","A"],pmNames:["PM","P"],timeFormat:"HH:mm",timeSuffix:"",timeOnlyTitle:"Choose Time",timeText:"Time",hourText:"Hour",minuteText:"Minute",secondText:"Second",millisecText:"Millisecond",microsecText:"Microsecond",timezoneText:"Time Zone",isRTL:!1},this._defaults={showButtonPanel:!0,timeOnly:!1,timeOnlyShowDate:!1,showHour:null,showMinute:null,showSecond:null,showMillisec:null,showMicrosec:null,showTimezone:null,showTime:!0,stepHour:1,stepMinute:1,stepSecond:1,stepMillisec:1,stepMicrosec:1,hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null,hourMin:0,minuteMin:0,secondMin:0,millisecMin:0,microsecMin:0,hourMax:23,minuteMax:59,secondMax:59,millisecMax:999,microsecMax:999,minDateTime:null,maxDateTime:null,maxTime:null,minTime:null,onSelect:null,hourGrid:0,minuteGrid:0,secondGrid:0,millisecGrid:0,microsecGrid:0,alwaysSetTime:!0,separator:" ",altFieldTimeOnly:!0,altTimeFormat:null,altSeparator:null,altTimeSuffix:null,altRedirectFocus:!0,pickerTimeFormat:null,pickerTimeSuffix:null,showTimepicker:!0,timezoneList:null,addSliderAccess:!1,sliderAccessArgs:null,controlType:"slider",oneLine:!1,defaultValue:null,parse:"strict",afterInject:null},$.extend(this._defaults,this.regional[""])};$.extend(Timepicker.prototype,{$input:null,$altInput:null,$timeObj:null,inst:null,hour_slider:null,minute_slider:null,second_slider:null,millisec_slider:null,microsec_slider:null,timezone_select:null,maxTime:null,minTime:null,hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null,hourMinOriginal:null,minuteMinOriginal:null,secondMinOriginal:null,millisecMinOriginal:null,microsecMinOriginal:null,hourMaxOriginal:null,minuteMaxOriginal:null,secondMaxOriginal:null,millisecMaxOriginal:null,microsecMaxOriginal:null,ampm:"",formattedDate:"",formattedTime:"",formattedDateTime:"",timezoneList:null,units:["hour","minute","second","millisec","microsec"],support:{},control:null,setDefaults:function(a){return extendRemove(this._defaults,a||{}),this},_newInst:function($input,opts){var tp_inst=new Timepicker,inlineSettings={},fns={},overrides,i;for(var attrName in this._defaults)if(this._defaults.hasOwnProperty(attrName)){var attrValue=$input.attr("time:"+attrName);if(attrValue)try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}overrides={beforeShow:function(a,b){return $.isFunction(tp_inst._defaults.evnts.beforeShow)?tp_inst._defaults.evnts.beforeShow.call($input[0],a,b,tp_inst):void 0},onChangeMonthYear:function(a,b,c){$.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)&&tp_inst._defaults.evnts.onChangeMonthYear.call($input[0],a,b,c,tp_inst)},onClose:function(a,b){tp_inst.timeDefined===!0&&""!==$input.val()&&tp_inst._updateDateTime(b),$.isFunction(tp_inst._defaults.evnts.onClose)&&tp_inst._defaults.evnts.onClose.call($input[0],a,b,tp_inst)}};for(i in overrides)overrides.hasOwnProperty(i)&&(fns[i]=opts[i]||this._defaults[i]||null);tp_inst._defaults=$.extend({},this._defaults,inlineSettings,opts,overrides,{evnts:fns,timepicker:tp_inst}),tp_inst.amNames=$.map(tp_inst._defaults.amNames,function(a){return a.toUpperCase()}),tp_inst.pmNames=$.map(tp_inst._defaults.pmNames,function(a){return a.toUpperCase()}),tp_inst.support=detectSupport(tp_inst._defaults.timeFormat+(tp_inst._defaults.pickerTimeFormat?tp_inst._defaults.pickerTimeFormat:"")+(tp_inst._defaults.altTimeFormat?tp_inst._defaults.altTimeFormat:"")),"string"==typeof tp_inst._defaults.controlType?("slider"===tp_inst._defaults.controlType&&"undefined"==typeof $.ui.slider&&(tp_inst._defaults.controlType="select"),tp_inst.control=tp_inst._controls[tp_inst._defaults.controlType]):tp_inst.control=tp_inst._defaults.controlType;var timezoneList=[-720,-660,-600,-570,-540,-480,-420,-360,-300,-270,-240,-210,-180,-120,-60,0,60,120,180,210,240,270,300,330,345,360,390,420,480,525,540,570,600,630,660,690,720,765,780,840];null!==tp_inst._defaults.timezoneList&&(timezoneList=tp_inst._defaults.timezoneList);var tzl=timezoneList.length,tzi=0,tzv=null;if(tzl>0&&"object"!=typeof timezoneList[0])for(;tzl>tzi;tzi++)tzv=timezoneList[tzi],timezoneList[tzi]={value:tzv,label:$.timepicker.timezoneOffsetString(tzv,tp_inst.support.iso8601)};return tp_inst._defaults.timezoneList=timezoneList,tp_inst.timezone=null!==tp_inst._defaults.timezone?$.timepicker.timezoneOffsetNumber(tp_inst._defaults.timezone):-1*(new Date).getTimezoneOffset(),tp_inst.hour=tp_inst._defaults.hour<tp_inst._defaults.hourMin?tp_inst._defaults.hourMin:tp_inst._defaults.hour>tp_inst._defaults.hourMax?tp_inst._defaults.hourMax:tp_inst._defaults.hour,tp_inst.minute=tp_inst._defaults.minute<tp_inst._defaults.minuteMin?tp_inst._defaults.minuteMin:tp_inst._defaults.minute>tp_inst._defaults.minuteMax?tp_inst._defaults.minuteMax:tp_inst._defaults.minute,tp_inst.second=tp_inst._defaults.second<tp_inst._defaults.secondMin?tp_inst._defaults.secondMin:tp_inst._defaults.second>tp_inst._defaults.secondMax?tp_inst._defaults.secondMax:tp_inst._defaults.second,tp_inst.millisec=tp_inst._defaults.millisec<tp_inst._defaults.millisecMin?tp_inst._defaults.millisecMin:tp_inst._defaults.millisec>tp_inst._defaults.millisecMax?tp_inst._defaults.millisecMax:tp_inst._defaults.millisec,tp_inst.microsec=tp_inst._defaults.microsec<tp_inst._defaults.microsecMin?tp_inst._defaults.microsecMin:tp_inst._defaults.microsec>tp_inst._defaults.microsecMax?tp_inst._defaults.microsecMax:tp_inst._defaults.microsec,tp_inst.ampm="",tp_inst.$input=$input,tp_inst._defaults.altField&&(tp_inst.$altInput=$(tp_inst._defaults.altField),tp_inst._defaults.altRedirectFocus===!0&&tp_inst.$altInput.css({cursor:"pointer"}).focus(function(){$input.trigger("focus")})),(0===tp_inst._defaults.minDate||0===tp_inst._defaults.minDateTime)&&(tp_inst._defaults.minDate=new Date),(0===tp_inst._defaults.maxDate||0===tp_inst._defaults.maxDateTime)&&(tp_inst._defaults.maxDate=new Date),void 0!==tp_inst._defaults.minDate&&tp_inst._defaults.minDate instanceof Date&&(tp_inst._defaults.minDateTime=new Date(tp_inst._defaults.minDate.getTime())),void 0!==tp_inst._defaults.minDateTime&&tp_inst._defaults.minDateTime instanceof Date&&(tp_inst._defaults.minDate=new Date(tp_inst._defaults.minDateTime.getTime())),void 0!==tp_inst._defaults.maxDate&&tp_inst._defaults.maxDate instanceof Date&&(tp_inst._defaults.maxDateTime=new Date(tp_inst._defaults.maxDate.getTime())),void 0!==tp_inst._defaults.maxDateTime&&tp_inst._defaults.maxDateTime instanceof Date&&(tp_inst._defaults.maxDate=new Date(tp_inst._defaults.maxDateTime.getTime())),tp_inst.$input.bind("focus",function(){tp_inst._onFocus()}),tp_inst},_addTimePicker:function(a){var b=$.trim(this.$altInput&&this._defaults.altFieldTimeOnly?this.$input.val()+" "+this.$altInput.val():this.$input.val());this.timeDefined=this._parseTime(b),this._limitMinMaxDateTime(a,!1),this._injectTimePicker(),this._afterInject()},_parseTime:function(a,b){if(this.inst||(this.inst=$.datepicker._getInst(this.$input[0])),b||!this._defaults.timeOnly){var c=$.datepicker._get(this.inst,"dateFormat");try{var d=parseDateTimeInternal(c,this._defaults.timeFormat,a,$.datepicker._getFormatConfig(this.inst),this._defaults);if(!d.timeObj)return!1;$.extend(this,d.timeObj)}catch(e){return $.timepicker.log("Error parsing the date/time string: "+e+"\ndate/time string = "+a+"\ntimeFormat = "+this._defaults.timeFormat+"\ndateFormat = "+c),!1}return!0}var f=$.datepicker.parseTime(this._defaults.timeFormat,a,this._defaults);return f?($.extend(this,f),!0):!1},_afterInject:function(){var a=this.inst.settings;$.isFunction(a.afterInject)&&a.afterInject.call(this)},_injectTimePicker:function(){var a=this.inst.dpDiv,b=this.inst.settings,c=this,d="",e="",f=null,g={},h={},i=null,j=0,k=0;if(0===a.find("div.ui-timepicker-div").length&&b.showTimepicker){var l=" ui_tpicker_unit_hide",m='<div class="ui-timepicker-div'+(b.isRTL?" ui-timepicker-rtl":"")+(b.oneLine&&"select"===b.controlType?" ui-timepicker-oneLine":"")+'"><dl><dt class="ui_tpicker_time_label'+(b.showTime?"":l)+'">'+b.timeText+'</dt><dd class="ui_tpicker_time '+(b.showTime?"":l)+'"><input class="ui_tpicker_time_input" '+(b.timeInput?"":"disabled")+"/></dd>";for(j=0,k=this.units.length;k>j;j++){if(d=this.units[j],e=d.substr(0,1).toUpperCase()+d.substr(1),f=null!==b["show"+e]?b["show"+e]:this.support[d],g[d]=parseInt(b[d+"Max"]-(b[d+"Max"]-b[d+"Min"])%b["step"+e],10),h[d]=0,m+='<dt class="ui_tpicker_'+d+"_label"+(f?"":l)+'">'+b[d+"Text"]+'</dt><dd class="ui_tpicker_'+d+(f?"":l)+'"><div class="ui_tpicker_'+d+"_slider"+(f?"":l)+'"></div>',f&&b[d+"Grid"]>0){if(m+='<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>',"hour"===d)for(var n=b[d+"Min"];n<=g[d];n+=parseInt(b[d+"Grid"],10)){h[d]++;var o=$.datepicker.formatTime(this.support.ampm?"hht":"HH",{hour:n},b);m+='<td data-for="'+d+'">'+o+"</td>"}else for(var p=b[d+"Min"];p<=g[d];p+=parseInt(b[d+"Grid"],10))h[d]++,m+='<td data-for="'+d+'">'+(10>p?"0":"")+p+"</td>";m+="</tr></table></div>"}m+="</dd>"}var q=null!==b.showTimezone?b.showTimezone:this.support.timezone;m+='<dt class="ui_tpicker_timezone_label'+(q?"":l)+'">'+b.timezoneText+"</dt>",m+='<dd class="ui_tpicker_timezone'+(q?"":l)+'"></dd>',m+="</dl></div>";var r=$(m);for(b.timeOnly===!0&&(r.prepend('<div class="ui-widget-header ui-helper-clearfix ui-corner-all"><div class="ui-datepicker-title">'+b.timeOnlyTitle+"</div></div>"),a.find(".ui-datepicker-header, .ui-datepicker-calendar").hide()),j=0,k=c.units.length;k>j;j++)d=c.units[j],e=d.substr(0,1).toUpperCase()+d.substr(1),f=null!==b["show"+e]?b["show"+e]:this.support[d],c[d+"_slider"]=c.control.create(c,r.find(".ui_tpicker_"+d+"_slider"),d,c[d],b[d+"Min"],g[d],b["step"+e]),f&&b[d+"Grid"]>0&&(i=100*h[d]*b[d+"Grid"]/(g[d]-b[d+"Min"]),r.find(".ui_tpicker_"+d+" table").css({width:i+"%",marginLeft:b.isRTL?"0":i/(-2*h[d])+"%",marginRight:b.isRTL?i/(-2*h[d])+"%":"0",borderCollapse:"collapse"}).find("td").click(function(a){var b=$(this),e=b.html(),f=parseInt(e.replace(/[^0-9]/g),10),g=e.replace(/[^apm]/gi),h=b.data("for");"hour"===h&&(-1!==g.indexOf("p")&&12>f?f+=12:-1!==g.indexOf("a")&&12===f&&(f=0)),c.control.value(c,c[h+"_slider"],d,f),c._onTimeChange(),c._onSelectHandler()}).css({cursor:"pointer",width:100/h[d]+"%",textAlign:"center",overflow:"hidden"}));if(this.timezone_select=r.find(".ui_tpicker_timezone").append("<select></select>").find("select"),$.fn.append.apply(this.timezone_select,$.map(b.timezoneList,function(a,b){return $("<option />").val("object"==typeof a?a.value:a).text("object"==typeof a?a.label:a)})),"undefined"!=typeof this.timezone&&null!==this.timezone&&""!==this.timezone){var s=-1*new Date(this.inst.selectedYear,this.inst.selectedMonth,this.inst.selectedDay,12).getTimezoneOffset();s===this.timezone?selectLocalTimezone(c):this.timezone_select.val(this.timezone)}else"undefined"!=typeof this.hour&&null!==this.hour&&""!==this.hour?this.timezone_select.val(b.timezone):selectLocalTimezone(c);this.timezone_select.change(function(){c._onTimeChange(),c._onSelectHandler(),c._afterInject()});var t=a.find(".ui-datepicker-buttonpane");if(t.length?t.before(r):a.append(r),this.$timeObj=r.find(".ui_tpicker_time_input"),this.$timeObj.change(function(){var a=c.inst.settings.timeFormat,b=$.datepicker.parseTime(a,this.value),d=new Date;b?(d.setHours(b.hour),d.setMinutes(b.minute),d.setSeconds(b.second),$.datepicker._setTime(c.inst,d)):(this.value=c.formattedTime,this.blur())}),null!==this.inst){var u=this.timeDefined;this._onTimeChange(),this.timeDefined=u}if(this._defaults.addSliderAccess){var v=this._defaults.sliderAccessArgs,w=this._defaults.isRTL;v.isRTL=w,setTimeout(function(){if(0===r.find(".ui-slider-access").length){r.find(".ui-slider:visible").sliderAccess(v);var a=r.find(".ui-slider-access:eq(0)").outerWidth(!0);a&&r.find("table:visible").each(function(){var b=$(this),c=b.outerWidth(),d=b.css(w?"marginRight":"marginLeft").toString().replace("%",""),e=c-a,f=d*e/c+"%",g={width:e,marginRight:0,marginLeft:0};g[w?"marginRight":"marginLeft"]=f,b.css(g)})}},10)}c._limitMinMaxDateTime(this.inst,!0)}},_limitMinMaxDateTime:function(a,b){var c=this._defaults,d=new Date(a.selectedYear,a.selectedMonth,a.selectedDay);if(this._defaults.showTimepicker){if(null!==$.datepicker._get(a,"minDateTime")&&void 0!==$.datepicker._get(a,"minDateTime")&&d){var e=$.datepicker._get(a,"minDateTime"),f=new Date(e.getFullYear(),e.getMonth(),e.getDate(),0,0,0,0);(null===this.hourMinOriginal||null===this.minuteMinOriginal||null===this.secondMinOriginal||null===this.millisecMinOriginal||null===this.microsecMinOriginal)&&(this.hourMinOriginal=c.hourMin,this.minuteMinOriginal=c.minuteMin,this.secondMinOriginal=c.secondMin,this.millisecMinOriginal=c.millisecMin,this.microsecMinOriginal=c.microsecMin),a.settings.timeOnly||f.getTime()===d.getTime()?(this._defaults.hourMin=e.getHours(),this.hour<=this._defaults.hourMin?(this.hour=this._defaults.hourMin,this._defaults.minuteMin=e.getMinutes(),this.minute<=this._defaults.minuteMin?(this.minute=this._defaults.minuteMin,this._defaults.secondMin=e.getSeconds(),this.second<=this._defaults.secondMin?(this.second=this._defaults.secondMin,this._defaults.millisecMin=e.getMilliseconds(),this.millisec<=this._defaults.millisecMin?(this.millisec=this._defaults.millisecMin,this._defaults.microsecMin=e.getMicroseconds()):(this.microsec<this._defaults.microsecMin&&(this.microsec=this._defaults.microsecMin),this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.secondMin=this.secondMinOriginal,this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.minuteMin=this.minuteMinOriginal,this._defaults.secondMin=this.secondMinOriginal,this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.hourMin=this.hourMinOriginal,this._defaults.minuteMin=this.minuteMinOriginal,this._defaults.secondMin=this.secondMinOriginal,this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)}if(null!==$.datepicker._get(a,"maxDateTime")&&void 0!==$.datepicker._get(a,"maxDateTime")&&d){var g=$.datepicker._get(a,"maxDateTime"),h=new Date(g.getFullYear(),g.getMonth(),g.getDate(),0,0,0,0);(null===this.hourMaxOriginal||null===this.minuteMaxOriginal||null===this.secondMaxOriginal||null===this.millisecMaxOriginal)&&(this.hourMaxOriginal=c.hourMax,this.minuteMaxOriginal=c.minuteMax,this.secondMaxOriginal=c.secondMax,this.millisecMaxOriginal=c.millisecMax,this.microsecMaxOriginal=c.microsecMax),a.settings.timeOnly||h.getTime()===d.getTime()?(this._defaults.hourMax=g.getHours(),this.hour>=this._defaults.hourMax?(this.hour=this._defaults.hourMax,this._defaults.minuteMax=g.getMinutes(),this.minute>=this._defaults.minuteMax?(this.minute=this._defaults.minuteMax,this._defaults.secondMax=g.getSeconds(),this.second>=this._defaults.secondMax?(this.second=this._defaults.secondMax,this._defaults.millisecMax=g.getMilliseconds(),this.millisec>=this._defaults.millisecMax?(this.millisec=this._defaults.millisecMax,this._defaults.microsecMax=g.getMicroseconds()):(this.microsec>this._defaults.microsecMax&&(this.microsec=this._defaults.microsecMax),this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.minuteMax=this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.hourMax=this.hourMaxOriginal,this._defaults.minuteMax=this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)}if(null!==a.settings.minTime){var i=new Date("01/01/1970 "+a.settings.minTime);this.hour<i.getHours()?(this.hour=this._defaults.hourMin=i.getHours(),this.minute=this._defaults.minuteMin=i.getMinutes()):this.hour===i.getHours()&&this.minute<i.getMinutes()?this.minute=this._defaults.minuteMin=i.getMinutes():this._defaults.hourMin<i.getHours()?(this._defaults.hourMin=i.getHours(),this._defaults.minuteMin=i.getMinutes()):this._defaults.hourMin===i.getHours()===this.hour&&this._defaults.minuteMin<i.getMinutes()?this._defaults.minuteMin=i.getMinutes():this._defaults.minuteMin=0}if(null!==a.settings.maxTime){var j=new Date("01/01/1970 "+a.settings.maxTime);this.hour>j.getHours()?(this.hour=this._defaults.hourMax=j.getHours(),this.minute=this._defaults.minuteMax=j.getMinutes()):this.hour===j.getHours()&&this.minute>j.getMinutes()?this.minute=this._defaults.minuteMax=j.getMinutes():this._defaults.hourMax>j.getHours()?(this._defaults.hourMax=j.getHours(),this._defaults.minuteMax=j.getMinutes()):this._defaults.hourMax===j.getHours()===this.hour&&this._defaults.minuteMax>j.getMinutes()?this._defaults.minuteMax=j.getMinutes():this._defaults.minuteMax=59}if(void 0!==b&&b===!0){var k=parseInt(this._defaults.hourMax-(this._defaults.hourMax-this._defaults.hourMin)%this._defaults.stepHour,10),l=parseInt(this._defaults.minuteMax-(this._defaults.minuteMax-this._defaults.minuteMin)%this._defaults.stepMinute,10),m=parseInt(this._defaults.secondMax-(this._defaults.secondMax-this._defaults.secondMin)%this._defaults.stepSecond,10),n=parseInt(this._defaults.millisecMax-(this._defaults.millisecMax-this._defaults.millisecMin)%this._defaults.stepMillisec,10),o=parseInt(this._defaults.microsecMax-(this._defaults.microsecMax-this._defaults.microsecMin)%this._defaults.stepMicrosec,10);this.hour_slider&&(this.control.options(this,this.hour_slider,"hour",{min:this._defaults.hourMin,max:k,step:this._defaults.stepHour}),this.control.value(this,this.hour_slider,"hour",this.hour-this.hour%this._defaults.stepHour)),this.minute_slider&&(this.control.options(this,this.minute_slider,"minute",{min:this._defaults.minuteMin,max:l,step:this._defaults.stepMinute}),this.control.value(this,this.minute_slider,"minute",this.minute-this.minute%this._defaults.stepMinute)),this.second_slider&&(this.control.options(this,this.second_slider,"second",{min:this._defaults.secondMin,max:m,step:this._defaults.stepSecond}),this.control.value(this,this.second_slider,"second",this.second-this.second%this._defaults.stepSecond)),this.millisec_slider&&(this.control.options(this,this.millisec_slider,"millisec",{min:this._defaults.millisecMin,max:n,step:this._defaults.stepMillisec}),this.control.value(this,this.millisec_slider,"millisec",this.millisec-this.millisec%this._defaults.stepMillisec)),this.microsec_slider&&(this.control.options(this,this.microsec_slider,"microsec",{min:this._defaults.microsecMin,max:o,step:this._defaults.stepMicrosec}),this.control.value(this,this.microsec_slider,"microsec",this.microsec-this.microsec%this._defaults.stepMicrosec))}}},_onTimeChange:function(){if(this._defaults.showTimepicker){var a=this.hour_slider?this.control.value(this,this.hour_slider,"hour"):!1,b=this.minute_slider?this.control.value(this,this.minute_slider,"minute"):!1,c=this.second_slider?this.control.value(this,this.second_slider,"second"):!1,d=this.millisec_slider?this.control.value(this,this.millisec_slider,"millisec"):!1,e=this.microsec_slider?this.control.value(this,this.microsec_slider,"microsec"):!1,f=this.timezone_select?this.timezone_select.val():!1,g=this._defaults,h=g.pickerTimeFormat||g.timeFormat,i=g.pickerTimeSuffix||g.timeSuffix;"object"==typeof a&&(a=!1),"object"==typeof b&&(b=!1),"object"==typeof c&&(c=!1),"object"==typeof d&&(d=!1),"object"==typeof e&&(e=!1),"object"==typeof f&&(f=!1),a!==!1&&(a=parseInt(a,10)),b!==!1&&(b=parseInt(b,10)),c!==!1&&(c=parseInt(c,10)),d!==!1&&(d=parseInt(d,10)),e!==!1&&(e=parseInt(e,10)),f!==!1&&(f=f.toString());var j=g[12>a?"amNames":"pmNames"][0],k=a!==parseInt(this.hour,10)||b!==parseInt(this.minute,10)||c!==parseInt(this.second,10)||d!==parseInt(this.millisec,10)||e!==parseInt(this.microsec,10)||this.ampm.length>0&&12>a!=(-1!==$.inArray(this.ampm.toUpperCase(),this.amNames))||null!==this.timezone&&f!==this.timezone.toString();if(k&&(a!==!1&&(this.hour=a),b!==!1&&(this.minute=b),c!==!1&&(this.second=c),d!==!1&&(this.millisec=d),e!==!1&&(this.microsec=e),f!==!1&&(this.timezone=f),this.inst||(this.inst=$.datepicker._getInst(this.$input[0])),this._limitMinMaxDateTime(this.inst,!0)),this.support.ampm&&(this.ampm=j),this.formattedTime=$.datepicker.formatTime(g.timeFormat,this,g),this.$timeObj&&(this.$timeObj.val(h===g.timeFormat?this.formattedTime+i:$.datepicker.formatTime(h,this,g)+i),this.$timeObj[0].setSelectionRange)){var l=this.$timeObj[0].selectionStart,m=this.$timeObj[0].selectionEnd;this.$timeObj[0].setSelectionRange(l,m)}this.timeDefined=!0,k&&this._updateDateTime()}},_onSelectHandler:function(){var a=this._defaults.onSelect||this.inst.settings.onSelect,b=this.$input?this.$input[0]:null;a&&b&&a.apply(b,[this.formattedDateTime,this])},_updateDateTime:function(a){a=this.inst||a;var b=a.currentYear>0?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(a.selectedYear,a.selectedMonth,a.selectedDay),c=$.datepicker._daylightSavingAdjust(b),d=$.datepicker._get(a,"dateFormat"),e=$.datepicker._getFormatConfig(a),f=null!==c&&this.timeDefined;this.formattedDate=$.datepicker.formatDate(d,null===c?new Date:c,e);var g=this.formattedDate;if(""===a.lastVal&&(a.currentYear=a.selectedYear,a.currentMonth=a.selectedMonth,a.currentDay=a.selectedDay),this._defaults.timeOnly===!0&&this._defaults.timeOnlyShowDate===!1?g=this.formattedTime:(this._defaults.timeOnly!==!0&&(this._defaults.alwaysSetTime||f)||this._defaults.timeOnly===!0&&this._defaults.timeOnlyShowDate===!0)&&(g+=this._defaults.separator+this.formattedTime+this._defaults.timeSuffix),this.formattedDateTime=g,this._defaults.showTimepicker)if(this.$altInput&&this._defaults.timeOnly===!1&&this._defaults.altFieldTimeOnly===!0)this.$altInput.val(this.formattedTime),this.$input.val(this.formattedDate);else if(this.$altInput){this.$input.val(g);var h="",i=null!==this._defaults.altSeparator?this._defaults.altSeparator:this._defaults.separator,j=null!==this._defaults.altTimeSuffix?this._defaults.altTimeSuffix:this._defaults.timeSuffix;this._defaults.timeOnly||(h=this._defaults.altFormat?$.datepicker.formatDate(this._defaults.altFormat,null===c?new Date:c,e):this.formattedDate,h&&(h+=i)),h+=null!==this._defaults.altTimeFormat?$.datepicker.formatTime(this._defaults.altTimeFormat,this,this._defaults)+j:this.formattedTime+j,this.$altInput.val(h)}else this.$input.val(g);else this.$input.val(this.formattedDate);this.$input.trigger("change")},_onFocus:function(){if(!this.$input.val()&&this._defaults.defaultValue){this.$input.val(this._defaults.defaultValue);var a=$.datepicker._getInst(this.$input.get(0)),b=$.datepicker._get(a,"timepicker");if(b&&b._defaults.timeOnly&&a.input.val()!==a.lastVal)try{$.datepicker._updateDatepicker(a)}catch(c){$.timepicker.log(c)}}},_controls:{slider:{create:function(a,b,c,d,e,f,g){var h=a._defaults.isRTL;return b.prop("slide",null).slider({orientation:"horizontal",value:h?-1*d:d,min:h?-1*f:e,max:h?-1*e:f,step:g,slide:function(b,d){a.control.value(a,$(this),c,h?-1*d.value:d.value),a._onTimeChange()},stop:function(b,c){a._onSelectHandler()}})},options:function(a,b,c,d,e){if(a._defaults.isRTL){if("string"==typeof d)return"min"===d||"max"===d?void 0!==e?b.slider(d,-1*e):Math.abs(b.slider(d)):b.slider(d);var f=d.min,g=d.max;return d.min=d.max=null,void 0!==f&&(d.max=-1*f),void 0!==g&&(d.min=-1*g),b.slider(d)}return"string"==typeof d&&void 0!==e?b.slider(d,e):b.slider(d)},value:function(a,b,c,d){return a._defaults.isRTL?void 0!==d?b.slider("value",-1*d):Math.abs(b.slider("value")):void 0!==d?b.slider("value",d):b.slider("value")}},select:{create:function(a,b,c,d,e,f,g){for(var h='<select class="ui-timepicker-select ui-state-default ui-corner-all" data-unit="'+c+'" data-min="'+e+'" data-max="'+f+'" data-step="'+g+'">',i=a._defaults.pickerTimeFormat||a._defaults.timeFormat,j=e;f>=j;j+=g)h+='<option value="'+j+'"'+(j===d?" selected":"")+">",h+="hour"===c?$.datepicker.formatTime($.trim(i.replace(/[^ht ]/gi,"")),{hour:j},a._defaults):"millisec"===c||"microsec"===c||j>=10?j:"0"+j.toString(),h+="</option>";return h+="</select>",b.children("select").remove(),$(h).appendTo(b).change(function(b){a._onTimeChange(),a._onSelectHandler(),a._afterInject()}),b},options:function(a,b,c,d,e){var f={},g=b.children("select");if("string"==typeof d){if(void 0===e)return g.data(d);f[d]=e}else f=d;return a.control.create(a,b,g.data("unit"),g.val(),f.min>=0?f.min:g.data("min"),f.max||g.data("max"),f.step||g.data("step"))},value:function(a,b,c,d){var e=b.children("select");return void 0!==d?e.val(d):e.val()}}}}),$.fn.extend({timepicker:function(a){a=a||{};var b=Array.prototype.slice.call(arguments);return"object"==typeof a&&(b[0]=$.extend(a,{timeOnly:!0})),$(this).each(function(){$.fn.datetimepicker.apply($(this),b)})},datetimepicker:function(a){a=a||{};var b=arguments;return"string"==typeof a?"getDate"===a||"option"===a&&2===b.length&&"string"==typeof b[1]?$.fn.datepicker.apply($(this[0]),b):this.each(function(){var a=$(this);a.datepicker.apply(a,b)}):this.each(function(){var b=$(this);b.datepicker($.timepicker._newInst(b,a)._defaults)})}}),$.datepicker.parseDateTime=function(a,b,c,d,e){var f=parseDateTimeInternal(a,b,c,d,e);if(f.timeObj){var g=f.timeObj;f.date.setHours(g.hour,g.minute,g.second,g.millisec),f.date.setMicroseconds(g.microsec)}return f.date},$.datepicker.parseTime=function(a,b,c){var d=extendRemove(extendRemove({},$.timepicker._defaults),c||{}),e=(-1!==a.replace(/\'.*?\'/g,"").indexOf("Z"),function(a,b,c){var d,e=function(a,b){var c=[];return a&&$.merge(c,a),b&&$.merge(c,b),c=$.map(c,function(a){return a.replace(/[.*+?|()\[\]{}\\]/g,"\\$&")}),"("+c.join("|")+")?"},f=function(a){var b=a.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|c{1}|t{1,2}|z|'.*?')/g),c={h:-1,m:-1,s:-1,l:-1,c:-1,t:-1,z:-1};if(b)for(var d=0;d<b.length;d++)-1===c[b[d].toString().charAt(0)]&&(c[b[d].toString().charAt(0)]=d+1);return c},g="^"+a.toString().replace(/([hH]{1,2}|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g,function(a){var b=a.length;switch(a.charAt(0).toLowerCase()){case"h":return 1===b?"(\\d?\\d)":"(\\d{"+b+"})";case"m":return 1===b?"(\\d?\\d)":"(\\d{"+b+"})";case"s":return 1===b?"(\\d?\\d)":"(\\d{"+b+"})";case"l":return"(\\d?\\d?\\d)";case"c":return"(\\d?\\d?\\d)";case"z":return"(z|[-+]\\d\\d:?\\d\\d|\\S+)?";case"t":return e(c.amNames,c.pmNames);default:return"("+a.replace(/\'/g,"").replace(/(\.|\$|\^|\\|\/|\(|\)|\[|\]|\?|\+|\*)/g,function(a){return"\\"+a})+")?"}}).replace(/\s/g,"\\s?")+c.timeSuffix+"$",h=f(a),i="";d=b.match(new RegExp(g,"i"));var j={hour:0,minute:0,second:0,millisec:0,microsec:0};return d?(-1!==h.t&&(void 0===d[h.t]||0===d[h.t].length?(i="",j.ampm=""):(i=-1!==$.inArray(d[h.t].toUpperCase(),$.map(c.amNames,function(a,b){return a.toUpperCase()}))?"AM":"PM",j.ampm=c["AM"===i?"amNames":"pmNames"][0])),-1!==h.h&&("AM"===i&&"12"===d[h.h]?j.hour=0:"PM"===i&&"12"!==d[h.h]?j.hour=parseInt(d[h.h],10)+12:j.hour=Number(d[h.h])),-1!==h.m&&(j.minute=Number(d[h.m])),-1!==h.s&&(j.second=Number(d[h.s])),-1!==h.l&&(j.millisec=Number(d[h.l])),-1!==h.c&&(j.microsec=Number(d[h.c])),-1!==h.z&&void 0!==d[h.z]&&(j.timezone=$.timepicker.timezoneOffsetNumber(d[h.z])),j):!1}),f=function(a,b,c){try{var d=new Date("2012-01-01 "+b);if(isNaN(d.getTime())&&(d=new Date("2012-01-01T"+b),isNaN(d.getTime())&&(d=new Date("01/01/2012 "+b),isNaN(d.getTime()))))throw"Unable to parse time with native Date: "+b;return{hour:d.getHours(),minute:d.getMinutes(),second:d.getSeconds(),millisec:d.getMilliseconds(),microsec:d.getMicroseconds(),timezone:-1*d.getTimezoneOffset()}}catch(f){try{return e(a,b,c)}catch(g){$.timepicker.log("Unable to parse \ntimeString: "+b+"\ntimeFormat: "+a)}}return!1};return"function"==typeof d.parse?d.parse(a,b,d):"loose"===d.parse?f(a,b,d):e(a,b,d)},$.datepicker.formatTime=function(a,b,c){c=c||{},c=$.extend({},$.timepicker._defaults,c),b=$.extend({hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null},b);var d=a,e=c.amNames[0],f=parseInt(b.hour,10);return f>11&&(e=c.pmNames[0]),d=d.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g,function(a){switch(a){case"HH":return("0"+f).slice(-2);case"H":return f;case"hh":return("0"+convert24to12(f)).slice(-2);case"h":return convert24to12(f);case"mm":return("0"+b.minute).slice(-2);case"m":return b.minute;case"ss":return("0"+b.second).slice(-2);case"s":return b.second;case"l":return("00"+b.millisec).slice(-3);case"c":return("00"+b.microsec).slice(-3);case"z":return $.timepicker.timezoneOffsetString(null===b.timezone?c.timezone:b.timezone,!1);case"Z":return $.timepicker.timezoneOffsetString(null===b.timezone?c.timezone:b.timezone,!0);case"T":return e.charAt(0).toUpperCase();case"TT":return e.toUpperCase();case"t":return e.charAt(0).toLowerCase();case"tt":return e.toLowerCase();default:return a.replace(/'/g,"")}})},$.datepicker._base_selectDate=$.datepicker._selectDate,$.datepicker._selectDate=function(a,b){var c,d=this._getInst($(a)[0]),e=this._get(d,"timepicker");e&&d.settings.showTimepicker?(e._limitMinMaxDateTime(d,!0),c=d.inline,d.inline=d.stay_open=!0,this._base_selectDate(a,b),d.inline=c,d.stay_open=!1,this._notifyChange(d),this._updateDatepicker(d)):this._base_selectDate(a,b)},$.datepicker._base_updateDatepicker=$.datepicker._updateDatepicker,$.datepicker._updateDatepicker=function(a){var b=a.input[0];if(!($.datepicker._curInst&&$.datepicker._curInst!==a&&$.datepicker._datepickerShowing&&$.datepicker._lastInput!==b||"boolean"==typeof a.stay_open&&a.stay_open!==!1)){this._base_updateDatepicker(a);var c=this._get(a,"timepicker");c&&c._addTimePicker(a)}},$.datepicker._base_doKeyPress=$.datepicker._doKeyPress,$.datepicker._doKeyPress=function(a){var b=$.datepicker._getInst(a.target),c=$.datepicker._get(b,"timepicker");if(c&&$.datepicker._get(b,"constrainInput")){var d=c.support.ampm,e=null!==c._defaults.showTimezone?c._defaults.showTimezone:c.support.timezone,f=$.datepicker._possibleChars($.datepicker._get(b,"dateFormat")),g=c._defaults.timeFormat.toString().replace(/[hms]/g,"").replace(/TT/g,d?"APM":"").replace(/Tt/g,d?"AaPpMm":"").replace(/tT/g,d?"AaPpMm":"").replace(/T/g,d?"AP":"").replace(/tt/g,d?"apm":"").replace(/t/g,d?"ap":"")+" "+c._defaults.separator+c._defaults.timeSuffix+(e?c._defaults.timezoneList.join(""):"")+c._defaults.amNames.join("")+c._defaults.pmNames.join("")+f,h=String.fromCharCode(void 0===a.charCode?a.keyCode:a.charCode);return a.ctrlKey||" ">h||!f||g.indexOf(h)>-1}return $.datepicker._base_doKeyPress(a)},$.datepicker._base_updateAlternate=$.datepicker._updateAlternate,$.datepicker._updateAlternate=function(a){var b=this._get(a,"timepicker");if(b){var c=b._defaults.altField;if(c){var d=(b._defaults.altFormat||b._defaults.dateFormat,this._getDate(a)),e=$.datepicker._getFormatConfig(a),f="",g=b._defaults.altSeparator?b._defaults.altSeparator:b._defaults.separator,h=b._defaults.altTimeSuffix?b._defaults.altTimeSuffix:b._defaults.timeSuffix,i=null!==b._defaults.altTimeFormat?b._defaults.altTimeFormat:b._defaults.timeFormat;f+=$.datepicker.formatTime(i,b,b._defaults)+h,b._defaults.timeOnly||b._defaults.altFieldTimeOnly||null===d||(f=b._defaults.altFormat?$.datepicker.formatDate(b._defaults.altFormat,d,e)+g+f:b.formattedDate+g+f),$(c).val(a.input.val()?f:"")}}else $.datepicker._base_updateAlternate(a)},$.datepicker._base_doKeyUp=$.datepicker._doKeyUp,$.datepicker._doKeyUp=function(a){var b=$.datepicker._getInst(a.target),c=$.datepicker._get(b,"timepicker");
5
+ if(c&&c._defaults.timeOnly&&b.input.val()!==b.lastVal)try{$.datepicker._updateDatepicker(b)}catch(d){$.timepicker.log(d)}return $.datepicker._base_doKeyUp(a)},$.datepicker._base_gotoToday=$.datepicker._gotoToday,$.datepicker._gotoToday=function(a){var b=this._getInst($(a)[0]);this._base_gotoToday(a);var c=this._get(b,"timepicker");if(c){var d=$.timepicker.timezoneOffsetNumber(c.timezone),e=new Date;e.setMinutes(e.getMinutes()+e.getTimezoneOffset()+parseInt(d,10)),this._setTime(b,e),this._setDate(b,e),c._onSelectHandler()}},$.datepicker._disableTimepickerDatepicker=function(a){var b=this._getInst(a);if(b){var c=this._get(b,"timepicker");$(a).datepicker("getDate"),c&&(b.settings.showTimepicker=!1,c._defaults.showTimepicker=!1,c._updateDateTime(b))}},$.datepicker._enableTimepickerDatepicker=function(a){var b=this._getInst(a);if(b){var c=this._get(b,"timepicker");$(a).datepicker("getDate"),c&&(b.settings.showTimepicker=!0,c._defaults.showTimepicker=!0,c._addTimePicker(b),c._updateDateTime(b))}},$.datepicker._setTime=function(a,b){var c=this._get(a,"timepicker");if(c){var d=c._defaults;c.hour=b?b.getHours():d.hour,c.minute=b?b.getMinutes():d.minute,c.second=b?b.getSeconds():d.second,c.millisec=b?b.getMilliseconds():d.millisec,c.microsec=b?b.getMicroseconds():d.microsec,c._limitMinMaxDateTime(a,!0),c._onTimeChange(),c._updateDateTime(a)}},$.datepicker._setTimeDatepicker=function(a,b,c){var d=this._getInst(a);if(d){var e=this._get(d,"timepicker");if(e){this._setDateFromField(d);var f;b&&("string"==typeof b?(e._parseTime(b,c),f=new Date,f.setHours(e.hour,e.minute,e.second,e.millisec),f.setMicroseconds(e.microsec)):(f=new Date(b.getTime()),f.setMicroseconds(b.getMicroseconds())),"Invalid Date"===f.toString()&&(f=void 0),this._setTime(d,f))}}},$.datepicker._base_setDateDatepicker=$.datepicker._setDateDatepicker,$.datepicker._setDateDatepicker=function(a,b){var c=this._getInst(a),d=b;if(c){"string"==typeof b&&(d=new Date(b),d.getTime()||(this._base_setDateDatepicker.apply(this,arguments),d=$(a).datepicker("getDate")));var e,f=this._get(c,"timepicker");d instanceof Date?(e=new Date(d.getTime()),e.setMicroseconds(d.getMicroseconds())):e=d,f&&e&&(f.support.timezone||null!==f._defaults.timezone||(f.timezone=-1*e.getTimezoneOffset()),d=$.timepicker.timezoneAdjust(d,$.timepicker.timezoneOffsetString(-d.getTimezoneOffset()),f.timezone),e=$.timepicker.timezoneAdjust(e,$.timepicker.timezoneOffsetString(-e.getTimezoneOffset()),f.timezone)),this._updateDatepicker(c),this._base_setDateDatepicker.apply(this,arguments),this._setTimeDatepicker(a,e,!0)}},$.datepicker._base_getDateDatepicker=$.datepicker._getDateDatepicker,$.datepicker._getDateDatepicker=function(a,b){var c=this._getInst(a);if(c){var d=this._get(c,"timepicker");if(d){void 0===c.lastVal&&this._setDateFromField(c,b);var e=this._getDate(c),f=null;return f=d.$altInput&&d._defaults.altFieldTimeOnly?d.$input.val()+" "+d.$altInput.val():"INPUT"!==d.$input.get(0).tagName&&d.$altInput?d.$altInput.val():d.$input.val(),e&&d._parseTime(f,!c.settings.timeOnly)&&(e.setHours(d.hour,d.minute,d.second,d.millisec),e.setMicroseconds(d.microsec),null!=d.timezone&&(d.support.timezone||null!==d._defaults.timezone||(d.timezone=-1*e.getTimezoneOffset()),e=$.timepicker.timezoneAdjust(e,d.timezone,$.timepicker.timezoneOffsetString(-e.getTimezoneOffset())))),e}return this._base_getDateDatepicker(a,b)}},$.datepicker._base_parseDate=$.datepicker.parseDate,$.datepicker.parseDate=function(a,b,c){var d;try{d=this._base_parseDate(a,b,c)}catch(e){if(!(e.indexOf(":")>=0))throw e;d=this._base_parseDate(a,b.substring(0,b.length-(e.length-e.indexOf(":")-2)),c),$.timepicker.log("Error parsing the date string: "+e+"\ndate string = "+b+"\ndate format = "+a)}return d},$.datepicker._base_formatDate=$.datepicker._formatDate,$.datepicker._formatDate=function(a,b,c,d){var e=this._get(a,"timepicker");return e?(e._updateDateTime(a),e.$input.val()):this._base_formatDate(a)},$.datepicker._base_optionDatepicker=$.datepicker._optionDatepicker,$.datepicker._optionDatepicker=function(a,b,c){var d,e=this._getInst(a);if(!e)return null;var f=this._get(e,"timepicker");if(f){var g,h,i,j,k=null,l=null,m=null,n=f._defaults.evnts,o={};if("string"==typeof b){if("minDate"===b||"minDateTime"===b)k=c;else if("maxDate"===b||"maxDateTime"===b)l=c;else if("onSelect"===b)m=c;else if(n.hasOwnProperty(b)){if("undefined"==typeof c)return n[b];o[b]=c,d={}}}else if("object"==typeof b){b.minDate?k=b.minDate:b.minDateTime?k=b.minDateTime:b.maxDate?l=b.maxDate:b.maxDateTime&&(l=b.maxDateTime);for(g in n)n.hasOwnProperty(g)&&b[g]&&(o[g]=b[g])}for(g in o)o.hasOwnProperty(g)&&(n[g]=o[g],d||(d=$.extend({},b)),delete d[g]);if(d&&isEmptyObject(d))return;if(k?(k=0===k?new Date:new Date(k),f._defaults.minDate=k,f._defaults.minDateTime=k):l?(l=0===l?new Date:new Date(l),f._defaults.maxDate=l,f._defaults.maxDateTime=l):m&&(f._defaults.onSelect=m),k||l)return j=$(a),i=j.datetimepicker("getDate"),h=this._base_optionDatepicker.call($.datepicker,a,d||b,c),j.datetimepicker("setDate",i),h}return void 0===c?this._base_optionDatepicker.call($.datepicker,a,b):this._base_optionDatepicker.call($.datepicker,a,d||b,c)};var isEmptyObject=function(a){var b;for(b in a)if(a.hasOwnProperty(b))return!1;return!0},extendRemove=function(a,b){$.extend(a,b);for(var c in b)(null===b[c]||void 0===b[c])&&(a[c]=b[c]);return a},detectSupport=function(a){var b=a.replace(/'.*?'/g,"").toLowerCase(),c=function(a,b){return-1!==a.indexOf(b)?!0:!1};return{hour:c(b,"h"),minute:c(b,"m"),second:c(b,"s"),millisec:c(b,"l"),microsec:c(b,"c"),timezone:c(b,"z"),ampm:c(b,"t")&&c(a,"h"),iso8601:c(a,"Z")}},convert24to12=function(a){return a%=12,0===a&&(a=12),String(a)},computeEffectiveSetting=function(a,b){return a&&a[b]?a[b]:$.timepicker._defaults[b]},splitDateTime=function(a,b){var c=computeEffectiveSetting(b,"separator"),d=computeEffectiveSetting(b,"timeFormat"),e=d.split(c),f=e.length,g=a.split(c),h=g.length;return h>1?{dateString:g.splice(0,h-f).join(c),timeString:g.splice(0,f).join(c)}:{dateString:a,timeString:""}},parseDateTimeInternal=function(a,b,c,d,e){var f,g,h;if(g=splitDateTime(c,e),f=$.datepicker._base_parseDate(a,g.dateString,d),""===g.timeString)return{date:f};if(h=$.datepicker.parseTime(b,g.timeString,e),!h)throw"Wrong time format";return{date:f,timeObj:h}},selectLocalTimezone=function(a,b){if(a&&a.timezone_select){var c=b||new Date;a.timezone_select.val(-c.getTimezoneOffset())}};$.timepicker=new Timepicker,$.timepicker.timezoneOffsetString=function(a,b){if(isNaN(a)||a>840||-720>a)return a;var c=a,d=c%60,e=(c-d)/60,f=b?":":"",g=(c>=0?"+":"-")+("0"+Math.abs(e)).slice(-2)+f+("0"+Math.abs(d)).slice(-2);return"+00:00"===g?"Z":g},$.timepicker.timezoneOffsetNumber=function(a){var b=a.toString().replace(":","");return"Z"===b.toUpperCase()?0:/^(\-|\+)\d{4}$/.test(b)?("-"===b.substr(0,1)?-1:1)*(60*parseInt(b.substr(1,2),10)+parseInt(b.substr(3,2),10)):parseInt(a,10)},$.timepicker.timezoneAdjust=function(a,b,c){var d=$.timepicker.timezoneOffsetNumber(b),e=$.timepicker.timezoneOffsetNumber(c);return isNaN(e)||a.setMinutes(a.getMinutes()+-d- -e),a},$.timepicker.timeRange=function(a,b,c){return $.timepicker.handleRange("timepicker",a,b,c)},$.timepicker.datetimeRange=function(a,b,c){$.timepicker.handleRange("datetimepicker",a,b,c)},$.timepicker.dateRange=function(a,b,c){$.timepicker.handleRange("datepicker",a,b,c)},$.timepicker.handleRange=function(a,b,c,d){function e(e,f){var g=b[a]("getDate"),h=c[a]("getDate"),i=e[a]("getDate");if(null!==g){var j=new Date(g.getTime()),k=new Date(g.getTime());j.setMilliseconds(j.getMilliseconds()+d.minInterval),k.setMilliseconds(k.getMilliseconds()+d.maxInterval),d.minInterval>0&&j>h?c[a]("setDate",j):d.maxInterval>0&&h>k?c[a]("setDate",k):g>h&&f[a]("setDate",i)}}function f(b,c,e){if(b.val()){var f=b[a].call(b,"getDate");null!==f&&d.minInterval>0&&("minDate"===e&&f.setMilliseconds(f.getMilliseconds()+d.minInterval),"maxDate"===e&&f.setMilliseconds(f.getMilliseconds()-d.minInterval)),f.getTime&&c[a].call(c,"option",e,f)}}d=$.extend({},{minInterval:0,maxInterval:0,start:{},end:{}},d);var g=!1;return"timepicker"===a&&(g=!0,a="datetimepicker"),$.fn[a].call(b,$.extend({timeOnly:g,onClose:function(a,b){e($(this),c)},onSelect:function(a){f($(this),c,"minDate")}},d,d.start)),$.fn[a].call(c,$.extend({timeOnly:g,onClose:function(a,c){e($(this),b)},onSelect:function(a){f($(this),b,"maxDate")}},d,d.end)),e(b,c),f(b,c,"minDate"),f(c,b,"maxDate"),$([b.get(0),c.get(0)])},$.timepicker.log=function(){window.console&&window.console.log&&window.console.log.apply&&window.console.log.apply(window.console,Array.prototype.slice.call(arguments))},$.timepicker._util={_extendRemove:extendRemove,_isEmptyObject:isEmptyObject,_convert24to12:convert24to12,_detectSupport:detectSupport,_selectLocalTimezone:selectLocalTimezone,_computeEffectiveSetting:computeEffectiveSetting,_splitDateTime:splitDateTime,_parseDateTimeInternal:parseDateTimeInternal},Date.prototype.getMicroseconds||(Date.prototype.microseconds=0,Date.prototype.getMicroseconds=function(){return this.microseconds},Date.prototype.setMicroseconds=function(a){return this.setMilliseconds(this.getMilliseconds()+Math.floor(a/1e3)),this.microseconds=a%1e3,this}),$.timepicker.version="1.6.3"}});
includes/fields/js/timepicker-field.js ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(function ($) {
2
+
3
+ var setup = function (widgetForm) {
4
+
5
+ if (typeof widgetForm.data('initialised') == 'undefined') {
6
+
7
+ $(widgetForm).find('.lsow-widget-input-timepicker').each(function (index, element) {
8
+ $(element).datetimepicker({
9
+ timeFormat: 'HH:mm:ss',
10
+ stepHour: 2,
11
+ stepMinute: 10,
12
+ stepSecond: 10
13
+ });
14
+ });
15
+
16
+ $(widgetForm).data('initialised', true);
17
+ }
18
+ else {
19
+ setTimeout(function () {
20
+ setup(widgetForm);
21
+ }, 500);
22
+ }
23
+ };
24
+
25
+ $(document).on('sowsetupform', function (e) {
26
+ var $form = $(e.target);
27
+
28
+ if ($form.is('.siteorigin-widget-field-repeater-item-form')) {
29
+ if ($form.is(':visible')) {
30
+ setup($form);
31
+ }
32
+ else {
33
+ $form.on('slideToggleOpenComplete', function onSlideToggleComplete() {
34
+ if ($form.is(':visible')) {
35
+ setup($form);
36
+ $form.off('slideToggleOpenComplete');
37
+ }
38
+ })
39
+ }
40
+ }
41
+ else {
42
+ setup($form);
43
+ }
44
+ });
45
+
46
+ });
includes/fields/js/timepicker-field.min.js ADDED
@@ -0,0 +1 @@
 
1
+ jQuery(function(e){var i=function(t){"undefined"==typeof t.data("initialised")?(e(t).find(".lsow-widget-input-timepicker").each(function(i,t){e(t).datetimepicker({timeFormat:"HH:mm:ss",stepHour:2,stepMinute:10,stepSecond:10})}),e(t).data("initialised",!0)):setTimeout(function(){i(t)},500)};e(document).on("sowsetupform",function(t){var n=e(t.target);n.is(".siteorigin-widget-field-repeater-item-form")?n.is(":visible")?i(n):n.on("slideToggleOpenComplete",function(){n.is(":visible")&&(i(n),n.off("slideToggleOpenComplete"))}):i(n)})});
includes/fields/timepicker.class.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Class LSOW_Custom_Field_Datepicker
5
+ */
6
+ class LSOW_Custom_Field_Timepicker extends SiteOrigin_Widget_Field_Text_Input_Base {
7
+
8
+ protected function get_input_classes() {
9
+ $input_classes = parent::get_input_classes();
10
+ $input_classes[] = 'lsow-widget-input-timepicker';
11
+ return $input_classes;
12
+ }
13
+
14
+ public function enqueue_scripts() {
15
+
16
+ /* load jQuery-ui datepicker */
17
+ wp_enqueue_script('jquery-ui-datepicker');
18
+
19
+ wp_enqueue_script( 'jquery-ui-slider' );
20
+
21
+ wp_enqueue_script('lsow-timepicker-addon', plugin_dir_url(__FILE__) . 'js/jquery-ui-timepicker-addon' . SOW_BUNDLE_JS_SUFFIX . '.js', array('jquery', 'jquery-ui-datepicker' , 'jquery-ui-slider'), SOW_BUNDLE_VERSION);
22
+
23
+ wp_enqueue_style('lsow-timepicker-addon-css', plugin_dir_url(__FILE__) . 'css/jquery-ui-timepicker-addon.css', false, "1.6.3", false);
24
+
25
+ wp_enqueue_script('lsow-timepicker-field', plugin_dir_url(__FILE__) . 'js/timepicker-field' . SOW_BUNDLE_JS_SUFFIX . '.js', array('jquery', 'jquery-ui-datepicker', 'lsow-timepicker-addon'), SOW_BUNDLE_VERSION);
26
+
27
+ wp_enqueue_style('lsow-timepicker-css', plugin_dir_url(__FILE__) . 'css/jquery-ui.css', false, "1.11.4", false);
28
+ }
29
+ }
includes/helper-functions.php CHANGED
@@ -246,4 +246,32 @@ if (!function_exists('lsow_get_taxonomies_map')) {
246
  }
247
  return $map;
248
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
249
  }
246
  }
247
  return $map;
248
  }
249
+ }
250
+
251
+
252
+ /**
253
+ * Lightens/darkens a given colour (hex format), returning the altered colour in hex format.7
254
+ * @param str $hex Colour as hexadecimal (with or without hash);
255
+ * @percent float $percent Decimal ( 0.2 = lighten by 20%(), -0.4 = darken by 40%() )
256
+ * @return str Lightened/Darkend colour as hexadecimal (with hash);
257
+ */
258
+ function lsow_color_luminance( $hex, $percent ) {
259
+
260
+ // validate hex string
261
+
262
+ $hex = preg_replace( '/[^0-9a-f]/i', '', $hex );
263
+ $new_hex = '#';
264
+
265
+ if ( strlen( $hex ) < 6 ) {
266
+ $hex = $hex[0] + $hex[0] + $hex[1] + $hex[1] + $hex[2] + $hex[2];
267
+ }
268
+
269
+ // convert to decimal and change luminosity
270
+ for ($i = 0; $i < 3; $i++) {
271
+ $dec = hexdec( substr( $hex, $i*2, 2 ) );
272
+ $dec = min( max( 0, $dec + $dec * $percent ), 255 );
273
+ $new_hex .= str_pad( dechex( $dec ) , 2, 0, STR_PAD_LEFT );
274
+ }
275
+
276
+ return $new_hex;
277
  }
includes/widgets/lsow-accordion-widget/css/style.css CHANGED
@@ -8,7 +8,8 @@ html {
8
  display: block;
9
  cursor: pointer; }
10
  .lsow-accordion .lsow-panel-content {
11
- display: none; }
 
12
 
13
  .lsow-accordion.style1 .lsow-panel .lsow-panel-title, .lsow-accordion.style3 .lsow-panel .lsow-panel-title {
14
  -webkit-transition: all 0.3s ease-in-out 0s;
8
  display: block;
9
  cursor: pointer; }
10
  .lsow-accordion .lsow-panel-content {
11
+ display: none;
12
+ overflow: hidden; }
13
 
14
  .lsow-accordion.style1 .lsow-panel .lsow-panel-title, .lsow-accordion.style3 .lsow-panel .lsow-panel-title {
15
  -webkit-transition: all 0.3s ease-in-out 0s;
includes/widgets/lsow-accordion-widget/css/style.css.map CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "version": 3,
3
- "mappings": "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",
4
  "sources": ["../../../../../../bower_components/neat/app/assets/stylesheets/grid/_box-sizing.scss","style.scss","../../../../assets/css/_lsow-lib.scss"],
5
  "names": [],
6
  "file": "style.css"
1
  {
2
  "version": 3,
3
+ "mappings": "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",
4
  "sources": ["../../../../../../bower_components/neat/app/assets/stylesheets/grid/_box-sizing.scss","style.scss","../../../../assets/css/_lsow-lib.scss"],
5
  "names": [],
6
  "file": "style.css"
includes/widgets/lsow-accordion-widget/css/style.scss CHANGED
@@ -8,6 +8,7 @@
8
  }
9
  .lsow-panel-content {
10
  display: none;
 
11
  }
12
  }
13
 
8
  }
9
  .lsow-panel-content {
10
  display: none;
11
+ overflow: hidden;
12
  }
13
  }
14
 
includes/widgets/lsow-accordion-widget/lsow-accordion-widget.php CHANGED
@@ -16,7 +16,7 @@ class LSOW_Accordion_Widget extends SiteOrigin_Widget {
16
  array(
17
  'description' => __('Displays collapsible content panels to help display information when space is limited.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
- 'help' => 'http://portfoliotheme.org/widgets-bundle/accordion-widget-documentation/'
20
  ),
21
  array(),
22
  array(
16
  array(
17
  'description' => __('Displays collapsible content panels to help display information when space is limited.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/accordion-widget-documentation/'
20
  ),
21
  array(),
22
  array(
includes/widgets/lsow-button-widget/assets/banner.svg ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ viewBox="0 0 256 256" enable-background="new 0 0 256 256" xml:space="preserve">
6
+ <g>
7
+ <circle fill="#37505F" cx="128" cy="128" r="127"/>
8
+ <path fill="#F7F8F9" d="M190.5,52.1h-125c-5.5,0-9.9,4.4-9.9,9.9v88.1c0,5.5,4.4,9.9,9.9,9.9h125c5.5,0,9.9-4.4,9.9-9.9V62
9
+ C200.4,56.5,196,52.1,190.5,52.1z"/>
10
+ <circle fill="#3EA9D7" cx="132.2" cy="84.3" r="22.9"/>
11
+ <path fill="#F2CD56" d="M172.2,135.8L172.2,135.8c-4.7-2-10.4,0.8-12.7,6.2c2.3-5.4,0.2-11.4-4.5-13.4c-4.7-2-10.4,0.8-12.7,6.2
12
+ c2.3-5.4,0.2-11.4-4.5-13.4c-4.7-2-10.4,0.8-12.7,6.2l16.7-40.3c2.3-5.4,0.2-11.4-4.5-13.4c-4.7-2-10.4,0.8-12.7,6.2L108,120.6l0,0
13
+ l-9.7,23.3l-3,7.1l-7.1-18.6c-2-5.1-7.5-7.1-12.4-4.5c-4.9,2.7-7.2,9-5.3,14.1l11.6,30.3c1.3,3.4,2.8,31.3,6.1,32.6l42.7,17.7
14
+ c7.2,3,24.1-21.1,27.5-29.4l5-12l3.6-8.7l9.7-23.3C178.9,143.7,176.9,137.7,172.2,135.8z"/>
15
+
16
+ <rect x="76.2" y="211.7" transform="matrix(0.9079 0.4192 -0.4192 0.9079 101.4574 -24.8544)" fill="#FFFFFF" width="62.3" height="13.4"/>
17
+ <path fill="#0B2C48" d="M75.3,209.9L62.8,237c18.5,11.1,40.1,17.6,63.2,18l8.3-17.9L75.3,209.9z"/>
18
+ </g>
19
+ </svg>
includes/widgets/lsow-button-widget/css/style.css ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ html {
2
+ box-sizing: border-box; }
3
+
4
+ *, *::after, *::before {
5
+ box-sizing: inherit; }
6
+
7
+ input.lsow-button, button.lsow-button, a.lsow-button, .lsow-button:active, .lsow-button:visited {
8
+ display: inline-block;
9
+ text-align: center;
10
+ line-height: 1;
11
+ cursor: pointer;
12
+ -webkit-appearance: none;
13
+ vertical-align: middle;
14
+ border: 1px solid transparent;
15
+ border-radius: 3px;
16
+ padding: 16px 40px;
17
+ margin: 0;
18
+ font-size: 12px;
19
+ font-weight: normal;
20
+ text-transform: uppercase;
21
+ letter-spacing: 2px;
22
+ background-color: #f94213;
23
+ color: #fefefe;
24
+ outline: none;
25
+ -webkit-transition: all 0.4s ease-in-out 0s;
26
+ -moz-transition: all 0.4s ease-in-out 0s;
27
+ -ms-transition: all 0.4s ease-in-out 0s;
28
+ transition: all 0.4s ease-in-out 0s; }
29
+ input.lsow-button span, input.lsow-button img.lsow-thumbnail, button.lsow-button span, button.lsow-button img.lsow-thumbnail, a.lsow-button span, a.lsow-button img.lsow-thumbnail, .lsow-button:active span, .lsow-button:active img.lsow-thumbnail, .lsow-button:visited span, .lsow-button:visited img.lsow-thumbnail {
30
+ margin-right: 15px; }
31
+ input.lsow-button span, button.lsow-button span, a.lsow-button span, .lsow-button:active span, .lsow-button:visited span {
32
+ color: #fff;
33
+ font-size: 32px;
34
+ vertical-align: middle;
35
+ line-height: 1; }
36
+ input.lsow-button img.lsow-thumbnail, button.lsow-button img.lsow-thumbnail, a.lsow-button img.lsow-thumbnail, .lsow-button:active img.lsow-thumbnail, .lsow-button:visited img.lsow-thumbnail {
37
+ display: inline !important;
38
+ vertical-align: middle;
39
+ max-width: 50px; }
40
+ input.lsow-button.lsow-rounded, button.lsow-button.lsow-rounded, a.lsow-button.lsow-rounded, .lsow-button:active.lsow-rounded, .lsow-button:visited.lsow-rounded {
41
+ border-radius: 999px; }
42
+ input.lsow-button.lsow-large, button.lsow-button.lsow-large, a.lsow-button.lsow-large, .lsow-button:active.lsow-large, .lsow-button:visited.lsow-large {
43
+ padding: 20px 60px; }
44
+ input.lsow-button.lsow-small, button.lsow-button.lsow-small, a.lsow-button.lsow-small, .lsow-button:active.lsow-small, .lsow-button:visited.lsow-small {
45
+ padding: 12px 25px;
46
+ font-size: 11px; }
47
+ input.lsow-button:hover, button.lsow-button:hover, a.lsow-button:hover, .lsow-button:active:hover, .lsow-button:visited:hover {
48
+ background-color: #f9633e;
49
+ color: #fefefe; }
50
+
51
+ .lsow-button.lsow-black {
52
+ background-color: #363636; }
53
+
54
+ .lsow-button.lsow-black:hover {
55
+ background-color: #434343; }
56
+
57
+ .lsow-button.lsow-blue {
58
+ background-color: #46a5d5; }
59
+
60
+ .lsow-button.lsow-blue:hover {
61
+ background-color: #5bafda; }
62
+
63
+ .lsow-button.lsow-cyan {
64
+ background-color: #57c0dc; }
65
+
66
+ .lsow-button.lsow-cyan:hover {
67
+ background-color: #6cc8e0; }
68
+
69
+ .lsow-button.lsow-green {
70
+ background-color: #00a57d; }
71
+
72
+ .lsow-button.lsow-green:hover {
73
+ background-color: #00bf90; }
74
+
75
+ .lsow-button.lsow-orange {
76
+ background-color: #e87151; }
77
+
78
+ .lsow-button.lsow-orange:hover {
79
+ background-color: #eb8368; }
80
+
81
+ .lsow-button.lsow-pink {
82
+ background-color: #dd5679; }
83
+
84
+ .lsow-button.lsow-pink:hover {
85
+ background-color: #e16b8a; }
86
+
87
+ .lsow-button.lsow-red {
88
+ background-color: #da4f49; }
89
+
90
+ .lsow-button.lsow-red:hover {
91
+ background-color: #de635e; }
92
+
93
+ .lsow-button.lsow-teal {
94
+ background-color: #28c2ba; }
95
+
96
+ .lsow-button.lsow-teal:hover {
97
+ background-color: #2fd4cc; }
98
+
99
+ .lsow-button.lsow-trans {
100
+ color: #333;
101
+ background-color: transparent;
102
+ /* IE */
103
+ background-color: transparent;
104
+ border: 2px solid #a5a5a5; }
105
+ .lsow-button.lsow-trans:hover {
106
+ background-color: #fff;
107
+ color: #333 !important;
108
+ border-color: #fff; }
109
+
110
+ .lsow-button.lsow-semitrans {
111
+ color: #fff;
112
+ background-color: transparent;
113
+ /* IE */
114
+ background-color: rgba(125, 125, 125, 0.5); }
115
+ .lsow-button.lsow-semitrans:hover {
116
+ background-color: #fff;
117
+ color: #333 !important; }
118
+
119
+ /*# sourceMappingURL=style.css.map */
includes/widgets/lsow-button-widget/css/style.css.map ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ {
2
+ "version": 3,
3
+ "mappings": "AAGE,IAAK;EACH,UAAU,EAAE,UAAU;;AAItB,sBAEU;EACR,UAAU,EAAE,OAAO;;ACVzB,+FAAgG;EAC9F,OAAO,EAAE,YAAY;EACrB,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,CAAC;EACd,MAAM,EAAE,OAAO;EACf,kBAAkB,EAAE,IAAI;EACxB,cAAc,EAAE,MAAM;EACtB,MAAM,EAAE,qBAAqB;EAC7B,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,SAAS;EAClB,MAAM,EAAE,CAAC;EACT,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,MAAM;EACnB,cAAc,EAAE,SAAS;EACzB,cAAc,EAAE,GAAG;EACnB,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,OAAO;EACd,OAAO,EAAE,IAAI;ECYb,kBAAoB,EDXU,uBAAwB;ECYtD,eAAiB,EDZa,uBAAwB;ECatD,cAAgB,EDbc,uBAAwB;ECctD,UAAY,EDdkB,uBAAwB;EACtD,wTAAyB;IACvB,YAAY,EAAE,IAAI;EAEpB,wHAAK;IACH,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,cAAc,EAAE,MAAM;IACtB,WAAW,EAAE,CAAC;EAEhB,8LAAmB;IACjB,OAAO,EAAE,iBAAiB;IAC1B,cAAc,EAAE,MAAM;IACtB,SAAS,EAAE,IAAI;EAEjB,gKAAe;IACb,aAAa,EAAE,KAAK;EAEtB,sJAAa;IACX,OAAO,EAAE,SAAS;EAEpB,sJAAa;IACX,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,IAAI;EAEjB,6HAAQ;IACN,gBAAgB,EAAE,OAAO;IACzB,KAAK,EAAE,OAAO;;AAShB,uBAAgC;EAC9B,gBAAgB,EAFL,OAA4B;;AAIzC,6BAAsC;EACpC,gBAAgB,EAAE,OAAwB;;AAJ5C,sBAAgC;EAC9B,gBAAgB,EAFL,OAA4B;;AAIzC,4BAAsC;EACpC,gBAAgB,EAAE,OAAwB;;AAJ5C,sBAAgC;EAC9B,gBAAgB,EAFL,OAA4B;;AAIzC,4BAAsC;EACpC,gBAAgB,EAAE,OAAwB;;AAJ5C,uBAAgC;EAC9B,gBAAgB,EAFL,OAA4B;;AAIzC,6BAAsC;EACpC,gBAAgB,EAAE,OAAwB;;AAJ5C,wBAAgC;EAC9B,gBAAgB,EAFL,OAA4B;;AAIzC,8BAAsC;EACpC,gBAAgB,EAAE,OAAwB;;AAJ5C,sBAAgC;EAC9B,gBAAgB,EAFL,OAA4B;;AAIzC,4BAAsC;EACpC,gBAAgB,EAAE,OAAwB;;AAJ5C,qBAAgC;EAC9B,gBAAgB,EAFL,OAA4B;;AAIzC,2BAAsC;EACpC,gBAAgB,EAAE,OAAwB;;AAJ5C,sBAAgC;EAC9B,gBAAgB,EAFL,OAA4B;;AAIzC,4BAAsC;EACpC,gBAAgB,EAAE,OAAwB;;AAG9C,uBAAwB;EACtB,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,WAAW;;EAC7B,gBAAgB,EAAE,WAAgB;EAClC,MAAM,EAAE,iBAAiB;EACzB,6BAAQ;IACN,gBAAgB,EAAE,IAAI;IACtB,KAAK,EAAE,eAAe;IACtB,YAAY,EAAE,IAAI;;AAGtB,2BAA4B;EAC1B,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,WAAW;;EAC7B,gBAAgB,EAAE,wBAAwB;EAC1C,iCAAQ;IACN,gBAAgB,EAAE,IAAI;IACtB,KAAK,EAAE,eAAe",
4
+ "sources": ["../../../../../../bower_components/neat/app/assets/stylesheets/grid/_box-sizing.scss","style.scss","../../../../assets/css/_lsow-lib.scss"],
5
+ "names": [],
6
+ "file": "style.css"
7
+ }
includes/widgets/lsow-button-widget/css/style.scss ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "../../../../assets/css/lsow-lib";
2
+ input.lsow-button, button.lsow-button, a.lsow-button, .lsow-button:active, .lsow-button:visited {
3
+ display: inline-block;
4
+ text-align: center;
5
+ line-height: 1;
6
+ cursor: pointer;
7
+ -webkit-appearance: none;
8
+ vertical-align: middle;
9
+ border: 1px solid transparent;
10
+ border-radius: 3px;
11
+ padding: 16px 40px;
12
+ margin: 0;
13
+ font-size: 12px;
14
+ font-weight: normal;
15
+ text-transform: uppercase;
16
+ letter-spacing: 2px;
17
+ background-color: #f94213;
18
+ color: #fefefe;
19
+ outline: none;
20
+ @include vendorize(transition, all 0.4s ease-in-out 0s);
21
+ span, img.lsow-thumbnail {
22
+ margin-right: 15px;
23
+ }
24
+ span {
25
+ color: #fff;
26
+ font-size: 32px;
27
+ vertical-align: middle;
28
+ line-height: 1;
29
+ }
30
+ img.lsow-thumbnail {
31
+ display: inline !important;
32
+ vertical-align: middle;
33
+ max-width: 50px;
34
+ }
35
+ &.lsow-rounded {
36
+ border-radius: 999px;
37
+ }
38
+ &.lsow-large {
39
+ padding: 20px 60px;
40
+ }
41
+ &.lsow-small {
42
+ padding: 12px 25px;
43
+ font-size: 11px;
44
+ }
45
+ &:hover {
46
+ background-color: #f9633e;
47
+ color: #fefefe;
48
+ }
49
+ }
50
+ $skin-names: ("black", "blue", "cyan", "green", "orange", "pink", "red", "teal");
51
+ $color-collection: (#363636, #46a5d5, #57c0dc, #00a57d, #e87151, #dd5679, #da4f49, #28c2ba);
52
+
53
+ @for $i from 0 to length($skin-names) {
54
+ $skin-name: nth($skin-names, $i+1);
55
+ $skin-color: nth($color-collection, $i+1);
56
+ .lsow-button.lsow-#{$skin-name} {
57
+ background-color: $skin-color;
58
+ }
59
+ .lsow-button.lsow-#{$skin-name}:hover {
60
+ background-color: lighten($skin-color, 5%);
61
+ }
62
+ }
63
+ .lsow-button.lsow-trans {
64
+ color: #333;
65
+ background-color: transparent; /* IE */
66
+ background-color: rgba(0, 0, 0, 0);
67
+ border: 2px solid #a5a5a5;
68
+ &:hover {
69
+ background-color: #fff;
70
+ color: #333 !important;
71
+ border-color: #fff;
72
+ }
73
+ }
74
+ .lsow-button.lsow-semitrans {
75
+ color: #fff;
76
+ background-color: transparent; /* IE */
77
+ background-color: rgba(125, 125, 125, 0.5);
78
+ &:hover {
79
+ background-color: #fff;
80
+ color: #333 !important;
81
+ }
82
+ }
includes/widgets/lsow-button-widget/lsow-button-widget.php ADDED
@@ -0,0 +1,246 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ Widget Name: Livemesh Button
5
+ Description: Flat style buttons with rich set of customization options.
6
+ Author: LiveMesh
7
+ Author URI: http://portfoliotheme.org
8
+ */
9
+
10
+
11
+ class LSOW_Button_Widget extends SiteOrigin_Widget {
12
+
13
+ /**
14
+ * Holds the ID for the button element used for generating custom CSS.
15
+ */
16
+ private $button_id = '';
17
+
18
+ function __construct() {
19
+ parent::__construct(
20
+ "lsow-button",
21
+ __("Livemesh Button", "livemesh-so-widgets"),
22
+ array(
23
+ "description" => __("Flat style buttons with rich set of customization options.", "livemesh-so-widgets"),
24
+ "panels_icon" => "dashicons dashicons-minus",
25
+ ),
26
+ array(),
27
+ array(
28
+ "widget_title" => array(
29
+ "type" => "text",
30
+ "label" => __("Title", "livemesh-so-widgets"),
31
+ ),
32
+
33
+ "href" => array(
34
+ "type" => "link",
35
+ "description" => __("The URL to which button should point to.", "livemesh-so-widgets"),
36
+ "label" => __("Target URL", "livemesh-so-widgets"),
37
+ "default" => __("http://targeturl.com", "livemesh-so-widgets"),
38
+ ),
39
+ "text" => array(
40
+ "type" => "text",
41
+ "description" => __("The button title or text. ", "livemesh-so-widgets"),
42
+ "label" => __("Button Text", "livemesh-so-widgets"),
43
+ "default" => __("Buy Now", "livemesh-so-widgets"),
44
+ ),
45
+
46
+ 'icon_type' => array(
47
+ 'type' => 'select',
48
+ 'label' => __('Choose Icon Type', 'livemesh-so-widgets'),
49
+ 'default' => 'none',
50
+ 'state_emitter' => array(
51
+ 'callback' => 'select',
52
+ 'args' => array('icon_type')
53
+ ),
54
+ 'options' => array(
55
+ 'none' => __('None', 'livemesh-so-widgets'),
56
+ 'icon' => __('Icon', 'livemesh-so-widgets'),
57
+ 'icon_image' => __('Icon Image', 'livemesh-so-widgets'),
58
+ )
59
+ ),
60
+
61
+ 'icon_image' => array(
62
+ 'type' => 'media',
63
+ 'label' => __('Service Image.', 'livemesh-so-widgets'),
64
+ 'state_handler' => array(
65
+ 'icon_type[icon_image]' => array('show'),
66
+ '_else[icon_type]' => array('hide'),
67
+ ),
68
+ ),
69
+
70
+ 'icon' => array(
71
+ 'type' => 'icon',
72
+ 'label' => __('Service Icon.', 'livemesh-so-widgets'),
73
+ 'state_handler' => array(
74
+ 'icon_type[icon]' => array('show'),
75
+ '_else[icon_type]' => array('hide'),
76
+ ),
77
+ ),
78
+
79
+
80
+ 'settings' => array(
81
+ 'type' => 'section',
82
+ 'label' => __('Settings', 'livemesh-so-widgets'),
83
+ 'fields' => array(
84
+
85
+ "class" => array(
86
+ "type" => "text",
87
+ "description" => __("The CSS class name for the button element.", "livemesh-so-widgets"),
88
+ "label" => __("Class", "livemesh-so-widgets"),
89
+ "default" => "",
90
+ "optional" => "true"
91
+ ),
92
+ "style" => array(
93
+ "type" => "text",
94
+ "description" => __("Inline CSS styling for the button element.", "livemesh-so-widgets"),
95
+ "label" => __("Style", "livemesh-so-widgets"),
96
+ "optional" => "true"
97
+ ),
98
+ "color" => array(
99
+ "type" => "select",
100
+ "description" => __("The color of the button.", "livemesh-so-widgets"),
101
+ "label" => __("Color", "livemesh-so-widgets"),
102
+ "options" => array(
103
+ "custom" => __("Custom", "livemesh-so-widgets"),
104
+ "black" => __("Black", "livemesh-so-widgets"),
105
+ "blue" => __("Blue", "livemesh-so-widgets"),
106
+ "cyan" => __("Cyan", "livemesh-so-widgets"),
107
+ "green" => __("Green", "livemesh-so-widgets"),
108
+ "orange" => __("Orange", "livemesh-so-widgets"),
109
+ "pink" => __("Pink", "livemesh-so-widgets"),
110
+ "red" => __("Red", "livemesh-so-widgets"),
111
+ "teal" => __("Teal", "livemesh-so-widgets"),
112
+ "trans" => __("Transparent", "livemesh-so-widgets"),
113
+ "semitrans" => __("Semi Transparent", "livemesh-so-widgets"),
114
+ ),
115
+ 'state_emitter' => array(
116
+ 'callback' => 'select',
117
+ 'args' => array('color')
118
+ ),
119
+ 'default' => 'custom'
120
+ ),
121
+ "custom_color" => array(
122
+ "type" => "color",
123
+ "description" => __("Custom color of the button.", "livemesh-so-widgets"),
124
+ "label" => __("Custom button color", "livemesh-so-widgets"),
125
+ 'state_handler' => array(
126
+ 'color[custom]' => array('show'),
127
+ '_else[color]' => array('hide'),
128
+ ),
129
+ "default" => "#f94213"
130
+ ),
131
+ "hover_color" => array(
132
+ "type" => "color",
133
+ "description" => __("Hover color of the button.", "livemesh-so-widgets"),
134
+ "label" => __("Custom button hover color", "livemesh-so-widgets"),
135
+ "optional" => "true"
136
+ ),
137
+ "type" => array(
138
+ "type" => "select",
139
+ "label" => __("Button Size", "livemesh-so-widgets"),
140
+ "options" => array(
141
+ "medium" => __("Medium", "livemesh-so-widgets"),
142
+ "large" => __("Large", "livemesh-so-widgets"),
143
+ "small" => __("Small", "livemesh-so-widgets"),
144
+ )
145
+ ),
146
+
147
+ 'rounded' => array(
148
+ 'type' => 'checkbox',
149
+ 'label' => __('Display rounded button?', 'livemesh-so-widgets'),
150
+ 'default' => false
151
+ ),
152
+ "target" => array(
153
+ "type" => "checkbox",
154
+ "label" => __("Open the link in new window", "livemesh-so-widgets"),
155
+ "default" => true,
156
+ ),
157
+ "align" => array(
158
+ "type" => "select",
159
+ "description" => __("Alignment of the button displayed.", "livemesh-so-widgets"),
160
+ "label" => __("Align", "livemesh-so-widgets"),
161
+ "options" => array(
162
+ "none" => __("None", "livemesh-so-widgets"),
163
+ "center" => __("Center", "livemesh-so-widgets"),
164
+ "left" => __("Left", "livemesh-so-widgets"),
165
+ "right" => __("Right", "livemesh-so-widgets"),
166
+ ),
167
+ 'default' => 'none'
168
+ ),
169
+ )
170
+ ),
171
+ )
172
+ );
173
+ }
174
+
175
+ function enqueue_frontend_scripts($instance) {
176
+
177
+ wp_enqueue_style('lsow-button', siteorigin_widget_get_plugin_dir_url('lsow-button') . 'css/style.css', array(), LSOW_VERSION);
178
+
179
+ $custom_css = $this->custom_css($instance);
180
+ if (!empty($custom_css))
181
+ wp_add_inline_style('lsow-button', $custom_css);
182
+
183
+ parent::enqueue_frontend_scripts($instance);
184
+ }
185
+
186
+ /**
187
+ * Generate the custom layout CSS required
188
+ */
189
+ protected function custom_css($instance) {
190
+
191
+ $custom_css = '';
192
+
193
+ $this->button_id = uniqid('lsow-button-');
194
+
195
+ $id_selector = '#' . $this->button_id;
196
+
197
+ $button_color = $instance['settings']["color"];
198
+
199
+ $custom_color = $instance['settings']["custom_color"];
200
+
201
+ $hover_color = $instance['settings']["hover_color"];
202
+
203
+ if ($button_color == "custom") {
204
+ if (!empty($custom_color)) {
205
+
206
+ $custom_css .= $id_selector . '.lsow-button { background-color:' . $custom_color . '; }' . "\n";
207
+
208
+ // Automatically set a hover color for custom color if none specified by user
209
+ if (empty($hover_color)) {
210
+ $hover_color = lsow_color_luminance($custom_color, 0.05);
211
+ }
212
+ }
213
+ }
214
+
215
+ // Apply the hover color for button of any color provided one is specified
216
+ if (!empty($hover_color)) {
217
+ $custom_css .= $id_selector . '.lsow-button:hover { background-color:' . $hover_color . '; }';
218
+ }
219
+
220
+ return $custom_css;
221
+ }
222
+
223
+ function get_template_variables($instance, $args) {
224
+ return array(
225
+ "id" => $this->button_id,
226
+ "style" => $instance['settings']["style"],
227
+ "class" => $instance['settings']["class"],
228
+ "color" => $instance['settings']["color"],
229
+ "custom_color" => $instance['settings']["custom_color"],
230
+ "hover_color" => $instance['settings']["hover_color"],
231
+ "type" => $instance['settings']["type"],
232
+ "align" => $instance['settings']["align"],
233
+ "target" => $instance['settings']["target"],
234
+ "rounded" => $instance['settings']["rounded"],
235
+ "href" => (!empty($instance['href'])) ? sow_esc_url($instance['href']) : '',
236
+ "text" => $instance["text"],
237
+ 'icon_type' => $instance['icon_type'],
238
+ 'icon_image' => $instance['icon_image'],
239
+ 'icon' => $instance['icon'],
240
+ 'settings' => $instance['settings']
241
+ );
242
+ }
243
+
244
+ }
245
+
246
+ siteorigin_widget_register("lsow-button", __FILE__, "LSOW_Button_Widget");
includes/widgets/lsow-button-widget/tpl/default.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @var $id
4
+ * @var $style
5
+ * @var $class
6
+ * @var $color
7
+ * @var $custom_color
8
+ * @var $hover_color
9
+ * @var $type
10
+ * @var $rounded
11
+ * @var $href
12
+ * @var $align
13
+ * @var $target
14
+ * @var $text
15
+ * @var $icon_type
16
+ * @var $icon_image
17
+ * @var $icon
18
+ * @var $settings
19
+ */
20
+
21
+ $icon_html = '';
22
+
23
+ $id = (!empty($id)) ? ' id="' . $id . '"' : '';
24
+
25
+ $class = (!empty($class)) ? ' ' . $class : '';
26
+
27
+ $color_class = ' lsow-' . esc_attr($color);
28
+ if (!empty($type))
29
+ $type = ' lsow-' . esc_attr($type);
30
+
31
+ $rounded = (!empty($rounded)) ? ' lsow-rounded' : '';
32
+
33
+ if (!empty($target))
34
+ $target = ' target="_blank"';
35
+ else
36
+ $target = '';
37
+
38
+ if ($color == 'custom' && empty($custom_color)) {
39
+ $custom_color = '#f94213'; // default button color if none set in theme options
40
+ }
41
+
42
+ $style = ($style) ? ' style="' . esc_attr($style) . '"' : '';
43
+
44
+ // Use the custom color only if user wants to use the custom color set
45
+ $color_attr = ($color == 'custom') ? ' data-color=' . esc_html($custom_color) : '';
46
+
47
+ $hover_color_attr = ($hover_color) ? ' data-hover-color=' . esc_html($hover_color) : '';
48
+
49
+ if ($icon_type == 'icon_image')
50
+ $icon_html = wp_get_attachment_image($icon_image, 'thumbnail', false, array('class' => 'lsow-image lsow-thumbnail'));
51
+ elseif ($icon_type == 'icon')
52
+ $icon_html = siteorigin_widget_get_icon($icon);
53
+
54
+ $button_content = '<a' . $id . ' class= "lsow-button ' . ((!empty($icon_html)) ? ' lsow-with-icon' : '') . esc_attr($class) . $color_class . $type . $rounded . '"' . $style . $color_attr . $hover_color_attr . ' href="' . esc_url($href) . '"' . esc_html($target) . '>' . $icon_html . esc_html($text) . '</a>';
55
+
56
+ if ($align != 'none')
57
+ $button_content = '<div class="lsow-button-wrap" style="text-align:' . esc_attr($align) . ';float:' . esc_attr($align) . ';">' . $button_content . '</div>';
58
+
59
+ echo $button_content;
includes/widgets/lsow-carousel-widget/lsow-carousel-widget.php CHANGED
@@ -18,7 +18,7 @@ class LSOW_Carousel_Widget extends SiteOrigin_Widget {
18
  array(
19
  'description' => __('Display a collection of html elements as a carousel.', 'livemesh-so-widgets'),
20
  'panels_icon' => 'dashicons dashicons-minus',
21
- 'help' => 'http://portfoliotheme.org/widgets-bundle/carousel-widget-documentation/'
22
  ),
23
  array(),
24
  array(
18
  array(
19
  'description' => __('Display a collection of html elements as a carousel.', 'livemesh-so-widgets'),
20
  'panels_icon' => 'dashicons dashicons-minus',
21
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/carousel-widget-documentation/'
22
  ),
23
  array(),
24
  array(
includes/widgets/lsow-clients-widget/lsow-clients-widget.php CHANGED
@@ -16,7 +16,7 @@ class LSOW_Client_Widget extends SiteOrigin_Widget {
16
  array(
17
  'description' => __('Display one or more clients in a multi-column grid.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
- 'help' => 'http://portfoliotheme.org/widgets-bundle/odometer-widget-documentation/'
20
  ),
21
  array(),
22
  array(
16
  array(
17
  'description' => __('Display one or more clients in a multi-column grid.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/odometer-widget-documentation/'
20
  ),
21
  array(),
22
  array(
includes/widgets/lsow-clients-widget/tpl/default.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  /**
3
  * @var $clients
 
4
  */
5
 
6
  ?>
@@ -23,7 +24,7 @@
23
 
24
  <?php if (!empty($client['link'])): ?>
25
 
26
- <a href="<?php echo esc_url($client['link']); ?>" title="<?php echo esc_html($client['name']); ?>"><?php echo esc_html($client['name']); ?></a>
27
 
28
  <?php else: ?>
29
 
1
  <?php
2
  /**
3
  * @var $clients
4
+ * @var $settings
5
  */
6
 
7
  ?>
24
 
25
  <?php if (!empty($client['link'])): ?>
26
 
27
+ <a href="<?php echo sow_esc_url($client['link']); ?>" title="<?php echo esc_html($client['name']); ?>" target="_blank"><?php echo esc_html($client['name']); ?></a>
28
 
29
  <?php else: ?>
30
 
includes/widgets/lsow-heading-widget/css/style.css CHANGED
@@ -6,67 +6,68 @@ html {
6
 
7
  .lsow-heading {
8
  text-align: center;
9
- margin: 0 auto 60px; }
 
10
  @media only screen and (max-width: 767px) {
11
  .lsow-heading {
12
  margin-bottom: 40px; } }
13
  .lsow-heading .lsow-text {
14
  font-size: 18px;
15
  line-height: 28px;
16
- max-width: 600px;
17
  margin: 0 auto; }
18
  @media only screen and (max-width: 767px) {
19
  .lsow-heading .lsow-text {
20
  font-size: 15px;
21
  line-height: 26px; } }
 
 
 
 
 
 
 
 
22
 
23
- .lsow-heading.lsow-style1 .lsow-title, .lsow-heading.lsow-style2 .lsow-title, .lsow-heading.lsow-style3 .lsow-title {
24
  font-weight: 700;
25
  font-size: 32px;
26
  line-height: 42px;
27
  margin: 0 auto 20px;
28
- max-width: 640px;
29
  color: #333;
30
  font-weight: bold; }
31
  @media only screen and (max-width: 767px) {
32
- .lsow-heading.lsow-style1 .lsow-title, .lsow-heading.lsow-style2 .lsow-title, .lsow-heading.lsow-style3 .lsow-title {
33
  font-size: 24px;
34
  line-height: 32px; } }
35
- .lsow-dark-bg .lsow-heading.lsow-style1 .lsow-title, .lsow-dark-bg .lsow-heading.lsow-style2 .lsow-title, .lsow-dark-bg .lsow-heading.lsow-style3 .lsow-title {
36
  color: #e5e5e5; }
37
- .lsow-dark-bg .lsow-heading.lsow-style1 .lsow-subtitle, .lsow-dark-bg .lsow-heading.lsow-style2 .lsow-subtitle, .lsow-dark-bg .lsow-heading.lsow-style3 .lsow-subtitle {
38
- color: #505050; }
39
- .lsow-dark-bg .lsow-heading.lsow-style1 .lsow-text, .lsow-dark-bg .lsow-heading.lsow-style2 .lsow-text, .lsow-dark-bg .lsow-heading.lsow-style3 .lsow-text {
40
  color: #909090; }
 
 
41
 
42
- .lsow-heading.lsow-style2 .lsow-subtitle {
43
  margin: 0 auto 5px;
44
- max-width: 700px;
45
  color: #888;
46
  font-size: 12px;
47
  line-height: 20px;
48
  text-transform: uppercase;
49
  font-weight: 600;
50
- letter-spacing: 1px;
51
  position: relative;
52
  display: inline-block;
53
  padding: 0 10px; }
54
- .lsow-heading.lsow-style2 .lsow-subtitle:before {
55
- display: block;
56
- content: '_';
57
- position: absolute;
58
- left: 0;
59
- top: -5px; }
60
- .lsow-heading.lsow-style2 .lsow-subtitle:after {
61
- display: block;
62
- content: '_';
63
- position: absolute;
64
- right: 0;
65
- top: -5px; }
66
  @media only screen and (max-width: 767px) {
67
- .lsow-heading.lsow-style2 .lsow-subtitle {
68
  font-size: 11px;
69
  line-height: 18px; } }
 
 
 
 
 
70
 
71
  .lsow-heading.lsow-style3 {
72
  margin: 0 auto 30px; }
@@ -89,5 +90,9 @@ html {
89
  .lsow-heading.lsow-style3 .lsow-title {
90
  font-size: 16px;
91
  line-height: 24px; } }
 
 
 
 
92
 
93
  /*# sourceMappingURL=style.css.map */
6
 
7
  .lsow-heading {
8
  text-align: center;
9
+ margin: 0 auto 60px;
10
+ max-width: 640px; }
11
  @media only screen and (max-width: 767px) {
12
  .lsow-heading {
13
  margin-bottom: 40px; } }
14
  .lsow-heading .lsow-text {
15
  font-size: 18px;
16
  line-height: 28px;
 
17
  margin: 0 auto; }
18
  @media only screen and (max-width: 767px) {
19
  .lsow-heading .lsow-text {
20
  font-size: 15px;
21
  line-height: 26px; } }
22
+ .lsow-heading.lsow-alignleft, .lsow-heading.lsow-alignright {
23
+ margin: 0; }
24
+ .lsow-heading.lsow-alignleft .lsow-text, .lsow-heading.lsow-alignright .lsow-text {
25
+ margin: 0; }
26
+ .lsow-heading.lsow-alignleft {
27
+ text-align: left; }
28
+ .lsow-heading.lsow-alignright {
29
+ text-align: right; }
30
 
31
+ .lsow-heading .lsow-title {
32
  font-weight: 700;
33
  font-size: 32px;
34
  line-height: 42px;
35
  margin: 0 auto 20px;
 
36
  color: #333;
37
  font-weight: bold; }
38
  @media only screen and (max-width: 767px) {
39
+ .lsow-heading .lsow-title {
40
  font-size: 24px;
41
  line-height: 32px; } }
42
+ .lsow-dark-bg .lsow-heading .lsow-title {
43
  color: #e5e5e5; }
44
+ .lsow-dark-bg .lsow-heading .lsow-subtitle {
45
+ color: #B0B0B0; }
46
+ .lsow-dark-bg .lsow-heading .lsow-text {
47
  color: #909090; }
48
+ .lsow-heading.lsow-alignleft .lsow-title, .lsow-heading.lsow-alignright .lsow-title {
49
+ margin: 0 0 20px; }
50
 
51
+ .lsow-heading .lsow-subtitle {
52
  margin: 0 auto 5px;
 
53
  color: #888;
54
  font-size: 12px;
55
  line-height: 20px;
56
  text-transform: uppercase;
57
  font-weight: 600;
58
+ letter-spacing: 2px;
59
  position: relative;
60
  display: inline-block;
61
  padding: 0 10px; }
 
 
 
 
 
 
 
 
 
 
 
 
62
  @media only screen and (max-width: 767px) {
63
+ .lsow-heading .lsow-subtitle {
64
  font-size: 11px;
65
  line-height: 18px; } }
66
+ .lsow-heading.lsow-alignleft .lsow-subtitle, .lsow-heading.lsow-alignright .lsow-subtitle {
67
+ margin: 0 0 5px;
68
+ padding: 0; }
69
+ .lsow-heading.lsow-alignleft .lsow-subtitle:before, .lsow-heading.lsow-alignleft .lsow-subtitle:after, .lsow-heading.lsow-alignright .lsow-subtitle:before, .lsow-heading.lsow-alignright .lsow-subtitle:after {
70
+ display: none; }
71
 
72
  .lsow-heading.lsow-style3 {
73
  margin: 0 auto 30px; }
90
  .lsow-heading.lsow-style3 .lsow-title {
91
  font-size: 16px;
92
  line-height: 24px; } }
93
+ .lsow-heading.lsow-style3.lsow-alignleft, .lsow-heading.lsow-style3.lsow-alignright {
94
+ margin: 0 0 30px; }
95
+ .lsow-heading.lsow-style3.lsow-alignleft .lsow-title:after, .lsow-heading.lsow-style3.lsow-alignright .lsow-title:after {
96
+ margin: 10px 0 20px; }
97
 
98
  /*# sourceMappingURL=style.css.map */
includes/widgets/lsow-heading-widget/css/style.css.map CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "version": 3,
3
- "mappings": "AAGE,IAAK;EACH,UAAU,EAAE,UAAU;;AAItB,sBAEU;EACR,UAAU,EAAE,OAAO;;ACRzB,aAAc;EACZ,UAAU,EAAE,MAAM;EAClB,MAAM,EAAE,WAAW;EC2DnB,yCAA8C;ID7DhD,aAAc;MAIV,aAAa,EAAE,IAAI;EAErB,wBAAW;IACT,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,MAAM;ICmDhB,yCAA8C;MDvD9C,wBAAW;QAMP,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;;AAMrB,mHAAY;EACV,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,WAAW;EACnB,SAAS,EAAE,KAAK;EAChB,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,IAAI;ECmCnB,yCAA8C;ID1C9C,mHAAY;MASR,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;AAIjB,6JAAY;EACV,KAAK,EAAE,OAAO;AAEhB,sKAAe;EACb,KAAK,EAAE,OAAO;AAEhB,0JAAW;EACT,KAAK,EAAE,OAAO;;AASpB,wCAAe;EACb,MAAM,EAAE,UAAU;EAClB,SAAS,EAAE,KAAK;EAChB,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,SAAS;EACzB,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,GAAG;EACnB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,MAAM;EACf,+CAAS;IACP,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,IAAI;EAEX,8CAAQ;IACN,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,CAAC;IACR,GAAG,EAAE,IAAI;ECZb,yCAA8C;IDZ9C,wCAAe;MA2BX,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;;AAMvB,yBAA0B;EACvB,MAAM,EAAE,WAAW;EACpB,qCAAY;IACV,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,GAAG;ICbrB,2CAAQ;MACN,KAAK,EAAE,IAAW;MAClB,MAAM,EAAE,GAAY;MACpB,UAAU,EDWkB,IAAI;MCVhC,OAAO,EAAE,KAAK;MACd,OAAO,EAAE,EAAE;IDUX,2CAAQ;MACN,MAAM,EAAE,cAAc;MACtB,yDAAgB;QACd,UAAU,EAAE,OAAO;ICjCzB,yCAA8C;MDwB9C,qCAAY;QAaR,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI",
4
  "sources": ["../../../../../../bower_components/neat/app/assets/stylesheets/grid/_box-sizing.scss","style.scss","../../../../assets/css/_lsow-lib.scss"],
5
  "names": [],
6
  "file": "style.css"
1
  {
2
  "version": 3,
3
+ "mappings": "AAGE,IAAK;EACH,UAAU,EAAE,UAAU;;AAItB,sBAEU;EACR,UAAU,EAAE,OAAO;;ACRzB,aAAc;EACZ,UAAU,EAAE,MAAM;EAClB,MAAM,EAAE,WAAW;EACnB,SAAS,EAAE,KAAK;EC0DhB,yCAA8C;ID7DhD,aAAc;MAKV,aAAa,EAAE,IAAI;EAErB,wBAAW;IACT,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,MAAM,EAAE,MAAM;ICmDhB,yCAA8C;MDtD9C,wBAAW;QAKP,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;EAGrB,2DAAoC;IAClC,MAAM,EAAE,CAAC;IACT,iFAAW;MACT,MAAM,EAAE,CAAC;EAGb,4BAAiB;IACf,UAAU,EAAE,IAAI;EAElB,6BAAkB;IAChB,UAAU,EAAE,KAAK;;AAKnB,yBAAY;EACV,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,WAAW;EACnB,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,IAAI;ECwBnB,yCAA8C;ID9B9C,yBAAY;MAQR,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;AAInB,uCAAY;EACV,KAAK,EAAE,OAAO;AAEhB,0CAAe;EACb,KAAK,EAAE,OAAO;AAEhB,sCAAW;EACT,KAAK,EAAE,OAAO;AAKhB,mFAAY;EACV,MAAM,EAAE,QAAQ;;AASpB,4BAAe;EACb,MAAM,EAAE,UAAU;EAClB,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,SAAS;EACzB,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,GAAG;EACnB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,MAAM;ECfjB,yCAA8C;IDK9C,4BAAe;MAYX,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;AAInB,yFAAe;EACb,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,CAAC;EACV,8MAAkB;IAChB,OAAO,EAAE,IAAI;;AAOrB,yBAA0B;EACxB,MAAM,EAAE,WAAW;EACnB,qCAAY;IACV,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,GAAG;ICxBrB,2CAAQ;MACN,KAAK,EAAE,IAAW;MAClB,MAAM,EAAE,GAAY;MACpB,UAAU,EDsBkB,IAAI;MCrBhC,OAAO,EAAE,KAAK;MACd,OAAO,EAAE,EAAE;IDqBX,2CAAQ;MACN,MAAM,EAAE,cAAc;MACtB,yDAAgB;QACd,UAAU,EAAE,OAAO;IC5CzB,yCAA8C;MDmC9C,qCAAY;QAaR,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;EAIrB,mFAAoC;IAClC,MAAM,EAAE,QAAQ;IAChB,uHAAkB;MAChB,MAAM,EAAE,WAAW",
4
  "sources": ["../../../../../../bower_components/neat/app/assets/stylesheets/grid/_box-sizing.scss","style.scss","../../../../assets/css/_lsow-lib.scss"],
5
  "names": [],
6
  "file": "style.css"
includes/widgets/lsow-heading-widget/css/style.scss CHANGED
@@ -4,28 +4,39 @@
4
  .lsow-heading {
5
  text-align: center;
6
  margin: 0 auto 60px;
 
7
  @include respond-to-max(767) {
8
  margin-bottom: 40px;
9
  }
10
  .lsow-text {
11
  font-size: 18px;
12
  line-height: 28px;
13
- max-width: 600px;
14
  margin: 0 auto;
15
  @include respond-to-max(767) {
16
  font-size: 15px;
17
  line-height: 26px;
18
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  }
20
- }
21
 
22
- .lsow-heading.lsow-style1, .lsow-heading.lsow-style2, .lsow-heading.lsow-style3 {
23
  .lsow-title {
24
  font-weight: 700;
25
  font-size: 32px;
26
  line-height: 42px;
27
  margin: 0 auto 20px;
28
- max-width: 640px;
29
  color: #333;
30
  font-weight: bold;
31
  @include respond-to-max(767) {
@@ -33,59 +44,59 @@
33
  line-height: 32px;
34
  }
35
  }
36
- .lsow-dark-bg & {
37
- .lsow-title {
38
- color: #e5e5e5;
39
  }
40
- .lsow-subtitle {
41
- color: #505050;
42
  }
43
- .lsow-text {
44
- color: #909090;
 
 
 
 
 
 
45
  }
46
  }
47
  }
48
 
49
 
50
 
51
- .lsow-heading.lsow-style2 {
52
 
53
  .lsow-subtitle {
54
  margin: 0 auto 5px;
55
- max-width: 700px;
56
  color: #888;
57
  font-size: 12px;
58
  line-height: 20px;
59
  text-transform: uppercase;
60
  font-weight: 600;
61
- letter-spacing: 1px;
62
  position: relative;
63
  display: inline-block;
64
  padding: 0 10px;
65
- &:before {
66
- display: block;
67
- content: '_';
68
- position: absolute;
69
- left: 0;
70
- top: -5px;
71
- }
72
- &:after {
73
- display: block;
74
- content: '_';
75
- position: absolute;
76
- right: 0;
77
- top: -5px;
78
- }
79
  @include respond-to-max(767) {
80
  font-size: 11px;
81
  line-height: 18px;
82
  }
83
  }
 
 
 
 
 
 
 
 
 
84
  }
85
 
86
 
87
  .lsow-heading.lsow-style3 {
88
- margin: 0 auto 30px;
89
  .lsow-title {
90
  font-size: 22px;
91
  line-height: 32px;
@@ -96,12 +107,19 @@
96
  margin: 10px auto 20px;
97
  .lsow-dark-bg & {
98
  background: #909090;
 
99
  }
100
- }
101
  @include respond-to-max(767) {
102
  font-size: 16px;
103
  line-height: 24px;
104
  }
105
  }
 
 
 
 
 
 
 
106
  }
107
 
4
  .lsow-heading {
5
  text-align: center;
6
  margin: 0 auto 60px;
7
+ max-width: 640px;
8
  @include respond-to-max(767) {
9
  margin-bottom: 40px;
10
  }
11
  .lsow-text {
12
  font-size: 18px;
13
  line-height: 28px;
 
14
  margin: 0 auto;
15
  @include respond-to-max(767) {
16
  font-size: 15px;
17
  line-height: 26px;
18
  }
19
+ }
20
+ &.lsow-alignleft, &.lsow-alignright {
21
+ margin: 0;
22
+ .lsow-text {
23
+ margin: 0;
24
+ }
25
+ }
26
+ &.lsow-alignleft {
27
+ text-align: left;
28
+ }
29
+ &.lsow-alignright {
30
+ text-align: right;
31
+ }
32
  }
 
33
 
34
+ .lsow-heading {
35
  .lsow-title {
36
  font-weight: 700;
37
  font-size: 32px;
38
  line-height: 42px;
39
  margin: 0 auto 20px;
 
40
  color: #333;
41
  font-weight: bold;
42
  @include respond-to-max(767) {
44
  line-height: 32px;
45
  }
46
  }
47
+ .lsow-dark-bg & {
48
+ .lsow-title {
49
+ color: #e5e5e5;
50
  }
51
+ .lsow-subtitle {
52
+ color: #B0B0B0;
53
  }
54
+ .lsow-text {
55
+ color: #909090;
56
+ }
57
+ }
58
+
59
+ &.lsow-alignleft, &.lsow-alignright {
60
+ .lsow-title {
61
+ margin: 0 0 20px;
62
  }
63
  }
64
  }
65
 
66
 
67
 
68
+ .lsow-heading {
69
 
70
  .lsow-subtitle {
71
  margin: 0 auto 5px;
 
72
  color: #888;
73
  font-size: 12px;
74
  line-height: 20px;
75
  text-transform: uppercase;
76
  font-weight: 600;
77
+ letter-spacing: 2px;
78
  position: relative;
79
  display: inline-block;
80
  padding: 0 10px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  @include respond-to-max(767) {
82
  font-size: 11px;
83
  line-height: 18px;
84
  }
85
  }
86
+ &.lsow-alignleft, &.lsow-alignright {
87
+ .lsow-subtitle {
88
+ margin: 0 0 5px;
89
+ padding: 0;
90
+ &:before, &:after {
91
+ display: none;
92
+ }
93
+ }
94
+ }
95
  }
96
 
97
 
98
  .lsow-heading.lsow-style3 {
99
+ margin: 0 auto 30px;
100
  .lsow-title {
101
  font-size: 22px;
102
  line-height: 32px;
107
  margin: 10px auto 20px;
108
  .lsow-dark-bg & {
109
  background: #909090;
110
+ }
111
  }
 
112
  @include respond-to-max(767) {
113
  font-size: 16px;
114
  line-height: 24px;
115
  }
116
  }
117
+
118
+ &.lsow-alignleft, &.lsow-alignright {
119
+ margin: 0 0 30px;
120
+ .lsow-title:after {
121
+ margin: 10px 0 20px;
122
+ }
123
+ }
124
  }
125
 
includes/widgets/lsow-heading-widget/lsow-heading-widget.php CHANGED
@@ -17,7 +17,7 @@ class LSOW_Heading_Widget extends SiteOrigin_Widget {
17
  array(
18
  'description' => __('Create heading for display on the top of a section.', 'livemesh-so-widgets'),
19
  'panels_icon' => 'dashicons dashicons-minus',
20
- 'help' => 'http://portfoliotheme.org/widgets-bundle/heading-widget-documentation/'
21
  ),
22
  array(),
23
  array(
@@ -40,6 +40,17 @@ class LSOW_Heading_Widget extends SiteOrigin_Widget {
40
  'style3' => __('Style 3', 'livemesh-so-widgets'),
41
  )
42
  ),
 
 
 
 
 
 
 
 
 
 
 
43
 
44
  'heading' => array(
45
  'type' => 'text',
@@ -84,6 +95,7 @@ class LSOW_Heading_Widget extends SiteOrigin_Widget {
84
  function get_template_variables($instance, $args) {
85
  return array(
86
  'style' => $instance['style'],
 
87
  'heading' => $instance['heading'],
88
  'short_text' => !empty($instance['short_text']) ? $instance['short_text'] : '',
89
  'subtitle' => !empty($instance['subtitle']) ? $instance['subtitle'] : ''
17
  array(
18
  'description' => __('Create heading for display on the top of a section.', 'livemesh-so-widgets'),
19
  'panels_icon' => 'dashicons dashicons-minus',
20
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/heading-widget-documentation/'
21
  ),
22
  array(),
23
  array(
40
  'style3' => __('Style 3', 'livemesh-so-widgets'),
41
  )
42
  ),
43
+ 'align' => array(
44
+ 'type' => 'select',
45
+ 'description' => __('Alignment of the heading.', 'livemesh-so-widgets'),
46
+ 'label' => __('Align', 'livemesh-so-widgets'),
47
+ 'options' => array(
48
+ 'center' => __('Center', 'livemesh-so-widgets'),
49
+ 'left' => __('Left', 'livemesh-so-widgets'),
50
+ 'right' => __('Right', 'livemesh-so-widgets'),
51
+ ),
52
+ 'default' => 'center'
53
+ ),
54
 
55
  'heading' => array(
56
  'type' => 'text',
95
  function get_template_variables($instance, $args) {
96
  return array(
97
  'style' => $instance['style'],
98
+ 'align' => $instance['align'],
99
  'heading' => $instance['heading'],
100
  'short_text' => !empty($instance['short_text']) ? $instance['short_text'] : '',
101
  'subtitle' => !empty($instance['subtitle']) ? $instance['subtitle'] : ''
includes/widgets/lsow-heading-widget/tpl/default.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  /**
3
  * @var $style
 
4
  * @var $heading
5
  * @var $subtitle
6
  * @var $short_text
@@ -8,7 +9,7 @@
8
 
9
  ?>
10
 
11
- <div class="lsow-heading lsow-<?php echo $style; ?>">
12
 
13
  <?php if ($style == 'style2' && !empty($subtitle)): ?>
14
 
1
  <?php
2
  /**
3
  * @var $style
4
+ * @var $align
5
  * @var $heading
6
  * @var $subtitle
7
  * @var $short_text
9
 
10
  ?>
11
 
12
+ <div class="lsow-heading lsow-<?php echo $style; ?> lsow-align<?php echo $align; ?>">
13
 
14
  <?php if ($style == 'style2' && !empty($subtitle)): ?>
15
 
includes/widgets/lsow-hero-image-widget/lsow-hero-image-widget.php CHANGED
@@ -16,7 +16,7 @@ class LSOW_Hero_Image_Widget extends SiteOrigin_Widget {
16
  array(
17
  'description' => __('Display a hero background with video or image background.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
- 'help' => 'http://portfoliotheme.org/widgets-bundle/hero-image-widget-documentation/'
20
  ),
21
  array(),
22
  array(
@@ -205,7 +205,7 @@ class LSOW_Hero_Image_Widget extends SiteOrigin_Widget {
205
  'image' => array(
206
  'type' => 'media',
207
  'label' => __('Background Image', 'livemesh-so-widgets'),
208
- 'label' => __('This background image will be used as a placeholder image if YouTube or HTML5 video background option is chosen.', 'livemesh-so-widgets'),
209
  'library' => 'image',
210
  'fallback' => true,
211
  ),
16
  array(
17
  'description' => __('Display a hero background with video or image background.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/hero-image-widget-documentation/'
20
  ),
21
  array(),
22
  array(
205
  'image' => array(
206
  'type' => 'media',
207
  'label' => __('Background Image', 'livemesh-so-widgets'),
208
+ 'description' => __('This background image will be used as a placeholder image if YouTube or HTML5 video background option is chosen.', 'livemesh-so-widgets'),
209
  'library' => 'image',
210
  'fallback' => true,
211
  ),
includes/widgets/lsow-hero-image-widget/tpl/default.php CHANGED
@@ -95,7 +95,7 @@ if ($background['bg_type'] == 'youtube') {
95
  <?php if (!empty($standard_header['button_url'])) : ?>
96
 
97
  <a class="lsow-button"
98
- href="<?php echo $standard_header['button_url']; ?>"
99
  <?php echo (empty($standard_header['new_window'])) ? '' : 'target="_blank"'; ?>><?php echo $standard_header['button_text']; ?></a>
100
 
101
  <?php endif; ?>
95
  <?php if (!empty($standard_header['button_url'])) : ?>
96
 
97
  <a class="lsow-button"
98
+ href="<?php echo sow_esc_url($standard_header['button_url']); ?>"
99
  <?php echo (empty($standard_header['new_window'])) ? '' : 'target="_blank"'; ?>><?php echo $standard_header['button_text']; ?></a>
100
 
101
  <?php endif; ?>
includes/widgets/lsow-icon-list-widget/assets/banner.svg ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ viewBox="0 0 256 256" enable-background="new 0 0 256 256" xml:space="preserve">
6
+ <g>
7
+ <path fill="#4294B8" d="M128,1C57.9,1,1,57.9,1,128c0,15.5,2.8,30.3,7.9,44.1C26.8,220.5,73.3,255,128,255
8
+ c54.7,0,101.2-34.5,119.1-82.9c5.1-13.7,7.9-28.6,7.9-44.1C255,57.9,198.1,1,128,1z"/>
9
+ <rect x="110.3" y="51" fill="#2E4555" width="101.5" height="93.8"/>
10
+ <rect x="114.4" y="69.7" fill="#EDF0F2" width="93.4" height="69.5"/>
11
+ <rect x="202" y="58" fill="#BCBFC2" width="5.7" height="5.7"/>
12
+ <rect x="188.8" y="58" fill="#BCBFC2" width="5.7" height="5.7"/>
13
+ <rect x="175.7" y="58" fill="#BCBFC2" width="5.7" height="5.7"/>
14
+ <rect x="131.1" y="86.4" fill="#BCBFC2" width="59.8" height="3.3"/>
15
+ <rect x="131.1" y="102.8" fill="#BCBFC2" width="59.8" height="3.3"/>
16
+ <rect x="131.1" y="119.3" fill="#BCBFC2" width="59.8" height="3.3"/>
17
+ <rect x="44.2" y="92.1" fill="#36505F" width="154.7" height="112.9"/>
18
+ <rect x="47.6" y="108.8" fill="#EDF0F2" width="147.8" height="92.9"/>
19
+ <g>
20
+ <rect x="59.8" y="122.7" fill="#E65336" width="15.6" height="15.6"/>
21
+ <rect x="59.8" y="147.4" fill="#E65336" width="15.6" height="15.6"/>
22
+ <rect x="59.8" y="172.2" fill="#E65336" width="15.6" height="15.6"/>
23
+ <g>
24
+ <rect x="83.1" y="128.9" fill="#BCBFC2" width="15.2" height="3.3"/>
25
+ </g>
26
+ <g>
27
+ <rect x="83.1" y="153.6" fill="#BCBFC2" width="15.2" height="3.3"/>
28
+ </g>
29
+ <g>
30
+ <rect x="83.1" y="178.3" fill="#BCBFC2" width="15.2" height="3.3"/>
31
+ </g>
32
+ </g>
33
+ <g>
34
+ <rect x="105" y="122.7" fill="#E65336" width="15.6" height="15.6"/>
35
+ <rect x="105" y="147.4" fill="#E65336" width="15.6" height="15.6"/>
36
+ <rect x="105" y="172.2" fill="#E65336" width="15.6" height="15.6"/>
37
+ <g>
38
+ <rect x="128.3" y="128.9" fill="#BCBFC2" width="15.2" height="3.3"/>
39
+ </g>
40
+ <g>
41
+ <rect x="128.3" y="153.6" fill="#BCBFC2" width="15.2" height="3.3"/>
42
+ </g>
43
+ <g>
44
+ <rect x="128.3" y="178.3" fill="#BCBFC2" width="15.2" height="3.3"/>
45
+ </g>
46
+ </g>
47
+ <rect x="150.2" y="122.7" fill="#E65336" width="15.6" height="15.6"/>
48
+ <rect x="150.2" y="147.4" fill="#E65336" width="15.6" height="15.6"/>
49
+ <g>
50
+ <rect x="173.5" y="128.9" fill="#BCBFC2" width="15.2" height="3.3"/>
51
+ </g>
52
+ <g>
53
+ <rect x="173.5" y="153.6" fill="#BCBFC2" width="15.2" height="3.3"/>
54
+ </g>
55
+ <circle fill="#E65336" cx="50.1" cy="100.4" r="2.5"/>
56
+ <circle fill="#F0C949" cx="59.5" cy="100.4" r="2.5"/>
57
+ <circle fill="#39B39B" cx="68.9" cy="100.4" r="2.5"/>
58
+ </g>
59
+ </svg>
includes/widgets/lsow-icon-list-widget/css/style.css ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ html {
2
+ box-sizing: border-box; }
3
+
4
+ *, *::after, *::before {
5
+ box-sizing: inherit; }
6
+
7
+ .lsow-icon-list {
8
+ font-size: 0;
9
+ /* Remove space between elements */
10
+ width: 100%; }
11
+ .lsow-icon-list.lsow-alignleft {
12
+ text-align: left; }
13
+ .lsow-icon-list.lsow-alignright {
14
+ text-align: right; }
15
+ .lsow-icon-list.lsow-aligncenter {
16
+ text-align: center; }
17
+ .lsow-icon-list .lsow-icon-list-item {
18
+ display: inline-block;
19
+ padding: 0;
20
+ border: none;
21
+ outline: none;
22
+ margin: 0 0 0 15px; }
23
+ .lsow-icon-list .lsow-icon-list-item:first-child {
24
+ margin: 0; }
25
+ .lsow-icon-list .lsow-icon-list-item .lsow-icon-wrapper span {
26
+ display: block;
27
+ font-size: 32px;
28
+ line-height: 1;
29
+ color: #666;
30
+ -webkit-transition: color 0.3s ease-in-out 0s;
31
+ -moz-transition: color 0.3s ease-in-out 0s;
32
+ -ms-transition: color 0.3s ease-in-out 0s;
33
+ transition: color 0.3s ease-in-out 0s; }
34
+ .lsow-icon-list .lsow-icon-list-item .lsow-image-wrapper img {
35
+ display: block;
36
+ max-width: 100%;
37
+ width: 32px;
38
+ height: auto;
39
+ margin: 0 auto;
40
+ -webkit-transition: all 0.4s ease-in-out 0s;
41
+ -moz-transition: all 0.4s ease-in-out 0s;
42
+ -ms-transition: all 0.4s ease-in-out 0s;
43
+ transition: all 0.4s ease-in-out 0s; }
44
+ .lsow-icon-list .lsow-icon-list-item:hover .lsow-image-wrapper img {
45
+ opacity: 0.8; }
46
+ .lsow-icon-list .lsow-icon-list-item:hover .lsow-icon-wrapper span {
47
+ color: #333; }
48
+
49
+ .lsow-circular-icon-list .lsow-icon-list .lsow-icon-list-item {
50
+ margin: 0 0 0 25px;
51
+ width: 50px;
52
+ height: 50px;
53
+ border-radius: 100%; }
54
+ @media only screen and (max-width: 479px) {
55
+ .lsow-circular-icon-list .lsow-icon-list .lsow-icon-list-item {
56
+ margin: 0 0 20px 20px; } }
57
+ .lsow-circular-icon-list .lsow-icon-list .lsow-icon-list-item:first-child {
58
+ margin-left: 0; }
59
+ .lsow-dark-bg .lsow-circular-icon-list .lsow-icon-list .lsow-icon-list-item {
60
+ background: #48484a; }
61
+ .lsow-circular-icon-list .lsow-icon-list .lsow-icon-list-item .lsow-icon-wrapper span {
62
+ font-size: 22px;
63
+ /* Override user choice */
64
+ padding: 14px 0; }
65
+
66
+ /*# sourceMappingURL=style.css.map */
includes/widgets/lsow-icon-list-widget/css/style.css.map ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ {
2
+ "version": 3,
3
+ "mappings": "AAGE,IAAK;EACH,UAAU,EAAE,UAAU;;AAItB,sBAEU;EACR,UAAU,EAAE,OAAO;;ACTzB,eAAgB;EACd,SAAS,EAAE,CAAC;;EACZ,KAAK,EAAE,IAAI;EACX,8BAAiB;IACf,UAAU,EAAE,IAAI;EAElB,+BAAkB;IAChB,UAAU,EAAE,KAAK;EAEnB,gCAAmB;IACjB,UAAU,EAAE,MAAM;EAEpB,oCAAqB;IACnB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,UAAU;IAClB,gDAAc;MACZ,MAAM,EAAE,CAAC;IAEX,4DAAwB;MACtB,OAAO,EAAE,KAAK;MACd,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,CAAC;MACd,KAAK,EAAE,IAAI;MCGf,kBAAoB,EAwEU,yBAA+B;MAvE7D,eAAiB,EAuEa,yBAA+B;MAtE7D,cAAgB,EAsEc,yBAA+B;MArE7D,UAAY,EAqEkB,yBAA+B;IDxE3D,4DAAwB;MACtB,OAAO,EAAE,KAAK;MACd,SAAS,EAAE,IAAI;MACf,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,MAAM;MCLlB,kBAAoB,EAwEU,uBAA+B;MAvE7D,eAAiB,EAuEa,uBAA+B;MAtE7D,cAAgB,EAsEc,uBAA+B;MArE7D,UAAY,EAqEkB,uBAA+B;ID/DzD,kEAAwB;MACtB,OAAO,EAAE,GAAG;IAEd,kEAAwB;MACtB,KAAK,EAAE,IAAI;;AAOjB,6DAAqB;EACnB,MAAM,EAAE,UAAU;EAClB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,IAAI;ECUrB,yCAA8C;IDd9C,6DAAqB;MAMjB,MAAM,EAAE,aAAa;EAEvB,yEAAc;IACZ,WAAW,EAAE,CAAC;EAEhB,2EAAgB;IACd,UAAU,EAAE,OAAO;EAErB,qFAAwB;IACtB,SAAS,EAAE,IAAI;;IACf,OAAO,EAAE,MAAM",
4
+ "sources": ["../../../../../../bower_components/neat/app/assets/stylesheets/grid/_box-sizing.scss","style.scss","../../../../assets/css/_lsow-lib.scss"],
5
+ "names": [],
6
+ "file": "style.css"
7
+ }
includes/widgets/lsow-icon-list-widget/css/style.scss ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "../../../../assets/css/lsow-lib";
2
+
3
+ .lsow-icon-list {
4
+ font-size: 0; /* Remove space between elements */
5
+ width: 100%;
6
+ &.lsow-alignleft {
7
+ text-align: left;
8
+ }
9
+ &.lsow-alignright {
10
+ text-align: right;
11
+ }
12
+ &.lsow-aligncenter {
13
+ text-align: center;
14
+ }
15
+ .lsow-icon-list-item {
16
+ display: inline-block;
17
+ padding: 0;
18
+ border: none;
19
+ outline: none;
20
+ margin: 0 0 0 15px;
21
+ &:first-child {
22
+ margin: 0;
23
+ }
24
+ .lsow-icon-wrapper span {
25
+ display: block;
26
+ font-size: 32px;
27
+ line-height: 1;
28
+ color: #666;
29
+ @include lsow-transition(color, 0.3s);
30
+ }
31
+ .lsow-image-wrapper img {
32
+ display: block;
33
+ max-width: 100%;
34
+ width: 32px;
35
+ height: auto;
36
+ margin: 0 auto;
37
+ @include lsow-transition();
38
+ }
39
+ &:hover {
40
+ .lsow-image-wrapper img {
41
+ opacity: 0.8;
42
+ }
43
+ .lsow-icon-wrapper span {
44
+ color: #333;
45
+ }
46
+ }
47
+ }
48
+ }
49
+
50
+ .lsow-circular-icon-list .lsow-icon-list {
51
+ .lsow-icon-list-item {
52
+ margin: 0 0 0 25px;
53
+ width: 50px;
54
+ height: 50px;
55
+ border-radius: 100%;
56
+ @include respond-to-max(479) {
57
+ margin: 0 0 20px 20px;
58
+ }
59
+ &:first-child {
60
+ margin-left: 0;
61
+ }
62
+ .lsow-dark-bg & {
63
+ background: #48484a;
64
+ }
65
+ .lsow-icon-wrapper span {
66
+ font-size: 22px; /* Override user choice */
67
+ padding: 14px 0;
68
+ }
69
+ }
70
+ }
includes/widgets/lsow-icon-list-widget/js/icon-list.js ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ jQuery(function ($) {
2
+
3
+
4
+ $('.lsow-icon-list .lsow-icon-list-item').powerTip({
5
+ placement: 'n' // north-east tooltip position
6
+ });
7
+
8
+
9
+ });
includes/widgets/lsow-icon-list-widget/js/icon-list.min.js ADDED
@@ -0,0 +1 @@
 
1
+ jQuery(function(i){i(".lsow-icon-list .lsow-icon-list-item").powerTip({placement:"n"})});
includes/widgets/lsow-icon-list-widget/lsow-icon-list-widget.php ADDED
@@ -0,0 +1,191 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ Widget Name: Livemesh Icon List
5
+ Description: Use images or icon fonts to create social icons list, show payment options etc.
6
+ Author: LiveMesh
7
+ Author URI: http://portfoliotheme.org
8
+ */
9
+
10
+ class LSOW_Icon_List_Widget extends SiteOrigin_Widget {
11
+
12
+ function __construct() {
13
+ parent::__construct(
14
+ 'lsow-icon-list',
15
+ __('Livemesh Icon List', 'livemesh-so-widgets'),
16
+ array(
17
+ 'description' => __('Use images or icon fonts to create social icons list, show payment options etc.', 'livemesh-so-widgets'),
18
+ 'panels_icon' => 'dashicons dashicons-minus',
19
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/icon-list-widget-documentation/'
20
+ ),
21
+ array(),
22
+ array(
23
+ 'title' => array(
24
+ 'type' => 'text',
25
+ 'label' => __('Title', 'livemesh-so-widgets'),
26
+ ),
27
+
28
+ 'icon_type' => array(
29
+ 'type' => 'select',
30
+ 'label' => __('Choose Icon Type', 'livemesh-so-widgets'),
31
+ 'default' => 'icon',
32
+ 'state_emitter' => array(
33
+ 'callback' => 'select',
34
+ 'args' => array('icon_type')
35
+ ),
36
+ 'options' => array(
37
+ 'icon' => __('Icon', 'livemesh-so-widgets'),
38
+ 'icon_image' => __('Icon Image', 'livemesh-so-widgets'),
39
+ )
40
+ ),
41
+
42
+ 'icon_list' => array(
43
+ 'type' => 'repeater',
44
+ 'label' => __('Icon List', 'livemesh-so-widgets'),
45
+ 'item_name' => __('Icon', 'livemesh-so-widgets'),
46
+ 'item_label' => array(
47
+ 'selector' => "[id*='icon_list-title']",
48
+ 'update_event' => 'change',
49
+ 'value_method' => 'val'
50
+ ),
51
+ 'fields' => array(
52
+
53
+ 'title' => array(
54
+ 'type' => 'text',
55
+ 'label' => __('Title', 'livemesh-so-widgets'),
56
+ 'description' => __('Title for the Icon.', 'livemesh-so-widgets'),
57
+ ),
58
+
59
+ 'icon_image' => array(
60
+ 'type' => 'media',
61
+ 'label' => __('Icon Image.', 'livemesh-so-widgets'),
62
+ 'state_handler' => array(
63
+ 'icon_type[icon_image]' => array('show'),
64
+ 'icon_type[icon]' => array('hide'),
65
+ ),
66
+ ),
67
+
68
+ 'icon' => array(
69
+ 'type' => 'icon',
70
+ 'label' => __('Icon.', 'livemesh-so-widgets'),
71
+ 'state_handler' => array(
72
+ 'icon_type[icon]' => array('show'),
73
+ 'icon_type[icon_image]' => array('hide'),
74
+ ),
75
+ ),
76
+
77
+
78
+ "href" => array(
79
+ "type" => "link",
80
+ "label" => __("Target URL", "livemesh-so-widgets"),
81
+ "description" => __("The URL to which icon/image should point to. (optional)", "livemesh-so-widgets"),
82
+ ),
83
+
84
+ )
85
+ ),
86
+
87
+ 'settings' => array(
88
+ 'type' => 'section',
89
+ 'label' => __('Settings', 'livemesh-so-widgets'),
90
+ 'fields' => array(
91
+
92
+ 'icon_size' => array(
93
+ 'type' => 'slider',
94
+ 'label' => __('Icon/Image size in pixels', 'livemesh-so-widgets'),
95
+ 'min' => 1,
96
+ 'max' => 128,
97
+ 'integer' => true,
98
+ 'default' => 32
99
+ ),
100
+
101
+ 'icon_color' => array(
102
+ 'type' => 'color',
103
+ 'label' => __('Icon color', 'livemesh-so-widgets'),
104
+ 'default' => '#666666',
105
+ 'state_handler' => array(
106
+ 'icon_type[icon]' => array('show'),
107
+ 'icon_type[icon_image]' => array('hide'),
108
+ ),
109
+ ),
110
+
111
+ 'hover_color' => array(
112
+ 'type' => 'color',
113
+ 'label' => __('Icon hover color', 'livemesh-so-widgets'),
114
+ 'default' => '#444444',
115
+ 'state_handler' => array(
116
+ 'icon_type[icon]' => array('show'),
117
+ 'icon_type[icon_image]' => array('hide'),
118
+ ),
119
+ ),
120
+
121
+ "target" => array(
122
+ "type" => "checkbox",
123
+ "label" => __("Open the links in new window", "livemesh-so-widgets"),
124
+ "default" => true,
125
+ ),
126
+
127
+ 'align' => array(
128
+ 'type' => 'select',
129
+ 'label' => __('Alignment', 'livemesh-so-widgets'),
130
+ 'default' => 'left',
131
+ 'options' => array(
132
+ 'left' => __('Left', 'livemesh-so-widgets'),
133
+ 'right' => __('Right', 'livemesh-so-widgets'),
134
+ 'center' => __('Center', 'livemesh-so-widgets'),
135
+ )
136
+ ),
137
+ )
138
+ ),
139
+ )
140
+ );
141
+ }
142
+
143
+ function initialize() {
144
+ $this->register_frontend_scripts(
145
+ array(
146
+ array(
147
+ 'lsow-tooltips',
148
+ LSOW_PLUGIN_URL . 'assets/js/jquery.powertip' . SOW_BUNDLE_JS_SUFFIX . '.js',
149
+ array('jquery'),
150
+ LSOW_VERSION
151
+ ),
152
+ )
153
+ );
154
+
155
+ $this->register_frontend_scripts(array(
156
+ array(
157
+ 'lsow-icon-list',
158
+ plugin_dir_url(__FILE__) . 'js/icon-list' . SOW_BUNDLE_JS_SUFFIX . '.js',
159
+ array('jquery')
160
+ )
161
+ )
162
+ );
163
+
164
+ $this->register_frontend_styles(array(
165
+ array(
166
+ 'lsow-icon-list',
167
+ plugin_dir_url(__FILE__) . 'css/style.css'
168
+ )
169
+ )
170
+ );
171
+ }
172
+
173
+ function get_less_variables($instance) {
174
+ return array(
175
+ 'icon_size' => intval($instance['settings']['icon_size']) . 'px',
176
+ 'icon_color' => $instance['settings']['icon_color'],
177
+ 'hover_color' => $instance['settings']['hover_color']
178
+ );
179
+ }
180
+
181
+ function get_template_variables($instance, $args) {
182
+ return array(
183
+ 'icon_type' => $instance['icon_type'],
184
+ 'icon_list' => !empty($instance['icon_list']) ? $instance['icon_list'] : array(),
185
+ 'settings' => $instance['settings']
186
+ );
187
+ }
188
+
189
+ }
190
+
191
+ siteorigin_widget_register('lsow-icon-list', __FILE__, 'LSOW_Icon_List_Widget');
includes/widgets/lsow-icon-list-widget/styles/default.less ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "../../../../../so-widgets-bundle/base/less/mixins";
2
+
3
+ @icon_size: 32px;
4
+ @icon_color: #666666;
5
+ @hover_color: #444444;
6
+
7
+ .lsow-icon-list {
8
+
9
+ .lsow-icon-list-item {
10
+
11
+ .lsow-image-wrapper img {
12
+ width: @icon_size;
13
+ }
14
+ .lsow-icon-wrapper span {
15
+ font-size: @icon_size;
16
+ color: @icon_color;
17
+ &:hover {
18
+ color: @hover_color;
19
+ }
20
+ }
21
+ }
22
+ }
includes/widgets/lsow-icon-list-widget/tpl/default.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @var $icon_type
4
+ * @var $icon_list
5
+ * @var $settings
6
+ */
7
+
8
+ if (!empty($settings['target']))
9
+ $target = 'target="_blank"';
10
+ else
11
+ $target = '';
12
+
13
+ ?>
14
+
15
+ <div class="lsow-icon-list lsow-align<?php echo $settings['align']; ?>">
16
+
17
+ <?php foreach ($icon_list as $icon_item): ?>
18
+
19
+ <?php $icon_type = esc_html($icon_type); ?>
20
+
21
+ <?php $icon_title = esc_html($icon_item['title']); ?>
22
+
23
+ <?php $icon_url = sow_esc_url($icon_item['href']); ?>
24
+
25
+ <div class="lsow-icon-list-item" title="<?php echo $icon_title; ?>">
26
+
27
+ <?php if ($icon_type == 'icon_image') : ?>
28
+
29
+ <?php if (empty($icon_url)) : ?>
30
+
31
+ <div class="lsow-image-wrapper">
32
+
33
+ <?php echo wp_get_attachment_image($icon_item['icon_image'], 'full', false, array('class' => 'lsow-image full', 'alt' => $icon_title)); ?>
34
+
35
+ </div>
36
+
37
+ <?php else : ?>
38
+
39
+ <a class="lsow-image-wrapper" href="<?php echo $icon_url; ?>" <?php echo $target; ?>>
40
+
41
+ <?php echo wp_get_attachment_image($icon_item['icon_image'], 'full', false, array('class' => 'lsow-image full', 'alt' => $icon_title)); ?>
42
+
43
+ </a>
44
+
45
+ <?php endif; ?>
46
+
47
+ <?php else : ?>
48
+
49
+ <?php if (empty($icon_url)) : ?>
50
+
51
+ <div class="lsow-icon-wrapper">
52
+
53
+ <?php echo siteorigin_widget_get_icon($icon_item['icon']); ?>
54
+
55
+ </div>
56
+
57
+ <?php else : ?>
58
+
59
+ <a class="lsow-icon-wrapper" href="<?php echo $icon_url; ?>" <?php echo $target; ?>>
60
+
61
+ <?php echo siteorigin_widget_get_icon($icon_item['icon']); ?>
62
+
63
+ </a>
64
+
65
+ <?php endif; ?>
66
+
67
+ <?php endif; ?>
68
+
69
+ </div>
70
+
71
+ <?php
72
+
73
+ endforeach;
74
+
75
+ ?>
76
+
77
+ </div>
includes/widgets/lsow-odometers-widget/lsow-odometers-widget.php CHANGED
@@ -16,7 +16,7 @@ class LSOW_Odometer_Widget extends SiteOrigin_Widget {
16
  array(
17
  'description' => __('Display statistics as animated odometers in a multi-column grid.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
- 'help' => 'http://portfoliotheme.org/widgets-bundle/odometer-widget-documentation/'
20
  ),
21
  array(),
22
  array(
16
  array(
17
  'description' => __('Display statistics as animated odometers in a multi-column grid.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/odometer-widget-documentation/'
20
  ),
21
  array(),
22
  array(
includes/widgets/lsow-piecharts-widget/lsow-piecharts-widget.php CHANGED
@@ -16,7 +16,7 @@ class LSOW_Piechart_Widget extends SiteOrigin_Widget {
16
  array(
17
  'description' => __('Display statistics or skills as a percentage piechart.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
- 'help' => 'http://portfoliotheme.org/widgets-bundle/piechart-widget-documentation/'
20
  ),
21
  array(),
22
  array(
16
  array(
17
  'description' => __('Display statistics or skills as a percentage piechart.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/piechart-widget-documentation/'
20
  ),
21
  array(),
22
  array(
includes/widgets/lsow-portfolio-widget/lsow-portfolio-widget.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
 
3
  /*
4
- Widget Name: Livemesh Portfolio
5
- Description: Display portfolio items from Jetpack custom post types in multi-column grid.
6
  Author: LiveMesh
7
  Author URI: http://portfoliotheme.org
8
  */
@@ -16,7 +16,7 @@ class LSOW_Portfolio_Widget extends SiteOrigin_Widget {
16
  array(
17
  'description' => __('Showcase your work or posts or any custom post types with a filterable portfolio layout. Make sure that Custom Post Types module in active in Jetpack plugin', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
- 'help' => 'http://portfoliotheme.org/widgets-bundle/portfolio-widget-documentation/'
20
  ),
21
  array(),
22
  array(
1
  <?php
2
 
3
  /*
4
+ Widget Name: Livemesh Grid
5
+ Description: Display posts or custom post types in a multi-column grid.
6
  Author: LiveMesh
7
  Author URI: http://portfoliotheme.org
8
  */
16
  array(
17
  'description' => __('Showcase your work or posts or any custom post types with a filterable portfolio layout. Make sure that Custom Post Types module in active in Jetpack plugin', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/portfolio-widget-documentation/'
20
  ),
21
  array(),
22
  array(
includes/widgets/lsow-posts-carousel-widget/lsow-posts-carousel-widget.php CHANGED
@@ -16,7 +16,7 @@ class LSOW_Posts_Carousel_Widget extends SiteOrigin_Widget {
16
  array(
17
  'description' => __('Display blog posts or custom post types as a carousel', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
- 'help' => 'http://portfoliotheme.org/widgets-bundle/posts-carousel-widget-documentation/'
20
  ),
21
  array(),
22
  array(
16
  array(
17
  'description' => __('Display blog posts or custom post types as a carousel', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/posts-carousel-widget-documentation/'
20
  ),
21
  array(),
22
  array(
includes/widgets/lsow-pricing-table-widget/lsow-pricing-table-widget.php CHANGED
@@ -16,7 +16,7 @@ class LSOW_Pricing_Table_Widget extends SiteOrigin_Widget {
16
  array(
17
  'description' => __('Display pricing table in a multi-column grid.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
- 'help' => 'http://portfoliotheme.org/widgets-bundle/pricing-widget-documentation/'
20
  ),
21
  array(),
22
  array(
16
  array(
17
  'description' => __('Display pricing table in a multi-column grid.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/pricing-widget-documentation/'
20
  ),
21
  array(),
22
  array(
includes/widgets/lsow-pricing-table-widget/tpl/default.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  /**
3
  * @var $pricing_plans
 
4
  */
5
 
6
  ?>
@@ -17,14 +18,12 @@
17
  $tagline = esc_html($pricing_plan['tagline']);
18
  $price_tag = htmlspecialchars_decode(wp_kses_post($pricing_plan['price_tag']));
19
  $pricing_img = $pricing_plan['image'];
20
- $pricing_url = esc_url($pricing_plan['url']);
21
  $pricing_button_text = esc_html($pricing_plan['button_text']);
22
  $button_new_window = esc_html($pricing_plan['button_new_window']);
23
  $highlight = esc_html($pricing_plan['highlight']);
24
-
25
-
26
  $price_tag = (empty($price_tag)) ? '' : $price_tag;
27
- $pricing_url = (empty($pricing_url)) ? '#' : esc_url($pricing_url);
28
 
29
  ?>
30
 
@@ -60,39 +59,39 @@
60
 
61
  <div class="lsow-plan-details">
62
 
63
- <?php
64
 
65
- foreach ($pricing_plan['items'] as $pricing_item) : ?>
66
 
67
- <div class="lsow-pricing-item">
68
 
69
- <div class="lsow-title">
70
 
71
- <?php echo htmlspecialchars_decode(wp_kses_post($pricing_item['title'])); ?>
72
 
73
- </div>
74
 
75
- <div class="lsow-value-wrap">
76
 
77
- <?php
78
 
79
- if (!empty($pricing_item['icon_new'])) {
80
- echo siteorigin_widget_get_icon($pricing_item['icon_new']);
81
- }
82
 
83
- ?>
84
 
85
- <div class="lsow-value">
86
 
87
- <?php echo htmlspecialchars_decode(wp_kses_post($pricing_item['value'])); ?>
88
 
89
- </div>
90
 
91
- </div>
92
 
93
- </div>
94
 
95
- <?php endforeach; ?>
96
 
97
  </div>
98
  <!-- .lsow-plan-details -->
@@ -108,7 +107,7 @@
108
  </div>
109
  <!-- .lsow-pricing-plan -->
110
 
111
- <?php
112
 
113
  endforeach;
114
 
1
  <?php
2
  /**
3
  * @var $pricing_plans
4
+ * @var $settings
5
  */
6
 
7
  ?>
18
  $tagline = esc_html($pricing_plan['tagline']);
19
  $price_tag = htmlspecialchars_decode(wp_kses_post($pricing_plan['price_tag']));
20
  $pricing_img = $pricing_plan['image'];
21
+ $pricing_url = (empty($pricing_plan['url'])) ? '#' : sow_esc_url($pricing_plan['url']);
22
  $pricing_button_text = esc_html($pricing_plan['button_text']);
23
  $button_new_window = esc_html($pricing_plan['button_new_window']);
24
  $highlight = esc_html($pricing_plan['highlight']);
25
+
 
26
  $price_tag = (empty($price_tag)) ? '' : $price_tag;
 
27
 
28
  ?>
29
 
59
 
60
  <div class="lsow-plan-details">
61
 
62
+ <?php
63
 
64
+ foreach ($pricing_plan['items'] as $pricing_item) : ?>
65
 
66
+ <div class="lsow-pricing-item">
67
 
68
+ <div class="lsow-title">
69
 
70
+ <?php echo htmlspecialchars_decode(wp_kses_post($pricing_item['title'])); ?>
71
 
72
+ </div>
73
 
74
+ <div class="lsow-value-wrap">
75
 
76
+ <?php
77
 
78
+ if (!empty($pricing_item['icon_new'])) {
79
+ echo siteorigin_widget_get_icon($pricing_item['icon_new']);
80
+ }
81
 
82
+ ?>
83
 
84
+ <div class="lsow-value">
85
 
86
+ <?php echo htmlspecialchars_decode(wp_kses_post($pricing_item['value'])); ?>
87
 
88
+ </div>
89
 
90
+ </div>
91
 
92
+ </div>
93
 
94
+ <?php endforeach; ?>
95
 
96
  </div>
97
  <!-- .lsow-plan-details -->
107
  </div>
108
  <!-- .lsow-pricing-plan -->
109
 
110
+ <?php
111
 
112
  endforeach;
113
 
includes/widgets/lsow-services-widget/lsow-services-widget.php CHANGED
@@ -16,7 +16,7 @@ class LSOW_Services_Widget extends SiteOrigin_Widget {
16
  array(
17
  'description' => __('Create services to display in a column grid.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
- 'help' => 'http://portfoliotheme.org/widgets-bundle/services-widget-documentation/'
20
  ),
21
  array(),
22
  array(
16
  array(
17
  'description' => __('Create services to display in a column grid.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/services-widget-documentation/'
20
  ),
21
  array(),
22
  array(
includes/widgets/lsow-stats-bar-widget/lsow-stats-bar-widget.php CHANGED
@@ -16,7 +16,7 @@ class LSOW_Stats_Bars_Widget extends SiteOrigin_Widget {
16
  array(
17
  'description' => __('Display statistics or skills as a percentage stats bar.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
- 'help' => 'http://portfoliotheme.org/widgets-bundle/stats-bar-widget-documentation/'
20
  ),
21
  array(),
22
  array(
16
  array(
17
  'description' => __('Display statistics or skills as a percentage stats bar.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/stats-bar-widget-documentation/'
20
  ),
21
  array(),
22
  array(
includes/widgets/lsow-tabs-widget/css/style.css CHANGED
@@ -76,7 +76,8 @@ html {
76
  position: relative; }
77
  .lsow-tabs .lsow-tab-panes .lsow-tab-pane {
78
  padding: 40px;
79
- display: none; }
 
80
  .lsow-tabs .lsow-tab-panes .lsow-tab-pane.lsow-active {
81
  display: block;
82
  animation: lsow-fade 0.3s ease-in-out; }
@@ -501,7 +502,7 @@ html {
501
  .lsow-tabs.style7 .lsow-tab-nav .lsow-tab {
502
  padding: 0 25px 0 0; }
503
  .lsow-tabs.style7 .lsow-tab-nav .lsow-tab a {
504
- max-width: 180px;
505
  margin: 6px 0; }
506
  @media only screen and (max-width: 479px) {
507
  .lsow-tabs.style7 .lsow-tab-nav .lsow-tab a {
76
  position: relative; }
77
  .lsow-tabs .lsow-tab-panes .lsow-tab-pane {
78
  padding: 40px;
79
+ display: none;
80
+ overflow: hidden; }
81
  .lsow-tabs .lsow-tab-panes .lsow-tab-pane.lsow-active {
82
  display: block;
83
  animation: lsow-fade 0.3s ease-in-out; }
502
  .lsow-tabs.style7 .lsow-tab-nav .lsow-tab {
503
  padding: 0 25px 0 0; }
504
  .lsow-tabs.style7 .lsow-tab-nav .lsow-tab a {
505
+ max-width: none;
506
  margin: 6px 0; }
507
  @media only screen and (max-width: 479px) {
508
  .lsow-tabs.style7 .lsow-tab-nav .lsow-tab a {
includes/widgets/lsow-tabs-widget/css/style.css.map CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "version": 3,
3
- "mappings": "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",
4
  "sources": ["../../../../../../bower_components/neat/app/assets/stylesheets/grid/_box-sizing.scss","style.scss","../../../../../../bower_components/sass-flex-mixin/_flexbox.scss","../../../../assets/css/_lsow-lib.scss"],
5
  "names": [],
6
  "file": "style.css"
1
  {
2
  "version": 3,
3
+ "mappings": "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",
4
  "sources": ["../../../../../../bower_components/neat/app/assets/stylesheets/grid/_box-sizing.scss","style.scss","../../../../../../bower_components/sass-flex-mixin/_flexbox.scss","../../../../assets/css/_lsow-lib.scss"],
5
  "names": [],
6
  "file": "style.css"
includes/widgets/lsow-tabs-widget/css/style.scss CHANGED
@@ -65,6 +65,7 @@ $theme_color: #f94213;
65
  .lsow-tab-pane {
66
  padding: 40px;
67
  display: none;
 
68
  &.lsow-active {
69
  display: block;
70
  animation: lsow-fade 0.3s ease-in-out;
@@ -627,7 +628,7 @@ $theme_color: #f94213;
627
  .lsow-tab {
628
  padding: 0 25px 0 0;
629
  a {
630
- max-width: 180px;
631
  margin: 6px 0;
632
  @include respond-to-max(479) {
633
  text-align: center;
65
  .lsow-tab-pane {
66
  padding: 40px;
67
  display: none;
68
+ overflow: hidden;
69
  &.lsow-active {
70
  display: block;
71
  animation: lsow-fade 0.3s ease-in-out;
628
  .lsow-tab {
629
  padding: 0 25px 0 0;
630
  a {
631
+ max-width: none;
632
  margin: 6px 0;
633
  @include respond-to-max(479) {
634
  text-align: center;
includes/widgets/lsow-tabs-widget/js/tabs.js CHANGED
@@ -34,14 +34,6 @@ var LSOW_Tabs = function (tabs) {
34
  this.makeResponsive();
35
  };
36
 
37
- LSOW_Tabs.prototype.toggleMobile = function (mediaQuery) {
38
- if (mediaQuery.matches) {
39
-
40
- } else {
41
- document.body.style.backgroundColor = 'FireBrick';
42
- }
43
- };
44
-
45
  LSOW_Tabs.prototype.show = function (index) {
46
  // Clear out existing tab
47
  this.tabNavs.eq(this.current).removeClass('lsow-active');
34
  this.makeResponsive();
35
  };
36
 
 
 
 
 
 
 
 
 
37
  LSOW_Tabs.prototype.show = function (index) {
38
  // Clear out existing tab
39
  this.tabNavs.eq(this.current).removeClass('lsow-active');
includes/widgets/lsow-tabs-widget/lsow-tabs-widget.php CHANGED
@@ -16,7 +16,7 @@ class LSOW_Tabs_Widget extends SiteOrigin_Widget {
16
  array(
17
  'description' => __('Display tabbed content in variety of styles.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
- 'help' => 'http://portfoliotheme.org/widgets-bundle/tab-widget-documentation/'
20
  ),
21
  array(),
22
  array(
16
  array(
17
  'description' => __('Display tabbed content in variety of styles.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/tab-widget-documentation/'
20
  ),
21
  array(),
22
  array(
includes/widgets/lsow-team-members-widget/lsow-team-members-widget.php CHANGED
@@ -16,7 +16,7 @@ class LSOW_Team_Widget extends SiteOrigin_Widget {
16
  array(
17
  'description' => __('Create team members to display in a column grid.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
- 'help' => 'http://portfoliotheme.org/widgets-bundle/team-members-widget-documentation/'
20
  ),
21
  array(),
22
  array(
16
  array(
17
  'description' => __('Create team members to display in a column grid.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/team-members-widget-documentation/'
20
  ),
21
  array(),
22
  array(
includes/widgets/lsow-testimonials-slider-widget/css/style.css CHANGED
@@ -7,7 +7,8 @@ html {
7
  .lsow-testimonials-slider {
8
  position: relative; }
9
  .lsow-testimonials-slider.lsow-container {
10
- max-width: 900px; }
 
11
  .lsow-testimonials-slider .lsow-testimonial-text {
12
  text-align: center;
13
  max-width: 750px;
7
  .lsow-testimonials-slider {
8
  position: relative; }
9
  .lsow-testimonials-slider.lsow-container {
10
+ max-width: 900px;
11
+ margin: 0 auto; }
12
  .lsow-testimonials-slider .lsow-testimonial-text {
13
  text-align: center;
14
  max-width: 750px;
includes/widgets/lsow-testimonials-slider-widget/css/style.css.map CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "version": 3,
3
- "mappings": "AAGE,IAAK;EACH,UAAU,EAAE,UAAU;;AAItB,sBAEU;EACR,UAAU,EAAE,OAAO;;ACTzB,yBAA0B;EACxB,QAAQ,EAAE,QAAQ;EAClB,wCAAiB;IACf,SAAS,EAAE,KAAK;EAElB,gDAAuB;IACrB,UAAU,EAAE,MAAM;IAClB,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,WAAW;IACnB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,MAAM;IAClB,KAAK,EAAE,IAAI;IACX,8DAAgB;MACd,KAAK,EAAE,IAAI;IAEb,kDAAE;MACA,KAAK,EAAE,IAAI;MACX,SAAS,EAAE,IAAI;MACf,OAAO,EAAE,KAAK;MACd,aAAa,EAAE,IAAI;MACnB,UAAU,EAAE,IAAI;MAChB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,gEAAgB;QACd,KAAK,EAAE,IAAI;EAIjB,gDAAuB;IACrB,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,MAAM;IACd,oEAAoB;MAClB,OAAO,EAAE,UAAU;MACnB,wEAAI;QACF,SAAS,EAAE,IAAI;QACf,aAAa,EAAE,GAAG;QAClB,YAAY,EAAE,IAAI;IAGtB,2DAAW;MACT,OAAO,EAAE,UAAU;MACnB,cAAc,EAAE,MAAM;MACtB,KAAK,EAAE,IAAI;MACX,yEAAgB;QACd,KAAK,EAAE,OAAO;MAEhB,6EAAkB;QC0DtB,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,GAAG;QACnB,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,IAAI;QACX,cAAc,EAAE,SAAS;QACzB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,IAAI;QDhEb,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,GAAG;QAClB,2FAAgB;UACd,KAAK,EAAE,OAAO",
4
  "sources": ["../../../../../../bower_components/neat/app/assets/stylesheets/grid/_box-sizing.scss","style.scss","../../../../assets/css/_lsow-lib.scss"],
5
  "names": [],
6
  "file": "style.css"
1
  {
2
  "version": 3,
3
+ "mappings": "AAGE,IAAK;EACH,UAAU,EAAE,UAAU;;AAItB,sBAEU;EACR,UAAU,EAAE,OAAO;;ACTzB,yBAA0B;EACxB,QAAQ,EAAE,QAAQ;EAClB,wCAAiB;IACf,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,MAAM;EAEhB,gDAAuB;IACrB,UAAU,EAAE,MAAM;IAClB,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,WAAW;IACnB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,MAAM;IAClB,KAAK,EAAE,IAAI;IACX,8DAAgB;MACd,KAAK,EAAE,IAAI;IAEb,kDAAE;MACA,KAAK,EAAE,IAAI;MACX,SAAS,EAAE,IAAI;MACf,OAAO,EAAE,KAAK;MACd,aAAa,EAAE,IAAI;MACnB,UAAU,EAAE,IAAI;MAChB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,gEAAgB;QACd,KAAK,EAAE,IAAI;EAIjB,gDAAuB;IACrB,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,MAAM;IACd,oEAAoB;MAClB,OAAO,EAAE,UAAU;MACnB,wEAAI;QACF,SAAS,EAAE,IAAI;QACf,aAAa,EAAE,GAAG;QAClB,YAAY,EAAE,IAAI;IAGtB,2DAAW;MACT,OAAO,EAAE,UAAU;MACnB,cAAc,EAAE,MAAM;MACtB,KAAK,EAAE,IAAI;MACX,yEAAgB;QACd,KAAK,EAAE,OAAO;MAEhB,6EAAkB;QCyDtB,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,GAAG;QACnB,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,IAAI;QACX,cAAc,EAAE,SAAS;QACzB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,IAAI;QD/Db,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,GAAG;QAClB,2FAAgB;UACd,KAAK,EAAE,OAAO",
4
  "sources": ["../../../../../../bower_components/neat/app/assets/stylesheets/grid/_box-sizing.scss","style.scss","../../../../assets/css/_lsow-lib.scss"],
5
  "names": [],
6
  "file": "style.css"
includes/widgets/lsow-testimonials-slider-widget/css/style.scss CHANGED
@@ -4,6 +4,7 @@
4
  position: relative;
5
  &.lsow-container {
6
  max-width: 900px;
 
7
  }
8
  .lsow-testimonial-text {
9
  text-align: center;
4
  position: relative;
5
  &.lsow-container {
6
  max-width: 900px;
7
+ margin: 0 auto;
8
  }
9
  .lsow-testimonial-text {
10
  text-align: center;
includes/widgets/lsow-testimonials-widget/lsow-testimonials-widget.php CHANGED
@@ -16,7 +16,7 @@ class LSOW_Testimonials_Widget extends SiteOrigin_Widget {
16
  array(
17
  'description' => __('Display testimonials in a responsive multi-column grid.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
- 'help' => 'http://portfoliotheme.org/widgets-bundle/testimonials-widget-documentation/'
20
  ),
21
  array(),
22
  array(
16
  array(
17
  'description' => __('Display testimonials in a responsive multi-column grid.', 'livemesh-so-widgets'),
18
  'panels_icon' => 'dashicons dashicons-minus',
19
+ 'help' => 'http://portfoliotheme.org/siteorigin-widgets/testimonials-widget-documentation/'
20
  ),
21
  array(),
22
  array(
livemesh-so-widgets.php CHANGED
@@ -7,7 +7,7 @@
7
  * Author URI: http://portfoliotheme.org/
8
  * License: GPL3
9
  * License URI: https://www.gnu.org/licenses/gpl-3.0.txt
10
- * Version: 1.2
11
  * Text Domain: livemesh-so-widgets
12
  * Domain Path: languages
13
  *
@@ -92,7 +92,7 @@ if (!class_exists('Livemesh_SiteOrigin_Widgets')) :
92
 
93
  // Plugin version
94
  if (!defined('LSOW_VERSION')) {
95
- define('LSOW_VERSION', '1.0');
96
  }
97
 
98
  // Plugin Folder Path
7
  * Author URI: http://portfoliotheme.org/
8
  * License: GPL3
9
  * License URI: https://www.gnu.org/licenses/gpl-3.0.txt
10
+ * Version: 1.3
11
  * Text Domain: livemesh-so-widgets
12
  * Domain Path: languages
13
  *
92
 
93
  // Plugin version
94
  if (!defined('LSOW_VERSION')) {
95
+ define('LSOW_VERSION', '1.3');
96
  }
97
 
98
  // Plugin Folder Path
readme.txt CHANGED
@@ -4,8 +4,8 @@ Plugin URI: http://portfoliotheme.org/siteorigin-widgets
4
  Contributors: livemesh
5
  Tags: widget, siteorigin, siteorigin widgets bundle, siteorigin page builder, siteorigin addons, video background, portfolio, carousel, shortcode, tabs, admin, plugin, page
6
  Requires at least: 4.1
7
- Tested up to: 4.4.2
8
- Stable Tag: 1.2
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -42,6 +42,8 @@ The plugin comes with the following widgets. <strong>Almost all of the widgets c
42
  <li>Grid widget that displays portfolio or blog entries in a nice responsive grid. Masonry and packed options are supported.</li>
43
  <li>Client List widget to showcase the clients that you have handled.</li>
44
  <li>Pricing Plans to help get more sales.</li>
 
 
45
  </ul>
46
 
47
  <strong>Important: You must activate widgets you need to use from Plugins &gt; SiteOrigin Widgets so that they can be available to use.</strong>.
@@ -92,6 +94,14 @@ Pls install and activate Jetpack plugin, activate the Custom Post Types module a
92
 
93
  == Changelog ==
94
 
 
 
 
 
 
 
 
 
95
  = 1.2 =
96
  * New widgets - Responsive Tabs and Accordion of variety of styles
97
  * New services widget style
@@ -106,5 +116,5 @@ Pls install and activate Jetpack plugin, activate the Custom Post Types module a
106
  * Display hover information for entries in carousel
107
  * Fixed some bugs and design improvements
108
 
109
- = 1.0: =
110
  * Initial release.
4
  Contributors: livemesh
5
  Tags: widget, siteorigin, siteorigin widgets bundle, siteorigin page builder, siteorigin addons, video background, portfolio, carousel, shortcode, tabs, admin, plugin, page
6
  Requires at least: 4.1
7
+ Tested up to: 4.5.2
8
+ Stable Tag: 1.3
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
42
  <li>Grid widget that displays portfolio or blog entries in a nice responsive grid. Masonry and packed options are supported.</li>
43
  <li>Client List widget to showcase the clients that you have handled.</li>
44
  <li>Pricing Plans to help get more sales.</li>
45
+ <li>Flat style buttons with rich set of customization options.</li>
46
+ <li>Icon list widget that lets you use either images or icon fonts to create custom social icons list, capture payment options etc.</li>
47
  </ul>
48
 
49
  <strong>Important: You must activate widgets you need to use from Plugins &gt; SiteOrigin Widgets so that they can be available to use.</strong>.
94
 
95
  == Changelog ==
96
 
97
+ = 1.3 =
98
+ * New widgets - Flat style buttons and Icon List widget
99
+ * New fields - Datepicker and Timepicker for developing SiteOrigin widgets
100
+ * Fixed - Some themes squeeze the images in a Livemesh grid or Team widget.
101
+ * Fixed - Couple of widgets fail to display the post links.
102
+ * Fixed - The testimonials slider not aligned to the center
103
+ * Some styling improvements and fixes
104
+
105
  = 1.2 =
106
  * New widgets - Responsive Tabs and Accordion of variety of styles
107
  * New services widget style
116
  * Display hover information for entries in carousel
117
  * Fixed some bugs and design improvements
118
 
119
+ = 1.0 =
120
  * Initial release.