NextGEN Gallery – WordPress Gallery Plugin - Version 3.4.7

Version Description

Download this release

Release Info

Developer photocrati
Plugin Icon 128x128 NextGEN Gallery – WordPress Gallery Plugin
Version 3.4.7
Comparing to
See all releases

Code changes from version 3.3.20 to 3.4.7

Files changed (150) hide show
  1. changelog.txt +6 -0
  2. composer.json +2 -1
  3. composer.lock +72 -10
  4. nggallery.php +46 -6
  5. products/photocrati_nextgen/modules/ajax/module.ajax.php +1 -1
  6. products/photocrati_nextgen/modules/attach_to_post/module.attach_to_post.php +2 -2
  7. products/photocrati_nextgen/modules/attach_to_post/package.module.attach_to_post.php +1 -1
  8. products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.css +9 -30
  9. products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.js +7 -7
  10. products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.min.css +1 -1
  11. products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.min.js +1 -1
  12. products/photocrati_nextgen/modules/attach_to_post/static/base64.min.js +1 -1
  13. products/photocrati_nextgen/modules/attach_to_post/static/display_tab.js +2 -2
  14. products/photocrati_nextgen/modules/attach_to_post/static/display_tab.min.js +1 -1
  15. products/photocrati_nextgen/modules/attach_to_post/static/iframely.css +0 -14
  16. products/photocrati_nextgen/modules/attach_to_post/static/iframely.js +6 -1
  17. products/photocrati_nextgen/modules/attach_to_post/static/iframely.min.css +1 -1
  18. products/photocrati_nextgen/modules/attach_to_post/static/iframely.min.js +1 -1
  19. products/photocrati_nextgen/modules/attach_to_post/static/igw.min.js +1 -1
  20. products/photocrati_nextgen/modules/attach_to_post/static/ngg_attach_to_post_tinymce_plugin.min.js +1 -1
  21. products/photocrati_nextgen/modules/attach_to_post/static/ngg_tabs.js +0 -14
  22. products/photocrati_nextgen/modules/attach_to_post/static/ngg_tabs.min.js +1 -1
  23. products/photocrati_nextgen/modules/dynamic_thumbnails/module.dynamic_thumbnails.php +1 -1
  24. products/photocrati_nextgen/modules/frame_communication/module.frame_communication.php +1 -1
  25. products/photocrati_nextgen/modules/frame_communication/static/frame_event_publisher.min.js +1 -1
  26. products/photocrati_nextgen/modules/i18n/lang/nggallery.pot +872 -508
  27. products/photocrati_nextgen/modules/i18n/module.i18n.php +1 -1
  28. products/photocrati_nextgen/modules/imagify/module.imagify.php +1 -1
  29. products/photocrati_nextgen/modules/lightbox/module.lightbox.php +1 -1
  30. products/photocrati_nextgen/modules/lightbox/static/fancybox/jquery.easing-1.3.pack.min.js +1 -1
  31. products/photocrati_nextgen/modules/lightbox/static/fancybox/jquery.fancybox-1.3.4.js +33 -27
  32. products/photocrati_nextgen/modules/lightbox/static/fancybox/jquery.fancybox-1.3.4.min.js +1 -1
  33. products/photocrati_nextgen/modules/lightbox/static/fancybox/jquery.fancybox-1.3.4.pack.js +1 -46
  34. products/photocrati_nextgen/modules/lightbox/static/fancybox/jquery.fancybox-1.3.4.pack.min.js +1 -1
  35. products/photocrati_nextgen/modules/lightbox/static/fancybox/jquery.mousewheel-3.0.4.pack.js +1 -1
  36. products/photocrati_nextgen/modules/lightbox/static/fancybox/jquery.mousewheel-3.0.4.pack.min.js +1 -1
  37. products/photocrati_nextgen/modules/lightbox/static/fancybox/nextgen_fancybox_init.min.js +1 -1
  38. products/photocrati_nextgen/modules/lightbox/static/lightbox_context.min.js +1 -1
  39. products/photocrati_nextgen/modules/lightbox/static/shutter/nextgen_shutter.js +4 -1
  40. products/photocrati_nextgen/modules/lightbox/static/shutter/nextgen_shutter.min.js +1 -1
  41. products/photocrati_nextgen/modules/lightbox/static/shutter/shutter.js +7 -1
  42. products/photocrati_nextgen/modules/lightbox/static/shutter/shutter.min.js +1 -1
  43. products/photocrati_nextgen/modules/lightbox/static/shutter_reloaded/nextgen_shutter_reloaded.min.js +1 -1
  44. products/photocrati_nextgen/modules/lightbox/static/shutter_reloaded/shutter.min.js +1 -1
  45. products/photocrati_nextgen/modules/lightbox/static/simplelightbox/nextgen_simple_lightbox_init.min.js +1 -1
  46. products/photocrati_nextgen/modules/lightbox/static/thickbox/nextgen_thickbox_init.min.js +1 -1
  47. products/photocrati_nextgen/modules/marketing/module.marketing.php +3 -3
  48. products/photocrati_nextgen/modules/marketing/package.module.marketing.php +3 -3
  49. products/photocrati_nextgen/modules/marketing/templates/igw_promo.php +1 -1
  50. products/photocrati_nextgen/modules/mvc/module.mvc.php +1 -1
  51. products/photocrati_nextgen/modules/mvc/package.module.mvc.php +1 -1
  52. products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.php +35 -41
  53. products/photocrati_nextgen/modules/nextgen_addgallery_page/package.module.nextgen_addgallery_page.php +52 -95
  54. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/jquery.filetree/jquery.filetree.js +2 -2
  55. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/jquery.filetree/jquery.filetree.min.js +1 -1
  56. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.js +9 -7
  57. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.min.js +1 -1
  58. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/Moxie.xap +0 -0
  59. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ar.js +0 -2
  60. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ar.min.js +0 -1
  61. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/bs.js +0 -2
  62. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/bs.min.js +0 -1
  63. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ca.js +0 -2
  64. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ca.min.js +0 -1
  65. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/cs.js +0 -2
  66. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/cs.min.js +0 -1
  67. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/cy.js +0 -2
  68. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/cy.min.js +0 -1
  69. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/da.js +0 -2
  70. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/da.min.js +0 -1
  71. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/de.js +0 -2
  72. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/de.min.js +0 -1
  73. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/el.js +0 -2
  74. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/el.min.js +0 -1
  75. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/en.js +0 -2
  76. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/en.min.js +0 -1
  77. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/es.js +0 -2
  78. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/es.min.js +0 -1
  79. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/et.js +0 -2
  80. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/et.min.js +0 -1
  81. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/fa.js +0 -2
  82. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/fa.min.js +0 -1
  83. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/fi.js +0 -2
  84. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/fi.min.js +0 -1
  85. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/fr.js +0 -2
  86. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/fr.min.js +0 -1
  87. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/he.js +0 -2
  88. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/he.min.js +0 -1
  89. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/hr.js +0 -2
  90. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/hr.min.js +0 -1
  91. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/hu.js +0 -2
  92. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/hu.min.js +0 -1
  93. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/hy.js +0 -2
  94. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/hy.min.js +0 -1
  95. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/id.js +0 -2
  96. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/id.min.js +0 -1
  97. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/it.js +0 -2
  98. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/it.min.js +0 -1
  99. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ja.js +0 -2
  100. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ja.min.js +0 -1
  101. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ka.js +0 -2
  102. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ka.min.js +0 -1
  103. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/kk.js +0 -2
  104. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/kk.min.js +0 -1
  105. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ko.js +0 -2
  106. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ko.min.js +0 -1
  107. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/lt.js +0 -2
  108. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/lt.min.js +0 -1
  109. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/lv.js +0 -2
  110. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/lv.min.js +0 -1
  111. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/nl.js +0 -2
  112. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/nl.min.js +0 -1
  113. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/pl.js +0 -2
  114. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/pl.min.js +0 -1
  115. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/pt_BR.js +0 -2
  116. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/pt_BR.min.js +0 -1
  117. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ro.js +0 -2
  118. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ro.min.js +0 -1
  119. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ru.js +0 -2
  120. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ru.min.js +0 -1
  121. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/sk.js +0 -2
  122. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/sk.min.js +0 -1
  123. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/sr.js +0 -2
  124. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/sr.min.js +0 -1
  125. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/sv.js +0 -2
  126. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/sv.min.js +0 -1
  127. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/th_TH.js +0 -2
  128. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/th_TH.min.js +0 -1
  129. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/tr.js +0 -2
  130. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/tr.min.js +0 -1
  131. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/uk_UA.js +0 -2
  132. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/uk_UA.min.js +0 -1
  133. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/zh_CN.js +0 -2
  134. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/zh_CN.min.js +0 -1
  135. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/zh_TW.js +0 -2
  136. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/zh_TW.min.js +0 -1
  137. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/css/jquery.plupload.queue.css +0 -181
  138. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/css/jquery.plupload.queue.min.css +0 -1
  139. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/backgrounds.gif +0 -0
  140. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/buttons-disabled.png +0 -0
  141. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/buttons.png +0 -0
  142. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/delete.gif +0 -0
  143. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/done.gif +0 -0
  144. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/error.gif +0 -0
  145. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/throbber.gif +0 -0
  146. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/transp50.png +0 -0
  147. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/jquery.plupload.queue.js +0 -425
  148. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/jquery.plupload.queue.min.js +0 -1
  149. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/moxie.js +0 -10684
  150. products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/moxie.min.js +0 -4
changelog.txt CHANGED
@@ -1,6 +1,12 @@
1
  NextGEN Gallery
2
  by Imagely
3
 
 
 
 
 
 
 
4
  = V3.3.20 - 10.13.2020 =
5
  * NEW: PHP 5.6 is the minimum supported PHP version
6
  * NEW: WordPress 5.2 is the minimum support PHP version
1
  NextGEN Gallery
2
  by Imagely
3
 
4
+ = v3.4.7 - 11.25.2020 =
5
+ * NEW: Replaced plupload with a new uppy.js based uploader for faster uploading
6
+ * Changed: Updated select2 and Gritter to the latest versions
7
+ * Changed: Several changes have been made for future jQuery 3.5 compatibility
8
+ * Fixed: Gutenberg Block and Featured Image features on wordpress.com hosting
9
+
10
  = V3.3.20 - 10.13.2020 =
11
  * NEW: PHP 5.6 is the minimum supported PHP version
12
  * NEW: WordPress 5.2 is the minimum support PHP version
composer.json CHANGED
@@ -11,9 +11,10 @@
11
  {"packagist.org": false}
12
  ],
13
  "require": {
14
- "imagely/pope-framework": "v0.16",
15
  "ezyang/htmlpurifier": "^4.13"
16
  },
17
  "require-dev": {
 
18
  }
19
  }
11
  {"packagist.org": false}
12
  ],
13
  "require": {
14
+ "imagely/pope-framework": "v0.17",
15
  "ezyang/htmlpurifier": "^4.13"
16
  },
17
  "require-dev": {
18
+ "nikic/php-parser": "^4.3"
19
  }
20
  }
composer.lock CHANGED
@@ -4,7 +4,7 @@
4
  "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
  "This file is @generated automatically"
6
  ],
7
- "content-hash": "053b848d6bbaa7c266ec767c260588a8",
8
  "packages": [
9
  {
10
  "name": "ezyang/htmlpurifier",
@@ -64,16 +64,16 @@
64
  },
65
  {
66
  "name": "imagely/pope-framework",
67
- "version": "v0.16",
68
  "source": {
69
  "type": "git",
70
  "url": "https://github.com/imagely/pope-framework.git",
71
- "reference": "a14bdc1f5153664770df00d53577a9954f1e691c"
72
  },
73
  "dist": {
74
  "type": "zip",
75
- "url": "https://api.github.com/repos/imagely/pope-framework/zipball/a14bdc1f5153664770df00d53577a9954f1e691c",
76
- "reference": "a14bdc1f5153664770df00d53577a9954f1e691c",
77
  "shasum": "",
78
  "mirrors": [
79
  {
@@ -100,19 +100,81 @@
100
  ],
101
  "description": "A component framework inspired by Zope 3. Pope is \"PHP's Zope\".",
102
  "support": {
103
- "source": "https://github.com/imagely/pope-framework/tree/v0.16",
104
  "issues": "https://github.com/imagely/pope-framework/issues"
105
  },
106
- "time": "2020-06-11T20:23:55+00:00"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  }
108
  ],
109
- "packages-dev": [],
110
  "aliases": [],
111
  "minimum-stability": "stable",
112
  "stability-flags": [],
113
  "prefer-stable": false,
114
  "prefer-lowest": false,
115
  "platform": [],
116
- "platform-dev": [],
117
- "plugin-api-version": "1.1.0"
118
  }
4
  "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
  "This file is @generated automatically"
6
  ],
7
+ "content-hash": "956135bbaec31c8fc7a076fffe733ce3",
8
  "packages": [
9
  {
10
  "name": "ezyang/htmlpurifier",
64
  },
65
  {
66
  "name": "imagely/pope-framework",
67
+ "version": "v0.17",
68
  "source": {
69
  "type": "git",
70
  "url": "https://github.com/imagely/pope-framework.git",
71
+ "reference": "13da4d47779a91fbf07a68062e64974eb1427ef2"
72
  },
73
  "dist": {
74
  "type": "zip",
75
+ "url": "https://api.github.com/repos/imagely/pope-framework/zipball/13da4d47779a91fbf07a68062e64974eb1427ef2",
76
+ "reference": "13da4d47779a91fbf07a68062e64974eb1427ef2",
77
  "shasum": "",
78
  "mirrors": [
79
  {
100
  ],
101
  "description": "A component framework inspired by Zope 3. Pope is \"PHP's Zope\".",
102
  "support": {
103
+ "source": "https://github.com/imagely/pope-framework/tree/v0.17",
104
  "issues": "https://github.com/imagely/pope-framework/issues"
105
  },
106
+ "time": "2020-10-22T19:43:52+00:00"
107
+ }
108
+ ],
109
+ "packages-dev": [
110
+ {
111
+ "name": "nikic/php-parser",
112
+ "version": "v4.10.2",
113
+ "source": {
114
+ "type": "git",
115
+ "url": "https://github.com/nikic/PHP-Parser.git",
116
+ "reference": "658f1be311a230e0907f5dfe0213742aff0596de"
117
+ },
118
+ "dist": {
119
+ "type": "zip",
120
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/658f1be311a230e0907f5dfe0213742aff0596de",
121
+ "reference": "658f1be311a230e0907f5dfe0213742aff0596de",
122
+ "shasum": "",
123
+ "mirrors": [
124
+ {
125
+ "url": "https://repo.packagist.com/imagely/dists/%package%/%version%/r%reference%.%type%",
126
+ "preferred": true
127
+ }
128
+ ]
129
+ },
130
+ "require": {
131
+ "ext-tokenizer": "*",
132
+ "php": ">=7.0"
133
+ },
134
+ "require-dev": {
135
+ "ircmaxell/php-yacc": "^0.0.7",
136
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
137
+ },
138
+ "bin": [
139
+ "bin/php-parse"
140
+ ],
141
+ "type": "library",
142
+ "extra": {
143
+ "branch-alias": {
144
+ "dev-master": "4.9-dev"
145
+ }
146
+ },
147
+ "autoload": {
148
+ "psr-4": {
149
+ "PhpParser\\": "lib/PhpParser"
150
+ }
151
+ },
152
+ "notification-url": "https://repo.packagist.com/imagely/downloads/",
153
+ "license": [
154
+ "BSD-3-Clause"
155
+ ],
156
+ "authors": [
157
+ {
158
+ "name": "Nikita Popov"
159
+ }
160
+ ],
161
+ "description": "A PHP parser written in PHP",
162
+ "keywords": [
163
+ "parser",
164
+ "php"
165
+ ],
166
+ "support": {
167
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
168
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.2"
169
+ },
170
+ "time": "2020-09-26T10:30:38+00:00"
171
  }
172
  ],
 
173
  "aliases": [],
174
  "minimum-stability": "stable",
175
  "stability-flags": [],
176
  "prefer-stable": false,
177
  "prefer-lowest": false,
178
  "platform": [],
179
+ "platform-dev": []
 
180
  }
nggallery.php CHANGED
@@ -4,7 +4,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
4
  /**
5
  * Plugin Name: NextGEN Gallery
6
  * Description: The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 30 million downloads.
7
- * Version: 3.3.20
8
  * Author: Imagely
9
  * Plugin URI: https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/
10
  * Author URI: https://www.imagely.com
@@ -371,6 +371,45 @@ class C_NextGEN_Bootstrap
371
  echo '</p></div>';
372
  }
373
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
374
 
375
  /**
376
  * Registers hooks for the WordPress framework necessary for instantiating
@@ -414,13 +453,14 @@ class C_NextGEN_Bootstrap
414
  // NGG extension plugins should be loaded in a specific order
415
  add_action('shutdown', array(&$this, 'fix_loading_order'));
416
 
417
- // Display a warning if an compatible version of NextGEN Pro is installed alongside this
418
- // version of NextGEN Gallery
419
  if ($this->is_pro_incompatible()) {
420
- add_filter('http_request_args', array(&$this, 'fix_autoupdate_api_requests'), 10, 2);
421
- add_action('all_admin_notices', array(&$this, 'render_incompatibility_warning'));
422
  }
423
 
 
 
424
  add_filter('ngg_load_frontend_logic', array($this, 'disable_frontend_logic'), -10, 2);
425
 
426
  }
@@ -680,7 +720,7 @@ class C_NextGEN_Bootstrap
680
  define('NGG_PRODUCT_URL', path_join(str_replace("\\" , '/', NGG_PLUGIN_URL), 'products'));
681
  define('NGG_MODULE_URL', path_join(str_replace("\\", '/', NGG_PRODUCT_URL), 'photocrati_nextgen/modules'));
682
  define('NGG_PLUGIN_STARTED_AT', microtime());
683
- define('NGG_PLUGIN_VERSION', '3.3.20');
684
 
685
  define(
686
  'NGG_SCRIPT_VERSION',
4
  /**
5
  * Plugin Name: NextGEN Gallery
6
  * Description: The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 30 million downloads.
7
+ * Version: 3.4.7
8
  * Author: Imagely
9
  * Plugin URI: https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/
10
  * Author URI: https://www.imagely.com
371
  echo '</p></div>';
372
  }
373
 
374
+ public function render_jquery_wp_55_warning()
375
+ {
376
+ $render = false;
377
+ $account_msg = sprintf(__("Please download the latest version of NextGEN Pro from your <a href='%s' target='_blank'>account area</a>", 'nggallery'), 'https://www.imagely.com/account/');
378
+ if (preg_match("#photocrati#i", wp_get_theme()->get('Name'))) {
379
+ $account_msg = sprintf(__("Please download the latest version of NextGEN Pro from your <a href='%s' target='_blank'>account area</a>", 'nggallery'), 'https://members.photocrati.com/account/');
380
+ }
381
+ global $wp_version;
382
+
383
+ if (defined('NGG_PRO_PLUGIN_VERSION') && version_compare(NGG_PRO_PLUGIN_VERSION, '3.1') < 0)
384
+ {
385
+ $render = TRUE;
386
+
387
+ $message = __("Your version of NextGEN Pro is known to have some issues with NextGEN Gallery 3.4 and later.", 'nggallery');
388
+ }
389
+
390
+ if (defined('NGG_PLUS_PLUGIN_VERSION') && version_compare(NGG_PLUS_PLUGIN_VERSION, '1.7') < 0)
391
+ {
392
+ $render = TRUE;
393
+ $message = __("Your version of NextGEN Plus is known to have some issues with NextGEN 3.4 and later. Please update NextGEN Plus to version 1.7 or higher to ensure your site works correctly.", 'nggallery');
394
+ }
395
+
396
+ if (!$render)
397
+ return;
398
+
399
+ print '<div class="updated error"><p>';
400
+ print $message;
401
+ print ' ';
402
+ print $account_msg;
403
+
404
+ if ( version_compare( $wp_version, '5.5', '>=' ) && version_compare( $wp_version, '5.5.9', '<=') ) {
405
+ $note = __("NOTE: The autoupdater doesn't work on the version of WordPress you have installed.", 'ngallery');
406
+ print "<div style='font-weight: bold;'>";
407
+ print $note;
408
+ print "</div>";
409
+ }
410
+ print '</p></div>';
411
+ }
412
+
413
 
414
  /**
415
  * Registers hooks for the WordPress framework necessary for instantiating
453
  // NGG extension plugins should be loaded in a specific order
454
  add_action('shutdown', array(&$this, 'fix_loading_order'));
455
 
456
+ // Display a warning if an compatible version of NextGEN Pro is installed alongside this version of NextGEN Gallery
 
457
  if ($this->is_pro_incompatible()) {
458
+ add_filter('http_request_args', array($this, 'fix_autoupdate_api_requests'), 10, 2);
459
+ add_action('all_admin_notices', array($this, 'render_incompatibility_warning'));
460
  }
461
 
462
+ add_action('all_admin_notices', [$this, 'render_jquery_wp_55_warning']);
463
+
464
  add_filter('ngg_load_frontend_logic', array($this, 'disable_frontend_logic'), -10, 2);
465
 
466
  }
720
  define('NGG_PRODUCT_URL', path_join(str_replace("\\" , '/', NGG_PLUGIN_URL), 'products'));
721
  define('NGG_MODULE_URL', path_join(str_replace("\\", '/', NGG_PRODUCT_URL), 'photocrati_nextgen/modules'));
722
  define('NGG_PLUGIN_STARTED_AT', microtime());
723
+ define('NGG_PLUGIN_VERSION', '3.4.7');
724
 
725
  define(
726
  'NGG_SCRIPT_VERSION',
products/photocrati_nextgen/modules/ajax/module.ajax.php CHANGED
@@ -17,7 +17,7 @@ class M_Ajax extends C_Base_Module
17
  'photocrati-ajax',
18
  'AJAX',
19
  'Provides AJAX functionality',
20
- '3.3.11',
21
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
22
  'Imagely',
23
  'https://www.imagely.com'
17
  'photocrati-ajax',
18
  'AJAX',
19
  'Provides AJAX functionality',
20
+ '3.3.21',
21
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
22
  'Imagely',
23
  'https://www.imagely.com'
products/photocrati_nextgen/modules/attach_to_post/module.attach_to_post.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
  define('NGG_ATTACH_TO_POST_SLUG', 'nextgen-attach_to_post');
4
- define('NGG_ATTACH_TO_POST_VERSION', '3.3.7');
5
 
6
  class M_Attach_To_Post extends C_Base_Module
7
  {
@@ -287,7 +287,7 @@ class M_Attach_To_Post extends C_Base_Module
287
  $controller->index_action();
288
  }
289
 
290
- throw new E_Clean_Exit;
291
  }
292
  }
293
 
1
  <?php
2
 
3
  define('NGG_ATTACH_TO_POST_SLUG', 'nextgen-attach_to_post');
4
+ define('NGG_ATTACH_TO_POST_VERSION', '3.3.21');
5
 
6
  class M_Attach_To_Post extends C_Base_Module
7
  {
287
  $controller->index_action();
288
  }
289
 
290
+ exit();
291
  }
292
  }
293
 
products/photocrati_nextgen/modules/attach_to_post/package.module.attach_to_post.php CHANGED
@@ -641,7 +641,7 @@ class Mixin_Attach_To_Post extends Mixin
641
  // 'title' => __('Manage Tags', 'nggallery')
642
  // );
643
  // }
644
- return $retval;
645
  }
646
  /**
647
  * Renders a NextGen Gallery page in an iframe, suited for the attach to post
641
  // 'title' => __('Manage Tags', 'nggallery')
642
  // );
643
  // }
644
+ return apply_filters('ngg_attach_to_post_main_tabs', $retval);
645
  }
646
  /**
647
  * Renders a NextGen Gallery page in an iframe, suited for the attach to post
products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.css CHANGED
@@ -56,7 +56,7 @@ body {
56
  }
57
 
58
  #attach_to_post_tabs {
59
- border: 0px;
60
  background: none;
61
  height: 100%;
62
  overflow: hidden;
@@ -65,7 +65,6 @@ body {
65
  visibility: visible;
66
  }
67
 
68
- #attach_to_post_tabs
69
  #attach_to_post_tabs.ui-tabs-hide {
70
  display: block !important;
71
  visibility: hidden;
@@ -101,7 +100,7 @@ h3#choose_display {
101
  }
102
 
103
  #attach_to_post_tabs .ui-widget-header {
104
- border: 0px;
105
  border-bottom: 1px solid #dfdfdf;
106
  background: none;
107
  }
@@ -110,8 +109,8 @@ iframe {
110
  width: 100%;
111
  min-height: 100%;
112
  border: none;
113
- padding: 0px;
114
- margin: 0px;
115
  background: transparent;
116
  }
117
 
@@ -170,7 +169,6 @@ table {
170
  line-height: 60px;
171
  margin-bottom: 0;
172
  position: fixed;
173
- padding: 10px 25px 30px 10px;
174
  text-transform: uppercase;
175
  width: 220px;
176
  padding: 0;
@@ -197,7 +195,6 @@ table {
197
  display: block;
198
  height: auto;
199
  margin: 0;
200
- padding: 0;
201
  width: 100%;
202
  border-radius: 0;
203
  box-sizing: border-box;
@@ -211,24 +208,8 @@ table {
211
  outline: none;
212
  }
213
 
214
- /* The next couple of rules are all a workaround to disable the "Insert Into Page" tab just for iOS */
215
- /* TODO: consolidate when plupload is upgraded */
216
- #attach_to_post_tabs ul.ui-tabs-nav li:nth-of-type(1) {
217
- list-style: none;
218
- /*border-top: 1px solid #344a59;*/
219
- }
220
- #attach_to_post_tabs:not(.ngg_atp_ios_detected) ul.ui-tabs-nav li:nth-of-type(2) {
221
- list-style: none;
222
- }
223
-
224
- #attach_to_post_tabs:not(.ngg_atp_ios_detected) ul.ui-tabs-nav li:nth-of-type(1) a {
225
- display: list-item;
226
- }
227
- #attach_to_post_tabs ul.ui-tabs-nav li:nth-of-type(2) a {
228
- display: list-item;
229
- }
230
-
231
  #attach_to_post_tabs .ui-tabs-nav li a {
 
232
  color: #555;
233
  float: right;
234
  font-size: 13px;
@@ -288,7 +269,6 @@ table {
288
  border: none;
289
  color: black;
290
  display: inline;
291
- font-size: 14px;
292
  font-weight: 300;
293
  text-decoration: none;
294
  line-height: 25px;
@@ -394,7 +374,6 @@ table {
394
  font-weight: 600;
395
  cursor: pointer;
396
  font-family: Lato, sans-serif;
397
- letter-spacing: .5px;
398
  background: black;
399
  color: #fff;
400
  text-transform: uppercase;
@@ -608,7 +587,7 @@ h3#preview_tab {
608
  #preview_tab_content ul {
609
  list-style-type: none;
610
  display: block;
611
- padding: 0px;
612
  position: relative;
613
  margin-top: 20px;
614
  }
@@ -641,7 +620,7 @@ h3#preview_tab {
641
  }
642
 
643
  #preview_tab_content .image_container img {
644
- border: 0px;
645
  }
646
 
647
  #preview_tab_content #entity_list li{
@@ -670,7 +649,7 @@ h3#preview_tab {
670
  font-size: 0.8em;
671
  position: absolute;
672
  bottom: 0.2em;
673
- left: 0px;
674
  width: 100%;
675
  padding: 5px 0;
676
  }
@@ -691,7 +670,7 @@ h3#preview_tab {
691
  }
692
  #preview_tab_content .header_row .separator {
693
  display: inline-block;
694
- margin: 0px 5px;
695
  }
696
 
697
  #preview_tab_content .header_row .selected {
56
  }
57
 
58
  #attach_to_post_tabs {
59
+ border: 0;
60
  background: none;
61
  height: 100%;
62
  overflow: hidden;
65
  visibility: visible;
66
  }
67
 
 
68
  #attach_to_post_tabs.ui-tabs-hide {
69
  display: block !important;
70
  visibility: hidden;
100
  }
101
 
102
  #attach_to_post_tabs .ui-widget-header {
103
+ border: 0;
104
  border-bottom: 1px solid #dfdfdf;
105
  background: none;
106
  }
109
  width: 100%;
110
  min-height: 100%;
111
  border: none;
112
+ padding: 0;
113
+ margin: 0;
114
  background: transparent;
115
  }
116
 
169
  line-height: 60px;
170
  margin-bottom: 0;
171
  position: fixed;
 
172
  text-transform: uppercase;
173
  width: 220px;
174
  padding: 0;
195
  display: block;
196
  height: auto;
197
  margin: 0;
 
198
  width: 100%;
199
  border-radius: 0;
200
  box-sizing: border-box;
208
  outline: none;
209
  }
210
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
  #attach_to_post_tabs .ui-tabs-nav li a {
212
+ display: list-item;
213
  color: #555;
214
  float: right;
215
  font-size: 13px;
269
  border: none;
270
  color: black;
271
  display: inline;
 
272
  font-weight: 300;
273
  text-decoration: none;
274
  line-height: 25px;
374
  font-weight: 600;
375
  cursor: pointer;
376
  font-family: Lato, sans-serif;
 
377
  background: black;
378
  color: #fff;
379
  text-transform: uppercase;
587
  #preview_tab_content ul {
588
  list-style-type: none;
589
  display: block;
590
+ padding: 0;
591
  position: relative;
592
  margin-top: 20px;
593
  }
620
  }
621
 
622
  #preview_tab_content .image_container img {
623
+ border: 0;
624
  }
625
 
626
  #preview_tab_content #entity_list li{
649
  font-size: 0.8em;
650
  position: absolute;
651
  bottom: 0.2em;
652
+ left: 0;
653
  width: 100%;
654
  padding: 5px 0;
655
  }
670
  }
671
  #preview_tab_content .header_row .separator {
672
  display: inline-block;
673
+ margin: 0 5px;
674
  }
675
 
676
  #preview_tab_content .header_row .selected {
products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.js CHANGED
@@ -90,7 +90,7 @@ function insert_into_editor(snippet, ref_or_id) {
90
 
91
  //IE support
92
  if (document.selection) {
93
- myField.focus();
94
  sel = document.selection.createRange();
95
  sel.text = myValue;
96
  } else if (myField.selectionStart || myField.selectionStart === '0') {
@@ -187,13 +187,13 @@ jQuery(function($) {
187
 
188
  // If the active display tab is clicked, then we assume that the user
189
  // wants to display the original tab content
190
- $('.ui-tabs-nav a').click(function(e) {
191
 
192
  /* Add color to the active link */
193
  $('.ui-tabs-nav a').removeClass("active_tab");
194
  $(this).addClass("active_tab");
195
 
196
- var element = e.target ? e.target : e.srcElement;
197
 
198
  // If the accordion tab is used to display an iframe, ensure when
199
  // clicked that the original iframe content is always displayed
@@ -208,7 +208,7 @@ jQuery(function($) {
208
  });
209
 
210
  // Close the window when the escape key is pressed
211
- $(this).keydown(function(e) {
212
  if (e.keyCode === 27) {
213
  close_attach_to_post_window();
214
  }
@@ -224,20 +224,20 @@ jQuery(function($) {
224
  });
225
 
226
  /* Open and close IGW video tutorial */
227
- $('#displayed_tab .ngg_igw_video_open').click( function(e) {
228
  $('#displayed_tab .ngg_igw_video_inner').append('<iframe class="ngg_igw_video_iframe" width="1050" height="590" src="https://www.youtube.com/embed/mNEnY23i9DE?rel=0" frameborder="0" allowfullscreen></iframe>');
229
  $('#displayed_tab .ngg_igw_video_inner').css("display", "block");
230
  $('#displayed_tab .ngg_igw_video_open').css("display", "none");
231
  });
232
 
233
- $('#displayed_tab .ngg_igw_video_close').click( function(e) {
234
  $('#displayed_tab .ngg_igw_video_iframe').remove();
235
  $('#displayed_tab .ngg_igw_video_inner').css("display", "none");
236
  $('#displayed_tab .ngg_igw_video_open').css("display", "block");
237
  });
238
 
239
  /* Show Pro gallery promo only on Choose Display tab */
240
- $('.ngg_page_content_menu a').click( function(e) {
241
 
242
  var id = $(this).attr('data-id');
243
  if (id == "choose_display") {
90
 
91
  //IE support
92
  if (document.selection) {
93
+ myField.trigger('focus');
94
  sel = document.selection.createRange();
95
  sel.text = myValue;
96
  } else if (myField.selectionStart || myField.selectionStart === '0') {
187
 
188
  // If the active display tab is clicked, then we assume that the user
189
  // wants to display the original tab content
190
+ $('.ui-tabs-nav a').on('click', function(e) {
191
 
192
  /* Add color to the active link */
193
  $('.ui-tabs-nav a').removeClass("active_tab");
194
  $(this).addClass("active_tab");
195
 
196
+ var element = e.target;
197
 
198
  // If the accordion tab is used to display an iframe, ensure when
199
  // clicked that the original iframe content is always displayed
208
  });
209
 
210
  // Close the window when the escape key is pressed
211
+ $(this).on('keydown', function(e) {
212
  if (e.keyCode === 27) {
213
  close_attach_to_post_window();
214
  }
224
  });
225
 
226
  /* Open and close IGW video tutorial */
227
+ $('#displayed_tab .ngg_igw_video_open').on('click', function(e) {
228
  $('#displayed_tab .ngg_igw_video_inner').append('<iframe class="ngg_igw_video_iframe" width="1050" height="590" src="https://www.youtube.com/embed/mNEnY23i9DE?rel=0" frameborder="0" allowfullscreen></iframe>');
229
  $('#displayed_tab .ngg_igw_video_inner').css("display", "block");
230
  $('#displayed_tab .ngg_igw_video_open').css("display", "none");
231
  });
232
 
233
+ $('#displayed_tab .ngg_igw_video_close').on('click', function(e) {
234
  $('#displayed_tab .ngg_igw_video_iframe').remove();
235
  $('#displayed_tab .ngg_igw_video_inner').css("display", "none");
236
  $('#displayed_tab .ngg_igw_video_open').css("display", "block");
237
  });
238
 
239
  /* Show Pro gallery promo only on Choose Display tab */
240
+ $('.ngg_page_content_menu a').on('click', function(e) {
241
 
242
  var id = $(this).attr('data-id');
243
  if (id == "choose_display") {
products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.min.css CHANGED
@@ -1 +1 @@
1
- .ui-helper-reset,body,html{font-size:13px}body,html{width:100%!important;height:100%!important;padding:0!important;margin:0!important;max-width:100%!important;overflow:hidden}body{position:absolute;visibility:hidden;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;height:100%}.entity_errors{color:red}.entity_errors ul{margin-left:30px}.entity_errors ul li{list-style-type:disc}#attach_to_post_tabs{border:0;background:0 0;height:100%;overflow:hidden;padding:0;position:relative;visibility:visible}#attach_to_post_tabs #attach_to_post_tabs.ui-tabs-hide{display:block!important;visibility:hidden;position:absolute;top:-5000px}#attach_to_post_tabs h3{text-transform:uppercase;color:#000;margin-top:0;letter-spacing:2px;font-size:18px;font-weight:900}h3#choose_display{margin-bottom:24px}#attach_to_post_tabs .main_menu_tab{padding:0;position:absolute;left:220px;right:0;top:0;bottom:0}#attach_to_post_tabs.ngg_atp_ios_detected{overflow-y:scroll;-webkit-overflow-scrolling:touch}#attach_to_post_tabs .ui-widget-header{border:0;border-bottom:1px solid #dfdfdf;background:0 0}iframe{width:100%;min-height:100%;border:none;padding:0;margin:0;background:0 0}.chrome_70_hack_frames{z-index:100000000!important}.chrome_70_hack_noframes{z-index:0!important}.clear{clear:both;float:none}table{font-size:13px}.select2-search input{width:100%!important}.select2-result-label{white-space:nowrap}.select2-results{font-family:'segoe ui',Arial,sans-serif;font-size:13px}.select2-container a{color:#444!important}#ngg_page_content .ngg_page_content_main .select2-container{width:100%!important;max-width:500px!important}#attach_to_post_tabs .ui-tabs-icon{box-sizing:border-box;color:#fff;font-family:Lato,sans-serif;float:none;font-size:20px;font-weight:700;height:100%;letter-spacing:1px;line-height:60px;margin-bottom:0;position:fixed;text-transform:uppercase;width:220px;padding:0}#attach_to_post_tabs img.attach_to_post_logo{height:80px;padding:50px 0 30px;float:right;margin-right:26px}#attach_to_post_tabs .ui-tabs-nav{border:none;background:0 0;padding:0;margin-top:110px;list-style:none}#attach_to_post_tabs .ui-tabs-nav li{background:0 0;border:none;display:block;height:auto;margin:0;width:100%;border-radius:0;box-sizing:border-box;padding:24px 30px 24px 20px}#attach_to_post_tabs .ui-tabs-nav li.active,#attach_to_post_tabs .ui-tabs-nav li.ui-state-active,#attach_to_post_tabs .ui-tabs-nav li.ui-state-focus,#attach_to_post_tabs .ui-tabs-nav li:focus{outline:0}#attach_to_post_tabs ul.ui-tabs-nav li:nth-of-type(1),#attach_to_post_tabs:not(.ngg_atp_ios_detected) ul.ui-tabs-nav li:nth-of-type(2){list-style:none}#attach_to_post_tabs ul.ui-tabs-nav li:nth-of-type(2) a,#attach_to_post_tabs:not(.ngg_atp_ios_detected) ul.ui-tabs-nav li:nth-of-type(1) a{display:list-item}#attach_to_post_tabs .ui-tabs-nav li a{color:#555;float:right;font-size:13px;font-weight:400;font-family:lato,sans-serif;letter-spacing:1.5px;line-height:1;text-transform:uppercase;padding:0!important}#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active{border-left:6px solid #9dbd1b}#attach_to_post_tabs .ui-tabs-nav li.ui-state-disabled a,#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active a,#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:pointer}#attach_to_post_tabs .ui-tabs-nav li a.active_tab{font-weight:800;color:#000}#displayed_tab.main_menu_tab{overflow-y:scroll;overflow-x:hidden}#displayed_tab #ngg_page_content{margin:0;width:100%}#displayed_tab #attach_to_post_tabs .ngg_page_content_header{display:none}#displayed_tab #ngg_page_content .ngg_page_content_menu{background:0 0;border:none;padding:0 20px 10px 27px;float:none;height:25px;margin-top:0;width:auto;position:relative;top:100px}#displayed_tab #ngg_page_content .ngg_page_content_menu a,#displayed_tab #ngg_page_content .ngg_page_content_menu a:active{border:none;color:#000;display:inline;font-weight:300;text-decoration:none;line-height:25px;padding:4px;font-size:12px;background:0 0;margin-right:10px}#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active{font-weight:500;color:#000;border-bottom:3px solid #9ebc1b}#displayed_tab #ngg_page_content .ngg_page_content_menu a:active:after,#displayed_tab #ngg_page_content .ngg_page_content_menu a:before{display:none}#displayed_tab #ngg_page_content .ngg_page_content_main{padding:20px 30px 30px;width:100%;box-shadow:none}#displayed_tab #ngg_page_content.ngg_settings_page{border:none}#displayed_tab .ngg_igw_promo{display:block!important;padding:15px 7px;color:#666;font-family:Lato,sans-serif;font-size:10pt;letter-spacing:.5px;box-sizing:border-box;height:172px}#displayed_tab .ngg_igw_promo p{text-align:center}#displayed_tab .ngg_igw_promo p:nth-of-type(1){margin-top:10px}#displayed_tab .ngg_igw_promo p:nth-of-type(2){margin:20px 0}#displayed_tab .ngg_igw_promo a{text-decoration:none;font-weight:600;background:#9ebc1b;color:#fff;padding:10px 16px;font-size:11px;text-transform:uppercase}#displayed_tab .ngg_igw_coupon{font-size:12px;margin-top:10px}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main>div.ngg_igw_video{display:block!important;position:absolute;left:280px;top:71px}#displayed_tab .ngg_igw_video_open{background:#000;cursor:pointer;margin:0;font-weight:400;height:28px!important;line-height:28px!important;font-size:10px}#displayed_tab .ngg_igw_video_inner{display:none;box-shadow:0 0 10px 5px rgba(0,0,0,.2);background:#fff}#displayed_tab .ngg_igw_video_close{width:100%;height:50px;display:block;text-align:center;line-height:50px;font-size:13px;font-weight:600;cursor:pointer;font-family:Lato,sans-serif;background:#000;color:#fff;text-transform:uppercase;letter-spacing:1.5px}#displayed_tab .ngg_igw_video iframe{width:630px;height:350px!important;min-height:auto;margin-bottom:-3px}#choose_display_content,#display_settings_tab_content,#preview_tab_content{margin-top:80px}#displayed_tab #displayed_gallery_source{width:400px}#displayed_tab #display_tip{color:rgba(42,52,61,.6);display:block;font-size:14px;width:960px;max-width:100%;padding:10px 0 0}#displayed_tab #slug_configuration{display:none}#displayed_tab #slug_configuration td,#displayed_tab #source_configuration td{vertical-align:top;padding:4px 0!important;min-width:200px}#displayed_tab #source_configuration label{color:#777!important;font-size:13px!important}#attach_to_post_tabs #displayed_tab #ngg_page_content #source_configuration tr td:first-of-type{white-space:normal;line-height:1.2;width:265px}#displayed_tab #ngg_page_content .select2-container{width:250px!important;line-height:20px}#displayed_tab #ngg_page_content .ngg_page_content_main .select2-selection--multiple,#displayed_tab #ngg_page_content .ngg_page_content_main .select2-selection--single{height:auto;line-height:21px}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#9fbb1a}#displayed_tab #slug_configuration #slug_label{width:52px}#displayed_tab #slug_configuration #slug_column input[type=text]{width:498px}#displayed_tab #display_type_selector{margin-top:14px}#displayed_tab .display_type_preview{float:left;margin:0 5px 5px 0;border:1px solid #ddd;background:#fff;width:145px;height:170px}#displayed_tab .display_type_preview .image_container{width:100%;vertical-align:middle;text-align:center;font-size:12px;font-weight:500;padding:8px;box-sizing:border-box}#displayed_tab .display_type_preview .image_container img{margin-top:10px;margin-bottom:10px;box-sizing:border-box;max-width:100px}#displayed_tab .display_type_preview .image_container p{display:inline-block}.display_type_preview label>div{font-size:12px}#displayed_tab .select2-chosen{color:#666!important}#ngg_page_content #save_displayed_gallery.button{font-weight:700;height:50px!important;line-height:50px!important;padding:0 30px!important;font-size:13px}#save_displayed_gallery:disabled{background:gray!important}#display_settings_tab #display_settings_form table tr td:first-child{vertical-align:top;text-align:right;padding-right:7px;width:180px}#display_settings_tab #display_settings_form table td{text-align:left}#display_settings_tab #display_settings_form table textarea{height:60px}#display_settings_tab #display_settings_form input[type=number],#display_settings_tab #display_settings_form input[type=text],#display_settings_tab #display_settings_form select,#display_settings_tab #display_settings_form textarea{width:157px}#display_settings_tab #display_settings_form .ngg_slideshow_gallery_height,#display_settings_tab #display_settings_form .ngg_slideshow_gallery_width,#display_settings_tab #display_settings_form .ngg_thumbnail_dimension_height,#display_settings_tab #display_settings_form .ngg_thumbnail_dimension_width{width:65px!important}#display_settings_tab #display_settings_form .nextgen_settings_colorpicker{width:85px!important;text-align:center}h3#preview_tab{margin-bottom:0}#preview_tab_content{padding:10px 0}#preview_tab_content a{text-decoration:none;font-weight:300}#preview_tab_content .previewed_entity{width:100%;border-bottom:solid 1px #E0E0D6;background-color:#FAFAF0}#preview_tab_content .previewed_entity .container{padding-top:15px}#preview_tab_content .previewed_entity.header{background-color:#F0F0E6;padding-bottom:5px;padding-top:5px}#preview_tab_content .header label{font-size:12px;color:#649664;font-weight:600}#preview_tab_content .ui-sortable-helper{background:0 0}#preview_tab_content ul{list-style-type:none;display:block;padding:0;position:relative;margin-top:20px}#preview_tab_content .inclusion_checkbox{margin-right:7px;display:block;float:left}#preview_tab_content .preview_item{background-color:#fff;width:100px;padding:10px 10px 30px;margin:0 5px 5px 0;border:1px solid #eee;display:block;vertical-align:middle;text-align:center;position:relative}#preview_tab_content .image_container{background-repeat:no-repeat;background-position:center;background-size:cover;display:block;width:100%;height:75px}#preview_tab_content .image_container img{border:0}#preview_tab_content #entity_list li{float:left}#preview_tab_content #entity_list .ui-state-default{background:0 0;border:none}#preview_tab_content .placeholder{background-color:#e0ddc1;position:relative}#preview_tab_content #entity_list .exclude_container{background:#fff;display:block;text-align:center;margin:0 auto;color:#000;font-weight:400;height:1.4em;line-height:1.1em;font-size:.8em;position:absolute;bottom:.2em;left:0;width:100%;padding:5px 0}#preview_tab_content #entity_list .exclude_container input{vertical-align:middle;line-height:1.2em;margin:0 .5em}#preview_tab_content .header_row{margin-bottom:5px;font-weight:300}#preview_tab_content .header_row strong{width:70px;display:inline-block}#preview_tab_content .header_row .separator{display:inline-block;margin:0 5px}#preview_tab_content .header_row .selected{font-weight:700}#preview_tab_content #entity_list li.clear{float:none;clear:both}#preview_tab_content .refresh_button{float:right}@media (max-width:1120px){#displayed_tab .ngg_igw_promo{position:static;width:602px;height:125px;max-width:100%;margin-bottom:10px}#displayed_tab .ngg_igw_coupon{margin-top:10px}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main>div.ngg_igw_video,#displayed_tab .ngg_igw_video_inner{display:none!important}}@media (max-width:800px){#attach_to_post_tabs .ui-tabs-nav li a.active_tab::before,#attach_to_post_tabs img.attach_to_post_logo,#attach_to_post_tabs:not(.ngg_atp_ios_detected) .ui-tabs-nav li:nth-of-type(2)::after{display:none}#attach_to_post_tabs .ui-tabs-icon{width:100%;position:static;border-right:none;border-bottom:3px solid #9fbb1a;text-align:center;height:150px;padding:20px}#attach_to_post_tabs .ui-tabs-nav{margin-top:0}#attach_to_post_tabs .ui-tabs-nav li{padding:5px;list-style:none!important;border-bottom:none;border-top:none!important}#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active{background:0 0}#attach_to_post_tabs .ui-tabs-nav li a{float:none;padding:0!important;font-weight:400}#attach_to_post_tabs .ui-tabs-nav li a.active_tab{color:#9ebc1b}#attach_to_post_tabs .main_menu_tab{margin-left:0;min-height:auto;position:absolute;top:150px;right:0;left:0;bottom:0;height:auto}#displayed_tab #ngg_page_content .ngg_page_content_menu{padding:5px 0 0;background:0 0;border:none}#displayed_tab #ngg_page_content .ngg_page_content_menu a{display:block;width:100%;float:left;padding:0;text-align:center;box-sizing:border-box}#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active,#displayed_tab #ngg_page_content .ngg_page_content_menu a:active{background:0 0}#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after{display:none}#displayed_tab #ngg_page_content .ngg_page_content_menu a:last-of-type{padding-bottom:5px}#displayed_tab #slug_configuration tr,#displayed_tab #source_configuration tr{margin-bottom:24px}#ngg_page_content #save_displayed_gallery.button{position:static;margin-left:0;padding:0}}@media (max-width:781px){#attach_to_post_tabs.ngg_atp_ios_detected .ui-tabs-nav li:nth-of-type(1)::after{display:none}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table tr td{width:100%!important}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main #source_configuration{display:table!important}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main #source_configuration tbody{display:table-row-group!important}#displayed_tab #ngg_page_content .responsive-menu-icon{padding:10px 0 15px!important}}.ngg-marketing-popup{font-family:Lato,sans-serif}@media (max-width:400px){#displayed_tab .display_type_preview{float:none;margin:20px auto;width:170px}}
1
+ .ui-helper-reset,body,html{font-size:13px}body,html{width:100%!important;height:100%!important;padding:0!important;margin:0!important;max-width:100%!important;overflow:hidden}body{position:absolute;visibility:hidden;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;height:100%}.entity_errors{color:red}.entity_errors ul{margin-left:30px}.entity_errors ul li{list-style-type:disc}#attach_to_post_tabs{border:0;background:0 0;height:100%;overflow:hidden;padding:0;position:relative;visibility:visible}#attach_to_post_tabs.ui-tabs-hide{display:block!important;visibility:hidden;position:absolute;top:-5000px}#attach_to_post_tabs h3{text-transform:uppercase;color:#000;margin-top:0;letter-spacing:2px;font-size:18px;font-weight:900}h3#choose_display{margin-bottom:24px}#attach_to_post_tabs .main_menu_tab{padding:0;position:absolute;left:220px;right:0;top:0;bottom:0}#attach_to_post_tabs.ngg_atp_ios_detected{overflow-y:scroll;-webkit-overflow-scrolling:touch}#attach_to_post_tabs .ui-widget-header{border:0;border-bottom:1px solid #dfdfdf;background:0 0}iframe{width:100%;min-height:100%;border:none;padding:0;margin:0;background:0 0}.chrome_70_hack_frames{z-index:100000000!important}.chrome_70_hack_noframes{z-index:0!important}.clear{clear:both;float:none}table{font-size:13px}.select2-search input{width:100%!important}.select2-result-label{white-space:nowrap}.select2-results{font-family:'segoe ui',Arial,sans-serif;font-size:13px}.select2-container a{color:#444!important}#ngg_page_content .ngg_page_content_main .select2-container{width:100%!important;max-width:500px!important}#attach_to_post_tabs .ui-tabs-icon{box-sizing:border-box;color:#fff;font-family:Lato,sans-serif;float:none;font-size:20px;font-weight:700;height:100%;letter-spacing:1px;line-height:60px;margin-bottom:0;position:fixed;text-transform:uppercase;width:220px;padding:0}#attach_to_post_tabs img.attach_to_post_logo{height:80px;padding:50px 0 30px;float:right;margin-right:26px}#attach_to_post_tabs .ui-tabs-nav{border:none;background:0 0;padding:0;margin-top:110px;list-style:none}#attach_to_post_tabs .ui-tabs-nav li{background:0 0;border:none;display:block;height:auto;margin:0;width:100%;border-radius:0;box-sizing:border-box;padding:24px 30px 24px 20px}#attach_to_post_tabs .ui-tabs-nav li.active,#attach_to_post_tabs .ui-tabs-nav li.ui-state-active,#attach_to_post_tabs .ui-tabs-nav li.ui-state-focus,#attach_to_post_tabs .ui-tabs-nav li:focus{outline:0}#attach_to_post_tabs .ui-tabs-nav li a{display:list-item;color:#555;float:right;font-size:13px;font-weight:400;font-family:lato,sans-serif;letter-spacing:1.5px;line-height:1;text-transform:uppercase;padding:0!important}#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active{border-left:6px solid #9dbd1b}#attach_to_post_tabs .ui-tabs-nav li.ui-state-disabled a,#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active a,#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:pointer}#attach_to_post_tabs .ui-tabs-nav li a.active_tab{font-weight:800;color:#000}#displayed_tab.main_menu_tab{overflow-y:scroll;overflow-x:hidden}#displayed_tab #ngg_page_content{margin:0;width:100%}#displayed_tab #attach_to_post_tabs .ngg_page_content_header{display:none}#displayed_tab #ngg_page_content .ngg_page_content_menu{background:0 0;border:none;padding:0 20px 10px 27px;float:none;height:25px;margin-top:0;width:auto;position:relative;top:100px}#displayed_tab #ngg_page_content .ngg_page_content_menu a,#displayed_tab #ngg_page_content .ngg_page_content_menu a:active{border:none;color:#000;display:inline;font-weight:300;text-decoration:none;line-height:25px;padding:4px;font-size:12px;background:0 0;margin-right:10px}#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active{font-weight:500;color:#000;border-bottom:3px solid #9ebc1b}#displayed_tab #ngg_page_content .ngg_page_content_menu a:active:after,#displayed_tab #ngg_page_content .ngg_page_content_menu a:before{display:none}#displayed_tab #ngg_page_content .ngg_page_content_main{padding:20px 30px 30px;width:100%;box-shadow:none}#displayed_tab #ngg_page_content.ngg_settings_page{border:none}#displayed_tab .ngg_igw_promo{display:block!important;padding:15px 7px;color:#666;font-family:Lato,sans-serif;font-size:10pt;letter-spacing:.5px;box-sizing:border-box;height:172px}#displayed_tab .ngg_igw_promo p{text-align:center}#displayed_tab .ngg_igw_promo p:nth-of-type(1){margin-top:10px}#displayed_tab .ngg_igw_promo p:nth-of-type(2){margin:20px 0}#displayed_tab .ngg_igw_promo a{text-decoration:none;font-weight:600;background:#9ebc1b;color:#fff;padding:10px 16px;font-size:11px;text-transform:uppercase}#displayed_tab .ngg_igw_coupon{font-size:12px;margin-top:10px}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main>div.ngg_igw_video{display:block!important;position:absolute;left:280px;top:71px}#displayed_tab .ngg_igw_video_open{background:#000;cursor:pointer;margin:0;font-weight:400;height:28px!important;line-height:28px!important;font-size:10px}#displayed_tab .ngg_igw_video_inner{display:none;box-shadow:0 0 10px 5px rgba(0,0,0,.2);background:#fff}#displayed_tab .ngg_igw_video_close{width:100%;height:50px;display:block;text-align:center;line-height:50px;font-size:13px;font-weight:600;cursor:pointer;font-family:Lato,sans-serif;background:#000;color:#fff;text-transform:uppercase;letter-spacing:1.5px}#displayed_tab .ngg_igw_video iframe{width:630px;height:350px!important;min-height:auto;margin-bottom:-3px}#choose_display_content,#display_settings_tab_content,#preview_tab_content{margin-top:80px}#displayed_tab #displayed_gallery_source{width:400px}#displayed_tab #display_tip{color:rgba(42,52,61,.6);display:block;font-size:14px;width:960px;max-width:100%;padding:10px 0 0}#displayed_tab #slug_configuration{display:none}#displayed_tab #slug_configuration td,#displayed_tab #source_configuration td{vertical-align:top;padding:4px 0!important;min-width:200px}#displayed_tab #source_configuration label{color:#777!important;font-size:13px!important}#attach_to_post_tabs #displayed_tab #ngg_page_content #source_configuration tr td:first-of-type{white-space:normal;line-height:1.2;width:265px}#displayed_tab #ngg_page_content .select2-container{width:250px!important;line-height:20px}#displayed_tab #ngg_page_content .ngg_page_content_main .select2-selection--multiple,#displayed_tab #ngg_page_content .ngg_page_content_main .select2-selection--single{height:auto;line-height:21px}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#9fbb1a}#displayed_tab #slug_configuration #slug_label{width:52px}#displayed_tab #slug_configuration #slug_column input[type=text]{width:498px}#displayed_tab #display_type_selector{margin-top:14px}#displayed_tab .display_type_preview{float:left;margin:0 5px 5px 0;border:1px solid #ddd;background:#fff;width:145px;height:170px}#displayed_tab .display_type_preview .image_container{width:100%;vertical-align:middle;text-align:center;font-size:12px;font-weight:500;padding:8px;box-sizing:border-box}#displayed_tab .display_type_preview .image_container img{margin-top:10px;margin-bottom:10px;box-sizing:border-box;max-width:100px}#displayed_tab .display_type_preview .image_container p{display:inline-block}.display_type_preview label>div{font-size:12px}#displayed_tab .select2-chosen{color:#666!important}#ngg_page_content #save_displayed_gallery.button{font-weight:700;height:50px!important;line-height:50px!important;padding:0 30px!important;font-size:13px}#save_displayed_gallery:disabled{background:gray!important}#display_settings_tab #display_settings_form table tr td:first-child{vertical-align:top;text-align:right;padding-right:7px;width:180px}#display_settings_tab #display_settings_form table td{text-align:left}#display_settings_tab #display_settings_form table textarea{height:60px}#display_settings_tab #display_settings_form input[type=number],#display_settings_tab #display_settings_form input[type=text],#display_settings_tab #display_settings_form select,#display_settings_tab #display_settings_form textarea{width:157px}#display_settings_tab #display_settings_form .ngg_slideshow_gallery_height,#display_settings_tab #display_settings_form .ngg_slideshow_gallery_width,#display_settings_tab #display_settings_form .ngg_thumbnail_dimension_height,#display_settings_tab #display_settings_form .ngg_thumbnail_dimension_width{width:65px!important}#display_settings_tab #display_settings_form .nextgen_settings_colorpicker{width:85px!important;text-align:center}h3#preview_tab{margin-bottom:0}#preview_tab_content{padding:10px 0}#preview_tab_content a{text-decoration:none;font-weight:300}#preview_tab_content .previewed_entity{width:100%;border-bottom:solid 1px #E0E0D6;background-color:#FAFAF0}#preview_tab_content .previewed_entity .container{padding-top:15px}#preview_tab_content .previewed_entity.header{background-color:#F0F0E6;padding-bottom:5px;padding-top:5px}#preview_tab_content .header label{font-size:12px;color:#649664;font-weight:600}#preview_tab_content .ui-sortable-helper{background:0 0}#preview_tab_content ul{list-style-type:none;display:block;padding:0;position:relative;margin-top:20px}#preview_tab_content .inclusion_checkbox{margin-right:7px;display:block;float:left}#preview_tab_content .preview_item{background-color:#fff;width:100px;padding:10px 10px 30px;margin:0 5px 5px 0;border:1px solid #eee;display:block;vertical-align:middle;text-align:center;position:relative}#preview_tab_content .image_container{background-repeat:no-repeat;background-position:center;background-size:cover;display:block;width:100%;height:75px}#preview_tab_content .image_container img{border:0}#preview_tab_content #entity_list li{float:left}#preview_tab_content #entity_list .ui-state-default{background:0 0;border:none}#preview_tab_content .placeholder{background-color:#e0ddc1;position:relative}#preview_tab_content #entity_list .exclude_container{background:#fff;display:block;text-align:center;margin:0 auto;color:#000;font-weight:400;height:1.4em;line-height:1.1em;font-size:.8em;position:absolute;bottom:.2em;left:0;width:100%;padding:5px 0}#preview_tab_content #entity_list .exclude_container input{vertical-align:middle;line-height:1.2em;margin:0 .5em}#preview_tab_content .header_row{margin-bottom:5px;font-weight:300}#preview_tab_content .header_row strong{width:70px;display:inline-block}#preview_tab_content .header_row .separator{display:inline-block;margin:0 5px}#preview_tab_content .header_row .selected{font-weight:700}#preview_tab_content #entity_list li.clear{float:none;clear:both}#preview_tab_content .refresh_button{float:right}@media (max-width:1120px){#displayed_tab .ngg_igw_promo{position:static;width:602px;height:125px;max-width:100%;margin-bottom:10px}#displayed_tab .ngg_igw_coupon{margin-top:10px}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main>div.ngg_igw_video,#displayed_tab .ngg_igw_video_inner{display:none!important}}@media (max-width:800px){#attach_to_post_tabs .ui-tabs-nav li a.active_tab::before,#attach_to_post_tabs img.attach_to_post_logo,#attach_to_post_tabs:not(.ngg_atp_ios_detected) .ui-tabs-nav li:nth-of-type(2)::after{display:none}#attach_to_post_tabs .ui-tabs-icon{width:100%;position:static;border-right:none;border-bottom:3px solid #9fbb1a;text-align:center;height:150px;padding:20px}#attach_to_post_tabs .ui-tabs-nav{margin-top:0}#attach_to_post_tabs .ui-tabs-nav li{padding:5px;list-style:none!important;border-bottom:none;border-top:none!important}#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active{background:0 0}#attach_to_post_tabs .ui-tabs-nav li a{float:none;padding:0!important;font-weight:400}#attach_to_post_tabs .ui-tabs-nav li a.active_tab{color:#9ebc1b}#attach_to_post_tabs .main_menu_tab{margin-left:0;min-height:auto;position:absolute;top:150px;right:0;left:0;bottom:0;height:auto}#displayed_tab #ngg_page_content .ngg_page_content_menu{padding:5px 0 0;background:0 0;border:none}#displayed_tab #ngg_page_content .ngg_page_content_menu a{display:block;width:100%;float:left;padding:0;text-align:center;box-sizing:border-box}#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active,#displayed_tab #ngg_page_content .ngg_page_content_menu a:active{background:0 0}#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after{display:none}#displayed_tab #ngg_page_content .ngg_page_content_menu a:last-of-type{padding-bottom:5px}#displayed_tab #slug_configuration tr,#displayed_tab #source_configuration tr{margin-bottom:24px}#ngg_page_content #save_displayed_gallery.button{position:static;margin-left:0;padding:0}}@media (max-width:781px){#attach_to_post_tabs.ngg_atp_ios_detected .ui-tabs-nav li:nth-of-type(1)::after{display:none}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table tr td{width:100%!important}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main #source_configuration{display:table!important}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main #source_configuration tbody{display:table-row-group!important}#displayed_tab #ngg_page_content .responsive-menu-icon{padding:10px 0 15px!important}}.ngg-marketing-popup{font-family:Lato,sans-serif}@media (max-width:400px){#displayed_tab .display_type_preview{float:none;margin:20px auto;width:170px}}
products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.min.js CHANGED
@@ -1 +1 @@
1
- function adjust_height_for_frame(e,t,i){if(!/crios|iP(hone|od|ad)/i.test(navigator.userAgent))return void 0===i||i(e,t);var n=jQuery(t.frameElement),a=n.contents().height()/3,o=n.contents().find("#wpbody").height(),s=jQuery(e.document).height(),d=n.height();if(0===o&&(o=n.contents().height()),a<o&&(a=o),a<s&&(a=s),d<a){var c=n.attr("id");if(c&&0===c.indexOf("ngg-iframe-")){var r=c.substr(11);r&&jQuery("#"+r).height(a)}}return void 0===i||i(e,t,a)}function close_attach_to_post_window(){if(is_block_editor()){const e=parent.document.getElementById(window.name),t=new Event("NGG_Close_Modal");e.dispatchEvent(t)}else{const i=jQuery(top.document).find("#TB_window iframe").attr("src");i&&i.match("attach_to_post")?top.tb_remove():top.tinyMCE.activeEditor.windowManager.close(window)}}function insert_into_editor(e,t){if(is_block_editor()){const i=parent.document.getElementById(window.name),n=new CustomEvent("NGG_Insert_Gallery",{detail:{shortcode:e}});i.dispatchEvent(n)}else if(is_visual_editor()){var a=top.tinyMCE.activeEditor;a.selection.getNode().outerHTML.indexOf(t)>=0?jQuery(a.selection.getNode()).attr("data-shortcode",e.substring(1,e.length-1)):a.execCommand("mceInsertContent",!1,e),a.selection.collapse(!1)}else if(myField=top.document.getElementById("content"),myValue=e,document.selection)myField.focus(),sel=document.selection.createRange(),sel.text=myValue;else if(myField.selectionStart||"0"===myField.selectionStart){var o=myField.selectionStart,s=myField.selectionEnd;myField.value=myField.value.substring(0,o)+myValue+myField.value.substring(s,myField.value.length)}else myField.value+=myValue}function is_visual_editor(){return 0===jQuery(top.document).find(".html-active:visible").length}function is_block_editor(){return void 0!==window.name&&"add-ngg-gallery-block-iframe"===window.name}function ngg_get_measures_for_frame(e){var t=jQuery(e),i=t.attr("id"),n={};if(i&&0===i.indexOf("ngg-iframe-")){if(i.substr(11)){var a=jQuery(document);n.scrollTop=a.scrollTop()-40,window.parent?n.scrollHeight=jQuery(window.parent.document).find(".ngg_attach_to_post_window").height()-40:n.scrollHeight=a.height(),void 0!==window.console&&console.log(n)}}return n}this.id="ngg-attach_to_post",jQuery(function(e){if(/crios|iP(hone|od|ad)/i.test(navigator.userAgent)&&e("#attach_to_post_tabs").addClass("ngg_atp_ios_detected"),e("#attach_to_post_tabs").ngg_tabs({onShowTab:function(t){navigator.appVersion.match(/Chrome\/(69|7)/)&&("displayed_tab"!=t.attr("id")?e("#attach_to_post_tabs").addClass("chrome_70_hack_frames").removeClass("chrome_70_hack_noframes"):e("#attach_to_post_tabs").removeClass("chrome_70_hack_frames").addClass("chrome_70_hack_noframes"))}}),e(".ngg_page_content_menu a").on("click",function(){"preview_tab"===e(this).attr("data-id")&&e("#preview_area").trigger("opened")}),e(".accordion").accordion({clearStyle:!0,autoHeight:!1,heightStyle:"content"}),e(".ui-tabs-nav li:first-of-type a").addClass("active_tab"),e(".ui-tabs-nav a").click(function(t){e(".ui-tabs-nav a").removeClass("active_tab"),e(this).addClass("active_tab");var i=t.target?t.target:t.srcElement;if(e(i).parent().hasClass("ui-state-active")){var n=e(i.hash+" iframe");n.length>0&&n[0].contentDocument.location!=n.attr("src")&&(n[0].contentDocument.location=n.attr("src"))}}),e(this).keydown(function(e){return 27===e.keyCode&&close_attach_to_post_window(),!0}),e("body").css({position:"static",visibility:"visible"}).animate({opacity:1}),e("#displayed_tab .ngg_igw_video_open").click(function(t){e("#displayed_tab .ngg_igw_video_inner").append('<iframe class="ngg_igw_video_iframe" width="1050" height="590" src="https://www.youtube.com/embed/mNEnY23i9DE?rel=0" frameborder="0" allowfullscreen></iframe>'),e("#displayed_tab .ngg_igw_video_inner").css("display","block"),e("#displayed_tab .ngg_igw_video_open").css("display","none")}),e("#displayed_tab .ngg_igw_video_close").click(function(t){e("#displayed_tab .ngg_igw_video_iframe").remove(),e("#displayed_tab .ngg_igw_video_inner").css("display","none"),e("#displayed_tab .ngg_igw_video_open").css("display","block")}),e(".ngg_page_content_menu a").click(function(t){"choose_display"==e(this).attr("data-id")?e("#displayed_tab .ngg_igw_video_open").css("display","block"):(e("#displayed_tab .ngg_igw_video_open").css("display","none"),e("#displayed_tab .ngg_igw_video_inner").css("display","none"))}),is_block_editor()){const t=parent.document.getElementById(window.name),i=new Event("NGG_Iframe_Ready");t.dispatchEvent(i)}});
1
+ "use strict";function adjust_height_for_frame(e,t,i){if(!/crios|iP(hone|od|ad)/i.test(navigator.userAgent))return void 0===i||i(e,t);var a=jQuery(t.frameElement),n=a.contents().height()/3,o=a.contents().find("#wpbody").height(),s=jQuery(e.document).height(),d=a.height();if(0===o&&(o=a.contents().height()),n<o&&(n=o),n<s&&(n=s),d<n){var r=a.attr("id");if(r&&0===r.indexOf("ngg-iframe-")){var c=r.substr(11);c&&jQuery("#"+c).height(n)}}return void 0===i||i(e,t,n)}function close_attach_to_post_window(){if(is_block_editor()){var e=parent.document.getElementById(window.name),t=new Event("NGG_Close_Modal");e.dispatchEvent(t)}else{var i=jQuery(top.document).find("#TB_window iframe").attr("src");i&&i.match("attach_to_post")?top.tb_remove():top.tinyMCE.activeEditor.windowManager.close(window)}}function insert_into_editor(e,t){if(is_block_editor()){var i=parent.document.getElementById(window.name),a=new CustomEvent("NGG_Insert_Gallery",{detail:{shortcode:e}});i.dispatchEvent(a)}else if(is_visual_editor()){var n=top.tinyMCE.activeEditor;n.selection.getNode().outerHTML.indexOf(t)>=0?jQuery(n.selection.getNode()).attr("data-shortcode",e.substring(1,e.length-1)):n.execCommand("mceInsertContent",!1,e),n.selection.collapse(!1)}else if(myField=top.document.getElementById("content"),myValue=e,document.selection)myField.trigger("focus"),sel=document.selection.createRange(),sel.text=myValue;else if(myField.selectionStart||"0"===myField.selectionStart){var o=myField.selectionStart,s=myField.selectionEnd;myField.value=myField.value.substring(0,o)+myValue+myField.value.substring(s,myField.value.length)}else myField.value+=myValue}function is_visual_editor(){return 0===jQuery(top.document).find(".html-active:visible").length}function is_block_editor(){return void 0!==window.name&&"add-ngg-gallery-block-iframe"===window.name}function ngg_get_measures_for_frame(e){var t=jQuery(e),i=t.attr("id"),a={};if(i&&0===i.indexOf("ngg-iframe-")){if(i.substr(11)){var n=jQuery(document);a.scrollTop=n.scrollTop()-40,window.parent?a.scrollHeight=jQuery(window.parent.document).find(".ngg_attach_to_post_window").height()-40:a.scrollHeight=n.height(),void 0!==window.console&&console.log(a)}}return a}(void 0).id="ngg-attach_to_post",jQuery(function(e){if(/crios|iP(hone|od|ad)/i.test(navigator.userAgent)&&e("#attach_to_post_tabs").addClass("ngg_atp_ios_detected"),e("#attach_to_post_tabs").ngg_tabs({onShowTab:function(t){navigator.appVersion.match(/Chrome\/(69|7)/)&&("displayed_tab"!=t.attr("id")?e("#attach_to_post_tabs").addClass("chrome_70_hack_frames").removeClass("chrome_70_hack_noframes"):e("#attach_to_post_tabs").removeClass("chrome_70_hack_frames").addClass("chrome_70_hack_noframes"))}}),e(".ngg_page_content_menu a").on("click",function(){"preview_tab"===e(this).attr("data-id")&&e("#preview_area").trigger("opened")}),e(".accordion").accordion({clearStyle:!0,autoHeight:!1,heightStyle:"content"}),e(".ui-tabs-nav li:first-of-type a").addClass("active_tab"),e(".ui-tabs-nav a").on("click",function(t){e(".ui-tabs-nav a").removeClass("active_tab"),e(this).addClass("active_tab");var i=t.target;if(e(i).parent().hasClass("ui-state-active")){var a=e(i.hash+" iframe");a.length>0&&a[0].contentDocument.location!=a.attr("src")&&(a[0].contentDocument.location=a.attr("src"))}}),e(this).on("keydown",function(e){return 27===e.keyCode&&close_attach_to_post_window(),!0}),e("body").css({position:"static",visibility:"visible"}).animate({opacity:1}),e("#displayed_tab .ngg_igw_video_open").on("click",function(t){e("#displayed_tab .ngg_igw_video_inner").append('<iframe class="ngg_igw_video_iframe" width="1050" height="590" src="https://www.youtube.com/embed/mNEnY23i9DE?rel=0" frameborder="0" allowfullscreen></iframe>'),e("#displayed_tab .ngg_igw_video_inner").css("display","block"),e("#displayed_tab .ngg_igw_video_open").css("display","none")}),e("#displayed_tab .ngg_igw_video_close").on("click",function(t){e("#displayed_tab .ngg_igw_video_iframe").remove(),e("#displayed_tab .ngg_igw_video_inner").css("display","none"),e("#displayed_tab .ngg_igw_video_open").css("display","block")}),e(".ngg_page_content_menu a").on("click",function(t){"choose_display"==e(this).attr("data-id")?e("#displayed_tab .ngg_igw_video_open").css("display","block"):(e("#displayed_tab .ngg_igw_video_open").css("display","none"),e("#displayed_tab .ngg_igw_video_inner").css("display","none"))}),is_block_editor()){var t=parent.document.getElementById(window.name),i=new Event("NGG_Iframe_Ready");t.dispatchEvent(i)}});
products/photocrati_nextgen/modules/attach_to_post/static/base64.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r(e):"function"==typeof define&&define.amd?define(r):r(e)}("undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:this,function(global){"use strict";var _Base64=global.Base64,version="2.4.9",buffer;if("undefined"!=typeof module&&module.exports)try{buffer=eval("require('buffer').Buffer")}catch(e){buffer=void 0}var b64chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",b64tab=function(e){for(var r={},o=0,t=e.length;o<t;o++)r[e.charAt(o)]=o;return r}(b64chars),fromCharCode=String.fromCharCode,cb_utob=function(e){if(e.length<2){var r=e.charCodeAt(0);return r<128?e:r<2048?fromCharCode(192|r>>>6)+fromCharCode(128|63&r):fromCharCode(224|r>>>12&15)+fromCharCode(128|r>>>6&63)+fromCharCode(128|63&r)}var r=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return fromCharCode(240|r>>>18&7)+fromCharCode(128|r>>>12&63)+fromCharCode(128|r>>>6&63)+fromCharCode(128|63&r)},re_utob=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,utob=function(e){return e.replace(re_utob,cb_utob)},cb_encode=function(e){var r=[0,2,1][e.length%3],o=e.charCodeAt(0)<<16|(e.length>1?e.charCodeAt(1):0)<<8|(e.length>2?e.charCodeAt(2):0);return[b64chars.charAt(o>>>18),b64chars.charAt(o>>>12&63),r>=2?"=":b64chars.charAt(o>>>6&63),r>=1?"=":b64chars.charAt(63&o)].join("")},btoa=global.btoa?function(e){return global.btoa(e)}:function(e){return e.replace(/[\s\S]{1,3}/g,cb_encode)},_encode=buffer?buffer.from&&Uint8Array&&buffer.from!==Uint8Array.from?function(e){return(e.constructor===buffer.constructor?e:buffer.from(e)).toString("base64")}:function(e){return(e.constructor===buffer.constructor?e:new buffer(e)).toString("base64")}:function(e){return btoa(utob(e))},encode=function(e,r){return r?_encode(String(e)).replace(/[+\/]/g,function(e){return"+"==e?"-":"_"}).replace(/=/g,""):_encode(String(e))},encodeURI=function(e){return encode(e,!0)},re_btou=new RegExp(["[À-ß][€-¿]","[à-ï][€-¿]{2}","[ð-÷][€-¿]{3}"].join("|"),"g"),cb_btou=function(e){switch(e.length){case 4:var r=(7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3),o=r-65536;return fromCharCode(55296+(o>>>10))+fromCharCode(56320+(1023&o));case 3:return fromCharCode((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return fromCharCode((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},btou=function(e){return e.replace(re_btou,cb_btou)},cb_decode=function(e){var r=e.length,o=r%4,t=(r>0?b64tab[e.charAt(0)]<<18:0)|(r>1?b64tab[e.charAt(1)]<<12:0)|(r>2?b64tab[e.charAt(2)]<<6:0)|(r>3?b64tab[e.charAt(3)]:0),n=[fromCharCode(t>>>16),fromCharCode(t>>>8&255),fromCharCode(255&t)];return n.length-=[0,0,2,1][o],n.join("")},atob=global.atob?function(e){return global.atob(e)}:function(e){return e.replace(/[\s\S]{1,4}/g,cb_decode)},_decode=buffer?buffer.from&&Uint8Array&&buffer.from!==Uint8Array.from?function(e){return(e.constructor===buffer.constructor?e:buffer.from(e,"base64")).toString()}:function(e){return(e.constructor===buffer.constructor?e:new buffer(e,"base64")).toString()}:function(e){return btou(atob(e))},decode=function(e){return _decode(String(e).replace(/[-_]/g,function(e){return"-"==e?"+":"/"}).replace(/[^A-Za-z0-9\+\/]/g,""))},noConflict=function(){var e=global.Base64;return global.Base64=_Base64,e};if(global.Base64={VERSION:version,atob:atob,btoa:btoa,fromBase64:decode,toBase64:encode,utob:utob,encode:encode,encodeURI:encodeURI,btou:btou,decode:decode,noConflict:noConflict,__buffer__:buffer},"function"==typeof Object.defineProperty){var noEnum=function(e){return{value:e,enumerable:!1,writable:!0,configurable:!0}};global.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",noEnum(function(){return decode(this)})),Object.defineProperty(String.prototype,"toBase64",noEnum(function(e){return encode(this,e)})),Object.defineProperty(String.prototype,"toBase64URI",noEnum(function(){return encode(this,!0)}))}}return global.Meteor&&(Base64=global.Base64),"undefined"!=typeof module&&module.exports?module.exports.Base64=global.Base64:"function"==typeof define&&define.amd&&define([],function(){return global.Base64}),{Base64:global.Base64}});
1
+ "use strict";function _typeof(e){"@babel/helpers - typeof";return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(e,o){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=o(e):"function"==typeof define&&define.amd?define(o):o(e)}("undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:void 0,function(global){var _Base64=global.Base64,version="2.4.9",buffer;if("undefined"!=typeof module&&module.exports)try{buffer=eval("require('buffer').Buffer")}catch(e){buffer=void 0}var b64chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",b64tab=function(e){for(var o={},r=0,t=e.length;r<t;r++)o[e.charAt(r)]=r;return o}(b64chars),fromCharCode=String.fromCharCode,cb_utob=function(e){if(e.length<2){var o=e.charCodeAt(0);return o<128?e:o<2048?fromCharCode(192|o>>>6)+fromCharCode(128|63&o):fromCharCode(224|o>>>12&15)+fromCharCode(128|o>>>6&63)+fromCharCode(128|63&o)}var o=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return fromCharCode(240|o>>>18&7)+fromCharCode(128|o>>>12&63)+fromCharCode(128|o>>>6&63)+fromCharCode(128|63&o)},re_utob=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,utob=function(e){return e.replace(re_utob,cb_utob)},cb_encode=function(e){var o=[0,2,1][e.length%3],r=e.charCodeAt(0)<<16|(e.length>1?e.charCodeAt(1):0)<<8|(e.length>2?e.charCodeAt(2):0);return[b64chars.charAt(r>>>18),b64chars.charAt(r>>>12&63),o>=2?"=":b64chars.charAt(r>>>6&63),o>=1?"=":b64chars.charAt(63&r)].join("")},btoa=global.btoa?function(e){return global.btoa(e)}:function(e){return e.replace(/[\s\S]{1,3}/g,cb_encode)},_encode=buffer?buffer.from&&Uint8Array&&buffer.from!==Uint8Array.from?function(e){return(e.constructor===buffer.constructor?e:buffer.from(e)).toString("base64")}:function(e){return(e.constructor===buffer.constructor?e:new buffer(e)).toString("base64")}:function(e){return btoa(utob(e))},encode=function(e,o){return o?_encode(String(e)).replace(/[+\/]/g,function(e){return"+"==e?"-":"_"}).replace(/=/g,""):_encode(String(e))},encodeURI=function(e){return encode(e,!0)},re_btou=new RegExp(["[À-ß][€-¿]","[à-ï][€-¿]{2}","[ð-÷][€-¿]{3}"].join("|"),"g"),cb_btou=function(e){switch(e.length){case 4:var o=(7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3),r=o-65536;return fromCharCode(55296+(r>>>10))+fromCharCode(56320+(1023&r));case 3:return fromCharCode((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return fromCharCode((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},btou=function(e){return e.replace(re_btou,cb_btou)},cb_decode=function(e){var o=e.length,r=o%4,t=(o>0?b64tab[e.charAt(0)]<<18:0)|(o>1?b64tab[e.charAt(1)]<<12:0)|(o>2?b64tab[e.charAt(2)]<<6:0)|(o>3?b64tab[e.charAt(3)]:0),n=[fromCharCode(t>>>16),fromCharCode(t>>>8&255),fromCharCode(255&t)];return n.length-=[0,0,2,1][r],n.join("")},atob=global.atob?function(e){return global.atob(e)}:function(e){return e.replace(/[\s\S]{1,4}/g,cb_decode)},_decode=buffer?buffer.from&&Uint8Array&&buffer.from!==Uint8Array.from?function(e){return(e.constructor===buffer.constructor?e:buffer.from(e,"base64")).toString()}:function(e){return(e.constructor===buffer.constructor?e:new buffer(e,"base64")).toString()}:function(e){return btou(atob(e))},decode=function(e){return _decode(String(e).replace(/[-_]/g,function(e){return"-"==e?"+":"/"}).replace(/[^A-Za-z0-9\+\/]/g,""))},noConflict=function(){var e=global.Base64;return global.Base64=_Base64,e};if(global.Base64={VERSION:version,atob:atob,btoa:btoa,fromBase64:decode,toBase64:encode,utob:utob,encode:encode,encodeURI:encodeURI,btou:btou,decode:decode,noConflict:noConflict,__buffer__:buffer},"function"==typeof Object.defineProperty){var noEnum=function(e){return{value:e,enumerable:!1,writable:!0,configurable:!0}};global.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",noEnum(function(){return decode(this)})),Object.defineProperty(String.prototype,"toBase64",noEnum(function(e){return encode(this,e)})),Object.defineProperty(String.prototype,"toBase64URI",noEnum(function(){return encode(this,!0)}))}}return global.Meteor&&(Base64=global.Base64),"undefined"!=typeof module&&module.exports?module.exports.Base64=global.Base64:"function"==typeof define&&define.amd&&define([],function(){return global.Base64}),{Base64:global.Base64}});
products/photocrati_nextgen/modules/attach_to_post/static/display_tab.js CHANGED
@@ -1413,7 +1413,7 @@ jQuery(function($){
1413
  name: 'maximum_entity_count'
1414
  });
1415
 
1416
- edit_field.change(function () {
1417
  self.displayed_gallery.set('maximum_entity_count', $(this).val());
1418
  });
1419
 
@@ -1441,7 +1441,7 @@ jQuery(function($){
1441
  name: 'maximum_entity_count'
1442
  });
1443
 
1444
- edit_field.change(function () {
1445
  self.displayed_gallery.set('maximum_entity_count', $(this).val());
1446
  });
1447
 
1413
  name: 'maximum_entity_count'
1414
  });
1415
 
1416
+ edit_field.on('change', function () {
1417
  self.displayed_gallery.set('maximum_entity_count', $(this).val());
1418
  });
1419
 
1441
  name: 'maximum_entity_count'
1442
  });
1443
 
1444
+ edit_field.on('change', function () {
1445
  self.displayed_gallery.set('maximum_entity_count', $(this).val());
1446
  });
1447
 
products/photocrati_nextgen/modules/attach_to_post/static/display_tab.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(e){var t={Models:{},Views:{}};t.Models.SelectableItems=Backbone.Collection.extend({selected:function(){return this.filter(function(e){return 1==e.get("selected")})},deselect_all:function(){this.each(function(e){e.set("selected",!1)})},selected_ids:function(){return _.pluck(this.selected(),"id")},select:function(e){_.isArray(e)||(e=[e]),this.each(function(t){_.indexOf(e,t.id)>=0&&t.set("selected",!0)}),this.trigger("selected")}}),t.Views.SelectTag=Backbone.View.extend({tagName:"select",collection:null,multiple:!1,value_field:"id",text_field:"title",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.collection.on("add",this.render_new_option,this),this.collection.on("remove",this.remove_existing_option,this),this.collection.on("reset",this.empty_list,this)},events:{change:"selection_changed"},empty_list:function(){this.$el.empty()},render_new_option:function(e){this.$el.append(new this.Option({model:e,value_field:this.value_field,text_field:this.text_field}).render().el)},remove_existing_option:function(e){this.$el.find("option[value='"+e.id+"']").remove()},selection_changed:function(){var t=_.map(this.$el.find(":selected"),function(t){return e(t).val()});this.collection.each(function(e){_.indexOf(t,e.id)>=0||_.indexOf(t,e.id.toString())>=0?e.set("selected",!0):e.set("selected",!1)}),this.collection.trigger("selected")},render:function(){return this.$el.empty(),this.multiple&&(this.$el.prop("multiple",!0),this.$el.attr("multiple","multiple")),this.collection.each(function(e){var t=new this.Option({model:e,value_field:this.value_field,text_field:this.text_field});this.$el.append(t.render().el)},this),this.width&&this.$el.width(this.width),this},Option:Backbone.View.extend({tagName:"option",model:null,initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.model.on("change",this.render,this)},render:function(){var e=this;return this.$el.html(this.model.get(this.text_field).replace(/\\&/g,"&").replace(/\\'/g,"'")),this.$el.prop({value:"id"==this.value_field?this.model.id:this.model.get(this.value_field)}),1==e.model.get("selected")&&this.$el.prop("selected",!0).attr("selected","selected"),this}})}),t.Views.Chosen=Backbone.View.extend({tagName:"span",initialize:function(e){this.options=e||{},this.collection=this.options.collection,this.select_tag=new t.Views.SelectTag(this.options),this.collection.on("change",this.selection_changed,this)},selection_changed:function(e){_.isUndefined(e.changed.selected)&&this.render()},render:function(){return this.$el.append(this.select_tag.render().$el),this.options.width&&this.select_tag.$el.width(this.options.width),this.select2_opts={placeholder:this.options.placeholder},this.select_tag.$el.select2(this.select2_opts),this}}),t.DisplayTab={Models:{},Views:{},App:{}},t.Models.Remote_Collection=t.Models.SelectableItems.extend({fetch_limit:5e3,in_progress:!1,fetch_url:photocrati_ajax.url,action:"",extra_data:{},_create_request:function(e,t){var i={action:this.action,limit:e||this.fetch_limit,offset:t||0,nonce:igw_data.nonce};for(var s in this.extra_data){var l=this.extra_data[s];void 0===i[s]&&(i[s]={}),void 0!==l.toJSON&&(l=l.toJSON()),i[s]=_.extend(i[s],l)}return i},_add_item:function(e){this.push(e)},fetch:function(t,i){var s=this;this.in_progress=!0,e.post(this.fetch_url,this._create_request(t,i),function(e){"undefined"!=typeof _&&(_.isObject(e)||(e=JSON.parse(e)),e.items&&(_.each(e.items,function(e){s._add_item(e)}),e.total>=e.limit+e.offset?s.fetch(e.limit,e.offset+e.limit):(s.in_progress=!1,s.trigger("finished_fetching"))))})}}),t.DisplayTab.Models.Displayed_Gallery=Backbone.Model.extend({defaults:{source:null,container_ids:[],entity_ids:[],display_type:null,display_settings:{},exclusions:[],sortorder:[],slug:null},to_shortcode:function(){retval=null;var e=function(e,t){var i=e[t];if(void 0!==igw_data.shortcode_defaults[t]&&igw_data.shortcode_defaults[t]==i&&(i=null),_.isArray(i)&&(i=i.length>0?i.join(","):null),i)return i=i.toString().replace("[","&#91;"),i=i.toString().replace("]","&#93;"),void 0!==igw_data.shortcode_attr_replacements[t]&&(t=igw_data.shortcode_attr_replacements[t]),t+'="'+i+'"'},i=t.DisplayTab.instance.display_types.find_by_name_or_alias(this.get("display_type")),s=this.toJSON();s.display_type=i.get_shortcode_value();var l="[ngg",n=null;(n=e(s,"source"))&&(l+=" "+n),(n=e(s,"container_ids"))&&(l+=" "+n),(n=e(s,"entity_ids"))&&(l+=" "+n),(n=e(s,"exclusions"))&&(l+=" "+n),(n=e(s,"sortorder"))&&(l+=" "+n);for(var a in s){if(!(["source","container_ids","entity_ids","exclusions","sortorder","__defaults_set","id_field","post_category","ID"].indexOf(a)>-1))if("display_settings"==a)for(var r in s[a])(n=e(s[a],r))&&(l+=" "+n);else(n=e(s,a))&&(l+=" "+n)}return l+="]"}}),t.DisplayTab.Models.Source=Backbone.Model.extend({idAttribute:"name",defaults:{title:"",name:"",selected:!1}}),t.DisplayTab.Models.Source_Collection=t.Models.SelectableItems.extend({model:t.DisplayTab.Models.Source,selected_value:function(){var e=null,t=this.selected();return t.length>0&&(e=t[0].get("name")),e},find_by_name_or_alias:function(e){return this.find(function(t){return t.get("name")==e||_.isArray(t.get("aliases"))&&t.get("aliases").indexOf(e)>-1})}}),t.DisplayTab.Models.Gallery=Backbone.Model.extend({idAttribute:igw_data.gallery_primary_key,defaults:{title:"",name:""}}),t.DisplayTab.Models.Gallery_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Gallery,action:"get_existing_galleries"}),t.DisplayTab.Models.Album=Backbone.Model.extend({defaults:{title:"",name:""}}),t.DisplayTab.Models.Album_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Album,action:"get_existing_albums"}),t.DisplayTab.Models.Tag=Backbone.Model.extend({defaults:{title:""}}),t.DisplayTab.Models.Tag_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Tag,action:"get_existing_image_tags"}),t.DisplayTab.Models.Display_Type=Backbone.Model.extend({idAttribute:"name",defaults:{title:""},is_compatible_with_source:function(e){var t=!0;for(index in e.get("returns")){var i=e.get("returns")[index];if(_.indexOf(this.get("entity_types"),i)<0){t=!1;break}}return t},get_shortcode_value:function(){var e=this.id,t=this.get("aliases");return _.isArray(t)&&t.length>0&&(e=t[0]),e}}),t.DisplayTab.Models.Display_Type_Collection=t.Models.SelectableItems.extend({model:t.DisplayTab.Models.Display_Type,selected_value:function(){var e=this.selected();return e.length>0?e[0].get("name"):null},find_by_name_or_alias:function(e){return this.find(function(t){return t.get("name")==e||_.isArray(t.get("aliases"))&&t.get("aliases").indexOf(e)>-1})}}),t.DisplayTab.Models.Entity=Backbone.Model.extend({entity_id:function(){return this.get(this.get("id_field"))},is_excluded:function(){return current_value=this.get("exclude"),!_.isUndefined(current_value)&&(_.isBoolean(current_value)?current_value:0!=parseInt(current_value))},is_included:function(){return!this.is_excluded()},is_gallery:function(){return retval=!1,1==this.get("is_gallery")&&(retval=!0),retval},is_album:function(){return retval=!1,1==this.get("is_album")&&(retval=!0),retval},is_image:function(){return!this.is_album()&&!this.is_gallery()},alttext:function(){return this.is_image()?this.get("alttext"):this.is_gallery()?this.get("title"):this.is_album()?this.get("name"):void 0}}),t.DisplayTab.Models.Entity_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Entity,action:"get_displayed_gallery_entities",_add_item:function(e){e.exclude=1==parseInt(e.exclude),e.is_gallery=1==parseInt(e.is_gallery),e.is_album=1==parseInt(e.is_album),this.push(e)},entity_ids:function(){return this.map(function(e){return e.entity_id()})},included_ids:function(){return _.compact(this.map(function(e){if(e.is_included())return e.entity_id()}))},excluded_ids:function(){return _.compact(this.map(function(e){if(!e.is_included())return e.entity_id()}))}}),t.DisplayTab.Models.SortOrder=Backbone.Model.extend({}),t.DisplayTab.Models.SortOrder_Options=t.Models.SelectableItems.extend({model:t.DisplayTab.Models.SortOrder}),t.DisplayTab.Models.SortDirection=Backbone.Model.extend({}),t.DisplayTab.Models.SortDirection_Options=Backbone.Collection.extend({model:t.DisplayTab.Models.SortDirection}),t.DisplayTab.Models.Slug=Backbone.Model.extend({}),t.DisplayTab.Views.Source_Config=Backbone.View.extend({el:"#source_configuration",selected_view:null,initialize:function(){this.sources=t.DisplayTab.instance.sources,this.sources.on("selected",this.render,this),_.bindAll(this,"render"),this.render()},render:function(){var e=new t.Views.Chosen({id:"source_select",collection:this.sources,placeholder:"Select a source",width:500}),i=_.template('<tr><td id="source_column"></td><td><label><%- sources %></label></td></tr>');this.$el.html(i(igw_data.i18n)),this.$el.find("#source_column").append(e.render().el);var s=this.sources.selected();if(s.length){var l=function(e){return e=String(e),e.charAt(0).toUpperCase()+e.slice(1)}(s.pop().id)+"Source";if(void 0!==t.DisplayTab.Views[l]){var n=new t.DisplayTab.Views[l];this.$el.append(n.render().el)}}return this}}),t.DisplayTab.Views.Slug_Config=Backbone.View.extend({el:"#slug_configuration",selected_view:null,initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.slug=t.DisplayTab.instance.displayed_gallery.get("slug"),this.render()},render:function(){var t=this,i=e("<input>").prop({type:"text",name:"slug",value:this.slug,placeholder:igw_data.i18n.optional,id:"field_slug"});i.on("input",function(){e(this).val(e(this).val().replace(/\s|\?|\\|\/|&|=|\[|]|#/gm,"-")),t.displayed_gallery.set("slug",e(this).val())}),i.on("change",function(){e(this).val(e(this).val().replace(/^-*/gm,"").replace(/-*$/gm,"")),t.displayed_gallery.set("slug",e(this).val())});var s=_.template('<tr><td id="slug_label"><label for="field_slug" class="tooltip" title="<%- slug_tooltip %><"><<%- slug_label %></label></td><td id="slug_column"></td></tr>');return this.$el.append(s(igw_data.i18n)),this.$el.find("#slug_column").append(i),this}}),t.DisplayTab.Views.Display_Type_Selector=Backbone.View.extend({el:"#display_type_selector",initialize:function(){this.display_types=t.DisplayTab.instance.display_types,this.display_type_order_base=t.DisplayTab.instance.display_type_order_base,this.display_type_order_step=t.DisplayTab.instance.display_type_order_step,this.sources=t.DisplayTab.instance.sources,this.render()},selection_changed:function(t){var i=null;this.display_types.each(function(e){e.get("name")==t?(i=e,e.set("selected",!0)):e.set("selected",!1)}),e(".display_settings_form").each(function(){$this=e(this),$this.attr("rel")==t?$this.removeClass("hidden"):$this.addClass("hidden")})},render:function(){var i=this.sources.selected(),s=0;i=i.length>0&&i[0],this.$el.empty();var l=this.display_type_order_base,n=this.display_type_order_step;return this.display_types.each(function(a){if(i&&!a.is_compatible_with_source(i)){var r=e("#display_type_tab_content:visible");if(0==r.length)return;if("hidden"==r.css("visibility"))return}var o=new t.DisplayTab.Views.DisplayType;o.model=a,o.on("selected",this.selection_changed,this),this.display_types.selected_value()||(a.set("selected",!0),this.selection_changed(a.id));var d=a.get("view_order");d||(d=l);var c=Math.floor(d/n);s=c,this.$el.append(o.render().el)},this),this.$el.append('<li class="clear" style="height: 10px; list-style-type:none" />'),this}}),t.DisplayTab.Views.DisplayType=Backbone.View.extend({className:"display_type_preview",events:{click:"clicked"},clicked:function(e){this.trigger("selected",this.model.get("name"))},render:function(){var t=e('<label style="display: block; cursor: pointer;"/>').addClass("image_container"),i=e("<img/>").attr({src:this.model.get("preview_image_url"),title:this.model.get("title"),alt:this.model.get("alt")}),s=e("<div/>"),l=e("<input/>").prop({type:"radio",value:this.model.get("name"),title:this.model.get("title"),name:"display_type",checked:this.model.get("selected")}),n=e("<br>");return t.append(s),t.append(i),t.append("<br>"),t.append(this.model.get("title").replace(/nextgen /gi,"")),s.append(l),s.append(n),this.$el.append(t),this}}),t.DisplayTab.Views.Preview_Area=Backbone.View.extend({el:"#preview_area",initialize:function(){this.entities=t.DisplayTab.instance.entities,this.sources=t.DisplayTab.instance.sources,this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.entity_list=e("<ul/>").attr("id","entity_list").append('<li class="clear"/>'),this.entities.on("add",this.render_entity,this),this.entities.on("remove",this.remove_entity,this),this.entities.on("reset",this.entities_reset,this),this.entities.on("change:sortorder",function(e){this.entities.remove(e,{silent:!0}),this.entities.add(e,{at:e.changed.sortorder,silent:!0}),this.displayed_gallery.set("sortorder",this.entities.entity_ids()),"undefined"!=typeof console&&void 0!==console.log&&console.log(this.entities.entity_ids()),this.displayed_gallery.set("order_by","sortorder")},this),this.sources.on("selected",this.render,this),this.render()},events:{opened:"entities_reset"},entities_reset:function(e){this.entities.reset(null,{silent:!0}),this.entity_list.empty().append('<li class="clear"/>'),this.entities.in_progress||this.entities.fetch()},render_entity:function(e){var t=new this.EntityElement({model:e});this.entity_list.find(".clear").before(t.render().$el),t.$el.css("visibility","hidden"),setTimeout(function(){t.$el.css("visibility","visible")},0),1==this.$el.find(".no_entities").length?this.render():this.entities.length>1&&this.entity_list.sortable("refresh")},remove_entity:function(e){var t=this.id=e.get("id_field")+"_"+e.entity_id();this.entity_list.find("#"+t).remove();this.entity_list.sortable("refresh"),0==this.entities.length&&this.render_no_images_notice()},render_no_images_notice:function(){this.$el.empty(),this.$el.append("<p class='no_entities'>"+igw_data.i18n.no_entities+"</p>")},render:function(){return this.$el.empty(),this.entities.length>0&&this.displayed_gallery.get("container_ids").length>0?(this.$el.append(new this.RefreshButton({entities:this.entities}).render().el),this.$el.append(new this.SortButtons({entities:this.entities,displayed_gallery:this.displayed_gallery,sources:this.sources}).render().el),this.$el.append(new this.ExcludeButtons({entities:this.entities}).render().el),this.$el.append(this.entity_list),this.entity_list.sortable({placeholder:"placeholder",forcePlaceholderSize:!0,containment:"parent",opacity:.7,revert:!0,dropOnEmpty:!0,start:function(e,t){return t.placeholder.css({height:t.item.height()}),!0},stop:function(e,t){t.item.trigger("drop",t.item.index())}}),this.entity_list.disableSelection()):this.render_no_images_notice(),this},RefreshButton:Backbone.View.extend({className:"refresh_button button-primary",tagName:"input",label:"Refresh",events:{click:"clicked"},clicked:function(){this.entities.reset()},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},render:function(){return this.$el.attr({value:this.label,type:"button"}),this}}),ExcludeButtons:Backbone.View.extend({className:"header_row",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},render:function(){this.$el.empty(),this.$el.append('<span style="margin-right: 8px;">Exclude:</span>');var e=new this.Button({value:!0,text:"All",entities:this.entities});this.$el.append(e.render().el),this.$el.append('<span class="separator">|</span>');var t=new this.Button({value:!1,text:"None",entities:this.entities});return this.$el.append(t.render().el),this},Button:Backbone.View.extend({tagName:"a",value:1,text:"",events:{click:"clicked"},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},clicked:function(e){e.preventDefault(),this.entities.each(function(e){e.set("exclude",this.value)},this)},render:function(){return this.$el.text(this.text).attr("href","#"),this}})}),SortButtons:Backbone.View.extend({className:"header_row",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.sortorder_options=new t.DisplayTab.Models.SortOrder_Options,this.sortorder_options.on("change:selected",this.sortoption_changed,this),this.sortdirection_options=new t.DisplayTab.Models.SortDirection_Options([{value:"ASC",title:"Ascending",selected:"ASC"==this.displayed_gallery.get("order_direction")},{value:"DESC",title:"Descending",selected:"DESC"==this.displayed_gallery.get("order_direction")}]),this.sortdirection_options.on("change:selected",this.sortdirection_changed,this),this.displayed_gallery.on("change:order_by",this.displayed_gallery_order_changed,this),this.displayed_gallery.on("change.order_direction",this.displayed_gallery_order_dir_changed,this)},populate_sorting_fields:function(){var e=this.sources.selected().pop().get("returns");-1!==_.indexOf(e,"image")?this.fill_image_sortorder_options():this.fill_gallery_sortorder_options()},create_sortorder_option:function(e,i){return new t.DisplayTab.Models.SortOrder({name:e,title:i,value:e,selected:this.displayed_gallery.get("order_by")==e})},fill_image_sortorder_options:function(){this.sortorder_options.reset(),this.sortorder_options.push(this.create_sortorder_option("","None")),this.sortorder_options.push(this.create_sortorder_option("sortorder","Custom")),this.sortorder_options.push(this.create_sortorder_option(t.DisplayTab.instance.image_key,"Image ID")),this.sortorder_options.push(this.create_sortorder_option("filename","Filename")),this.sortorder_options.push(this.create_sortorder_option("alttext","Alt/Title Text")),this.sortorder_options.push(this.create_sortorder_option("imagedate","Date/Time"))},fill_gallery_sortorder_options:function(){this.sortorder_options.reset(),this.sortorder_options.push(this.create_sortorder_option("","None")),this.sortorder_options.push(this.create_sortorder_option("sortorder","Custom")),this.sortorder_options.push(this.create_sortorder_option("name","Name")),this.sortorder_options.push(this.create_sortorder_option("galdesc","Description"))},displayed_gallery_order_changed:function(e){this.sortorder_options.findWhere({value:e.get("order_by")}).set("selected",!0)},displayed_gallery_order_dir_changed:function(e){this.sortdirection_options.findWhere({value:e.get("order_direction")}).set("selected",!0)},sortoption_changed:function(t){this.sortorder_options.each(function(e){e.set("selected",t.get("value")==e.get("value"),{silent:!0})}),this.displayed_gallery.set("sortorder",[]);var i=t.get("value");0==t.get("value").length&&(i="sortorder"),this.displayed_gallery.set("order_by",i),this.entities.reset(),this.$el.find("a.sortorder").each(function(){var i=e(this);i.attr("value")==t.get("value")?i.addClass("selected"):i.removeClass("selected")})},sortdirection_changed:function(t){this.sortdirection_options.each(function(e){e.set("selected",t.get("value")==e.get("value"),{silent:!0})}),this.displayed_gallery.set("order_direction",t.get("value")),this.entities.reset(),this.$el.find("a.sortdirection").each(function(){var i=e(this);i.attr("value")==t.get("value")?i.addClass("selected"):i.removeClass("selected")})},render:function(){return this.$el.empty(),this.populate_sorting_fields(),this.$el.append('<span style="margin-right: 8px;">Sort By:</span>'),this.sortorder_options.each(function(e,t){var i=new this.Button({model:e,className:"sortorder"});this.$el.append(i.render().el),this.sortorder_options.length-1>t&&this.$el.append('<span class="separator">|</span>')},this),this.$el.append('<span style="margin: 0 8px 0 40px;">Order By:</span>'),this.sortdirection_options.each(function(e,t){var i=new this.Button({model:e,className:"sortdirection"});this.$el.append(i.render().el),this.sortdirection_options.length-1>t&&this.$el.append('<span class="separator">|</span>')},this),this},Button:Backbone.View.extend({tagName:"a",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},events:{click:"clicked"},clicked:function(e){e.preventDefault(),this.model.set("selected",!0)},render:function(){return this.$el.prop({value:this.model.get("value"),href:"#"}),this.$el.text(this.model.get("title")),this.model.get("selected")&&this.$el.addClass("selected"),this}})}),EntityElement:Backbone.View.extend({tagName:"li",events:{drop:"item_dropped"},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.initTime=(new Date).getTime(),this.model.on("change",this.render,this),0==this.model.get("sortorder")&&this.model.set("sortorder",-1,{silent:!0}),this.id=this.model.get("id_field")+"_"+this.model.entity_id()},item_dropped:function(e,i){t.DisplayTab.instance.displayed_gallery.set("order_by","sortorder"),this.model.set("sortorder",i)},render:function(){this.$el.empty();var t=e("<div/>").addClass("preview_item"),i=e("<div/>").addClass("image_container"),s=this.model.alttext().replace(/\\&/g,"&").replace(/\\'/g,"'"),l=this.initTime;i.attr({title:s,style:"background-image: url('"+this.model.get("thumb_url")+"?timestamp"+l+"')"}),this.$el.append(t).addClass("ui-state-default"),t.append(i);var n=e("<div/>").addClass("exclude_container"),a=e("<label/>");a.append(igw_data.i18n.exclude_question);var r=new this.ExcludeCheckbox({model:this.model});return a.append(r.render().el),n.append(a),t.append(n),this},ExcludeCheckbox:Backbone.View.extend({tagName:"input",events:{change:"entity_excluded"},type_set:!1,entity_excluded:function(e){this.model.set("exclude",e.target.checked)},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.model.on("change:exclude",this.render,this)},render:function(){return this.type_set||(this.$el.attr("type","checkbox"),this.type_set=!0),this.model.is_excluded()?this.$el.prop("checked",!0):this.$el.prop("checked",!1),this}})})}),t.DisplayTab.Views.GalleriesSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.galleries=t.DisplayTab.instance.galleries},render:function(){var i=new t.Views.Chosen({collection:this.galleries,placeholder:igw_data.i18n.select_gallery,multiple:!0,width:500}),s=e('<tr><td class="galleries_column"></td><td><label>'+igw_data.i18n.galleries+"</label></td></tr>");return this.$el.empty(),this.$el.append(s),this.$el.find(".galleries_column").append(i.render().el),this}}),t.DisplayTab.Views.AlbumsSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.albums=t.DisplayTab.instance.albums},render:function(){var e=new t.Views.Chosen({collection:this.albums,multiple:!0,placeholder:"Select an album",text_field:"name",width:500});return this.$el.empty(),this.$el.append('<tr><td class="albums_column"></td><td><label>'+igw_data.i18n.albums+"</label></td></tr>"),this.$el.find(".albums_column").append(e.render().el),this}}),t.DisplayTab.Views.TagsSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.tags=t.DisplayTab.instance.tags},render:function(){var e=new t.Views.Chosen({collection:this.tags,multiple:!0,placeholder:"Select a tag",text_field:"name",width:500});return this.$el.empty(),this.$el.append('<tr><td class="tags_column"></td><td><label>Tags</label></td></tr>'),this.$el.find(".tags_column").append(e.render().el),this}}),t.DisplayTab.Views.Recent_imagesSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.maximum_entity_count=t.DisplayTab.instance.displayed_gallery.get("maximum_entity_count"),this.displayed_gallery.set("container_ids",[])},render:function(){var t=this,i=e("<input/>").prop({type:"text",value:this.maximum_entity_count,name:"maximum_entity_count"});return i.change(function(){t.displayed_gallery.set("maximum_entity_count",e(this).val())}),this.$el.empty(),this.$el.append('<tr><td class="recent_images_column"></td><td><label># of Images To Display</label></td></tr>'),this.$el.find(".recent_images_column").append(i),this}}),t.DisplayTab.Views.Random_imagesSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.maximum_entity_count=t.DisplayTab.instance.displayed_gallery.get("maximum_entity_count"),this.displayed_gallery.set("container_ids",[])},render:function(){var t=this,i=e("<input/>").prop({type:"text",value:this.maximum_entity_count,name:"maximum_entity_count"});return i.change(function(){t.displayed_gallery.set("maximum_entity_count",e(this).val())}),this.$el.empty(),this.$el.append('<tr><td class="random_images_column"></td><td><label># of Images To Display</label></td></tr>'),this.$el.find(".random_images_column").append(i),this}}),t.DisplayTab.Views.SaveButton=Backbone.View.extend({el:"#save_displayed_gallery",errors_el:"#errors",displayed_gallery:null,events:{click:"clicked"},initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.entities=t.DisplayTab.instance.entities,this.render()},clicked:function(){this.set_display_settings();var e=this.displayed_gallery.to_shortcode();insert_into_editor(e,this.displayed_gallery.id?this.displayed_gallery.id:igw_data.shortcode_ref);var t=null;(t=location.toString().match(/editor=([^\&]+)/))&&t.length>=2&&top.tinyMCE.editors[t[1]].fire("ngg-inserted",{shortcode:e}),close_attach_to_post_window()},set_display_settings:function(){var t=this.displayed_gallery.get("display_type");if(t){var i=e("form[rel='"+t+"']"),s=i.data("defaults"),l=function(t){var i={};return e.each(t.serializeArray(),function(e,t){for(var l=t.name.split("["),n=i,a=0;a<l.length;a++){var r=l[a].replace(/\]$/,"");if(s[r]==t.value)return!0;n[r]||(a==l.length-1?n[r]=t.value:n[r]={}),n=n[r]}}),i}(i);this.displayed_gallery.set("display_settings",l[t])}},render:function(){return this.$el.css("z-index",1e3),this}}),t.DisplayTab.App=Backbone.View.extend({initialize:function(){if(this.displayed_gallery=new t.DisplayTab.Models.Displayed_Gallery(igw_data.displayed_gallery),this.original_displayed_gallery=new t.DisplayTab.Models.Displayed_Gallery(igw_data.displayed_gallery),this.galleries=new t.DisplayTab.Models.Gallery_Collection(igw_data.galleries),this.albums=new t.DisplayTab.Models.Album_Collection(igw_data.albums),this.tags=new t.DisplayTab.Models.Tag_Collection(igw_data.tags),this.sources=new t.DisplayTab.Models.Source_Collection(igw_data.sources),this.display_types=new t.DisplayTab.Models.Display_Type_Collection(igw_data.display_types),this.display_type_order_base=igw_data.display_type_priority_base,this.display_type_order_step=igw_data.display_type_priority_step,this.entities=new t.DisplayTab.Models.Entity_Collection,this.entities.extra_data.displayed_gallery=this.displayed_gallery,this.image_key=igw_data.image_primary_key,this.displayed_gallery.get("source")){if(this.displayed_gallery.get("source")){var i=this.sources.find_by_name_or_alias(this.displayed_gallery.get("source"));i&&i.set("selected",!0)}if(this.displayed_gallery.get("container_ids")&&_.each(this.displayed_gallery.get("container_ids"),function(e){var t=this[this.displayed_gallery.get("source")].find(function(t){return t.id==e},this);t&&t.set("selected",!0)},this),this.displayed_gallery.get("display_type")){var s=this.display_types.find_by_name_or_alias(this.displayed_gallery.get("display_type"));s&&(s.set("selected",!0),this.displayed_gallery.set("display_type",s.get("name")))}}if(collections=["galleries","albums","tags"],_.each(collections,function(e){this[e].on("selected",function(){this.update_selected_containers(e)},this)},this),this.display_types.on("change:selected",function(){this.displayed_gallery.set("display_type",this.display_types.selected_value())},this),this.sources.on("selected",function(){e("#save_displayed_gallery").prop("disabled",!0),setTimeout(function(){e("#save_displayed_gallery").prop("disabled",!1)},1e3),this.displayed_gallery.set("source",this.sources.selected_value()),this.sources.selected_value()!=this.original_displayed_gallery.get("source")?this.displayed_gallery.set("exclusions",this.entities.excluded_ids()):this.displayed_gallery.set("exclusions",this.original_displayed_gallery.get("exclusions")),"random_images"!=this.sources.selected_value()&&"recent_images"!=this.sources.selected_value()||this.displayed_gallery.set("maximum_entity_count",20),this.galleries.deselect_all(),this.albums.deselect_all(),this.tags.deselect_all();var t=this.display_types.selected(),i=this.sources.selected();t.length>0&&i.length>0&&(t=t[0],i=i[0],t.is_compatible_with_source(i)||this.display_types.deselect_all(),this.display_type_selector&&this.display_type_selector.render()),this.preview_area&&this.preview_area.render()},this),this.entities.on("change:exclude finished_fetching",function(){this.displayed_gallery.set("exclusions",this.entities.excluded_ids())},this),!this.displayed_gallery.get("source")){var l=this.sources.find_by_name_or_alias("galleries");l&&(l.set("selected",!0),this.sources.trigger("selected"))}if(window.Frame_Event_Publisher){var n=this;Frame_Event_Publisher.listen_for("attach_to_post:new_gallery",function(){n.galleries.reset(),n.galleries.fetch()}),Frame_Event_Publisher.listen_for("attach_to_post:manage_galleries attach_to_post:manage_images",function(e){n.galleries.reset(),n.galleries.fetch();var t=n.sources.selected().pop();t&&(_.indexOf(t.get("returns"),"image")>=0||_.indexOf(t.get("returns"),"gallery"))&&n.entities.reset()}),Frame_Event_Publisher.listen_for("attach_to_post:manage_album",function(e){n.albums.reset(),n.albums.fetch();var t=n.sources.selected().pop();t&&_.indexOf(t.get("returns"),"album")>=0&&n.entities.reset()}),Frame_Event_Publisher.listen_for("attach_to_post:manage_tags attach_to_post:manage_images",function(e){n.tags.reset(),n.tags.fetch();var t=n.sources.selected().pop();t&&(_.indexOf(t.get("returns"),"image")>=0||_.indexOf(t.get("returns"),"gallery"))&&n.entities.reset()}),Frame_Event_Publisher.listen_for("attach_to_post:thumbnail_modified",function(e){var t=n.sources.selected().pop(),i=e.image[e.image.id_field];if(t)if(_.indexOf(t.get("returns"),"image")>=0){var s=n.entities.find(function(e){return parseInt(e.entity_id())==parseInt(i)},this);s&&s.set("thumb_url",e.image.thumb_url)}else{var l=n.entities.find(function(e){return parseInt(e.get("previewpic"))==i},this);l&&l.trigger("change")}})}},update_selected_containers:function(e){this.displayed_gallery.set("container_ids",this[e].selected_ids())},render:function(){this.display_type_selector=new t.DisplayTab.Views.Display_Type_Selector,new t.DisplayTab.Views.Source_Config,new t.DisplayTab.Views.Slug_Config,this.preview_area=new t.DisplayTab.Views.Preview_Area,new t.DisplayTab.Views.SaveButton}}),window.Ngg=t,e(window).trigger("ngg_before_igw_render"),t.DisplayTab.instance=new t.DisplayTab.App,t.DisplayTab.instance.render(),e("span.tooltip, label.tooltip").tooltip()});
1
+ "use strict";jQuery(function(e){var t={Models:{},Views:{}};t.Models.SelectableItems=Backbone.Collection.extend({selected:function(){return this.filter(function(e){return 1==e.get("selected")})},deselect_all:function(){this.each(function(e){e.set("selected",!1)})},selected_ids:function(){return _.pluck(this.selected(),"id")},select:function(e){_.isArray(e)||(e=[e]),this.each(function(t){_.indexOf(e,t.id)>=0&&t.set("selected",!0)}),this.trigger("selected")}}),t.Views.SelectTag=Backbone.View.extend({tagName:"select",collection:null,multiple:!1,value_field:"id",text_field:"title",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.collection.on("add",this.render_new_option,this),this.collection.on("remove",this.remove_existing_option,this),this.collection.on("reset",this.empty_list,this)},events:{change:"selection_changed"},empty_list:function(){this.$el.empty()},render_new_option:function(e){this.$el.append(new this.Option({model:e,value_field:this.value_field,text_field:this.text_field}).render().el)},remove_existing_option:function(e){this.$el.find("option[value='"+e.id+"']").remove()},selection_changed:function(){var t=_.map(this.$el.find(":selected"),function(t){return e(t).val()});this.collection.each(function(e){_.indexOf(t,e.id)>=0||_.indexOf(t,e.id.toString())>=0?e.set("selected",!0):e.set("selected",!1)}),this.collection.trigger("selected")},render:function(){return this.$el.empty(),this.multiple&&(this.$el.prop("multiple",!0),this.$el.attr("multiple","multiple")),this.collection.each(function(e){var t=new this.Option({model:e,value_field:this.value_field,text_field:this.text_field});this.$el.append(t.render().el)},this),this.width&&this.$el.width(this.width),this},Option:Backbone.View.extend({tagName:"option",model:null,initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.model.on("change",this.render,this)},render:function(){var e=this;return this.$el.html(this.model.get(this.text_field).replace(/\\&/g,"&").replace(/\\'/g,"'")),this.$el.prop({value:"id"==this.value_field?this.model.id:this.model.get(this.value_field)}),1==e.model.get("selected")&&this.$el.prop("selected",!0).attr("selected","selected"),this}})}),t.Views.Chosen=Backbone.View.extend({tagName:"span",initialize:function(e){this.options=e||{},this.collection=this.options.collection,this.select_tag=new t.Views.SelectTag(this.options),this.collection.on("change",this.selection_changed,this)},selection_changed:function(e){_.isUndefined(e.changed.selected)&&this.render()},render:function(){return this.$el.append(this.select_tag.render().$el),this.options.width&&this.select_tag.$el.width(this.options.width),this.select2_opts={placeholder:this.options.placeholder},this.select_tag.$el.select2(this.select2_opts),this}}),t.DisplayTab={Models:{},Views:{},App:{}},t.Models.Remote_Collection=t.Models.SelectableItems.extend({fetch_limit:5e3,in_progress:!1,fetch_url:photocrati_ajax.url,action:"",extra_data:{},_create_request:function(e,t){var i={action:this.action,limit:e||this.fetch_limit,offset:t||0,nonce:igw_data.nonce};for(var s in this.extra_data){var l=this.extra_data[s];void 0===i[s]&&(i[s]={}),void 0!==l.toJSON&&(l=l.toJSON()),i[s]=_.extend(i[s],l)}return i},_add_item:function(e){this.push(e)},fetch:function(t,i){var s=this;this.in_progress=!0,e.post(this.fetch_url,this._create_request(t,i),function(e){"undefined"!=typeof _&&(_.isObject(e)||(e=JSON.parse(e)),e.items&&(_.each(e.items,function(e){s._add_item(e)}),e.total>=e.limit+e.offset?s.fetch(e.limit,e.offset+e.limit):(s.in_progress=!1,s.trigger("finished_fetching"))))})}}),t.DisplayTab.Models.Displayed_Gallery=Backbone.Model.extend({defaults:{source:null,container_ids:[],entity_ids:[],display_type:null,display_settings:{},exclusions:[],sortorder:[],slug:null},to_shortcode:function(){retval=null;var e=function(e,t){var i=e[t];if(void 0!==igw_data.shortcode_defaults[t]&&igw_data.shortcode_defaults[t]==i&&(i=null),_.isArray(i)&&(i=i.length>0?i.join(","):null),i)return i=i.toString().replace("[","&#91;"),i=i.toString().replace("]","&#93;"),void 0!==igw_data.shortcode_attr_replacements[t]&&(t=igw_data.shortcode_attr_replacements[t]),t+'="'+i+'"'},i=t.DisplayTab.instance.display_types.find_by_name_or_alias(this.get("display_type")),s=this.toJSON();s.display_type=i.get_shortcode_value();var l="[ngg",n=null;(n=e(s,"source"))&&(l+=" "+n),(n=e(s,"container_ids"))&&(l+=" "+n),(n=e(s,"entity_ids"))&&(l+=" "+n),(n=e(s,"exclusions"))&&(l+=" "+n),(n=e(s,"sortorder"))&&(l+=" "+n);for(var a in s){if(!(["source","container_ids","entity_ids","exclusions","sortorder","__defaults_set","id_field","post_category","ID"].indexOf(a)>-1))if("display_settings"==a)for(var r in s[a])(n=e(s[a],r))&&(l+=" "+n);else(n=e(s,a))&&(l+=" "+n)}return l+="]"}}),t.DisplayTab.Models.Source=Backbone.Model.extend({idAttribute:"name",defaults:{title:"",name:"",selected:!1}}),t.DisplayTab.Models.Source_Collection=t.Models.SelectableItems.extend({model:t.DisplayTab.Models.Source,selected_value:function(){var e=null,t=this.selected();return t.length>0&&(e=t[0].get("name")),e},find_by_name_or_alias:function(e){return this.find(function(t){return t.get("name")==e||_.isArray(t.get("aliases"))&&t.get("aliases").indexOf(e)>-1})}}),t.DisplayTab.Models.Gallery=Backbone.Model.extend({idAttribute:igw_data.gallery_primary_key,defaults:{title:"",name:""}}),t.DisplayTab.Models.Gallery_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Gallery,action:"get_existing_galleries"}),t.DisplayTab.Models.Album=Backbone.Model.extend({defaults:{title:"",name:""}}),t.DisplayTab.Models.Album_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Album,action:"get_existing_albums"}),t.DisplayTab.Models.Tag=Backbone.Model.extend({defaults:{title:""}}),t.DisplayTab.Models.Tag_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Tag,action:"get_existing_image_tags"}),t.DisplayTab.Models.Display_Type=Backbone.Model.extend({idAttribute:"name",defaults:{title:""},is_compatible_with_source:function(e){var t=!0;for(index in e.get("returns")){var i=e.get("returns")[index];if(_.indexOf(this.get("entity_types"),i)<0){t=!1;break}}return t},get_shortcode_value:function(){var e=this.id,t=this.get("aliases");return _.isArray(t)&&t.length>0&&(e=t[0]),e}}),t.DisplayTab.Models.Display_Type_Collection=t.Models.SelectableItems.extend({model:t.DisplayTab.Models.Display_Type,selected_value:function(){var e=this.selected();return e.length>0?e[0].get("name"):null},find_by_name_or_alias:function(e){return this.find(function(t){return t.get("name")==e||_.isArray(t.get("aliases"))&&t.get("aliases").indexOf(e)>-1})}}),t.DisplayTab.Models.Entity=Backbone.Model.extend({entity_id:function(){return this.get(this.get("id_field"))},is_excluded:function(){return current_value=this.get("exclude"),!_.isUndefined(current_value)&&(_.isBoolean(current_value)?current_value:0!=parseInt(current_value))},is_included:function(){return!this.is_excluded()},is_gallery:function(){return retval=!1,1==this.get("is_gallery")&&(retval=!0),retval},is_album:function(){return retval=!1,1==this.get("is_album")&&(retval=!0),retval},is_image:function(){return!this.is_album()&&!this.is_gallery()},alttext:function(){return this.is_image()?this.get("alttext"):this.is_gallery()?this.get("title"):this.is_album()?this.get("name"):void 0}}),t.DisplayTab.Models.Entity_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Entity,action:"get_displayed_gallery_entities",_add_item:function(e){e.exclude=1==parseInt(e.exclude),e.is_gallery=1==parseInt(e.is_gallery),e.is_album=1==parseInt(e.is_album),this.push(e)},entity_ids:function(){return this.map(function(e){return e.entity_id()})},included_ids:function(){return _.compact(this.map(function(e){if(e.is_included())return e.entity_id()}))},excluded_ids:function(){return _.compact(this.map(function(e){if(!e.is_included())return e.entity_id()}))}}),t.DisplayTab.Models.SortOrder=Backbone.Model.extend({}),t.DisplayTab.Models.SortOrder_Options=t.Models.SelectableItems.extend({model:t.DisplayTab.Models.SortOrder}),t.DisplayTab.Models.SortDirection=Backbone.Model.extend({}),t.DisplayTab.Models.SortDirection_Options=Backbone.Collection.extend({model:t.DisplayTab.Models.SortDirection}),t.DisplayTab.Models.Slug=Backbone.Model.extend({}),t.DisplayTab.Views.Source_Config=Backbone.View.extend({el:"#source_configuration",selected_view:null,initialize:function(){this.sources=t.DisplayTab.instance.sources,this.sources.on("selected",this.render,this),_.bindAll(this,"render"),this.render()},render:function(){var e=new t.Views.Chosen({id:"source_select",collection:this.sources,placeholder:"Select a source",width:500}),i=_.template('<tr><td id="source_column"></td><td><label><%- sources %></label></td></tr>');this.$el.html(i(igw_data.i18n)),this.$el.find("#source_column").append(e.render().el);var s=this.sources.selected();if(s.length){var l=function(e){return e=String(e),e.charAt(0).toUpperCase()+e.slice(1)}(s.pop().id)+"Source";if(void 0!==t.DisplayTab.Views[l]){var n=new t.DisplayTab.Views[l];this.$el.append(n.render().el)}}return this}}),t.DisplayTab.Views.Slug_Config=Backbone.View.extend({el:"#slug_configuration",selected_view:null,initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.slug=t.DisplayTab.instance.displayed_gallery.get("slug"),this.render()},render:function(){var t=this,i=e("<input>").prop({type:"text",name:"slug",value:this.slug,placeholder:igw_data.i18n.optional,id:"field_slug"});i.on("input",function(){e(this).val(e(this).val().replace(/\s|\?|\\|\/|&|=|\[|]|#/gm,"-")),t.displayed_gallery.set("slug",e(this).val())}),i.on("change",function(){e(this).val(e(this).val().replace(/^-*/gm,"").replace(/-*$/gm,"")),t.displayed_gallery.set("slug",e(this).val())});var s=_.template('<tr><td id="slug_label"><label for="field_slug" class="tooltip" title="<%- slug_tooltip %><"><<%- slug_label %></label></td><td id="slug_column"></td></tr>');return this.$el.append(s(igw_data.i18n)),this.$el.find("#slug_column").append(i),this}}),t.DisplayTab.Views.Display_Type_Selector=Backbone.View.extend({el:"#display_type_selector",initialize:function(){this.display_types=t.DisplayTab.instance.display_types,this.display_type_order_base=t.DisplayTab.instance.display_type_order_base,this.display_type_order_step=t.DisplayTab.instance.display_type_order_step,this.sources=t.DisplayTab.instance.sources,this.render()},selection_changed:function(t){var i=null;this.display_types.each(function(e){e.get("name")==t?(i=e,e.set("selected",!0)):e.set("selected",!1)}),e(".display_settings_form").each(function(){$this=e(this),$this.attr("rel")==t?$this.removeClass("hidden"):$this.addClass("hidden")})},render:function(){var i=this.sources.selected(),s=0;i=i.length>0&&i[0],this.$el.empty();var l=this.display_type_order_base,n=this.display_type_order_step;return this.display_types.each(function(a){if(i&&!a.is_compatible_with_source(i)){var r=e("#display_type_tab_content:visible");if(0==r.length)return;if("hidden"==r.css("visibility"))return}var o=new t.DisplayTab.Views.DisplayType;o.model=a,o.on("selected",this.selection_changed,this),this.display_types.selected_value()||(a.set("selected",!0),this.selection_changed(a.id));var d=a.get("view_order");d||(d=l);var c=Math.floor(d/n);s=c,this.$el.append(o.render().el)},this),this.$el.append('<li class="clear" style="height: 10px; list-style-type:none" />'),this}}),t.DisplayTab.Views.DisplayType=Backbone.View.extend({className:"display_type_preview",events:{click:"clicked"},clicked:function(e){this.trigger("selected",this.model.get("name"))},render:function(){var t=e('<label style="display: block; cursor: pointer;"/>').addClass("image_container"),i=e("<img/>").attr({src:this.model.get("preview_image_url"),title:this.model.get("title"),alt:this.model.get("alt")}),s=e("<div/>"),l=e("<input/>").prop({type:"radio",value:this.model.get("name"),title:this.model.get("title"),name:"display_type",checked:this.model.get("selected")}),n=e("<br>");return t.append(s),t.append(i),t.append("<br>"),t.append(this.model.get("title").replace(/nextgen /gi,"")),s.append(l),s.append(n),this.$el.append(t),this}}),t.DisplayTab.Views.Preview_Area=Backbone.View.extend({el:"#preview_area",initialize:function(){this.entities=t.DisplayTab.instance.entities,this.sources=t.DisplayTab.instance.sources,this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.entity_list=e("<ul/>").attr("id","entity_list").append('<li class="clear"/>'),this.entities.on("add",this.render_entity,this),this.entities.on("remove",this.remove_entity,this),this.entities.on("reset",this.entities_reset,this),this.entities.on("change:sortorder",function(e){this.entities.remove(e,{silent:!0}),this.entities.add(e,{at:e.changed.sortorder,silent:!0}),this.displayed_gallery.set("sortorder",this.entities.entity_ids()),"undefined"!=typeof console&&void 0!==console.log&&console.log(this.entities.entity_ids()),this.displayed_gallery.set("order_by","sortorder")},this),this.sources.on("selected",this.render,this),this.render()},events:{opened:"entities_reset"},entities_reset:function(e){this.entities.reset(null,{silent:!0}),this.entity_list.empty().append('<li class="clear"/>'),this.entities.in_progress||this.entities.fetch()},render_entity:function(e){var t=new this.EntityElement({model:e});this.entity_list.find(".clear").before(t.render().$el),t.$el.css("visibility","hidden"),setTimeout(function(){t.$el.css("visibility","visible")},0),1==this.$el.find(".no_entities").length?this.render():this.entities.length>1&&this.entity_list.sortable("refresh")},remove_entity:function(e){var t=this.id=e.get("id_field")+"_"+e.entity_id();this.entity_list.find("#"+t).remove();this.entity_list.sortable("refresh"),0==this.entities.length&&this.render_no_images_notice()},render_no_images_notice:function(){this.$el.empty(),this.$el.append("<p class='no_entities'>"+igw_data.i18n.no_entities+"</p>")},render:function(){return this.$el.empty(),this.entities.length>0&&this.displayed_gallery.get("container_ids").length>0?(this.$el.append(new this.RefreshButton({entities:this.entities}).render().el),this.$el.append(new this.SortButtons({entities:this.entities,displayed_gallery:this.displayed_gallery,sources:this.sources}).render().el),this.$el.append(new this.ExcludeButtons({entities:this.entities}).render().el),this.$el.append(this.entity_list),this.entity_list.sortable({placeholder:"placeholder",forcePlaceholderSize:!0,containment:"parent",opacity:.7,revert:!0,dropOnEmpty:!0,start:function(e,t){return t.placeholder.css({height:t.item.height()}),!0},stop:function(e,t){t.item.trigger("drop",t.item.index())}}),this.entity_list.disableSelection()):this.render_no_images_notice(),this},RefreshButton:Backbone.View.extend({className:"refresh_button button-primary",tagName:"input",label:"Refresh",events:{click:"clicked"},clicked:function(){this.entities.reset()},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},render:function(){return this.$el.attr({value:this.label,type:"button"}),this}}),ExcludeButtons:Backbone.View.extend({className:"header_row",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},render:function(){this.$el.empty(),this.$el.append('<span style="margin-right: 8px;">Exclude:</span>');var e=new this.Button({value:!0,text:"All",entities:this.entities});this.$el.append(e.render().el),this.$el.append('<span class="separator">|</span>');var t=new this.Button({value:!1,text:"None",entities:this.entities});return this.$el.append(t.render().el),this},Button:Backbone.View.extend({tagName:"a",value:1,text:"",events:{click:"clicked"},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},clicked:function(e){e.preventDefault(),this.entities.each(function(e){e.set("exclude",this.value)},this)},render:function(){return this.$el.text(this.text).attr("href","#"),this}})}),SortButtons:Backbone.View.extend({className:"header_row",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.sortorder_options=new t.DisplayTab.Models.SortOrder_Options,this.sortorder_options.on("change:selected",this.sortoption_changed,this),this.sortdirection_options=new t.DisplayTab.Models.SortDirection_Options([{value:"ASC",title:"Ascending",selected:"ASC"==this.displayed_gallery.get("order_direction")},{value:"DESC",title:"Descending",selected:"DESC"==this.displayed_gallery.get("order_direction")}]),this.sortdirection_options.on("change:selected",this.sortdirection_changed,this),this.displayed_gallery.on("change:order_by",this.displayed_gallery_order_changed,this),this.displayed_gallery.on("change.order_direction",this.displayed_gallery_order_dir_changed,this)},populate_sorting_fields:function(){var e=this.sources.selected().pop().get("returns");-1!==_.indexOf(e,"image")?this.fill_image_sortorder_options():this.fill_gallery_sortorder_options()},create_sortorder_option:function(e,i){return new t.DisplayTab.Models.SortOrder({name:e,title:i,value:e,selected:this.displayed_gallery.get("order_by")==e})},fill_image_sortorder_options:function(){this.sortorder_options.reset(),this.sortorder_options.push(this.create_sortorder_option("","None")),this.sortorder_options.push(this.create_sortorder_option("sortorder","Custom")),this.sortorder_options.push(this.create_sortorder_option(t.DisplayTab.instance.image_key,"Image ID")),this.sortorder_options.push(this.create_sortorder_option("filename","Filename")),this.sortorder_options.push(this.create_sortorder_option("alttext","Alt/Title Text")),this.sortorder_options.push(this.create_sortorder_option("imagedate","Date/Time"))},fill_gallery_sortorder_options:function(){this.sortorder_options.reset(),this.sortorder_options.push(this.create_sortorder_option("","None")),this.sortorder_options.push(this.create_sortorder_option("sortorder","Custom")),this.sortorder_options.push(this.create_sortorder_option("name","Name")),this.sortorder_options.push(this.create_sortorder_option("galdesc","Description"))},displayed_gallery_order_changed:function(e){this.sortorder_options.findWhere({value:e.get("order_by")}).set("selected",!0)},displayed_gallery_order_dir_changed:function(e){this.sortdirection_options.findWhere({value:e.get("order_direction")}).set("selected",!0)},sortoption_changed:function(t){this.sortorder_options.each(function(e){e.set("selected",t.get("value")==e.get("value"),{silent:!0})}),this.displayed_gallery.set("sortorder",[]);var i=t.get("value");0==t.get("value").length&&(i="sortorder"),this.displayed_gallery.set("order_by",i),this.entities.reset(),this.$el.find("a.sortorder").each(function(){var i=e(this);i.attr("value")==t.get("value")?i.addClass("selected"):i.removeClass("selected")})},sortdirection_changed:function(t){this.sortdirection_options.each(function(e){e.set("selected",t.get("value")==e.get("value"),{silent:!0})}),this.displayed_gallery.set("order_direction",t.get("value")),this.entities.reset(),this.$el.find("a.sortdirection").each(function(){var i=e(this);i.attr("value")==t.get("value")?i.addClass("selected"):i.removeClass("selected")})},render:function(){return this.$el.empty(),this.populate_sorting_fields(),this.$el.append('<span style="margin-right: 8px;">Sort By:</span>'),this.sortorder_options.each(function(e,t){var i=new this.Button({model:e,className:"sortorder"});this.$el.append(i.render().el),this.sortorder_options.length-1>t&&this.$el.append('<span class="separator">|</span>')},this),this.$el.append('<span style="margin: 0 8px 0 40px;">Order By:</span>'),this.sortdirection_options.each(function(e,t){var i=new this.Button({model:e,className:"sortdirection"});this.$el.append(i.render().el),this.sortdirection_options.length-1>t&&this.$el.append('<span class="separator">|</span>')},this),this},Button:Backbone.View.extend({tagName:"a",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},events:{click:"clicked"},clicked:function(e){e.preventDefault(),this.model.set("selected",!0)},render:function(){return this.$el.prop({value:this.model.get("value"),href:"#"}),this.$el.text(this.model.get("title")),this.model.get("selected")&&this.$el.addClass("selected"),this}})}),EntityElement:Backbone.View.extend({tagName:"li",events:{drop:"item_dropped"},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.initTime=(new Date).getTime(),this.model.on("change",this.render,this),0==this.model.get("sortorder")&&this.model.set("sortorder",-1,{silent:!0}),this.id=this.model.get("id_field")+"_"+this.model.entity_id()},item_dropped:function(e,i){t.DisplayTab.instance.displayed_gallery.set("order_by","sortorder"),this.model.set("sortorder",i)},render:function(){this.$el.empty();var t=e("<div/>").addClass("preview_item"),i=e("<div/>").addClass("image_container"),s=this.model.alttext().replace(/\\&/g,"&").replace(/\\'/g,"'"),l=this.initTime;i.attr({title:s,style:"background-image: url('"+this.model.get("thumb_url")+"?timestamp"+l+"')"}),this.$el.append(t).addClass("ui-state-default"),t.append(i);var n=e("<div/>").addClass("exclude_container"),a=e("<label/>");a.append(igw_data.i18n.exclude_question);var r=new this.ExcludeCheckbox({model:this.model});return a.append(r.render().el),n.append(a),t.append(n),this},ExcludeCheckbox:Backbone.View.extend({tagName:"input",events:{change:"entity_excluded"},type_set:!1,entity_excluded:function(e){this.model.set("exclude",e.target.checked)},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.model.on("change:exclude",this.render,this)},render:function(){return this.type_set||(this.$el.attr("type","checkbox"),this.type_set=!0),this.model.is_excluded()?this.$el.prop("checked",!0):this.$el.prop("checked",!1),this}})})}),t.DisplayTab.Views.GalleriesSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.galleries=t.DisplayTab.instance.galleries},render:function(){var i=new t.Views.Chosen({collection:this.galleries,placeholder:igw_data.i18n.select_gallery,multiple:!0,width:500}),s=e('<tr><td class="galleries_column"></td><td><label>'+igw_data.i18n.galleries+"</label></td></tr>");return this.$el.empty(),this.$el.append(s),this.$el.find(".galleries_column").append(i.render().el),this}}),t.DisplayTab.Views.AlbumsSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.albums=t.DisplayTab.instance.albums},render:function(){var e=new t.Views.Chosen({collection:this.albums,multiple:!0,placeholder:"Select an album",text_field:"name",width:500});return this.$el.empty(),this.$el.append('<tr><td class="albums_column"></td><td><label>'+igw_data.i18n.albums+"</label></td></tr>"),this.$el.find(".albums_column").append(e.render().el),this}}),t.DisplayTab.Views.TagsSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.tags=t.DisplayTab.instance.tags},render:function(){var e=new t.Views.Chosen({collection:this.tags,multiple:!0,placeholder:"Select a tag",text_field:"name",width:500});return this.$el.empty(),this.$el.append('<tr><td class="tags_column"></td><td><label>Tags</label></td></tr>'),this.$el.find(".tags_column").append(e.render().el),this}}),t.DisplayTab.Views.Recent_imagesSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.maximum_entity_count=t.DisplayTab.instance.displayed_gallery.get("maximum_entity_count"),this.displayed_gallery.set("container_ids",[])},render:function(){var t=this,i=e("<input/>").prop({type:"text",value:this.maximum_entity_count,name:"maximum_entity_count"});return i.on("change",function(){t.displayed_gallery.set("maximum_entity_count",e(this).val())}),this.$el.empty(),this.$el.append('<tr><td class="recent_images_column"></td><td><label># of Images To Display</label></td></tr>'),this.$el.find(".recent_images_column").append(i),this}}),t.DisplayTab.Views.Random_imagesSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.maximum_entity_count=t.DisplayTab.instance.displayed_gallery.get("maximum_entity_count"),this.displayed_gallery.set("container_ids",[])},render:function(){var t=this,i=e("<input/>").prop({type:"text",value:this.maximum_entity_count,name:"maximum_entity_count"});return i.on("change",function(){t.displayed_gallery.set("maximum_entity_count",e(this).val())}),this.$el.empty(),this.$el.append('<tr><td class="random_images_column"></td><td><label># of Images To Display</label></td></tr>'),this.$el.find(".random_images_column").append(i),this}}),t.DisplayTab.Views.SaveButton=Backbone.View.extend({el:"#save_displayed_gallery",errors_el:"#errors",displayed_gallery:null,events:{click:"clicked"},initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.entities=t.DisplayTab.instance.entities,this.render()},clicked:function(){this.set_display_settings();var e=this.displayed_gallery.to_shortcode();insert_into_editor(e,this.displayed_gallery.id?this.displayed_gallery.id:igw_data.shortcode_ref);var t=null;(t=location.toString().match(/editor=([^\&]+)/))&&t.length>=2&&top.tinyMCE.editors[t[1]].fire("ngg-inserted",{shortcode:e}),close_attach_to_post_window()},set_display_settings:function(){var t=this.displayed_gallery.get("display_type");if(t){var i=e("form[rel='"+t+"']"),s=i.data("defaults"),l=function(t){var i={};return e.each(t.serializeArray(),function(e,t){for(var l=t.name.split("["),n=i,a=0;a<l.length;a++){var r=l[a].replace(/\]$/,"");if(s[r]==t.value)return!0;n[r]||(a==l.length-1?n[r]=t.value:n[r]={}),n=n[r]}}),i}(i);this.displayed_gallery.set("display_settings",l[t])}},render:function(){return this.$el.css("z-index",1e3),this}}),t.DisplayTab.App=Backbone.View.extend({initialize:function(){if(this.displayed_gallery=new t.DisplayTab.Models.Displayed_Gallery(igw_data.displayed_gallery),this.original_displayed_gallery=new t.DisplayTab.Models.Displayed_Gallery(igw_data.displayed_gallery),this.galleries=new t.DisplayTab.Models.Gallery_Collection(igw_data.galleries),this.albums=new t.DisplayTab.Models.Album_Collection(igw_data.albums),this.tags=new t.DisplayTab.Models.Tag_Collection(igw_data.tags),this.sources=new t.DisplayTab.Models.Source_Collection(igw_data.sources),this.display_types=new t.DisplayTab.Models.Display_Type_Collection(igw_data.display_types),this.display_type_order_base=igw_data.display_type_priority_base,this.display_type_order_step=igw_data.display_type_priority_step,this.entities=new t.DisplayTab.Models.Entity_Collection,this.entities.extra_data.displayed_gallery=this.displayed_gallery,this.image_key=igw_data.image_primary_key,this.displayed_gallery.get("source")){if(this.displayed_gallery.get("source")){var i=this.sources.find_by_name_or_alias(this.displayed_gallery.get("source"));i&&i.set("selected",!0)}if(this.displayed_gallery.get("container_ids")&&_.each(this.displayed_gallery.get("container_ids"),function(e){var t=this[this.displayed_gallery.get("source")].find(function(t){return t.id==e},this);t&&t.set("selected",!0)},this),this.displayed_gallery.get("display_type")){var s=this.display_types.find_by_name_or_alias(this.displayed_gallery.get("display_type"));s&&(s.set("selected",!0),this.displayed_gallery.set("display_type",s.get("name")))}}if(collections=["galleries","albums","tags"],_.each(collections,function(e){this[e].on("selected",function(){this.update_selected_containers(e)},this)},this),this.display_types.on("change:selected",function(){this.displayed_gallery.set("display_type",this.display_types.selected_value())},this),this.sources.on("selected",function(){e("#save_displayed_gallery").prop("disabled",!0),setTimeout(function(){e("#save_displayed_gallery").prop("disabled",!1)},1e3),this.displayed_gallery.set("source",this.sources.selected_value()),this.sources.selected_value()!=this.original_displayed_gallery.get("source")?this.displayed_gallery.set("exclusions",this.entities.excluded_ids()):this.displayed_gallery.set("exclusions",this.original_displayed_gallery.get("exclusions")),"random_images"!=this.sources.selected_value()&&"recent_images"!=this.sources.selected_value()||this.displayed_gallery.set("maximum_entity_count",20),this.galleries.deselect_all(),this.albums.deselect_all(),this.tags.deselect_all();var t=this.display_types.selected(),i=this.sources.selected();t.length>0&&i.length>0&&(t=t[0],i=i[0],t.is_compatible_with_source(i)||this.display_types.deselect_all(),this.display_type_selector&&this.display_type_selector.render()),this.preview_area&&this.preview_area.render()},this),this.entities.on("change:exclude finished_fetching",function(){this.displayed_gallery.set("exclusions",this.entities.excluded_ids())},this),!this.displayed_gallery.get("source")){var l=this.sources.find_by_name_or_alias("galleries");l&&(l.set("selected",!0),this.sources.trigger("selected"))}if(window.Frame_Event_Publisher){var n=this;Frame_Event_Publisher.listen_for("attach_to_post:new_gallery",function(){n.galleries.reset(),n.galleries.fetch()}),Frame_Event_Publisher.listen_for("attach_to_post:manage_galleries attach_to_post:manage_images",function(e){n.galleries.reset(),n.galleries.fetch();var t=n.sources.selected().pop();t&&(_.indexOf(t.get("returns"),"image")>=0||_.indexOf(t.get("returns"),"gallery"))&&n.entities.reset()}),Frame_Event_Publisher.listen_for("attach_to_post:manage_album",function(e){n.albums.reset(),n.albums.fetch();var t=n.sources.selected().pop();t&&_.indexOf(t.get("returns"),"album")>=0&&n.entities.reset()}),Frame_Event_Publisher.listen_for("attach_to_post:manage_tags attach_to_post:manage_images",function(e){n.tags.reset(),n.tags.fetch();var t=n.sources.selected().pop();t&&(_.indexOf(t.get("returns"),"image")>=0||_.indexOf(t.get("returns"),"gallery"))&&n.entities.reset()}),Frame_Event_Publisher.listen_for("attach_to_post:thumbnail_modified",function(e){var t=n.sources.selected().pop(),i=e.image[e.image.id_field];if(t)if(_.indexOf(t.get("returns"),"image")>=0){var s=n.entities.find(function(e){return parseInt(e.entity_id())==parseInt(i)},this);s&&s.set("thumb_url",e.image.thumb_url)}else{var l=n.entities.find(function(e){return parseInt(e.get("previewpic"))==i},this);l&&l.trigger("change")}})}},update_selected_containers:function(e){this.displayed_gallery.set("container_ids",this[e].selected_ids())},render:function(){this.display_type_selector=new t.DisplayTab.Views.Display_Type_Selector,new t.DisplayTab.Views.Source_Config,new t.DisplayTab.Views.Slug_Config,this.preview_area=new t.DisplayTab.Views.Preview_Area,new t.DisplayTab.Views.SaveButton}}),window.Ngg=t,e(window).trigger("ngg_before_igw_render"),t.DisplayTab.instance=new t.DisplayTab.App,t.DisplayTab.instance.render(),e("span.tooltip, label.tooltip").tooltip()});
products/photocrati_nextgen/modules/attach_to_post/static/iframely.css CHANGED
@@ -157,10 +157,6 @@ html#iframely {
157
 
158
 
159
  @media (max-width: 1140px) {
160
- #iframely .plupload_buttons {
161
- display: inline;
162
- margin: 0 0 0 10px;
163
- }
164
  #iframely .gallery_page_ngg_addgallery #ngg_page_content button,
165
  #iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,
166
  #iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary {
@@ -169,10 +165,6 @@ html#iframely {
169
  }
170
 
171
  @media (max-width: 940px) {
172
- #iframely .plupload_buttons {
173
- display: block;
174
- margin: 10px 0 0 75px;
175
- }
176
  #iframely .gallery_page_ngg_addgallery #ngg_page_content button,
177
  #iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,
178
  #iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary {
@@ -207,12 +199,6 @@ html#iframely {
207
  #iframely #ngg_page_content .ngg_page_content_menu a:last-of-type {
208
  padding-bottom: 5px;
209
  }
210
- #iframely .plupload_buttons {
211
- margin-left: 0;
212
- }
213
- #iframely #ngg_page_content .plupload_droptext {
214
- line-height: 60px;
215
- }
216
  #iframely .gallery_page_ngg_addgallery #ngg_page_content button,
217
  #iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,
218
  #iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary {
157
 
158
 
159
  @media (max-width: 1140px) {
 
 
 
 
160
  #iframely .gallery_page_ngg_addgallery #ngg_page_content button,
161
  #iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,
162
  #iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary {
165
  }
166
 
167
  @media (max-width: 940px) {
 
 
 
 
168
  #iframely .gallery_page_ngg_addgallery #ngg_page_content button,
169
  #iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,
170
  #iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary {
199
  #iframely #ngg_page_content .ngg_page_content_menu a:last-of-type {
200
  padding-bottom: 5px;
201
  }
 
 
 
 
 
 
202
  #iframely .gallery_page_ngg_addgallery #ngg_page_content button,
203
  #iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,
204
  #iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary {
products/photocrati_nextgen/modules/attach_to_post/static/iframely.js CHANGED
@@ -1,7 +1,12 @@
1
  if (window.frameElement) {
2
  document.getElementsByTagName('html')[0].id = 'iframely';
3
  jQuery(function($) {
4
- $('#wpwrap').html($('#wpbody').html($('#wpbody-content').html($('#ngg_page_content'))));
 
 
 
 
 
5
 
6
  // We need to ensure that any POST operation includes the "attach_to_post"
7
  // parameter, to display subsequent clicks in iframely.
1
  if (window.frameElement) {
2
  document.getElementsByTagName('html')[0].id = 'iframely';
3
  jQuery(function($) {
4
+ var $content = $('#ngg_page_content');
5
+ $('#wpbody-content').html($content);
6
+ $('#wpbody').html($content);
7
+ $('#wpwrap').html($content);
8
+ // $('#wpwrap').html($('#wpbody').html($('#wpbody-content').html($('#ngg_page_content'))));
9
+
10
 
11
  // We need to ensure that any POST operation includes the "attach_to_post"
12
  // parameter, to display subsequent clicks in iframely.
products/photocrati_nextgen/modules/attach_to_post/static/iframely.min.css CHANGED
@@ -1 +1 @@
1
- #iframely,#iframely body,html#iframely{background:#fff!important}#iframely #icon-nextgen-gallery,#iframely #ngg_page_content .ngg_page_content_header img,#iframely #ngg_page_content .ngg_page_content_header p,#iframely .ngg-admin .notice,#iframely .ngg-admin div.error,#iframely .ngg-admin div.updated,#iframely h2{display:none}#iframely,#iframely body{padding:0;width:100%;height:100%}#iframely{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;background-position:center center;background-repeat:no-repeat;position:absolute;visibility:hidden}#iframely #wpbody-content{float:none;padding:0}#iframely #ngg_page_content.ngg_settings_page{background:#fff}#iframely #wpwrap{background-color:#fcfcfc}#iframely #ngg_page_content{margin:0;width:100%}#iframely #ngg_page_content,#iframely #ngg_page_content .ngg_manage_galleries table td,#iframely #ngg_page_content .ngg_manage_galleries table th{font-size:13px!important}#iframely #ngg_page_content .ngg_page_content_header{margin:25px 0 -30px;padding-left:30px}#iframely #ngg_page_content .ngg_page_content_menu{background:0 0;border:none;padding:10px 20px 10px 23px;float:none;height:25px;margin-top:16px;width:auto}#iframely #ngg_page_content .ngg_page_content_menu a{border:none;color:#000;display:inline;font-weight:300;text-decoration:none;line-height:25px;padding:6px;font-size:12px;margin-right:10px}#iframely #ngg_page_content .ngg_page_content_menu a:active{background:0 0}#iframely #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active{font-weight:500;border-bottom:3px solid #9ebc1b}#iframely #ngg_page_content .ngg_page_content_menu a:before{display:none}#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after,#displayed_tab #ngg_page_content .ngg_page_content_menu a:active:after{display:none!important}#iframely #ngg_page_content .ngg_page_content_main{padding:30px;width:100%;box-shadow:none}#iframely #ngg_page_content .ngg_page_content_main h3{display:none}#iframely #ngg_page_content .ngg_manage_albums .ngg_page_content_main h3,#iframely #ngg_page_content .ngg_manage_images .ngg_page_content_main h3,#iframely #ngg_page_content .ngg_manage_tags .ngg_page_content_main h3{display:block}#iframely #ngg_page_content .button-primary:active,#iframely #ngg_page_content .button-secondary:active,#iframely #ngg_page_content button:active{vertical-align:top}#iframely #bulkaction{width:140px!important}#iframely .tablenav.top .displaying-num{display:none}#iframely .ngg_manage_galleries table #id{min-width:40px}#iframely .ngg_manage_galleries table #author{min-width:85px}#iframely .ngg_manage_galleries table #page_id{min-width:65px}#iframely .gallery_page_nggallery-manage-gallery .ui-dialog{height:auto!important;min-height:auto}@media (max-width:1140px){#iframely .plupload_buttons{display:inline;margin:0 0 0 10px}#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary,#iframely .gallery_page_ngg_addgallery #ngg_page_content button{width:130px!important}}@media (max-width:940px){#iframely .plupload_buttons{display:block;margin:10px 0 0 75px}#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary,#iframely .gallery_page_ngg_addgallery #ngg_page_content button{width:201px!important}}@media (max-width:800px){#iframely .ngg-admin #wpbody{padding:0}#iframely #ngg_page_content .ngg_page_content_menu{padding:5px 0 0;background:0 0;border:none}#iframely #ngg_page_content .ngg_page_content_menu a{display:block;width:100%;float:left;padding:0;text-align:center;box-sizing:border-box}#iframely #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active,#iframely #ngg_page_content .ngg_page_content_menu a:active{background:0 0}#iframely #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after{display:none}#iframely #ngg_page_content .ngg_page_content_menu a:last-of-type{padding-bottom:5px}#iframely .plupload_buttons{margin-left:0}#iframely #ngg_page_content .plupload_droptext{line-height:60px}#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary,#iframely .gallery_page_ngg_addgallery #ngg_page_content button{width:100%!important;margin:4px 0;display:block}}
1
+ #iframely,#iframely body,html#iframely{background:#fff!important}#iframely #icon-nextgen-gallery,#iframely #ngg_page_content .ngg_page_content_header img,#iframely #ngg_page_content .ngg_page_content_header p,#iframely .ngg-admin .notice,#iframely .ngg-admin div.error,#iframely .ngg-admin div.updated,#iframely h2{display:none}#iframely,#iframely body{padding:0;width:100%;height:100%}#iframely{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;background-position:center center;background-repeat:no-repeat;position:absolute;visibility:hidden}#iframely #wpbody-content{float:none;padding:0}#iframely #ngg_page_content.ngg_settings_page{background:#fff}#iframely #wpwrap{background-color:#fcfcfc}#iframely #ngg_page_content{margin:0;width:100%}#iframely #ngg_page_content,#iframely #ngg_page_content .ngg_manage_galleries table td,#iframely #ngg_page_content .ngg_manage_galleries table th{font-size:13px!important}#iframely #ngg_page_content .ngg_page_content_header{margin:25px 0 -30px;padding-left:30px}#iframely #ngg_page_content .ngg_page_content_menu{background:0 0;border:none;padding:10px 20px 10px 23px;float:none;height:25px;margin-top:16px;width:auto}#iframely #ngg_page_content .ngg_page_content_menu a{border:none;color:#000;display:inline;font-weight:300;text-decoration:none;line-height:25px;padding:6px;font-size:12px;margin-right:10px}#iframely #ngg_page_content .ngg_page_content_menu a:active{background:0 0}#iframely #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active{font-weight:500;border-bottom:3px solid #9ebc1b}#iframely #ngg_page_content .ngg_page_content_menu a:before{display:none}#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after,#displayed_tab #ngg_page_content .ngg_page_content_menu a:active:after{display:none!important}#iframely #ngg_page_content .ngg_page_content_main{padding:30px;width:100%;box-shadow:none}#iframely #ngg_page_content .ngg_page_content_main h3{display:none}#iframely #ngg_page_content .ngg_manage_albums .ngg_page_content_main h3,#iframely #ngg_page_content .ngg_manage_images .ngg_page_content_main h3,#iframely #ngg_page_content .ngg_manage_tags .ngg_page_content_main h3{display:block}#iframely #ngg_page_content .button-primary:active,#iframely #ngg_page_content .button-secondary:active,#iframely #ngg_page_content button:active{vertical-align:top}#iframely #bulkaction{width:140px!important}#iframely .tablenav.top .displaying-num{display:none}#iframely .ngg_manage_galleries table #id{min-width:40px}#iframely .ngg_manage_galleries table #author{min-width:85px}#iframely .ngg_manage_galleries table #page_id{min-width:65px}#iframely .gallery_page_nggallery-manage-gallery .ui-dialog{height:auto!important;min-height:auto}@media (max-width:1140px){#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary,#iframely .gallery_page_ngg_addgallery #ngg_page_content button{width:130px!important}}@media (max-width:940px){#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary,#iframely .gallery_page_ngg_addgallery #ngg_page_content button{width:201px!important}}@media (max-width:800px){#iframely .ngg-admin #wpbody{padding:0}#iframely #ngg_page_content .ngg_page_content_menu{padding:5px 0 0;background:0 0;border:none}#iframely #ngg_page_content .ngg_page_content_menu a{display:block;width:100%;float:left;padding:0;text-align:center;box-sizing:border-box}#iframely #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active,#iframely #ngg_page_content .ngg_page_content_menu a:active{background:0 0}#iframely #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after{display:none}#iframely #ngg_page_content .ngg_page_content_menu a:last-of-type{padding-bottom:5px}#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary,#iframely .gallery_page_ngg_addgallery #ngg_page_content button{width:100%!important;margin:4px 0;display:block}}
products/photocrati_nextgen/modules/attach_to_post/static/iframely.min.js CHANGED
@@ -1 +1 @@
1
- function iframely_callback(t,a){var e=jQuery(a);void 0===e.data("iframely")&&e.data("iframely",{attempts:1});var i=e.data("iframely");3==i.attempts?jQuery("#iframely").css({position:"static",visibility:"visible"}).animate({opacity:1}):(i.attempts+=1,setTimeout(function(){t.adjust_height_for_frame(t,a,iframely_callback)},400))}window.frameElement&&(document.getElementsByTagName("html")[0].id="iframely",jQuery(function(t){t("#wpwrap").html(t("#wpbody").html(t("#wpbody-content").html(t("#ngg_page_content")))),t("form").each(function(){t(this).append("<input type='hidden' name='attach_to_post' value='1'/>")});var a=window.parent;null!=a&&void 0!==a.adjust_height_for_frame||null!=window&&void 0!==window.adjust_height_for_frame&&(a=window),void 0!==a.adjust_height_for_frame&&a.adjust_height_for_frame(a,window,iframely_callback)}));
1
+ "use strict";function iframely_callback(t,a){var e=jQuery(a);void 0===e.data("iframely")&&e.data("iframely",{attempts:1});var i=e.data("iframely");3==i.attempts?jQuery("#iframely").css({position:"static",visibility:"visible"}).animate({opacity:1}):(i.attempts+=1,setTimeout(function(){t.adjust_height_for_frame(t,a,iframely_callback)},400))}window.frameElement&&(document.getElementsByTagName("html")[0].id="iframely",jQuery(function(t){var a=t("#ngg_page_content");t("#wpbody-content").html(a),t("#wpbody").html(a),t("#wpwrap").html(a),t("form").each(function(){t(this).append("<input type='hidden' name='attach_to_post' value='1'/>")});var e=window.parent;null!=e&&void 0!==e.adjust_height_for_frame||null!=window&&void 0!==window.adjust_height_for_frame&&(e=window),void 0!==e.adjust_height_for_frame&&e.adjust_height_for_frame(e,window,iframely_callback)}));
products/photocrati_nextgen/modules/attach_to_post/static/igw.min.js CHANGED
@@ -1 +1 @@
1
- !function(t){setTimeout(function(){t(function(){window.get_igw_dimensions=function(){var i=(t(".ngg-add-gallery"),jQuery(top)),o=i.width(),n=i.height(),w=1800,e=1200,d=o-.05*o,g=n-.09*n;return d<800&&(d=o-20),g<600&&(g=n-40),w>d&&(w=d),e>g&&(e=g),{width:w,height:e,top:(n-e)/2,left:(o-w)/2}},window.wp_tb_position=window.tb_position,window.tb_position=function(){var i=t("#TB_window iframe").attr("src");if(i&&i.match("attach_to_post")){var o=get_igw_dimensions();t("#TB_window").css({width:o.width.toString()+"px",height:o.height.toString()+"px",top:o.top.toString()+"px",left:o.left.toString()+"px"}),t("#TB_window").addClass("ngg_tb_window"),t("#TB_window iframe").css({width:"100%",height:"100%"})}else window.wp_tb_position()}})})}(jQuery);
1
+ "use strict";!function(t){setTimeout(function(){t(function(){window.get_igw_dimensions=function(){var i=(t(".ngg-add-gallery"),jQuery(top)),o=i.width(),n=i.height(),w=1800,e=1200,d=o-.05*o,s=n-.09*n;return d<800&&(d=o-20),s<600&&(s=n-40),w>d&&(w=d),e>s&&(e=s),{width:w,height:e,top:(n-e)/2,left:(o-w)/2}},window.wp_tb_position=window.tb_position,window.tb_position=function(){var i=t("#TB_window iframe").attr("src");if(i&&i.match("attach_to_post")){var o=get_igw_dimensions();t("#TB_window").css({width:o.width.toString()+"px",height:o.height.toString()+"px",top:o.top.toString()+"px",left:o.left.toString()+"px"}),t("#TB_window").addClass("ngg_tb_window"),t("#TB_window iframe").css({width:"100%",height:"100%"})}else window.wp_tb_position()}})})}(jQuery);
products/photocrati_nextgen/modules/attach_to_post/static/ngg_attach_to_post_tinymce_plugin.min.js CHANGED
@@ -1 +1 @@
1
- !function(t,e){window.id="wordpress-post-page",tinyMCE.addI18n("en.ngg_attach_to_post",{title:"Attach NextGEN Gallery to Post"}),tinymce.create("tinymce.plugins.NextGEN_AttachToPost",{siteurl:t,getInfo:function(){return{longname:"NextGEN Gallery",author:"Imagely",authorurl:"https://www.imagely.com",infourl:"https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/",version:"0.1"}},init:function(t,n){function o(t,n){for(;t.content.indexOf(n)>=0;){for(var o=t.content.indexOf(n),a=o+n.length,r=!1,i=null,c=!1,g=t.content.length;;){var l=t.content[a];if('"'==l||"'"==l&&"="==c)r&&i==l?(r=!1,i=null):(r=!0,i=l);else if("]"==l&&!r)break;if(c=l,a==g)break;a++}var s=t.content.substring(o,++a),d=s.substring(1,s.length-1);d=d.replace("[","&#91;"),d=d.replace("]","&#93;");var h=_.template(e("#ngg-igw-placeholder").html());t.content=t.content.replace(s,h(e.extend(ngg_igw_i18n,{shortcode:d,ref:_.now()})))}}var a=this;t.windowManager.nggOldOpen=t.windowManager.open,t.windowManager.open=function(e,n){var o=t.windowManager.nggOldOpen(e,n);return o.on("close",a.wm_close_event),o},t.addCommand("ngg_attach_to_post",this.render_attach_to_post_interface,{editor:t,plugin:t.plugins.NextGEN_AttachToPost}),t.addButton("NextGEN_AttachToPost",{title:"ngg_attach_to_post.title",cmd:"ngg_attach_to_post",image:n+"/igw_button.png"}),t.on("SaveContent",function(t){e("body").hasClass("block-editor-page")&&(o(t,"[ngg_images "),o(t,"[ngg "))}),t.on("mouseup touchend",function(n){if(tinymce.extend(a,{editor:t,plugin:t.plugins.NextGEN_AttachToPost}),"IMG"===n.target.tagName){if(a.get_class_name(n.target).indexOf("ngg_displayed_gallery")>=0){t.dom.events.cancel(n);var o=n.target.src.match(/\d+$/);o&&(o=o.pop()),a.render_attach_to_post_interface({key:"id",val:o})}}else{var r=e(n.target);if(r.hasClass("nggPlaceholderButton"))if(r.hasClass("nggIgwRemove")){var i=r.parents(".nggPlaceholder"),c=i[0].getAttribute("data-shortcode");t.fire("ngg-removed",{shortcode:c}),i.remove()}else window.igw_shortcode=e(n.target).parents(".nggPlaceholder")[0].getAttribute("data-shortcode"),a.render_attach_to_post_interface({key:"shortcode",val:Base64.encode(window.igw_shortcode),ref:e(n.target).parents(".nggPlaceholder").attr("id")})}}),t.on("BeforeSetContent",function(t){o(t,"[ngg_images "),o(t,"[ngg ")}),t.on("PostProcess",function(t){var n=e("<div/>").append(t.content);n.find(".nggPlaceholder").toArray().forEach(function(t){var n=e(t),o=n.data("shortcode");o="["+_.unescape(o)+"]",n.replaceWith(o)}),t.content=n[0].innerHTML})},get_class_name:function(t){var e=t.getAttribute("class")?t.getAttribute("class"):t.className;return e||""},wm_close_event:function(t){t&&t.target&&t.target._id&&"ngg_attach_to_post_dialog"==t.target._id&&(e("html,body").css("overflow","auto"),tinyMCE.activeEditor.selection.select(tinyMCE.activeEditor.dom.select("p")[0]),tinyMCE.activeEditor.selection.collapse(0))},render_attach_to_post_interface:function(t){var n=nextgen_gallery_attach_to_post_url;void 0!==t&&(n+="&"+t.key+"="+encodeURIComponent(t.val),void 0!==t.ref&&(n+="&ref="+encodeURIComponent(t.ref))),n+="&editor="+this.editor.id;for(var o=window;null!=o.parent&&o.parent!=o;)o=o.parent;o=e(o);var a=o.width(),r=o.height(),i=1600,c=1200,g=a-.05*a,l=r-.1*r;g<800&&(g=a-20),l<600&&(l=r-40),i>g&&(i=g),c>l&&(c=l),document.activeElement.blur(),Array.prototype.forEach.call(document.querySelectorAll("input, textarea"),function(t){t.blur()}),this.editor.windowManager.open({url:n,id:"ngg_attach_to_post_dialog",width:i,height:c,title:"NextGEN Gallery - Attach To Post"}),e("html,body").css("overflow","hidden"),e("#ngg_attach_to_post_dialog_ifr").css("overflow-y","auto"),e("#ngg_attach_to_post_dialog_ifr").css("overflow-x","hidden")}}),tinymce.PluginManager.add("NextGEN_AttachToPost",tinymce.plugins.NextGEN_AttachToPost)}(photocrati_ajax.wp_site_url,jQuery);
1
+ "use strict";!function(t,e){window.id="wordpress-post-page",tinyMCE.addI18n("en.ngg_attach_to_post",{title:"Attach NextGEN Gallery to Post"}),tinymce.create("tinymce.plugins.NextGEN_AttachToPost",{siteurl:t,getInfo:function(){return{longname:"NextGEN Gallery",author:"Imagely",authorurl:"https://www.imagely.com",infourl:"https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/",version:"0.1"}},init:function(t,n){function o(t,n){for(;t.content.indexOf(n)>=0;){for(var o=t.content.indexOf(n),a=o+n.length,r=!1,i=null,c=!1,g=t.content.length;;){var l=t.content[a];if('"'==l||"'"==l&&"="==c)r&&i==l?(r=!1,i=null):(r=!0,i=l);else if("]"==l&&!r)break;if(c=l,a==g)break;a++}var s=t.content.substring(o,++a),d=s.substring(1,s.length-1);d=d.replace("[","&#91;"),d=d.replace("]","&#93;");var h=_.template(e("#ngg-igw-placeholder").html());t.content=t.content.replace(s,h(e.extend(ngg_igw_i18n,{shortcode:d,ref:_.now()})))}}var a=this;t.windowManager.nggOldOpen=t.windowManager.open,t.windowManager.open=function(e,n){var o=t.windowManager.nggOldOpen(e,n);return o.on("close",a.wm_close_event),o},t.addCommand("ngg_attach_to_post",this.render_attach_to_post_interface,{editor:t,plugin:t.plugins.NextGEN_AttachToPost}),t.addButton("NextGEN_AttachToPost",{title:"ngg_attach_to_post.title",cmd:"ngg_attach_to_post",image:n+"/igw_button.png"}),t.on("SaveContent",function(t){e("body").hasClass("block-editor-page")&&(o(t,"[ngg_images "),o(t,"[ngg "))}),t.on("mouseup touchend",function(n){if(tinymce.extend(a,{editor:t,plugin:t.plugins.NextGEN_AttachToPost}),"IMG"===n.target.tagName){if(a.get_class_name(n.target).indexOf("ngg_displayed_gallery")>=0){t.dom.events.cancel(n);var o=n.target.src.match(/\d+$/);o&&(o=o.pop()),a.render_attach_to_post_interface({key:"id",val:o})}}else{var r=e(n.target);if(r.hasClass("nggPlaceholderButton"))if(r.hasClass("nggIgwRemove")){var i=r.parents(".nggPlaceholder"),c=i[0].getAttribute("data-shortcode");t.fire("ngg-removed",{shortcode:c}),i.remove()}else window.igw_shortcode=e(n.target).parents(".nggPlaceholder")[0].getAttribute("data-shortcode"),a.render_attach_to_post_interface({key:"shortcode",val:Base64.encode(window.igw_shortcode),ref:e(n.target).parents(".nggPlaceholder").attr("id")})}}),t.on("BeforeSetContent",function(t){o(t,"[ngg_images "),o(t,"[ngg ")}),t.on("PostProcess",function(t){var n=e("<div/>").append(t.content);n.find(".nggPlaceholder").toArray().forEach(function(t){var n=e(t),o=n.data("shortcode");o="["+_.unescape(o)+"]",n.replaceWith(o)}),t.content=n[0].innerHTML})},get_class_name:function(t){var e=t.getAttribute("class")?t.getAttribute("class"):t.className;return e||""},wm_close_event:function(t){t&&t.target&&t.target._id&&"ngg_attach_to_post_dialog"==t.target._id&&(e("html,body").css("overflow","auto"),tinyMCE.activeEditor.selection.select(tinyMCE.activeEditor.dom.select("p")[0]),tinyMCE.activeEditor.selection.collapse(0))},render_attach_to_post_interface:function(t){var n=nextgen_gallery_attach_to_post_url;void 0!==t&&(n+="&"+t.key+"="+encodeURIComponent(t.val),void 0!==t.ref&&(n+="&ref="+encodeURIComponent(t.ref))),n+="&editor="+this.editor.id;for(var o=window;null!=o.parent&&o.parent!=o;)o=o.parent;o=e(o);var a=o.width(),r=o.height(),i=1600,c=1200,g=a-.05*a,l=r-.1*r;g<800&&(g=a-20),l<600&&(l=r-40),i>g&&(i=g),c>l&&(c=l),document.activeElement.blur(),Array.prototype.forEach.call(document.querySelectorAll("input, textarea"),function(t){t.blur()}),this.editor.windowManager.open({url:n,id:"ngg_attach_to_post_dialog",width:i,height:c,title:"NextGEN Gallery - Attach To Post"}),e("html,body").css("overflow","hidden"),e("#ngg_attach_to_post_dialog_ifr").css("overflow-y","auto"),e("#ngg_attach_to_post_dialog_ifr").css("overflow-x","hidden")}}),tinymce.PluginManager.add("NextGEN_AttachToPost",tinymce.plugins.NextGEN_AttachToPost)}(photocrati_ajax.wp_site_url,jQuery);
products/photocrati_nextgen/modules/attach_to_post/static/ngg_tabs.js CHANGED
@@ -3,20 +3,6 @@ jQuery(function($) {
3
  // Creates a Firefox-friendly wrapper around jQuery Tabs
4
  $.fn.ngg_tabs = function(options) {
5
 
6
- // TODO: remove this when plupload is upgraded
7
- if (/crios|iP(hone|od|ad)/i.test(navigator.userAgent)) {
8
- this.find('.main_menu_tab').each(function() {
9
- if (this.id === 'create_tab') {
10
- $(this).remove();
11
- }
12
- });
13
- this.find('ul li a').each(function() {
14
- if (this.href.indexOf('#create_tab') !== -1) {
15
- $(this).parent('li').remove();
16
- };
17
- });
18
- }
19
-
20
  // Create jQuery tabs
21
  this.tabs(options);
22
 
3
  // Creates a Firefox-friendly wrapper around jQuery Tabs
4
  $.fn.ngg_tabs = function(options) {
5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  // Create jQuery tabs
7
  this.tabs(options);
8
 
products/photocrati_nextgen/modules/attach_to_post/static/ngg_tabs.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(t){t.fn.ngg_tabs=function(i){/crios|iP(hone|od|ad)/i.test(navigator.userAgent)&&(this.find(".main_menu_tab").each(function(){"create_tab"===this.id&&t(this).remove()}),this.find("ul li a").each(function(){-1!==this.href.indexOf("#create_tab")&&t(this).parent("li").remove()})),this.tabs(i);var n=0;this.find(".main_menu_tab").each(function(){0===n?t.fn.ngg_tabs.show_tab(this,i.onShowTab):t.fn.ngg_tabs.hide_tab(this,i.onHideTab),n++}),this.on("tabsactivate",function(n,a){t.fn.ngg_tabs.hide_tab(t.fn.ngg_tabs.get_tab_by_li(a.oldTab),i.onHideTab),t.fn.ngg_tabs.show_tab(t.fn.ngg_tabs.get_tab_by_li(a.newTab),i.onShowTab)})},t.fn.ngg_tabs.hide_tab=function(i,n){setTimeout(function(){t(i).css({display:"block","z-index":-10,visibility:"hidden",opacity:0}).addClass("ngg-tab-inactive").removeClass("ngg-tab-active").trigger("tab-hidden"),n&&n(i)},0)},t.fn.ngg_tabs.show_tab=function(i,n){i=t(i),setTimeout(function(){var t=i.find("iframe")[0];void 0!==t&&void 0!==t.contentWindow&&adjust_height_for_frame(top,t.contentWindow)},50),setTimeout(function(){i.css({"z-index":1,visibility:"visible",opacity:1}).addClass("ngg-tab-active").removeClass("ngg-tab-inactive").trigger("tab-visible"),n&&n(i)},50),n&&n(i)},t.fn.ngg_tabs.get_tab_by_li=function(t){return t.parents("div").find('.main_menu_tab[aria-labelledby="'+t.attr("aria-labelledby")+'"]')}});
1
+ "use strict";jQuery(function(t){t.fn.ngg_tabs=function(n){this.tabs(n);var i=0;this.find(".main_menu_tab").each(function(){0===i?t.fn.ngg_tabs.show_tab(this,n.onShowTab):t.fn.ngg_tabs.hide_tab(this,n.onHideTab),i++}),this.on("tabsactivate",function(i,a){t.fn.ngg_tabs.hide_tab(t.fn.ngg_tabs.get_tab_by_li(a.oldTab),n.onHideTab),t.fn.ngg_tabs.show_tab(t.fn.ngg_tabs.get_tab_by_li(a.newTab),n.onShowTab)})},t.fn.ngg_tabs.hide_tab=function(n,i){setTimeout(function(){t(n).css({display:"block","z-index":-10,visibility:"hidden",opacity:0}).addClass("ngg-tab-inactive").removeClass("ngg-tab-active").trigger("tab-hidden"),i&&i(n)},0)},t.fn.ngg_tabs.show_tab=function(n,i){n=t(n),setTimeout(function(){var t=n.find("iframe")[0];void 0!==t&&void 0!==t.contentWindow&&adjust_height_for_frame(top,t.contentWindow)},50),setTimeout(function(){n.css({"z-index":1,visibility:"visible",opacity:1}).addClass("ngg-tab-active").removeClass("ngg-tab-inactive").trigger("tab-visible"),i&&i(n)},50),i&&i(n)},t.fn.ngg_tabs.get_tab_by_li=function(t){return t.parents("div").find('.main_menu_tab[aria-labelledby="'+t.attr("aria-labelledby")+'"]')}});
products/photocrati_nextgen/modules/dynamic_thumbnails/module.dynamic_thumbnails.php CHANGED
@@ -20,7 +20,7 @@ class M_Dynamic_Thumbnails extends C_Base_Module
20
  'photocrati-dynamic_thumbnails',
21
  'Dynamic Thumbnails',
22
  'Adds support for dynamic thumbnails',
23
- '3.2.13',
24
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
25
  'Imagely',
26
  'https://www.imagely.com'
20
  'photocrati-dynamic_thumbnails',
21
  'Dynamic Thumbnails',
22
  'Adds support for dynamic thumbnails',
23
+ '3.3.21',
24
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
25
  'Imagely',
26
  'https://www.imagely.com'
products/photocrati_nextgen/modules/frame_communication/module.frame_communication.php CHANGED
@@ -22,7 +22,7 @@ class M_Frame_Communication extends C_Base_Module
22
  'photocrati-frame_communication',
23
  'Frame/iFrame Inter-Communication',
24
  'Provides a means for HTML frames to share server-side events with each other',
25
- '3.0.0',
26
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
27
  'Imagely',
28
  'https://www.imagely.com',
22
  'photocrati-frame_communication',
23
  'Frame/iFrame Inter-Communication',
24
  'Provides a means for HTML frames to share server-side events with each other',
25
+ '3.3.21',
26
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
27
  'Imagely',
28
  'https://www.imagely.com',
products/photocrati_nextgen/modules/frame_communication/static/frame_event_publisher.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"use strict";var i=function(e){if("object"!=typeof e.document)throw Error("Cookies.js requires a `window` with a `document` object");var i=function(e,t,n){return 1===arguments.length?i.get(e):i.set(e,t,n)};return i._document=e.document,i._cacheKeyPrefix="cookey.",i._maxExpireDate=new Date("Fri, 31 Dec 9999 23:59:59 UTC"),i.defaults={path:"/",secure:!1},i.get=function(e){return i._cachedDocumentCookie!==i._document.cookie&&i._renewCache(),e=i._cache[i._cacheKeyPrefix+e],e===t?t:decodeURIComponent(e)},i.set=function(e,n,o){return o=i._getExtendedOptions(o),o.expires=i._getExpiresDate(n===t?-1:o.expires),i._document.cookie=i._generateCookieString(e,n,o),i},i.expire=function(e,n){return i.set(e,t,n)},i._getExtendedOptions=function(e){return{path:e&&e.path||i.defaults.path,domain:e&&e.domain||i.defaults.domain,expires:e&&e.expires||i.defaults.expires,secure:e&&e.secure!==t?e.secure:i.defaults.secure}},i._isValidDate=function(e){return"[object Date]"===Object.prototype.toString.call(e)&&!isNaN(e.getTime())},i._getExpiresDate=function(e,t){if(t=t||new Date,"number"==typeof e?e=1/0===e?i._maxExpireDate:new Date(t.getTime()+1e3*e):"string"==typeof e&&(e=new Date(e)),e&&!i._isValidDate(e))throw Error("`expires` parameter cannot be converted to a valid Date instance");return e},i._generateCookieString=function(e,t,i){return e=e.replace(/[^#$&+\^`|]/g,encodeURIComponent),e=e.replace(/\(/g,"%28").replace(/\)/g,"%29"),t=(t+"").replace(/[^!#$&-+\--:<-\[\]-~]/g,encodeURIComponent),i=i||{},e=e+"="+t+(i.path?";path="+i.path:""),e+=i.domain?";domain="+i.domain:"",e+=i.expires?";expires="+i.expires.toUTCString():"",e+=i.secure?";secure":""},i._getCacheFromString=function(e){var n={};e=e?e.split("; "):[];for(var o=0;o<e.length;o++){var r=i._getKeyValuePairFromCookieString(e[o]);n[i._cacheKeyPrefix+r.key]===t&&(n[i._cacheKeyPrefix+r.key]=r.value)}return n},i._getKeyValuePairFromCookieString=function(e){var t,i=e.indexOf("="),i=0>i?e.length:i,n=e.substr(0,i);try{t=decodeURIComponent(n)}catch(e){console&&"function"==typeof console.error&&console.error('Could not decode cookie with key "'+n+'"',e)}return{key:t,value:e.substr(i+1)}},i._renewCache=function(){i._cache=i._getCacheFromString(i._document.cookie),i._cachedDocumentCookie=i._document.cookie},i._areEnabled=function(){var e="1"===i.set("cookies.js",1).get("cookies.js");return i.expire("cookies.js"),e},i.enabled=i._areEnabled(),i},n="object"==typeof e.document?i(e):i;"function"==typeof define&&define.amd?define(function(){return n}):"object"==typeof exports?("object"==typeof module&&"object"==typeof module.exports&&(exports=module.exports=n),exports.Cookies=n):e.Cookies=n}("undefined"==typeof window?this:window),window.Frame_Event_Publisher={id:window.name,cookie_name:"X-Frame-Events",received:[],initialized:!1,children:{},window:!1,ajax_handlers_setup:!1,is_parent:function(){return window.parent.document===window.document},is_child:function(){return!this.is_parent()},setup_ajax_handlers:function(){if(!this.ajax_handlers_setup){var e=this;jQuery(document).ajaxComplete(function(t,i,n){setTimeout(function(){e.ajax_handler()},0)})}},ajax_handler:function(){this.broadcast(this.get_events(document.cookie))},initialize:function(){return this.setup_ajax_handlers(),void 0!==window.frame_event_publisher_domain&&(Cookies.defaults.domain=window.frame_event_publisher_domain),this.window=window,void 0!==this.window.id&&null!=this.window.id.length&&this.window.id.length>0?this.id=this.window.id:this.id,this.received=this.get_events(document.cookie),this.initialized=!0,this.is_parent()&&this.emit(this.received,!0),this.received},register_child:function(e){this.children[e.id]=e},broadcast:function(e,t){this.initialized||(e=this.initialize()),"Unknown"==this.id?(this.initialized=!1,setTimeout(function(){this.broadcast(e,t)},100)):this.is_child()?(arguments.length<=1&&(t=window),this.find_parent(t).register_child(t.Frame_Event_Publisher),this.notify_parent(e,t)):(0==arguments.length&&(e=this.received),this.notify_children(e))},notify_parent:function(e,t){this.find_parent(t).broadcast(e,t)},notify_children:function(e){this.emit(e);for(var t in this.children){var i=this.children[t];try{i.emit(e)}catch(e){"undefined"!=typeof console&&console.log(e),delete this.children.index}}},find_parent:function(e){var t=e;try{for(;t.document!==t.parent.document;)t=t.parent}catch(e){"undefined"!=typeof console&&console.log(e)}return t.Frame_Event_Publisher},emit:function(e,t){void 0===t&&(t=!1);for(var i in e){var n=e[i];t||this.has_received_event(i)||("undefined"!=typeof console&&console.log("Emitting "+i+":"+n.event+" to "+this.id),this.trigger_event(i,e[i]))}},has_received_event:function(e){return void 0!=this.received[e]},trigger_event:function(e,t){var i=t.context+":"+t.event;t.id=e,"undefined"!=typeof window&&jQuery(window).trigger(i,t),this.received[e]=t},get_events:function(e){for(var t={},i=unescape(e).split(" "),n=0;n<i.length;n++){var o=i[n],r=o.match(/X-Frame-Events_([^=]+)=(.*)/);if(r){var c=r[1],a=r[2].replace(/;$/,"");try{t[c]=JSON.parse(a)}catch(e){}var s="X-Frame-Events_"+c;this.delete_cookie(s)}}return t},delete_cookie:function(e){Cookies.expire(e)},listen_for:function(e,t){var i=this;jQuery(window).on(e,function(e,n){var o=(n.context,n.id);i.has_received_event(o)||(t.call(i,n),i.received[o]=n)})}},jQuery(function(e){Frame_Event_Publisher.broadcast()});
1
+ "use strict";function _typeof(e){"@babel/helpers - typeof";return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(e,t){var n=function(e){if("object"!==_typeof(e.document))throw Error("Cookies.js requires a `window` with a `document` object");var n=function e(t,n,i){return 1===arguments.length?e.get(t):e.set(t,n,i)};return n._document=e.document,n._cacheKeyPrefix="cookey.",n._maxExpireDate=new Date("Fri, 31 Dec 9999 23:59:59 UTC"),n.defaults={path:"/",secure:!1},n.get=function(e){return n._cachedDocumentCookie!==n._document.cookie&&n._renewCache(),e=n._cache[n._cacheKeyPrefix+e],e===t?t:decodeURIComponent(e)},n.set=function(e,i,o){return o=n._getExtendedOptions(o),o.expires=n._getExpiresDate(i===t?-1:o.expires),n._document.cookie=n._generateCookieString(e,i,o),n},n.expire=function(e,i){return n.set(e,t,i)},n._getExtendedOptions=function(e){return{path:e&&e.path||n.defaults.path,domain:e&&e.domain||n.defaults.domain,expires:e&&e.expires||n.defaults.expires,secure:e&&e.secure!==t?e.secure:n.defaults.secure}},n._isValidDate=function(e){return"[object Date]"===Object.prototype.toString.call(e)&&!isNaN(e.getTime())},n._getExpiresDate=function(e,t){if(t=t||new Date,"number"==typeof e?e=1/0===e?n._maxExpireDate:new Date(t.getTime()+1e3*e):"string"==typeof e&&(e=new Date(e)),e&&!n._isValidDate(e))throw Error("`expires` parameter cannot be converted to a valid Date instance");return e},n._generateCookieString=function(e,t,n){return e=e.replace(/[^#$&+\^`|]/g,encodeURIComponent),e=e.replace(/\(/g,"%28").replace(/\)/g,"%29"),t=(t+"").replace(/[^!#$&-+\--:<-\[\]-~]/g,encodeURIComponent),n=n||{},e=e+"="+t+(n.path?";path="+n.path:""),e+=n.domain?";domain="+n.domain:"",e+=n.expires?";expires="+n.expires.toUTCString():"",e+=n.secure?";secure":""},n._getCacheFromString=function(e){var i={};e=e?e.split("; "):[];for(var o=0;o<e.length;o++){var r=n._getKeyValuePairFromCookieString(e[o]);i[n._cacheKeyPrefix+r.key]===t&&(i[n._cacheKeyPrefix+r.key]=r.value)}return i},n._getKeyValuePairFromCookieString=function(e){var t,n=e.indexOf("="),n=0>n?e.length:n,i=e.substr(0,n);try{t=decodeURIComponent(i)}catch(e){console&&"function"==typeof console.error&&console.error('Could not decode cookie with key "'+i+'"',e)}return{key:t,value:e.substr(n+1)}},n._renewCache=function(){n._cache=n._getCacheFromString(n._document.cookie),n._cachedDocumentCookie=n._document.cookie},n._areEnabled=function(){var e="1"===n.set("cookies.js",1).get("cookies.js");return n.expire("cookies.js"),e},n.enabled=n._areEnabled(),n},i="object"===_typeof(e.document)?n(e):n;"function"==typeof define&&define.amd?define(function(){return i}):"object"===("undefined"==typeof exports?"undefined":_typeof(exports))?("object"===("undefined"==typeof module?"undefined":_typeof(module))&&"object"===_typeof(module.exports)&&(exports=module.exports=i),exports.Cookies=i):e.Cookies=i}("undefined"==typeof window?void 0:window),window.Frame_Event_Publisher={id:window.name,cookie_name:"X-Frame-Events",received:[],initialized:!1,children:{},window:!1,ajax_handlers_setup:!1,is_parent:function(){return window.parent.document===window.document},is_child:function(){return!this.is_parent()},setup_ajax_handlers:function(){if(!this.ajax_handlers_setup){var e=this;jQuery(document).ajaxComplete(function(t,n,i){setTimeout(function(){e.ajax_handler()},0)})}},ajax_handler:function(){this.broadcast(this.get_events(document.cookie))},initialize:function(){return this.setup_ajax_handlers(),void 0!==window.frame_event_publisher_domain&&(Cookies.defaults.domain=window.frame_event_publisher_domain),this.window=window,void 0!==this.window.id&&null!=this.window.id.length&&this.window.id.length>0?this.id=this.window.id:this.id,this.received=this.get_events(document.cookie),this.initialized=!0,this.is_parent()&&this.emit(this.received,!0),this.received},register_child:function(e){this.children[e.id]=e},broadcast:function(e,t){this.initialized||(e=this.initialize()),"Unknown"==this.id?(this.initialized=!1,setTimeout(function(){this.broadcast(e,t)},100)):this.is_child()?(arguments.length<=1&&(t=window),this.find_parent(t).register_child(t.Frame_Event_Publisher),this.notify_parent(e,t)):(0==arguments.length&&(e=this.received),this.notify_children(e))},notify_parent:function(e,t){this.find_parent(t).broadcast(e,t)},notify_children:function(e){this.emit(e);for(var t in this.children){var n=this.children[t];try{n.emit(e)}catch(e){"undefined"!=typeof console&&console.log(e),delete this.children.index}}},find_parent:function(e){var t=e;try{for(;t.document!==t.parent.document;)t=t.parent}catch(e){"undefined"!=typeof console&&console.log(e)}return t.Frame_Event_Publisher},emit:function(e,t){void 0===t&&(t=!1);for(var n in e){var i=e[n];t||this.has_received_event(n)||("undefined"!=typeof console&&console.log("Emitting "+n+":"+i.event+" to "+this.id),this.trigger_event(n,e[n]))}},has_received_event:function(e){return void 0!=this.received[e]},trigger_event:function(e,t){var n=t.context+":"+t.event;t.id=e,"undefined"!=typeof window&&jQuery(window).trigger(n,t),this.received[e]=t},get_events:function(e){for(var t={},n=unescape(e).split(" "),i=0;i<n.length;i++){var o=n[i],r=o.match(/X-Frame-Events_([^=]+)=(.*)/);if(r){var c=r[1],a=r[2].replace(/;$/,"");try{t[c]=JSON.parse(a)}catch(e){}var d="X-Frame-Events_"+c;this.delete_cookie(d)}}return t},delete_cookie:function(e){Cookies.expire(e)},listen_for:function(e,t){var n=this;jQuery(window).on(e,function(e,i){var o=(i.context,i.id);n.has_received_event(o)||(t.call(n,i),n.received[o]=i)})}},jQuery(function(e){Frame_Event_Publisher.broadcast()});
products/photocrati_nextgen/modules/i18n/lang/nggallery.pot CHANGED
@@ -1,8 +1,6 @@
1
  # Copyright (C) 2020 Imagely
2
  # NextGEN Gallery base (English) .po source
3
  # This file is distributed under the same license as the NextGEN Gallery plugin.
4
- #
5
- #, fuzzy
6
  msgid ""
7
  msgstr ""
8
  "Project-Id-Version: NextGEN Gallery\n"
@@ -13,17 +11,21 @@ msgstr ""
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
  "POT-Creation-Date: 2014-02-20 19:45-0800\n"
16
- "PO-Revision-Date: 2020-06-29 12:57+08\n"
17
  "X-Generator: WP-CLI 2.4.0\n"
18
  "X-Domain: nggallery\n"
19
 
20
  #. Plugin Name of the plugin
21
- #: nggallery.php:950
22
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:538
23
  #: products/photocrati_nextgen/modules/attach_to_post/module.attach_to_post.php:379
 
 
 
24
  #: products/photocrati_nextgen/modules/ngglegacy/admin/media-upload.php:11
25
  msgid "NextGEN Gallery"
26
- msgstr ""
 
 
27
 
28
  #. Plugin URI of the plugin
29
  msgid "https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/"
@@ -34,7 +36,6 @@ msgid "The most popular gallery plugin for WordPress and one of the most popular
34
  msgstr ""
35
 
36
  #. Author of the plugin
37
- #: nggallery.php:954
38
  msgid "Imagely"
39
  msgstr ""
40
 
@@ -42,27 +43,22 @@ msgstr ""
42
  msgid "https://www.imagely.com"
43
  msgstr ""
44
 
45
- #: nggallery.php:155
46
  msgid "We’ve detected you are running PHP versions 7.0.26 or 7.1.12. These versions of PHP have a bug that breaks NextGEN Gallery and causes server crashes in certain conditions. To protect your site, NextGEN Gallery will not load. We recommend asking your host to roll back to an earlier version of PHP. For details on the PHP bug, see: <a target=\"_blank\" href=\"https://bugs.php.net/bug.php?id=75573\">bugs.php.net/bug.php?id=75573</a>"
47
  msgstr ""
48
 
49
- #: nggallery.php:365
50
  msgid "NextGEN Gallery %s is incompatible with this version of NextGEN Pro. Please update NextGEN Pro to version %s or higher to restore NextGEN Pro functionality."
51
  msgstr ""
52
 
53
- #: nggallery.php:512
54
  msgid "Every %d seconds"
55
  msgstr ""
56
 
57
- #: nggallery.php:671
58
- #: non_pope/class.photocrati_installer.php:259
59
  msgid "Sorry, NextGEN Gallery works only with a role called administrator"
60
  msgstr ""
61
 
62
- #: nggallery.php:947
63
- msgid "Hey %s, "
64
- msgstr ""
65
-
66
  #: products/photocrati_nextgen/modules/attach_to_post/adapter.attach_to_post_ajax.php:168
67
  msgid "Album: %s"
68
  msgstr ""
@@ -83,73 +79,73 @@ msgstr ""
83
  msgid "Invalid request"
84
  msgstr ""
85
 
86
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:363
87
  msgid "Are you inserting a Gallery (default), an Album, or images based on Tags?"
88
  msgstr ""
89
 
90
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:364
91
  #: products/photocrati_nextgen/modules/nextgen_admin/class.form.php:245
92
  msgid "(optional)"
93
  msgstr ""
94
 
95
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:365
96
  msgid "Sets an SEO-friendly name to this gallery for URLs. Currently only in use by the Pro Lightbox"
97
  msgstr ""
98
 
99
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:366
100
  msgid "Slug"
101
  msgstr ""
102
 
103
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:367
104
  msgid "No entities to display for this source"
105
  msgstr ""
106
 
107
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:368
108
  msgid "Exclude?"
109
  msgstr ""
110
 
111
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:369
112
  msgid "Select a Gallery"
113
  msgstr ""
114
 
115
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:370
116
  msgid "Select one or more galleries (click in box to see available galleries)."
117
  msgstr ""
118
 
119
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:371
120
  msgid "Select one album (click in box to see available albums)."
121
  msgstr ""
122
 
123
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:556
124
  msgid "Click to edit"
125
  msgstr ""
126
 
127
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:582
128
  msgid "NextGEN Gallery - Attach To Post"
129
  msgstr ""
130
 
131
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:597
132
  msgid "Insert Into Page"
133
  msgstr ""
134
 
135
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:604
136
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.upload_images_form.php:12
137
  msgid "Upload Images"
138
  msgstr ""
139
 
140
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:611
141
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:172
142
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:206
143
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:197
144
  msgid "Manage Galleries"
145
  msgid_plural "Manage Galleries"
146
  msgstr[0] ""
147
  msgstr[1] ""
148
 
149
- #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:618
150
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:173
151
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:208
152
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:483
153
  msgid "Manage Albums"
154
  msgid_plural "Albums"
155
  msgstr[0] ""
@@ -181,8 +177,8 @@ msgid "Edit"
181
  msgstr ""
182
 
183
  #: products/photocrati_nextgen/modules/attach_to_post/module.attach_to_post.php:381
184
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:521
185
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:261
186
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:357
187
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:358
188
  #: products/photocrati_nextgen/modules/ngglegacy/admin/tags.php:223
@@ -193,36 +189,24 @@ msgstr ""
193
  msgid "Attach NextGEN Gallery to Post"
194
  msgstr ""
195
 
196
- #: products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php:25
197
- msgid "Want Mosaic, Masonry, Tiled and other layouts?"
198
- msgstr ""
199
-
200
- #: products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php:26
201
- msgid "Get NextGEN Pro"
202
- msgstr ""
203
-
204
- #: products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php:27
205
- msgid "Use ILOVENG for 30% off!"
206
- msgstr ""
207
-
208
- #: products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php:31
209
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:435
210
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:519
211
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:571
212
  msgid "Save Changes"
213
  msgstr ""
214
 
215
- #: products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php:31
216
  msgid "Insert Gallery"
217
  msgstr ""
218
 
219
- #: products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php:34
220
  msgid "Need a quick tutorial?"
221
  msgstr ""
222
 
223
- #: products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php:36
224
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:77
225
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:313
226
  msgid "Click to Close"
227
  msgstr ""
228
 
@@ -287,89 +271,346 @@ msgstr ""
287
  msgid "Fancybox"
288
  msgstr ""
289
 
290
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:65
291
  msgid "Shutter"
292
  msgstr ""
293
 
294
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:76
295
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:312
296
  msgid "L O A D I N G"
297
  msgstr ""
298
 
299
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:84
300
  msgid "Shutter Reloaded"
301
  msgstr ""
302
 
303
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:95
304
  msgid "Previous"
305
  msgstr ""
306
 
307
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:96
308
- #: products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/templates/nextgen_basic_imagebrowser.php:49
309
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-caption.php:29
310
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-exif.php:33
311
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser.php:29
312
  msgid "Next"
313
  msgstr ""
314
 
315
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:97
316
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:124
317
  msgid "Close"
318
  msgstr ""
319
 
320
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:98
321
  msgid "Full Size"
322
  msgstr ""
323
 
324
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:99
325
  msgid "Fit to Screen"
326
  msgstr ""
327
 
328
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:100
329
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:122
330
- #: products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/templates/default-view.php:54
331
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:655
332
  msgid "Image"
333
  msgid_plural "Images"
334
  msgstr[0] ""
335
  msgstr[1] ""
336
 
337
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:101
338
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:123
339
- #: products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/templates/default-view.php:54
340
- #: products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/templates/nextgen_basic_imagebrowser.php:55
341
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-caption.php:31
342
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-exif.php:35
343
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser.php:31
344
  msgid "of"
345
  msgstr ""
346
 
347
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:102
348
  msgid "Loading..."
349
  msgstr ""
350
 
351
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:109
352
  msgid "Thickbox"
353
  msgstr ""
354
 
355
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:120
356
  msgid "Next &gt;"
357
  msgstr ""
358
 
359
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:121
360
  msgid "&lt; Prev"
361
  msgstr ""
362
 
363
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:125
364
  msgid "This feature requires inline frames. You have iframes disabled or your browser does not support them."
365
  msgstr ""
366
 
367
- #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:135
368
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:27
369
  #: products/photocrati_nextgen/modules/ngglegacy/admin/thumbnails-template.php:76
370
  msgid "Custom"
371
  msgstr ""
372
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
373
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.import_folder_form.php:12
374
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_folder.php:12
375
  msgid "Import Folder"
@@ -414,7 +655,6 @@ msgid "In Progress..."
414
  msgstr ""
415
 
416
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.import_media_library_form.php:33
417
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:221
418
  msgid "Upload complete. Great job!"
419
  msgstr ""
420
 
@@ -434,97 +674,98 @@ msgstr ""
434
  msgid "Import %d image(s)"
435
  msgstr ""
436
 
437
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:31
438
- msgid "Please ask your hosting provider or system administrator to enable the PHP XML module which is required for image uploads"
 
 
439
  msgstr ""
440
 
441
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:52
442
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:268
 
443
  msgid "No gallery name specified"
444
  msgstr ""
445
 
446
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:69
 
 
 
 
447
  msgid "Failed to extract images from ZIP"
448
  msgstr ""
449
 
450
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:84
451
  msgid "Automatic image resizing failed [%1$s]."
452
  msgstr ""
453
 
454
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:93
455
  msgid "Thumbnail generation failed."
456
  msgstr ""
457
 
458
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:96
459
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:286
460
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:305
461
  msgid "Image generation failed"
462
  msgstr ""
463
 
464
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:106
465
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:223
466
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:250
467
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:315
468
- msgid "An unexpected error occured."
469
  msgstr ""
470
 
471
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:117
472
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:322
473
- msgid "No permissions to upload images. Try refreshing the page or ensuring that your user account has sufficient roles/privileges."
474
- msgstr ""
475
-
476
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:174
477
  msgid "Directory does not exist."
478
  msgstr ""
479
 
480
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:178
481
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:186
482
  msgid "No permissions to browse folders. Try refreshing the page or ensuring that your user account has sufficient roles/privileges."
483
  msgstr ""
484
 
485
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:182
486
  msgid "No directory specified."
487
  msgstr ""
488
 
489
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:218
490
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:230
491
  msgid "No permissions to import folders. Try refreshing the page or ensuring that your user account has sufficient roles/privileges."
492
  msgstr ""
493
 
494
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:227
 
 
 
 
 
 
495
  msgid "No folder specified"
496
  msgstr ""
497
 
498
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_controller.php:12
499
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:204
500
  msgid "Add Gallery / Images"
501
  msgstr ""
502
 
503
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.upload_images_form.php:18
504
  msgid "No images were uploaded successfully."
505
  msgstr ""
506
 
507
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.upload_images_form.php:19
508
  msgid "1 image was uploaded successfully."
509
  msgstr ""
510
 
511
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.upload_images_form.php:20
512
  msgid "{count} images were uploaded successfully."
513
  msgstr ""
514
 
515
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.upload_images_form.php:21
516
- msgid "The following errors occured:"
517
- msgstr ""
518
-
519
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.upload_images_form.php:22
520
  msgid "Manage gallery > {name}"
521
  msgstr ""
522
 
523
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.php:97
524
  msgid "XML is strongly encouraged for safely uploading images"
525
  msgstr ""
526
 
527
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.php:105
528
  msgid "Cannot write to %s: new galleries cannot be created"
529
  msgstr ""
530
 
@@ -549,12 +790,10 @@ msgid "Upload complete"
549
  msgstr ""
550
 
551
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_media_library.php:2
552
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:2
553
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:164
554
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:165
555
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:183
556
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:388
557
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:651
558
  #: products/photocrati_nextgen/modules/ngglegacy/lib/rewrite.php:217
559
  #: products/photocrati_nextgen/modules/ngglegacy/lib/rewrite.php:226
560
  msgid "Gallery"
@@ -563,29 +802,33 @@ msgstr[0] ""
563
  msgstr[1] ""
564
 
565
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_media_library.php:4
566
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:4
567
  msgid "Create a new gallery"
568
  msgstr ""
569
 
570
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_media_library.php:9
571
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:11
572
  msgid "Gallery title"
573
  msgstr ""
574
 
575
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:15
576
- msgid "Your browser doesn't have Silverlight, HTML5, or HTML4 support."
577
  msgstr ""
578
 
579
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:122
580
- msgid "Drag image and ZIP files here or click <strong>Add Files</strong>"
581
  msgstr ""
582
 
583
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:124
584
- msgid "Drag image files here or click <strong>Add Files</strong>"
585
  msgstr ""
586
 
587
- #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:244
588
- msgid "An unexpected error occured. This is most likely due to a server misconfiguration. Check your PHP error log or ask your hosting provider for assistance."
 
 
 
 
589
  msgstr ""
590
 
591
  #: products/photocrati_nextgen/modules/nextgen_admin/class.admin_notification_manager.php:278
@@ -636,31 +879,59 @@ msgstr ""
636
  msgid "Average"
637
  msgstr ""
638
 
639
- #: products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_admin_page_controller.php:148
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
640
  msgid "Good work. Keep making the web beautiful."
641
  msgstr ""
642
 
643
- #: products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_admin_page_controller.php:177
644
  msgid "Saved successfully"
645
  msgstr ""
646
 
647
- #: products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_first_run_notification_wizard.php:25
648
  msgid "Thanks for installing NextGEN Gallery! Want help creating your first gallery?"
649
  msgstr ""
650
 
651
- #: products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_first_run_notification_wizard.php:26
652
  msgid "Launch the Gallery Wizard"
653
  msgstr ""
654
 
655
- #: products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_first_run_notification_wizard.php:27
656
  msgid "If you close this message, you can also launch the Gallery Wizard at any time from the"
657
  msgstr ""
658
 
659
- #: products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_first_run_notification_wizard.php:28
660
  msgid "NextGEN Overview page"
661
  msgstr ""
662
 
663
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:210
664
  msgid "PHP 5.2 will be deprecated in a future version of NextGEN. Please upgrade your PHP installation to 5.3 or above."
665
  msgstr ""
666
 
@@ -672,72 +943,76 @@ msgstr ""
672
  msgid "Hello, this wizard will guide you through creating a NextGEN gallery and inserting it into a page. Click \"Next step\" to proceed."
673
  msgstr ""
674
 
675
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:491
676
  msgid "Click on \"Pages\" to access your WordPress pages."
677
  msgstr ""
678
 
679
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:495
680
  msgid "Click \"Add New\" to create a new page."
681
  msgstr ""
682
 
683
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:501
684
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:532
685
  msgid "Type in a title for your page."
686
  msgstr ""
687
 
688
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:506
689
  msgid "Now click the button to insert a block."
690
  msgstr ""
691
 
692
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:512
693
  msgid "Type \"nextgen\" to search for the NextGEN block."
694
  msgstr ""
695
 
696
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:518
697
  msgid "Click on the NextGEN block to add it."
698
  msgstr ""
699
 
700
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:525
701
  msgid "Now click the \"Add Gallery\" button to open NextGEN's Insert Gallery Window."
702
  msgstr ""
703
 
704
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:537
705
  msgid "Now click the \"Add Gallery\" button to open NextGEN's Insert Gallery Window (IGW)."
706
  msgstr ""
707
 
708
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:543
709
  msgid "Now click the \"Upload Images\" tab to add a new gallery."
710
  msgstr ""
711
 
712
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:550
713
  msgid "Select a name for your gallery."
714
  msgstr ""
715
 
716
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:557
717
- msgid "Now click the \"Add Files\" button and select some images to add to the gallery."
 
 
 
 
718
  msgstr ""
719
 
720
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:563
721
- msgid "Now click the \"Start Upload\" button to begin the upload process."
722
  msgstr ""
723
 
724
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:570
725
  msgid "Congratulations! You just created your first gallery. Now let's insert it into the page. Click the \"Insert into Page\" tab."
726
  msgstr ""
727
 
728
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:577
729
  msgid "Click on the \"NextGEN Basic Slideshow\" radio button to select the display type for the gallery."
730
  msgstr ""
731
 
732
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:583
733
  msgid "Now click inside the \"Galleries\" field and select your gallery."
734
  msgstr ""
735
 
736
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:589
737
  msgid "Now click on the \"Insert Gallery\" button to insert the gallery in your page."
738
  msgstr ""
739
 
740
- #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:596
741
  msgid "Congratulations! You just created your first gallery. You can now click the \"Publish\" button on the right to publish your page."
742
  msgstr ""
743
 
@@ -746,15 +1021,7 @@ msgstr ""
746
  msgid "Dismiss"
747
  msgstr ""
748
 
749
- #: products/photocrati_nextgen/modules/nextgen_admin/templates/form.php:8
750
- msgid "Want image protection, social sharing, or ecommerce for this display? "
751
- msgstr ""
752
-
753
- #: products/photocrati_nextgen/modules/nextgen_admin/templates/form.php:8
754
- msgid "Upgrade to NextGEN Pro!"
755
- msgstr ""
756
-
757
- #: products/photocrati_nextgen/modules/nextgen_admin/templates/nextgen_admin_page.php:45
758
  msgid "Save Options"
759
  msgstr ""
760
 
@@ -912,18 +1179,18 @@ msgstr ""
912
  msgid "NextGEN Basic Slideshow"
913
  msgstr ""
914
 
915
- #: products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/module.nextgen_basic_imagebrowser.php:187
916
  msgid "NextGEN Basic ImageBrowser"
917
  msgstr ""
918
 
919
- #: products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/templates/nextgen_basic_imagebrowser.php:41
920
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-caption.php:26
921
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-exif.php:30
922
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser.php:26
923
  msgid "Back"
924
  msgstr ""
925
 
926
- #: products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/templates/nextgen_basic_imagebrowser.php:55
927
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:88
928
  #: products/photocrati_nextgen/modules/ngglegacy/lib/rewrite.php:220
929
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-caption.php:31
@@ -933,7 +1200,7 @@ msgid "Picture"
933
  msgstr ""
934
 
935
  #: products/photocrati_nextgen/modules/nextgen_basic_singlepic/adapter.nextgen_basic_singlepic_form.php:43
936
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:131
937
  msgid "Thumbnail dimensions"
938
  msgstr ""
939
 
@@ -958,7 +1225,7 @@ msgid "Top"
958
  msgstr ""
959
 
960
  #: products/photocrati_nextgen/modules/nextgen_basic_singlepic/adapter.nextgen_basic_singlepic_form.php:88
961
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:177
962
  msgid "Image quality"
963
  msgstr ""
964
 
@@ -1011,7 +1278,7 @@ msgid "NextGEN Basic TagCloud"
1011
  msgstr ""
1012
 
1013
  #: products/photocrati_nextgen/modules/nextgen_basic_templates/adapter.nextgen_basic_template_form.php:48
1014
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:259
1015
  msgid "Default"
1016
  msgstr ""
1017
 
@@ -1023,6 +1290,10 @@ msgstr ""
1023
  msgid "Use a legacy template when rendering (not recommended)."
1024
  msgstr ""
1025
 
 
 
 
 
1026
  #: products/photocrati_nextgen/modules/nextgen_data/class.gallery.php:48
1027
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:147
1028
  #: products/photocrati_nextgen/modules/ngglegacy/admin/wpmu.php:36
@@ -1085,7 +1356,7 @@ msgstr ""
1085
 
1086
  #: products/photocrati_nextgen/modules/nextgen_data/class.nextgen_metadata.php:472
1087
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:31
1088
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:128
1089
  #: products/photocrati_nextgen/modules/ngglegacy/lib/meta.php:465
1090
  msgid "Date/Time"
1091
  msgstr ""
@@ -1112,7 +1383,7 @@ msgid "Shutter speed"
1112
  msgstr ""
1113
 
1114
  #: products/photocrati_nextgen/modules/nextgen_data/class.nextgen_metadata.php:477
1115
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:781
1116
  #: products/photocrati_nextgen/modules/ngglegacy/lib/meta.php:470
1117
  #: products/photocrati_nextgen/modules/widget/templates/form_gallery.php:4
1118
  #: products/photocrati_nextgen/modules/widget/templates/form_mediarss.php:3
@@ -1121,7 +1392,7 @@ msgid "Title"
1121
  msgstr ""
1122
 
1123
  #: products/photocrati_nextgen/modules/nextgen_data/class.nextgen_metadata.php:478
1124
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:653
1125
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:412
1126
  #: products/photocrati_nextgen/modules/ngglegacy/lib/meta.php:471
1127
  msgid "Author"
@@ -1294,8 +1565,8 @@ msgstr ""
1294
 
1295
  #: products/photocrati_nextgen/modules/nextgen_gallery_display/adapter.display_settings_controller.php:22
1296
  #: products/photocrati_nextgen/modules/nextgen_gallery_display/module.nextgen_gallery_display.php:352
1297
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/module.nextgen_gallery_display.php:432
1298
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:417
1299
  msgid "Gallery Settings"
1300
  msgstr ""
1301
 
@@ -1328,52 +1599,52 @@ msgstr ""
1328
  msgid "Recent Images"
1329
  msgstr ""
1330
 
1331
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:104
1332
  msgid "Enable AJAX pagination"
1333
  msgstr ""
1334
 
1335
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:106
1336
  msgid "Browse images without reloading the page."
1337
  msgstr ""
1338
 
1339
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:121
1340
  msgid "Override thumbnail settings"
1341
  msgstr ""
1342
 
1343
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:123
1344
  msgid "This does not affect existing thumbnails; overriding the thumbnail settings will create an additional set of thumbnails. To change the size of existing thumbnails please visit 'Manage Galleries' and choose 'Create new thumbnails' for all images in the gallery."
1345
  msgstr ""
1346
 
1347
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:143
1348
  msgid "Thumbnail crop"
1349
  msgstr ""
1350
 
1351
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:167
1352
  msgid "Override image settings"
1353
  msgstr ""
1354
 
1355
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:169
1356
  msgid "Overriding the image settings will create an additional set of images"
1357
  msgstr ""
1358
 
1359
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:187
1360
  msgid "Image crop"
1361
  msgstr ""
1362
 
1363
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:196
1364
  msgid "Image watermark"
1365
  msgstr ""
1366
 
1367
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:217
1368
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:239
1369
  msgid "Select View"
1370
  msgstr ""
1371
 
1372
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:257
1373
  msgid "Legacy"
1374
  msgstr ""
1375
 
1376
- #: products/photocrati_nextgen/modules/nextgen_gallery_display/module.nextgen_gallery_display.php:431
1377
  msgid "NextGEN Gallery & Album Settings"
1378
  msgstr ""
1379
 
@@ -1394,13 +1665,13 @@ msgid "Image Options"
1394
  msgstr ""
1395
 
1396
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:28
1397
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:125
1398
  msgid "Image ID"
1399
  msgstr ""
1400
 
1401
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:29
1402
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:826
1403
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:126
1404
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:163
1405
  msgid "Filename"
1406
  msgstr ""
@@ -1410,12 +1681,12 @@ msgid "Alt/Title Text"
1410
  msgstr ""
1411
 
1412
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:43
1413
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:129
1414
  msgid "Ascending"
1415
  msgstr ""
1416
 
1417
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:44
1418
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:130
1419
  msgid "Descending"
1420
  msgstr ""
1421
 
@@ -1515,7 +1786,7 @@ msgstr ""
1515
  msgid "Lightbox Effects"
1516
  msgstr ""
1517
 
1518
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.lightbox_manager_form.php:43
1519
  msgid "What lightbox would you like to use?"
1520
  msgstr ""
1521
 
@@ -1523,72 +1794,94 @@ msgstr ""
1523
  msgid "Miscellaneous"
1524
  msgstr ""
1525
 
1526
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:26
1527
  msgid "Add MediaRSS link?"
1528
  msgstr ""
1529
 
1530
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:27
1531
  msgid "When enabled, adds a MediaRSS link to your header. Third-party web services can use this to publish your galleries"
1532
  msgstr ""
1533
 
1534
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:31
1535
  msgid "Display galleries in feeds"
1536
  msgstr ""
1537
 
1538
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:32
1539
  msgid "NextGEN hides its gallery displays in feeds other than MediaRSS. This enables image galleries in feeds."
1540
  msgstr ""
1541
 
1542
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:35
1543
  msgid "Clear image cache"
1544
  msgstr ""
1545
 
1546
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:36
1547
  msgid ""
1548
  "Completely clear the NextGEN cache of all image modifications?\n"
1549
  "\n"
1550
  "Choose [Cancel] to Stop, [OK] to proceed."
1551
  msgstr ""
1552
 
1553
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1554
  msgid "Permalink slug"
1555
  msgstr ""
1556
 
1557
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:48
1558
  msgid "Maximum image count"
1559
  msgstr ""
1560
 
1561
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:50
1562
  msgid "This is the maximum limit of images that NextGEN will restrict itself to querying"
1563
  msgstr ""
1564
 
1565
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:52
1566
  msgid "Note: This limit will not apply to slideshow widgets or random galleries if/when those galleries specify their own image limits"
1567
  msgstr ""
1568
 
1569
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:61
1570
  msgid "Random widget cache duration"
1571
  msgstr ""
1572
 
1573
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:63
1574
  msgid "The duration of time (in minutes) that \"random\" widget galleries should be cached. A setting of zero will disable caching."
1575
  msgstr ""
1576
 
1577
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:72
1578
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:80
1579
  msgid "Use alternative method of retrieving random image galleries"
1580
  msgstr ""
1581
 
1582
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:74
1583
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:82
1584
  msgid "Some web hosts' database servers disable or disrupt queries using 'ORDER BY RAND()' which can cause galleries to lose their randomness. NextGen provides an alternative (but not completely random) method to determine what images are fed into 'random' galleries."
1585
  msgstr ""
1586
 
1587
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:88
1588
  msgid "Do not enqueue FontAwesome"
1589
  msgstr ""
1590
 
1591
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:90
1592
  msgid "Warning: your theme or another plugin must provide FontAwesome or your gallery displays may appear incorrectly"
1593
  msgstr ""
1594
 
@@ -1597,6 +1890,11 @@ msgstr ""
1597
  msgid "Other Options"
1598
  msgstr ""
1599
 
 
 
 
 
 
1600
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.reset_form.php:12
1601
  msgid "Reset Options"
1602
  msgstr ""
@@ -1742,24 +2040,6 @@ msgstr ""
1742
  msgid "Automatically watermark images during upload:"
1743
  msgstr ""
1744
 
1745
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.watermarks_form.php:153
1746
- #: products/photocrati_nextgen/modules/nextgen_other_options/templates/styling_tab.php:10
1747
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:61
1748
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:65
1749
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:69
1750
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:105
1751
- msgid "Yes"
1752
- msgstr ""
1753
-
1754
- #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.watermarks_form.php:154
1755
- #: products/photocrati_nextgen/modules/nextgen_other_options/templates/styling_tab.php:13
1756
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:62
1757
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:66
1758
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:70
1759
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:105
1760
- msgid "No"
1761
- msgstr ""
1762
-
1763
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.watermarks_form.php:155
1764
  msgid "Please note: You can only activate the watermark under Manage Gallery. This action cannot be undone."
1765
  msgstr ""
@@ -1784,31 +2064,23 @@ msgstr ""
1784
  msgid "Refresh preview image"
1785
  msgstr ""
1786
 
1787
- #: products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php:32
1788
- msgid "Want a stunning, full screen, lightbox with customization options?"
1789
- msgstr ""
1790
-
1791
- #: products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php:32
1792
- msgid "Get the Pro Lightbox!"
1793
- msgstr ""
1794
-
1795
- #: products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php:38
1796
  msgid "What must the lightbox be applied to?"
1797
  msgstr ""
1798
 
1799
- #: products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php:42
1800
  msgid "Only apply to NextGEN images"
1801
  msgstr ""
1802
 
1803
- #: products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php:43
1804
  msgid "Only apply to NextGEN and WordPress images"
1805
  msgstr ""
1806
 
1807
- #: products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php:44
1808
  msgid "Try to apply to all images"
1809
  msgstr ""
1810
 
1811
- #: products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php:45
1812
  msgid "Try to apply to all images that link to image files"
1813
  msgstr ""
1814
 
@@ -1820,47 +2092,174 @@ msgstr ""
1820
  msgid "All stylesheets must contain a <a href='#' onclick='%s'>file header</a>"
1821
  msgstr ""
1822
 
1823
- #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:23
1824
- msgid "Upgrade to Pro"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1825
  msgstr ""
1826
 
1827
- #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:35
1828
- msgid "Create Stunning Galleries with NextGEN Pro"
1829
  msgstr ""
1830
 
1831
- #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:36
1832
- msgid "Sell Photos + Adobe Lightroom"
1833
  msgstr ""
1834
 
1835
- #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:37
1836
- msgid "Introducing the most powerful gallery system ever made for WordPress. Watch our 30 second video, or click below to learn more about NextGEN premium extensions and support."
1837
  msgstr ""
1838
 
1839
- #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:38
1840
- msgid "You're awesome! You've already got NextGEN Plus. But why not go all the way? With NextGEN Pro, you can sell print and digital downloads, provide proofing galleries for clients, manage galleries directly from Adobe Lightroom, and more."
 
1841
  msgstr ""
1842
 
1843
- #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:39
1844
- msgid "Psst...watch the video ->"
1845
  msgstr ""
1846
 
1847
- #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:40
1848
- msgid "Get Premium Extensions"
1849
  msgstr ""
1850
 
1851
- #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:41
1852
- msgid "Learn More"
1853
  msgstr ""
1854
 
1855
- #: products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php:75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1856
  msgid "Related Images"
1857
  msgstr ""
1858
 
1859
- #: products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php:95
1860
  msgid "View Slideshow"
1861
  msgstr ""
1862
 
1863
- #: products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php:96
1864
  msgid "View Thumbnails"
1865
  msgstr ""
1866
 
@@ -1994,29 +2393,29 @@ msgstr ""
1994
  msgid "No album was specified to edit."
1995
  msgstr ""
1996
 
1997
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:171
1998
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:202
1999
  msgid "Overview"
2000
  msgstr ""
2001
 
2002
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:174
2003
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:210
2004
  msgid "Manage Tags"
2005
  msgstr ""
2006
 
2007
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:184
2008
  msgid "Network settings"
2009
  msgstr ""
2010
 
2011
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:291
2012
  msgid "You do not have the correct permission"
2013
  msgstr ""
2014
 
2015
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:292
2016
  msgid "Unexpected Error"
2017
  msgstr ""
2018
 
2019
- #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:293
2020
  msgid "A failure occurred"
2021
  msgstr ""
2022
 
@@ -2029,132 +2428,132 @@ msgstr ""
2029
  msgid "Album deleted"
2030
  msgstr ""
2031
 
2032
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:443
2033
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:514
2034
  #: products/photocrati_nextgen/modules/ngglegacy/admin/roles.php:56
2035
  msgid "Edit Album"
2036
  msgstr ""
2037
 
2038
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:492
2039
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:602
2040
  msgid "Select album"
2041
  msgstr ""
2042
 
2043
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:494
2044
  msgid "No album selected"
2045
  msgstr ""
2046
 
2047
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:509
2048
  #: products/photocrati_nextgen/modules/ngglegacy/admin/edit-thumbnail.php:181
2049
  #: products/photocrati_nextgen/modules/ngglegacy/admin/rotate.php:91
2050
  msgid "Update"
2051
  msgstr ""
2052
 
2053
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:526
2054
  msgid "Add new album"
2055
  msgstr ""
2056
 
2057
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:528
2058
  msgid "Add"
2059
  msgstr ""
2060
 
2061
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:539
2062
  msgid "Show / hide used galleries"
2063
  msgstr ""
2064
 
2065
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:539
2066
  msgid "Show all"
2067
  msgstr ""
2068
 
2069
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:540
2070
  msgid "Maximize the widget content"
2071
  msgstr ""
2072
 
2073
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:540
2074
  msgid "Maximize"
2075
  msgstr ""
2076
 
2077
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:541
2078
  msgid "Minimize the widget content"
2079
  msgstr ""
2080
 
2081
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:541
2082
  msgid "Minimize"
2083
  msgstr ""
2084
 
2085
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:543
2086
  msgid "After you create and select an album, you can drag and drop a gallery or another album into your new album below."
2087
  msgstr ""
2088
 
2089
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:554
2090
  msgid "Album ID"
2091
  msgstr ""
2092
 
2093
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:567
2094
  msgid "No album selected!"
2095
  msgstr ""
2096
 
2097
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:579
2098
  msgid "Select gallery"
2099
  msgstr ""
2100
 
2101
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:630
2102
  msgid "Album name:"
2103
  msgstr ""
2104
 
2105
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:636
2106
  msgid "Album description:"
2107
  msgstr ""
2108
 
2109
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:642
2110
  msgid "Select a preview image:"
2111
  msgstr ""
2112
 
2113
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:643
2114
  #: products/photocrati_nextgen/modules/ngglegacy/admin/templates/manage_gallery/gallery_preview_image_field.php:3
2115
  msgid "No picture"
2116
  msgstr ""
2117
 
2118
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:655
2119
  msgid "Page Link to"
2120
  msgstr ""
2121
 
2122
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:665
2123
  #: products/photocrati_nextgen/modules/ngglegacy/admin/templates/manage_gallery/gallery_link_to_page_field.php:3
2124
  msgid "Not linked"
2125
  msgstr ""
2126
 
2127
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:674
2128
  msgid "There are no pages to link to"
2129
  msgstr ""
2130
 
2131
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:684
2132
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:456
2133
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:516
2134
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:585
2135
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:607
2136
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:651
2137
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:695
2138
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:742
2139
  msgid "OK"
2140
  msgstr ""
2141
 
2142
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:686
2143
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:460
2144
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:520
2145
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:589
2146
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:610
2147
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:654
2148
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:698
2149
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:745
2150
  msgid "Cancel"
2151
  msgstr ""
2152
 
2153
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:780
2154
  msgid "Name"
2155
  msgstr ""
2156
 
2157
- #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:782
2158
  #: products/photocrati_nextgen/modules/ngglegacy/lib/rewrite.php:229
2159
  msgid "Page"
2160
  msgstr ""
@@ -2274,9 +2673,9 @@ msgstr[1] ""
2274
 
2275
  #: products/photocrati_nextgen/modules/ngglegacy/admin/functions.php:675
2276
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:119
2277
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:263
2278
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:302
2279
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:490
2280
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:664
2281
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:742
2282
  msgid "Create new thumbnails"
@@ -2297,14 +2696,14 @@ msgid "NextGEN Gallery : Tables could not created, please check your database se
2297
  msgstr ""
2298
 
2299
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:107
2300
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:270
2301
  msgid "No images selected"
2302
  msgstr ""
2303
 
2304
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:115
2305
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:264
2306
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:298
2307
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:491
2308
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:645
2309
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:726
2310
  msgid "Resize images"
@@ -2318,15 +2717,15 @@ msgid ""
2318
  msgstr ""
2319
 
2320
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:170
2321
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:281
2322
  msgid "Add new gallery"
2323
  msgstr ""
2324
 
2325
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:214
2326
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:217
2327
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:351
2328
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:362
2329
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:366
2330
  msgid "Search Images"
2331
  msgstr ""
2332
 
@@ -2335,90 +2734,90 @@ msgstr ""
2335
  msgid "Search Galleries"
2336
  msgstr ""
2337
 
2338
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:260
2339
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:488
2340
  msgid "Bulk actions"
2341
  msgstr ""
2342
 
2343
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:262
2344
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:489
2345
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:574
2346
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:690
2347
  msgid "Set watermark"
2348
  msgstr ""
2349
 
2350
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:265
2351
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:494
2352
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:579
2353
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:710
2354
  msgid "Import metadata"
2355
  msgstr ""
2356
 
2357
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:266
2358
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:492
2359
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:569
2360
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:687
2361
  msgid "Recover from backup"
2362
  msgstr ""
2363
 
2364
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:272
2365
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:506
2366
  msgid "Apply"
2367
  msgstr ""
2368
 
2369
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:366
2370
  msgid "Deleted user"
2371
  msgstr ""
2372
 
2373
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:401
2374
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:561
2375
  msgid "No entries found"
2376
  msgstr ""
2377
 
2378
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:434
2379
  msgid "New Gallery"
2380
  msgstr ""
2381
 
2382
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:441
2383
  msgid "Create a new , empty gallery below the folder"
2384
  msgstr ""
2385
 
2386
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:445
2387
  msgid "Allowed characters for file and folder names are"
2388
  msgstr ""
2389
 
2390
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:495
2391
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:673
2392
  msgid "Resize Images to"
2393
  msgstr ""
2394
 
2395
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:508
2396
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:686
2397
  msgid "Width x height (in pixel). NextGEN Gallery will keep ratio size"
2398
  msgstr ""
2399
 
2400
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:559
2401
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:717
2402
  msgid "Width x height (in pixel)"
2403
  msgstr ""
2404
 
2405
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:568
2406
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:725
2407
  msgid "Set fix dimension"
2408
  msgstr ""
2409
 
2410
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:576
2411
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:733
2412
  msgid "Ignore the aspect ratio, no portrait thumbnails"
2413
  msgstr ""
2414
 
2415
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:652
2416
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:827
2417
  #: products/photocrati_nextgen/modules/ngglegacy/admin/media-upload.php:274
2418
  msgid "Description"
2419
  msgstr ""
2420
 
2421
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:654
2422
  msgid "Page ID"
2423
  msgstr ""
2424
 
@@ -2430,155 +2829,155 @@ msgstr ""
2430
  msgid "Sorry, you have no access here"
2431
  msgstr ""
2432
 
2433
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:278
2434
  msgid "Copy image to..."
2435
  msgstr ""
2436
 
2437
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:282
2438
  msgid "Move image to..."
2439
  msgstr ""
2440
 
2441
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:286
2442
  msgid "Add new tags"
2443
  msgstr ""
2444
 
2445
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:290
2446
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:500
2447
  msgid "Delete tags"
2448
  msgstr ""
2449
 
2450
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:294
2451
  msgid "Overwrite"
2452
  msgstr ""
2453
 
2454
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:307
2455
  msgid ""
2456
  "You are about to start the bulk edit for %s images \n"
2457
  " \n"
2458
  " 'Cancel' to stop, 'OK' to proceed."
2459
  msgstr ""
2460
 
2461
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:341
2462
  msgid "Search results for &#8220;%s&#8221;"
2463
  msgstr ""
2464
 
2465
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:392
2466
  msgid "Gallery: "
2467
  msgid_plural "Galleries: "
2468
  msgstr[0] ""
2469
  msgstr[1] ""
2470
 
2471
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:430
2472
  msgid "Scan Folder for new images"
2473
  msgstr ""
2474
 
2475
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:460
2476
  msgid " 25"
2477
  msgstr ""
2478
 
2479
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:461
2480
  msgid " 50"
2481
  msgstr ""
2482
 
2483
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:462
2484
  msgid " 75"
2485
  msgstr ""
2486
 
2487
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:463
2488
  msgid "100"
2489
  msgstr ""
2490
 
2491
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:464
2492
  msgid "200"
2493
  msgstr ""
2494
 
2495
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:465
2496
  msgid "All"
2497
  msgstr ""
2498
 
2499
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:484
2500
  msgid "Images per page:"
2501
  msgstr ""
2502
 
2503
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:493
2504
  msgid "Delete images"
2505
  msgstr ""
2506
 
2507
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:495
2508
  msgid "Rotate images clockwise"
2509
  msgstr ""
2510
 
2511
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:496
2512
  msgid "Rotate images counter-clockwise"
2513
  msgstr ""
2514
 
2515
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:497
2516
  msgid "Copy to..."
2517
  msgstr ""
2518
 
2519
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:498
2520
  msgid "Move to..."
2521
  msgstr ""
2522
 
2523
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:499
2524
  msgid "Add tags"
2525
  msgstr ""
2526
 
2527
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:501
2528
  msgid "Overwrite tags"
2529
  msgstr ""
2530
 
2531
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:513
2532
  msgid "Sort gallery"
2533
  msgstr ""
2534
 
2535
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:594
2536
  msgid "Enter the tags"
2537
  msgstr ""
2538
 
2539
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:629
2540
  msgid "Select the destination gallery:"
2541
  msgstr ""
2542
 
2543
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:825
2544
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:158
2545
  #: products/photocrati_nextgen/modules/ngglegacy/admin/media-upload.php:295
2546
  msgid "Thumbnail"
2547
  msgstr ""
2548
 
2549
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:827
2550
  msgid "Alt &amp; Title Text"
2551
  msgstr ""
2552
 
2553
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:828
2554
  msgid "Tags (comma separated list)"
2555
  msgstr ""
2556
 
2557
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:40
2558
  msgid "Sort order changed"
2559
  msgstr ""
2560
 
2561
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:105
2562
  msgid "Sort Gallery"
2563
  msgstr ""
2564
 
2565
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:115
2566
  msgid "Update Sort Order"
2567
  msgstr ""
2568
 
2569
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:118
2570
  msgid "Back to gallery"
2571
  msgstr ""
2572
 
2573
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:123
2574
  msgid "Presort"
2575
  msgstr ""
2576
 
2577
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:124
2578
  msgid "Unsorted"
2579
  msgstr ""
2580
 
2581
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:127
2582
  #: products/photocrati_nextgen/modules/ngglegacy/admin/media-upload.php:270
2583
  msgid "Alt/Title text"
2584
  msgstr ""
@@ -2712,16 +3111,16 @@ msgstr ""
2712
  msgid "Tags changed"
2713
  msgstr ""
2714
 
2715
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:894
2716
  #: products/photocrati_nextgen/modules/ngglegacy/admin/wpmu.php:42
2717
  msgid "Updated successfully"
2718
  msgstr ""
2719
 
2720
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:934
2721
  msgid "New gallery page ID"
2722
  msgstr ""
2723
 
2724
- #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:934
2725
  msgid "created"
2726
  msgstr ""
2727
 
@@ -2758,201 +3157,166 @@ msgstr ""
2758
  msgid "Save all changes"
2759
  msgstr ""
2760
 
2761
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:25
2762
- msgid "Not set"
2763
  msgstr ""
2764
 
2765
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:28
2766
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:32
2767
- msgid "On"
2768
  msgstr ""
2769
 
2770
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:29
2771
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:33
2772
- msgid "Off"
2773
  msgstr ""
2774
 
2775
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:38
2776
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:42
2777
  #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:46
2778
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:50
2779
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:54
2780
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:58
2781
- msgid "N/A"
2782
  msgstr ""
2783
 
2784
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:57
2785
- msgid " MByte"
2786
  msgstr ""
2787
 
2788
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:73
2789
- msgid "Operating System"
2790
  msgstr ""
2791
 
2792
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:74
2793
- msgid "Server"
2794
  msgstr ""
2795
 
2796
  #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:75
2797
- msgid "Memory usage"
2798
- msgstr ""
2799
-
2800
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:76
2801
- msgid "MYSQL Version"
2802
- msgstr ""
2803
-
2804
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:77
2805
- msgid "SQL Mode"
2806
- msgstr ""
2807
-
2808
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:78
2809
- msgid "PHP Version"
2810
- msgstr ""
2811
-
2812
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:79
2813
- msgid "PHP Safe Mode"
2814
  msgstr ""
2815
 
2816
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:80
2817
- msgid "PHP Allow URL fopen"
2818
  msgstr ""
2819
 
2820
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:81
2821
- msgid "PHP Memory Limit"
2822
  msgstr ""
2823
 
2824
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:82
2825
- msgid "PHP Max Upload Size"
2826
  msgstr ""
2827
 
2828
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:83
2829
- msgid "PHP Max Post Size"
2830
  msgstr ""
2831
 
2832
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:84
2833
- msgid "PCRE Backtracking Limit"
2834
  msgstr ""
2835
 
2836
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:85
2837
- msgid "PHP Max Script Execute Time"
2838
  msgstr ""
2839
 
2840
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:86
2841
- msgid "PHP Exif support"
2842
  msgstr ""
2843
 
2844
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:87
2845
- msgid "PHP IPTC support"
2846
  msgstr ""
2847
 
2848
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:88
2849
- msgid "PHP XML support"
2850
  msgstr ""
2851
 
2852
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:111
2853
- msgid "No GD support"
2854
  msgstr ""
2855
 
2856
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:143
2857
- msgid "%1$sMB Allowed"
2858
  msgstr ""
2859
 
2860
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:144
2861
- msgid "%1$sMB (%2$s%%) Used"
2862
  msgstr ""
2863
 
2864
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:180
2865
- msgid "Welcome to NextGEN Gallery"
2866
  msgstr ""
2867
 
2868
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:183
2869
- msgid "Need help getting started? "
2870
  msgstr ""
2871
 
2872
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:183
2873
- msgid "Launch Gallery Wizard"
2874
  msgstr ""
2875
 
2876
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:187
2877
- msgid "Welcome"
2878
  msgstr ""
2879
 
2880
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:221
2881
- msgid "We have a growing list of video tutorials to get you started. Watch some below or head over to <a href=\"%s\" target=\"_blank\">NextGEN Gallery University on YouTube</a> to see all available vidoes."
2882
  msgstr ""
2883
 
2884
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:254
2885
- msgid "Want more? Head over to <a href=\"%s\" target=\"_blank\">NextGEN Gallery University on YouTube</a>."
2886
  msgstr ""
2887
 
2888
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:262
2889
- msgid "The most powerful gallery system ever built for WordPress. "
2890
  msgstr ""
2891
 
2892
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:262
2893
- msgid "Gorgeous new gallery displays, image protection, full screen lightbox, commenting and social sharing for individual images, proofing, ecommerce, digital downloads, and more."
2894
  msgstr ""
2895
 
2896
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:263
2897
- msgid "Get NextGEN Pro Now"
2898
  msgstr ""
2899
 
2900
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:273
2901
  msgid "Meet the new series of Genesis child themes by Imagely: gorgeous, responsive image-centric themes for photographers or anyone with visually rich websites."
2902
  msgstr ""
2903
 
2904
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:274
2905
  msgid "CLICK TO LEARN MORE:"
2906
  msgstr ""
2907
 
2908
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:329
2909
  msgid "Meet the Imagely Product Ambassadors"
2910
  msgstr ""
2911
 
2912
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:330
2913
  msgid "NextGEN Gallery and other Imagely products are used by some of the best photographers in the world. Meet some of the Imagely Ambassadors who are putting Imagely and NextGEN Gallery to work professionally."
2914
  msgstr ""
2915
 
2916
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:335
2917
  msgid "Jeff and Erin are a luxury husband and wife photography team who deeply love each other and their photography clients. They shoot weddings and engagements all over the U.S. and beyond. With three photography businesses that serve different clientele, they have unique insights into business strategies and are passionate about improving the day to day lives of other photographers."
2918
  msgstr ""
2919
 
2920
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:340
2921
  msgid "Tamara Lackey is a renowned professional photographer, speaker, and author. Her authentic lifestyle photography, from children’s portraits to celebrity portraits, is praised within her industry and published internationally. She is a Nikon USA Ambassador, the host of The reDefine Show web series, and the co-founder of the non-profit charitable organization, Beautiful Together, in support of children waiting for families."
2922
  msgstr ""
2923
 
2924
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:345
2925
  msgid "Colby is a photographer, photo educator, and author specializing in landscape, travel and humanitarian photography. With an audience reaching millions, Colby partners on social influencer marketing campaigns with some of the biggest companies and destinations in the world, including Sony, Samsung, Toshiba, Iceland Naturally, Jordan Tourism Board, Australia.com, Visit California and more."
2926
  msgstr ""
2927
 
2928
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:353
2929
  msgid "Jared is a professional wedding and lifestyle photographer. He also travels the world giving lectures and workshops on photography, lighting, and post-production efficiency and workflow. His interactive style, and attention to detail and craft make him an entertaining and demanding photography instructor."
2930
  msgstr ""
2931
 
2932
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:358
2933
  msgid "Brian is a professional photographer, author, and educator. He fuses landscape & travel photography with experiential storytelling and practical instructing to help others grow creatively. He is also a Sony Artisan of Imagery, a Zeiss Lens Ambassador, a Formatt-Hitech Featured Photographer, and a member of G-Technology’s G-Team."
2934
  msgstr ""
2935
 
2936
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:363
2937
  msgid "Christine famously coined the term WordPress. She is an author, speaker, business coach, and story strategist who specializes in helping creatives celebrate their story online through blogging and social media. When not offering actionable know-how to businesses, she can be found taking long road trips across North America in her Mini Cooper."
2938
  msgstr ""
2939
 
2940
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:371
2941
  msgid "Named one of the Top 10 Wedding Photographers in the World by American Photo magazine, David is a celebrated photographer and educator. He is also a mountain man with a enviable lifestyle: from his base in rural Washington, he travels all over the world teaching workshops, while sharing lessons with 16,000 photographers in the Abstract Canvas Facebook group."
2942
  msgstr ""
2943
 
2944
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:382
2945
- msgid "When contacting support, consider copying and pasting this information in your support request. It helps us troubleshoot more quickly."
2946
- msgstr ""
2947
-
2948
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:386
2949
- msgid "Server Settings"
2950
- msgstr ""
2951
-
2952
- #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:392
2953
- msgid "Graphic Library"
2954
- msgstr ""
2955
-
2956
  #: products/photocrati_nextgen/modules/ngglegacy/admin/roles.php:27
2957
  msgid "Select the lowest role which should be able to access the following capabilities. NextGEN Gallery supports the standard roles from WordPress."
2958
  msgstr ""
@@ -3217,7 +3581,7 @@ msgstr ""
3217
  msgid "Choose the default style for the galleries."
3218
  msgstr ""
3219
 
3220
- #: products/photocrati_nextgen/modules/ngglegacy/lib/core.php:214
3221
  msgid "Note : Based on your server memory limit you should not upload larger images then <strong>%d x %d</strong> pixel"
3222
  msgstr ""
3223
 
1
  # Copyright (C) 2020 Imagely
2
  # NextGEN Gallery base (English) .po source
3
  # This file is distributed under the same license as the NextGEN Gallery plugin.
 
 
4
  msgid ""
5
  msgstr ""
6
  "Project-Id-Version: NextGEN Gallery\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "POT-Creation-Date: 2014-02-20 19:45-0800\n"
14
+ "PO-Revision-Date: 2020-11-10 13:01+08\n"
15
  "X-Generator: WP-CLI 2.4.0\n"
16
  "X-Domain: nggallery\n"
17
 
18
  #. Plugin Name of the plugin
19
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:540
 
20
  #: products/photocrati_nextgen/modules/attach_to_post/module.attach_to_post.php:379
21
+ #: products/photocrati_nextgen/modules/nextgen_block/module.nextgen_block.php:63
22
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:73
23
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:74
24
  #: products/photocrati_nextgen/modules/ngglegacy/admin/media-upload.php:11
25
  msgid "NextGEN Gallery"
26
+ msgid_plural "NextGen Galleries"
27
+ msgstr[0] ""
28
+ msgstr[1] ""
29
 
30
  #. Plugin URI of the plugin
31
  msgid "https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/"
36
  msgstr ""
37
 
38
  #. Author of the plugin
 
39
  msgid "Imagely"
40
  msgstr ""
41
 
43
  msgid "https://www.imagely.com"
44
  msgstr ""
45
 
46
+ #: nggallery.php:156
47
  msgid "We’ve detected you are running PHP versions 7.0.26 or 7.1.12. These versions of PHP have a bug that breaks NextGEN Gallery and causes server crashes in certain conditions. To protect your site, NextGEN Gallery will not load. We recommend asking your host to roll back to an earlier version of PHP. For details on the PHP bug, see: <a target=\"_blank\" href=\"https://bugs.php.net/bug.php?id=75573\">bugs.php.net/bug.php?id=75573</a>"
48
  msgstr ""
49
 
50
+ #: nggallery.php:366
51
  msgid "NextGEN Gallery %s is incompatible with this version of NextGEN Pro. Please update NextGEN Pro to version %s or higher to restore NextGEN Pro functionality."
52
  msgstr ""
53
 
54
+ #: nggallery.php:507
55
  msgid "Every %d seconds"
56
  msgstr ""
57
 
58
+ #: nggallery.php:637
 
59
  msgid "Sorry, NextGEN Gallery works only with a role called administrator"
60
  msgstr ""
61
 
 
 
 
 
62
  #: products/photocrati_nextgen/modules/attach_to_post/adapter.attach_to_post_ajax.php:168
63
  msgid "Album: %s"
64
  msgstr ""
79
  msgid "Invalid request"
80
  msgstr ""
81
 
82
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:365
83
  msgid "Are you inserting a Gallery (default), an Album, or images based on Tags?"
84
  msgstr ""
85
 
86
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:366
87
  #: products/photocrati_nextgen/modules/nextgen_admin/class.form.php:245
88
  msgid "(optional)"
89
  msgstr ""
90
 
91
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:367
92
  msgid "Sets an SEO-friendly name to this gallery for URLs. Currently only in use by the Pro Lightbox"
93
  msgstr ""
94
 
95
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:368
96
  msgid "Slug"
97
  msgstr ""
98
 
99
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:369
100
  msgid "No entities to display for this source"
101
  msgstr ""
102
 
103
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:370
104
  msgid "Exclude?"
105
  msgstr ""
106
 
107
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:371
108
  msgid "Select a Gallery"
109
  msgstr ""
110
 
111
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:372
112
  msgid "Select one or more galleries (click in box to see available galleries)."
113
  msgstr ""
114
 
115
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:373
116
  msgid "Select one album (click in box to see available albums)."
117
  msgstr ""
118
 
119
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:558
120
  msgid "Click to edit"
121
  msgstr ""
122
 
123
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:584
124
  msgid "NextGEN Gallery - Attach To Post"
125
  msgstr ""
126
 
127
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:599
128
  msgid "Insert Into Page"
129
  msgstr ""
130
 
131
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:606
132
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.upload_images_form.php:13
133
  msgid "Upload Images"
134
  msgstr ""
135
 
136
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:613
137
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:81
138
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:115
139
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:197
140
  msgid "Manage Galleries"
141
  msgid_plural "Manage Galleries"
142
  msgstr[0] ""
143
  msgstr[1] ""
144
 
145
+ #: products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php:620
146
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:82
147
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:117
148
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:474
149
  msgid "Manage Albums"
150
  msgid_plural "Albums"
151
  msgstr[0] ""
177
  msgstr ""
178
 
179
  #: products/photocrati_nextgen/modules/attach_to_post/module.attach_to_post.php:381
180
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:512
181
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:263
182
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:357
183
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:358
184
  #: products/photocrati_nextgen/modules/ngglegacy/admin/tags.php:223
189
  msgid "Attach NextGEN Gallery to Post"
190
  msgstr ""
191
 
192
+ #: products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php:24
193
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:437
194
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:521
195
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:573
 
 
 
 
 
 
 
 
 
 
 
 
196
  msgid "Save Changes"
197
  msgstr ""
198
 
199
+ #: products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php:24
200
  msgid "Insert Gallery"
201
  msgstr ""
202
 
203
+ #: products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php:27
204
  msgid "Need a quick tutorial?"
205
  msgstr ""
206
 
207
+ #: products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php:29
208
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:78
209
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:222
210
  msgid "Click to Close"
211
  msgstr ""
212
 
271
  msgid "Fancybox"
272
  msgstr ""
273
 
274
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:66
275
  msgid "Shutter"
276
  msgstr ""
277
 
278
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:77
279
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:221
280
  msgid "L O A D I N G"
281
  msgstr ""
282
 
283
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:85
284
  msgid "Shutter Reloaded"
285
  msgstr ""
286
 
287
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:96
288
  msgid "Previous"
289
  msgstr ""
290
 
291
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:97
292
+ #: products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/templates/nextgen_basic_imagebrowser.php:59
293
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-caption.php:29
294
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-exif.php:33
295
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser.php:29
296
  msgid "Next"
297
  msgstr ""
298
 
299
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:98
300
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:125
301
  msgid "Close"
302
  msgstr ""
303
 
304
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:99
305
  msgid "Full Size"
306
  msgstr ""
307
 
308
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:100
309
  msgid "Fit to Screen"
310
  msgstr ""
311
 
312
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:101
313
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:123
314
+ #: products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/templates/default-view.php:64
315
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:664
316
  msgid "Image"
317
  msgid_plural "Images"
318
  msgstr[0] ""
319
  msgstr[1] ""
320
 
321
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:102
322
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:124
323
+ #: products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/templates/default-view.php:66
324
+ #: products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/templates/nextgen_basic_imagebrowser.php:67
325
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-caption.php:31
326
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-exif.php:35
327
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser.php:31
328
  msgid "of"
329
  msgstr ""
330
 
331
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:103
332
  msgid "Loading..."
333
  msgstr ""
334
 
335
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:110
336
  msgid "Thickbox"
337
  msgstr ""
338
 
339
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:121
340
  msgid "Next &gt;"
341
  msgstr ""
342
 
343
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:122
344
  msgid "&lt; Prev"
345
  msgstr ""
346
 
347
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:126
348
  msgid "This feature requires inline frames. You have iframes disabled or your browser does not support them."
349
  msgstr ""
350
 
351
+ #: products/photocrati_nextgen/modules/lightbox/class.lightbox_library_manager.php:136
352
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:27
353
  #: products/photocrati_nextgen/modules/ngglegacy/admin/thumbnails-template.php:76
354
  msgid "Custom"
355
  msgstr ""
356
 
357
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_settings_form.php:19
358
+ msgid "Pro Tiled"
359
+ msgstr ""
360
+
361
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_settings_form.php:21
362
+ #: products/photocrati_nextgen/modules/marketing/adapter.igw_display_type_upsells.php:36
363
+ msgid "Pro Mosaic"
364
+ msgstr ""
365
+
366
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_settings_form.php:23
367
+ #: products/photocrati_nextgen/modules/marketing/adapter.igw_display_type_upsells.php:42
368
+ msgid "Pro Masonry"
369
+ msgstr ""
370
+
371
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_settings_form.php:44
372
+ #: products/photocrati_nextgen/modules/marketing/adapter.other_options_form.php:19
373
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:219
374
+ msgid "<strong>Bonus:</strong> NextGEN Gallery users get a discount of 20% off regular price."
375
+ msgstr ""
376
+
377
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_settings_form.php:48
378
+ msgid "Use the Pro Tiled Gallery in NextGEN Pro"
379
+ msgstr ""
380
+
381
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_settings_form.php:49
382
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:95
383
+ msgid "With this stunning display type, you can present your images large with no trouble. Choose the maximum width of the gallery, or let it automate. It will adjust incredibly on all devices."
384
+ msgstr ""
385
+
386
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_settings_form.php:53
387
+ msgid "View the Pro Tiled Demo"
388
+ msgstr ""
389
+
390
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_settings_form.php:60
391
+ msgid "Use the Mosaic Gallery in NextGEN Pro"
392
+ msgstr ""
393
+
394
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_settings_form.php:61
395
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:102
396
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:116
397
+ msgid "With this stunning display type, you can present your images in a flexible grid. Choose the maximum height for your rows, and their margins, or use the default settings. It will adjust incredibly on all devices."
398
+ msgstr ""
399
+
400
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_settings_form.php:65
401
+ msgid "View the Mosaic Demo"
402
+ msgstr ""
403
+
404
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_settings_form.php:72
405
+ msgid "Use the Masonry Gallery in NextGEN Pro"
406
+ msgstr ""
407
+
408
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_settings_form.php:73
409
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:109
410
+ msgid "With this stunning display type, you can present your images in a flexible grid. Choose the maximum width for your images, and their padding, or use the default settings. It will adjust incredibly on all devices."
411
+ msgstr ""
412
+
413
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_settings_form.php:77
414
+ msgid "View the Masonry Demo"
415
+ msgstr ""
416
+
417
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_type_settings_form.php:22
418
+ msgid "Ecommerce and Print Lab functionality"
419
+ msgstr ""
420
+
421
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_type_settings_form.php:31
422
+ msgid "proofing"
423
+ msgstr ""
424
+
425
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_type_settings_form.php:47
426
+ #: products/photocrati_nextgen/modules/marketing/adapter.igw_display_type_upsells.php:95
427
+ msgid "Requires NextGEN Pro"
428
+ msgstr ""
429
+
430
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_type_settings_form.php:48
431
+ msgid "Enable Proofing?"
432
+ msgstr ""
433
+
434
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_type_settings_form.php:49
435
+ msgid "Enable Ecommerce?"
436
+ msgstr ""
437
+
438
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_type_settings_form.php:50
439
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.watermarks_form.php:153
440
+ #: products/photocrati_nextgen/modules/nextgen_other_options/templates/styling_tab.php:10
441
+ msgid "Yes"
442
+ msgstr ""
443
+
444
+ #: products/photocrati_nextgen/modules/marketing/adapter.display_type_settings_form.php:51
445
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.watermarks_form.php:154
446
+ #: products/photocrati_nextgen/modules/nextgen_other_options/templates/styling_tab.php:13
447
+ msgid "No"
448
+ msgstr ""
449
+
450
+ #: products/photocrati_nextgen/modules/marketing/adapter.igw_display_type_upsells.php:30
451
+ msgid "Pro Tile"
452
+ msgstr ""
453
+
454
+ #: products/photocrati_nextgen/modules/marketing/adapter.igw_display_type_upsells.php:55
455
+ msgid "Pro Tiled Gallery"
456
+ msgstr ""
457
+
458
+ #: products/photocrati_nextgen/modules/marketing/adapter.igw_display_type_upsells.php:56
459
+ msgid "the Pro Tiled Gallery"
460
+ msgstr ""
461
+
462
+ #: products/photocrati_nextgen/modules/marketing/adapter.igw_display_type_upsells.php:64
463
+ msgid "Pro Masonry Gallery"
464
+ msgstr ""
465
+
466
+ #: products/photocrati_nextgen/modules/marketing/adapter.igw_display_type_upsells.php:65
467
+ msgid "the Pro Masonry Gallery"
468
+ msgstr ""
469
+
470
+ #: products/photocrati_nextgen/modules/marketing/adapter.igw_display_type_upsells.php:73
471
+ msgid "Pro Mosaic Gallery"
472
+ msgstr ""
473
+
474
+ #: products/photocrati_nextgen/modules/marketing/adapter.igw_display_type_upsells.php:74
475
+ msgid "the Pro Mosaic Gallery"
476
+ msgstr ""
477
+
478
+ #: products/photocrati_nextgen/modules/marketing/adapter.lightbox_options_mvc.php:12
479
+ msgid "Go big with the Pro Lightbox"
480
+ msgstr ""
481
+
482
+ #: products/photocrati_nextgen/modules/marketing/adapter.lightbox_options_mvc.php:13
483
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:144
484
+ msgid "The Pro Lightbox allows you to display images at full scale when opened. Your visitors will enjoy breathtaking views of your photos on any device. It's customizable, from colors to padding and more. Offer social sharing, deep linking, and individual image commenting. Turn your gallery lightbox view into a slideshow for your visitors. You can customize settings such as auto-playing and slideshow speed."
485
+ msgstr ""
486
+
487
+ #: products/photocrati_nextgen/modules/marketing/adapter.lightbox_options_mvc.php:14
488
+ msgid "<strong>Bonus:</strong> NextGEN Gallery users get a discount of 20% off regular price"
489
+ msgstr ""
490
+
491
+ #: products/photocrati_nextgen/modules/marketing/adapter.lightbox_options_mvc.php:17
492
+ msgid "View the Pro Lightbox Demo"
493
+ msgstr ""
494
+
495
+ #: products/photocrati_nextgen/modules/marketing/adapter.other_options_form.php:11
496
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:206
497
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:164
498
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:244
499
+ msgid "Image Protection"
500
+ msgstr ""
501
+
502
+ #: products/photocrati_nextgen/modules/marketing/adapter.other_options_form.php:17
503
+ msgid "Protect your images"
504
+ msgstr ""
505
+
506
+ #: products/photocrati_nextgen/modules/marketing/adapter.other_options_form.php:18
507
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:165
508
+ msgid "Image protection disables the ability for visitors to right-click or drag to download your images in both the gallery display and Pro Lightbox views. It gives you complete freedom to display your work without worry. You can also choose to protect all images sitewide, even outside of NextGEN Gallery."
509
+ msgstr ""
510
+
511
+ #: products/photocrati_nextgen/modules/marketing/adapter.other_options_form.php:22
512
+ msgid "Learn more"
513
+ msgstr ""
514
+
515
+ #: products/photocrati_nextgen/modules/marketing/class.block_base.php:24
516
+ msgid "Upgrade Now"
517
+ msgstr ""
518
+
519
+ #: products/photocrati_nextgen/modules/marketing/class.block_large.php:36
520
+ #: products/photocrati_nextgen/modules/marketing/class.block_popup.php:31
521
+ #: products/photocrati_nextgen/modules/marketing/templates/igw_promo.php:8
522
+ msgid "Upgrade to NextGEN Pro"
523
+ msgstr ""
524
+
525
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:40
526
+ msgid "NextGEN Basic users get a discount of 20% off regular price"
527
+ msgstr ""
528
+
529
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:41
530
+ msgid "Bonus"
531
+ msgstr ""
532
+
533
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:42
534
+ msgid "We're sorry, but %s is not available in the lite version of NextGEN Gallery. Please upgrade to NextGEN Pro to unlock these awesome features."
535
+ msgstr ""
536
+
537
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:99
538
+ #: products/photocrati_nextgen/modules/marketing/templates/display_type_settings.php:12
539
+ msgid "Want to sell your images online?"
540
+ msgstr ""
541
+
542
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:199
543
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:45
544
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:225
545
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:226
546
+ msgid "Ecommerce"
547
+ msgstr ""
548
+
549
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:200
550
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:231
551
+ msgid "Automated Print Fulfillment"
552
+ msgstr ""
553
+
554
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:201
555
+ msgid "Automated Tax Calculation"
556
+ msgstr ""
557
+
558
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:202
559
+ msgid "Additional Gallery Displays"
560
+ msgstr ""
561
+
562
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:203
563
+ msgid "Additional Album Displays"
564
+ msgstr ""
565
+
566
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:205
567
+ msgid "Image Proofing"
568
+ msgstr ""
569
+
570
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:207
571
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:143
572
+ msgid "Pro Lightbox"
573
+ msgstr ""
574
+
575
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:208
576
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:195
577
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:243
578
+ msgid "Digital Downloads"
579
+ msgstr ""
580
+
581
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:209
582
+ msgid "Dedicated customer support and so much more!"
583
+ msgstr ""
584
+
585
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:216
586
+ msgid "Want to make your gallery workflow and presentation even better?"
587
+ msgstr ""
588
+
589
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:217
590
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:257
591
+ msgid "By upgrading to NextGEN Pro, you can get access to numerous other features, including:"
592
+ msgstr ""
593
+
594
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:229
595
+ msgid "Want to do even more with your albums?"
596
+ msgstr ""
597
+
598
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:254
599
+ msgid "Want to do even more with your gallery display?"
600
+ msgstr ""
601
+
602
+ #: products/photocrati_nextgen/modules/marketing/module.marketing.php:256
603
+ msgid "We know that you will truly love NextGEN Pro. It has 2,600+ five star ratings and is active on over 900,000 websites."
604
+ msgstr ""
605
+
606
+ #: products/photocrati_nextgen/modules/marketing/templates/igw_promo.php:2
607
+ msgid "Want More Layouts?"
608
+ msgstr ""
609
+
610
+ #: products/photocrati_nextgen/modules/marketing/templates/igw_promo.php:12
611
+ msgid "Get 20% Off Now!"
612
+ msgstr ""
613
+
614
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.import_folder_form.php:12
615
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_folder.php:12
616
  msgid "Import Folder"
655
  msgstr ""
656
 
657
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.import_media_library_form.php:33
 
658
  msgid "Upload complete. Great job!"
659
  msgstr ""
660
 
674
  msgid "Import %d image(s)"
675
  msgstr ""
676
 
677
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:34
678
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:142
679
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:345
680
+ msgid "No permissions to upload images. Try refreshing the page or ensuring that your user account has sufficient roles/privileges."
681
  msgstr ""
682
 
683
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:47
684
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:86
685
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:291
686
  msgid "No gallery name specified"
687
  msgstr ""
688
 
689
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:67
690
+ msgid "Please ask your hosting provider or system administrator to enable the PHP XML module which is required for image uploads"
691
+ msgstr ""
692
+
693
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:103
694
  msgid "Failed to extract images from ZIP"
695
  msgstr ""
696
 
697
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:115
698
  msgid "Automatic image resizing failed [%1$s]."
699
  msgstr ""
700
 
701
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:121
702
  msgid "Thumbnail generation failed."
703
  msgstr ""
704
 
705
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:124
706
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:309
707
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:328
708
  msgid "Image generation failed"
709
  msgstr ""
710
 
711
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:133
712
+ msgid "An unexpected error occurred: %s"
 
 
 
713
  msgstr ""
714
 
715
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:197
 
 
 
 
 
716
  msgid "Directory does not exist."
717
  msgstr ""
718
 
719
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:201
720
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:209
721
  msgid "No permissions to browse folders. Try refreshing the page or ensuring that your user account has sufficient roles/privileges."
722
  msgstr ""
723
 
724
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:205
725
  msgid "No directory specified."
726
  msgstr ""
727
 
728
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:241
729
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:253
730
  msgid "No permissions to import folders. Try refreshing the page or ensuring that your user account has sufficient roles/privileges."
731
  msgstr ""
732
 
733
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:246
734
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:273
735
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:338
736
+ msgid "An unexpected error occured."
737
+ msgstr ""
738
+
739
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php:250
740
  msgid "No folder specified"
741
  msgstr ""
742
 
743
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_controller.php:12
744
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:113
745
  msgid "Add Gallery / Images"
746
  msgstr ""
747
 
748
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.upload_images_form.php:74
749
  msgid "No images were uploaded successfully."
750
  msgstr ""
751
 
752
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.upload_images_form.php:75
753
  msgid "1 image was uploaded successfully."
754
  msgstr ""
755
 
756
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.upload_images_form.php:76
757
  msgid "{count} images were uploaded successfully."
758
  msgstr ""
759
 
760
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.upload_images_form.php:77
 
 
 
 
761
  msgid "Manage gallery > {name}"
762
  msgstr ""
763
 
764
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.php:95
765
  msgid "XML is strongly encouraged for safely uploading images"
766
  msgstr ""
767
 
768
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.php:103
769
  msgid "Cannot write to %s: new galleries cannot be created"
770
  msgstr ""
771
 
790
  msgstr ""
791
 
792
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_media_library.php:2
793
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:12
794
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:92
795
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:297
796
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:660
 
 
797
  #: products/photocrati_nextgen/modules/ngglegacy/lib/rewrite.php:217
798
  #: products/photocrati_nextgen/modules/ngglegacy/lib/rewrite.php:226
799
  msgid "Gallery"
802
  msgstr[1] ""
803
 
804
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_media_library.php:4
805
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:18
806
  msgid "Create a new gallery"
807
  msgstr ""
808
 
809
  #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_media_library.php:9
810
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:32
811
  msgid "Gallery title"
812
  msgstr ""
813
 
814
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:37
815
+ msgid "Create &amp; select"
816
  msgstr ""
817
 
818
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:41
819
+ msgid "Creating..."
820
  msgstr ""
821
 
822
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:51
823
+ msgid "Drag image and ZIP files here or %{browse}"
824
  msgstr ""
825
 
826
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:53
827
+ msgid "Drag image files here or %{browse}"
828
+ msgstr ""
829
+
830
+ #: products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php:60
831
+ msgid "You may select files up to %dMB"
832
  msgstr ""
833
 
834
  #: products/photocrati_nextgen/modules/nextgen_admin/class.admin_notification_manager.php:278
879
  msgid "Average"
880
  msgstr ""
881
 
882
+ #: products/photocrati_nextgen/modules/nextgen_admin/class.mailchimp_optin_notice.php:91
883
+ msgid "Thank you for using NextGEN Gallery!"
884
+ msgstr ""
885
+
886
+ #: products/photocrati_nextgen/modules/nextgen_admin/class.mailchimp_optin_notice.php:92
887
+ msgid "Get NextGEN Gallery updates, photography tips, business tips, tutorials, and resources straight to your mailbox."
888
+ msgstr ""
889
+
890
+ #: products/photocrati_nextgen/modules/nextgen_admin/class.mailchimp_optin_notice.php:93
891
+ msgid "Yes, Please!"
892
+ msgstr ""
893
+
894
+ #: products/photocrati_nextgen/modules/nextgen_admin/class.mailchimp_optin_notice.php:94
895
+ msgid "Thank you for subscribing!"
896
+ msgstr ""
897
+
898
+ #: products/photocrati_nextgen/modules/nextgen_admin/class.mailchimp_optin_notice.php:95
899
+ msgid "Email Address"
900
+ msgstr ""
901
+
902
+ #: products/photocrati_nextgen/modules/nextgen_admin/class.mailchimp_optin_notice.php:96
903
+ msgid "First Name"
904
+ msgstr ""
905
+
906
+ #: products/photocrati_nextgen/modules/nextgen_admin/class.mailchimp_optin_notice.php:97
907
+ msgid "Cannot connect to the registration server right now. Please try again later."
908
+ msgstr ""
909
+
910
+ #: products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_admin_page_controller.php:152
911
  msgid "Good work. Keep making the web beautiful."
912
  msgstr ""
913
 
914
+ #: products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_admin_page_controller.php:170
915
  msgid "Saved successfully"
916
  msgstr ""
917
 
918
+ #: products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_first_run_notification_wizard.php:37
919
  msgid "Thanks for installing NextGEN Gallery! Want help creating your first gallery?"
920
  msgstr ""
921
 
922
+ #: products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_first_run_notification_wizard.php:38
923
  msgid "Launch the Gallery Wizard"
924
  msgstr ""
925
 
926
+ #: products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_first_run_notification_wizard.php:39
927
  msgid "If you close this message, you can also launch the Gallery Wizard at any time from the"
928
  msgstr ""
929
 
930
+ #: products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_first_run_notification_wizard.php:40
931
  msgid "NextGEN Overview page"
932
  msgstr ""
933
 
934
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:217
935
  msgid "PHP 5.2 will be deprecated in a future version of NextGEN. Please upgrade your PHP installation to 5.3 or above."
936
  msgstr ""
937
 
943
  msgid "Hello, this wizard will guide you through creating a NextGEN gallery and inserting it into a page. Click \"Next step\" to proceed."
944
  msgstr ""
945
 
946
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:492
947
  msgid "Click on \"Pages\" to access your WordPress pages."
948
  msgstr ""
949
 
950
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:497
951
  msgid "Click \"Add New\" to create a new page."
952
  msgstr ""
953
 
954
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:512
955
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:615
956
  msgid "Type in a title for your page."
957
  msgstr ""
958
 
959
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:531
960
  msgid "Now click the button to insert a block."
961
  msgstr ""
962
 
963
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:551
964
  msgid "Type \"nextgen\" to search for the NextGEN block."
965
  msgstr ""
966
 
967
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:571
968
  msgid "Click on the NextGEN block to add it."
969
  msgstr ""
970
 
971
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:599
972
  msgid "Now click the \"Add Gallery\" button to open NextGEN's Insert Gallery Window."
973
  msgstr ""
974
 
975
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:622
976
  msgid "Now click the \"Add Gallery\" button to open NextGEN's Insert Gallery Window (IGW)."
977
  msgstr ""
978
 
979
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:633
980
  msgid "Now click the \"Upload Images\" tab to add a new gallery."
981
  msgstr ""
982
 
983
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:667
984
  msgid "Select a name for your gallery."
985
  msgstr ""
986
 
987
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:691
988
+ msgid "Now click the 'Create & Select' button to create your gallery and upload to it."
989
+ msgstr ""
990
+
991
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:715
992
+ msgid "Now click the \"Browse\" button and select some images to add to the gallery."
993
  msgstr ""
994
 
995
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:739
996
+ msgid "Now click the \"Upload files\" button to begin the upload process."
997
  msgstr ""
998
 
999
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:766
1000
  msgid "Congratulations! You just created your first gallery. Now let's insert it into the page. Click the \"Insert into Page\" tab."
1001
  msgstr ""
1002
 
1003
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:778
1004
  msgid "Click on the \"NextGEN Basic Slideshow\" radio button to select the display type for the gallery."
1005
  msgstr ""
1006
 
1007
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:801
1008
  msgid "Now click inside the \"Galleries\" field and select your gallery."
1009
  msgstr ""
1010
 
1011
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:822
1012
  msgid "Now click on the \"Insert Gallery\" button to insert the gallery in your page."
1013
  msgstr ""
1014
 
1015
+ #: products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php:830
1016
  msgid "Congratulations! You just created your first gallery. You can now click the \"Publish\" button on the right to publish your page."
1017
  msgstr ""
1018
 
1021
  msgid "Dismiss"
1022
  msgstr ""
1023
 
1024
+ #: products/photocrati_nextgen/modules/nextgen_admin/templates/nextgen_admin_page.php:72
 
 
 
 
 
 
 
 
1025
  msgid "Save Options"
1026
  msgstr ""
1027
 
1179
  msgid "NextGEN Basic Slideshow"
1180
  msgstr ""
1181
 
1182
+ #: products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/module.nextgen_basic_imagebrowser.php:158
1183
  msgid "NextGEN Basic ImageBrowser"
1184
  msgstr ""
1185
 
1186
+ #: products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/templates/nextgen_basic_imagebrowser.php:51
1187
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-caption.php:26
1188
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-exif.php:30
1189
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser.php:26
1190
  msgid "Back"
1191
  msgstr ""
1192
 
1193
+ #: products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/templates/nextgen_basic_imagebrowser.php:65
1194
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:88
1195
  #: products/photocrati_nextgen/modules/ngglegacy/lib/rewrite.php:220
1196
  #: products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-caption.php:31
1200
  msgstr ""
1201
 
1202
  #: products/photocrati_nextgen/modules/nextgen_basic_singlepic/adapter.nextgen_basic_singlepic_form.php:43
1203
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:134
1204
  msgid "Thumbnail dimensions"
1205
  msgstr ""
1206
 
1225
  msgstr ""
1226
 
1227
  #: products/photocrati_nextgen/modules/nextgen_basic_singlepic/adapter.nextgen_basic_singlepic_form.php:88
1228
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:180
1229
  msgid "Image quality"
1230
  msgstr ""
1231
 
1278
  msgstr ""
1279
 
1280
  #: products/photocrati_nextgen/modules/nextgen_basic_templates/adapter.nextgen_basic_template_form.php:48
1281
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:262
1282
  msgid "Default"
1283
  msgstr ""
1284
 
1290
  msgid "Use a legacy template when rendering (not recommended)."
1291
  msgstr ""
1292
 
1293
+ #: products/photocrati_nextgen/modules/nextgen_block/module.nextgen_block.php:62
1294
+ msgid "Add NextGEN Gallery"
1295
+ msgstr ""
1296
+
1297
  #: products/photocrati_nextgen/modules/nextgen_data/class.gallery.php:48
1298
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:147
1299
  #: products/photocrati_nextgen/modules/ngglegacy/admin/wpmu.php:36
1356
 
1357
  #: products/photocrati_nextgen/modules/nextgen_data/class.nextgen_metadata.php:472
1358
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:31
1359
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:154
1360
  #: products/photocrati_nextgen/modules/ngglegacy/lib/meta.php:465
1361
  msgid "Date/Time"
1362
  msgstr ""
1383
  msgstr ""
1384
 
1385
  #: products/photocrati_nextgen/modules/nextgen_data/class.nextgen_metadata.php:477
1386
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:778
1387
  #: products/photocrati_nextgen/modules/ngglegacy/lib/meta.php:470
1388
  #: products/photocrati_nextgen/modules/widget/templates/form_gallery.php:4
1389
  #: products/photocrati_nextgen/modules/widget/templates/form_mediarss.php:3
1392
  msgstr ""
1393
 
1394
  #: products/photocrati_nextgen/modules/nextgen_data/class.nextgen_metadata.php:478
1395
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:662
1396
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:412
1397
  #: products/photocrati_nextgen/modules/ngglegacy/lib/meta.php:471
1398
  msgid "Author"
1565
 
1566
  #: products/photocrati_nextgen/modules/nextgen_gallery_display/adapter.display_settings_controller.php:22
1567
  #: products/photocrati_nextgen/modules/nextgen_gallery_display/module.nextgen_gallery_display.php:352
1568
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/module.nextgen_gallery_display.php:439
1569
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:419
1570
  msgid "Gallery Settings"
1571
  msgstr ""
1572
 
1599
  msgid "Recent Images"
1600
  msgstr ""
1601
 
1602
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:107
1603
  msgid "Enable AJAX pagination"
1604
  msgstr ""
1605
 
1606
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:109
1607
  msgid "Browse images without reloading the page."
1608
  msgstr ""
1609
 
1610
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:124
1611
  msgid "Override thumbnail settings"
1612
  msgstr ""
1613
 
1614
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:126
1615
  msgid "This does not affect existing thumbnails; overriding the thumbnail settings will create an additional set of thumbnails. To change the size of existing thumbnails please visit 'Manage Galleries' and choose 'Create new thumbnails' for all images in the gallery."
1616
  msgstr ""
1617
 
1618
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:146
1619
  msgid "Thumbnail crop"
1620
  msgstr ""
1621
 
1622
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:170
1623
  msgid "Override image settings"
1624
  msgstr ""
1625
 
1626
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:172
1627
  msgid "Overriding the image settings will create an additional set of images"
1628
  msgstr ""
1629
 
1630
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:190
1631
  msgid "Image crop"
1632
  msgstr ""
1633
 
1634
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:199
1635
  msgid "Image watermark"
1636
  msgstr ""
1637
 
1638
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:220
1639
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:242
1640
  msgid "Select View"
1641
  msgstr ""
1642
 
1643
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/mixin.display_type_form.php:260
1644
  msgid "Legacy"
1645
  msgstr ""
1646
 
1647
+ #: products/photocrati_nextgen/modules/nextgen_gallery_display/module.nextgen_gallery_display.php:438
1648
  msgid "NextGEN Gallery & Album Settings"
1649
  msgstr ""
1650
 
1665
  msgstr ""
1666
 
1667
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:28
1668
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:151
1669
  msgid "Image ID"
1670
  msgstr ""
1671
 
1672
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:29
1673
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:832
1674
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:152
1675
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:163
1676
  msgid "Filename"
1677
  msgstr ""
1681
  msgstr ""
1682
 
1683
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:43
1684
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:155
1685
  msgid "Ascending"
1686
  msgstr ""
1687
 
1688
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php:44
1689
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:156
1690
  msgid "Descending"
1691
  msgstr ""
1692
 
1786
  msgid "Lightbox Effects"
1787
  msgstr ""
1788
 
1789
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.lightbox_manager_form.php:46
1790
  msgid "What lightbox would you like to use?"
1791
  msgstr ""
1792
 
1794
  msgid "Miscellaneous"
1795
  msgstr ""
1796
 
1797
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:33
1798
  msgid "Add MediaRSS link?"
1799
  msgstr ""
1800
 
1801
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:34
1802
  msgid "When enabled, adds a MediaRSS link to your header. Third-party web services can use this to publish your galleries"
1803
  msgstr ""
1804
 
1805
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:39
1806
  msgid "Display galleries in feeds"
1807
  msgstr ""
1808
 
1809
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:40
1810
  msgid "NextGEN hides its gallery displays in feeds other than MediaRSS. This enables image galleries in feeds."
1811
  msgstr ""
1812
 
1813
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:44
1814
  msgid "Clear image cache"
1815
  msgstr ""
1816
 
1817
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:45
1818
  msgid ""
1819
  "Completely clear the NextGEN cache of all image modifications?\n"
1820
  "\n"
1821
  "Choose [Cancel] to Stop, [OK] to proceed."
1822
  msgstr ""
1823
 
1824
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:51
1825
+ msgid "Update legacy page featured images"
1826
+ msgstr ""
1827
+
1828
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:52
1829
+ msgid "Continue? This will copy all NextGen 1.x page featured images into the media library."
1830
+ msgstr ""
1831
+
1832
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:53
1833
+ msgid "WordPress 5.4 is incompatible with NextGen 1.x page featured images and they must be updated in a bulk process to correct them. This button will launch a background process (with a progress bar) that imports each NextGen image into the Media Library. This process can be resumed if you close the popup window or this browser window."
1834
+ msgstr ""
1835
+
1836
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:54
1837
+ msgid "Updating legacy page featured images"
1838
+ msgstr ""
1839
+
1840
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:55
1841
+ msgid "No legacy page featured images were found."
1842
+ msgstr ""
1843
+
1844
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:56
1845
+ msgid "Operation complete. Legacy featured images have been corrected."
1846
+ msgstr ""
1847
+
1848
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:65
1849
  msgid "Permalink slug"
1850
  msgstr ""
1851
 
1852
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:72
1853
  msgid "Maximum image count"
1854
  msgstr ""
1855
 
1856
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:74
1857
  msgid "This is the maximum limit of images that NextGEN will restrict itself to querying"
1858
  msgstr ""
1859
 
1860
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:76
1861
  msgid "Note: This limit will not apply to slideshow widgets or random galleries if/when those galleries specify their own image limits"
1862
  msgstr ""
1863
 
1864
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:85
1865
  msgid "Random widget cache duration"
1866
  msgstr ""
1867
 
1868
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:87
1869
  msgid "The duration of time (in minutes) that \"random\" widget galleries should be cached. A setting of zero will disable caching."
1870
  msgstr ""
1871
 
1872
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:96
 
1873
  msgid "Use alternative method of retrieving random image galleries"
1874
  msgstr ""
1875
 
1876
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:98
 
1877
  msgid "Some web hosts' database servers disable or disrupt queries using 'ORDER BY RAND()' which can cause galleries to lose their randomness. NextGen provides an alternative (but not completely random) method to determine what images are fed into 'random' galleries."
1878
  msgstr ""
1879
 
1880
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:104
1881
  msgid "Do not enqueue FontAwesome"
1882
  msgstr ""
1883
 
1884
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php:106
1885
  msgid "Warning: your theme or another plugin must provide FontAwesome or your gallery displays may appear incorrectly"
1886
  msgstr ""
1887
 
1890
  msgid "Other Options"
1891
  msgstr ""
1892
 
1893
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.other_options_misc_tab_ajax.php:12
1894
+ #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.other_options_misc_tab_ajax.php:29
1895
+ msgid "This request requires an authenticated administrator"
1896
+ msgstr ""
1897
+
1898
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.reset_form.php:12
1899
  msgid "Reset Options"
1900
  msgstr ""
2040
  msgid "Automatically watermark images during upload:"
2041
  msgstr ""
2042
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2043
  #: products/photocrati_nextgen/modules/nextgen_other_options/adapter.watermarks_form.php:155
2044
  msgid "Please note: You can only activate the watermark under Manage Gallery. This action cannot be undone."
2045
  msgstr ""
2064
  msgid "Refresh preview image"
2065
  msgstr ""
2066
 
2067
+ #: products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php:37
 
 
 
 
 
 
 
 
2068
  msgid "What must the lightbox be applied to?"
2069
  msgstr ""
2070
 
2071
+ #: products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php:41
2072
  msgid "Only apply to NextGEN images"
2073
  msgstr ""
2074
 
2075
+ #: products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php:42
2076
  msgid "Only apply to NextGEN and WordPress images"
2077
  msgstr ""
2078
 
2079
+ #: products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php:43
2080
  msgid "Try to apply to all images"
2081
  msgstr ""
2082
 
2083
+ #: products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php:44
2084
  msgid "Try to apply to all images that link to image files"
2085
  msgstr ""
2086
 
2092
  msgid "All stylesheets must contain a <a href='#' onclick='%s'>file header</a>"
2093
  msgstr ""
2094
 
2095
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:21
2096
+ msgid "Extensions"
2097
+ msgstr ""
2098
+
2099
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:46
2100
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:123
2101
+ msgid "Want to sell your images directly in your WordPress site? NextGEN Pro adds a true image ecommerce system to help you do just that. Accept PayPal, Stripe, and Checks with ease!"
2102
+ msgstr ""
2103
+
2104
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:52
2105
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:232
2106
+ msgid "Proofing"
2107
+ msgstr ""
2108
+
2109
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:53
2110
+ msgid "Want to add a photo proofing process in your WordPress photo galleries? NextGEN Pro adds photo proofing into WordPress to help with your client workflow. The proofing option makes it easy for you and your clients from start to finish."
2111
+ msgstr ""
2112
+
2113
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:59
2114
+ msgid "Print Fulfillment"
2115
+ msgstr ""
2116
+
2117
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:60
2118
+ msgid "Sell Photos on WordPress with Automated Print Fulfillment! NextGEN Pro is the only WordPress plugin with automatic print lab fulfillment. Ship prints direct to customers with industry-leading professional print labs with zero commissions off the top."
2119
+ msgstr ""
2120
+
2121
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:66
2122
+ msgid "Auto Tax Calculations"
2123
+ msgstr ""
2124
+
2125
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:67
2126
+ msgid "We have integrated NextGEN Pro with Taxjar to calculate accurate sales tax no matter where you and your clients are in the world."
2127
+ msgstr ""
2128
+
2129
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:73
2130
+ msgid "Pricelists"
2131
+ msgstr ""
2132
+
2133
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:74
2134
+ msgid "When selling images, the only way to do it is with pricelists. No more applying individual products t individual images. Do it the right way, and the easy way, by connecting pricelists to your galleries."
2135
+ msgstr ""
2136
+
2137
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:80
2138
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:228
2139
+ msgid "Coupons"
2140
+ msgstr ""
2141
+
2142
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:81
2143
+ msgid "NextGEN Pro makes it easy to offer exclusive discounts to your clients."
2144
+ msgstr ""
2145
+
2146
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:87
2147
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:240
2148
+ msgid "Lightroom Plugin"
2149
+ msgstr ""
2150
+
2151
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:88
2152
+ msgid "The Lightroom plugin for NextGEN Gallery allows you to automatically create and sync photo galleries from your Adobe Lightroom collections in WordPress."
2153
+ msgstr ""
2154
+
2155
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:94
2156
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:221
2157
+ msgid "Tiled Gallery"
2158
+ msgstr ""
2159
+
2160
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:101
2161
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:220
2162
+ msgid "Mosaic Gallery"
2163
+ msgstr ""
2164
+
2165
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:108
2166
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:219
2167
+ msgid "Masonry Gallery"
2168
+ msgstr ""
2169
+
2170
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:115
2171
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:218
2172
+ msgid "Filmstrip Gallery"
2173
+ msgstr ""
2174
+
2175
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:122
2176
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:222
2177
+ msgid "Film Gallery"
2178
+ msgstr ""
2179
+
2180
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:129
2181
+ msgid "Blog Style Gallery"
2182
+ msgstr ""
2183
+
2184
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:130
2185
+ msgid "An entire gallery in a single vertical column. that requires scrolling vertically for engagement."
2186
+ msgstr ""
2187
+
2188
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:136
2189
+ msgid "Sidescroll Gallery"
2190
  msgstr ""
2191
 
2192
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:137
2193
+ msgid "An entire gallery in a single horizontal row, that requires scrolling sideways for engagement."
2194
  msgstr ""
2195
 
2196
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:150
2197
+ msgid "Social Sharing"
2198
  msgstr ""
2199
 
2200
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:151
2201
+ msgid "Your images automatically optimized for Open Graph and Twitter Cards and individually shareable from within the Pro Lightbox."
2202
  msgstr ""
2203
 
2204
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:157
2205
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:245
2206
+ msgid "Image Commenting"
2207
  msgstr ""
2208
 
2209
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:158
2210
+ msgid "Deep engagement for your images through individual image commenting within the Pro Lightbox"
2211
  msgstr ""
2212
 
2213
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:171
2214
+ msgid "Deep Linking"
2215
  msgstr ""
2216
 
2217
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:172
2218
+ msgid "Link directly to any image on your site with deep linking. Available exclusively in the Pro Lightbox."
2219
  msgstr ""
2220
 
2221
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:178
2222
+ msgid "Frontend Search"
2223
+ msgstr ""
2224
+
2225
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:179
2226
+ msgid "With this stunning display type, you can offer image searching capabilities with smart, powerful filtering based on the tags specified for images in your galleries."
2227
+ msgstr ""
2228
+
2229
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:185
2230
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:235
2231
+ msgid "Hover Captions"
2232
+ msgstr ""
2233
+
2234
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:186
2235
+ msgid "Gain the ability to add hover capability to galleries. The hover feature includes social sharing, titles, and descriptions. Each can be controlled individually. The hover feature also includes multiple effects, like fade and slide up."
2236
+ msgstr ""
2237
+
2238
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/adapter.nextgen_pro_upgrade_controller.php:196
2239
+ msgid "Offer digital downloads of your images for free, or with payment using the Ecommerce system. You have complete control over sizes and pricing for every image."
2240
+ msgstr ""
2241
+
2242
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/templates/upgrade.php:17
2243
+ msgid "Unlock More Features"
2244
+ msgstr ""
2245
+
2246
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/templates/upgrade.php:19
2247
+ msgid "Want even more features"
2248
+ msgstr ""
2249
+
2250
+ #: products/photocrati_nextgen/modules/nextgen_pro_upgrade/templates/upgrade.php:22
2251
+ msgid "Upgrade your NextGEN Gallery account"
2252
+ msgstr ""
2253
+
2254
+ #: products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php:77
2255
  msgid "Related Images"
2256
  msgstr ""
2257
 
2258
+ #: products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php:97
2259
  msgid "View Slideshow"
2260
  msgstr ""
2261
 
2262
+ #: products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php:98
2263
  msgid "View Thumbnails"
2264
  msgstr ""
2265
 
2393
  msgid "No album was specified to edit."
2394
  msgstr ""
2395
 
2396
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:80
2397
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:111
2398
  msgid "Overview"
2399
  msgstr ""
2400
 
2401
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:83
2402
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:119
2403
  msgid "Manage Tags"
2404
  msgstr ""
2405
 
2406
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:93
2407
  msgid "Network settings"
2408
  msgstr ""
2409
 
2410
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:200
2411
  msgid "You do not have the correct permission"
2412
  msgstr ""
2413
 
2414
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:201
2415
  msgid "Unexpected Error"
2416
  msgstr ""
2417
 
2418
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/admin.php:202
2419
  msgid "A failure occurred"
2420
  msgstr ""
2421
 
2428
  msgid "Album deleted"
2429
  msgstr ""
2430
 
2431
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:433
2432
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:505
2433
  #: products/photocrati_nextgen/modules/ngglegacy/admin/roles.php:56
2434
  msgid "Edit Album"
2435
  msgstr ""
2436
 
2437
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:483
2438
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:593
2439
  msgid "Select album"
2440
  msgstr ""
2441
 
2442
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:485
2443
  msgid "No album selected"
2444
  msgstr ""
2445
 
2446
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:500
2447
  #: products/photocrati_nextgen/modules/ngglegacy/admin/edit-thumbnail.php:181
2448
  #: products/photocrati_nextgen/modules/ngglegacy/admin/rotate.php:91
2449
  msgid "Update"
2450
  msgstr ""
2451
 
2452
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:517
2453
  msgid "Add new album"
2454
  msgstr ""
2455
 
2456
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:519
2457
  msgid "Add"
2458
  msgstr ""
2459
 
2460
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:530
2461
  msgid "Show / hide used galleries"
2462
  msgstr ""
2463
 
2464
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:530
2465
  msgid "Show all"
2466
  msgstr ""
2467
 
2468
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:531
2469
  msgid "Maximize the widget content"
2470
  msgstr ""
2471
 
2472
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:531
2473
  msgid "Maximize"
2474
  msgstr ""
2475
 
2476
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:532
2477
  msgid "Minimize the widget content"
2478
  msgstr ""
2479
 
2480
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:532
2481
  msgid "Minimize"
2482
  msgstr ""
2483
 
2484
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:534
2485
  msgid "After you create and select an album, you can drag and drop a gallery or another album into your new album below."
2486
  msgstr ""
2487
 
2488
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:545
2489
  msgid "Album ID"
2490
  msgstr ""
2491
 
2492
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:558
2493
  msgid "No album selected!"
2494
  msgstr ""
2495
 
2496
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:570
2497
  msgid "Select gallery"
2498
  msgstr ""
2499
 
2500
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:623
2501
  msgid "Album name:"
2502
  msgstr ""
2503
 
2504
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:629
2505
  msgid "Album description:"
2506
  msgstr ""
2507
 
2508
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:635
2509
  msgid "Select a preview image:"
2510
  msgstr ""
2511
 
2512
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:636
2513
  #: products/photocrati_nextgen/modules/ngglegacy/admin/templates/manage_gallery/gallery_preview_image_field.php:3
2514
  msgid "No picture"
2515
  msgstr ""
2516
 
2517
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:648
2518
  msgid "Page Link to"
2519
  msgstr ""
2520
 
2521
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:658
2522
  #: products/photocrati_nextgen/modules/ngglegacy/admin/templates/manage_gallery/gallery_link_to_page_field.php:3
2523
  msgid "Not linked"
2524
  msgstr ""
2525
 
2526
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:667
2527
  msgid "There are no pages to link to"
2528
  msgstr ""
2529
 
2530
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:677
2531
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:465
2532
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:525
2533
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:594
2534
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:611
2535
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:655
2536
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:699
2537
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:746
2538
  msgid "OK"
2539
  msgstr ""
2540
 
2541
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:679
2542
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:469
2543
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:529
2544
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:598
2545
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:614
2546
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:658
2547
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:702
2548
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:749
2549
  msgid "Cancel"
2550
  msgstr ""
2551
 
2552
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:777
2553
  msgid "Name"
2554
  msgstr ""
2555
 
2556
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/album.php:779
2557
  #: products/photocrati_nextgen/modules/ngglegacy/lib/rewrite.php:229
2558
  msgid "Page"
2559
  msgstr ""
2673
 
2674
  #: products/photocrati_nextgen/modules/ngglegacy/admin/functions.php:675
2675
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:119
2676
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:265
2677
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:304
2678
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:492
2679
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:664
2680
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:742
2681
  msgid "Create new thumbnails"
2696
  msgstr ""
2697
 
2698
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:107
2699
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:272
2700
  msgid "No images selected"
2701
  msgstr ""
2702
 
2703
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:115
2704
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:266
2705
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:300
2706
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:493
2707
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:645
2708
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:726
2709
  msgid "Resize images"
2717
  msgstr ""
2718
 
2719
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:170
2720
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:283
2721
  msgid "Add new gallery"
2722
  msgstr ""
2723
 
2724
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:214
2725
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:217
2726
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:353
2727
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:364
2728
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:368
2729
  msgid "Search Images"
2730
  msgstr ""
2731
 
2734
  msgid "Search Galleries"
2735
  msgstr ""
2736
 
2737
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:262
2738
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:490
2739
  msgid "Bulk actions"
2740
  msgstr ""
2741
 
2742
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:264
2743
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:491
2744
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:574
2745
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:690
2746
  msgid "Set watermark"
2747
  msgstr ""
2748
 
2749
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:267
2750
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:496
2751
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:579
2752
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:710
2753
  msgid "Import metadata"
2754
  msgstr ""
2755
 
2756
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:268
2757
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:494
2758
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:569
2759
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:687
2760
  msgid "Recover from backup"
2761
  msgstr ""
2762
 
2763
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:274
2764
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:508
2765
  msgid "Apply"
2766
  msgstr ""
2767
 
2768
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:373
2769
  msgid "Deleted user"
2770
  msgstr ""
2771
 
2772
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:408
2773
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:563
2774
  msgid "No entries found"
2775
  msgstr ""
2776
 
2777
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:443
2778
  msgid "New Gallery"
2779
  msgstr ""
2780
 
2781
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:450
2782
  msgid "Create a new , empty gallery below the folder"
2783
  msgstr ""
2784
 
2785
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:454
2786
  msgid "Allowed characters for file and folder names are"
2787
  msgstr ""
2788
 
2789
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:504
2790
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:677
2791
  msgid "Resize Images to"
2792
  msgstr ""
2793
 
2794
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:517
2795
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:690
2796
  msgid "Width x height (in pixel). NextGEN Gallery will keep ratio size"
2797
  msgstr ""
2798
 
2799
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:568
2800
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:721
2801
  msgid "Width x height (in pixel)"
2802
  msgstr ""
2803
 
2804
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:577
2805
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:729
2806
  msgid "Set fix dimension"
2807
  msgstr ""
2808
 
2809
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:585
2810
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:737
2811
  msgid "Ignore the aspect ratio, no portrait thumbnails"
2812
  msgstr ""
2813
 
2814
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:661
2815
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:833
2816
  #: products/photocrati_nextgen/modules/ngglegacy/admin/media-upload.php:274
2817
  msgid "Description"
2818
  msgstr ""
2819
 
2820
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-galleries.php:663
2821
  msgid "Page ID"
2822
  msgstr ""
2823
 
2829
  msgid "Sorry, you have no access here"
2830
  msgstr ""
2831
 
2832
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:280
2833
  msgid "Copy image to..."
2834
  msgstr ""
2835
 
2836
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:284
2837
  msgid "Move image to..."
2838
  msgstr ""
2839
 
2840
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:288
2841
  msgid "Add new tags"
2842
  msgstr ""
2843
 
2844
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:292
2845
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:502
2846
  msgid "Delete tags"
2847
  msgstr ""
2848
 
2849
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:296
2850
  msgid "Overwrite"
2851
  msgstr ""
2852
 
2853
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:309
2854
  msgid ""
2855
  "You are about to start the bulk edit for %s images \n"
2856
  " \n"
2857
  " 'Cancel' to stop, 'OK' to proceed."
2858
  msgstr ""
2859
 
2860
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:343
2861
  msgid "Search results for &#8220;%s&#8221;"
2862
  msgstr ""
2863
 
2864
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:394
2865
  msgid "Gallery: "
2866
  msgid_plural "Galleries: "
2867
  msgstr[0] ""
2868
  msgstr[1] ""
2869
 
2870
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:432
2871
  msgid "Scan Folder for new images"
2872
  msgstr ""
2873
 
2874
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:462
2875
  msgid " 25"
2876
  msgstr ""
2877
 
2878
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:463
2879
  msgid " 50"
2880
  msgstr ""
2881
 
2882
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:464
2883
  msgid " 75"
2884
  msgstr ""
2885
 
2886
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:465
2887
  msgid "100"
2888
  msgstr ""
2889
 
2890
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:466
2891
  msgid "200"
2892
  msgstr ""
2893
 
2894
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:467
2895
  msgid "All"
2896
  msgstr ""
2897
 
2898
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:486
2899
  msgid "Images per page:"
2900
  msgstr ""
2901
 
2902
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:495
2903
  msgid "Delete images"
2904
  msgstr ""
2905
 
2906
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:497
2907
  msgid "Rotate images clockwise"
2908
  msgstr ""
2909
 
2910
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:498
2911
  msgid "Rotate images counter-clockwise"
2912
  msgstr ""
2913
 
2914
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:499
2915
  msgid "Copy to..."
2916
  msgstr ""
2917
 
2918
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:500
2919
  msgid "Move to..."
2920
  msgstr ""
2921
 
2922
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:501
2923
  msgid "Add tags"
2924
  msgstr ""
2925
 
2926
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:503
2927
  msgid "Overwrite tags"
2928
  msgstr ""
2929
 
2930
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:515
2931
  msgid "Sort gallery"
2932
  msgstr ""
2933
 
2934
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:598
2935
  msgid "Enter the tags"
2936
  msgstr ""
2937
 
2938
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:633
2939
  msgid "Select the destination gallery:"
2940
  msgstr ""
2941
 
2942
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:831
2943
  #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:158
2944
  #: products/photocrati_nextgen/modules/ngglegacy/admin/media-upload.php:295
2945
  msgid "Thumbnail"
2946
  msgstr ""
2947
 
2948
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:833
2949
  msgid "Alt &amp; Title Text"
2950
  msgstr ""
2951
 
2952
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php:834
2953
  msgid "Tags (comma separated list)"
2954
  msgstr ""
2955
 
2956
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:48
2957
  msgid "Sort order changed"
2958
  msgstr ""
2959
 
2960
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:121
2961
  msgid "Sort Gallery"
2962
  msgstr ""
2963
 
2964
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:136
2965
  msgid "Update Sort Order"
2966
  msgstr ""
2967
 
2968
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:141
2969
  msgid "Back to gallery"
2970
  msgstr ""
2971
 
2972
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:149
2973
  msgid "Presort"
2974
  msgstr ""
2975
 
2976
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:150
2977
  msgid "Unsorted"
2978
  msgstr ""
2979
 
2980
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php:153
2981
  #: products/photocrati_nextgen/modules/ngglegacy/admin/media-upload.php:270
2982
  msgid "Alt/Title text"
2983
  msgstr ""
3111
  msgid "Tags changed"
3112
  msgstr ""
3113
 
3114
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:900
3115
  #: products/photocrati_nextgen/modules/ngglegacy/admin/wpmu.php:42
3116
  msgid "Updated successfully"
3117
  msgstr ""
3118
 
3119
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:940
3120
  msgid "New gallery page ID"
3121
  msgstr ""
3122
 
3123
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/manage.php:940
3124
  msgid "created"
3125
  msgstr ""
3126
 
3157
  msgid "Save all changes"
3158
  msgstr ""
3159
 
3160
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:27
3161
+ msgid "Welcome to NextGEN Gallery"
3162
  msgstr ""
3163
 
3164
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:37
3165
+ msgid "Welcome"
 
3166
  msgstr ""
3167
 
3168
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:38
3169
+ msgid "More Videos"
 
3170
  msgstr ""
3171
 
 
 
3172
  #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:46
3173
+ msgid "NextGEN Basic vs Pro"
 
 
 
3174
  msgstr ""
3175
 
3176
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:48
3177
+ msgid "Imagely Themes"
3178
  msgstr ""
3179
 
3180
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:49
3181
+ msgid "Ambassadors"
3182
  msgstr ""
3183
 
3184
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:51
3185
+ msgid "Unlock More"
3186
  msgstr ""
3187
 
3188
  #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:75
3189
+ msgid "We have a growing list of video tutorials to get you started. Watch some below or head over to <a href=\"%s\" target=\"_blank\">NextGEN Gallery University on YouTube</a> to see all available vidoes."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3190
  msgstr ""
3191
 
3192
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:108
3193
+ msgid "Want more? Head over to <a href=\"%s\" target=\"_blank\">NextGEN Gallery University on YouTube</a>."
3194
  msgstr ""
3195
 
3196
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:115
3197
+ msgid "The most powerful gallery system ever built for WordPress. "
3198
  msgstr ""
3199
 
3200
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:115
3201
+ msgid "Gorgeous new gallery displays, image protection, full screen lightbox, commenting and social sharing for individual images, proofing, ecommerce, digital downloads, and more."
3202
  msgstr ""
3203
 
3204
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:116
3205
+ msgid "Get NextGEN Pro Now"
3206
  msgstr ""
3207
 
3208
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:211
3209
+ msgid "Get the most out of NextGEN Gallery by upgrading to Pro and unlocking all the powerful features."
3210
  msgstr ""
3211
 
3212
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:217
3213
+ msgid "Gallery Types"
3214
  msgstr ""
3215
 
3216
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:223
3217
+ msgid "Blogstyle Gallery"
3218
  msgstr ""
3219
 
3220
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:227
3221
+ msgid "Paid Digital Downloads"
3222
  msgstr ""
3223
 
3224
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:229
3225
+ msgid "Price Lists"
3226
  msgstr ""
3227
 
3228
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:230
3229
+ msgid "Automated Tax Calculations"
3230
  msgstr ""
3231
 
3232
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:234
3233
+ msgid "Interface"
3234
  msgstr ""
3235
 
3236
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:236
3237
+ msgid "Lazy Loading"
3238
  msgstr ""
3239
 
3240
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:237
3241
+ msgid "Infinite Scroll"
3242
  msgstr ""
3243
 
3244
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:239
3245
+ msgid "Image Upload / Processing"
3246
  msgstr ""
3247
 
3248
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:242
3249
+ msgid "Other"
3250
  msgstr ""
3251
 
3252
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:246
3253
+ msgid "Image Deeplinking"
3254
  msgstr ""
3255
 
3256
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:247
3257
+ msgid "Full-Screen Lightbox"
3258
  msgstr ""
3259
 
3260
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:248
3261
+ msgid "Image Social Sharing"
3262
  msgstr ""
3263
 
3264
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:249
3265
+ msgid "Lightbox Slideshow"
3266
  msgstr ""
3267
 
3268
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:258
3269
+ msgid "NextGEN Pro"
3270
  msgstr ""
3271
 
3272
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:261
3273
+ msgid "NextGEN Basic"
3274
  msgstr ""
3275
 
3276
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:333
3277
  msgid "Meet the new series of Genesis child themes by Imagely: gorgeous, responsive image-centric themes for photographers or anyone with visually rich websites."
3278
  msgstr ""
3279
 
3280
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:334
3281
  msgid "CLICK TO LEARN MORE:"
3282
  msgstr ""
3283
 
3284
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:380
3285
  msgid "Meet the Imagely Product Ambassadors"
3286
  msgstr ""
3287
 
3288
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:381
3289
  msgid "NextGEN Gallery and other Imagely products are used by some of the best photographers in the world. Meet some of the Imagely Ambassadors who are putting Imagely and NextGEN Gallery to work professionally."
3290
  msgstr ""
3291
 
3292
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:386
3293
  msgid "Jeff and Erin are a luxury husband and wife photography team who deeply love each other and their photography clients. They shoot weddings and engagements all over the U.S. and beyond. With three photography businesses that serve different clientele, they have unique insights into business strategies and are passionate about improving the day to day lives of other photographers."
3294
  msgstr ""
3295
 
3296
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:391
3297
  msgid "Tamara Lackey is a renowned professional photographer, speaker, and author. Her authentic lifestyle photography, from children’s portraits to celebrity portraits, is praised within her industry and published internationally. She is a Nikon USA Ambassador, the host of The reDefine Show web series, and the co-founder of the non-profit charitable organization, Beautiful Together, in support of children waiting for families."
3298
  msgstr ""
3299
 
3300
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:396
3301
  msgid "Colby is a photographer, photo educator, and author specializing in landscape, travel and humanitarian photography. With an audience reaching millions, Colby partners on social influencer marketing campaigns with some of the biggest companies and destinations in the world, including Sony, Samsung, Toshiba, Iceland Naturally, Jordan Tourism Board, Australia.com, Visit California and more."
3302
  msgstr ""
3303
 
3304
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:404
3305
  msgid "Jared is a professional wedding and lifestyle photographer. He also travels the world giving lectures and workshops on photography, lighting, and post-production efficiency and workflow. His interactive style, and attention to detail and craft make him an entertaining and demanding photography instructor."
3306
  msgstr ""
3307
 
3308
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:409
3309
  msgid "Brian is a professional photographer, author, and educator. He fuses landscape & travel photography with experiential storytelling and practical instructing to help others grow creatively. He is also a Sony Artisan of Imagery, a Zeiss Lens Ambassador, a Formatt-Hitech Featured Photographer, and a member of G-Technology’s G-Team."
3310
  msgstr ""
3311
 
3312
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:414
3313
  msgid "Christine famously coined the term WordPress. She is an author, speaker, business coach, and story strategist who specializes in helping creatives celebrate their story online through blogging and social media. When not offering actionable know-how to businesses, she can be found taking long road trips across North America in her Mini Cooper."
3314
  msgstr ""
3315
 
3316
+ #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:422
3317
  msgid "Named one of the Top 10 Wedding Photographers in the World by American Photo magazine, David is a celebrated photographer and educator. He is also a mountain man with a enviable lifestyle: from his base in rural Washington, he travels all over the world teaching workshops, while sharing lessons with 16,000 photographers in the Abstract Canvas Facebook group."
3318
  msgstr ""
3319
 
 
 
 
 
 
 
 
 
 
 
 
 
3320
  #: products/photocrati_nextgen/modules/ngglegacy/admin/roles.php:27
3321
  msgid "Select the lowest role which should be able to access the following capabilities. NextGEN Gallery supports the standard roles from WordPress."
3322
  msgstr ""
3581
  msgid "Choose the default style for the galleries."
3582
  msgstr ""
3583
 
3584
+ #: products/photocrati_nextgen/modules/ngglegacy/lib/core.php:208
3585
  msgid "Note : Based on your server memory limit you should not upload larger images then <strong>%d x %d</strong> pixel"
3586
  msgstr ""
3587
 
products/photocrati_nextgen/modules/i18n/module.i18n.php CHANGED
@@ -20,7 +20,7 @@ class M_I18N extends C_Base_Module
20
  'photocrati-i18n',
21
  'Internationalization',
22
  "Adds I18N resources and methods",
23
- '3.3.7',
24
  'https://www.imagely.com/languages/',
25
  'Imagely',
26
  'https://www.imagely.com'
20
  'photocrati-i18n',
21
  'Internationalization',
22
  "Adds I18N resources and methods",
23
+ '3.3.21',
24
  'https://www.imagely.com/languages/',
25
  'Imagely',
26
  'https://www.imagely.com'
products/photocrati_nextgen/modules/imagify/module.imagify.php CHANGED
@@ -27,7 +27,7 @@ class M_Imagify extends C_Base_Module
27
  'photocrati-imagify',
28
  'NextGEN Imagify Integration',
29
  'NextGen Gallery / Imagify Integration',
30
- '3.1.8',
31
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
32
  'Imagely',
33
  'https://www.imagely.com'
27
  'photocrati-imagify',
28
  'NextGEN Imagify Integration',
29
  'NextGen Gallery / Imagify Integration',
30
+ '3.3.21',
31
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
32
  'Imagely',
33
  'https://www.imagely.com'
products/photocrati_nextgen/modules/lightbox/module.lightbox.php CHANGED
@@ -23,7 +23,7 @@ class M_Lightbox extends C_Base_Module
23
  'photocrati-lightbox',
24
  'Lightbox',
25
  "Provides integration with several JavaScript lightbox effect libraries",
26
- '3.3.11',
27
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
28
  'Imagely',
29
  'https://www.imagely.com'
23
  'photocrati-lightbox',
24
  'Lightbox',
25
  "Provides integration with several JavaScript lightbox effect libraries",
26
+ '3.3.21',
27
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
28
  'Imagely',
29
  'https://www.imagely.com'
products/photocrati_nextgen/modules/lightbox/static/fancybox/jquery.easing-1.3.pack.min.js CHANGED
@@ -1 +1 @@
1
- eval(function(t,e,c,b,d,s){if(d=function(t){return(t<62?"":d(parseInt(t/62)))+((t%=62)>35?String.fromCharCode(t+29):t.toString(36))},!"".replace(/^/,String)){for(;c--;)s[d(c)]=b[c]||d(c);b=[function(t){return s[t]}],d=function(){return"\\w+"},c=1}for(;c--;)b[c]&&(t=t.replace(new RegExp("\\b"+d(c)+"\\b","g"),b[c]));return t}("h.i['1a']=h.i['z'];h.O(h.i,{y:'D',z:9(x,t,b,c,d){6 h.i[h.i.y](x,t,b,c,d)},17:9(x,t,b,c,d){6 c*(t/=d)*t+b},D:9(x,t,b,c,d){6-c*(t/=d)*(t-2)+b},13:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t+b;6-c/2*((--t)*(t-2)-1)+b},X:9(x,t,b,c,d){6 c*(t/=d)*t*t+b},U:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t+1)+b},R:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t+b;6 c/2*((t-=2)*t*t+2)+b},N:9(x,t,b,c,d){6 c*(t/=d)*t*t*t+b},M:9(x,t,b,c,d){6-c*((t=t/d-1)*t*t*t-1)+b},L:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t+b;6-c/2*((t-=2)*t*t*t-2)+b},K:9(x,t,b,c,d){6 c*(t/=d)*t*t*t*t+b},J:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t*t*t+1)+b},I:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t*t+b;6 c/2*((t-=2)*t*t*t*t+2)+b},G:9(x,t,b,c,d){6-c*8.C(t/d*(8.g/2))+c+b},15:9(x,t,b,c,d){6 c*8.n(t/d*(8.g/2))+b},12:9(x,t,b,c,d){6-c/2*(8.C(8.g*t/d)-1)+b},Z:9(x,t,b,c,d){6(t==0)?b:c*8.j(2,10*(t/d-1))+b},Y:9(x,t,b,c,d){6(t==d)?b+c:c*(-8.j(2,-10*t/d)+1)+b},W:9(x,t,b,c,d){e(t==0)6 b;e(t==d)6 b+c;e((t/=d/2)<1)6 c/2*8.j(2,10*(t-1))+b;6 c/2*(-8.j(2,-10*--t)+2)+b},V:9(x,t,b,c,d){6-c*(8.o(1-(t/=d)*t)-1)+b},S:9(x,t,b,c,d){6 c*8.o(1-(t=t/d-1)*t)+b},Q:9(x,t,b,c,d){e((t/=d/2)<1)6-c/2*(8.o(1-t*t)-1)+b;6 c/2*(8.o(1-(t-=2)*t)+1)+b},P:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6-(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b},H:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6 a*8.j(2,-10*t)*8.n((t*d-s)*(2*8.g)/p)+c+b},T:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d/2)==2)6 b+c;e(!p)p=d*(.3*1.5);e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);e(t<1)6-.5*(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b;6 a*8.j(2,-10*(t-=1))*8.n((t*d-s)*(2*8.g)/p)*.5+c+b},F:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*(t/=d)*t*((s+1)*t-s)+b},E:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},16:9(x,t,b,c,d,s){e(s==u)s=1.l;e((t/=d/2)<1)6 c/2*(t*t*(((s*=(1.B))+1)*t-s))+b;6 c/2*((t-=2)*t*(((s*=(1.B))+1)*t+s)+2)+b},A:9(x,t,b,c,d){6 c-h.i.v(x,d-t,0,c,d)+b},v:9(x,t,b,c,d){e((t/=d)<(1/2.k)){6 c*(7.q*t*t)+b}m e(t<(2/2.k)){6 c*(7.q*(t-=(1.5/2.k))*t+.k)+b}m e(t<(2.5/2.k)){6 c*(7.q*(t-=(2.14/2.k))*t+.11)+b}m{6 c*(7.q*(t-=(2.18/2.k))*t+.19)+b}},1b:9(x,t,b,c,d){e(t<d/2)6 h.i.A(x,t*2,0,c,d)*.5+b;6 h.i.v(x,t*2-d,0,c,d)*.5+c*.5+b}});",0,74,"||||||return||Math|function|||||if|var|PI|jQuery|easing|pow|75|70158|else|sin|sqrt||5625|asin|||undefined|easeOutBounce|abs||def|swing|easeInBounce|525|cos|easeOutQuad|easeOutBack|easeInBack|easeInSine|easeOutElastic|easeInOutQuint|easeOutQuint|easeInQuint|easeInOutQuart|easeOutQuart|easeInQuart|extend|easeInElastic|easeInOutCirc|easeInOutCubic|easeOutCirc|easeInOutElastic|easeOutCubic|easeInCirc|easeInOutExpo|easeInCubic|easeOutExpo|easeInExpo||9375|easeInOutSine|easeInOutQuad|25|easeOutSine|easeInOutBack|easeInQuad|625|984375|jswing|easeInOutBounce".split("|"),0,{}));
1
+ "use strict";eval(function(t,e,c,b,d,s){if(d=function(t){return(t<62?"":d(parseInt(t/62)))+((t%=62)>35?String.fromCharCode(t+29):t.toString(36))},!"".replace(/^/,String)){for(;c--;)s[d(c)]=b[c]||d(c);b=[function(t){return s[t]}],d=function(){return"\\w+"},c=1}for(;c--;)b[c]&&(t=t.replace(new RegExp("\\b"+d(c)+"\\b","g"),b[c]));return t}("h.i['1a']=h.i['z'];h.O(h.i,{y:'D',z:9(x,t,b,c,d){6 h.i[h.i.y](x,t,b,c,d)},17:9(x,t,b,c,d){6 c*(t/=d)*t+b},D:9(x,t,b,c,d){6-c*(t/=d)*(t-2)+b},13:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t+b;6-c/2*((--t)*(t-2)-1)+b},X:9(x,t,b,c,d){6 c*(t/=d)*t*t+b},U:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t+1)+b},R:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t+b;6 c/2*((t-=2)*t*t+2)+b},N:9(x,t,b,c,d){6 c*(t/=d)*t*t*t+b},M:9(x,t,b,c,d){6-c*((t=t/d-1)*t*t*t-1)+b},L:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t+b;6-c/2*((t-=2)*t*t*t-2)+b},K:9(x,t,b,c,d){6 c*(t/=d)*t*t*t*t+b},J:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t*t*t+1)+b},I:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t*t+b;6 c/2*((t-=2)*t*t*t*t+2)+b},G:9(x,t,b,c,d){6-c*8.C(t/d*(8.g/2))+c+b},15:9(x,t,b,c,d){6 c*8.n(t/d*(8.g/2))+b},12:9(x,t,b,c,d){6-c/2*(8.C(8.g*t/d)-1)+b},Z:9(x,t,b,c,d){6(t==0)?b:c*8.j(2,10*(t/d-1))+b},Y:9(x,t,b,c,d){6(t==d)?b+c:c*(-8.j(2,-10*t/d)+1)+b},W:9(x,t,b,c,d){e(t==0)6 b;e(t==d)6 b+c;e((t/=d/2)<1)6 c/2*8.j(2,10*(t-1))+b;6 c/2*(-8.j(2,-10*--t)+2)+b},V:9(x,t,b,c,d){6-c*(8.o(1-(t/=d)*t)-1)+b},S:9(x,t,b,c,d){6 c*8.o(1-(t=t/d-1)*t)+b},Q:9(x,t,b,c,d){e((t/=d/2)<1)6-c/2*(8.o(1-t*t)-1)+b;6 c/2*(8.o(1-(t-=2)*t)+1)+b},P:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6-(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b},H:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6 a*8.j(2,-10*t)*8.n((t*d-s)*(2*8.g)/p)+c+b},T:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d/2)==2)6 b+c;e(!p)p=d*(.3*1.5);e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);e(t<1)6-.5*(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b;6 a*8.j(2,-10*(t-=1))*8.n((t*d-s)*(2*8.g)/p)*.5+c+b},F:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*(t/=d)*t*((s+1)*t-s)+b},E:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},16:9(x,t,b,c,d,s){e(s==u)s=1.l;e((t/=d/2)<1)6 c/2*(t*t*(((s*=(1.B))+1)*t-s))+b;6 c/2*((t-=2)*t*(((s*=(1.B))+1)*t+s)+2)+b},A:9(x,t,b,c,d){6 c-h.i.v(x,d-t,0,c,d)+b},v:9(x,t,b,c,d){e((t/=d)<(1/2.k)){6 c*(7.q*t*t)+b}m e(t<(2/2.k)){6 c*(7.q*(t-=(1.5/2.k))*t+.k)+b}m e(t<(2.5/2.k)){6 c*(7.q*(t-=(2.14/2.k))*t+.11)+b}m{6 c*(7.q*(t-=(2.18/2.k))*t+.19)+b}},1b:9(x,t,b,c,d){e(t<d/2)6 h.i.A(x,t*2,0,c,d)*.5+b;6 h.i.v(x,t*2-d,0,c,d)*.5+c*.5+b}});",0,74,"||||||return||Math|function|||||if|var|PI|jQuery|easing|pow|75|70158|else|sin|sqrt||5625|asin|||undefined|easeOutBounce|abs||def|swing|easeInBounce|525|cos|easeOutQuad|easeOutBack|easeInBack|easeInSine|easeOutElastic|easeInOutQuint|easeOutQuint|easeInQuint|easeInOutQuart|easeOutQuart|easeInQuart|extend|easeInElastic|easeInOutCirc|easeInOutCubic|easeOutCirc|easeInOutElastic|easeOutCubic|easeInCirc|easeInOutExpo|easeInCubic|easeOutExpo|easeInExpo||9375|easeInOutSine|easeInOutQuad|25|easeOutSine|easeInOutBack|easeInQuad|625|984375|jswing|easeInOutBounce".split("|"),0,{}));
products/photocrati_nextgen/modules/lightbox/static/fancybox/jquery.fancybox-1.3.4.js CHANGED
@@ -15,6 +15,8 @@
15
  * http://www.gnu.org/licenses/gpl.html
16
  */
17
 
 
 
18
  ;(function($) {
19
  var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right,
20
 
@@ -163,7 +165,7 @@
163
 
164
  tmp.css('padding', (selectedOpts.padding + selectedOpts.margin));
165
 
166
- $('.fancybox-inline-tmp').unbind('fancybox-cancel').bind('fancybox-change', function() {
167
  $(this).replaceWith(content.children());
168
  });
169
 
@@ -182,9 +184,9 @@
182
  $('<div class="fancybox-inline-tmp" />')
183
  .hide()
184
  .insertBefore( $(obj) )
185
- .bind('fancybox-cleanup', function() {
186
  $(this).replaceWith(content.children());
187
- }).bind('fancybox-cancel', function() {
188
  $(this).replaceWith(tmp.children());
189
  });
190
 
@@ -330,10 +332,10 @@
330
 
331
  busy = true;
332
 
333
- $(content.add( overlay )).unbind();
334
 
335
- $(window).unbind("resize.fb scroll.fb");
336
- $(document).unbind('keydown.fb');
337
 
338
  if (wrap.is(":visible") && currentOpts.titlePosition !== 'outside') {
339
  wrap.css('height', wrap.height());
@@ -487,7 +489,11 @@
487
  return;
488
  }
489
 
490
- titleStr = $.isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(titleStr, currentArray, currentIndex, currentOpts) : _format_title(titleStr);
 
 
 
 
491
 
492
  if (!titleStr || titleStr === '') {
493
  title.hide();
@@ -548,7 +554,7 @@
548
 
549
  _set_navigation = function() {
550
  if (currentOpts.enableEscapeButton || currentOpts.enableKeyboardNav) {
551
- $(document).bind('keydown.fb', function(e) {
552
  if (e.keyCode == 27 && currentOpts.enableEscapeButton) {
553
  e.preventDefault();
554
  $.fancybox.close();
@@ -577,8 +583,8 @@
577
 
578
  _finish = function () {
579
  if (!$.support.opacity) {
580
- content.get(0).style.removeAttribute('filter');
581
- wrap.get(0).style.removeAttribute('filter');
582
  }
583
 
584
  if (selectedOpts.autoDimensions) {
@@ -598,17 +604,17 @@
598
  _set_navigation();
599
 
600
  if (currentOpts.hideOnContentClick) {
601
- content.bind('click', $.fancybox.close);
602
  }
603
 
604
  if (currentOpts.hideOnOverlayClick) {
605
- overlay.bind('click', $.fancybox.close);
606
  }
607
 
608
- $(window).bind("resize.fb", $.fancybox.resize);
609
 
610
  if (currentOpts.centerOnScroll) {
611
- $(window).bind("scroll.fb", $.fancybox.center);
612
  }
613
 
614
  if (currentOpts.type == 'iframe') {
@@ -791,8 +797,8 @@
791
 
792
  $(this)
793
  .data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {})))
794
- .unbind('click.fb')
795
- .bind('click.fb', function(e) {
796
  e.preventDefault();
797
 
798
  if (busy) {
@@ -801,7 +807,7 @@
801
 
802
  busy = true;
803
 
804
- $(this).blur();
805
 
806
  selectedArray = [];
807
  selectedIndex = 0;
@@ -837,7 +843,7 @@
837
  selectedArray = [];
838
  selectedIndex = parseInt(opts.index, 10) || 0;
839
 
840
- if ($.isArray(obj)) {
841
  for (var i = 0, j = obj.length; i < j; i++) {
842
  if (typeof obj[i] == 'object') {
843
  $(obj[i]).data('fancybox', $.extend({}, opts, obj[i]));
@@ -938,10 +944,10 @@
938
 
939
  $(close.add( nav_left ).add( nav_right )).hide();
940
 
941
- $(content.add( overlay )).unbind();
942
 
943
- $(window).unbind("resize.fb scroll.fb");
944
- $(document).unbind('keydown.fb');
945
 
946
  content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank');
947
 
@@ -1057,21 +1063,21 @@
1057
  nav_right = $('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')
1058
  );
1059
 
1060
- close.click($.fancybox.close);
1061
- loading.click($.fancybox.cancel);
1062
 
1063
- nav_left.click(function(e) {
1064
  e.preventDefault();
1065
  $.fancybox.prev();
1066
  });
1067
 
1068
- nav_right.click(function(e) {
1069
  e.preventDefault();
1070
  $.fancybox.next();
1071
  });
1072
 
1073
  if ($.fn.mousewheel) {
1074
- wrap.bind('mousewheel.fb', function(e, delta) {
1075
  if (busy) {
1076
  e.preventDefault();
1077
 
@@ -1149,7 +1155,7 @@
1149
  onError : function(){}
1150
  };
1151
 
1152
- $(document).ready(function() {
1153
  $.fancybox.init();
1154
  });
1155
 
15
  * http://www.gnu.org/licenses/gpl.html
16
  */
17
 
18
+ /*** MODIFIED BY IMAGELY TO BE jQUERY 3.5.1 COMPATIBLE */
19
+
20
  ;(function($) {
21
  var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right,
22
 
165
 
166
  tmp.css('padding', (selectedOpts.padding + selectedOpts.margin));
167
 
168
+ $('.fancybox-inline-tmp').off('fancybox-cancel').on('fancybox-change', function() {
169
  $(this).replaceWith(content.children());
170
  });
171
 
184
  $('<div class="fancybox-inline-tmp" />')
185
  .hide()
186
  .insertBefore( $(obj) )
187
+ .on('fancybox-cleanup', function() {
188
  $(this).replaceWith(content.children());
189
+ }).on('fancybox-cancel', function() {
190
  $(this).replaceWith(tmp.children());
191
  });
192
 
332
 
333
  busy = true;
334
 
335
+ $(content.add( overlay )).off();
336
 
337
+ $(window).off("resize.fb scroll.fb");
338
+ $(document).off('keydown.fb');
339
 
340
  if (wrap.is(":visible") && currentOpts.titlePosition !== 'outside') {
341
  wrap.css('height', wrap.height());
489
  return;
490
  }
491
 
492
+ var isFunction = function(param) {
493
+ return typeof(param) === "function"
494
+ }
495
+
496
+ titleStr = isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(titleStr, currentArray, currentIndex, currentOpts) : _format_title(titleStr);
497
 
498
  if (!titleStr || titleStr === '') {
499
  title.hide();
554
 
555
  _set_navigation = function() {
556
  if (currentOpts.enableEscapeButton || currentOpts.enableKeyboardNav) {
557
+ $(document).on('keydown.fb', function(e) {
558
  if (e.keyCode == 27 && currentOpts.enableEscapeButton) {
559
  e.preventDefault();
560
  $.fancybox.close();
583
 
584
  _finish = function () {
585
  if (!$.support.opacity) {
586
+ content.get(0).style.removeProperty('filter');
587
+ wrap.get(0).style.removeProperty('filter');
588
  }
589
 
590
  if (selectedOpts.autoDimensions) {
604
  _set_navigation();
605
 
606
  if (currentOpts.hideOnContentClick) {
607
+ content.on('click', $.fancybox.close);
608
  }
609
 
610
  if (currentOpts.hideOnOverlayClick) {
611
+ overlay.on('click', $.fancybox.close);
612
  }
613
 
614
+ $(window).on("resize.fb", $.fancybox.resize);
615
 
616
  if (currentOpts.centerOnScroll) {
617
+ $(window).on("scroll.fb", $.fancybox.center);
618
  }
619
 
620
  if (currentOpts.type == 'iframe') {
797
 
798
  $(this)
799
  .data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {})))
800
+ .off('click.fb')
801
+ .on('click.fb', function(e) {
802
  e.preventDefault();
803
 
804
  if (busy) {
807
 
808
  busy = true;
809
 
810
+ $(this).trigger('blur');
811
 
812
  selectedArray = [];
813
  selectedIndex = 0;
843
  selectedArray = [];
844
  selectedIndex = parseInt(opts.index, 10) || 0;
845
 
846
+ if (Array.isArray(obj)) {
847
  for (var i = 0, j = obj.length; i < j; i++) {
848
  if (typeof obj[i] == 'object') {
849
  $(obj[i]).data('fancybox', $.extend({}, opts, obj[i]));
944
 
945
  $(close.add( nav_left ).add( nav_right )).hide();
946
 
947
+ $(content.add( overlay )).off();
948
 
949
+ $(window).off("resize.fb scroll.fb");
950
+ $(document).off('keydown.fb');
951
 
952
  content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank');
953
 
1063
  nav_right = $('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')
1064
  );
1065
 
1066
+ close.on('click', $.fancybox.close);
1067
+ loading.on('click', $.fancybox.cancel);
1068
 
1069
+ nav_left.on('click', function(e) {
1070
  e.preventDefault();
1071
  $.fancybox.prev();
1072
  });
1073
 
1074
+ nav_right.on('click', function(e) {
1075
  e.preventDefault();
1076
  $.fancybox.next();
1077
  });
1078
 
1079
  if ($.fn.mousewheel) {
1080
+ wrap.on('mousewheel.fb', function(e, delta) {
1081
  if (busy) {
1082
  e.preventDefault();
1083
 
1155
  onError : function(){}
1156
  };
1157
 
1158
+ jQuery(function($) {
1159
  $.fancybox.init();
1160
  });
1161
 
products/photocrati_nextgen/modules/lightbox/static/fancybox/jquery.fancybox-1.3.4.min.js CHANGED
@@ -1 +1 @@
1
- !function(t){var e,i,n,a,o,d,c,r,s,h,l,f,p,g=0,b={},u=[],y=0,w={},v=[],x=null,m=new Image,I=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,C=/[^\.]\.(swf)\s*$/i,k=1,O=0,j="",T=!1,S=t.extend(t("<div/>")[0],{prop:0}),A=t.browser.msie&&t.browser.version<7&&!window.XMLHttpRequest,D=function(){i.hide(),m.onerror=m.onload=null,x&&x.abort(),e.empty()},F=function(){if(!1===b.onError(u,g,b))return i.hide(),void(T=!1);b.titleShow=!1,b.width="auto",b.height="auto",e.html('<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>'),N()},E=function(){var n,a,o,c,r,s,h=u[g];if(D(),b=t.extend({},t.fn.fancybox.defaults,void 0===t(h).data("fancybox")?b:t(h).data("fancybox")),!1===(s=b.onStart(u,g,b)))return void(T=!1);if("object"==typeof s&&(b=t.extend(b,s)),o=b.title||(h.nodeName?t(h).attr("title"):h.title)||"",h.nodeName&&!b.orig&&(b.orig=t(h).children("img:first").length?t(h).children("img:first"):t(h)),""===o&&b.orig&&b.titleFromAlt&&(o=b.orig.attr("alt")),n=b.href||(h.nodeName?t(h).attr("href"):h.href)||null,(/^(?:javascript)/i.test(n)||"#"==n)&&(n=null),b.type?(a=b.type,n||(n=b.content)):b.content?a="html":n&&(a=n.match(I)?"image":n.match(C)?"swf":t(h).hasClass("iframe")?"iframe":0===n.indexOf("#")?"inline":"ajax"),!a)return void F();switch("inline"==a&&(h=n.substr(n.indexOf("#")),a=t(h).length>0?"inline":"ajax"),b.type=a,b.href=n,b.title=o,b.autoDimensions&&("html"==b.type||"inline"==b.type||"ajax"==b.type?(b.width="auto",b.height="auto"):b.autoDimensions=!1),b.modal&&(b.overlayShow=!0,b.hideOnOverlayClick=!1,b.hideOnContentClick=!1,b.enableEscapeButton=!1,b.showCloseButton=!1),b.padding=parseInt(b.padding,10),b.margin=parseInt(b.margin,10),e.css("padding",b.padding+b.margin),t(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){t(this).replaceWith(d.children())}),a){case"html":e.html(b.content),N();break;case"inline":if(!0===t(h).parent().is("#fancybox-content"))return void(T=!1);t('<div class="fancybox-inline-tmp" />').hide().insertBefore(t(h)).bind("fancybox-cleanup",function(){t(this).replaceWith(d.children())}).bind("fancybox-cancel",function(){t(this).replaceWith(e.children())}),t(h).appendTo(e),N();break;case"image":T=!1,t.fancybox.showActivity(),m=new Image,m.onerror=function(){F()},m.onload=function(){T=!0,m.onerror=m.onload=null,B()},m.src=n;break;case"swf":b.scrolling="no",c='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+b.width+'" height="'+b.height+'"><param name="movie" value="'+n+'"></param>',r="",t.each(b.swf,function(t,e){c+='<param name="'+t+'" value="'+e+'"></param>',r+=" "+t+'="'+e+'"'}),c+='<embed src="'+n+'" type="application/x-shockwave-flash" width="'+b.width+'" height="'+b.height+'"'+r+"></embed></object>",e.html(c),N();break;case"ajax":T=!1,t.fancybox.showActivity(),b.ajax.win=b.ajax.success,x=t.ajax(t.extend({},b.ajax,{url:n,data:b.ajax.data||{},error:function(t,e,i){t.status>0&&F()},success:function(t,a,o){if(200==("object"==typeof o?o:x).status){if("function"==typeof b.ajax.win){if(!1===(s=b.ajax.win(n,t,a,o)))return void i.hide();"string"!=typeof s&&"object"!=typeof s||(t=s)}e.html(t),N()}}}));break;case"iframe":P()}},N=function(){var i=b.width,n=b.height;i=i.toString().indexOf("%")>-1?parseInt((t(window).width()-2*b.margin)*parseFloat(i)/100,10)+"px":"auto"==i?"auto":i+"px",n=n.toString().indexOf("%")>-1?parseInt((t(window).height()-2*b.margin)*parseFloat(n)/100,10)+"px":"auto"==n?"auto":n+"px",e.wrapInner('<div style="width:'+i+";height:"+n+";overflow: "+("auto"==b.scrolling?"auto":"yes"==b.scrolling?"scroll":"hidden")+';position:relative;"></div>'),b.width=e.width(),b.height=e.height(),P()},B=function(){b.width=m.width,b.height=m.height,t("<img />").attr({id:"fancybox-img",src:m.src,alt:b.title}).appendTo(e),P()},P=function(){var o,l;return i.hide(),a.is(":visible")&&!1===w.onCleanup(v,y,w)?(t.event.trigger("fancybox-cancel"),void(T=!1)):(T=!0,t(d.add(n)).unbind(),t(window).unbind("resize.fb scroll.fb"),t(document).unbind("keydown.fb"),a.is(":visible")&&"outside"!==w.titlePosition&&a.css("height",a.height()),v=u,y=g,w=b,w.overlayShow?(n.css({"background-color":w.overlayColor,opacity:w.overlayOpacity,cursor:w.hideOnOverlayClick?"pointer":"auto",height:t(document).height()}),n.is(":visible")||(A&&t("select:not(#fancybox-tmp select)").filter(function(){return"hidden"!==this.style.visibility}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"}),n.show())):n.hide(),p=q(),M(),a.is(":visible")?(t(c.add(s).add(h)).hide(),o=a.position(),f={top:o.top,left:o.left,width:a.width(),height:a.height()},l=f.width==p.width&&f.height==p.height,void d.fadeTo(w.changeFade,.3,function(){var i=function(){d.html(e.contents()).fadeTo(w.changeFade,1,H)};t.event.trigger("fancybox-change"),d.empty().removeAttr("filter").css({"border-width":w.padding,width:p.width-2*w.padding,height:b.autoDimensions?"auto":p.height-O-2*w.padding}),l?i():(S.prop=0,t(S).animate({prop:1},{duration:w.changeSpeed,easing:w.easingChange,step:K,complete:i}))})):(a.removeAttr("style"),d.css("border-width",w.padding),"elastic"==w.transitionIn?(f=X(),d.html(e.contents()),a.show(),w.opacity&&(p.opacity=0),S.prop=0,void t(S).animate({prop:1},{duration:w.speedIn,easing:w.easingIn,step:K,complete:H})):("inside"==w.titlePosition&&O>0&&r.show(),d.css({width:p.width-2*w.padding,height:b.autoDimensions?"auto":p.height-O-2*w.padding}).html(e.contents()),void a.css(p).fadeIn("none"==w.transitionIn?0:w.speedIn,H))))},L=function(t){return!(!t||!t.length)&&("float"==w.titlePosition?'<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">'+t+'</td><td id="fancybox-title-float-right"></td></tr></table>':'<div id="fancybox-title-'+w.titlePosition+'">'+t+"</div>")},M=function(){if(j=w.title||"",O=0,r.empty().removeAttr("style").removeClass(),!1===w.titleShow)return void r.hide();if(!(j=t.isFunction(w.titleFormat)?w.titleFormat(j,v,y,w):L(j))||""===j)return void r.hide();switch(r.addClass("fancybox-title-"+w.titlePosition).html(j).appendTo("body").show(),w.titlePosition){case"inside":r.css({width:p.width-2*w.padding,marginLeft:w.padding,marginRight:w.padding}),O=r.outerHeight(!0),r.appendTo(o),p.height+=O;break;case"over":r.css({marginLeft:w.padding,width:p.width-2*w.padding,bottom:w.padding}).appendTo(o);break;case"float":r.css("left",-1*parseInt((r.width()-p.width-40)/2,10)).appendTo(a);break;default:r.css({width:p.width-2*w.padding,paddingLeft:w.padding,paddingRight:w.padding}).appendTo(a)}r.hide()},z=function(){if((w.enableEscapeButton||w.enableKeyboardNav)&&t(document).bind("keydown.fb",function(e){27==e.keyCode&&w.enableEscapeButton?(e.preventDefault(),t.fancybox.close()):37!=e.keyCode&&39!=e.keyCode||!w.enableKeyboardNav||"INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName||"SELECT"===e.target.tagName||(e.preventDefault(),t.fancybox[37==e.keyCode?"prev":"next"]())}),!w.showNavArrows)return s.hide(),void h.hide();(w.cyclic&&v.length>1||0!==y)&&s.show(),(w.cyclic&&v.length>1||y!=v.length-1)&&h.show()},H=function(){t.support.opacity||(d.get(0).style.removeAttribute("filter"),a.get(0).style.removeAttribute("filter")),b.autoDimensions&&d.css("height","auto"),a.css("height","auto"),j&&j.length&&r.show(),w.showCloseButton&&c.show(),z(),w.hideOnContentClick&&d.bind("click",t.fancybox.close),w.hideOnOverlayClick&&n.bind("click",t.fancybox.close),t(window).bind("resize.fb",t.fancybox.resize),w.centerOnScroll&&t(window).bind("scroll.fb",t.fancybox.center),"iframe"==w.type&&t('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" '+(t.browser.msie?'allowtransparency="true""':"")+' scrolling="'+b.scrolling+'" src="'+w.href+'"></iframe>').appendTo(d),a.show(),T=!1,t.fancybox.center(),w.onComplete(v,y,w),R()},R=function(){var t,e;v.length-1>y&&void 0!==(t=v[y+1].href)&&t.match(I)&&(e=new Image,e.src=t),y>0&&void 0!==(t=v[y-1].href)&&t.match(I)&&(e=new Image,e.src=t)},K=function(t){var e={width:parseInt(f.width+(p.width-f.width)*t,10),height:parseInt(f.height+(p.height-f.height)*t,10),top:parseInt(f.top+(p.top-f.top)*t,10),left:parseInt(f.left+(p.left-f.left)*t,10)};void 0!==p.opacity&&(e.opacity=t<.5?.5:t),a.css(e),d.css({width:e.width-2*w.padding,height:e.height-O*t-2*w.padding})},W=function(){return[t(window).width()-2*w.margin,t(window).height()-2*w.margin,t(document).scrollLeft()+w.margin,t(document).scrollTop()+w.margin]},q=function(){var t,e=W(),i={},n=w.autoScale,a=2*w.padding;return w.width.toString().indexOf("%")>-1?i.width=parseInt(e[0]*parseFloat(w.width)/100,10):i.width=w.width+a,w.height.toString().indexOf("%")>-1?i.height=parseInt(e[1]*parseFloat(w.height)/100,10):i.height=w.height+a,n&&(i.width>e[0]||i.height>e[1])&&("image"==b.type||"swf"==b.type?(t=w.width/w.height,i.width>e[0]&&(i.width=e[0],i.height=parseInt((i.width-a)/t+a,10)),i.height>e[1]&&(i.height=e[1],i.width=parseInt((i.height-a)*t+a,10))):(i.width=Math.min(i.width,e[0]),i.height=Math.min(i.height,e[1]))),i.top=parseInt(Math.max(e[3]-20,e[3]+.5*(e[1]-i.height-40)),10),i.left=parseInt(Math.max(e[2]-20,e[2]+.5*(e[0]-i.width-40)),10),i},Q=function(t){var e=t.offset();return e.top+=parseInt(t.css("paddingTop"),10)||0,e.left+=parseInt(t.css("paddingLeft"),10)||0,e.top+=parseInt(t.css("border-top-width"),10)||0,e.left+=parseInt(t.css("border-left-width"),10)||0,e.width=t.width(),e.height=t.height(),e},X=function(){var e,i,n=!!b.orig&&t(b.orig),a={};return n&&n.length?(e=Q(n),a={width:e.width+2*w.padding,height:e.height+2*w.padding,top:e.top-w.padding-20,left:e.left-w.padding-20}):(i=W(),a={width:2*w.padding,height:2*w.padding,top:parseInt(i[3]+.5*i[1],10),left:parseInt(i[2]+.5*i[0],10)}),a},$=function(){if(!i.is(":visible"))return void clearInterval(l);t("div",i).css("top",-40*k+"px"),k=(k+1)%12};t.fn.fancybox=function(e){return t(this).length?(t(this).data("fancybox",t.extend({},e,t.metadata?t(this).metadata():{})).unbind("click.fb").bind("click.fb",function(e){if(e.preventDefault(),!T){T=!0,t(this).blur(),u=[],g=0;var i=t(this).attr("rel")||"";i&&""!=i&&"nofollow"!==i?(u=t("a[rel="+i+"], area[rel="+i+"]"),g=u.index(this)):u.push(this),E()}}),this):this},t.fancybox=function(e){var i;if(!T){if(T=!0,i=void 0!==arguments[1]?arguments[1]:{},u=[],g=parseInt(i.index,10)||0,t.isArray(e)){for(var n=0,a=e.length;n<a;n++)"object"==typeof e[n]?t(e[n]).data("fancybox",t.extend({},i,e[n])):e[n]=t({}).data("fancybox",t.extend({content:e[n]},i));u=jQuery.merge(u,e)}else"object"==typeof e?t(e).data("fancybox",t.extend({},i,e)):e=t({}).data("fancybox",t.extend({content:e},i)),u.push(e);(g>u.length||g<0)&&(g=0),E()}},t.fancybox.showActivity=function(){clearInterval(l),i.show(),l=setInterval($,66)},t.fancybox.hideActivity=function(){i.hide()},t.fancybox.next=function(){return t.fancybox.pos(y+1)},t.fancybox.prev=function(){return t.fancybox.pos(y-1)},t.fancybox.pos=function(t){T||(t=parseInt(t),u=v,t>-1&&t<v.length?(g=t,E()):w.cyclic&&v.length>1&&(g=t>=v.length?0:v.length-1,E()))},t.fancybox.cancel=function(){T||(T=!0,t.event.trigger("fancybox-cancel"),D(),b.onCancel(u,g,b),T=!1)},t.fancybox.close=function(){function e(){n.fadeOut("fast"),r.empty().hide(),a.hide(),t.event.trigger("fancybox-cleanup"),d.empty(),w.onClosed(v,y,w),v=b=[],y=g=0,w=b={},T=!1}if(!T&&!a.is(":hidden")){if(T=!0,w&&!1===w.onCleanup(v,y,w))return void(T=!1);if(D(),t(c.add(s).add(h)).hide(),t(d.add(n)).unbind(),t(window).unbind("resize.fb scroll.fb"),t(document).unbind("keydown.fb"),d.find("iframe").attr("src",A&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank"),"inside"!==w.titlePosition&&r.empty(),a.stop(),"elastic"==w.transitionOut){f=X();var i=a.position();p={top:i.top,left:i.left,width:a.width(),height:a.height()},w.opacity&&(p.opacity=1),r.empty().hide(),S.prop=1,t(S).animate({prop:0},{duration:w.speedOut,easing:w.easingOut,step:K,complete:e})}else a.fadeOut("none"==w.transitionOut?0:w.speedOut,e)}},t.fancybox.resize=function(){n.is(":visible")&&n.css("height",t(document).height()),t.fancybox.center(!0)},t.fancybox.center=function(){var t,e;T||(e=!0===arguments[0]?1:0,t=W(),!e&&(a.width()>t[0]||a.height()>t[1])||a.stop().animate({top:parseInt(Math.max(t[3]-20,t[3]+.5*(t[1]-d.height()-40)-w.padding)),left:parseInt(Math.max(t[2]-20,t[2]+.5*(t[0]-d.width()-40)-w.padding))},"number"==typeof arguments[0]?arguments[0]:200))},t.fancybox.init=function(){t("#fancybox-wrap").length||(t("body").append(e=t('<div id="fancybox-tmp"></div>'),i=t('<div id="fancybox-loading"><div></div></div>'),n=t('<div id="fancybox-overlay"></div>'),a=t('<div id="fancybox-wrap"></div>')),o=t('<div id="fancybox-outer"></div>').append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>').appendTo(a),o.append(d=t('<div id="fancybox-content"></div>'),c=t('<a id="fancybox-close"></a>'),r=t('<div id="fancybox-title"></div>'),s=t('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),h=t('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')),c.click(t.fancybox.close),i.click(t.fancybox.cancel),s.click(function(e){e.preventDefault(),t.fancybox.prev()}),h.click(function(e){e.preventDefault(),t.fancybox.next()}),t.fn.mousewheel&&a.bind("mousewheel.fb",function(e,i){T?e.preventDefault():0!=t(e.target).get(0).clientHeight&&t(e.target).get(0).scrollHeight!==t(e.target).get(0).clientHeight||(e.preventDefault(),t.fancybox[i>0?"prev":"next"]())}),t.support.opacity||a.addClass("fancybox-ie"),A&&(i.addClass("fancybox-ie6"),a.addClass("fancybox-ie6"),t('<iframe id="fancybox-hide-sel-frame" src="'+(/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank")+'" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(o)))},t.fn.fancybox.defaults={padding:10,margin:40,opacity:!1,modal:!1,cyclic:!1,scrolling:"auto",width:560,height:340,autoScale:!0,autoDimensions:!0,centerOnScroll:!1,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:!0,hideOnContentClick:!1,overlayShow:!0,overlayOpacity:.7,overlayColor:"#777",titleShow:!0,titlePosition:"float",titleFormat:null,titleFromAlt:!1,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing",easingOut:"swing",showCloseButton:!0,showNavArrows:!0,enableEscapeButton:!0,enableKeyboardNav:!0,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}},t(document).ready(function(){t.fancybox.init()})}(jQuery);
1
+ "use strict";function _typeof(t){"@babel/helpers - typeof";return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(t){var e,i,n,a,o,d,r,c,s,h,l,f,p,g=0,y={},b=[],u=0,w={},v=[],m=null,x=new Image,I=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,C=/[^\.]\.(swf)\s*$/i,k=1,O=0,j="",S=!1,T=t.extend(t("<div/>")[0],{prop:0}),D=t.browser.msie&&t.browser.version<7&&!window.XMLHttpRequest,A=function(){i.hide(),x.onerror=x.onload=null,m&&m.abort(),e.empty()},E=function(){if(!1===y.onError(b,g,y))return i.hide(),void(S=!1);y.titleShow=!1,y.width="auto",y.height="auto",e.html('<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>'),N()},F=function(){var n,a,o,r,c,s,h=b[g];if(A(),y=t.extend({},t.fn.fancybox.defaults,void 0===t(h).data("fancybox")?y:t(h).data("fancybox")),!1===(s=y.onStart(b,g,y)))return void(S=!1);if("object"==_typeof(s)&&(y=t.extend(y,s)),o=y.title||(h.nodeName?t(h).attr("title"):h.title)||"",h.nodeName&&!y.orig&&(y.orig=t(h).children("img:first").length?t(h).children("img:first"):t(h)),""===o&&y.orig&&y.titleFromAlt&&(o=y.orig.attr("alt")),n=y.href||(h.nodeName?t(h).attr("href"):h.href)||null,(/^(?:javascript)/i.test(n)||"#"==n)&&(n=null),y.type?(a=y.type,n||(n=y.content)):y.content?a="html":n&&(a=n.match(I)?"image":n.match(C)?"swf":t(h).hasClass("iframe")?"iframe":0===n.indexOf("#")?"inline":"ajax"),!a)return void E();switch("inline"==a&&(h=n.substr(n.indexOf("#")),a=t(h).length>0?"inline":"ajax"),y.type=a,y.href=n,y.title=o,y.autoDimensions&&("html"==y.type||"inline"==y.type||"ajax"==y.type?(y.width="auto",y.height="auto"):y.autoDimensions=!1),y.modal&&(y.overlayShow=!0,y.hideOnOverlayClick=!1,y.hideOnContentClick=!1,y.enableEscapeButton=!1,y.showCloseButton=!1),y.padding=parseInt(y.padding,10),y.margin=parseInt(y.margin,10),e.css("padding",y.padding+y.margin),t(".fancybox-inline-tmp").off("fancybox-cancel").on("fancybox-change",function(){t(this).replaceWith(d.children())}),a){case"html":e.html(y.content),N();break;case"inline":if(!0===t(h).parent().is("#fancybox-content"))return void(S=!1);t('<div class="fancybox-inline-tmp" />').hide().insertBefore(t(h)).on("fancybox-cleanup",function(){t(this).replaceWith(d.children())}).on("fancybox-cancel",function(){t(this).replaceWith(e.children())}),t(h).appendTo(e),N();break;case"image":S=!1,t.fancybox.showActivity(),x=new Image,x.onerror=function(){E()},x.onload=function(){S=!0,x.onerror=x.onload=null,P()},x.src=n;break;case"swf":y.scrolling="no",r='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+y.width+'" height="'+y.height+'"><param name="movie" value="'+n+'"></param>',c="",t.each(y.swf,function(t,e){r+='<param name="'+t+'" value="'+e+'"></param>',c+=" "+t+'="'+e+'"'}),r+='<embed src="'+n+'" type="application/x-shockwave-flash" width="'+y.width+'" height="'+y.height+'"'+c+"></embed></object>",e.html(r),N();break;case"ajax":S=!1,t.fancybox.showActivity(),y.ajax.win=y.ajax.success,m=t.ajax(t.extend({},y.ajax,{url:n,data:y.ajax.data||{},error:function(t,e,i){t.status>0&&E()},success:function(t,a,o){if(200==("object"==_typeof(o)?o:m).status){if("function"==typeof y.ajax.win){if(!1===(s=y.ajax.win(n,t,a,o)))return void i.hide();"string"!=typeof s&&"object"!=_typeof(s)||(t=s)}e.html(t),N()}}}));break;case"iframe":B()}},N=function(){var i=y.width,n=y.height;i=i.toString().indexOf("%")>-1?parseInt((t(window).width()-2*y.margin)*parseFloat(i)/100,10)+"px":"auto"==i?"auto":i+"px",n=n.toString().indexOf("%")>-1?parseInt((t(window).height()-2*y.margin)*parseFloat(n)/100,10)+"px":"auto"==n?"auto":n+"px",e.wrapInner('<div style="width:'+i+";height:"+n+";overflow: "+("auto"==y.scrolling?"auto":"yes"==y.scrolling?"scroll":"hidden")+';position:relative;"></div>'),y.width=e.width(),y.height=e.height(),B()},P=function(){y.width=x.width,y.height=x.height,t("<img />").attr({id:"fancybox-img",src:x.src,alt:y.title}).appendTo(e),B()},B=function(){var o,l;return i.hide(),a.is(":visible")&&!1===w.onCleanup(v,u,w)?(t.event.trigger("fancybox-cancel"),void(S=!1)):(S=!0,t(d.add(n)).off(),t(window).off("resize.fb scroll.fb"),t(document).off("keydown.fb"),a.is(":visible")&&"outside"!==w.titlePosition&&a.css("height",a.height()),v=b,u=g,w=y,w.overlayShow?(n.css({"background-color":w.overlayColor,opacity:w.overlayOpacity,cursor:w.hideOnOverlayClick?"pointer":"auto",height:t(document).height()}),n.is(":visible")||(D&&t("select:not(#fancybox-tmp select)").filter(function(){return"hidden"!==this.style.visibility}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"}),n.show())):n.hide(),p=Q(),M(),a.is(":visible")?(t(r.add(s).add(h)).hide(),o=a.position(),f={top:o.top,left:o.left,width:a.width(),height:a.height()},l=f.width==p.width&&f.height==p.height,void d.fadeTo(w.changeFade,.3,function(){var i=function(){d.html(e.contents()).fadeTo(w.changeFade,1,z)};t.event.trigger("fancybox-change"),d.empty().removeAttr("filter").css({"border-width":w.padding,width:p.width-2*w.padding,height:y.autoDimensions?"auto":p.height-O-2*w.padding}),l?i():(T.prop=0,t(T).animate({prop:1},{duration:w.changeSpeed,easing:w.easingChange,step:R,complete:i}))})):(a.removeAttr("style"),d.css("border-width",w.padding),"elastic"==w.transitionIn?(f=q(),d.html(e.contents()),a.show(),w.opacity&&(p.opacity=0),T.prop=0,void t(T).animate({prop:1},{duration:w.speedIn,easing:w.easingIn,step:R,complete:z})):("inside"==w.titlePosition&&O>0&&c.show(),d.css({width:p.width-2*w.padding,height:y.autoDimensions?"auto":p.height-O-2*w.padding}).html(e.contents()),void a.css(p).fadeIn("none"==w.transitionIn?0:w.speedIn,z))))},L=function(t){return!(!t||!t.length)&&("float"==w.titlePosition?'<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">'+t+'</td><td id="fancybox-title-float-right"></td></tr></table>':'<div id="fancybox-title-'+w.titlePosition+'">'+t+"</div>")},M=function(){if(j=w.title||"",O=0,c.empty().removeAttr("style").removeClass(),!1===w.titleShow)return void c.hide();if(!(j=function(t){return"function"==typeof t}(w.titleFormat)?w.titleFormat(j,v,u,w):L(j))||""===j)return void c.hide();switch(c.addClass("fancybox-title-"+w.titlePosition).html(j).appendTo("body").show(),w.titlePosition){case"inside":c.css({width:p.width-2*w.padding,marginLeft:w.padding,marginRight:w.padding}),O=c.outerHeight(!0),c.appendTo(o),p.height+=O;break;case"over":c.css({marginLeft:w.padding,width:p.width-2*w.padding,bottom:w.padding}).appendTo(o);break;case"float":c.css("left",-1*parseInt((c.width()-p.width-40)/2,10)).appendTo(a);break;default:c.css({width:p.width-2*w.padding,paddingLeft:w.padding,paddingRight:w.padding}).appendTo(a)}c.hide()},_=function(){if((w.enableEscapeButton||w.enableKeyboardNav)&&t(document).on("keydown.fb",function(e){27==e.keyCode&&w.enableEscapeButton?(e.preventDefault(),t.fancybox.close()):37!=e.keyCode&&39!=e.keyCode||!w.enableKeyboardNav||"INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName||"SELECT"===e.target.tagName||(e.preventDefault(),t.fancybox[37==e.keyCode?"prev":"next"]())}),!w.showNavArrows)return s.hide(),void h.hide();(w.cyclic&&v.length>1||0!==u)&&s.show(),(w.cyclic&&v.length>1||u!=v.length-1)&&h.show()},z=function(){t.support.opacity||(d.get(0).style.removeProperty("filter"),a.get(0).style.removeProperty("filter")),y.autoDimensions&&d.css("height","auto"),a.css("height","auto"),j&&j.length&&c.show(),w.showCloseButton&&r.show(),_(),w.hideOnContentClick&&d.on("click",t.fancybox.close),w.hideOnOverlayClick&&n.on("click",t.fancybox.close),t(window).on("resize.fb",t.fancybox.resize),w.centerOnScroll&&t(window).on("scroll.fb",t.fancybox.center),"iframe"==w.type&&t('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" '+(t.browser.msie?'allowtransparency="true""':"")+' scrolling="'+y.scrolling+'" src="'+w.href+'"></iframe>').appendTo(d),a.show(),S=!1,t.fancybox.center(),w.onComplete(v,u,w),H()},H=function(){var t,e;v.length-1>u&&void 0!==(t=v[u+1].href)&&t.match(I)&&(e=new Image,e.src=t),u>0&&void 0!==(t=v[u-1].href)&&t.match(I)&&(e=new Image,e.src=t)},R=function(t){var e={width:parseInt(f.width+(p.width-f.width)*t,10),height:parseInt(f.height+(p.height-f.height)*t,10),top:parseInt(f.top+(p.top-f.top)*t,10),left:parseInt(f.left+(p.left-f.left)*t,10)};void 0!==p.opacity&&(e.opacity=t<.5?.5:t),a.css(e),d.css({width:e.width-2*w.padding,height:e.height-O*t-2*w.padding})},K=function(){return[t(window).width()-2*w.margin,t(window).height()-2*w.margin,t(document).scrollLeft()+w.margin,t(document).scrollTop()+w.margin]},Q=function(){var t,e=K(),i={},n=w.autoScale,a=2*w.padding;return w.width.toString().indexOf("%")>-1?i.width=parseInt(e[0]*parseFloat(w.width)/100,10):i.width=w.width+a,w.height.toString().indexOf("%")>-1?i.height=parseInt(e[1]*parseFloat(w.height)/100,10):i.height=w.height+a,n&&(i.width>e[0]||i.height>e[1])&&("image"==y.type||"swf"==y.type?(t=w.width/w.height,i.width>e[0]&&(i.width=e[0],i.height=parseInt((i.width-a)/t+a,10)),i.height>e[1]&&(i.height=e[1],i.width=parseInt((i.height-a)*t+a,10))):(i.width=Math.min(i.width,e[0]),i.height=Math.min(i.height,e[1]))),i.top=parseInt(Math.max(e[3]-20,e[3]+.5*(e[1]-i.height-40)),10),i.left=parseInt(Math.max(e[2]-20,e[2]+.5*(e[0]-i.width-40)),10),i},W=function(t){var e=t.offset();return e.top+=parseInt(t.css("paddingTop"),10)||0,e.left+=parseInt(t.css("paddingLeft"),10)||0,e.top+=parseInt(t.css("border-top-width"),10)||0,e.left+=parseInt(t.css("border-left-width"),10)||0,e.width=t.width(),e.height=t.height(),e},q=function(){var e,i,n=!!y.orig&&t(y.orig),a={};return n&&n.length?(e=W(n),a={width:e.width+2*w.padding,height:e.height+2*w.padding,top:e.top-w.padding-20,left:e.left-w.padding-20}):(i=K(),a={width:2*w.padding,height:2*w.padding,top:parseInt(i[3]+.5*i[1],10),left:parseInt(i[2]+.5*i[0],10)}),a},X=function(){if(!i.is(":visible"))return void clearInterval(l);t("div",i).css("top",-40*k+"px"),k=(k+1)%12};t.fn.fancybox=function(e){return t(this).length?(t(this).data("fancybox",t.extend({},e,t.metadata?t(this).metadata():{})).off("click.fb").on("click.fb",function(e){if(e.preventDefault(),!S){S=!0,t(this).trigger("blur"),b=[],g=0;var i=t(this).attr("rel")||"";i&&""!=i&&"nofollow"!==i?(b=t("a[rel="+i+"], area[rel="+i+"]"),g=b.index(this)):b.push(this),F()}}),this):this},t.fancybox=function(e){var i;if(!S){if(S=!0,i=void 0!==arguments[1]?arguments[1]:{},b=[],g=parseInt(i.index,10)||0,Array.isArray(e)){for(var n=0,a=e.length;n<a;n++)"object"==_typeof(e[n])?t(e[n]).data("fancybox",t.extend({},i,e[n])):e[n]=t({}).data("fancybox",t.extend({content:e[n]},i));b=jQuery.merge(b,e)}else"object"==_typeof(e)?t(e).data("fancybox",t.extend({},i,e)):e=t({}).data("fancybox",t.extend({content:e},i)),b.push(e);(g>b.length||g<0)&&(g=0),F()}},t.fancybox.showActivity=function(){clearInterval(l),i.show(),l=setInterval(X,66)},t.fancybox.hideActivity=function(){i.hide()},t.fancybox.next=function(){return t.fancybox.pos(u+1)},t.fancybox.prev=function(){return t.fancybox.pos(u-1)},t.fancybox.pos=function(t){S||(t=parseInt(t),b=v,t>-1&&t<v.length?(g=t,F()):w.cyclic&&v.length>1&&(g=t>=v.length?0:v.length-1,F()))},t.fancybox.cancel=function(){S||(S=!0,t.event.trigger("fancybox-cancel"),A(),y.onCancel(b,g,y),S=!1)},t.fancybox.close=function(){function e(){n.fadeOut("fast"),c.empty().hide(),a.hide(),t.event.trigger("fancybox-cleanup"),d.empty(),w.onClosed(v,u,w),v=y=[],u=g=0,w=y={},S=!1}if(!S&&!a.is(":hidden")){if(S=!0,w&&!1===w.onCleanup(v,u,w))return void(S=!1);if(A(),t(r.add(s).add(h)).hide(),t(d.add(n)).off(),t(window).off("resize.fb scroll.fb"),t(document).off("keydown.fb"),d.find("iframe").attr("src",D&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank"),"inside"!==w.titlePosition&&c.empty(),a.stop(),"elastic"==w.transitionOut){f=q();var i=a.position();p={top:i.top,left:i.left,width:a.width(),height:a.height()},w.opacity&&(p.opacity=1),c.empty().hide(),T.prop=1,t(T).animate({prop:0},{duration:w.speedOut,easing:w.easingOut,step:R,complete:e})}else a.fadeOut("none"==w.transitionOut?0:w.speedOut,e)}},t.fancybox.resize=function(){n.is(":visible")&&n.css("height",t(document).height()),t.fancybox.center(!0)},t.fancybox.center=function(){var t,e;S||(e=!0===arguments[0]?1:0,t=K(),!e&&(a.width()>t[0]||a.height()>t[1])||a.stop().animate({top:parseInt(Math.max(t[3]-20,t[3]+.5*(t[1]-d.height()-40)-w.padding)),left:parseInt(Math.max(t[2]-20,t[2]+.5*(t[0]-d.width()-40)-w.padding))},"number"==typeof arguments[0]?arguments[0]:200))},t.fancybox.init=function(){t("#fancybox-wrap").length||(t("body").append(e=t('<div id="fancybox-tmp"></div>'),i=t('<div id="fancybox-loading"><div></div></div>'),n=t('<div id="fancybox-overlay"></div>'),a=t('<div id="fancybox-wrap"></div>')),o=t('<div id="fancybox-outer"></div>').append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>').appendTo(a),o.append(d=t('<div id="fancybox-content"></div>'),r=t('<a id="fancybox-close"></a>'),c=t('<div id="fancybox-title"></div>'),s=t('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),h=t('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')),r.on("click",t.fancybox.close),i.on("click",t.fancybox.cancel),s.on("click",function(e){e.preventDefault(),t.fancybox.prev()}),h.on("click",function(e){e.preventDefault(),t.fancybox.next()}),t.fn.mousewheel&&a.on("mousewheel.fb",function(e,i){S?e.preventDefault():0!=t(e.target).get(0).clientHeight&&t(e.target).get(0).scrollHeight!==t(e.target).get(0).clientHeight||(e.preventDefault(),t.fancybox[i>0?"prev":"next"]())}),t.support.opacity||a.addClass("fancybox-ie"),D&&(i.addClass("fancybox-ie6"),a.addClass("fancybox-ie6"),t('<iframe id="fancybox-hide-sel-frame" src="'+(/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank")+'" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(o)))},t.fn.fancybox.defaults={padding:10,margin:40,opacity:!1,modal:!1,cyclic:!1,scrolling:"auto",width:560,height:340,autoScale:!0,autoDimensions:!0,centerOnScroll:!1,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:!0,hideOnContentClick:!1,overlayShow:!0,overlayOpacity:.7,overlayColor:"#777",titleShow:!0,titlePosition:"float",titleFormat:null,titleFromAlt:!1,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing",easingOut:"swing",showCloseButton:!0,showNavArrows:!0,enableEscapeButton:!0,enableKeyboardNav:!0,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}},jQuery(function(t){t.fancybox.init()})}(jQuery);
products/photocrati_nextgen/modules/lightbox/static/fancybox/jquery.fancybox-1.3.4.pack.js CHANGED
@@ -1,46 +1 @@
1
- /*
2
- * FancyBox - jQuery Plugin
3
- * Simple and fancy lightbox alternative
4
- *
5
- * Examples and documentation at: http://fancybox.net
6
- *
7
- * Copyright (c) 2008 - 2010 Janis Skarnelis
8
- * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
9
- *
10
- * Version: 1.3.4 (11/11/2010)
11
- * Requires: jQuery v1.3+
12
- *
13
- * Dual licensed under the MIT and GPL licenses:
14
- * http://www.opensource.org/licenses/mit-license.php
15
- * http://www.gnu.org/licenses/gpl.html
16
- */
17
-
18
- ;(function(b){var m,t,u,f,D,j,E,n,z,A,q=0,e={},o=[],p=0,d={},l=[],G=null,v=new Image,J=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,W=/[^\.]\.(swf)\s*$/i,K,L=1,y=0,s="",r,i,h=false,B=b.extend(b("<div/>")[0],{prop:0}),M=b.browser.msie&&b.browser.version<7&&!window.XMLHttpRequest,N=function(){t.hide();v.onerror=v.onload=null;G&&G.abort();m.empty()},O=function(){if(false===e.onError(o,q,e)){t.hide();h=false}else{e.titleShow=false;e.width="auto";e.height="auto";m.html('<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>');
19
- F()}},I=function(){var a=o[q],c,g,k,C,P,w;N();e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));w=e.onStart(o,q,e);if(w===false)h=false;else{if(typeof w=="object")e=b.extend(e,w);k=e.title||(a.nodeName?b(a).attr("title"):a.title)||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(k===""&&e.orig&&e.titleFromAlt)k=e.orig.attr("alt");c=e.href||(a.nodeName?b(a).attr("href"):a.href)||null;if(/^(?:javascript)/i.test(c)||
20
- c=="#")c=null;if(e.type){g=e.type;if(!c)c=e.content}else if(e.content)g="html";else if(c)g=c.match(J)?"image":c.match(W)?"swf":b(a).hasClass("iframe")?"iframe":c.indexOf("#")===0?"inline":"ajax";if(g){if(g=="inline"){a=c.substr(c.indexOf("#"));g=b(a).length>0?"inline":"ajax"}e.type=g;e.href=c;e.title=k;if(e.autoDimensions)if(e.type=="html"||e.type=="inline"||e.type=="ajax"){e.width="auto";e.height="auto"}else e.autoDimensions=false;if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick=
21
- false;e.enableEscapeButton=false;e.showCloseButton=false}e.padding=parseInt(e.padding,10);e.margin=parseInt(e.margin,10);m.css("padding",e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(j.children())});switch(g){case "html":m.html(e.content);F();break;case "inline":if(b(a).parent().is("#fancybox-content")===true){h=false;break}b('<div class="fancybox-inline-tmp" />').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(j.children())}).bind("fancybox-cancel",
22
- function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();v=new Image;v.onerror=function(){O()};v.onload=function(){h=true;v.onerror=v.onload=null;e.width=v.width;e.height=v.height;b("<img />").attr({id:"fancybox-img",src:v.src,alt:e.title}).appendTo(m);Q()};v.src=c;break;case "swf":e.scrolling="no";C='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+e.width+'" height="'+e.height+'"><param name="movie" value="'+c+
23
- '"></param>';P="";b.each(e.swf,function(x,H){C+='<param name="'+x+'" value="'+H+'"></param>';P+=" "+x+'="'+H+'"'});C+='<embed src="'+c+'" type="application/x-shockwave-flash" width="'+e.width+'" height="'+e.height+'"'+P+"></embed></object>";m.html(C);F();break;case "ajax":h=false;b.fancybox.showActivity();e.ajax.win=e.ajax.success;G=b.ajax(b.extend({},e.ajax,{url:c,data:e.ajax.data||{},error:function(x){x.status>0&&O()},success:function(x,H,R){if((typeof R=="object"?R:G).status==200){if(typeof e.ajax.win==
24
- "function"){w=e.ajax.win(c,x,H,R);if(w===false){t.hide();return}else if(typeof w=="string"||typeof w=="object")x=w}m.html(x);F()}}}));break;case "iframe":Q()}}else O()}},F=function(){var a=e.width,c=e.height;a=a.toString().indexOf("%")>-1?parseInt((b(window).width()-e.margin*2)*parseFloat(a)/100,10)+"px":a=="auto"?"auto":a+"px";c=c.toString().indexOf("%")>-1?parseInt((b(window).height()-e.margin*2)*parseFloat(c)/100,10)+"px":c=="auto"?"auto":c+"px";m.wrapInner('<div style="width:'+a+";height:"+c+
25
- ";overflow: "+(e.scrolling=="auto"?"auto":e.scrolling=="yes"?"scroll":"hidden")+';position:relative;"></div>');e.width=m.width();e.height=m.height();Q()},Q=function(){var a,c;t.hide();if(f.is(":visible")&&false===d.onCleanup(l,p,d)){b.event.trigger("fancybox-cancel");h=false}else{h=true;b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");f.is(":visible")&&d.titlePosition!=="outside"&&f.css("height",f.height());l=o;p=q;d=e;if(d.overlayShow){u.css({"background-color":d.overlayColor,
26
- opacity:d.overlayOpacity,cursor:d.hideOnOverlayClick?"pointer":"auto",height:b(document).height()});if(!u.is(":visible")){M&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});u.show()}}else u.hide();i=X();s=d.title||"";y=0;n.empty().removeAttr("style").removeClass();if(d.titleShow!==false){if(b.isFunction(d.titleFormat))a=d.titleFormat(s,l,p,d);else a=s&&s.length?
27
- d.titlePosition=="float"?'<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">'+s+'</td><td id="fancybox-title-float-right"></td></tr></table>':'<div id="fancybox-title-'+d.titlePosition+'">'+s+"</div>":false;s=a;if(!(!s||s==="")){n.addClass("fancybox-title-"+d.titlePosition).html(s).appendTo("body").show();switch(d.titlePosition){case "inside":n.css({width:i.width-d.padding*2,marginLeft:d.padding,marginRight:d.padding});
28
- y=n.outerHeight(true);n.appendTo(D);i.height+=y;break;case "over":n.css({marginLeft:d.padding,width:i.width-d.padding*2,bottom:d.padding}).appendTo(D);break;case "float":n.css("left",parseInt((n.width()-i.width-40)/2,10)*-1).appendTo(f);break;default:n.css({width:i.width-d.padding*2,paddingLeft:d.padding,paddingRight:d.padding}).appendTo(f)}}}n.hide();if(f.is(":visible")){b(E.add(z).add(A)).hide();a=f.position();r={top:a.top,left:a.left,width:f.width(),height:f.height()};c=r.width==i.width&&r.height==
29
- i.height;j.fadeTo(d.changeFade,0.3,function(){var g=function(){j.html(m.contents()).fadeTo(d.changeFade,1,S)};b.event.trigger("fancybox-change");j.empty().removeAttr("filter").css({"border-width":d.padding,width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2});if(c)g();else{B.prop=0;b(B).animate({prop:1},{duration:d.changeSpeed,easing:d.easingChange,step:T,complete:g})}})}else{f.removeAttr("style");j.css("border-width",d.padding);if(d.transitionIn=="elastic"){r=V();j.html(m.contents());
30
- f.show();if(d.opacity)i.opacity=0;B.prop=0;b(B).animate({prop:1},{duration:d.speedIn,easing:d.easingIn,step:T,complete:S})}else{d.titlePosition=="inside"&&y>0&&n.show();j.css({width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2}).html(m.contents());f.css(i).fadeIn(d.transitionIn=="none"?0:d.speedIn,S)}}}},Y=function(){if(d.enableEscapeButton||d.enableKeyboardNav)b(document).bind("keydown.fb",function(a){if(a.keyCode==27&&d.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if((a.keyCode==
31
- 37||a.keyCode==39)&&d.enableKeyboardNav&&a.target.tagName!=="INPUT"&&a.target.tagName!=="TEXTAREA"&&a.target.tagName!=="SELECT"){a.preventDefault();b.fancybox[a.keyCode==37?"prev":"next"]()}});if(d.showNavArrows){if(d.cyclic&&l.length>1||p!==0)z.show();if(d.cyclic&&l.length>1||p!=l.length-1)A.show()}else{z.hide();A.hide()}},S=function(){if(!b.support.opacity){j.get(0).style.removeAttribute("filter");f.get(0).style.removeAttribute("filter")}e.autoDimensions&&j.css("height","auto");f.css("height","auto");
32
- s&&s.length&&n.show();d.showCloseButton&&E.show();Y();d.hideOnContentClick&&j.bind("click",b.fancybox.close);d.hideOnOverlayClick&&u.bind("click",b.fancybox.close);b(window).bind("resize.fb",b.fancybox.resize);d.centerOnScroll&&b(window).bind("scroll.fb",b.fancybox.center);if(d.type=="iframe")b('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" '+(b.browser.msie?'allowtransparency="true""':"")+' scrolling="'+e.scrolling+'" src="'+d.href+'"></iframe>').appendTo(j);
33
- f.show();h=false;b.fancybox.center();d.onComplete(l,p,d);var a,c;if(l.length-1>p){a=l[p+1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}if(p>0){a=l[p-1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}},T=function(a){var c={width:parseInt(r.width+(i.width-r.width)*a,10),height:parseInt(r.height+(i.height-r.height)*a,10),top:parseInt(r.top+(i.top-r.top)*a,10),left:parseInt(r.left+(i.left-r.left)*a,10)};if(typeof i.opacity!=="undefined")c.opacity=a<0.5?0.5:a;f.css(c);
34
- j.css({width:c.width-d.padding*2,height:c.height-y*a-d.padding*2})},U=function(){return[b(window).width()-d.margin*2,b(window).height()-d.margin*2,b(document).scrollLeft()+d.margin,b(document).scrollTop()+d.margin]},X=function(){var a=U(),c={},g=d.autoScale,k=d.padding*2;c.width=d.width.toString().indexOf("%")>-1?parseInt(a[0]*parseFloat(d.width)/100,10):d.width+k;c.height=d.height.toString().indexOf("%")>-1?parseInt(a[1]*parseFloat(d.height)/100,10):d.height+k;if(g&&(c.width>a[0]||c.height>a[1]))if(e.type==
35
- "image"||e.type=="swf"){g=d.width/d.height;if(c.width>a[0]){c.width=a[0];c.height=parseInt((c.width-k)/g+k,10)}if(c.height>a[1]){c.height=a[1];c.width=parseInt((c.height-k)*g+k,10)}}else{c.width=Math.min(c.width,a[0]);c.height=Math.min(c.height,a[1])}c.top=parseInt(Math.max(a[3]-20,a[3]+(a[1]-c.height-40)*0.5),10);c.left=parseInt(Math.max(a[2]-20,a[2]+(a[0]-c.width-40)*0.5),10);return c},V=function(){var a=e.orig?b(e.orig):false,c={};if(a&&a.length){c=a.offset();c.top+=parseInt(a.css("paddingTop"),
36
- 10)||0;c.left+=parseInt(a.css("paddingLeft"),10)||0;c.top+=parseInt(a.css("border-top-width"),10)||0;c.left+=parseInt(a.css("border-left-width"),10)||0;c.width=a.width();c.height=a.height();c={width:c.width+d.padding*2,height:c.height+d.padding*2,top:c.top-d.padding-20,left:c.left-d.padding-20}}else{a=U();c={width:d.padding*2,height:d.padding*2,top:parseInt(a[3]+a[1]*0.5,10),left:parseInt(a[2]+a[0]*0.5,10)}}return c},Z=function(){if(t.is(":visible")){b("div",t).css("top",L*-40+"px");L=(L+1)%12}else clearInterval(K)};
37
- b.fn.fancybox=function(a){if(!b(this).length)return this;b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(c){c.preventDefault();if(!h){h=true;b(this).blur();o=[];q=0;c=b(this).attr("rel")||"";if(!c||c==""||c==="nofollow")o.push(this);else{o=b("a[rel="+c+"], area[rel="+c+"]");q=o.index(this)}I()}});return this};b.fancybox=function(a,c){var g;if(!h){h=true;g=typeof c!=="undefined"?c:{};o=[];q=parseInt(g.index,10)||0;if(b.isArray(a)){for(var k=
38
- 0,C=a.length;k<C;k++)if(typeof a[k]=="object")b(a[k]).data("fancybox",b.extend({},g,a[k]));else a[k]=b({}).data("fancybox",b.extend({content:a[k]},g));o=jQuery.merge(o,a)}else{if(typeof a=="object")b(a).data("fancybox",b.extend({},g,a));else a=b({}).data("fancybox",b.extend({content:a},g));o.push(a)}if(q>o.length||q<0)q=0;I()}};b.fancybox.showActivity=function(){clearInterval(K);t.show();K=setInterval(Z,66)};b.fancybox.hideActivity=function(){t.hide()};b.fancybox.next=function(){return b.fancybox.pos(p+
39
- 1)};b.fancybox.prev=function(){return b.fancybox.pos(p-1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a);o=l;if(a>-1&&a<l.length){q=a;I()}else if(d.cyclic&&l.length>1){q=a>=l.length?0:l.length-1;I()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");N();e.onCancel(o,q,e);h=false}};b.fancybox.close=function(){function a(){u.fadeOut("fast");n.empty().hide();f.hide();b.event.trigger("fancybox-cleanup");j.empty();d.onClosed(l,p,d);l=e=[];p=q=0;d=e={};h=false}if(!(h||f.is(":hidden"))){h=
40
- true;if(d&&false===d.onCleanup(l,p,d))h=false;else{N();b(E.add(z).add(A)).hide();b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");j.find("iframe").attr("src",M&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank");d.titlePosition!=="inside"&&n.empty();f.stop();if(d.transitionOut=="elastic"){r=V();var c=f.position();i={top:c.top,left:c.left,width:f.width(),height:f.height()};if(d.opacity)i.opacity=1;n.empty().hide();B.prop=1;
41
- b(B).animate({prop:0},{duration:d.speedOut,easing:d.easingOut,step:T,complete:a})}else f.fadeOut(d.transitionOut=="none"?0:d.speedOut,a)}}};b.fancybox.resize=function(){u.is(":visible")&&u.css("height",b(document).height());b.fancybox.center(true)};b.fancybox.center=function(a){var c,g;if(!h){g=a===true?1:0;c=U();!g&&(f.width()>c[0]||f.height()>c[1])||f.stop().animate({top:parseInt(Math.max(c[3]-20,c[3]+(c[1]-j.height()-40)*0.5-d.padding)),left:parseInt(Math.max(c[2]-20,c[2]+(c[0]-j.width()-40)*0.5-
42
- d.padding))},typeof a=="number"?a:200)}};b.fancybox.init=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('<div id="fancybox-tmp"></div>'),t=b('<div id="fancybox-loading"><div></div></div>'),u=b('<div id="fancybox-overlay"></div>'),f=b('<div id="fancybox-wrap"></div>'));D=b('<div id="fancybox-outer"></div>').append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>').appendTo(f);
43
- D.append(j=b('<div id="fancybox-content"></div>'),E=b('<a id="fancybox-close"></a>'),n=b('<div id="fancybox-title"></div>'),z=b('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),A=b('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>'));E.click(b.fancybox.close);t.click(b.fancybox.cancel);z.click(function(a){a.preventDefault();b.fancybox.prev()});A.click(function(a){a.preventDefault();b.fancybox.next()});
44
- b.fn.mousewheel&&f.bind("mousewheel.fb",function(a,c){if(h)a.preventDefault();else if(b(a.target).get(0).clientHeight==0||b(a.target).get(0).scrollHeight===b(a.target).get(0).clientHeight){a.preventDefault();b.fancybox[c>0?"prev":"next"]()}});b.support.opacity||f.addClass("fancybox-ie");if(M){t.addClass("fancybox-ie6");f.addClass("fancybox-ie6");b('<iframe id="fancybox-hide-sel-frame" src="'+(/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank")+'" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(D)}}};
45
- b.fn.fancybox.defaults={padding:10,margin:40,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.7,overlayColor:"#777",titleShow:true,titlePosition:"float",titleFormat:null,titleFromAlt:false,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing",
46
- easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,enableKeyboardNav:true,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}};b(document).ready(function(){b.fancybox.init()})})(jQuery);
1
+ !function(c){function r(){l.hide(),j.onerror=j.onload=null,O&&O.abort(),h.empty()}function s(){if(!1===m.onError(v,x,m))return l.hide(),F=!1;m.titleShow=!1,m.width="auto",m.height="auto",h.html('<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>'),B()}function a(){var n,t,e,i,a,o,d=v[x];if(r(),m=c.extend({},c.fn.fancybox.defaults,void 0===c(d).data("fancybox")?m:c(d).data("fancybox")),!1!==(o=m.onStart(v,x,m)))if("object"==typeof o&&(m=c.extend(m,o)),e=m.title||(d.nodeName?c(d).attr("title"):d.title)||"",d.nodeName&&!m.orig&&(m.orig=c(d).children("img:first").length?c(d).children("img:first"):c(d)),""===e&&m.orig&&m.titleFromAlt&&(e=m.orig.attr("alt")),n=m.href||(d.nodeName?c(d).attr("href"):d.href)||null,!/^(?:javascript)/i.test(n)&&"#"!=n||(n=null),m.type?(t=m.type,n=n||m.content):m.content?t="html":n&&(t=n.match(T)?"image":n.match(S)?"swf":c(d).hasClass("iframe")?"iframe":0===n.indexOf("#")?"inline":"ajax"),t)switch("inline"==t&&(d=n.substr(n.indexOf("#")),t=0<c(d).length?"inline":"ajax"),m.type=t,m.href=n,m.title=e,m.autoDimensions&&("html"==m.type||"inline"==m.type||"ajax"==m.type?(m.width="auto",m.height="auto"):m.autoDimensions=!1),m.modal&&(m.overlayShow=!0,m.hideOnOverlayClick=!1,m.hideOnContentClick=!1,m.enableEscapeButton=!1,m.showCloseButton=!1),m.padding=parseInt(m.padding,10),m.margin=parseInt(m.margin,10),h.css("padding",m.padding+m.margin),c(".fancybox-inline-tmp").off("fancybox-cancel").on("fancybox-change",function(){c(this).replaceWith(f.children())}),t){case"html":h.html(m.content),B();break;case"inline":if(!0===c(d).parent().is("#fancybox-content"))return F=!1,0;c('<div class="fancybox-inline-tmp" />').hide().insertBefore(c(d)).on("fancybox-cleanup",function(){c(this).replaceWith(f.children())}).on("fancybox-cancel",function(){c(this).replaceWith(h.children())}),c(d).appendTo(h),B();break;case"image":F=!1,c.fancybox.showActivity(),(j=new Image).onerror=function(){s()},j.onload=function(){F=!0,j.onerror=j.onload=null,L()},j.src=n;break;case"swf":m.scrolling="no",i='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+m.width+'" height="'+m.height+'"><param name="movie" value="'+n+'"></param>',a="",c.each(m.swf,function(t,e){i+='<param name="'+t+'" value="'+e+'"></param>',a+=" "+t+'="'+e+'"'}),i+='<embed src="'+n+'" type="application/x-shockwave-flash" width="'+m.width+'" height="'+m.height+'"'+a+"></embed></object>",h.html(i),B();break;case"ajax":F=!1,c.fancybox.showActivity(),m.ajax.win=m.ajax.success,O=c.ajax(c.extend({},m.ajax,{url:n,data:m.ajax.data||{},error:function(t,e,i){0<t.status&&s()},success:function(t,e,i){if(200==("object"==typeof i?i:O).status){if("function"==typeof m.ajax.win){if(!1===(o=m.ajax.win(n,t,e,i)))return void l.hide();"string"!=typeof o&&"object"!=typeof o||(t=o)}h.html(t),B()}}}));break;case"iframe":M()}else s();else F=!1}function o(){return[c(window).width()-2*C.margin,c(window).height()-2*C.margin,c(document).scrollLeft()+C.margin,c(document).scrollTop()+C.margin]}function t(){l.is(":visible")?(c("div",l).css("top",-40*D+"px"),D=(D+1)%12):clearInterval(y)}var h,l,i,n,e,f,d,p,g,b,y,u,w,x=0,m={},v=[],I=0,C={},k=[],O=null,j=new Image,T=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,S=/[^\.]\.(swf)\s*$/i,D=1,A=0,E="",F=!1,N=c.extend(c("<div/>")[0],{prop:0}),P=c.browser.msie&&c.browser.version<7&&!window.XMLHttpRequest,B=function(){var t=m.width,e=m.height,t=-1<t.toString().indexOf("%")?parseInt((c(window).width()-2*m.margin)*parseFloat(t)/100,10)+"px":"auto"==t?"auto":t+"px",e=-1<e.toString().indexOf("%")?parseInt((c(window).height()-2*m.margin)*parseFloat(e)/100,10)+"px":"auto"==e?"auto":e+"px";h.wrapInner('<div style="width:'+t+";height:"+e+";overflow: "+("auto"==m.scrolling?"auto":"yes"==m.scrolling?"scroll":"hidden")+';position:relative;"></div>'),m.width=h.width(),m.height=h.height(),M()},L=function(){m.width=j.width,m.height=j.height,c("<img />").attr({id:"fancybox-img",src:j.src,alt:m.title}).appendTo(h),M()},M=function(){var t,e;return l.hide(),n.is(":visible")&&!1===C.onCleanup(k,I,C)?(c.event.trigger("fancybox-cancel"),void(F=!1)):(F=!0,c(f.add(i)).off(),c(window).off("resize.fb scroll.fb"),c(document).off("keydown.fb"),n.is(":visible")&&"outside"!==C.titlePosition&&n.css("height",n.height()),k=v,I=x,(C=m).overlayShow?(i.css({"background-color":C.overlayColor,opacity:C.overlayOpacity,cursor:C.hideOnOverlayClick?"pointer":"auto",height:c(document).height()}),i.is(":visible")||(P&&c("select:not(#fancybox-tmp select)").filter(function(){return"hidden"!==this.style.visibility}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"}),i.show())):i.hide(),w=Q(),z(),n.is(":visible")?(c(d.add(g).add(b)).hide(),t=n.position(),u={top:t.top,left:t.left,width:n.width(),height:n.height()},e=u.width==w.width&&u.height==w.height,void f.fadeTo(C.changeFade,.3,function(){function t(){f.html(h.contents()).fadeTo(C.changeFade,1,H)}c.event.trigger("fancybox-change"),f.empty().removeAttr("filter").css({"border-width":C.padding,width:w.width-2*C.padding,height:m.autoDimensions?"auto":w.height-A-2*C.padding}),e?t():(N.prop=0,c(N).animate({prop:1},{duration:C.changeSpeed,easing:C.easingChange,step:K,complete:t}))})):(n.removeAttr("style"),f.css("border-width",C.padding),"elastic"==C.transitionIn?(u=W(),f.html(h.contents()),n.show(),C.opacity&&(w.opacity=0),N.prop=0,void c(N).animate({prop:1},{duration:C.speedIn,easing:C.easingIn,step:K,complete:H})):("inside"==C.titlePosition&&0<A&&p.show(),f.css({width:w.width-2*C.padding,height:m.autoDimensions?"auto":w.height-A-2*C.padding}).html(h.contents()),void n.css(w).fadeIn("none"==C.transitionIn?0:C.speedIn,H))))},z=function(){if(E=C.title||"",A=0,p.empty().removeAttr("style").removeClass(),!1!==C.titleShow){var t;if((E="function"==typeof C.titleFormat?C.titleFormat(E,k,I,C):!(!(t=E)||!t.length)&&("float"==C.titlePosition?'<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">'+t+'</td><td id="fancybox-title-float-right"></td></tr></table>':'<div id="fancybox-title-'+C.titlePosition+'">'+t+"</div>"))&&""!==E){switch(p.addClass("fancybox-title-"+C.titlePosition).html(E).appendTo("body").show(),C.titlePosition){case"inside":p.css({width:w.width-2*C.padding,marginLeft:C.padding,marginRight:C.padding}),A=p.outerHeight(!0),p.appendTo(e),w.height+=A;break;case"over":p.css({marginLeft:C.padding,width:w.width-2*C.padding,bottom:C.padding}).appendTo(e);break;case"float":p.css("left",-1*parseInt((p.width()-w.width-40)/2,10)).appendTo(n);break;default:p.css({width:w.width-2*C.padding,paddingLeft:C.padding,paddingRight:C.padding}).appendTo(n)}p.hide()}else p.hide()}else p.hide()},H=function(){c.support.opacity||(f.get(0).style.removeProperty("filter"),n.get(0).style.removeProperty("filter")),m.autoDimensions&&f.css("height","auto"),n.css("height","auto"),E&&E.length&&p.show(),C.showCloseButton&&d.show(),function(){if((C.enableEscapeButton||C.enableKeyboardNav)&&c(document).on("keydown.fb",function(t){27==t.keyCode&&C.enableEscapeButton?(t.preventDefault(),c.fancybox.close()):37!=t.keyCode&&39!=t.keyCode||!C.enableKeyboardNav||"INPUT"===t.target.tagName||"TEXTAREA"===t.target.tagName||"SELECT"===t.target.tagName||(t.preventDefault(),c.fancybox[37==t.keyCode?"prev":"next"]())}),!C.showNavArrows)return g.hide(),b.hide();(C.cyclic&&1<k.length||0!==I)&&g.show(),(C.cyclic&&1<k.length||I!=k.length-1)&&b.show()}(),C.hideOnContentClick&&f.on("click",c.fancybox.close),C.hideOnOverlayClick&&i.on("click",c.fancybox.close),c(window).on("resize.fb",c.fancybox.resize),C.centerOnScroll&&c(window).on("scroll.fb",c.fancybox.center),"iframe"==C.type&&c('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" '+(c.browser.msie?'allowtransparency="true""':"")+' scrolling="'+m.scrolling+'" src="'+C.href+'"></iframe>').appendTo(f),n.show(),F=!1,c.fancybox.center(),C.onComplete(k,I,C),R()},R=function(){var t;k.length-1>I&&void 0!==(t=k[I+1].href)&&t.match(T)&&((new Image).src=t),0<I&&void 0!==(t=k[I-1].href)&&t.match(T)&&((new Image).src=t)},K=function(t){var e={width:parseInt(u.width+(w.width-u.width)*t,10),height:parseInt(u.height+(w.height-u.height)*t,10),top:parseInt(u.top+(w.top-u.top)*t,10),left:parseInt(u.left+(w.left-u.left)*t,10)};void 0!==w.opacity&&(e.opacity=t<.5?.5:t),n.css(e),f.css({width:e.width-2*C.padding,height:e.height-A*t-2*C.padding})},Q=function(){var t,e=o(),i={},n=C.autoScale,a=2*C.padding;return-1<C.width.toString().indexOf("%")?i.width=parseInt(e[0]*parseFloat(C.width)/100,10):i.width=C.width+a,-1<C.height.toString().indexOf("%")?i.height=parseInt(e[1]*parseFloat(C.height)/100,10):i.height=C.height+a,n&&(i.width>e[0]||i.height>e[1])&&("image"==m.type||"swf"==m.type?(t=C.width/C.height,i.width>e[0]&&(i.width=e[0],i.height=parseInt((i.width-a)/t+a,10)),i.height>e[1]&&(i.height=e[1],i.width=parseInt((i.height-a)*t+a,10))):(i.width=Math.min(i.width,e[0]),i.height=Math.min(i.height,e[1]))),i.top=parseInt(Math.max(e[3]-20,e[3]+.5*(e[1]-i.height-40)),10),i.left=parseInt(Math.max(e[2]-20,e[2]+.5*(e[0]-i.width-40)),10),i},W=function(){var t,e,i,n=!!m.orig&&c(m.orig);return n&&n.length?((i=(e=n).offset()).top+=parseInt(e.css("paddingTop"),10)||0,i.left+=parseInt(e.css("paddingLeft"),10)||0,i.top+=parseInt(e.css("border-top-width"),10)||0,i.left+=parseInt(e.css("border-left-width"),10)||0,i.width=e.width(),i.height=e.height(),{width:i.width+2*C.padding,height:i.height+2*C.padding,top:i.top-C.padding-20,left:i.left-C.padding-20}):(t=o(),{width:2*C.padding,height:2*C.padding,top:parseInt(t[3]+.5*t[1],10),left:parseInt(t[2]+.5*t[0],10)})};c.fn.fancybox=function(t){return c(this).length&&c(this).data("fancybox",c.extend({},t,c.metadata?c(this).metadata():{})).off("click.fb").on("click.fb",function(t){var e;t.preventDefault(),F||(F=!0,c(this).trigger("blur"),v=[],x=0,(e=c(this).attr("rel")||"")&&""!=e&&"nofollow"!==e?(v=c("a[rel="+e+"], area[rel="+e+"]"),x=v.index(this)):v.push(this),a())}),this},c.fancybox=function(t){var e;if(!F){if(F=!0,e=void 0!==arguments[1]?arguments[1]:{},v=[],x=parseInt(e.index,10)||0,Array.isArray(t)){for(var i=0,n=t.length;i<n;i++)"object"==typeof t[i]?c(t[i]).data("fancybox",c.extend({},e,t[i])):t[i]=c({}).data("fancybox",c.extend({content:t[i]},e));v=jQuery.merge(v,t)}else"object"==typeof t?c(t).data("fancybox",c.extend({},e,t)):t=c({}).data("fancybox",c.extend({content:t},e)),v.push(t);(x>v.length||x<0)&&(x=0),a()}},c.fancybox.showActivity=function(){clearInterval(y),l.show(),y=setInterval(t,66)},c.fancybox.hideActivity=function(){l.hide()},c.fancybox.next=function(){return c.fancybox.pos(I+1)},c.fancybox.prev=function(){return c.fancybox.pos(I-1)},c.fancybox.pos=function(t){F||(t=parseInt(t),v=k,-1<t&&t<k.length?(x=t,a()):C.cyclic&&1<k.length&&(x=t>=k.length?0:k.length-1,a()))},c.fancybox.cancel=function(){F||(F=!0,c.event.trigger("fancybox-cancel"),r(),m.onCancel(v,x,m),F=!1)},c.fancybox.close=function(){var t;function e(){i.fadeOut("fast"),p.empty().hide(),n.hide(),c.event.trigger("fancybox-cleanup"),f.empty(),C.onClosed(k,I,C),k=m=[],I=x=0,C=m={},F=!1}F||n.is(":hidden")||(F=!0,C&&!1===C.onCleanup(k,I,C)?F=!1:(r(),c(d.add(g).add(b)).hide(),c(f.add(i)).off(),c(window).off("resize.fb scroll.fb"),c(document).off("keydown.fb"),f.find("iframe").attr("src",P&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank"),"inside"!==C.titlePosition&&p.empty(),n.stop(),"elastic"==C.transitionOut?(u=W(),t=n.position(),w={top:t.top,left:t.left,width:n.width(),height:n.height()},C.opacity&&(w.opacity=1),p.empty().hide(),N.prop=1,c(N).animate({prop:0},{duration:C.speedOut,easing:C.easingOut,step:K,complete:e})):n.fadeOut("none"==C.transitionOut?0:C.speedOut,e)))},c.fancybox.resize=function(){i.is(":visible")&&i.css("height",c(document).height()),c.fancybox.center(!0)},c.fancybox.center=function(){var t,e;F||(e=!0===arguments[0]?1:0,t=o(),!e&&(n.width()>t[0]||n.height()>t[1])||n.stop().animate({top:parseInt(Math.max(t[3]-20,t[3]+.5*(t[1]-f.height()-40)-C.padding)),left:parseInt(Math.max(t[2]-20,t[2]+.5*(t[0]-f.width()-40)-C.padding))},"number"==typeof arguments[0]?arguments[0]:200))},c.fancybox.init=function(){c("#fancybox-wrap").length||(c("body").append(h=c('<div id="fancybox-tmp"></div>'),l=c('<div id="fancybox-loading"><div></div></div>'),i=c('<div id="fancybox-overlay"></div>'),n=c('<div id="fancybox-wrap"></div>')),(e=c('<div id="fancybox-outer"></div>').append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>').appendTo(n)).append(f=c('<div id="fancybox-content"></div>'),d=c('<a id="fancybox-close"></a>'),p=c('<div id="fancybox-title"></div>'),g=c('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),b=c('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')),d.on("click",c.fancybox.close),l.on("click",c.fancybox.cancel),g.on("click",function(t){t.preventDefault(),c.fancybox.prev()}),b.on("click",function(t){t.preventDefault(),c.fancybox.next()}),c.fn.mousewheel&&n.on("mousewheel.fb",function(t,e){F?t.preventDefault():0!=c(t.target).get(0).clientHeight&&c(t.target).get(0).scrollHeight!==c(t.target).get(0).clientHeight||(t.preventDefault(),c.fancybox[0<e?"prev":"next"]())}),c.support.opacity||n.addClass("fancybox-ie"),P&&(l.addClass("fancybox-ie6"),n.addClass("fancybox-ie6"),c('<iframe id="fancybox-hide-sel-frame" src="'+(/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank")+'" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(e)))},c.fn.fancybox.defaults={padding:10,margin:40,opacity:!1,modal:!1,cyclic:!1,scrolling:"auto",width:560,height:340,autoScale:!0,autoDimensions:!0,centerOnScroll:!1,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:!0,hideOnContentClick:!1,overlayShow:!0,overlayOpacity:.7,overlayColor:"#777",titleShow:!0,titlePosition:"float",titleFormat:null,titleFromAlt:!1,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing",easingOut:"swing",showCloseButton:!0,showNavArrows:!0,enableEscapeButton:!0,enableKeyboardNav:!0,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}},jQuery(function(t){t.fancybox.init()})}(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
products/photocrati_nextgen/modules/lightbox/static/fancybox/jquery.fancybox-1.3.4.pack.min.js CHANGED
@@ -1 +1 @@
1
- !function(t){var e,i,n,a,o,d,c,s,r,h,l,f,p,g=0,b={},y=[],u=0,w={},x=[],m=null,v=new Image,I=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,C=/[^\.]\.(swf)\s*$/i,k=1,O=0,j="",T=!1,S=t.extend(t("<div/>")[0],{prop:0}),A=t.browser.msie&&t.browser.version<7&&!window.XMLHttpRequest,D=function(){i.hide(),v.onerror=v.onload=null,m&&m.abort(),e.empty()},F=function(){!1===b.onError(y,g,b)?(i.hide(),T=!1):(b.titleShow=!1,b.width="auto",b.height="auto",e.html('<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>'),N())},E=function(){var n,a,o,c,s,r,h=y[g];if(D(),b=t.extend({},t.fn.fancybox.defaults,void 0===t(h).data("fancybox")?b:t(h).data("fancybox")),!1===(r=b.onStart(y,g,b)))T=!1;else if("object"==typeof r&&(b=t.extend(b,r)),o=b.title||(h.nodeName?t(h).attr("title"):h.title)||"",h.nodeName&&!b.orig&&(b.orig=t(h).children("img:first").length?t(h).children("img:first"):t(h)),""===o&&b.orig&&b.titleFromAlt&&(o=b.orig.attr("alt")),n=b.href||(h.nodeName?t(h).attr("href"):h.href)||null,(/^(?:javascript)/i.test(n)||"#"==n)&&(n=null),b.type?(a=b.type,n||(n=b.content)):b.content?a="html":n&&(a=n.match(I)?"image":n.match(C)?"swf":t(h).hasClass("iframe")?"iframe":0===n.indexOf("#")?"inline":"ajax"),a)switch("inline"==a&&(h=n.substr(n.indexOf("#")),a=t(h).length>0?"inline":"ajax"),b.type=a,b.href=n,b.title=o,b.autoDimensions&&("html"==b.type||"inline"==b.type||"ajax"==b.type?(b.width="auto",b.height="auto"):b.autoDimensions=!1),b.modal&&(b.overlayShow=!0,b.hideOnOverlayClick=!1,b.hideOnContentClick=!1,b.enableEscapeButton=!1,b.showCloseButton=!1),b.padding=parseInt(b.padding,10),b.margin=parseInt(b.margin,10),e.css("padding",b.padding+b.margin),t(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){t(this).replaceWith(d.children())}),a){case"html":e.html(b.content),N();break;case"inline":if(!0===t(h).parent().is("#fancybox-content")){T=!1;break}t('<div class="fancybox-inline-tmp" />').hide().insertBefore(t(h)).bind("fancybox-cleanup",function(){t(this).replaceWith(d.children())}).bind("fancybox-cancel",function(){t(this).replaceWith(e.children())}),t(h).appendTo(e),N();break;case"image":T=!1,t.fancybox.showActivity(),v=new Image,v.onerror=function(){F()},v.onload=function(){T=!0,v.onerror=v.onload=null,b.width=v.width,b.height=v.height,t("<img />").attr({id:"fancybox-img",src:v.src,alt:b.title}).appendTo(e),B()},v.src=n;break;case"swf":b.scrolling="no",c='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+b.width+'" height="'+b.height+'"><param name="movie" value="'+n+'"></param>',s="",t.each(b.swf,function(t,e){c+='<param name="'+t+'" value="'+e+'"></param>',s+=" "+t+'="'+e+'"'}),c+='<embed src="'+n+'" type="application/x-shockwave-flash" width="'+b.width+'" height="'+b.height+'"'+s+"></embed></object>",e.html(c),N();break;case"ajax":T=!1,t.fancybox.showActivity(),b.ajax.win=b.ajax.success,m=t.ajax(t.extend({},b.ajax,{url:n,data:b.ajax.data||{},error:function(t){t.status>0&&F()},success:function(t,a,o){if(200==("object"==typeof o?o:m).status){if("function"==typeof b.ajax.win){if(!1===(r=b.ajax.win(n,t,a,o)))return void i.hide();"string"!=typeof r&&"object"!=typeof r||(t=r)}e.html(t),N()}}}));break;case"iframe":B()}else F()},N=function(){var i=b.width,n=b.height;i=i.toString().indexOf("%")>-1?parseInt((t(window).width()-2*b.margin)*parseFloat(i)/100,10)+"px":"auto"==i?"auto":i+"px",n=n.toString().indexOf("%")>-1?parseInt((t(window).height()-2*b.margin)*parseFloat(n)/100,10)+"px":"auto"==n?"auto":n+"px",e.wrapInner('<div style="width:'+i+";height:"+n+";overflow: "+("auto"==b.scrolling?"auto":"yes"==b.scrolling?"scroll":"hidden")+';position:relative;"></div>'),b.width=e.width(),b.height=e.height(),B()},B=function(){var l,m;if(i.hide(),a.is(":visible")&&!1===w.onCleanup(x,u,w))t.event.trigger("fancybox-cancel"),T=!1;else{if(T=!0,t(d.add(n)).unbind(),t(window).unbind("resize.fb scroll.fb"),t(document).unbind("keydown.fb"),a.is(":visible")&&"outside"!==w.titlePosition&&a.css("height",a.height()),x=y,u=g,w=b,w.overlayShow?(n.css({"background-color":w.overlayColor,opacity:w.overlayOpacity,cursor:w.hideOnOverlayClick?"pointer":"auto",height:t(document).height()}),n.is(":visible")||(A&&t("select:not(#fancybox-tmp select)").filter(function(){return"hidden"!==this.style.visibility}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"}),n.show())):n.hide(),p=H(),j=w.title||"",O=0,s.empty().removeAttr("style").removeClass(),!1!==w.titleShow&&(l=t.isFunction(w.titleFormat)?w.titleFormat(j,x,u,w):!(!j||!j.length)&&("float"==w.titlePosition?'<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">'+j+'</td><td id="fancybox-title-float-right"></td></tr></table>':'<div id="fancybox-title-'+w.titlePosition+'">'+j+"</div>"),(j=l)&&""!==j))switch(s.addClass("fancybox-title-"+w.titlePosition).html(j).appendTo("body").show(),w.titlePosition){case"inside":s.css({width:p.width-2*w.padding,marginLeft:w.padding,marginRight:w.padding}),O=s.outerHeight(!0),s.appendTo(o),p.height+=O;break;case"over":s.css({marginLeft:w.padding,width:p.width-2*w.padding,bottom:w.padding}).appendTo(o);break;case"float":s.css("left",-1*parseInt((s.width()-p.width-40)/2,10)).appendTo(a);break;default:s.css({width:p.width-2*w.padding,paddingLeft:w.padding,paddingRight:w.padding}).appendTo(a)}s.hide(),a.is(":visible")?(t(c.add(r).add(h)).hide(),l=a.position(),f={top:l.top,left:l.left,width:a.width(),height:a.height()},m=f.width==p.width&&f.height==p.height,d.fadeTo(w.changeFade,.3,function(){var i=function(){d.html(e.contents()).fadeTo(w.changeFade,1,L)};t.event.trigger("fancybox-change"),d.empty().removeAttr("filter").css({"border-width":w.padding,width:p.width-2*w.padding,height:b.autoDimensions?"auto":p.height-O-2*w.padding}),m?i():(S.prop=0,t(S).animate({prop:1},{duration:w.changeSpeed,easing:w.easingChange,step:M,complete:i}))})):(a.removeAttr("style"),d.css("border-width",w.padding),"elastic"==w.transitionIn?(f=R(),d.html(e.contents()),a.show(),w.opacity&&(p.opacity=0),S.prop=0,t(S).animate({prop:1},{duration:w.speedIn,easing:w.easingIn,step:M,complete:L})):("inside"==w.titlePosition&&O>0&&s.show(),d.css({width:p.width-2*w.padding,height:b.autoDimensions?"auto":p.height-O-2*w.padding}).html(e.contents()),a.css(p).fadeIn("none"==w.transitionIn?0:w.speedIn,L)))}},P=function(){(w.enableEscapeButton||w.enableKeyboardNav)&&t(document).bind("keydown.fb",function(e){27==e.keyCode&&w.enableEscapeButton?(e.preventDefault(),t.fancybox.close()):37!=e.keyCode&&39!=e.keyCode||!w.enableKeyboardNav||"INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName||"SELECT"===e.target.tagName||(e.preventDefault(),t.fancybox[37==e.keyCode?"prev":"next"]())}),w.showNavArrows?((w.cyclic&&x.length>1||0!==u)&&r.show(),(w.cyclic&&x.length>1||u!=x.length-1)&&h.show()):(r.hide(),h.hide())},L=function(){t.support.opacity||(d.get(0).style.removeAttribute("filter"),a.get(0).style.removeAttribute("filter")),b.autoDimensions&&d.css("height","auto"),a.css("height","auto"),j&&j.length&&s.show(),w.showCloseButton&&c.show(),P(),w.hideOnContentClick&&d.bind("click",t.fancybox.close),w.hideOnOverlayClick&&n.bind("click",t.fancybox.close),t(window).bind("resize.fb",t.fancybox.resize),w.centerOnScroll&&t(window).bind("scroll.fb",t.fancybox.center),"iframe"==w.type&&t('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" '+(t.browser.msie?'allowtransparency="true""':"")+' scrolling="'+b.scrolling+'" src="'+w.href+'"></iframe>').appendTo(d),a.show(),T=!1,t.fancybox.center(),w.onComplete(x,u,w);var e,i;x.length-1>u&&void 0!==(e=x[u+1].href)&&e.match(I)&&(i=new Image,i.src=e),u>0&&void 0!==(e=x[u-1].href)&&e.match(I)&&(i=new Image,i.src=e)},M=function(t){var e={width:parseInt(f.width+(p.width-f.width)*t,10),height:parseInt(f.height+(p.height-f.height)*t,10),top:parseInt(f.top+(p.top-f.top)*t,10),left:parseInt(f.left+(p.left-f.left)*t,10)};void 0!==p.opacity&&(e.opacity=t<.5?.5:t),a.css(e),d.css({width:e.width-2*w.padding,height:e.height-O*t-2*w.padding})},z=function(){return[t(window).width()-2*w.margin,t(window).height()-2*w.margin,t(document).scrollLeft()+w.margin,t(document).scrollTop()+w.margin]},H=function(){var t=z(),e={},i=w.autoScale,n=2*w.padding;return e.width=w.width.toString().indexOf("%")>-1?parseInt(t[0]*parseFloat(w.width)/100,10):w.width+n,e.height=w.height.toString().indexOf("%")>-1?parseInt(t[1]*parseFloat(w.height)/100,10):w.height+n,i&&(e.width>t[0]||e.height>t[1])&&("image"==b.type||"swf"==b.type?(i=w.width/w.height,e.width>t[0]&&(e.width=t[0],e.height=parseInt((e.width-n)/i+n,10)),e.height>t[1]&&(e.height=t[1],e.width=parseInt((e.height-n)*i+n,10))):(e.width=Math.min(e.width,t[0]),e.height=Math.min(e.height,t[1]))),e.top=parseInt(Math.max(t[3]-20,t[3]+.5*(t[1]-e.height-40)),10),e.left=parseInt(Math.max(t[2]-20,t[2]+.5*(t[0]-e.width-40)),10),e},R=function(){var e=!!b.orig&&t(b.orig),i={};return e&&e.length?(i=e.offset(),i.top+=parseInt(e.css("paddingTop"),10)||0,i.left+=parseInt(e.css("paddingLeft"),10)||0,i.top+=parseInt(e.css("border-top-width"),10)||0,i.left+=parseInt(e.css("border-left-width"),10)||0,i.width=e.width(),i.height=e.height(),i={width:i.width+2*w.padding,height:i.height+2*w.padding,top:i.top-w.padding-20,left:i.left-w.padding-20}):(e=z(),i={width:2*w.padding,height:2*w.padding,top:parseInt(e[3]+.5*e[1],10),left:parseInt(e[2]+.5*e[0],10)}),i},K=function(){i.is(":visible")?(t("div",i).css("top",-40*k+"px"),k=(k+1)%12):clearInterval(l)};t.fn.fancybox=function(e){return t(this).length?(t(this).data("fancybox",t.extend({},e,t.metadata?t(this).metadata():{})).unbind("click.fb").bind("click.fb",function(e){e.preventDefault(),T||(T=!0,t(this).blur(),y=[],g=0,e=t(this).attr("rel")||"",e&&""!=e&&"nofollow"!==e?(y=t("a[rel="+e+"], area[rel="+e+"]"),g=y.index(this)):y.push(this),E())}),this):this},t.fancybox=function(e,i){var n;if(!T){if(T=!0,n=void 0!==i?i:{},y=[],g=parseInt(n.index,10)||0,t.isArray(e)){for(var a=0,o=e.length;a<o;a++)"object"==typeof e[a]?t(e[a]).data("fancybox",t.extend({},n,e[a])):e[a]=t({}).data("fancybox",t.extend({content:e[a]},n));y=jQuery.merge(y,e)}else"object"==typeof e?t(e).data("fancybox",t.extend({},n,e)):e=t({}).data("fancybox",t.extend({content:e},n)),y.push(e);(g>y.length||g<0)&&(g=0),E()}},t.fancybox.showActivity=function(){clearInterval(l),i.show(),l=setInterval(K,66)},t.fancybox.hideActivity=function(){i.hide()},t.fancybox.next=function(){return t.fancybox.pos(u+1)},t.fancybox.prev=function(){return t.fancybox.pos(u-1)},t.fancybox.pos=function(t){T||(t=parseInt(t),y=x,t>-1&&t<x.length?(g=t,E()):w.cyclic&&x.length>1&&(g=t>=x.length?0:x.length-1,E()))},t.fancybox.cancel=function(){T||(T=!0,t.event.trigger("fancybox-cancel"),D(),b.onCancel(y,g,b),T=!1)},t.fancybox.close=function(){function e(){n.fadeOut("fast"),s.empty().hide(),a.hide(),t.event.trigger("fancybox-cleanup"),d.empty(),w.onClosed(x,u,w),x=b=[],u=g=0,w=b={},T=!1}if(!T&&!a.is(":hidden"))if(T=!0,w&&!1===w.onCleanup(x,u,w))T=!1;else if(D(),t(c.add(r).add(h)).hide(),t(d.add(n)).unbind(),t(window).unbind("resize.fb scroll.fb"),t(document).unbind("keydown.fb"),d.find("iframe").attr("src",A&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank"),"inside"!==w.titlePosition&&s.empty(),a.stop(),"elastic"==w.transitionOut){f=R();var i=a.position();p={top:i.top,left:i.left,width:a.width(),height:a.height()},w.opacity&&(p.opacity=1),s.empty().hide(),S.prop=1,t(S).animate({prop:0},{duration:w.speedOut,easing:w.easingOut,step:M,complete:e})}else a.fadeOut("none"==w.transitionOut?0:w.speedOut,e)},t.fancybox.resize=function(){n.is(":visible")&&n.css("height",t(document).height()),t.fancybox.center(!0)},t.fancybox.center=function(t){var e,i;T||(i=!0===t?1:0,e=z(),!i&&(a.width()>e[0]||a.height()>e[1])||a.stop().animate({top:parseInt(Math.max(e[3]-20,e[3]+.5*(e[1]-d.height()-40)-w.padding)),left:parseInt(Math.max(e[2]-20,e[2]+.5*(e[0]-d.width()-40)-w.padding))},"number"==typeof t?t:200))},t.fancybox.init=function(){t("#fancybox-wrap").length||(t("body").append(e=t('<div id="fancybox-tmp"></div>'),i=t('<div id="fancybox-loading"><div></div></div>'),n=t('<div id="fancybox-overlay"></div>'),a=t('<div id="fancybox-wrap"></div>')),o=t('<div id="fancybox-outer"></div>').append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>').appendTo(a),o.append(d=t('<div id="fancybox-content"></div>'),c=t('<a id="fancybox-close"></a>'),s=t('<div id="fancybox-title"></div>'),r=t('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),h=t('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')),c.click(t.fancybox.close),i.click(t.fancybox.cancel),r.click(function(e){e.preventDefault(),t.fancybox.prev()}),h.click(function(e){e.preventDefault(),t.fancybox.next()}),t.fn.mousewheel&&a.bind("mousewheel.fb",function(e,i){T?e.preventDefault():0!=t(e.target).get(0).clientHeight&&t(e.target).get(0).scrollHeight!==t(e.target).get(0).clientHeight||(e.preventDefault(),t.fancybox[i>0?"prev":"next"]())}),t.support.opacity||a.addClass("fancybox-ie"),A&&(i.addClass("fancybox-ie6"),a.addClass("fancybox-ie6"),t('<iframe id="fancybox-hide-sel-frame" src="'+(/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank")+'" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(o)))},t.fn.fancybox.defaults={padding:10,margin:40,opacity:!1,modal:!1,cyclic:!1,scrolling:"auto",width:560,height:340,autoScale:!0,autoDimensions:!0,centerOnScroll:!1,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:!0,hideOnContentClick:!1,overlayShow:!0,overlayOpacity:.7,overlayColor:"#777",titleShow:!0,titlePosition:"float",titleFormat:null,titleFromAlt:!1,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing",easingOut:"swing",showCloseButton:!0,showNavArrows:!0,enableEscapeButton:!0,enableKeyboardNav:!0,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}},t(document).ready(function(){t.fancybox.init()})}(jQuery);
1
+ "use strict";function _typeof(t){"@babel/helpers - typeof";return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(t){function e(){c.hide(),j.onerror=j.onload=null,O&&O.abort(),d.empty()}function i(){if(!1===x.onError(v,m,x))return c.hide(),F=!1;x.titleShow=!1,x.width="auto",x.height="auto",d.html('<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>'),B()}function n(){var n,a,o,r,s,h,f=v[m];if(e(),x=t.extend({},t.fn.fancybox.defaults,void 0===t(f).data("fancybox")?x:t(f).data("fancybox")),!1!==(h=x.onStart(v,m,x)))if("object"==_typeof(h)&&(x=t.extend(x,h)),o=x.title||(f.nodeName?t(f).attr("title"):f.title)||"",f.nodeName&&!x.orig&&(x.orig=t(f).children("img:first").length?t(f).children("img:first"):t(f)),""===o&&x.orig&&x.titleFromAlt&&(o=x.orig.attr("alt")),n=x.href||(f.nodeName?t(f).attr("href"):f.href)||null,!/^(?:javascript)/i.test(n)&&"#"!=n||(n=null),x.type?(a=x.type,n=n||x.content):x.content?a="html":n&&(a=n.match(S)?"image":n.match(T)?"swf":t(f).hasClass("iframe")?"iframe":0===n.indexOf("#")?"inline":"ajax"),a)switch("inline"==a&&(f=n.substr(n.indexOf("#")),a=0<t(f).length?"inline":"ajax"),x.type=a,x.href=n,x.title=o,x.autoDimensions&&("html"==x.type||"inline"==x.type||"ajax"==x.type?(x.width="auto",x.height="auto"):x.autoDimensions=!1),x.modal&&(x.overlayShow=!0,x.hideOnOverlayClick=!1,x.hideOnContentClick=!1,x.enableEscapeButton=!1,x.showCloseButton=!1),x.padding=parseInt(x.padding,10),x.margin=parseInt(x.margin,10),d.css("padding",x.padding+x.margin),t(".fancybox-inline-tmp").off("fancybox-cancel").on("fancybox-change",function(){t(this).replaceWith(l.children())}),a){case"html":d.html(x.content),B();break;case"inline":if(!0===t(f).parent().is("#fancybox-content"))return F=!1,0;t('<div class="fancybox-inline-tmp" />').hide().insertBefore(t(f)).on("fancybox-cleanup",function(){t(this).replaceWith(l.children())}).on("fancybox-cancel",function(){t(this).replaceWith(d.children())}),t(f).appendTo(d),B();break;case"image":F=!1,t.fancybox.showActivity(),(j=new Image).onerror=function(){i()},j.onload=function(){F=!0,j.onerror=j.onload=null,L()},j.src=n;break;case"swf":x.scrolling="no",r='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+x.width+'" height="'+x.height+'"><param name="movie" value="'+n+'"></param>',s="",t.each(x.swf,function(t,e){r+='<param name="'+t+'" value="'+e+'"></param>',s+=" "+t+'="'+e+'"'}),r+='<embed src="'+n+'" type="application/x-shockwave-flash" width="'+x.width+'" height="'+x.height+'"'+s+"></embed></object>",d.html(r),B();break;case"ajax":F=!1,t.fancybox.showActivity(),x.ajax.win=x.ajax.success,O=t.ajax(t.extend({},x.ajax,{url:n,data:x.ajax.data||{},error:function(t,e,n){0<t.status&&i()},success:function(t,e,i){if(200==("object"==_typeof(i)?i:O).status){if("function"==typeof x.ajax.win){if(!1===(h=x.ajax.win(n,t,e,i)))return void c.hide();"string"!=typeof h&&"object"!=_typeof(h)||(t=h)}d.html(t),B()}}}));break;case"iframe":M()}else i();else F=!1}function a(){return[t(window).width()-2*C.margin,t(window).height()-2*C.margin,t(document).scrollLeft()+C.margin,t(document).scrollTop()+C.margin]}function o(){c.is(":visible")?(t("div",c).css("top",-40*D+"px"),D=(D+1)%12):clearInterval(b)}var d,c,r,s,h,l,f,p,g,y,b,u,w,m=0,x={},v=[],I=0,C={},k=[],O=null,j=new Image,S=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,T=/[^\.]\.(swf)\s*$/i,D=1,A=0,E="",F=!1,N=t.extend(t("<div/>")[0],{prop:0}),P=t.browser.msie&&t.browser.version<7&&!window.XMLHttpRequest,B=function(){var e=x.width,i=x.height,e=-1<e.toString().indexOf("%")?parseInt((t(window).width()-2*x.margin)*parseFloat(e)/100,10)+"px":"auto"==e?"auto":e+"px",i=-1<i.toString().indexOf("%")?parseInt((t(window).height()-2*x.margin)*parseFloat(i)/100,10)+"px":"auto"==i?"auto":i+"px";d.wrapInner('<div style="width:'+e+";height:"+i+";overflow: "+("auto"==x.scrolling?"auto":"yes"==x.scrolling?"scroll":"hidden")+';position:relative;"></div>'),x.width=d.width(),x.height=d.height(),M()},L=function(){x.width=j.width,x.height=j.height,t("<img />").attr({id:"fancybox-img",src:j.src,alt:x.title}).appendTo(d),M()},M=function(){var e,i;return c.hide(),s.is(":visible")&&!1===C.onCleanup(k,I,C)?(t.event.trigger("fancybox-cancel"),void(F=!1)):(F=!0,t(l.add(r)).off(),t(window).off("resize.fb scroll.fb"),t(document).off("keydown.fb"),s.is(":visible")&&"outside"!==C.titlePosition&&s.css("height",s.height()),k=v,I=m,(C=x).overlayShow?(r.css({"background-color":C.overlayColor,opacity:C.overlayOpacity,cursor:C.hideOnOverlayClick?"pointer":"auto",height:t(document).height()}),r.is(":visible")||(P&&t("select:not(#fancybox-tmp select)").filter(function(){return"hidden"!==this.style.visibility}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"}),r.show())):r.hide(),w=K(),_(),s.is(":visible")?(t(f.add(g).add(y)).hide(),e=s.position(),u={top:e.top,left:e.left,width:s.width(),height:s.height()},i=u.width==w.width&&u.height==w.height,void l.fadeTo(C.changeFade,.3,function(){function e(){l.html(d.contents()).fadeTo(C.changeFade,1,z)}t.event.trigger("fancybox-change"),l.empty().removeAttr("filter").css({"border-width":C.padding,width:w.width-2*C.padding,height:x.autoDimensions?"auto":w.height-A-2*C.padding}),i?e():(N.prop=0,t(N).animate({prop:1},{duration:C.changeSpeed,easing:C.easingChange,step:R,complete:e}))})):(s.removeAttr("style"),l.css("border-width",C.padding),"elastic"==C.transitionIn?(u=Q(),l.html(d.contents()),s.show(),C.opacity&&(w.opacity=0),N.prop=0,void t(N).animate({prop:1},{duration:C.speedIn,easing:C.easingIn,step:R,complete:z})):("inside"==C.titlePosition&&0<A&&p.show(),l.css({width:w.width-2*C.padding,height:x.autoDimensions?"auto":w.height-A-2*C.padding}).html(d.contents()),void s.css(w).fadeIn("none"==C.transitionIn?0:C.speedIn,z))))},_=function(){if(E=C.title||"",A=0,p.empty().removeAttr("style").removeClass(),!1!==C.titleShow){var t;if((E="function"==typeof C.titleFormat?C.titleFormat(E,k,I,C):!(!(t=E)||!t.length)&&("float"==C.titlePosition?'<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">'+t+'</td><td id="fancybox-title-float-right"></td></tr></table>':'<div id="fancybox-title-'+C.titlePosition+'">'+t+"</div>"))&&""!==E){switch(p.addClass("fancybox-title-"+C.titlePosition).html(E).appendTo("body").show(),C.titlePosition){case"inside":p.css({width:w.width-2*C.padding,marginLeft:C.padding,marginRight:C.padding}),A=p.outerHeight(!0),p.appendTo(h),w.height+=A;break;case"over":p.css({marginLeft:C.padding,width:w.width-2*C.padding,bottom:C.padding}).appendTo(h);break;case"float":p.css("left",-1*parseInt((p.width()-w.width-40)/2,10)).appendTo(s);break;default:p.css({width:w.width-2*C.padding,paddingLeft:C.padding,paddingRight:C.padding}).appendTo(s)}p.hide()}else p.hide()}else p.hide()},z=function(){t.support.opacity||(l.get(0).style.removeProperty("filter"),s.get(0).style.removeProperty("filter")),x.autoDimensions&&l.css("height","auto"),s.css("height","auto"),E&&E.length&&p.show(),C.showCloseButton&&f.show(),function(){if((C.enableEscapeButton||C.enableKeyboardNav)&&t(document).on("keydown.fb",function(e){27==e.keyCode&&C.enableEscapeButton?(e.preventDefault(),t.fancybox.close()):37!=e.keyCode&&39!=e.keyCode||!C.enableKeyboardNav||"INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName||"SELECT"===e.target.tagName||(e.preventDefault(),t.fancybox[37==e.keyCode?"prev":"next"]())}),!C.showNavArrows)return g.hide(),y.hide();(C.cyclic&&1<k.length||0!==I)&&g.show(),(C.cyclic&&1<k.length||I!=k.length-1)&&y.show()}(),C.hideOnContentClick&&l.on("click",t.fancybox.close),C.hideOnOverlayClick&&r.on("click",t.fancybox.close),t(window).on("resize.fb",t.fancybox.resize),C.centerOnScroll&&t(window).on("scroll.fb",t.fancybox.center),"iframe"==C.type&&t('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" '+(t.browser.msie?'allowtransparency="true""':"")+' scrolling="'+x.scrolling+'" src="'+C.href+'"></iframe>').appendTo(l),s.show(),F=!1,t.fancybox.center(),C.onComplete(k,I,C),H()},H=function(){var t;k.length-1>I&&void 0!==(t=k[I+1].href)&&t.match(S)&&((new Image).src=t),0<I&&void 0!==(t=k[I-1].href)&&t.match(S)&&((new Image).src=t)},R=function(t){var e={width:parseInt(u.width+(w.width-u.width)*t,10),height:parseInt(u.height+(w.height-u.height)*t,10),top:parseInt(u.top+(w.top-u.top)*t,10),left:parseInt(u.left+(w.left-u.left)*t,10)};void 0!==w.opacity&&(e.opacity=t<.5?.5:t),s.css(e),l.css({width:e.width-2*C.padding,height:e.height-A*t-2*C.padding})},K=function(){var t,e=a(),i={},n=C.autoScale,o=2*C.padding;return-1<C.width.toString().indexOf("%")?i.width=parseInt(e[0]*parseFloat(C.width)/100,10):i.width=C.width+o,-1<C.height.toString().indexOf("%")?i.height=parseInt(e[1]*parseFloat(C.height)/100,10):i.height=C.height+o,n&&(i.width>e[0]||i.height>e[1])&&("image"==x.type||"swf"==x.type?(t=C.width/C.height,i.width>e[0]&&(i.width=e[0],i.height=parseInt((i.width-o)/t+o,10)),i.height>e[1]&&(i.height=e[1],i.width=parseInt((i.height-o)*t+o,10))):(i.width=Math.min(i.width,e[0]),i.height=Math.min(i.height,e[1]))),i.top=parseInt(Math.max(e[3]-20,e[3]+.5*(e[1]-i.height-40)),10),i.left=parseInt(Math.max(e[2]-20,e[2]+.5*(e[0]-i.width-40)),10),i},Q=function(){var e,i,n,o=!!x.orig&&t(x.orig);return o&&o.length?((n=(i=o).offset()).top+=parseInt(i.css("paddingTop"),10)||0,n.left+=parseInt(i.css("paddingLeft"),10)||0,n.top+=parseInt(i.css("border-top-width"),10)||0,n.left+=parseInt(i.css("border-left-width"),10)||0,n.width=i.width(),n.height=i.height(),{width:n.width+2*C.padding,height:n.height+2*C.padding,top:n.top-C.padding-20,left:n.left-C.padding-20}):(e=a(),{width:2*C.padding,height:2*C.padding,top:parseInt(e[3]+.5*e[1],10),left:parseInt(e[2]+.5*e[0],10)})};t.fn.fancybox=function(e){return t(this).length&&t(this).data("fancybox",t.extend({},e,t.metadata?t(this).metadata():{})).off("click.fb").on("click.fb",function(e){var i;e.preventDefault(),F||(F=!0,t(this).trigger("blur"),v=[],m=0,(i=t(this).attr("rel")||"")&&""!=i&&"nofollow"!==i?(v=t("a[rel="+i+"], area[rel="+i+"]"),m=v.index(this)):v.push(this),n())}),this},t.fancybox=function(e){var i;if(!F){if(F=!0,i=void 0!==arguments[1]?arguments[1]:{},v=[],m=parseInt(i.index,10)||0,Array.isArray(e)){for(var a=0,o=e.length;a<o;a++)"object"==_typeof(e[a])?t(e[a]).data("fancybox",t.extend({},i,e[a])):e[a]=t({}).data("fancybox",t.extend({content:e[a]},i));v=jQuery.merge(v,e)}else"object"==_typeof(e)?t(e).data("fancybox",t.extend({},i,e)):e=t({}).data("fancybox",t.extend({content:e},i)),v.push(e);(m>v.length||m<0)&&(m=0),n()}},t.fancybox.showActivity=function(){clearInterval(b),c.show(),b=setInterval(o,66)},t.fancybox.hideActivity=function(){c.hide()},t.fancybox.next=function(){return t.fancybox.pos(I+1)},t.fancybox.prev=function(){return t.fancybox.pos(I-1)},t.fancybox.pos=function(t){F||(t=parseInt(t),v=k,-1<t&&t<k.length?(m=t,n()):C.cyclic&&1<k.length&&(m=t>=k.length?0:k.length-1,n()))},t.fancybox.cancel=function(){F||(F=!0,t.event.trigger("fancybox-cancel"),e(),x.onCancel(v,m,x),F=!1)},t.fancybox.close=function(){function i(){r.fadeOut("fast"),p.empty().hide(),s.hide(),t.event.trigger("fancybox-cleanup"),l.empty(),C.onClosed(k,I,C),k=x=[],I=m=0,C=x={},F=!1}var n;F||s.is(":hidden")||(F=!0,C&&!1===C.onCleanup(k,I,C)?F=!1:(e(),t(f.add(g).add(y)).hide(),t(l.add(r)).off(),t(window).off("resize.fb scroll.fb"),t(document).off("keydown.fb"),l.find("iframe").attr("src",P&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank"),"inside"!==C.titlePosition&&p.empty(),s.stop(),"elastic"==C.transitionOut?(u=Q(),n=s.position(),w={top:n.top,left:n.left,width:s.width(),height:s.height()},C.opacity&&(w.opacity=1),p.empty().hide(),N.prop=1,t(N).animate({prop:0},{duration:C.speedOut,easing:C.easingOut,step:R,complete:i})):s.fadeOut("none"==C.transitionOut?0:C.speedOut,i)))},t.fancybox.resize=function(){r.is(":visible")&&r.css("height",t(document).height()),t.fancybox.center(!0)},t.fancybox.center=function(){var t,e;F||(e=!0===arguments[0]?1:0,t=a(),!e&&(s.width()>t[0]||s.height()>t[1])||s.stop().animate({top:parseInt(Math.max(t[3]-20,t[3]+.5*(t[1]-l.height()-40)-C.padding)),left:parseInt(Math.max(t[2]-20,t[2]+.5*(t[0]-l.width()-40)-C.padding))},"number"==typeof arguments[0]?arguments[0]:200))},t.fancybox.init=function(){t("#fancybox-wrap").length||(t("body").append(d=t('<div id="fancybox-tmp"></div>'),c=t('<div id="fancybox-loading"><div></div></div>'),r=t('<div id="fancybox-overlay"></div>'),s=t('<div id="fancybox-wrap"></div>')),(h=t('<div id="fancybox-outer"></div>').append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>').appendTo(s)).append(l=t('<div id="fancybox-content"></div>'),f=t('<a id="fancybox-close"></a>'),p=t('<div id="fancybox-title"></div>'),g=t('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),y=t('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')),f.on("click",t.fancybox.close),c.on("click",t.fancybox.cancel),g.on("click",function(e){e.preventDefault(),t.fancybox.prev()}),y.on("click",function(e){e.preventDefault(),t.fancybox.next()}),t.fn.mousewheel&&s.on("mousewheel.fb",function(e,i){F?e.preventDefault():0!=t(e.target).get(0).clientHeight&&t(e.target).get(0).scrollHeight!==t(e.target).get(0).clientHeight||(e.preventDefault(),t.fancybox[0<i?"prev":"next"]())}),t.support.opacity||s.addClass("fancybox-ie"),P&&(c.addClass("fancybox-ie6"),s.addClass("fancybox-ie6"),t('<iframe id="fancybox-hide-sel-frame" src="'+(/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank")+'" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(h)))},t.fn.fancybox.defaults={padding:10,margin:40,opacity:!1,modal:!1,cyclic:!1,scrolling:"auto",width:560,height:340,autoScale:!0,autoDimensions:!0,centerOnScroll:!1,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:!0,hideOnContentClick:!1,overlayShow:!0,overlayOpacity:.7,overlayColor:"#777",titleShow:!0,titlePosition:"float",titleFormat:null,titleFromAlt:!1,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing",easingOut:"swing",showCloseButton:!0,showNavArrows:!0,enableEscapeButton:!0,enableKeyboardNav:!0,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}},jQuery(function(t){t.fancybox.init()})}(jQuery);
products/photocrati_nextgen/modules/lightbox/static/fancybox/jquery.mousewheel-3.0.4.pack.js CHANGED
@@ -11,4 +11,4 @@
11
  */
12
 
13
  (function(d){function g(a){var b=a||window.event,i=[].slice.call(arguments,1),c=0,h=0,e=0;a=d.event.fix(b);a.type="mousewheel";if(a.wheelDelta)c=a.wheelDelta/120;if(a.detail)c=-a.detail/3;e=c;if(b.axis!==undefined&&b.axis===b.HORIZONTAL_AXIS){e=0;h=-1*c}if(b.wheelDeltaY!==undefined)e=b.wheelDeltaY/120;if(b.wheelDeltaX!==undefined)h=-1*b.wheelDeltaX/120;i.unshift(a,c,h,e);return d.event.handle.apply(this,i)}var f=["DOMMouseScroll","mousewheel"];d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=
14
- f.length;a;)this.addEventListener(f[--a],g,false);else this.onmousewheel=g},teardown:function(){if(this.removeEventListener)for(var a=f.length;a;)this.removeEventListener(f[--a],g,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);
11
  */
12
 
13
  (function(d){function g(a){var b=a||window.event,i=[].slice.call(arguments,1),c=0,h=0,e=0;a=d.event.fix(b);a.type="mousewheel";if(a.wheelDelta)c=a.wheelDelta/120;if(a.detail)c=-a.detail/3;e=c;if(b.axis!==undefined&&b.axis===b.HORIZONTAL_AXIS){e=0;h=-1*c}if(b.wheelDeltaY!==undefined)e=b.wheelDeltaY/120;if(b.wheelDeltaX!==undefined)h=-1*b.wheelDeltaX/120;i.unshift(a,c,h,e);return d.event.handle.apply(this,i)}var f=["DOMMouseScroll","mousewheel"];d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=
14
+ f.length;a;)this.addEventListener(f[--a],g,false);else this.onmousewheel=g},teardown:function(){if(this.removeEventListener)for(var a=f.length;a;)this.removeEventListener(f[--a],g,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.on("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.off("mousewheel",a)}})})(jQuery);
products/photocrati_nextgen/modules/lightbox/static/fancybox/jquery.mousewheel-3.0.4.pack.min.js CHANGED
@@ -1 +1 @@
1
- !function(e){function t(t){var n=t||window.event,l=[].slice.call(arguments,1),i=0,s=0,h=0;return t=e.event.fix(n),t.type="mousewheel",t.wheelDelta&&(i=t.wheelDelta/120),t.detail&&(i=-t.detail/3),h=i,void 0!==n.axis&&n.axis===n.HORIZONTAL_AXIS&&(h=0,s=-1*i),void 0!==n.wheelDeltaY&&(h=n.wheelDeltaY/120),void 0!==n.wheelDeltaX&&(s=-1*n.wheelDeltaX/120),l.unshift(t,i,s,h),e.event.handle.apply(this,l)}var n=["DOMMouseScroll","mousewheel"];e.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var e=n.length;e;)this.addEventListener(n[--e],t,!1);else this.onmousewheel=t},teardown:function(){if(this.removeEventListener)for(var e=n.length;e;)this.removeEventListener(n[--e],t,!1);else this.onmousewheel=null}},e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}(jQuery);
1
+ "use strict";!function(e){function t(t){var n=t||window.event,l=[].slice.call(arguments,1),i=0,s=0,o=0;return t=e.event.fix(n),t.type="mousewheel",t.wheelDelta&&(i=t.wheelDelta/120),t.detail&&(i=-t.detail/3),o=i,void 0!==n.axis&&n.axis===n.HORIZONTAL_AXIS&&(o=0,s=-1*i),void 0!==n.wheelDeltaY&&(o=n.wheelDeltaY/120),void 0!==n.wheelDeltaX&&(s=-1*n.wheelDeltaX/120),l.unshift(t,i,s,o),e.event.handle.apply(this,l)}var n=["DOMMouseScroll","mousewheel"];e.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var e=n.length;e;)this.addEventListener(n[--e],t,!1);else this.onmousewheel=t},teardown:function(){if(this.removeEventListener)for(var e=n.length;e;)this.removeEventListener(n[--e],t,!1);else this.onmousewheel=null}},e.fn.extend({mousewheel:function(e){return e?this.on("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.off("mousewheel",e)}})}(jQuery);
products/photocrati_nextgen/modules/lightbox/static/fancybox/nextgen_fancybox_init.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(n){var e=function(){nextgen_lightbox_filter_selector(n,n(".ngg-fancybox")).fancybox({titlePosition:"inside",onComplete:function(){n("#fancybox-wrap").css("z-index",1e4)}})};n(window).on("refreshed",e),e()});
1
+ "use strict";jQuery(function(n){var e=function(){nextgen_lightbox_filter_selector(n,n(".ngg-fancybox")).fancybox({titlePosition:"inside",onComplete:function(){n("#fancybox-wrap").css("z-index",1e4)}})};n(window).on("refreshed",e),e()});
products/photocrati_nextgen/modules/lightbox/static/lightbox_context.min.js CHANGED
@@ -1 +1 @@
1
- function nextgen_lightbox_filter_selector(e,t){if(nextgen_lightbox_settings&&nextgen_lightbox_settings.context){var n=nextgen_lightbox_settings.context;"all_images"==n?t=t.add(e("a > img").parent()):"all_images_direct"==n?t=t.add(e("a[href] > img").parent().filter(function(){var t=e(this).attr("href").toLowerCase(),n=t.substring(t.length-3),g=t.substring(t.length-4);return"jpg"==n||"gif"==n||"png"==n||"tiff"==g||"jpeg"==g})):"nextgen_and_wp_images"==n&&(t=t.add(e('a > img[class*="wp-image-"]').parent())),t=t.not(".gallery_link"),t=t.not(".use_imagebrowser_effect")}return t}
1
+ "use strict";function nextgen_lightbox_filter_selector(t,e){if(nextgen_lightbox_settings&&nextgen_lightbox_settings.context){var n=nextgen_lightbox_settings.context;"all_images"==n?e=e.add(t("a > img").parent()):"all_images_direct"==n?e=e.add(t("a[href] > img").parent().filter(function(){var e=t(this).attr("href").toLowerCase(),n=e.substring(e.length-3),g=e.substring(e.length-4);return"jpg"==n||"gif"==n||"png"==n||"tiff"==g||"jpeg"==g})):"nextgen_and_wp_images"==n&&(e=e.add(t('a > img[class*="wp-image-"]').parent())),e=e.not(".gallery_link"),e=e.not(".use_imagebrowser_effect")}return e}
products/photocrati_nextgen/modules/lightbox/static/shutter/nextgen_shutter.js CHANGED
@@ -1,4 +1,5 @@
1
  jQuery(function($) {
 
2
  var callback = function() {
3
  var selector = nextgen_lightbox_filter_selector($, $([]));
4
  selector.addClass('shutterset');
@@ -9,7 +10,9 @@ jQuery(function($) {
9
  };
10
  shutterReloaded.init();
11
  };
12
- $(this).bind('refreshed', callback);
 
 
13
 
14
  var flag = 'shutter';
15
 
1
  jQuery(function($) {
2
+
3
  var callback = function() {
4
  var selector = nextgen_lightbox_filter_selector($, $([]));
5
  selector.addClass('shutterset');
10
  };
11
  shutterReloaded.init();
12
  };
13
+
14
+
15
+ $(document).on('refreshed', callback);
16
 
17
  var flag = 'shutter';
18
 
products/photocrati_nextgen/modules/lightbox/static/shutter/nextgen_shutter.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(t){var e=function(){nextgen_lightbox_filter_selector(t,t([])).addClass("shutterset"),window.shutterSettings={imageCount:!0,msgLoading:nextgen_shutter_i18n.msgLoading,msgClose:nextgen_shutter_i18n.msgClose},shutterReloaded.init()};t(this).bind("refreshed",e);void 0===t(window).data("shutter")&&(t(window).data("shutter",!0),e())});
1
+ "use strict";jQuery(function(t){var e=function(){nextgen_lightbox_filter_selector(t,t([])).addClass("shutterset"),window.shutterSettings={imageCount:!0,msgLoading:nextgen_shutter_i18n.msgLoading,msgClose:nextgen_shutter_i18n.msgClose},shutterReloaded.init()};t(document).on("refreshed",e);void 0===t(window).data("shutter")&&(t(window).data("shutter",!0),e())});
products/photocrati_nextgen/modules/lightbox/static/shutter/shutter.js CHANGED
@@ -306,7 +306,13 @@ shutterReloaded = {
306
  shutterOnload = function(){shutterReloaded.init('sh');};
307
 
308
  if (typeof shutterOnload == 'function') {
309
- if ('undefined' != typeof jQuery) jQuery(document).ready(function(){shutterOnload();});
 
 
 
 
 
 
310
  else if( typeof window.onload != 'function' ) window.onload = shutterOnload;
311
  else {oldonld = window.onload;window.onload = function(){if(oldonld){oldonld();};shutterOnload();}};
312
  }
306
  shutterOnload = function(){shutterReloaded.init('sh');};
307
 
308
  if (typeof shutterOnload == 'function') {
309
+ if ('undefined' != typeof jQuery) {
310
+ (function ($) {
311
+ $(function () {
312
+ shutterOnload();
313
+ });
314
+ })(jQuery);
315
+ }
316
  else if( typeof window.onload != 'function' ) window.onload = shutterOnload;
317
  else {oldonld = window.onload;window.onload = function(){if(oldonld){oldonld();};shutterOnload();}};
318
  }
products/photocrati_nextgen/modules/lightbox/static/shutter/shutter.min.js CHANGED
@@ -1 +1 @@
1
- shutterReloaded={I:function(e){return document.getElementById(e)},settings:function(){var e=this,t=shutterSettings;e.imageCount=t.imageCount||0,e.msgLoading=t.msgLoading||"L O A D I N G",e.msgClose=t.msgClose||"Click to Close"},init:function(e){var t,i,n,s,o,d,l,h=this;for(shutterLinks={},shutterSets={},"object"!=typeof shutterSettings&&(shutterSettings={}),h.mobileOS="undefined"!=typeof orientation,s=0;s<document.links.length;s++)t=document.links[s],".jpg"!=(n=-1==t.href.indexOf("?")?t.href.slice(-4).toLowerCase():t.href.substring(0,t.href.indexOf("?")).slice(-4).toLowerCase())&&".png"!=n&&".gif"!=n&&"jpeg"!=n||"sh"==e&&-1==t.className.toLowerCase().indexOf("shutter")||"lb"==e&&-1==t.rel.toLowerCase().indexOf("lightbox")||(-1!=t.className.toLowerCase().indexOf("shutterset")?o=t.className.replace(/\s/g,"_"):-1!=t.rel.toLowerCase().indexOf("lightbox[")?o=t.rel.replace(/\s/g,"_"):(o=0,d=-1),o&&(shutterSets[o]||(shutterSets[o]=[]),d=shutterSets[o].push(s)),l=t.href.slice(t.href.lastIndexOf("/")+1),i=t.title&&t.title!=l?t.title:"",shutterLinks[s]={link:t.href,num:d,set:o,title:i},t.onclick=new Function('shutterReloaded.make("'+s+'");return false;'));h.settings()},make:function(e,t){var i,n,s,o,d,l,h,r,a=this,u="",m="";if(a.Top||(void 0!==window.pageYOffset?a.Top=window.pageYOffset:a.Top=document.documentElement.scrollTop>0?document.documentElement.scrollTop:document.body.scrollTop),window.parent){var c=window.parent;if(void 0!==c.ngg_get_measures_for_frame){var g=c.ngg_get_measures_for_frame(window.frameElement);a.Top=a.Top+g.scrollTop}}void 0===a.pgHeight&&(a.pgHeight=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight)),a.FS=t?t>0?1:0:shutterSettings.FS||0,a.resizing&&(a.resizing=null),1==a.mobileOS?window.onorientationchange=new Function('shutterReloaded.resize("'+e+'");'):window.onresize=new Function('shutterReloaded.resize("'+e+'");'),document.documentElement.style.overflowX="hidden",a.VP||(a._viewPort(),a.VP=!0),(l=a.I("shShutter"))||(l=document.createElement("div"),l.setAttribute("id","shShutter"),document.getElementsByTagName("body")[0].appendChild(l),a.hideTags()),(d=a.I("shDisplay"))||(d=document.createElement("div"),d.setAttribute("id","shDisplay"),d.style.top=a.Top+"px",document.getElementsByTagName("body")[0].appendChild(d)),l.style.height=a.pgHeight+"px";var w=a.textBtns?" | ":"";shutterLinks[e].num>1?(i=shutterSets[shutterLinks[e].set][shutterLinks[e].num-2],u='<a href="#" id="prevpic" onclick="shutterReloaded.make('+i+');return false">&lt;&lt;</a>'+w,s=new Image,s.src=shutterLinks[i].link):u="",-1!=shutterLinks[e].num&&shutterLinks[e].num<shutterSets[shutterLinks[e].set].length?(n=shutterSets[shutterLinks[e].set][shutterLinks[e].num],m='<a href="#" id="nextpic" onclick="shutterReloaded.make('+n+');return false">&gt;&gt;</a>'+w,o=new Image,o.src=shutterLinks[n].link):m="",h=shutterLinks[e].num>0&&a.imageCount?'<div id="shCount">&nbsp;(&nbsp;'+shutterLinks[e].num+"&nbsp;/&nbsp;"+shutterSets[shutterLinks[e].set].length+"&nbsp;)&nbsp;</div>":"",r='<div id="shTitle"><div id="shPrev">'+u+'</div><div id="shNext">'+m+'</div><div id="shName">'+shutterLinks[e].title+"</div>"+h+"</div>",d.innerHTML='<div id="shWrap"><img src="'+shutterLinks[e].link+'" id="shTopImg" title="'+a.msgClose+'" onload="shutterReloaded.showImg();" onclick="shutterReloaded.hideShutter();" />'+r+"</div>",document.onkeydown=function(e){shutterReloaded.handleArrowKeys(e)},document.getElementById("shTopImg").src=shutterLinks[e].link,window.setTimeout(function(){shutterReloaded.loading()},1e3)},loading:function(){var e,t,i,n=this;(i=n.I("shWrap"))&&"visible"==i.style.visibility||(e=n.I("shShutter"))&&(n.I("shWaitBar")||(t=document.createElement("div"),t.setAttribute("id","shWaitBar"),t.style.top=n.Top+"px",t.style.marginTop=n.pgHeight/2+"px",t.innerHTML=n.msgLoading,e.appendChild(t)))},hideShutter:function(){var e,t,i=this;(e=i.I("shDisplay"))&&e.parentNode.removeChild(e),(t=i.I("shShutter"))&&t.parentNode.removeChild(t),i.hideTags(!0),window.scrollTo(0,i.Top),window.onresize=i.FS=i.Top=i.VP=null,document.documentElement.style.overflowX="",document.onkeydown=null},resize:function(e){var t=this;if(!t.resizing&&t.I("shShutter")){var i=t.I("shWrap");i&&(i.style.visibility="hidden"),window.setTimeout(function(){shutterReloaded.resizing=null},500),window.setTimeout(new Function('shutterReloaded.VP = null;shutterReloaded.make("'+e+'");'),100),t.resizing=!0}},_viewPort:function(){var e=this,t=window.innerHeight?window.innerHeight:0,i=document.body.clientHeight?document.body.clientHeight:0,n=document.documentElement?document.documentElement.clientHeight:0;t>0?(e.wHeight=t-i>1&&t-i<30?i:t,e.wHeight=e.wHeight-n>1&&e.wHeight-n<30?n:e.wHeight):e.wHeight=n>0?n:i,document.getElementsByTagName("body")[0].className.match(/admin-bar/)&&null!==document.getElementById("wpadminbar")&&(e.wHeight=e.wHeight-document.getElementById("wpadminbar").offsetHeight);var s=document.documentElement?document.documentElement.clientWidth:0,o=window.innerWidth?window.innerWidth:document.body.clientWidth;e.wWidth=s>1?s:o},showImg:function(){var e,t,i,n,s,o,d=this,l=d.I("shShutter"),h=d.I("shDisplay"),r=d.I("shTopImg"),a=d.I("shTitle");d.I("shNavBar");if(l&&(!(e=d.I("shWrap"))||"visible"!=e.style.visibility)){if((t=d.I("shWaitBar"))&&t.parentNode.removeChild(t),l.style.width=h.style.width="",a.style.width=r.width-4+"px",i=d.wHeight-50,window.parent){var u=window.parent;if(void 0!==u.ngg_get_measures_for_frame){i=u.ngg_get_measures_for_frame(window.frameElement).scrollHeight-50}}d.FS?(r.width>d.wWidth-10&&(l.style.width=h.style.width=r.width+10+"px"),document.documentElement.style.overflowX=""):(window.scrollTo(0,d.Top),r.height>i&&(r.width=r.width*(i/r.height),r.height=i,1),r.width>d.wWidth-16&&(r.height=r.height*((d.wWidth-16)/r.width),r.width=d.wWidth-16,1),a.style.width=r.width-4+"px"),n=d.Top+r.height+10,n>d.pgHeight&&(l.style.height=n+"px"),window.scrollTo(0,d.Top),s=.45*(i-r.height),o=s>3?Math.floor(s):3,document.getElementsByTagName("body")[0].className.match(/admin-bar/)&&null!==document.getElementById("wpadminbar")&&(o+=document.getElementById("wpadminbar").offsetHeight),h.style.top=d.Top+o+"px",e.style.visibility="visible"}},hideTags:function(e){var t=document.getElementsByTagName("select"),n=document.getElementsByTagName("object"),s=document.getElementsByTagName("embed"),o=document.getElementsByTagName("iframe"),d=e?"visible":"hidden";for(i=0;i<t.length;i++)t[i].style.visibility=d;for(i=0;i<n.length;i++)n[i].style.visibility=d;for(i=0;i<s.length;i++)s[i].style.visibility=d;for(i=0;i<o.length;i++)o[i].style.visibility=d},handleArrowKeys:function(e){var t=0;if(!e)var e=window.event;e.keyCode?t=e.keyCode:e.which&&(t=e.which);var i=document.getElementById("prevpic"),n=document.getElementById("nextpic"),s=document.getElementById("shTopImg");switch(t){case 39:n&&n.onclick();break;case 37:i&&i.onclick();break;case 27:s&&s.onclick()}}},shutterOnload=function(){shutterReloaded.init("sh")},"function"==typeof shutterOnload&&("undefined"!=typeof jQuery?jQuery(document).ready(function(){shutterOnload()}):"function"!=typeof window.onload?window.onload=shutterOnload:(oldonld=window.onload,window.onload=function(){oldonld&&oldonld(),shutterOnload()}));
1
+ "use strict";function _typeof(e){"@babel/helpers - typeof";return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}shutterReloaded={I:function(e){return document.getElementById(e)},settings:function(){var e=this,t=shutterSettings;e.imageCount=t.imageCount||0,e.msgLoading=t.msgLoading||"L O A D I N G",e.msgClose=t.msgClose||"Click to Close"},init:function(e){var t,i,n,o,s,d,l,r=this;for(shutterLinks={},shutterSets={},"object"!=("undefined"==typeof shutterSettings?"undefined":_typeof(shutterSettings))&&(shutterSettings={}),r.mobileOS="undefined"!=typeof orientation,o=0;o<document.links.length;o++)t=document.links[o],".jpg"!=(n=-1==t.href.indexOf("?")?t.href.slice(-4).toLowerCase():t.href.substring(0,t.href.indexOf("?")).slice(-4).toLowerCase())&&".png"!=n&&".gif"!=n&&"jpeg"!=n||"sh"==e&&-1==t.className.toLowerCase().indexOf("shutter")||"lb"==e&&-1==t.rel.toLowerCase().indexOf("lightbox")||(-1!=t.className.toLowerCase().indexOf("shutterset")?s=t.className.replace(/\s/g,"_"):-1!=t.rel.toLowerCase().indexOf("lightbox[")?s=t.rel.replace(/\s/g,"_"):(s=0,d=-1),s&&(shutterSets[s]||(shutterSets[s]=[]),d=shutterSets[s].push(o)),l=t.href.slice(t.href.lastIndexOf("/")+1),i=t.title&&t.title!=l?t.title:"",shutterLinks[o]={link:t.href,num:d,set:s,title:i},t.onclick=new Function('shutterReloaded.make("'+o+'");return false;'));r.settings()},make:function(e,t){var i,n,o,s,d,l,r,h,u=this,a="",m="";if(u.Top||(void 0!==window.pageYOffset?u.Top=window.pageYOffset:u.Top=document.documentElement.scrollTop>0?document.documentElement.scrollTop:document.body.scrollTop),window.parent){var c=window.parent;if(void 0!==c.ngg_get_measures_for_frame){var g=c.ngg_get_measures_for_frame(window.frameElement);u.Top=u.Top+g.scrollTop}}void 0===u.pgHeight&&(u.pgHeight=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight)),u.FS=t?t>0?1:0:shutterSettings.FS||0,u.resizing&&(u.resizing=null),1==u.mobileOS?window.onorientationchange=new Function('shutterReloaded.resize("'+e+'");'):window.onresize=new Function('shutterReloaded.resize("'+e+'");'),document.documentElement.style.overflowX="hidden",u.VP||(u._viewPort(),u.VP=!0),(l=u.I("shShutter"))||(l=document.createElement("div"),l.setAttribute("id","shShutter"),document.getElementsByTagName("body")[0].appendChild(l),u.hideTags()),(d=u.I("shDisplay"))||(d=document.createElement("div"),d.setAttribute("id","shDisplay"),d.style.top=u.Top+"px",document.getElementsByTagName("body")[0].appendChild(d)),l.style.height=u.pgHeight+"px";var w=u.textBtns?" | ":"";shutterLinks[e].num>1?(i=shutterSets[shutterLinks[e].set][shutterLinks[e].num-2],a='<a href="#" id="prevpic" onclick="shutterReloaded.make('+i+');return false">&lt;&lt;</a>'+w,o=new Image,o.src=shutterLinks[i].link):a="",-1!=shutterLinks[e].num&&shutterLinks[e].num<shutterSets[shutterLinks[e].set].length?(n=shutterSets[shutterLinks[e].set][shutterLinks[e].num],m='<a href="#" id="nextpic" onclick="shutterReloaded.make('+n+');return false">&gt;&gt;</a>'+w,s=new Image,s.src=shutterLinks[n].link):m="",r=shutterLinks[e].num>0&&u.imageCount?'<div id="shCount">&nbsp;(&nbsp;'+shutterLinks[e].num+"&nbsp;/&nbsp;"+shutterSets[shutterLinks[e].set].length+"&nbsp;)&nbsp;</div>":"",h='<div id="shTitle"><div id="shPrev">'+a+'</div><div id="shNext">'+m+'</div><div id="shName">'+shutterLinks[e].title+"</div>"+r+"</div>",d.innerHTML='<div id="shWrap"><img src="'+shutterLinks[e].link+'" id="shTopImg" title="'+u.msgClose+'" onload="shutterReloaded.showImg();" onclick="shutterReloaded.hideShutter();" />'+h+"</div>",document.onkeydown=function(e){shutterReloaded.handleArrowKeys(e)},document.getElementById("shTopImg").src=shutterLinks[e].link,window.setTimeout(function(){shutterReloaded.loading()},1e3)},loading:function(){var e,t,i,n=this;(i=n.I("shWrap"))&&"visible"==i.style.visibility||(e=n.I("shShutter"))&&(n.I("shWaitBar")||(t=document.createElement("div"),t.setAttribute("id","shWaitBar"),t.style.top=n.Top+"px",t.style.marginTop=n.pgHeight/2+"px",t.innerHTML=n.msgLoading,e.appendChild(t)))},hideShutter:function(){var e,t,i=this;(e=i.I("shDisplay"))&&e.parentNode.removeChild(e),(t=i.I("shShutter"))&&t.parentNode.removeChild(t),i.hideTags(!0),window.scrollTo(0,i.Top),window.onresize=i.FS=i.Top=i.VP=null,document.documentElement.style.overflowX="",document.onkeydown=null},resize:function(e){var t=this;if(!t.resizing&&t.I("shShutter")){var i=t.I("shWrap");i&&(i.style.visibility="hidden"),window.setTimeout(function(){shutterReloaded.resizing=null},500),window.setTimeout(new Function('shutterReloaded.VP = null;shutterReloaded.make("'+e+'");'),100),t.resizing=!0}},_viewPort:function(){var e=this,t=window.innerHeight?window.innerHeight:0,i=document.body.clientHeight?document.body.clientHeight:0,n=document.documentElement?document.documentElement.clientHeight:0;t>0?(e.wHeight=t-i>1&&t-i<30?i:t,e.wHeight=e.wHeight-n>1&&e.wHeight-n<30?n:e.wHeight):e.wHeight=n>0?n:i,document.getElementsByTagName("body")[0].className.match(/admin-bar/)&&null!==document.getElementById("wpadminbar")&&(e.wHeight=e.wHeight-document.getElementById("wpadminbar").offsetHeight);var o=document.documentElement?document.documentElement.clientWidth:0,s=window.innerWidth?window.innerWidth:document.body.clientWidth;e.wWidth=o>1?o:s},showImg:function(){var e,t,i,n,o,s,d=this,l=d.I("shShutter"),r=d.I("shDisplay"),h=d.I("shTopImg"),u=d.I("shTitle");d.I("shNavBar");if(l&&(!(e=d.I("shWrap"))||"visible"!=e.style.visibility)){if((t=d.I("shWaitBar"))&&t.parentNode.removeChild(t),l.style.width=r.style.width="",u.style.width=h.width-4+"px",i=d.wHeight-50,window.parent){var a=window.parent;if(void 0!==a.ngg_get_measures_for_frame){i=a.ngg_get_measures_for_frame(window.frameElement).scrollHeight-50}}d.FS?(h.width>d.wWidth-10&&(l.style.width=r.style.width=h.width+10+"px"),document.documentElement.style.overflowX=""):(window.scrollTo(0,d.Top),h.height>i&&(h.width=h.width*(i/h.height),h.height=i,1),h.width>d.wWidth-16&&(h.height=h.height*((d.wWidth-16)/h.width),h.width=d.wWidth-16,1),u.style.width=h.width-4+"px"),n=d.Top+h.height+10,n>d.pgHeight&&(l.style.height=n+"px"),window.scrollTo(0,d.Top),o=.45*(i-h.height),s=o>3?Math.floor(o):3,document.getElementsByTagName("body")[0].className.match(/admin-bar/)&&null!==document.getElementById("wpadminbar")&&(s+=document.getElementById("wpadminbar").offsetHeight),r.style.top=d.Top+s+"px",e.style.visibility="visible"}},hideTags:function(e){var t=document.getElementsByTagName("select"),n=document.getElementsByTagName("object"),o=document.getElementsByTagName("embed"),s=document.getElementsByTagName("iframe"),d=e?"visible":"hidden";for(i=0;i<t.length;i++)t[i].style.visibility=d;for(i=0;i<n.length;i++)n[i].style.visibility=d;for(i=0;i<o.length;i++)o[i].style.visibility=d;for(i=0;i<s.length;i++)s[i].style.visibility=d},handleArrowKeys:function(e){var t=0;if(!e)var e=window.event;e.keyCode?t=e.keyCode:e.which&&(t=e.which);var i=document.getElementById("prevpic"),n=document.getElementById("nextpic"),o=document.getElementById("shTopImg");switch(t){case 39:n&&n.onclick();break;case 37:i&&i.onclick();break;case 27:o&&o.onclick()}}},shutterOnload=function(){shutterReloaded.init("sh")},"function"==typeof shutterOnload&&("undefined"!=typeof jQuery?function(e){e(function(){shutterOnload()})}(jQuery):"function"!=typeof window.onload?window.onload=shutterOnload:(oldonld=window.onload,window.onload=function(){oldonld&&oldonld(),shutterOnload()}));
products/photocrati_nextgen/modules/lightbox/static/shutter_reloaded/nextgen_shutter_reloaded.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(e){var t=function(){nextgen_lightbox_filter_selector(e,e([])).addClass("shutterset"),"undefined"!=typeof nextgen_shutter2_i18n&&(shutterReloaded.L10n=nextgen_shutter2_i18n),shutterReloaded.Init()};e(this).on("refreshed",t);var n="shutterReloaded";void 0===e(window).data(n)&&(e(window).data(n,!0),t())});
1
+ "use strict";jQuery(function(e){var t=function(){nextgen_lightbox_filter_selector(e,e([])).addClass("shutterset"),"undefined"!=typeof nextgen_shutter2_i18n&&(shutterReloaded.L10n=nextgen_shutter2_i18n),shutterReloaded.Init()};e(this).on("refreshed",t);var n="shutterReloaded";void 0===e(window).data(n)&&(e(window).data(n,!0),t())});
products/photocrati_nextgen/modules/lightbox/static/shutter_reloaded/shutter.min.js CHANGED
@@ -1 +1 @@
1
- shutterReloaded={L10n:["Previous","Next","Close","Full Size","Fit to Screen","Image","of","Loading..."],imageCount:!0,textBtns:!1,shImgDir:nextgen_lightbox_settings.static_path.replace("/{placeholder}","")+"/shutter_reloaded/images/",I:function(t){return document.getElementById(t)},Init:function(t){var e,i,s,h,n,o,l,d,r,a;for(h=0;h<document.links.length;h++)e=document.links[h],".jpg"!=(s=-1==e.href.indexOf("?")?e.href.slice(-4).toLowerCase():e.href.substring(0,e.href.indexOf("?")).slice(-4).toLowerCase())&&".png"!=s&&".gif"!=s&&"jpeg"!=s||"sh"==t&&-1==e.className.toLowerCase().indexOf("shutter")||"lb"==t&&-1==e.rel.toLowerCase().indexOf("lightbox")||(-1!=e.className.toLowerCase().indexOf("shutterset")?n=-1!=e.className.indexOf(" ")?e.className.slice(0,e.className.indexOf(" ")):e.className:-1!=e.rel.toLowerCase().indexOf("lightbox[")?n=e.rel:(n=0,o=-1),n&&(shutterSets[n]||(shutterSets[n]=[]),o=shutterSets[n].push(h)),l=e.href.slice(e.href.lastIndexOf("/")+1),i=e.title&&e.title!=l?e.title:"",shutterLinks[h]={link:e.href,num:o,set:n,title:i},e.onclick=new Function('shutterReloaded.Make("'+h+'");return false;'));if(!this.textBtns)for(d=["close.gif","prev.gif","next.gif","resize1.gif","resize2.gif","loading.gif"],r=0;r<d.length;r++)a=new Image,a.src=this.shImgDir+d[r]},Make:function(t,e){var i,s,h,n,o,l,d,r,a,u,g,m,c,w="",f="",p="";this.Top||(void 0!==window.pageYOffset?this.Top=window.pageYOffset:this.Top=document.documentElement.scrollTop>0?document.documentElement.scrollTop:document.body.scrollTop),void 0===this.pgHeight&&(this.pgHeight=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight)),this.FS=!!e||null,this.resizing&&(this.resizing=null),window.onresize=new Function('shutterReloaded.Resize("'+t+'");'),document.documentElement.style.overflowX="hidden",this.VP||(this._viewPort(),this.VP=!0),(r=this.I("shShutter"))||(r=document.createElement("div"),r.setAttribute("id","shShutter"),document.getElementsByTagName("body")[0].appendChild(r),this.fixTags()),(d=this.I("shDisplay"))||(d=document.createElement("div"),d.setAttribute("id","shDisplay"),d.style.top=this.Top+"px",document.getElementsByTagName("body")[0].appendChild(d)),r.style.height=this.pgHeight+"px";var y=this.textBtns?" | ":"";shutterLinks[t].num>1&&(i=shutterSets[shutterLinks[t].set][shutterLinks[t].num-2],o=this.textBtns?this.L10n[0]:'<img src="'+this.shImgDir+'prev.gif" title="'+this.L10n[0]+'" />',w='<a href="#" onclick="shutterReloaded.Make('+i+');return false">'+o+"</a>"+y,h=new Image,h.src=shutterLinks[i].link),-1!=shutterLinks[t].num&&shutterLinks[t].num<shutterSets[shutterLinks[t].set].length&&(s=shutterSets[shutterLinks[t].set][shutterLinks[t].num],l=this.textBtns?this.L10n[1]:'<img src="'+this.shImgDir+'next.gif" title="'+this.L10n[1]+'" />',f='<a href="#" onclick="shutterReloaded.Make('+s+');return false">'+l+"</a>"+y,n=new Image,n.src=shutterLinks[s].link),g=this.textBtns?this.L10n[2]:'<img src="'+this.shImgDir+'close.gif" title="'+this.L10n[2]+'" />',u=shutterLinks[t].num>0&&this.imageCount?" "+this.L10n[5]+"&nbsp;"+shutterLinks[t].num+"&nbsp;"+this.L10n[6]+"&nbsp;"+shutterSets[shutterLinks[t].set].length:"",u&&this.textBtns&&(u+=" |"),this.FS?m=this.textBtns?this.L10n[4]:'<img src="'+this.shImgDir+'resize2.gif" title="'+this.L10n[4]+'" />':(m=this.textBtns?this.L10n[3]:'<img src="'+this.shImgDir+'resize1.gif" title="'+this.L10n[3]+'" />',p=",1"),c='<span id="fullSize"><a href="#" onclick="shutterReloaded.Make('+t+p+');return false">'+m+"</a>"+y+"</span>",(a=this.I("shNavBar"))||(a=document.createElement("div"),a.setAttribute("id","shNavBar"),document.getElementsByTagName("body")[0].appendChild(a)),a.innerHTML=y+w+'<a href="#" onclick="shutterReloaded.hideShutter();return false">'+g+"</a>"+y+c+f+u,d.innerHTML='<div id="shWrap"><img src="'+shutterLinks[t].link+'" id="shTopImg" onload="shutterReloaded.ShowImg();" onclick="shutterReloaded.hideShutter();" /><div id="shTitle">'+shutterLinks[t].title+"</div></div>",window.setTimeout(function(){shutterReloaded.loading()},2e3)},loading:function(){var t,e,i;(i=this.I("shWrap"))&&"visible"==i.style.visibility||(t=this.I("shShutter"))&&(this.I("shWaitBar")||(e=document.createElement("div"),e.setAttribute("id","shWaitBar"),e.style.top=this.Top+"px",e.innerHTML='<img src="'+this.shImgDir+'loading.gif" title="'+this.L10n[7]+'" />',t.appendChild(e)))},hideShutter:function(){var t,e,i;(t=this.I("shDisplay"))&&t.parentNode.removeChild(t),(e=this.I("shShutter"))&&e.parentNode.removeChild(e),(i=this.I("shNavBar"))&&i.parentNode.removeChild(i),this.fixTags(!0),window.scrollTo(0,this.Top),window.onresize=this.FS=this.Top=this.VP=null,document.documentElement.style.overflowX=""},Resize:function(t){if(!this.resizing&&this.I("shShutter")){var e=this.I("shWrap");e&&(e.style.visibility="hidden"),window.setTimeout(function(){shutterReloaded.resizing=null},500),window.setTimeout(new Function('shutterReloaded.VP = null;shutterReloaded.Make("'+t+'");'),100),this.resizing=!0}},_viewPort:function(){var t=window.innerHeight?window.innerHeight:0,e=document.body.clientHeight?document.body.clientHeight:0,i=document.documentElement?document.documentElement.clientHeight:0;t>0?(this.wHeight=t-e>1&&t-e<30?e:t,this.wHeight=this.wHeight-i>1&&this.wHeight-i<30?i:this.wHeight):this.wHeight=i>0?i:e;var s=document.documentElement?document.documentElement.clientWidth:0,h=window.innerWidth?window.innerWidth:document.body.clientWidth;this.wWidth=s>1?s:h},ShowImg:function(){var t,e,i,s,h,n,o,l,d,r,a,u,g=0;(t=this.I("shShutter"))&&((e=this.I("shWrap"))&&"visible"==e.style.visibility||((i=this.I("shWaitBar"))&&i.parentNode.removeChild(i),s=this.I("shDisplay"),n=this.I("shTopImg"),h=this.I("shTitle"),o=this.I("shNavBar"),t.style.width=s.style.width="",h.style.width=n.width-4+"px",l=o.offsetHeight?h.offsetHeight+o.offsetHeight:30,d=this.wHeight-7-l,this.FS?(n.width>this.wWidth-10&&(t.style.width=s.style.width=n.width+10+"px"),document.documentElement.style.overflowX=""):(window.scrollTo(0,this.Top),n.height>d&&(n.width=n.width*(d/n.height),n.height=d,g=1),n.width>this.wWidth-16&&(n.height=n.height*((this.wWidth-16)/n.width),n.width=this.wWidth-16,g=1),h.style.width=n.width-4+"px",o.style.bottom="0px"),r=this.Top+n.height+l+10,r>this.pgHeight&&(t.style.height=r+"px"),window.scrollTo(0,this.Top),(this.FS&&(n.height>d||n.width>this.wWidth)||g)&&(this.I("fullSize").style.display="inline"),a=.45*(d-n.height),u=a>3?Math.floor(a):3,s.style.top=this.Top+u+"px",o.style.bottom="0",e.style.visibility="visible"))},fixTags:function(t){var e=document.getElementsByTagName("select"),s=document.getElementsByTagName("object"),h=document.getElementsByTagName("embed");if(t)var n="visible";else var n="hidden";for(i=0;i<e.length;i++)e[i].style.visibility=n;for(i=0;i<s.length;i++)s[i].style.visibility=n;for(i=0;i<h.length;i++)h[i].style.visibility=n}};var shutterLinks={},shutterSets={};"function"==typeof shutterOnload&&(oldonload=window.onload,"function"!=typeof window.onload?window.onload=shutterOnload:window.onload=function(){shutterOnload(),oldonload&&oldonload()});
1
+ "use strict";shutterReloaded={L10n:["Previous","Next","Close","Full Size","Fit to Screen","Image","of","Loading..."],imageCount:!0,textBtns:!1,shImgDir:nextgen_lightbox_settings.static_path.replace("/{placeholder}","")+"/shutter_reloaded/images/",I:function(t){return document.getElementById(t)},Init:function(t){var e,i,s,h,n,o,l,d,r,a;for(h=0;h<document.links.length;h++)e=document.links[h],".jpg"!=(s=-1==e.href.indexOf("?")?e.href.slice(-4).toLowerCase():e.href.substring(0,e.href.indexOf("?")).slice(-4).toLowerCase())&&".png"!=s&&".gif"!=s&&"jpeg"!=s||"sh"==t&&-1==e.className.toLowerCase().indexOf("shutter")||"lb"==t&&-1==e.rel.toLowerCase().indexOf("lightbox")||(-1!=e.className.toLowerCase().indexOf("shutterset")?n=-1!=e.className.indexOf(" ")?e.className.slice(0,e.className.indexOf(" ")):e.className:-1!=e.rel.toLowerCase().indexOf("lightbox[")?n=e.rel:(n=0,o=-1),n&&(shutterSets[n]||(shutterSets[n]=[]),o=shutterSets[n].push(h)),l=e.href.slice(e.href.lastIndexOf("/")+1),i=e.title&&e.title!=l?e.title:"",shutterLinks[h]={link:e.href,num:o,set:n,title:i},e.onclick=new Function('shutterReloaded.Make("'+h+'");return false;'));if(!this.textBtns)for(d=["close.gif","prev.gif","next.gif","resize1.gif","resize2.gif","loading.gif"],r=0;r<d.length;r++)a=new Image,a.src=this.shImgDir+d[r]},Make:function(t,e){var i,s,h,n,o,l,d,r,a,u,g,m,c,w="",f="",p="";this.Top||(void 0!==window.pageYOffset?this.Top=window.pageYOffset:this.Top=document.documentElement.scrollTop>0?document.documentElement.scrollTop:document.body.scrollTop),void 0===this.pgHeight&&(this.pgHeight=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight)),this.FS=!!e||null,this.resizing&&(this.resizing=null),window.onresize=new Function('shutterReloaded.Resize("'+t+'");'),document.documentElement.style.overflowX="hidden",this.VP||(this._viewPort(),this.VP=!0),(r=this.I("shShutter"))||(r=document.createElement("div"),r.setAttribute("id","shShutter"),document.getElementsByTagName("body")[0].appendChild(r),this.fixTags()),(d=this.I("shDisplay"))||(d=document.createElement("div"),d.setAttribute("id","shDisplay"),d.style.top=this.Top+"px",document.getElementsByTagName("body")[0].appendChild(d)),r.style.height=this.pgHeight+"px";var y=this.textBtns?" | ":"";shutterLinks[t].num>1&&(i=shutterSets[shutterLinks[t].set][shutterLinks[t].num-2],o=this.textBtns?this.L10n[0]:'<img src="'+this.shImgDir+'prev.gif" title="'+this.L10n[0]+'" />',w='<a href="#" onclick="shutterReloaded.Make('+i+');return false">'+o+"</a>"+y,h=new Image,h.src=shutterLinks[i].link),-1!=shutterLinks[t].num&&shutterLinks[t].num<shutterSets[shutterLinks[t].set].length&&(s=shutterSets[shutterLinks[t].set][shutterLinks[t].num],l=this.textBtns?this.L10n[1]:'<img src="'+this.shImgDir+'next.gif" title="'+this.L10n[1]+'" />',f='<a href="#" onclick="shutterReloaded.Make('+s+');return false">'+l+"</a>"+y,n=new Image,n.src=shutterLinks[s].link),g=this.textBtns?this.L10n[2]:'<img src="'+this.shImgDir+'close.gif" title="'+this.L10n[2]+'" />',u=shutterLinks[t].num>0&&this.imageCount?" "+this.L10n[5]+"&nbsp;"+shutterLinks[t].num+"&nbsp;"+this.L10n[6]+"&nbsp;"+shutterSets[shutterLinks[t].set].length:"",u&&this.textBtns&&(u+=" |"),this.FS?m=this.textBtns?this.L10n[4]:'<img src="'+this.shImgDir+'resize2.gif" title="'+this.L10n[4]+'" />':(m=this.textBtns?this.L10n[3]:'<img src="'+this.shImgDir+'resize1.gif" title="'+this.L10n[3]+'" />',p=",1"),c='<span id="fullSize"><a href="#" onclick="shutterReloaded.Make('+t+p+');return false">'+m+"</a>"+y+"</span>",(a=this.I("shNavBar"))||(a=document.createElement("div"),a.setAttribute("id","shNavBar"),document.getElementsByTagName("body")[0].appendChild(a)),a.innerHTML=y+w+'<a href="#" onclick="shutterReloaded.hideShutter();return false">'+g+"</a>"+y+c+f+u,d.innerHTML='<div id="shWrap"><img src="'+shutterLinks[t].link+'" id="shTopImg" onload="shutterReloaded.ShowImg();" onclick="shutterReloaded.hideShutter();" /><div id="shTitle">'+shutterLinks[t].title+"</div></div>",window.setTimeout(function(){shutterReloaded.loading()},2e3)},loading:function(){var t,e,i;(i=this.I("shWrap"))&&"visible"==i.style.visibility||(t=this.I("shShutter"))&&(this.I("shWaitBar")||(e=document.createElement("div"),e.setAttribute("id","shWaitBar"),e.style.top=this.Top+"px",e.innerHTML='<img src="'+this.shImgDir+'loading.gif" title="'+this.L10n[7]+'" />',t.appendChild(e)))},hideShutter:function(){var t,e,i;(t=this.I("shDisplay"))&&t.parentNode.removeChild(t),(e=this.I("shShutter"))&&e.parentNode.removeChild(e),(i=this.I("shNavBar"))&&i.parentNode.removeChild(i),this.fixTags(!0),window.scrollTo(0,this.Top),window.onresize=this.FS=this.Top=this.VP=null,document.documentElement.style.overflowX=""},Resize:function(t){if(!this.resizing&&this.I("shShutter")){var e=this.I("shWrap");e&&(e.style.visibility="hidden"),window.setTimeout(function(){shutterReloaded.resizing=null},500),window.setTimeout(new Function('shutterReloaded.VP = null;shutterReloaded.Make("'+t+'");'),100),this.resizing=!0}},_viewPort:function(){var t=window.innerHeight?window.innerHeight:0,e=document.body.clientHeight?document.body.clientHeight:0,i=document.documentElement?document.documentElement.clientHeight:0;t>0?(this.wHeight=t-e>1&&t-e<30?e:t,this.wHeight=this.wHeight-i>1&&this.wHeight-i<30?i:this.wHeight):this.wHeight=i>0?i:e;var s=document.documentElement?document.documentElement.clientWidth:0,h=window.innerWidth?window.innerWidth:document.body.clientWidth;this.wWidth=s>1?s:h},ShowImg:function(){var t,e,i,s,h,n,o,l,d,r,a,u,g=0;(t=this.I("shShutter"))&&((e=this.I("shWrap"))&&"visible"==e.style.visibility||((i=this.I("shWaitBar"))&&i.parentNode.removeChild(i),s=this.I("shDisplay"),n=this.I("shTopImg"),h=this.I("shTitle"),o=this.I("shNavBar"),t.style.width=s.style.width="",h.style.width=n.width-4+"px",l=o.offsetHeight?h.offsetHeight+o.offsetHeight:30,d=this.wHeight-7-l,this.FS?(n.width>this.wWidth-10&&(t.style.width=s.style.width=n.width+10+"px"),document.documentElement.style.overflowX=""):(window.scrollTo(0,this.Top),n.height>d&&(n.width=n.width*(d/n.height),n.height=d,g=1),n.width>this.wWidth-16&&(n.height=n.height*((this.wWidth-16)/n.width),n.width=this.wWidth-16,g=1),h.style.width=n.width-4+"px",o.style.bottom="0px"),r=this.Top+n.height+l+10,r>this.pgHeight&&(t.style.height=r+"px"),window.scrollTo(0,this.Top),(this.FS&&(n.height>d||n.width>this.wWidth)||g)&&(this.I("fullSize").style.display="inline"),a=.45*(d-n.height),u=a>3?Math.floor(a):3,s.style.top=this.Top+u+"px",o.style.bottom="0",e.style.visibility="visible"))},fixTags:function(t){var e=document.getElementsByTagName("select"),s=document.getElementsByTagName("object"),h=document.getElementsByTagName("embed");if(t)var n="visible";else var n="hidden";for(i=0;i<e.length;i++)e[i].style.visibility=n;for(i=0;i<s.length;i++)s[i].style.visibility=n;for(i=0;i<h.length;i++)h[i].style.visibility=n}};var shutterLinks={},shutterSets={};"function"==typeof shutterOnload&&(oldonload=window.onload,"function"!=typeof window.onload?window.onload=shutterOnload:window.onload=function(){shutterOnload(),oldonload&&oldonload()});
products/photocrati_nextgen/modules/lightbox/static/simplelightbox/nextgen_simple_lightbox_init.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(e){var i=null,n=null,t={history:!1,animationSlide:!1,animationSpeed:100,captionSelector:"self"};!function(){i=nextgen_lightbox_filter_selector(e,e(".ngg-simplelightbox")),i.length>0&&(n=i.simpleLightbox(t))}(),e(window).on("refreshed",function(){void 0!==n&&n.destroy(),i=nextgen_lightbox_filter_selector(e,e(".ngg-simplelightbox")),i.length>0&&(n=i.simpleLightbox(t))})});
1
+ "use strict";jQuery(function(e){var i=null,t=null,n={history:!1,animationSlide:!1,animationSpeed:100,captionSelector:"self"};!function(){i=nextgen_lightbox_filter_selector(e,e(".ngg-simplelightbox")),i.length>0&&(t=i.simpleLightbox(n))}(),e(window).on("refreshed",function(){void 0!==t&&t.destroy(),i=nextgen_lightbox_filter_selector(e,e(".ngg-simplelightbox")),i.length>0&&(t=i.simpleLightbox(n))})});
products/photocrati_nextgen/modules/lightbox/static/thickbox/nextgen_thickbox_init.min.js CHANGED
@@ -1 +1 @@
1
- void 0===window.thickboxL10n&&("undefined"==typeof nextgen_thickbox_i18n?window.thickboxL10n={loadingAnimation:photocrati_ajax.wp_includes_url+"/wp-includes/js/thickbox/loadingAnimation.gif",closeImage:photocrati_ajax.wp_includes_url+"/wp-includes/js/thickbox/tb-close.png",next:"Next &gt;",prev:"&lt; Prev",image:"Image",of:"of",close:"Close",noiframes:"This feature requires inline frames. You have iframes disabled or your browser does not support them."}:window.thickboxL10n={loadingAnimation:photocrati_ajax.wp_includes_url+"/wp-includes/js/thickbox/loadingAnimation.gif",closeImage:photocrati_ajax.wp_includes_url+"/wp-includes/js/thickbox/tb-close.png",next:nextgen_thickbox_i18n.next,prev:nextgen_thickbox_i18n.prev,image:nextgen_thickbox_i18n.image,of:nextgen_thickbox_i18n.of,close:nextgen_thickbox_i18n.close,noiframes:nextgen_thickbox_i18n.noiframes}),jQuery(function(e){nextgen_lightbox_filter_selector(e,e([])).addClass("thickbox")});
1
+ "use strict";void 0===window.thickboxL10n&&("undefined"==typeof nextgen_thickbox_i18n?window.thickboxL10n={loadingAnimation:photocrati_ajax.wp_includes_url+"/wp-includes/js/thickbox/loadingAnimation.gif",closeImage:photocrati_ajax.wp_includes_url+"/wp-includes/js/thickbox/tb-close.png",next:"Next &gt;",prev:"&lt; Prev",image:"Image",of:"of",close:"Close",noiframes:"This feature requires inline frames. You have iframes disabled or your browser does not support them."}:window.thickboxL10n={loadingAnimation:photocrati_ajax.wp_includes_url+"/wp-includes/js/thickbox/loadingAnimation.gif",closeImage:photocrati_ajax.wp_includes_url+"/wp-includes/js/thickbox/tb-close.png",next:nextgen_thickbox_i18n.next,prev:nextgen_thickbox_i18n.prev,image:nextgen_thickbox_i18n.image,of:nextgen_thickbox_i18n.of,close:nextgen_thickbox_i18n.close,noiframes:nextgen_thickbox_i18n.noiframes}),jQuery(function(e){nextgen_lightbox_filter_selector(e,e([])).addClass("thickbox")});
products/photocrati_nextgen/modules/marketing/module.marketing.php CHANGED
@@ -15,7 +15,7 @@ class M_Marketing extends C_Base_Module
15
  'photocrati-marketing',
16
  'Marketing',
17
  'Provides resources for encouraging users to upgrade to NextGen Plus/Pro',
18
- '3.3.10',
19
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
20
  'Imagely',
21
  'https://www.imagely.com'
@@ -37,7 +37,7 @@ class M_Marketing extends C_Base_Module
37
  static function get_i18n()
38
  {
39
  $i18n = new stdClass;
40
- $i18n->lite_coupon = __('NextGEN Basic users get a discount of 30% off regular price', 'nggallery');
41
  $i18n->bonus = __('Bonus', 'nggallery');
42
  $i18n->feature_not_available = __("We're sorry, but %s is not available in the lite version of NextGEN Gallery. Please upgrade to NextGEN Pro to unlock these awesome features.", 'nggallery');
43
 
@@ -216,7 +216,7 @@ class M_Marketing extends C_Base_Module
216
  'title' => __('Want to make your gallery workflow and presentation even better?', 'nggallery'),
217
  'description' => __('By upgrading to NextGEN Pro, you can get access to numerous other features, including:', 'nggallery'),
218
  'links' => self::get_big_hitters_links($medium),
219
- 'footer' => __('<strong>Bonus:</strong> NextGEN Gallery users get a discount of 30% off regular price.', 'nggallery'),
220
  'campaign' => 'clickheretoupgrade',
221
  'medium' => $medium
222
  ];
15
  'photocrati-marketing',
16
  'Marketing',
17
  'Provides resources for encouraging users to upgrade to NextGen Plus/Pro',
18
+ '3.3.21',
19
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
20
  'Imagely',
21
  'https://www.imagely.com'
37
  static function get_i18n()
38
  {
39
  $i18n = new stdClass;
40
+ $i18n->lite_coupon = __('NextGEN Basic users get a discount of 20% off regular price', 'nggallery');
41
  $i18n->bonus = __('Bonus', 'nggallery');
42
  $i18n->feature_not_available = __("We're sorry, but %s is not available in the lite version of NextGEN Gallery. Please upgrade to NextGEN Pro to unlock these awesome features.", 'nggallery');
43
 
216
  'title' => __('Want to make your gallery workflow and presentation even better?', 'nggallery'),
217
  'description' => __('By upgrading to NextGEN Pro, you can get access to numerous other features, including:', 'nggallery'),
218
  'links' => self::get_big_hitters_links($medium),
219
+ 'footer' => __('<strong>Bonus:</strong> NextGEN Gallery users get a discount of 20% off regular price.', 'nggallery'),
220
  'campaign' => 'clickheretoupgrade',
221
  'medium' => $medium
222
  ];
products/photocrati_nextgen/modules/marketing/package.module.marketing.php CHANGED
@@ -68,7 +68,7 @@ class A_Marketing_Display_Settings_Form extends Mixin_Display_Type_Form
68
  public function _render_marketing_block_field($thing)
69
  {
70
  $context = $this->get_context();
71
- $footer = __('<strong>Bonus:</strong> NextGEN Gallery users get a discount of 30% off regular price.', 'nggallery');
72
  switch ($context) {
73
  case 'tile':
74
  $card = new C_Marketing_Block_Large(__('Use the Pro Tiled Gallery in NextGEN Pro', 'nggallery'), __('With this stunning display type, you can present your images large with no trouble. Choose the maximum width of the gallery, or let it automate. It will adjust incredibly on all devices.', 'nggallery'), $footer, 'https://www.imagely.com/wp-content/uploads/2020/06/tile.jpg', 'https://www.imagely.com/wordpress-gallery-plugin/pro-tiled-gallery/?utm_source=ngg&utm_medium=gallerysettings&utm_campaign=tiledgallery-demo', __('View the Pro Tiled Demo', 'nggallery'), 'gallerysettings', 'tiledgallery');
@@ -171,7 +171,7 @@ class A_Marketing_Lightbox_Options_MVC extends Mixin
171
  {
172
  $root_element = $this->call_parent('render_object');
173
  M_Marketing::enqueue_blocks_style();
174
- $block = new C_Marketing_Block_Large(__('Go big with the Pro Lightbox', 'nggallery'), __("The Pro Lightbox allows you to display images at full scale when opened. Your visitors will enjoy breathtaking views of your photos on any device. It's customizable, from colors to padding and more. Offer social sharing, deep linking, and individual image commenting. Turn your gallery lightbox view into a slideshow for your visitors. You can customize settings such as auto-playing and slideshow speed.", 'nggallery'), __('<strong>Bonus:</strong> NextGEN Gallery users get a discount of 30% off regular price', 'nggallery'), 'fa-expand', 'https://www.imagely.com/wordpress-gallery-plugin/pro-lightbox-demo/?utm_medium=ngg&utm_source=otheroptions&utm_campaign=prolightbox-demo', __('View the Pro Lightbox Demo', 'nggallery'), 'otheroptions', 'prolightbox');
175
  foreach ($root_element->find('admin_page.other_options_lightbox_libraries', TRUE) as $container) {
176
  $container->append($block->render());
177
  }
@@ -190,7 +190,7 @@ class A_Marketing_Other_Options_Form extends Mixin
190
  }
191
  function render()
192
  {
193
- $card = new C_Marketing_Block_Large(__('Protect your images', 'nggallery'), __('Image protection disables the ability for visitors to right-click or drag to download your images in both the gallery display and Pro Lightbox views. It gives you complete freedom to display your work without worry. You can also choose to protect all images sitewide, even outside of NextGEN Gallery.', 'nggallery'), __('<strong>Bonus:</strong> NextGEN Gallery users get a discount of 30% off regular price.', 'nggallery'), 'fa-lock-open', 'https://www.imagely.com/docs/turn-image-protection/?utm_medium=ngg&utm_source=otheroptions&utm_campaign=imageprotection-learnmore', __('Learn more', 'nggallery'), 'otheroptions', 'imageprotection');
194
  return $card->render();
195
  }
196
  function enqueue_static_resources()
68
  public function _render_marketing_block_field($thing)
69
  {
70
  $context = $this->get_context();
71
+ $footer = __('<strong>Bonus:</strong> NextGEN Gallery users get a discount of 20% off regular price.', 'nggallery');
72
  switch ($context) {
73
  case 'tile':
74
  $card = new C_Marketing_Block_Large(__('Use the Pro Tiled Gallery in NextGEN Pro', 'nggallery'), __('With this stunning display type, you can present your images large with no trouble. Choose the maximum width of the gallery, or let it automate. It will adjust incredibly on all devices.', 'nggallery'), $footer, 'https://www.imagely.com/wp-content/uploads/2020/06/tile.jpg', 'https://www.imagely.com/wordpress-gallery-plugin/pro-tiled-gallery/?utm_source=ngg&utm_medium=gallerysettings&utm_campaign=tiledgallery-demo', __('View the Pro Tiled Demo', 'nggallery'), 'gallerysettings', 'tiledgallery');
171
  {
172
  $root_element = $this->call_parent('render_object');
173
  M_Marketing::enqueue_blocks_style();
174
+ $block = new C_Marketing_Block_Large(__('Go big with the Pro Lightbox', 'nggallery'), __("The Pro Lightbox allows you to display images at full scale when opened. Your visitors will enjoy breathtaking views of your photos on any device. It's customizable, from colors to padding and more. Offer social sharing, deep linking, and individual image commenting. Turn your gallery lightbox view into a slideshow for your visitors. You can customize settings such as auto-playing and slideshow speed.", 'nggallery'), __('<strong>Bonus:</strong> NextGEN Gallery users get a discount of 20% off regular price', 'nggallery'), 'fa-expand', 'https://www.imagely.com/wordpress-gallery-plugin/pro-lightbox-demo/?utm_medium=ngg&utm_source=otheroptions&utm_campaign=prolightbox-demo', __('View the Pro Lightbox Demo', 'nggallery'), 'otheroptions', 'prolightbox');
175
  foreach ($root_element->find('admin_page.other_options_lightbox_libraries', TRUE) as $container) {
176
  $container->append($block->render());
177
  }
190
  }
191
  function render()
192
  {
193
+ $card = new C_Marketing_Block_Large(__('Protect your images', 'nggallery'), __('Image protection disables the ability for visitors to right-click or drag to download your images in both the gallery display and Pro Lightbox views. It gives you complete freedom to display your work without worry. You can also choose to protect all images sitewide, even outside of NextGEN Gallery.', 'nggallery'), __('<strong>Bonus:</strong> NextGEN Gallery users get a discount of 20% off regular price.', 'nggallery'), 'fa-lock-open', 'https://www.imagely.com/docs/turn-image-protection/?utm_medium=ngg&utm_source=otheroptions&utm_campaign=imageprotection-learnmore', __('Learn more', 'nggallery'), 'otheroptions', 'imageprotection');
194
  return $card->render();
195
  }
196
  function enqueue_static_resources()
products/photocrati_nextgen/modules/marketing/templates/igw_promo.php CHANGED
@@ -9,6 +9,6 @@
9
  </a>
10
  </p>
11
  <p class='coupon'>
12
- <?php esc_html_e("Get 30% Off Now!", 'nggallery') ?>
13
  </p>
14
  </div>
9
  </a>
10
  </p>
11
  <p class='coupon'>
12
+ <?php esc_html_e("Get 20% Off Now!", 'nggallery') ?>
13
  </p>
14
  </div>
products/photocrati_nextgen/modules/mvc/module.mvc.php CHANGED
@@ -27,7 +27,7 @@ class M_MVC extends C_Base_Module
27
  'photocrati-mvc',
28
  'MVC Framework',
29
  'Provides an MVC architecture for the plugin to use',
30
- '3.3.7',
31
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery',
32
  'Imagely',
33
  'https://www.imagely.com'
27
  'photocrati-mvc',
28
  'MVC Framework',
29
  'Provides an MVC architecture for the plugin to use',
30
+ '3.3.21',
31
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery',
32
  'Imagely',
33
  'https://www.imagely.com'
products/photocrati_nextgen/modules/mvc/package.module.mvc.php CHANGED
@@ -352,7 +352,7 @@ class C_MVC_View extends C_Component
352
  $this->_template = $template;
353
  $this->_params = (array) $params;
354
  $this->_engine = $engine;
355
- $context = $context ? array_unique([$context, $template]) : $template;
356
  parent::__construct($context);
357
  }
358
  function define($context = FALSE)
352
  $this->_template = $template;
353
  $this->_params = (array) $params;
354
  $this->_engine = $engine;
355
+ $context = $context ? array_unique([$context, $template], SORT_REGULAR) : $template;
356
  parent::__construct($context);
357
  }
358
  function define($context = FALSE)
products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.php CHANGED
@@ -22,7 +22,7 @@ class M_NextGen_AddGallery_Page extends C_Base_Module
22
  'photocrati-nextgen_addgallery_page',
23
  'NextGEN Add Gallery Page',
24
  'Provides admin page for adding a gallery and uploading images',
25
- '3.3.7',
26
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
27
  'Imagely',
28
  'https://www.imagely.com'
@@ -84,8 +84,6 @@ class M_NextGen_AddGallery_Page extends C_Base_Module
84
  {
85
  add_action('admin_init', array($this, 'register_requirements'));
86
  add_action('admin_init', array($this, 'register_scripts'));
87
-
88
- add_filter('ngg_non_minified_files', array($this, 'do_not_minify'), 10, 2);
89
  }
90
 
91
  public function register_requirements()
@@ -111,76 +109,72 @@ class M_NextGen_AddGallery_Page extends C_Base_Module
111
  if (is_admin())
112
  {
113
  $router = C_Router::get_instance();
114
- wp_register_script(
115
- 'browserplus',
116
- $router->get_static_url('photocrati-nextgen_addgallery_page#browserplus-2.4.21.min.js'),
 
117
  array(),
118
  NGG_SCRIPT_VERSION
119
  );
 
120
  wp_register_script(
121
- 'ngg.plupload.moxie',
122
- $router->get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/moxie.min.js'),
123
- array(),
124
- NGG_SCRIPT_VERSION
125
  );
126
- wp_register_script(
127
- 'ngg.plupload.full',
128
- $router->get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/plupload.dev.js'),
129
- array('ngg.plupload.moxie'),
130
- NGG_SCRIPT_VERSION
131
  );
132
  wp_register_script(
133
- 'ngg.plupload.queue',
134
- $router->get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/jquery.plupload.queue/jquery.plupload.queue.min.js'),
135
- array('ngg.plupload.full'),
136
- NGG_SCRIPT_VERSION
137
  );
138
- wp_register_style(
139
- 'ngg.plupload.queue',
140
- $router->get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/jquery.plupload.queue/css/jquery.plupload.queue.css'),
141
- array(),
142
- NGG_SCRIPT_VERSION
 
143
  );
144
  wp_register_style(
145
- 'nextgen_addgallery_page',
146
- $router->get_static_url('photocrati-nextgen_addgallery_page#styles.css'),
147
- array(),
148
- NGG_SCRIPT_VERSION
149
  );
 
150
  wp_register_script(
151
  'jquery.filetree',
152
- $router->get_static_url('photocrati-nextgen_addgallery_page#jquery.filetree/jquery.filetree.js'),
153
  array('jquery'),
154
  NGG_SCRIPT_VERSION
155
  );
156
  wp_register_style(
157
  'jquery.filetree',
158
- $router->get_static_url('photocrati-nextgen_addgallery_page#jquery.filetree/jquery.filetree.css'),
159
  array(),
160
  NGG_SCRIPT_VERSION
161
  );
 
162
  wp_register_script(
163
  'nextgen_media_library_import-js',
164
- $router->get_static_url('photocrati-nextgen_addgallery_page#media-library-import.js'),
165
  array('jquery', 'ngg_progressbar'),
166
  NGG_SCRIPT_VERSION
167
  );
168
  wp_register_style(
169
  'nextgen_media_library_import-css',
170
- $router->get_static_url('photocrati-nextgen_addgallery_page#media-library-import.css'),
171
  array(),
172
  NGG_SCRIPT_VERSION
173
  );
174
  }
175
  }
176
-
177
- // plupload i18n JS should not be minified
178
- function do_not_minify($path, $module)
179
- {
180
- $retval = FALSE;
181
- if ($module == 'photocrati-nextgen_addgallery_page' && strpos($path, '/i18n/') !== FALSE)
182
- $retval = TRUE;
183
- return $retval;
184
- }
185
  }
186
  new M_NextGen_AddGallery_Page();
22
  'photocrati-nextgen_addgallery_page',
23
  'NextGEN Add Gallery Page',
24
  'Provides admin page for adding a gallery and uploading images',
25
+ '3.3.21',
26
  'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/',
27
  'Imagely',
28
  'https://www.imagely.com'
84
  {
85
  add_action('admin_init', array($this, 'register_requirements'));
86
  add_action('admin_init', array($this, 'register_scripts'));
 
 
87
  }
88
 
89
  public function register_requirements()
109
  if (is_admin())
110
  {
111
  $router = C_Router::get_instance();
112
+ $add_gallery_page_id = 'photocrati-nextgen_addgallery_page';
113
+ wp_register_style(
114
+ 'nextgen_addgallery_page',
115
+ $router->get_static_url($add_gallery_page_id . '#styles.css'),
116
  array(),
117
  NGG_SCRIPT_VERSION
118
  );
119
+
120
  wp_register_script(
121
+ 'uppy',
122
+ $router->get_static_url($add_gallery_page_id . '#uppy/uppy.min.js'),
123
+ [],
124
+ '1.21.1'
125
  );
126
+ wp_register_style(
127
+ 'uppy',
128
+ $router->get_static_url($add_gallery_page_id . '#uppy/uppy.min.css'),
129
+ [],
130
+ '1.21.1'
131
  );
132
  wp_register_script(
133
+ 'uppy_i18n',
134
+ $router->get_static_url($add_gallery_page_id . '#uppy/i18n.min.js'),
135
+ ['uppy'],
136
+ '1.21.1'
137
  );
138
+
139
+ wp_register_script(
140
+ 'toastify',
141
+ $router->get_static_url($add_gallery_page_id . '#toastify.js'),
142
+ [],
143
+ '1.9.2'
144
  );
145
  wp_register_style(
146
+ 'toastify',
147
+ $router->get_static_url($add_gallery_page_id . '#toastify.min.css'),
148
+ [],
149
+ '1.9.2'
150
  );
151
+
152
  wp_register_script(
153
  'jquery.filetree',
154
+ $router->get_static_url($add_gallery_page_id . '#jquery.filetree/jquery.filetree.js'),
155
  array('jquery'),
156
  NGG_SCRIPT_VERSION
157
  );
158
  wp_register_style(
159
  'jquery.filetree',
160
+ $router->get_static_url($add_gallery_page_id . '#jquery.filetree/jquery.filetree.css'),
161
  array(),
162
  NGG_SCRIPT_VERSION
163
  );
164
+
165
  wp_register_script(
166
  'nextgen_media_library_import-js',
167
+ $router->get_static_url($add_gallery_page_id . '#media-library-import.js'),
168
  array('jquery', 'ngg_progressbar'),
169
  NGG_SCRIPT_VERSION
170
  );
171
  wp_register_style(
172
  'nextgen_media_library_import-css',
173
+ $router->get_static_url($add_gallery_page_id . '#media-library-import.css'),
174
  array(),
175
  NGG_SCRIPT_VERSION
176
  );
177
  }
178
  }
 
 
 
 
 
 
 
 
 
179
  }
180
  new M_NextGen_AddGallery_Page();
products/photocrati_nextgen/modules/nextgen_addgallery_page/package.module.nextgen_addgallery_page.php CHANGED
@@ -82,14 +82,37 @@ class A_NextGen_AddGallery_Ajax extends Mixin
82
  }
83
  return array('success' => 1, 'cookies' => $_COOKIE);
84
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  function upload_image_action()
86
  {
87
- $retval = array();
88
  $created_gallery = FALSE;
89
  $gallery_id = intval($this->param('gallery_id'));
90
  $gallery_name = urldecode($this->param('gallery_name'));
91
  $gallery_mapper = C_Gallery_Mapper::get_instance();
92
- $error = FALSE;
93
  if ($this->validate_ajax_request('nextgen_upload_image', TRUE)) {
94
  if (!class_exists('DOMDocument')) {
95
  $retval['error'] = __("Please ask your hosting provider or system administrator to enable the PHP XML module which is required for image uploads", 'nggallery');
@@ -97,21 +120,19 @@ class A_NextGen_AddGallery_Ajax extends Mixin
97
  // We need to create a gallery
98
  if ($gallery_id == 0) {
99
  if (strlen($gallery_name) > 0) {
100
- $gallery = $gallery_mapper->create(array('title' => $gallery_name));
101
  if (!$gallery->save()) {
102
  $retval['error'] = $gallery->get_errors();
103
- $error = TRUE;
104
  } else {
105
  $created_gallery = TRUE;
106
  $gallery_id = $gallery->id();
107
  }
108
  } else {
109
- $error = TRUE;
110
  $retval['error'] = __("No gallery name specified", 'nggallery');
111
  }
112
  }
113
  // Upload the image to the gallery
114
- if (!$error) {
115
  $retval['gallery_id'] = $gallery_id;
116
  $settings = C_NextGen_Settings::get_instance();
117
  $storage = C_Gallery_Storage::get_instance();
@@ -124,35 +145,29 @@ class A_NextGen_AddGallery_Ajax extends Mixin
124
  }
125
  } elseif ($image_id = $storage->upload_image($gallery_id)) {
126
  $retval['image_ids'] = array($image_id);
127
- $retval['image_errors'] = array();
128
  // check if image was resized correctly
129
- if ($settings->imgAutoResize) {
130
  $image_path = $storage->get_full_abspath($image_id);
131
  $image_thumb = new C_NggLegacy_Thumbnail($image_path, true);
132
  if ($image_thumb->error) {
133
- $retval['image_errors'][] = array('id' => $image_id, 'error' => sprintf(__('Automatic image resizing failed [%1$s].', 'nggallery'), $image_thumb->errmsg));
134
- $image_thumb = null;
135
  }
136
  }
137
  // check if thumb was generated correctly
138
- $thumb_path = $storage->get_thumb_abspath($image_id);
139
  if (!file_exists($thumb_path)) {
140
- $retval['image_errors'][] = array('id' => $image_id, 'error' => __('Thumbnail generation failed.', 'nggallery'));
141
  }
142
  } else {
143
  $retval['error'] = __('Image generation failed', 'nggallery');
144
- $error = TRUE;
145
  }
146
  } catch (E_NggErrorException $ex) {
147
  $retval['error'] = $ex->getMessage();
148
- $error = TRUE;
149
  if ($created_gallery) {
150
  $gallery_mapper->destroy($gallery_id);
151
  }
152
  } catch (Exception $ex) {
153
- $retval['error'] = __("An unexpected error occured.", 'nggallery');
154
- $retval['error_details'] = $ex->getMessage();
155
- $error = TRUE;
156
  }
157
  }
158
  }
@@ -161,12 +176,10 @@ class A_NextGen_AddGallery_Ajax extends Mixin
161
  $retval['allowed'] = M_Security::is_allowed($action);
162
  $retval['verified_token'] = !$_REQUEST['nonce'] || wp_verify_nonce($_REQUEST['nonce'], $action);
163
  $retval['error'] = __("No permissions to upload images. Try refreshing the page or ensuring that your user account has sufficient roles/privileges.", 'nggallery');
164
- $error = TRUE;
165
  }
166
- if ($error) {
167
- return $retval;
168
- } else {
169
- $retval['gallery_name'] = esc_html($gallery_name);
170
  }
171
  return $retval;
172
  }
@@ -371,17 +384,14 @@ class A_NextGen_AddGallery_Pages extends Mixin
371
  {
372
  function setup()
373
  {
374
- // TODO: remove this if() when plupload is upgraded
375
- // Because iOS cannot work with our current version of plupload we hide this page from iOS users
376
- if (!preg_match('/crios|iP(hone|od|ad)/i', $_SERVER['HTTP_USER_AGENT'])) {
377
- $this->object->add(NGG_ADD_GALLERY_SLUG, array('adapter' => 'A_NextGen_AddGallery_Controller', 'parent' => NGGFOLDER, 'add_menu' => TRUE, 'before' => 'nggallery-manage-gallery'));
378
- }
379
  return $this->call_parent('setup');
380
  }
381
  }
382
  /**
383
  * Class A_Upload_Images_Form
384
  * @mixin C_Form
 
385
  * @adapts I_Form for "upload_images" context
386
  */
387
  class A_Upload_Images_Form extends Mixin
@@ -390,84 +400,31 @@ class A_Upload_Images_Form extends Mixin
390
  {
391
  return __("Upload Images", 'nggallery');
392
  }
393
- function get_i18n_strings()
394
  {
395
- return array('no_image_uploaded' => __('No images were uploaded successfully.', 'nggallery'), 'one_image_uploaded' => __('1 image was uploaded successfully.', 'nggallery'), 'x_images_uploaded' => __('{count} images were uploaded successfully.', 'nggallery'), 'image_errors' => __('The following errors occured:', 'nggallery'), 'manage_gallery' => __('Manage gallery > {name}', 'nggallery'));
 
 
 
 
 
396
  }
397
- /**
398
- * Plupload stores its i18n JS *mostly* as "en.js" or "ar.js" - but some as zh_CN.js so we must check both if the
399
- * first does not match.
400
- *
401
- * @return bool|string
402
- */
403
- function _find_plupload_i18n()
404
  {
405
- $fs = C_Fs::get_instance();
406
- $router = C_Router::get_instance();
407
  $locale = get_locale();
408
- $dir = M_Static_Assets::get_static_abspath('photocrati-nextgen_addgallery_page#plupload-2.1.1/i18n');
409
- $tmp = explode('_', $locale, 2);
410
- $retval = FALSE;
411
- if (file_exists($dir . $tmp[0] . '.js')) {
412
- $retval = $tmp[0];
413
- } else {
414
- if (file_exists($dir . DIRECTORY_SEPARATOR . $tmp[0] . '.js')) {
415
- $retval = $tmp[0];
416
- } else {
417
- if (file_exists($dir . $locale . '.js')) {
418
- $retval = $locale;
419
- }
420
- }
421
- }
422
- if ($retval) {
423
- $retval = M_Static_Assets::get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/i18n/' . $retval . '.js');
424
  }
425
- return $retval;
426
  }
427
- function enqueue_static_resources()
428
  {
429
- wp_enqueue_style('ngg.plupload.queue');
430
- wp_enqueue_script('browserplus');
431
- wp_enqueue_script('ngg.plupload.queue');
432
- wp_localize_script('ngg.plupload.queue', 'NggUploadImages_i18n', $this->object->get_i18n_strings());
433
- $i18n = $this->_find_plupload_i18n();
434
- if (!empty($i18n)) {
435
- wp_enqueue_script('ngg.plupload.i18n', $i18n, array('ngg.plupload.full'), NGG_SCRIPT_VERSION);
436
- }
437
  }
438
  function render()
439
  {
440
- return $this->object->render_partial('photocrati-nextgen_addgallery_page#upload_images', array('plupload_options' => json_encode($this->object->get_plupload_options()), 'galleries' => $this->object->get_galleries(), 'nonce' => M_Security::create_nonce('nextgen_upload_image')), TRUE);
441
- }
442
- function get_plupload_options()
443
- {
444
- $retval = array();
445
- $retval['runtimes'] = 'browserplus,html5,silverlight,html4';
446
- $retval['max_file_size'] = strval(round((int) wp_max_upload_size() / 1024)) . 'kb';
447
- $retval['filters'] = $this->object->get_plupload_filters();
448
- $retval['flash_swf_url'] = includes_url('js/plupload/plupload.flash.swf');
449
- $retval['silverlight_xap_url'] = includes_url('js/plupload/plupload.silverlight.xap');
450
- $retval['debug'] = TRUE;
451
- $retval['prevent_duplicates'] = TRUE;
452
- return $retval;
453
- }
454
- function get_plupload_filters()
455
- {
456
- $retval = new stdClass();
457
- $retval->mime_types = array();
458
- $imgs = new stdClass();
459
- $imgs->title = "Image files";
460
- $imgs->extensions = "jpg,jpeg,gif,png,JPG,JPEG,GIF,PNG";
461
- $retval->mime_types[] = $imgs;
462
- $settings = C_NextGen_Settings::get_instance();
463
- if (!is_multisite() || is_multisite() && $settings->get('wpmuZipUpload')) {
464
- $zips = new stdClass();
465
- $zips->title = "Zip files";
466
- $zips->extensions = "zip,ZIP";
467
- $retval->mime_types[] = $zips;
468
- }
469
- $retval->xss_protection = TRUE;
470
- return $retval;
471
  }
472
  function get_galleries()
473
  {
82
  }
83
  return array('success' => 1, 'cookies' => $_COOKIE);
84
  }
85
+ function create_new_gallery_action()
86
+ {
87
+ $gallery_name = urldecode($this->param('gallery_name'));
88
+ $gallery_mapper = C_Gallery_Mapper::get_instance();
89
+ $retval = ['gallery_name' => esc_html($gallery_name), 'gallery_id' => NULL];
90
+ if (!$this->validate_ajax_request('nextgen_upload_image', TRUE)) {
91
+ $action = 'nextgen_upload_image';
92
+ $retval['allowed'] = M_Security::is_allowed($action);
93
+ $retval['verified_token'] = !$_REQUEST['nonce'] || wp_verify_nonce($_REQUEST['nonce'], $action);
94
+ $retval['error'] = __("No permissions to upload images. Try refreshing the page or ensuring that your user account has sufficient roles/privileges.", 'nggallery');
95
+ return $retval;
96
+ }
97
+ if (strlen($gallery_name) > 0) {
98
+ $gallery = $gallery_mapper->create(['title' => $gallery_name]);
99
+ if (!$gallery->save()) {
100
+ $retval['error'] = $gallery->get_errors();
101
+ } else {
102
+ $retval['gallery_id'] = $gallery->id();
103
+ }
104
+ } else {
105
+ $retval['error'] = __("No gallery name specified", 'nggallery');
106
+ }
107
+ return $retval;
108
+ }
109
  function upload_image_action()
110
  {
 
111
  $created_gallery = FALSE;
112
  $gallery_id = intval($this->param('gallery_id'));
113
  $gallery_name = urldecode($this->param('gallery_name'));
114
  $gallery_mapper = C_Gallery_Mapper::get_instance();
115
+ $retval = ['gallery_name' => esc_html($gallery_name)];
116
  if ($this->validate_ajax_request('nextgen_upload_image', TRUE)) {
117
  if (!class_exists('DOMDocument')) {
118
  $retval['error'] = __("Please ask your hosting provider or system administrator to enable the PHP XML module which is required for image uploads", 'nggallery');
120
  // We need to create a gallery
121
  if ($gallery_id == 0) {
122
  if (strlen($gallery_name) > 0) {
123
+ $gallery = $gallery_mapper->create(['title' => $gallery_name]);
124
  if (!$gallery->save()) {
125
  $retval['error'] = $gallery->get_errors();
 
126
  } else {
127
  $created_gallery = TRUE;
128
  $gallery_id = $gallery->id();
129
  }
130
  } else {
 
131
  $retval['error'] = __("No gallery name specified", 'nggallery');
132
  }
133
  }
134
  // Upload the image to the gallery
135
+ if (empty($retval['error'])) {
136
  $retval['gallery_id'] = $gallery_id;
137
  $settings = C_NextGen_Settings::get_instance();
138
  $storage = C_Gallery_Storage::get_instance();
145
  }
146
  } elseif ($image_id = $storage->upload_image($gallery_id)) {
147
  $retval['image_ids'] = array($image_id);
 
148
  // check if image was resized correctly
149
+ if ($settings->get('imgAutoResize')) {
150
  $image_path = $storage->get_full_abspath($image_id);
151
  $image_thumb = new C_NggLegacy_Thumbnail($image_path, true);
152
  if ($image_thumb->error) {
153
+ $retval['error'] = sprintf(__('Automatic image resizing failed [%1$s].', 'nggallery'), $image_thumb->errmsg);
 
154
  }
155
  }
156
  // check if thumb was generated correctly
157
+ $thumb_path = $storage->get_image_abspath($image_id, 'thumb');
158
  if (!file_exists($thumb_path)) {
159
+ $retval['error'] = __('Thumbnail generation failed.', 'nggallery');
160
  }
161
  } else {
162
  $retval['error'] = __('Image generation failed', 'nggallery');
 
163
  }
164
  } catch (E_NggErrorException $ex) {
165
  $retval['error'] = $ex->getMessage();
 
166
  if ($created_gallery) {
167
  $gallery_mapper->destroy($gallery_id);
168
  }
169
  } catch (Exception $ex) {
170
+ $retval['error'] = sprintf(__("An unexpected error occurred: %s", 'nggallery'), $ex->getMessage());
 
 
171
  }
172
  }
173
  }
176
  $retval['allowed'] = M_Security::is_allowed($action);
177
  $retval['verified_token'] = !$_REQUEST['nonce'] || wp_verify_nonce($_REQUEST['nonce'], $action);
178
  $retval['error'] = __("No permissions to upload images. Try refreshing the page or ensuring that your user account has sufficient roles/privileges.", 'nggallery');
 
179
  }
180
+ // Sending a 500 header is used for uppy.js to determine upload failures
181
+ if (!empty($retval['error'])) {
182
+ header('HTTP/1.1 500 Internal Server Error');
 
183
  }
184
  return $retval;
185
  }
384
  {
385
  function setup()
386
  {
387
+ $this->object->add(NGG_ADD_GALLERY_SLUG, ['adapter' => 'A_NextGen_AddGallery_Controller', 'parent' => NGGFOLDER, 'add_menu' => TRUE, 'before' => 'nggallery-manage-gallery']);
 
 
 
 
388
  return $this->call_parent('setup');
389
  }
390
  }
391
  /**
392
  * Class A_Upload_Images_Form
393
  * @mixin C_Form
394
+ * @property C_MVC_Controller|A_Upload_Images_Form $object
395
  * @adapts I_Form for "upload_images" context
396
  */
397
  class A_Upload_Images_Form extends Mixin
400
  {
401
  return __("Upload Images", 'nggallery');
402
  }
403
+ function enqueue_static_resources()
404
  {
405
+ wp_enqueue_script('uppy');
406
+ wp_enqueue_script('uppy_i18n');
407
+ wp_enqueue_style('uppy');
408
+ wp_enqueue_script('toastify');
409
+ wp_enqueue_style('toastify');
410
+ wp_localize_script('uppy', 'NggUploadImages_i18n', $this->object->get_i18n_strings());
411
  }
412
+ function get_uppy_locale()
 
 
 
 
 
 
413
  {
 
 
414
  $locale = get_locale();
415
+ $mapping = ['ar' => 'ar_SA', 'bg' => 'bg_BG', 'zh-cn' => 'zh_CN', 'zh-tw' => 'zh_TW', 'hr' => 'hr_HR', 'cs' => 'cs_CZ', 'da' => 'da_DK', 'nl' => 'nl_NL', 'en' => 'en_US', 'fi' => 'fi_FI', 'fr' => 'fr_FR', 'gl' => 'gl_ES', 'de' => 'de_DE', 'el' => 'el_GR', 'he' => 'he_IL', 'hu' => 'hu_HU', 'is' => 'is_IS', 'id' => 'id_ID', 'it' => 'it_IT', 'ja' => 'ja_JP', 'ko' => 'ko_KR', 'fa' => 'fa_IR', 'pl' => 'pl_PL', 'pt-br' => 'pt_BR', 'pt' => 'pt_PT', 'ro' => 'ro_RO', 'ru' => 'ru_RU', 'sr' => 'sr_RS', 'sk' => 'sk_SK', 'es' => 'es_ES', 'sv' => 'sv_SE', 'th' => 'th_TH', 'tr' => 'tr_TR', 'vi' => 'vi_VN'];
416
+ if (!empty($mapping[$locale])) {
417
+ $locale = $mapping[$locale];
 
 
 
 
 
 
 
 
 
 
 
 
 
418
  }
419
+ return $locale;
420
  }
421
+ function get_i18n_strings()
422
  {
423
+ return ['locale' => $this->object->get_uppy_locale(), 'no_image_uploaded' => __('No images were uploaded successfully.', 'nggallery'), 'one_image_uploaded' => __('1 image was uploaded successfully.', 'nggallery'), 'x_images_uploaded' => __('{count} images were uploaded successfully.', 'nggallery'), 'manage_gallery' => __('Manage gallery > {name}', 'nggallery')];
 
 
 
 
 
 
 
424
  }
425
  function render()
426
  {
427
+ return $this->object->render_partial('photocrati-nextgen_addgallery_page#upload_images', ['galleries' => $this->object->get_galleries(), 'nonce' => M_Security::create_nonce('nextgen_upload_image'), 'max_size' => wp_max_upload_size()], TRUE);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
428
  }
429
  function get_galleries()
430
  {
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/jquery.filetree/jquery.filetree.js CHANGED
@@ -64,7 +64,7 @@ if(jQuery) (function($){
64
  }
65
 
66
  function bindTree(t) {
67
- $(t).find('LI A').bind(o.folderEvent, function() {
68
  if( $(this).parent().hasClass('directory') ) {
69
  if( $(this).parent().hasClass('collapsed') ) {
70
  // Expand
@@ -87,7 +87,7 @@ if(jQuery) (function($){
87
  return false;
88
  });
89
  // Prevent A from triggering the # on non-click events
90
- if( o.folderEvent.toLowerCase != 'click' ) $(t).find('LI A').bind('click', function() { return false; });
91
  }
92
  // Loading message
93
  $(this).html('<ul class="jqueryFileTree start"><li class="wait">' + o.loadMessage + '<li></ul>');
64
  }
65
 
66
  function bindTree(t) {
67
+ $(t).find('LI A').on(o.folderEvent, function() {
68
  if( $(this).parent().hasClass('directory') ) {
69
  if( $(this).parent().hasClass('collapsed') ) {
70
  // Expand
87
  return false;
88
  });
89
  // Prevent A from triggering the # on non-click events
90
+ if( o.folderEvent.toLowerCase != 'click' ) $(t).find('LI A').on('click', function() { return false; });
91
  }
92
  // Loading message
93
  $(this).html('<ul class="jqueryFileTree start"><li class="wait">' + o.loadMessage + '<li></ul>');
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/jquery.filetree/jquery.filetree.min.js CHANGED
@@ -1 +1 @@
1
- jQuery&&function(e){e.extend(e.fn,{fileTree:function(a,s){if(!a)var a={};void 0==a.root&&(a.root="/"),void 0==a.script&&(a.script="jqueryFileTree.php"),void 0==a.folderEvent&&(a.folderEvent="click"),void 0==a.expandSpeed&&(a.expandSpeed=500),void 0==a.collapseSpeed&&(a.collapseSpeed=500),void 0==a.expandEasing&&(a.expandEasing=null),void 0==a.collapseEasing&&(a.collapseEasing=null),void 0==a.multiFolder&&(a.multiFolder=!0),void 0==a.loadMessage&&(a.loadMessage="Loading..."),void 0==a.post_params&&(a.post_params={}),e(this).each(function(){function i(s,i){e(s).addClass("wait"),e(".jqueryFileTree.start").remove();var d=e.extend(a.post_params,{dir:i});e.post(a.script,d,function(d){"object"!=typeof d&&(d=JSON.parse(d)),data=d.html,e(s).find(".start").html(""),e(s).removeClass("wait").append(data),a.root==i?e(s).find("UL:hidden").show():e(s).find("UL:hidden").slideDown({duration:a.expandSpeed,easing:a.expandEasing}),t(s)})}function t(t){e(t).find("LI A").bind(a.folderEvent,function(){return e(this).parent().hasClass("directory")?(e(this).parent().hasClass("collapsed")?(a.multiFolder||(e(this).parent().parent().find("UL").slideUp({duration:a.collapseSpeed,easing:a.collapseEasing}),e(this).parent().parent().find("LI.directory").removeClass("expanded").addClass("collapsed")),e(this).parent().find("UL").remove(),i(e(this).parent(),escape(e(this).attr("rel").match(/.*\//))),e(this).parent().removeClass("collapsed").addClass("expanded")):(e(this).parent().find("UL").slideUp({duration:a.collapseSpeed,easing:a.collapseEasing}),e(this).parent().removeClass("expanded").addClass("collapsed")),s(e(this).attr("rel"),!0)):s(e(this).attr("rel"),!1),!1}),"click"!=a.folderEvent.toLowerCase&&e(t).find("LI A").bind("click",function(){return!1})}e(this).html('<ul class="jqueryFileTree start"><li class="wait">'+a.loadMessage+"<li></ul>"),i(e(this),escape(a.root))})}})}(jQuery);
1
+ "use strict";function _typeof(e){"@babel/helpers - typeof";return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}jQuery&&function(e){e.extend(e.fn,{fileTree:function(t,a){if(!t)var t={};void 0==t.root&&(t.root="/"),void 0==t.script&&(t.script="jqueryFileTree.php"),void 0==t.folderEvent&&(t.folderEvent="click"),void 0==t.expandSpeed&&(t.expandSpeed=500),void 0==t.collapseSpeed&&(t.collapseSpeed=500),void 0==t.expandEasing&&(t.expandEasing=null),void 0==t.collapseEasing&&(t.collapseEasing=null),void 0==t.multiFolder&&(t.multiFolder=!0),void 0==t.loadMessage&&(t.loadMessage="Loading..."),void 0==t.post_params&&(t.post_params={}),e(this).each(function(){function o(a,o){e(a).addClass("wait"),e(".jqueryFileTree.start").remove();var i=e.extend(t.post_params,{dir:o});e.post(t.script,i,function(i){"object"!=_typeof(i)&&(i=JSON.parse(i)),data=i.html,e(a).find(".start").html(""),e(a).removeClass("wait").append(data),t.root==o?e(a).find("UL:hidden").show():e(a).find("UL:hidden").slideDown({duration:t.expandSpeed,easing:t.expandEasing}),s(a)})}function s(s){e(s).find("LI A").on(t.folderEvent,function(){return e(this).parent().hasClass("directory")?(e(this).parent().hasClass("collapsed")?(t.multiFolder||(e(this).parent().parent().find("UL").slideUp({duration:t.collapseSpeed,easing:t.collapseEasing}),e(this).parent().parent().find("LI.directory").removeClass("expanded").addClass("collapsed")),e(this).parent().find("UL").remove(),o(e(this).parent(),escape(e(this).attr("rel").match(/.*\//))),e(this).parent().removeClass("collapsed").addClass("expanded")):(e(this).parent().find("UL").slideUp({duration:t.collapseSpeed,easing:t.collapseEasing}),e(this).parent().removeClass("expanded").addClass("collapsed")),a(e(this).attr("rel"),!0)):a(e(this).attr("rel"),!1),!1}),"click"!=t.folderEvent.toLowerCase&&e(s).find("LI A").on("click",function(){return!1})}e(this).html('<ul class="jqueryFileTree start"><li class="wait">'+t.loadMessage+"<li></ul>"),o(e(this),escape(t.root))})}})}(jQuery);
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.js CHANGED
@@ -162,14 +162,14 @@
162
  // Show/hide MediaLibrary import buttons if a gallery is selected
163
  ngg_importml.selectors.gallery_select.on('change', function() {
164
  if (parseInt(this.value) == 0) {
165
- ngg_importml.selectors.gallery_name.fadeIn().focus();
166
  if (ngg_importml.selectors.gallery_name.val().length == 0) {
167
  ngg_importml.selectors.ml_btn_import.fadeOut();
168
  ngg_importml.selectors.ml_btn_select.fadeOut();
169
  }
170
  } else {
171
  ngg_importml.selectors.gallery_name.fadeOut(400, function() {
172
- ngg_importml.selectors.gallery_select.focus();
173
  ngg_importml.selectors.ml_btn_select.fadeIn();
174
  if (ngg_importml.import_ids.length > 0) {
175
  ngg_importml.selectors.ml_btn_import.fadeIn();
@@ -195,10 +195,12 @@
195
  }
196
  };
197
 
198
- $(document).ready(function() {
199
- window.ngg_importml = ngg_importml;
200
- ngg_importml.initialize();
201
- window.Frame_Event_Publisher.broadcast();
202
- });
 
 
203
 
204
  })(jQuery);
162
  // Show/hide MediaLibrary import buttons if a gallery is selected
163
  ngg_importml.selectors.gallery_select.on('change', function() {
164
  if (parseInt(this.value) == 0) {
165
+ ngg_importml.selectors.gallery_name.fadeIn().trigger('focus');
166
  if (ngg_importml.selectors.gallery_name.val().length == 0) {
167
  ngg_importml.selectors.ml_btn_import.fadeOut();
168
  ngg_importml.selectors.ml_btn_select.fadeOut();
169
  }
170
  } else {
171
  ngg_importml.selectors.gallery_name.fadeOut(400, function() {
172
+ ngg_importml.selectors.gallery_select.trigger('focus');
173
  ngg_importml.selectors.ml_btn_select.fadeIn();
174
  if (ngg_importml.import_ids.length > 0) {
175
  ngg_importml.selectors.ml_btn_import.fadeIn();
195
  }
196
  };
197
 
198
+ (function($) {
199
+ $(function() {
200
+ window.ngg_importml = ngg_importml;
201
+ ngg_importml.initialize();
202
+ window.Frame_Event_Publisher.broadcast();
203
+ });
204
+ })(jQuery);
205
 
206
  })(jQuery);
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.min.js CHANGED
@@ -1 +1 @@
1
- !function(e){var t={ml_data:null,import_ids:[],selectors:{ml_btn_import:e("#ngg-importML-selected-image-import"),ml_btn_select:e("#ngg-importML-select-opener"),gallery_select:e("#ngg-importML-gallery-id"),gallery_name:e("#ngg-importML-gallery-name")},initialize:function(){this.methods.initialize(),this.methods.set_events()},methods:{initialize:function(){t.ml_dialog=top.wp.media.frames.ngg_importml=top.wp.media({multiple:!0,title:ngg_importml_i18n.title,button:{text:ngg_importml_i18n.button_text}})},urlencode:function(e){return e=(e+"").toString(),encodeURIComponent(e).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")},import:{import_count:0,params:{action:"import_media_library"},start:function(){t.selectors.ml_btn_import.attr("disabled",!0),t.selectors.ml_btn_select.attr("disabled",!0),t.methods.import.params.gallery_id=t.methods.urlencode(t.selectors.gallery_select.val()),t.methods.import.params.gallery_name=t.methods.urlencode(t.selectors.gallery_name.val()),t.progress_bar=e.nggProgressBar({title:ngg_importml_i18n.progress_title,infinite:!0,starting_value:ngg_importml_i18n.in_progress}),e(t).trigger("send_ajax")},done:function(){t.progress_bar.close(100),t.selectors.ml_btn_import.attr("disabled",!1),t.selectors.ml_btn_select.attr("disabled",!1);var l=ngg_importml_i18n.imported_multiple;1==t.methods.import.import_count&&(l=ngg_importml_i18n.imported_singular),l=l.replace("{gid}",t.methods.import.params.gallery_id),l=l.replace("{count}",t.methods.import.import_count),delete t.methods.import.params.gallery_id,delete t.methods.import.params.gallery_name,e.gritter.add({title:ngg_importml_i18n.gritter_title,text:l,sticky:!0}),t.methods.import.import_count=0,t.ml_dialog.trigger("reset"),t.import_ids=[],t.selectors.ml_btn_import.fadeOut()},send_ajax:function(){var l=t.methods.import.params;l.nonce=ngg_importml_i18n.nonce,l.attachment_ids=[t.import_ids.pop()],e.post(photocrati_ajax.url,l,function(l){if(void 0===l.error){if(t.methods.import.import_count++,0==t.selectors.gallery_select.find('option[value="'+l.gallery_id+'"]').length){t.methods.import.params.gallery_id=l.gallery_id;var r=e("<option/>").attr("value",l.gallery_id).html(l.gallery_name);t.selectors.gallery_select.append(r),t.selectors.gallery_select.val(l.gallery_id),r.prop("selected",!0),t.selectors.gallery_name.val("").fadeOut()}}else e.gritter.add({title:ngg_importml_i18n.gritter_error,text:l.error,sticky:!0});0==t.import_ids.length?t.methods.import.done():e(t).trigger("send_ajax")},"json")}},set_events:function(){e(t).on("send_ajax",function(){t.methods.import.send_ajax()}),t.ml_dialog.on("select",function(){t.import_ids=[],t.ml_data=t.ml_dialog.state().get("selection"),t.ml_data.map(function(e){e=e.toJSON(),t.import_ids.push(e.id)});var e=ngg_importml_i18n.import_multiple.replace("%s",t.import_ids.length);1==t.import_ids.length&&(e=ngg_importml_i18n.import_singular),t.selectors.ml_btn_import.html(e),t.selectors.ml_btn_import.fadeIn()}),t.selectors.ml_btn_select.on("click",function(e){e.preventDefault(),t.ml_dialog.open()}),t.selectors.ml_btn_import.on("click",function(e){e.preventDefault(),t.methods.import.start()}),t.selectors.gallery_select.on("change",function(){0==parseInt(this.value)?(t.selectors.gallery_name.fadeIn().focus(),0==t.selectors.gallery_name.val().length&&(t.selectors.ml_btn_import.fadeOut(),t.selectors.ml_btn_select.fadeOut())):t.selectors.gallery_name.fadeOut(400,function(){t.selectors.gallery_select.focus(),t.selectors.ml_btn_select.fadeIn(),t.import_ids.length>0&&t.selectors.ml_btn_import.fadeIn()})}),t.selectors.gallery_name.on("keyup",function(){t.selectors.gallery_name.val().length>0?(t.selectors.gallery_name.removeClass("error"),t.selectors.ml_btn_select.fadeIn(),t.import_ids.length>0&&t.selectors.ml_btn_import.fadeIn()):(t.selectors.ml_btn_import.fadeOut(),t.selectors.ml_btn_select.fadeOut())})}}};e(document).ready(function(){window.ngg_importml=t,t.initialize(),window.Frame_Event_Publisher.broadcast()})}(jQuery);
1
+ "use strict";!function(e){var t={ml_data:null,import_ids:[],selectors:{ml_btn_import:e("#ngg-importML-selected-image-import"),ml_btn_select:e("#ngg-importML-select-opener"),gallery_select:e("#ngg-importML-gallery-id"),gallery_name:e("#ngg-importML-gallery-name")},initialize:function(){this.methods.initialize(),this.methods.set_events()},methods:{initialize:function(){t.ml_dialog=top.wp.media.frames.ngg_importml=top.wp.media({multiple:!0,title:ngg_importml_i18n.title,button:{text:ngg_importml_i18n.button_text}})},urlencode:function(e){return e=(e+"").toString(),encodeURIComponent(e).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")},import:{import_count:0,params:{action:"import_media_library"},start:function(){t.selectors.ml_btn_import.attr("disabled",!0),t.selectors.ml_btn_select.attr("disabled",!0),t.methods.import.params.gallery_id=t.methods.urlencode(t.selectors.gallery_select.val()),t.methods.import.params.gallery_name=t.methods.urlencode(t.selectors.gallery_name.val()),t.progress_bar=e.nggProgressBar({title:ngg_importml_i18n.progress_title,infinite:!0,starting_value:ngg_importml_i18n.in_progress}),e(t).trigger("send_ajax")},done:function(){t.progress_bar.close(100),t.selectors.ml_btn_import.attr("disabled",!1),t.selectors.ml_btn_select.attr("disabled",!1);var l=ngg_importml_i18n.imported_multiple;1==t.methods.import.import_count&&(l=ngg_importml_i18n.imported_singular),l=l.replace("{gid}",t.methods.import.params.gallery_id),l=l.replace("{count}",t.methods.import.import_count),delete t.methods.import.params.gallery_id,delete t.methods.import.params.gallery_name,e.gritter.add({title:ngg_importml_i18n.gritter_title,text:l,sticky:!0}),t.methods.import.import_count=0,t.ml_dialog.trigger("reset"),t.import_ids=[],t.selectors.ml_btn_import.fadeOut()},send_ajax:function(){var l=t.methods.import.params;l.nonce=ngg_importml_i18n.nonce,l.attachment_ids=[t.import_ids.pop()],e.post(photocrati_ajax.url,l,function(l){if(void 0===l.error){if(t.methods.import.import_count++,0==t.selectors.gallery_select.find('option[value="'+l.gallery_id+'"]').length){t.methods.import.params.gallery_id=l.gallery_id;var r=e("<option/>").attr("value",l.gallery_id).html(l.gallery_name);t.selectors.gallery_select.append(r),t.selectors.gallery_select.val(l.gallery_id),r.prop("selected",!0),t.selectors.gallery_name.val("").fadeOut()}}else e.gritter.add({title:ngg_importml_i18n.gritter_error,text:l.error,sticky:!0});0==t.import_ids.length?t.methods.import.done():e(t).trigger("send_ajax")},"json")}},set_events:function(){e(t).on("send_ajax",function(){t.methods.import.send_ajax()}),t.ml_dialog.on("select",function(){t.import_ids=[],t.ml_data=t.ml_dialog.state().get("selection"),t.ml_data.map(function(e){e=e.toJSON(),t.import_ids.push(e.id)});var e=ngg_importml_i18n.import_multiple.replace("%s",t.import_ids.length);1==t.import_ids.length&&(e=ngg_importml_i18n.import_singular),t.selectors.ml_btn_import.html(e),t.selectors.ml_btn_import.fadeIn()}),t.selectors.ml_btn_select.on("click",function(e){e.preventDefault(),t.ml_dialog.open()}),t.selectors.ml_btn_import.on("click",function(e){e.preventDefault(),t.methods.import.start()}),t.selectors.gallery_select.on("change",function(){0==parseInt(this.value)?(t.selectors.gallery_name.fadeIn().trigger("focus"),0==t.selectors.gallery_name.val().length&&(t.selectors.ml_btn_import.fadeOut(),t.selectors.ml_btn_select.fadeOut())):t.selectors.gallery_name.fadeOut(400,function(){t.selectors.gallery_select.trigger("focus"),t.selectors.ml_btn_select.fadeIn(),t.import_ids.length>0&&t.selectors.ml_btn_import.fadeIn()})}),t.selectors.gallery_name.on("keyup",function(){t.selectors.gallery_name.val().length>0?(t.selectors.gallery_name.removeClass("error"),t.selectors.ml_btn_select.fadeIn(),t.import_ids.length>0&&t.selectors.ml_btn_import.fadeIn()):(t.selectors.ml_btn_import.fadeOut(),t.selectors.ml_btn_select.fadeOut())})}}};!function(e){e(function(){window.ngg_importml=t,t.initialize(),window.Frame_Event_Publisher.broadcast()})}(jQuery)}(jQuery);
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/Moxie.xap DELETED
Binary file
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ar.js DELETED
@@ -1,2 +0,0 @@
1
- // Arabic (ar)
2
- ngg_plupload.addI18n({"Stop Upload":"أيقاف التحميل","Upload URL might be wrong or doesn't exist.":"عنوان التحميل ربما يكون خاطئ أو غير متوفر","tb":"تيرابايت","Size":"الحجم","Close":"أغلاق","Init error.":"خطأ في تهيئة","Add files to the upload queue and click the start button.":"أضف ملفات إلى القائمة إنتظار التحميل ثم أضغط على زر البداية","Filename":"أسم الملف","Image format either wrong or not supported.":"صيغة الصورة أما خطاء أو غير مدعومه","Status":"الحالة","HTTP Error.":"خطأ في برتوكول نقل الملفات","Start Upload":"أبدا التحميل","mb":"ميجابايت","kb":"كيلوبايت","Duplicate file error.":"خطاء في تكرار الملف","File size error.":"خطأ في حجم الملف","N/A":"لا شي","gb":"جيجابايت","Error: Invalid file extension:":"خطاء : أمتداد الملف غير صالح :","Select files":"أختر الملفات","%s already present in the queue.":"%s الملف موجود بالفعل في قائمة الانتظار","File: %s":"ملف: %s","b":"بايت","Uploaded %d/%d files":"تحميل %d/%d ملف","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"العناصر المقبوله لتحميل هي %d ملف في هذا الوقت. الملفات الاضافية أزيلة.","%d files queued":"%d الملفات في قائمة الانتظار","File: %s, size: %d, max file size: %d":"ملف: %s, أقصى حجم للملف: %d, حجم: %d","Drag files here.":"سحب الملف هنا","Runtime ran out of available memory.":"الذاكرة المتوفره أنتهت لمدة التشغيل","File count error.":"خطاء في عد الملفات","File extension error.":"خطأ في أمتداد الملف","Error: File too large:":" خطاء : حجم الملف كبير :","Add Files":"أضف ملفات"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ar.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"أيقاف التحميل","Upload URL might be wrong or doesn't exist.":"عنوان التحميل ربما يكون خاطئ أو غير متوفر",tb:"تيرابايت",Size:"الحجم",Close:"أغلاق","Init error.":"خطأ في تهيئة","Add files to the upload queue and click the start button.":"أضف ملفات إلى القائمة إنتظار التحميل ثم أضغط على زر البداية",Filename:"أسم الملف","Image format either wrong or not supported.":"صيغة الصورة أما خطاء أو غير مدعومه",Status:"الحالة","HTTP Error.":"خطأ في برتوكول نقل الملفات","Start Upload":"أبدا التحميل",mb:"ميجابايت",kb:"كيلوبايت","Duplicate file error.":"خطاء في تكرار الملف","File size error.":"خطأ في حجم الملف","N/A":"لا شي",gb:"جيجابايت","Error: Invalid file extension:":"خطاء : أمتداد الملف غير صالح :","Select files":"أختر الملفات","%s already present in the queue.":"%s الملف موجود بالفعل في قائمة الانتظار","File: %s":"ملف: %s",b:"بايت","Uploaded %d/%d files":"تحميل %d/%d ملف","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"العناصر المقبوله لتحميل هي %d ملف في هذا الوقت. الملفات الاضافية أزيلة.","%d files queued":"%d الملفات في قائمة الانتظار","File: %s, size: %d, max file size: %d":"ملف: %s, أقصى حجم للملف: %d, حجم: %d","Drag files here.":"سحب الملف هنا","Runtime ran out of available memory.":"الذاكرة المتوفره أنتهت لمدة التشغيل","File count error.":"خطاء في عد الملفات","File extension error.":"خطأ في أمتداد الملف","Error: File too large:":" خطاء : حجم الملف كبير :","Add Files":"أضف ملفات"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/bs.js DELETED
@@ -1,2 +0,0 @@
1
- // Bosnian (bs)
2
- ngg_plupload.addI18n({"Stop Upload":"Prekini dodavanje","Upload URL might be wrong or doesn't exist.":"URL za dodavanje je neispravan ili ne postoji.","tb":"tb","Size":"Veličina","Close":"Zatvori","Init error.":"Inicijalizacijska greška.","Add files to the upload queue and click the start button.":"Dodajte datoteke u red i kliknite na dugme za pokretanje.","Filename":"Naziv datoteke","Image format either wrong or not supported.":"Format slike je neispravan ili nije podržan.","Status":"Status","HTTP Error.":"HTTP greška.","Start Upload":"Započni dodavanje","mb":"mb","kb":"kb","Duplicate file error.":"Dupla datoteka.","File size error.":"Greška u veličini datoteke.","N/A":"N/A","gb":"gb","Error: Invalid file extension:":"Greška! Neispravan ekstenzija datoteke:","Select files":"Odaberite datoteke","%s already present in the queue.":"%s se već nalazi u redu.","File: %s":"Datoteka: %s","b":"b","Uploaded %d/%d files":"Dodano %d/%d datoteka","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Dodavanje trenutno dozvoljava samo %d datoteka istovremeno. Dodatne datoteke su uklonjene.","%d files queued":"%d datoteka čeka","File: %s, size: %d, max file size: %d":"Datoteka: %s, veličina: %d, maksimalna veličina: %d","Drag files here.":"Dovucite datoteke ovdje.","Runtime ran out of available memory.":"Nema više dostupne memorije.","File count error.":"Greška u brojanju datoeka.","File extension error.":"Greška u ekstenziji datoteke.","Error: File too large:":"Greška! Datoteka je prevelika:","Add Files":"Dodaj datoteke"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/bs.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Prekini dodavanje","Upload URL might be wrong or doesn't exist.":"URL za dodavanje je neispravan ili ne postoji.",tb:"tb",Size:"Veličina",Close:"Zatvori","Init error.":"Inicijalizacijska greška.","Add files to the upload queue and click the start button.":"Dodajte datoteke u red i kliknite na dugme za pokretanje.",Filename:"Naziv datoteke","Image format either wrong or not supported.":"Format slike je neispravan ili nije podržan.",Status:"Status","HTTP Error.":"HTTP greška.","Start Upload":"Započni dodavanje",mb:"mb",kb:"kb","Duplicate file error.":"Dupla datoteka.","File size error.":"Greška u veličini datoteke.","N/A":"N/A",gb:"gb","Error: Invalid file extension:":"Greška! Neispravan ekstenzija datoteke:","Select files":"Odaberite datoteke","%s already present in the queue.":"%s se već nalazi u redu.","File: %s":"Datoteka: %s",b:"b","Uploaded %d/%d files":"Dodano %d/%d datoteka","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Dodavanje trenutno dozvoljava samo %d datoteka istovremeno. Dodatne datoteke su uklonjene.","%d files queued":"%d datoteka čeka","File: %s, size: %d, max file size: %d":"Datoteka: %s, veličina: %d, maksimalna veličina: %d","Drag files here.":"Dovucite datoteke ovdje.","Runtime ran out of available memory.":"Nema više dostupne memorije.","File count error.":"Greška u brojanju datoeka.","File extension error.":"Greška u ekstenziji datoteke.","Error: File too large:":"Greška! Datoteka je prevelika:","Add Files":"Dodaj datoteke"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ca.js DELETED
@@ -1,2 +0,0 @@
1
- // Catalan (ca)
2
- ngg_plupload.addI18n({"Stop Upload":"","Upload URL might be wrong or doesn't exist.":"","tb":"","Size":"","Close":"","Init error.":"","Add files to the upload queue and click the start button.":"","Filename":"","Image format either wrong or not supported.":"","Status":"","HTTP Error.":"","Start Upload":"","mb":"","kb":"","Duplicate file error.":"","File size error.":"","N/A":"","gb":"","Error: Invalid file extension:":"","Select files":"","%s already present in the queue.":"","File: %s":"","b":"","Uploaded %d/%d files":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"","%d files queued":"","File: %s, size: %d, max file size: %d":"","Drag files here.":"","Runtime ran out of available memory.":"","File count error.":"","File extension error.":"","Error: File too large:":"","Add Files":""});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ca.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"","Upload URL might be wrong or doesn't exist.":"",tb:"",Size:"",Close:"","Init error.":"","Add files to the upload queue and click the start button.":"",Filename:"","Image format either wrong or not supported.":"",Status:"","HTTP Error.":"","Start Upload":"",mb:"",kb:"","Duplicate file error.":"","File size error.":"","N/A":"",gb:"","Error: Invalid file extension:":"","Select files":"","%s already present in the queue.":"","File: %s":"",b:"","Uploaded %d/%d files":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"","%d files queued":"","File: %s, size: %d, max file size: %d":"","Drag files here.":"","Runtime ran out of available memory.":"","File count error.":"","File extension error.":"","Error: File too large:":"","Add Files":""});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/cs.js DELETED
@@ -1,2 +0,0 @@
1
- // Czech (cs)
2
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"","Size":"Velikost","Close":"Close","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Přidejte soubory do fronty a pak spusťte nahrávání.","Filename":"Název souboru","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Status","HTTP Error.":"HTTP Error.","Start Upload":"Spustit nahrávání","mb":"","kb":"","Duplicate file error.":"","File size error.":"File size error.","N/A":"N/A","gb":"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Vyberte soubory","%s already present in the queue.":"","File: %s":"File: %s","b":"","Uploaded %d/%d files":"Nahráno %d/%d souborů","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"","Drag files here.":"Sem přetáhněte soubory.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.","Error: File too large:":"Error: File too large:","Add Files":"Přidat soubory"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/cs.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"",Size:"Velikost",Close:"Close","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Přidejte soubory do fronty a pak spusťte nahrávání.",Filename:"Název souboru","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Status","HTTP Error.":"HTTP Error.","Start Upload":"Spustit nahrávání",mb:"",kb:"","Duplicate file error.":"","File size error.":"File size error.","N/A":"N/A",gb:"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Vyberte soubory","%s already present in the queue.":"","File: %s":"File: %s",b:"","Uploaded %d/%d files":"Nahráno %d/%d souborů","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"","Drag files here.":"Sem přetáhněte soubory.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.","Error: File too large:":"Error: File too large:","Add Files":"Přidat soubory"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/cy.js DELETED
@@ -1,2 +0,0 @@
1
- // Welsh (cy)
2
- ngg_plupload.addI18n({"Stop Upload":"Atal Lanlwytho","Upload URL might be wrong or doesn't exist.":"URL y lanlwythiad ynb anghywir neu ddim yn bodoli.","tb":"tb","Size":"Maint","Close":"Cau","Init error.":"Gwall cych.","Add files to the upload queue and click the start button.":"Ychwanegwch ffeiliau i'r ciw lanlwytho a chlicio'r botwm dechrau.","Filename":"Enw'r ffeil","Image format either wrong or not supported.":"Fformat delwedd yn anghywir neu heb ei gynnal.","Status":"Statws","HTTP Error.":"Gwall HTTP.","Start Upload":"Dechrau Lanlwytho","mb":"mb","kb":"kb","Duplicate file error.":"Gwall ffeil ddyblyg.","File size error.":"Gwall maint ffeil.","N/A":"Dd/A","gb":"gb","Error: Invalid file extension:":"Gwall: estyniad ffeil annilys:","Select files":"Dewis ffeiliau","%s already present in the queue.":"%s yn y ciw yn barod.","File: %s":"Ffeil: %s","b":"b","Uploaded %d/%d files":"Lanlwythwyd %d/%d ffeil","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Mae'r elfen lanlwytho yn derbyn %d ffeil ar y tro. Caiff ffeiliau ychwanegol eu tynnu.","%d files queued":"%d ffeil mewn ciw","File: %s, size: %d, max file size: %d":"Ffeil: %s, maint: %d, maint mwyaf ffeil: %d","Drag files here.":"Llusgwch ffeiliau yma.","Runtime ran out of available memory.":"Allan o gof.","File count error.":"Gwall cyfri ffeiliau.","File extension error.":"Gwall estyniad ffeil.","Error: File too large:":"Gwall: Ffeil yn rhy fawr:","Add Files":"Ychwanegu Ffeiliau"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/cy.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Atal Lanlwytho","Upload URL might be wrong or doesn't exist.":"URL y lanlwythiad ynb anghywir neu ddim yn bodoli.",tb:"tb",Size:"Maint",Close:"Cau","Init error.":"Gwall cych.","Add files to the upload queue and click the start button.":"Ychwanegwch ffeiliau i'r ciw lanlwytho a chlicio'r botwm dechrau.",Filename:"Enw'r ffeil","Image format either wrong or not supported.":"Fformat delwedd yn anghywir neu heb ei gynnal.",Status:"Statws","HTTP Error.":"Gwall HTTP.","Start Upload":"Dechrau Lanlwytho",mb:"mb",kb:"kb","Duplicate file error.":"Gwall ffeil ddyblyg.","File size error.":"Gwall maint ffeil.","N/A":"Dd/A",gb:"gb","Error: Invalid file extension:":"Gwall: estyniad ffeil annilys:","Select files":"Dewis ffeiliau","%s already present in the queue.":"%s yn y ciw yn barod.","File: %s":"Ffeil: %s",b:"b","Uploaded %d/%d files":"Lanlwythwyd %d/%d ffeil","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Mae'r elfen lanlwytho yn derbyn %d ffeil ar y tro. Caiff ffeiliau ychwanegol eu tynnu.","%d files queued":"%d ffeil mewn ciw","File: %s, size: %d, max file size: %d":"Ffeil: %s, maint: %d, maint mwyaf ffeil: %d","Drag files here.":"Llusgwch ffeiliau yma.","Runtime ran out of available memory.":"Allan o gof.","File count error.":"Gwall cyfri ffeiliau.","File extension error.":"Gwall estyniad ffeil.","Error: File too large:":"Gwall: Ffeil yn rhy fawr:","Add Files":"Ychwanegu Ffeiliau"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/da.js DELETED
@@ -1,2 +0,0 @@
1
- // Danish (da)
2
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"","Size":"Størrelse","Close":"Close","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Tilføj filer til køen","Filename":"Filnavn","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Status","HTTP Error.":"HTTP Error.","Start Upload":"Start Upload","mb":"","kb":"","Duplicate file error.":"","File size error.":"File size error.","N/A":"N/A","gb":"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Vælg filer","%s already present in the queue.":"","File: %s":"File: %s","b":"","Uploaded %d/%d files":"Uploaded %d/%d files","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"","Drag files here.":"Træk filer her.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/da.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"",Size:"Størrelse",Close:"Close","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Tilføj filer til køen",Filename:"Filnavn","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Status","HTTP Error.":"HTTP Error.","Start Upload":"Start Upload",mb:"",kb:"","Duplicate file error.":"","File size error.":"File size error.","N/A":"N/A",gb:"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Vælg filer","%s already present in the queue.":"","File: %s":"File: %s",b:"","Uploaded %d/%d files":"Uploaded %d/%d files","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"","Drag files here.":"Træk filer her.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/de.js DELETED
@@ -1,2 +0,0 @@
1
- // German (de)
2
- ngg_plupload.addI18n({"Stop Upload":"Hochladen stoppen","Upload URL might be wrong or doesn't exist.":"Upload-URL ist falsch oder existiert nicht.","tb":"TB","Size":"Gr&ouml;&szlig;e","Close":"Schließen","Init error.":"Initialisierungsfehler","Add files to the upload queue and click the start button.":"Dateien hinzuf&uuml;gen und auf 'Hochladen' klicken.","Filename":"Dateiname","Image format either wrong or not supported.":"Bildformat falsch oder nicht unterst&uuml;tzt.","Status":"Status","HTTP Error.":"HTTP-Fehler","Start Upload":"Upload beginnen","mb":"MB","kb":"kB","Duplicate file error.":"","File size error.":"Fehler bei Dateigr&ouml;ße","N/A":"Nicht verf&uuml;gbar","gb":"GB","Error: Invalid file extension:":"Fehler: Ungültige Dateiendung:","Select files":"Dateien hochladen","%s already present in the queue.":"","File: %s":"Datei: %s","b":"B","Uploaded %d/%d files":"%d/%d Dateien sind hochgeladen","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Der Uploader akzeptiert nur %d Datei(en) pro Durchgang. Überzählige Dateien wurden abgetrennt.","%d files queued":"%d Dateien in der Warteschlange","File: %s, size: %d, max file size: %d":"Datei: %s, Größe: %d, maximale Dateigröße: %d","Drag files here.":"Ziehen Sie die Dateien hier hin","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"Fehler bei Dateiendung","Error: File too large:":"Fehler: Datei zu groß:","Add Files":"Dateien hinzufügen"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/de.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Hochladen stoppen","Upload URL might be wrong or doesn't exist.":"Upload-URL ist falsch oder existiert nicht.",tb:"TB",Size:"Gr&ouml;&szlig;e",Close:"Schließen","Init error.":"Initialisierungsfehler","Add files to the upload queue and click the start button.":"Dateien hinzuf&uuml;gen und auf 'Hochladen' klicken.",Filename:"Dateiname","Image format either wrong or not supported.":"Bildformat falsch oder nicht unterst&uuml;tzt.",Status:"Status","HTTP Error.":"HTTP-Fehler","Start Upload":"Upload beginnen",mb:"MB",kb:"kB","Duplicate file error.":"","File size error.":"Fehler bei Dateigr&ouml;ße","N/A":"Nicht verf&uuml;gbar",gb:"GB","Error: Invalid file extension:":"Fehler: Ungültige Dateiendung:","Select files":"Dateien hochladen","%s already present in the queue.":"","File: %s":"Datei: %s",b:"B","Uploaded %d/%d files":"%d/%d Dateien sind hochgeladen","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Der Uploader akzeptiert nur %d Datei(en) pro Durchgang. Überzählige Dateien wurden abgetrennt.","%d files queued":"%d Dateien in der Warteschlange","File: %s, size: %d, max file size: %d":"Datei: %s, Größe: %d, maximale Dateigröße: %d","Drag files here.":"Ziehen Sie die Dateien hier hin","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"Fehler bei Dateiendung","Error: File too large:":"Fehler: Datei zu groß:","Add Files":"Dateien hinzufügen"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/el.js DELETED
@@ -1,2 +0,0 @@
1
- // Greek (el)
2
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"","Size":"Μέγεθος","Close":"Close","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Προσθήκη αρχείων στην ουρά μεταφόρτωσης","Filename":"Όνομα αρχείου","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Κατάσταση","HTTP Error.":"HTTP Error.","Start Upload":"Εκκίνηση μεταφόρτωσης","mb":"","kb":"","Duplicate file error.":"","File size error.":"File size error.","N/A":"N/A","gb":"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Επιλέξτε Αρχεία","%s already present in the queue.":"","File: %s":"File: %s","b":"","Uploaded %d/%d files":"Ανέβηκαν %d/%d αρχεία","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"","Drag files here.":"Σύρετε αρχεία εδώ","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.","Error: File too large:":"Error: File too large:","Add Files":"Προσθέστε αρχεία"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/el.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"",Size:"Μέγεθος",Close:"Close","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Προσθήκη αρχείων στην ουρά μεταφόρτωσης",Filename:"Όνομα αρχείου","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Κατάσταση","HTTP Error.":"HTTP Error.","Start Upload":"Εκκίνηση μεταφόρτωσης",mb:"",kb:"","Duplicate file error.":"","File size error.":"File size error.","N/A":"N/A",gb:"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Επιλέξτε Αρχεία","%s already present in the queue.":"","File: %s":"File: %s",b:"","Uploaded %d/%d files":"Ανέβηκαν %d/%d αρχεία","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"","Drag files here.":"Σύρετε αρχεία εδώ","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.","Error: File too large:":"Error: File too large:","Add Files":"Προσθέστε αρχεία"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/en.js DELETED
@@ -1,2 +0,0 @@
1
- // English (en)
2
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"tb","Size":"Size","Close":"Close","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Add files to the upload queue and click the start button.","Filename":"Filename","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Status","HTTP Error.":"HTTP Error.","Start Upload":"Start Upload","mb":"mb","kb":"kb","Duplicate file error.":"Duplicate file error.","File size error.":"File size error.","N/A":"N/A","gb":"gb","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Select files","%s already present in the queue.":"%s already present in the queue.","File: %s":"File: %s","b":"b","Uploaded %d/%d files":"Uploaded %d/%d files","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"File: %s, size: %d, max file size: %d","Drag files here.":"Drag files here.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/en.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"tb",Size:"Size",Close:"Close","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Add files to the upload queue and click the start button.",Filename:"Filename","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Status","HTTP Error.":"HTTP Error.","Start Upload":"Start Upload",mb:"mb",kb:"kb","Duplicate file error.":"Duplicate file error.","File size error.":"File size error.","N/A":"N/A",gb:"gb","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Select files","%s already present in the queue.":"%s already present in the queue.","File: %s":"File: %s",b:"b","Uploaded %d/%d files":"Uploaded %d/%d files","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"File: %s, size: %d, max file size: %d","Drag files here.":"Drag files here.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/es.js DELETED
@@ -1,2 +0,0 @@
1
- // Spanish (es)
2
- ngg_plupload.addI18n({"Stop Upload":"Detener Subida.","Upload URL might be wrong or doesn't exist.":"URL de carga inexistente.","tb":"TB","Size":"Tamaño","Close":"Cerrar","Init error.":"Error de inicialización.","Add files to the upload queue and click the start button.":"Agregue archivos a la lista de subida y pulse clic en el botón de Iniciar carga","Filename":"Nombre de archivo","Image format either wrong or not supported.":"Formato de imagen no soportada.","Status":"Estado","HTTP Error.":"Error de HTTP.","Start Upload":"Iniciar carga","mb":"MB","kb":"KB","Duplicate file error.":"Error, archivo duplicado","File size error.":"Error de tamaño de archivo.","N/A":"No disponible","gb":"GB","Error: Invalid file extension:":"Error: Extensión de archivo inválida:","Select files":"Elija archivos","%s already present in the queue.":"%s ya se encuentra en la lista.","File: %s":"Archivo: %s","b":"B","Uploaded %d/%d files":"Subidos %d/%d archivos","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Se aceptan sólo %d archivo(s) al tiempo. Más, no se tienen en cuenta.","%d files queued":"%d archivos en cola.","File: %s, size: %d, max file size: %d":"Archivo: %s, tamaño: %d, tamaño máximo de archivo: %d","Drag files here.":"Arrastre archivos aquí","Runtime ran out of available memory.":"No hay memoria disponible.","File count error.":"Error en contador de archivos.","File extension error.":"Error de extensión de archivo.","Error: File too large:":"Error: archivo demasiado grande:","Add Files":"Agregar archivos"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/es.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Detener Subida.","Upload URL might be wrong or doesn't exist.":"URL de carga inexistente.",tb:"TB",Size:"Tamaño",Close:"Cerrar","Init error.":"Error de inicialización.","Add files to the upload queue and click the start button.":"Agregue archivos a la lista de subida y pulse clic en el botón de Iniciar carga",Filename:"Nombre de archivo","Image format either wrong or not supported.":"Formato de imagen no soportada.",Status:"Estado","HTTP Error.":"Error de HTTP.","Start Upload":"Iniciar carga",mb:"MB",kb:"KB","Duplicate file error.":"Error, archivo duplicado","File size error.":"Error de tamaño de archivo.","N/A":"No disponible",gb:"GB","Error: Invalid file extension:":"Error: Extensión de archivo inválida:","Select files":"Elija archivos","%s already present in the queue.":"%s ya se encuentra en la lista.","File: %s":"Archivo: %s",b:"B","Uploaded %d/%d files":"Subidos %d/%d archivos","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Se aceptan sólo %d archivo(s) al tiempo. Más, no se tienen en cuenta.","%d files queued":"%d archivos en cola.","File: %s, size: %d, max file size: %d":"Archivo: %s, tamaño: %d, tamaño máximo de archivo: %d","Drag files here.":"Arrastre archivos aquí","Runtime ran out of available memory.":"No hay memoria disponible.","File count error.":"Error en contador de archivos.","File extension error.":"Error de extensión de archivo.","Error: File too large:":"Error: archivo demasiado grande:","Add Files":"Agregar archivos"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/et.js DELETED
@@ -1,2 +0,0 @@
1
- // Estonian (et)
2
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Üleslaadimise URL võib olla vale või seda pole.","tb":"","Size":"Suurus","Close":"Sulge","Init error.":"Lähtestamise viga.","Add files to the upload queue and click the start button.":"Lisa failid üleslaadimise järjekorda ja klõpsa alustamise nupule.","Filename":"Failinimi","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Olek","HTTP Error.":"HTTP ühenduse viga.","Start Upload":"Start Upload","mb":"","kb":"","Duplicate file error.":"","File size error.":"Failisuuruse viga.","N/A":"N/A","gb":"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Vali faile","%s already present in the queue.":"","File: %s":"Fail: %s","b":"","Uploaded %d/%d files":"Üles laaditud %d/%d","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Üleslaadimise element saab vastu võtta ainult %d faili ühe korraga. Ülejäänud failid jäetakse laadimata.","%d files queued":"Järjekorras on %d faili","File: %s, size: %d, max file size: %d":"","Drag files here.":"Lohista failid siia.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"Failide arvu viga.","File extension error.":"Faililaiendi viga.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/et.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Üleslaadimise URL võib olla vale või seda pole.",tb:"",Size:"Suurus",Close:"Sulge","Init error.":"Lähtestamise viga.","Add files to the upload queue and click the start button.":"Lisa failid üleslaadimise järjekorda ja klõpsa alustamise nupule.",Filename:"Failinimi","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Olek","HTTP Error.":"HTTP ühenduse viga.","Start Upload":"Start Upload",mb:"",kb:"","Duplicate file error.":"","File size error.":"Failisuuruse viga.","N/A":"N/A",gb:"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Vali faile","%s already present in the queue.":"","File: %s":"Fail: %s",b:"","Uploaded %d/%d files":"Üles laaditud %d/%d","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Üleslaadimise element saab vastu võtta ainult %d faili ühe korraga. Ülejäänud failid jäetakse laadimata.","%d files queued":"Järjekorras on %d faili","File: %s, size: %d, max file size: %d":"","Drag files here.":"Lohista failid siia.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"Failide arvu viga.","File extension error.":"Faililaiendi viga.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/fa.js DELETED
@@ -1,2 +0,0 @@
1
- // Persian (fa)
2
- ngg_plupload.addI18n({"Stop Upload":"توقف انتقال","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"","Size":"سایز","Close":"بستن","Init error.":"خطا در استارت اسکریپت","Add files to the upload queue and click the start button.":"اضافه کنید فایل ها را به صف آپلود و دکمه شروع را کلیک کنید.","Filename":"نام فایل","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"وضعیت","HTTP Error.":"HTTP خطای","Start Upload":"شروع انتقال","mb":"","kb":"","Duplicate file error.":"","File size error.":"خطای سایز فایل","N/A":"N/A","gb":"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"انتخاب فایل","%s already present in the queue.":"","File: %s":" فایل ها : %s","b":"","Uploaded %d/%d files":"منتقل شد %d/%d از فایلها","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"عنصر بارگذار فقط %d فایل رو در یک زمان می پذیرد. سایر فایل ها مجرد از این موضوع هستند.","%d files queued":"%d فایل در صف","File: %s, size: %d, max file size: %d":"","Drag files here.":"بکشید فایل ها رو به اینجا","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"خطای تعداد فایل","File extension error.":"خطا پیشوند فایل","Error: File too large:":"Error: File too large:","Add Files":"افزودن فایل"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/fa.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"توقف انتقال","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"",Size:"سایز",Close:"بستن","Init error.":"خطا در استارت اسکریپت","Add files to the upload queue and click the start button.":"اضافه کنید فایل ها را به صف آپلود و دکمه شروع را کلیک کنید.",Filename:"نام فایل","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"وضعیت","HTTP Error.":"HTTP خطای","Start Upload":"شروع انتقال",mb:"",kb:"","Duplicate file error.":"","File size error.":"خطای سایز فایل","N/A":"N/A",gb:"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"انتخاب فایل","%s already present in the queue.":"","File: %s":" فایل ها : %s",b:"","Uploaded %d/%d files":"منتقل شد %d/%d از فایلها","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"عنصر بارگذار فقط %d فایل رو در یک زمان می پذیرد. سایر فایل ها مجرد از این موضوع هستند.","%d files queued":"%d فایل در صف","File: %s, size: %d, max file size: %d":"","Drag files here.":"بکشید فایل ها رو به اینجا","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"خطای تعداد فایل","File extension error.":"خطا پیشوند فایل","Error: File too large:":"Error: File too large:","Add Files":"افزودن فایل"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/fi.js DELETED
@@ -1,2 +0,0 @@
1
- // Finnish (fi)
2
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"","Size":"Koko","Close":"Sulje","Init error.":"Init virhe.","Add files to the upload queue and click the start button.":"Lisää tiedostoja latausjonoon ja klikkaa aloita-nappia.","Filename":"Tiedostonimi","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Tila","HTTP Error.":"HTTP virhe.","Start Upload":"Start Upload","mb":"","kb":"","Duplicate file error.":"","File size error.":"Tiedostokokovirhe.","N/A":"N/A","gb":"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Valitse tiedostoja","%s already present in the queue.":"","File: %s":"Tiedosto: %s","b":"","Uploaded %d/%d files":"Ladattu %d/%d tiedostoa","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Latauselementti sallii ladata vain %d tiedosto(a) kerrallaan. Ylimääräiset tiedostot ohitettiin.","%d files queued":"%d tiedostoa jonossa","File: %s, size: %d, max file size: %d":"","Drag files here.":"Raahaa tiedostot tänne.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"Tiedostolaskentavirhe.","File extension error.":"Tiedostopäätevirhe.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/fi.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"",Size:"Koko",Close:"Sulje","Init error.":"Init virhe.","Add files to the upload queue and click the start button.":"Lisää tiedostoja latausjonoon ja klikkaa aloita-nappia.",Filename:"Tiedostonimi","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Tila","HTTP Error.":"HTTP virhe.","Start Upload":"Start Upload",mb:"",kb:"","Duplicate file error.":"","File size error.":"Tiedostokokovirhe.","N/A":"N/A",gb:"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Valitse tiedostoja","%s already present in the queue.":"","File: %s":"Tiedosto: %s",b:"","Uploaded %d/%d files":"Ladattu %d/%d tiedostoa","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Latauselementti sallii ladata vain %d tiedosto(a) kerrallaan. Ylimääräiset tiedostot ohitettiin.","%d files queued":"%d tiedostoa jonossa","File: %s, size: %d, max file size: %d":"","Drag files here.":"Raahaa tiedostot tänne.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"Tiedostolaskentavirhe.","File extension error.":"Tiedostopäätevirhe.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/fr.js DELETED
@@ -1,2 +0,0 @@
1
- // French (fr)
2
- ngg_plupload.addI18n({"Stop Upload":"Arrêter l'envoi.","Upload URL might be wrong or doesn't exist.":"L'URL d'envoi est soit erronée soit n'existe pas.","tb":"To","Size":"Taille","Close":"Fermer","Init error.":"Erreur d'initialisation.","Add files to the upload queue and click the start button.":"Ajoutez des fichiers à la file d'attente de téléchargement et appuyez sur le bouton 'Démarrer l'envoi'","Filename":"Nom du fichier","Image format either wrong or not supported.":"Le format d'image est soit erroné soit pas géré.","Status":"État","HTTP Error.":"Erreur HTTP.","Start Upload":"Démarrer l'envoi","mb":"Mo","kb":"Ko","Duplicate file error.":"Erreur: Fichier à double.","File size error.":"Erreur de taille de fichier.","N/A":"Non applicable","gb":"Go","Error: Invalid file extension:":"Erreur: Extension de fichier non valide:","Select files":"Sélectionnez les fichiers","%s already present in the queue.":"%s déjà présent dans la file d'attente.","File: %s":"Fichier: %s","b":"o","Uploaded %d/%d files":"%d fichiers sur %d ont été envoyés","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Que %d fichier(s) peuvent être envoyé(s) à la fois. Les fichiers supplémentaires ont été ignorés.","%d files queued":"%d fichiers en attente","File: %s, size: %d, max file size: %d":"Fichier: %s, taille: %d, taille max. d'un fichier: %d","Drag files here.":"Déposez les fichiers ici.","Runtime ran out of available memory.":"Le traitement a manqué de mémoire disponible.","File count error.":"Erreur: Nombre de fichiers.","File extension error.":"Erreur d'extension de fichier","Error: File too large:":"Erreur: Fichier trop volumineux:","Add Files":"Ajouter des fichiers"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/fr.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Arrêter l'envoi.","Upload URL might be wrong or doesn't exist.":"L'URL d'envoi est soit erronée soit n'existe pas.",tb:"To",Size:"Taille",Close:"Fermer","Init error.":"Erreur d'initialisation.","Add files to the upload queue and click the start button.":"Ajoutez des fichiers à la file d'attente de téléchargement et appuyez sur le bouton 'Démarrer l'envoi'",Filename:"Nom du fichier","Image format either wrong or not supported.":"Le format d'image est soit erroné soit pas géré.",Status:"État","HTTP Error.":"Erreur HTTP.","Start Upload":"Démarrer l'envoi",mb:"Mo",kb:"Ko","Duplicate file error.":"Erreur: Fichier à double.","File size error.":"Erreur de taille de fichier.","N/A":"Non applicable",gb:"Go","Error: Invalid file extension:":"Erreur: Extension de fichier non valide:","Select files":"Sélectionnez les fichiers","%s already present in the queue.":"%s déjà présent dans la file d'attente.","File: %s":"Fichier: %s",b:"o","Uploaded %d/%d files":"%d fichiers sur %d ont été envoyés","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Que %d fichier(s) peuvent être envoyé(s) à la fois. Les fichiers supplémentaires ont été ignorés.","%d files queued":"%d fichiers en attente","File: %s, size: %d, max file size: %d":"Fichier: %s, taille: %d, taille max. d'un fichier: %d","Drag files here.":"Déposez les fichiers ici.","Runtime ran out of available memory.":"Le traitement a manqué de mémoire disponible.","File count error.":"Erreur: Nombre de fichiers.","File extension error.":"Erreur d'extension de fichier","Error: File too large:":"Erreur: Fichier trop volumineux:","Add Files":"Ajouter des fichiers"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/he.js DELETED
@@ -1,2 +0,0 @@
1
- // Hebrew (he)
2
- ngg_plupload.addI18n({"Stop Upload":"בטל העלאה","Upload URL might be wrong or doesn't exist.":"כתובת URL שגויה או לא קיימת.","tb":"tb","Size":"גודל","Close":"סגור","Init error.":"שגיאת איתחול","Add files to the upload queue and click the start button.":"הוסף קבצים לרשימה ולחץ על כפתור שליחה להתחלת פעולות העלאה","Filename":"שם קובץ","Image format either wrong or not supported.":"תמונה פגומה או סוג תמונה לא נתמך","Status":"אחוז","HTTP Error.":"שגיאת פרוטוקול","Start Upload":"שליחה","mb":"MB","kb":"KB","Duplicate file error.":"קובץ כפול","File size error.":"גודל קובץ חורג מהמותר","N/A":"שגיאה","gb":"GB","Error: Invalid file extension:":"שגיאה: סוג קובץ לא נתמך:","Select files":"בחר קבצים","%s already present in the queue.":"%sקובץ נמצא כבר ברשימת הקבצים.","File: %s":"קובץ: %s","b":"B","Uploaded %d/%d files":"מעלה: %d/%d","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"אלמנטי ההעלאה מקבלים רק %d קובץ(ים) בפעם אחת. קבצים נוספים הוסרו.","%d files queued":"%d קבצים נותרו","File: %s, size: %d, max file size: %d":"קובץ: %s, גודל: %d, גודל מקסימלי: %d","Drag files here.":"גרור קבצים לכאן","Runtime ran out of available memory.":"שגיאת מחסור בזיכרון","File count error.":"שגיאת מספר קבצים","File extension error.":"קובץ זה לא נתמך","Error: File too large:":"שגיאה: קובץ חורג מהגודל המותר:","Add Files":"הוסף קבצים"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/he.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"בטל העלאה","Upload URL might be wrong or doesn't exist.":"כתובת URL שגויה או לא קיימת.",tb:"tb",Size:"גודל",Close:"סגור","Init error.":"שגיאת איתחול","Add files to the upload queue and click the start button.":"הוסף קבצים לרשימה ולחץ על כפתור שליחה להתחלת פעולות העלאה",Filename:"שם קובץ","Image format either wrong or not supported.":"תמונה פגומה או סוג תמונה לא נתמך",Status:"אחוז","HTTP Error.":"שגיאת פרוטוקול","Start Upload":"שליחה",mb:"MB",kb:"KB","Duplicate file error.":"קובץ כפול","File size error.":"גודל קובץ חורג מהמותר","N/A":"שגיאה",gb:"GB","Error: Invalid file extension:":"שגיאה: סוג קובץ לא נתמך:","Select files":"בחר קבצים","%s already present in the queue.":"%sקובץ נמצא כבר ברשימת הקבצים.","File: %s":"קובץ: %s",b:"B","Uploaded %d/%d files":"מעלה: %d/%d","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"אלמנטי ההעלאה מקבלים רק %d קובץ(ים) בפעם אחת. קבצים נוספים הוסרו.","%d files queued":"%d קבצים נותרו","File: %s, size: %d, max file size: %d":"קובץ: %s, גודל: %d, גודל מקסימלי: %d","Drag files here.":"גרור קבצים לכאן","Runtime ran out of available memory.":"שגיאת מחסור בזיכרון","File count error.":"שגיאת מספר קבצים","File extension error.":"קובץ זה לא נתמך","Error: File too large:":"שגיאה: קובץ חורג מהגודל המותר:","Add Files":"הוסף קבצים"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/hr.js DELETED
@@ -1,2 +0,0 @@
1
- // Croatian (hr)
2
- ngg_plupload.addI18n({"Stop Upload":"Zaustavi upload.","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"tb","Size":"Veličina","Close":"Zatvori","Init error.":"Greška inicijalizacije.","Add files to the upload queue and click the start button.":"Dodajte datoteke u listu i kliknite Upload.","Filename":"Ime datoteke","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Status","HTTP Error.":"HTTP greška.","Start Upload":"Pokreni upload.","mb":"mb","kb":"kb","Duplicate file error.":"Pogreška dvostruke datoteke.","File size error.":"Greška veličine datoteke.","N/A":"N/A","gb":"gb","Error: Invalid file extension:":"Pogreška: Nevažeći nastavak datoteke:","Select files":"Odaberite datoteke:","%s already present in the queue.":"%s je već prisutan u listi čekanja.","File: %s":"Datoteka: %s","b":"b","Uploaded %d/%d files":"Uploadano %d/%d datoteka","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d datoteka na čekanju.","File: %s, size: %d, max file size: %d":"Datoteka: %s, veličina: %d, maksimalna veličina: %d","Drag files here.":"Dovucite datoteke ovdje","Runtime ran out of available memory.":"Runtime aplikaciji je ponestalo memorije.","File count error.":"Pogreška u broju datoteka.","File extension error.":"Pogreška u nastavku datoteke.","Error: File too large:":"Pogreška: Datoteka je prevelika:","Add Files":"Dodaj datoteke"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/hr.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Zaustavi upload.","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"tb",Size:"Veličina",Close:"Zatvori","Init error.":"Greška inicijalizacije.","Add files to the upload queue and click the start button.":"Dodajte datoteke u listu i kliknite Upload.",Filename:"Ime datoteke","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Status","HTTP Error.":"HTTP greška.","Start Upload":"Pokreni upload.",mb:"mb",kb:"kb","Duplicate file error.":"Pogreška dvostruke datoteke.","File size error.":"Greška veličine datoteke.","N/A":"N/A",gb:"gb","Error: Invalid file extension:":"Pogreška: Nevažeći nastavak datoteke:","Select files":"Odaberite datoteke:","%s already present in the queue.":"%s je već prisutan u listi čekanja.","File: %s":"Datoteka: %s",b:"b","Uploaded %d/%d files":"Uploadano %d/%d datoteka","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d datoteka na čekanju.","File: %s, size: %d, max file size: %d":"Datoteka: %s, veličina: %d, maksimalna veličina: %d","Drag files here.":"Dovucite datoteke ovdje","Runtime ran out of available memory.":"Runtime aplikaciji je ponestalo memorije.","File count error.":"Pogreška u broju datoteka.","File extension error.":"Pogreška u nastavku datoteke.","Error: File too large:":"Pogreška: Datoteka je prevelika:","Add Files":"Dodaj datoteke"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/hu.js DELETED
@@ -1,2 +0,0 @@
1
- // Hungarian (hu)
2
- ngg_plupload.addI18n({"Stop Upload":"Feltöltés leállítása","Upload URL might be wrong or doesn't exist.":"A feltöltő URL hibás vagy nem létezik.","tb":"","Size":"Méret","Close":"Bezárás","Init error.":"Init hiba.","Add files to the upload queue and click the start button.":"A fájlok feltöltési sorhoz való hozzáadása után az Indítás gombra kell kattintani.","Filename":"Fájlnév","Image format either wrong or not supported.":"Rossz vagy nem támogatott képformátum.","Status":"Állapot","HTTP Error.":"HTTP-hiba.","Start Upload":"Feltöltés indítása","mb":"","kb":"","Duplicate file error.":"Duplikáltfájl-hiba.","File size error.":"Hibás fájlméret.","N/A":"Nem elérhető","gb":"","Error: Invalid file extension:":"Hiba: érvénytelen fájlkiterjesztés:","Select files":"Fájlok kiválasztása","%s already present in the queue.":"%s már szerepel a listában.","File: %s":"Fájl: %s","b":"b","Uploaded %d/%d files":"Feltöltött fájlok: %d/%d","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"A feltöltés egyszerre csak %d fájlt fogad el, a többi fájl nem lesz feltöltve.","%d files queued":"%d fájl sorbaállítva","File: %s, size: %d, max file size: %d":"Fájl: %s, méret: %d, legnagyobb fájlméret: %d","Drag files here.":"Ide lehet húzni a fájlokat.","Runtime ran out of available memory.":"Futásidőben elfogyott a rendelkezésre álló memória.","File count error.":"A fájlok számával kapcsolatos hiba.","File extension error.":"Hibás fájlkiterjesztés.","Error: File too large:":"Hiba: a fájl túl nagy:","Add Files":"Fájlok hozzáadása"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/hu.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Feltöltés leállítása","Upload URL might be wrong or doesn't exist.":"A feltöltő URL hibás vagy nem létezik.",tb:"",Size:"Méret",Close:"Bezárás","Init error.":"Init hiba.","Add files to the upload queue and click the start button.":"A fájlok feltöltési sorhoz való hozzáadása után az Indítás gombra kell kattintani.",Filename:"Fájlnév","Image format either wrong or not supported.":"Rossz vagy nem támogatott képformátum.",Status:"Állapot","HTTP Error.":"HTTP-hiba.","Start Upload":"Feltöltés indítása",mb:"",kb:"","Duplicate file error.":"Duplikáltfájl-hiba.","File size error.":"Hibás fájlméret.","N/A":"Nem elérhető",gb:"","Error: Invalid file extension:":"Hiba: érvénytelen fájlkiterjesztés:","Select files":"Fájlok kiválasztása","%s already present in the queue.":"%s már szerepel a listában.","File: %s":"Fájl: %s",b:"b","Uploaded %d/%d files":"Feltöltött fájlok: %d/%d","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"A feltöltés egyszerre csak %d fájlt fogad el, a többi fájl nem lesz feltöltve.","%d files queued":"%d fájl sorbaállítva","File: %s, size: %d, max file size: %d":"Fájl: %s, méret: %d, legnagyobb fájlméret: %d","Drag files here.":"Ide lehet húzni a fájlokat.","Runtime ran out of available memory.":"Futásidőben elfogyott a rendelkezésre álló memória.","File count error.":"A fájlok számával kapcsolatos hiba.","File extension error.":"Hibás fájlkiterjesztés.","Error: File too large:":"Hiba: a fájl túl nagy:","Add Files":"Fájlok hozzáadása"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/hy.js DELETED
@@ -1,2 +0,0 @@
1
- // Armenian (hy)
2
- ngg_plupload.addI18n({"Stop Upload":"Կանգնեցնել","Upload URL might be wrong or doesn't exist.":"Ավեցաված URL-ը սխալ է կամ գոյություն չունի։","tb":"տբ","Size":"Չափ","Close":"Փակել","Init error.":"Ստեղծման սխալ","Add files to the upload queue and click the start button.":"Ավելացրեք ֆայլեր ցուցակում և սեղմեք \"Վերբեռնել\"։","Filename":"Ֆայլի անուն","Image format either wrong or not supported.":"Նկարի ֆորմատը սխալ է կամ չի ընդունվում։","Status":"","HTTP Error.":"HTTP սխալ","Start Upload":"Վերբեռնել","mb":"մբ","kb":"կբ","Duplicate file error.":"Ֆայլի կրկնման սխալ","File size error.":"Ֆայլի չափի սխալ","N/A":"N/A","gb":"գբ","Error: Invalid file extension:":"Սխալ։ Ֆայլի ընդլայնումը սխալ է։","Select files":"Ընտրեք ֆայլերը","%s already present in the queue.":"%s ֆայլը արդեն ավելացված է ցուցակում.","File: %s":"Ֆայլ: %s","b":"բ","Uploaded %d/%d files":"Վերբեռնվել են %d/%d ֆայլերը","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"","%d files queued":"ցուցակում կա %d ֆայլ","File: %s, size: %d, max file size: %d":"Ֆայլ: %s, չափ: %d, ֆայլի մաքսիմում չափ: %d","Drag files here.":"Տեղափոխեք ֆայլերը այստեղ","Runtime ran out of available memory.":"","File count error.":"Ֆայլերի քանակի սխալ","File extension error.":"Ֆայլի ընդլայնման սխալ","Error: File too large:":"Սխալ։ Ֆայլի չափը մեծ է։","Add Files":"Ավելացնել ֆայլեր"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/hy.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Կանգնեցնել","Upload URL might be wrong or doesn't exist.":"Ավեցաված URL-ը սխալ է կամ գոյություն չունի։",tb:"տբ",Size:"Չափ",Close:"Փակել","Init error.":"Ստեղծման սխալ","Add files to the upload queue and click the start button.":'Ավելացրեք ֆայլեր ցուցակում և սեղմեք "Վերբեռնել"։',Filename:"Ֆայլի անուն","Image format either wrong or not supported.":"Նկարի ֆորմատը սխալ է կամ չի ընդունվում։",Status:"","HTTP Error.":"HTTP սխալ","Start Upload":"Վերբեռնել",mb:"մբ",kb:"կբ","Duplicate file error.":"Ֆայլի կրկնման սխալ","File size error.":"Ֆայլի չափի սխալ","N/A":"N/A",gb:"գբ","Error: Invalid file extension:":"Սխալ։ Ֆայլի ընդլայնումը սխալ է։","Select files":"Ընտրեք ֆայլերը","%s already present in the queue.":"%s ֆայլը արդեն ավելացված է ցուցակում.","File: %s":"Ֆայլ: %s",b:"բ","Uploaded %d/%d files":"Վերբեռնվել են %d/%d ֆայլերը","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"","%d files queued":"ցուցակում կա %d ֆայլ","File: %s, size: %d, max file size: %d":"Ֆայլ: %s, չափ: %d, ֆայլի մաքսիմում չափ: %d","Drag files here.":"Տեղափոխեք ֆայլերը այստեղ","Runtime ran out of available memory.":"","File count error.":"Ֆայլերի քանակի սխալ","File extension error.":"Ֆայլի ընդլայնման սխալ","Error: File too large:":"Սխալ։ Ֆայլի չափը մեծ է։","Add Files":"Ավելացնել ֆայլեր"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/id.js DELETED
@@ -1,2 +0,0 @@
1
- // Indonesian (id)
2
- ngg_plupload.addI18n({"Stop Upload":"Hentikan Upload","Upload URL might be wrong or doesn't exist.":"Alamat URL untuk upload tidak benar atau tidak ada","tb":"tb","Size":"Ukuran","Close":"Tutup","Init error.":"Kesalahan pada Init","Add files to the upload queue and click the start button.":"Tambahkan file kedalam antrian upload dan klik tombol Mulai","Filename":"Nama File","Image format either wrong or not supported.":"Kesalahan pada jenis gambar atau jenis file tidak didukung","Status":"Status","HTTP Error.":"HTTP Bermasalah","Start Upload":"Mulai Upload","mb":"mb","kb":"kb","Duplicate file error.":"Terjadi duplikasi file","File size error.":"Kesalahan pada ukuran file","N/A":"N/A","gb":"gb","Error: Invalid file extension:":"Kesalahan: Ekstensi file tidak dikenal","Select files":"Pilih file","%s already present in the queue.":"%s sudah ada dalam daftar antrian","File: %s":"File: %s","b":"b","Uploaded %d/%d files":"File terupload %d/%d","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Tempat untuk upload hanya menerima %d file(s) dalam setiap upload. File lainnya tidak akan disertakan","%d files queued":"%d file dalam antrian","File: %s, size: %d, max file size: %d":"File: %s, ukuran: %d, maksimum ukuran file: %d","Drag files here.":"Tarik file kesini","Runtime ran out of available memory.":"Tidak cukup memori","File count error.":"Kesalahan pada jumlah file","File extension error.":"Kesalahan pada ekstensi file","Error: File too large:":"Kesalahan: File terlalu besar","Add Files":"Tambah File"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/id.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Hentikan Upload","Upload URL might be wrong or doesn't exist.":"Alamat URL untuk upload tidak benar atau tidak ada",tb:"tb",Size:"Ukuran",Close:"Tutup","Init error.":"Kesalahan pada Init","Add files to the upload queue and click the start button.":"Tambahkan file kedalam antrian upload dan klik tombol Mulai",Filename:"Nama File","Image format either wrong or not supported.":"Kesalahan pada jenis gambar atau jenis file tidak didukung",Status:"Status","HTTP Error.":"HTTP Bermasalah","Start Upload":"Mulai Upload",mb:"mb",kb:"kb","Duplicate file error.":"Terjadi duplikasi file","File size error.":"Kesalahan pada ukuran file","N/A":"N/A",gb:"gb","Error: Invalid file extension:":"Kesalahan: Ekstensi file tidak dikenal","Select files":"Pilih file","%s already present in the queue.":"%s sudah ada dalam daftar antrian","File: %s":"File: %s",b:"b","Uploaded %d/%d files":"File terupload %d/%d","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Tempat untuk upload hanya menerima %d file(s) dalam setiap upload. File lainnya tidak akan disertakan","%d files queued":"%d file dalam antrian","File: %s, size: %d, max file size: %d":"File: %s, ukuran: %d, maksimum ukuran file: %d","Drag files here.":"Tarik file kesini","Runtime ran out of available memory.":"Tidak cukup memori","File count error.":"Kesalahan pada jumlah file","File extension error.":"Kesalahan pada ekstensi file","Error: File too large:":"Kesalahan: File terlalu besar","Add Files":"Tambah File"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/it.js DELETED
@@ -1,2 +0,0 @@
1
- // Italian (it)
2
- ngg_plupload.addI18n({"Stop Upload":"Ferma Upload","Upload URL might be wrong or doesn't exist.":"URL di Upload errata o non esistente","tb":"tb","Size":"Dimensione","Close":"Chiudi","Init error.":"Errore inizializzazione.","Add files to the upload queue and click the start button.":"Aggiungi i file alla coda di caricamento e clicca il pulsante di avvio.","Filename":"Nome file","Image format either wrong or not supported.":"Formato immagine errato o non supportato.","Status":"Stato","HTTP Error.":"Errore HTTP.","Start Upload":"Inizia Upload","mb":"mb","kb":"kb","Duplicate file error.":"Errore file duplicato.","File size error.":"Errore dimensione file.","N/A":"N/D","gb":"gb","Error: Invalid file extension:":"Errore: Estensione file non valida:","Select files":"Seleziona i files","%s already present in the queue.":"%s già presente nella coda.","File: %s":"File: %s","b":"byte","Uploaded %d/%d files":"Caricati %d/%d file","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d file in coda","File: %s, size: %d, max file size: %d":"File: %s, dimensione: %d, dimensione max file: %d","Drag files here.":"Trascina i files qui.","Runtime ran out of available memory.":"Runtime ha esaurito la memoria disponibile.","File count error.":"File count error.","File extension error.":"Errore estensione file.","Error: File too large:":"Errore: File troppo grande:","Add Files":"Aggiungi file"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/it.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Ferma Upload","Upload URL might be wrong or doesn't exist.":"URL di Upload errata o non esistente",tb:"tb",Size:"Dimensione",Close:"Chiudi","Init error.":"Errore inizializzazione.","Add files to the upload queue and click the start button.":"Aggiungi i file alla coda di caricamento e clicca il pulsante di avvio.",Filename:"Nome file","Image format either wrong or not supported.":"Formato immagine errato o non supportato.",Status:"Stato","HTTP Error.":"Errore HTTP.","Start Upload":"Inizia Upload",mb:"mb",kb:"kb","Duplicate file error.":"Errore file duplicato.","File size error.":"Errore dimensione file.","N/A":"N/D",gb:"gb","Error: Invalid file extension:":"Errore: Estensione file non valida:","Select files":"Seleziona i files","%s already present in the queue.":"%s già presente nella coda.","File: %s":"File: %s",b:"byte","Uploaded %d/%d files":"Caricati %d/%d file","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d file in coda","File: %s, size: %d, max file size: %d":"File: %s, dimensione: %d, dimensione max file: %d","Drag files here.":"Trascina i files qui.","Runtime ran out of available memory.":"Runtime ha esaurito la memoria disponibile.","File count error.":"File count error.","File extension error.":"Errore estensione file.","Error: File too large:":"Errore: File troppo grande:","Add Files":"Aggiungi file"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ja.js DELETED
@@ -1,2 +0,0 @@
1
- // Japanese (ja)
2
- ngg_plupload.addI18n({"Stop Upload":"アップロード停止","Upload URL might be wrong or doesn't exist.":"アップロード先の URL が存在しません","tb":"","Size":"サイズ","Close":"閉じる","Init error.":"イニシャライズエラー","Add files to the upload queue and click the start button.":"ファイルをアップロードキューに追加してスタートボタンをクリックしてください","Filename":"ファイル名","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"ステータス","HTTP Error.":"HTTP エラー","Start Upload":"アップロード","mb":"","kb":"","Duplicate file error.":"","File size error.":"ファイルサイズエラー","N/A":"N/A","gb":"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"ファイル選択","%s already present in the queue.":"","File: %s":"ファイル: %s","b":"","Uploaded %d/%d files":"アップロード中 %d/%d ファイル","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"アップロード可能なファイル数は %d です。余分なファイルは削除されました","%d files queued":"%d ファイルが追加されました","File: %s, size: %d, max file size: %d":"","Drag files here.":"ここにファイルをドラッグ","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"ファイル数エラー","File extension error.":"ファイル拡張子エラー","Error: File too large:":"Error: File too large:","Add Files":"ファイルを追加"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ja.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"アップロード停止","Upload URL might be wrong or doesn't exist.":"アップロード先の URL が存在しません",tb:"",Size:"サイズ",Close:"閉じる","Init error.":"イニシャライズエラー","Add files to the upload queue and click the start button.":"ファイルをアップロードキューに追加してスタートボタンをクリックしてください",Filename:"ファイル名","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"ステータス","HTTP Error.":"HTTP エラー","Start Upload":"アップロード",mb:"",kb:"","Duplicate file error.":"","File size error.":"ファイルサイズエラー","N/A":"N/A",gb:"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"ファイル選択","%s already present in the queue.":"","File: %s":"ファイル: %s",b:"","Uploaded %d/%d files":"アップロード中 %d/%d ファイル","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"アップロード可能なファイル数は %d です。余分なファイルは削除されました","%d files queued":"%d ファイルが追加されました","File: %s, size: %d, max file size: %d":"","Drag files here.":"ここにファイルをドラッグ","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"ファイル数エラー","File extension error.":"ファイル拡張子エラー","Error: File too large:":"Error: File too large:","Add Files":"ファイルを追加"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ka.js DELETED
@@ -1,2 +0,0 @@
1
- // Georgian (ka)
2
- ngg_plupload.addI18n({"Stop Upload":"ატვირთვის შეჩერება","Upload URL might be wrong or doesn't exist.":"ატვირთვის მისამართი არასწორია ან არ არსებობს.","tb":"ტბ","Size":"ზომა","Close":"დავხუროთ","Init error.":"ინიციალიზაციის შეცდომა.","Add files to the upload queue and click the start button.":"დაამატეთ ფაილები და დააჭირეთ ღილაკს - ატვირთვა.","Filename":"ფაილის სახელი","Image format either wrong or not supported.":"ფაილის ფორმატი არ არის მხარდაჭერილი ან არასწორია.","Status":"სტატუსი","HTTP Error.":"HTTP შეცდომა.","Start Upload":"ატვირთვა","mb":"მბ","kb":"კბ","Duplicate file error.":"ესეთი ფაილი უკვე დამატებულია.","File size error.":"ფაილის ზომა დაშვებულზე დიდია.","N/A":"N/A","gb":"გბ","Error: Invalid file extension:":"შეცდომა: ფაილს აქვს არასწორი გაფართოება.","Select files":"ფაილების მონიშვნა","%s already present in the queue.":"%s უკვე დამატებულია.","File: %s":"ფაილი: %s","b":"ბ","Uploaded %d/%d files":"ატვირთულია %d/%d ფაილი","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"ერთდროულად დაშვებულია მხოლოდ %d ფაილის დამატება.","%d files queued":"რიგშია %d ფაილი","File: %s, size: %d, max file size: %d":"ფაილი: %s, ზომა: %d, მაქსიმალური დაშვებული ზომა: %d","Drag files here.":"ჩააგდეთ ფაილები აქ.","Runtime ran out of available memory.":"ხელმისაწვდომი მეხსიერება გადაივსო.","File count error.":"აღმოჩენილია ზედმეტი ფაილები.","File extension error.":"ფაილის ფორმატი დაშვებული არ არის.","Error: File too large:":"შეცდომა: ფაილი ზედმეტად დიდია.","Add Files":"დაამატეთ ფაილები"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ka.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"ატვირთვის შეჩერება","Upload URL might be wrong or doesn't exist.":"ატვირთვის მისამართი არასწორია ან არ არსებობს.",tb:"ტბ",Size:"ზომა",Close:"დავხუროთ","Init error.":"ინიციალიზაციის შეცდომა.","Add files to the upload queue and click the start button.":"დაამატეთ ფაილები და დააჭირეთ ღილაკს - ატვირთვა.",Filename:"ფაილის სახელი","Image format either wrong or not supported.":"ფაილის ფორმატი არ არის მხარდაჭერილი ან არასწორია.",Status:"სტატუსი","HTTP Error.":"HTTP შეცდომა.","Start Upload":"ატვირთვა",mb:"მბ",kb:"კბ","Duplicate file error.":"ესეთი ფაილი უკვე დამატებულია.","File size error.":"ფაილის ზომა დაშვებულზე დიდია.","N/A":"N/A",gb:"გბ","Error: Invalid file extension:":"შეცდომა: ფაილს აქვს არასწორი გაფართოება.","Select files":"ფაილების მონიშვნა","%s already present in the queue.":"%s უკვე დამატებულია.","File: %s":"ფაილი: %s",b:"ბ","Uploaded %d/%d files":"ატვირთულია %d/%d ფაილი","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"ერთდროულად დაშვებულია მხოლოდ %d ფაილის დამატება.","%d files queued":"რიგშია %d ფაილი","File: %s, size: %d, max file size: %d":"ფაილი: %s, ზომა: %d, მაქსიმალური დაშვებული ზომა: %d","Drag files here.":"ჩააგდეთ ფაილები აქ.","Runtime ran out of available memory.":"ხელმისაწვდომი მეხსიერება გადაივსო.","File count error.":"აღმოჩენილია ზედმეტი ფაილები.","File extension error.":"ფაილის ფორმატი დაშვებული არ არის.","Error: File too large:":"შეცდომა: ფაილი ზედმეტად დიდია.","Add Files":"დაამატეთ ფაილები"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/kk.js DELETED
@@ -1,2 +0,0 @@
1
- // Kazakh (kk)
2
- ngg_plupload.addI18n({"Stop Upload":"Жүктеуді тоқтату","Upload URL might be wrong or doesn't exist.":"Жүктеуді қабылдаушы URL қате не мүлдем көрсетілмеген.","tb":"тб","Size":"Өлшемі","Close":"Жабу","Init error.":"Инициализация қатесі.","Add files to the upload queue and click the start button.":"Жүктеу кезегіне файлдар қосып, Бастау кнопкасын басыңыз.","Filename":"Файл аты","Image format either wrong or not supported.":"Сурет форматы қате немесе оның қолдауы жоқ.","Status":"Күйі","HTTP Error.":"HTTP қатесі.","Start Upload":"Жүктеуді бастау","mb":"мб","kb":"кб","Duplicate file error.":"Файл қайталамасының қатесі.","File size error.":"Файл өлшемінің қатесі.","N/A":"Қ/Ж","gb":"гб","Error: Invalid file extension:":"Қате: Файл кеңейтілуі қате:","Select files":"Файлдар таңдаңыз","%s already present in the queue.":"%s файлы кезекте бұрыннан бар.","File: %s":"Файл: %s","b":"б","Uploaded %d/%d files":"Жүктелген: %d/%d файл","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Жүктеу элементі бір кезде %d файл ғана жүктей алады. Артық файлдар жүктелмейді.","%d files queued":"%d файл кезекке қойылды","File: %s, size: %d, max file size: %d":"Файл: %s, өлшемі: %d, макс. файл өлшемі: %d","Drag files here.":"Файлдарды мына жерге тастаңыз.","Runtime ran out of available memory.":"Орындау кезінде жады жетпей қалды.","File count error.":"Файл санының қатесі.","File extension error.":"Файл кеңейтілуінің қатесі.","Error: File too large:":"Қате: Файл мөлшері тым үлкен:","Add Files":"Файл қосу"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/kk.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Жүктеуді тоқтату","Upload URL might be wrong or doesn't exist.":"Жүктеуді қабылдаушы URL қате не мүлдем көрсетілмеген.",tb:"тб",Size:"Өлшемі",Close:"Жабу","Init error.":"Инициализация қатесі.","Add files to the upload queue and click the start button.":"Жүктеу кезегіне файлдар қосып, Бастау кнопкасын басыңыз.",Filename:"Файл аты","Image format either wrong or not supported.":"Сурет форматы қате немесе оның қолдауы жоқ.",Status:"Күйі","HTTP Error.":"HTTP қатесі.","Start Upload":"Жүктеуді бастау",mb:"мб",kb:"кб","Duplicate file error.":"Файл қайталамасының қатесі.","File size error.":"Файл өлшемінің қатесі.","N/A":"Қ/Ж",gb:"гб","Error: Invalid file extension:":"Қате: Файл кеңейтілуі қате:","Select files":"Файлдар таңдаңыз","%s already present in the queue.":"%s файлы кезекте бұрыннан бар.","File: %s":"Файл: %s",b:"б","Uploaded %d/%d files":"Жүктелген: %d/%d файл","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Жүктеу элементі бір кезде %d файл ғана жүктей алады. Артық файлдар жүктелмейді.","%d files queued":"%d файл кезекке қойылды","File: %s, size: %d, max file size: %d":"Файл: %s, өлшемі: %d, макс. файл өлшемі: %d","Drag files here.":"Файлдарды мына жерге тастаңыз.","Runtime ran out of available memory.":"Орындау кезінде жады жетпей қалды.","File count error.":"Файл санының қатесі.","File extension error.":"Файл кеңейтілуінің қатесі.","Error: File too large:":"Қате: Файл мөлшері тым үлкен:","Add Files":"Файл қосу"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ko.js DELETED
@@ -1,2 +0,0 @@
1
- // Korean (ko)
2
- ngg_plupload.addI18n({"Stop Upload":"업로드 중지","Upload URL might be wrong or doesn't exist.":"업로드할 URL이 존재하지 않습니다","tb":"","Size":"크기","Close":"닫기","Init error.":"초기화 오류","Add files to the upload queue and click the start button.":"파일을 업로드 큐에 추가하여 시작 버튼을 클릭하십시오.","Filename":"파일 이름","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"상태","HTTP Error.":"HTTP 오류","Start Upload":"업로드","mb":"","kb":"","Duplicate file error.":"","File size error.":"파일 크기 오류","N/A":"N/A","gb":"","Error: Invalid file extension:":"오류 : 확장자가 허용되지 않습니다 :","Select files":"파일 선택","%s already present in the queue.":"","File: %s":"파일 % s","b":"","Uploaded %d/%d files":"업로드 중 % d / % d 파일","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"업로드 가능한 파일의 수는 % d입니다. 불필요한 파일은 삭제되었습니다","%d files queued":"% d 파일이 추가되었습니다","File: %s, size: %d, max file size: %d":"","Drag files here.":"여기에 파일을 드래그","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"이미지 : 오류","File extension error.":"파일 확장자 오류","Error: File too large:":"오류 : 크기가 너무 큽니다","Add Files":"파일 추가"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ko.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"업로드 중지","Upload URL might be wrong or doesn't exist.":"업로드할 URL이 존재하지 않습니다",tb:"",Size:"크기",Close:"닫기","Init error.":"초기화 오류","Add files to the upload queue and click the start button.":"파일을 업로드 큐에 추가하여 시작 버튼을 클릭하십시오.",Filename:"파일 이름","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"상태","HTTP Error.":"HTTP 오류","Start Upload":"업로드",mb:"",kb:"","Duplicate file error.":"","File size error.":"파일 크기 오류","N/A":"N/A",gb:"","Error: Invalid file extension:":"오류 : 확장자가 허용되지 않습니다 :","Select files":"파일 선택","%s already present in the queue.":"","File: %s":"파일 % s",b:"","Uploaded %d/%d files":"업로드 중 % d / % d 파일","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"업로드 가능한 파일의 수는 % d입니다. 불필요한 파일은 삭제되었습니다","%d files queued":"% d 파일이 추가되었습니다","File: %s, size: %d, max file size: %d":"","Drag files here.":"여기에 파일을 드래그","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"이미지 : 오류","File extension error.":"파일 확장자 오류","Error: File too large:":"오류 : 크기가 너무 큽니다","Add Files":"파일 추가"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/lt.js DELETED
@@ -1,2 +0,0 @@
1
- // Lithuanian (lt)
2
- ngg_plupload.addI18n({"Stop Upload":"Stabdyti įkėlimą","Upload URL might be wrong or doesn't exist.":"Klaidinga arba neegzistuojanti įkėlimo nuoroda.","tb":"tb","Size":"Dydis","Close":"Uždaryti","Init error.":"Įkrovimo klaida.","Add files to the upload queue and click the start button.":"Pridėkite bylas į įkėlimo eilę ir paspauskite starto mygtuką.","Filename":"Bylos pavadinimas","Image format either wrong or not supported.":"Paveiksliuko formatas klaidingas arba nebepalaikomas.","Status":"Statusas","HTTP Error.":"HTTP klaida.","Start Upload":"Pradėti įkėlimą","mb":"mb","kb":"kb","Duplicate file error.":"Pasikartojanti byla.","File size error.":"Netinkamas bylos dydis.","N/A":"N/A","gb":"gb","Error: Invalid file extension:":"Klaida: Netinkamas bylos plėtinys:","Select files":"Žymėti bylas","%s already present in the queue.":"%s jau yra eilėje.","File: %s":"Byla: %s","b":"b","Uploaded %d/%d files":"Įkelta bylų: %d/%d","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Vienu metu galima įkelti tik %d bylas(ų). Papildomos bylos buvo pašalintos.","%d files queued":"%d bylų eilėje","File: %s, size: %d, max file size: %d":"Byla: %s, dydis: %d, galimas dydis: %d","Drag files here.":"Padėti bylas čia.","Runtime ran out of available memory.":"Išeikvota darbinė atmintis.","File count error.":"Netinkamas bylų kiekis.","File extension error.":"Netinkamas pletinys.","Error: File too large:":"Klaida: Byla per didelė:","Add Files":"Pridėti bylas"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/lt.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Stabdyti įkėlimą","Upload URL might be wrong or doesn't exist.":"Klaidinga arba neegzistuojanti įkėlimo nuoroda.",tb:"tb",Size:"Dydis",Close:"Uždaryti","Init error.":"Įkrovimo klaida.","Add files to the upload queue and click the start button.":"Pridėkite bylas į įkėlimo eilę ir paspauskite starto mygtuką.",Filename:"Bylos pavadinimas","Image format either wrong or not supported.":"Paveiksliuko formatas klaidingas arba nebepalaikomas.",Status:"Statusas","HTTP Error.":"HTTP klaida.","Start Upload":"Pradėti įkėlimą",mb:"mb",kb:"kb","Duplicate file error.":"Pasikartojanti byla.","File size error.":"Netinkamas bylos dydis.","N/A":"N/A",gb:"gb","Error: Invalid file extension:":"Klaida: Netinkamas bylos plėtinys:","Select files":"Žymėti bylas","%s already present in the queue.":"%s jau yra eilėje.","File: %s":"Byla: %s",b:"b","Uploaded %d/%d files":"Įkelta bylų: %d/%d","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Vienu metu galima įkelti tik %d bylas(ų). Papildomos bylos buvo pašalintos.","%d files queued":"%d bylų eilėje","File: %s, size: %d, max file size: %d":"Byla: %s, dydis: %d, galimas dydis: %d","Drag files here.":"Padėti bylas čia.","Runtime ran out of available memory.":"Išeikvota darbinė atmintis.","File count error.":"Netinkamas bylų kiekis.","File extension error.":"Netinkamas pletinys.","Error: File too large:":"Klaida: Byla per didelė:","Add Files":"Pridėti bylas"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/lv.js DELETED
@@ -1,2 +0,0 @@
1
- // Latvian (lv)
2
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"terrabaiti","Size":"Izmērs","Close":"Aizvērt","Init error.":"Inicializācijas kļūda.","Add files to the upload queue and click the start button.":"Pieveinojiet failus rindai un klikšķiniet uz","Filename":"Faila nosaukums","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Statuss","HTTP Error.":"HTTP kļūda.","Start Upload":"Start Upload","mb":"megabaiti","kb":"kilobaiti","Duplicate file error.":"Atkārtota faila kļūda","File size error.":"Faila izmēra kļūda.","N/A":"N/A","gb":"gigabaiti","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Izvēlieties failus","%s already present in the queue.":"%s jau ir atrodams rindā.","File: %s":"Fails: %s","b":"baiti","Uploaded %d/%d files":"Augšupielādēti %d/%d faili","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Iespējams ielādēt tikai %d failus vienā reizē. Atlikušie faili netika pievienoti","%d files queued":"%d faili pievienoti rindai","File: %s, size: %d, max file size: %d":"Fails: %s, izmērs: %d, max faila izmērs: %d","Drag files here.":"Ievelciet failus šeit","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"Failu skaita kļūda","File extension error.":"Faila paplašinājuma kļūda.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/lv.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"terrabaiti",Size:"Izmērs",Close:"Aizvērt","Init error.":"Inicializācijas kļūda.","Add files to the upload queue and click the start button.":"Pieveinojiet failus rindai un klikšķiniet uz",Filename:"Faila nosaukums","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Statuss","HTTP Error.":"HTTP kļūda.","Start Upload":"Start Upload",mb:"megabaiti",kb:"kilobaiti","Duplicate file error.":"Atkārtota faila kļūda","File size error.":"Faila izmēra kļūda.","N/A":"N/A",gb:"gigabaiti","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Izvēlieties failus","%s already present in the queue.":"%s jau ir atrodams rindā.","File: %s":"Fails: %s",b:"baiti","Uploaded %d/%d files":"Augšupielādēti %d/%d faili","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Iespējams ielādēt tikai %d failus vienā reizē. Atlikušie faili netika pievienoti","%d files queued":"%d faili pievienoti rindai","File: %s, size: %d, max file size: %d":"Fails: %s, izmērs: %d, max faila izmērs: %d","Drag files here.":"Ievelciet failus šeit","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"Failu skaita kļūda","File extension error.":"Faila paplašinājuma kļūda.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/nl.js DELETED
@@ -1,2 +0,0 @@
1
- // Dutch (nl)
2
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"","Size":"Grootte","Close":"Close","Init error.":"Initialisatie error.","Add files to the upload queue and click the start button.":"Voeg bestanden toe aan de wachtrij en druk op 'Start'.","Filename":"Bestandsnaam","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Status","HTTP Error.":"HTTP Error.","Start Upload":"Start Upload","mb":"","kb":"","Duplicate file error.":"","File size error.":"Bestandsgrootte Error.","N/A":"Niet beschikbaar","gb":"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Selecteer bestand(en):","%s already present in the queue.":"","File: %s":"File: %s","b":"","Uploaded %d/%d files":"%d/%d bestanden ge-upload","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"","Drag files here.":"Sleep bestanden hierheen.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"Ongeldig bestandstype.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/nl.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"",Size:"Grootte",Close:"Close","Init error.":"Initialisatie error.","Add files to the upload queue and click the start button.":"Voeg bestanden toe aan de wachtrij en druk op 'Start'.",Filename:"Bestandsnaam","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Status","HTTP Error.":"HTTP Error.","Start Upload":"Start Upload",mb:"",kb:"","Duplicate file error.":"","File size error.":"Bestandsgrootte Error.","N/A":"Niet beschikbaar",gb:"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Selecteer bestand(en):","%s already present in the queue.":"","File: %s":"File: %s",b:"","Uploaded %d/%d files":"%d/%d bestanden ge-upload","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"","Drag files here.":"Sleep bestanden hierheen.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"Ongeldig bestandstype.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/pl.js DELETED
@@ -1,2 +0,0 @@
1
- // Polish (pl)
2
- ngg_plupload.addI18n({"Stop Upload":"Przerwij transfer.","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"","Size":"Rozmiar","Close":"Close","Init error.":"Błąd inicjalizacji.","Add files to the upload queue and click the start button.":"Dodaj pliki i kliknij 'Rozpocznij transfer'.","Filename":"Nazwa pliku","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Status","HTTP Error.":"Błąd HTTP.","Start Upload":"Start Upload","mb":"","kb":"","Duplicate file error.":"","File size error.":"Plik jest zbyt duży.","N/A":"Nie dostępne","gb":"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Wybierz pliki:","%s already present in the queue.":"","File: %s":"File: %s","b":"","Uploaded %d/%d files":"Wysłano %d/%d plików","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d plików w kolejce.","File: %s, size: %d, max file size: %d":"","Drag files here.":"Przeciągnij tu pliki","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"Nieobsługiwany format pliku.","Error: File too large:":"Error: File too large:","Add Files":"Dodaj pliki"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/pl.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Przerwij transfer.","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"",Size:"Rozmiar",Close:"Close","Init error.":"Błąd inicjalizacji.","Add files to the upload queue and click the start button.":"Dodaj pliki i kliknij 'Rozpocznij transfer'.",Filename:"Nazwa pliku","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Status","HTTP Error.":"Błąd HTTP.","Start Upload":"Start Upload",mb:"",kb:"","Duplicate file error.":"","File size error.":"Plik jest zbyt duży.","N/A":"Nie dostępne",gb:"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Wybierz pliki:","%s already present in the queue.":"","File: %s":"File: %s",b:"","Uploaded %d/%d files":"Wysłano %d/%d plików","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d plików w kolejce.","File: %s, size: %d, max file size: %d":"","Drag files here.":"Przeciągnij tu pliki","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"Nieobsługiwany format pliku.","Error: File too large:":"Error: File too large:","Add Files":"Dodaj pliki"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/pt_BR.js DELETED
@@ -1,2 +0,0 @@
1
- // Portuguese (Brazil) (pt_BR)
2
- ngg_plupload.addI18n({"Stop Upload":"Parar o envio","Upload URL might be wrong or doesn't exist.":"URL de envio está errada ou não existe","tb":"","Size":"Tamanho","Close":"Fechar","Init error.":"Erro inicializando.","Add files to the upload queue and click the start button.":"Adicione os arquivos abaixo e clique no botão \"Iniciar o envio\".","Filename":"Nome do arquivo","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Status","HTTP Error.":"Erro HTTP.","Start Upload":"Iniciar o envio","mb":"","kb":"","Duplicate file error.":"","File size error.":"Tamanho de arquivo não permitido.","N/A":"N/D","gb":"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Escolha os arquivos","%s already present in the queue.":"","File: %s":"Arquivo: %s","b":"","Uploaded %d/%d files":"Enviado(s) %d/%d arquivo(s)","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Só são aceitos %d arquivos por vez. O que passou disso foi descartado.","%d files queued":"%d arquivo(s)","File: %s, size: %d, max file size: %d":"","Drag files here.":"Arraste os arquivos pra cá","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"Erro na contagem dos arquivos","File extension error.":"Tipo de arquivo não permitido.","Error: File too large:":"Error: File too large:","Add Files":"Adicionar arquivo(s)"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/pt_BR.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Parar o envio","Upload URL might be wrong or doesn't exist.":"URL de envio está errada ou não existe",tb:"",Size:"Tamanho",Close:"Fechar","Init error.":"Erro inicializando.","Add files to the upload queue and click the start button.":'Adicione os arquivos abaixo e clique no botão "Iniciar o envio".',Filename:"Nome do arquivo","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Status","HTTP Error.":"Erro HTTP.","Start Upload":"Iniciar o envio",mb:"",kb:"","Duplicate file error.":"","File size error.":"Tamanho de arquivo não permitido.","N/A":"N/D",gb:"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Escolha os arquivos","%s already present in the queue.":"","File: %s":"Arquivo: %s",b:"","Uploaded %d/%d files":"Enviado(s) %d/%d arquivo(s)","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Só são aceitos %d arquivos por vez. O que passou disso foi descartado.","%d files queued":"%d arquivo(s)","File: %s, size: %d, max file size: %d":"","Drag files here.":"Arraste os arquivos pra cá","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"Erro na contagem dos arquivos","File extension error.":"Tipo de arquivo não permitido.","Error: File too large:":"Error: File too large:","Add Files":"Adicionar arquivo(s)"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ro.js DELETED
@@ -1,2 +0,0 @@
1
- // Romanian (ro)
2
- ngg_plupload.addI18n({"Stop Upload":"Oprește încărcarea","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"tb","Size":"Mărime","Close":"Închide","Init error.":"Eroare inițializare.","Add files to the upload queue and click the start button.":"Adaugă fișiere în lista apoi apasă butonul \"Începe încărcarea\".","Filename":"Nume fișier","Image format either wrong or not supported.":"Formatul de imagine ori este greșit ori nu este suportat.","Status":"Stare","HTTP Error.":"Eroare HTTP","Start Upload":"Începe încărcarea","mb":"mb","kb":"kb","Duplicate file error.":"Eroare duplicat fișier.","File size error.":"Eroare dimensiune fișier.","N/A":"N/A","gb":"gb","Error: Invalid file extension:":"Eroare: Extensia fișierului este invalidă:","Select files":"Selectează fișierele","%s already present in the queue.":"%s există deja în lista de așteptare.","File: %s":"Fișier: %s","b":"b","Uploaded %d/%d files":"Fișiere încărcate %d/%d","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d fișiere listate","File: %s, size: %d, max file size: %d":"Fișier: %s, mărime: %d, mărime maximă: %d","Drag files here.":"Trage aici fișierele.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"Eroare numărare fișiere.","File extension error.":"Eroare extensie fișier.","Error: File too large:":"Eroare: Fișierul este prea mare:","Add Files":"Adaugă fișiere"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ro.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Oprește încărcarea","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"tb",Size:"Mărime",Close:"Închide","Init error.":"Eroare inițializare.","Add files to the upload queue and click the start button.":'Adaugă fișiere în lista apoi apasă butonul "Începe încărcarea".',Filename:"Nume fișier","Image format either wrong or not supported.":"Formatul de imagine ori este greșit ori nu este suportat.",Status:"Stare","HTTP Error.":"Eroare HTTP","Start Upload":"Începe încărcarea",mb:"mb",kb:"kb","Duplicate file error.":"Eroare duplicat fișier.","File size error.":"Eroare dimensiune fișier.","N/A":"N/A",gb:"gb","Error: Invalid file extension:":"Eroare: Extensia fișierului este invalidă:","Select files":"Selectează fișierele","%s already present in the queue.":"%s există deja în lista de așteptare.","File: %s":"Fișier: %s",b:"b","Uploaded %d/%d files":"Fișiere încărcate %d/%d","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d fișiere listate","File: %s, size: %d, max file size: %d":"Fișier: %s, mărime: %d, mărime maximă: %d","Drag files here.":"Trage aici fișierele.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"Eroare numărare fișiere.","File extension error.":"Eroare extensie fișier.","Error: File too large:":"Eroare: Fișierul este prea mare:","Add Files":"Adaugă fișiere"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ru.js DELETED
@@ -1,2 +0,0 @@
1
- // Russian (ru)
2
- ngg_plupload.addI18n({"Stop Upload":"Остановить Загрузку","Upload URL might be wrong or doesn't exist.":"Адрес заргузки неправильный или он не существует.","tb":"тб","Size":"Размер","Close":"Закрыть","Init error.":"Ошибка инициализации.","Add files to the upload queue and click the start button.":"Добавьте файлы в очередь и нажмите кнопку \"Загрузить файлы\".","Filename":"Имя файла","Image format either wrong or not supported.":"Формат картинки неправильный или он не поддерживается.","Status":"Статус","HTTP Error.":"Ошибка HTTP.","Start Upload":"Начать загрузку","mb":"мб","kb":"кб","Duplicate file error.":"Такой файл уже присутствует в очереди.","File size error.":"Неправильный размер файла.","N/A":"N/A","gb":"гб","Error: Invalid file extension:":"Ошибка: У файла неправильное расширение:","Select files":"Выберите файлы","%s already present in the queue.":"%s уже присутствует в очереди.","File: %s":"Файл: %s","b":"б","Uploaded %d/%d files":"Загружено %d/%d файлов","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Загрузочный элемент за раз принимает только %d файл(ов). Лишние файлы были отброшены.","%d files queued":"В очереди %d файл(ов)","File: %s, size: %d, max file size: %d":"Файл: %s, размер: %d, макс. размер файла: %d","Drag files here.":"Перетащите файлы сюда.","Runtime ran out of available memory.":"Рабочая среда превысила лимит достуной памяти.","File count error.":"Слишком много файлов.","File extension error.":"Неправильное расширение файла.","Error: File too large:":"Ошибка: Файл слишком большой:","Add Files":"Добавьте файлы"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/ru.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Остановить Загрузку","Upload URL might be wrong or doesn't exist.":"Адрес заргузки неправильный или он не существует.",tb:"тб",Size:"Размер",Close:"Закрыть","Init error.":"Ошибка инициализации.","Add files to the upload queue and click the start button.":'Добавьте файлы в очередь и нажмите кнопку "Загрузить файлы".',Filename:"Имя файла","Image format either wrong or not supported.":"Формат картинки неправильный или он не поддерживается.",Status:"Статус","HTTP Error.":"Ошибка HTTP.","Start Upload":"Начать загрузку",mb:"мб",kb:"кб","Duplicate file error.":"Такой файл уже присутствует в очереди.","File size error.":"Неправильный размер файла.","N/A":"N/A",gb:"гб","Error: Invalid file extension:":"Ошибка: У файла неправильное расширение:","Select files":"Выберите файлы","%s already present in the queue.":"%s уже присутствует в очереди.","File: %s":"Файл: %s",b:"б","Uploaded %d/%d files":"Загружено %d/%d файлов","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Загрузочный элемент за раз принимает только %d файл(ов). Лишние файлы были отброшены.","%d files queued":"В очереди %d файл(ов)","File: %s, size: %d, max file size: %d":"Файл: %s, размер: %d, макс. размер файла: %d","Drag files here.":"Перетащите файлы сюда.","Runtime ran out of available memory.":"Рабочая среда превысила лимит достуной памяти.","File count error.":"Слишком много файлов.","File extension error.":"Неправильное расширение файла.","Error: File too large:":"Ошибка: Файл слишком большой:","Add Files":"Добавьте файлы"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/sk.js DELETED
@@ -1,2 +0,0 @@
1
- // Slovak (sk)
2
- ngg_plupload.addI18n({"Stop Upload":"Zastaviť nahrávanie","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"","Size":"Veľkosť","Close":"Close","Init error.":"Chyba inicializácie.","Add files to the upload queue and click the start button.":"Pridajte súbory do zoznamu a potom spustite nahrávanie.","Filename":"Názov súboru","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Stav","HTTP Error.":"HTTP Chyba.","Start Upload":"Start Upload","mb":"","kb":"","Duplicate file error.":"","File size error.":"Súbor je príliš veľký.","N/A":"N/A","gb":"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Vyberte súbory","%s already present in the queue.":"","File: %s":"File: %s","b":"","Uploaded %d/%d files":"Nahraných %d/%d súborov","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d súborov pridaných do zoznamu","File: %s, size: %d, max file size: %d":"","Drag files here.":"Sem pretiahnite súbory.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"Chybný typ súboru.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/sk.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Zastaviť nahrávanie","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"",Size:"Veľkosť",Close:"Close","Init error.":"Chyba inicializácie.","Add files to the upload queue and click the start button.":"Pridajte súbory do zoznamu a potom spustite nahrávanie.",Filename:"Názov súboru","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Stav","HTTP Error.":"HTTP Chyba.","Start Upload":"Start Upload",mb:"",kb:"","Duplicate file error.":"","File size error.":"Súbor je príliš veľký.","N/A":"N/A",gb:"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Vyberte súbory","%s already present in the queue.":"","File: %s":"File: %s",b:"","Uploaded %d/%d files":"Nahraných %d/%d súborov","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d súborov pridaných do zoznamu","File: %s, size: %d, max file size: %d":"","Drag files here.":"Sem pretiahnite súbory.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"Chybný typ súboru.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/sr.js DELETED
@@ -1,2 +0,0 @@
1
- // Serbian (sr)
2
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"","Size":"Veličina","Close":"Close","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Dodajte fajlove u listu i kliknite na dugme Start.","Filename":"Naziv fajla","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Status","HTTP Error.":"HTTP Error.","Start Upload":"Počni upload","mb":"","kb":"","Duplicate file error.":"","File size error.":"File size error.","N/A":"N/A","gb":"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Izaberite fajlove","%s already present in the queue.":"","File: %s":"File: %s","b":"","Uploaded %d/%d files":"Snimljeno %d/%d fajlova","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"","Drag files here.":"Prevucite fajlove ovde.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.","Error: File too large:":"Error: File too large:","Add Files":"Dodaj fajlove"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/sr.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"",Size:"Veličina",Close:"Close","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Dodajte fajlove u listu i kliknite na dugme Start.",Filename:"Naziv fajla","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Status","HTTP Error.":"HTTP Error.","Start Upload":"Počni upload",mb:"",kb:"","Duplicate file error.":"","File size error.":"File size error.","N/A":"N/A",gb:"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Izaberite fajlove","%s already present in the queue.":"","File: %s":"File: %s",b:"","Uploaded %d/%d files":"Snimljeno %d/%d fajlova","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"","Drag files here.":"Prevucite fajlove ovde.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.","Error: File too large:":"Error: File too large:","Add Files":"Dodaj fajlove"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/sv.js DELETED
@@ -1,2 +0,0 @@
1
- // Swedish (sv)
2
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"","Size":"Storlek","Close":"Close","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Lägg till filer till kön och tryck på start.","Filename":"Filnamn","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Status","HTTP Error.":"HTTP Error.","Start Upload":"Start Upload","mb":"","kb":"","Duplicate file error.":"","File size error.":"File size error.","N/A":"N/A","gb":"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Välj filer","%s already present in the queue.":"","File: %s":"File: %s","b":"","Uploaded %d/%d files":"Uploaded %d/%d files","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"","Drag files here.":"Dra filer hit","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/sv.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"",Size:"Storlek",Close:"Close","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Lägg till filer till kön och tryck på start.",Filename:"Filnamn","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Status","HTTP Error.":"HTTP Error.","Start Upload":"Start Upload",mb:"",kb:"","Duplicate file error.":"","File size error.":"File size error.","N/A":"N/A",gb:"","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Välj filer","%s already present in the queue.":"","File: %s":"File: %s",b:"","Uploaded %d/%d files":"Uploaded %d/%d files","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"","Drag files here.":"Dra filer hit","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.","Error: File too large:":"Error: File too large:","Add Files":"Add Files"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/th_TH.js DELETED
@@ -1,2 +0,0 @@
1
- // Thai (Thailand) (th_TH)
2
- ngg_plupload.addI18n({"Stop Upload":"หยุดอัพโหลด","Upload URL might be wrong or doesn't exist.":"URL ของการอัพโหลดอาจจะผิดหรือไม่มีอยู่","tb":"เทราไบต์","Size":"ขนาด","Close":"ปิด","Init error.":"Init เกิดข้อผิดพลาด","Add files to the upload queue and click the start button.":"เพิ่มไฟล์ไปยังคิวอัพโหลดและคลิกที่ปุ่มเริ่ม","Filename":"ชื่อไฟล์","Image format either wrong or not supported.":"รูปแบบรูปภาพทั้งสองผิดหรือไม่รองรับ","Status":"สถานะ","HTTP Error.":"HTTP เกิดข้อผิดพลาด","Start Upload":"เริ่มอัพโหลด","mb":"เมกะไบต์","kb":"กิโลไบต์","Duplicate file error.":"ไฟล์ที่ซ้ำกันเกิดข้อผิดพลาด","File size error.":"ขนาดไฟล์เกิดข้อผิดพลาด","N/A":"N/A","gb":"กิกะไบต์","Error: Invalid file extension:":"ข้อผิดพลาด: นามสกุลไฟล์ไม่ถูกต้อง:","Select files":"เลือกไฟล์","%s already present in the queue.":"%s อยู่ในคิวแล้ว","File: %s":"ไฟล์: %s","b":"ไบต์","Uploaded %d/%d files":"อัพโหลดแล้ว %d/%d ไฟล์","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"การอัพโหลดจะยอมรับเฉพาะ %d ไฟล์(s) ในช่วงเวลาเดียวกัน เมื่อไฟล์พิเศษถูกปลดออก","%d files queued":"%d ไฟล์ที่อยู่ในคิว","File: %s, size: %d, max file size: %d":"ไฟล์: %s, ขนาด: %d, ขนาดไฟล์สูงสุด: %d","Drag files here.":"ลากไฟล์มาที่นี่","Runtime ran out of available memory.":"รันไทม์วิ่งออกมาจากหน่วยความจำ","File count error.":"การนับไฟล์เกิดข้อผิดพลาด","File extension error.":"นามสกุลไฟล์เกิดข้อผิดพลาด","Error: File too large:":"ข้อผิดพลาด: ไฟล์ใหญ่เกินไป:","Add Files":"เพิ่มไฟล์"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/th_TH.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"หยุดอัพโหลด","Upload URL might be wrong or doesn't exist.":"URL ของการอัพโหลดอาจจะผิดหรือไม่มีอยู่",tb:"เทราไบต์",Size:"ขนาด",Close:"ปิด","Init error.":"Init เกิดข้อผิดพลาด","Add files to the upload queue and click the start button.":"เพิ่มไฟล์ไปยังคิวอัพโหลดและคลิกที่ปุ่มเริ่ม",Filename:"ชื่อไฟล์","Image format either wrong or not supported.":"รูปแบบรูปภาพทั้งสองผิดหรือไม่รองรับ",Status:"สถานะ","HTTP Error.":"HTTP เกิดข้อผิดพลาด","Start Upload":"เริ่มอัพโหลด",mb:"เมกะไบต์",kb:"กิโลไบต์","Duplicate file error.":"ไฟล์ที่ซ้ำกันเกิดข้อผิดพลาด","File size error.":"ขนาดไฟล์เกิดข้อผิดพลาด","N/A":"N/A",gb:"กิกะไบต์","Error: Invalid file extension:":"ข้อผิดพลาด: นามสกุลไฟล์ไม่ถูกต้อง:","Select files":"เลือกไฟล์","%s already present in the queue.":"%s อยู่ในคิวแล้ว","File: %s":"ไฟล์: %s",b:"ไบต์","Uploaded %d/%d files":"อัพโหลดแล้ว %d/%d ไฟล์","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"การอัพโหลดจะยอมรับเฉพาะ %d ไฟล์(s) ในช่วงเวลาเดียวกัน เมื่อไฟล์พิเศษถูกปลดออก","%d files queued":"%d ไฟล์ที่อยู่ในคิว","File: %s, size: %d, max file size: %d":"ไฟล์: %s, ขนาด: %d, ขนาดไฟล์สูงสุด: %d","Drag files here.":"ลากไฟล์มาที่นี่","Runtime ran out of available memory.":"รันไทม์วิ่งออกมาจากหน่วยความจำ","File count error.":"การนับไฟล์เกิดข้อผิดพลาด","File extension error.":"นามสกุลไฟล์เกิดข้อผิดพลาด","Error: File too large:":"ข้อผิดพลาด: ไฟล์ใหญ่เกินไป:","Add Files":"เพิ่มไฟล์"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/tr.js DELETED
@@ -1,2 +0,0 @@
1
- // Turkish (tr)
2
- ngg_plupload.addI18n({"Stop Upload":"Yüklemeyi durdur","Upload URL might be wrong or doesn't exist.":"URL yok ya da hatalı olabilir.","tb":"tb","Size":"Boyut","Close":"Kapat","Init error.":"Başlangıç hatası.","Add files to the upload queue and click the start button.":"Dosyaları kuyruğa ekleyin ve başlatma butonuna tıklayın.","Filename":"Dosya adı","Image format either wrong or not supported.":"Resim formatı yanlış ya da desteklenmiyor.","Status":"Durum","HTTP Error.":"HTTP hatası.","Start Upload":"Yüklemeyi başlat","mb":"mb","kb":"kb","Duplicate file error.":"Yinelenen dosya hatası.","File size error.":"Dosya boyutu hatası.","N/A":"-","gb":"gb","Error: Invalid file extension:":"Hata: Geçersiz dosya uzantısı:","Select files":"Dosyaları seç","%s already present in the queue.":"%s kuyrukta zaten mevcut.","File: %s":"Dosya: %s","b":"bayt","Uploaded %d/%d files":"%d/%d dosya yüklendi","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Yükleme elemanı aynı anda %d dosya kabul eder. Ekstra dosyalar işleme konulmaz.","%d files queued":"Kuyrukta %d dosya var.","File: %s, size: %d, max file size: %d":"Dosya: %s, boyut: %d, maksimum dosya boyutu: %d","Drag files here.":"Dosyaları buraya bırakın.","Runtime ran out of available memory.":"İşlem için yeterli bellek yok.","File count error.":"Dosya sayım hatası.","File extension error.":"Dosya uzantısı hatası.","Error: File too large:":"Hata: Dosya çok büyük:","Add Files":"Dosya ekle"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/tr.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Yüklemeyi durdur","Upload URL might be wrong or doesn't exist.":"URL yok ya da hatalı olabilir.",tb:"tb",Size:"Boyut",Close:"Kapat","Init error.":"Başlangıç hatası.","Add files to the upload queue and click the start button.":"Dosyaları kuyruğa ekleyin ve başlatma butonuna tıklayın.",Filename:"Dosya adı","Image format either wrong or not supported.":"Resim formatı yanlış ya da desteklenmiyor.",Status:"Durum","HTTP Error.":"HTTP hatası.","Start Upload":"Yüklemeyi başlat",mb:"mb",kb:"kb","Duplicate file error.":"Yinelenen dosya hatası.","File size error.":"Dosya boyutu hatası.","N/A":"-",gb:"gb","Error: Invalid file extension:":"Hata: Geçersiz dosya uzantısı:","Select files":"Dosyaları seç","%s already present in the queue.":"%s kuyrukta zaten mevcut.","File: %s":"Dosya: %s",b:"bayt","Uploaded %d/%d files":"%d/%d dosya yüklendi","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Yükleme elemanı aynı anda %d dosya kabul eder. Ekstra dosyalar işleme konulmaz.","%d files queued":"Kuyrukta %d dosya var.","File: %s, size: %d, max file size: %d":"Dosya: %s, boyut: %d, maksimum dosya boyutu: %d","Drag files here.":"Dosyaları buraya bırakın.","Runtime ran out of available memory.":"İşlem için yeterli bellek yok.","File count error.":"Dosya sayım hatası.","File extension error.":"Dosya uzantısı hatası.","Error: File too large:":"Hata: Dosya çok büyük:","Add Files":"Dosya ekle"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/uk_UA.js DELETED
@@ -1,2 +0,0 @@
1
- // Ukrainian (Ukraine) (uk_UA)
2
- ngg_plupload.addI18n({"Stop Upload":"Зупинити завантаження","Upload URL might be wrong or doesn't exist.":"Адреса завантаження неправильна або не існує.","tb":"","Size":"Розмір","Close":"Закрити","Init error.":"Помилка ініціалізації.","Add files to the upload queue and click the start button.":"Додайте файли в чергу та натисніть кнопку \"Завантажити файли\".","Filename":"Назва файлу","Image format either wrong or not supported.":"Формат картинки не правильний або не підтримується.","Status":"Статус","HTTP Error.":"Помилка HTTP.","Start Upload":"Почати завантаження","mb":"","kb":"","Duplicate file error.":"","File size error.":"Неправильний розмір файлу.","N/A":"Н/Д","gb":"","Error: Invalid file extension:":"Помилка: У файлу неправильне розширення:","Select files":"Оберіть файли","%s already present in the queue.":"","File: %s":"Файл: %s","b":"","Uploaded %d/%d files":"Завантажено %d/%d файлів","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"","%d files queued":"В черзі %d файл(ів)","File: %s, size: %d, max file size: %d":"","Drag files here.":"Перетягніть файли сюди.","Runtime ran out of available memory.":"Робоче середовище перевищило ліміт доступної пам'яті.","File count error.":"Занадто багато файлів.","File extension error.":"Неправильне розширення файлу.","Error: File too large:":"Помилка: Файл занадто великий:","Add Files":"Додати файли"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/uk_UA.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"Зупинити завантаження","Upload URL might be wrong or doesn't exist.":"Адреса завантаження неправильна або не існує.",tb:"",Size:"Розмір",Close:"Закрити","Init error.":"Помилка ініціалізації.","Add files to the upload queue and click the start button.":'Додайте файли в чергу та натисніть кнопку "Завантажити файли".',Filename:"Назва файлу","Image format either wrong or not supported.":"Формат картинки не правильний або не підтримується.",Status:"Статус","HTTP Error.":"Помилка HTTP.","Start Upload":"Почати завантаження",mb:"",kb:"","Duplicate file error.":"","File size error.":"Неправильний розмір файлу.","N/A":"Н/Д",gb:"","Error: Invalid file extension:":"Помилка: У файлу неправильне розширення:","Select files":"Оберіть файли","%s already present in the queue.":"","File: %s":"Файл: %s",b:"","Uploaded %d/%d files":"Завантажено %d/%d файлів","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"","%d files queued":"В черзі %d файл(ів)","File: %s, size: %d, max file size: %d":"","Drag files here.":"Перетягніть файли сюди.","Runtime ran out of available memory.":"Робоче середовище перевищило ліміт доступної пам'яті.","File count error.":"Занадто багато файлів.","File extension error.":"Неправильне розширення файлу.","Error: File too large:":"Помилка: Файл занадто великий:","Add Files":"Додати файли"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/zh_CN.js DELETED
@@ -1,2 +0,0 @@
1
- // Chinese (China) (zh_CN)
2
- ngg_plupload.addI18n({"Stop Upload":"停止上传","Upload URL might be wrong or doesn't exist.":"上传的URL可能是错误的或不存在。","tb":"tb","Size":"大小","Close":"关闭","Init error.":"初始化错误。","Add files to the upload queue and click the start button.":"将文件添加到上传队列,然后点击”开始上传“按钮。","Filename":"文件名","Image format either wrong or not supported.":"图片格式错误或者不支持。","Status":"状态","HTTP Error.":"HTTP 错误。","Start Upload":"开始上传","mb":"mb","kb":"kb","Duplicate file error.":"重复文件错误。","File size error.":"文件大小错误。","N/A":"N/A","gb":"gb","Error: Invalid file extension:":"错误:无效的文件扩展名:","Select files":"选择文件","%s already present in the queue.":"%s 已经在当前队列里。","File: %s":"文件: %s","b":"b","Uploaded %d/%d files":"已上传 %d/%d 个文件","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"每次只接受同时上传 %d 个文件,多余的文件将会被删除。","%d files queued":"%d 个文件加入到队列","File: %s, size: %d, max file size: %d":"文件: %s, 大小: %d, 最大文件大小: %d","Drag files here.":"把文件拖到这里。","Runtime ran out of available memory.":"运行时已消耗所有可用内存。","File count error.":"文件数量错误。","File extension error.":"文件扩展名错误。","Error: File too large:":"错误: 文件太大:","Add Files":"增加文件"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/zh_CN.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"停止上传","Upload URL might be wrong or doesn't exist.":"上传的URL可能是错误的或不存在。",tb:"tb",Size:"大小",Close:"关闭","Init error.":"初始化错误。","Add files to the upload queue and click the start button.":"将文件添加到上传队列,然后点击”开始上传“按钮。",Filename:"文件名","Image format either wrong or not supported.":"图片格式错误或者不支持。",Status:"状态","HTTP Error.":"HTTP 错误。","Start Upload":"开始上传",mb:"mb",kb:"kb","Duplicate file error.":"重复文件错误。","File size error.":"文件大小错误。","N/A":"N/A",gb:"gb","Error: Invalid file extension:":"错误:无效的文件扩展名:","Select files":"选择文件","%s already present in the queue.":"%s 已经在当前队列里。","File: %s":"文件: %s",b:"b","Uploaded %d/%d files":"已上传 %d/%d 个文件","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"每次只接受同时上传 %d 个文件,多余的文件将会被删除。","%d files queued":"%d 个文件加入到队列","File: %s, size: %d, max file size: %d":"文件: %s, 大小: %d, 最大文件大小: %d","Drag files here.":"把文件拖到这里。","Runtime ran out of available memory.":"运行时已消耗所有可用内存。","File count error.":"文件数量错误。","File extension error.":"文件扩展名错误。","Error: File too large:":"错误: 文件太大:","Add Files":"增加文件"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/zh_TW.js DELETED
@@ -1,2 +0,0 @@
1
- // Chinese (Taiwan) (zh_TW)
2
- ngg_plupload.addI18n({"Stop Upload":"停止上傳","Upload URL might be wrong or doesn't exist.":"檔案URL可能有誤或者不存在。","tb":"tb","Size":"大小","Close":"關閉","Init error.":"初始化錯誤。","Add files to the upload queue and click the start button.":"將檔案加入上傳序列,然後點選”開始上傳“按鈕。","Filename":"檔案名稱","Image format either wrong or not supported.":"圖片格式錯誤或者不支援。","Status":"狀態","HTTP Error.":"HTTP 錯誤。","Start Upload":"開始上傳","mb":"mb","kb":"kb","Duplicate file error.":"錯誤:檔案重複。","File size error.":"錯誤:檔案大小超過限制。","N/A":"N/A","gb":"gb","Error: Invalid file extension:":"錯誤:不接受的檔案格式:","Select files":"選擇檔案","%s already present in the queue.":"%s 已經存在目前的檔案序列。","File: %s":"檔案: %s","b":"b","Uploaded %d/%d files":"已上傳 %d/%d 個文件","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"每次只能上傳 %d 個檔案,超過限制數量的檔案將被忽略。","%d files queued":"%d 個檔案加入到序列","File: %s, size: %d, max file size: %d":"檔案: %s, 大小: %d, 最大檔案大小: %d","Drag files here.":"把檔案拖曳到這裡。","Runtime ran out of available memory.":"執行時耗盡了所有可用的記憶體。","File count error.":"檔案數量錯誤。","File extension error.":"檔案副檔名錯誤。","Error: File too large:":"錯誤: 檔案大小太大:","Add Files":"增加檔案"});
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/i18n/zh_TW.min.js DELETED
@@ -1 +0,0 @@
1
- ngg_plupload.addI18n({"Stop Upload":"停止上傳","Upload URL might be wrong or doesn't exist.":"檔案URL可能有誤或者不存在。",tb:"tb",Size:"大小",Close:"關閉","Init error.":"初始化錯誤。","Add files to the upload queue and click the start button.":"將檔案加入上傳序列,然後點選”開始上傳“按鈕。",Filename:"檔案名稱","Image format either wrong or not supported.":"圖片格式錯誤或者不支援。",Status:"狀態","HTTP Error.":"HTTP 錯誤。","Start Upload":"開始上傳",mb:"mb",kb:"kb","Duplicate file error.":"錯誤:檔案重複。","File size error.":"錯誤:檔案大小超過限制。","N/A":"N/A",gb:"gb","Error: Invalid file extension:":"錯誤:不接受的檔案格式:","Select files":"選擇檔案","%s already present in the queue.":"%s 已經存在目前的檔案序列。","File: %s":"檔案: %s",b:"b","Uploaded %d/%d files":"已上傳 %d/%d 個文件","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"每次只能上傳 %d 個檔案,超過限制數量的檔案將被忽略。","%d files queued":"%d 個檔案加入到序列","File: %s, size: %d, max file size: %d":"檔案: %s, 大小: %d, 最大檔案大小: %d","Drag files here.":"把檔案拖曳到這裡。","Runtime ran out of available memory.":"執行時耗盡了所有可用的記憶體。","File count error.":"檔案數量錯誤。","File extension error.":"檔案副檔名錯誤。","Error: File too large:":"錯誤: 檔案大小太大:","Add Files":"增加檔案"});
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/css/jquery.plupload.queue.css DELETED
@@ -1,181 +0,0 @@
1
- /*
2
- Plupload
3
- ------------------------------------------------------------------- */
4
-
5
- .plupload_button {
6
- display: -moz-inline-box; /* FF < 3*/
7
- display: inline-block;
8
- font: normal 12px sans-serif;
9
- text-decoration: none;
10
- color: #42454a;
11
- border: 1px solid #bababa;
12
- padding: 2px 8px 3px 20px;
13
- margin-right: 4px;
14
- background: #f3f3f3 url('../img/buttons.png') no-repeat 0 center;
15
- outline: 0;
16
-
17
- /* Optional rounded corners for browsers that support it */
18
- -moz-border-radius: 3px;
19
- -khtml-border-radius: 3px;
20
- -webkit-border-radius: 3px;
21
- border-radius: 3px;
22
- }
23
-
24
- .plupload_button:hover {
25
- color: #000;
26
- text-decoration: none;
27
- }
28
-
29
- .plupload_disabled, a.plupload_disabled:hover {
30
- color: #737373;
31
- border-color: #c5c5c5;
32
- background: #ededed url('../img/buttons-disabled.png') no-repeat 0 center;
33
- cursor: default;
34
- }
35
-
36
- .plupload_add {
37
- background-position: -181px center;
38
- }
39
-
40
- .plupload_wrapper {
41
- font: normal 11px Verdana,sans-serif;
42
- width: 100%;
43
- }
44
-
45
- .plupload_container {
46
- padding: 8px;
47
- background: url('../img/transp50.png');
48
- /*-moz-border-radius: 5px;*/
49
- }
50
-
51
- .plupload_container input {
52
- border: 1px solid #DDD;
53
- font: normal 11px Verdana,sans-serif;
54
- width: 98%;
55
- }
56
-
57
- .plupload_header {background: #2A2C2E url('../img/backgrounds.gif') repeat-x;}
58
- .plupload_header_content {
59
- background: url('../img/backgrounds.gif') no-repeat 0 -317px;
60
- min-height: 56px;
61
- padding-left: 60px;
62
- color: #FFF;
63
- }
64
- .plupload_header_title {
65
- font: normal 18px sans-serif;
66
- padding: 6px 0 3px;
67
- }
68
- .plupload_header_text {
69
- font: normal 12px sans-serif;
70
- }
71
-
72
- .plupload_filelist {
73
- margin: 0;
74
- padding: 0;
75
- list-style: none;
76
- }
77
-
78
- .plupload_scroll .plupload_filelist {
79
- height: 185px;
80
- background: #F5F5F5;
81
- overflow-y: scroll;
82
- }
83
-
84
- .plupload_filelist li {
85
- padding: 10px 8px;
86
- background: #F5F5F5 url('../img/backgrounds.gif') repeat-x 0 -156px;
87
- border-bottom: 1px solid #DDD;
88
- }
89
-
90
- .plupload_filelist_header, .plupload_filelist_footer {
91
- background: #DFDFDF;
92
- padding: 8px 8px;
93
- color: #42454A;
94
- }
95
- .plupload_filelist_header {
96
- border-top: 1px solid #EEE;
97
- border-bottom: 1px solid #CDCDCD;
98
- }
99
-
100
- .plupload_filelist_footer {border-top: 1px solid #FFF; height: 22px; line-height: 20px; vertical-align: middle;}
101
- .plupload_file_name {float: left; overflow: hidden}
102
- .plupload_file_status {color: #777;}
103
- .plupload_file_status span {color: #42454A;}
104
- .plupload_file_size, .plupload_file_status, .plupload_progress {
105
- float: right;
106
- width: 80px;
107
- }
108
- .plupload_file_size, .plupload_file_status, .plupload_file_action {text-align: right;}
109
-
110
- .plupload_filelist .plupload_file_name {
111
- width: 205px;
112
- white-space: nowrap;
113
- text-overflow: ellipsis;
114
- }
115
-
116
- .plupload_file_action {
117
- float: right;
118
- width: 16px;
119
- height: 16px;
120
- margin-left: 15px;
121
- }
122
-
123
- .plupload_file_action * {
124
- display: none;
125
- width: 16px;
126
- height: 16px;
127
- }
128
-
129
- li.plupload_uploading {background: #ECF3DC url('../img/backgrounds.gif') repeat-x 0 -238px;}
130
- li.plupload_done {color:#AAA}
131
-
132
- li.plupload_delete a {
133
- background: url('../img/delete.gif');
134
- }
135
-
136
- li.plupload_failed a {
137
- background: url('../img/error.gif');
138
- cursor: default;
139
- }
140
-
141
- li.plupload_done a {
142
- background: url('../img/done.gif');
143
- cursor: default;
144
- }
145
-
146
- .plupload_progress, .plupload_upload_status {
147
- display: none;
148
- }
149
-
150
- .plupload_progress_container {
151
- margin-top: 3px;
152
- border: 1px solid #CCC;
153
- background: #FFF;
154
- padding: 1px;
155
- }
156
- .plupload_progress_bar {
157
- width: 0px;
158
- height: 7px;
159
- background: #CDEB8B;
160
- }
161
-
162
- .plupload_scroll .plupload_filelist_header .plupload_file_action, .plupload_scroll .plupload_filelist_footer .plupload_file_action {
163
- margin-right: 17px;
164
- }
165
-
166
- /* Floats */
167
-
168
- .plupload_clear,.plupload_clearer {clear: both;}
169
- .plupload_clearer, .plupload_progress_bar {
170
- display: block;
171
- font-size: 0;
172
- line-height: 0;
173
- }
174
-
175
- li.plupload_droptext {
176
- background: transparent;
177
- text-align: center;
178
- vertical-align: middle;
179
- border: 0;
180
- line-height: 165px;
181
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/css/jquery.plupload.queue.min.css DELETED
@@ -1 +0,0 @@
1
- .plupload_button{display:-moz-inline-box;display:inline-block;font:400 12px sans-serif;text-decoration:none;color:#42454a;border:1px solid #bababa;padding:2px 8px 3px 20px;margin-right:4px;background:url(../img/buttons.png) 0 center no-repeat #f3f3f3;outline:0;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.plupload_button:hover{color:#000;text-decoration:none}.plupload_disabled,a.plupload_disabled:hover{color:#737373;border-color:#c5c5c5;background:url(../img/buttons-disabled.png) 0 center no-repeat #ededed;cursor:default}.plupload_add{background-position:-181px center}.plupload_wrapper{font:400 11px Verdana,sans-serif;width:100%}.plupload_container{padding:8px;background:url(../img/transp50.png)}.plupload_container input{border:1px solid #DDD;font:400 11px Verdana,sans-serif;width:98%}.plupload_header{background:url(../img/backgrounds.gif) repeat-x #2A2C2E}.plupload_header_content{background:url(../img/backgrounds.gif) 0 -317px no-repeat;min-height:56px;padding-left:60px;color:#FFF}.plupload_header_title{font:400 18px sans-serif;padding:6px 0 3px}.plupload_header_text{font:400 12px sans-serif}.plupload_filelist{margin:0;padding:0;list-style:none}.plupload_scroll .plupload_filelist{height:185px;background:#F5F5F5;overflow-y:scroll}.plupload_filelist li{padding:10px 8px;background:url(../img/backgrounds.gif) 0 -156px repeat-x #F5F5F5;border-bottom:1px solid #DDD}.plupload_filelist_footer,.plupload_filelist_header{background:#DFDFDF;padding:8px;color:#42454A}.plupload_filelist_header{border-top:1px solid #EEE;border-bottom:1px solid #CDCDCD}.plupload_filelist_footer{border-top:1px solid #FFF;height:22px;line-height:20px;vertical-align:middle}.plupload_file_name{float:left;overflow:hidden}.plupload_file_status{color:#777}.plupload_file_status span{color:#42454A}.plupload_file_size,.plupload_file_status,.plupload_progress{float:right;width:80px}.plupload_file_action,.plupload_file_size,.plupload_file_status{text-align:right}.plupload_filelist .plupload_file_name{width:205px;white-space:nowrap;text-overflow:ellipsis}.plupload_file_action{float:right;width:16px;height:16px;margin-left:15px}.plupload_file_action *{display:none;width:16px;height:16px}li.plupload_uploading{background:url(../img/backgrounds.gif) 0 -238px repeat-x #ECF3DC}li.plupload_done{color:#AAA}li.plupload_delete a{background:url(../img/delete.gif)}li.plupload_failed a{background:url(../img/error.gif);cursor:default}li.plupload_done a{background:url(../img/done.gif);cursor:default}.plupload_progress,.plupload_upload_status{display:none}.plupload_progress_container{margin-top:3px;border:1px solid #CCC;background:#FFF;padding:1px}.plupload_progress_bar{width:0;height:7px;background:#CDEB8B}.plupload_scroll .plupload_filelist_footer .plupload_file_action,.plupload_scroll .plupload_filelist_header .plupload_file_action{margin-right:17px}.plupload_clear,.plupload_clearer{clear:both}.plupload_clearer,.plupload_progress_bar{display:block;font-size:0;line-height:0}li.plupload_droptext{background:0 0;text-align:center;vertical-align:middle;border:0;line-height:165px}
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/backgrounds.gif DELETED
Binary file
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/buttons-disabled.png DELETED
Binary file
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/buttons.png DELETED
Binary file
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/delete.gif DELETED
Binary file
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/done.gif DELETED
Binary file
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/error.gif DELETED
Binary file
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/throbber.gif DELETED
Binary file
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/img/transp50.png DELETED
Binary file
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/jquery.plupload.queue.js DELETED
@@ -1,425 +0,0 @@
1
- /**
2
- * jquery.plupload.queue.js
3
- *
4
- * Copyright 2009, Moxiecode Systems AB
5
- * Released under GPL License.
6
- *
7
- * License: http://www.plupload.com/license
8
- * Contributing: http://www.plupload.com/contributing
9
- */
10
-
11
- /* global jQuery:true, alert:true */
12
-
13
- /**
14
- jQuery based implementation of the Plupload API - multi-runtime file uploading API.
15
-
16
- To use the widget you must include _jQuery_. It is not meant to be extended in any way and is provided to be
17
- used as it is.
18
-
19
- @example
20
- <!-- Instantiating: -->
21
- <div id="uploader">
22
- <p>Your browser doesn't have Flash, Silverlight or HTML5 support.</p>
23
- </div>
24
-
25
- <script>
26
- $('#uploader').pluploadQueue({
27
- url : '../upload.php',
28
- filters : [
29
- {title : "Image files", extensions : "jpg,gif,png"}
30
- ],
31
- rename: true,
32
- flash_swf_url : '../../js/Moxie.swf',
33
- silverlight_xap_url : '../../js/Moxie.xap',
34
- });
35
- </script>
36
-
37
- @example
38
- // Retrieving a reference to ngg_plupload.Uploader object
39
- var uploader = $('#uploader').pluploadQueue();
40
-
41
- uploader.bind('FilesAdded', function() {
42
-
43
- // Autostart
44
- setTimeout(uploader.start, 1); // "detach" from the main thread
45
- });
46
-
47
- @class pluploadQueue
48
- @constructor
49
- @param {Object} settings For detailed information about each option check documentation.
50
- @param {String} settings.url URL of the server-side upload handler.
51
- @param {Number|String} [settings.chunk_size=0] Chunk size in bytes to slice the file into. Shorcuts with b, kb, mb, gb, tb suffixes also supported. `e.g. 204800 or "204800b" or "200kb"`. By default - disabled.
52
- @param {String} [settings.file_data_name="file"] Name for the file field in Multipart formated message.
53
- @param {Array} [settings.filters=[]] Set of file type filters, each one defined by hash of title and extensions. `e.g. {title : "Image files", extensions : "jpg,jpeg,gif,png"}`. Dispatches `plupload.FILE_EXTENSION_ERROR`
54
- @param {String} [settings.flash_swf_url] URL of the Flash swf.
55
- @param {Object} [settings.headers] Custom headers to send with the upload. Hash of name/value pairs.
56
- @param {Number|String} [settings.max_file_size] Maximum file size that the user can pick, in bytes. Optionally supports b, kb, mb, gb, tb suffixes. `e.g. "10mb" or "1gb"`. By default - not set. Dispatches `plupload.FILE_SIZE_ERROR`.
57
- @param {Number} [settings.max_retries=0] How many times to retry the chunk or file, before triggering Error event.
58
- @param {Boolean} [settings.multipart=true] Whether to send file and additional parameters as Multipart formated message.
59
- @param {Object} [settings.multipart_params] Hash of key/value pairs to send with every file upload.
60
- @param {Boolean} [settings.multi_selection=true] Enable ability to select multiple files at once in file dialog.
61
- @param {Boolean} [settings.prevent_duplicates=false] Do not let duplicates into the queue. Dispatches `plupload.FILE_DUPLICATE_ERROR`.
62
- @param {String|Object} [settings.required_features] Either comma-separated list or hash of required features that chosen runtime should absolutely possess.
63
- @param {Object} [settings.resize] Enable resizng of images on client-side. Applies to `image/jpeg` and `image/png` only. `e.g. {width : 200, height : 200, quality : 90, crop: true}`
64
- @param {Number} [settings.resize.width] If image is bigger, it will be resized.
65
- @param {Number} [settings.resize.height] If image is bigger, it will be resized.
66
- @param {Number} [settings.resize.quality=90] Compression quality for jpegs (1-100).
67
- @param {Boolean} [settings.resize.crop=false] Whether to crop images to exact dimensions. By default they will be resized proportionally.
68
- @param {String} [settings.runtimes="html5,flash,silverlight,html4"] Comma separated list of runtimes, that Plupload will try in turn, moving to the next if previous fails.
69
- @param {String} [settings.silverlight_xap_url] URL of the Silverlight xap.
70
- @param {Boolean} [settings.unique_names=false] If true will generate unique filenames for uploaded files.
71
-
72
- @param {Boolean} [settings.dragdrop=true] Enable ability to add file to the queue by drag'n'dropping them from the desktop.
73
- @param {Boolean} [settings.rename=false] Enable ability to rename files in the queue.
74
- @param {Boolean} [settings.multiple_queues=true] Re-activate the widget after each upload procedure.
75
- */
76
- (function($, o) {
77
- var uploaders = {};
78
-
79
- function _(str) {
80
- return ngg_plupload.translate(str) || str;
81
- }
82
-
83
- function renderUI(id, target) {
84
- // Remove all existing non plupload items
85
- target.contents().each(function(i, node) {
86
- node = $(node);
87
-
88
- if (!node.is('.plupload')) {
89
- node.remove();
90
- }
91
- });
92
-
93
- // The below has been edited to change the classes given to the Add Files / Start Upload buttons
94
- target.prepend(
95
- '<div class="plupload_wrapper plupload_scroll">' +
96
- '<div id="' + id + '_container" class="plupload_container">' +
97
- '<div class="plupload">' +
98
- '<div class="plupload_header">' +
99
- '<div class="plupload_header_content">' +
100
- '<div class="plupload_header_title">' + _('Select files') + '</div>' +
101
- '<div class="plupload_header_text">' + _('Add files to the upload queue and click the start button.') + '</div>' +
102
- '</div>' +
103
- '</div>' +
104
-
105
- '<div class="plupload_content">' +
106
- '<div class="plupload_filelist_header">' +
107
- '<div class="plupload_file_name">' + _('Filename') + '</div>' +
108
- '<div class="plupload_file_action">&nbsp;</div>' +
109
- '<div class="plupload_file_status"><span>' + _('Status') + '</span></div>' +
110
- '<div class="plupload_file_size">' + _('Size') + '</div>' +
111
- '<div class="plupload_clearer">&nbsp;</div>' +
112
- '</div>' +
113
-
114
- '<ul id="' + id + '_filelist" class="plupload_filelist"></ul>' +
115
-
116
- '<div class="plupload_filelist_footer">' +
117
- '<div class="plupload_file_name">' +
118
- '<div class="plupload_buttons">' +
119
- '<a href="#" class="button-primary" id="' + id + '_browse">' + _('Add Files') + '</a>' +
120
- '<a href="#" class="button-primary plupload_start" id="' + id + '_upload">' + _('Start Upload') + '</a>' +
121
- '</div>' +
122
- '<span class="plupload_upload_status"></span>' +
123
- '</div>' +
124
- '<div class="plupload_file_action"></div>' +
125
- '<div class="plupload_file_status"><span class="plupload_total_status">0%</span></div>' +
126
- '<div class="plupload_file_size"><span class="plupload_total_file_size">0 b</span></div>' +
127
- '<div class="plupload_progress">' +
128
- '<div class="plupload_progress_container">' +
129
- '<div class="plupload_progress_bar"></div>' +
130
- '</div>' +
131
- '</div>' +
132
- '<div class="plupload_clearer">&nbsp;</div>' +
133
- '</div>' +
134
- '</div>' +
135
- '</div>' +
136
- '</div>' +
137
- '<input type="hidden" id="' + id + '_count" name="' + id + '_count" value="0" />' +
138
- '</div>'
139
- );
140
- }
141
-
142
- $.fn.pluploadQueue = function(settings) {
143
- if (settings) {
144
- this.each(function() {
145
- var uploader, target, id, contents_bak;
146
-
147
- target = $(this);
148
- id = target.attr('id');
149
-
150
- if (!id) {
151
- id = ngg_plupload.guid();
152
- target.attr('id', id);
153
- }
154
-
155
- contents_bak = target.html();
156
- renderUI(id, target);
157
-
158
- settings = $.extend({
159
- dragdrop : true,
160
- browse_button : id + '_browse',
161
- container : id
162
- }, settings);
163
-
164
- // Enable drag/drop (see PostInit handler as well)
165
- if (settings.dragdrop) {
166
- settings.drop_element = id + '_filelist';
167
- }
168
-
169
- uploader = new ngg_plupload.Uploader(settings);
170
-
171
- uploaders[id] = uploader;
172
-
173
- function handleStatus(file) {
174
- var actionClass;
175
-
176
- if (file.status == ngg_plupload.DONE) {
177
- actionClass = 'plupload_done';
178
- }
179
-
180
- if (file.status == ngg_plupload.FAILED) {
181
- actionClass = 'plupload_failed';
182
- }
183
-
184
- if (file.status == ngg_plupload.QUEUED) {
185
- actionClass = 'plupload_delete';
186
- }
187
-
188
- if (file.status == ngg_plupload.UPLOADING) {
189
- actionClass = 'plupload_uploading';
190
- }
191
-
192
- var icon = $('#' + file.id).attr('class', actionClass).find('a').css('display', 'block');
193
- if (file.hint) {
194
- icon.attr('title', file.hint);
195
- }
196
- }
197
-
198
- function updateTotalProgress() {
199
- $('span.plupload_total_status', target).html(uploader.total.percent + '%');
200
- $('div.plupload_progress_bar', target).css('width', uploader.total.percent + '%');
201
- $('span.plupload_upload_status', target).html(
202
- o.sprintf(_('Uploaded %d/%d files'), uploader.total.uploaded, uploader.files.length)
203
- );
204
- }
205
-
206
- function updateList() {
207
- var fileList = $('ul.plupload_filelist', target).html(''), inputCount = 0, inputHTML;
208
-
209
- $.each(uploader.files, function(i, file) {
210
- inputHTML = '';
211
-
212
- if (file.status == ngg_plupload.DONE) {
213
- if (file.target_name) {
214
- inputHTML += '<input type="hidden" name="' + id + '_' + inputCount + '_tmpname" value="' + ngg_plupload.xmlEncode(file.target_name) + '" />';
215
- }
216
-
217
- inputHTML += '<input type="hidden" name="' + id + '_' + inputCount + '_name" value="' + ngg_plupload.xmlEncode(file.name) + '" />';
218
- inputHTML += '<input type="hidden" name="' + id + '_' + inputCount + '_status" value="' + (file.status == ngg_plupload.DONE ? 'done' : 'failed') + '" />';
219
-
220
- inputCount++;
221
-
222
- $('#' + id + '_count').val(inputCount);
223
- }
224
-
225
- fileList.append(
226
- '<li id="' + file.id + '">' +
227
- '<div class="plupload_file_name"><span>' + file.name + '</span></div>' +
228
- '<div class="plupload_file_action"><a href="#"></a></div>' +
229
- '<div class="plupload_file_status">' + file.percent + '%</div>' +
230
- '<div class="plupload_file_size">' + ngg_plupload.formatSize(file.size) + '</div>' +
231
- '<div class="plupload_clearer">&nbsp;</div>' +
232
- inputHTML +
233
- '</li>'
234
- );
235
-
236
- handleStatus(file);
237
-
238
- $('#' + file.id + '.plupload_delete a').click(function(e) {
239
- $('#' + file.id).remove();
240
- uploader.removeFile(file);
241
-
242
- e.preventDefault();
243
- });
244
- });
245
-
246
- $('span.plupload_total_file_size', target).html(ngg_plupload.formatSize(uploader.total.size));
247
-
248
- if (uploader.total.queued === 0) {
249
- $('span.plupload_add_text', target).html(_('Add Files'));
250
- } else {
251
- $('span.plupload_add_text', target).html(o.sprintf(_('%d files queued'), uploader.total.queued));
252
- }
253
-
254
- $('a.plupload_start', target).toggleClass('plupload_disabled', uploader.files.length == (uploader.total.uploaded + uploader.total.failed));
255
-
256
- // Scroll to end of file list
257
- fileList[0].scrollTop = fileList[0].scrollHeight;
258
-
259
- updateTotalProgress();
260
-
261
- // Re-add drag message if there is no files
262
- if (!uploader.files.length && uploader.features.dragdrop && uploader.settings.dragdrop) {
263
- $('#' + id + '_filelist').append('<li class="plupload_droptext">' + _("Drag files here.") + '</li>');
264
- }
265
- }
266
-
267
- function destroy() {
268
- delete uploaders[id];
269
- uploader.destroy();
270
- target.html(contents_bak);
271
- uploader = target = contents_bak = null;
272
- }
273
-
274
- uploader.bind("UploadFile", function(up, file) {
275
- $('#' + file.id).addClass('plupload_current_file');
276
- });
277
-
278
- uploader.bind('Init', function(up, res) {
279
- // Enable rename support
280
- if (!settings.unique_names && settings.rename) {
281
- target.on('click', '#' + id + '_filelist div.plupload_file_name span', function(e) {
282
- var targetSpan = $(e.target), file, parts, name, ext = "";
283
-
284
- // Get file name and split out name and extension
285
- file = up.getFile(targetSpan.parents('li')[0].id);
286
- name = file.name;
287
- parts = /^(.+)(\.[^.]+)$/.exec(name);
288
- if (parts) {
289
- name = parts[1];
290
- ext = parts[2];
291
- }
292
-
293
- // Display input element
294
- targetSpan.hide().after('<input type="text" />');
295
- targetSpan.next().val(name).focus().blur(function() {
296
- targetSpan.show().next().remove();
297
- }).keydown(function(e) {
298
- var targetInput = $(this);
299
-
300
- if (e.keyCode == 13) {
301
- e.preventDefault();
302
-
303
- // Rename file and glue extension back on
304
- file.name = targetInput.val() + ext;
305
- targetSpan.html(file.name);
306
- targetInput.blur();
307
- }
308
- });
309
- });
310
- }
311
-
312
- $('#' + id + '_container').attr('title', 'Using runtime: ' + res.runtime);
313
-
314
- $('a.plupload_start', target).click(function(e) {
315
- if (!$(this).hasClass('plupload_disabled')) {
316
- uploader.start();
317
- }
318
-
319
- e.preventDefault();
320
- });
321
-
322
- $('a.plupload_stop', target).click(function(e) {
323
- e.preventDefault();
324
- uploader.stop();
325
- });
326
-
327
- $('a.plupload_start', target).addClass('plupload_disabled');
328
- });
329
-
330
- uploader.bind("Error", function(up, err) {
331
- var file = err.file, message;
332
-
333
- if (file) {
334
- message = err.message;
335
-
336
- if (err.details) {
337
- message += " (" + err.details + ")";
338
- }
339
-
340
- if (err.code == ngg_plupload.FILE_SIZE_ERROR) {
341
- alert(_("Error: File too large:") + " " + file.name);
342
- }
343
-
344
- if (err.code == ngg_plupload.FILE_EXTENSION_ERROR) {
345
- alert(_("Error: Invalid file extension:") + " " + file.name);
346
- }
347
-
348
- file.hint = message;
349
- $('#' + file.id).attr('class', 'plupload_failed').find('a').css('display', 'block').attr('title', message);
350
- }
351
-
352
- if (err.code === ngg_plupload.INIT_ERROR) {
353
- setTimeout(function() {
354
- destroy();
355
- }, 1);
356
- }
357
- });
358
-
359
- uploader.bind("PostInit", function(up) {
360
- // features are populated only after input components are fully instantiated
361
- if (up.settings.dragdrop && up.features.dragdrop) {
362
- $('#' + id + '_filelist').append('<li class="plupload_droptext">' + _("Drag files here.") + '</li>');
363
- }
364
- });
365
-
366
- uploader.init();
367
-
368
- uploader.bind('StateChanged', function() {
369
- if (uploader.state === ngg_plupload.STARTED) {
370
- $('li.plupload_delete a,div.plupload_buttons', target).hide();
371
- $('span.plupload_upload_status,div.plupload_progress,a.plupload_stop', target).css('display', 'block');
372
- $('span.plupload_upload_status', target).html('Uploaded ' + uploader.total.uploaded + '/' + uploader.files.length + ' files');
373
-
374
- if (settings.multiple_queues) {
375
- $('span.plupload_total_status,span.plupload_total_file_size', target).show();
376
- }
377
- } else {
378
- updateList();
379
- $('a.plupload_stop,div.plupload_progress', target).hide();
380
- $('a.plupload_delete', target).css('display', 'block');
381
-
382
- if (settings.multiple_queues && uploader.total.uploaded + uploader.total.failed == uploader.files.length) {
383
- $(".plupload_buttons,.plupload_upload_status", target).css("display", "inline");
384
- $(".plupload_start", target).addClass("plupload_disabled");
385
- $('span.plupload_total_status,span.plupload_total_file_size', target).hide();
386
- }
387
- }
388
- });
389
-
390
- uploader.bind('FilesAdded', updateList);
391
-
392
- uploader.bind('FilesRemoved', function() {
393
- // since the whole file list is redrawn for every change in the queue
394
- // we need to scroll back to the file removal point to avoid annoying
395
- // scrolling to the bottom bug (see #926)
396
- var scrollTop = $('#' + id + '_filelist').scrollTop();
397
- updateList();
398
- $('#' + id + '_filelist').scrollTop(scrollTop);
399
- });
400
-
401
- uploader.bind('FileUploaded', function(up, file) {
402
- handleStatus(file);
403
- });
404
-
405
- uploader.bind("UploadProgress", function(up, file) {
406
- // Set file specific progress
407
- $('#' + file.id + ' div.plupload_file_status', target).html(file.percent + '%');
408
-
409
- handleStatus(file);
410
- updateTotalProgress();
411
- });
412
-
413
- // Call setup function
414
- if (settings.setup) {
415
- settings.setup(uploader);
416
- }
417
- });
418
-
419
- return this;
420
- } else {
421
- // Get uploader instance for specified element
422
- return uploaders[$(this[0]).attr('id')];
423
- }
424
- };
425
- })(jQuery, mOxie);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/jquery.plupload.queue/jquery.plupload.queue.min.js DELETED
@@ -1 +0,0 @@
1
- !function(l,a){function d(l){return ngg_plupload.translate(l)||l}function e(a,e){e.contents().each(function(a,d){d=l(d),d.is(".plupload")||d.remove()}),e.prepend('<div class="plupload_wrapper plupload_scroll"><div id="'+a+'_container" class="plupload_container"><div class="plupload"><div class="plupload_header"><div class="plupload_header_content"><div class="plupload_header_title">'+d("Select files")+'</div><div class="plupload_header_text">'+d("Add files to the upload queue and click the start button.")+'</div></div></div><div class="plupload_content"><div class="plupload_filelist_header"><div class="plupload_file_name">'+d("Filename")+'</div><div class="plupload_file_action">&nbsp;</div><div class="plupload_file_status"><span>'+d("Status")+'</span></div><div class="plupload_file_size">'+d("Size")+'</div><div class="plupload_clearer">&nbsp;</div></div><ul id="'+a+'_filelist" class="plupload_filelist"></ul><div class="plupload_filelist_footer"><div class="plupload_file_name"><div class="plupload_buttons"><a href="#" class="button-primary" id="'+a+'_browse">'+d("Add Files")+'</a><a href="#" class="button-primary plupload_start" id="'+a+'_upload">'+d("Start Upload")+'</a></div><span class="plupload_upload_status"></span></div><div class="plupload_file_action"></div><div class="plupload_file_status"><span class="plupload_total_status">0%</span></div><div class="plupload_file_size"><span class="plupload_total_file_size">0 b</span></div><div class="plupload_progress"><div class="plupload_progress_container"><div class="plupload_progress_bar"></div></div></div><div class="plupload_clearer">&nbsp;</div></div></div></div></div><input type="hidden" id="'+a+'_count" name="'+a+'_count" value="0" /></div>')}var t={};l.fn.pluploadQueue=function(p){return p?(this.each(function(){function i(a){var d;a.status==ngg_plupload.DONE&&(d="plupload_done"),a.status==ngg_plupload.FAILED&&(d="plupload_failed"),a.status==ngg_plupload.QUEUED&&(d="plupload_delete"),a.status==ngg_plupload.UPLOADING&&(d="plupload_uploading");var e=l("#"+a.id).attr("class",d).find("a").css("display","block");a.hint&&e.attr("title",a.hint)}function s(){l("span.plupload_total_status",_).html(u.total.percent+"%"),l("div.plupload_progress_bar",_).css("width",u.total.percent+"%"),l("span.plupload_upload_status",_).html(a.sprintf(d("Uploaded %d/%d files"),u.total.uploaded,u.files.length))}function o(){var e,t=l("ul.plupload_filelist",_).html(""),p=0;l.each(u.files,function(a,d){e="",d.status==ngg_plupload.DONE&&(d.target_name&&(e+='<input type="hidden" name="'+r+"_"+p+'_tmpname" value="'+ngg_plupload.xmlEncode(d.target_name)+'" />'),e+='<input type="hidden" name="'+r+"_"+p+'_name" value="'+ngg_plupload.xmlEncode(d.name)+'" />',e+='<input type="hidden" name="'+r+"_"+p+'_status" value="'+(d.status==ngg_plupload.DONE?"done":"failed")+'" />',p++,l("#"+r+"_count").val(p)),t.append('<li id="'+d.id+'"><div class="plupload_file_name"><span>'+d.name+'</span></div><div class="plupload_file_action"><a href="#"></a></div><div class="plupload_file_status">'+d.percent+'%</div><div class="plupload_file_size">'+ngg_plupload.formatSize(d.size)+'</div><div class="plupload_clearer">&nbsp;</div>'+e+"</li>"),i(d),l("#"+d.id+".plupload_delete a").click(function(a){l("#"+d.id).remove(),u.removeFile(d),a.preventDefault()})}),l("span.plupload_total_file_size",_).html(ngg_plupload.formatSize(u.total.size)),0===u.total.queued?l("span.plupload_add_text",_).html(d("Add Files")):l("span.plupload_add_text",_).html(a.sprintf(d("%d files queued"),u.total.queued)),l("a.plupload_start",_).toggleClass("plupload_disabled",u.files.length==u.total.uploaded+u.total.failed),t[0].scrollTop=t[0].scrollHeight,s(),!u.files.length&&u.features.dragdrop&&u.settings.dragdrop&&l("#"+r+"_filelist").append('<li class="plupload_droptext">'+d("Drag files here.")+"</li>")}function n(){delete t[r],u.destroy(),_.html(c),u=_=c=null}var u,_,r,c;_=l(this),r=_.attr("id"),r||(r=ngg_plupload.guid(),_.attr("id",r)),c=_.html(),e(r,_),p=l.extend({dragdrop:!0,browse_button:r+"_browse",container:r},p),p.dragdrop&&(p.drop_element=r+"_filelist"),u=new ngg_plupload.Uploader(p),t[r]=u,u.bind("UploadFile",function(a,d){l("#"+d.id).addClass("plupload_current_file")}),u.bind("Init",function(a,d){!p.unique_names&&p.rename&&_.on("click","#"+r+"_filelist div.plupload_file_name span",function(d){var e,t,p,i=l(d.target),s="";e=a.getFile(i.parents("li")[0].id),p=e.name,t=/^(.+)(\.[^.]+)$/.exec(p),t&&(p=t[1],s=t[2]),i.hide().after('<input type="text" />'),i.next().val(p).focus().blur(function(){i.show().next().remove()}).keydown(function(a){var d=l(this);13==a.keyCode&&(a.preventDefault(),e.name=d.val()+s,i.html(e.name),d.blur())})}),l("#"+r+"_container").attr("title","Using runtime: "+d.runtime),l("a.plupload_start",_).click(function(a){l(this).hasClass("plupload_disabled")||u.start(),a.preventDefault()}),l("a.plupload_stop",_).click(function(l){l.preventDefault(),u.stop()}),l("a.plupload_start",_).addClass("plupload_disabled")}),u.bind("Error",function(a,e){var t,p=e.file;p&&(t=e.message,e.details&&(t+=" ("+e.details+")"),e.code==ngg_plupload.FILE_SIZE_ERROR&&alert(d("Error: File too large:")+" "+p.name),e.code==ngg_plupload.FILE_EXTENSION_ERROR&&alert(d("Error: Invalid file extension:")+" "+p.name),p.hint=t,l("#"+p.id).attr("class","plupload_failed").find("a").css("display","block").attr("title",t)),e.code===ngg_plupload.INIT_ERROR&&setTimeout(function(){n()},1)}),u.bind("PostInit",function(a){a.settings.dragdrop&&a.features.dragdrop&&l("#"+r+"_filelist").append('<li class="plupload_droptext">'+d("Drag files here.")+"</li>")}),u.init(),u.bind("StateChanged",function(){u.state===ngg_plupload.STARTED?(l("li.plupload_delete a,div.plupload_buttons",_).hide(),l("span.plupload_upload_status,div.plupload_progress,a.plupload_stop",_).css("display","block"),l("span.plupload_upload_status",_).html("Uploaded "+u.total.uploaded+"/"+u.files.length+" files"),p.multiple_queues&&l("span.plupload_total_status,span.plupload_total_file_size",_).show()):(o(),l("a.plupload_stop,div.plupload_progress",_).hide(),l("a.plupload_delete",_).css("display","block"),p.multiple_queues&&u.total.uploaded+u.total.failed==u.files.length&&(l(".plupload_buttons,.plupload_upload_status",_).css("display","inline"),l(".plupload_start",_).addClass("plupload_disabled"),l("span.plupload_total_status,span.plupload_total_file_size",_).hide()))}),u.bind("FilesAdded",o),u.bind("FilesRemoved",function(){var a=l("#"+r+"_filelist").scrollTop();o(),l("#"+r+"_filelist").scrollTop(a)}),u.bind("FileUploaded",function(l,a){i(a)}),u.bind("UploadProgress",function(a,d){l("#"+d.id+" div.plupload_file_status",_).html(d.percent+"%"),i(d),s()}),p.setup&&p.setup(u)}),this):t[l(this[0]).attr("id")]}}(jQuery,mOxie);
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/moxie.js DELETED
@@ -1,10684 +0,0 @@
1
- /**
2
- * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill
3
- * v1.2.0
4
- *
5
- * Copyright 2013, Moxiecode Systems AB
6
- * Released under GPL License.
7
- *
8
- * License: http://www.plupload.com/license
9
- * Contributing: http://www.plupload.com/contributing
10
- *
11
- * Date: 2014-01-16
12
- */
13
- /**
14
- * Compiled inline version. (Library mode)
15
- */
16
-
17
- /*jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true */
18
- /*globals $code */
19
-
20
- (function(exports, undefined) {
21
- "use strict";
22
-
23
- var modules = {};
24
-
25
- function require(ids, callback) {
26
- var module, defs = [];
27
-
28
- for (var i = 0; i < ids.length; ++i) {
29
- module = modules[ids[i]] || resolve(ids[i]);
30
- if (!module) {
31
- throw 'module definition dependecy not found: ' + ids[i];
32
- }
33
-
34
- defs.push(module);
35
- }
36
-
37
- callback.apply(null, defs);
38
- }
39
-
40
- function define(id, dependencies, definition) {
41
- if (typeof id !== 'string') {
42
- throw 'invalid module definition, module id must be defined and be a string';
43
- }
44
-
45
- if (dependencies === undefined) {
46
- throw 'invalid module definition, dependencies must be specified';
47
- }
48
-
49
- if (definition === undefined) {
50
- throw 'invalid module definition, definition function must be specified';
51
- }
52
-
53
- require(dependencies, function() {
54
- modules[id] = definition.apply(null, arguments);
55
- });
56
- }
57
-
58
- function defined(id) {
59
- return !!modules[id];
60
- }
61
-
62
- function resolve(id) {
63
- var target = exports;
64
- var fragments = id.split(/[.\/]/);
65
-
66
- for (var fi = 0; fi < fragments.length; ++fi) {
67
- if (!target[fragments[fi]]) {
68
- return;
69
- }
70
-
71
- target = target[fragments[fi]];
72
- }
73
-
74
- return target;
75
- }
76
-
77
- function expose(ids) {
78
- for (var i = 0; i < ids.length; i++) {
79
- var target = exports;
80
- var id = ids[i];
81
- var fragments = id.split(/[.\/]/);
82
-
83
- for (var fi = 0; fi < fragments.length - 1; ++fi) {
84
- if (target[fragments[fi]] === undefined) {
85
- target[fragments[fi]] = {};
86
- }
87
-
88
- target = target[fragments[fi]];
89
- }
90
-
91
- target[fragments[fragments.length - 1]] = modules[id];
92
- }
93
- }
94
-
95
- // Included from: src/javascript/core/utils/Basic.js
96
-
97
- /**
98
- * Basic.js
99
- *
100
- * Copyright 2013, Moxiecode Systems AB
101
- * Released under GPL License.
102
- *
103
- * License: http://www.plupload.com/license
104
- * Contributing: http://www.plupload.com/contributing
105
- */
106
-
107
- define('moxie/core/utils/Basic', [], function() {
108
- /**
109
- Gets the true type of the built-in object (better version of typeof).
110
- @author Angus Croll (http://javascriptweblog.wordpress.com/)
111
-
112
- @method typeOf
113
- @for Utils
114
- @static
115
- @param {Object} o Object to check.
116
- @return {String} Object [[Class]]
117
- */
118
- var typeOf = function(o) {
119
- var undef;
120
-
121
- if (o === undef) {
122
- return 'undefined';
123
- } else if (o === null) {
124
- return 'null';
125
- } else if (o.nodeType) {
126
- return 'node';
127
- }
128
-
129
- // the snippet below is awesome, however it fails to detect null, undefined and arguments types in IE lte 8
130
- return ({}).toString.call(o).match(/\s([a-z|A-Z]+)/)[1].toLowerCase();
131
- };
132
-
133
- /**
134
- Extends the specified object with another object.
135
-
136
- @method extend
137
- @static
138
- @param {Object} target Object to extend.
139
- @param {Object} [obj]* Multiple objects to extend with.
140
- @return {Object} Same as target, the extended object.
141
- */
142
- var extend = function(target) {
143
- var undef;
144
-
145
- each(arguments, function(arg, i) {
146
- if (i > 0) {
147
- each(arg, function(value, key) {
148
- if (value !== undef) {
149
- if (typeOf(target[key]) === typeOf(value) && !!~inArray(typeOf(value), ['array', 'object'])) {
150
- extend(target[key], value);
151
- } else {
152
- target[key] = value;
153
- }
154
- }
155
- });
156
- }
157
- });
158
- return target;
159
- };
160
-
161
- /**
162
- Executes the callback function for each item in array/object. If you return false in the
163
- callback it will break the loop.
164
-
165
- @method each
166
- @static
167
- @param {Object} obj Object to iterate.
168
- @param {function} callback Callback function to execute for each item.
169
- */
170
- var each = function(obj, callback) {
171
- var length, key, i, undef;
172
-
173
- if (obj) {
174
- try {
175
- length = obj.length;
176
- } catch(ex) {
177
- length = undef;
178
- }
179
-
180
- if (length === undef) {
181
- // Loop object items
182
- for (key in obj) {
183
- if (obj.hasOwnProperty(key)) {
184
- if (callback(obj[key], key) === false) {
185
- return;
186
- }
187
- }
188
- }
189
- } else {
190
- // Loop array items
191
- for (i = 0; i < length; i++) {
192
- if (callback(obj[i], i) === false) {
193
- return;
194
- }
195
- }
196
- }
197
- }
198
- };
199
-
200
- /**
201
- Checks if object is empty.
202
-
203
- @method isEmptyObj
204
- @static
205
- @param {Object} o Object to check.
206
- @return {Boolean}
207
- */
208
- var isEmptyObj = function(obj) {
209
- var prop;
210
-
211
- if (!obj || typeOf(obj) !== 'object') {
212
- return true;
213
- }
214
-
215
- for (prop in obj) {
216
- return false;
217
- }
218
-
219
- return true;
220
- };
221
-
222
- /**
223
- Recieve an array of functions (usually async) to call in sequence, each function
224
- receives a callback as first argument that it should call, when it completes. Finally,
225
- after everything is complete, main callback is called. Passing truthy value to the
226
- callback as a first argument will interrupt the sequence and invoke main callback
227
- immediately.
228
-
229
- @method inSeries
230
- @static
231
- @param {Array} queue Array of functions to call in sequence
232
- @param {Function} cb Main callback that is called in the end, or in case of erro
233
- */
234
- var inSeries = function(queue, cb) {
235
- var i = 0, length = queue.length;
236
-
237
- if (typeOf(cb) !== 'function') {
238
- cb = function() {};
239
- }
240
-
241
- if (!queue || !queue.length) {
242
- cb();
243
- }
244
-
245
- function callNext(i) {
246
- if (typeOf(queue[i]) === 'function') {
247
- queue[i](function(error) {
248
- /*jshint expr:true */
249
- ++i < length && !error ? callNext(i) : cb(error);
250
- });
251
- }
252
- }
253
- callNext(i);
254
- };
255
-
256
-
257
- /**
258
- Recieve an array of functions (usually async) to call in parallel, each function
259
- receives a callback as first argument that it should call, when it completes. After
260
- everything is complete, main callback is called. Passing truthy value to the
261
- callback as a first argument will interrupt the process and invoke main callback
262
- immediately.
263
-
264
- @method inParallel
265
- @static
266
- @param {Array} queue Array of functions to call in sequence
267
- @param {Function} cb Main callback that is called in the end, or in case of erro
268
- */
269
- var inParallel = function(queue, cb) {
270
- var count = 0, num = queue.length, cbArgs = new Array(num);
271
-
272
- each(queue, function(fn, i) {
273
- fn(function(error) {
274
- if (error) {
275
- return cb(error);
276
- }
277
-
278
- var args = [].slice.call(arguments);
279
- args.shift(); // strip error - undefined or not
280
-
281
- cbArgs[i] = args;
282
- count++;
283
-
284
- if (count === num) {
285
- cbArgs.unshift(null);
286
- cb.apply(this, cbArgs);
287
- }
288
- });
289
- });
290
- };
291
-
292
-
293
- /**
294
- Find an element in array and return it's index if present, otherwise return -1.
295
-
296
- @method inArray
297
- @static
298
- @param {Mixed} needle Element to find
299
- @param {Array} array
300
- @return {Int} Index of the element, or -1 if not found
301
- */
302
- var inArray = function(needle, array) {
303
- if (array) {
304
- if (Array.prototype.indexOf) {
305
- return Array.prototype.indexOf.call(array, needle);
306
- }
307
-
308
- for (var i = 0, length = array.length; i < length; i++) {
309
- if (array[i] === needle) {
310
- return i;
311
- }
312
- }
313
- }
314
- return -1;
315
- };
316
-
317
-
318
- /**
319
- Returns elements of first array if they are not present in second. And false - otherwise.
320
-
321
- @private
322
- @method arrayDiff
323
- @param {Array} needles
324
- @param {Array} array
325
- @return {Array|Boolean}
326
- */
327
- var arrayDiff = function(needles, array) {
328
- var diff = [];
329
-
330
- if (typeOf(needles) !== 'array') {
331
- needles = [needles];
332
- }
333
-
334
- if (typeOf(array) !== 'array') {
335
- array = [array];
336
- }
337
-
338
- for (var i in needles) {
339
- if (inArray(needles[i], array) === -1) {
340
- diff.push(needles[i]);
341
- }
342
- }
343
- return diff.length ? diff : false;
344
- };
345
-
346
-
347
- /**
348
- Find intersection of two arrays.
349
-
350
- @private
351
- @method arrayIntersect
352
- @param {Array} array1
353
- @param {Array} array2
354
- @return {Array} Intersection of two arrays or null if there is none
355
- */
356
- var arrayIntersect = function(array1, array2) {
357
- var result = [];
358
- each(array1, function(item) {
359
- if (inArray(item, array2) !== -1) {
360
- result.push(item);
361
- }
362
- });
363
- return result.length ? result : null;
364
- };
365
-
366
-
367
- /**
368
- Forces anything into an array.
369
-
370
- @method toArray
371
- @static
372
- @param {Object} obj Object with length field.
373
- @return {Array} Array object containing all items.
374
- */
375
- var toArray = function(obj) {
376
- var i, arr = [];
377
-
378
- for (i = 0; i < obj.length; i++) {
379
- arr[i] = obj[i];
380
- }
381
-
382
- return arr;
383
- };
384
-
385
-
386
- /**
387
- Generates an unique ID. This is 99.99% unique since it takes the current time and 5 random numbers.
388
- The only way a user would be able to get the same ID is if the two persons at the same exact milisecond manages
389
- to get 5 the same random numbers between 0-65535 it also uses a counter so each call will be guaranteed to be page unique.
390
- It's more probable for the earth to be hit with an ansteriod. Y
391
-
392
- @method guid
393
- @static
394
- @param {String} prefix to prepend (by default 'o' will be prepended).
395
- @method guid
396
- @return {String} Virtually unique id.
397
- */
398
- var guid = (function() {
399
- var counter = 0;
400
-
401
- return function(prefix) {
402
- var guid = new Date().getTime().toString(32), i;
403
-
404
- for (i = 0; i < 5; i++) {
405
- guid += Math.floor(Math.random() * 65535).toString(32);
406
- }
407
-
408
- return (prefix || 'o_') + guid + (counter++).toString(32);
409
- };
410
- }());
411
-
412
-
413
- /**
414
- Trims white spaces around the string
415
-
416
- @method trim
417
- @static
418
- @param {String} str
419
- @return {String}
420
- */
421
- var trim = function(str) {
422
- if (!str) {
423
- return str;
424
- }
425
- return String.prototype.trim ? String.prototype.trim.call(str) : str.toString().replace(/^\s*/, '').replace(/\s*$/, '');
426
- };
427
-
428
-
429
- /**
430
- Parses the specified size string into a byte value. For example 10kb becomes 10240.
431
-
432
- @method parseSizeStr
433
- @static
434
- @param {String/Number} size String to parse or number to just pass through.
435
- @return {Number} Size in bytes.
436
- */
437
- var parseSizeStr = function(size) {
438
- if (typeof(size) !== 'string') {
439
- return size;
440
- }
441
-
442
- var muls = {
443
- t: 1099511627776,
444
- g: 1073741824,
445
- m: 1048576,
446
- k: 1024
447
- },
448
- mul;
449
-
450
- size = /^([0-9]+)([mgk]?)$/.exec(size.toLowerCase().replace(/[^0-9mkg]/g, ''));
451
- mul = size[2];
452
- size = +size[1];
453
-
454
- if (muls.hasOwnProperty(mul)) {
455
- size *= muls[mul];
456
- }
457
- return size;
458
- };
459
-
460
-
461
- return {
462
- guid: guid,
463
- typeOf: typeOf,
464
- extend: extend,
465
- each: each,
466
- isEmptyObj: isEmptyObj,
467
- inSeries: inSeries,
468
- inParallel: inParallel,
469
- inArray: inArray,
470
- arrayDiff: arrayDiff,
471
- arrayIntersect: arrayIntersect,
472
- toArray: toArray,
473
- trim: trim,
474
- parseSizeStr: parseSizeStr
475
- };
476
- });
477
-
478
- // Included from: src/javascript/core/I18n.js
479
-
480
- /**
481
- * I18n.js
482
- *
483
- * Copyright 2013, Moxiecode Systems AB
484
- * Released under GPL License.
485
- *
486
- * License: http://www.plupload.com/license
487
- * Contributing: http://www.plupload.com/contributing
488
- */
489
-
490
- define("moxie/core/I18n", [
491
- "moxie/core/utils/Basic"
492
- ], function(Basic) {
493
- var i18n = {};
494
-
495
- return {
496
- /**
497
- * Extends the language pack object with new items.
498
- *
499
- * @param {Object} pack Language pack items to add.
500
- * @return {Object} Extended language pack object.
501
- */
502
- addI18n: function(pack) {
503
- return Basic.extend(i18n, pack);
504
- },
505
-
506
- /**
507
- * Translates the specified string by checking for the english string in the language pack lookup.
508
- *
509
- * @param {String} str String to look for.
510
- * @return {String} Translated string or the input string if it wasn't found.
511
- */
512
- translate: function(str) {
513
- return i18n[str] || str;
514
- },
515
-
516
- /**
517
- * Shortcut for translate function
518
- *
519
- * @param {String} str String to look for.
520
- * @return {String} Translated string or the input string if it wasn't found.
521
- */
522
- _: function(str) {
523
- return this.translate(str);
524
- },
525
-
526
- /**
527
- * Pseudo sprintf implementation - simple way to replace tokens with specified values.
528
- *
529
- * @param {String} str String with tokens
530
- * @return {String} String with replaced tokens
531
- */
532
- sprintf: function(str) {
533
- var args = [].slice.call(arguments, 1);
534
-
535
- return str.replace(/%[a-z]/g, function() {
536
- var value = args.shift();
537
- return Basic.typeOf(value) !== 'undefined' ? value : '';
538
- });
539
- }
540
- };
541
- });
542
-
543
- // Included from: src/javascript/core/utils/Mime.js
544
-
545
- /**
546
- * Mime.js
547
- *
548
- * Copyright 2013, Moxiecode Systems AB
549
- * Released under GPL License.
550
- *
551
- * License: http://www.plupload.com/license
552
- * Contributing: http://www.plupload.com/contributing
553
- */
554
-
555
- define("moxie/core/utils/Mime", [
556
- "moxie/core/utils/Basic",
557
- "moxie/core/I18n"
558
- ], function(Basic, I18n) {
559
-
560
- var mimeData = "" +
561
- "application/msword,doc dot," +
562
- "application/pdf,pdf," +
563
- "application/pgp-signature,pgp," +
564
- "application/postscript,ps ai eps," +
565
- "application/rtf,rtf," +
566
- "application/vnd.ms-excel,xls xlb," +
567
- "application/vnd.ms-powerpoint,ppt pps pot," +
568
- "application/zip,zip," +
569
- "application/x-shockwave-flash,swf swfl," +
570
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx," +
571
- "application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx," +
572
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx," +
573
- "application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx," +
574
- "application/vnd.openxmlformats-officedocument.presentationml.template,potx," +
575
- "application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx," +
576
- "application/x-javascript,js," +
577
- "application/json,json," +
578
- "audio/mpeg,mp3 mpga mpega mp2," +
579
- "audio/x-wav,wav," +
580
- "audio/x-m4a,m4a," +
581
- "audio/ogg,oga ogg," +
582
- "audio/aiff,aiff aif," +
583
- "audio/flac,flac," +
584
- "audio/aac,aac," +
585
- "audio/ac3,ac3," +
586
- "audio/x-ms-wma,wma," +
587
- "image/bmp,bmp," +
588
- "image/gif,gif," +
589
- "image/jpeg,jpg jpeg jpe," +
590
- "image/photoshop,psd," +
591
- "image/png,png," +
592
- "image/svg+xml,svg svgz," +
593
- "image/tiff,tiff tif," +
594
- "text/plain,asc txt text diff log," +
595
- "text/html,htm html xhtml," +
596
- "text/css,css," +
597
- "text/csv,csv," +
598
- "text/rtf,rtf," +
599
- "video/mpeg,mpeg mpg mpe m2v," +
600
- "video/quicktime,qt mov," +
601
- "video/mp4,mp4," +
602
- "video/x-m4v,m4v," +
603
- "video/x-flv,flv," +
604
- "video/x-ms-wmv,wmv," +
605
- "video/avi,avi," +
606
- "video/webm,webm," +
607
- "video/3gpp,3gpp 3gp," +
608
- "video/3gpp2,3g2," +
609
- "video/vnd.rn-realvideo,rv," +
610
- "video/ogg,ogv," +
611
- "video/x-matroska,mkv," +
612
- "application/vnd.oasis.opendocument.formula-template,otf," +
613
- "application/octet-stream,exe";
614
-
615
-
616
- var Mime = {
617
-
618
- mimes: {},
619
-
620
- extensions: {},
621
-
622
- // Parses the default mime types string into a mimes and extensions lookup maps
623
- addMimeType: function (mimeData) {
624
- var items = mimeData.split(/,/), i, ii, ext;
625
-
626
- for (i = 0; i < items.length; i += 2) {
627
- ext = items[i + 1].split(/ /);
628
-
629
- // extension to mime lookup
630
- for (ii = 0; ii < ext.length; ii++) {
631
- this.mimes[ext[ii]] = items[i];
632
- }
633
- // mime to extension lookup
634
- this.extensions[items[i]] = ext;
635
- }
636
- },
637
-
638
-
639
- extList2mimes: function (filters, addMissingExtensions) {
640
- var self = this, ext, i, ii, type, mimes = [];
641
-
642
- // convert extensions to mime types list
643
- for (i = 0; i < filters.length; i++) {
644
- ext = filters[i].extensions.split(/\s*,\s*/);
645
-
646
- for (ii = 0; ii < ext.length; ii++) {
647
-
648
- // if there's an asterisk in the list, then accept attribute is not required
649
- if (ext[ii] === '*') {
650
- return [];
651
- }
652
-
653
- type = self.mimes[ext[ii]];
654
- if (!type) {
655
- if (addMissingExtensions && /^\w+$/.test(ext[ii])) {
656
- mimes.push('.' + ext[ii]);
657
- } else {
658
- return []; // accept all
659
- }
660
- } else if (Basic.inArray(type, mimes) === -1) {
661
- mimes.push(type);
662
- }
663
- }
664
- }
665
- return mimes;
666
- },
667
-
668
-
669
- mimes2exts: function(mimes) {
670
- var self = this, exts = [];
671
-
672
- Basic.each(mimes, function(mime) {
673
- if (mime === '*') {
674
- exts = [];
675
- return false;
676
- }
677
-
678
- // check if this thing looks like mime type
679
- var m = mime.match(/^(\w+)\/(\*|\w+)$/);
680
- if (m) {
681
- if (m[2] === '*') {
682
- // wildcard mime type detected
683
- Basic.each(self.extensions, function(arr, mime) {
684
- if ((new RegExp('^' + m[1] + '/')).test(mime)) {
685
- [].push.apply(exts, self.extensions[mime]);
686
- }
687
- });
688
- } else if (self.extensions[mime]) {
689
- [].push.apply(exts, self.extensions[mime]);
690
- }
691
- }
692
- });
693
- return exts;
694
- },
695
-
696
-
697
- mimes2extList: function(mimes) {
698
- var accept = [], exts = [];
699
-
700
- if (Basic.typeOf(mimes) === 'string') {
701
- mimes = Basic.trim(mimes).split(/\s*,\s*/);
702
- }
703
-
704
- exts = this.mimes2exts(mimes);
705
-
706
- accept.push({
707
- title: I18n.translate('Files'),
708
- extensions: exts.length ? exts.join(',') : '*'
709
- });
710
-
711
- // save original mimes string
712
- accept.mimes = mimes;
713
-
714
- return accept;
715
- },
716
-
717
-
718
- getFileExtension: function(fileName) {
719
- var matches = fileName && fileName.match(/\.([^.]+)$/);
720
- if (matches) {
721
- return matches[1].toLowerCase();
722
- }
723
- return '';
724
- },
725
-
726
- getFileMime: function(fileName) {
727
- return this.mimes[this.getFileExtension(fileName)] || '';
728
- }
729
- };
730
-
731
- Mime.addMimeType(mimeData);
732
-
733
- return Mime;
734
- });
735
-
736
- // Included from: src/javascript/core/utils/Env.js
737
-
738
- /**
739
- * Env.js
740
- *
741
- * Copyright 2013, Moxiecode Systems AB
742
- * Released under GPL License.
743
- *
744
- * License: http://www.plupload.com/license
745
- * Contributing: http://www.plupload.com/contributing
746
- */
747
-
748
- define("moxie/core/utils/Env", [
749
- "moxie/core/utils/Basic"
750
- ], function(Basic) {
751
-
752
- // UAParser.js v0.6.2
753
- // Lightweight JavaScript-based User-Agent string parser
754
- // https://github.com/faisalman/ua-parser-js
755
- //
756
- // Copyright © 2012-2013 Faisalman <fyzlman@gmail.com>
757
- // Dual licensed under GPLv2 & MIT
758
-
759
- var UAParser = (function (undefined) {
760
-
761
- //////////////
762
- // Constants
763
- /////////////
764
-
765
-
766
- var EMPTY = '',
767
- UNKNOWN = '?',
768
- FUNC_TYPE = 'function',
769
- UNDEF_TYPE = 'undefined',
770
- OBJ_TYPE = 'object',
771
- MAJOR = 'major',
772
- MODEL = 'model',
773
- NAME = 'name',
774
- TYPE = 'type',
775
- VENDOR = 'vendor',
776
- VERSION = 'version',
777
- ARCHITECTURE= 'architecture',
778
- CONSOLE = 'console',
779
- MOBILE = 'mobile',
780
- TABLET = 'tablet';
781
-
782
-
783
- ///////////
784
- // Helper
785
- //////////
786
-
787
-
788
- var util = {
789
- has : function (str1, str2) {
790
- return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;
791
- },
792
- lowerize : function (str) {
793
- return str.toLowerCase();
794
- }
795
- };
796
-
797
-
798
- ///////////////
799
- // Map helper
800
- //////////////
801
-
802
-
803
- var mapper = {
804
-
805
- rgx : function () {
806
-
807
- // loop through all regexes maps
808
- for (var result, i = 0, j, k, p, q, matches, match, args = arguments; i < args.length; i += 2) {
809
-
810
- var regex = args[i], // even sequence (0,2,4,..)
811
- props = args[i + 1]; // odd sequence (1,3,5,..)
812
-
813
- // construct object barebones
814
- if (typeof(result) === UNDEF_TYPE) {
815
- result = {};
816
- for (p in props) {
817
- q = props[p];
818
- if (typeof(q) === OBJ_TYPE) {
819
- result[q[0]] = undefined;
820
- } else {
821
- result[q] = undefined;
822
- }
823
- }
824
- }
825
-
826
- // try matching uastring with regexes
827
- for (j = k = 0; j < regex.length; j++) {
828
- matches = regex[j].exec(this.getUA());
829
- if (!!matches) {
830
- for (p = 0; p < props.length; p++) {
831
- match = matches[++k];
832
- q = props[p];
833
- // check if given property is actually array
834
- if (typeof(q) === OBJ_TYPE && q.length > 0) {
835
- if (q.length == 2) {
836
- if (typeof(q[1]) == FUNC_TYPE) {
837
- // assign modified match
838
- result[q[0]] = q[1].call(this, match);
839
- } else {
840
- // assign given value, ignore regex match
841
- result[q[0]] = q[1];
842
- }
843
- } else if (q.length == 3) {
844
- // check whether function or regex
845
- if (typeof(q[1]) === FUNC_TYPE && !(q[1].exec && q[1].test)) {
846
- // call function (usually string mapper)
847
- result[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;
848
- } else {
849
- // sanitize match using given regex
850
- result[q[0]] = match ? match.replace(q[1], q[2]) : undefined;
851
- }
852
- } else if (q.length == 4) {
853
- result[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;
854
- }
855
- } else {
856
- result[q] = match ? match : undefined;
857
- }
858
- }
859
- break;
860
- }
861
- }
862
-
863
- if(!!matches) break; // break the loop immediately if match found
864
- }
865
- return result;
866
- },
867
-
868
- str : function (str, map) {
869
-
870
- for (var i in map) {
871
- // check if array
872
- if (typeof(map[i]) === OBJ_TYPE && map[i].length > 0) {
873
- for (var j = 0; j < map[i].length; j++) {
874
- if (util.has(map[i][j], str)) {
875
- return (i === UNKNOWN) ? undefined : i;
876
- }
877
- }
878
- } else if (util.has(map[i], str)) {
879
- return (i === UNKNOWN) ? undefined : i;
880
- }
881
- }
882
- return str;
883
- }
884
- };
885
-
886
-
887
- ///////////////
888
- // String map
889
- //////////////
890
-
891
-
892
- var maps = {
893
-
894
- browser : {
895
- oldsafari : {
896
- major : {
897
- '1' : ['/8', '/1', '/3'],
898
- '2' : '/4',
899
- '?' : '/'
900
- },
901
- version : {
902
- '1.0' : '/8',
903
- '1.2' : '/1',
904
- '1.3' : '/3',
905
- '2.0' : '/412',
906
- '2.0.2' : '/416',
907
- '2.0.3' : '/417',
908
- '2.0.4' : '/419',
909
- '?' : '/'
910
- }
911
- }
912
- },
913
-
914
- device : {
915
- sprint : {
916
- model : {
917
- 'Evo Shift 4G' : '7373KT'
918
- },
919
- vendor : {
920
- 'HTC' : 'APA',
921
- 'Sprint' : 'Sprint'
922
- }
923
- }
924
- },
925
-
926
- os : {
927
- windows : {
928
- version : {
929
- 'ME' : '4.90',
930
- 'NT 3.11' : 'NT3.51',
931
- 'NT 4.0' : 'NT4.0',
932
- '2000' : 'NT 5.0',
933
- 'XP' : ['NT 5.1', 'NT 5.2'],
934
- 'Vista' : 'NT 6.0',
935
- '7' : 'NT 6.1',
936
- '8' : 'NT 6.2',
937
- '8.1' : 'NT 6.3',
938
- 'RT' : 'ARM'
939
- }
940
- }
941
- }
942
- };
943
-
944
-
945
- //////////////
946
- // Regex map
947
- /////////////
948
-
949
-
950
- var regexes = {
951
-
952
- browser : [[
953
-
954
- // Presto based
955
- /(opera\smini)\/((\d+)?[\w\.-]+)/i, // Opera Mini
956
- /(opera\s[mobiletab]+).+version\/((\d+)?[\w\.-]+)/i, // Opera Mobi/Tablet
957
- /(opera).+version\/((\d+)?[\w\.]+)/i, // Opera > 9.80
958
- /(opera)[\/\s]+((\d+)?[\w\.]+)/i // Opera < 9.80
959
-
960
- ], [NAME, VERSION, MAJOR], [
961
-
962
- /\s(opr)\/((\d+)?[\w\.]+)/i // Opera Webkit
963
- ], [[NAME, 'Opera'], VERSION, MAJOR], [
964
-
965
- // Mixed
966
- /(kindle)\/((\d+)?[\w\.]+)/i, // Kindle
967
- /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?((\d+)?[\w\.]+)*/i,
968
- // Lunascape/Maxthon/Netfront/Jasmine/Blazer
969
-
970
- // Trident based
971
- /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?((\d+)?[\w\.]*)/i,
972
- // Avant/IEMobile/SlimBrowser/Baidu
973
- /(?:ms|\()(ie)\s((\d+)?[\w\.]+)/i, // Internet Explorer
974
-
975
- // Webkit/KHTML based
976
- /(rekonq)((?:\/)[\w\.]+)*/i, // Rekonq
977
- /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron)\/((\d+)?[\w\.-]+)/i
978
- // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron
979
- ], [NAME, VERSION, MAJOR], [
980
-
981
- /(trident).+rv[:\s]((\d+)?[\w\.]+).+like\sgecko/i // IE11
982
- ], [[NAME, 'IE'], VERSION, MAJOR], [
983
-
984
- /(yabrowser)\/((\d+)?[\w\.]+)/i // Yandex
985
- ], [[NAME, 'Yandex'], VERSION, MAJOR], [
986
-
987
- /(comodo_dragon)\/((\d+)?[\w\.]+)/i // Comodo Dragon
988
- ], [[NAME, /_/g, ' '], VERSION, MAJOR], [
989
-
990
- /(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?((\d+)?[\w\.]+)/i
991
- // Chrome/OmniWeb/Arora/Tizen/Nokia
992
- ], [NAME, VERSION, MAJOR], [
993
-
994
- /(dolfin)\/((\d+)?[\w\.]+)/i // Dolphin
995
- ], [[NAME, 'Dolphin'], VERSION, MAJOR], [
996
-
997
- /((?:android.+)crmo|crios)\/((\d+)?[\w\.]+)/i // Chrome for Android/iOS
998
- ], [[NAME, 'Chrome'], VERSION, MAJOR], [
999
-
1000
- /((?:android.+))version\/((\d+)?[\w\.]+)\smobile\ssafari/i // Android Browser
1001
- ], [[NAME, 'Android Browser'], VERSION, MAJOR], [
1002
-
1003
- /version\/((\d+)?[\w\.]+).+?mobile\/\w+\s(safari)/i // Mobile Safari
1004
- ], [VERSION, MAJOR, [NAME, 'Mobile Safari']], [
1005
-
1006
- /version\/((\d+)?[\w\.]+).+?(mobile\s?safari|safari)/i // Safari & Safari Mobile
1007
- ], [VERSION, MAJOR, NAME], [
1008
-
1009
- /webkit.+?(mobile\s?safari|safari)((\/[\w\.]+))/i // Safari < 3.0
1010
- ], [NAME, [MAJOR, mapper.str, maps.browser.oldsafari.major], [VERSION, mapper.str, maps.browser.oldsafari.version]], [
1011
-
1012
- /(konqueror)\/((\d+)?[\w\.]+)/i, // Konqueror
1013
- /(webkit|khtml)\/((\d+)?[\w\.]+)/i
1014
- ], [NAME, VERSION, MAJOR], [
1015
-
1016
- // Gecko based
1017
- /(navigator|netscape)\/((\d+)?[\w\.-]+)/i // Netscape
1018
- ], [[NAME, 'Netscape'], VERSION, MAJOR], [
1019
- /(swiftfox)/i, // Swiftfox
1020
- /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?((\d+)?[\w\.\+]+)/i,
1021
- // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror
1022
- /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/((\d+)?[\w\.-]+)/i,
1023
- // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
1024
- /(mozilla)\/((\d+)?[\w\.]+).+rv\:.+gecko\/\d+/i, // Mozilla
1025
-
1026
- // Other
1027
- /(uc\s?browser|polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|qqbrowser)[\/\s]?((\d+)?[\w\.]+)/i,
1028
- // UCBrowser/Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/QQBrowser
1029
- /(links)\s\(((\d+)?[\w\.]+)/i, // Links
1030
- /(gobrowser)\/?((\d+)?[\w\.]+)*/i, // GoBrowser
1031
- /(ice\s?browser)\/v?((\d+)?[\w\._]+)/i, // ICE Browser
1032
- /(mosaic)[\/\s]((\d+)?[\w\.]+)/i // Mosaic
1033
- ], [NAME, VERSION, MAJOR]
1034
- ],
1035
-
1036
- engine : [[
1037
-
1038
- /(presto)\/([\w\.]+)/i, // Presto
1039
- /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m
1040
- /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, // KHTML/Tasman/Links
1041
- /(icab)[\/\s]([23]\.[\d\.]+)/i // iCab
1042
- ], [NAME, VERSION], [
1043
-
1044
- /rv\:([\w\.]+).*(gecko)/i // Gecko
1045
- ], [VERSION, NAME]
1046
- ],
1047
-
1048
- os : [[
1049
-
1050
- // Windows based
1051
- /(windows)\snt\s6\.2;\s(arm)/i, // Windows RT
1052
- /(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i
1053
- ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [
1054
- /(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i
1055
- ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [
1056
-
1057
- // Mobile/Embedded OS
1058
- /\((bb)(10);/i // BlackBerry 10
1059
- ], [[NAME, 'BlackBerry'], VERSION], [
1060
- /(blackberry)\w*\/?([\w\.]+)*/i, // Blackberry
1061
- /(tizen)\/([\w\.]+)/i, // Tizen
1062
- /(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego)[\/\s-]?([\w\.]+)*/i
1063
- // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo
1064
- ], [NAME, VERSION], [
1065
- /(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i // Symbian
1066
- ], [[NAME, 'Symbian'], VERSION],[
1067
- /mozilla.+\(mobile;.+gecko.+firefox/i // Firefox OS
1068
- ], [[NAME, 'Firefox OS'], VERSION], [
1069
-
1070
- // Console
1071
- /(nintendo|playstation)\s([wids3portablevu]+)/i, // Nintendo/Playstation
1072
-
1073
- // GNU/Linux based
1074
- /(mint)[\/\s\(]?(\w+)*/i, // Mint
1075
- /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk)[\/\s-]?([\w\.-]+)*/i,
1076
- // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware
1077
- // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk
1078
- /(hurd|linux)\s?([\w\.]+)*/i, // Hurd/Linux
1079
- /(gnu)\s?([\w\.]+)*/i // GNU
1080
- ], [NAME, VERSION], [
1081
-
1082
- /(cros)\s[\w]+\s([\w\.]+\w)/i // Chromium OS
1083
- ], [[NAME, 'Chromium OS'], VERSION],[
1084
-
1085
- // Solaris
1086
- /(sunos)\s?([\w\.]+\d)*/i // Solaris
1087
- ], [[NAME, 'Solaris'], VERSION], [
1088
-
1089
- // BSD based
1090
- /\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly
1091
- ], [NAME, VERSION],[
1092
-
1093
- /(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i // iOS
1094
- ], [[NAME, 'iOS'], [VERSION, /_/g, '.']], [
1095
-
1096
- /(mac\sos\sx)\s?([\w\s\.]+\w)*/i // Mac OS
1097
- ], [NAME, [VERSION, /_/g, '.']], [
1098
-
1099
- // Other
1100
- /(haiku)\s(\w+)/i, // Haiku
1101
- /(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i, // AIX
1102
- /(macintosh|mac(?=_powerpc)|plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos)/i,
1103
- // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS
1104
- /(unix)\s?([\w\.]+)*/i // UNIX
1105
- ], [NAME, VERSION]
1106
- ]
1107
- };
1108
-
1109
-
1110
- /////////////////
1111
- // Constructor
1112
- ////////////////
1113
-
1114
-
1115
- var UAParser = function (uastring) {
1116
-
1117
- var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);
1118
-
1119
- this.getBrowser = function () {
1120
- return mapper.rgx.apply(this, regexes.browser);
1121
- };
1122
- this.getEngine = function () {
1123
- return mapper.rgx.apply(this, regexes.engine);
1124
- };
1125
- this.getOS = function () {
1126
- return mapper.rgx.apply(this, regexes.os);
1127
- };
1128
- this.getResult = function() {
1129
- return {
1130
- ua : this.getUA(),
1131
- browser : this.getBrowser(),
1132
- engine : this.getEngine(),
1133
- os : this.getOS()
1134
- };
1135
- };
1136
- this.getUA = function () {
1137
- return ua;
1138
- };
1139
- this.setUA = function (uastring) {
1140
- ua = uastring;
1141
- return this;
1142
- };
1143
- this.setUA(ua);
1144
- };
1145
-
1146
- return new UAParser().getResult();
1147
- })();
1148
-
1149
-
1150
- function version_compare(v1, v2, operator) {
1151
- // From: http://phpjs.org/functions
1152
- // + original by: Philippe Jausions (http://pear.php.net/user/jausions)
1153
- // + original by: Aidan Lister (http://aidanlister.com/)
1154
- // + reimplemented by: Kankrelune (http://www.webfaktory.info/)
1155
- // + improved by: Brett Zamir (http://brett-zamir.me)
1156
- // + improved by: Scott Baker
1157
- // + improved by: Theriault
1158
- // * example 1: version_compare('8.2.5rc', '8.2.5a');
1159
- // * returns 1: 1
1160
- // * example 2: version_compare('8.2.50', '8.2.52', '<');
1161
- // * returns 2: true
1162
- // * example 3: version_compare('5.3.0-dev', '5.3.0');
1163
- // * returns 3: -1
1164
- // * example 4: version_compare('4.1.0.52','4.01.0.51');
1165
- // * returns 4: 1
1166
-
1167
- // Important: compare must be initialized at 0.
1168
- var i = 0,
1169
- x = 0,
1170
- compare = 0,
1171
- // vm maps textual PHP versions to negatives so they're less than 0.
1172
- // PHP currently defines these as CASE-SENSITIVE. It is important to
1173
- // leave these as negatives so that they can come before numerical versions
1174
- // and as if no letters were there to begin with.
1175
- // (1alpha is < 1 and < 1.1 but > 1dev1)
1176
- // If a non-numerical value can't be mapped to this table, it receives
1177
- // -7 as its value.
1178
- vm = {
1179
- 'dev': -6,
1180
- 'alpha': -5,
1181
- 'a': -5,
1182
- 'beta': -4,
1183
- 'b': -4,
1184
- 'RC': -3,
1185
- 'rc': -3,
1186
- '#': -2,
1187
- 'p': 1,
1188
- 'pl': 1
1189
- },
1190
- // This function will be called to prepare each version argument.
1191
- // It replaces every _, -, and + with a dot.
1192
- // It surrounds any nonsequence of numbers/dots with dots.
1193
- // It replaces sequences of dots with a single dot.
1194
- // version_compare('4..0', '4.0') == 0
1195
- // Important: A string of 0 length needs to be converted into a value
1196
- // even less than an unexisting value in vm (-7), hence [-8].
1197
- // It's also important to not strip spaces because of this.
1198
- // version_compare('', ' ') == 1
1199
- prepVersion = function (v) {
1200
- v = ('' + v).replace(/[_\-+]/g, '.');
1201
- v = v.replace(/([^.\d]+)/g, '.$1.').replace(/\.{2,}/g, '.');
1202
- return (!v.length ? [-8] : v.split('.'));
1203
- },
1204
- // This converts a version component to a number.
1205
- // Empty component becomes 0.
1206
- // Non-numerical component becomes a negative number.
1207
- // Numerical component becomes itself as an integer.
1208
- numVersion = function (v) {
1209
- return !v ? 0 : (isNaN(v) ? vm[v] || -7 : parseInt(v, 10));
1210
- };
1211
-
1212
- v1 = prepVersion(v1);
1213
- v2 = prepVersion(v2);
1214
- x = Math.max(v1.length, v2.length);
1215
- for (i = 0; i < x; i++) {
1216
- if (v1[i] == v2[i]) {
1217
- continue;
1218
- }
1219
- v1[i] = numVersion(v1[i]);
1220
- v2[i] = numVersion(v2[i]);
1221
- if (v1[i] < v2[i]) {
1222
- compare = -1;
1223
- break;
1224
- } else if (v1[i] > v2[i]) {
1225
- compare = 1;
1226
- break;
1227
- }
1228
- }
1229
- if (!operator) {
1230
- return compare;
1231
- }
1232
-
1233
- // Important: operator is CASE-SENSITIVE.
1234
- // "No operator" seems to be treated as "<."
1235
- // Any other values seem to make the function return null.
1236
- switch (operator) {
1237
- case '>':
1238
- case 'gt':
1239
- return (compare > 0);
1240
- case '>=':
1241
- case 'ge':
1242
- return (compare >= 0);
1243
- case '<=':
1244
- case 'le':
1245
- return (compare <= 0);
1246
- case '==':
1247
- case '=':
1248
- case 'eq':
1249
- return (compare === 0);
1250
- case '<>':
1251
- case '!=':
1252
- case 'ne':
1253
- return (compare !== 0);
1254
- case '':
1255
- case '<':
1256
- case 'lt':
1257
- return (compare < 0);
1258
- default:
1259
- return null;
1260
- }
1261
- }
1262
-
1263
-
1264
- var can = (function() {
1265
- var caps = {
1266
- define_property: (function() {
1267
- /* // currently too much extra code required, not exactly worth it
1268
- try { // as of IE8, getters/setters are supported only on DOM elements
1269
- var obj = {};
1270
- if (Object.defineProperty) {
1271
- Object.defineProperty(obj, 'prop', {
1272
- enumerable: true,
1273
- configurable: true
1274
- });
1275
- return true;
1276
- }
1277
- } catch(ex) {}
1278
-
1279
- if (Object.prototype.__defineGetter__ && Object.prototype.__defineSetter__) {
1280
- return true;
1281
- }*/
1282
- return false;
1283
- }()),
1284
-
1285
- create_canvas: (function() {
1286
- // On the S60 and BB Storm, getContext exists, but always returns undefined
1287
- // so we actually have to call getContext() to verify
1288
- // github.com/Modernizr/Modernizr/issues/issue/97/
1289
- var el = document.createElement('canvas');
1290
- return !!(el.getContext && el.getContext('2d'));
1291
- }()),
1292
-
1293
- return_response_type: function(responseType) {
1294
- try {
1295
- if (Basic.inArray(responseType, ['', 'text', 'document']) !== -1) {
1296
- return true;
1297
- } else if (window.XMLHttpRequest) {
1298
- var xhr = new XMLHttpRequest();
1299
- xhr.open('get', '/'); // otherwise Gecko throws an exception
1300
- if ('responseType' in xhr) {
1301
- xhr.responseType = responseType;
1302
- // as of 23.0.1271.64, Chrome switched from throwing exception to merely logging it to the console (why? o why?)
1303
- if (xhr.responseType !== responseType) {
1304
- return false;
1305
- }
1306
- return true;
1307
- }
1308
- }
1309
- } catch (ex) {}
1310
- return false;
1311
- },
1312
-
1313
- // ideas for this heavily come from Modernizr (http://modernizr.com/)
1314
- use_data_uri: (function() {
1315
- var du = new Image();
1316
-
1317
- du.onload = function() {
1318
- caps.use_data_uri = (du.width === 1 && du.height === 1);
1319
- };
1320
-
1321
- setTimeout(function() {
1322
- du.src = "data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==";
1323
- }, 1);
1324
- return false;
1325
- }()),
1326
-
1327
- use_data_uri_over32kb: function() { // IE8
1328
- return caps.use_data_uri && (Env.browser !== 'IE' || Env.version >= 9);
1329
- },
1330
-
1331
- use_data_uri_of: function(bytes) {
1332
- return (caps.use_data_uri && bytes < 33000 || caps.use_data_uri_over32kb());
1333
- },
1334
-
1335
- use_fileinput: function() {
1336
- var el = document.createElement('input');
1337
- el.setAttribute('type', 'file');
1338
- return !el.disabled;
1339
- }
1340
- };
1341
-
1342
- return function(cap) {
1343
- var args = [].slice.call(arguments);
1344
- args.shift(); // shift of cap
1345
- return Basic.typeOf(caps[cap]) === 'function' ? caps[cap].apply(this, args) : !!caps[cap];
1346
- };
1347
- }());
1348
-
1349
-
1350
- var Env = {
1351
- can: can,
1352
-
1353
- browser: UAParser.browser.name,
1354
- version: parseFloat(UAParser.browser.major),
1355
- os: UAParser.os.name, // everybody intuitively types it in a lowercase for some reason
1356
- osVersion: UAParser.os.version,
1357
-
1358
- verComp: version_compare,
1359
-
1360
- swf_url: "../flash/Moxie.swf",
1361
- xap_url: "../silverlight/Moxie.xap",
1362
- global_event_dispatcher: "moxie.core.EventTarget.instance.dispatchEvent"
1363
- };
1364
-
1365
- // for backward compatibility
1366
- // @deprecated Use `Env.os` instead
1367
- Env.OS = Env.os;
1368
-
1369
- return Env;
1370
- });
1371
-
1372
- // Included from: src/javascript/core/utils/Dom.js
1373
-
1374
- /**
1375
- * Dom.js
1376
- *
1377
- * Copyright 2013, Moxiecode Systems AB
1378
- * Released under GPL License.
1379
- *
1380
- * License: http://www.plupload.com/license
1381
- * Contributing: http://www.plupload.com/contributing
1382
- */
1383
-
1384
- define('moxie/core/utils/Dom', ['moxie/core/utils/Env'], function(Env) {
1385
-
1386
- /**
1387
- Get DOM Element by it's id.
1388
-
1389
- @method get
1390
- @for Utils
1391
- @param {String} id Identifier of the DOM Element
1392
- @return {DOMElement}
1393
- */
1394
- var get = function(id) {
1395
- if (typeof id !== 'string') {
1396
- return id;
1397
- }
1398
- return document.getElementById(id);
1399
- };
1400
-
1401
- /**
1402
- Checks if specified DOM element has specified class.
1403
-
1404
- @method hasClass
1405
- @static
1406
- @param {Object} obj DOM element like object to add handler to.
1407
- @param {String} name Class name
1408
- */
1409
- var hasClass = function(obj, name) {
1410
- if (!obj.className) {
1411
- return false;
1412
- }
1413
-
1414
- var regExp = new RegExp("(^|\\s+)"+name+"(\\s+|$)");
1415
- return regExp.test(obj.className);
1416
- };
1417
-
1418
- /**
1419
- Adds specified className to specified DOM element.
1420
-
1421
- @method addClass
1422
- @static
1423
- @param {Object} obj DOM element like object to add handler to.
1424
- @param {String} name Class name
1425
- */
1426
- var addClass = function(obj, name) {
1427
- if (!hasClass(obj, name)) {
1428
- obj.className = !obj.className ? name : obj.className.replace(/\s+$/, '') + ' ' + name;
1429
- }
1430
- };
1431
-
1432
- /**
1433
- Removes specified className from specified DOM element.
1434
-
1435
- @method removeClass
1436
- @static
1437
- @param {Object} obj DOM element like object to add handler to.
1438
- @param {String} name Class name
1439
- */
1440
- var removeClass = function(obj, name) {
1441
- if (obj.className) {
1442
- var regExp = new RegExp("(^|\\s+)"+name+"(\\s+|$)");
1443
- obj.className = obj.className.replace(regExp, function($0, $1, $2) {
1444
- return $1 === ' ' && $2 === ' ' ? ' ' : '';
1445
- });
1446
- }
1447
- };
1448
-
1449
- /**
1450
- Returns a given computed style of a DOM element.
1451
-
1452
- @method getStyle
1453
- @static
1454
- @param {Object} obj DOM element like object.
1455
- @param {String} name Style you want to get from the DOM element
1456
- */
1457
- var getStyle = function(obj, name) {
1458
- if (obj.currentStyle) {
1459
- return obj.currentStyle[name];
1460
- } else if (window.getComputedStyle) {
1461
- return window.getComputedStyle(obj, null)[name];
1462
- }
1463
- };
1464
-
1465
-
1466
- /**
1467
- Returns the absolute x, y position of an Element. The position will be returned in a object with x, y fields.
1468
-
1469
- @method getPos
1470
- @static
1471
- @param {Element} node HTML element or element id to get x, y position from.
1472
- @param {Element} root Optional root element to stop calculations at.
1473
- @return {object} Absolute position of the specified element object with x, y fields.
1474
- */
1475
- var getPos = function(node, root) {
1476
- var x = 0, y = 0, parent, doc = document, nodeRect, rootRect;
1477
-
1478
- node = node;
1479
- root = root || doc.body;
1480
-
1481
- // Returns the x, y cordinate for an element on IE 6 and IE 7
1482
- function getIEPos(node) {
1483
- var bodyElm, rect, x = 0, y = 0;
1484
-
1485
- if (node) {
1486
- rect = node.getBoundingClientRect();
1487
- bodyElm = doc.compatMode === "CSS1Compat" ? doc.documentElement : doc.body;
1488
- x = rect.left + bodyElm.scrollLeft;
1489
- y = rect.top + bodyElm.scrollTop;
1490
- }
1491
-
1492
- return {
1493
- x : x,
1494
- y : y
1495
- };
1496
- }
1497
-
1498
- // Use getBoundingClientRect on IE 6 and IE 7 but not on IE 8 in standards mode
1499
- if (node && node.getBoundingClientRect && Env.browser === 'IE' && (!doc.documentMode || doc.documentMode < 8)) {
1500
- nodeRect = getIEPos(node);
1501
- rootRect = getIEPos(root);
1502
-
1503
- return {
1504
- x : nodeRect.x - rootRect.x,
1505
- y : nodeRect.y - rootRect.y
1506
- };
1507
- }
1508
-
1509
- parent = node;
1510
- while (parent && parent != root && parent.nodeType) {
1511
- x += parent.offsetLeft || 0;
1512
- y += parent.offsetTop || 0;
1513
- parent = parent.offsetParent;
1514
- }
1515
-
1516
- parent = node.parentNode;
1517
- while (parent && parent != root && parent.nodeType) {
1518
- x -= parent.scrollLeft || 0;
1519
- y -= parent.scrollTop || 0;
1520
- parent = parent.parentNode;
1521
- }
1522
-
1523
- return {
1524
- x : x,
1525
- y : y
1526
- };
1527
- };
1528
-
1529
- /**
1530
- Returns the size of the specified node in pixels.
1531
-
1532
- @method getSize
1533
- @static
1534
- @param {Node} node Node to get the size of.
1535
- @return {Object} Object with a w and h property.
1536
- */
1537
- var getSize = function(node) {
1538
- return {
1539
- w : node.offsetWidth || node.clientWidth,
1540
- h : node.offsetHeight || node.clientHeight
1541
- };
1542
- };
1543
-
1544
- return {
1545
- get: get,
1546
- hasClass: hasClass,
1547
- addClass: addClass,
1548
- removeClass: removeClass,
1549
- getStyle: getStyle,
1550
- getPos: getPos,
1551
- getSize: getSize
1552
- };
1553
- });
1554
-
1555
- // Included from: src/javascript/core/Exceptions.js
1556
-
1557
- /**
1558
- * Exceptions.js
1559
- *
1560
- * Copyright 2013, Moxiecode Systems AB
1561
- * Released under GPL License.
1562
- *
1563
- * License: http://www.plupload.com/license
1564
- * Contributing: http://www.plupload.com/contributing
1565
- */
1566
-
1567
- define('moxie/core/Exceptions', [
1568
- 'moxie/core/utils/Basic'
1569
- ], function(Basic) {
1570
- function _findKey(obj, value) {
1571
- var key;
1572
- for (key in obj) {
1573
- if (obj[key] === value) {
1574
- return key;
1575
- }
1576
- }
1577
- return null;
1578
- }
1579
-
1580
- return {
1581
- RuntimeError: (function() {
1582
- var namecodes = {
1583
- NOT_INIT_ERR: 1,
1584
- NOT_SUPPORTED_ERR: 9,
1585
- JS_ERR: 4
1586
- };
1587
-
1588
- function RuntimeError(code) {
1589
- this.code = code;
1590
- this.name = _findKey(namecodes, code);
1591
- this.message = this.name + ": RuntimeError " + this.code;
1592
- }
1593
-
1594
- Basic.extend(RuntimeError, namecodes);
1595
- RuntimeError.prototype = Error.prototype;
1596
- return RuntimeError;
1597
- }()),
1598
-
1599
- OperationNotAllowedException: (function() {
1600
-
1601
- function OperationNotAllowedException(code) {
1602
- this.code = code;
1603
- this.name = 'OperationNotAllowedException';
1604
- }
1605
-
1606
- Basic.extend(OperationNotAllowedException, {
1607
- NOT_ALLOWED_ERR: 1
1608
- });
1609
-
1610
- OperationNotAllowedException.prototype = Error.prototype;
1611
-
1612
- return OperationNotAllowedException;
1613
- }()),
1614
-
1615
- ImageError: (function() {
1616
- var namecodes = {
1617
- WRONG_FORMAT: 1,
1618
- MAX_RESOLUTION_ERR: 2
1619
- };
1620
-
1621
- function ImageError(code) {
1622
- this.code = code;
1623
- this.name = _findKey(namecodes, code);
1624
- this.message = this.name + ": ImageError " + this.code;
1625
- }
1626
-
1627
- Basic.extend(ImageError, namecodes);
1628
- ImageError.prototype = Error.prototype;
1629
-
1630
- return ImageError;
1631
- }()),
1632
-
1633
- FileException: (function() {
1634
- var namecodes = {
1635
- NOT_FOUND_ERR: 1,
1636
- SECURITY_ERR: 2,
1637
- ABORT_ERR: 3,
1638
- NOT_READABLE_ERR: 4,
1639
- ENCODING_ERR: 5,
1640
- NO_MODIFICATION_ALLOWED_ERR: 6,
1641
- INVALID_STATE_ERR: 7,
1642
- SYNTAX_ERR: 8
1643
- };
1644
-
1645
- function FileException(code) {
1646
- this.code = code;
1647
- this.name = _findKey(namecodes, code);
1648
- this.message = this.name + ": FileException " + this.code;
1649
- }
1650
-
1651
- Basic.extend(FileException, namecodes);
1652
- FileException.prototype = Error.prototype;
1653
- return FileException;
1654
- }()),
1655
-
1656
- DOMException: (function() {
1657
- var namecodes = {
1658
- INDEX_SIZE_ERR: 1,
1659
- DOMSTRING_SIZE_ERR: 2,
1660
- HIERARCHY_REQUEST_ERR: 3,
1661
- WRONG_DOCUMENT_ERR: 4,
1662
- INVALID_CHARACTER_ERR: 5,
1663
- NO_DATA_ALLOWED_ERR: 6,
1664
- NO_MODIFICATION_ALLOWED_ERR: 7,
1665
- NOT_FOUND_ERR: 8,
1666
- NOT_SUPPORTED_ERR: 9,
1667
- INUSE_ATTRIBUTE_ERR: 10,
1668
- INVALID_STATE_ERR: 11,
1669
- SYNTAX_ERR: 12,
1670
- INVALID_MODIFICATION_ERR: 13,
1671
- NAMESPACE_ERR: 14,
1672
- INVALID_ACCESS_ERR: 15,
1673
- VALIDATION_ERR: 16,
1674
- TYPE_MISMATCH_ERR: 17,
1675
- SECURITY_ERR: 18,
1676
- NETWORK_ERR: 19,
1677
- ABORT_ERR: 20,
1678
- URL_MISMATCH_ERR: 21,
1679
- QUOTA_EXCEEDED_ERR: 22,
1680
- TIMEOUT_ERR: 23,
1681
- INVALID_NODE_TYPE_ERR: 24,
1682
- DATA_CLONE_ERR: 25
1683
- };
1684
-
1685
- function DOMException(code) {
1686
- this.code = code;
1687
- this.name = _findKey(namecodes, code);
1688
- this.message = this.name + ": DOMException " + this.code;
1689
- }
1690
-
1691
- Basic.extend(DOMException, namecodes);
1692
- DOMException.prototype = Error.prototype;
1693
- return DOMException;
1694
- }()),
1695
-
1696
- EventException: (function() {
1697
- function EventException(code) {
1698
- this.code = code;
1699
- this.name = 'EventException';
1700
- }
1701
-
1702
- Basic.extend(EventException, {
1703
- UNSPECIFIED_EVENT_TYPE_ERR: 0
1704
- });
1705
-
1706
- EventException.prototype = Error.prototype;
1707
-
1708
- return EventException;
1709
- }())
1710
- };
1711
- });
1712
-
1713
- // Included from: src/javascript/core/EventTarget.js
1714
-
1715
- /**
1716
- * EventTarget.js
1717
- *
1718
- * Copyright 2013, Moxiecode Systems AB
1719
- * Released under GPL License.
1720
- *
1721
- * License: http://www.plupload.com/license
1722
- * Contributing: http://www.plupload.com/contributing
1723
- */
1724
-
1725
- define('moxie/core/EventTarget', [
1726
- 'moxie/core/Exceptions',
1727
- 'moxie/core/utils/Basic'
1728
- ], function(x, Basic) {
1729
- /**
1730
- Parent object for all event dispatching components and objects
1731
-
1732
- @class EventTarget
1733
- @constructor EventTarget
1734
- */
1735
- function EventTarget() {
1736
- // hash of event listeners by object uid
1737
- var eventpool = {};
1738
-
1739
- Basic.extend(this, {
1740
-
1741
- /**
1742
- Unique id of the event dispatcher, usually overriden by children
1743
-
1744
- @property uid
1745
- @type String
1746
- */
1747
- uid: null,
1748
-
1749
- /**
1750
- Can be called from within a child in order to acquire uniqie id in automated manner
1751
-
1752
- @method init
1753
- */
1754
- init: function() {
1755
- if (!this.uid) {
1756
- this.uid = Basic.guid('uid_');
1757
- }
1758
- },
1759
-
1760
- /**
1761
- Register a handler to a specific event dispatched by the object
1762
-
1763
- @method addEventListener
1764
- @param {String} type Type or basically a name of the event to subscribe to
1765
- @param {Function} fn Callback function that will be called when event happens
1766
- @param {Number} [priority=0] Priority of the event handler - handlers with higher priorities will be called first
1767
- @param {Object} [scope=this] A scope to invoke event handler in
1768
- */
1769
- addEventListener: function(type, fn, priority, scope) {
1770
- var self = this, list;
1771
-
1772
- type = Basic.trim(type);
1773
-
1774
- if (/\s/.test(type)) {
1775
- // multiple event types were passed for one handler
1776
- Basic.each(type.split(/\s+/), function(type) {
1777
- self.addEventListener(type, fn, priority, scope);
1778
- });
1779
- return;
1780
- }
1781
-
1782
- type = type.toLowerCase();
1783
- priority = parseInt(priority, 10) || 0;
1784
-
1785
- list = eventpool[this.uid] && eventpool[this.uid][type] || [];
1786
- list.push({fn : fn, priority : priority, scope : scope || this});
1787
-
1788
- if (!eventpool[this.uid]) {
1789
- eventpool[this.uid] = {};
1790
- }
1791
- eventpool[this.uid][type] = list;
1792
- },
1793
-
1794
- /**
1795
- Check if any handlers were registered to the specified event
1796
-
1797
- @method hasEventListener
1798
- @param {String} type Type or basically a name of the event to check
1799
- @return {Mixed} Returns a handler if it was found and false, if - not
1800
- */
1801
- hasEventListener: function(type) {
1802
- return type ? !!(eventpool[this.uid] && eventpool[this.uid][type]) : !!eventpool[this.uid];
1803
- },
1804
-
1805
- /**
1806
- Unregister the handler from the event, or if former was not specified - unregister all handlers
1807
-
1808
- @method removeEventListener
1809
- @param {String} type Type or basically a name of the event
1810
- @param {Function} [fn] Handler to unregister
1811
- */
1812
- removeEventListener: function(type, fn) {
1813
- type = type.toLowerCase();
1814
-
1815
- var list = eventpool[this.uid] && eventpool[this.uid][type], i;
1816
-
1817
- if (list) {
1818
- if (fn) {
1819
- for (i = list.length - 1; i >= 0; i--) {
1820
- if (list[i].fn === fn) {
1821
- list.splice(i, 1);
1822
- break;
1823
- }
1824
- }
1825
- } else {
1826
- list = [];
1827
- }
1828
-
1829
- // delete event list if it has become empty
1830
- if (!list.length) {
1831
- delete eventpool[this.uid][type];
1832
-
1833
- // and object specific entry in a hash if it has no more listeners attached
1834
- if (Basic.isEmptyObj(eventpool[this.uid])) {
1835
- delete eventpool[this.uid];
1836
- }
1837
- }
1838
- }
1839
- },
1840
-
1841
- /**
1842
- Remove all event handlers from the object
1843
-
1844
- @method removeAllEventListeners
1845
- */
1846
- removeAllEventListeners: function() {
1847
- if (eventpool[this.uid]) {
1848
- delete eventpool[this.uid];
1849
- }
1850
- },
1851
-
1852
- /**
1853
- Dispatch the event
1854
-
1855
- @method dispatchEvent
1856
- @param {String/Object} Type of event or event object to dispatch
1857
- @param {Mixed} [...] Variable number of arguments to be passed to a handlers
1858
- @return {Boolean} true by default and false if any handler returned false
1859
- */
1860
- dispatchEvent: function(type) {
1861
- var uid, list, args, tmpEvt, evt = {}, result = true, undef;
1862
-
1863
- if (Basic.typeOf(type) !== 'string') {
1864
- // we can't use original object directly (because of Silverlight)
1865
- tmpEvt = type;
1866
-
1867
- if (Basic.typeOf(tmpEvt.type) === 'string') {
1868
- type = tmpEvt.type;
1869
-
1870
- if (tmpEvt.total !== undef && tmpEvt.loaded !== undef) { // progress event
1871
- evt.total = tmpEvt.total;
1872
- evt.loaded = tmpEvt.loaded;
1873
- }
1874
- evt.async = tmpEvt.async || false;
1875
- } else {
1876
- throw new x.EventException(x.EventException.UNSPECIFIED_EVENT_TYPE_ERR);
1877
- }
1878
- }
1879
-
1880
- // check if event is meant to be dispatched on an object having specific uid
1881
- if (type.indexOf('::') !== -1) {
1882
- (function(arr) {
1883
- uid = arr[0];
1884
- type = arr[1];
1885
- }(type.split('::')));
1886
- } else {
1887
- uid = this.uid;
1888
- }
1889
-
1890
- type = type.toLowerCase();
1891
-
1892
- list = eventpool[uid] && eventpool[uid][type];
1893
-
1894
- if (list) {
1895
- // sort event list by prority
1896
- list.sort(function(a, b) { return b.priority - a.priority; });
1897
-
1898
- args = [].slice.call(arguments);
1899
-
1900
- // first argument will be pseudo-event object
1901
- args.shift();
1902
- evt.type = type;
1903
- args.unshift(evt);
1904
-
1905
- // Dispatch event to all listeners
1906
- var queue = [];
1907
- Basic.each(list, function(handler) {
1908
- // explicitly set the target, otherwise events fired from shims do not get it
1909
- args[0].target = handler.scope;
1910
- // if event is marked as async, detach the handler
1911
- if (evt.async) {
1912
- queue.push(function(cb) {
1913
- setTimeout(function() {
1914
- cb(handler.fn.apply(handler.scope, args) === false);
1915
- }, 1);
1916
- });
1917
- } else {
1918
- queue.push(function(cb) {
1919
- cb(handler.fn.apply(handler.scope, args) === false); // if handler returns false stop propagation
1920
- });
1921
- }
1922
- });
1923
- if (queue.length) {
1924
- Basic.inSeries(queue, function(err) {
1925
- result = !err;
1926
- });
1927
- }
1928
- }
1929
- return result;
1930
- },
1931
-
1932
- /**
1933
- Alias for addEventListener
1934
-
1935
- @method bind
1936
- @protected
1937
- */
1938
- bind: function() {
1939
- this.addEventListener.apply(this, arguments);
1940
- },
1941
-
1942
- /**
1943
- Alias for removeEventListener
1944
-
1945
- @method unbind
1946
- @protected
1947
- */
1948
- unbind: function() {
1949
- this.removeEventListener.apply(this, arguments);
1950
- },
1951
-
1952
- /**
1953
- Alias for removeAllEventListeners
1954
-
1955
- @method unbindAll
1956
- @protected
1957
- */
1958
- unbindAll: function() {
1959
- this.removeAllEventListeners.apply(this, arguments);
1960
- },
1961
-
1962
- /**
1963
- Alias for dispatchEvent
1964
-
1965
- @method trigger
1966
- @protected
1967
- */
1968
- trigger: function() {
1969
- return this.dispatchEvent.apply(this, arguments);
1970
- },
1971
-
1972
-
1973
- /**
1974
- Converts properties of on[event] type to corresponding event handlers,
1975
- is used to avoid extra hassle around the process of calling them back
1976
-
1977
- @method convertEventPropsToHandlers
1978
- @private
1979
- */
1980
- convertEventPropsToHandlers: function(handlers) {
1981
- var h;
1982
-
1983
- if (Basic.typeOf(handlers) !== 'array') {
1984
- handlers = [handlers];
1985
- }
1986
-
1987
- for (var i = 0; i < handlers.length; i++) {
1988
- h = 'on' + handlers[i];
1989
-
1990
- if (Basic.typeOf(this[h]) === 'function') {
1991
- this.addEventListener(handlers[i], this[h]);
1992
- } else if (Basic.typeOf(this[h]) === 'undefined') {
1993
- this[h] = null; // object must have defined event properties, even if it doesn't make use of them
1994
- }
1995
- }
1996
- }
1997
-
1998
- });
1999
- }
2000
-
2001
- EventTarget.instance = new EventTarget();
2002
-
2003
- return EventTarget;
2004
- });
2005
-
2006
- // Included from: src/javascript/core/utils/Encode.js
2007
-
2008
- /**
2009
- * Encode.js
2010
- *
2011
- * Copyright 2013, Moxiecode Systems AB
2012
- * Released under GPL License.
2013
- *
2014
- * License: http://www.plupload.com/license
2015
- * Contributing: http://www.plupload.com/contributing
2016
- */
2017
-
2018
- define('moxie/core/utils/Encode', [], function() {
2019
-
2020
- /**
2021
- Encode string with UTF-8
2022
-
2023
- @method utf8_encode
2024
- @for Utils
2025
- @static
2026
- @param {String} str String to encode
2027
- @return {String} UTF-8 encoded string
2028
- */
2029
- var utf8_encode = function(str) {
2030
- return unescape(encodeURIComponent(str));
2031
- };
2032
-
2033
- /**
2034
- Decode UTF-8 encoded string
2035
-
2036
- @method utf8_decode
2037
- @static
2038
- @param {String} str String to decode
2039
- @return {String} Decoded string
2040
- */
2041
- var utf8_decode = function(str_data) {
2042
- return decodeURIComponent(escape(str_data));
2043
- };
2044
-
2045
- /**
2046
- Decode Base64 encoded string (uses browser's default method if available),
2047
- from: https://raw.github.com/kvz/phpjs/master/functions/url/base64_decode.js
2048
-
2049
- @method atob
2050
- @static
2051
- @param {String} data String to decode
2052
- @return {String} Decoded string
2053
- */
2054
- var atob = function(data, utf8) {
2055
- if (typeof(window.atob) === 'function') {
2056
- return utf8 ? utf8_decode(window.atob(data)) : window.atob(data);
2057
- }
2058
-
2059
- // http://kevin.vanzonneveld.net
2060
- // + original by: Tyler Akins (http://rumkin.com)
2061
- // + improved by: Thunder.m
2062
- // + input by: Aman Gupta
2063
- // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
2064
- // + bugfixed by: Onno Marsman
2065
- // + bugfixed by: Pellentesque Malesuada
2066
- // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
2067
- // + input by: Brett Zamir (http://brett-zamir.me)
2068
- // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
2069
- // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');
2070
- // * returns 1: 'Kevin van Zonneveld'
2071
- // mozilla has this native
2072
- // - but breaks in 2.0.0.12!
2073
- //if (typeof this.window.atob == 'function') {
2074
- // return atob(data);
2075
- //}
2076
- var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
2077
- var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
2078
- ac = 0,
2079
- dec = "",
2080
- tmp_arr = [];
2081
-
2082
- if (!data) {
2083
- return data;
2084
- }
2085
-
2086
- data += '';
2087
-
2088
- do { // unpack four hexets into three octets using index points in b64
2089
- h1 = b64.indexOf(data.charAt(i++));
2090
- h2 = b64.indexOf(data.charAt(i++));
2091
- h3 = b64.indexOf(data.charAt(i++));
2092
- h4 = b64.indexOf(data.charAt(i++));
2093
-
2094
- bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
2095
-
2096
- o1 = bits >> 16 & 0xff;
2097
- o2 = bits >> 8 & 0xff;
2098
- o3 = bits & 0xff;
2099
-
2100
- if (h3 == 64) {
2101
- tmp_arr[ac++] = String.fromCharCode(o1);
2102
- } else if (h4 == 64) {
2103
- tmp_arr[ac++] = String.fromCharCode(o1, o2);
2104
- } else {
2105
- tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
2106
- }
2107
- } while (i < data.length);
2108
-
2109
- dec = tmp_arr.join('');
2110
-
2111
- return utf8 ? utf8_decode(dec) : dec;
2112
- };
2113
-
2114
- /**
2115
- Base64 encode string (uses browser's default method if available),
2116
- from: https://raw.github.com/kvz/phpjs/master/functions/url/base64_encode.js
2117
-
2118
- @method btoa
2119
- @static
2120
- @param {String} data String to encode
2121
- @return {String} Base64 encoded string
2122
- */
2123
- var btoa = function(data, utf8) {
2124
- if (utf8) {
2125
- utf8_encode(data);
2126
- }
2127
-
2128
- if (typeof(window.btoa) === 'function') {
2129
- return window.btoa(data);
2130
- }
2131
-
2132
- // http://kevin.vanzonneveld.net
2133
- // + original by: Tyler Akins (http://rumkin.com)
2134
- // + improved by: Bayron Guevara
2135
- // + improved by: Thunder.m
2136
- // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
2137
- // + bugfixed by: Pellentesque Malesuada
2138
- // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
2139
- // + improved by: Rafał Kukawski (http://kukawski.pl)
2140
- // * example 1: base64_encode('Kevin van Zonneveld');
2141
- // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='
2142
- // mozilla has this native
2143
- // - but breaks in 2.0.0.12!
2144
- var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
2145
- var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
2146
- ac = 0,
2147
- enc = "",
2148
- tmp_arr = [];
2149
-
2150
- if (!data) {
2151
- return data;
2152
- }
2153
-
2154
- do { // pack three octets into four hexets
2155
- o1 = data.charCodeAt(i++);
2156
- o2 = data.charCodeAt(i++);
2157
- o3 = data.charCodeAt(i++);
2158
-
2159
- bits = o1 << 16 | o2 << 8 | o3;
2160
-
2161
- h1 = bits >> 18 & 0x3f;
2162
- h2 = bits >> 12 & 0x3f;
2163
- h3 = bits >> 6 & 0x3f;
2164
- h4 = bits & 0x3f;
2165
-
2166
- // use hexets to index into b64, and append result to encoded string
2167
- tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
2168
- } while (i < data.length);
2169
-
2170
- enc = tmp_arr.join('');
2171
-
2172
- var r = data.length % 3;
2173
-
2174
- return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);
2175
- };
2176
-
2177
-
2178
- return {
2179
- utf8_encode: utf8_encode,
2180
- utf8_decode: utf8_decode,
2181
- atob: atob,
2182
- btoa: btoa
2183
- };
2184
- });
2185
-
2186
- // Included from: src/javascript/runtime/Runtime.js
2187
-
2188
- /**
2189
- * Runtime.js
2190
- *
2191
- * Copyright 2013, Moxiecode Systems AB
2192
- * Released under GPL License.
2193
- *
2194
- * License: http://www.plupload.com/license
2195
- * Contributing: http://www.plupload.com/contributing
2196
- */
2197
-
2198
- define('moxie/runtime/Runtime', [
2199
- "moxie/core/utils/Basic",
2200
- "moxie/core/utils/Dom",
2201
- "moxie/core/EventTarget"
2202
- ], function(Basic, Dom, EventTarget) {
2203
- var runtimeConstructors = {}, runtimes = {};
2204
-
2205
- /**
2206
- Common set of methods and properties for every runtime instance
2207
-
2208
- @class Runtime
2209
-
2210
- @param {Object} options
2211
- @param {String} type Sanitized name of the runtime
2212
- @param {Object} [caps] Set of capabilities that differentiate specified runtime
2213
- @param {Object} [modeCaps] Set of capabilities that do require specific operational mode
2214
- @param {String} [preferredMode='browser'] Preferred operational mode to choose if no required capabilities were requested
2215
- */
2216
- function Runtime(options, type, caps, modeCaps, preferredMode) {
2217
- /**
2218
- Dispatched when runtime is initialized and ready.
2219
- Results in RuntimeInit on a connected component.
2220
-
2221
- @event Init
2222
- */
2223
-
2224
- /**
2225
- Dispatched when runtime fails to initialize.
2226
- Results in RuntimeError on a connected component.
2227
-
2228
- @event Error
2229
- */
2230
-
2231
- var self = this
2232
- , _shim
2233
- , _uid = Basic.guid(type + '_')
2234
- , defaultMode = preferredMode || 'browser'
2235
- ;
2236
-
2237
- options = options || {};
2238
-
2239
- // register runtime in private hash
2240
- runtimes[_uid] = this;
2241
-
2242
- /**
2243
- Default set of capabilities, which can be redifined later by specific runtime
2244
-
2245
- @private
2246
- @property caps
2247
- @type Object
2248
- */
2249
- caps = Basic.extend({
2250
- // Runtime can:
2251
- // provide access to raw binary data of the file
2252
- access_binary: false,
2253
- // provide access to raw binary data of the image (image extension is optional)
2254
- access_image_binary: false,
2255
- // display binary data as thumbs for example
2256
- display_media: false,
2257
- // make cross-domain requests
2258
- do_cors: false,
2259
- // accept files dragged and dropped from the desktop
2260
- drag_and_drop: false,
2261
- // filter files in selection dialog by their extensions
2262
- filter_by_extension: true,
2263
- // resize image (and manipulate it raw data of any file in general)
2264
- resize_image: false,
2265
- // periodically report how many bytes of total in the file were uploaded (loaded)
2266
- report_upload_progress: false,
2267
- // provide access to the headers of http response
2268
- return_response_headers: false,
2269
- // support response of specific type, which should be passed as an argument
2270
- // e.g. runtime.can('return_response_type', 'blob')
2271
- return_response_type: false,
2272
- // return http status code of the response
2273
- return_status_code: true,
2274
- // send custom http header with the request
2275
- send_custom_headers: false,
2276
- // pick up the files from a dialog
2277
- select_file: false,
2278
- // select whole folder in file browse dialog
2279
- select_folder: false,
2280
- // select multiple files at once in file browse dialog
2281
- select_multiple: true,
2282
- // send raw binary data, that is generated after image resizing or manipulation of other kind
2283
- send_binary_string: false,
2284
- // send cookies with http request and therefore retain session
2285
- send_browser_cookies: true,
2286
- // send data formatted as multipart/form-data
2287
- send_multipart: true,
2288
- // slice the file or blob to smaller parts
2289
- slice_blob: false,
2290
- // upload file without preloading it to memory, stream it out directly from disk
2291
- stream_upload: false,
2292
- // programmatically trigger file browse dialog
2293
- summon_file_dialog: false,
2294
- // upload file of specific size, size should be passed as argument
2295
- // e.g. runtime.can('upload_filesize', '500mb')
2296
- upload_filesize: true,
2297
- // initiate http request with specific http method, method should be passed as argument
2298
- // e.g. runtime.can('use_http_method', 'put')
2299
- use_http_method: true
2300
- }, caps);
2301
-
2302
-
2303
- // default to the mode that is compatible with preferred caps
2304
- if (options.preferred_caps) {
2305
- defaultMode = Runtime.getMode(modeCaps, options.preferred_caps, defaultMode);
2306
- }
2307
-
2308
- // small extension factory here (is meant to be extended with actual extensions constructors)
2309
- _shim = (function() {
2310
- var objpool = {};
2311
- return {
2312
- exec: function(uid, comp, fn, args) {
2313
- if (_shim[comp]) {
2314
- if (!objpool[uid]) {
2315
- objpool[uid] = {
2316
- context: this,
2317
- instance: new _shim[comp]()
2318
- };
2319
- }
2320
- if (objpool[uid].instance[fn]) {
2321
- return objpool[uid].instance[fn].apply(this, args);
2322
- }
2323
- }
2324
- },
2325
-
2326
- removeInstance: function(uid) {
2327
- delete objpool[uid];
2328
- },
2329
-
2330
- removeAllInstances: function() {
2331
- var self = this;
2332
- Basic.each(objpool, function(obj, uid) {
2333
- if (Basic.typeOf(obj.instance.destroy) === 'function') {
2334
- obj.instance.destroy.call(obj.context);
2335
- }
2336
- self.removeInstance(uid);
2337
- });
2338
- }
2339
- };
2340
- }());
2341
-
2342
-
2343
- // public methods
2344
- Basic.extend(this, {
2345
- /**
2346
- Specifies whether runtime instance was initialized or not
2347
-
2348
- @property initialized
2349
- @type {Boolean}
2350
- @default false
2351
- */
2352
- initialized: false, // shims require this flag to stop initialization retries
2353
-
2354
- /**
2355
- Unique ID of the runtime
2356
-
2357
- @property uid
2358
- @type {String}
2359
- */
2360
- uid: _uid,
2361
-
2362
- /**
2363
- Runtime type (e.g. flash, html5, etc)
2364
-
2365
- @property type
2366
- @type {String}
2367
- */
2368
- type: type,
2369
-
2370
- /**
2371
- Runtime (not native one) may operate in browser or client mode.
2372
-
2373
- @property mode
2374
- @private
2375
- @type {String|Boolean} current mode or false, if none possible
2376
- */
2377
- mode: Runtime.getMode(modeCaps, (options.required_caps), defaultMode),
2378
-
2379
- /**
2380
- id of the DOM container for the runtime (if available)
2381
-
2382
- @property shimid
2383
- @type {String}
2384
- */
2385
- shimid: _uid + '_container',
2386
-
2387
- /**
2388
- Number of connected clients. If equal to zero, runtime can be destroyed
2389
-
2390
- @property clients
2391
- @type {Number}
2392
- */
2393
- clients: 0,
2394
-
2395
- /**
2396
- Runtime initialization options
2397
-
2398
- @property options
2399
- @type {Object}
2400
- */
2401
- options: options,
2402
-
2403
- /**
2404
- Checks if the runtime has specific capability
2405
-
2406
- @method can
2407
- @param {String} cap Name of capability to check
2408
- @param {Mixed} [value] If passed, capability should somehow correlate to the value
2409
- @param {Object} [refCaps] Set of capabilities to check the specified cap against (defaults to internal set)
2410
- @return {Boolean} true if runtime has such capability and false, if - not
2411
- */
2412
- can: function(cap, value) {
2413
- var refCaps = arguments[2] || caps;
2414
-
2415
- // if cap var is a comma-separated list of caps, convert it to object (key/value)
2416
- if (Basic.typeOf(cap) === 'string' && Basic.typeOf(value) === 'undefined') {
2417
- cap = Runtime.parseCaps(cap);
2418
- }
2419
-
2420
- if (Basic.typeOf(cap) === 'object') {
2421
- for (var key in cap) {
2422
- if (!this.can(key, cap[key], refCaps)) {
2423
- return false;
2424
- }
2425
- }
2426
- return true;
2427
- }
2428
-
2429
- // check the individual cap
2430
- if (Basic.typeOf(refCaps[cap]) === 'function') {
2431
- return refCaps[cap].call(this, value);
2432
- } else {
2433
- return (value === refCaps[cap]);
2434
- }
2435
- },
2436
-
2437
- /**
2438
- Returns container for the runtime as DOM element
2439
-
2440
- @method getShimContainer
2441
- @return {DOMElement}
2442
- */
2443
- getShimContainer: function() {
2444
- var container, shimContainer = Dom.get(this.shimid);
2445
-
2446
- // if no container for shim, create one
2447
- if (!shimContainer) {
2448
- container = this.options.container ? Dom.get(this.options.container) : document.body;
2449
-
2450
- // create shim container and insert it at an absolute position into the outer container
2451
- shimContainer = document.createElement('div');
2452
- shimContainer.id = this.shimid;
2453
- shimContainer.className = 'moxie-shim moxie-shim-' + this.type;
2454
-
2455
- Basic.extend(shimContainer.style, {
2456
- position: 'absolute',
2457
- top: '0px',
2458
- left: '0px',
2459
- width: '1px',
2460
- height: '1px',
2461
- overflow: 'hidden'
2462
- });
2463
-
2464
- container.appendChild(shimContainer);
2465
- container = null;
2466
- }
2467
-
2468
- return shimContainer;
2469
- },
2470
-
2471
- /**
2472
- Returns runtime as DOM element (if appropriate)
2473
-
2474
- @method getShim
2475
- @return {DOMElement}
2476
- */
2477
- getShim: function() {
2478
- return _shim;
2479
- },
2480
-
2481
- /**
2482
- Invokes a method within the runtime itself (might differ across the runtimes)
2483
-
2484
- @method shimExec
2485
- @param {Mixed} []
2486
- @protected
2487
- @return {Mixed} Depends on the action and component
2488
- */
2489
- shimExec: function(component, action) {
2490
- var args = [].slice.call(arguments, 2);
2491
- return self.getShim().exec.call(this, this.uid, component, action, args);
2492
- },
2493
-
2494
- /**
2495
- Operaional interface that is used by components to invoke specific actions on the runtime
2496
- (is invoked in the scope of component)
2497
-
2498
- @method exec
2499
- @param {Mixed} []*
2500
- @protected
2501
- @return {Mixed} Depends on the action and component
2502
- */
2503
- exec: function(component, action) { // this is called in the context of component, not runtime
2504
- var args = [].slice.call(arguments, 2);
2505
-
2506
- if (self[component] && self[component][action]) {
2507
- return self[component][action].apply(this, args);
2508
- }
2509
- return self.shimExec.apply(this, arguments);
2510
- },
2511
-
2512
- /**
2513
- Destroys the runtime (removes all events and deletes DOM structures)
2514
-
2515
- @method destroy
2516
- */
2517
- destroy: function() {
2518
- if (!self) {
2519
- return; // obviously already destroyed
2520
- }
2521
-
2522
- var shimContainer = Dom.get(this.shimid);
2523
- if (shimContainer) {
2524
- shimContainer.parentNode.removeChild(shimContainer);
2525
- }
2526
-
2527
- if (_shim) {
2528
- _shim.removeAllInstances();
2529
- }
2530
-
2531
- this.unbindAll();
2532
- delete runtimes[this.uid];
2533
- this.uid = null; // mark this runtime as destroyed
2534
- _uid = self = _shim = shimContainer = null;
2535
- }
2536
- });
2537
-
2538
- // once we got the mode, test against all caps
2539
- if (this.mode && options.required_caps && !this.can(options.required_caps)) {
2540
- this.mode = false;
2541
- }
2542
- }
2543
-
2544
-
2545
- /**
2546
- Default order to try different runtime types
2547
-
2548
- @property order
2549
- @type String
2550
- @static
2551
- */
2552
- Runtime.order = 'html5,flash,silverlight,html4';
2553
-
2554
-
2555
- /**
2556
- Retrieves runtime from private hash by it's uid
2557
-
2558
- @method getRuntime
2559
- @private
2560
- @static
2561
- @param {String} uid Unique identifier of the runtime
2562
- @return {Runtime|Boolean} Returns runtime, if it exists and false, if - not
2563
- */
2564
- Runtime.getRuntime = function(uid) {
2565
- return runtimes[uid] ? runtimes[uid] : false;
2566
- };
2567
-
2568
-
2569
- /**
2570
- Register constructor for the Runtime of new (or perhaps modified) type
2571
-
2572
- @method addConstructor
2573
- @static
2574
- @param {String} type Runtime type (e.g. flash, html5, etc)
2575
- @param {Function} construct Constructor for the Runtime type
2576
- */
2577
- Runtime.addConstructor = function(type, constructor) {
2578
- constructor.prototype = EventTarget.instance;
2579
- runtimeConstructors[type] = constructor;
2580
- };
2581
-
2582
-
2583
- /**
2584
- Get the constructor for the specified type.
2585
-
2586
- method getConstructor
2587
- @static
2588
- @param {String} type Runtime type (e.g. flash, html5, etc)
2589
- @return {Function} Constructor for the Runtime type
2590
- */
2591
- Runtime.getConstructor = function(type) {
2592
- return runtimeConstructors[type] || null;
2593
- };
2594
-
2595
-
2596
- /**
2597
- Get info about the runtime (uid, type, capabilities)
2598
-
2599
- @method getInfo
2600
- @static
2601
- @param {String} uid Unique identifier of the runtime
2602
- @return {Mixed} Info object or null if runtime doesn't exist
2603
- */
2604
- Runtime.getInfo = function(uid) {
2605
- var runtime = Runtime.getRuntime(uid);
2606
-
2607
- if (runtime) {
2608
- return {
2609
- uid: runtime.uid,
2610
- type: runtime.type,
2611
- mode: runtime.mode,
2612
- can: function() {
2613
- return runtime.can.apply(runtime, arguments);
2614
- }
2615
- };
2616
- }
2617
- return null;
2618
- };
2619
-
2620
-
2621
- /**
2622
- Convert caps represented by a comma-separated string to the object representation.
2623
-
2624
- @method parseCaps
2625
- @static
2626
- @param {String} capStr Comma-separated list of capabilities
2627
- @return {Object}
2628
- */
2629
- Runtime.parseCaps = function(capStr) {
2630
- var capObj = {};
2631
-
2632
- if (Basic.typeOf(capStr) !== 'string') {
2633
- return capStr || {};
2634
- }
2635
-
2636
- Basic.each(capStr.split(','), function(key) {
2637
- capObj[key] = true; // we assume it to be - true
2638
- });
2639
-
2640
- return capObj;
2641
- };
2642
-
2643
- /**
2644
- Test the specified runtime for specific capabilities.
2645
-
2646
- @method can
2647
- @static
2648
- @param {String} type Runtime type (e.g. flash, html5, etc)
2649
- @param {String|Object} caps Set of capabilities to check
2650
- @return {Boolean} Result of the test
2651
- */
2652
- Runtime.can = function(type, caps) {
2653
- var runtime
2654
- , constructor = Runtime.getConstructor(type)
2655
- , mode
2656
- ;
2657
- if (constructor) {
2658
- runtime = new constructor({
2659
- required_caps: caps
2660
- });
2661
- mode = runtime.mode;
2662
- runtime.destroy();
2663
- return !!mode;
2664
- }
2665
- return false;
2666
- };
2667
-
2668
-
2669
- /**
2670
- Figure out a runtime that supports specified capabilities.
2671
-
2672
- @method thatCan
2673
- @static
2674
- @param {String|Object} caps Set of capabilities to check
2675
- @param {String} [runtimeOrder] Comma-separated list of runtimes to check against
2676
- @return {String} Usable runtime identifier or null
2677
- */
2678
- Runtime.thatCan = function(caps, runtimeOrder) {
2679
- var types = (runtimeOrder || Runtime.order).split(/\s*,\s*/);
2680
- for (var i in types) {
2681
- if (Runtime.can(types[i], caps)) {
2682
- return types[i];
2683
- }
2684
- }
2685
- return null;
2686
- };
2687
-
2688
-
2689
- /**
2690
- Figure out an operational mode for the specified set of capabilities.
2691
-
2692
- @method getMode
2693
- @static
2694
- @param {Object} modeCaps Set of capabilities that depend on particular runtime mode
2695
- @param {Object} [requiredCaps] Supplied set of capabilities to find operational mode for
2696
- @param {String|Boolean} [defaultMode='browser'] Default mode to use
2697
- @return {String|Boolean} Compatible operational mode
2698
- */
2699
- Runtime.getMode = function(modeCaps, requiredCaps, defaultMode) {
2700
- var mode = null;
2701
-
2702
- if (Basic.typeOf(defaultMode) === 'undefined') { // only if not specified
2703
- defaultMode = 'browser';
2704
- }
2705
-
2706
- if (requiredCaps && !Basic.isEmptyObj(modeCaps)) {
2707
- // loop over required caps and check if they do require the same mode
2708
- Basic.each(requiredCaps, function(value, cap) {
2709
- if (modeCaps.hasOwnProperty(cap)) {
2710
- var capMode = modeCaps[cap](value);
2711
-
2712
- // make sure we always have an array
2713
- if (typeof(capMode) === 'string') {
2714
- capMode = [capMode];
2715
- }
2716
-
2717
- if (!mode) {
2718
- mode = capMode;
2719
- } else if (!(mode = Basic.arrayIntersect(mode, capMode))) {
2720
- // if cap requires conflicting mode - runtime cannot fulfill required caps
2721
- return (mode = false);
2722
- }
2723
- }
2724
- });
2725
-
2726
- if (mode) {
2727
- return Basic.inArray(defaultMode, mode) !== -1 ? defaultMode : mode[0];
2728
- } else if (mode === false) {
2729
- return false;
2730
- }
2731
- }
2732
- return defaultMode;
2733
- };
2734
-
2735
-
2736
- /**
2737
- Capability check that always returns true
2738
-
2739
- @private
2740
- @static
2741
- @return {True}
2742
- */
2743
- Runtime.capTrue = function() {
2744
- return true;
2745
- };
2746
-
2747
- /**
2748
- Capability check that always returns false
2749
-
2750
- @private
2751
- @static
2752
- @return {False}
2753
- */
2754
- Runtime.capFalse = function() {
2755
- return false;
2756
- };
2757
-
2758
- /**
2759
- Evaluate the expression to boolean value and create a function that always returns it.
2760
-
2761
- @private
2762
- @static
2763
- @param {Mixed} expr Expression to evaluate
2764
- @return {Function} Function returning the result of evaluation
2765
- */
2766
- Runtime.capTest = function(expr) {
2767
- return function() {
2768
- return !!expr;
2769
- };
2770
- };
2771
-
2772
- return Runtime;
2773
- });
2774
-
2775
- // Included from: src/javascript/runtime/RuntimeClient.js
2776
-
2777
- /**
2778
- * RuntimeClient.js
2779
- *
2780
- * Copyright 2013, Moxiecode Systems AB
2781
- * Released under GPL License.
2782
- *
2783
- * License: http://www.plupload.com/license
2784
- * Contributing: http://www.plupload.com/contributing
2785
- */
2786
-
2787
- define('moxie/runtime/RuntimeClient', [
2788
- 'moxie/core/Exceptions',
2789
- 'moxie/core/utils/Basic',
2790
- 'moxie/runtime/Runtime'
2791
- ], function(x, Basic, Runtime) {
2792
- /**
2793
- Set of methods and properties, required by a component to acquire ability to connect to a runtime
2794
-
2795
- @class RuntimeClient
2796
- */
2797
- return function RuntimeClient() {
2798
- var runtime;
2799
-
2800
- Basic.extend(this, {
2801
- /**
2802
- Connects to the runtime specified by the options. Will either connect to existing runtime or create a new one.
2803
- Increments number of clients connected to the specified runtime.
2804
-
2805
- @method connectRuntime
2806
- @param {Mixed} options Can be a runtme uid or a set of key-value pairs defining requirements and pre-requisites
2807
- */
2808
- connectRuntime: function(options) {
2809
- var comp = this, ruid;
2810
-
2811
- function initialize(items) {
2812
- var type, constructor;
2813
-
2814
- // if we ran out of runtimes
2815
- if (!items.length) {
2816
- comp.trigger('RuntimeError', new x.RuntimeError(x.RuntimeError.NOT_INIT_ERR));
2817
- runtime = null;
2818
- return;
2819
- }
2820
-
2821
- type = items.shift();
2822
- constructor = Runtime.getConstructor(type);
2823
- if (!constructor) {
2824
- initialize(items);
2825
- return;
2826
- }
2827
-
2828
- // try initializing the runtime
2829
- runtime = new constructor(options);
2830
-
2831
- runtime.bind('Init', function() {
2832
- // mark runtime as initialized
2833
- runtime.initialized = true;
2834
-
2835
- // jailbreak ...
2836
- setTimeout(function() {
2837
- runtime.clients++;
2838
- // this will be triggered on component
2839
- comp.trigger('RuntimeInit', runtime);
2840
- }, 1);
2841
- });
2842
-
2843
- runtime.bind('Error', function() {
2844
- runtime.destroy(); // runtime cannot destroy itself from inside at a right moment, thus we do it here
2845
- initialize(items);
2846
- });
2847
-
2848
- /*runtime.bind('Exception', function() { });*/
2849
-
2850
- // check if runtime managed to pick-up operational mode
2851
- if (!runtime.mode) {
2852
- runtime.trigger('Error');
2853
- return;
2854
- }
2855
-
2856
- runtime.init();
2857
- }
2858
-
2859
- // check if a particular runtime was requested
2860
- if (Basic.typeOf(options) === 'string') {
2861
- ruid = options;
2862
- } else if (Basic.typeOf(options.ruid) === 'string') {
2863
- ruid = options.ruid;
2864
- }
2865
-
2866
- if (ruid) {
2867
- runtime = Runtime.getRuntime(ruid);
2868
- if (runtime) {
2869
- runtime.clients++;
2870
- return runtime;
2871
- } else {
2872
- // there should be a runtime and there's none - weird case
2873
- throw new x.RuntimeError(x.RuntimeError.NOT_INIT_ERR);
2874
- }
2875
- }
2876
-
2877
- // initialize a fresh one, that fits runtime list and required features best
2878
- initialize((options.runtime_order || Runtime.order).split(/\s*,\s*/));
2879
- },
2880
-
2881
- /**
2882
- Returns the runtime to which the client is currently connected.
2883
-
2884
- @method getRuntime
2885
- @return {Runtime} Runtime or null if client is not connected
2886
- */
2887
- getRuntime: function() {
2888
- if (runtime && runtime.uid) {
2889
- return runtime;
2890
- }
2891
- runtime = null; // make sure we do not leave zombies rambling around
2892
- return null;
2893
- },
2894
-
2895
- /**
2896
- Disconnects from the runtime. Decrements number of clients connected to the specified runtime.
2897
-
2898
- @method disconnectRuntime
2899
- */
2900
- disconnectRuntime: function() {
2901
- if (runtime && --runtime.clients <= 0) {
2902
- runtime.destroy();
2903
- runtime = null;
2904
- }
2905
- }
2906
-
2907
- });
2908
- };
2909
-
2910
-
2911
- });
2912
-
2913
- // Included from: src/javascript/file/Blob.js
2914
-
2915
- /**
2916
- * Blob.js
2917
- *
2918
- * Copyright 2013, Moxiecode Systems AB
2919
- * Released under GPL License.
2920
- *
2921
- * License: http://www.plupload.com/license
2922
- * Contributing: http://www.plupload.com/contributing
2923
- */
2924
-
2925
- define('moxie/file/Blob', [
2926
- 'moxie/core/utils/Basic',
2927
- 'moxie/core/utils/Encode',
2928
- 'moxie/runtime/RuntimeClient'
2929
- ], function(Basic, Encode, RuntimeClient) {
2930
-
2931
- var blobpool = {};
2932
-
2933
- /**
2934
- @class Blob
2935
- @constructor
2936
- @param {String} ruid Unique id of the runtime, to which this blob belongs to
2937
- @param {Object} blob Object "Native" blob object, as it is represented in the runtime
2938
- */
2939
- function Blob(ruid, blob) {
2940
-
2941
- function _sliceDetached(start, end, type) {
2942
- var blob, data = blobpool[this.uid];
2943
-
2944
- if (Basic.typeOf(data) !== 'string' || !data.length) {
2945
- return null; // or throw exception
2946
- }
2947
-
2948
- blob = new Blob(null, {
2949
- type: type,
2950
- size: end - start
2951
- });
2952
- blob.detach(data.substr(start, blob.size));
2953
-
2954
- return blob;
2955
- }
2956
-
2957
- RuntimeClient.call(this);
2958
-
2959
- if (ruid) {
2960
- this.connectRuntime(ruid);
2961
- }
2962
-
2963
- if (!blob) {
2964
- blob = {};
2965
- } else if (Basic.typeOf(blob) === 'string') { // dataUrl or binary string
2966
- blob = { data: blob };
2967
- }
2968
-
2969
- Basic.extend(this, {
2970
-
2971
- /**
2972
- Unique id of the component
2973
-
2974
- @property uid
2975
- @type {String}
2976
- */
2977
- uid: blob.uid || Basic.guid('uid_'),
2978
-
2979
- /**
2980
- Unique id of the connected runtime, if falsy, then runtime will have to be initialized
2981
- before this Blob can be used, modified or sent
2982
-
2983
- @property ruid
2984
- @type {String}
2985
- */
2986
- ruid: ruid,
2987
-
2988
- /**
2989
- Size of blob
2990
-
2991
- @property size
2992
- @type {Number}
2993
- @default 0
2994
- */
2995
- size: blob.size || 0,
2996
-
2997
- /**
2998
- Mime type of blob
2999
-
3000
- @property type
3001
- @type {String}
3002
- @default ''
3003
- */
3004
- type: blob.type || '',
3005
-
3006
- /**
3007
- @method slice
3008
- @param {Number} [start=0]
3009
- */
3010
- slice: function(start, end, type) {
3011
- if (this.isDetached()) {
3012
- return _sliceDetached.apply(this, arguments);
3013
- }
3014
- return this.getRuntime().exec.call(this, 'Blob', 'slice', this.getSource(), start, end, type);
3015
- },
3016
-
3017
- /**
3018
- Returns "native" blob object (as it is represented in connected runtime) or null if not found
3019
-
3020
- @method getSource
3021
- @return {Blob} Returns "native" blob object or null if not found
3022
- */
3023
- getSource: function() {
3024
- if (!blobpool[this.uid]) {
3025
- return null;
3026
- }
3027
- return blobpool[this.uid];
3028
- },
3029
-
3030
- /**
3031
- Detaches blob from any runtime that it depends on and initialize with standalone value
3032
-
3033
- @method detach
3034
- @protected
3035
- @param {DOMString} [data=''] Standalone value
3036
- */
3037
- detach: function(data) {
3038
- if (this.ruid) {
3039
- this.getRuntime().exec.call(this, 'Blob', 'destroy', blobpool[this.uid]);
3040
- this.disconnectRuntime();
3041
- this.ruid = null;
3042
- }
3043
-
3044
- data = data || '';
3045
-
3046
- // if dataUrl, convert to binary string
3047
- var matches = data.match(/^data:([^;]*);base64,/);
3048
- if (matches) {
3049
- this.type = matches[1];
3050
- data = Encode.atob(data.substring(data.indexOf('base64,') + 7));
3051
- }
3052
-
3053
- this.size = data.length;
3054
-
3055
- blobpool[this.uid] = data;
3056
- },
3057
-
3058
- /**
3059
- Checks if blob is standalone (detached of any runtime)
3060
-
3061
- @method isDetached
3062
- @protected
3063
- @return {Boolean}
3064
- */
3065
- isDetached: function() {
3066
- return !this.ruid && Basic.typeOf(blobpool[this.uid]) === 'string';
3067
- },
3068
-
3069
- /**
3070
- Destroy Blob and free any resources it was using
3071
-
3072
- @method destroy
3073
- */
3074
- destroy: function() {
3075
- this.detach();
3076
- delete blobpool[this.uid];
3077
- }
3078
- });
3079
-
3080
-
3081
- if (blob.data) {
3082
- this.detach(blob.data); // auto-detach if payload has been passed
3083
- } else {
3084
- blobpool[this.uid] = blob;
3085
- }
3086
- }
3087
-
3088
- return Blob;
3089
- });
3090
-
3091
- // Included from: src/javascript/file/File.js
3092
-
3093
- /**
3094
- * File.js
3095
- *
3096
- * Copyright 2013, Moxiecode Systems AB
3097
- * Released under GPL License.
3098
- *
3099
- * License: http://www.plupload.com/license
3100
- * Contributing: http://www.plupload.com/contributing
3101
- */
3102
-
3103
- define('moxie/file/File', [
3104
- 'moxie/core/utils/Basic',
3105
- 'moxie/core/utils/Mime',
3106
- 'moxie/file/Blob'
3107
- ], function(Basic, Mime, Blob) {
3108
- /**
3109
- @class File
3110
- @extends Blob
3111
- @constructor
3112
- @param {String} ruid Unique id of the runtime, to which this blob belongs to
3113
- @param {Object} file Object "Native" file object, as it is represented in the runtime
3114
- */
3115
- function File(ruid, file) {
3116
- var name, type;
3117
-
3118
- if (!file) { // avoid extra errors in case we overlooked something
3119
- file = {};
3120
- }
3121
-
3122
- // figure out the type
3123
- if (file.type && file.type !== '') {
3124
- type = file.type;
3125
- } else {
3126
- type = Mime.getFileMime(file.name);
3127
- }
3128
-
3129
- // sanitize file name or generate new one
3130
- if (file.name) {
3131
- name = file.name.replace(/\\/g, '/');
3132
- name = name.substr(name.lastIndexOf('/') + 1);
3133
- } else {
3134
- var prefix = type.split('/')[0];
3135
- name = Basic.guid((prefix !== '' ? prefix : 'file') + '_');
3136
-
3137
- if (Mime.extensions[type]) {
3138
- name += '.' + Mime.extensions[type][0]; // append proper extension if possible
3139
- }
3140
- }
3141
-
3142
- Blob.apply(this, arguments);
3143
-
3144
- Basic.extend(this, {
3145
- /**
3146
- File mime type
3147
-
3148
- @property type
3149
- @type {String}
3150
- @default ''
3151
- */
3152
- type: type || '',
3153
-
3154
- /**
3155
- File name
3156
-
3157
- @property name
3158
- @type {String}
3159
- @default UID
3160
- */
3161
- name: name || Basic.guid('file_'),
3162
-
3163
- /**
3164
- Date of last modification
3165
-
3166
- @property lastModifiedDate
3167
- @type {String}
3168
- @default now
3169
- */
3170
- lastModifiedDate: file.lastModifiedDate || (new Date()).toLocaleString() // Thu Aug 23 2012 19:40:00 GMT+0400 (GET)
3171
- });
3172
- }
3173
-
3174
- File.prototype = Blob.prototype;
3175
-
3176
- return File;
3177
- });
3178
-
3179
- // Included from: src/javascript/file/FileInput.js
3180
-
3181
- /**
3182
- * FileInput.js
3183
- *
3184
- * Copyright 2013, Moxiecode Systems AB
3185
- * Released under GPL License.
3186
- *
3187
- * License: http://www.plupload.com/license
3188
- * Contributing: http://www.plupload.com/contributing
3189
- */
3190
-
3191
- define('moxie/file/FileInput', [
3192
- 'moxie/core/utils/Basic',
3193
- 'moxie/core/utils/Mime',
3194
- 'moxie/core/utils/Dom',
3195
- 'moxie/core/Exceptions',
3196
- 'moxie/core/EventTarget',
3197
- 'moxie/core/I18n',
3198
- 'moxie/file/File',
3199
- 'moxie/runtime/Runtime',
3200
- 'moxie/runtime/RuntimeClient'
3201
- ], function(Basic, Mime, Dom, x, EventTarget, I18n, File, Runtime, RuntimeClient) {
3202
- /**
3203
- Provides a convenient way to create cross-browser file-picker. Generates file selection dialog on click,
3204
- converts selected files to _File_ objects, to be used in conjunction with _Image_, preloaded in memory
3205
- with _FileReader_ or uploaded to a server through _XMLHttpRequest_.
3206
-
3207
- @class FileInput
3208
- @constructor
3209
- @extends EventTarget
3210
- @uses RuntimeClient
3211
- @param {Object|String|DOMElement} options If options is string or node, argument is considered as _browse\_button_.
3212
- @param {String|DOMElement} options.browse_button DOM Element to turn into file picker.
3213
- @param {Array} [options.accept] Array of mime types to accept. By default accepts all.
3214
- @param {String} [options.file='file'] Name of the file field (not the filename).
3215
- @param {Boolean} [options.multiple=false] Enable selection of multiple files.
3216
- @param {Boolean} [options.directory=false] Turn file input into the folder input (cannot be both at the same time).
3217
- @param {String|DOMElement} [options.container] DOM Element to use as a container for file-picker. Defaults to parentNode
3218
- for _browse\_button_.
3219
- @param {Object|String} [options.required_caps] Set of required capabilities, that chosen runtime must support.
3220
-
3221
- @example
3222
- <div id="container">
3223
- <a id="file-picker" href="javascript:;">Browse...</a>
3224
- </div>
3225
-
3226
- <script>
3227
- var fileInput = new mOxie.FileInput({
3228
- browse_button: 'file-picker', // or document.getElementById('file-picker')
3229
- container: 'container',
3230
- accept: [
3231
- {title: "Image files", extensions: "jpg,gif,png"} // accept only images
3232
- ],
3233
- multiple: true // allow multiple file selection
3234
- });
3235
-
3236
- fileInput.onchange = function(e) {
3237
- // do something to files array
3238
- console.info(e.target.files); // or this.files or fileInput.files
3239
- };
3240
-
3241
- fileInput.init(); // initialize
3242
- </script>
3243
- */
3244
- var dispatches = [
3245
- /**
3246
- Dispatched when runtime is connected and file-picker is ready to be used.
3247
-
3248
- @event ready
3249
- @param {Object} event
3250
- */
3251
- 'ready',
3252
-
3253
- /**
3254
- Dispatched right after [ready](#event_ready) event, and whenever [refresh()](#method_refresh) is invoked.
3255
- Check [corresponding documentation entry](#method_refresh) for more info.
3256
-
3257
- @event refresh
3258
- @param {Object} event
3259
- */
3260
-
3261
- /**
3262
- Dispatched when selection of files in the dialog is complete.
3263
-
3264
- @event change
3265
- @param {Object} event
3266
- */
3267
- 'change',
3268
-
3269
- 'cancel', // TODO: might be useful
3270
-
3271
- /**
3272
- Dispatched when mouse cursor enters file-picker area. Can be used to style element
3273
- accordingly.
3274
-
3275
- @event mouseenter
3276
- @param {Object} event
3277
- */
3278
- 'mouseenter',
3279
-
3280
- /**
3281
- Dispatched when mouse cursor leaves file-picker area. Can be used to style element
3282
- accordingly.
3283
-
3284
- @event mouseleave
3285
- @param {Object} event
3286
- */
3287
- 'mouseleave',
3288
-
3289
- /**
3290
- Dispatched when functional mouse button is pressed on top of file-picker area.
3291
-
3292
- @event mousedown
3293
- @param {Object} event
3294
- */
3295
- 'mousedown',
3296
-
3297
- /**
3298
- Dispatched when functional mouse button is released on top of file-picker area.
3299
-
3300
- @event mouseup
3301
- @param {Object} event
3302
- */
3303
- 'mouseup'
3304
- ];
3305
-
3306
- function FileInput(options) {
3307
- var self = this,
3308
- container, browseButton, defaults;
3309
-
3310
- // if flat argument passed it should be browse_button id
3311
- if (Basic.inArray(Basic.typeOf(options), ['string', 'node']) !== -1) {
3312
- options = { browse_button : options };
3313
- }
3314
-
3315
- // this will help us to find proper default container
3316
- browseButton = Dom.get(options.browse_button);
3317
- if (!browseButton) {
3318
- // browse button is required
3319
- throw new x.DOMException(x.DOMException.NOT_FOUND_ERR);
3320
- }
3321
-
3322
- // figure out the options
3323
- defaults = {
3324
- accept: [{
3325
- title: I18n.translate('All Files'),
3326
- extensions: '*'
3327
- }],
3328
- name: 'file',
3329
- multiple: false,
3330
- required_caps: false,
3331
- container: browseButton.parentNode || document.body
3332
- };
3333
-
3334
- options = Basic.extend({}, defaults, options);
3335
-
3336
- // convert to object representation
3337
- if (typeof(options.required_caps) === 'string') {
3338
- options.required_caps = Runtime.parseCaps(options.required_caps);
3339
- }
3340
-
3341
- // normalize accept option (could be list of mime types or array of title/extensions pairs)
3342
- if (typeof(options.accept) === 'string') {
3343
- options.accept = Mime.mimes2extList(options.accept);
3344
- }
3345
-
3346
- container = Dom.get(options.container);
3347
- // make sure we have container
3348
- if (!container) {
3349
- container = document.body;
3350
- }
3351
-
3352
- // make container relative, if it's not
3353
- if (Dom.getStyle(container, 'position') === 'static') {
3354
- container.style.position = 'relative';
3355
- }
3356
-
3357
- container = browseButton = null; // IE
3358
-
3359
- RuntimeClient.call(self);
3360
-
3361
- Basic.extend(self, {
3362
- /**
3363
- Unique id of the component
3364
-
3365
- @property uid
3366
- @protected
3367
- @readOnly
3368
- @type {String}
3369
- @default UID
3370
- */
3371
- uid: Basic.guid('uid_'),
3372
-
3373
- /**
3374
- Unique id of the connected runtime, if any.
3375
-
3376
- @property ruid
3377
- @protected
3378
- @type {String}
3379
- */
3380
- ruid: null,
3381
-
3382
- /**
3383
- Unique id of the runtime container. Useful to get hold of it for various manipulations.
3384
-
3385
- @property shimid
3386
- @protected
3387
- @type {String}
3388
- */
3389
- shimid: null,
3390
-
3391
- /**
3392
- Array of selected mOxie.File objects
3393
-
3394
- @property files
3395
- @type {Array}
3396
- @default null
3397
- */
3398
- files: null,
3399
-
3400
- /**
3401
- Initializes the file-picker, connects it to runtime and dispatches event ready when done.
3402
-
3403
- @method init
3404
- */
3405
- init: function() {
3406
- self.convertEventPropsToHandlers(dispatches);
3407
-
3408
- self.bind('RuntimeInit', function(e, runtime) {
3409
- self.ruid = runtime.uid;
3410
- self.shimid = runtime.shimid;
3411
-
3412
- self.bind("Ready", function() {
3413
- self.trigger("Refresh");
3414
- }, 999);
3415
-
3416
- self.bind("Change", function() {
3417
- var files = runtime.exec.call(self, 'FileInput', 'getFiles');
3418
-
3419
- self.files = [];
3420
-
3421
- Basic.each(files, function(file) {
3422
- // ignore empty files (IE10 for example hangs if you try to send them via XHR)
3423
- if (file.size === 0) {
3424
- return true;
3425
- }
3426
- self.files.push(new File(self.ruid, file));
3427
- });
3428
- }, 999);
3429
-
3430
- // re-position and resize shim container
3431
- self.bind('Refresh', function() {
3432
- var pos, size, browseButton, shimContainer;
3433
-
3434
- browseButton = Dom.get(options.browse_button);
3435
- shimContainer = Dom.get(runtime.shimid); // do not use runtime.getShimContainer(), since it will create container if it doesn't exist
3436
-
3437
- if (browseButton) {
3438
- pos = Dom.getPos(browseButton, Dom.get(options.container));
3439
- size = Dom.getSize(browseButton);
3440
-
3441
- if (shimContainer) {
3442
- Basic.extend(shimContainer.style, {
3443
- top : pos.y + 'px',
3444
- left : pos.x + 'px',
3445
- width : size.w + 'px',
3446
- height : size.h + 'px'
3447
- });
3448
- }
3449
- }
3450
- shimContainer = browseButton = null;
3451
- });
3452
-
3453
- runtime.exec.call(self, 'FileInput', 'init', options);
3454
- });
3455
-
3456
- // runtime needs: options.required_features, options.runtime_order and options.container
3457
- self.connectRuntime(Basic.extend({}, options, {
3458
- required_caps: {
3459
- select_file: true
3460
- }
3461
- }));
3462
- },
3463
-
3464
- /**
3465
- Disables file-picker element, so that it doesn't react to mouse clicks.
3466
-
3467
- @method disable
3468
- @param {Boolean} [state=true] Disable component if - true, enable if - false
3469
- */
3470
- disable: function(state) {
3471
- var runtime = this.getRuntime();
3472
- if (runtime) {
3473
- runtime.exec.call(this, 'FileInput', 'disable', Basic.typeOf(state) === 'undefined' ? true : state);
3474
- }
3475
- },
3476
-
3477
-
3478
- /**
3479
- Reposition and resize dialog trigger to match the position and size of browse_button element.
3480
-
3481
- @method refresh
3482
- */
3483
- refresh: function() {
3484
- self.trigger("Refresh");
3485
- },
3486
-
3487
-
3488
- /**
3489
- Destroy component.
3490
-
3491
- @method destroy
3492
- */
3493
- destroy: function() {
3494
- var runtime = this.getRuntime();
3495
- if (runtime) {
3496
- runtime.exec.call(this, 'FileInput', 'destroy');
3497
- this.disconnectRuntime();
3498
- }
3499
-
3500
- if (Basic.typeOf(this.files) === 'array') {
3501
- // no sense in leaving associated files behind
3502
- Basic.each(this.files, function(file) {
3503
- file.destroy();
3504
- });
3505
- }
3506
- this.files = null;
3507
- }
3508
- });
3509
- }
3510
-
3511
- FileInput.prototype = EventTarget.instance;
3512
-
3513
- return FileInput;
3514
- });
3515
-
3516
- // Included from: src/javascript/file/FileDrop.js
3517
-
3518
- /**
3519
- * FileDrop.js
3520
- *
3521
- * Copyright 2013, Moxiecode Systems AB
3522
- * Released under GPL License.
3523
- *
3524
- * License: http://www.plupload.com/license
3525
- * Contributing: http://www.plupload.com/contributing
3526
- */
3527
-
3528
- define('moxie/file/FileDrop', [
3529
- 'moxie/core/I18n',
3530
- 'moxie/core/utils/Dom',
3531
- 'moxie/core/Exceptions',
3532
- 'moxie/core/utils/Basic',
3533
- 'moxie/file/File',
3534
- 'moxie/runtime/RuntimeClient',
3535
- 'moxie/core/EventTarget',
3536
- 'moxie/core/utils/Mime'
3537
- ], function(I18n, Dom, x, Basic, File, RuntimeClient, EventTarget, Mime) {
3538
- /**
3539
- Turn arbitrary DOM element to a drop zone accepting files. Converts selected files to _File_ objects, to be used
3540
- in conjunction with _Image_, preloaded in memory with _FileReader_ or uploaded to a server through
3541
- _XMLHttpRequest_.
3542
-
3543
- @example
3544
- <div id="drop_zone">
3545
- Drop files here
3546
- </div>
3547
- <br />
3548
- <div id="filelist"></div>
3549
-
3550
- <script type="text/javascript">
3551
- var fileDrop = new mOxie.FileDrop('drop_zone'), fileList = mOxie.get('filelist');
3552
-
3553
- fileDrop.ondrop = function() {
3554
- mOxie.each(this.files, function(file) {
3555
- fileList.innerHTML += '<div>' + file.name + '</div>';
3556
- });
3557
- };
3558
-
3559
- fileDrop.init();
3560
- </script>
3561
-
3562
- @class FileDrop
3563
- @constructor
3564
- @extends EventTarget
3565
- @uses RuntimeClient
3566
- @param {Object|String} options If options has typeof string, argument is considered as options.drop_zone
3567
- @param {String|DOMElement} options.drop_zone DOM Element to turn into a drop zone
3568
- @param {Array} [options.accept] Array of mime types to accept. By default accepts all
3569
- @param {Object|String} [options.required_caps] Set of required capabilities, that chosen runtime must support
3570
- */
3571
- var dispatches = [
3572
- /**
3573
- Dispatched when runtime is connected and drop zone is ready to accept files.
3574
-
3575
- @event ready
3576
- @param {Object} event
3577
- */
3578
- 'ready',
3579
-
3580
- /**
3581
- Dispatched when dragging cursor enters the drop zone.
3582
-
3583
- @event dragenter
3584
- @param {Object} event
3585
- */
3586
- 'dragenter',
3587
-
3588
- /**
3589
- Dispatched when dragging cursor leaves the drop zone.
3590
-
3591
- @event dragleave
3592
- @param {Object} event
3593
- */
3594
- 'dragleave',
3595
-
3596
- /**
3597
- Dispatched when file is dropped onto the drop zone.
3598
-
3599
- @event drop
3600
- @param {Object} event
3601
- */
3602
- 'drop',
3603
-
3604
- /**
3605
- Dispatched if error occurs.
3606
-
3607
- @event error
3608
- @param {Object} event
3609
- */
3610
- 'error'
3611
- ];
3612
-
3613
- function FileDrop(options) {
3614
- var self = this, defaults;
3615
-
3616
- // if flat argument passed it should be drop_zone id
3617
- if (typeof(options) === 'string') {
3618
- options = { drop_zone : options };
3619
- }
3620
-
3621
- // figure out the options
3622
- defaults = {
3623
- accept: [{
3624
- title: I18n.translate('All Files'),
3625
- extensions: '*'
3626
- }],
3627
- required_caps: {
3628
- drag_and_drop: true
3629
- }
3630
- };
3631
-
3632
- options = typeof(options) === 'object' ? Basic.extend({}, defaults, options) : defaults;
3633
-
3634
- // this will help us to find proper default container
3635
- options.container = Dom.get(options.drop_zone) || document.body;
3636
-
3637
- // make container relative, if it is not
3638
- if (Dom.getStyle(options.container, 'position') === 'static') {
3639
- options.container.style.position = 'relative';
3640
- }
3641
-
3642
- // normalize accept option (could be list of mime types or array of title/extensions pairs)
3643
- if (typeof(options.accept) === 'string') {
3644
- options.accept = Mime.mimes2extList(options.accept);
3645
- }
3646
-
3647
- RuntimeClient.call(self);
3648
-
3649
- Basic.extend(self, {
3650
- uid: Basic.guid('uid_'),
3651
-
3652
- ruid: null,
3653
-
3654
- files: null,
3655
-
3656
- init: function() {
3657
-
3658
- self.convertEventPropsToHandlers(dispatches);
3659
-
3660
- self.bind('RuntimeInit', function(e, runtime) {
3661
- self.ruid = runtime.uid;
3662
-
3663
- self.bind("Drop", function() {
3664
- var files = runtime.exec.call(self, 'FileDrop', 'getFiles');
3665
-
3666
- self.files = [];
3667
-
3668
- Basic.each(files, function(file) {
3669
- self.files.push(new File(self.ruid, file));
3670
- });
3671
- }, 999);
3672
-
3673
- runtime.exec.call(self, 'FileDrop', 'init', options);
3674
-
3675
- self.dispatchEvent('ready');
3676
- });
3677
-
3678
- // runtime needs: options.required_features, options.runtime_order and options.container
3679
- self.connectRuntime(options); // throws RuntimeError
3680
- },
3681
-
3682
- destroy: function() {
3683
- var runtime = this.getRuntime();
3684
- if (runtime) {
3685
- runtime.exec.call(this, 'FileDrop', 'destroy');
3686
- this.disconnectRuntime();
3687
- }
3688
- this.files = null;
3689
- }
3690
- });
3691
- }
3692
-
3693
- FileDrop.prototype = EventTarget.instance;
3694
-
3695
- return FileDrop;
3696
- });
3697
-
3698
- // Included from: src/javascript/runtime/RuntimeTarget.js
3699
-
3700
- /**
3701
- * RuntimeTarget.js
3702
- *
3703
- * Copyright 2013, Moxiecode Systems AB
3704
- * Released under GPL License.
3705
- *
3706
- * License: http://www.plupload.com/license
3707
- * Contributing: http://www.plupload.com/contributing
3708
- */
3709
-
3710
- define('moxie/runtime/RuntimeTarget', [
3711
- 'moxie/core/utils/Basic',
3712
- 'moxie/runtime/RuntimeClient',
3713
- "moxie/core/EventTarget"
3714
- ], function(Basic, RuntimeClient, EventTarget) {
3715
- /**
3716
- Instance of this class can be used as a target for the events dispatched by shims,
3717
- when allowing them onto components is for either reason inappropriate
3718
-
3719
- @class RuntimeTarget
3720
- @constructor
3721
- @protected
3722
- @extends EventTarget
3723
- */
3724
- function RuntimeTarget() {
3725
- this.uid = Basic.guid('uid_');
3726
-
3727
- RuntimeClient.call(this);
3728
-
3729
- this.destroy = function() {
3730
- this.disconnectRuntime();
3731
- this.unbindAll();
3732
- };
3733
- }
3734
-
3735
- RuntimeTarget.prototype = EventTarget.instance;
3736
-
3737
- return RuntimeTarget;
3738
- });
3739
-
3740
- // Included from: src/javascript/file/FileReader.js
3741
-
3742
- /**
3743
- * FileReader.js
3744
- *
3745
- * Copyright 2013, Moxiecode Systems AB
3746
- * Released under GPL License.
3747
- *
3748
- * License: http://www.plupload.com/license
3749
- * Contributing: http://www.plupload.com/contributing
3750
- */
3751
-
3752
- define('moxie/file/FileReader', [
3753
- 'moxie/core/utils/Basic',
3754
- 'moxie/core/utils/Encode',
3755
- 'moxie/core/Exceptions',
3756
- 'moxie/core/EventTarget',
3757
- 'moxie/file/Blob',
3758
- 'moxie/file/File',
3759
- 'moxie/runtime/RuntimeTarget'
3760
- ], function(Basic, Encode, x, EventTarget, Blob, File, RuntimeTarget) {
3761
- /**
3762
- Utility for preloading o.Blob/o.File objects in memory. By design closely follows [W3C FileReader](http://www.w3.org/TR/FileAPI/#dfn-filereader)
3763
- interface. Where possible uses native FileReader, where - not falls back to shims.
3764
-
3765
- @class FileReader
3766
- @constructor FileReader
3767
- @extends EventTarget
3768
- @uses RuntimeClient
3769
- */
3770
- var dispatches = [
3771
-
3772
- /**
3773
- Dispatched when the read starts.
3774
-
3775
- @event loadstart
3776
- @param {Object} event
3777
- */
3778
- 'loadstart',
3779
-
3780
- /**
3781
- Dispatched while reading (and decoding) blob, and reporting partial Blob data (progess.loaded/progress.total).
3782
-
3783
- @event progress
3784
- @param {Object} event
3785
- */
3786
- 'progress',
3787
-
3788
- /**
3789
- Dispatched when the read has successfully completed.
3790
-
3791
- @event load
3792
- @param {Object} event
3793
- */
3794
- 'load',
3795
-
3796
- /**
3797
- Dispatched when the read has been aborted. For instance, by invoking the abort() method.
3798
-
3799
- @event abort
3800
- @param {Object} event
3801
- */
3802
- 'abort',
3803
-
3804
- /**
3805
- Dispatched when the read has failed.
3806
-
3807
- @event error
3808
- @param {Object} event
3809
- */
3810
- 'error',
3811
-
3812
- /**
3813
- Dispatched when the request has completed (either in success or failure).
3814
-
3815
- @event loadend
3816
- @param {Object} event
3817
- */
3818
- 'loadend'
3819
- ];
3820
-
3821
- function FileReader() {
3822
- var self = this, _fr;
3823
-
3824
- Basic.extend(this, {
3825
- /**
3826
- UID of the component instance.
3827
-
3828
- @property uid
3829
- @type {String}
3830
- */
3831
- uid: Basic.guid('uid_'),
3832
-
3833
- /**
3834
- Contains current state of FileReader object. Can take values of FileReader.EMPTY, FileReader.LOADING
3835
- and FileReader.DONE.
3836
-
3837
- @property readyState
3838
- @type {Number}
3839
- @default FileReader.EMPTY
3840
- */
3841
- readyState: FileReader.EMPTY,
3842
-
3843
- /**
3844
- Result of the successful read operation.
3845
-
3846
- @property result
3847
- @type {String}
3848
- */
3849
- result: null,
3850
-
3851
- /**
3852
- Stores the error of failed asynchronous read operation.
3853
-
3854
- @property error
3855
- @type {DOMError}
3856
- */
3857
- error: null,
3858
-
3859
- /**
3860
- Initiates reading of File/Blob object contents to binary string.
3861
-
3862
- @method readAsBinaryString
3863
- @param {Blob|File} blob Object to preload
3864
- */
3865
- readAsBinaryString: function(blob) {
3866
- _read.call(this, 'readAsBinaryString', blob);
3867
- },
3868
-
3869
- /**
3870
- Initiates reading of File/Blob object contents to dataURL string.
3871
-
3872
- @method readAsDataURL
3873
- @param {Blob|File} blob Object to preload
3874
- */
3875
- readAsDataURL: function(blob) {
3876
- _read.call(this, 'readAsDataURL', blob);
3877
- },
3878
-
3879
- /**
3880
- Initiates reading of File/Blob object contents to string.
3881
-
3882
- @method readAsText
3883
- @param {Blob|File} blob Object to preload
3884
- */
3885
- readAsText: function(blob) {
3886
- _read.call(this, 'readAsText', blob);
3887
- },
3888
-
3889
- /**
3890
- Aborts preloading process.
3891
-
3892
- @method abort
3893
- */
3894
- abort: function() {
3895
- this.result = null;
3896
-
3897
- if (Basic.inArray(this.readyState, [FileReader.EMPTY, FileReader.DONE]) !== -1) {
3898
- return;
3899
- } else if (this.readyState === FileReader.LOADING) {
3900
- this.readyState = FileReader.DONE;
3901
- }
3902
-
3903
- if (_fr) {
3904
- _fr.getRuntime().exec.call(this, 'FileReader', 'abort');
3905
- }
3906
-
3907
- this.trigger('abort');
3908
- this.trigger('loadend');
3909
- },
3910
-
3911
- /**
3912
- Destroy component and release resources.
3913
-
3914
- @method destroy
3915
- */
3916
- destroy: function() {
3917
- this.abort();
3918
-
3919
- if (_fr) {
3920
- _fr.getRuntime().exec.call(this, 'FileReader', 'destroy');
3921
- _fr.disconnectRuntime();
3922
- }
3923
-
3924
- self = _fr = null;
3925
- }
3926
- });
3927
-
3928
-
3929
- function _read(op, blob) {
3930
- _fr = new RuntimeTarget();
3931
-
3932
- function error(err) {
3933
- self.readyState = FileReader.DONE;
3934
- self.error = err;
3935
- self.trigger('error');
3936
- loadEnd();
3937
- }
3938
-
3939
- function loadEnd() {
3940
- _fr.destroy();
3941
- _fr = null;
3942
- self.trigger('loadend');
3943
- }
3944
-
3945
- function exec(runtime) {
3946
- _fr.bind('Error', function(e, err) {
3947
- error(err);
3948
- });
3949
-
3950
- _fr.bind('Progress', function(e) {
3951
- self.result = runtime.exec.call(_fr, 'FileReader', 'getResult');
3952
- self.trigger(e);
3953
- });
3954
-
3955
- _fr.bind('Load', function(e) {
3956
- self.readyState = FileReader.DONE;
3957
- self.result = runtime.exec.call(_fr, 'FileReader', 'getResult');
3958
- self.trigger(e);
3959
- loadEnd();
3960
- });
3961
-
3962
- runtime.exec.call(_fr, 'FileReader', 'read', op, blob);
3963
- }
3964
-
3965
- this.convertEventPropsToHandlers(dispatches);
3966
-
3967
- if (this.readyState === FileReader.LOADING) {
3968
- return error(new x.DOMException(x.DOMException.INVALID_STATE_ERR));
3969
- }
3970
-
3971
- this.readyState = FileReader.LOADING;
3972
- this.trigger('loadstart');
3973
-
3974
- // if source is o.Blob/o.File
3975
- if (blob instanceof Blob) {
3976
- if (blob.isDetached()) {
3977
- var src = blob.getSource();
3978
- switch (op) {
3979
- case 'readAsText':
3980
- case 'readAsBinaryString':
3981
- this.result = src;
3982
- break;
3983
- case 'readAsDataURL':
3984
- this.result = 'data:' + blob.type + ';base64,' + Encode.btoa(src);
3985
- break;
3986
- }
3987
- this.readyState = FileReader.DONE;
3988
- this.trigger('load');
3989
- loadEnd();
3990
- } else {
3991
- exec(_fr.connectRuntime(blob.ruid));
3992
- }
3993
- } else {
3994
- error(new x.DOMException(x.DOMException.NOT_FOUND_ERR));
3995
- }
3996
- }
3997
- }
3998
-
3999
- /**
4000
- Initial FileReader state
4001
-
4002
- @property EMPTY
4003
- @type {Number}
4004
- @final
4005
- @static
4006
- @default 0
4007
- */
4008
- FileReader.EMPTY = 0;
4009
-
4010
- /**
4011
- FileReader switches to this state when it is preloading the source
4012
-
4013
- @property LOADING
4014
- @type {Number}
4015
- @final
4016
- @static
4017
- @default 1
4018
- */
4019
- FileReader.LOADING = 1;
4020
-
4021
- /**
4022
- Preloading is complete, this is a final state
4023
-
4024
- @property DONE
4025
- @type {Number}
4026
- @final
4027
- @static
4028
- @default 2
4029
- */
4030
- FileReader.DONE = 2;
4031
-
4032
- FileReader.prototype = EventTarget.instance;
4033
-
4034
- return FileReader;
4035
- });
4036
-
4037
- // Included from: src/javascript/core/utils/Url.js
4038
-
4039
- /**
4040
- * Url.js
4041
- *
4042
- * Copyright 2013, Moxiecode Systems AB
4043
- * Released under GPL License.
4044
- *
4045
- * License: http://www.plupload.com/license
4046
- * Contributing: http://www.plupload.com/contributing
4047
- */
4048
-
4049
- define('moxie/core/utils/Url', [], function() {
4050
- /**
4051
- Parse url into separate components and fill in absent parts with parts from current url,
4052
- based on https://raw.github.com/kvz/phpjs/master/functions/url/parse_url.js
4053
-
4054
- @method parseUrl
4055
- @for Utils
4056
- @static
4057
- @param {String} url Url to parse (defaults to empty string if undefined)
4058
- @return {Object} Hash containing extracted uri components
4059
- */
4060
- var parseUrl = function(url, currentUrl) {
4061
- var key = ['source', 'scheme', 'authority', 'userInfo', 'user', 'pass', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'fragment']
4062
- , i = key.length
4063
- , ports = {
4064
- http: 80,
4065
- https: 443
4066
- }
4067
- , uri = {}
4068
- , regex = /^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/
4069
- , m = regex.exec(url || '')
4070
- ;
4071
-
4072
- while (i--) {
4073
- if (m[i]) {
4074
- uri[key[i]] = m[i];
4075
- }
4076
- }
4077
-
4078
- // when url is relative, we set the origin and the path ourselves
4079
- if (!uri.scheme) {
4080
- // come up with defaults
4081
- if (!currentUrl || typeof(currentUrl) === 'string') {
4082
- currentUrl = parseUrl(currentUrl || document.location.href);
4083
- }
4084
-
4085
- uri.scheme = currentUrl.scheme;
4086
- uri.host = currentUrl.host;
4087
- uri.port = currentUrl.port;
4088
-
4089
- var path = '';
4090
- // for urls without trailing slash we need to figure out the path
4091
- if (/^[^\/]/.test(uri.path)) {
4092
- path = currentUrl.path;
4093
- // if path ends with a filename, strip it
4094
- if (!/(\/|\/[^\.]+)$/.test(path)) {
4095
- path = path.replace(/\/[^\/]+$/, '/');
4096
- } else {
4097
- path += '/';
4098
- }
4099
- }
4100
- uri.path = path + (uri.path || ''); // site may reside at domain.com or domain.com/subdir
4101
- }
4102
-
4103
- if (!uri.port) {
4104
- uri.port = ports[uri.scheme] || 80;
4105
- }
4106
-
4107
- uri.port = parseInt(uri.port, 10);
4108
-
4109
- if (!uri.path) {
4110
- uri.path = "/";
4111
- }
4112
-
4113
- delete uri.source;
4114
-
4115
- return uri;
4116
- };
4117
-
4118
- /**
4119
- Resolve url - among other things will turn relative url to absolute
4120
-
4121
- @method resolveUrl
4122
- @static
4123
- @param {String} url Either absolute or relative
4124
- @return {String} Resolved, absolute url
4125
- */
4126
- var resolveUrl = function(url) {
4127
- var ports = { // we ignore default ports
4128
- http: 80,
4129
- https: 443
4130
- }
4131
- , urlp = parseUrl(url)
4132
- ;
4133
-
4134
- return urlp.scheme + '://' + urlp.host + (urlp.port !== ports[urlp.scheme] ? ':' + urlp.port : '') + urlp.path + (urlp.query ? urlp.query : '');
4135
- };
4136
-
4137
- /**
4138
- Check if specified url has the same origin as the current document
4139
-
4140
- @method hasSameOrigin
4141
- @param {String|Object} url
4142
- @return {Boolean}
4143
- */
4144
- var hasSameOrigin = function(url) {
4145
- function origin(url) {
4146
- return [url.scheme, url.host, url.port].join('/');
4147
- }
4148
-
4149
- if (typeof url === 'string') {
4150
- url = parseUrl(url);
4151
- }
4152
-
4153
- return origin(parseUrl()) === origin(url);
4154
- };
4155
-
4156
- return {
4157
- parseUrl: parseUrl,
4158
- resolveUrl: resolveUrl,
4159
- hasSameOrigin: hasSameOrigin
4160
- };
4161
- });
4162
-
4163
- // Included from: src/javascript/file/FileReaderSync.js
4164
-
4165
- /**
4166
- * FileReaderSync.js
4167
- *
4168
- * Copyright 2013, Moxiecode Systems AB
4169
- * Released under GPL License.
4170
- *
4171
- * License: http://www.plupload.com/license
4172
- * Contributing: http://www.plupload.com/contributing
4173
- */
4174
-
4175
- define('moxie/file/FileReaderSync', [
4176
- 'moxie/core/utils/Basic',
4177
- 'moxie/runtime/RuntimeClient',
4178
- 'moxie/core/utils/Encode'
4179
- ], function(Basic, RuntimeClient, Encode) {
4180
- /**
4181
- Synchronous FileReader implementation. Something like this is available in WebWorkers environment, here
4182
- it can be used to read only preloaded blobs/files and only below certain size (not yet sure what that'd be,
4183
- but probably < 1mb). Not meant to be used directly by user.
4184
-
4185
- @class FileReaderSync
4186
- @private
4187
- @constructor
4188
- */
4189
- return function() {
4190
- RuntimeClient.call(this);
4191
-
4192
- Basic.extend(this, {
4193
- uid: Basic.guid('uid_'),
4194
-
4195
- readAsBinaryString: function(blob) {
4196
- return _read.call(this, 'readAsBinaryString', blob);
4197
- },
4198
-
4199
- readAsDataURL: function(blob) {
4200
- return _read.call(this, 'readAsDataURL', blob);
4201
- },
4202
-
4203
- /*readAsArrayBuffer: function(blob) {
4204
- return _read.call(this, 'readAsArrayBuffer', blob);
4205
- },*/
4206
-
4207
- readAsText: function(blob) {
4208
- return _read.call(this, 'readAsText', blob);
4209
- }
4210
- });
4211
-
4212
- function _read(op, blob) {
4213
- if (blob.isDetached()) {
4214
- var src = blob.getSource();
4215
- switch (op) {
4216
- case 'readAsBinaryString':
4217
- return src;
4218
- case 'readAsDataURL':
4219
- return 'data:' + blob.type + ';base64,' + Encode.btoa(src);
4220
- case 'readAsText':
4221
- var txt = '';
4222
- for (var i = 0, length = src.length; i < length; i++) {
4223
- txt += String.fromCharCode(src[i]);
4224
- }
4225
- return txt;
4226
- }
4227
- } else {
4228
- var result = this.connectRuntime(blob.ruid).exec.call(this, 'FileReaderSync', 'read', op, blob);
4229
- this.disconnectRuntime();
4230
- return result;
4231
- }
4232
- }
4233
- };
4234
- });
4235
-
4236
- // Included from: src/javascript/xhr/FormData.js
4237
-
4238
- /**
4239
- * FormData.js
4240
- *
4241
- * Copyright 2013, Moxiecode Systems AB
4242
- * Released under GPL License.
4243
- *
4244
- * License: http://www.plupload.com/license
4245
- * Contributing: http://www.plupload.com/contributing
4246
- */
4247
-
4248
- define("moxie/xhr/FormData", [
4249
- "moxie/core/Exceptions",
4250
- "moxie/core/utils/Basic",
4251
- "moxie/file/Blob"
4252
- ], function(x, Basic, Blob) {
4253
- /**
4254
- FormData
4255
-
4256
- @class FormData
4257
- @constructor
4258
- */
4259
- function FormData() {
4260
- var _blob, _fields = [];
4261
-
4262
- Basic.extend(this, {
4263
- /**
4264
- Append another key-value pair to the FormData object
4265
-
4266
- @method append
4267
- @param {String} name Name for the new field
4268
- @param {String|Blob|Array|Object} value Value for the field
4269
- */
4270
- append: function(name, value) {
4271
- var self = this, valueType = Basic.typeOf(value);
4272
-
4273
- // according to specs value might be either Blob or String
4274
- if (value instanceof Blob) {
4275
- _blob = {
4276
- name: name,
4277
- value: value // unfortunately we can only send single Blob in one FormData
4278
- };
4279
- } else if ('array' === valueType) {
4280
- name += '[]';
4281
-
4282
- Basic.each(value, function(value) {
4283
- self.append(name, value);
4284
- });
4285
- } else if ('object' === valueType) {
4286
- Basic.each(value, function(value, key) {
4287
- self.append(name + '[' + key + ']', value);
4288
- });
4289
- } else if ('null' === valueType || 'undefined' === valueType || 'number' === valueType && isNaN(value)) {
4290
- self.append(name, "false");
4291
- } else {
4292
- _fields.push({
4293
- name: name,
4294
- value: value.toString()
4295
- });
4296
- }
4297
- },
4298
-
4299
- /**
4300
- Checks if FormData contains Blob.
4301
-
4302
- @method hasBlob
4303
- @return {Boolean}
4304
- */
4305
- hasBlob: function() {
4306
- return !!this.getBlob();
4307
- },
4308
-
4309
- /**
4310
- Retrieves blob.
4311
-
4312
- @method getBlob
4313
- @return {Object} Either Blob if found or null
4314
- */
4315
- getBlob: function() {
4316
- return _blob && _blob.value || null;
4317
- },
4318
-
4319
- /**
4320
- Retrieves blob field name.
4321
-
4322
- @method getBlobName
4323
- @return {String} Either Blob field name or null
4324
- */
4325
- getBlobName: function() {
4326
- return _blob && _blob.name || null;
4327
- },
4328
-
4329
- /**
4330
- Loop over the fields in FormData and invoke the callback for each of them.
4331
-
4332
- @method each
4333
- @param {Function} cb Callback to call for each field
4334
- */
4335
- each: function(cb) {
4336
- Basic.each(_fields, function(field) {
4337
- cb(field.value, field.name);
4338
- });
4339
-
4340
- if (_blob) {
4341
- cb(_blob.value, _blob.name);
4342
- }
4343
- },
4344
-
4345
- destroy: function() {
4346
- _blob = null;
4347
- _fields = [];
4348
- }
4349
- });
4350
- }
4351
-
4352
- return FormData;
4353
- });
4354
-
4355
- // Included from: src/javascript/xhr/XMLHttpRequest.js
4356
-
4357
- /**
4358
- * XMLHttpRequest.js
4359
- *
4360
- * Copyright 2013, Moxiecode Systems AB
4361
- * Released under GPL License.
4362
- *
4363
- * License: http://www.plupload.com/license
4364
- * Contributing: http://www.plupload.com/contributing
4365
- */
4366
-
4367
- define("moxie/xhr/XMLHttpRequest", [
4368
- "moxie/core/utils/Basic",
4369
- "moxie/core/Exceptions",
4370
- "moxie/core/EventTarget",
4371
- "moxie/core/utils/Encode",
4372
- "moxie/core/utils/Url",
4373
- "moxie/runtime/Runtime",
4374
- "moxie/runtime/RuntimeTarget",
4375
- "moxie/file/Blob",
4376
- "moxie/file/FileReaderSync",
4377
- "moxie/xhr/FormData",
4378
- "moxie/core/utils/Env",
4379
- "moxie/core/utils/Mime"
4380
- ], function(Basic, x, EventTarget, Encode, Url, Runtime, RuntimeTarget, Blob, FileReaderSync, FormData, Env, Mime) {
4381
-
4382
- var httpCode = {
4383
- 100: 'Continue',
4384
- 101: 'Switching Protocols',
4385
- 102: 'Processing',
4386
-
4387
- 200: 'OK',
4388
- 201: 'Created',
4389
- 202: 'Accepted',
4390
- 203: 'Non-Authoritative Information',
4391
- 204: 'No Content',
4392
- 205: 'Reset Content',
4393
- 206: 'Partial Content',
4394
- 207: 'Multi-Status',
4395
- 226: 'IM Used',
4396
-
4397
- 300: 'Multiple Choices',
4398
- 301: 'Moved Permanently',
4399
- 302: 'Found',
4400
- 303: 'See Other',
4401
- 304: 'Not Modified',
4402
- 305: 'Use Proxy',
4403
- 306: 'Reserved',
4404
- 307: 'Temporary Redirect',
4405
-
4406
- 400: 'Bad Request',
4407
- 401: 'Unauthorized',
4408
- 402: 'Payment Required',
4409
- 403: 'Forbidden',
4410
- 404: 'Not Found',
4411
- 405: 'Method Not Allowed',
4412
- 406: 'Not Acceptable',
4413
- 407: 'Proxy Authentication Required',
4414
- 408: 'Request Timeout',
4415
- 409: 'Conflict',
4416
- 410: 'Gone',
4417
- 411: 'Length Required',
4418
- 412: 'Precondition Failed',
4419
- 413: 'Request Entity Too Large',
4420
- 414: 'Request-URI Too Long',
4421
- 415: 'Unsupported Media Type',
4422
- 416: 'Requested Range Not Satisfiable',
4423
- 417: 'Expectation Failed',
4424
- 422: 'Unprocessable Entity',
4425
- 423: 'Locked',
4426
- 424: 'Failed Dependency',
4427
- 426: 'Upgrade Required',
4428
-
4429
- 500: 'Internal Server Error',
4430
- 501: 'Not Implemented',
4431
- 502: 'Bad Gateway',
4432
- 503: 'Service Unavailable',
4433
- 504: 'Gateway Timeout',
4434
- 505: 'HTTP Version Not Supported',
4435
- 506: 'Variant Also Negotiates',
4436
- 507: 'Insufficient Storage',
4437
- 510: 'Not Extended'
4438
- };
4439
-
4440
- function XMLHttpRequestUpload() {
4441
- this.uid = Basic.guid('uid_');
4442
- }
4443
-
4444
- XMLHttpRequestUpload.prototype = EventTarget.instance;
4445
-
4446
- /**
4447
- Implementation of XMLHttpRequest
4448
-
4449
- @class XMLHttpRequest
4450
- @constructor
4451
- @uses RuntimeClient
4452
- @extends EventTarget
4453
- */
4454
- var dispatches = ['loadstart', 'progress', 'abort', 'error', 'load', 'timeout', 'loadend']; // & readystatechange (for historical reasons)
4455
-
4456
- var NATIVE = 1, RUNTIME = 2;
4457
-
4458
- function XMLHttpRequest() {
4459
- var self = this,
4460
- // this (together with _p() @see below) is here to gracefully upgrade to setter/getter syntax where possible
4461
- props = {
4462
- /**
4463
- The amount of milliseconds a request can take before being terminated. Initially zero. Zero means there is no timeout.
4464
-
4465
- @property timeout
4466
- @type Number
4467
- @default 0
4468
- */
4469
- timeout: 0,
4470
-
4471
- /**
4472
- Current state, can take following values:
4473
- UNSENT (numeric value 0)
4474
- The object has been constructed.
4475
-
4476
- OPENED (numeric value 1)
4477
- The open() method has been successfully invoked. During this state request headers can be set using setRequestHeader() and the request can be made using the send() method.
4478
-
4479
- HEADERS_RECEIVED (numeric value 2)
4480
- All redirects (if any) have been followed and all HTTP headers of the final response have been received. Several response members of the object are now available.
4481
-
4482
- LOADING (numeric value 3)
4483
- The response entity body is being received.
4484
-
4485
- DONE (numeric value 4)
4486
-
4487
- @property readyState
4488
- @type Number
4489
- @default 0 (UNSENT)
4490
- */
4491
- readyState: XMLHttpRequest.UNSENT,
4492
-
4493
- /**
4494
- True when user credentials are to be included in a cross-origin request. False when they are to be excluded
4495
- in a cross-origin request and when cookies are to be ignored in its response. Initially false.
4496
-
4497
- @property withCredentials
4498
- @type Boolean
4499
- @default false
4500
- */
4501
- withCredentials: false,
4502
-
4503
- /**
4504
- Returns the HTTP status code.
4505
-
4506
- @property status
4507
- @type Number
4508
- @default 0
4509
- */
4510
- status: 0,
4511
-
4512
- /**
4513
- Returns the HTTP status text.
4514
-
4515
- @property statusText
4516
- @type String
4517
- */
4518
- statusText: "",
4519
-
4520
- /**
4521
- Returns the response type. Can be set to change the response type. Values are:
4522
- the empty string (default), "arraybuffer", "blob", "document", "json", and "text".
4523
-
4524
- @property responseType
4525
- @type String
4526
- */
4527
- responseType: "",
4528
-
4529
- /**
4530
- Returns the document response entity body.
4531
-
4532
- Throws an "InvalidStateError" exception if responseType is not the empty string or "document".
4533
-
4534
- @property responseXML
4535
- @type Document
4536
- */
4537
- responseXML: null,
4538
-
4539
- /**
4540
- Returns the text response entity body.
4541
-
4542
- Throws an "InvalidStateError" exception if responseType is not the empty string or "text".
4543
-
4544
- @property responseText
4545
- @type String
4546
- */
4547
- responseText: null,
4548
-
4549
- /**
4550
- Returns the response entity body (http://www.w3.org/TR/XMLHttpRequest/#response-entity-body).
4551
- Can become: ArrayBuffer, Blob, Document, JSON, Text
4552
-
4553
- @property response
4554
- @type Mixed
4555
- */
4556
- response: null
4557
- },
4558
-
4559
- _async = true,
4560
- _url,
4561
- _method,
4562
- _headers = {},
4563
- _user,
4564
- _password,
4565
- _encoding = null,
4566
- _mimeType = null,
4567
-
4568
- // flags
4569
- _sync_flag = false,
4570
- _send_flag = false,
4571
- _upload_events_flag = false,
4572
- _upload_complete_flag = false,
4573
- _error_flag = false,
4574
- _same_origin_flag = false,
4575
-
4576
- // times
4577
- _start_time,
4578
- _timeoutset_time,
4579
-
4580
- _finalMime = null,
4581
- _finalCharset = null,
4582
-
4583
- _options = {},
4584
- _xhr,
4585
- _responseHeaders = '',
4586
- _responseHeadersBag
4587
- ;
4588
-
4589
-
4590
- Basic.extend(this, props, {
4591
- /**
4592
- Unique id of the component
4593
-
4594
- @property uid
4595
- @type String
4596
- */
4597
- uid: Basic.guid('uid_'),
4598
-
4599
- /**
4600
- Target for Upload events
4601
-
4602
- @property upload
4603
- @type XMLHttpRequestUpload
4604
- */
4605
- upload: new XMLHttpRequestUpload(),
4606
-
4607
-
4608
- /**
4609
- Sets the request method, request URL, synchronous flag, request username, and request password.
4610
-
4611
- Throws a "SyntaxError" exception if one of the following is true:
4612
-
4613
- method is not a valid HTTP method.
4614
- url cannot be resolved.
4615
- url contains the "user:password" format in the userinfo production.
4616
- Throws a "SecurityError" exception if method is a case-insensitive match for CONNECT, TRACE or TRACK.
4617
-
4618
- Throws an "InvalidAccessError" exception if one of the following is true:
4619
-
4620
- Either user or password is passed as argument and the origin of url does not match the XMLHttpRequest origin.
4621
- There is an associated XMLHttpRequest document and either the timeout attribute is not zero,
4622
- the withCredentials attribute is true, or the responseType attribute is not the empty string.
4623
-
4624
-
4625
- @method open
4626
- @param {String} method HTTP method to use on request
4627
- @param {String} url URL to request
4628
- @param {Boolean} [async=true] If false request will be done in synchronous manner. Asynchronous by default.
4629
- @param {String} [user] Username to use in HTTP authentication process on server-side
4630
- @param {String} [password] Password to use in HTTP authentication process on server-side
4631
- */
4632
- open: function(method, url, async, user, password) {
4633
- var urlp;
4634
-
4635
- // first two arguments are required
4636
- if (!method || !url) {
4637
- throw new x.DOMException(x.DOMException.SYNTAX_ERR);
4638
- }
4639
-
4640
- // 2 - check if any code point in method is higher than U+00FF or after deflating method it does not match the method
4641
- if (/[\u0100-\uffff]/.test(method) || Encode.utf8_encode(method) !== method) {
4642
- throw new x.DOMException(x.DOMException.SYNTAX_ERR);
4643
- }
4644
-
4645
- // 3
4646
- if (!!~Basic.inArray(method.toUpperCase(), ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT', 'TRACE', 'TRACK'])) {
4647
- _method = method.toUpperCase();
4648
- }
4649
-
4650
-
4651
- // 4 - allowing these methods poses a security risk
4652
- if (!!~Basic.inArray(_method, ['CONNECT', 'TRACE', 'TRACK'])) {
4653
- throw new x.DOMException(x.DOMException.SECURITY_ERR);
4654
- }
4655
-
4656
- // 5
4657
- url = Encode.utf8_encode(url);
4658
-
4659
- // 6 - Resolve url relative to the XMLHttpRequest base URL. If the algorithm returns an error, throw a "SyntaxError".
4660
- urlp = Url.parseUrl(url);
4661
-
4662
- _same_origin_flag = Url.hasSameOrigin(urlp);
4663
-
4664
- // 7 - manually build up absolute url
4665
- _url = Url.resolveUrl(url);
4666
-
4667
- // 9-10, 12-13
4668
- if ((user || password) && !_same_origin_flag) {
4669
- throw new x.DOMException(x.DOMException.INVALID_ACCESS_ERR);
4670
- }
4671
-
4672
- _user = user || urlp.user;
4673
- _password = password || urlp.pass;
4674
-
4675
- // 11
4676
- _async = async || true;
4677
-
4678
- if (_async === false && (_p('timeout') || _p('withCredentials') || _p('responseType') !== "")) {
4679
- throw new x.DOMException(x.DOMException.INVALID_ACCESS_ERR);
4680
- }
4681
-
4682
- // 14 - terminate abort()
4683
-
4684
- // 15 - terminate send()
4685
-
4686
- // 18
4687
- _sync_flag = !_async;
4688
- _send_flag = false;
4689
- _headers = {};
4690
- _reset.call(this);
4691
-
4692
- // 19
4693
- _p('readyState', XMLHttpRequest.OPENED);
4694
-
4695
- // 20
4696
- this.convertEventPropsToHandlers(['readystatechange']); // unify event handlers
4697
- this.dispatchEvent('readystatechange');
4698
- },
4699
-
4700
- /**
4701
- Appends an header to the list of author request headers, or if header is already
4702
- in the list of author request headers, combines its value with value.
4703
-
4704
- Throws an "InvalidStateError" exception if the state is not OPENED or if the send() flag is set.
4705
- Throws a "SyntaxError" exception if header is not a valid HTTP header field name or if value
4706
- is not a valid HTTP header field value.
4707
-
4708
- @method setRequestHeader
4709
- @param {String} header
4710
- @param {String|Number} value
4711
- */
4712
- setRequestHeader: function(header, value) {
4713
- var uaHeaders = [ // these headers are controlled by the user agent
4714
- "accept-charset",
4715
- "accept-encoding",
4716
- "access-control-request-headers",
4717
- "access-control-request-method",
4718
- "connection",
4719
- "content-length",
4720
- "cookie",
4721
- "cookie2",
4722
- "content-transfer-encoding",
4723
- "date",
4724
- "expect",
4725
- "host",
4726
- "keep-alive",
4727
- "origin",
4728
- "referer",
4729
- "te",
4730
- "trailer",
4731
- "transfer-encoding",
4732
- "upgrade",
4733
- "user-agent",
4734
- "via"
4735
- ];
4736
-
4737
- // 1-2
4738
- if (_p('readyState') !== XMLHttpRequest.OPENED || _send_flag) {
4739
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
4740
- }
4741
-
4742
- // 3
4743
- if (/[\u0100-\uffff]/.test(header) || Encode.utf8_encode(header) !== header) {
4744
- throw new x.DOMException(x.DOMException.SYNTAX_ERR);
4745
- }
4746
-
4747
- // 4
4748
- /* this step is seemingly bypassed in browsers, probably to allow various unicode characters in header values
4749
- if (/[\u0100-\uffff]/.test(value) || Encode.utf8_encode(value) !== value) {
4750
- throw new x.DOMException(x.DOMException.SYNTAX_ERR);
4751
- }*/
4752
-
4753
- header = Basic.trim(header).toLowerCase();
4754
-
4755
- // setting of proxy-* and sec-* headers is prohibited by spec
4756
- if (!!~Basic.inArray(header, uaHeaders) || /^(proxy\-|sec\-)/.test(header)) {
4757
- return false;
4758
- }
4759
-
4760
- // camelize
4761
- // browsers lowercase header names (at least for custom ones)
4762
- // header = header.replace(/\b\w/g, function($1) { return $1.toUpperCase(); });
4763
-
4764
- if (!_headers[header]) {
4765
- _headers[header] = value;
4766
- } else {
4767
- // http://tools.ietf.org/html/rfc2616#section-4.2 (last paragraph)
4768
- _headers[header] += ', ' + value;
4769
- }
4770
- return true;
4771
- },
4772
-
4773
- /**
4774
- Returns all headers from the response, with the exception of those whose field name is Set-Cookie or Set-Cookie2.
4775
-
4776
- @method getAllResponseHeaders
4777
- @return {String} reponse headers or empty string
4778
- */
4779
- getAllResponseHeaders: function() {
4780
- return _responseHeaders || '';
4781
- },
4782
-
4783
- /**
4784
- Returns the header field value from the response of which the field name matches header,
4785
- unless the field name is Set-Cookie or Set-Cookie2.
4786
-
4787
- @method getResponseHeader
4788
- @param {String} header
4789
- @return {String} value(s) for the specified header or null
4790
- */
4791
- getResponseHeader: function(header) {
4792
- header = header.toLowerCase();
4793
-
4794
- if (_error_flag || !!~Basic.inArray(header, ['set-cookie', 'set-cookie2'])) {
4795
- return null;
4796
- }
4797
-
4798
- if (_responseHeaders && _responseHeaders !== '') {
4799
- // if we didn't parse response headers until now, do it and keep for later
4800
- if (!_responseHeadersBag) {
4801
- _responseHeadersBag = {};
4802
- Basic.each(_responseHeaders.split(/\r\n/), function(line) {
4803
- var pair = line.split(/:\s+/);
4804
- if (pair.length === 2) { // last line might be empty, omit
4805
- pair[0] = Basic.trim(pair[0]); // just in case
4806
- _responseHeadersBag[pair[0].toLowerCase()] = { // simply to retain header name in original form
4807
- header: pair[0],
4808
- value: Basic.trim(pair[1])
4809
- };
4810
- }
4811
- });
4812
- }
4813
- if (_responseHeadersBag.hasOwnProperty(header)) {
4814
- return _responseHeadersBag[header].header + ': ' + _responseHeadersBag[header].value;
4815
- }
4816
- }
4817
- return null;
4818
- },
4819
-
4820
- /**
4821
- Sets the Content-Type header for the response to mime.
4822
- Throws an "InvalidStateError" exception if the state is LOADING or DONE.
4823
- Throws a "SyntaxError" exception if mime is not a valid media type.
4824
-
4825
- @method overrideMimeType
4826
- @param String mime Mime type to set
4827
- */
4828
- overrideMimeType: function(mime) {
4829
- var matches, charset;
4830
-
4831
- // 1
4832
- if (!!~Basic.inArray(_p('readyState'), [XMLHttpRequest.LOADING, XMLHttpRequest.DONE])) {
4833
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
4834
- }
4835
-
4836
- // 2
4837
- mime = Basic.trim(mime.toLowerCase());
4838
-
4839
- if (/;/.test(mime) && (matches = mime.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))) {
4840
- mime = matches[1];
4841
- if (matches[2]) {
4842
- charset = matches[2];
4843
- }
4844
- }
4845
-
4846
- if (!Mime.mimes[mime]) {
4847
- throw new x.DOMException(x.DOMException.SYNTAX_ERR);
4848
- }
4849
-
4850
- // 3-4
4851
- _finalMime = mime;
4852
- _finalCharset = charset;
4853
- },
4854
-
4855
- /**
4856
- Initiates the request. The optional argument provides the request entity body.
4857
- The argument is ignored if request method is GET or HEAD.
4858
-
4859
- Throws an "InvalidStateError" exception if the state is not OPENED or if the send() flag is set.
4860
-
4861
- @method send
4862
- @param {Blob|Document|String|FormData} [data] Request entity body
4863
- @param {Object} [options] Set of requirements and pre-requisities for runtime initialization
4864
- */
4865
- send: function(data, options) {
4866
- if (Basic.typeOf(options) === 'string') {
4867
- _options = { ruid: options };
4868
- } else if (!options) {
4869
- _options = {};
4870
- } else {
4871
- _options = options;
4872
- }
4873
-
4874
- this.convertEventPropsToHandlers(dispatches);
4875
- this.upload.convertEventPropsToHandlers(dispatches);
4876
-
4877
- // 1-2
4878
- if (this.readyState !== XMLHttpRequest.OPENED || _send_flag) {
4879
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
4880
- }
4881
-
4882
- // 3
4883
- // sending Blob
4884
- if (data instanceof Blob) {
4885
- _options.ruid = data.ruid;
4886
- _mimeType = data.type || 'application/octet-stream';
4887
- }
4888
-
4889
- // FormData
4890
- else if (data instanceof FormData) {
4891
- if (data.hasBlob()) {
4892
- var blob = data.getBlob();
4893
- _options.ruid = blob.ruid;
4894
- _mimeType = blob.type || 'application/octet-stream';
4895
- }
4896
- }
4897
-
4898
- // DOMString
4899
- else if (typeof data === 'string') {
4900
- _encoding = 'UTF-8';
4901
- _mimeType = 'text/plain;charset=UTF-8';
4902
-
4903
- // data should be converted to Unicode and encoded as UTF-8
4904
- data = Encode.utf8_encode(data);
4905
- }
4906
-
4907
- // if withCredentials not set, but requested, set it automatically
4908
- if (!this.withCredentials) {
4909
- this.withCredentials = (_options.required_caps && _options.required_caps.send_browser_cookies) && !_same_origin_flag;
4910
- }
4911
-
4912
- // 4 - storage mutex
4913
- // 5
4914
- _upload_events_flag = (!_sync_flag && this.upload.hasEventListener()); // DSAP
4915
- // 6
4916
- _error_flag = false;
4917
- // 7
4918
- _upload_complete_flag = !data;
4919
- // 8 - Asynchronous steps
4920
- if (!_sync_flag) {
4921
- // 8.1
4922
- _send_flag = true;
4923
- // 8.2
4924
- // this.dispatchEvent('loadstart'); // will be dispatched either by native or runtime xhr
4925
- // 8.3
4926
- //if (!_upload_complete_flag) {
4927
- // this.upload.dispatchEvent('loadstart'); // will be dispatched either by native or runtime xhr
4928
- //}
4929
- }
4930
- // 8.5 - Return the send() method call, but continue running the steps in this algorithm.
4931
- _doXHR.call(this, data);
4932
- },
4933
-
4934
- /**
4935
- Cancels any network activity.
4936
-
4937
- @method abort
4938
- */
4939
- abort: function() {
4940
- _error_flag = true;
4941
- _sync_flag = false;
4942
-
4943
- if (!~Basic.inArray(_p('readyState'), [XMLHttpRequest.UNSENT, XMLHttpRequest.OPENED, XMLHttpRequest.DONE])) {
4944
- _p('readyState', XMLHttpRequest.DONE);
4945
- _send_flag = false;
4946
-
4947
- if (_xhr) {
4948
- _xhr.getRuntime().exec.call(_xhr, 'XMLHttpRequest', 'abort', _upload_complete_flag);
4949
- } else {
4950
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
4951
- }
4952
-
4953
- _upload_complete_flag = true;
4954
- } else {
4955
- _p('readyState', XMLHttpRequest.UNSENT);
4956
- }
4957
- },
4958
-
4959
- destroy: function() {
4960
- if (_xhr) {
4961
- if (Basic.typeOf(_xhr.destroy) === 'function') {
4962
- _xhr.destroy();
4963
- }
4964
- _xhr = null;
4965
- }
4966
-
4967
- this.unbindAll();
4968
-
4969
- if (this.upload) {
4970
- this.upload.unbindAll();
4971
- this.upload = null;
4972
- }
4973
- }
4974
- });
4975
-
4976
- /* this is nice, but maybe too lengthy
4977
-
4978
- // if supported by JS version, set getters/setters for specific properties
4979
- o.defineProperty(this, 'readyState', {
4980
- configurable: false,
4981
-
4982
- get: function() {
4983
- return _p('readyState');
4984
- }
4985
- });
4986
-
4987
- o.defineProperty(this, 'timeout', {
4988
- configurable: false,
4989
-
4990
- get: function() {
4991
- return _p('timeout');
4992
- },
4993
-
4994
- set: function(value) {
4995
-
4996
- if (_sync_flag) {
4997
- throw new x.DOMException(x.DOMException.INVALID_ACCESS_ERR);
4998
- }
4999
-
5000
- // timeout still should be measured relative to the start time of request
5001
- _timeoutset_time = (new Date).getTime();
5002
-
5003
- _p('timeout', value);
5004
- }
5005
- });
5006
-
5007
- // the withCredentials attribute has no effect when fetching same-origin resources
5008
- o.defineProperty(this, 'withCredentials', {
5009
- configurable: false,
5010
-
5011
- get: function() {
5012
- return _p('withCredentials');
5013
- },
5014
-
5015
- set: function(value) {
5016
- // 1-2
5017
- if (!~o.inArray(_p('readyState'), [XMLHttpRequest.UNSENT, XMLHttpRequest.OPENED]) || _send_flag) {
5018
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
5019
- }
5020
-
5021
- // 3-4
5022
- if (_anonymous_flag || _sync_flag) {
5023
- throw new x.DOMException(x.DOMException.INVALID_ACCESS_ERR);
5024
- }
5025
-
5026
- // 5
5027
- _p('withCredentials', value);
5028
- }
5029
- });
5030
-
5031
- o.defineProperty(this, 'status', {
5032
- configurable: false,
5033
-
5034
- get: function() {
5035
- return _p('status');
5036
- }
5037
- });
5038
-
5039
- o.defineProperty(this, 'statusText', {
5040
- configurable: false,
5041
-
5042
- get: function() {
5043
- return _p('statusText');
5044
- }
5045
- });
5046
-
5047
- o.defineProperty(this, 'responseType', {
5048
- configurable: false,
5049
-
5050
- get: function() {
5051
- return _p('responseType');
5052
- },
5053
-
5054
- set: function(value) {
5055
- // 1
5056
- if (!!~o.inArray(_p('readyState'), [XMLHttpRequest.LOADING, XMLHttpRequest.DONE])) {
5057
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
5058
- }
5059
-
5060
- // 2
5061
- if (_sync_flag) {
5062
- throw new x.DOMException(x.DOMException.INVALID_ACCESS_ERR);
5063
- }
5064
-
5065
- // 3
5066
- _p('responseType', value.toLowerCase());
5067
- }
5068
- });
5069
-
5070
- o.defineProperty(this, 'responseText', {
5071
- configurable: false,
5072
-
5073
- get: function() {
5074
- // 1
5075
- if (!~o.inArray(_p('responseType'), ['', 'text'])) {
5076
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
5077
- }
5078
-
5079
- // 2-3
5080
- if (_p('readyState') !== XMLHttpRequest.DONE && _p('readyState') !== XMLHttpRequest.LOADING || _error_flag) {
5081
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
5082
- }
5083
-
5084
- return _p('responseText');
5085
- }
5086
- });
5087
-
5088
- o.defineProperty(this, 'responseXML', {
5089
- configurable: false,
5090
-
5091
- get: function() {
5092
- // 1
5093
- if (!~o.inArray(_p('responseType'), ['', 'document'])) {
5094
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
5095
- }
5096
-
5097
- // 2-3
5098
- if (_p('readyState') !== XMLHttpRequest.DONE || _error_flag) {
5099
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
5100
- }
5101
-
5102
- return _p('responseXML');
5103
- }
5104
- });
5105
-
5106
- o.defineProperty(this, 'response', {
5107
- configurable: false,
5108
-
5109
- get: function() {
5110
- if (!!~o.inArray(_p('responseType'), ['', 'text'])) {
5111
- if (_p('readyState') !== XMLHttpRequest.DONE && _p('readyState') !== XMLHttpRequest.LOADING || _error_flag) {
5112
- return '';
5113
- }
5114
- }
5115
-
5116
- if (_p('readyState') !== XMLHttpRequest.DONE || _error_flag) {
5117
- return null;
5118
- }
5119
-
5120
- return _p('response');
5121
- }
5122
- });
5123
-
5124
- */
5125
-
5126
- function _p(prop, value) {
5127
- if (!props.hasOwnProperty(prop)) {
5128
- return;
5129
- }
5130
- if (arguments.length === 1) { // get
5131
- return Env.can('define_property') ? props[prop] : self[prop];
5132
- } else { // set
5133
- if (Env.can('define_property')) {
5134
- props[prop] = value;
5135
- } else {
5136
- self[prop] = value;
5137
- }
5138
- }
5139
- }
5140
-
5141
- /*
5142
- function _toASCII(str, AllowUnassigned, UseSTD3ASCIIRules) {
5143
- // TODO: http://tools.ietf.org/html/rfc3490#section-4.1
5144
- return str.toLowerCase();
5145
- }
5146
- */
5147
-
5148
-
5149
- function _doXHR(data) {
5150
- var self = this;
5151
-
5152
- _start_time = new Date().getTime();
5153
-
5154
- _xhr = new RuntimeTarget();
5155
-
5156
- function loadEnd() {
5157
- _xhr.destroy();
5158
- _xhr = null;
5159
- self.dispatchEvent('loadend');
5160
- self = null;
5161
- }
5162
-
5163
- function exec(runtime) {
5164
- _xhr.bind('LoadStart', function(e) {
5165
- _p('readyState', XMLHttpRequest.LOADING);
5166
- self.dispatchEvent('readystatechange');
5167
-
5168
- self.dispatchEvent(e);
5169
-
5170
- if (_upload_events_flag) {
5171
- self.upload.dispatchEvent(e);
5172
- }
5173
- });
5174
-
5175
- _xhr.bind('Progress', function(e) {
5176
- if (_p('readyState') !== XMLHttpRequest.LOADING) {
5177
- _p('readyState', XMLHttpRequest.LOADING); // LoadStart unreliable (in Flash for example)
5178
- self.dispatchEvent('readystatechange');
5179
- }
5180
- self.dispatchEvent(e);
5181
- });
5182
-
5183
- _xhr.bind('UploadProgress', function(e) {
5184
- if (_upload_events_flag) {
5185
- self.upload.dispatchEvent({
5186
- type: 'progress',
5187
- lengthComputable: false,
5188
- total: e.total,
5189
- loaded: e.loaded
5190
- });
5191
- }
5192
- });
5193
-
5194
- _xhr.bind('Load', function(e) {
5195
- _p('readyState', XMLHttpRequest.DONE);
5196
- _p('status', Number(runtime.exec.call(_xhr, 'XMLHttpRequest', 'getStatus') || 0));
5197
- _p('statusText', httpCode[_p('status')] || "");
5198
-
5199
- _p('response', runtime.exec.call(_xhr, 'XMLHttpRequest', 'getResponse', _p('responseType')));
5200
-
5201
- if (!!~Basic.inArray(_p('responseType'), ['text', ''])) {
5202
- _p('responseText', _p('response'));
5203
- } else if (_p('responseType') === 'document') {
5204
- _p('responseXML', _p('response'));
5205
- }
5206
-
5207
- _responseHeaders = runtime.exec.call(_xhr, 'XMLHttpRequest', 'getAllResponseHeaders');
5208
-
5209
- self.dispatchEvent('readystatechange');
5210
-
5211
- if (_p('status') > 0) { // status 0 usually means that server is unreachable
5212
- if (_upload_events_flag) {
5213
- self.upload.dispatchEvent(e);
5214
- }
5215
- self.dispatchEvent(e);
5216
- } else {
5217
- _error_flag = true;
5218
- self.dispatchEvent('error');
5219
- }
5220
- loadEnd();
5221
- });
5222
-
5223
- _xhr.bind('Abort', function(e) {
5224
- self.dispatchEvent(e);
5225
- loadEnd();
5226
- });
5227
-
5228
- _xhr.bind('Error', function(e) {
5229
- _error_flag = true;
5230
- _p('readyState', XMLHttpRequest.DONE);
5231
- self.dispatchEvent('readystatechange');
5232
- _upload_complete_flag = true;
5233
- self.dispatchEvent(e);
5234
- loadEnd();
5235
- });
5236
-
5237
- runtime.exec.call(_xhr, 'XMLHttpRequest', 'send', {
5238
- url: _url,
5239
- method: _method,
5240
- async: _async,
5241
- user: _user,
5242
- password: _password,
5243
- headers: _headers,
5244
- mimeType: _mimeType,
5245
- encoding: _encoding,
5246
- responseType: self.responseType,
5247
- withCredentials: self.withCredentials,
5248
- options: _options
5249
- }, data);
5250
- }
5251
-
5252
- // clarify our requirements
5253
- if (typeof(_options.required_caps) === 'string') {
5254
- _options.required_caps = Runtime.parseCaps(_options.required_caps);
5255
- }
5256
-
5257
- _options.required_caps = Basic.extend({}, _options.required_caps, {
5258
- return_response_type: self.responseType
5259
- });
5260
-
5261
- if (data instanceof FormData) {
5262
- _options.required_caps.send_multipart = true;
5263
- }
5264
-
5265
- if (!_same_origin_flag) {
5266
- _options.required_caps.do_cors = true;
5267
- }
5268
-
5269
-
5270
- if (_options.ruid) { // we do not need to wait if we can connect directly
5271
- exec(_xhr.connectRuntime(_options));
5272
- } else {
5273
- _xhr.bind('RuntimeInit', function(e, runtime) {
5274
- exec(runtime);
5275
- });
5276
- _xhr.bind('RuntimeError', function(e, err) {
5277
- self.dispatchEvent('RuntimeError', err);
5278
- });
5279
- _xhr.connectRuntime(_options);
5280
- }
5281
- }
5282
-
5283
-
5284
- function _reset() {
5285
- _p('responseText', "");
5286
- _p('responseXML', null);
5287
- _p('response', null);
5288
- _p('status', 0);
5289
- _p('statusText', "");
5290
- _start_time = _timeoutset_time = null;
5291
- }
5292
- }
5293
-
5294
- XMLHttpRequest.UNSENT = 0;
5295
- XMLHttpRequest.OPENED = 1;
5296
- XMLHttpRequest.HEADERS_RECEIVED = 2;
5297
- XMLHttpRequest.LOADING = 3;
5298
- XMLHttpRequest.DONE = 4;
5299
-
5300
- XMLHttpRequest.prototype = EventTarget.instance;
5301
-
5302
- return XMLHttpRequest;
5303
- });
5304
-
5305
- // Included from: src/javascript/runtime/Transporter.js
5306
-
5307
- /**
5308
- * Transporter.js
5309
- *
5310
- * Copyright 2013, Moxiecode Systems AB
5311
- * Released under GPL License.
5312
- *
5313
- * License: http://www.plupload.com/license
5314
- * Contributing: http://www.plupload.com/contributing
5315
- */
5316
-
5317
- define("moxie/runtime/Transporter", [
5318
- "moxie/core/utils/Basic",
5319
- "moxie/core/utils/Encode",
5320
- "moxie/runtime/RuntimeClient",
5321
- "moxie/core/EventTarget"
5322
- ], function(Basic, Encode, RuntimeClient, EventTarget) {
5323
- function Transporter() {
5324
- var mod, _runtime, _data, _size, _pos, _chunk_size;
5325
-
5326
- RuntimeClient.call(this);
5327
-
5328
- Basic.extend(this, {
5329
- uid: Basic.guid('uid_'),
5330
-
5331
- state: Transporter.IDLE,
5332
-
5333
- result: null,
5334
-
5335
- transport: function(data, type, options) {
5336
- var self = this;
5337
-
5338
- options = Basic.extend({
5339
- chunk_size: 204798
5340
- }, options);
5341
-
5342
- // should divide by three, base64 requires this
5343
- if ((mod = options.chunk_size % 3)) {
5344
- options.chunk_size += 3 - mod;
5345
- }
5346
-
5347
- _chunk_size = options.chunk_size;
5348
-
5349
- _reset.call(this);
5350
- _data = data;
5351
- _size = data.length;
5352
-
5353
- if (Basic.typeOf(options) === 'string' || options.ruid) {
5354
- _run.call(self, type, this.connectRuntime(options));
5355
- } else {
5356
- // we require this to run only once
5357
- var cb = function(e, runtime) {
5358
- self.unbind("RuntimeInit", cb);
5359
- _run.call(self, type, runtime);
5360
- };
5361
- this.bind("RuntimeInit", cb);
5362
- this.connectRuntime(options);
5363
- }
5364
- },
5365
-
5366
- abort: function() {
5367
- var self = this;
5368
-
5369
- self.state = Transporter.IDLE;
5370
- if (_runtime) {
5371
- _runtime.exec.call(self, 'Transporter', 'clear');
5372
- self.trigger("TransportingAborted");
5373
- }
5374
-
5375
- _reset.call(self);
5376
- },
5377
-
5378
-
5379
- destroy: function() {
5380
- this.unbindAll();
5381
- _runtime = null;
5382
- this.disconnectRuntime();
5383
- _reset.call(this);
5384
- }
5385
- });
5386
-
5387
- function _reset() {
5388
- _size = _pos = 0;
5389
- _data = this.result = null;
5390
- }
5391
-
5392
- function _run(type, runtime) {
5393
- var self = this;
5394
-
5395
- _runtime = runtime;
5396
-
5397
- //self.unbind("RuntimeInit");
5398
-
5399
- self.bind("TransportingProgress", function(e) {
5400
- _pos = e.loaded;
5401
-
5402
- if (_pos < _size && Basic.inArray(self.state, [Transporter.IDLE, Transporter.DONE]) === -1) {
5403
- _transport.call(self);
5404
- }
5405
- }, 999);
5406
-
5407
- self.bind("TransportingComplete", function() {
5408
- _pos = _size;
5409
- self.state = Transporter.DONE;
5410
- _data = null; // clean a bit
5411
- self.result = _runtime.exec.call(self, 'Transporter', 'getAsBlob', type || '');
5412
- }, 999);
5413
-
5414
- self.state = Transporter.BUSY;
5415
- self.trigger("TransportingStarted");
5416
- _transport.call(self);
5417
- }
5418
-
5419
- function _transport() {
5420
- var self = this,
5421
- chunk,
5422
- bytesLeft = _size - _pos;
5423
-
5424
- if (_chunk_size > bytesLeft) {
5425
- _chunk_size = bytesLeft;
5426
- }
5427
-
5428
- chunk = Encode.btoa(_data.substr(_pos, _chunk_size));
5429
- _runtime.exec.call(self, 'Transporter', 'receive', chunk, _size);
5430
- }
5431
- }
5432
-
5433
- Transporter.IDLE = 0;
5434
- Transporter.BUSY = 1;
5435
- Transporter.DONE = 2;
5436
-
5437
- Transporter.prototype = EventTarget.instance;
5438
-
5439
- return Transporter;
5440
- });
5441
-
5442
- // Included from: src/javascript/image/Image.js
5443
-
5444
- /**
5445
- * Image.js
5446
- *
5447
- * Copyright 2013, Moxiecode Systems AB
5448
- * Released under GPL License.
5449
- *
5450
- * License: http://www.plupload.com/license
5451
- * Contributing: http://www.plupload.com/contributing
5452
- */
5453
-
5454
- define("moxie/image/Image", [
5455
- "moxie/core/utils/Basic",
5456
- "moxie/core/utils/Dom",
5457
- "moxie/core/Exceptions",
5458
- "moxie/file/FileReaderSync",
5459
- "moxie/xhr/XMLHttpRequest",
5460
- "moxie/runtime/Runtime",
5461
- "moxie/runtime/RuntimeClient",
5462
- "moxie/runtime/Transporter",
5463
- "moxie/core/utils/Env",
5464
- "moxie/core/EventTarget",
5465
- "moxie/file/Blob",
5466
- "moxie/file/File",
5467
- "moxie/core/utils/Encode"
5468
- ], function(Basic, Dom, x, FileReaderSync, XMLHttpRequest, Runtime, RuntimeClient, Transporter, Env, EventTarget, Blob, File, Encode) {
5469
- /**
5470
- Image preloading and manipulation utility. Additionally it provides access to image meta info (Exif, GPS) and raw binary data.
5471
-
5472
- @class Image
5473
- @constructor
5474
- @extends EventTarget
5475
- */
5476
- var dispatches = [
5477
- 'progress',
5478
-
5479
- /**
5480
- Dispatched when loading is complete.
5481
-
5482
- @event load
5483
- @param {Object} event
5484
- */
5485
- 'load',
5486
-
5487
- 'error',
5488
-
5489
- /**
5490
- Dispatched when resize operation is complete.
5491
-
5492
- @event resize
5493
- @param {Object} event
5494
- */
5495
- 'resize',
5496
-
5497
- /**
5498
- Dispatched when visual representation of the image is successfully embedded
5499
- into the corresponsing container.
5500
-
5501
- @event embedded
5502
- @param {Object} event
5503
- */
5504
- 'embedded'
5505
- ];
5506
-
5507
- function Image() {
5508
- RuntimeClient.call(this);
5509
-
5510
- Basic.extend(this, {
5511
- /**
5512
- Unique id of the component
5513
-
5514
- @property uid
5515
- @type {String}
5516
- */
5517
- uid: Basic.guid('uid_'),
5518
-
5519
- /**
5520
- Unique id of the connected runtime, if any.
5521
-
5522
- @property ruid
5523
- @type {String}
5524
- */
5525
- ruid: null,
5526
-
5527
- /**
5528
- Name of the file, that was used to create an image, if available. If not equals to empty string.
5529
-
5530
- @property name
5531
- @type {String}
5532
- @default ""
5533
- */
5534
- name: "",
5535
-
5536
- /**
5537
- Size of the image in bytes. Actual value is set only after image is preloaded.
5538
-
5539
- @property size
5540
- @type {Number}
5541
- @default 0
5542
- */
5543
- size: 0,
5544
-
5545
- /**
5546
- Width of the image. Actual value is set only after image is preloaded.
5547
-
5548
- @property width
5549
- @type {Number}
5550
- @default 0
5551
- */
5552
- width: 0,
5553
-
5554
- /**
5555
- Height of the image. Actual value is set only after image is preloaded.
5556
-
5557
- @property height
5558
- @type {Number}
5559
- @default 0
5560
- */
5561
- height: 0,
5562
-
5563
- /**
5564
- Mime type of the image. Currently only image/jpeg and image/png are supported. Actual value is set only after image is preloaded.
5565
-
5566
- @property type
5567
- @type {String}
5568
- @default ""
5569
- */
5570
- type: "",
5571
-
5572
- /**
5573
- Holds meta info (Exif, GPS). Is populated only for image/jpeg. Actual value is set only after image is preloaded.
5574
-
5575
- @property meta
5576
- @type {Object}
5577
- @default {}
5578
- */
5579
- meta: {},
5580
-
5581
- /**
5582
- Alias for load method, that takes another mOxie.Image object as a source (see load).
5583
-
5584
- @method clone
5585
- @param {Image} src Source for the image
5586
- @param {Boolean} [exact=false] Whether to activate in-depth clone mode
5587
- */
5588
- clone: function() {
5589
- this.load.apply(this, arguments);
5590
- },
5591
-
5592
- /**
5593
- Loads image from various sources. Currently the source for new image can be: mOxie.Image, mOxie.Blob/mOxie.File,
5594
- native Blob/File, dataUrl or URL. Depending on the type of the source, arguments - differ. When source is URL,
5595
- Image will be downloaded from remote destination and loaded in memory.
5596
-
5597
- @example
5598
- var img = new mOxie.Image();
5599
- img.onload = function() {
5600
- var blob = img.getAsBlob();
5601
-
5602
- var formData = new mOxie.FormData();
5603
- formData.append('file', blob);
5604
-
5605
- var xhr = new mOxie.XMLHttpRequest();
5606
- xhr.onload = function() {
5607
- // upload complete
5608
- };
5609
- xhr.open('post', 'upload.php');
5610
- xhr.send(formData);
5611
- };
5612
- img.load("http://www.moxiecode.com/images/mox-logo.jpg"); // notice file extension (.jpg)
5613
-
5614
-
5615
- @method load
5616
- @param {Image|Blob|File|String} src Source for the image
5617
- @param {Boolean|Object} [mixed]
5618
- */
5619
- load: function() {
5620
- // this is here because to bind properly we need an uid first, which is created above
5621
- this.bind('Load Resize', function() {
5622
- _updateInfo.call(this);
5623
- }, 999);
5624
-
5625
- this.convertEventPropsToHandlers(dispatches);
5626
-
5627
- _load.apply(this, arguments);
5628
- },
5629
-
5630
- /**
5631
- Downsizes the image to fit the specified width/height. If crop is supplied, image will be cropped to exact dimensions.
5632
-
5633
- @method downsize
5634
- @param {Number} width Resulting width
5635
- @param {Number} [height=width] Resulting height (optional, if not supplied will default to width)
5636
- @param {Boolean} [crop=false] Whether to crop the image to exact dimensions
5637
- @param {Boolean} [preserveHeaders=true] Whether to preserve meta headers (on JPEGs after resize)
5638
- */
5639
- downsize: function(width, height, crop, preserveHeaders) {
5640
- try {
5641
- if (!this.size) { // only preloaded image objects can be used as source
5642
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
5643
- }
5644
-
5645
- // no way to reliably intercept the crash due to high resolution, so we simply avoid it
5646
- if (this.width > Image.MAX_RESIZE_WIDTH || this.height > Image.MAX_RESIZE_HEIGHT) {
5647
- throw new x.ImageError(x.ImageError.MAX_RESOLUTION_ERR);
5648
- }
5649
-
5650
- if (!width && !height || Basic.typeOf(crop) === 'undefined') {
5651
- crop = false;
5652
- }
5653
-
5654
- width = width || this.width;
5655
- height = height || this.height;
5656
-
5657
- preserveHeaders = (Basic.typeOf(preserveHeaders) === 'undefined' ? true : !!preserveHeaders);
5658
-
5659
- this.getRuntime().exec.call(this, 'Image', 'downsize', width, height, crop, preserveHeaders);
5660
- } catch(ex) {
5661
- // for now simply trigger error event
5662
- this.trigger('error', ex);
5663
- }
5664
- },
5665
-
5666
- /**
5667
- Alias for downsize(width, height, true). (see downsize)
5668
-
5669
- @method crop
5670
- @param {Number} width Resulting width
5671
- @param {Number} [height=width] Resulting height (optional, if not supplied will default to width)
5672
- @param {Boolean} [preserveHeaders=true] Whether to preserve meta headers (on JPEGs after resize)
5673
- */
5674
- crop: function(width, height, preserveHeaders) {
5675
- this.downsize(width, height, true, preserveHeaders);
5676
- },
5677
-
5678
- getAsCanvas: function() {
5679
- if (!Env.can('create_canvas')) {
5680
- throw new x.RuntimeError(x.RuntimeError.NOT_SUPPORTED_ERR);
5681
- }
5682
-
5683
- var runtime = this.connectRuntime(this.ruid);
5684
- return runtime.exec.call(this, 'Image', 'getAsCanvas');
5685
- },
5686
-
5687
- /**
5688
- Retrieves image in it's current state as mOxie.Blob object. Cannot be run on empty or image in progress (throws
5689
- DOMException.INVALID_STATE_ERR).
5690
-
5691
- @method getAsBlob
5692
- @param {String} [type="image/jpeg"] Mime type of resulting blob. Can either be image/jpeg or image/png
5693
- @param {Number} [quality=90] Applicable only together with mime type image/jpeg
5694
- @return {Blob} Image as Blob
5695
- */
5696
- getAsBlob: function(type, quality) {
5697
- if (!this.size) {
5698
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
5699
- }
5700
-
5701
- if (!type) {
5702
- type = 'image/jpeg';
5703
- }
5704
-
5705
- if (type === 'image/jpeg' && !quality) {
5706
- quality = 90;
5707
- }
5708
-
5709
- return this.getRuntime().exec.call(this, 'Image', 'getAsBlob', type, quality);
5710
- },
5711
-
5712
- /**
5713
- Retrieves image in it's current state as dataURL string. Cannot be run on empty or image in progress (throws
5714
- DOMException.INVALID_STATE_ERR).
5715
-
5716
- @method getAsDataURL
5717
- @param {String} [type="image/jpeg"] Mime type of resulting blob. Can either be image/jpeg or image/png
5718
- @param {Number} [quality=90] Applicable only together with mime type image/jpeg
5719
- @return {String} Image as dataURL string
5720
- */
5721
- getAsDataURL: function(type, quality) {
5722
- if (!this.size) {
5723
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
5724
- }
5725
- return this.getRuntime().exec.call(this, 'Image', 'getAsDataURL', type, quality);
5726
- },
5727
-
5728
- /**
5729
- Retrieves image in it's current state as binary string. Cannot be run on empty or image in progress (throws
5730
- DOMException.INVALID_STATE_ERR).
5731
-
5732
- @method getAsBinaryString
5733
- @param {String} [type="image/jpeg"] Mime type of resulting blob. Can either be image/jpeg or image/png
5734
- @param {Number} [quality=90] Applicable only together with mime type image/jpeg
5735
- @return {String} Image as binary string
5736
- */
5737
- getAsBinaryString: function(type, quality) {
5738
- var dataUrl = this.getAsDataURL(type, quality);
5739
- return Encode.atob(dataUrl.substring(dataUrl.indexOf('base64,') + 7));
5740
- },
5741
-
5742
- /**
5743
- Embeds the image, or better to say, it's visual representation into the specified node. Depending on the runtime
5744
- in use, might be a canvas, or image (actual ) element or shim object (Flash or SilverLight - very rare, used for
5745
- legacy browsers that do not have canvas or proper dataURI support).
5746
-
5747
- @method embed
5748
- @param {DOMElement} el DOM element to insert the image object into
5749
- @param {Object} options Set of key/value pairs controlling the mime type, dimensions and cropping factor of resulting
5750
- representation
5751
- */
5752
- embed: function(el) {
5753
- var self = this
5754
- , imgCopy
5755
- , type, quality, crop
5756
- , options = arguments[1] || {}
5757
- , width = this.width
5758
- , height = this.height
5759
- , runtime // this has to be outside of all the closures to contain proper runtime
5760
- ;
5761
-
5762
- function onResize() {
5763
- // if possible, embed a canvas element directly
5764
- if (Env.can('create_canvas')) {
5765
- var canvas = imgCopy.getAsCanvas();
5766
- if (canvas) {
5767
- el.appendChild(canvas);
5768
- canvas = null;
5769
- imgCopy.destroy();
5770
- self.trigger('embedded');
5771
- return;
5772
- }
5773
- }
5774
-
5775
- var dataUrl = imgCopy.getAsDataURL(type, quality);
5776
- if (!dataUrl) {
5777
- throw new x.ImageError(x.ImageError.WRONG_FORMAT);
5778
- }
5779
-
5780
- if (Env.can('use_data_uri_of', dataUrl.length)) {
5781
- el.innerHTML = '<img src="' + dataUrl + '" width="' + imgCopy.width + '" height="' + imgCopy.height + '" />';
5782
- imgCopy.destroy();
5783
- self.trigger('embedded');
5784
- } else {
5785
- var tr = new Transporter();
5786
-
5787
- tr.bind("TransportingComplete", function() {
5788
- runtime = self.connectRuntime(this.result.ruid);
5789
-
5790
- self.bind("Embedded", function() {
5791
- // position and size properly
5792
- Basic.extend(runtime.getShimContainer().style, {
5793
- //position: 'relative',
5794
- top: '0px',
5795
- left: '0px',
5796
- width: imgCopy.width + 'px',
5797
- height: imgCopy.height + 'px'
5798
- });
5799
-
5800
- // some shims (Flash/SilverLight) reinitialize, if parent element is hidden, reordered or it's
5801
- // position type changes (in Gecko), but since we basically need this only in IEs 6/7 and
5802
- // sometimes 8 and they do not have this problem, we can comment this for now
5803
- /*tr.bind("RuntimeInit", function(e, runtime) {
5804
- tr.destroy();
5805
- runtime.destroy();
5806
- onResize.call(self); // re-feed our image data
5807
- });*/
5808
-
5809
- runtime = null;
5810
- }, 999);
5811
-
5812
- runtime.exec.call(self, "ImageView", "display", this.result.uid, width, height);
5813
- imgCopy.destroy();
5814
- });
5815
-
5816
- tr.transport(Encode.atob(dataUrl.substring(dataUrl.indexOf('base64,') + 7)), type, Basic.extend({}, options, {
5817
- required_caps: {
5818
- display_media: true
5819
- },
5820
- runtime_order: 'flash,silverlight',
5821
- container: el
5822
- }));
5823
- }
5824
- }
5825
-
5826
- try {
5827
- if (!(el = Dom.get(el))) {
5828
- throw new x.DOMException(x.DOMException.INVALID_NODE_TYPE_ERR);
5829
- }
5830
-
5831
- if (!this.size) { // only preloaded image objects can be used as source
5832
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
5833
- }
5834
-
5835
- if (this.width > Image.MAX_RESIZE_WIDTH || this.height > Image.MAX_RESIZE_HEIGHT) {
5836
- throw new x.ImageError(x.ImageError.MAX_RESOLUTION_ERR);
5837
- }
5838
-
5839
- type = options.type || this.type || 'image/jpeg';
5840
- quality = options.quality || 90;
5841
- crop = Basic.typeOf(options.crop) !== 'undefined' ? options.crop : false;
5842
-
5843
- // figure out dimensions for the thumb
5844
- if (options.width) {
5845
- width = options.width;
5846
- height = options.height || width;
5847
- } else {
5848
- // if container element has > 0 dimensions, take them
5849
- var dimensions = Dom.getSize(el);
5850
- if (dimensions.w && dimensions.h) { // both should be > 0
5851
- width = dimensions.w;
5852
- height = dimensions.h;
5853
- }
5854
- }
5855
-
5856
- imgCopy = new Image();
5857
-
5858
- imgCopy.bind("Resize", function() {
5859
- onResize.call(self);
5860
- });
5861
-
5862
- imgCopy.bind("Load", function() {
5863
- imgCopy.downsize(width, height, crop, false);
5864
- });
5865
-
5866
- imgCopy.clone(this, false);
5867
-
5868
- return imgCopy;
5869
- } catch(ex) {
5870
- // for now simply trigger error event
5871
- this.trigger('error', ex);
5872
- }
5873
- },
5874
-
5875
- /**
5876
- Properly destroys the image and frees resources in use. If any. Recommended way to dispose mOxie.Image object.
5877
-
5878
- @method destroy
5879
- */
5880
- destroy: function() {
5881
- if (this.ruid) {
5882
- this.getRuntime().exec.call(this, 'Image', 'destroy');
5883
- this.disconnectRuntime();
5884
- }
5885
- this.unbindAll();
5886
- }
5887
- });
5888
-
5889
-
5890
- function _updateInfo(info) {
5891
- if (!info) {
5892
- info = this.getRuntime().exec.call(this, 'Image', 'getInfo');
5893
- }
5894
-
5895
- this.size = info.size;
5896
- this.width = info.width;
5897
- this.height = info.height;
5898
- this.type = info.type;
5899
- this.meta = info.meta;
5900
-
5901
- // update file name, only if empty
5902
- if (this.name === '') {
5903
- this.name = info.name;
5904
- }
5905
- }
5906
-
5907
-
5908
- function _load(src) {
5909
- var srcType = Basic.typeOf(src);
5910
-
5911
- try {
5912
- // if source is Image
5913
- if (src instanceof Image) {
5914
- if (!src.size) { // only preloaded image objects can be used as source
5915
- throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);
5916
- }
5917
- _loadFromImage.apply(this, arguments);
5918
- }
5919
- // if source is o.Blob/o.File
5920
- else if (src instanceof Blob) {
5921
- if (!~Basic.inArray(src.type, ['image/jpeg', 'image/png'])) {
5922
- throw new x.ImageError(x.ImageError.WRONG_FORMAT);
5923
- }
5924
- _loadFromBlob.apply(this, arguments);
5925
- }
5926
- // if native blob/file
5927
- else if (Basic.inArray(srcType, ['blob', 'file']) !== -1) {
5928
- _load.call(this, new File(null, src), arguments[1]);
5929
- }
5930
- // if String
5931
- else if (srcType === 'string') {
5932
- // if dataUrl String
5933
- if (/^data:[^;]*;base64,/.test(src)) {
5934
- _load.call(this, new Blob(null, { data: src }), arguments[1]);
5935
- }
5936
- // else assume Url, either relative or absolute
5937
- else {
5938
- _loadFromUrl.apply(this, arguments);
5939
- }
5940
- }
5941
- // if source seems to be an img node
5942
- else if (srcType === 'node' && src.nodeName.toLowerCase() === 'img') {
5943
- _load.call(this, src.src, arguments[1]);
5944
- }
5945
- else {
5946
- throw new x.DOMException(x.DOMException.TYPE_MISMATCH_ERR);
5947
- }
5948
- } catch(ex) {
5949
- // for now simply trigger error event
5950
- this.trigger('error', ex);
5951
- }
5952
- }
5953
-
5954
-
5955
- function _loadFromImage(img, exact) {
5956
- var runtime = this.connectRuntime(img.ruid);
5957
- this.ruid = runtime.uid;
5958
- runtime.exec.call(this, 'Image', 'loadFromImage', img, (Basic.typeOf(exact) === 'undefined' ? true : exact));
5959
- }
5960
-
5961
-
5962
- function _loadFromBlob(blob, options) {
5963
- var self = this;
5964
-
5965
- self.name = blob.name || '';
5966
-
5967
- function exec(runtime) {
5968
- self.ruid = runtime.uid;
5969
- runtime.exec.call(self, 'Image', 'loadFromBlob', blob);
5970
- }
5971
-
5972
- if (blob.isDetached()) {
5973
- this.bind('RuntimeInit', function(e, runtime) {
5974
- exec(runtime);
5975
- });
5976
-
5977
- // convert to object representation
5978
- if (options && typeof(options.required_caps) === 'string') {
5979
- options.required_caps = Runtime.parseCaps(options.required_caps);
5980
- }
5981
-
5982
- this.connectRuntime(Basic.extend({
5983
- required_caps: {
5984
- access_image_binary: true,
5985
- resize_image: true
5986
- }
5987
- }, options));
5988
- } else {
5989
- exec(this.connectRuntime(blob.ruid));
5990
- }
5991
- }
5992
-
5993
-
5994
- function _loadFromUrl(url, options) {
5995
- var self = this, xhr;
5996
-
5997
- xhr = new XMLHttpRequest();
5998
-
5999
- xhr.open('get', url);
6000
- xhr.responseType = 'blob';
6001
-
6002
- xhr.onprogress = function(e) {
6003
- self.trigger(e);
6004
- };
6005
-
6006
- xhr.onload = function() {
6007
- _loadFromBlob.call(self, xhr.response, true);
6008
- };
6009
-
6010
- xhr.onerror = function(e) {
6011
- self.trigger(e);
6012
- };
6013
-
6014
- xhr.onloadend = function() {
6015
- xhr.destroy();
6016
- };
6017
-
6018
- xhr.bind('RuntimeError', function(e, err) {
6019
- self.trigger('RuntimeError', err);
6020
- });
6021
-
6022
- xhr.send(null, options);
6023
- }
6024
- }
6025
-
6026
- // virtual world will crash on you if image has a resolution higher than this:
6027
- Image.MAX_RESIZE_WIDTH = 6500;
6028
- Image.MAX_RESIZE_HEIGHT = 6500;
6029
-
6030
- Image.prototype = EventTarget.instance;
6031
-
6032
- return Image;
6033
- });
6034
-
6035
- // Included from: src/javascript/runtime/html5/Runtime.js
6036
-
6037
- /**
6038
- * Runtime.js
6039
- *
6040
- * Copyright 2013, Moxiecode Systems AB
6041
- * Released under GPL License.
6042
- *
6043
- * License: http://www.plupload.com/license
6044
- * Contributing: http://www.plupload.com/contributing
6045
- */
6046
-
6047
- /*global File:true */
6048
-
6049
- /**
6050
- Defines constructor for HTML5 runtime.
6051
-
6052
- @class moxie/runtime/html5/Runtime
6053
- @private
6054
- */
6055
- define("moxie/runtime/html5/Runtime", [
6056
- "moxie/core/utils/Basic",
6057
- "moxie/core/Exceptions",
6058
- "moxie/runtime/Runtime",
6059
- "moxie/core/utils/Env"
6060
- ], function(Basic, x, Runtime, Env) {
6061
-
6062
- var type = "html5", extensions = {};
6063
-
6064
- function Html5Runtime(options) {
6065
- var I = this
6066
- , Test = Runtime.capTest
6067
- , True = Runtime.capTrue
6068
- ;
6069
-
6070
- var caps = Basic.extend({
6071
- access_binary: Test(window.FileReader || window.File && window.File.getAsDataURL),
6072
- access_image_binary: function() {
6073
- return I.can('access_binary') && !!extensions.Image;
6074
- },
6075
- display_media: Test(Env.can('create_canvas') || Env.can('use_data_uri_over32kb')),
6076
- do_cors: Test(window.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest()),
6077
- drag_and_drop: Test(function() {
6078
- // this comes directly from Modernizr: http://www.modernizr.com/
6079
- var div = document.createElement('div');
6080
- // IE has support for drag and drop since version 5, but doesn't support dropping files from desktop
6081
- return (('draggable' in div) || ('ondragstart' in div && 'ondrop' in div)) && (Env.browser !== 'IE' || Env.version > 9);
6082
- }()),
6083
- filter_by_extension: Test(function() { // if you know how to feature-detect this, please suggest
6084
- return (Env.browser === 'Chrome' && Env.version >= 28) || (Env.browser === 'IE' && Env.version >= 10);
6085
- }()),
6086
- return_response_headers: True,
6087
- return_response_type: function(responseType) {
6088
- if (responseType === 'json' && !!window.JSON) { // we can fake this one even if it's not supported
6089
- return true;
6090
- }
6091
- return Env.can('return_response_type', responseType);
6092
- },
6093
- return_status_code: True,
6094
- report_upload_progress: Test(window.XMLHttpRequest && new XMLHttpRequest().upload),
6095
- resize_image: function() {
6096
- return I.can('access_binary') && Env.can('create_canvas');
6097
- },
6098
- select_file: function() {
6099
- return Env.can('use_fileinput') && window.File;
6100
- },
6101
- select_folder: function() {
6102
- return I.can('select_file') && Env.browser === 'Chrome' && Env.version >= 21;
6103
- },
6104
- select_multiple: function() {
6105
- // it is buggy on Safari Windows and iOS
6106
- return I.can('select_file') &&
6107
- !(Env.browser === 'Safari' && Env.os === 'Windows') &&
6108
- !(Env.os === 'iOS' && Env.verComp(Env.osVersion, "7.0.4", '<'));
6109
- },
6110
- send_binary_string: Test(window.XMLHttpRequest && (new XMLHttpRequest().sendAsBinary || (window.Uint8Array && window.ArrayBuffer))),
6111
- send_custom_headers: Test(window.XMLHttpRequest),
6112
- send_multipart: function() {
6113
- return !!(window.XMLHttpRequest && new XMLHttpRequest().upload && window.FormData) || I.can('send_binary_string');
6114
- },
6115
- slice_blob: Test(window.File && (File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice)),
6116
- stream_upload: function(){
6117
- return I.can('slice_blob') && I.can('send_multipart');
6118
- },
6119
- summon_file_dialog: Test(function() { // yeah... some dirty sniffing here...
6120
- return (Env.browser === 'Firefox' && Env.version >= 4) ||
6121
- (Env.browser === 'Opera' && Env.version >= 12) ||
6122
- (Env.browser === 'IE' && Env.version >= 10) ||
6123
- !!~Basic.inArray(Env.browser, ['Chrome', 'Safari']);
6124
- }()),
6125
- upload_filesize: True
6126
- },
6127
- arguments[2]
6128
- );
6129
-
6130
- Runtime.call(this, options, (arguments[1] || type), caps);
6131
-
6132
-
6133
- Basic.extend(this, {
6134
-
6135
- init : function() {
6136
- this.trigger("Init");
6137
- },
6138
-
6139
- destroy: (function(destroy) { // extend default destroy method
6140
- return function() {
6141
- destroy.call(I);
6142
- destroy = I = null;
6143
- };
6144
- }(this.destroy))
6145
- });
6146
-
6147
- Basic.extend(this.getShim(), extensions);
6148
- }
6149
-
6150
- Runtime.addConstructor(type, Html5Runtime);
6151
-
6152
- return extensions;
6153
- });
6154
-
6155
- // Included from: src/javascript/runtime/html5/file/Blob.js
6156
-
6157
- /**
6158
- * Blob.js
6159
- *
6160
- * Copyright 2013, Moxiecode Systems AB
6161
- * Released under GPL License.
6162
- *
6163
- * License: http://www.plupload.com/license
6164
- * Contributing: http://www.plupload.com/contributing
6165
- */
6166
-
6167
- /**
6168
- @class moxie/runtime/html5/file/Blob
6169
- @private
6170
- */
6171
- define("moxie/runtime/html5/file/Blob", [
6172
- "moxie/runtime/html5/Runtime",
6173
- "moxie/file/Blob"
6174
- ], function(extensions, Blob) {
6175
-
6176
- function HTML5Blob() {
6177
- function w3cBlobSlice(blob, start, end) {
6178
- var blobSlice;
6179
-
6180
- if (window.File.prototype.slice) {
6181
- try {
6182
- blob.slice(); // depricated version will throw WRONG_ARGUMENTS_ERR exception
6183
- return blob.slice(start, end);
6184
- } catch (e) {
6185
- // depricated slice method
6186
- return blob.slice(start, end - start);
6187
- }
6188
- // slice method got prefixed: https://bugzilla.mozilla.org/show_bug.cgi?id=649672
6189
- } else if ((blobSlice = window.File.prototype.webkitSlice || window.File.prototype.mozSlice)) {
6190
- return blobSlice.call(blob, start, end);
6191
- } else {
6192
- return null; // or throw some exception
6193
- }
6194
- }
6195
-
6196
- this.slice = function() {
6197
- return new Blob(this.getRuntime().uid, w3cBlobSlice.apply(this, arguments));
6198
- };
6199
- }
6200
-
6201
- return (extensions.Blob = HTML5Blob);
6202
- });
6203
-
6204
- // Included from: src/javascript/core/utils/Events.js
6205
-
6206
- /**
6207
- * Events.js
6208
- *
6209
- * Copyright 2013, Moxiecode Systems AB
6210
- * Released under GPL License.
6211
- *
6212
- * License: http://www.plupload.com/license
6213
- * Contributing: http://www.plupload.com/contributing
6214
- */
6215
-
6216
- define('moxie/core/utils/Events', [
6217
- 'moxie/core/utils/Basic'
6218
- ], function(Basic) {
6219
- var eventhash = {}, uid = 'moxie_' + Basic.guid();
6220
-
6221
- // IE W3C like event funcs
6222
- function preventDefault() {
6223
- this.returnValue = false;
6224
- }
6225
-
6226
- function stopPropagation() {
6227
- this.cancelBubble = true;
6228
- }
6229
-
6230
- /**
6231
- Adds an event handler to the specified object and store reference to the handler
6232
- in objects internal Plupload registry (@see removeEvent).
6233
-
6234
- @method addEvent
6235
- @for Utils
6236
- @static
6237
- @param {Object} obj DOM element like object to add handler to.
6238
- @param {String} name Name to add event listener to.
6239
- @param {Function} callback Function to call when event occurs.
6240
- @param {String} [key] that might be used to add specifity to the event record.
6241
- */
6242
- var addEvent = function(obj, name, callback, key) {
6243
- var func, events;
6244
-
6245
- name = name.toLowerCase();
6246
-
6247
- // Add event listener
6248
- if (obj.addEventListener) {
6249
- func = callback;
6250
-
6251
- obj.addEventListener(name, func, false);
6252
- } else if (obj.attachEvent) {
6253
- func = function() {
6254
- var evt = window.event;
6255
-
6256
- if (!evt.target) {
6257
- evt.target = evt.srcElement;
6258
- }
6259
-
6260
- evt.preventDefault = preventDefault;
6261
- evt.stopPropagation = stopPropagation;
6262
-
6263
- callback(evt);
6264
- };
6265
-
6266
- obj.attachEvent('on' + name, func);
6267
- }
6268
-
6269
- // Log event handler to objects internal mOxie registry
6270
- if (!obj[uid]) {
6271
- obj[uid] = Basic.guid();
6272
- }
6273
-
6274
- if (!eventhash.hasOwnProperty(obj[uid])) {
6275
- eventhash[obj[uid]] = {};
6276
- }
6277
-
6278
- events = eventhash[obj[uid]];
6279
-
6280
- if (!events.hasOwnProperty(name)) {
6281
- events[name] = [];
6282
- }
6283
-
6284
- events[name].push({
6285
- func: func,
6286
- orig: callback, // store original callback for IE
6287
- key: key
6288
- });
6289
- };
6290
-
6291
-
6292
- /**
6293
- Remove event handler from the specified object. If third argument (callback)
6294
- is not specified remove all events with the specified name.
6295
-
6296
- @method removeEvent
6297
- @static
6298
- @param {Object} obj DOM element to remove event listener(s) from.
6299
- @param {String} name Name of event listener to remove.
6300
- @param {Function|String} [callback] might be a callback or unique key to match.
6301
- */
6302
- var removeEvent = function(obj, name, callback) {
6303
- var type, undef;
6304
-
6305
- name = name.toLowerCase();
6306
-
6307
- if (obj[uid] && eventhash[obj[uid]] && eventhash[obj[uid]][name]) {
6308
- type = eventhash[obj[uid]][name];
6309
- } else {
6310
- return;
6311
- }
6312
-
6313
- for (var i = type.length - 1; i >= 0; i--) {
6314
- // undefined or not, key should match
6315
- if (type[i].orig === callback || type[i].key === callback) {
6316
- if (obj.removeEventListener) {
6317
- obj.removeEventListener(name, type[i].func, false);
6318
- } else if (obj.detachEvent) {
6319
- obj.detachEvent('on'+name, type[i].func);
6320
- }
6321
-
6322
- type[i].orig = null;
6323
- type[i].func = null;
6324
- type.splice(i, 1);
6325
-
6326
- // If callback was passed we are done here, otherwise proceed
6327
- if (callback !== undef) {
6328
- break;
6329
- }
6330
- }
6331
- }
6332
-
6333
- // If event array got empty, remove it
6334
- if (!type.length) {
6335
- delete eventhash[obj[uid]][name];
6336
- }
6337
-
6338
- // If mOxie registry has become empty, remove it
6339
- if (Basic.isEmptyObj(eventhash[obj[uid]])) {
6340
- delete eventhash[obj[uid]];
6341
-
6342
- // IE doesn't let you remove DOM object property with - delete
6343
- try {
6344
- delete obj[uid];
6345
- } catch(e) {
6346
- obj[uid] = undef;
6347
- }
6348
- }
6349
- };
6350
-
6351
-
6352
- /**
6353
- Remove all kind of events from the specified object
6354
-
6355
- @method removeAllEvents
6356
- @static
6357
- @param {Object} obj DOM element to remove event listeners from.
6358
- @param {String} [key] unique key to match, when removing events.
6359
- */
6360
- var removeAllEvents = function(obj, key) {
6361
- if (!obj || !obj[uid]) {
6362
- return;
6363
- }
6364
-
6365
- Basic.each(eventhash[obj[uid]], function(events, name) {
6366
- removeEvent(obj, name, key);
6367
- });
6368
- };
6369
-
6370
- return {
6371
- addEvent: addEvent,
6372
- removeEvent: removeEvent,
6373
- removeAllEvents: removeAllEvents
6374
- };
6375
- });
6376
-
6377
- // Included from: src/javascript/runtime/html5/file/FileInput.js
6378
-
6379
- /**
6380
- * FileInput.js
6381
- *
6382
- * Copyright 2013, Moxiecode Systems AB
6383
- * Released under GPL License.
6384
- *
6385
- * License: http://www.plupload.com/license
6386
- * Contributing: http://www.plupload.com/contributing
6387
- */
6388
-
6389
- /**
6390
- @class moxie/runtime/html5/file/FileInput
6391
- @private
6392
- */
6393
- define("moxie/runtime/html5/file/FileInput", [
6394
- "moxie/runtime/html5/Runtime",
6395
- "moxie/core/utils/Basic",
6396
- "moxie/core/utils/Dom",
6397
- "moxie/core/utils/Events",
6398
- "moxie/core/utils/Mime",
6399
- "moxie/core/utils/Env"
6400
- ], function(extensions, Basic, Dom, Events, Mime, Env) {
6401
-
6402
- function FileInput() {
6403
- var _files = [], _options;
6404
-
6405
- Basic.extend(this, {
6406
- init: function(options) {
6407
- var comp = this, I = comp.getRuntime(), input, shimContainer, mimes, browseButton, zIndex, top;
6408
-
6409
- _options = options;
6410
- _files = [];
6411
-
6412
- // figure out accept string
6413
- mimes = _options.accept.mimes || Mime.extList2mimes(_options.accept, I.can('filter_by_extension'));
6414
-
6415
- shimContainer = I.getShimContainer();
6416
-
6417
- shimContainer.innerHTML = '<input id="' + I.uid +'" type="file" style="font-size:999px;opacity:0;"' +
6418
- (_options.multiple && I.can('select_multiple') ? 'multiple' : '') +
6419
- (_options.directory && I.can('select_folder') ? 'webkitdirectory directory' : '') + // Chrome 11+
6420
- (mimes ? ' accept="' + mimes.join(',') + '"' : '') + ' />';
6421
-
6422
- input = Dom.get(I.uid);
6423
-
6424
- // prepare file input to be placed underneath the browse_button element
6425
- Basic.extend(input.style, {
6426
- position: 'absolute',
6427
- top: 0,
6428
- left: 0,
6429
- width: '100%',
6430
- height: '100%'
6431
- });
6432
-
6433
-
6434
- browseButton = Dom.get(_options.browse_button);
6435
-
6436
- // Route click event to the input[type=file] element for browsers that support such behavior
6437
- if (I.can('summon_file_dialog')) {
6438
- if (Dom.getStyle(browseButton, 'position') === 'static') {
6439
- browseButton.style.position = 'relative';
6440
- }
6441
-
6442
- zIndex = parseInt(Dom.getStyle(browseButton, 'z-index'), 10) || 1;
6443
-
6444
- browseButton.style.zIndex = zIndex;
6445
- shimContainer.style.zIndex = zIndex - 1;
6446
-
6447
- Events.addEvent(browseButton, 'click', function(e) {
6448
- var input = Dom.get(I.uid);
6449
- if (input && !input.disabled) { // for some reason FF (up to 8.0.1 so far) lets to click disabled input[type=file]
6450
- input.click();
6451
- }
6452
- e.preventDefault();
6453
- }, comp.uid);
6454
- }
6455
-
6456
- /* Since we have to place input[type=file] on top of the browse_button for some browsers,
6457
- browse_button loses interactivity, so we restore it here */
6458
- top = I.can('summon_file_dialog') ? browseButton : shimContainer;
6459
-
6460
- Events.addEvent(top, 'mouseover', function() {
6461
- comp.trigger('mouseenter');
6462
- }, comp.uid);
6463
-
6464
- Events.addEvent(top, 'mouseout', function() {
6465
- comp.trigger('mouseleave');
6466
- }, comp.uid);
6467
-
6468
- Events.addEvent(top, 'mousedown', function() {
6469
- comp.trigger('mousedown');
6470
- }, comp.uid);
6471
-
6472
- Events.addEvent(Dom.get(_options.container), 'mouseup', function() {
6473
- comp.trigger('mouseup');
6474
- }, comp.uid);
6475
-
6476
-
6477
- input.onchange = function onChange() { // there should be only one handler for this
6478
- _files = [];
6479
-
6480
- if (_options.directory) {
6481
- // folders are represented by dots, filter them out (Chrome 11+)
6482
- Basic.each(this.files, function(file) {
6483
- if (file.name !== ".") { // if it doesn't looks like a folder
6484
- _files.push(file);
6485
- }
6486
- });
6487
- } else {
6488
- _files = [].slice.call(this.files);
6489
- }
6490
-
6491
- // clearing the value enables the user to select the same file again if they want to
6492
- if (Env.browser !== 'IE') {
6493
- this.value = '';
6494
- } else {
6495
- // in IE input[type="file"] is read-only so the only way to reset it is to re-insert it
6496
- var clone = this.cloneNode(true);
6497
- this.parentNode.replaceChild(clone, this);
6498
- clone.onchange = onChange;
6499
- }
6500
- comp.trigger('change');
6501
- };
6502
-
6503
- // ready event is perfectly asynchronous
6504
- comp.trigger({
6505
- type: 'ready',
6506
- async: true
6507
- });
6508
-
6509
- shimContainer = null;
6510
- },
6511
-
6512
- getFiles: function() {
6513
- return _files;
6514
- },
6515
-
6516
- disable: function(state) {
6517
- var I = this.getRuntime(), input;
6518
-
6519
- if ((input = Dom.get(I.uid))) {
6520
- input.disabled = !!state;
6521
- }
6522
- },
6523
-
6524
- destroy: function() {
6525
- var I = this.getRuntime()
6526
- , shim = I.getShim()
6527
- , shimContainer = I.getShimContainer()
6528
- ;
6529
-
6530
- Events.removeAllEvents(shimContainer, this.uid);
6531
- Events.removeAllEvents(_options && Dom.get(_options.container), this.uid);
6532
- Events.removeAllEvents(_options && Dom.get(_options.browse_button), this.uid);
6533
-
6534
- if (shimContainer) {
6535
- shimContainer.innerHTML = '';
6536
- }
6537
-
6538
- shim.removeInstance(this.uid);
6539
-
6540
- _files = _options = shimContainer = shim = null;
6541
- }
6542
- });
6543
- }
6544
-
6545
- return (extensions.FileInput = FileInput);
6546
- });
6547
-
6548
- // Included from: src/javascript/runtime/html5/file/FileDrop.js
6549
-
6550
- /**
6551
- * FileDrop.js
6552
- *
6553
- * Copyright 2013, Moxiecode Systems AB
6554
- * Released under GPL License.
6555
- *
6556
- * License: http://www.plupload.com/license
6557
- * Contributing: http://www.plupload.com/contributing
6558
- */
6559
-
6560
- /**
6561
- @class moxie/runtime/html5/file/FileDrop
6562
- @private
6563
- */
6564
- define("moxie/runtime/html5/file/FileDrop", [
6565
- "moxie/runtime/html5/Runtime",
6566
- "moxie/core/utils/Basic",
6567
- "moxie/core/utils/Dom",
6568
- "moxie/core/utils/Events",
6569
- "moxie/core/utils/Mime"
6570
- ], function(extensions, Basic, Dom, Events, Mime) {
6571
-
6572
- function FileDrop() {
6573
- var _files = [], _allowedExts = [], _options;
6574
-
6575
- Basic.extend(this, {
6576
- init: function(options) {
6577
- var comp = this, dropZone;
6578
-
6579
- _options = options;
6580
- _allowedExts = _extractExts(_options.accept);
6581
- dropZone = _options.container;
6582
-
6583
- Events.addEvent(dropZone, 'dragover', function(e) {
6584
- e.preventDefault();
6585
- e.stopPropagation();
6586
- e.dataTransfer.dropEffect = 'copy';
6587
- }, comp.uid);
6588
-
6589
- Events.addEvent(dropZone, 'drop', function(e) {
6590
- e.preventDefault();
6591
- e.stopPropagation();
6592
-
6593
- _files = [];
6594
-
6595
- // Chrome 21+ accepts folders via Drag'n'Drop
6596
- if (e.dataTransfer.items && e.dataTransfer.items[0].webkitGetAsEntry) {
6597
- _readItems(e.dataTransfer.items, function() {
6598
- comp.trigger("drop");
6599
- });
6600
- } else {
6601
- Basic.each(e.dataTransfer.files, function(file) {
6602
- if (_isAcceptable(file)) {
6603
- _files.push(file);
6604
- }
6605
- });
6606
- comp.trigger("drop");
6607
- }
6608
- }, comp.uid);
6609
-
6610
- Events.addEvent(dropZone, 'dragenter', function(e) {
6611
- e.preventDefault();
6612
- e.stopPropagation();
6613
- comp.trigger("dragenter");
6614
- }, comp.uid);
6615
-
6616
- Events.addEvent(dropZone, 'dragleave', function(e) {
6617
- e.preventDefault();
6618
- e.stopPropagation();
6619
- comp.trigger("dragleave");
6620
- }, comp.uid);
6621
- },
6622
-
6623
- getFiles: function() {
6624
- return _files;
6625
- },
6626
-
6627
- destroy: function() {
6628
- Events.removeAllEvents(_options && Dom.get(_options.container), this.uid);
6629
- _files = _allowedExts = _options = null;
6630
- }
6631
- });
6632
-
6633
-
6634
- function _extractExts(accept) {
6635
- var exts = [];
6636
- for (var i = 0; i < accept.length; i++) {
6637
- [].push.apply(exts, accept[i].extensions.split(/\s*,\s*/));
6638
- }
6639
- return Basic.inArray('*', exts) === -1 ? exts : [];
6640
- }
6641
-
6642
-
6643
- function _isAcceptable(file) {
6644
- var ext = Mime.getFileExtension(file.name);
6645
- return !ext || !_allowedExts.length || Basic.inArray(ext, _allowedExts) !== -1;
6646
- }
6647
-
6648
-
6649
- function _readItems(items, cb) {
6650
- var entries = [];
6651
- Basic.each(items, function(item) {
6652
- var entry = item.webkitGetAsEntry();
6653
- // Address #998 (https://code.google.com/p/chromium/issues/detail?id=332579)
6654
- if (entry) {
6655
- // file() fails on OSX when the filename contains a special character (e.g. umlaut): see #61
6656
- if (entry.isFile) {
6657
- var file = item.getAsFile();
6658
- if (_isAcceptable(file)) {
6659
- _files.push(file);
6660
- }
6661
- } else {
6662
- entries.push(entry);
6663
- }
6664
- }
6665
- });
6666
-
6667
- if (entries.length) {
6668
- _readEntries(entries, cb);
6669
- } else {
6670
- cb();
6671
- }
6672
- }
6673
-
6674
-
6675
- function _readEntries(entries, cb) {
6676
- var queue = [];
6677
- Basic.each(entries, function(entry) {
6678
- queue.push(function(cbcb) {
6679
- _readEntry(entry, cbcb);
6680
- });
6681
- });
6682
- Basic.inSeries(queue, function() {
6683
- cb();
6684
- });
6685
- }
6686
-
6687
- function _readEntry(entry, cb) {
6688
- if (entry.isFile) {
6689
- entry.file(function(file) {
6690
- if (_isAcceptable(file)) {
6691
- _files.push(file);
6692
- }
6693
- cb();
6694
- }, function() {
6695
- // fire an error event maybe
6696
- cb();
6697
- });
6698
- } else if (entry.isDirectory) {
6699
- _readDirEntry(entry, cb);
6700
- } else {
6701
- cb(); // not file, not directory? what then?..
6702
- }
6703
- }
6704
-
6705
- function _readDirEntry(dirEntry, cb) {
6706
- var entries = [], dirReader = dirEntry.createReader();
6707
-
6708
- // keep quering recursively till no more entries
6709
- function getEntries(cbcb) {
6710
- dirReader.readEntries(function(moreEntries) {
6711
- if (moreEntries.length) {
6712
- [].push.apply(entries, moreEntries);
6713
- getEntries(cbcb);
6714
- } else {
6715
- cbcb();
6716
- }
6717
- }, cbcb);
6718
- }
6719
-
6720
- // ...and you thought FileReader was crazy...
6721
- getEntries(function() {
6722
- _readEntries(entries, cb);
6723
- });
6724
- }
6725
- }
6726
-
6727
- return (extensions.FileDrop = FileDrop);
6728
- });
6729
-
6730
- // Included from: src/javascript/runtime/html5/file/FileReader.js
6731
-
6732
- /**
6733
- * FileReader.js
6734
- *
6735
- * Copyright 2013, Moxiecode Systems AB
6736
- * Released under GPL License.
6737
- *
6738
- * License: http://www.plupload.com/license
6739
- * Contributing: http://www.plupload.com/contributing
6740
- */
6741
-
6742
- /**
6743
- @class moxie/runtime/html5/file/FileReader
6744
- @private
6745
- */
6746
- define("moxie/runtime/html5/file/FileReader", [
6747
- "moxie/runtime/html5/Runtime",
6748
- "moxie/core/utils/Encode",
6749
- "moxie/core/utils/Basic"
6750
- ], function(extensions, Encode, Basic) {
6751
-
6752
- function FileReader() {
6753
- var _fr, _convertToBinary = false;
6754
-
6755
- Basic.extend(this, {
6756
-
6757
- read: function(op, blob) {
6758
- var target = this;
6759
-
6760
- _fr = new window.FileReader();
6761
-
6762
- _fr.addEventListener('progress', function(e) {
6763
- target.trigger(e);
6764
- });
6765
-
6766
- _fr.addEventListener('load', function(e) {
6767
- target.trigger(e);
6768
- });
6769
-
6770
- _fr.addEventListener('error', function(e) {
6771
- target.trigger(e, _fr.error);
6772
- });
6773
-
6774
- _fr.addEventListener('loadend', function() {
6775
- _fr = null;
6776
- });
6777
-
6778
- if (Basic.typeOf(_fr[op]) === 'function') {
6779
- _convertToBinary = false;
6780
- _fr[op](blob.getSource());
6781
- } else if (op === 'readAsBinaryString') { // readAsBinaryString is depricated in general and never existed in IE10+
6782
- _convertToBinary = true;
6783
- _fr.readAsDataURL(blob.getSource());
6784
- }
6785
- },
6786
-
6787
- getResult: function() {
6788
- return _fr && _fr.result ? (_convertToBinary ? _toBinary(_fr.result) : _fr.result) : null;
6789
- },
6790
-
6791
- abort: function() {
6792
- if (_fr) {
6793
- _fr.abort();
6794
- }
6795
- },
6796
-
6797
- destroy: function() {
6798
- _fr = null;
6799
- }
6800
- });
6801
-
6802
- function _toBinary(str) {
6803
- return Encode.atob(str.substring(str.indexOf('base64,') + 7));
6804
- }
6805
- }
6806
-
6807
- return (extensions.FileReader = FileReader);
6808
- });
6809
-
6810
- // Included from: src/javascript/runtime/html5/xhr/XMLHttpRequest.js
6811
-
6812
- /**
6813
- * XMLHttpRequest.js
6814
- *
6815
- * Copyright 2013, Moxiecode Systems AB
6816
- * Released under GPL License.
6817
- *
6818
- * License: http://www.plupload.com/license
6819
- * Contributing: http://www.plupload.com/contributing
6820
- */
6821
-
6822
- /*global ActiveXObject:true */
6823
-
6824
- /**
6825
- @class moxie/runtime/html5/xhr/XMLHttpRequest
6826
- @private
6827
- */
6828
- define("moxie/runtime/html5/xhr/XMLHttpRequest", [
6829
- "moxie/runtime/html5/Runtime",
6830
- "moxie/core/utils/Basic",
6831
- "moxie/core/utils/Mime",
6832
- "moxie/core/utils/Url",
6833
- "moxie/file/File",
6834
- "moxie/file/Blob",
6835
- "moxie/xhr/FormData",
6836
- "moxie/core/Exceptions",
6837
- "moxie/core/utils/Env"
6838
- ], function(extensions, Basic, Mime, Url, File, Blob, FormData, x, Env) {
6839
-
6840
- function XMLHttpRequest() {
6841
- var self = this
6842
- , _xhr
6843
- , _filename
6844
- ;
6845
-
6846
- Basic.extend(this, {
6847
- send: function(meta, data) {
6848
- var target = this
6849
- , isGecko2_5_6 = (Env.browser === 'Mozilla' && Env.version >= 4 && Env.version < 7)
6850
- , isAndroidBrowser = Env.browser === 'Android Browser'
6851
- , mustSendAsBinary = false
6852
- ;
6853
-
6854
- // extract file name
6855
- _filename = meta.url.replace(/^.+?\/([\w\-\.]+)$/, '$1').toLowerCase();
6856
-
6857
- _xhr = _getNativeXHR();
6858
- _xhr.open(meta.method, meta.url, meta.async, meta.user, meta.password);
6859
-
6860
-
6861
- // prepare data to be sent
6862
- if (data instanceof Blob) {
6863
- if (data.isDetached()) {
6864
- mustSendAsBinary = true;
6865
- }
6866
- data = data.getSource();
6867
- } else if (data instanceof FormData) {
6868
-
6869
- if (data.hasBlob()) {
6870
- if (data.getBlob().isDetached()) {
6871
- data = _prepareMultipart.call(target, data); // _xhr must be instantiated and be in OPENED state
6872
- mustSendAsBinary = true;
6873
- } else if ((isGecko2_5_6 || isAndroidBrowser) && Basic.typeOf(data.getBlob().getSource()) === 'blob' && window.FileReader) {
6874
- // Gecko 2/5/6 can't send blob in FormData: https://bugzilla.mozilla.org/show_bug.cgi?id=649150
6875
- // Android browsers (default one and Dolphin) seem to have the same issue, see: #613
6876
- _preloadAndSend.call(target, meta, data);
6877
- return; // _preloadAndSend will reinvoke send() with transmutated FormData =%D
6878
- }
6879
- }
6880
-
6881
- // transfer fields to real FormData
6882
- if (data instanceof FormData) { // if still a FormData, e.g. not mangled by _prepareMultipart()
6883
- var fd = new window.FormData();
6884
- data.each(function(value, name) {
6885
- if (value instanceof Blob) {
6886
- fd.append(name, value.getSource());
6887
- } else {
6888
- fd.append(name, value);
6889
- }
6890
- });
6891
- data = fd;
6892
- }
6893
- }
6894
-
6895
-
6896
- // if XHR L2
6897
- if (_xhr.upload) {
6898
- if (meta.withCredentials) {
6899
- _xhr.withCredentials = true;
6900
- }
6901
-
6902
- _xhr.addEventListener('load', function(e) {
6903
- target.trigger(e);
6904
- });
6905
-
6906
- _xhr.addEventListener('error', function(e) {
6907
- target.trigger(e);
6908
- });
6909
-
6910
- // additionally listen to progress events
6911
- _xhr.addEventListener('progress', function(e) {
6912
- target.trigger(e);
6913
- });
6914
-
6915
- _xhr.upload.addEventListener('progress', function(e) {
6916
- target.trigger({
6917
- type: 'UploadProgress',
6918
- loaded: e.loaded,
6919
- total: e.total
6920
- });
6921
- });
6922
- // ... otherwise simulate XHR L2
6923
- } else {
6924
- _xhr.onreadystatechange = function onReadyStateChange() {
6925
-
6926
- // fake Level 2 events
6927
- switch (_xhr.readyState) {
6928
-
6929
- case 1: // XMLHttpRequest.OPENED
6930
- // readystatechanged is fired twice for OPENED state (in IE and Mozilla) - neu
6931
- break;
6932
-
6933
- // looks like HEADERS_RECEIVED (state 2) is not reported in Opera (or it's old versions) - neu
6934
- case 2: // XMLHttpRequest.HEADERS_RECEIVED
6935
- break;
6936
-
6937
- case 3: // XMLHttpRequest.LOADING
6938
- // try to fire progress event for not XHR L2
6939
- var total, loaded;
6940
-
6941
- try {
6942
- if (Url.hasSameOrigin(meta.url)) { // Content-Length not accessible for cross-domain on some browsers
6943
- total = _xhr.getResponseHeader('Content-Length') || 0; // old Safari throws an exception here
6944
- }
6945
-
6946
- if (_xhr.responseText) { // responseText was introduced in IE7
6947
- loaded = _xhr.responseText.length;
6948
- }
6949
- } catch(ex) {
6950
- total = loaded = 0;
6951
- }
6952
-
6953
- target.trigger({
6954
- type: 'progress',
6955
- lengthComputable: !!total,
6956
- total: parseInt(total, 10),
6957
- loaded: loaded
6958
- });
6959
- break;
6960
-
6961
- case 4: // XMLHttpRequest.DONE
6962
- // release readystatechange handler (mostly for IE)
6963
- _xhr.onreadystatechange = function() {};
6964
-
6965
- // usually status 0 is returned when server is unreachable, but FF also fails to status 0 for 408 timeout
6966
- if (_xhr.status === 0) {
6967
- target.trigger('error');
6968
- } else {
6969
- target.trigger('load');
6970
- }
6971
- break;
6972
- }
6973
- };
6974
- }
6975
-
6976
-
6977
- // set request headers
6978
- if (!Basic.isEmptyObj(meta.headers)) {
6979
- Basic.each(meta.headers, function(value, header) {
6980
- _xhr.setRequestHeader(header, value);
6981
- });
6982
- }
6983
-
6984
- // request response type
6985
- if ("" !== meta.responseType && 'responseType' in _xhr) {
6986
- if ('json' === meta.responseType && !Env.can('return_response_type', 'json')) { // we can fake this one
6987
- _xhr.responseType = 'text';
6988
- } else {
6989
- _xhr.responseType = meta.responseType;
6990
- }
6991
- }
6992
-
6993
- // send ...
6994
- if (!mustSendAsBinary) {
6995
- _xhr.send(data);
6996
- } else {
6997
- if (_xhr.sendAsBinary) { // Gecko
6998
- _xhr.sendAsBinary(data);
6999
- } else { // other browsers having support for typed arrays
7000
- (function() {
7001
- // mimic Gecko's sendAsBinary
7002
- var ui8a = new Uint8Array(data.length);
7003
- for (var i = 0; i < data.length; i++) {
7004
- ui8a[i] = (data.charCodeAt(i) & 0xff);
7005
- }
7006
- _xhr.send(ui8a.buffer);
7007
- }());
7008
- }
7009
- }
7010
-
7011
- target.trigger('loadstart');
7012
- },
7013
-
7014
- getStatus: function() {
7015
- // according to W3C spec it should return 0 for readyState < 3, but instead it throws an exception
7016
- try {
7017
- if (_xhr) {
7018
- return _xhr.status;
7019
- }
7020
- } catch(ex) {}
7021
- return 0;
7022
- },
7023
-
7024
- getResponse: function(responseType) {
7025
- var I = this.getRuntime();
7026
-
7027
- try {
7028
- switch (responseType) {
7029
- case 'blob':
7030
- var file = new File(I.uid, _xhr.response);
7031
-
7032
- // try to extract file name from content-disposition if possible (might be - not, if CORS for example)
7033
- var disposition = _xhr.getResponseHeader('Content-Disposition');
7034
- if (disposition) {
7035
- // extract filename from response header if available
7036
- var match = disposition.match(/filename=([\'\"'])([^\1]+)\1/);
7037
- if (match) {
7038
- _filename = match[2];
7039
- }
7040
- }
7041
- file.name = _filename;
7042
-
7043
- // pre-webkit Opera doesn't set type property on the blob response
7044
- if (!file.type) {
7045
- file.type = Mime.getFileMime(_filename);
7046
- }
7047
- return file;
7048
-
7049
- case 'json':
7050
- if (!Env.can('return_response_type', 'json')) {
7051
- return _xhr.status === 200 && !!window.JSON ? JSON.parse(_xhr.responseText) : null;
7052
- }
7053
- return _xhr.response;
7054
-
7055
- case 'document':
7056
- return _getDocument(_xhr);
7057
-
7058
- default:
7059
- return _xhr.responseText !== '' ? _xhr.responseText : null; // against the specs, but for consistency across the runtimes
7060
- }
7061
- } catch(ex) {
7062
- return null;
7063
- }
7064
- },
7065
-
7066
- getAllResponseHeaders: function() {
7067
- try {
7068
- return _xhr.getAllResponseHeaders();
7069
- } catch(ex) {}
7070
- return '';
7071
- },
7072
-
7073
- abort: function() {
7074
- if (_xhr) {
7075
- _xhr.abort();
7076
- }
7077
- },
7078
-
7079
- destroy: function() {
7080
- self = _filename = null;
7081
- }
7082
- });
7083
-
7084
-
7085
- // here we go... ugly fix for ugly bug
7086
- function _preloadAndSend(meta, data) {
7087
- var target = this, blob, fr;
7088
-
7089
- // get original blob
7090
- blob = data.getBlob().getSource();
7091
-
7092
- // preload blob in memory to be sent as binary string
7093
- fr = new window.FileReader();
7094
- fr.onload = function() {
7095
- // overwrite original blob
7096
- data.append(data.getBlobName(), new Blob(null, {
7097
- type: blob.type,
7098
- data: fr.result
7099
- }));
7100
- // invoke send operation again
7101
- self.send.call(target, meta, data);
7102
- };
7103
- fr.readAsBinaryString(blob);
7104
- }
7105
-
7106
-
7107
- function _getNativeXHR() {
7108
- if (window.XMLHttpRequest && !(Env.browser === 'IE' && Env.version < 8)) { // IE7 has native XHR but it's buggy
7109
- return new window.XMLHttpRequest();
7110
- } else {
7111
- return (function() {
7112
- var progIDs = ['Msxml2.XMLHTTP.6.0', 'Microsoft.XMLHTTP']; // if 6.0 available, use it, otherwise failback to default 3.0
7113
- for (var i = 0; i < progIDs.length; i++) {
7114
- try {
7115
- return new ActiveXObject(progIDs[i]);
7116
- } catch (ex) {}
7117
- }
7118
- })();
7119
- }
7120
- }
7121
-
7122
- // @credits Sergey Ilinsky (http://www.ilinsky.com/)
7123
- function _getDocument(xhr) {
7124
- var rXML = xhr.responseXML;
7125
- var rText = xhr.responseText;
7126
-
7127
- // Try parsing responseText (@see: http://www.ilinsky.com/articles/XMLHttpRequest/#bugs-ie-responseXML-content-type)
7128
- if (Env.browser === 'IE' && rText && rXML && !rXML.documentElement && /[^\/]+\/[^\+]+\+xml/.test(xhr.getResponseHeader("Content-Type"))) {
7129
- rXML = new window.ActiveXObject("Microsoft.XMLDOM");
7130
- rXML.async = false;
7131
- rXML.validateOnParse = false;
7132
- rXML.loadXML(rText);
7133
- }
7134
-
7135
- // Check if there is no error in document
7136
- if (rXML) {
7137
- if ((Env.browser === 'IE' && rXML.parseError !== 0) || !rXML.documentElement || rXML.documentElement.tagName === "parsererror") {
7138
- return null;
7139
- }
7140
- }
7141
- return rXML;
7142
- }
7143
-
7144
-
7145
- function _prepareMultipart(fd) {
7146
- var boundary = '----moxieboundary' + new Date().getTime()
7147
- , dashdash = '--'
7148
- , crlf = '\r\n'
7149
- , multipart = ''
7150
- , I = this.getRuntime()
7151
- ;
7152
-
7153
- if (!I.can('send_binary_string')) {
7154
- throw new x.RuntimeError(x.RuntimeError.NOT_SUPPORTED_ERR);
7155
- }
7156
-
7157
- _xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);
7158
-
7159
- // append multipart parameters
7160
- fd.each(function(value, name) {
7161
- // Firefox 3.6 failed to convert multibyte characters to UTF-8 in sendAsBinary(),
7162
- // so we try it here ourselves with: unescape(encodeURIComponent(value))
7163
- if (value instanceof Blob) {
7164
- // Build RFC2388 blob
7165
- multipart += dashdash + boundary + crlf +
7166
- 'Content-Disposition: form-data; name="' + name + '"; filename="' + unescape(encodeURIComponent(value.name || 'blob')) + '"' + crlf +
7167
- 'Content-Type: ' + (value.type || 'application/octet-stream') + crlf + crlf +
7168
- value.getSource() + crlf;
7169
- } else {
7170
- multipart += dashdash + boundary + crlf +
7171
- 'Content-Disposition: form-data; name="' + name + '"' + crlf + crlf +
7172
- unescape(encodeURIComponent(value)) + crlf;
7173
- }
7174
- });
7175
-
7176
- multipart += dashdash + boundary + dashdash + crlf;
7177
-
7178
- return multipart;
7179
- }
7180
- }
7181
-
7182
- return (extensions.XMLHttpRequest = XMLHttpRequest);
7183
- });
7184
-
7185
- // Included from: src/javascript/runtime/html5/utils/BinaryReader.js
7186
-
7187
- /**
7188
- * BinaryReader.js
7189
- *
7190
- * Copyright 2013, Moxiecode Systems AB
7191
- * Released under GPL License.
7192
- *
7193
- * License: http://www.plupload.com/license
7194
- * Contributing: http://www.plupload.com/contributing
7195
- */
7196
-
7197
- /**
7198
- @class moxie/runtime/html5/utils/BinaryReader
7199
- @private
7200
- */
7201
- define("moxie/runtime/html5/utils/BinaryReader", [], function() {
7202
- return function() {
7203
- var II = false, bin;
7204
-
7205
- // Private functions
7206
- function read(idx, size) {
7207
- var mv = II ? 0 : -8 * (size - 1), sum = 0, i;
7208
-
7209
- for (i = 0; i < size; i++) {
7210
- sum |= (bin.charCodeAt(idx + i) << Math.abs(mv + i*8));
7211
- }
7212
-
7213
- return sum;
7214
- }
7215
-
7216
- function putstr(segment, idx, length) {
7217
- length = arguments.length === 3 ? length : bin.length - idx - 1;
7218
- bin = bin.substr(0, idx) + segment + bin.substr(length + idx);
7219
- }
7220
-
7221
- function write(idx, num, size) {
7222
- var str = '', mv = II ? 0 : -8 * (size - 1), i;
7223
-
7224
- for (i = 0; i < size; i++) {
7225
- str += String.fromCharCode((num >> Math.abs(mv + i*8)) & 255);
7226
- }
7227
-
7228
- putstr(str, idx, size);
7229
- }
7230
-
7231
- // Public functions
7232
- return {
7233
- II: function(order) {
7234
- if (order === undefined) {
7235
- return II;
7236
- } else {
7237
- II = order;
7238
- }
7239
- },
7240
-
7241
- init: function(binData) {
7242
- II = false;
7243
- bin = binData;
7244
- },
7245
-
7246
- SEGMENT: function(idx, length, segment) {
7247
- switch (arguments.length) {
7248
- case 1:
7249
- return bin.substr(idx, bin.length - idx - 1);
7250
- case 2:
7251
- return bin.substr(idx, length);
7252
- case 3:
7253
- putstr(segment, idx, length);
7254
- break;
7255
- default: return bin;
7256
- }
7257
- },
7258
-
7259
- BYTE: function(idx) {
7260
- return read(idx, 1);
7261
- },
7262
-
7263
- SHORT: function(idx) {
7264
- return read(idx, 2);
7265
- },
7266
-
7267
- LONG: function(idx, num) {
7268
- if (num === undefined) {
7269
- return read(idx, 4);
7270
- } else {
7271
- write(idx, num, 4);
7272
- }
7273
- },
7274
-
7275
- SLONG: function(idx) { // 2's complement notation
7276
- var num = read(idx, 4);
7277
-
7278
- return (num > 2147483647 ? num - 4294967296 : num);
7279
- },
7280
-
7281
- STRING: function(idx, size) {
7282
- var str = '';
7283
-
7284
- for (size += idx; idx < size; idx++) {
7285
- str += String.fromCharCode(read(idx, 1));
7286
- }
7287
-
7288
- return str;
7289
- }
7290
- };
7291
- };
7292
- });
7293
-
7294
- // Included from: src/javascript/runtime/html5/image/JPEGHeaders.js
7295
-
7296
- /**
7297
- * JPEGHeaders.js
7298
- *
7299
- * Copyright 2013, Moxiecode Systems AB
7300
- * Released under GPL License.
7301
- *
7302
- * License: http://www.plupload.com/license
7303
- * Contributing: http://www.plupload.com/contributing
7304
- */
7305
-
7306
- /**
7307
- @class moxie/runtime/html5/image/JPEGHeaders
7308
- @private
7309
- */
7310
- define("moxie/runtime/html5/image/JPEGHeaders", [
7311
- "moxie/runtime/html5/utils/BinaryReader"
7312
- ], function(BinaryReader) {
7313
-
7314
- return function JPEGHeaders(data) {
7315
- var headers = [], read, idx, marker, length = 0;
7316
-
7317
- read = new BinaryReader();
7318
- read.init(data);
7319
-
7320
- // Check if data is jpeg
7321
- if (read.SHORT(0) !== 0xFFD8) {
7322
- return;
7323
- }
7324
-
7325
- idx = 2;
7326
-
7327
- while (idx <= data.length) {
7328
- marker = read.SHORT(idx);
7329
-
7330
- // omit RST (restart) markers
7331
- if (marker >= 0xFFD0 && marker <= 0xFFD7) {
7332
- idx += 2;
7333
- continue;
7334
- }
7335
-
7336
- // no headers allowed after SOS marker
7337
- if (marker === 0xFFDA || marker === 0xFFD9) {
7338
- break;
7339
- }
7340
-
7341
- length = read.SHORT(idx + 2) + 2;
7342
-
7343
- // APPn marker detected
7344
- if (marker >= 0xFFE1 && marker <= 0xFFEF) {
7345
- headers.push({
7346
- hex: marker,
7347
- name: 'APP' + (marker & 0x000F),
7348
- start: idx,
7349
- length: length,
7350
- segment: read.SEGMENT(idx, length)
7351
- });
7352
- }
7353
-
7354
- idx += length;
7355
- }
7356
-
7357
- read.init(null); // free memory
7358
-
7359
- return {
7360
- headers: headers,
7361
-
7362
- restore: function(data) {
7363
- var max, i;
7364
-
7365
- read.init(data);
7366
-
7367
- idx = read.SHORT(2) == 0xFFE0 ? 4 + read.SHORT(4) : 2;
7368
-
7369
- for (i = 0, max = headers.length; i < max; i++) {
7370
- read.SEGMENT(idx, 0, headers[i].segment);
7371
- idx += headers[i].length;
7372
- }
7373
-
7374
- data = read.SEGMENT();
7375
- read.init(null);
7376
- return data;
7377
- },
7378
-
7379
- strip: function(data) {
7380
- var headers, jpegHeaders, i;
7381
-
7382
- jpegHeaders = new JPEGHeaders(data);
7383
- headers = jpegHeaders.headers;
7384
- jpegHeaders.purge();
7385
-
7386
- read.init(data);
7387
-
7388
- i = headers.length;
7389
- while (i--) {
7390
- read.SEGMENT(headers[i].start, headers[i].length, '');
7391
- }
7392
-
7393
- data = read.SEGMENT();
7394
- read.init(null);
7395
- return data;
7396
- },
7397
-
7398
- get: function(name) {
7399
- var array = [];
7400
-
7401
- for (var i = 0, max = headers.length; i < max; i++) {
7402
- if (headers[i].name === name.toUpperCase()) {
7403
- array.push(headers[i].segment);
7404
- }
7405
- }
7406
- return array;
7407
- },
7408
-
7409
- set: function(name, segment) {
7410
- var array = [], i, ii, max;
7411
-
7412
- if (typeof(segment) === 'string') {
7413
- array.push(segment);
7414
- } else {
7415
- array = segment;
7416
- }
7417
-
7418
- for (i = ii = 0, max = headers.length; i < max; i++) {
7419
- if (headers[i].name === name.toUpperCase()) {
7420
- headers[i].segment = array[ii];
7421
- headers[i].length = array[ii].length;
7422
- ii++;
7423
- }
7424
- if (ii >= array.length) {
7425
- break;
7426
- }
7427
- }
7428
- },
7429
-
7430
- purge: function() {
7431
- headers = [];
7432
- read.init(null);
7433
- read = null;
7434
- }
7435
- };
7436
- };
7437
- });
7438
-
7439
- // Included from: src/javascript/runtime/html5/image/ExifParser.js
7440
-
7441
- /**
7442
- * ExifParser.js
7443
- *
7444
- * Copyright 2013, Moxiecode Systems AB
7445
- * Released under GPL License.
7446
- *
7447
- * License: http://www.plupload.com/license
7448
- * Contributing: http://www.plupload.com/contributing
7449
- */
7450
-
7451
- /**
7452
- @class moxie/runtime/html5/image/ExifParser
7453
- @private
7454
- */
7455
- define("moxie/runtime/html5/image/ExifParser", [
7456
- "moxie/core/utils/Basic",
7457
- "moxie/runtime/html5/utils/BinaryReader"
7458
- ], function(Basic, BinaryReader) {
7459
-
7460
- return function ExifParser() {
7461
- // Private ExifParser fields
7462
- var data, tags, Tiff, offsets = {}, tagDescs;
7463
-
7464
- data = new BinaryReader();
7465
-
7466
- tags = {
7467
- tiff : {
7468
- /*
7469
- The image orientation viewed in terms of rows and columns.
7470
-
7471
- 1 = The 0th row is at the visual top of the image, and the 0th column is the visual left-hand side.
7472
- 2 = The 0th row is at the visual top of the image, and the 0th column is the visual right-hand side.
7473
- 3 = The 0th row is at the visual bottom of the image, and the 0th column is the visual right-hand side.
7474
- 4 = The 0th row is at the visual bottom of the image, and the 0th column is the visual left-hand side.
7475
- 5 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual top.
7476
- 6 = The 0th row is the visual right-hand side of the image, and the 0th column is the visual top.
7477
- 7 = The 0th row is the visual right-hand side of the image, and the 0th column is the visual bottom.
7478
- 8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.
7479
- */
7480
- 0x0112: 'Orientation',
7481
- 0x010E: 'ImageDescription',
7482
- 0x010F: 'Make',
7483
- 0x0110: 'Model',
7484
- 0x0131: 'Software',
7485
- 0x8769: 'ExifIFDPointer',
7486
- 0x8825: 'GPSInfoIFDPointer'
7487
- },
7488
- exif : {
7489
- 0x9000: 'ExifVersion',
7490
- 0xA001: 'ColorSpace',
7491
- 0xA002: 'PixelXDimension',
7492
- 0xA003: 'PixelYDimension',
7493
- 0x9003: 'DateTimeOriginal',
7494
- 0x829A: 'ExposureTime',
7495
- 0x829D: 'FNumber',
7496
- 0x8827: 'ISOSpeedRatings',
7497
- 0x9201: 'ShutterSpeedValue',
7498
- 0x9202: 'ApertureValue' ,
7499
- 0x9207: 'MeteringMode',
7500
- 0x9208: 'LightSource',
7501
- 0x9209: 'Flash',
7502
- 0x920A: 'FocalLength',
7503
- 0xA402: 'ExposureMode',
7504
- 0xA403: 'WhiteBalance',
7505
- 0xA406: 'SceneCaptureType',
7506
- 0xA404: 'DigitalZoomRatio',
7507
- 0xA408: 'Contrast',
7508
- 0xA409: 'Saturation',
7509
- 0xA40A: 'Sharpness'
7510
- },
7511
- gps : {
7512
- 0x0000: 'GPSVersionID',
7513
- 0x0001: 'GPSLatitudeRef',
7514
- 0x0002: 'GPSLatitude',
7515
- 0x0003: 'GPSLongitudeRef',
7516
- 0x0004: 'GPSLongitude'
7517
- }
7518
- };
7519
-
7520
- tagDescs = {
7521
- 'ColorSpace': {
7522
- 1: 'sRGB',
7523
- 0: 'Uncalibrated'
7524
- },
7525
-
7526
- 'MeteringMode': {
7527
- 0: 'Unknown',
7528
- 1: 'Average',
7529
- 2: 'CenterWeightedAverage',
7530
- 3: 'Spot',
7531
- 4: 'MultiSpot',
7532
- 5: 'Pattern',
7533
- 6: 'Partial',
7534
- 255: 'Other'
7535
- },
7536
-
7537
- 'LightSource': {
7538
- 1: 'Daylight',
7539
- 2: 'Fliorescent',
7540
- 3: 'Tungsten',
7541
- 4: 'Flash',
7542
- 9: 'Fine weather',
7543
- 10: 'Cloudy weather',
7544
- 11: 'Shade',
7545
- 12: 'Daylight fluorescent (D 5700 - 7100K)',
7546
- 13: 'Day white fluorescent (N 4600 -5400K)',
7547
- 14: 'Cool white fluorescent (W 3900 - 4500K)',
7548
- 15: 'White fluorescent (WW 3200 - 3700K)',
7549
- 17: 'Standard light A',
7550
- 18: 'Standard light B',
7551
- 19: 'Standard light C',
7552
- 20: 'D55',
7553
- 21: 'D65',
7554
- 22: 'D75',
7555
- 23: 'D50',
7556
- 24: 'ISO studio tungsten',
7557
- 255: 'Other'
7558
- },
7559
-
7560
- 'Flash': {
7561
- 0x0000: 'Flash did not fire.',
7562
- 0x0001: 'Flash fired.',
7563
- 0x0005: 'Strobe return light not detected.',
7564
- 0x0007: 'Strobe return light detected.',
7565
- 0x0009: 'Flash fired, compulsory flash mode',
7566
- 0x000D: 'Flash fired, compulsory flash mode, return light not detected',
7567
- 0x000F: 'Flash fired, compulsory flash mode, return light detected',
7568
- 0x0010: 'Flash did not fire, compulsory flash mode',
7569
- 0x0018: 'Flash did not fire, auto mode',
7570
- 0x0019: 'Flash fired, auto mode',
7571
- 0x001D: 'Flash fired, auto mode, return light not detected',
7572
- 0x001F: 'Flash fired, auto mode, return light detected',
7573
- 0x0020: 'No flash function',
7574
- 0x0041: 'Flash fired, red-eye reduction mode',
7575
- 0x0045: 'Flash fired, red-eye reduction mode, return light not detected',
7576
- 0x0047: 'Flash fired, red-eye reduction mode, return light detected',
7577
- 0x0049: 'Flash fired, compulsory flash mode, red-eye reduction mode',
7578
- 0x004D: 'Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected',
7579
- 0x004F: 'Flash fired, compulsory flash mode, red-eye reduction mode, return light detected',
7580
- 0x0059: 'Flash fired, auto mode, red-eye reduction mode',
7581
- 0x005D: 'Flash fired, auto mode, return light not detected, red-eye reduction mode',
7582
- 0x005F: 'Flash fired, auto mode, return light detected, red-eye reduction mode'
7583
- },
7584
-
7585
- 'ExposureMode': {
7586
- 0: 'Auto exposure',
7587
- 1: 'Manual exposure',
7588
- 2: 'Auto bracket'
7589
- },
7590
-
7591
- 'WhiteBalance': {
7592
- 0: 'Auto white balance',
7593
- 1: 'Manual white balance'
7594
- },
7595
-
7596
- 'SceneCaptureType': {
7597
- 0: 'Standard',
7598
- 1: 'Landscape',
7599
- 2: 'Portrait',
7600
- 3: 'Night scene'
7601
- },
7602
-
7603
- 'Contrast': {
7604
- 0: 'Normal',
7605
- 1: 'Soft',
7606
- 2: 'Hard'
7607
- },
7608
-
7609
- 'Saturation': {
7610
- 0: 'Normal',
7611
- 1: 'Low saturation',
7612
- 2: 'High saturation'
7613
- },
7614
-
7615
- 'Sharpness': {
7616
- 0: 'Normal',
7617
- 1: 'Soft',
7618
- 2: 'Hard'
7619
- },
7620
-
7621
- // GPS related
7622
- 'GPSLatitudeRef': {
7623
- N: 'North latitude',
7624
- S: 'South latitude'
7625
- },
7626
-
7627
- 'GPSLongitudeRef': {
7628
- E: 'East longitude',
7629
- W: 'West longitude'
7630
- }
7631
- };
7632
-
7633
- function extractTags(IFD_offset, tags2extract) {
7634
- var length = data.SHORT(IFD_offset), i, ii,
7635
- tag, type, count, tagOffset, offset, value, values = [], hash = {};
7636
-
7637
- for (i = 0; i < length; i++) {
7638
- // Set binary reader pointer to beginning of the next tag
7639
- offset = tagOffset = IFD_offset + 12 * i + 2;
7640
-
7641
- tag = tags2extract[data.SHORT(offset)];
7642
-
7643
- if (tag === undefined) {
7644
- continue; // Not the tag we requested
7645
- }
7646
-
7647
- type = data.SHORT(offset+=2);
7648
- count = data.LONG(offset+=2);
7649
-
7650
- offset += 4;
7651
- values = [];
7652
-
7653
- switch (type) {
7654
- case 1: // BYTE
7655
- case 7: // UNDEFINED
7656
- if (count > 4) {
7657
- offset = data.LONG(offset) + offsets.tiffHeader;
7658
- }
7659
-
7660
- for (ii = 0; ii < count; ii++) {
7661
- values[ii] = data.BYTE(offset + ii);
7662
- }
7663
-
7664
- break;
7665
-
7666
- case 2: // STRING
7667
- if (count > 4) {
7668
- offset = data.LONG(offset) + offsets.tiffHeader;
7669
- }
7670
-
7671
- hash[tag] = data.STRING(offset, count - 1);
7672
-
7673
- continue;
7674
-
7675
- case 3: // SHORT
7676
- if (count > 2) {
7677
- offset = data.LONG(offset) + offsets.tiffHeader;
7678
- }
7679
-
7680
- for (ii = 0; ii < count; ii++) {
7681
- values[ii] = data.SHORT(offset + ii*2);
7682
- }
7683
-
7684
- break;
7685
-
7686
- case 4: // LONG
7687
- if (count > 1) {
7688
- offset = data.LONG(offset) + offsets.tiffHeader;
7689
- }
7690
-
7691
- for (ii = 0; ii < count; ii++) {
7692
- values[ii] = data.LONG(offset + ii*4);
7693
- }
7694
-
7695
- break;
7696
-
7697
- case 5: // RATIONAL
7698
- offset = data.LONG(offset) + offsets.tiffHeader;
7699
-
7700
- for (ii = 0; ii < count; ii++) {
7701
- values[ii] = data.LONG(offset + ii*4) / data.LONG(offset + ii*4 + 4);
7702
- }
7703
-
7704
- break;
7705
-
7706
- case 9: // SLONG
7707
- offset = data.LONG(offset) + offsets.tiffHeader;
7708
-
7709
- for (ii = 0; ii < count; ii++) {
7710
- values[ii] = data.SLONG(offset + ii*4);
7711
- }
7712
-
7713
- break;
7714
-
7715
- case 10: // SRATIONAL
7716
- offset = data.LONG(offset) + offsets.tiffHeader;
7717
-
7718
- for (ii = 0; ii < count; ii++) {
7719
- values[ii] = data.SLONG(offset + ii*4) / data.SLONG(offset + ii*4 + 4);
7720
- }
7721
-
7722
- break;
7723
-
7724
- default:
7725
- continue;
7726
- }
7727
-
7728
- value = (count == 1 ? values[0] : values);
7729
-
7730
- if (tagDescs.hasOwnProperty(tag) && typeof value != 'object') {
7731
- hash[tag] = tagDescs[tag][value];
7732
- } else {
7733
- hash[tag] = value;
7734
- }
7735
- }
7736
-
7737
- return hash;
7738
- }
7739
-
7740
- function getIFDOffsets() {
7741
- var idx = offsets.tiffHeader;
7742
-
7743
- // Set read order of multi-byte data
7744
- data.II(data.SHORT(idx) == 0x4949);
7745
-
7746
- // Check if always present bytes are indeed present
7747
- if (data.SHORT(idx+=2) !== 0x002A) {
7748
- return false;
7749
- }
7750
-
7751
- offsets.IFD0 = offsets.tiffHeader + data.LONG(idx += 2);
7752
- Tiff = extractTags(offsets.IFD0, tags.tiff);
7753
-
7754
- if ('ExifIFDPointer' in Tiff) {
7755
- offsets.exifIFD = offsets.tiffHeader + Tiff.ExifIFDPointer;
7756
- delete Tiff.ExifIFDPointer;
7757
- }
7758
-
7759
- if ('GPSInfoIFDPointer' in Tiff) {
7760
- offsets.gpsIFD = offsets.tiffHeader + Tiff.GPSInfoIFDPointer;
7761
- delete Tiff.GPSInfoIFDPointer;
7762
- }
7763
- return true;
7764
- }
7765
-
7766
- // At the moment only setting of simple (LONG) values, that do not require offset recalculation, is supported
7767
- function setTag(ifd, tag, value) {
7768
- var offset, length, tagOffset, valueOffset = 0;
7769
-
7770
- // If tag name passed translate into hex key
7771
- if (typeof(tag) === 'string') {
7772
- var tmpTags = tags[ifd.toLowerCase()];
7773
- for (var hex in tmpTags) {
7774
- if (tmpTags[hex] === tag) {
7775
- tag = hex;
7776
- break;
7777
- }
7778
- }
7779
- }
7780
- offset = offsets[ifd.toLowerCase() + 'IFD'];
7781
- length = data.SHORT(offset);
7782
-
7783
- for (var i = 0; i < length; i++) {
7784
- tagOffset = offset + 12 * i + 2;
7785
-
7786
- if (data.SHORT(tagOffset) == tag) {
7787
- valueOffset = tagOffset + 8;
7788
- break;
7789
- }
7790
- }
7791
-
7792
- if (!valueOffset) {
7793
- return false;
7794
- }
7795
-
7796
- data.LONG(valueOffset, value);
7797
- return true;
7798
- }
7799
-
7800
-
7801
- // Public functions
7802
- return {
7803
- init: function(segment) {
7804
- // Reset internal data
7805
- offsets = {
7806
- tiffHeader: 10
7807
- };
7808
-
7809
- if (segment === undefined || !segment.length) {
7810
- return false;
7811
- }
7812
-
7813
- data.init(segment);
7814
-
7815
- // Check if that's APP1 and that it has EXIF
7816
- if (data.SHORT(0) === 0xFFE1 && data.STRING(4, 5).toUpperCase() === "EXIF\0") {
7817
- return getIFDOffsets();
7818
- }
7819
- return false;
7820
- },
7821
-
7822
- TIFF: function() {
7823
- return Tiff;
7824
- },
7825
-
7826
- EXIF: function() {
7827
- var Exif;
7828
-
7829
- // Populate EXIF hash
7830
- Exif = extractTags(offsets.exifIFD, tags.exif);
7831
-
7832
- // Fix formatting of some tags
7833
- if (Exif.ExifVersion && Basic.typeOf(Exif.ExifVersion) === 'array') {
7834
- for (var i = 0, exifVersion = ''; i < Exif.ExifVersion.length; i++) {
7835
- exifVersion += String.fromCharCode(Exif.ExifVersion[i]);
7836
- }
7837
- Exif.ExifVersion = exifVersion;
7838
- }
7839
-
7840
- return Exif;
7841
- },
7842
-
7843
- GPS: function() {
7844
- var GPS;
7845
-
7846
- GPS = extractTags(offsets.gpsIFD, tags.gps);
7847
-
7848
- // iOS devices (and probably some others) do not put in GPSVersionID tag (why?..)
7849
- if (GPS.GPSVersionID && Basic.typeOf(GPS.GPSVersionID) === 'array') {
7850
- GPS.GPSVersionID = GPS.GPSVersionID.join('.');
7851
- }
7852
-
7853
- return GPS;
7854
- },
7855
-
7856
- setExif: function(tag, value) {
7857
- // Right now only setting of width/height is possible
7858
- if (tag !== 'PixelXDimension' && tag !== 'PixelYDimension') {return false;}
7859
-
7860
- return setTag('exif', tag, value);
7861
- },
7862
-
7863
-
7864
- getBinary: function() {
7865
- return data.SEGMENT();
7866
- },
7867
-
7868
- purge: function() {
7869
- data.init(null);
7870
- data = Tiff = null;
7871
- offsets = {};
7872
- }
7873
- };
7874
- };
7875
- });
7876
-
7877
- // Included from: src/javascript/runtime/html5/image/JPEG.js
7878
-
7879
- /**
7880
- * JPEG.js
7881
- *
7882
- * Copyright 2013, Moxiecode Systems AB
7883
- * Released under GPL License.
7884
- *
7885
- * License: http://www.plupload.com/license
7886
- * Contributing: http://www.plupload.com/contributing
7887
- */
7888
-
7889
- /**
7890
- @class moxie/runtime/html5/image/JPEG
7891
- @private
7892
- */
7893
- define("moxie/runtime/html5/image/JPEG", [
7894
- "moxie/core/utils/Basic",
7895
- "moxie/core/Exceptions",
7896
- "moxie/runtime/html5/image/JPEGHeaders",
7897
- "moxie/runtime/html5/utils/BinaryReader",
7898
- "moxie/runtime/html5/image/ExifParser"
7899
- ], function(Basic, x, JPEGHeaders, BinaryReader, ExifParser) {
7900
-
7901
- function JPEG(binstr) {
7902
- var _binstr, _br, _hm, _ep, _info, hasExif;
7903
-
7904
- function _getDimensions() {
7905
- var idx = 0, marker, length;
7906
-
7907
- // examine all through the end, since some images might have very large APP segments
7908
- while (idx <= _binstr.length) {
7909
- marker = _br.SHORT(idx += 2);
7910
-
7911
- if (marker >= 0xFFC0 && marker <= 0xFFC3) { // SOFn
7912
- idx += 5; // marker (2 bytes) + length (2 bytes) + Sample precision (1 byte)
7913
- return {
7914
- height: _br.SHORT(idx),
7915
- width: _br.SHORT(idx += 2)
7916
- };
7917
- }
7918
- length = _br.SHORT(idx += 2);
7919
- idx += length - 2;
7920
- }
7921
- return null;
7922
- }
7923
-
7924
- _binstr = binstr;
7925
-
7926
- _br = new BinaryReader();
7927
- _br.init(_binstr);
7928
-
7929
- // check if it is jpeg
7930
- if (_br.SHORT(0) !== 0xFFD8) {
7931
- throw new x.ImageError(x.ImageError.WRONG_FORMAT);
7932
- }
7933
-
7934
- // backup headers
7935
- _hm = new JPEGHeaders(binstr);
7936
-
7937
- // extract exif info
7938
- _ep = new ExifParser();
7939
- hasExif = !!_ep.init(_hm.get('app1')[0]);
7940
-
7941
- // get dimensions
7942
- _info = _getDimensions.call(this);
7943
-
7944
- Basic.extend(this, {
7945
- type: 'image/jpeg',
7946
-
7947
- size: _binstr.length,
7948
-
7949
- width: _info && _info.width || 0,
7950
-
7951
- height: _info && _info.height || 0,
7952
-
7953
- setExif: function(tag, value) {
7954
- if (!hasExif) {
7955
- return false; // or throw an exception
7956
- }
7957
-
7958
- if (Basic.typeOf(tag) === 'object') {
7959
- Basic.each(tag, function(value, tag) {
7960
- _ep.setExif(tag, value);
7961
- });
7962
- } else {
7963
- _ep.setExif(tag, value);
7964
- }
7965
-
7966
- // update internal headers
7967
- _hm.set('app1', _ep.getBinary());
7968
- },
7969
-
7970
- writeHeaders: function() {
7971
- if (!arguments.length) {
7972
- // if no arguments passed, update headers internally
7973
- return (_binstr = _hm.restore(_binstr));
7974
- }
7975
- return _hm.restore(arguments[0]);
7976
- },
7977
-
7978
- stripHeaders: function(binstr) {
7979
- return _hm.strip(binstr);
7980
- },
7981
-
7982
- purge: function() {
7983
- _purge.call(this);
7984
- }
7985
- });
7986
-
7987
- if (hasExif) {
7988
- this.meta = {
7989
- tiff: _ep.TIFF(),
7990
- exif: _ep.EXIF(),
7991
- gps: _ep.GPS()
7992
- };
7993
- }
7994
-
7995
- function _purge() {
7996
- if (!_ep || !_hm || !_br) {
7997
- return; // ignore any repeating purge requests
7998
- }
7999
- _ep.purge();
8000
- _hm.purge();
8001
- _br.init(null);
8002
- _binstr = _info = _hm = _ep = _br = null;
8003
- }
8004
- }
8005
-
8006
- return JPEG;
8007
- });
8008
-
8009
- // Included from: src/javascript/runtime/html5/image/PNG.js
8010
-
8011
- /**
8012
- * PNG.js
8013
- *
8014
- * Copyright 2013, Moxiecode Systems AB
8015
- * Released under GPL License.
8016
- *
8017
- * License: http://www.plupload.com/license
8018
- * Contributing: http://www.plupload.com/contributing
8019
- */
8020
-
8021
- /**
8022
- @class moxie/runtime/html5/image/PNG
8023
- @private
8024
- */
8025
- define("moxie/runtime/html5/image/PNG", [
8026
- "moxie/core/Exceptions",
8027
- "moxie/core/utils/Basic",
8028
- "moxie/runtime/html5/utils/BinaryReader"
8029
- ], function(x, Basic, BinaryReader) {
8030
-
8031
- function PNG(binstr) {
8032
- var _binstr, _br, _hm, _ep, _info;
8033
-
8034
- _binstr = binstr;
8035
-
8036
- _br = new BinaryReader();
8037
- _br.init(_binstr);
8038
-
8039
- // check if it's png
8040
- (function() {
8041
- var idx = 0, i = 0
8042
- , signature = [0x8950, 0x4E47, 0x0D0A, 0x1A0A]
8043
- ;
8044
-
8045
- for (i = 0; i < signature.length; i++, idx += 2) {
8046
- if (signature[i] != _br.SHORT(idx)) {
8047
- throw new x.ImageError(x.ImageError.WRONG_FORMAT);
8048
- }
8049
- }
8050
- }());
8051
-
8052
- function _getDimensions() {
8053
- var chunk, idx;
8054
-
8055
- chunk = _getChunkAt.call(this, 8);
8056
-
8057
- if (chunk.type == 'IHDR') {
8058
- idx = chunk.start;
8059
- return {
8060
- width: _br.LONG(idx),
8061
- height: _br.LONG(idx += 4)
8062
- };
8063
- }
8064
- return null;
8065
- }
8066
-
8067
- function _purge() {
8068
- if (!_br) {
8069
- return; // ignore any repeating purge requests
8070
- }
8071
- _br.init(null);
8072
- _binstr = _info = _hm = _ep = _br = null;
8073
- }
8074
-
8075
- _info = _getDimensions.call(this);
8076
-
8077
- Basic.extend(this, {
8078
- type: 'image/png',
8079
-
8080
- size: _binstr.length,
8081
-
8082
- width: _info.width,
8083
-
8084
- height: _info.height,
8085
-
8086
- purge: function() {
8087
- _purge.call(this);
8088
- }
8089
- });
8090
-
8091
- // for PNG we can safely trigger purge automatically, as we do not keep any data for later
8092
- _purge.call(this);
8093
-
8094
- function _getChunkAt(idx) {
8095
- var length, type, start, CRC;
8096
-
8097
- length = _br.LONG(idx);
8098
- type = _br.STRING(idx += 4, 4);
8099
- start = idx += 4;
8100
- CRC = _br.LONG(idx + length);
8101
-
8102
- return {
8103
- length: length,
8104
- type: type,
8105
- start: start,
8106
- CRC: CRC
8107
- };
8108
- }
8109
- }
8110
-
8111
- return PNG;
8112
- });
8113
-
8114
- // Included from: src/javascript/runtime/html5/image/ImageInfo.js
8115
-
8116
- /**
8117
- * ImageInfo.js
8118
- *
8119
- * Copyright 2013, Moxiecode Systems AB
8120
- * Released under GPL License.
8121
- *
8122
- * License: http://www.plupload.com/license
8123
- * Contributing: http://www.plupload.com/contributing
8124
- */
8125
-
8126
- /**
8127
- @class moxie/runtime/html5/image/ImageInfo
8128
- @private
8129
- */
8130
- define("moxie/runtime/html5/image/ImageInfo", [
8131
- "moxie/core/utils/Basic",
8132
- "moxie/core/Exceptions",
8133
- "moxie/runtime/html5/image/JPEG",
8134
- "moxie/runtime/html5/image/PNG"
8135
- ], function(Basic, x, JPEG, PNG) {
8136
- /**
8137
- Optional image investigation tool for HTML5 runtime. Provides the following features:
8138
- - ability to distinguish image type (JPEG or PNG) by signature
8139
- - ability to extract image width/height directly from it's internals, without preloading in memory (fast)
8140
- - ability to extract APP headers from JPEGs (Exif, GPS, etc)
8141
- - ability to replace width/height tags in extracted JPEG headers
8142
- - ability to restore APP headers, that were for example stripped during image manipulation
8143
-
8144
- @class ImageInfo
8145
- @constructor
8146
- @param {String} binstr Image source as binary string
8147
- */
8148
- return function(binstr) {
8149
- var _cs = [JPEG, PNG], _img;
8150
-
8151
- // figure out the format, throw: ImageError.WRONG_FORMAT if not supported
8152
- _img = (function() {
8153
- for (var i = 0; i < _cs.length; i++) {
8154
- try {
8155
- return new _cs[i](binstr);
8156
- } catch (ex) {
8157
- // console.info(ex);
8158
- }
8159
- }
8160
- throw new x.ImageError(x.ImageError.WRONG_FORMAT);
8161
- }());
8162
-
8163
- Basic.extend(this, {
8164
- /**
8165
- Image Mime Type extracted from it's depths
8166
-
8167
- @property type
8168
- @type {String}
8169
- @default ''
8170
- */
8171
- type: '',
8172
-
8173
- /**
8174
- Image size in bytes
8175
-
8176
- @property size
8177
- @type {Number}
8178
- @default 0
8179
- */
8180
- size: 0,
8181
-
8182
- /**
8183
- Image width extracted from image source
8184
-
8185
- @property width
8186
- @type {Number}
8187
- @default 0
8188
- */
8189
- width: 0,
8190
-
8191
- /**
8192
- Image height extracted from image source
8193
-
8194
- @property height
8195
- @type {Number}
8196
- @default 0
8197
- */
8198
- height: 0,
8199
-
8200
- /**
8201
- Sets Exif tag. Currently applicable only for width and height tags. Obviously works only with JPEGs.
8202
-
8203
- @method setExif
8204
- @param {String} tag Tag to set
8205
- @param {Mixed} value Value to assign to the tag
8206
- */
8207
- setExif: function() {},
8208
-
8209
- /**
8210
- Restores headers to the source.
8211
-
8212
- @method writeHeaders
8213
- @param {String} data Image source as binary string
8214
- @return {String} Updated binary string
8215
- */
8216
- writeHeaders: function(data) {
8217
- return data;
8218
- },
8219
-
8220
- /**
8221
- Strip all headers from the source.
8222
-
8223
- @method stripHeaders
8224
- @param {String} data Image source as binary string
8225
- @return {String} Updated binary string
8226
- */
8227
- stripHeaders: function(data) {
8228
- return data;
8229
- },
8230
-
8231
- /**
8232
- Dispose resources.
8233
-
8234
- @method purge
8235
- */
8236
- purge: function() {}
8237
- });
8238
-
8239
- Basic.extend(this, _img);
8240
-
8241
- this.purge = function() {
8242
- _img.purge();
8243
- _img = null;
8244
- };
8245
- };
8246
- });
8247
-
8248
- // Included from: src/javascript/runtime/html5/image/MegaPixel.js
8249
-
8250
- /**
8251
- (The MIT License)
8252
-
8253
- Copyright (c) 2012 Shinichi Tomita <shinichi.tomita@gmail.com>;
8254
-
8255
- Permission is hereby granted, free of charge, to any person obtaining
8256
- a copy of this software and associated documentation files (the
8257
- 'Software'), to deal in the Software without restriction, including
8258
- without limitation the rights to use, copy, modify, merge, publish,
8259
- distribute, sublicense, and/or sell copies of the Software, and to
8260
- permit persons to whom the Software is furnished to do so, subject to
8261
- the following conditions:
8262
-
8263
- The above copyright notice and this permission notice shall be
8264
- included in all copies or substantial portions of the Software.
8265
-
8266
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
8267
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
8268
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
8269
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
8270
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
8271
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
8272
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8273
- */
8274
-
8275
- /**
8276
- * Mega pixel image rendering library for iOS6 Safari
8277
- *
8278
- * Fixes iOS6 Safari's image file rendering issue for large size image (over mega-pixel),
8279
- * which causes unexpected subsampling when drawing it in canvas.
8280
- * By using this library, you can safely render the image with proper stretching.
8281
- *
8282
- * Copyright (c) 2012 Shinichi Tomita <shinichi.tomita@gmail.com>
8283
- * Released under the MIT license
8284
- */
8285
-
8286
- /**
8287
- @class moxie/runtime/html5/image/MegaPixel
8288
- @private
8289
- */
8290
- define("moxie/runtime/html5/image/MegaPixel", [], function() {
8291
-
8292
- /**
8293
- * Rendering image element (with resizing) into the canvas element
8294
- */
8295
- function renderImageToCanvas(img, canvas, options) {
8296
- var iw = img.naturalWidth, ih = img.naturalHeight;
8297
- var width = options.width, height = options.height;
8298
- var x = options.x || 0, y = options.y || 0;
8299
- var ctx = canvas.getContext('2d');
8300
- if (detectSubsampling(img)) {
8301
- iw /= 2;
8302
- ih /= 2;
8303
- }
8304
- var d = 1024; // size of tiling canvas
8305
- var tmpCanvas = document.createElement('canvas');
8306
- tmpCanvas.width = tmpCanvas.height = d;
8307
- var tmpCtx = tmpCanvas.getContext('2d');
8308
- var vertSquashRatio = detectVerticalSquash(img, iw, ih);
8309
- var sy = 0;
8310
- while (sy < ih) {
8311
- var sh = sy + d > ih ? ih - sy : d;
8312
- var sx = 0;
8313
- while (sx < iw) {
8314
- var sw = sx + d > iw ? iw - sx : d;
8315
- tmpCtx.clearRect(0, 0, d, d);
8316
- tmpCtx.drawImage(img, -sx, -sy);
8317
- var dx = (sx * width / iw + x) << 0;
8318
- var dw = Math.ceil(sw * width / iw);
8319
- var dy = (sy * height / ih / vertSquashRatio + y) << 0;
8320
- var dh = Math.ceil(sh * height / ih / vertSquashRatio);
8321
- ctx.drawImage(tmpCanvas, 0, 0, sw, sh, dx, dy, dw, dh);
8322
- sx += d;
8323
- }
8324
- sy += d;
8325
- }
8326
- tmpCanvas = tmpCtx = null;
8327
- }
8328
-
8329
- /**
8330
- * Detect subsampling in loaded image.
8331
- * In iOS, larger images than 2M pixels may be subsampled in rendering.
8332
- */
8333
- function detectSubsampling(img) {
8334
- var iw = img.naturalWidth, ih = img.naturalHeight;
8335
- if (iw * ih > 1024 * 1024) { // subsampling may happen over megapixel image
8336
- var canvas = document.createElement('canvas');
8337
- canvas.width = canvas.height = 1;
8338
- var ctx = canvas.getContext('2d');
8339
- ctx.drawImage(img, -iw + 1, 0);
8340
- // subsampled image becomes half smaller in rendering size.
8341
- // check alpha channel value to confirm image is covering edge pixel or not.
8342
- // if alpha value is 0 image is not covering, hence subsampled.
8343
- return ctx.getImageData(0, 0, 1, 1).data[3] === 0;
8344
- } else {
8345
- return false;
8346
- }
8347
- }
8348
-
8349
-
8350
- /**
8351
- * Detecting vertical squash in loaded image.
8352
- * Fixes a bug which squash image vertically while drawing into canvas for some images.
8353
- */
8354
- function detectVerticalSquash(img, iw, ih) {
8355
- var canvas = document.createElement('canvas');
8356
- canvas.width = 1;
8357
- canvas.height = ih;
8358
- var ctx = canvas.getContext('2d');
8359
- ctx.drawImage(img, 0, 0);
8360
- var data = ctx.getImageData(0, 0, 1, ih).data;
8361
- // search image edge pixel position in case it is squashed vertically.
8362
- var sy = 0;
8363
- var ey = ih;
8364
- var py = ih;
8365
- while (py > sy) {
8366
- var alpha = data[(py - 1) * 4 + 3];
8367
- if (alpha === 0) {
8368
- ey = py;
8369
- } else {
8370
- sy = py;
8371
- }
8372
- py = (ey + sy) >> 1;
8373
- }
8374
- canvas = null;
8375
- var ratio = (py / ih);
8376
- return (ratio === 0) ? 1 : ratio;
8377
- }
8378
-
8379
- return {
8380
- isSubsampled: detectSubsampling,
8381
- renderTo: renderImageToCanvas
8382
- };
8383
- });
8384
-
8385
- // Included from: src/javascript/runtime/html5/image/Image.js
8386
-
8387
- /**
8388
- * Image.js
8389
- *
8390
- * Copyright 2013, Moxiecode Systems AB
8391
- * Released under GPL License.
8392
- *
8393
- * License: http://www.plupload.com/license
8394
- * Contributing: http://www.plupload.com/contributing
8395
- */
8396
-
8397
- /**
8398
- @class moxie/runtime/html5/image/Image
8399
- @private
8400
- */
8401
- define("moxie/runtime/html5/image/Image", [
8402
- "moxie/runtime/html5/Runtime",
8403
- "moxie/core/utils/Basic",
8404
- "moxie/core/Exceptions",
8405
- "moxie/core/utils/Encode",
8406
- "moxie/file/File",
8407
- "moxie/runtime/html5/image/ImageInfo",
8408
- "moxie/runtime/html5/image/MegaPixel",
8409
- "moxie/core/utils/Mime",
8410
- "moxie/core/utils/Env"
8411
- ], function(extensions, Basic, x, Encode, File, ImageInfo, MegaPixel, Mime, Env) {
8412
-
8413
- function HTML5Image() {
8414
- var me = this
8415
- , _img, _imgInfo, _canvas, _binStr, _blob
8416
- , _modified = false // is set true whenever image is modified
8417
- , _preserveHeaders = true
8418
- ;
8419
-
8420
- Basic.extend(this, {
8421
- loadFromBlob: function(blob) {
8422
- var comp = this, I = comp.getRuntime()
8423
- , asBinary = arguments.length > 1 ? arguments[1] : true
8424
- ;
8425
-
8426
- if (!I.can('access_binary')) {
8427
- throw new x.RuntimeError(x.RuntimeError.NOT_SUPPORTED_ERR);
8428
- }
8429
-
8430
- _blob = blob;
8431
-
8432
- if (blob.isDetached()) {
8433
- _binStr = blob.getSource();
8434
- _preload.call(this, _binStr);
8435
- return;
8436
- } else {
8437
- _readAsDataUrl.call(this, blob.getSource(), function(dataUrl) {
8438
- if (asBinary) {
8439
- _binStr = _toBinary(dataUrl);
8440
- }
8441
- _preload.call(comp, dataUrl);
8442
- });
8443
- }
8444
- },
8445
-
8446
- loadFromImage: function(img, exact) {
8447
- this.meta = img.meta;
8448
-
8449
- _blob = new File(null, {
8450
- name: img.name,
8451
- size: img.size,
8452
- type: img.type
8453
- });
8454
-
8455
- _preload.call(this, exact ? (_binStr = img.getAsBinaryString()) : img.getAsDataURL());
8456
- },
8457
-
8458
- getInfo: function() {
8459
- var I = this.getRuntime(), info;
8460
-
8461
- if (!_imgInfo && _binStr && I.can('access_image_binary')) {
8462
- _imgInfo = new ImageInfo(_binStr);
8463
- }
8464
-
8465
- info = {
8466
- width: _getImg().width || 0,
8467
- height: _getImg().height || 0,
8468
- type: _blob.type || Mime.getFileMime(_blob.name),
8469
- size: _binStr && _binStr.length || _blob.size || 0,
8470
- name: _blob.name || '',
8471
- meta: _imgInfo && _imgInfo.meta || this.meta || {}
8472
- };
8473
-
8474
- return info;
8475
- },
8476
-
8477
- downsize: function() {
8478
- _downsize.apply(this, arguments);
8479
- },
8480
-
8481
- getAsCanvas: function() {
8482
- if (_canvas) {
8483
- _canvas.id = this.uid + '_canvas';
8484
- }
8485
- return _canvas;
8486
- },
8487
-
8488
- getAsBlob: function(type, quality) {
8489
- if (type !== this.type) {
8490
- // if different mime type requested prepare image for conversion
8491
- _downsize.call(this, this.width, this.height, false);
8492
- }
8493
- return new File(null, {
8494
- name: _blob.name || '',
8495
- type: type,
8496
- data: me.getAsBinaryString.call(this, type, quality)
8497
- });
8498
- },
8499
-
8500
- getAsDataURL: function(type) {
8501
- var quality = arguments[1] || 90;
8502
-
8503
- // if image has not been modified, return the source right away
8504
- if (!_modified) {
8505
- return _img.src;
8506
- }
8507
-
8508
- if ('image/jpeg' !== type) {
8509
- return _canvas.toDataURL('image/png');
8510
- } else {
8511
- try {
8512
- // older Geckos used to result in an exception on quality argument
8513
- return _canvas.toDataURL('image/jpeg', quality/100);
8514
- } catch (ex) {
8515
- return _canvas.toDataURL('image/jpeg');
8516
- }
8517
- }
8518
- },
8519
-
8520
- getAsBinaryString: function(type, quality) {
8521
- // if image has not been modified, return the source right away
8522
- if (!_modified) {
8523
- // if image was not loaded from binary string
8524
- if (!_binStr) {
8525
- _binStr = _toBinary(me.getAsDataURL(type, quality));
8526
- }
8527
- return _binStr;
8528
- }
8529
-
8530
- if ('image/jpeg' !== type) {
8531
- _binStr = _toBinary(me.getAsDataURL(type, quality));
8532
- } else {
8533
- var dataUrl;
8534
-
8535
- // if jpeg
8536
- if (!quality) {
8537
- quality = 90;
8538
- }
8539
-
8540
- try {
8541
- // older Geckos used to result in an exception on quality argument
8542
- dataUrl = _canvas.toDataURL('image/jpeg', quality/100);
8543
- } catch (ex) {
8544
- dataUrl = _canvas.toDataURL('image/jpeg');
8545
- }
8546
-
8547
- _binStr = _toBinary(dataUrl);
8548
-
8549
- if (_imgInfo) {
8550
- _binStr = _imgInfo.stripHeaders(_binStr);
8551
-
8552
- if (_preserveHeaders) {
8553
- // update dimensions info in exif
8554
- if (_imgInfo.meta && _imgInfo.meta.exif) {
8555
- _imgInfo.setExif({
8556
- PixelXDimension: this.width,
8557
- PixelYDimension: this.height
8558
- });
8559
- }
8560
-
8561
- // re-inject the headers
8562
- _binStr = _imgInfo.writeHeaders(_binStr);
8563
- }
8564
-
8565
- // will be re-created from fresh on next getInfo call
8566
- _imgInfo.purge();
8567
- _imgInfo = null;
8568
- }
8569
- }
8570
-
8571
- _modified = false;
8572
-
8573
- return _binStr;
8574
- },
8575
-
8576
- destroy: function() {
8577
- me = null;
8578
- _purge.call(this);
8579
- this.getRuntime().getShim().removeInstance(this.uid);
8580
- }
8581
- });
8582
-
8583
-
8584
- function _getImg() {
8585
- if (!_canvas && !_img) {
8586
- throw new x.ImageError(x.DOMException.INVALID_STATE_ERR);
8587
- }
8588
- return _canvas || _img;
8589
- }
8590
-
8591
-
8592
- function _toBinary(str) {
8593
- return Encode.atob(str.substring(str.indexOf('base64,') + 7));
8594
- }
8595
-
8596
-
8597
- function _toDataUrl(str, type) {
8598
- return 'data:' + (type || '') + ';base64,' + Encode.btoa(str);
8599
- }
8600
-
8601
-
8602
- function _preload(str) {
8603
- var comp = this;
8604
-
8605
- _img = new Image();
8606
- _img.onerror = function() {
8607
- _purge.call(this);
8608
- comp.trigger('error', new x.ImageError(x.ImageError.WRONG_FORMAT));
8609
- };
8610
- _img.onload = function() {
8611
- comp.trigger('load');
8612
- };
8613
-
8614
- _img.src = /^data:[^;]*;base64,/.test(str) ? str : _toDataUrl(str, _blob.type);
8615
- }
8616
-
8617
-
8618
- function _readAsDataUrl(file, callback) {
8619
- var comp = this, fr;
8620
-
8621
- // use FileReader if it's available
8622
- if (window.FileReader) {
8623
- fr = new FileReader();
8624
- fr.onload = function() {
8625
- callback(this.result);
8626
- };
8627
- fr.onerror = function() {
8628
- comp.trigger('error', new x.FileException(x.FileException.NOT_READABLE_ERR));
8629
- };
8630
- fr.readAsDataURL(file);
8631
- } else {
8632
- return callback(file.getAsDataURL());
8633
- }
8634
- }
8635
-
8636
- function _downsize(width, height, crop, preserveHeaders) {
8637
- var self = this
8638
- , scale
8639
- , mathFn
8640
- , x = 0
8641
- , y = 0
8642
- , img
8643
- , destWidth
8644
- , destHeight
8645
- , orientation
8646
- ;
8647
-
8648
- _preserveHeaders = preserveHeaders; // we will need to check this on export (see getAsBinaryString())
8649
-
8650
- // take into account orientation tag
8651
- orientation = (this.meta && this.meta.tiff && this.meta.tiff.Orientation) || 1;
8652
-
8653
- if (Basic.inArray(orientation, [5,6,7,8]) !== -1) { // values that require 90 degree rotation
8654
- // swap dimensions
8655
- var tmp = width;
8656
- width = height;
8657
- height = tmp;
8658
- }
8659
-
8660
- img = _getImg();
8661
-
8662
- // unify dimensions
8663
- mathFn = !crop ? Math.min : Math.max;
8664
- scale = mathFn(width/img.width, height/img.height);
8665
-
8666
- // we only downsize here
8667
- if (scale > 1 && (!crop || preserveHeaders)) { // when cropping one of dimensions may still exceed max, so process it anyway
8668
- this.trigger('Resize');
8669
- return;
8670
- }
8671
-
8672
- // prepare canvas if necessary
8673
- if (!_canvas) {
8674
- _canvas = document.createElement("canvas");
8675
- }
8676
-
8677
- // calculate dimensions of proportionally resized image
8678
- destWidth = Math.round(img.width * scale);
8679
- destHeight = Math.round(img.height * scale);
8680
-
8681
-
8682
- // scale image and canvas
8683
- if (crop) {
8684
- _canvas.width = width;
8685
- _canvas.height = height;
8686
-
8687
- // if dimensions of the resulting image still larger than canvas, center it
8688
- if (destWidth > width) {
8689
- x = Math.round((destWidth - width) / 2);
8690
- }
8691
-
8692
- if (destHeight > height) {
8693
- y = Math.round((destHeight - height) / 2);
8694
- }
8695
- } else {
8696
- _canvas.width = destWidth;
8697
- _canvas.height = destHeight;
8698
- }
8699
-
8700
- // rotate if required, according to orientation tag
8701
- if (!_preserveHeaders) {
8702
- _rotateToOrientaion(_canvas.width, _canvas.height, orientation);
8703
- }
8704
-
8705
- _drawToCanvas.call(this, img, _canvas, -x, -y, destWidth, destHeight);
8706
-
8707
- this.width = _canvas.width;
8708
- this.height = _canvas.height;
8709
-
8710
- _modified = true;
8711
- self.trigger('Resize');
8712
- }
8713
-
8714
-
8715
- function _drawToCanvas(img, canvas, x, y, w, h) {
8716
- if (Env.OS === 'iOS') {
8717
- // avoid squish bug in iOS6
8718
- MegaPixel.renderTo(img, canvas, { width: w, height: h, x: x, y: y });
8719
- } else {
8720
- var ctx = canvas.getContext('2d');
8721
- ctx.drawImage(img, x, y, w, h);
8722
- }
8723
- }
8724
-
8725
-
8726
- /**
8727
- * Transform canvas coordination according to specified frame size and orientation
8728
- * Orientation value is from EXIF tag
8729
- * @author Shinichi Tomita <shinichi.tomita@gmail.com>
8730
- */
8731
- function _rotateToOrientaion(width, height, orientation) {
8732
- switch (orientation) {
8733
- case 5:
8734
- case 6:
8735
- case 7:
8736
- case 8:
8737
- _canvas.width = height;
8738
- _canvas.height = width;
8739
- break;
8740
- default:
8741
- _canvas.width = width;
8742
- _canvas.height = height;
8743
- }
8744
-
8745
- /**
8746
- 1 = The 0th row is at the visual top of the image, and the 0th column is the visual left-hand side.
8747
- 2 = The 0th row is at the visual top of the image, and the 0th column is the visual right-hand side.
8748
- 3 = The 0th row is at the visual bottom of the image, and the 0th column is the visual right-hand side.
8749
- 4 = The 0th row is at the visual bottom of the image, and the 0th column is the visual left-hand side.
8750
- 5 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual top.
8751
- 6 = The 0th row is the visual right-hand side of the image, and the 0th column is the visual top.
8752
- 7 = The 0th row is the visual right-hand side of the image, and the 0th column is the visual bottom.
8753
- 8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.
8754
- */
8755
-
8756
- var ctx = _canvas.getContext('2d');
8757
- switch (orientation) {
8758
- case 2:
8759
- // horizontal flip
8760
- ctx.translate(width, 0);
8761
- ctx.scale(-1, 1);
8762
- break;
8763
- case 3:
8764
- // 180 rotate left
8765
- ctx.translate(width, height);
8766
- ctx.rotate(Math.PI);
8767
- break;
8768
- case 4:
8769
- // vertical flip
8770
- ctx.translate(0, height);
8771
- ctx.scale(1, -1);
8772
- break;
8773
- case 5:
8774
- // vertical flip + 90 rotate right
8775
- ctx.rotate(0.5 * Math.PI);
8776
- ctx.scale(1, -1);
8777
- break;
8778
- case 6:
8779
- // 90 rotate right
8780
- ctx.rotate(0.5 * Math.PI);
8781
- ctx.translate(0, -height);
8782
- break;
8783
- case 7:
8784
- // horizontal flip + 90 rotate right
8785
- ctx.rotate(0.5 * Math.PI);
8786
- ctx.translate(width, -height);
8787
- ctx.scale(-1, 1);
8788
- break;
8789
- case 8:
8790
- // 90 rotate left
8791
- ctx.rotate(-0.5 * Math.PI);
8792
- ctx.translate(-width, 0);
8793
- break;
8794
- }
8795
- }
8796
-
8797
-
8798
- function _purge() {
8799
- if (_imgInfo) {
8800
- _imgInfo.purge();
8801
- _imgInfo = null;
8802
- }
8803
- _binStr = _img = _canvas = _blob = null;
8804
- _modified = false;
8805
- }
8806
- }
8807
-
8808
- return (extensions.Image = HTML5Image);
8809
- });
8810
-
8811
- // Included from: src/javascript/runtime/flash/Runtime.js
8812
-
8813
- /**
8814
- * Runtime.js
8815
- *
8816
- * Copyright 2013, Moxiecode Systems AB
8817
- * Released under GPL License.
8818
- *
8819
- * License: http://www.plupload.com/license
8820
- * Contributing: http://www.plupload.com/contributing
8821
- */
8822
-
8823
- /*global ActiveXObject:true */
8824
-
8825
- /**
8826
- Defines constructor for Flash runtime.
8827
-
8828
- @class moxie/runtime/flash/Runtime
8829
- @private
8830
- */
8831
- define("moxie/runtime/flash/Runtime", [
8832
- "moxie/core/utils/Basic",
8833
- "moxie/core/utils/Env",
8834
- "moxie/core/utils/Dom",
8835
- "moxie/core/Exceptions",
8836
- "moxie/runtime/Runtime"
8837
- ], function(Basic, Env, Dom, x, Runtime) {
8838
-
8839
- var type = 'flash', extensions = {};
8840
-
8841
- /**
8842
- Get the version of the Flash Player
8843
-
8844
- @method getShimVersion
8845
- @private
8846
- @return {Number} Flash Player version
8847
- */
8848
- function getShimVersion() {
8849
- var version;
8850
-
8851
- try {
8852
- version = navigator.plugins['Shockwave Flash'];
8853
- version = version.description;
8854
- } catch (e1) {
8855
- try {
8856
- version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
8857
- } catch (e2) {
8858
- version = '0.0';
8859
- }
8860
- }
8861
- version = version.match(/\d+/g);
8862
- return parseFloat(version[0] + '.' + version[1]);
8863
- }
8864
-
8865
- /**
8866
- Constructor for the Flash Runtime
8867
-
8868
- @class FlashRuntime
8869
- @extends Runtime
8870
- */
8871
- function FlashRuntime(options) {
8872
- var I = this, initTimer;
8873
-
8874
- options = Basic.extend({ swf_url: Env.swf_url }, options);
8875
-
8876
- Runtime.call(this, options, type, {
8877
- access_binary: function(value) {
8878
- return value && I.mode === 'browser';
8879
- },
8880
- access_image_binary: function(value) {
8881
- return value && I.mode === 'browser';
8882
- },
8883
- display_media: Runtime.capTrue,
8884
- do_cors: Runtime.capTrue,
8885
- drag_and_drop: false,
8886
- report_upload_progress: function() {
8887
- return I.mode === 'client';
8888
- },
8889
- resize_image: Runtime.capTrue,
8890
- return_response_headers: false,
8891
- return_response_type: function(responseType) {
8892
- if (responseType === 'json' && !!window.JSON) {
8893
- return true;
8894
- }
8895
- return !Basic.arrayDiff(responseType, ['', 'text', 'document']) || I.mode === 'browser';
8896
- },
8897
- return_status_code: function(code) {
8898
- return I.mode === 'browser' || !Basic.arrayDiff(code, [200, 404]);
8899
- },
8900
- select_file: Runtime.capTrue,
8901
- select_multiple: Runtime.capTrue,
8902
- send_binary_string: function(value) {
8903
- return value && I.mode === 'browser';
8904
- },
8905
- send_browser_cookies: function(value) {
8906
- return value && I.mode === 'browser';
8907
- },
8908
- send_custom_headers: function(value) {
8909
- return value && I.mode === 'browser';
8910
- },
8911
- send_multipart: Runtime.capTrue,
8912
- slice_blob: Runtime.capTrue,
8913
- stream_upload: function(value) {
8914
- return value && I.mode === 'browser';
8915
- },
8916
- summon_file_dialog: false,
8917
- upload_filesize: function(size) {
8918
- return Basic.parseSizeStr(size) <= 2097152 || I.mode === 'client';
8919
- },
8920
- use_http_method: function(methods) {
8921
- return !Basic.arrayDiff(methods, ['GET', 'POST']);
8922
- }
8923
- }, {
8924
- // capabilities that require specific mode
8925
- access_binary: function(value) {
8926
- return value ? 'browser' : 'client';
8927
- },
8928
- access_image_binary: function(value) {
8929
- return value ? 'browser' : 'client';
8930
- },
8931
- report_upload_progress: function(value) {
8932
- return value ? 'browser' : 'client';
8933
- },
8934
- return_response_type: function(responseType) {
8935
- return Basic.arrayDiff(responseType, ['', 'text', 'json', 'document']) ? 'browser' : ['client', 'browser'];
8936
- },
8937
- return_status_code: function(code) {
8938
- return Basic.arrayDiff(code, [200, 404]) ? 'browser' : ['client', 'browser'];
8939
- },
8940
- send_binary_string: function(value) {
8941
- return value ? 'browser' : 'client';
8942
- },
8943
- send_browser_cookies: function(value) {
8944
- return value ? 'browser' : 'client';
8945
- },
8946
- send_custom_headers: function(value) {
8947
- return value ? 'browser' : 'client';
8948
- },
8949
- stream_upload: function(value) {
8950
- return value ? 'client' : 'browser';
8951
- },
8952
- upload_filesize: function(size) {
8953
- return Basic.parseSizeStr(size) >= 2097152 ? 'client' : 'browser';
8954
- }
8955
- }, 'client');
8956
-
8957
-
8958
- // minimal requirement for Flash Player version
8959
- if (getShimVersion() < 10) {
8960
- this.mode = false; // with falsy mode, runtime won't operable, no matter what the mode was before
8961
- }
8962
-
8963
-
8964
- Basic.extend(this, {
8965
-
8966
- getShim: function() {
8967
- return Dom.get(this.uid);
8968
- },
8969
-
8970
- shimExec: function(component, action) {
8971
- var args = [].slice.call(arguments, 2);
8972
- return I.getShim().exec(this.uid, component, action, args);
8973
- },
8974
-
8975
- init: function() {
8976
- var html, el, container;
8977
-
8978
- container = this.getShimContainer();
8979
-
8980
- // if not the minimal height, shims are not initialized in older browsers (e.g FF3.6, IE6,7,8, Safari 4.0,5.0, etc)
8981
- Basic.extend(container.style, {
8982
- position: 'absolute',
8983
- top: '-8px',
8984
- left: '-8px',
8985
- width: '9px',
8986
- height: '9px',
8987
- overflow: 'hidden'
8988
- });
8989
-
8990
- // insert flash object
8991
- html = '<object id="' + this.uid + '" type="application/x-shockwave-flash" data="' + options.swf_url + '" ';
8992
-
8993
- if (Env.browser === 'IE') {
8994
- html += 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ';
8995
- }
8996
-
8997
- html += 'width="100%" height="100%" style="outline:0">' +
8998
- '<param name="movie" value="' + options.swf_url + '" />' +
8999
- '<param name="flashvars" value="uid=' + escape(this.uid) + '&target=' + Env.global_event_dispatcher + '" />' +
9000
- '<param name="wmode" value="transparent" />' +
9001
- '<param name="allowscriptaccess" value="always" />' +
9002
- '</object>';
9003
-
9004
- if (Env.browser === 'IE') {
9005
- el = document.createElement('div');
9006
- container.appendChild(el);
9007
- el.outerHTML = html;
9008
- el = container = null; // just in case
9009
- } else {
9010
- container.innerHTML = html;
9011
- }
9012
-
9013
- // Init is dispatched by the shim
9014
- initTimer = setTimeout(function() {
9015
- if (I && !I.initialized) { // runtime might be already destroyed by this moment
9016
- I.trigger("Error", new x.RuntimeError(x.RuntimeError.NOT_INIT_ERR));
9017
- }
9018
- }, 5000);
9019
- },
9020
-
9021
- destroy: (function(destroy) { // extend default destroy method
9022
- return function() {
9023
- destroy.call(I);
9024
- clearTimeout(initTimer); // initialization check might be still onwait
9025
- options = initTimer = destroy = I = null;
9026
- };
9027
- }(this.destroy))
9028
-
9029
- }, extensions);
9030
- }
9031
-
9032
- Runtime.addConstructor(type, FlashRuntime);
9033
-
9034
- return extensions;
9035
- });
9036
-
9037
- // Included from: src/javascript/runtime/flash/file/Blob.js
9038
-
9039
- /**
9040
- * Blob.js
9041
- *
9042
- * Copyright 2013, Moxiecode Systems AB
9043
- * Released under GPL License.
9044
- *
9045
- * License: http://www.plupload.com/license
9046
- * Contributing: http://www.plupload.com/contributing
9047
- */
9048
-
9049
- /**
9050
- @class moxie/runtime/flash/file/Blob
9051
- @private
9052
- */
9053
- define("moxie/runtime/flash/file/Blob", [
9054
- "moxie/runtime/flash/Runtime",
9055
- "moxie/file/Blob"
9056
- ], function(extensions, Blob) {
9057
-
9058
- var FlashBlob = {
9059
- slice: function(blob, start, end, type) {
9060
- var self = this.getRuntime();
9061
-
9062
- if (start < 0) {
9063
- start = Math.max(blob.size + start, 0);
9064
- } else if (start > 0) {
9065
- start = Math.min(start, blob.size);
9066
- }
9067
-
9068
- if (end < 0) {
9069
- end = Math.max(blob.size + end, 0);
9070
- } else if (end > 0) {
9071
- end = Math.min(end, blob.size);
9072
- }
9073
-
9074
- blob = self.shimExec.call(this, 'Blob', 'slice', start, end, type || '');
9075
-
9076
- if (blob) {
9077
- blob = new Blob(self.uid, blob);
9078
- }
9079
- return blob;
9080
- }
9081
- };
9082
-
9083
- return (extensions.Blob = FlashBlob);
9084
- });
9085
-
9086
- // Included from: src/javascript/runtime/flash/file/FileInput.js
9087
-
9088
- /**
9089
- * FileInput.js
9090
- *
9091
- * Copyright 2013, Moxiecode Systems AB
9092
- * Released under GPL License.
9093
- *
9094
- * License: http://www.plupload.com/license
9095
- * Contributing: http://www.plupload.com/contributing
9096
- */
9097
-
9098
- /**
9099
- @class moxie/runtime/flash/file/FileInput
9100
- @private
9101
- */
9102
- define("moxie/runtime/flash/file/FileInput", [
9103
- "moxie/runtime/flash/Runtime"
9104
- ], function(extensions) {
9105
-
9106
- var FileInput = {
9107
- init: function(options) {
9108
- this.getRuntime().shimExec.call(this, 'FileInput', 'init', {
9109
- name: options.name,
9110
- accept: options.accept,
9111
- multiple: options.multiple
9112
- });
9113
- this.trigger('ready');
9114
- }
9115
- };
9116
-
9117
- return (extensions.FileInput = FileInput);
9118
- });
9119
-
9120
- // Included from: src/javascript/runtime/flash/file/FileReader.js
9121
-
9122
- /**
9123
- * FileReader.js
9124
- *
9125
- * Copyright 2013, Moxiecode Systems AB
9126
- * Released under GPL License.
9127
- *
9128
- * License: http://www.plupload.com/license
9129
- * Contributing: http://www.plupload.com/contributing
9130
- */
9131
-
9132
- /**
9133
- @class moxie/runtime/flash/file/FileReader
9134
- @private
9135
- */
9136
- define("moxie/runtime/flash/file/FileReader", [
9137
- "moxie/runtime/flash/Runtime",
9138
- "moxie/core/utils/Encode"
9139
- ], function(extensions, Encode) {
9140
-
9141
- var _result = '';
9142
-
9143
- function _formatData(data, op) {
9144
- switch (op) {
9145
- case 'readAsText':
9146
- return Encode.atob(data, 'utf8');
9147
- case 'readAsBinaryString':
9148
- return Encode.atob(data);
9149
- case 'readAsDataURL':
9150
- return data;
9151
- }
9152
- return null;
9153
- }
9154
-
9155
- var FileReader = {
9156
- read: function(op, blob) {
9157
- var target = this, self = target.getRuntime();
9158
-
9159
- // special prefix for DataURL read mode
9160
- if (op === 'readAsDataURL') {
9161
- _result = 'data:' + (blob.type || '') + ';base64,';
9162
- }
9163
-
9164
- target.bind('Progress', function(e, data) {
9165
- if (data) {
9166
- _result += _formatData(data, op);
9167
- }
9168
- });
9169
-
9170
- return self.shimExec.call(this, 'FileReader', 'readAsBase64', blob.uid);
9171
- },
9172
-
9173
- getResult: function() {
9174
- return _result;
9175
- },
9176
-
9177
- destroy: function() {
9178
- _result = null;
9179
- }
9180
- };
9181
-
9182
- return (extensions.FileReader = FileReader);
9183
- });
9184
-
9185
- // Included from: src/javascript/runtime/flash/file/FileReaderSync.js
9186
-
9187
- /**
9188
- * FileReaderSync.js
9189
- *
9190
- * Copyright 2013, Moxiecode Systems AB
9191
- * Released under GPL License.
9192
- *
9193
- * License: http://www.plupload.com/license
9194
- * Contributing: http://www.plupload.com/contributing
9195
- */
9196
-
9197
- /**
9198
- @class moxie/runtime/flash/file/FileReaderSync
9199
- @private
9200
- */
9201
- define("moxie/runtime/flash/file/FileReaderSync", [
9202
- "moxie/runtime/flash/Runtime",
9203
- "moxie/core/utils/Encode"
9204
- ], function(extensions, Encode) {
9205
-
9206
- function _formatData(data, op) {
9207
- switch (op) {
9208
- case 'readAsText':
9209
- return Encode.atob(data, 'utf8');
9210
- case 'readAsBinaryString':
9211
- return Encode.atob(data);
9212
- case 'readAsDataURL':
9213
- return data;
9214
- }
9215
- return null;
9216
- }
9217
-
9218
- var FileReaderSync = {
9219
- read: function(op, blob) {
9220
- var result, self = this.getRuntime();
9221
-
9222
- result = self.shimExec.call(this, 'FileReaderSync', 'readAsBase64', blob.uid);
9223
- if (!result) {
9224
- return null; // or throw ex
9225
- }
9226
-
9227
- // special prefix for DataURL read mode
9228
- if (op === 'readAsDataURL') {
9229
- result = 'data:' + (blob.type || '') + ';base64,' + result;
9230
- }
9231
-
9232
- return _formatData(result, op, blob.type);
9233
- }
9234
- };
9235
-
9236
- return (extensions.FileReaderSync = FileReaderSync);
9237
- });
9238
-
9239
- // Included from: src/javascript/runtime/flash/xhr/XMLHttpRequest.js
9240
-
9241
- /**
9242
- * XMLHttpRequest.js
9243
- *
9244
- * Copyright 2013, Moxiecode Systems AB
9245
- * Released under GPL License.
9246
- *
9247
- * License: http://www.plupload.com/license
9248
- * Contributing: http://www.plupload.com/contributing
9249
- */
9250
-
9251
- /**
9252
- @class moxie/runtime/flash/xhr/XMLHttpRequest
9253
- @private
9254
- */
9255
- define("moxie/runtime/flash/xhr/XMLHttpRequest", [
9256
- "moxie/runtime/flash/Runtime",
9257
- "moxie/core/utils/Basic",
9258
- "moxie/file/Blob",
9259
- "moxie/file/File",
9260
- "moxie/file/FileReaderSync",
9261
- "moxie/xhr/FormData",
9262
- "moxie/runtime/Transporter"
9263
- ], function(extensions, Basic, Blob, File, FileReaderSync, FormData, Transporter) {
9264
-
9265
- var XMLHttpRequest = {
9266
-
9267
- send: function(meta, data) {
9268
- var target = this, self = target.getRuntime();
9269
-
9270
- function send() {
9271
- meta.transport = self.mode;
9272
- self.shimExec.call(target, 'XMLHttpRequest', 'send', meta, data);
9273
- }
9274
-
9275
-
9276
- function appendBlob(name, blob) {
9277
- self.shimExec.call(target, 'XMLHttpRequest', 'appendBlob', name, blob.uid);
9278
- data = null;
9279
- send();
9280
- }
9281
-
9282
-
9283
- function attachBlob(blob, cb) {
9284
- var tr = new Transporter();
9285
-
9286
- tr.bind("TransportingComplete", function() {
9287
- cb(this.result);
9288
- });
9289
-
9290
- tr.transport(blob.getSource(), blob.type, {
9291
- ruid: self.uid
9292
- });
9293
- }
9294
-
9295
- // copy over the headers if any
9296
- if (!Basic.isEmptyObj(meta.headers)) {
9297
- Basic.each(meta.headers, function(value, header) {
9298
- self.shimExec.call(target, 'XMLHttpRequest', 'setRequestHeader', header, value.toString()); // Silverlight doesn't accept integers into the arguments of type object
9299
- });
9300
- }
9301
-
9302
- // transfer over multipart params and blob itself
9303
- if (data instanceof FormData) {
9304
- var blobField;
9305
- data.each(function(value, name) {
9306
- if (value instanceof Blob) {
9307
- blobField = name;
9308
- } else {
9309
- self.shimExec.call(target, 'XMLHttpRequest', 'append', name, value);
9310
- }
9311
- });
9312
-
9313
- if (!data.hasBlob()) {
9314
- data = null;
9315
- send();
9316
- } else {
9317
- var blob = data.getBlob();
9318
- if (blob.isDetached()) {
9319
- attachBlob(blob, function(attachedBlob) {
9320
- blob.destroy();
9321
- appendBlob(blobField, attachedBlob);
9322
- });
9323
- } else {
9324
- appendBlob(blobField, blob);
9325
- }
9326
- }
9327
- } else if (data instanceof Blob) {
9328
- if (data.isDetached()) {
9329
- attachBlob(data, function(attachedBlob) {
9330
- data.destroy();
9331
- data = attachedBlob.uid;
9332
- send();
9333
- });
9334
- } else {
9335
- data = data.uid;
9336
- send();
9337
- }
9338
- } else {
9339
- send();
9340
- }
9341
- },
9342
-
9343
- getResponse: function(responseType) {
9344
- var frs, blob, self = this.getRuntime();
9345
-
9346
- blob = self.shimExec.call(this, 'XMLHttpRequest', 'getResponseAsBlob');
9347
-
9348
- if (blob) {
9349
- blob = new File(self.uid, blob);
9350
-
9351
- if ('blob' === responseType) {
9352
- return blob;
9353
- }
9354
-
9355
- try {
9356
- frs = new FileReaderSync();
9357
-
9358
- if (!!~Basic.inArray(responseType, ["", "text"])) {
9359
- return frs.readAsText(blob);
9360
- } else if ('json' === responseType && !!window.JSON) {
9361
- return JSON.parse(frs.readAsText(blob));
9362
- }
9363
- } finally {
9364
- blob.destroy();
9365
- }
9366
- }
9367
- return null;
9368
- },
9369
-
9370
- abort: function(upload_complete_flag) {
9371
- var self = this.getRuntime();
9372
-
9373
- self.shimExec.call(this, 'XMLHttpRequest', 'abort');
9374
-
9375
- this.dispatchEvent('readystatechange');
9376
- // this.dispatchEvent('progress');
9377
- this.dispatchEvent('abort');
9378
-
9379
- //if (!upload_complete_flag) {
9380
- // this.dispatchEvent('uploadprogress');
9381
- //}
9382
- }
9383
- };
9384
-
9385
- return (extensions.XMLHttpRequest = XMLHttpRequest);
9386
- });
9387
-
9388
- // Included from: src/javascript/runtime/flash/runtime/Transporter.js
9389
-
9390
- /**
9391
- * Transporter.js
9392
- *
9393
- * Copyright 2013, Moxiecode Systems AB
9394
- * Released under GPL License.
9395
- *
9396
- * License: http://www.plupload.com/license
9397
- * Contributing: http://www.plupload.com/contributing
9398
- */
9399
-
9400
- /**
9401
- @class moxie/runtime/flash/runtime/Transporter
9402
- @private
9403
- */
9404
- define("moxie/runtime/flash/runtime/Transporter", [
9405
- "moxie/runtime/flash/Runtime",
9406
- "moxie/file/Blob"
9407
- ], function(extensions, Blob) {
9408
-
9409
- var Transporter = {
9410
- getAsBlob: function(type) {
9411
- var self = this.getRuntime()
9412
- , blob = self.shimExec.call(this, 'Transporter', 'getAsBlob', type)
9413
- ;
9414
- if (blob) {
9415
- return new Blob(self.uid, blob);
9416
- }
9417
- return null;
9418
- }
9419
- };
9420
-
9421
- return (extensions.Transporter = Transporter);
9422
- });
9423
-
9424
- // Included from: src/javascript/runtime/flash/image/Image.js
9425
-
9426
- /**
9427
- * Image.js
9428
- *
9429
- * Copyright 2013, Moxiecode Systems AB
9430
- * Released under GPL License.
9431
- *
9432
- * License: http://www.plupload.com/license
9433
- * Contributing: http://www.plupload.com/contributing
9434
- */
9435
-
9436
- /**
9437
- @class moxie/runtime/flash/image/Image
9438
- @private
9439
- */
9440
- define("moxie/runtime/flash/image/Image", [
9441
- "moxie/runtime/flash/Runtime",
9442
- "moxie/core/utils/Basic",
9443
- "moxie/runtime/Transporter",
9444
- "moxie/file/Blob",
9445
- "moxie/file/FileReaderSync"
9446
- ], function(extensions, Basic, Transporter, Blob, FileReaderSync) {
9447
-
9448
- var Image = {
9449
- loadFromBlob: function(blob) {
9450
- var comp = this, self = comp.getRuntime();
9451
-
9452
- function exec(srcBlob) {
9453
- self.shimExec.call(comp, 'Image', 'loadFromBlob', srcBlob.uid);
9454
- comp = self = null;
9455
- }
9456
-
9457
- if (blob.isDetached()) { // binary string
9458
- var tr = new Transporter();
9459
- tr.bind("TransportingComplete", function() {
9460
- exec(tr.result.getSource());
9461
- });
9462
- tr.transport(blob.getSource(), blob.type, { ruid: self.uid });
9463
- } else {
9464
- exec(blob.getSource());
9465
- }
9466
- },
9467
-
9468
- loadFromImage: function(img) {
9469
- var self = this.getRuntime();
9470
- return self.shimExec.call(this, 'Image', 'loadFromImage', img.uid);
9471
- },
9472
-
9473
- getAsBlob: function(type, quality) {
9474
- var self = this.getRuntime()
9475
- , blob = self.shimExec.call(this, 'Image', 'getAsBlob', type, quality)
9476
- ;
9477
- if (blob) {
9478
- return new Blob(self.uid, blob);
9479
- }
9480
- return null;
9481
- },
9482
-
9483
- getAsDataURL: function() {
9484
- var self = this.getRuntime()
9485
- , blob = self.Image.getAsBlob.apply(this, arguments)
9486
- , frs
9487
- ;
9488
- if (!blob) {
9489
- return null;
9490
- }
9491
- frs = new FileReaderSync();
9492
- return frs.readAsDataURL(blob);
9493
- }
9494
- };
9495
-
9496
- return (extensions.Image = Image);
9497
- });
9498
-
9499
- // Included from: src/javascript/runtime/silverlight/Runtime.js
9500
-
9501
- /**
9502
- * RunTime.js
9503
- *
9504
- * Copyright 2013, Moxiecode Systems AB
9505
- * Released under GPL License.
9506
- *
9507
- * License: http://www.plupload.com/license
9508
- * Contributing: http://www.plupload.com/contributing
9509
- */
9510
-
9511
- /*global ActiveXObject:true */
9512
-
9513
- /**
9514
- Defines constructor for Silverlight runtime.
9515
-
9516
- @class moxie/runtime/silverlight/Runtime
9517
- @private
9518
- */
9519
- define("moxie/runtime/silverlight/Runtime", [
9520
- "moxie/core/utils/Basic",
9521
- "moxie/core/utils/Env",
9522
- "moxie/core/utils/Dom",
9523
- "moxie/core/Exceptions",
9524
- "moxie/runtime/Runtime"
9525
- ], function(Basic, Env, Dom, x, Runtime) {
9526
-
9527
- var type = "silverlight", extensions = {};
9528
-
9529
- function isInstalled(version) {
9530
- var isVersionSupported = false, control = null, actualVer,
9531
- actualVerArray, reqVerArray, requiredVersionPart, actualVersionPart, index = 0;
9532
-
9533
- try {
9534
- try {
9535
- control = new ActiveXObject('AgControl.AgControl');
9536
-
9537
- if (control.IsVersionSupported(version)) {
9538
- isVersionSupported = true;
9539
- }
9540
-
9541
- control = null;
9542
- } catch (e) {
9543
- var plugin = navigator.plugins["Silverlight Plug-In"];
9544
-
9545
- if (plugin) {
9546
- actualVer = plugin.description;
9547
-
9548
- if (actualVer === "1.0.30226.2") {
9549
- actualVer = "2.0.30226.2";
9550
- }
9551
-
9552
- actualVerArray = actualVer.split(".");
9553
-
9554
- while (actualVerArray.length > 3) {
9555
- actualVerArray.pop();
9556
- }
9557
-
9558
- while ( actualVerArray.length < 4) {
9559
- actualVerArray.push(0);
9560
- }
9561
-
9562
- reqVerArray = version.split(".");
9563
-
9564
- while (reqVerArray.length > 4) {
9565
- reqVerArray.pop();
9566
- }
9567
-
9568
- do {
9569
- requiredVersionPart = parseInt(reqVerArray[index], 10);
9570
- actualVersionPart = parseInt(actualVerArray[index], 10);
9571
- index++;
9572
- } while (index < reqVerArray.length && requiredVersionPart === actualVersionPart);
9573
-
9574
- if (requiredVersionPart <= actualVersionPart && !isNaN(requiredVersionPart)) {
9575
- isVersionSupported = true;
9576
- }
9577
- }
9578
- }
9579
- } catch (e2) {
9580
- isVersionSupported = false;
9581
- }
9582
-
9583
- return isVersionSupported;
9584
- }
9585
-
9586
- /**
9587
- Constructor for the Silverlight Runtime
9588
-
9589
- @class SilverlightRuntime
9590
- @extends Runtime
9591
- */
9592
- function SilverlightRuntime(options) {
9593
- var I = this, initTimer;
9594
-
9595
- options = Basic.extend({ xap_url: Env.xap_url }, options);
9596
-
9597
- Runtime.call(this, options, type, {
9598
- access_binary: Runtime.capTrue,
9599
- access_image_binary: Runtime.capTrue,
9600
- display_media: Runtime.capTrue,
9601
- do_cors: Runtime.capTrue,
9602
- drag_and_drop: false,
9603
- report_upload_progress: Runtime.capTrue,
9604
- resize_image: Runtime.capTrue,
9605
- return_response_headers: function(value) {
9606
- return value && I.mode === 'client';
9607
- },
9608
- return_response_type: function(responseType) {
9609
- if (responseType !== 'json') {
9610
- return true;
9611
- } else {
9612
- return !!window.JSON;
9613
- }
9614
- },
9615
- return_status_code: function(code) {
9616
- return I.mode === 'client' || !Basic.arrayDiff(code, [200, 404]);
9617
- },
9618
- select_file: Runtime.capTrue,
9619
- select_multiple: Runtime.capTrue,
9620
- send_binary_string: Runtime.capTrue,
9621
- send_browser_cookies: function(value) {
9622
- return value && I.mode === 'browser';
9623
- },
9624
- send_custom_headers: function(value) {
9625
- return value && I.mode === 'client';
9626
- },
9627
- send_multipart: Runtime.capTrue,
9628
- slice_blob: Runtime.capTrue,
9629
- stream_upload: true,
9630
- summon_file_dialog: false,
9631
- upload_filesize: Runtime.capTrue,
9632
- use_http_method: function(methods) {
9633
- return I.mode === 'client' || !Basic.arrayDiff(methods, ['GET', 'POST']);
9634
- }
9635
- }, {
9636
- // capabilities that require specific mode
9637
- return_response_headers: function(value) {
9638
- return value ? 'client' : 'browser';
9639
- },
9640
- return_status_code: function(code) {
9641
- return Basic.arrayDiff(code, [200, 404]) ? 'client' : ['client', 'browser'];
9642
- },
9643
- send_browser_cookies: function(value) {
9644
- return value ? 'browser' : 'client';
9645
- },
9646
- send_custom_headers: function(value) {
9647
- return value ? 'client' : 'browser';
9648
- },
9649
- use_http_method: function(methods) {
9650
- return Basic.arrayDiff(methods, ['GET', 'POST']) ? 'client' : ['client', 'browser'];
9651
- }
9652
- });
9653
-
9654
-
9655
- // minimal requirement
9656
- if (!isInstalled('2.0.31005.0') || Env.browser === 'Opera') {
9657
- this.mode = false;
9658
- }
9659
-
9660
-
9661
- Basic.extend(this, {
9662
- getShim: function() {
9663
- return Dom.get(this.uid).content.Moxie;
9664
- },
9665
-
9666
- shimExec: function(component, action) {
9667
- var args = [].slice.call(arguments, 2);
9668
- return I.getShim().exec(this.uid, component, action, args);
9669
- },
9670
-
9671
- init : function() {
9672
- var container;
9673
-
9674
- container = this.getShimContainer();
9675
-
9676
- container.innerHTML = '<object id="' + this.uid + '" data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%" style="outline:none;">' +
9677
- '<param name="source" value="' + options.xap_url + '"/>' +
9678
- '<param name="background" value="Transparent"/>' +
9679
- '<param name="windowless" value="true"/>' +
9680
- '<param name="enablehtmlaccess" value="true"/>' +
9681
- '<param name="initParams" value="uid=' + this.uid + ',target=' + Env.global_event_dispatcher + '"/>' +
9682
- '</object>';
9683
-
9684
- // Init is dispatched by the shim
9685
- initTimer = setTimeout(function() {
9686
- if (I && !I.initialized) { // runtime might be already destroyed by this moment
9687
- I.trigger("Error", new x.RuntimeError(x.RuntimeError.NOT_INIT_ERR));
9688
- }
9689
- }, Env.OS !== 'Windows'? 10000 : 5000); // give it more time to initialize in non Windows OS (like Mac)
9690
- },
9691
-
9692
- destroy: (function(destroy) { // extend default destroy method
9693
- return function() {
9694
- destroy.call(I);
9695
- clearTimeout(initTimer); // initialization check might be still onwait
9696
- options = initTimer = destroy = I = null;
9697
- };
9698
- }(this.destroy))
9699
-
9700
- }, extensions);
9701
- }
9702
-
9703
- Runtime.addConstructor(type, SilverlightRuntime);
9704
-
9705
- return extensions;
9706
- });
9707
-
9708
- // Included from: src/javascript/runtime/silverlight/file/Blob.js
9709
-
9710
- /**
9711
- * Blob.js
9712
- *
9713
- * Copyright 2013, Moxiecode Systems AB
9714
- * Released under GPL License.
9715
- *
9716
- * License: http://www.plupload.com/license
9717
- * Contributing: http://www.plupload.com/contributing
9718
- */
9719
-
9720
- /**
9721
- @class moxie/runtime/silverlight/file/Blob
9722
- @private
9723
- */
9724
- define("moxie/runtime/silverlight/file/Blob", [
9725
- "moxie/runtime/silverlight/Runtime",
9726
- "moxie/core/utils/Basic",
9727
- "moxie/runtime/flash/file/Blob"
9728
- ], function(extensions, Basic, Blob) {
9729
- return (extensions.Blob = Basic.extend({}, Blob));
9730
- });
9731
-
9732
- // Included from: src/javascript/runtime/silverlight/file/FileInput.js
9733
-
9734
- /**
9735
- * FileInput.js
9736
- *
9737
- * Copyright 2013, Moxiecode Systems AB
9738
- * Released under GPL License.
9739
- *
9740
- * License: http://www.plupload.com/license
9741
- * Contributing: http://www.plupload.com/contributing
9742
- */
9743
-
9744
- /**
9745
- @class moxie/runtime/silverlight/file/FileInput
9746
- @private
9747
- */
9748
- define("moxie/runtime/silverlight/file/FileInput", [
9749
- "moxie/runtime/silverlight/Runtime"
9750
- ], function(extensions) {
9751
-
9752
- var FileInput = {
9753
- init: function(options) {
9754
-
9755
- function toFilters(accept) {
9756
- var filter = '';
9757
- for (var i = 0; i < accept.length; i++) {
9758
- filter += (filter !== '' ? '|' : '') + accept[i].title + " | *." + accept[i].extensions.replace(/,/g, ';*.');
9759
- }
9760
- return filter;
9761
- }
9762
-
9763
- this.getRuntime().shimExec.call(this, 'FileInput', 'init', toFilters(options.accept), options.name, options.multiple);
9764
- this.trigger('ready');
9765
- }
9766
- };
9767
-
9768
- return (extensions.FileInput = FileInput);
9769
- });
9770
-
9771
- // Included from: src/javascript/runtime/silverlight/file/FileDrop.js
9772
-
9773
- /**
9774
- * FileDrop.js
9775
- *
9776
- * Copyright 2013, Moxiecode Systems AB
9777
- * Released under GPL License.
9778
- *
9779
- * License: http://www.plupload.com/license
9780
- * Contributing: http://www.plupload.com/contributing
9781
- */
9782
-
9783
- /**
9784
- @class moxie/runtime/silverlight/file/FileDrop
9785
- @private
9786
- */
9787
- define("moxie/runtime/silverlight/file/FileDrop", [
9788
- "moxie/runtime/silverlight/Runtime",
9789
- "moxie/core/utils/Dom",
9790
- "moxie/core/utils/Events"
9791
- ], function(extensions, Dom, Events) {
9792
-
9793
- // not exactly useful, since works only in safari (...crickets...)
9794
- var FileDrop = {
9795
- init: function() {
9796
- var comp = this, self = comp.getRuntime(), dropZone;
9797
-
9798
- dropZone = self.getShimContainer();
9799
-
9800
- Events.addEvent(dropZone, 'dragover', function(e) {
9801
- e.preventDefault();
9802
- e.stopPropagation();
9803
- e.dataTransfer.dropEffect = 'copy';
9804
- }, comp.uid);
9805
-
9806
- Events.addEvent(dropZone, 'dragenter', function(e) {
9807
- e.preventDefault();
9808
- var flag = Dom.get(self.uid).dragEnter(e);
9809
- // If handled, then stop propagation of event in DOM
9810
- if (flag) {
9811
- e.stopPropagation();
9812
- }
9813
- }, comp.uid);
9814
-
9815
- Events.addEvent(dropZone, 'drop', function(e) {
9816
- e.preventDefault();
9817
- var flag = Dom.get(self.uid).dragDrop(e);
9818
- // If handled, then stop propagation of event in DOM
9819
- if (flag) {
9820
- e.stopPropagation();
9821
- }
9822
- }, comp.uid);
9823
-
9824
- return self.shimExec.call(this, 'FileDrop', 'init');
9825
- }
9826
- };
9827
-
9828
- return (extensions.FileDrop = FileDrop);
9829
- });
9830
-
9831
- // Included from: src/javascript/runtime/silverlight/file/FileReader.js
9832
-
9833
- /**
9834
- * FileReader.js
9835
- *
9836
- * Copyright 2013, Moxiecode Systems AB
9837
- * Released under GPL License.
9838
- *
9839
- * License: http://www.plupload.com/license
9840
- * Contributing: http://www.plupload.com/contributing
9841
- */
9842
-
9843
- /**
9844
- @class moxie/runtime/silverlight/file/FileReader
9845
- @private
9846
- */
9847
- define("moxie/runtime/silverlight/file/FileReader", [
9848
- "moxie/runtime/silverlight/Runtime",
9849
- "moxie/core/utils/Basic",
9850
- "moxie/runtime/flash/file/FileReader"
9851
- ], function(extensions, Basic, FileReader) {
9852
- return (extensions.FileReader = Basic.extend({}, FileReader));
9853
- });
9854
-
9855
- // Included from: src/javascript/runtime/silverlight/file/FileReaderSync.js
9856
-
9857
- /**
9858
- * FileReaderSync.js
9859
- *
9860
- * Copyright 2013, Moxiecode Systems AB
9861
- * Released under GPL License.
9862
- *
9863
- * License: http://www.plupload.com/license
9864
- * Contributing: http://www.plupload.com/contributing
9865
- */
9866
-
9867
- /**
9868
- @class moxie/runtime/silverlight/file/FileReaderSync
9869
- @private
9870
- */
9871
- define("moxie/runtime/silverlight/file/FileReaderSync", [
9872
- "moxie/runtime/silverlight/Runtime",
9873
- "moxie/core/utils/Basic",
9874
- "moxie/runtime/flash/file/FileReaderSync"
9875
- ], function(extensions, Basic, FileReaderSync) {
9876
- return (extensions.FileReaderSync = Basic.extend({}, FileReaderSync));
9877
- });
9878
-
9879
- // Included from: src/javascript/runtime/silverlight/xhr/XMLHttpRequest.js
9880
-
9881
- /**
9882
- * XMLHttpRequest.js
9883
- *
9884
- * Copyright 2013, Moxiecode Systems AB
9885
- * Released under GPL License.
9886
- *
9887
- * License: http://www.plupload.com/license
9888
- * Contributing: http://www.plupload.com/contributing
9889
- */
9890
-
9891
- /**
9892
- @class moxie/runtime/silverlight/xhr/XMLHttpRequest
9893
- @private
9894
- */
9895
- define("moxie/runtime/silverlight/xhr/XMLHttpRequest", [
9896
- "moxie/runtime/silverlight/Runtime",
9897
- "moxie/core/utils/Basic",
9898
- "moxie/runtime/flash/xhr/XMLHttpRequest"
9899
- ], function(extensions, Basic, XMLHttpRequest) {
9900
- return (extensions.XMLHttpRequest = Basic.extend({}, XMLHttpRequest));
9901
- });
9902
-
9903
- // Included from: src/javascript/runtime/silverlight/runtime/Transporter.js
9904
-
9905
- /**
9906
- * Transporter.js
9907
- *
9908
- * Copyright 2013, Moxiecode Systems AB
9909
- * Released under GPL License.
9910
- *
9911
- * License: http://www.plupload.com/license
9912
- * Contributing: http://www.plupload.com/contributing
9913
- */
9914
-
9915
- /**
9916
- @class moxie/runtime/silverlight/runtime/Transporter
9917
- @private
9918
- */
9919
- define("moxie/runtime/silverlight/runtime/Transporter", [
9920
- "moxie/runtime/silverlight/Runtime",
9921
- "moxie/core/utils/Basic",
9922
- "moxie/runtime/flash/runtime/Transporter"
9923
- ], function(extensions, Basic, Transporter) {
9924
- return (extensions.Transporter = Basic.extend({}, Transporter));
9925
- });
9926
-
9927
- // Included from: src/javascript/runtime/silverlight/image/Image.js
9928
-
9929
- /**
9930
- * Image.js
9931
- *
9932
- * Copyright 2013, Moxiecode Systems AB
9933
- * Released under GPL License.
9934
- *
9935
- * License: http://www.plupload.com/license
9936
- * Contributing: http://www.plupload.com/contributing
9937
- */
9938
-
9939
- /**
9940
- @class moxie/runtime/silverlight/image/Image
9941
- @private
9942
- */
9943
- define("moxie/runtime/silverlight/image/Image", [
9944
- "moxie/runtime/silverlight/Runtime",
9945
- "moxie/core/utils/Basic",
9946
- "moxie/runtime/flash/image/Image"
9947
- ], function(extensions, Basic, Image) {
9948
- return (extensions.Image = Basic.extend({}, Image, {
9949
-
9950
- getInfo: function() {
9951
- var self = this.getRuntime()
9952
- , grps = ['tiff', 'exif', 'gps']
9953
- , info = { meta: {} }
9954
- , rawInfo = self.shimExec.call(this, 'Image', 'getInfo')
9955
- ;
9956
-
9957
- if (rawInfo.meta) {
9958
- Basic.each(grps, function(grp) {
9959
- var meta = rawInfo.meta[grp]
9960
- , tag
9961
- , i
9962
- , length
9963
- , value
9964
- ;
9965
- if (meta && meta.keys) {
9966
- info.meta[grp] = {};
9967
- for (i = 0, length = meta.keys.length; i < length; i++) {
9968
- tag = meta.keys[i];
9969
- value = meta[tag];
9970
- if (value) {
9971
- // convert numbers
9972
- if (/^(\d|[1-9]\d+)$/.test(value)) { // integer (make sure doesn't start with zero)
9973
- value = parseInt(value, 10);
9974
- } else if (/^\d*\.\d+$/.test(value)) { // double
9975
- value = parseFloat(value);
9976
- }
9977
- info.meta[grp][tag] = value;
9978
- }
9979
- }
9980
- }
9981
- });
9982
- }
9983
-
9984
- info.width = parseInt(rawInfo.width, 10);
9985
- info.height = parseInt(rawInfo.height, 10);
9986
- info.size = parseInt(rawInfo.size, 10);
9987
- info.type = rawInfo.type;
9988
- info.name = rawInfo.name;
9989
-
9990
- return info;
9991
- }
9992
- }));
9993
- });
9994
-
9995
- // Included from: src/javascript/runtime/html4/Runtime.js
9996
-
9997
- /**
9998
- * Runtime.js
9999
- *
10000
- * Copyright 2013, Moxiecode Systems AB
10001
- * Released under GPL License.
10002
- *
10003
- * License: http://www.plupload.com/license
10004
- * Contributing: http://www.plupload.com/contributing
10005
- */
10006
-
10007
- /*global File:true */
10008
-
10009
- /**
10010
- Defines constructor for HTML4 runtime.
10011
-
10012
- @class moxie/runtime/html4/Runtime
10013
- @private
10014
- */
10015
- define("moxie/runtime/html4/Runtime", [
10016
- "moxie/core/utils/Basic",
10017
- "moxie/core/Exceptions",
10018
- "moxie/runtime/Runtime",
10019
- "moxie/core/utils/Env"
10020
- ], function(Basic, x, Runtime, Env) {
10021
-
10022
- var type = 'html4', extensions = {};
10023
-
10024
- function Html4Runtime(options) {
10025
- var I = this
10026
- , Test = Runtime.capTest
10027
- , True = Runtime.capTrue
10028
- ;
10029
-
10030
- Runtime.call(this, options, type, {
10031
- access_binary: Test(window.FileReader || window.File && File.getAsDataURL),
10032
- access_image_binary: false,
10033
- display_media: Test(extensions.Image && (Env.can('create_canvas') || Env.can('use_data_uri_over32kb'))),
10034
- do_cors: false,
10035
- drag_and_drop: false,
10036
- filter_by_extension: Test(function() { // if you know how to feature-detect this, please suggest
10037
- return (Env.browser === 'Chrome' && Env.version >= 28) || (Env.browser === 'IE' && Env.version >= 10);
10038
- }()),
10039
- resize_image: function() {
10040
- return extensions.Image && I.can('access_binary') && Env.can('create_canvas');
10041
- },
10042
- report_upload_progress: false,
10043
- return_response_headers: false,
10044
- return_response_type: function(responseType) {
10045
- if (responseType === 'json' && !!window.JSON) {
10046
- return true;
10047
- }
10048
- return !!~Basic.inArray(responseType, ['text', 'document', '']);
10049
- },
10050
- return_status_code: function(code) {
10051
- return !Basic.arrayDiff(code, [200, 404]);
10052
- },
10053
- select_file: function() {
10054
- return Env.can('use_fileinput');
10055
- },
10056
- select_multiple: false,
10057
- send_binary_string: false,
10058
- send_custom_headers: false,
10059
- send_multipart: true,
10060
- slice_blob: false,
10061
- stream_upload: function() {
10062
- return I.can('select_file');
10063
- },
10064
- summon_file_dialog: Test(function() { // yeah... some dirty sniffing here...
10065
- return (Env.browser === 'Firefox' && Env.version >= 4) ||
10066
- (Env.browser === 'Opera' && Env.version >= 12) ||
10067
- !!~Basic.inArray(Env.browser, ['Chrome', 'Safari']);
10068
- }()),
10069
- upload_filesize: True,
10070
- use_http_method: function(methods) {
10071
- return !Basic.arrayDiff(methods, ['GET', 'POST']);
10072
- }
10073
- });
10074
-
10075
-
10076
- Basic.extend(this, {
10077
- init : function() {
10078
- this.trigger("Init");
10079
- },
10080
-
10081
- destroy: (function(destroy) { // extend default destroy method
10082
- return function() {
10083
- destroy.call(I);
10084
- destroy = I = null;
10085
- };
10086
- }(this.destroy))
10087
- });
10088
-
10089
- Basic.extend(this.getShim(), extensions);
10090
- }
10091
-
10092
- Runtime.addConstructor(type, Html4Runtime);
10093
-
10094
- return extensions;
10095
- });
10096
-
10097
- // Included from: src/javascript/runtime/html4/file/FileInput.js
10098
-
10099
- /**
10100
- * FileInput.js
10101
- *
10102
- * Copyright 2013, Moxiecode Systems AB
10103
- * Released under GPL License.
10104
- *
10105
- * License: http://www.plupload.com/license
10106
- * Contributing: http://www.plupload.com/contributing
10107
- */
10108
-
10109
- /**
10110
- @class moxie/runtime/html4/file/FileInput
10111
- @private
10112
- */
10113
- define("moxie/runtime/html4/file/FileInput", [
10114
- "moxie/runtime/html4/Runtime",
10115
- "moxie/core/utils/Basic",
10116
- "moxie/core/utils/Dom",
10117
- "moxie/core/utils/Events",
10118
- "moxie/core/utils/Mime",
10119
- "moxie/core/utils/Env"
10120
- ], function(extensions, Basic, Dom, Events, Mime, Env) {
10121
-
10122
- function FileInput() {
10123
- var _uid, _files = [], _mimes = [], _options;
10124
-
10125
- function addInput() {
10126
- var comp = this, I = comp.getRuntime(), shimContainer, browseButton, currForm, form, input, uid;
10127
-
10128
- uid = Basic.guid('uid_');
10129
-
10130
- shimContainer = I.getShimContainer(); // we get new ref everytime to avoid memory leaks in IE
10131
-
10132
- if (_uid) { // move previous form out of the view
10133
- currForm = Dom.get(_uid + '_form');
10134
- if (currForm) {
10135
- Basic.extend(currForm.style, { top: '100%' });
10136
- }
10137
- }
10138
-
10139
- // build form in DOM, since innerHTML version not able to submit file for some reason
10140
- form = document.createElement('form');
10141
- form.setAttribute('id', uid + '_form');
10142
- form.setAttribute('method', 'post');
10143
- form.setAttribute('enctype', 'multipart/form-data');
10144
- form.setAttribute('encoding', 'multipart/form-data');
10145
-
10146
- Basic.extend(form.style, {
10147
- overflow: 'hidden',
10148
- position: 'absolute',
10149
- top: 0,
10150
- left: 0,
10151
- width: '100%',
10152
- height: '100%'
10153
- });
10154
-
10155
- input = document.createElement('input');
10156
- input.setAttribute('id', uid);
10157
- input.setAttribute('type', 'file');
10158
- input.setAttribute('name', _options.name || 'Filedata');
10159
- input.setAttribute('accept', _mimes.join(','));
10160
-
10161
- Basic.extend(input.style, {
10162
- fontSize: '999px',
10163
- opacity: 0
10164
- });
10165
-
10166
- form.appendChild(input);
10167
- shimContainer.appendChild(form);
10168
-
10169
- // prepare file input to be placed underneath the browse_button element
10170
- Basic.extend(input.style, {
10171
- position: 'absolute',
10172
- top: 0,
10173
- left: 0,
10174
- width: '100%',
10175
- height: '100%'
10176
- });
10177
-
10178
- if (Env.browser === 'IE' && Env.version < 10) {
10179
- Basic.extend(input.style, {
10180
- filter : "progid:DXImageTransform.Microsoft.Alpha(opacity=0)"
10181
- });
10182
- }
10183
-
10184
- input.onchange = function() { // there should be only one handler for this
10185
- var file;
10186
-
10187
- if (!this.value) {
10188
- return;
10189
- }
10190
-
10191
- if (this.files) {
10192
- file = this.files[0];
10193
- } else {
10194
- file = {
10195
- name: this.value
10196
- };
10197
- }
10198
-
10199
- _files = [file];
10200
-
10201
- this.onchange = function() {}; // clear event handler
10202
- addInput.call(comp);
10203
-
10204
- // after file is initialized as o.File, we need to update form and input ids
10205
- comp.bind('change', function onChange() {
10206
- var input = Dom.get(uid), form = Dom.get(uid + '_form'), file;
10207
-
10208
- comp.unbind('change', onChange);
10209
-
10210
- if (comp.files.length && input && form) {
10211
- file = comp.files[0];
10212
-
10213
- input.setAttribute('id', file.uid);
10214
- form.setAttribute('id', file.uid + '_form');
10215
-
10216
- // set upload target
10217
- form.setAttribute('target', file.uid + '_iframe');
10218
- }
10219
- input = form = null;
10220
- }, 998);
10221
-
10222
- input = form = null;
10223
- comp.trigger('change');
10224
- };
10225
-
10226
-
10227
- // route click event to the input
10228
- if (I.can('summon_file_dialog')) {
10229
- browseButton = Dom.get(_options.browse_button);
10230
- Events.removeEvent(browseButton, 'click', comp.uid);
10231
- Events.addEvent(browseButton, 'click', function(e) {
10232
- if (input && !input.disabled) { // for some reason FF (up to 8.0.1 so far) lets to click disabled input[type=file]
10233
- input.click();
10234
- }
10235
- e.preventDefault();
10236
- }, comp.uid);
10237
- }
10238
-
10239
- _uid = uid;
10240
-
10241
- shimContainer = currForm = browseButton = null;
10242
- }
10243
-
10244
- Basic.extend(this, {
10245
- init: function(options) {
10246
- var comp = this, I = comp.getRuntime(), shimContainer;
10247
-
10248
- // figure out accept string
10249
- _options = options;
10250
- _mimes = options.accept.mimes || Mime.extList2mimes(options.accept, I.can('filter_by_extension'));
10251
-
10252
- shimContainer = I.getShimContainer();
10253
-
10254
- (function() {
10255
- var browseButton, zIndex, top;
10256
-
10257
- browseButton = Dom.get(options.browse_button);
10258
-
10259
- // Route click event to the input[type=file] element for browsers that support such behavior
10260
- if (I.can('summon_file_dialog')) {
10261
- if (Dom.getStyle(browseButton, 'position') === 'static') {
10262
- browseButton.style.position = 'relative';
10263
- }
10264
-
10265
- zIndex = parseInt(Dom.getStyle(browseButton, 'z-index'), 10) || 1;
10266
-
10267
- browseButton.style.zIndex = zIndex;
10268
- shimContainer.style.zIndex = zIndex - 1;
10269
- }
10270
-
10271
- /* Since we have to place input[type=file] on top of the browse_button for some browsers,
10272
- browse_button loses interactivity, so we restore it here */
10273
- top = I.can('summon_file_dialog') ? browseButton : shimContainer;
10274
-
10275
- Events.addEvent(top, 'mouseover', function() {
10276
- comp.trigger('mouseenter');
10277
- }, comp.uid);
10278
-
10279
- Events.addEvent(top, 'mouseout', function() {
10280
- comp.trigger('mouseleave');
10281
- }, comp.uid);
10282
-
10283
- Events.addEvent(top, 'mousedown', function() {
10284
- comp.trigger('mousedown');
10285
- }, comp.uid);
10286
-
10287
- Events.addEvent(Dom.get(options.container), 'mouseup', function() {
10288
- comp.trigger('mouseup');
10289
- }, comp.uid);
10290
-
10291
- browseButton = null;
10292
- }());
10293
-
10294
- addInput.call(this);
10295
-
10296
- shimContainer = null;
10297
-
10298
- // trigger ready event asynchronously
10299
- comp.trigger({
10300
- type: 'ready',
10301
- async: true
10302
- });
10303
- },
10304
-
10305
- getFiles: function() {
10306
- return _files;
10307
- },
10308
-
10309
- disable: function(state) {
10310
- var input;
10311
-
10312
- if ((input = Dom.get(_uid))) {
10313
- input.disabled = !!state;
10314
- }
10315
- },
10316
-
10317
- destroy: function() {
10318
- var I = this.getRuntime()
10319
- , shim = I.getShim()
10320
- , shimContainer = I.getShimContainer()
10321
- ;
10322
-
10323
- Events.removeAllEvents(shimContainer, this.uid);
10324
- Events.removeAllEvents(_options && Dom.get(_options.container), this.uid);
10325
- Events.removeAllEvents(_options && Dom.get(_options.browse_button), this.uid);
10326
-
10327
- if (shimContainer) {
10328
- shimContainer.innerHTML = '';
10329
- }
10330
-
10331
- shim.removeInstance(this.uid);
10332
-
10333
- _uid = _files = _mimes = _options = shimContainer = shim = null;
10334
- }
10335
- });
10336
- }
10337
-
10338
- return (extensions.FileInput = FileInput);
10339
- });
10340
-
10341
- // Included from: src/javascript/runtime/html4/file/FileReader.js
10342
-
10343
- /**
10344
- * FileReader.js
10345
- *
10346
- * Copyright 2013, Moxiecode Systems AB
10347
- * Released under GPL License.
10348
- *
10349
- * License: http://www.plupload.com/license
10350
- * Contributing: http://www.plupload.com/contributing
10351
- */
10352
-
10353
- /**
10354
- @class moxie/runtime/html4/file/FileReader
10355
- @private
10356
- */
10357
- define("moxie/runtime/html4/file/FileReader", [
10358
- "moxie/runtime/html4/Runtime",
10359
- "moxie/runtime/html5/file/FileReader"
10360
- ], function(extensions, FileReader) {
10361
- return (extensions.FileReader = FileReader);
10362
- });
10363
-
10364
- // Included from: src/javascript/runtime/html4/xhr/XMLHttpRequest.js
10365
-
10366
- /**
10367
- * XMLHttpRequest.js
10368
- *
10369
- * Copyright 2013, Moxiecode Systems AB
10370
- * Released under GPL License.
10371
- *
10372
- * License: http://www.plupload.com/license
10373
- * Contributing: http://www.plupload.com/contributing
10374
- */
10375
-
10376
- /**
10377
- @class moxie/runtime/html4/xhr/XMLHttpRequest
10378
- @private
10379
- */
10380
- define("moxie/runtime/html4/xhr/XMLHttpRequest", [
10381
- "moxie/runtime/html4/Runtime",
10382
- "moxie/core/utils/Basic",
10383
- "moxie/core/utils/Dom",
10384
- "moxie/core/utils/Url",
10385
- "moxie/core/Exceptions",
10386
- "moxie/core/utils/Events",
10387
- "moxie/file/Blob",
10388
- "moxie/xhr/FormData"
10389
- ], function(extensions, Basic, Dom, Url, x, Events, Blob, FormData) {
10390
-
10391
- function XMLHttpRequest() {
10392
- var _status, _response, _iframe;
10393
-
10394
- function cleanup(cb) {
10395
- var target = this, uid, form, inputs, i, hasFile = false;
10396
-
10397
- if (!_iframe) {
10398
- return;
10399
- }
10400
-
10401
- uid = _iframe.id.replace(/_iframe$/, '');
10402
-
10403
- form = Dom.get(uid + '_form');
10404
- if (form) {
10405
- inputs = form.getElementsByTagName('input');
10406
- i = inputs.length;
10407
-
10408
- while (i--) {
10409
- switch (inputs[i].getAttribute('type')) {
10410
- case 'hidden':
10411
- inputs[i].parentNode.removeChild(inputs[i]);
10412
- break;
10413
- case 'file':
10414
- hasFile = true; // flag the case for later
10415
- break;
10416
- }
10417
- }
10418
- inputs = [];
10419
-
10420
- if (!hasFile) { // we need to keep the form for sake of possible retries
10421
- form.parentNode.removeChild(form);
10422
- }
10423
- form = null;
10424
- }
10425
-
10426
- // without timeout, request is marked as canceled (in console)
10427
- setTimeout(function() {
10428
- Events.removeEvent(_iframe, 'load', target.uid);
10429
- if (_iframe.parentNode) { // #382
10430
- _iframe.parentNode.removeChild(_iframe);
10431
- }
10432
-
10433
- // check if shim container has any other children, if - not, remove it as well
10434
- var shimContainer = target.getRuntime().getShimContainer();
10435
- if (!shimContainer.children.length) {
10436
- shimContainer.parentNode.removeChild(shimContainer);
10437
- }
10438
-
10439
- shimContainer = _iframe = null;
10440
- cb();
10441
- }, 1);
10442
- }
10443
-
10444
- Basic.extend(this, {
10445
- send: function(meta, data) {
10446
- var target = this, I = target.getRuntime(), uid, form, input, blob;
10447
-
10448
- _status = _response = null;
10449
-
10450
- function createIframe() {
10451
- var container = I.getShimContainer() || document.body
10452
- , temp = document.createElement('div')
10453
- ;
10454
-
10455
- // IE 6 won't be able to set the name using setAttribute or iframe.name
10456
- temp.innerHTML = '<iframe id="' + uid + '_iframe" name="' + uid + '_iframe" src="javascript:&quot;&quot;" style="display:none"></iframe>';
10457
- _iframe = temp.firstChild;
10458
- container.appendChild(_iframe);
10459
-
10460
- /* _iframe.onreadystatechange = function() {
10461
- console.info(_iframe.readyState);
10462
- };*/
10463
-
10464
- Events.addEvent(_iframe, 'load', function() { // _iframe.onload doesn't work in IE lte 8
10465
- var el;
10466
-
10467
- try {
10468
- el = _iframe.contentWindow.document || _iframe.contentDocument || window.frames[_iframe.id].document;
10469
-
10470
- // try to detect some standard error pages
10471
- if (/^4(0[0-9]|1[0-7]|2[2346])\s/.test(el.title)) { // test if title starts with 4xx HTTP error
10472
- _status = el.title.replace(/^(\d+).*$/, '$1');
10473
- } else {
10474
- _status = 200;
10475
- // get result
10476
- _response = Basic.trim(el.body.innerHTML);
10477
-
10478
- // we need to fire these at least once
10479
- target.trigger({
10480
- type: 'progress',
10481
- loaded: _response.length,
10482
- total: _response.length
10483
- });
10484
-
10485
- if (blob) { // if we were uploading a file
10486
- target.trigger({
10487
- type: 'uploadprogress',
10488
- loaded: blob.size || 1025,
10489
- total: blob.size || 1025
10490
- });
10491
- }
10492
- }
10493
- } catch (ex) {
10494
- if (Url.hasSameOrigin(meta.url)) {
10495
- // if response is sent with error code, iframe in IE gets redirected to res://ieframe.dll/http_x.htm
10496
- // which obviously results to cross domain error (wtf?)
10497
- _status = 404;
10498
- } else {
10499
- cleanup.call(target, function() {
10500
- target.trigger('error');
10501
- });
10502
- return;
10503
- }
10504
- }
10505
-
10506
- cleanup.call(target, function() {
10507
- target.trigger('load');
10508
- });
10509
- }, target.uid);
10510
- } // end createIframe
10511
-
10512
- // prepare data to be sent and convert if required
10513
- if (data instanceof FormData && data.hasBlob()) {
10514
- blob = data.getBlob();
10515
- uid = blob.uid;
10516
- input = Dom.get(uid);
10517
- form = Dom.get(uid + '_form');
10518
- if (!form) {
10519
- throw new x.DOMException(x.DOMException.NOT_FOUND_ERR);
10520
- }
10521
- } else {
10522
- uid = Basic.guid('uid_');
10523
-
10524
- form = document.createElement('form');
10525
- form.setAttribute('id', uid + '_form');
10526
- form.setAttribute('method', meta.method);
10527
- form.setAttribute('enctype', 'multipart/form-data');
10528
- form.setAttribute('encoding', 'multipart/form-data');
10529
- form.setAttribute('target', uid + '_iframe');
10530
-
10531
- I.getShimContainer().appendChild(form);
10532
- }
10533
-
10534
- if (data instanceof FormData) {
10535
- data.each(function(value, name) {
10536
- if (value instanceof Blob) {
10537
- if (input) {
10538
- input.setAttribute('name', name);
10539
- }
10540
- } else {
10541
- var hidden = document.createElement('input');
10542
-
10543
- Basic.extend(hidden, {
10544
- type : 'hidden',
10545
- name : name,
10546
- value : value
10547
- });
10548
-
10549
- // make sure that input[type="file"], if it's there, comes last
10550
- if (input) {
10551
- form.insertBefore(hidden, input);
10552
- } else {
10553
- form.appendChild(hidden);
10554
- }
10555
- }
10556
- });
10557
- }
10558
-
10559
- // set destination url
10560
- form.setAttribute("action", meta.url);
10561
-
10562
- createIframe();
10563
- form.submit();
10564
- target.trigger('loadstart');
10565
- },
10566
-
10567
- getStatus: function() {
10568
- return _status;
10569
- },
10570
-
10571
- getResponse: function(responseType) {
10572
- if ('json' === responseType) {
10573
- // strip off <pre>..</pre> tags that might be enclosing the response
10574
- if (Basic.typeOf(_response) === 'string' && !!window.JSON) {
10575
- try {
10576
- return JSON.parse(_response.replace(/^\s*<pre[^>]*>/, '').replace(/<\/pre>\s*$/, ''));
10577
- } catch (ex) {
10578
- return null;
10579
- }
10580
- }
10581
- } else if ('document' === responseType) {
10582
-
10583
- }
10584
- return _response;
10585
- },
10586
-
10587
- abort: function() {
10588
- var target = this;
10589
-
10590
- if (_iframe && _iframe.contentWindow) {
10591
- if (_iframe.contentWindow.stop) { // FireFox/Safari/Chrome
10592
- _iframe.contentWindow.stop();
10593
- } else if (_iframe.contentWindow.document.execCommand) { // IE
10594
- _iframe.contentWindow.document.execCommand('Stop');
10595
- } else {
10596
- _iframe.src = "about:blank";
10597
- }
10598
- }
10599
-
10600
- cleanup.call(this, function() {
10601
- // target.dispatchEvent('readystatechange');
10602
- target.dispatchEvent('abort');
10603
- });
10604
- }
10605
- });
10606
- }
10607
-
10608
- return (extensions.XMLHttpRequest = XMLHttpRequest);
10609
- });
10610
-
10611
- // Included from: src/javascript/runtime/html4/image/Image.js
10612
-
10613
- /**
10614
- * Image.js
10615
- *
10616
- * Copyright 2013, Moxiecode Systems AB
10617
- * Released under GPL License.
10618
- *
10619
- * License: http://www.plupload.com/license
10620
- * Contributing: http://www.plupload.com/contributing
10621
- */
10622
-
10623
- /**
10624
- @class moxie/runtime/html4/image/Image
10625
- @private
10626
- */
10627
- define("moxie/runtime/html4/image/Image", [
10628
- "moxie/runtime/html4/Runtime",
10629
- "moxie/runtime/html5/image/Image"
10630
- ], function(extensions, Image) {
10631
- return (extensions.Image = Image);
10632
- });
10633
-
10634
- expose(["moxie/core/utils/Basic","moxie/core/I18n","moxie/core/utils/Mime","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/file/File","moxie/file/FileInput","moxie/file/FileDrop","moxie/runtime/RuntimeTarget","moxie/file/FileReader","moxie/core/utils/Url","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events"]);
10635
- })(this);/**
10636
- * o.js
10637
- *
10638
- * Copyright 2013, Moxiecode Systems AB
10639
- * Released under GPL License.
10640
- *
10641
- * License: http://www.plupload.com/license
10642
- * Contributing: http://www.plupload.com/contributing
10643
- */
10644
-
10645
- /*global moxie:true */
10646
-
10647
- /**
10648
- Globally exposed namespace with the most frequently used public classes and handy methods.
10649
-
10650
- @class o
10651
- @static
10652
- @private
10653
- */
10654
- (function() {
10655
- "use strict";
10656
-
10657
- var o = {}, inArray = moxie.core.utils.Basic.inArray;
10658
-
10659
- // directly add some public classes
10660
- // (we do it dynamically here, since for custom builds we cannot know beforehand what modules were included)
10661
- (function addAlias(ns) {
10662
- var name, itemType;
10663
- for (name in ns) {
10664
- itemType = typeof(ns[name]);
10665
- if (itemType === 'object' && !~inArray(name, ['Exceptions', 'Env', 'Mime'])) {
10666
- addAlias(ns[name]);
10667
- } else if (itemType === 'function') {
10668
- o[name] = ns[name];
10669
- }
10670
- }
10671
- })(window.moxie);
10672
-
10673
- // add some manually
10674
- o.Env = window.moxie.core.utils.Env;
10675
- o.Mime = window.moxie.core.utils.Mime;
10676
- o.Exceptions = window.moxie.core.Exceptions;
10677
-
10678
- // expose globally
10679
- window.mOxie = o;
10680
- if (!window.o) {
10681
- window.o = o;
10682
- }
10683
- return o;
10684
- })();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
products/photocrati_nextgen/modules/nextgen_addgallery_page/static/plupload-2.1.1/moxie.min.js DELETED
@@ -1,4 +0,0 @@
1
- !function(e,t){"use strict";function i(e,t){for(var i,n=[],a=0;a<e.length;++a){if(!(i=o[e[a]]||r(e[a])))throw"module definition dependecy not found: "+e[a];n.push(i)}t.apply(null,n)}function n(e,n,r){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(n===t)throw"invalid module definition, dependencies must be specified";if(r===t)throw"invalid module definition, definition function must be specified";i(n,function(){o[e]=r.apply(null,arguments)})}function r(t){for(var i=e,n=t.split(/[.\/]/),r=0;r<n.length;++r){if(!i[n[r]])return;i=i[n[r]]}return i}var o={};n("moxie/core/utils/Basic",[],function(){var e=function(e){return void 0===e?"undefined":null===e?"null":e.nodeType?"node":{}.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()},t=function(n){return i(arguments,function(r,o){o>0&&i(r,function(i,r){void 0!==i&&(e(n[r])===e(i)&&~a(e(i),["array","object"])?t(n[r],i):n[r]=i)})}),n},i=function(e,t){var i,n,r;if(e){try{i=e.length}catch(e){i=void 0}if(void 0===i){for(n in e)if(e.hasOwnProperty(n)&&!1===t(e[n],n))return}else for(r=0;r<i;r++)if(!1===t(e[r],r))return}},n=function(t){var i;if(!t||"object"!==e(t))return!0;for(i in t)return!1;return!0},r=function(t,i){function n(o){"function"===e(t[o])&&t[o](function(e){++o<r&&!e?n(o):i(e)})}var r=t.length;"function"!==e(i)&&(i=function(){}),t&&t.length||i(),n(0)},o=function(e,t){var n=0,r=e.length,o=new Array(r);i(e,function(e,i){e(function(e){if(e)return t(e);var a=[].slice.call(arguments);a.shift(),o[i]=a,++n===r&&(o.unshift(null),t.apply(this,o))})})},a=function(e,t){if(t){if(Array.prototype.indexOf)return Array.prototype.indexOf.call(t,e);for(var i=0,n=t.length;i<n;i++)if(t[i]===e)return i}return-1},s=function(t,i){var n=[];"array"!==e(t)&&(t=[t]),"array"!==e(i)&&(i=[i]);for(var r in t)-1===a(t[r],i)&&n.push(t[r]);return!!n.length&&n},u=function(e,t){var n=[];return i(e,function(e){-1!==a(e,t)&&n.push(e)}),n.length?n:null},c=function(e){var t,i=[];for(t=0;t<e.length;t++)i[t]=e[t];return i};return{guid:function(){var e=0;return function(t){var i,n=(new Date).getTime().toString(32);for(i=0;i<5;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}(),typeOf:e,extend:t,each:i,isEmptyObj:n,inSeries:r,inParallel:o,inArray:a,arrayDiff:s,arrayIntersect:u,toArray:c,trim:function(e){return e?String.prototype.trim?String.prototype.trim.call(e):e.toString().replace(/^\s*/,"").replace(/\s*$/,""):e},parseSizeStr:function(e){if("string"!=typeof e)return e;var t,i={t:1099511627776,g:1073741824,m:1048576,k:1024};return e=/^([0-9]+)([mgk]?)$/.exec(e.toLowerCase().replace(/[^0-9mkg]/g,"")),t=e[2],e=+e[1],i.hasOwnProperty(t)&&(e*=i[t]),e}}}),n("moxie/core/I18n",["moxie/core/utils/Basic"],function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],function(e,t){var i={mimes:{},extensions:{},addMimeType:function(e){var t,i,n,r=e.split(/,/);for(t=0;t<r.length;t+=2){for(n=r[t+1].split(/ /),i=0;i<n.length;i++)this.mimes[n[i]]=r[t];this.extensions[r[t]]=n}},extList2mimes:function(t,i){var n,r,o,a,s=this,u=[];for(r=0;r<t.length;r++)for(n=t[r].extensions.split(/\s*,\s*/),o=0;o<n.length;o++){if("*"===n[o])return[];if(a=s.mimes[n[o]])-1===e.inArray(a,u)&&u.push(a);else{if(!i||!/^\w+$/.test(n[o]))return[];u.push("."+n[o])}}return u},mimes2exts:function(t){var i=this,n=[];return e.each(t,function(t){if("*"===t)return n=[],!1;var r=t.match(/^(\w+)\/(\*|\w+)$/);r&&("*"===r[2]?e.each(i.extensions,function(e,t){new RegExp("^"+r[1]+"/").test(t)&&[].push.apply(n,i.extensions[t])}):i.extensions[t]&&[].push.apply(n,i.extensions[t]))}),n},mimes2extList:function(i){var n=[],r=[];return"string"===e.typeOf(i)&&(i=e.trim(i).split(/\s*,\s*/)),r=this.mimes2exts(i),n.push({title:t.translate("Files"),extensions:r.length?r.join(","):"*"}),n.mimes=i,n},getFileExtension:function(e){var t=e&&e.match(/\.([^.]+)$/);return t?t[1].toLowerCase():""},getFileMime:function(e){return this.mimes[this.getFileExtension(e)]||""}};return i.addMimeType("application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe"),i}),n("moxie/core/utils/Env",["moxie/core/utils/Basic"],function(e){function t(e,t,i){var n=0,r=0,o=0,a={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1},s=function(e){return e=(""+e).replace(/[_\-+]/g,"."),e=e.replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,"."),e.length?e.split("."):[-8]},u=function(e){return e?isNaN(e)?a[e]||-7:parseInt(e,10):0};for(e=s(e),t=s(t),r=Math.max(e.length,t.length),n=0;n<r;n++)if(e[n]!=t[n]){if(e[n]=u(e[n]),t[n]=u(t[n]),e[n]<t[n]){o=-1;break}if(e[n]>t[n]){o=1;break}}if(!i)return o;switch(i){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return o<=0;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return o<0;default:return null}}var i=function(e){var t="major",i="name",n="version",r={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},o={rgx:function(){for(var e,t,i,n,r,o,a,s=0,u=arguments;s<u.length;s+=2){var c=u[s],l=u[s+1];if(void 0===e){e={};for(n in l)r=l[n],"object"==typeof r?e[r[0]]=void 0:e[r]=void 0}for(t=i=0;t<c.length;t++)if(o=c[t].exec(this.getUA())){for(n=0;n<l.length;n++)a=o[++i],r=l[n],"object"==typeof r&&r.length>0?2==r.length?"function"==typeof r[1]?e[r[0]]=r[1].call(this,a):e[r[0]]=r[1]:3==r.length?"function"!=typeof r[1]||r[1].exec&&r[1].test?e[r[0]]=a?a.replace(r[1],r[2]):void 0:e[r[0]]=a?r[1].call(this,a,r[2]):void 0:4==r.length&&(e[r[0]]=a?r[3].call(this,a.replace(r[1],r[2])):void 0):e[r]=a||void 0;break}if(o)break}return e},str:function(e,t){for(var i in t)if("object"==typeof t[i]&&t[i].length>0){for(var n=0;n<t[i].length;n++)if(r.has(t[i][n],e))return"?"===i?void 0:i}else if(r.has(t[i],e))return"?"===i?void 0:i;return e}},a={browser:{oldsafari:{major:{1:["/8","/1","/3"],2:"/4","?":"/"},version:{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}}},device:{sprint:{model:{"Evo Shift 4G":"7373KT"},vendor:{HTC:"APA",Sprint:"Sprint"}}},os:{windows:{version:{ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2000:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",RT:"ARM"}}}},s={browser:[[/(opera\smini)\/((\d+)?[\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/((\d+)?[\w\.-]+)/i,/(opera).+version\/((\d+)?[\w\.]+)/i,/(opera)[\/\s]+((\d+)?[\w\.]+)/i],[i,n,t],[/\s(opr)\/((\d+)?[\w\.]+)/i],[[i,"Opera"],n,t],[/(kindle)\/((\d+)?[\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?((\d+)?[\w\.]+)*/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?((\d+)?[\w\.]*)/i,/(?:ms|\()(ie)\s((\d+)?[\w\.]+)/i,/(rekonq)((?:\/)[\w\.]+)*/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron)\/((\d+)?[\w\.-]+)/i],[i,n,t],[/(trident).+rv[:\s]((\d+)?[\w\.]+).+like\sgecko/i],[[i,"IE"],n,t],[/(yabrowser)\/((\d+)?[\w\.]+)/i],[[i,"Yandex"],n,t],[/(comodo_dragon)\/((\d+)?[\w\.]+)/i],[[i,/_/g," "],n,t],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?((\d+)?[\w\.]+)/i],[i,n,t],[/(dolfin)\/((\d+)?[\w\.]+)/i],[[i,"Dolphin"],n,t],[/((?:android.+)crmo|crios)\/((\d+)?[\w\.]+)/i],[[i,"Chrome"],n,t],[/((?:android.+))version\/((\d+)?[\w\.]+)\smobile\ssafari/i],[[i,"Android Browser"],n,t],[/version\/((\d+)?[\w\.]+).+?mobile\/\w+\s(safari)/i],[n,t,[i,"Mobile Safari"]],[/version\/((\d+)?[\w\.]+).+?(mobile\s?safari|safari)/i],[n,t,i],[/webkit.+?(mobile\s?safari|safari)((\/[\w\.]+))/i],[i,[t,o.str,a.browser.oldsafari.major],[n,o.str,a.browser.oldsafari.version]],[/(konqueror)\/((\d+)?[\w\.]+)/i,/(webkit|khtml)\/((\d+)?[\w\.]+)/i],[i,n,t],[/(navigator|netscape)\/((\d+)?[\w\.-]+)/i],[[i,"Netscape"],n,t],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?((\d+)?[\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/((\d+)?[\w\.-]+)/i,/(mozilla)\/((\d+)?[\w\.]+).+rv\:.+gecko\/\d+/i,/(uc\s?browser|polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|qqbrowser)[\/\s]?((\d+)?[\w\.]+)/i,/(links)\s\(((\d+)?[\w\.]+)/i,/(gobrowser)\/?((\d+)?[\w\.]+)*/i,/(ice\s?browser)\/v?((\d+)?[\w\._]+)/i,/(mosaic)[\/\s]((\d+)?[\w\.]+)/i],[i,n,t]],engine:[[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],[i,n],[/rv\:([\w\.]+).*(gecko)/i],[n,i]],os:[[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],[i,[n,o.str,a.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[[i,"Windows"],[n,o.str,a.os.windows.version]],[/\((bb)(10);/i],[[i,"BlackBerry"],n],[/(blackberry)\w*\/?([\w\.]+)*/i,/(tizen)\/([\w\.]+)/i,/(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego)[\/\s-]?([\w\.]+)*/i],[i,n],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],[[i,"Symbian"],n],[/mozilla.+\(mobile;.+gecko.+firefox/i],[[i,"Firefox OS"],n],[/(nintendo|playstation)\s([wids3portablevu]+)/i,/(mint)[\/\s\(]?(\w+)*/i,/(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk)[\/\s-]?([\w\.-]+)*/i,/(hurd|linux)\s?([\w\.]+)*/i,/(gnu)\s?([\w\.]+)*/i],[i,n],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[[i,"Chromium OS"],n],[/(sunos)\s?([\w\.]+\d)*/i],[[i,"Solaris"],n],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i],[i,n],[/(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i],[[i,"iOS"],[n,/_/g,"."]],[/(mac\sos\sx)\s?([\w\s\.]+\w)*/i],[i,[n,/_/g,"."]],[/(haiku)\s(\w+)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i,/(macintosh|mac(?=_powerpc)|plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos)/i,/(unix)\s?([\w\.]+)*/i],[i,n]]};return(new function(e){var t=e||(window&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:"");this.getBrowser=function(){return o.rgx.apply(this,s.browser)},this.getEngine=function(){return o.rgx.apply(this,s.engine)},this.getOS=function(){return o.rgx.apply(this,s.os)},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS()}},this.getUA=function(){return t},this.setUA=function(e){return t=e,this},this.setUA(t)}).getResult()}(),n=function(){var t={define_property:!1,create_canvas:function(){var e=document.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))}(),return_response_type:function(t){try{if(-1!==e.inArray(t,["","text","document"]))return!0;if(window.XMLHttpRequest){var i=new XMLHttpRequest;if(i.open("get","/"),"responseType"in i)return i.responseType=t,i.responseType===t}}catch(e){}return!1},use_data_uri:function(){var e=new Image;return e.onload=function(){t.use_data_uri=1===e.width&&1===e.height},setTimeout(function(){e.src="data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="},1),!1}(),use_data_uri_over32kb:function(){return t.use_data_uri&&("IE"!==r.browser||r.version>=9)},use_data_uri_of:function(e){return t.use_data_uri&&e<33e3||t.use_data_uri_over32kb()},use_fileinput:function(){var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(i){var n=[].slice.call(arguments);return n.shift(),"function"===e.typeOf(t[i])?t[i].apply(this,n):!!t[i]}}(),r={can:n,browser:i.browser.name,version:parseFloat(i.browser.major),os:i.os.name,osVersion:i.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return r.OS=r.os,r}),n("moxie/core/utils/Dom",["moxie/core/utils/Env"],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},i=function(e,t){return!!e.className&&new RegExp("(^|\\s+)"+t+"(\\s+|$)").test(e.className)};return{get:t,hasClass:i,addClass:function(e,t){i(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},removeClass:function(e,t){if(e.className){var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(i,function(e,t,i){return" "===t&&" "===i?" ":""})}},getStyle:function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},getPos:function(t,i){function n(e){var t,i,n=0,r=0;return e&&(i=e.getBoundingClientRect(),t="CSS1Compat"===c.compatMode?c.documentElement:c.body,n=i.left+t.scrollLeft,r=i.top+t.scrollTop),{x:n,y:r}}var r,o,a,s=0,u=0,c=document;if(t=t,i=i||c.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!c.documentMode||c.documentMode<8))return o=n(t),a=n(i),{x:o.x-a.x,y:o.y-a.y};for(r=t;r&&r!=i&&r.nodeType;)s+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!=i&&r.nodeType;)s-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;return{x:s,y:u}},getSize:function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}}}}),n("moxie/core/Exceptions",["moxie/core/utils/Basic"],function(e){function t(e,t){var i;for(i in e)if(e[i]===t)return i;return null}return{RuntimeError:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": RuntimeError "+this.code}var n={NOT_INIT_ERR:1,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(i,n),i.prototype=Error.prototype,i}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": ImageError "+this.code}var n={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2};return e.extend(i,n),i.prototype=Error.prototype,i}(),FileException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": FileException "+this.code}var n={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(i,n),i.prototype=Error.prototype,i}(),DOMException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": DOMException "+this.code}var n={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(i,n),i.prototype=Error.prototype,i}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),n("moxie/core/EventTarget",["moxie/core/Exceptions","moxie/core/utils/Basic"],function(e,t){function i(){var i={};t.extend(this,{uid:null,init:function(){this.uid||(this.uid=t.guid("uid_"))},addEventListener:function(e,n,r,o){var a,s=this;if(e=t.trim(e),/\s/.test(e))return void t.each(e.split(/\s+/),function(e){s.addEventListener(e,n,r,o)});e=e.toLowerCase(),r=parseInt(r,10)||0,a=i[this.uid]&&i[this.uid][e]||[],a.push({fn:n,priority:r,scope:o||this}),i[this.uid]||(i[this.uid]={}),i[this.uid][e]=a},hasEventListener:function(e){return e?!(!i[this.uid]||!i[this.uid][e]):!!i[this.uid]},removeEventListener:function(e,n){e=e.toLowerCase();var r,o=i[this.uid]&&i[this.uid][e];if(o){if(n){for(r=o.length-1;r>=0;r--)if(o[r].fn===n){o.splice(r,1);break}}else o=[];o.length||(delete i[this.uid][e],t.isEmptyObj(i[this.uid])&&delete i[this.uid])}},removeAllEventListeners:function(){i[this.uid]&&delete i[this.uid]},dispatchEvent:function(n){var r,o,a,s,u={},c=!0;if("string"!==t.typeOf(n)){if(s=n,"string"!==t.typeOf(s.type))throw new e.EventException(e.EventException.UNSPECIFIED_EVENT_TYPE_ERR);n=s.type,void 0!==s.total&&void 0!==s.loaded&&(u.total=s.total,u.loaded=s.loaded),u.async=s.async||!1}if(-1!==n.indexOf("::")?function(e){r=e[0],n=e[1]}(n.split("::")):r=this.uid,n=n.toLowerCase(),o=i[r]&&i[r][n]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),u.type=n,a.unshift(u);var l=[];t.each(o,function(e){a[0].target=e.scope,u.async?l.push(function(t){setTimeout(function(){t(!1===e.fn.apply(e.scope,a))},1)}):l.push(function(t){t(!1===e.fn.apply(e.scope,a))})}),l.length&&t.inSeries(l,function(e){c=!e})}return c},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},convertEventPropsToHandlers:function(e){var i;"array"!==t.typeOf(e)&&(e=[e]);for(var n=0;n<e.length;n++)i="on"+e[n],"function"===t.typeOf(this[i])?this.addEventListener(e[n],this[i]):"undefined"===t.typeOf(this[i])&&(this[i]=null)}})}return i.instance=new i,i}),n("moxie/core/utils/Encode",[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))};return{utf8_encode:e,utf8_decode:t,atob:function(e,i){if("function"==typeof window.atob)return i?t(window.atob(e)):window.atob(e);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,f=0,h="",p=[];if(!e)return e;e+="";do{a=d.indexOf(e.charAt(m++)),s=d.indexOf(e.charAt(m++)),u=d.indexOf(e.charAt(m++)),c=d.indexOf(e.charAt(m++)),l=a<<18|s<<12|u<<6|c,n=l>>16&255,r=l>>8&255,o=255&l,p[f++]=64==u?String.fromCharCode(n):64==c?String.fromCharCode(n,r):String.fromCharCode(n,r,o)}while(m<e.length);return h=p.join(""),i?t(h):h},btoa:function(t,i){if(i&&e(t),"function"==typeof window.btoa)return window.btoa(t);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,f=0,h="",p=[];if(!t)return t;do{n=t.charCodeAt(m++),r=t.charCodeAt(m++),o=t.charCodeAt(m++),l=n<<16|r<<8|o,a=l>>18&63,s=l>>12&63,u=l>>6&63,c=63&l,p[f++]=d.charAt(a)+d.charAt(s)+d.charAt(u)+d.charAt(c)}while(m<t.length);h=p.join("");var g=t.length%3;return(g?h.slice(0,g-3):h)+"===".slice(g||3)}}}),n("moxie/runtime/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],function(e,t,i){function n(i,r,a,s,u){var c,l=this,d=e.guid(r+"_"),m=u||"browser";i=i||{},o[d]=this,a=e.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},a),i.preferred_caps&&(m=n.getMode(s,i.preferred_caps,m)),c=function(){var t={};return{exec:function(e,i,n,r){if(c[i]&&(t[e]||(t[e]={context:this,instance:new c[i]}),t[e].instance[n]))return t[e].instance[n].apply(this,r)},removeInstance:function(e){delete t[e]},removeAllInstances:function(){var i=this;e.each(t,function(t,n){"function"===e.typeOf(t.instance.destroy)&&t.instance.destroy.call(t.context),i.removeInstance(n)})}}}(),e.extend(this,{initialized:!1,uid:d,type:r,mode:n.getMode(s,i.required_caps,m),shimid:d+"_container",clients:0,options:i,can:function(t,i){var r=arguments[2]||a;if("string"===e.typeOf(t)&&"undefined"===e.typeOf(i)&&(t=n.parseCaps(t)),"object"===e.typeOf(t)){for(var o in t)if(!this.can(o,t[o],r))return!1;return!0}return"function"===e.typeOf(r[t])?r[t].call(this,i):i===r[t]},getShimContainer:function(){var i,n=t.get(this.shimid);return n||(i=this.options.container?t.get(this.options.container):document.body,n=document.createElement("div"),n.id=this.shimid,n.className="moxie-shim moxie-shim-"+this.type,e.extend(n.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),i.appendChild(n),i=null),n},getShim:function(){return c},shimExec:function(e,t){var i=[].slice.call(arguments,2);return l.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return l[e]&&l[e][t]?l[e][t].apply(this,i):l.shimExec.apply(this,arguments)},destroy:function(){if(l){var e=t.get(this.shimid);e&&e.parentNode.removeChild(e),c&&c.removeAllInstances(),this.unbindAll(),delete o[this.uid],this.uid=null,d=l=c=e=null}}}),this.mode&&i.required_caps&&!this.can(i.required_caps)&&(this.mode=!1)}var r={},o={};return n.order="html5,flash,silverlight,html4",n.getRuntime=function(e){return!!o[e]&&o[e]},n.addConstructor=function(e,t){t.prototype=i.instance,r[e]=t},n.getConstructor=function(e){return r[e]||null},n.getInfo=function(e){var t=n.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},n.parseCaps=function(t){var i={};return"string"!==e.typeOf(t)?t||{}:(e.each(t.split(","),function(e){i[e]=!0}),i)},n.can=function(e,t){var i,r,o=n.getConstructor(e);return!!o&&(i=new o({required_caps:t}),r=i.mode,i.destroy(),!!r)},n.thatCan=function(e,t){var i=(t||n.order).split(/\s*,\s*/);for(var r in i)if(n.can(i[r],e))return i[r];return null},n.getMode=function(t,i,n){var r=null;if("undefined"===e.typeOf(n)&&(n="browser"),i&&!e.isEmptyObj(t)){if(e.each(i,function(i,n){if(t.hasOwnProperty(n)){var o=t[n](i);if("string"==typeof o&&(o=[o]),r){if(!(r=e.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==e.inArray(n,r)?n:r[0];if(!1===r)return!1}return n},n.capTrue=function(){return!0},n.capFalse=function(){return!1},n.capTest=function(e){return function(){return!!e}},n}),n("moxie/runtime/RuntimeClient",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],function(e,t,i){return function(){var n;t.extend(this,{connectRuntime:function(r){function o(t){var a,u;return t.length?(a=t.shift(),(u=i.getConstructor(a))?(n=new u(r),n.bind("Init",function(){n.initialized=!0,setTimeout(function(){n.clients++,s.trigger("RuntimeInit",n)},1)}),n.bind("Error",function(){n.destroy(),o(t)}),n.mode?void n.init():void n.trigger("Error")):void o(t)):(s.trigger("RuntimeError",new e.RuntimeError(e.RuntimeError.NOT_INIT_ERR)),void(n=null))}var a,s=this;if("string"===t.typeOf(r)?a=r:"string"===t.typeOf(r.ruid)&&(a=r.ruid),a){if(n=i.getRuntime(a))return n.clients++,n;throw new e.RuntimeError(e.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||i.order).split(/\s*,\s*/))},getRuntime:function(){return n&&n.uid?n:(n=null,null)},disconnectRuntime:function(){n&&--n.clients<=0&&(n.destroy(),n=null)}})}}),n("moxie/file/Blob",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient"],function(e,t,i){function n(o,a){function s(t,i,o){var a,s=r[this.uid];return"string"===e.typeOf(s)&&s.length?(a=new n(null,{type:o,size:i-t}),a.detach(s.substr(t,a.size)),a):null}i.call(this),o&&this.connectRuntime(o),a?"string"===e.typeOf(a)&&(a={data:a}):a={},e.extend(this,{uid:a.uid||e.guid("uid_"),ruid:o,size:a.size||0,type:a.type||"",slice:function(e,t,i){return this.isDetached()?s.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,i)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy",r[this.uid]),this.disconnectRuntime(),this.ruid=null),e=e||"";var i=e.match(/^data:([^;]*);base64,/);i&&(this.type=i[1],e=t.atob(e.substring(e.indexOf("base64,")+7))),this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),a.data?this.detach(a.data):r[this.uid]=a}var r={};return n}),n("moxie/file/File",["moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/file/Blob"],function(e,t,i){function n(n,r){var o,a;if(r||(r={}),a=r.type&&""!==r.type?r.type:t.getFileMime(r.name),r.name)o=r.name.replace(/\\/g,"/"),o=o.substr(o.lastIndexOf("/")+1);else{var s=a.split("/")[0];o=e.guid((""!==s?s:"file")+"_"),t.extensions[a]&&(o+="."+t.extensions[a][0])}i.apply(this,arguments),e.extend(this,{type:a||"",name:o||e.guid("file_"),lastModifiedDate:r.lastModifiedDate||(new Date).toLocaleString()})}return n.prototype=i.prototype,n}),n("moxie/file/FileInput",["moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/I18n","moxie/file/File","moxie/runtime/Runtime","moxie/runtime/RuntimeClient"],function(e,t,i,n,r,o,a,s,u){function c(r){var c,d,m,f=this;if(-1!==e.inArray(e.typeOf(r),["string","node"])&&(r={browse_button:r}),!(d=i.get(r.browse_button)))throw new n.DOMException(n.DOMException.NOT_FOUND_ERR);m={accept:[{title:o.translate("All Files"),extensions:"*"}],name:"file",multiple:!1,required_caps:!1,container:d.parentNode||document.body},r=e.extend({},m,r),"string"==typeof r.required_caps&&(r.required_caps=s.parseCaps(r.required_caps)),"string"==typeof r.accept&&(r.accept=t.mimes2extList(r.accept)),c=i.get(r.container),c||(c=document.body),"static"===i.getStyle(c,"position")&&(c.style.position="relative"),c=d=null,u.call(f),e.extend(f,{uid:e.guid("uid_"),ruid:null,shimid:null,files:null,init:function(){f.convertEventPropsToHandlers(l),f.bind("RuntimeInit",function(t,n){f.ruid=n.uid,f.shimid=n.shimid,f.bind("Ready",function(){f.trigger("Refresh")},999),f.bind("Change",function(){var t=n.exec.call(f,"FileInput","getFiles");f.files=[],e.each(t,function(e){if(0===e.size)return!0;f.files.push(new a(f.ruid,e))})},999),f.bind("Refresh",function(){var t,o,a,s;a=i.get(r.browse_button),s=i.get(n.shimid),a&&(t=i.getPos(a,i.get(r.container)),o=i.getSize(a),s&&e.extend(s.style,{top:t.y+"px",left:t.x+"px",width:o.w+"px",height:o.h+"px"})),s=a=null}),n.exec.call(f,"FileInput","init",r)}),f.connectRuntime(e.extend({},r,{required_caps:{select_file:!0}}))},disable:function(t){var i=this.getRuntime();i&&i.exec.call(this,"FileInput","disable","undefined"===e.typeOf(t)||t)},refresh:function(){f.trigger("Refresh")},destroy:function(){var t=this.getRuntime();t&&(t.exec.call(this,"FileInput","destroy"),this.disconnectRuntime()),"array"===e.typeOf(this.files)&&e.each(this.files,function(e){e.destroy()}),this.files=null}})}var l=["ready","change","cancel","mouseenter","mouseleave","mousedown","mouseup"];return c.prototype=r.instance,c}),n("moxie/file/FileDrop",["moxie/core/I18n","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/File","moxie/runtime/RuntimeClient","moxie/core/EventTarget","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s){function u(i){var a,u=this;"string"==typeof i&&(i={drop_zone:i}),a={accept:[{title:e.translate("All Files"),extensions:"*"}],required_caps:{drag_and_drop:!0}},i="object"==typeof i?n.extend({},a,i):a,i.container=t.get(i.drop_zone)||document.body,"static"===t.getStyle(i.container,"position")&&(i.container.style.position="relative"),"string"==typeof i.accept&&(i.accept=s.mimes2extList(i.accept)),o.call(u),n.extend(u,{uid:n.guid("uid_"),ruid:null,files:null,init:function(){u.convertEventPropsToHandlers(c),u.bind("RuntimeInit",function(e,t){u.ruid=t.uid,u.bind("Drop",function(){var e=t.exec.call(u,"FileDrop","getFiles");u.files=[],n.each(e,function(e){u.files.push(new r(u.ruid,e))})},999),t.exec.call(u,"FileDrop","init",i),u.dispatchEvent("ready")}),u.connectRuntime(i)},destroy:function(){var e=this.getRuntime();e&&(e.exec.call(this,"FileDrop","destroy"),this.disconnectRuntime()),this.files=null}})}var c=["ready","dragenter","dragleave","drop","error"];return u.prototype=a.instance,u}),n("moxie/runtime/RuntimeTarget",["moxie/core/utils/Basic","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i){function n(){this.uid=e.guid("uid_"),t.call(this),this.destroy=function(){this.disconnectRuntime(),this.unbindAll()}}return n.prototype=i.instance,n}),n("moxie/file/FileReader",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/Exceptions","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/runtime/RuntimeTarget"],function(e,t,i,n,r,o,a){function s(){function n(e,n){function l(e){c.readyState=s.DONE,c.error=e,c.trigger("error"),d()}function d(){o.destroy(),o=null,c.trigger("loadend")}if(o=new a,this.convertEventPropsToHandlers(u),this.readyState===s.LOADING)return l(new i.DOMException(i.DOMException.INVALID_STATE_ERR));if(this.readyState=s.LOADING,this.trigger("loadstart"),n instanceof r)if(n.isDetached()){var m=n.getSource();switch(e){case"readAsText":case"readAsBinaryString":this.result=m;break;case"readAsDataURL":this.result="data:"+n.type+";base64,"+t.btoa(m)}this.readyState=s.DONE,this.trigger("load"),d()}else!function(t){o.bind("Error",function(e,t){l(t)}),o.bind("Progress",function(e){c.result=t.exec.call(o,"FileReader","getResult"),c.trigger(e)}),o.bind("Load",function(e){c.readyState=s.DONE,c.result=t.exec.call(o,"FileReader","getResult"),c.trigger(e),d()}),t.exec.call(o,"FileReader","read",e,n)}(o.connectRuntime(n.ruid));else l(new i.DOMException(i.DOMException.NOT_FOUND_ERR))}var o,c=this;e.extend(this,{uid:e.guid("uid_"),readyState:s.EMPTY,result:null,error:null,readAsBinaryString:function(e){n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){n.call(this,"readAsDataURL",e)},readAsText:function(e){n.call(this,"readAsText",e)},abort:function(){this.result=null,-1===e.inArray(this.readyState,[s.EMPTY,s.DONE])&&(this.readyState===s.LOADING&&(this.readyState=s.DONE),o&&o.getRuntime().exec.call(this,"FileReader","abort"),this.trigger("abort"),this.trigger("loadend"))},destroy:function(){this.abort(),o&&(o.getRuntime().exec.call(this,"FileReader","destroy"),o.disconnectRuntime()),c=o=null}})}var u=["loadstart","progress","load","abort","error","loadend"];return s.EMPTY=0,s.LOADING=1,s.DONE=2,s.prototype=n.instance,s}),n("moxie/core/utils/Url",[],function(){var e=function(t,i){for(var n=["source","scheme","authority","userInfo","user","pass","host","port","relative","path","directory","file","query","fragment"],r=n.length,o={http:80,https:443},a={},s=/^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,u=s.exec(t||"");r--;)u[r]&&(a[n[r]]=u[r]);if(!a.scheme){i&&"string"!=typeof i||(i=e(i||document.location.href)),a.scheme=i.scheme,
2
- a.host=i.host,a.port=i.port;var c="";/^[^\/]/.test(a.path)&&(c=i.path,/(\/|\/[^\.]+)$/.test(c)?c+="/":c=c.replace(/\/[^\/]+$/,"/")),a.path=c+(a.path||"")}return a.port||(a.port=o[a.scheme]||80),a.port=parseInt(a.port,10),a.path||(a.path="/"),delete a.source,a};return{parseUrl:e,resolveUrl:function(t){var i={http:80,https:443},n=e(t);return n.scheme+"://"+n.host+(n.port!==i[n.scheme]?":"+n.port:"")+n.path+(n.query?n.query:"")},hasSameOrigin:function(t){function i(e){return[e.scheme,e.host,e.port].join("/")}return"string"==typeof t&&(t=e(t)),i(e())===i(t)}}}),n("moxie/file/FileReaderSync",["moxie/core/utils/Basic","moxie/runtime/RuntimeClient","moxie/core/utils/Encode"],function(e,t,i){return function(){function n(e,t){if(!t.isDetached()){var n=this.connectRuntime(t.ruid).exec.call(this,"FileReaderSync","read",e,t);return this.disconnectRuntime(),n}var r=t.getSource();switch(e){case"readAsBinaryString":return r;case"readAsDataURL":return"data:"+t.type+";base64,"+i.btoa(r);case"readAsText":for(var o="",a=0,s=r.length;a<s;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return n.call(this,"readAsDataURL",e)},readAsText:function(e){return n.call(this,"readAsText",e)}})}}),n("moxie/xhr/FormData",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/Blob"],function(e,t,i){function n(){var e,n=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof i?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):n.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(i){t.each(n,function(e){i(e.value,e.name)}),e&&i(e.value,e.name)},destroy:function(){e=null,n=[]}})}return n}),n("moxie/xhr/XMLHttpRequest",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/core/utils/Url","moxie/runtime/Runtime","moxie/runtime/RuntimeTarget","moxie/file/Blob","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/core/utils/Env","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u,c,l,d){function m(){this.uid=e.guid("uid_")}function f(){function i(e,t){if(S.hasOwnProperty(e))return 1===arguments.length?l.can("define_property")?S[e]:T[e]:void(l.can("define_property")?S[e]=t:T[e]=t)}function u(t){function n(){_.destroy(),_=null,s.dispatchEvent("loadend"),s=null}function r(r){_.bind("LoadStart",function(e){i("readyState",f.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),M&&s.upload.dispatchEvent(e)}),_.bind("Progress",function(e){i("readyState")!==f.LOADING&&(i("readyState",f.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),_.bind("UploadProgress",function(e){M&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),_.bind("Load",function(t){i("readyState",f.DONE),i("status",Number(r.exec.call(_,"XMLHttpRequest","getStatus")||0)),i("statusText",h[i("status")]||""),i("response",r.exec.call(_,"XMLHttpRequest","getResponse",i("responseType"))),~e.inArray(i("responseType"),["text",""])?i("responseText",i("response")):"document"===i("responseType")&&i("responseXML",i("response")),U=r.exec.call(_,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),i("status")>0?(M&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(F=!0,s.dispatchEvent("error")),n()}),_.bind("Abort",function(e){s.dispatchEvent(e),n()}),_.bind("Error",function(e){F=!0,i("readyState",f.DONE),s.dispatchEvent("readystatechange"),C=!0,s.dispatchEvent(e),n()}),r.exec.call(_,"XMLHttpRequest","send",{url:x,method:v,async:A,user:y,password:w,headers:O,mimeType:D,encoding:I,responseType:s.responseType,withCredentials:s.withCredentials,options:k},t)}var s=this;E=(new Date).getTime(),_=new a,"string"==typeof k.required_caps&&(k.required_caps=o.parseCaps(k.required_caps)),k.required_caps=e.extend({},k.required_caps,{return_response_type:s.responseType}),t instanceof c&&(k.required_caps.send_multipart=!0),B||(k.required_caps.do_cors=!0),k.ruid?r(_.connectRuntime(k)):(_.bind("RuntimeInit",function(e,t){r(t)}),_.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),_.connectRuntime(k))}function g(){i("responseText",""),i("responseXML",null),i("response",null),i("status",0),i("statusText",""),E=R=null}var x,v,y,w,E,R,_,b,T=this,S={timeout:0,readyState:f.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},A=!0,O={},I=null,D=null,N=!1,L=!1,M=!1,C=!1,F=!1,B=!1,H=null,P=null,k={},U="";e.extend(this,S,{uid:e.guid("uid_"),upload:new m,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||n.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(v=o.toUpperCase()),~e.inArray(v,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=n.utf8_encode(a),l=r.parseUrl(a),B=r.hasSameOrigin(l),x=r.resolveUrl(a),(u||c)&&!B)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(y=u||l.user,w=c||l.pass,!1===(A=s||!0)&&(i("timeout")||i("withCredentials")||""!==i("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);N=!A,L=!1,O={},g.call(this),i("readyState",f.OPENED),this.convertEventPropsToHandlers(["readystatechange"]),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(i("readyState")!==f.OPENED||L)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||n.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),!~e.inArray(r,a)&&!/^(proxy\-|sec\-)/.test(r)&&(O[r]?O[r]+=", "+o:O[r]=o,!0)},getAllResponseHeaders:function(){return U||""},getResponseHeader:function(t){return t=t.toLowerCase(),F||~e.inArray(t,["set-cookie","set-cookie2"])?null:U&&""!==U&&(b||(b={},e.each(U.split(/\r\n/),function(t){var i=t.split(/:\s+/);2===i.length&&(i[0]=e.trim(i[0]),b[i[0].toLowerCase()]={header:i[0],value:e.trim(i[1])})})),b.hasOwnProperty(t))?b[t].header+": "+b[t].value:null},overrideMimeType:function(n){var r,o;if(~e.inArray(i("readyState"),[f.LOADING,f.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n=e.trim(n.toLowerCase()),/;/.test(n)&&(r=n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(n=r[1],r[2]&&(o=r[2])),!d.mimes[n])throw new t.DOMException(t.DOMException.SYNTAX_ERR);H=n,P=o},send:function(i,r){if(k="string"===e.typeOf(r)?{ruid:r}:r||{},this.convertEventPropsToHandlers(p),this.upload.convertEventPropsToHandlers(p),this.readyState!==f.OPENED||L)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i instanceof s)k.ruid=i.ruid,D=i.type||"application/octet-stream";else if(i instanceof c){if(i.hasBlob()){var o=i.getBlob();k.ruid=o.ruid,D=o.type||"application/octet-stream"}}else"string"==typeof i&&(I="UTF-8",D="text/plain;charset=UTF-8",i=n.utf8_encode(i));this.withCredentials||(this.withCredentials=k.required_caps&&k.required_caps.send_browser_cookies&&!B),M=!N&&this.upload.hasEventListener(),F=!1,C=!i,N||(L=!0),u.call(this,i)},abort:function(){if(F=!0,N=!1,~e.inArray(i("readyState"),[f.UNSENT,f.OPENED,f.DONE]))i("readyState",f.UNSENT);else{if(i("readyState",f.DONE),L=!1,!_)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);_.getRuntime().exec.call(_,"XMLHttpRequest","abort",C),C=!0}},destroy:function(){_&&("function"===e.typeOf(_.destroy)&&_.destroy(),_=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}})}var h={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};m.prototype=i.instance;var p=["loadstart","progress","abort","error","load","timeout","loadend"];return f.UNSENT=0,f.OPENED=1,f.HEADERS_RECEIVED=2,f.LOADING=3,f.DONE=4,f.prototype=i.instance,f}),n("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i,n){function r(){function n(){l=d=0,c=this.result=null}function o(t,i){var n=this;u=i,n.bind("TransportingProgress",function(t){(d=t.loaded)<l&&-1===e.inArray(n.state,[r.IDLE,r.DONE])&&a.call(n)},999),n.bind("TransportingComplete",function(){d=l,n.state=r.DONE,c=null,n.result=u.exec.call(n,"Transporter","getAsBlob",t||"")},999),n.state=r.BUSY,n.trigger("TransportingStarted"),a.call(n)}function a(){var e,i=this,n=l-d;m>n&&(m=n),e=t.btoa(c.substr(d,m)),u.exec.call(i,"Transporter","receive",e,l)}var s,u,c,l,d,m;i.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,i,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),m=r.chunk_size,n.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,i,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,i,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),n.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),n.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=n.instance,r}),n("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],function(e,t,i,n,r,o,a,s,u,c,l,d,m){function f(){function n(e){e||(e=this.getRuntime().exec.call(this,"Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name)}function c(t){var n=e.typeOf(t);try{if(t instanceof f){if(!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);p.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(n,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===n)/^data:[^;]*;base64,/.test(t)?c.call(this,new l(null,{data:t}),arguments[1]):x.apply(this,arguments);else{if("node"!==n||"img"!==t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(e){this.trigger("error",e)}}function p(t,i){var n=this.connectRuntime(t.ruid);this.ruid=n.uid,n.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(i)||i)}function g(t,i){function n(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){n(t)}),i&&"string"==typeof i.required_caps&&(i.required_caps=o.parseCaps(i.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},i))):n(this.connectRuntime(t.ruid))}function x(e,t){var i,n=this;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){this.bind("Load Resize",function(){n.call(this)},999),this.convertEventPropsToHandlers(h),c.apply(this,arguments)},downsize:function(t,n,r,o){try{if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(this.width>f.MAX_RESIZE_WIDTH||this.height>f.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);(t||n)&&"undefined"!==e.typeOf(r)||(r=!1),t=t||this.width,n=n||this.height,o="undefined"===e.typeOf(o)||!!o,this.getRuntime().exec.call(this,"Image","downsize",t,n,r,o)}catch(e){this.trigger("error",e)}},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return this.connectRuntime(this.ruid).exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return e||(e="image/jpeg"),"image/jpeg"!==e||t||(t=90),this.getRuntime().exec.call(this,"Image","getAsBlob",e,t)},getAsDataURL:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.getRuntime().exec.call(this,"Image","getAsDataURL",e,t)},getAsBinaryString:function(e,t){var i=this.getAsDataURL(e,t);return m.atob(i.substring(i.indexOf("base64,")+7))},embed:function(n){function r(){if(u.can("create_canvas")){var t=o.getAsCanvas();if(t)return n.appendChild(t),t=null,o.destroy(),void h.trigger("embedded")}var r=o.getAsDataURL(a,c);if(!r)throw new i.ImageError(i.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",r.length))n.innerHTML='<img src="'+r+'" width="'+o.width+'" height="'+o.height+'" />',o.destroy(),h.trigger("embedded");else{var l=new s;l.bind("TransportingComplete",function(){d=h.connectRuntime(this.result.ruid),h.bind("Embedded",function(){e.extend(d.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),d=null},999),d.exec.call(h,"ImageView","display",this.result.uid,g,x),o.destroy()}),l.transport(m.atob(r.substring(r.indexOf("base64,")+7)),a,e.extend({},p,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n}))}}var o,a,c,l,d,h=this,p=arguments[1]||{},g=this.width,x=this.height;try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(this.width>f.MAX_RESIZE_WIDTH||this.height>f.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);if(a=p.type||this.type||"image/jpeg",c=p.quality||90,l="undefined"!==e.typeOf(p.crop)&&p.crop,p.width)g=p.width,x=p.height||g;else{var v=t.getSize(n);v.w&&v.h&&(g=v.w,x=v.h)}return o=new f,o.bind("Resize",function(){r.call(h)}),o.bind("Load",function(){o.downsize(g,x,l,!1)}),o.clone(this,!1),o}catch(e){this.trigger("error",e)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}})}var h=["progress","load","error","resize","embedded"];return f.MAX_RESIZE_WIDTH=6500,f.MAX_RESIZE_HEIGHT=6500,f.prototype=c.instance,f}),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function r(t){var r=this,s=i.capTest,u=i.capTrue,c=e.extend({access_binary:s(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return r.can("access_binary")&&!!a.Image},display_media:s(n.can("create_canvas")||n.can("use_data_uri_over32kb")),do_cors:s(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:s(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==n.browser||n.version>9)}()),filter_by_extension:s(function(){return"Chrome"===n.browser&&n.version>=28||"IE"===n.browser&&n.version>=10}()),return_response_headers:u,return_response_type:function(e){return!("json"!==e||!window.JSON)||n.can("return_response_type",e)},return_status_code:u,report_upload_progress:s(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return r.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return r.can("select_file")&&"Chrome"===n.browser&&n.version>=21},select_multiple:function(){return r.can("select_file")&&!("Safari"===n.browser&&"Windows"===n.os)&&!("iOS"===n.os&&n.verComp(n.osVersion,"7.0.4","<"))},send_binary_string:s(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:s(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||r.can("send_binary_string")},slice_blob:s(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return r.can("slice_blob")&&r.can("send_multipart")},summon_file_dialog:s(function(){return"Firefox"===n.browser&&n.version>=4||"Opera"===n.browser&&n.version>=12||"IE"===n.browser&&n.version>=10||!!~e.inArray(n.browser,["Chrome","Safari"])}()),upload_filesize:u},arguments[2]);i.call(this,t,arguments[1]||o,c),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(r),e=r=null}}(this.destroy)}),e.extend(this.getShim(),a)}var o="html5",a={};return i.addConstructor(o,r),a}),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],function(e,t){function i(){function e(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(n){return e.slice(t,i-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=i}),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],function(e){function t(){this.returnValue=!1}function i(){this.cancelBubble=!0}var n={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=i,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),n.hasOwnProperty(o[r])||(n[o[r]]={}),l=n[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,i,o){var a;if(i=i.toLowerCase(),t[r]&&n[t[r]]&&n[t[r]][i]){a=n[t[r]][i];for(var s=a.length-1;s>=0&&(a[s].orig!==o&&a[s].key!==o||(t.removeEventListener?t.removeEventListener(i,a[s].func,!1):t.detachEvent&&t.detachEvent("on"+i,a[s].func),a[s].orig=null,a[s].func=null,a.splice(s,1),void 0===o));s--);if(a.length||delete n[t[r]][i],e.isEmptyObj(n[t[r]])){delete n[t[r]];try{delete t[r]}catch(e){t[r]=void 0}}}};return{addEvent:o,removeEvent:a,removeAllEvents:function(t,i){t&&t[r]&&e.each(n[t[r]],function(e,n){a(t,n,i)})}}}),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o){function a(){var e,a=[];t.extend(this,{init:function(s){var u,c,l,d,m,f,h=this,p=h.getRuntime();e=s,a=[],l=e.accept.mimes||r.extList2mimes(e.accept,p.can("filter_by_extension")),c=p.getShimContainer(),c.innerHTML='<input id="'+p.uid+'" type="file" style="font-size:999px;opacity:0;"'+(e.multiple&&p.can("select_multiple")?"multiple":"")+(e.directory&&p.can("select_folder")?"webkitdirectory directory":"")+(l?' accept="'+l.join(",")+'"':"")+" />",u=i.get(p.uid),t.extend(u.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),d=i.get(e.browse_button),p.can("summon_file_dialog")&&("static"===i.getStyle(d,"position")&&(d.style.position="relative"),m=parseInt(i.getStyle(d,"z-index"),10)||1,d.style.zIndex=m,c.style.zIndex=m-1,n.addEvent(d,"click",function(e){var t=i.get(p.uid);t&&!t.disabled&&t.click(),e.preventDefault()},h.uid)),f=p.can("summon_file_dialog")?d:c,n.addEvent(f,"mouseover",function(){h.trigger("mouseenter")},h.uid),n.addEvent(f,"mouseout",function(){h.trigger("mouseleave")},h.uid),n.addEvent(f,"mousedown",function(){h.trigger("mousedown")},h.uid),n.addEvent(i.get(e.container),"mouseup",function(){h.trigger("mouseup")},h.uid),u.onchange=function i(){if(a=[],e.directory?t.each(this.files,function(e){"."!==e.name&&a.push(e)}):a=[].slice.call(this.files),"IE"!==o.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=i}h.trigger("change")},h.trigger({type:"ready",async:!0}),c=null},getFiles:function(){return a},disable:function(e){var t,n=this.getRuntime();(t=i.get(n.uid))&&(t.disabled=!!e)},destroy:function(){var t=this.getRuntime(),r=t.getShim(),o=t.getShimContainer();n.removeAllEvents(o,this.uid),n.removeAllEvents(e&&i.get(e.container),this.uid),n.removeAllEvents(e&&i.get(e.browse_button),this.uid),o&&(o.innerHTML=""),r.removeInstance(this.uid),a=e=o=r=null}})}return e.FileInput=a}),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],function(e,t,i,n,r){function o(){function e(e){for(var i=[],n=0;n<e.length;n++)[].push.apply(i,e[n].extensions.split(/\s*,\s*/));return-1===t.inArray("*",i)?i:[]}function o(e){var i=r.getFileExtension(e.name);return!i||!m.length||-1!==t.inArray(i,m)}function a(e,i){var n=[];t.each(e,function(e){var t=e.webkitGetAsEntry();if(t)if(t.isFile){var i=e.getAsFile();o(i)&&d.push(i)}else n.push(t)}),n.length?s(n,i):i()}function s(e,i){var n=[];t.each(e,function(e){n.push(function(t){u(e,t)})}),t.inSeries(n,function(){i()})}function u(e,t){e.isFile?e.file(function(e){o(e)&&d.push(e),t()},function(){t()}):e.isDirectory?c(e,t):t()}function c(e,t){function i(e){r.readEntries(function(t){t.length?([].push.apply(n,t),i(e)):e()},e)}var n=[],r=e.createReader();i(function(){s(n,t)})}var l,d=[],m=[];t.extend(this,{init:function(i){var r,s=this;l=i,m=e(l.accept),r=l.container,n.addEvent(r,"dragover",function(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy"},s.uid),n.addEvent(r,"drop",function(e){e.preventDefault(),e.stopPropagation(),d=[],e.dataTransfer.items&&e.dataTransfer.items[0].webkitGetAsEntry?a(e.dataTransfer.items,function(){s.trigger("drop")}):(t.each(e.dataTransfer.files,function(e){o(e)&&d.push(e)}),s.trigger("drop"))},s.uid),n.addEvent(r,"dragenter",function(e){e.preventDefault(),e.stopPropagation(),s.trigger("dragenter")},s.uid),n.addEvent(r,"dragleave",function(e){e.preventDefault(),e.stopPropagation(),s.trigger("dragleave")},s.uid)},getFiles:function(){return d},destroy:function(){n.removeAllEvents(l&&i.get(l.container),this.uid),d=m=l=null}})}return e.FileDrop=o}),n("moxie/runtime/html5/file/FileReader",["moxie/runtime/html5/Runtime","moxie/core/utils/Encode","moxie/core/utils/Basic"],function(e,t,i){function n(){function e(e){return t.atob(e.substring(e.indexOf("base64,")+7))}var n,r=!1;i.extend(this,{read:function(e,t){var o=this;n=new window.FileReader,n.addEventListener("progress",function(e){o.trigger(e)}),n.addEventListener("load",function(e){o.trigger(e)}),n.addEventListener("error",function(e){o.trigger(e,n.error)}),n.addEventListener("loadend",function(){n=null}),"function"===i.typeOf(n[e])?(r=!1,n[e](t.getSource())):"readAsBinaryString"===e&&(r=!0,n.readAsDataURL(t.getSource()))},getResult:function(){return n&&n.result?r?e(n.result):n.result:null},abort:function(){n&&n.abort()},destroy:function(){n=null}})}return e.FileReader=n}),n("moxie/runtime/html5/xhr/XMLHttpRequest",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/core/utils/Url","moxie/file/File","moxie/file/Blob","moxie/xhr/FormData","moxie/core/Exceptions","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(e,t){var i,n,r=this;i=t.getBlob().getSource(),n=new window.FileReader,n.onload=function(){t.append(t.getBlobName(),new o(null,{type:i.type,data:n.result})),h.send.call(r,e,t)},n.readAsBinaryString(i)}function c(){return!window.XMLHttpRequest||"IE"===u.browser&&u.version<8?function(){for(var e=["Msxml2.XMLHTTP.6.0","Microsoft.XMLHTTP"],t=0;t<e.length;t++)try{return new ActiveXObject(e[t])}catch(e){}}():new window.XMLHttpRequest}function l(e){var t=e.responseXML,i=e.responseText;return"IE"===u.browser&&i&&t&&!t.documentElement&&/[^\/]+\/[^\+]+\+xml/.test(e.getResponseHeader("Content-Type"))&&(t=new window.ActiveXObject("Microsoft.XMLDOM"),t.async=!1,t.validateOnParse=!1,t.loadXML(i)),t&&("IE"===u.browser&&0!==t.parseError||!t.documentElement||"parsererror"===t.documentElement.tagName)?null:t}function d(e){var t="----moxieboundary"+(new Date).getTime(),i="\r\n",n="";if(!this.getRuntime().can("send_binary_string"))throw new s.RuntimeError(s.RuntimeError.NOT_SUPPORTED_ERR);return m.setRequestHeader("Content-Type","multipart/form-data; boundary="+t),e.each(function(e,r){n+=e instanceof o?"--"+t+i+'Content-Disposition: form-data; name="'+r+'"; filename="'+unescape(encodeURIComponent(e.name||"blob"))+'"'+i+"Content-Type: "+(e.type||"application/octet-stream")+i+i+e.getSource()+i:"--"+t+i+'Content-Disposition: form-data; name="'+r+'"'+i+i+unescape(encodeURIComponent(e))+i}),n+="--"+t+"--"+i}var m,f,h=this;t.extend(this,{send:function(i,r){var s=this,l="Mozilla"===u.browser&&u.version>=4&&u.version<7,h="Android Browser"===u.browser,p=!1;if(f=i.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),m=c(),m.open(i.method,i.url,i.async,i.user,i.password),r instanceof o)r.isDetached()&&(p=!0),r=r.getSource();else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),p=!0;else if((l||h)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return void e.call(s,i,r);if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}m.upload?(i.withCredentials&&(m.withCredentials=!0),m.addEventListener("load",function(e){s.trigger(e)}),m.addEventListener("error",function(e){s.trigger(e)}),m.addEventListener("progress",function(e){s.trigger(e)}),m.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):m.onreadystatechange=function(){switch(m.readyState){case 1:case 2:break;case 3:var e,t;try{n.hasSameOrigin(i.url)&&(e=m.getResponseHeader("Content-Length")||0),m.responseText&&(t=m.responseText.length)}catch(i){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:m.onreadystatechange=function(){},0===m.status?s.trigger("error"):s.trigger("load")}},t.isEmptyObj(i.headers)||t.each(i.headers,function(e,t){m.setRequestHeader(t,e)}),""!==i.responseType&&"responseType"in m&&("json"!==i.responseType||u.can("return_response_type","json")?m.responseType=i.responseType:m.responseType="text"),p?m.sendAsBinary?m.sendAsBinary(r):function(){for(var e=new Uint8Array(r.length),t=0;t<r.length;t++)e[t]=255&r.charCodeAt(t);m.send(e.buffer)}():m.send(r),s.trigger("loadstart")},getStatus:function(){try{if(m)return m.status}catch(e){}return 0},getResponse:function(e){var t=this.getRuntime();try{switch(e){case"blob":var n=new r(t.uid,m.response),o=m.getResponseHeader("Content-Disposition");if(o){var a=o.match(/filename=([\'\"'])([^\1]+)\1/);a&&(f=a[2])}return n.name=f,n.type||(n.type=i.getFileMime(f)),n;case"json":return u.can("return_response_type","json")?m.response:200===m.status&&window.JSON?JSON.parse(m.responseText):null;case"document":return l(m);default:return""!==m.responseText?m.responseText:null}}catch(e){return null}},getAllResponseHeaders:function(){try{return m.getAllResponseHeaders()}catch(e){}return""},abort:function(){m&&m.abort()},destroy:function(){h=f=null}})}return e.XMLHttpRequest=c}),n("moxie/runtime/html5/utils/BinaryReader",[],function(){return function(){function e(e,t){var i,n=o?0:-8*(t-1),a=0;for(i=0;i<t;i++)a|=r.charCodeAt(e+i)<<Math.abs(n+8*i);return a}function i(e,t,i){i=3===arguments.length?i:r.length-t-1,r=r.substr(0,t)+e+r.substr(i+t)}function n(e,t,n){var r,a="",s=o?0:-8*(n-1);for(r=0;r<n;r++)a+=String.fromCharCode(t>>Math.abs(s+8*r)&255);i(a,e,n)}var r,o=!1;return{II:function(e){if(e===t)return o;o=e},init:function(e){o=!1,r=e},SEGMENT:function(e,t,n){switch(arguments.length){case 1:return r.substr(e,r.length-e-1);case 2:return r.substr(e,t);case 3:i(n,e,t);break;default:return r}},BYTE:function(t){return e(t,1)},SHORT:function(t){return e(t,2)},LONG:function(i,r){if(r===t)return e(i,4);n(i,r,4)},SLONG:function(t){var i=e(t,4);return i>2147483647?i-4294967296:i},STRING:function(t,i){var n="";for(i+=t;t<i;t++)n+=String.fromCharCode(e(t,1));return n}}}}),n("moxie/runtime/html5/image/JPEGHeaders",["moxie/runtime/html5/utils/BinaryReader"],function(e){return function t(i){var n,r,o,a=[],s=0;if(n=new e,n.init(i),65496===n.SHORT(0)){for(r=2;r<=i.length;)if((o=n.SHORT(r))>=65488&&o<=65495)r+=2;else{if(65498===o||65497===o)break;s=n.SHORT(r+2)+2,o>=65505&&o<=65519&&a.push({hex:o,name:"APP"+(15&o),start:r,length:s,segment:n.SEGMENT(r,s)}),r+=s}return n.init(null),{headers:a,restore:function(e){var t,i;for(n.init(e),r=65504==n.SHORT(2)?4+n.SHORT(4):2,i=0,t=a.length;i<t;i++)n.SEGMENT(r,0,a[i].segment),r+=a[i].length;return e=n.SEGMENT(),n.init(null),e},strip:function(e){var i,r,o;for(r=new t(e),i=r.headers,r.purge(),n.init(e),o=i.length;o--;)n.SEGMENT(i[o].start,i[o].length,"");return e=n.SEGMENT(),n.init(null),e},get:function(e){for(var t=[],i=0,n=a.length;i<n;i++)a[i].name===e.toUpperCase()&&t.push(a[i].segment);return t},set:function(e,t){var i,n,r,o=[];for("string"==typeof t?o.push(t):o=t,i=n=0,r=a.length;i<r&&(a[i].name===e.toUpperCase()&&(a[i].segment=o[n],a[i].length=o[n].length,n++),!(n>=o.length));i++);},purge:function(){a=[],n.init(null),n=null}}}}}),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(e,i){return function(){function n(e,i){var n,r,o,s,u,d,m,f=a.SHORT(e),h=[],p={};for(n=0;n<f;n++)if(d=e+12*n+2,(o=i[a.SHORT(d)])!==t){switch(s=a.SHORT(d+=2),u=a.LONG(d+=2),d+=4,h=[],s){case 1:case 7:for(u>4&&(d=a.LONG(d)+l.tiffHeader),r=0;r<u;r++)h[r]=a.BYTE(d+r);break;case 2:u>4&&(d=a.LONG(d)+l.tiffHeader),p[o]=a.STRING(d,u-1);continue;case 3:for(u>2&&(d=a.LONG(d)+l.tiffHeader),r=0;r<u;r++)h[r]=a.SHORT(d+2*r);break;case 4:for(u>1&&(d=a.LONG(d)+l.tiffHeader),r=0;r<u;r++)h[r]=a.LONG(d+4*r);break;case 5:for(d=a.LONG(d)+l.tiffHeader,r=0;r<u;r++)h[r]=a.LONG(d+4*r)/a.LONG(d+4*r+4);break;case 9:for(d=a.LONG(d)+l.tiffHeader,r=0;r<u;r++)h[r]=a.SLONG(d+4*r);break;case 10:for(d=a.LONG(d)+l.tiffHeader,r=0;r<u;r++)h[r]=a.SLONG(d+4*r)/a.SLONG(d+4*r+4);break;default:continue}m=1==u?h[0]:h,c.hasOwnProperty(o)&&"object"!=typeof m?p[o]=c[o][m]:p[o]=m}return p}function r(){var e=l.tiffHeader
3
- ;return a.II(18761==a.SHORT(e)),42===a.SHORT(e+=2)&&(l.IFD0=l.tiffHeader+a.LONG(e+=2),u=n(l.IFD0,s.tiff),"ExifIFDPointer"in u&&(l.exifIFD=l.tiffHeader+u.ExifIFDPointer,delete u.ExifIFDPointer),"GPSInfoIFDPointer"in u&&(l.gpsIFD=l.tiffHeader+u.GPSInfoIFDPointer,delete u.GPSInfoIFDPointer),!0)}function o(e,t,i){var n,r,o,u=0;if("string"==typeof t){var c=s[e.toLowerCase()];for(var d in c)if(c[d]===t){t=d;break}}n=l[e.toLowerCase()+"IFD"],r=a.SHORT(n);for(var m=0;m<r;m++)if(o=n+12*m+2,a.SHORT(o)==t){u=o+8;break}return!!u&&(a.LONG(u,i),!0)}var a,s,u,c,l={};return a=new i,s={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"}},c={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire.",1:"Flash fired.",5:"Strobe return light not detected.",7:"Strobe return light detected.",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},{init:function(e){return l={tiffHeader:10},!(e===t||!e.length)&&(a.init(e),65505===a.SHORT(0)&&"EXIF\0"===a.STRING(4,5).toUpperCase()&&r())},TIFF:function(){return u},EXIF:function(){var t;if(t=n(l.exifIFD,s.exif),t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var i=0,r="";i<t.ExifVersion.length;i++)r+=String.fromCharCode(t.ExifVersion[i]);t.ExifVersion=r}return t},GPS:function(){var t;return t=n(l.gpsIFD,s.gps),t.GPSVersionID&&"array"===e.typeOf(t.GPSVersionID)&&(t.GPSVersionID=t.GPSVersionID.join(".")),t},setExif:function(e,t){return("PixelXDimension"===e||"PixelYDimension"===e)&&o("exif",e,t)},getBinary:function(){return a.SEGMENT()},purge:function(){a.init(null),a=u=null,l={}}}}}),n("moxie/runtime/html5/image/JPEG",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEGHeaders","moxie/runtime/html5/utils/BinaryReader","moxie/runtime/html5/image/ExifParser"],function(e,t,i,n,r){function o(o){function a(){for(var e,t,i=0;i<=u.length;){if((e=c.SHORT(i+=2))>=65472&&e<=65475)return i+=5,{height:c.SHORT(i),width:c.SHORT(i+=2)};t=c.SHORT(i+=2),i+=t-2}return null}function s(){d&&l&&c&&(d.purge(),l.purge(),c.init(null),u=m=l=d=c=null)}var u,c,l,d,m,f;if(u=o,c=new n,c.init(u),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new i(o),d=new r,f=!!d.init(l.get("app1")[0]),m=a.call(this),e.extend(this,{type:"image/jpeg",size:u.length,width:m&&m.width||0,height:m&&m.height||0,setExif:function(t,i){if(!f)return!1;"object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,i),l.set("app1",d.getBinary())},writeHeaders:function(){return arguments.length?l.restore(arguments[0]):u=l.restore(u)},stripHeaders:function(e){return l.strip(e)},purge:function(){s.call(this)}}),f&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS()})}return o}),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(e,t,i){function n(n){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:u.LONG(t),height:u.LONG(t+=4)}):null}function o(){u&&(u.init(null),s=d=c=l=u=null)}function a(e){var t,i,n,r;return t=u.LONG(e),i=u.STRING(e+=4,4),n=e+=4,r=u.LONG(e+t),{length:t,type:i,start:n,CRC:r}}var s,u,c,l,d;s=n,u=new i,u.init(s),function(){var t=0,i=0,n=[35152,20039,3338,6666];for(i=0;i<n.length;i++,t+=2)if(n[i]!=u.SHORT(t))throw new e.ImageError(e.ImageError.WRONG_FORMAT)}(),d=r.call(this),t.extend(this,{type:"image/png",size:s.length,width:d.width,height:d.height,purge:function(){o.call(this)}}),o.call(this)}return n}),n("moxie/runtime/html5/image/ImageInfo",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEG","moxie/runtime/html5/image/PNG"],function(e,t,i,n){return function(r){var o,a=[i,n];o=function(){for(var e=0;e<a.length;e++)try{return new a[e](r)}catch(e){}throw new t.ImageError(t.ImageError.WRONG_FORMAT)}(),e.extend(this,{type:"",size:0,width:0,height:0,setExif:function(){},writeHeaders:function(e){return e},stripHeaders:function(e){return e},purge:function(){}}),e.extend(this,o),this.purge=function(){o.purge(),o=null}}}),n("moxie/runtime/html5/image/MegaPixel",[],function(){function e(e,n,r){var o=e.naturalWidth,a=e.naturalHeight,s=r.width,u=r.height,c=r.x||0,l=r.y||0,d=n.getContext("2d");t(e)&&(o/=2,a/=2);var m=1024,f=document.createElement("canvas");f.width=f.height=m;for(var h=f.getContext("2d"),p=i(e,o,a),g=0;g<a;){for(var x=g+m>a?a-g:m,v=0;v<o;){var y=v+m>o?o-v:m;h.clearRect(0,0,m,m),h.drawImage(e,-v,-g);var w=v*s/o+c<<0,E=Math.ceil(y*s/o),R=g*u/a/p+l<<0,_=Math.ceil(x*u/a/p);d.drawImage(f,0,0,y,x,w,R,E,_),v+=m}g+=m}f=h=null}function t(e){var t=e.naturalWidth;if(t*e.naturalHeight>1048576){var i=document.createElement("canvas");i.width=i.height=1;var n=i.getContext("2d");return n.drawImage(e,1-t,0),0===n.getImageData(0,0,1,1).data[3]}return!1}function i(e,t,i){var n=document.createElement("canvas");n.width=1,n.height=i;var r=n.getContext("2d");r.drawImage(e,0,0);for(var o=r.getImageData(0,0,1,i).data,a=0,s=i,u=i;u>a;){0===o[4*(u-1)+3]?s=u:a=u,u=s+a>>1}n=null;var c=u/i;return 0===c?1:c}return{isSubsampled:t,renderTo:e}}),n("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/MegaPixel","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(){if(!y&&!x)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);return y||x}function c(e){return n.atob(e.substring(e.indexOf("base64,")+7))}function l(e,t){return"data:"+(t||"")+";base64,"+n.btoa(e)}function d(e){var t=this;x=new Image,x.onerror=function(){g.call(this),t.trigger("error",new i.ImageError(i.ImageError.WRONG_FORMAT))},x.onload=function(){t.trigger("load")},x.src=/^data:[^;]*;base64,/.test(e)?e:l(e,E.type)}function m(e,t){var n,r=this;if(!window.FileReader)return t(e.getAsDataURL());n=new FileReader,n.onload=function(){t(this.result)},n.onerror=function(){r.trigger("error",new i.FileException(i.FileException.NOT_READABLE_ERR))},n.readAsDataURL(e)}function f(i,n,r,o){var a,s,u,c,l,d,m=this,f=0,g=0;if(b=o,d=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1,-1!==t.inArray(d,[5,6,7,8])){var x=i;i=n,n=x}if(u=e(),s=r?Math.max:Math.min,(a=s(i/u.width,n/u.height))>1&&(!r||o))return void this.trigger("Resize");y||(y=document.createElement("canvas")),c=Math.round(u.width*a),l=Math.round(u.height*a),r?(y.width=i,y.height=n,c>i&&(f=Math.round((c-i)/2)),l>n&&(g=Math.round((l-n)/2))):(y.width=c,y.height=l),b||p(y.width,y.height,d),h.call(this,u,y,-f,-g,c,l),this.width=y.width,this.height=y.height,_=!0,m.trigger("Resize")}function h(e,t,i,n,r,o){if("iOS"===u.OS)a.renderTo(e,t,{width:r,height:o,x:i,y:n});else{t.getContext("2d").drawImage(e,i,n,r,o)}}function p(e,t,i){switch(i){case 5:case 6:case 7:case 8:y.width=t,y.height=e;break;default:y.width=e,y.height=t}var n=y.getContext("2d");switch(i){case 2:n.translate(e,0),n.scale(-1,1);break;case 3:n.translate(e,t),n.rotate(Math.PI);break;case 4:n.translate(0,t),n.scale(1,-1);break;case 5:n.rotate(.5*Math.PI),n.scale(1,-1);break;case 6:n.rotate(.5*Math.PI),n.translate(0,-t);break;case 7:n.rotate(.5*Math.PI),n.translate(e,-t),n.scale(-1,1);break;case 8:n.rotate(-.5*Math.PI),n.translate(-e,0)}}function g(){v&&(v.purge(),v=null),w=x=y=E=null,_=!1}var x,v,y,w,E,R=this,_=!1,b=!0;t.extend(this,{loadFromBlob:function(e){var t=this,n=t.getRuntime(),r=!(arguments.length>1)||arguments[1];if(!n.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);if(E=e,e.isDetached())return w=e.getSource(),void d.call(this,w);m.call(this,e.getSource(),function(e){r&&(w=c(e)),d.call(t,e)})},loadFromImage:function(e,t){this.meta=e.meta,E=new r(null,{name:e.name,size:e.size,type:e.type}),d.call(this,t?w=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t=this.getRuntime();return!v&&w&&t.can("access_image_binary")&&(v=new o(w)),{width:e().width||0,height:e().height||0,type:E.type||s.getFileMime(E.name),size:w&&w.length||E.size||0,name:E.name||"",meta:v&&v.meta||this.meta||{}}},downsize:function(){f.apply(this,arguments)},getAsCanvas:function(){return y&&(y.id=this.uid+"_canvas"),y},getAsBlob:function(e,t){return e!==this.type&&f.call(this,this.width,this.height,!1),new r(null,{name:E.name||"",type:e,data:R.getAsBinaryString.call(this,e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!_)return x.src;if("image/jpeg"!==e)return y.toDataURL("image/png");try{return y.toDataURL("image/jpeg",t/100)}catch(e){return y.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!_)return w||(w=c(R.getAsDataURL(e,t))),w;if("image/jpeg"!==e)w=c(R.getAsDataURL(e,t));else{var i;t||(t=90);try{i=y.toDataURL("image/jpeg",t/100)}catch(e){i=y.toDataURL("image/jpeg")}w=c(i),v&&(w=v.stripHeaders(w),b&&(v.meta&&v.meta.exif&&v.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),w=v.writeHeaders(w)),v.purge(),v=null)}return _=!1,w},destroy:function(){R=null,g.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=c}),n("moxie/runtime/flash/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,r){function o(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(t){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function a(a){var c,l=this;a=e.extend({swf_url:t.swf_url},a),r.call(this,a,s,{access_binary:function(e){return e&&"browser"===l.mode},access_image_binary:function(e){return e&&"browser"===l.mode},display_media:r.capTrue,do_cors:r.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===l.mode},resize_image:r.capTrue,return_response_headers:!1,return_response_type:function(t){return!("json"!==t||!window.JSON)||(!e.arrayDiff(t,["","text","document"])||"browser"===l.mode)},return_status_code:function(t){return"browser"===l.mode||!e.arrayDiff(t,[200,404])},select_file:r.capTrue,select_multiple:r.capTrue,send_binary_string:function(e){return e&&"browser"===l.mode},send_browser_cookies:function(e){return e&&"browser"===l.mode},send_custom_headers:function(e){return e&&"browser"===l.mode},send_multipart:r.capTrue,slice_blob:r.capTrue,stream_upload:function(e){return e&&"browser"===l.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===l.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),o()<10&&(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid)},shimExec:function(e,t){var i=[].slice.call(arguments,2);return l.getShim().exec(this.uid,e,t,i)},init:function(){var i,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),i='<object id="'+this.uid+'" type="application/x-shockwave-flash" data="'+a.swf_url+'" ',"IE"===t.browser&&(i+='classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '),i+='width="100%" height="100%" style="outline:0"><param name="movie" value="'+a.swf_url+'" /><param name="flashvars" value="uid='+escape(this.uid)+"&target="+t.global_event_dispatcher+'" /><param name="wmode" value="transparent" /><param name="allowscriptaccess" value="always" /></object>',"IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=i,r=o=null):o.innerHTML=i,c=setTimeout(function(){l&&!l.initialized&&l.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){e.call(l),clearTimeout(c),a=c=e=l=null}}(this.destroy)},u)}var s="flash",u={};return r.addConstructor(s,a),u}),n("moxie/runtime/flash/file/Blob",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={slice:function(e,i,n,r){var o=this.getRuntime();return i<0?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),n<0?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),e=o.shimExec.call(this,"Blob","slice",i,n,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=i}),n("moxie/runtime/flash/file/FileInput",["moxie/runtime/flash/Runtime"],function(e){var t={init:function(e){this.getRuntime().shimExec.call(this,"FileInput","init",{name:e.name,accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=t}),n("moxie/runtime/flash/file/FileReader",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n="",r={read:function(e,t){var r=this,o=r.getRuntime();return"readAsDataURL"===e&&(n="data:"+(t.type||"")+";base64,"),r.bind("Progress",function(t,r){r&&(n+=i(r,e))}),o.shimExec.call(this,"FileReader","readAsBase64",t.uid)},getResult:function(){return n},destroy:function(){n=null}};return e.FileReader=r}),n("moxie/runtime/flash/file/FileReaderSync",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n;return(n=this.getRuntime().shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(n="data:"+(t.type||"")+";base64,"+n),i(n,e,t.type)):null}};return e.FileReaderSync=n}),n("moxie/runtime/flash/xhr/XMLHttpRequest",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/file/File","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/runtime/Transporter"],function(e,t,i,n,r,o,a){var s={send:function(e,n){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,n)}function s(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),n=null,r()}function u(e,t){var i=new a;i.bind("TransportingComplete",function(){t(this.result)}),i.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),n instanceof o){var d;if(n.each(function(e,t){e instanceof i?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),n.hasBlob()){var m=n.getBlob();m.isDetached()?u(m,function(e){m.destroy(),s(d,e)}):s(d,m)}else n=null,r()}else n instanceof i?n.isDetached()?u(n,function(e){n.destroy(),n=e.uid,r()}):(n=n.uid,r()):r()},getResponse:function(e){var i,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new n(a.uid,o),"blob"===e)return o;try{if(i=new r,~t.inArray(e,["","text"]))return i.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(i.readAsText(o))}finally{o.destroy()}}return null},abort:function(e){this.getRuntime().shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=s}),n("moxie/runtime/flash/runtime/Transporter",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={getAsBlob:function(e){var i=this.getRuntime(),n=i.shimExec.call(this,"Transporter","getAsBlob",e);return n?new t(i.uid,n):null}};return e.Transporter=i}),n("moxie/runtime/flash/image/Image",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/runtime/Transporter","moxie/file/Blob","moxie/file/FileReaderSync"],function(e,t,i,n,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(n,"Image","loadFromBlob",e.uid),n=r=null}var n=this,r=n.getRuntime();if(e.isDetached()){var o=new i;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){return this.getRuntime().shimExec.call(this,"Image","loadFromImage",e.uid)},getAsBlob:function(e,t){var i=this.getRuntime(),r=i.shimExec.call(this,"Image","getAsBlob",e,t);return r?new n(i.uid,r):null},getAsDataURL:function(){var e,t=this.getRuntime(),i=t.Image.getAsBlob.apply(this,arguments);return i?(e=new r,e.readAsDataURL(i)):null}};return e.Image=o}),n("moxie/runtime/silverlight/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,r){function o(e){var t,i,n,r,o,a=!1,s=null,u=0;try{try{s=new ActiveXObject("AgControl.AgControl"),s.IsVersionSupported(e)&&(a=!0),s=null}catch(s){var c=navigator.plugins["Silverlight Plug-In"];if(c){for(t=c.description,"1.0.30226.2"===t&&(t="2.0.30226.2"),i=t.split(".");i.length>3;)i.pop();for(;i.length<4;)i.push(0);for(n=e.split(".");n.length>4;)n.pop();do{r=parseInt(n[u],10),o=parseInt(i[u],10),u++}while(u<n.length&&r===o);r<=o&&!isNaN(r)&&(a=!0)}}}catch(e){a=!1}return a}function a(a){var c,l=this;a=e.extend({xap_url:t.xap_url},a),r.call(this,a,s,{access_binary:r.capTrue,access_image_binary:r.capTrue,display_media:r.capTrue,do_cors:r.capTrue,drag_and_drop:!1,report_upload_progress:r.capTrue,resize_image:r.capTrue,return_response_headers:function(e){return e&&"client"===l.mode},return_response_type:function(e){return"json"!==e||!!window.JSON},return_status_code:function(t){return"client"===l.mode||!e.arrayDiff(t,[200,404])},select_file:r.capTrue,select_multiple:r.capTrue,send_binary_string:r.capTrue,send_browser_cookies:function(e){return e&&"browser"===l.mode},send_custom_headers:function(e){return e&&"client"===l.mode},send_multipart:r.capTrue,slice_blob:r.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:r.capTrue,use_http_method:function(t){return"client"===l.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),o("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid).content.Moxie},shimExec:function(e,t){var i=[].slice.call(arguments,2);return l.getShim().exec(this.uid,e,t,i)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='<object id="'+this.uid+'" data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%" style="outline:none;"><param name="source" value="'+a.xap_url+'"/><param name="background" value="Transparent"/><param name="windowless" value="true"/><param name="enablehtmlaccess" value="true"/><param name="initParams" value="uid='+this.uid+",target="+t.global_event_dispatcher+'"/></object>',c=setTimeout(function(){l&&!l.initialized&&l.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(l),clearTimeout(c),a=c=e=l=null}}(this.destroy)},u)}var s="silverlight",u={};return r.addConstructor(s,a),u}),n("moxie/runtime/silverlight/file/Blob",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/Blob"],function(e,t,i){return e.Blob=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileInput",["moxie/runtime/silverlight/Runtime"],function(e){var t={init:function(e){this.getRuntime().shimExec.call(this,"FileInput","init",function(e){for(var t="",i=0;i<e.length;i++)t+=(""!==t?"|":"")+e[i].title+" | *."+e[i].extensions.replace(/,/g,";*.");return t}(e.accept),e.name,e.multiple),this.trigger("ready")}};return e.FileInput=t}),n("moxie/runtime/silverlight/file/FileDrop",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Dom","moxie/core/utils/Events"],function(e,t,i){var n={init:function(){var e,n=this,r=n.getRuntime();return e=r.getShimContainer(),i.addEvent(e,"dragover",function(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy"},n.uid),i.addEvent(e,"dragenter",function(e){e.preventDefault(),t.get(r.uid).dragEnter(e)&&e.stopPropagation()},n.uid),i.addEvent(e,"drop",function(e){e.preventDefault(),t.get(r.uid).dragDrop(e)&&e.stopPropagation()},n.uid),r.shimExec.call(this,"FileDrop","init")}};return e.FileDrop=n}),n("moxie/runtime/silverlight/file/FileReader",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/FileReader"],function(e,t,i){return e.FileReader=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileReaderSync",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/FileReaderSync"],function(e,t,i){return e.FileReaderSync=t.extend({},i)}),n("moxie/runtime/silverlight/xhr/XMLHttpRequest",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/xhr/XMLHttpRequest"],function(e,t,i){return e.XMLHttpRequest=t.extend({},i)}),n("moxie/runtime/silverlight/runtime/Transporter",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/runtime/Transporter"],function(e,t,i){return e.Transporter=t.extend({},i)}),n("moxie/runtime/silverlight/image/Image",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/image/Image"],function(e,t,i){return e.Image=t.extend({},i,{getInfo:function(){var e=this.getRuntime(),i=["tiff","exif","gps"],n={meta:{}},r=e.shimExec.call(this,"Image","getInfo");return r.meta&&t.each(i,function(e){var t,i,o,a,s=r.meta[e];if(s&&s.keys)for(n.meta[e]={},i=0,o=s.keys.length;i<o;i++)t=s.keys[i],(a=s[t])&&(/^(\d|[1-9]\d+)$/.test(a)?a=parseInt(a,10):/^\d*\.\d+$/.test(a)&&(a=parseFloat(a)),n.meta[e][t]=a)}),n.width=parseInt(r.width,10),n.height=parseInt(r.height,10),n.size=parseInt(r.size,10),n.type=r.type,n.name=r.name,n}})}),n("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function r(t){var r=this,s=i.capTest,u=i.capTrue;i.call(this,t,o,{access_binary:s(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:s(a.Image&&(n.can("create_canvas")||n.can("use_data_uri_over32kb"))),do_cors:!1,drag_and_drop:!1,filter_by_extension:s(function(){return"Chrome"===n.browser&&n.version>=28||"IE"===n.browser&&n.version>=10}()),resize_image:function(){return a.Image&&r.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return!("json"!==t||!window.JSON)||!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return r.can("select_file")},summon_file_dialog:s(function(){return"Firefox"===n.browser&&n.version>=4||"Opera"===n.browser&&n.version>=12||!!~e.inArray(n.browser,["Chrome","Safari"])}()),upload_filesize:u,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(r),e=r=null}}(this.destroy)}),e.extend(this.getShim(),a)}var o="html4",a={};return i.addConstructor(o,r),a}),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o){function a(){function e(){var r,l,d,m,f,h,p=this,g=p.getRuntime();h=t.guid("uid_"),r=g.getShimContainer(),a&&(d=i.get(a+"_form"))&&t.extend(d.style,{top:"100%"}),m=document.createElement("form"),m.setAttribute("id",h+"_form"),m.setAttribute("method","post"),m.setAttribute("enctype","multipart/form-data"),m.setAttribute("encoding","multipart/form-data"),t.extend(m.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),f=document.createElement("input"),f.setAttribute("id",h),f.setAttribute("type","file"),f.setAttribute("name",s.name||"Filedata"),f.setAttribute("accept",c.join(",")),t.extend(f.style,{fontSize:"999px",opacity:0}),m.appendChild(f),r.appendChild(m),t.extend(f.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===o.browser&&o.version<10&&t.extend(f.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),f.onchange=function(){var t;this.value&&(t=this.files?this.files[0]:{name:this.value},u=[t],this.onchange=function(){},e.call(p),p.bind("change",function e(){var t,n=i.get(h),r=i.get(h+"_form");p.unbind("change",e),p.files.length&&n&&r&&(t=p.files[0],n.setAttribute("id",t.uid),r.setAttribute("id",t.uid+"_form"),r.setAttribute("target",t.uid+"_iframe")),n=r=null},998),f=m=null,p.trigger("change"))},g.can("summon_file_dialog")&&(l=i.get(s.browse_button),n.removeEvent(l,"click",p.uid),n.addEvent(l,"click",function(e){f&&!f.disabled&&f.click(),e.preventDefault()},p.uid)),a=h,r=d=l=null}var a,s,u=[],c=[];t.extend(this,{init:function(t){var o,a=this,u=a.getRuntime();s=t,c=t.accept.mimes||r.extList2mimes(t.accept,u.can("filter_by_extension")),o=u.getShimContainer(),function(){var e,r,s;e=i.get(t.browse_button),u.can("summon_file_dialog")&&("static"===i.getStyle(e,"position")&&(e.style.position="relative"),r=parseInt(i.getStyle(e,"z-index"),10)||1,e.style.zIndex=r,o.style.zIndex=r-1),s=u.can("summon_file_dialog")?e:o,n.addEvent(s,"mouseover",function(){a.trigger("mouseenter")},a.uid),n.addEvent(s,"mouseout",function(){a.trigger("mouseleave")},a.uid),n.addEvent(s,"mousedown",function(){a.trigger("mousedown")},a.uid),n.addEvent(i.get(t.container),"mouseup",function(){a.trigger("mouseup")},a.uid),e=null}(),e.call(this),o=null,a.trigger({type:"ready",async:!0})},getFiles:function(){return u},disable:function(e){var t;(t=i.get(a))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),r=e.getShimContainer();n.removeAllEvents(r,this.uid),n.removeAllEvents(s&&i.get(s.container),this.uid),n.removeAllEvents(s&&i.get(s.browse_button),this.uid),r&&(r.innerHTML=""),t.removeInstance(this.uid),a=u=c=s=r=t=null}})}return e.FileInput=a}),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],function(e,t){return e.FileReader=t}),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],function(e,t,i,n,r,o,a,s){function u(){function e(e){var t,n,r,a,s=this,u=!1;if(l){if(t=l.id.replace(/_iframe$/,""),n=i.get(t+"_form")){for(r=n.getElementsByTagName("input"),a=r.length;a--;)switch(r[a].getAttribute("type")){case"hidden":r[a].parentNode.removeChild(r[a]);break;case"file":u=!0}r=[],u||n.parentNode.removeChild(n),n=null}setTimeout(function(){o.removeEvent(l,"load",s.uid),l.parentNode&&l.parentNode.removeChild(l);var t=s.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,m){var f,h,p,g,x=this,v=x.getRuntime();if(u=c=null,m instanceof s&&m.hasBlob()){if(g=m.getBlob(),f=g.uid,p=i.get(f),!(h=i.get(f+"_form")))throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else f=t.guid("uid_"),h=document.createElement("form"),h.setAttribute("id",f+"_form"),h.setAttribute("method",d.method),h.setAttribute("enctype","multipart/form-data"),h.setAttribute("encoding","multipart/form-data"),h.setAttribute("target",f+"_iframe"),v.getShimContainer().appendChild(h);m instanceof s&&m.each(function(e,i){if(e instanceof a)p&&p.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),p?h.insertBefore(n,p):h.appendChild(n)}}),h.setAttribute("action",d.url),function(){var i=v.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='<iframe id="'+f+'_iframe" name="'+f+'_iframe" src="javascript:&quot;&quot;" style="display:none"></iframe>',l=r.firstChild,i.appendChild(l),o.addEvent(l,"load",function(){var i;try{i=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?u=i.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(i.body.innerHTML),x.trigger({type:"progress",loaded:c.length,total:c.length}),g&&x.trigger({type:"uploadprogress",loaded:g.size||1025,total:g.size||1025}))}catch(t){if(!n.hasSameOrigin(d.url))return void e.call(x,function(){x.trigger("error")});u=404}e.call(x,function(){x.trigger("load")})},x.uid)}(),h.submit(),x.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*<pre[^>]*>/,"").replace(/<\/pre>\s*$/,""))}catch(e){
4
- return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=u}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),function(i){for(var n=0;n<i.length;n++){for(var r=e,a=i[n],s=a.split(/[.\/]/),u=0;u<s.length-1;++u)r[s[u]]===t&&(r[s[u]]={}),r=r[s[u]];r[s[s.length-1]]=o[a]}}(["moxie/core/utils/Basic","moxie/core/I18n","moxie/core/utils/Mime","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/file/File","moxie/file/FileInput","moxie/file/FileDrop"