atlassian_ui 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (219) hide show
  1. checksums.yaml +4 -4
  2. data/lib/atlassian_ui/version.rb +1 -1
  3. data/vendor/assets/images/arrow.png +0 -0
  4. data/vendor/assets/images/atlassian-logo-grey.min.svg +1 -0
  5. data/vendor/assets/images/atlassian-logo-grey.svg +24 -0
  6. data/vendor/assets/images/atlassian-logo.min.svg +1 -0
  7. data/vendor/assets/images/atlassian-logo.svg +24 -0
  8. data/vendor/assets/images/bg-grippy.png +0 -0
  9. data/vendor/assets/images/fav_off_16.png +0 -0
  10. data/vendor/assets/images/fav_on_16.png +0 -0
  11. data/vendor/assets/images/forms/icons_form.gif +0 -0
  12. data/vendor/assets/images/icons/aui-icon-close.png +0 -0
  13. data/vendor/assets/images/icons/aui-icon-tools.gif +0 -0
  14. data/vendor/assets/images/icons/aui-message-icon-sprite.png +0 -0
  15. data/vendor/assets/images/icons/core/icon-dropdown-active-d.png +0 -0
  16. data/vendor/assets/images/icons/core/icon-dropdown-active.png +0 -0
  17. data/vendor/assets/images/icons/core/icon-dropdown-d.png +0 -0
  18. data/vendor/assets/images/icons/core/icon-dropdown.png +0 -0
  19. data/vendor/assets/images/icons/core/icon-maximize-d.png +0 -0
  20. data/vendor/assets/images/icons/core/icon-maximize.png +0 -0
  21. data/vendor/assets/images/icons/core/icon-minimize-d.png +0 -0
  22. data/vendor/assets/images/icons/core/icon-minimize.png +0 -0
  23. data/vendor/assets/images/icons/core/icon-move-d.png +0 -0
  24. data/vendor/assets/images/icons/core/icon-move.png +0 -0
  25. data/vendor/assets/images/icons/core/icon-search.png +0 -0
  26. data/vendor/assets/images/icons/forms/icon-date.png +0 -0
  27. data/vendor/assets/images/icons/forms/icon-help.png +0 -0
  28. data/vendor/assets/images/icons/forms/icon-range.png +0 -0
  29. data/vendor/assets/images/icons/forms/icon-required.png +0 -0
  30. data/vendor/assets/images/icons/forms/icon-users.png +0 -0
  31. data/vendor/assets/images/icons/messages/icon-close-inverted.png +0 -0
  32. data/vendor/assets/images/icons/messages/icon-close.png +0 -0
  33. data/vendor/assets/images/icons/messages/icon-error-white.png +0 -0
  34. data/vendor/assets/images/icons/messages/icon-error.png +0 -0
  35. data/vendor/assets/images/icons/messages/icon-generic.png +0 -0
  36. data/vendor/assets/images/icons/messages/icon-hint.png +0 -0
  37. data/vendor/assets/images/icons/messages/icon-info.png +0 -0
  38. data/vendor/assets/images/icons/messages/icon-success.png +0 -0
  39. data/vendor/assets/images/icons/messages/icon-warning.png +0 -0
  40. data/vendor/assets/images/icons/sidebar/icon-group-actions.svg +1 -0
  41. data/vendor/assets/images/icons/sidebar/icon-group.png +0 -0
  42. data/vendor/assets/images/icons/sidebar/icon-handle.png +0 -0
  43. data/vendor/assets/images/icons/sidebar/icon-toggle.svg +1 -0
  44. data/vendor/assets/images/logos/aui-header-logo-answers.png +0 -0
  45. data/vendor/assets/images/logos/aui-header-logo-atlassian.png +0 -0
  46. data/vendor/assets/images/logos/aui-header-logo-aui.png +0 -0
  47. data/vendor/assets/images/logos/aui-header-logo-bamboo.png +0 -0
  48. data/vendor/assets/images/logos/aui-header-logo-bitbucket.png +0 -0
  49. data/vendor/assets/images/logos/aui-header-logo-cloud.png +0 -0
  50. data/vendor/assets/images/logos/aui-header-logo-clover.png +0 -0
  51. data/vendor/assets/images/logos/aui-header-logo-confluence.png +0 -0
  52. data/vendor/assets/images/logos/aui-header-logo-crowd.png +0 -0
  53. data/vendor/assets/images/logos/aui-header-logo-crucible.png +0 -0
  54. data/vendor/assets/images/logos/aui-header-logo-developers.png +0 -0
  55. data/vendor/assets/images/logos/aui-header-logo-experts.png +0 -0
  56. data/vendor/assets/images/logos/aui-header-logo-fecru.png +0 -0
  57. data/vendor/assets/images/logos/aui-header-logo-fisheye.png +0 -0
  58. data/vendor/assets/images/logos/aui-header-logo-hipchat.png +0 -0
  59. data/vendor/assets/images/logos/aui-header-logo-jira.png +0 -0
  60. data/vendor/assets/images/logos/aui-header-logo-marketplace.png +0 -0
  61. data/vendor/assets/images/logos/aui-header-logo-stash.png +0 -0
  62. data/vendor/assets/images/logos/aui-header-logo-support.png +0 -0
  63. data/vendor/assets/images/logos/aui-header-logo-university.png +0 -0
  64. data/vendor/assets/images/toolbar/aui-toolbar-24px.png +0 -0
  65. data/vendor/assets/images/wait.gif +0 -0
  66. data/vendor/assets/javascripts/atlassian-ui.js +6 -0
  67. data/vendor/assets/javascripts/aui-css-deprecations.js +109 -0
  68. data/vendor/assets/javascripts/aui-css-deprecations.min.js +1 -0
  69. data/vendor/assets/javascripts/aui-datepicker.js +2333 -0
  70. data/vendor/assets/javascripts/aui-datepicker.min.js +2 -0
  71. data/vendor/assets/javascripts/aui-experimental.js +16904 -0
  72. data/vendor/assets/javascripts/aui-experimental.min.js +8 -0
  73. data/vendor/assets/javascripts/aui-header-async.js +86 -0
  74. data/vendor/assets/javascripts/aui-header-async.min.js +1 -0
  75. data/vendor/assets/javascripts/aui-soy.js +7667 -0
  76. data/vendor/assets/javascripts/aui-soy.min.js +4 -0
  77. data/vendor/assets/javascripts/aui.js +16701 -0
  78. data/vendor/assets/javascripts/aui.min.js +7 -0
  79. data/vendor/assets/stylesheets/arrow.png +0 -0
  80. data/vendor/assets/stylesheets/atlassian-logo-grey.min.svg +1 -0
  81. data/vendor/assets/stylesheets/atlassian-logo-grey.svg +24 -0
  82. data/vendor/assets/stylesheets/atlassian-logo.min.svg +1 -0
  83. data/vendor/assets/stylesheets/atlassian-logo.svg +24 -0
  84. data/vendor/assets/stylesheets/atlassian-ui.css +6 -0
  85. data/vendor/assets/stylesheets/aui-experimental.css +2587 -0
  86. data/vendor/assets/stylesheets/aui-experimental.min.css +4 -0
  87. data/vendor/assets/stylesheets/aui-iconfonts.css +945 -0
  88. data/vendor/assets/stylesheets/aui-iconfonts.min.css +1 -0
  89. data/vendor/assets/stylesheets/aui.css +6748 -0
  90. data/vendor/assets/stylesheets/aui.min.css +11 -0
  91. data/vendor/assets/stylesheets/bg-grippy.png +0 -0
  92. data/vendor/assets/stylesheets/fav_off_16.png +0 -0
  93. data/vendor/assets/stylesheets/fav_on_16.png +0 -0
  94. data/vendor/assets/stylesheets/fonts/atlassian-icons.eot +0 -0
  95. data/vendor/assets/stylesheets/fonts/atlassian-icons.svg +768 -0
  96. data/vendor/assets/stylesheets/fonts/atlassian-icons.ttf +0 -0
  97. data/vendor/assets/stylesheets/fonts/atlassian-icons.woff +0 -0
  98. data/vendor/assets/stylesheets/forms/icons_form.gif +0 -0
  99. data/vendor/assets/stylesheets/icons/aui-icon-close.png +0 -0
  100. data/vendor/assets/stylesheets/icons/aui-icon-tools.gif +0 -0
  101. data/vendor/assets/stylesheets/icons/aui-message-icon-sprite.png +0 -0
  102. data/vendor/assets/stylesheets/icons/core/icon-dropdown-active-d.png +0 -0
  103. data/vendor/assets/stylesheets/icons/core/icon-dropdown-active.png +0 -0
  104. data/vendor/assets/stylesheets/icons/core/icon-dropdown-d.png +0 -0
  105. data/vendor/assets/stylesheets/icons/core/icon-dropdown.png +0 -0
  106. data/vendor/assets/stylesheets/icons/core/icon-maximize-d.png +0 -0
  107. data/vendor/assets/stylesheets/icons/core/icon-maximize.png +0 -0
  108. data/vendor/assets/stylesheets/icons/core/icon-minimize-d.png +0 -0
  109. data/vendor/assets/stylesheets/icons/core/icon-minimize.png +0 -0
  110. data/vendor/assets/stylesheets/icons/core/icon-move-d.png +0 -0
  111. data/vendor/assets/stylesheets/icons/core/icon-move.png +0 -0
  112. data/vendor/assets/stylesheets/icons/core/icon-search.png +0 -0
  113. data/vendor/assets/stylesheets/icons/forms/icon-date.png +0 -0
  114. data/vendor/assets/stylesheets/icons/forms/icon-help.png +0 -0
  115. data/vendor/assets/stylesheets/icons/forms/icon-range.png +0 -0
  116. data/vendor/assets/stylesheets/icons/forms/icon-required.png +0 -0
  117. data/vendor/assets/stylesheets/icons/forms/icon-users.png +0 -0
  118. data/vendor/assets/stylesheets/icons/messages/icon-close-inverted.png +0 -0
  119. data/vendor/assets/stylesheets/icons/messages/icon-close.png +0 -0
  120. data/vendor/assets/stylesheets/icons/messages/icon-error-white.png +0 -0
  121. data/vendor/assets/stylesheets/icons/messages/icon-error.png +0 -0
  122. data/vendor/assets/stylesheets/icons/messages/icon-generic.png +0 -0
  123. data/vendor/assets/stylesheets/icons/messages/icon-hint.png +0 -0
  124. data/vendor/assets/stylesheets/icons/messages/icon-info.png +0 -0
  125. data/vendor/assets/stylesheets/icons/messages/icon-success.png +0 -0
  126. data/vendor/assets/stylesheets/icons/messages/icon-warning.png +0 -0
  127. data/vendor/assets/stylesheets/icons/sidebar/icon-group-actions.svg +1 -0
  128. data/vendor/assets/stylesheets/icons/sidebar/icon-group.png +0 -0
  129. data/vendor/assets/stylesheets/icons/sidebar/icon-handle.png +0 -0
  130. data/vendor/assets/stylesheets/icons/sidebar/icon-toggle.svg +1 -0
  131. data/vendor/assets/stylesheets/images/arrow.png +0 -0
  132. data/vendor/assets/stylesheets/images/atlassian-logo-grey.min.svg +1 -0
  133. data/vendor/assets/stylesheets/images/atlassian-logo-grey.svg +24 -0
  134. data/vendor/assets/stylesheets/images/atlassian-logo.min.svg +1 -0
  135. data/vendor/assets/stylesheets/images/atlassian-logo.svg +24 -0
  136. data/vendor/assets/stylesheets/images/bg-grippy.png +0 -0
  137. data/vendor/assets/stylesheets/images/fav_off_16.png +0 -0
  138. data/vendor/assets/stylesheets/images/fav_on_16.png +0 -0
  139. data/vendor/assets/stylesheets/images/forms/icons_form.gif +0 -0
  140. data/vendor/assets/stylesheets/images/icons/aui-icon-close.png +0 -0
  141. data/vendor/assets/stylesheets/images/icons/aui-icon-tools.gif +0 -0
  142. data/vendor/assets/stylesheets/images/icons/aui-message-icon-sprite.png +0 -0
  143. data/vendor/assets/stylesheets/images/icons/core/icon-dropdown-active-d.png +0 -0
  144. data/vendor/assets/stylesheets/images/icons/core/icon-dropdown-active.png +0 -0
  145. data/vendor/assets/stylesheets/images/icons/core/icon-dropdown-d.png +0 -0
  146. data/vendor/assets/stylesheets/images/icons/core/icon-dropdown.png +0 -0
  147. data/vendor/assets/stylesheets/images/icons/core/icon-maximize-d.png +0 -0
  148. data/vendor/assets/stylesheets/images/icons/core/icon-maximize.png +0 -0
  149. data/vendor/assets/stylesheets/images/icons/core/icon-minimize-d.png +0 -0
  150. data/vendor/assets/stylesheets/images/icons/core/icon-minimize.png +0 -0
  151. data/vendor/assets/stylesheets/images/icons/core/icon-move-d.png +0 -0
  152. data/vendor/assets/stylesheets/images/icons/core/icon-move.png +0 -0
  153. data/vendor/assets/stylesheets/images/icons/core/icon-search.png +0 -0
  154. data/vendor/assets/stylesheets/images/icons/forms/icon-date.png +0 -0
  155. data/vendor/assets/stylesheets/images/icons/forms/icon-help.png +0 -0
  156. data/vendor/assets/stylesheets/images/icons/forms/icon-range.png +0 -0
  157. data/vendor/assets/stylesheets/images/icons/forms/icon-required.png +0 -0
  158. data/vendor/assets/stylesheets/images/icons/forms/icon-users.png +0 -0
  159. data/vendor/assets/stylesheets/images/icons/messages/icon-close-inverted.png +0 -0
  160. data/vendor/assets/stylesheets/images/icons/messages/icon-close.png +0 -0
  161. data/vendor/assets/stylesheets/images/icons/messages/icon-error-white.png +0 -0
  162. data/vendor/assets/stylesheets/images/icons/messages/icon-error.png +0 -0
  163. data/vendor/assets/stylesheets/images/icons/messages/icon-generic.png +0 -0
  164. data/vendor/assets/stylesheets/images/icons/messages/icon-hint.png +0 -0
  165. data/vendor/assets/stylesheets/images/icons/messages/icon-info.png +0 -0
  166. data/vendor/assets/stylesheets/images/icons/messages/icon-success.png +0 -0
  167. data/vendor/assets/stylesheets/images/icons/messages/icon-warning.png +0 -0
  168. data/vendor/assets/stylesheets/images/icons/sidebar/icon-group-actions.svg +1 -0
  169. data/vendor/assets/stylesheets/images/icons/sidebar/icon-group.png +0 -0
  170. data/vendor/assets/stylesheets/images/icons/sidebar/icon-handle.png +0 -0
  171. data/vendor/assets/stylesheets/images/icons/sidebar/icon-toggle.svg +1 -0
  172. data/vendor/assets/stylesheets/images/logos/aui-header-logo-answers.png +0 -0
  173. data/vendor/assets/stylesheets/images/logos/aui-header-logo-atlassian.png +0 -0
  174. data/vendor/assets/stylesheets/images/logos/aui-header-logo-aui.png +0 -0
  175. data/vendor/assets/stylesheets/images/logos/aui-header-logo-bamboo.png +0 -0
  176. data/vendor/assets/stylesheets/images/logos/aui-header-logo-bitbucket.png +0 -0
  177. data/vendor/assets/stylesheets/images/logos/aui-header-logo-cloud.png +0 -0
  178. data/vendor/assets/stylesheets/images/logos/aui-header-logo-clover.png +0 -0
  179. data/vendor/assets/stylesheets/images/logos/aui-header-logo-confluence.png +0 -0
  180. data/vendor/assets/stylesheets/images/logos/aui-header-logo-crowd.png +0 -0
  181. data/vendor/assets/stylesheets/images/logos/aui-header-logo-crucible.png +0 -0
  182. data/vendor/assets/stylesheets/images/logos/aui-header-logo-developers.png +0 -0
  183. data/vendor/assets/stylesheets/images/logos/aui-header-logo-experts.png +0 -0
  184. data/vendor/assets/stylesheets/images/logos/aui-header-logo-fecru.png +0 -0
  185. data/vendor/assets/stylesheets/images/logos/aui-header-logo-fisheye.png +0 -0
  186. data/vendor/assets/stylesheets/images/logos/aui-header-logo-hipchat.png +0 -0
  187. data/vendor/assets/stylesheets/images/logos/aui-header-logo-jira.png +0 -0
  188. data/vendor/assets/stylesheets/images/logos/aui-header-logo-marketplace.png +0 -0
  189. data/vendor/assets/stylesheets/images/logos/aui-header-logo-stash.png +0 -0
  190. data/vendor/assets/stylesheets/images/logos/aui-header-logo-support.png +0 -0
  191. data/vendor/assets/stylesheets/images/logos/aui-header-logo-university.png +0 -0
  192. data/vendor/assets/stylesheets/images/toolbar/aui-toolbar-24px.png +0 -0
  193. data/vendor/assets/stylesheets/images/wait.gif +0 -0
  194. data/vendor/assets/stylesheets/logos/aui-header-logo-answers.png +0 -0
  195. data/vendor/assets/stylesheets/logos/aui-header-logo-atlassian.png +0 -0
  196. data/vendor/assets/stylesheets/logos/aui-header-logo-aui.png +0 -0
  197. data/vendor/assets/stylesheets/logos/aui-header-logo-bamboo.png +0 -0
  198. data/vendor/assets/stylesheets/logos/aui-header-logo-bitbucket.png +0 -0
  199. data/vendor/assets/stylesheets/logos/aui-header-logo-cloud.png +0 -0
  200. data/vendor/assets/stylesheets/logos/aui-header-logo-clover.png +0 -0
  201. data/vendor/assets/stylesheets/logos/aui-header-logo-confluence.png +0 -0
  202. data/vendor/assets/stylesheets/logos/aui-header-logo-crowd.png +0 -0
  203. data/vendor/assets/stylesheets/logos/aui-header-logo-crucible.png +0 -0
  204. data/vendor/assets/stylesheets/logos/aui-header-logo-developers.png +0 -0
  205. data/vendor/assets/stylesheets/logos/aui-header-logo-experts.png +0 -0
  206. data/vendor/assets/stylesheets/logos/aui-header-logo-fecru.png +0 -0
  207. data/vendor/assets/stylesheets/logos/aui-header-logo-fisheye.png +0 -0
  208. data/vendor/assets/stylesheets/logos/aui-header-logo-hipchat.png +0 -0
  209. data/vendor/assets/stylesheets/logos/aui-header-logo-jira.png +0 -0
  210. data/vendor/assets/stylesheets/logos/aui-header-logo-marketplace.png +0 -0
  211. data/vendor/assets/stylesheets/logos/aui-header-logo-stash.png +0 -0
  212. data/vendor/assets/stylesheets/logos/aui-header-logo-support.png +0 -0
  213. data/vendor/assets/stylesheets/logos/aui-header-logo-university.png +0 -0
  214. data/vendor/assets/stylesheets/select2-spinner.gif +0 -0
  215. data/vendor/assets/stylesheets/select2.png +0 -0
  216. data/vendor/assets/stylesheets/select2x2.png +0 -0
  217. data/vendor/assets/stylesheets/toolbar/aui-toolbar-24px.png +0 -0
  218. data/vendor/assets/stylesheets/wait.gif +0 -0
  219. metadata +217 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: abbbd120347a8e8d9f22a3d6dd9e3bbb3a640eba
4
- data.tar.gz: 484dfc4f5fcb203f36fe2e0ac17b2d60e6aff108
3
+ metadata.gz: 72d5abce8f9aafc4b5000c424a9acb4eefff619f
4
+ data.tar.gz: ad51165bc5a1e4acb9b95ca24c6b2bcf32a14096
5
5
  SHA512:
6
- metadata.gz: ff44589c6434105fd33bdd43c02030e63ba7cca020c4b7744ad6bef80127f9ab2ba199e65c818cf3f5d8a610dff9ffa1a33334a221ed81ba036a84b5e08c402d
7
- data.tar.gz: fdd38a218881622e9a7c6e25cbbefdeb3b123863b61d22c3df94ae166ebb71769f0b9b14e0bc0d634dbf254bb25d5be6bf9fdf861d5d6993dda778d26fe626ab
6
+ metadata.gz: a6b16478e155a05c237abece0c054ba8148c2703890928b9c6ced69fdc5472060861aa3ae803361c4c0decd85ad474f66f54eeb0f82612b53928cca0f5f15099
7
+ data.tar.gz: 8722bd41bb2ee464a6c89a5a73e9b93c2625e424c799f09f848811b0b9bea28abc0304fec56803417faa6b09eaf593f2573dbb952cf90e2242eacb13da3e28fd
@@ -1,3 +1,3 @@
1
1
  module AtlassianUi
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
Binary file
@@ -0,0 +1 @@
1
+ <svg width="114" height="24" viewBox="0 0 114 24" xmlns="http://www.w3.org/2000/svg"><g fill="#707070"><g><path d="M27.206.265c-.112-.154-.292-.247-.48-.247-.097 0-.192.025-.276.072-3.517 1.976-7.594 3.02-11.79 3.022-4.196 0-8.272-1.046-11.79-3.02-.083-.05-.178-.074-.275-.074-.188 0-.368.093-.48.247-.166.227-.17.608.112.835 1.76 1.348 3.703 2.4 5.77 3.12 2.144.746 4.386 1.125 6.663 1.126 2.278 0 4.52-.38 6.663-1.126 2.068-.72 4.01-1.772 5.773-3.12.28-.227.276-.608.11-.835"/><path d="M14.663 7.336c.9 0 1.42-.055 1.604-.055.222 0 .434.188.434.45 0 .075-.016.13-.034.178-.12.327-.663 1.504-1.674 2.514-.114.113-.242.135-.33.135h-.002c-.088 0-.217-.022-.33-.135-1.012-1.01-1.556-2.187-1.675-2.514-.018-.048-.035-.103-.035-.18 0-.26.212-.447.434-.447.183 0 .705.056 1.603.056h.006"/><path d="M23.164 5.894c-.084-.066-.184-.1-.286-.1-.057 0-.114.01-.17.032-1.018.4-2.053.704-2.998.93-.192.046-.348.193-.413.37-.688 1.935-2.446 3.777-4.29 5.708-.074.072-.178.167-.346.167-.168 0-.27-.09-.346-.166-1.844-1.93-3.6-3.767-4.29-5.702-.064-.176-.22-.323-.413-.37-.944-.225-1.982-.54-3-.94-.054-.02-.11-.03-.168-.03-.102 0-.2.032-.285.098-.13.102-.198.268-.183.427.156 1.61.776 3.183 1.894 4.83 1.05 1.55 2.422 2.986 3.747 4.373 2.443 2.557 4.75 4.972 4.952 7.772.018.252.223.448.47.448h2.87c.13 0 .252-.055.342-.15.087-.097.134-.226.128-.358-.09-1.872-.777-3.747-2.098-5.73-.277-.417-.574-.822-.884-1.218-.126-.16-.074-.36.023-.462l.286-.302c1.326-1.387 2.696-2.822 3.748-4.372 1.118-1.648 1.737-3.212 1.893-4.82.016-.163-.056-.335-.183-.434"/><path d="M11.582 17.698c-.068-.072-.168-.147-.335-.147-.214 0-.34.153-.39.228-1.206 1.885-1.83 3.664-1.916 5.452-.005.132.042.263.13.36.09.095.215.15.344.15h2.865c.245 0 .453-.198.47-.45.063-.862.325-1.726.8-2.633.165-.314.037-.61-.058-.735-.472-.63-1.05-1.302-1.91-2.224"/></g><g><path d="M34.07 6.457c-.057-.186-.225-.313-.415-.313h-4.068c-.19 0-.358.127-.415.313L24.04 23.16c-.04.136-.018.284.065.4.082.114.212.182.35.182h2.8c.194 0 .364-.13.42-.32l3.533-12.285s.092-.307.412-.307c.326 0 .405.32.405.32l1.64 5.824H31.46c-.195 0-.367.133-.42.326l-.632 2.307c-.037.135-.01.28.073.39.082.112.21.178.347.178h3.75l.99 3.253c.055.186.224.314.415.314h2.8c.14 0 .27-.068.353-.183.082-.116.105-.264.064-.4L34.07 6.457"/><path d="M46.27 21.168c-.02-.125-.087-.236-.19-.306-.102-.07-.227-.092-.347-.062-.454.116-.89.18-1.226.18-.637 0-.92-.283-.92-.92v-6.4h2.5c.24 0 .435-.2.435-.446v-1.996c0-.247-.195-.447-.436-.447h-2.5V7.69c0-.13-.055-.253-.15-.338-.095-.085-.222-.124-.346-.106l-2.574.368c-.216.03-.376.22-.376.443v2.714h-1.402c-.24 0-.436.2-.436.448v1.996c0 .247.195.447.436.447h1.402v6.814c0 2.34 1.198 3.526 3.56 3.526.674 0 1.816-.16 2.563-.425.198-.07.32-.277.288-.49l-.28-1.917"/><path d="M51.036 5.818H48.46c-.24 0-.435.2-.435.448v17.028c0 .248.196.448.436.448h2.576c.24 0 .435-.2.435-.448V6.266c0-.248-.194-.448-.434-.448"/><path d="M59.383 18.986v1.556c-.427.233-1.2.568-2.13.568-.803 0-1.047-.25-1.047-1.075 0-.8.15-1.05 1.097-1.05h2.08zm-1.728-8.474c-1.303 0-2.89.21-4.04.538-.215.06-.35.277-.314.502l.302 1.918c.02.12.084.226.18.296.097.07.217.095.334.072 1.07-.214 2.175-.332 3.11-.332 1.86 0 2.157.403 2.157 1.695v1.128h-2.76c-2.637 0-3.763 1.116-3.763 3.733 0 2.504 1.234 3.94 3.385 3.94 1.245 0 2.49-.354 3.538-1.003l.11.415c.052.195.224.33.42.33h2.08c.24 0 .436-.2.436-.448v-8.04c0-3.457-1.403-4.742-5.175-4.742z"/><path d="M69.28 15.714c-1.598-.423-1.598-.44-1.598-1.34 0-.604.06-.894 1.375-.894.902 0 2.232.162 3.086.312.118.02.238-.01.334-.082.095-.073.158-.183.172-.304l.242-2.014c.027-.227-.116-.44-.334-.49-.988-.237-2.362-.39-3.5-.39-3.96 0-4.77 1.534-4.77 3.836 0 2.532.457 3.383 3.49 4.14 2 .495 2 .86 2 1.47 0 .798-.068 1.074-1.376 1.074-1.053 0-2.27-.168-3.343-.462-.12-.032-.244-.012-.347.055-.103.066-.173.174-.195.297l-.34 1.91c-.04.222.086.438.294.507 1.17.388 2.847.66 4.08.66 3.835 0 4.62-1.647 4.62-4.12 0-2.73-.472-3.237-3.892-4.166"/><path d="M79.227 15.714c-1.597-.423-1.597-.44-1.597-1.34 0-.604.058-.894 1.374-.894.902 0 2.232.162 3.087.312.118.02.24-.01.334-.082.096-.073.158-.183.173-.304l.242-2.014c.027-.227-.117-.44-.334-.49-.988-.237-2.363-.39-3.502-.39-3.96 0-4.77 1.534-4.77 3.836 0 2.532.458 3.383 3.493 4.14 1.997.495 1.997.86 1.997 1.47 0 .798-.066 1.074-1.374 1.074-1.053 0-2.272-.168-3.344-.462-.117-.032-.243-.012-.345.055-.102.066-.173.174-.195.297l-.34 1.91c-.04.222.086.438.294.507 1.168.388 2.847.66 4.08.66 3.834 0 4.62-1.647 4.62-4.12 0-2.73-.473-3.237-3.893-4.166"/><path d="M87.56 5.818h-2.576c-.24 0-.436.2-.436.447V8.6c0 .248.196.448.436.448h2.575c.24 0 .435-.2.435-.447V6.266c0-.247-.196-.447-.436-.447"/><path d="M87.56 10.77h-2.576c-.24 0-.436.2-.436.448v12.076c0 .248.196.448.436.448h2.575c.24 0 .435-.2.435-.448V11.218c0-.247-.196-.447-.436-.447"/><path d="M95.97 18.986v1.556c-.426.233-1.2.568-2.13.568-.802 0-1.047-.25-1.047-1.075 0-.8.152-1.05 1.098-1.05h2.08zm-1.727-8.474c-1.303 0-2.89.21-4.04.538-.215.06-.35.277-.315.502l.302 1.918c.02.12.084.226.18.296.097.07.217.095.333.072 1.07-.214 2.176-.332 3.112-.332 1.858 0 2.155.403 2.155 1.695v1.128h-2.76c-2.637 0-3.762 1.116-3.762 3.733 0 2.504 1.234 3.94 3.385 3.94 1.244 0 2.49-.354 3.538-1.003l.11.415c.053.195.225.33.42.33h2.08c.24 0 .437-.2.437-.448v-8.04c0-3.457-1.403-4.742-5.174-4.742z"/><path d="M108.938 10.512c-1.364 0-3.223.483-4.793 1.24l-.188-.66c-.054-.19-.225-.32-.418-.32h-1.908c-.24 0-.436.2-.436.446v12.076c0 .248.196.448.436.448h2.575c.24 0 .436-.2.436-.448V14.93c.927-.484 2.23-.984 3.01-.984.58 0 .796.22.796.816v8.532c0 .248.195.448.435.448h2.575c.24 0 .435-.2.435-.448v-8.868c0-2.597-.994-3.914-2.957-3.914"/></g></g></svg>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg width="114px" height="24px" viewBox="0 0 114 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <g id="atlassian-logo" transform="translate(2.000000, 0.000000)" fill="#707070">
4
+ <g id="charlie">
5
+ <path id="earth" d="M25.2059119,0.265420118 C25.0935597,0.110627219 24.9141006,0.0183195266 24.726478,0.0183195266 C24.6294843,0.0183195266 24.5338742,0.0434556213 24.4500252,0.0904615385 C20.9333459,2.06627219 16.8564277,3.11133728 12.6603774,3.11233136 C8.46432704,3.11133728 4.38768553,2.06627219 0.871006289,0.0906035503 C0.787157233,0.0434556213 0.69154717,0.0184615385 0.594691824,0.0184615385 C0.406654088,0.0184615385 0.227471698,0.110627219 0.115257862,0.264994083 C-0.0511949686,0.492071006 -0.0564528302,0.873230769 0.227056604,1.10030769 C1.98830189,2.448 3.92983648,3.50030769 5.99783648,4.21973964 C8.14138365,4.96615385 10.3827547,5.34518343 12.6595472,5.34617751 L12.6612075,5.34617751 C14.9382767,5.34518343 17.1796478,4.96615385 19.3230566,4.21973964 C21.391195,3.50002367 23.3325912,2.448 25.0961887,1.09860355 C25.3774843,0.873088757 25.3720881,0.491928994 25.2059119,0.265420118"></path>
6
+ <path id="charlie-head" d="M12.6634214,7.33647337 C13.5625157,7.33647337 14.0840126,7.28094675 14.2673459,7.28094675 C14.4891447,7.28094675 14.7012579,7.4675503 14.7012579,7.72885207 C14.7012579,7.80525444 14.6836855,7.85964497 14.6662516,7.90778698 C14.5469811,8.23498225 14.0034843,9.41226036 12.991761,10.4222485 C12.8783019,10.535432 12.7496226,10.5565917 12.6609308,10.5565917 L12.6598239,10.5565917 C12.5715472,10.5565917 12.4428679,10.535432 12.3295472,10.4222485 C11.3176855,9.41226036 10.7740503,8.23498225 10.6550566,7.90778698 C10.6374843,7.85964497 10.6199119,7.80525444 10.6199119,7.72885207 C10.6199119,7.4675503 10.8321635,7.28094675 11.0541006,7.28094675 C11.2372956,7.28094675 11.7586541,7.33647337 12.6574717,7.33647337 L12.6634214,7.33647337"></path>
7
+ <path id="charlie-body" d="M21.1641384,5.89377515 C21.0804277,5.8284497 20.9796981,5.79436686 20.8775849,5.79436686 C20.8209937,5.79436686 20.7637107,5.80515976 20.7093333,5.82646154 C19.69,6.22650888 18.6550314,6.53027219 17.7101384,6.75621302 C17.5175346,6.80236686 17.3618742,6.9492071 17.2972579,7.1255858 C16.6088931,9.06078107 14.8512453,10.9033846 13.0071195,12.8336095 C12.9330943,12.9057515 12.8294591,13.0008994 12.6606541,13.0008994 C12.4922642,13.0008994 12.3895975,12.9087337 12.3141887,12.8336095 C10.4703396,10.9033846 8.71269182,9.06731361 8.02418868,7.13183432 C7.95957233,6.95573964 7.80377358,6.8087574 7.61144654,6.76260355 C6.66613836,6.53652071 5.62840252,6.22338462 4.61045283,5.82347929 C4.55579874,5.8020355 4.49851572,5.79138462 4.4416478,5.79138462 C4.33967296,5.79138462 4.2408805,5.82433136 4.15730818,5.88979882 C4.02655346,5.99204734 3.95889308,6.15791716 3.97425157,6.31725444 C4.13046541,7.92653254 4.74992453,9.49973964 5.86805031,11.148355 C6.91906918,12.6984142 8.28998742,14.1330178 9.61538365,15.5204734 C12.057522,18.0769704 14.3646164,20.4915976 14.567044,23.291645 C14.5851698,23.544142 14.7902264,23.7399763 15.0374843,23.7399763 L17.9066164,23.7399763 C18.0358491,23.7399763 18.1592704,23.6854438 18.2485157,23.5894438 C18.3374843,23.4933018 18.3843899,23.364355 18.3780252,23.231716 C18.287673,21.359716 17.6012453,19.4850178 16.2795849,17.5011124 C16.0025786,17.0851598 15.7057862,16.680426 15.3955723,16.284355 C15.2696604,16.1230296 15.3223774,15.9226509 15.4188176,15.8216805 C15.5140126,15.7214201 15.6098994,15.6215858 15.7060629,15.5204734 C17.0315975,14.1328757 18.402239,12.6984142 19.4535346,11.148355 C20.571522,9.49959763 21.1909811,7.9356213 21.347195,6.32662722 C21.3628302,6.16501775 21.2911572,5.99332544 21.1641384,5.89377515"></path>
8
+ <path id="charlie-leg" d="M9.58189937,17.6983669 C9.51396226,17.6255148 9.41433962,17.5511006 9.24691824,17.5511006 C9.03272956,17.5511006 8.90557233,17.7030533 8.85755975,17.7784615 C7.65074214,19.6632426 7.02740881,21.4422249 6.94134591,23.2300118 C6.93498113,23.3617988 6.98230189,23.4927337 7.07127044,23.5891598 C7.16037736,23.6847337 7.28545912,23.7399763 7.41441509,23.7399763 L10.2788428,23.7399763 C10.5251321,23.7399763 10.7328176,23.5420118 10.7509434,23.2897988 C10.8133459,22.428213 11.074717,21.564497 11.5504151,20.6568994 C11.7153459,20.3429112 11.5872201,20.0479527 11.4923019,19.9218462 C11.0202013,19.2917396 10.4419748,18.6195976 9.58189937,17.6983669"></path>
9
+ </g>
10
+ <g id="lettering">
11
+ <path id="a-1" d="M32.0701887,6.45671006 C32.013044,6.27053254 31.8447925,6.14414201 31.6545409,6.14414201 L27.5874465,6.14414201 C27.397195,6.14414201 27.2289434,6.27053254 27.1717987,6.45671006 L22.0404025,23.159858 C21.9987547,23.2959053 22.0224151,23.4438817 22.1046038,23.5591953 C22.1866541,23.6737988 22.3171321,23.7418225 22.4560503,23.7418225 L25.2561384,23.7418225 C25.4492956,23.7418225 25.6194843,23.6113136 25.6741384,23.4208757 L29.2078365,11.1367101 C29.2078365,11.1367101 29.3002642,10.8302485 29.6203019,10.8302485 C29.9455975,10.8302485 30.0247421,11.1492071 30.0247421,11.1494911 L31.6643648,16.9741065 L29.4618742,16.9741065 C29.2666415,16.9741065 29.0950692,17.1073136 29.0423522,17.3003077 L28.4103019,19.6065799 C28.3733585,19.7416331 28.4000629,19.8860592 28.4825283,19.9976805 C28.5648553,20.1094438 28.6933962,20.1749112 28.8299623,20.1749112 L32.5810314,20.1749112 L33.5685409,23.4275503 C33.6252704,23.6144379 33.7937987,23.7418225 33.9847421,23.7418225 L36.7859371,23.7418225 C36.9249937,23.7418225 37.0554717,23.6737988 37.137522,23.5591953 C37.2195723,23.4438817 37.2433711,23.2959053 37.2017233,23.159858 L32.0701887,6.45671006"></path>
12
+ <path id="t" d="M44.269673,21.167716 C44.2511321,21.0431716 44.1827799,20.9324024 44.0805283,20.8622485 C43.9784151,20.7922367 43.8525031,20.7697988 43.7333711,20.8003314 C43.2787044,20.916213 42.8432704,20.9802604 42.5071824,20.9802604 C41.8700126,20.9802604 41.5860881,20.6966627 41.5860881,20.0608757 L41.5860881,13.6612544 L44.086478,13.6612544 C44.3272327,13.6612544 44.5224654,13.4607337 44.5224654,13.2139172 L44.5224654,11.2177988 C44.5224654,10.9708402 44.3272327,10.7707456 44.086478,10.7707456 L41.5860881,10.7707456 L41.5860881,7.68908876 C41.5860881,7.55971598 41.531434,7.43659172 41.4363774,7.35181065 C41.3411824,7.26688757 41.2144403,7.22840237 41.0900503,7.24615385 L38.5157736,7.61424852 C38.3003396,7.64506509 38.1398365,7.83408284 38.1398365,8.05718343 L38.1398365,10.7707456 L36.7375094,10.7707456 C36.4967547,10.7707456 36.3016604,10.9708402 36.3016604,11.2177988 L36.3016604,13.2139172 C36.3016604,13.4607337 36.4967547,13.6612544 36.7375094,13.6612544 L38.1398365,13.6612544 L38.1398365,20.4742722 C38.1398365,22.8140592 39.3382138,24 41.7013459,24 C42.3737987,24 43.5158616,23.8410888 44.2627547,23.5745325 C44.4610314,23.5039527 44.5821006,23.2983195 44.5508302,23.0858698 L44.269673,21.167716"></path>
13
+ <path id="l" d="M49.0356478,5.81836686 L46.4612327,5.81836686 C46.2206164,5.81836686 46.0253836,6.01846154 46.0253836,6.26584615 L46.0253836,23.2943432 C46.0253836,23.5415858 46.2206164,23.7418225 46.4612327,23.7418225 L49.0356478,23.7418225 C49.2762642,23.7418225 49.4714969,23.5415858 49.4714969,23.2943432 L49.4714969,6.26584615 C49.4714969,6.01846154 49.2762642,5.81836686 49.0356478,5.81836686"></path>
14
+ <path id="a-2" d="M57.3826415,18.9859882 L57.3826415,20.5418698 C56.9559245,20.7753373 56.1827421,21.1096331 55.2526541,21.1096331 C54.4501384,21.1096331 54.2055094,20.8585562 54.2055094,20.0347456 C54.2055094,19.2347929 54.3568805,18.9859882 55.3030189,18.9859882 L57.3826415,18.9859882 L57.3826415,18.9859882 Z M55.655434,10.512142 C54.3520377,10.512142 52.7659623,10.7230296 51.6147673,11.0497988 C51.4004403,11.1102959 51.2652579,11.3271479 51.3006792,11.5519527 L51.6020377,13.4701065 C51.620717,13.5896805 51.6860252,13.6961893 51.7827421,13.7656331 C51.8793208,13.8349349 51.9994214,13.8612071 52.1155094,13.8376331 C53.1860377,13.6240473 54.2912956,13.5061775 55.2274717,13.5061775 C57.0855723,13.5061775 57.3826415,13.9087811 57.3826415,15.2010888 L57.3826415,16.3278107 L54.6230943,16.3278107 C51.9855849,16.3278107 50.8601258,17.4443077 50.8601258,20.0608757 C50.8601258,22.5642604 52.0939245,24 54.2452201,24 C55.4895346,24 56.7356478,23.6455385 57.7830692,22.9973964 L57.8932075,23.412213 C57.944956,23.6067692 58.1170818,23.7418225 58.3138365,23.7418225 L60.3929057,23.7418225 C60.633522,23.7418225 60.8287547,23.5415858 60.8287547,23.2943432 L60.8287547,15.2529231 C60.8287547,11.7969231 59.426566,10.512142 55.655434,10.512142 L55.655434,10.512142 Z"></path>
15
+ <path id="s-1" d="M67.2798742,15.7136095 C65.6824528,15.2909822 65.6824528,15.2739408 65.6824528,14.3742959 C65.6824528,13.7703195 65.7408428,13.4801893 67.0569686,13.4801893 C67.9585535,13.4801893 69.2889308,13.6419408 70.143195,13.7920473 C70.2606667,13.8127811 70.3811824,13.7832426 70.4766541,13.7099645 C70.5722642,13.6371124 70.6346667,13.5270533 70.6493333,13.4057751 L70.8920252,11.3920473 C70.9194214,11.1648284 70.775522,10.9532308 70.5582893,10.9012544 C69.5703648,10.6649467 68.1958491,10.512142 67.0569686,10.512142 C63.0979371,10.512142 62.2867044,12.0457278 62.2867044,14.3481657 C62.2867044,16.8798107 62.7449686,17.7306036 65.7793082,18.4893728 C67.7767421,18.9827219 67.7767421,19.3493964 67.7767421,19.9573491 C67.7767421,20.7557396 67.7101887,21.0319527 66.4023648,21.0319527 C65.3494088,21.0319527 64.1308302,20.8638107 63.0587799,20.5704142 C62.9413082,20.5383195 62.8160881,20.5580592 62.713283,20.6249467 C62.610478,20.6912663 62.5397736,20.7994793 62.5177736,20.9223195 L62.1773962,22.8330888 C62.1381006,23.0539172 62.2638742,23.2699172 62.4716981,23.3390769 C63.6408805,23.7284734 65.3192453,24 66.5533208,24 C70.3868553,24 71.1724906,22.3529467 71.1724906,19.8796686 C71.1724906,17.1486391 70.6998365,16.6426509 67.2798742,15.7136095"></path>
16
+ <path id="s-2" d="M77.2273333,15.7136095 C75.6299119,15.2909822 75.6299119,15.2739408 75.6299119,14.3742959 C75.6299119,13.7703195 75.6883019,13.4801893 77.0044277,13.4801893 C77.9060126,13.4801893 79.2362516,13.6419408 80.0906541,13.7920473 C80.2081258,13.8127811 80.3286415,13.7832426 80.4241132,13.7099645 C80.5197233,13.6371124 80.5821258,13.5270533 80.5966541,13.4057751 L80.8393459,11.3920473 C80.8667421,11.1648284 80.7229811,10.9532308 80.5057484,10.9012544 C79.5176855,10.6649467 78.1433082,10.512142 77.0044277,10.512142 C73.0453962,10.512142 72.2341635,12.0457278 72.2341635,14.3481657 C72.2341635,16.8798107 72.6922893,17.7306036 75.7267673,18.4893728 C77.7242013,18.9827219 77.7242013,19.3493964 77.7242013,19.9573491 C77.7242013,20.7557396 77.6576478,21.0319527 76.3496855,21.0319527 C75.2967296,21.0319527 74.0781509,20.8638107 73.006239,20.5704142 C72.8886289,20.5383195 72.7634088,20.5580592 72.6607421,20.6249467 C72.5579371,20.6912663 72.4870943,20.7994793 72.4652327,20.9223195 L72.1248553,22.8330888 C72.0854214,23.0539172 72.2113333,23.2699172 72.4191572,23.3390769 C73.5882013,23.7284734 75.2667044,24 76.5007799,24 C80.3343145,24 81.1199497,22.3529467 81.1199497,19.8796686 C81.1199497,17.1486391 80.6472956,16.6426509 77.2273333,15.7136095"></path>
17
+ <path id="i-dot" d="M85.5586918,5.8176568 L82.9842767,5.8176568 C82.7436604,5.8176568 82.5484277,6.01789349 82.5484277,6.26485207 L82.5484277,8.60108876 C82.5484277,8.84833136 82.7436604,9.04842604 82.9842767,9.04842604 L85.5586918,9.04842604 C85.7993082,9.04842604 85.9945409,8.84833136 85.9945409,8.60108876 L85.9945409,6.26485207 C85.9945409,6.01789349 85.7993082,5.8176568 85.5586918,5.8176568"></path>
18
+ <path id="i-base" d="M85.5586918,10.7707456 L82.9842767,10.7707456 C82.7436604,10.7707456 82.5484277,10.9708402 82.5484277,11.2177988 L82.5484277,23.2943432 C82.5484277,23.5415858 82.7436604,23.7418225 82.9842767,23.7418225 L85.5586918,23.7418225 C85.7993082,23.7418225 85.9945409,23.5415858 85.9945409,23.2943432 L85.9945409,11.2177988 C85.9945409,10.9708402 85.7993082,10.7707456 85.5586918,10.7707456"></path>
19
+ <path id="a-3" d="M93.9704403,18.9859882 L93.9704403,20.5418698 C93.5435849,20.7753373 92.7705409,21.1096331 91.8403145,21.1096331 C91.0377987,21.1096331 90.7933082,20.8585562 90.7933082,20.0347456 C90.7933082,19.2347929 90.9446792,18.9859882 91.8906792,18.9859882 L93.9704403,18.9859882 L93.9704403,18.9859882 Z M92.2432327,10.512142 C90.9396981,10.512142 89.353761,10.7230296 88.202566,11.0497988 C87.988239,11.1102959 87.8530566,11.3271479 87.888478,11.5519527 L88.1896981,13.4701065 C88.2085157,13.5896805 88.2738239,13.6961893 88.3705409,13.7656331 C88.4671195,13.8349349 88.5870818,13.8612071 88.7033082,13.8376331 C89.7736981,13.6240473 90.878956,13.5061775 91.8152704,13.5061775 C93.6732327,13.5061775 93.9704403,13.9087811 93.9704403,15.2010888 L93.9704403,16.3278107 L91.2107547,16.3278107 C88.5733836,16.3278107 87.4479245,17.4443077 87.4479245,20.0608757 C87.4479245,22.5642604 88.6817233,24 90.8330189,24 C92.0773333,24 93.3234465,23.6455385 94.3707296,22.9973964 L94.4810063,23.412213 C94.5327547,23.6067692 94.7048805,23.7418225 94.9014969,23.7418225 L96.9807044,23.7418225 C97.2213208,23.7418225 97.4165535,23.5415858 97.4165535,23.2943432 L97.4165535,15.2529231 C97.4165535,11.7969231 96.0143648,10.512142 92.2432327,10.512142 L92.2432327,10.512142 Z"></path>
20
+ <path id="n" d="M106.938403,10.512142 C105.573711,10.512142 103.715333,10.9949822 102.14517,11.7513373 L101.957132,11.0921183 C101.902755,10.9015385 101.732289,10.7707456 101.538855,10.7707456 L99.6324654,10.7707456 C99.3917107,10.7707456 99.196478,10.9708402 99.196478,11.2177988 L99.196478,23.2943432 C99.196478,23.5415858 99.3917107,23.7418225 99.6324654,23.7418225 L102.206742,23.7418225 C102.447358,23.7418225 102.642591,23.5415858 102.642591,23.2943432 L102.642591,14.9305562 C103.569912,14.4462959 104.873723,13.9457041 105.654101,13.9457041 C106.233849,13.9457041 106.449283,14.1668166 106.449283,14.7617041 L106.449283,23.2943432 C106.449283,23.5415858 106.644516,23.7418225 106.88527,23.7418225 L109.459547,23.7418225 C109.700164,23.7418225 109.895396,23.5415858 109.895396,23.2943432 L109.895396,14.4257041 C109.895396,11.8287337 108.900553,10.512142 106.938403,10.512142"></path>
21
+ </g>
22
+ </g>
23
+ </svg>
24
+
@@ -0,0 +1 @@
1
+ <svg width="114" height="24" viewBox="0 0 114 24" xmlns="http://www.w3.org/2000/svg"><g><g fill="#5BA5CE"><path d="M27.206.265c-.112-.154-.292-.247-.48-.247-.097 0-.192.025-.276.072-3.517 1.976-7.594 3.02-11.79 3.022-4.196 0-8.272-1.046-11.79-3.02-.083-.05-.178-.074-.275-.074-.188 0-.368.093-.48.247-.166.227-.17.608.112.835 1.76 1.348 3.703 2.4 5.77 3.12 2.144.746 4.386 1.125 6.663 1.126 2.278 0 4.52-.38 6.663-1.126 2.068-.72 4.01-1.772 5.773-3.12.28-.227.276-.608.11-.835"/><path d="M14.663 7.336c.9 0 1.42-.055 1.604-.055.222 0 .434.188.434.45 0 .075-.016.13-.034.178-.12.327-.663 1.504-1.674 2.514-.114.113-.242.135-.33.135h-.002c-.088 0-.217-.022-.33-.135-1.012-1.01-1.556-2.187-1.675-2.514-.018-.048-.035-.103-.035-.18 0-.26.212-.447.434-.447.183 0 .705.056 1.603.056h.006"/><path d="M23.164 5.894c-.084-.066-.184-.1-.286-.1-.057 0-.114.01-.17.032-1.018.4-2.053.704-2.998.93-.192.046-.348.193-.413.37-.688 1.935-2.446 3.777-4.29 5.708-.074.072-.178.167-.346.167-.168 0-.27-.09-.346-.166-1.844-1.93-3.6-3.767-4.29-5.702-.064-.176-.22-.323-.413-.37-.944-.225-1.982-.54-3-.94-.054-.02-.11-.03-.168-.03-.102 0-.2.032-.285.098-.13.102-.198.268-.183.427.156 1.61.776 3.183 1.894 4.83 1.05 1.55 2.422 2.986 3.747 4.373 2.443 2.557 4.75 4.972 4.952 7.772.018.252.223.448.47.448h2.87c.13 0 .252-.055.342-.15.087-.097.134-.226.128-.358-.09-1.872-.777-3.747-2.098-5.73-.277-.417-.574-.822-.884-1.218-.126-.16-.074-.36.023-.462l.286-.302c1.326-1.387 2.696-2.822 3.748-4.372 1.118-1.648 1.737-3.212 1.893-4.82.016-.163-.056-.335-.183-.434"/><path d="M11.582 17.698c-.068-.072-.168-.147-.335-.147-.214 0-.34.153-.39.228-1.206 1.885-1.83 3.664-1.916 5.452-.005.132.042.263.13.36.09.095.215.15.344.15h2.865c.245 0 .453-.198.47-.45.063-.862.325-1.726.8-2.633.165-.314.037-.61-.058-.735-.472-.63-1.05-1.302-1.91-2.224"/></g><g fill="#274970"><path d="M34.07 6.457c-.057-.186-.225-.313-.415-.313h-4.068c-.19 0-.358.127-.415.313L24.04 23.16c-.04.136-.018.284.065.4.082.114.212.182.35.182h2.8c.194 0 .364-.13.42-.32l3.533-12.285s.092-.307.412-.307c.326 0 .405.32.405.32l1.64 5.824H31.46c-.195 0-.367.133-.42.326l-.632 2.307c-.037.135-.01.28.073.39.082.112.21.178.347.178h3.75l.99 3.253c.055.186.224.314.415.314h2.8c.14 0 .27-.068.353-.183.082-.116.105-.264.064-.4L34.07 6.457"/><path d="M46.27 21.168c-.02-.125-.087-.236-.19-.306-.102-.07-.227-.092-.347-.062-.454.116-.89.18-1.226.18-.637 0-.92-.283-.92-.92v-6.4h2.5c.24 0 .435-.2.435-.446v-1.996c0-.247-.195-.447-.436-.447h-2.5V7.69c0-.13-.055-.253-.15-.338-.095-.085-.222-.124-.346-.106l-2.574.368c-.216.03-.376.22-.376.443v2.714h-1.402c-.24 0-.436.2-.436.448v1.996c0 .247.195.447.436.447h1.402v6.814c0 2.34 1.198 3.526 3.56 3.526.674 0 1.816-.16 2.563-.425.198-.07.32-.277.288-.49l-.28-1.917"/><path d="M51.036 5.818H48.46c-.24 0-.435.2-.435.448v17.028c0 .248.196.448.436.448h2.576c.24 0 .435-.2.435-.448V6.266c0-.248-.194-.448-.434-.448"/><path d="M59.383 18.986v1.556c-.427.233-1.2.568-2.13.568-.803 0-1.047-.25-1.047-1.075 0-.8.15-1.05 1.097-1.05h2.08zm-1.728-8.474c-1.303 0-2.89.21-4.04.538-.215.06-.35.277-.314.502l.302 1.918c.02.12.084.226.18.296.097.07.217.095.334.072 1.07-.214 2.175-.332 3.11-.332 1.86 0 2.157.403 2.157 1.695v1.128h-2.76c-2.637 0-3.763 1.116-3.763 3.733 0 2.504 1.234 3.94 3.385 3.94 1.245 0 2.49-.354 3.538-1.003l.11.415c.052.195.224.33.42.33h2.08c.24 0 .436-.2.436-.448v-8.04c0-3.457-1.403-4.742-5.175-4.742z"/><path d="M69.28 15.714c-1.598-.423-1.598-.44-1.598-1.34 0-.604.06-.894 1.375-.894.902 0 2.232.162 3.086.312.118.02.238-.01.334-.082.095-.073.158-.183.172-.304l.242-2.014c.027-.227-.116-.44-.334-.49-.988-.237-2.362-.39-3.5-.39-3.96 0-4.77 1.534-4.77 3.836 0 2.532.457 3.383 3.49 4.14 2 .495 2 .86 2 1.47 0 .798-.068 1.074-1.376 1.074-1.053 0-2.27-.168-3.343-.462-.12-.032-.244-.012-.347.055-.103.066-.173.174-.195.297l-.34 1.91c-.04.222.086.438.294.507 1.17.388 2.847.66 4.08.66 3.835 0 4.62-1.647 4.62-4.12 0-2.73-.472-3.237-3.892-4.166"/><path d="M79.227 15.714c-1.597-.423-1.597-.44-1.597-1.34 0-.604.058-.894 1.374-.894.902 0 2.232.162 3.087.312.118.02.24-.01.334-.082.096-.073.158-.183.173-.304l.242-2.014c.027-.227-.117-.44-.334-.49-.988-.237-2.363-.39-3.502-.39-3.96 0-4.77 1.534-4.77 3.836 0 2.532.458 3.383 3.493 4.14 1.997.495 1.997.86 1.997 1.47 0 .798-.066 1.074-1.374 1.074-1.053 0-2.272-.168-3.344-.462-.117-.032-.243-.012-.345.055-.102.066-.173.174-.195.297l-.34 1.91c-.04.222.086.438.294.507 1.168.388 2.847.66 4.08.66 3.834 0 4.62-1.647 4.62-4.12 0-2.73-.473-3.237-3.893-4.166"/><path d="M87.56 5.818h-2.576c-.24 0-.436.2-.436.447V8.6c0 .248.196.448.436.448h2.575c.24 0 .435-.2.435-.447V6.266c0-.247-.196-.447-.436-.447"/><path d="M87.56 10.77h-2.576c-.24 0-.436.2-.436.448v12.076c0 .248.196.448.436.448h2.575c.24 0 .435-.2.435-.448V11.218c0-.247-.196-.447-.436-.447"/><path d="M95.97 18.986v1.556c-.426.233-1.2.568-2.13.568-.802 0-1.047-.25-1.047-1.075 0-.8.152-1.05 1.098-1.05h2.08zm-1.727-8.474c-1.303 0-2.89.21-4.04.538-.215.06-.35.277-.315.502l.302 1.918c.02.12.084.226.18.296.097.07.217.095.333.072 1.07-.214 2.176-.332 3.112-.332 1.858 0 2.155.403 2.155 1.695v1.128h-2.76c-2.637 0-3.762 1.116-3.762 3.733 0 2.504 1.234 3.94 3.385 3.94 1.244 0 2.49-.354 3.538-1.003l.11.415c.053.195.225.33.42.33h2.08c.24 0 .437-.2.437-.448v-8.04c0-3.457-1.403-4.742-5.174-4.742z"/><path d="M108.938 10.512c-1.364 0-3.223.483-4.793 1.24l-.188-.66c-.054-.19-.225-.32-.418-.32h-1.908c-.24 0-.436.2-.436.446v12.076c0 .248.196.448.436.448h2.575c.24 0 .436-.2.436-.448V14.93c.927-.484 2.23-.984 3.01-.984.58 0 .796.22.796.816v8.532c0 .248.195.448.435.448h2.575c.24 0 .435-.2.435-.448v-8.868c0-2.597-.994-3.914-2.957-3.914"/></g></g></svg>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg width="114px" height="24px" viewBox="0 0 114 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <g id="atlassian-logo" transform="translate(2.000000, 0.000000)">
4
+ <g id="charlie" fill="#5BA5CE">
5
+ <path id="earth" d="M25.2059119,0.265420118 C25.0935597,0.110627219 24.9141006,0.0183195266 24.726478,0.0183195266 C24.6294843,0.0183195266 24.5338742,0.0434556213 24.4500252,0.0904615385 C20.9333459,2.06627219 16.8564277,3.11133728 12.6603774,3.11233136 C8.46432704,3.11133728 4.38768553,2.06627219 0.871006289,0.0906035503 C0.787157233,0.0434556213 0.69154717,0.0184615385 0.594691824,0.0184615385 C0.406654088,0.0184615385 0.227471698,0.110627219 0.115257862,0.264994083 C-0.0511949686,0.492071006 -0.0564528302,0.873230769 0.227056604,1.10030769 C1.98830189,2.448 3.92983648,3.50030769 5.99783648,4.21973964 C8.14138365,4.96615385 10.3827547,5.34518343 12.6595472,5.34617751 L12.6612075,5.34617751 C14.9382767,5.34518343 17.1796478,4.96615385 19.3230566,4.21973964 C21.391195,3.50002367 23.3325912,2.448 25.0961887,1.09860355 C25.3774843,0.873088757 25.3720881,0.491928994 25.2059119,0.265420118"></path>
6
+ <path id="charlie-head" d="M12.6634214,7.33647337 C13.5625157,7.33647337 14.0840126,7.28094675 14.2673459,7.28094675 C14.4891447,7.28094675 14.7012579,7.4675503 14.7012579,7.72885207 C14.7012579,7.80525444 14.6836855,7.85964497 14.6662516,7.90778698 C14.5469811,8.23498225 14.0034843,9.41226036 12.991761,10.4222485 C12.8783019,10.535432 12.7496226,10.5565917 12.6609308,10.5565917 L12.6598239,10.5565917 C12.5715472,10.5565917 12.4428679,10.535432 12.3295472,10.4222485 C11.3176855,9.41226036 10.7740503,8.23498225 10.6550566,7.90778698 C10.6374843,7.85964497 10.6199119,7.80525444 10.6199119,7.72885207 C10.6199119,7.4675503 10.8321635,7.28094675 11.0541006,7.28094675 C11.2372956,7.28094675 11.7586541,7.33647337 12.6574717,7.33647337 L12.6634214,7.33647337"></path>
7
+ <path id="charlie-body" d="M21.1641384,5.89377515 C21.0804277,5.8284497 20.9796981,5.79436686 20.8775849,5.79436686 C20.8209937,5.79436686 20.7637107,5.80515976 20.7093333,5.82646154 C19.69,6.22650888 18.6550314,6.53027219 17.7101384,6.75621302 C17.5175346,6.80236686 17.3618742,6.9492071 17.2972579,7.1255858 C16.6088931,9.06078107 14.8512453,10.9033846 13.0071195,12.8336095 C12.9330943,12.9057515 12.8294591,13.0008994 12.6606541,13.0008994 C12.4922642,13.0008994 12.3895975,12.9087337 12.3141887,12.8336095 C10.4703396,10.9033846 8.71269182,9.06731361 8.02418868,7.13183432 C7.95957233,6.95573964 7.80377358,6.8087574 7.61144654,6.76260355 C6.66613836,6.53652071 5.62840252,6.22338462 4.61045283,5.82347929 C4.55579874,5.8020355 4.49851572,5.79138462 4.4416478,5.79138462 C4.33967296,5.79138462 4.2408805,5.82433136 4.15730818,5.88979882 C4.02655346,5.99204734 3.95889308,6.15791716 3.97425157,6.31725444 C4.13046541,7.92653254 4.74992453,9.49973964 5.86805031,11.148355 C6.91906918,12.6984142 8.28998742,14.1330178 9.61538365,15.5204734 C12.057522,18.0769704 14.3646164,20.4915976 14.567044,23.291645 C14.5851698,23.544142 14.7902264,23.7399763 15.0374843,23.7399763 L17.9066164,23.7399763 C18.0358491,23.7399763 18.1592704,23.6854438 18.2485157,23.5894438 C18.3374843,23.4933018 18.3843899,23.364355 18.3780252,23.231716 C18.287673,21.359716 17.6012453,19.4850178 16.2795849,17.5011124 C16.0025786,17.0851598 15.7057862,16.680426 15.3955723,16.284355 C15.2696604,16.1230296 15.3223774,15.9226509 15.4188176,15.8216805 C15.5140126,15.7214201 15.6098994,15.6215858 15.7060629,15.5204734 C17.0315975,14.1328757 18.402239,12.6984142 19.4535346,11.148355 C20.571522,9.49959763 21.1909811,7.9356213 21.347195,6.32662722 C21.3628302,6.16501775 21.2911572,5.99332544 21.1641384,5.89377515"></path>
8
+ <path id="charlie-leg" d="M9.58189937,17.6983669 C9.51396226,17.6255148 9.41433962,17.5511006 9.24691824,17.5511006 C9.03272956,17.5511006 8.90557233,17.7030533 8.85755975,17.7784615 C7.65074214,19.6632426 7.02740881,21.4422249 6.94134591,23.2300118 C6.93498113,23.3617988 6.98230189,23.4927337 7.07127044,23.5891598 C7.16037736,23.6847337 7.28545912,23.7399763 7.41441509,23.7399763 L10.2788428,23.7399763 C10.5251321,23.7399763 10.7328176,23.5420118 10.7509434,23.2897988 C10.8133459,22.428213 11.074717,21.564497 11.5504151,20.6568994 C11.7153459,20.3429112 11.5872201,20.0479527 11.4923019,19.9218462 C11.0202013,19.2917396 10.4419748,18.6195976 9.58189937,17.6983669"></path>
9
+ </g>
10
+ <g id="lettering" fill="#274970">
11
+ <path id="a-1" d="M32.0701887,6.45671006 C32.013044,6.27053254 31.8447925,6.14414201 31.6545409,6.14414201 L27.5874465,6.14414201 C27.397195,6.14414201 27.2289434,6.27053254 27.1717987,6.45671006 L22.0404025,23.159858 C21.9987547,23.2959053 22.0224151,23.4438817 22.1046038,23.5591953 C22.1866541,23.6737988 22.3171321,23.7418225 22.4560503,23.7418225 L25.2561384,23.7418225 C25.4492956,23.7418225 25.6194843,23.6113136 25.6741384,23.4208757 L29.2078365,11.1367101 C29.2078365,11.1367101 29.3002642,10.8302485 29.6203019,10.8302485 C29.9455975,10.8302485 30.0247421,11.1492071 30.0247421,11.1494911 L31.6643648,16.9741065 L29.4618742,16.9741065 C29.2666415,16.9741065 29.0950692,17.1073136 29.0423522,17.3003077 L28.4103019,19.6065799 C28.3733585,19.7416331 28.4000629,19.8860592 28.4825283,19.9976805 C28.5648553,20.1094438 28.6933962,20.1749112 28.8299623,20.1749112 L32.5810314,20.1749112 L33.5685409,23.4275503 C33.6252704,23.6144379 33.7937987,23.7418225 33.9847421,23.7418225 L36.7859371,23.7418225 C36.9249937,23.7418225 37.0554717,23.6737988 37.137522,23.5591953 C37.2195723,23.4438817 37.2433711,23.2959053 37.2017233,23.159858 L32.0701887,6.45671006"></path>
12
+ <path id="t" d="M44.269673,21.167716 C44.2511321,21.0431716 44.1827799,20.9324024 44.0805283,20.8622485 C43.9784151,20.7922367 43.8525031,20.7697988 43.7333711,20.8003314 C43.2787044,20.916213 42.8432704,20.9802604 42.5071824,20.9802604 C41.8700126,20.9802604 41.5860881,20.6966627 41.5860881,20.0608757 L41.5860881,13.6612544 L44.086478,13.6612544 C44.3272327,13.6612544 44.5224654,13.4607337 44.5224654,13.2139172 L44.5224654,11.2177988 C44.5224654,10.9708402 44.3272327,10.7707456 44.086478,10.7707456 L41.5860881,10.7707456 L41.5860881,7.68908876 C41.5860881,7.55971598 41.531434,7.43659172 41.4363774,7.35181065 C41.3411824,7.26688757 41.2144403,7.22840237 41.0900503,7.24615385 L38.5157736,7.61424852 C38.3003396,7.64506509 38.1398365,7.83408284 38.1398365,8.05718343 L38.1398365,10.7707456 L36.7375094,10.7707456 C36.4967547,10.7707456 36.3016604,10.9708402 36.3016604,11.2177988 L36.3016604,13.2139172 C36.3016604,13.4607337 36.4967547,13.6612544 36.7375094,13.6612544 L38.1398365,13.6612544 L38.1398365,20.4742722 C38.1398365,22.8140592 39.3382138,24 41.7013459,24 C42.3737987,24 43.5158616,23.8410888 44.2627547,23.5745325 C44.4610314,23.5039527 44.5821006,23.2983195 44.5508302,23.0858698 L44.269673,21.167716"></path>
13
+ <path id="l" d="M49.0356478,5.81836686 L46.4612327,5.81836686 C46.2206164,5.81836686 46.0253836,6.01846154 46.0253836,6.26584615 L46.0253836,23.2943432 C46.0253836,23.5415858 46.2206164,23.7418225 46.4612327,23.7418225 L49.0356478,23.7418225 C49.2762642,23.7418225 49.4714969,23.5415858 49.4714969,23.2943432 L49.4714969,6.26584615 C49.4714969,6.01846154 49.2762642,5.81836686 49.0356478,5.81836686"></path>
14
+ <path id="a-2" d="M57.3826415,18.9859882 L57.3826415,20.5418698 C56.9559245,20.7753373 56.1827421,21.1096331 55.2526541,21.1096331 C54.4501384,21.1096331 54.2055094,20.8585562 54.2055094,20.0347456 C54.2055094,19.2347929 54.3568805,18.9859882 55.3030189,18.9859882 L57.3826415,18.9859882 L57.3826415,18.9859882 Z M55.655434,10.512142 C54.3520377,10.512142 52.7659623,10.7230296 51.6147673,11.0497988 C51.4004403,11.1102959 51.2652579,11.3271479 51.3006792,11.5519527 L51.6020377,13.4701065 C51.620717,13.5896805 51.6860252,13.6961893 51.7827421,13.7656331 C51.8793208,13.8349349 51.9994214,13.8612071 52.1155094,13.8376331 C53.1860377,13.6240473 54.2912956,13.5061775 55.2274717,13.5061775 C57.0855723,13.5061775 57.3826415,13.9087811 57.3826415,15.2010888 L57.3826415,16.3278107 L54.6230943,16.3278107 C51.9855849,16.3278107 50.8601258,17.4443077 50.8601258,20.0608757 C50.8601258,22.5642604 52.0939245,24 54.2452201,24 C55.4895346,24 56.7356478,23.6455385 57.7830692,22.9973964 L57.8932075,23.412213 C57.944956,23.6067692 58.1170818,23.7418225 58.3138365,23.7418225 L60.3929057,23.7418225 C60.633522,23.7418225 60.8287547,23.5415858 60.8287547,23.2943432 L60.8287547,15.2529231 C60.8287547,11.7969231 59.426566,10.512142 55.655434,10.512142 L55.655434,10.512142 Z"></path>
15
+ <path id="s-1" d="M67.2798742,15.7136095 C65.6824528,15.2909822 65.6824528,15.2739408 65.6824528,14.3742959 C65.6824528,13.7703195 65.7408428,13.4801893 67.0569686,13.4801893 C67.9585535,13.4801893 69.2889308,13.6419408 70.143195,13.7920473 C70.2606667,13.8127811 70.3811824,13.7832426 70.4766541,13.7099645 C70.5722642,13.6371124 70.6346667,13.5270533 70.6493333,13.4057751 L70.8920252,11.3920473 C70.9194214,11.1648284 70.775522,10.9532308 70.5582893,10.9012544 C69.5703648,10.6649467 68.1958491,10.512142 67.0569686,10.512142 C63.0979371,10.512142 62.2867044,12.0457278 62.2867044,14.3481657 C62.2867044,16.8798107 62.7449686,17.7306036 65.7793082,18.4893728 C67.7767421,18.9827219 67.7767421,19.3493964 67.7767421,19.9573491 C67.7767421,20.7557396 67.7101887,21.0319527 66.4023648,21.0319527 C65.3494088,21.0319527 64.1308302,20.8638107 63.0587799,20.5704142 C62.9413082,20.5383195 62.8160881,20.5580592 62.713283,20.6249467 C62.610478,20.6912663 62.5397736,20.7994793 62.5177736,20.9223195 L62.1773962,22.8330888 C62.1381006,23.0539172 62.2638742,23.2699172 62.4716981,23.3390769 C63.6408805,23.7284734 65.3192453,24 66.5533208,24 C70.3868553,24 71.1724906,22.3529467 71.1724906,19.8796686 C71.1724906,17.1486391 70.6998365,16.6426509 67.2798742,15.7136095"></path>
16
+ <path id="s-2" d="M77.2273333,15.7136095 C75.6299119,15.2909822 75.6299119,15.2739408 75.6299119,14.3742959 C75.6299119,13.7703195 75.6883019,13.4801893 77.0044277,13.4801893 C77.9060126,13.4801893 79.2362516,13.6419408 80.0906541,13.7920473 C80.2081258,13.8127811 80.3286415,13.7832426 80.4241132,13.7099645 C80.5197233,13.6371124 80.5821258,13.5270533 80.5966541,13.4057751 L80.8393459,11.3920473 C80.8667421,11.1648284 80.7229811,10.9532308 80.5057484,10.9012544 C79.5176855,10.6649467 78.1433082,10.512142 77.0044277,10.512142 C73.0453962,10.512142 72.2341635,12.0457278 72.2341635,14.3481657 C72.2341635,16.8798107 72.6922893,17.7306036 75.7267673,18.4893728 C77.7242013,18.9827219 77.7242013,19.3493964 77.7242013,19.9573491 C77.7242013,20.7557396 77.6576478,21.0319527 76.3496855,21.0319527 C75.2967296,21.0319527 74.0781509,20.8638107 73.006239,20.5704142 C72.8886289,20.5383195 72.7634088,20.5580592 72.6607421,20.6249467 C72.5579371,20.6912663 72.4870943,20.7994793 72.4652327,20.9223195 L72.1248553,22.8330888 C72.0854214,23.0539172 72.2113333,23.2699172 72.4191572,23.3390769 C73.5882013,23.7284734 75.2667044,24 76.5007799,24 C80.3343145,24 81.1199497,22.3529467 81.1199497,19.8796686 C81.1199497,17.1486391 80.6472956,16.6426509 77.2273333,15.7136095"></path>
17
+ <path id="i-dot" d="M85.5586918,5.8176568 L82.9842767,5.8176568 C82.7436604,5.8176568 82.5484277,6.01789349 82.5484277,6.26485207 L82.5484277,8.60108876 C82.5484277,8.84833136 82.7436604,9.04842604 82.9842767,9.04842604 L85.5586918,9.04842604 C85.7993082,9.04842604 85.9945409,8.84833136 85.9945409,8.60108876 L85.9945409,6.26485207 C85.9945409,6.01789349 85.7993082,5.8176568 85.5586918,5.8176568"></path>
18
+ <path id="i-base" d="M85.5586918,10.7707456 L82.9842767,10.7707456 C82.7436604,10.7707456 82.5484277,10.9708402 82.5484277,11.2177988 L82.5484277,23.2943432 C82.5484277,23.5415858 82.7436604,23.7418225 82.9842767,23.7418225 L85.5586918,23.7418225 C85.7993082,23.7418225 85.9945409,23.5415858 85.9945409,23.2943432 L85.9945409,11.2177988 C85.9945409,10.9708402 85.7993082,10.7707456 85.5586918,10.7707456"></path>
19
+ <path id="a-3" d="M93.9704403,18.9859882 L93.9704403,20.5418698 C93.5435849,20.7753373 92.7705409,21.1096331 91.8403145,21.1096331 C91.0377987,21.1096331 90.7933082,20.8585562 90.7933082,20.0347456 C90.7933082,19.2347929 90.9446792,18.9859882 91.8906792,18.9859882 L93.9704403,18.9859882 L93.9704403,18.9859882 Z M92.2432327,10.512142 C90.9396981,10.512142 89.353761,10.7230296 88.202566,11.0497988 C87.988239,11.1102959 87.8530566,11.3271479 87.888478,11.5519527 L88.1896981,13.4701065 C88.2085157,13.5896805 88.2738239,13.6961893 88.3705409,13.7656331 C88.4671195,13.8349349 88.5870818,13.8612071 88.7033082,13.8376331 C89.7736981,13.6240473 90.878956,13.5061775 91.8152704,13.5061775 C93.6732327,13.5061775 93.9704403,13.9087811 93.9704403,15.2010888 L93.9704403,16.3278107 L91.2107547,16.3278107 C88.5733836,16.3278107 87.4479245,17.4443077 87.4479245,20.0608757 C87.4479245,22.5642604 88.6817233,24 90.8330189,24 C92.0773333,24 93.3234465,23.6455385 94.3707296,22.9973964 L94.4810063,23.412213 C94.5327547,23.6067692 94.7048805,23.7418225 94.9014969,23.7418225 L96.9807044,23.7418225 C97.2213208,23.7418225 97.4165535,23.5415858 97.4165535,23.2943432 L97.4165535,15.2529231 C97.4165535,11.7969231 96.0143648,10.512142 92.2432327,10.512142 L92.2432327,10.512142 Z"></path>
20
+ <path id="n" d="M106.938403,10.512142 C105.573711,10.512142 103.715333,10.9949822 102.14517,11.7513373 L101.957132,11.0921183 C101.902755,10.9015385 101.732289,10.7707456 101.538855,10.7707456 L99.6324654,10.7707456 C99.3917107,10.7707456 99.196478,10.9708402 99.196478,11.2177988 L99.196478,23.2943432 C99.196478,23.5415858 99.3917107,23.7418225 99.6324654,23.7418225 L102.206742,23.7418225 C102.447358,23.7418225 102.642591,23.5415858 102.642591,23.2943432 L102.642591,14.9305562 C103.569912,14.4462959 104.873723,13.9457041 105.654101,13.9457041 C106.233849,13.9457041 106.449283,14.1668166 106.449283,14.7617041 L106.449283,23.2943432 C106.449283,23.5415858 106.644516,23.7418225 106.88527,23.7418225 L109.459547,23.7418225 C109.700164,23.7418225 109.895396,23.5415858 109.895396,23.2943432 L109.895396,14.4257041 C109.895396,11.8287337 108.900553,10.512142 106.938403,10.512142"></path>
21
+ </g>
22
+ </g>
23
+ </svg>
24
+
Binary file
Binary file
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 20 20"><defs><path id="a" d="M6-20v2H2v6h14v-6h-4v-2h-2v6H8v-6H1.995C.893-20 0-19.113 0-18v6c0 1.104.893 2 1.995 2h14.01C17.107-10 18-10.887 18-12v-6c0-1.104-.893-2-1.995-2H10v-2h4.657L9-27.657 3.343-22H8v2H6zm10-10h2v2h2v2h-2v2h-2v-2h-2v-2h2v-2z"/></defs><clipPath id="b"><use xlink:href="#a" overflow="visible"/></clipPath><g clip-path="url(#b)"><defs><path id="c" d="M0 0h20v20H0z"/></defs><clipPath id="d"><use xlink:href="#c" overflow="visible"/></clipPath><path clip-path="url(#d)" fill-rule="evenodd" clip-rule="evenodd" fill="#707070" d="M-5-35h30v30H-5z"/></g><defs><path id="e" d="M49-13c0 .318-.09.557 0 1-.45-.09-.693 0-1 0H32c-.302 0-.544-.09-1 0 .09-.456 0-.698 0-1v-5h2v4h14v-4h2v5zm-14-8l5 5 5-5h-4v-7h-2v7h-4z"/></defs><clipPath id="f"><use xlink:href="#e" overflow="visible"/></clipPath><g clip-path="url(#f)"><defs><path id="g" d="M0 0h20v20H0z"/></defs><clipPath id="h"><use xlink:href="#g" overflow="visible"/></clipPath><path clip-path="url(#h)" fill-rule="evenodd" clip-rule="evenodd" fill="#707070" d="M26-33h28v26H26z"/></g><defs><path id="i" d="M-16 11c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm-.622.962l-.37.406c-.91.962-1.885 1.78-2.92 2.458s-2.05 1.203-3.05 1.578c-.018.073-.046.102-.08.096-.237 1.42-1.47 2.5-2.958 2.5-1.657 0-3-1.343-3-3 0-1.306.835-2.417 2-2.83V5.83c-1.165-.413-2-1.524-2-2.83 0-1.657 1.343-3 3-3s3 1.343 3 3c0 1.306-.835 2.417-2 2.83v7.34c.493.174.927.474 1.263.86 1.24-.517 2.808-1.366 3.836-2.17.343-.268.658-.544.945-.827C-20.195 10.123-21 8.656-21 7c0-2.76 2.24-5 5-5s5 2.24 5 5-2.24 5-5 5c-.21 0-.418-.013-.622-.038zM-17 6V4h2v2h2v2h-2v2h-2V8h-2V6h2z"/></defs><clipPath id="j"><use xlink:href="#i" overflow="visible"/></clipPath><g clip-path="url(#j)"><defs><path id="k" d="M0 0h20v20H0z"/></defs><clipPath id="l"><use xlink:href="#k" overflow="visible"/></clipPath><path clip-path="url(#l)" fill-rule="evenodd" clip-rule="evenodd" fill="#707070" d="M-34-5h28v29h-28z"/></g><defs><path id="m" d="M-27.3-18.04c-1.53-.238-2.7-1.554-2.7-3.142 0-1.757 1.433-3.182 3.2-3.182.17 0 .34.013.503.04.077-1.69 1.456-3.033 3.147-3.033.743 0 1.426.26 1.965.694.788-1.367 2.255-2.285 3.935-2.285 2.51 0 4.546 2.052 4.55 4.584 1.49 0 2.7 1.425 2.7 3.182 0 1.385-.75 2.564-1.8 3V-18H-17v2h3.218l-4.718 3.655L-23.218-16H-20v-2h-7.3v-.04zm4.847-1.96l-.172.006-.172-.006H-26v-.05c-.138.032-.283.05-.433.05C-27.3-20-28-20.594-28-21.326c0-.732.7-1.326 1.567-1.326.5 0 .943.197 1.23.504-.03-.16-.046-.328-.046-.5 0-1.463 1.176-2.65 2.626-2.65.962 0 1.802.52 2.26 1.3.048-1.648 1.387-2.97 3.032-2.97 1.675 0 3.033 1.37 3.033 3.062 0 .33-.05.648-.147.946.242-.142.525-.223.828-.223.896 0 1.62.712 1.62 1.59 0 .88-.725 1.593-1.62 1.593-.13 0-.258-.015-.38-.044V-20h-8.453z"/></defs><clipPath id="n"><use xlink:href="#m" overflow="visible"/></clipPath><g clip-path="url(#n)"><defs><path id="o" d="M0 0h20v20H0z"/></defs><clipPath id="p"><use xlink:href="#o" overflow="visible"/></clipPath><path clip-path="url(#p)" fill-rule="evenodd" clip-rule="evenodd" fill="#707070" d="M-35-33.948h30v26.603h-30z"/></g><defs><path id="q" d="M16.062 11.877c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .896 2 2 2zm-6 0c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .896 2 2 2zm-6 0c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .896 2 2 2z"/></defs><clipPath id="r"><use xlink:href="#q" overflow="visible"/></clipPath><g clip-path="url(#r)"><defs><path id="s" d="M0 0h20v20H0z"/></defs><clipPath id="t"><use xlink:href="#s" overflow="visible"/></clipPath><path clip-path="url(#t)" fill-rule="evenodd" clip-rule="evenodd" fill="#707070" d="M-2.938 2.877h26v14h-26z"/></g><defs><path id="u" d="M43.375 10c0 .58-.155 1.13-.466 1.652-.312.52-.728.94-1.25 1.252-.52.313-1.074.47-1.66.47-.58 0-1.13-.157-1.652-.47-.52-.313-.94-.73-1.252-1.252-.313-.52-.47-1.072-.47-1.652 0-.58.157-1.13.47-1.652.313-.52.73-.94 1.252-1.252.52-.313 1.072-.47 1.652-.47.586 0 1.14.157 1.66.47.522.313.94.73 1.25 1.252.31.52.465 1.072.465 1.652zM49 11.072V8.998c0-.123-.06-.24-.18-.352-.12-.11-.248-.176-.382-.193l-2.725-.492c-.135-.034-.224-.1-.268-.192-.044-.094-.03-.193.04-.3l1.547-2.267c.064-.104.09-.23.075-.373-.015-.144-.07-.26-.163-.347l-1.46-1.46c-.1-.1-.217-.157-.355-.175-.14-.018-.26.012-.366.088l-2.268 1.53c-.105.063-.208.072-.308.025s-.16-.132-.185-.255l-.492-2.69c-.017-.134-.08-.258-.192-.373-.11-.113-.228-.17-.35-.17h-2.075c-.13 0-.25.057-.365.17-.114.115-.18.24-.198.375l-.492 2.725c-.018.123-.078.205-.18.246-.103.04-.207.03-.312-.035l-2.25-1.546c-.11-.07-.24-.097-.382-.08-.144.02-.262.074-.356.168l-1.46 1.458c-.094.094-.148.21-.163.352-.015.14.01.264.075.37l1.547 2.267c.07.104.083.204.04.298-.044.094-.133.158-.268.193l-2.655.493c-.123.018-.233.082-.33.193-.097.112-.145.23-.145.352v2.074c0 .13.048.25.145.365.097.114.207.18.33.198l2.672.492c.123.018.207.075.25.17.044.098.03.2-.04.304l-1.547 2.27c-.064.104-.09.23-.075.377.015.146.07.267.163.36l1.46 1.46c.093.093.21.145.355.157.144.012.27-.018.382-.088l2.25-1.512c.105-.082.21-.103.312-.062.103.04.163.126.18.255l.492 2.69c.017.122.082.235.197.337.115.105.237.156.366.156h2.074c.123 0 .24-.05.352-.154.11-.103.175-.215.192-.338l.492-2.707c.023-.128.085-.21.185-.245s.2-.018.307.053l2.268 1.512c.105.082.23.117.378.105.146-.012.267-.064.36-.158l1.44-1.46c.095-.093.152-.213.172-.36.02-.145 0-.27-.066-.377l-1.53-2.268c-.076-.105-.09-.207-.044-.303.047-.098.138-.155.272-.172l2.69-.492c.134-.018.26-.083.38-.198.122-.115.182-.237.182-.366z"/></defs><clipPath id="v"><use xlink:href="#u" overflow="visible"/></clipPath><g clip-path="url(#v)"><defs><path id="w" d="M0 0h20v20H0z"/></defs><clipPath id="x"><use xlink:href="#w" overflow="visible"/></clipPath><path clip-path="url(#x)" fill-rule="evenodd" clip-rule="evenodd" fill="#707070" d="M26-4h28v28H26z"/></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18.417 15.5"><path fill="#999" d="M16.917 15.5c-.384 0-.768-.146-1.06-.44l-6.25-6.25c-.587-.584-.587-1.535 0-2.12l6.25-6.25c.585-.586 1.534-.586 2.12 0 .586.585.586 1.536 0 2.12l-5.19 5.19 5.19 5.19c.586.584.586 1.535 0 2.12-.293.294-.677.44-1.06.44z"/><path fill="#999" d="M7.75 15.5c-.384 0-.768-.146-1.06-.44L.44 8.81c-.587-.584-.587-1.535 0-2.12L6.69.44c.585-.586 1.534-.586 2.12 0 .586.585.586 1.536 0 2.12L3.62 7.75l5.19 5.19c.586.584.586 1.535 0 2.12-.292.294-.676.44-1.06.44z"/></svg>
Binary file
@@ -0,0 +1,6 @@
1
+ /*
2
+ *= require aui.min
3
+ *= require aui-experimental.min
4
+ *= require_tree .
5
+ *= require_self
6
+ */
@@ -0,0 +1,109 @@
1
+ /*!
2
+ * @atlassian/aui - Atlassian User Interface Framework
3
+ * @version v6.0.0
4
+ * @link https://docs.atlassian.com/aui/latest/
5
+ * @license Apache-2.0
6
+ * @author [object Object]
7
+ */
8
+ // node_modules/@atlassian/aui/src/js/aui-css-deprecations.js
9
+ (typeof window === 'undefined' ? global : window).__91a2ecef332d5618330f22e07c6fa12b = (function () {
10
+ var module = {
11
+ exports: {}
12
+ };
13
+ var exports = module.exports;
14
+
15
+ 'use strict';
16
+
17
+ var _deprecation = __c8cfa00f1eba9ac7af89ee3d0d33961d;
18
+
19
+ var _amdify = __574ac67f906effeb9d8ec2753b23cf28;
20
+
21
+ var _amdify2 = _interopRequireDefault(_amdify);
22
+
23
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
+
25
+ (0, _deprecation.css)('.aui-badge', {
26
+ displayName: 'AUI Badges class'
27
+ });
28
+ (0, _deprecation.css)('.aui-dropdown2-trigger.aui-style-dropdown2triggerlegacy1', {
29
+ displayName: 'Dropdown2 legacy trigger'
30
+ });
31
+ (0, _deprecation.css)('.aui-message span.aui-icon', {
32
+ displayName: 'Message icon span'
33
+ });
34
+ (0, _deprecation.css)('.aui-zebra', {
35
+ displayName: 'Zebra table rows'
36
+ });
37
+ (0, _deprecation.css)('.aui-nav-pagination > li.aui-nav-current', {
38
+ alternativeName: 'aui-nav-selected'
39
+ });
40
+ (0, _deprecation.css)('.aui-tabs.vertical-tabs', {
41
+ displayName: 'Vertical tabs'
42
+ });
43
+ (0, _deprecation.css)('form.aui span.content');
44
+ (0, _deprecation.css)(['form.aui .button', 'form.aui .buttons-container'], {
45
+ displayName: 'Unprefixed buttons',
46
+ alternativeName: 'aui-button and aui-buttons'
47
+ });
48
+ (0, _deprecation.css)(['form.aui .icon-date', 'form.aui .icon-range', 'form.aui .icon-help', 'form.aui .icon-required', 'form.aui .icon-inline-help', 'form.aui .icon-users', '.aui-icon-date', '.aui-icon-range', '.aui-icon-help', '.aui-icon-required', '.aui-icon-users', '.aui-icon-inline-help'], {
49
+ displayName: 'Form icons'
50
+ });
51
+ (0, _deprecation.css)(['.aui-icon.icon-move-d', '.aui-icon.icon-move', '.aui-icon.icon-dropdown-d', '.aui-icon.icon-dropdown', '.aui-icon.icon-dropdown-active-d', '.aui-icon.icon-dropdown-active', '.aui-icon.icon-minimize-d', '.aui-icon.icon-minimize', '.aui-icon.icon-maximize-d', '.aui-icon.icon-maximize'], {
52
+ displayName: 'Core icons'
53
+ });
54
+ (0, _deprecation.css)(['.aui-message.error', '.aui-message.warning', '.aui-message.hint', '.aui-message.info', '.aui-message.success'], {
55
+ displayName: 'Unprefixed message types AUI-2150'
56
+ });
57
+ (0, _deprecation.css)(['.aui-dropdown2 .active', '.aui-dropdown2 .checked', '.aui-dropdown2 .disabled', '.aui-dropdown2 .interactive'], {
58
+ displayName: 'Unprefixed dropdown2 css AUI-2150'
59
+ });
60
+
61
+ (0, _deprecation.css)(['aui-page-header-marketing', 'aui-page-header-hero'], {
62
+ displayName: 'Marketing style headings'
63
+ });
64
+
65
+ // 5.9.0
66
+ // -----
67
+
68
+ var fiveNineZero = {
69
+ // Inline Dialog
70
+ 'arrow': 'aui-inline-dialog-arrow',
71
+ 'contents': 'aui-inline-dialog-contents',
72
+
73
+ // Messages
74
+ 'error': 'aui-message-error',
75
+ 'generic': 'aui-message-generic',
76
+ 'hint': 'aui-message-hint',
77
+ 'info': 'aui-message-info',
78
+ 'success': 'aui-message-success',
79
+ 'warning': 'aui-message-warning'
80
+ };
81
+ var name;
82
+
83
+ for (name in fiveNineZero) {
84
+ if (Object.hasOwnProperty.call(fiveNineZero, name)) {
85
+ (0, _deprecation.css)(name, {
86
+ alternativeName: fiveNineZero[name],
87
+ removeVersion: '6.0.0',
88
+ sinceVersion: '5.9.0'
89
+ });
90
+ }
91
+ }
92
+
93
+ (0, _amdify2.default)('aui/css-deprecation-warnings');
94
+
95
+ return module.exports;
96
+ }).call(this);
97
+ // src/js/aui-css-deprecations.js
98
+ (typeof window === 'undefined' ? global : window).__c29c29560455719ef282b75f3fd996fc = (function () {
99
+ var module = {
100
+ exports: {}
101
+ };
102
+ var exports = module.exports;
103
+
104
+ 'use strict';
105
+
106
+ __91a2ecef332d5618330f22e07c6fa12b;
107
+
108
+ return module.exports;
109
+ }).call(this);
@@ -0,0 +1 @@
1
+ ("undefined"==typeof window?global:window).__91a2ecef332d5618330f22e07c6fa12b=function(){function i(i){return i&&i.__esModule?i:{"default":i}}var a={exports:{}},e=(a.exports,__c8cfa00f1eba9ac7af89ee3d0d33961d),n=__574ac67f906effeb9d8ec2753b23cf28,s=i(n);(0,e.css)(".aui-badge",{displayName:"AUI Badges class"}),(0,e.css)(".aui-dropdown2-trigger.aui-style-dropdown2triggerlegacy1",{displayName:"Dropdown2 legacy trigger"}),(0,e.css)(".aui-message span.aui-icon",{displayName:"Message icon span"}),(0,e.css)(".aui-zebra",{displayName:"Zebra table rows"}),(0,e.css)(".aui-nav-pagination > li.aui-nav-current",{alternativeName:"aui-nav-selected"}),(0,e.css)(".aui-tabs.vertical-tabs",{displayName:"Vertical tabs"}),(0,e.css)("form.aui span.content"),(0,e.css)(["form.aui .button","form.aui .buttons-container"],{displayName:"Unprefixed buttons",alternativeName:"aui-button and aui-buttons"}),(0,e.css)(["form.aui .icon-date","form.aui .icon-range","form.aui .icon-help","form.aui .icon-required","form.aui .icon-inline-help","form.aui .icon-users",".aui-icon-date",".aui-icon-range",".aui-icon-help",".aui-icon-required",".aui-icon-users",".aui-icon-inline-help"],{displayName:"Form icons"}),(0,e.css)([".aui-icon.icon-move-d",".aui-icon.icon-move",".aui-icon.icon-dropdown-d",".aui-icon.icon-dropdown",".aui-icon.icon-dropdown-active-d",".aui-icon.icon-dropdown-active",".aui-icon.icon-minimize-d",".aui-icon.icon-minimize",".aui-icon.icon-maximize-d",".aui-icon.icon-maximize"],{displayName:"Core icons"}),(0,e.css)([".aui-message.error",".aui-message.warning",".aui-message.hint",".aui-message.info",".aui-message.success"],{displayName:"Unprefixed message types AUI-2150"}),(0,e.css)([".aui-dropdown2 .active",".aui-dropdown2 .checked",".aui-dropdown2 .disabled",".aui-dropdown2 .interactive"],{displayName:"Unprefixed dropdown2 css AUI-2150"}),(0,e.css)(["aui-page-header-marketing","aui-page-header-hero"],{displayName:"Marketing style headings"});var o,c={arrow:"aui-inline-dialog-arrow",contents:"aui-inline-dialog-contents",error:"aui-message-error",generic:"aui-message-generic",hint:"aui-message-hint",info:"aui-message-info",success:"aui-message-success",warning:"aui-message-warning"};for(o in c)Object.hasOwnProperty.call(c,o)&&(0,e.css)(o,{alternativeName:c[o],removeVersion:"6.0.0",sinceVersion:"5.9.0"});return(0,s["default"])("aui/css-deprecation-warnings"),a.exports}.call(this),("undefined"==typeof window?global:window).__c29c29560455719ef282b75f3fd996fc=function(){var i={exports:{}};i.exports;return __91a2ecef332d5618330f22e07c6fa12b,i.exports}.call(this);
@@ -0,0 +1,2333 @@
1
+ /*!
2
+ * @atlassian/aui - Atlassian User Interface Framework
3
+ * @version v6.0.0
4
+ * @link https://docs.atlassian.com/aui/latest/
5
+ * @license Apache-2.0
6
+ * @author [object Object]
7
+ */
8
+ // node_modules/@atlassian/aui/src/js-vendor/jquery/jquery-ui/jquery.ui.datepicker.js
9
+ (typeof window === 'undefined' ? global : window).__601fc554d291439a8ef8bcac7fc51f19 = (function () {
10
+ var module = {
11
+ exports: {}
12
+ };
13
+ var exports = module.exports;
14
+
15
+ /*!
16
+ * jQuery UI Datepicker 1.8.24
17
+ *
18
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
19
+ * Dual licensed under the MIT or GPL Version 2 licenses.
20
+ * http://jquery.org/license
21
+ *
22
+ * http://docs.jquery.com/UI/Datepicker
23
+ *
24
+ * Depends:
25
+ * jquery.ui.core.js
26
+ */
27
+ (function( $, undefined ) {
28
+
29
+ $.extend($.ui, { datepicker: { version: "1.8.24" } });
30
+
31
+ var PROP_NAME = 'datepicker';
32
+ var dpuuid = new Date().getTime();
33
+ var instActive;
34
+
35
+ /* Date picker manager.
36
+ Use the singleton instance of this class, $.datepicker, to interact with the date picker.
37
+ Settings for (groups of) date pickers are maintained in an instance object,
38
+ allowing multiple different settings on the same page. */
39
+
40
+ function Datepicker() {
41
+ this.debug = false; // Change this to true to start debugging
42
+ this._curInst = null; // The current instance in use
43
+ this._keyEvent = false; // If the last event was a key event
44
+ this._disabledInputs = []; // List of date picker inputs that have been disabled
45
+ this._datepickerShowing = false; // True if the popup picker is showing , false if not
46
+ this._inDialog = false; // True if showing within a "dialog", false if not
47
+ this._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division
48
+ this._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class
49
+ this._appendClass = 'ui-datepicker-append'; // The name of the append marker class
50
+ this._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class
51
+ this._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class
52
+ this._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class
53
+ this._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class
54
+ this._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class
55
+ this._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class
56
+ this.regional = []; // Available regional settings, indexed by language code
57
+ this.regional[''] = { // Default regional settings
58
+ closeText: 'Done', // Display text for close link
59
+ prevText: 'Prev', // Display text for previous month link
60
+ nextText: 'Next', // Display text for next month link
61
+ currentText: 'Today', // Display text for current month link
62
+ monthNames: ['January','February','March','April','May','June',
63
+ 'July','August','September','October','November','December'], // Names of months for drop-down and formatting
64
+ monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting
65
+ dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting
66
+ dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting
67
+ dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday
68
+ weekHeader: 'Wk', // Column header for week of the year
69
+ dateFormat: 'mm/dd/yy', // See format options on parseDate
70
+ firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
71
+ isRTL: false, // True if right-to-left language, false if left-to-right
72
+ showMonthAfterYear: false, // True if the year select precedes month, false for month then year
73
+ yearSuffix: '' // Additional text to append to the year in the month headers
74
+ };
75
+ this._defaults = { // Global defaults for all the date picker instances
76
+ showOn: 'focus', // 'focus' for popup on focus,
77
+ // 'button' for trigger button, or 'both' for either
78
+ showAnim: 'fadeIn', // Name of jQuery animation for popup
79
+ showOptions: {}, // Options for enhanced animations
80
+ defaultDate: null, // Used when field is blank: actual date,
81
+ // +/-number for offset from today, null for today
82
+ appendText: '', // Display text following the input box, e.g. showing the format
83
+ buttonText: '...', // Text for trigger button
84
+ buttonImage: '', // URL for trigger button image
85
+ buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
86
+ hideIfNoPrevNext: false, // True to hide next/previous month links
87
+ // if not applicable, false to just disable them
88
+ navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
89
+ gotoCurrent: false, // True if today link goes back to current selection instead
90
+ changeMonth: false, // True if month can be selected directly, false if only prev/next
91
+ changeYear: false, // True if year can be selected directly, false if only prev/next
92
+ yearRange: 'c-10:c+10', // Range of years to display in drop-down,
93
+ // either relative to today's year (-nn:+nn), relative to currently displayed year
94
+ // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
95
+ showOtherMonths: false, // True to show dates in other months, false to leave blank
96
+ selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
97
+ showWeek: false, // True to show week of the year, false to not show it
98
+ calculateWeek: this.iso8601Week, // How to calculate the week of the year,
99
+ // takes a Date and returns the number of the week for it
100
+ shortYearCutoff: '+10', // Short year values < this are in the current century,
101
+ // > this are in the previous century,
102
+ // string value starting with '+' for current year + value
103
+ minDate: null, // The earliest selectable date, or null for no limit
104
+ maxDate: null, // The latest selectable date, or null for no limit
105
+ duration: 'fast', // Duration of display/closure
106
+ beforeShowDay: null, // Function that takes a date and returns an array with
107
+ // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '',
108
+ // [2] = cell title (optional), e.g. $.datepicker.noWeekends
109
+ beforeShow: null, // Function that takes an input field and
110
+ // returns a set of custom settings for the date picker
111
+ onSelect: null, // Define a callback function when a date is selected
112
+ onChangeMonthYear: null, // Define a callback function when the month or year is changed
113
+ onClose: null, // Define a callback function when the datepicker is closed
114
+ numberOfMonths: 1, // Number of months to show at a time
115
+ showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
116
+ stepMonths: 1, // Number of months to step back/forward
117
+ stepBigMonths: 12, // Number of months to step back/forward for the big links
118
+ altField: '', // Selector for an alternate field to store selected dates into
119
+ altFormat: '', // The date format to use for the alternate field
120
+ constrainInput: true, // The input is constrained by the current date format
121
+ showButtonPanel: false, // True to show button panel, false to not show it
122
+ autoSize: false, // True to size the input for the date format, false to leave as is
123
+ disabled: false // The initial disabled state
124
+ };
125
+ $.extend(this._defaults, this.regional['']);
126
+ this.dpDiv = bindHover($('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'));
127
+ }
128
+
129
+ $.extend(Datepicker.prototype, {
130
+ /* Class name added to elements to indicate already configured with a date picker. */
131
+ markerClassName: 'hasDatepicker',
132
+
133
+ //Keep track of the maximum number of rows displayed (see #7043)
134
+ maxRows: 4,
135
+
136
+ /* Debug logging (if enabled). */
137
+ log: function () {
138
+ if (this.debug)
139
+ console.log.apply('', arguments);
140
+ },
141
+
142
+ // TODO rename to "widget" when switching to widget factory
143
+ _widgetDatepicker: function() {
144
+ return this.dpDiv;
145
+ },
146
+
147
+ /* Override the default settings for all instances of the date picker.
148
+ @param settings object - the new settings to use as defaults (anonymous object)
149
+ @return the manager object */
150
+ setDefaults: function(settings) {
151
+ extendRemove(this._defaults, settings || {});
152
+ return this;
153
+ },
154
+
155
+ /* Attach the date picker to a jQuery selection.
156
+ @param target element - the target input field or division or span
157
+ @param settings object - the new settings to use for this date picker instance (anonymous) */
158
+ _attachDatepicker: function(target, settings) {
159
+ // check for settings on the control itself - in namespace 'date:'
160
+ var inlineSettings = null;
161
+ for (var attrName in this._defaults) {
162
+ var attrValue = target.getAttribute('date:' + attrName);
163
+ if (attrValue) {
164
+ inlineSettings = inlineSettings || {};
165
+ try {
166
+ inlineSettings[attrName] = eval(attrValue);
167
+ } catch (err) {
168
+ inlineSettings[attrName] = attrValue;
169
+ }
170
+ }
171
+ }
172
+ var nodeName = target.nodeName.toLowerCase();
173
+ var inline = (nodeName == 'div' || nodeName == 'span');
174
+ if (!target.id) {
175
+ this.uuid += 1;
176
+ target.id = 'dp' + this.uuid;
177
+ }
178
+ var inst = this._newInst($(target), inline);
179
+ inst.settings = $.extend({}, settings || {}, inlineSettings || {});
180
+ if (nodeName == 'input') {
181
+ this._connectDatepicker(target, inst);
182
+ } else if (inline) {
183
+ this._inlineDatepicker(target, inst);
184
+ }
185
+ },
186
+
187
+ /* Create a new instance object. */
188
+ _newInst: function(target, inline) {
189
+ var id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\\\$1'); // escape jQuery meta chars
190
+ return {id: id, input: target, // associated target
191
+ selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
192
+ drawMonth: 0, drawYear: 0, // month being drawn
193
+ inline: inline, // is datepicker inline or not
194
+ dpDiv: (!inline ? this.dpDiv : // presentation div
195
+ bindHover($('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')))};
196
+ },
197
+
198
+ /* Attach the date picker to an input field. */
199
+ _connectDatepicker: function(target, inst) {
200
+ var input = $(target);
201
+ inst.append = $([]);
202
+ inst.trigger = $([]);
203
+ if (input.hasClass(this.markerClassName))
204
+ return;
205
+ this._attachments(input, inst);
206
+ input.addClass(this.markerClassName).keydown(this._doKeyDown).
207
+ keypress(this._doKeyPress).keyup(this._doKeyUp).
208
+ bind("setData.datepicker", function(event, key, value) {
209
+ inst.settings[key] = value;
210
+ }).bind("getData.datepicker", function(event, key) {
211
+ return this._get(inst, key);
212
+ });
213
+ this._autoSize(inst);
214
+ $.data(target, PROP_NAME, inst);
215
+ //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
216
+ if( inst.settings.disabled ) {
217
+ this._disableDatepicker( target );
218
+ }
219
+ },
220
+
221
+ /* Make attachments based on settings. */
222
+ _attachments: function(input, inst) {
223
+ var appendText = this._get(inst, 'appendText');
224
+ var isRTL = this._get(inst, 'isRTL');
225
+ if (inst.append)
226
+ inst.append.remove();
227
+ if (appendText) {
228
+ inst.append = $('<span class="' + this._appendClass + '">' + appendText + '</span>');
229
+ input[isRTL ? 'before' : 'after'](inst.append);
230
+ }
231
+ input.unbind('focus', this._showDatepicker);
232
+ if (inst.trigger)
233
+ inst.trigger.remove();
234
+ var showOn = this._get(inst, 'showOn');
235
+ if (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field
236
+ input.focus(this._showDatepicker);
237
+ if (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked
238
+ var buttonText = this._get(inst, 'buttonText');
239
+ var buttonImage = this._get(inst, 'buttonImage');
240
+ inst.trigger = $(this._get(inst, 'buttonImageOnly') ?
241
+ $('<img/>').addClass(this._triggerClass).
242
+ attr({ src: buttonImage, alt: buttonText, title: buttonText }) :
243
+ $('<button type="button"></button>').addClass(this._triggerClass).
244
+ html(buttonImage == '' ? buttonText : $('<img/>').attr(
245
+ { src:buttonImage, alt:buttonText, title:buttonText })));
246
+ input[isRTL ? 'before' : 'after'](inst.trigger);
247
+ inst.trigger.click(function() {
248
+ if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])
249
+ $.datepicker._hideDatepicker();
250
+ else if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {
251
+ $.datepicker._hideDatepicker();
252
+ $.datepicker._showDatepicker(input[0]);
253
+ } else
254
+ $.datepicker._showDatepicker(input[0]);
255
+ return false;
256
+ });
257
+ }
258
+ },
259
+
260
+ /* Apply the maximum length for the date format. */
261
+ _autoSize: function(inst) {
262
+ if (this._get(inst, 'autoSize') && !inst.inline) {
263
+ var date = new Date(2009, 12 - 1, 20); // Ensure double digits
264
+ var dateFormat = this._get(inst, 'dateFormat');
265
+ if (dateFormat.match(/[DM]/)) {
266
+ var findMax = function(names) {
267
+ var max = 0;
268
+ var maxI = 0;
269
+ for (var i = 0; i < names.length; i++) {
270
+ if (names[i].length > max) {
271
+ max = names[i].length;
272
+ maxI = i;
273
+ }
274
+ }
275
+ return maxI;
276
+ };
277
+ date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?
278
+ 'monthNames' : 'monthNamesShort'))));
279
+ date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?
280
+ 'dayNames' : 'dayNamesShort'))) + 20 - date.getDay());
281
+ }
282
+ inst.input.attr('size', this._formatDate(inst, date).length);
283
+ }
284
+ },
285
+
286
+ /* Attach an inline date picker to a div. */
287
+ _inlineDatepicker: function(target, inst) {
288
+ var divSpan = $(target);
289
+ if (divSpan.hasClass(this.markerClassName))
290
+ return;
291
+ divSpan.addClass(this.markerClassName).append(inst.dpDiv).
292
+ bind("setData.datepicker", function(event, key, value){
293
+ inst.settings[key] = value;
294
+ }).bind("getData.datepicker", function(event, key){
295
+ return this._get(inst, key);
296
+ });
297
+ $.data(target, PROP_NAME, inst);
298
+ this._setDate(inst, this._getDefaultDate(inst), true);
299
+ this._updateDatepicker(inst);
300
+ this._updateAlternate(inst);
301
+ //If disabled option is true, disable the datepicker before showing it (see ticket #5665)
302
+ if( inst.settings.disabled ) {
303
+ this._disableDatepicker( target );
304
+ }
305
+ // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
306
+ // http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
307
+ inst.dpDiv.css( "display", "block" );
308
+ },
309
+
310
+ /* Pop-up the date picker in a "dialog" box.
311
+ @param input element - ignored
312
+ @param date string or Date - the initial date to display
313
+ @param onSelect function - the function to call when a date is selected
314
+ @param settings object - update the dialog date picker instance's settings (anonymous object)
315
+ @param pos int[2] - coordinates for the dialog's position within the screen or
316
+ event - with x/y coordinates or
317
+ leave empty for default (screen centre)
318
+ @return the manager object */
319
+ _dialogDatepicker: function(input, date, onSelect, settings, pos) {
320
+ var inst = this._dialogInst; // internal instance
321
+ if (!inst) {
322
+ this.uuid += 1;
323
+ var id = 'dp' + this.uuid;
324
+ this._dialogInput = $('<input type="text" id="' + id +
325
+ '" style="position: absolute; top: -100px; width: 0px;"/>');
326
+ this._dialogInput.keydown(this._doKeyDown);
327
+ $('body').append(this._dialogInput);
328
+ inst = this._dialogInst = this._newInst(this._dialogInput, false);
329
+ inst.settings = {};
330
+ $.data(this._dialogInput[0], PROP_NAME, inst);
331
+ }
332
+ extendRemove(inst.settings, settings || {});
333
+ date = (date && date.constructor == Date ? this._formatDate(inst, date) : date);
334
+ this._dialogInput.val(date);
335
+
336
+ this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);
337
+ if (!this._pos) {
338
+ var browserWidth = document.documentElement.clientWidth;
339
+ var browserHeight = document.documentElement.clientHeight;
340
+ var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
341
+ var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
342
+ this._pos = // should use actual width/height below
343
+ [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];
344
+ }
345
+
346
+ // move input on screen for focus, but hidden behind dialog
347
+ this._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px');
348
+ inst.settings.onSelect = onSelect;
349
+ this._inDialog = true;
350
+ this.dpDiv.addClass(this._dialogClass);
351
+ this._showDatepicker(this._dialogInput[0]);
352
+ if ($.blockUI)
353
+ $.blockUI(this.dpDiv);
354
+ $.data(this._dialogInput[0], PROP_NAME, inst);
355
+ return this;
356
+ },
357
+
358
+ /* Detach a datepicker from its control.
359
+ @param target element - the target input field or division or span */
360
+ _destroyDatepicker: function(target) {
361
+ var $target = $(target);
362
+ var inst = $.data(target, PROP_NAME);
363
+ if (!$target.hasClass(this.markerClassName)) {
364
+ return;
365
+ }
366
+ var nodeName = target.nodeName.toLowerCase();
367
+ $.removeData(target, PROP_NAME);
368
+ if (nodeName == 'input') {
369
+ inst.append.remove();
370
+ inst.trigger.remove();
371
+ $target.removeClass(this.markerClassName).
372
+ unbind('focus', this._showDatepicker).
373
+ unbind('keydown', this._doKeyDown).
374
+ unbind('keypress', this._doKeyPress).
375
+ unbind('keyup', this._doKeyUp);
376
+ } else if (nodeName == 'div' || nodeName == 'span')
377
+ $target.removeClass(this.markerClassName).empty();
378
+ },
379
+
380
+ /* Enable the date picker to a jQuery selection.
381
+ @param target element - the target input field or division or span */
382
+ _enableDatepicker: function(target) {
383
+ var $target = $(target);
384
+ var inst = $.data(target, PROP_NAME);
385
+ if (!$target.hasClass(this.markerClassName)) {
386
+ return;
387
+ }
388
+ var nodeName = target.nodeName.toLowerCase();
389
+ if (nodeName == 'input') {
390
+ target.disabled = false;
391
+ inst.trigger.filter('button').
392
+ each(function() { this.disabled = false; }).end().
393
+ filter('img').css({opacity: '1.0', cursor: ''});
394
+ }
395
+ else if (nodeName == 'div' || nodeName == 'span') {
396
+ var inline = $target.children('.' + this._inlineClass);
397
+ inline.children().removeClass('ui-state-disabled');
398
+ inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
399
+ removeAttr("disabled");
400
+ }
401
+ this._disabledInputs = $.map(this._disabledInputs,
402
+ function(value) { return (value == target ? null : value); }); // delete entry
403
+ },
404
+
405
+ /* Disable the date picker to a jQuery selection.
406
+ @param target element - the target input field or division or span */
407
+ _disableDatepicker: function(target) {
408
+ var $target = $(target);
409
+ var inst = $.data(target, PROP_NAME);
410
+ if (!$target.hasClass(this.markerClassName)) {
411
+ return;
412
+ }
413
+ var nodeName = target.nodeName.toLowerCase();
414
+ if (nodeName == 'input') {
415
+ target.disabled = true;
416
+ inst.trigger.filter('button').
417
+ each(function() { this.disabled = true; }).end().
418
+ filter('img').css({opacity: '0.5', cursor: 'default'});
419
+ }
420
+ else if (nodeName == 'div' || nodeName == 'span') {
421
+ var inline = $target.children('.' + this._inlineClass);
422
+ inline.children().addClass('ui-state-disabled');
423
+ inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
424
+ attr("disabled", "disabled");
425
+ }
426
+ this._disabledInputs = $.map(this._disabledInputs,
427
+ function(value) { return (value == target ? null : value); }); // delete entry
428
+ this._disabledInputs[this._disabledInputs.length] = target;
429
+ },
430
+
431
+ /* Is the first field in a jQuery collection disabled as a datepicker?
432
+ @param target element - the target input field or division or span
433
+ @return boolean - true if disabled, false if enabled */
434
+ _isDisabledDatepicker: function(target) {
435
+ if (!target) {
436
+ return false;
437
+ }
438
+ for (var i = 0; i < this._disabledInputs.length; i++) {
439
+ if (this._disabledInputs[i] == target)
440
+ return true;
441
+ }
442
+ return false;
443
+ },
444
+
445
+ /* Retrieve the instance data for the target control.
446
+ @param target element - the target input field or division or span
447
+ @return object - the associated instance data
448
+ @throws error if a jQuery problem getting data */
449
+ _getInst: function(target) {
450
+ try {
451
+ return $.data(target, PROP_NAME);
452
+ }
453
+ catch (err) {
454
+ throw 'Missing instance data for this datepicker';
455
+ }
456
+ },
457
+
458
+ /* Update or retrieve the settings for a date picker attached to an input field or division.
459
+ @param target element - the target input field or division or span
460
+ @param name object - the new settings to update or
461
+ string - the name of the setting to change or retrieve,
462
+ when retrieving also 'all' for all instance settings or
463
+ 'defaults' for all global defaults
464
+ @param value any - the new value for the setting
465
+ (omit if above is an object or to retrieve a value) */
466
+ _optionDatepicker: function(target, name, value) {
467
+ var inst = this._getInst(target);
468
+ if (arguments.length == 2 && typeof name == 'string') {
469
+ return (name == 'defaults' ? $.extend({}, $.datepicker._defaults) :
470
+ (inst ? (name == 'all' ? $.extend({}, inst.settings) :
471
+ this._get(inst, name)) : null));
472
+ }
473
+ var settings = name || {};
474
+ if (typeof name == 'string') {
475
+ settings = {};
476
+ settings[name] = value;
477
+ }
478
+ if (inst) {
479
+ if (this._curInst == inst) {
480
+ this._hideDatepicker();
481
+ }
482
+ var date = this._getDateDatepicker(target, true);
483
+ var minDate = this._getMinMaxDate(inst, 'min');
484
+ var maxDate = this._getMinMaxDate(inst, 'max');
485
+ extendRemove(inst.settings, settings);
486
+ // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided
487
+ if (minDate !== null && settings['dateFormat'] !== undefined && settings['minDate'] === undefined)
488
+ inst.settings.minDate = this._formatDate(inst, minDate);
489
+ if (maxDate !== null && settings['dateFormat'] !== undefined && settings['maxDate'] === undefined)
490
+ inst.settings.maxDate = this._formatDate(inst, maxDate);
491
+ this._attachments($(target), inst);
492
+ this._autoSize(inst);
493
+ this._setDate(inst, date);
494
+ this._updateAlternate(inst);
495
+ this._updateDatepicker(inst);
496
+ }
497
+ },
498
+
499
+ // change method deprecated
500
+ _changeDatepicker: function(target, name, value) {
501
+ this._optionDatepicker(target, name, value);
502
+ },
503
+
504
+ /* Redraw the date picker attached to an input field or division.
505
+ @param target element - the target input field or division or span */
506
+ _refreshDatepicker: function(target) {
507
+ var inst = this._getInst(target);
508
+ if (inst) {
509
+ this._updateDatepicker(inst);
510
+ }
511
+ },
512
+
513
+ /* Set the dates for a jQuery selection.
514
+ @param target element - the target input field or division or span
515
+ @param date Date - the new date */
516
+ _setDateDatepicker: function(target, date) {
517
+ var inst = this._getInst(target);
518
+ if (inst) {
519
+ this._setDate(inst, date);
520
+ this._updateDatepicker(inst);
521
+ this._updateAlternate(inst);
522
+ }
523
+ },
524
+
525
+ /* Get the date(s) for the first entry in a jQuery selection.
526
+ @param target element - the target input field or division or span
527
+ @param noDefault boolean - true if no default date is to be used
528
+ @return Date - the current date */
529
+ _getDateDatepicker: function(target, noDefault) {
530
+ var inst = this._getInst(target);
531
+ if (inst && !inst.inline)
532
+ this._setDateFromField(inst, noDefault);
533
+ return (inst ? this._getDate(inst) : null);
534
+ },
535
+
536
+ /* Handle keystrokes. */
537
+ _doKeyDown: function(event) {
538
+ var inst = $.datepicker._getInst(event.target);
539
+ var handled = true;
540
+ var isRTL = inst.dpDiv.is('.ui-datepicker-rtl');
541
+ inst._keyEvent = true;
542
+ if ($.datepicker._datepickerShowing)
543
+ switch (event.keyCode) {
544
+ case 9: $.datepicker._hideDatepicker();
545
+ handled = false;
546
+ break; // hide on tab out
547
+ case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
548
+ $.datepicker._currentClass + ')', inst.dpDiv);
549
+ if (sel[0])
550
+ $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
551
+ var onSelect = $.datepicker._get(inst, 'onSelect');
552
+ if (onSelect) {
553
+ var dateStr = $.datepicker._formatDate(inst);
554
+
555
+ // trigger custom callback
556
+ onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);
557
+ }
558
+ else
559
+ $.datepicker._hideDatepicker();
560
+ return false; // don't submit the form
561
+ break; // select the value on enter
562
+ case 27: $.datepicker._hideDatepicker();
563
+ break; // hide on escape
564
+ case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
565
+ -$.datepicker._get(inst, 'stepBigMonths') :
566
+ -$.datepicker._get(inst, 'stepMonths')), 'M');
567
+ break; // previous month/year on page up/+ ctrl
568
+ case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
569
+ +$.datepicker._get(inst, 'stepBigMonths') :
570
+ +$.datepicker._get(inst, 'stepMonths')), 'M');
571
+ break; // next month/year on page down/+ ctrl
572
+ case 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target);
573
+ handled = event.ctrlKey || event.metaKey;
574
+ break; // clear on ctrl or command +end
575
+ case 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target);
576
+ handled = event.ctrlKey || event.metaKey;
577
+ break; // current on ctrl or command +home
578
+ case 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D');
579
+ handled = event.ctrlKey || event.metaKey;
580
+ // -1 day on ctrl or command +left
581
+ if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?
582
+ -$.datepicker._get(inst, 'stepBigMonths') :
583
+ -$.datepicker._get(inst, 'stepMonths')), 'M');
584
+ // next month/year on alt +left on Mac
585
+ break;
586
+ case 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D');
587
+ handled = event.ctrlKey || event.metaKey;
588
+ break; // -1 week on ctrl or command +up
589
+ case 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D');
590
+ handled = event.ctrlKey || event.metaKey;
591
+ // +1 day on ctrl or command +right
592
+ if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?
593
+ +$.datepicker._get(inst, 'stepBigMonths') :
594
+ +$.datepicker._get(inst, 'stepMonths')), 'M');
595
+ // next month/year on alt +right
596
+ break;
597
+ case 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D');
598
+ handled = event.ctrlKey || event.metaKey;
599
+ break; // +1 week on ctrl or command +down
600
+ default: handled = false;
601
+ }
602
+ else if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home
603
+ $.datepicker._showDatepicker(this);
604
+ else {
605
+ handled = false;
606
+ }
607
+ if (handled) {
608
+ event.preventDefault();
609
+ event.stopPropagation();
610
+ }
611
+ },
612
+
613
+ /* Filter entered characters - based on date format. */
614
+ _doKeyPress: function(event) {
615
+ var inst = $.datepicker._getInst(event.target);
616
+ if ($.datepicker._get(inst, 'constrainInput')) {
617
+ var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat'));
618
+ var chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode);
619
+ return event.ctrlKey || event.metaKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1);
620
+ }
621
+ },
622
+
623
+ /* Synchronise manual entry and field/alternate field. */
624
+ _doKeyUp: function(event) {
625
+ var inst = $.datepicker._getInst(event.target);
626
+ if (inst.input.val() != inst.lastVal) {
627
+ try {
628
+ var date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),
629
+ (inst.input ? inst.input.val() : null),
630
+ $.datepicker._getFormatConfig(inst));
631
+ if (date) { // only if valid
632
+ $.datepicker._setDateFromField(inst);
633
+ $.datepicker._updateAlternate(inst);
634
+ $.datepicker._updateDatepicker(inst);
635
+ }
636
+ }
637
+ catch (err) {
638
+ $.datepicker.log(err);
639
+ }
640
+ }
641
+ return true;
642
+ },
643
+
644
+ /* Pop-up the date picker for a given input field.
645
+ If false returned from beforeShow event handler do not show.
646
+ @param input element - the input field attached to the date picker or
647
+ event - if triggered by focus */
648
+ _showDatepicker: function(input) {
649
+ input = input.target || input;
650
+ if (input.nodeName.toLowerCase() != 'input') // find from button/image trigger
651
+ input = $('input', input.parentNode)[0];
652
+ if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here
653
+ return;
654
+ var inst = $.datepicker._getInst(input);
655
+ if ($.datepicker._curInst && $.datepicker._curInst != inst) {
656
+ $.datepicker._curInst.dpDiv.stop(true, true);
657
+ if ( inst && $.datepicker._datepickerShowing ) {
658
+ $.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );
659
+ }
660
+ }
661
+ var beforeShow = $.datepicker._get(inst, 'beforeShow');
662
+ var beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};
663
+ if(beforeShowSettings === false){
664
+ //false
665
+ return;
666
+ }
667
+ extendRemove(inst.settings, beforeShowSettings);
668
+ inst.lastVal = null;
669
+ $.datepicker._lastInput = input;
670
+ $.datepicker._setDateFromField(inst);
671
+ if ($.datepicker._inDialog) // hide cursor
672
+ input.value = '';
673
+ if (!$.datepicker._pos) { // position below input
674
+ $.datepicker._pos = $.datepicker._findPos(input);
675
+ $.datepicker._pos[1] += input.offsetHeight; // add the height
676
+ }
677
+ var isFixed = false;
678
+ $(input).parents().each(function() {
679
+ isFixed |= $(this).css('position') == 'fixed';
680
+ return !isFixed;
681
+ });
682
+ if (isFixed && $.browser.opera) { // correction for Opera when fixed and scrolled
683
+ $.datepicker._pos[0] -= document.documentElement.scrollLeft;
684
+ $.datepicker._pos[1] -= document.documentElement.scrollTop;
685
+ }
686
+ var offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};
687
+ $.datepicker._pos = null;
688
+ //to avoid flashes on Firefox
689
+ inst.dpDiv.empty();
690
+ // determine sizing offscreen
691
+ inst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'});
692
+ $.datepicker._updateDatepicker(inst);
693
+ // fix width for dynamic number of date pickers
694
+ // and adjust position before showing
695
+ offset = $.datepicker._checkOffset(inst, offset, isFixed);
696
+ inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?
697
+ 'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none',
698
+ left: offset.left + 'px', top: offset.top + 'px'});
699
+ if (!inst.inline) {
700
+ var showAnim = $.datepicker._get(inst, 'showAnim');
701
+ var duration = $.datepicker._get(inst, 'duration');
702
+ var postProcess = function() {
703
+ var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only
704
+ if( !! cover.length ){
705
+ var borders = $.datepicker._getBorders(inst.dpDiv);
706
+ cover.css({left: -borders[0], top: -borders[1],
707
+ width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});
708
+ }
709
+ };
710
+ inst.dpDiv.zIndex($(input).zIndex()+1);
711
+ $.datepicker._datepickerShowing = true;
712
+ if ($.effects && $.effects[showAnim])
713
+ inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);
714
+ else
715
+ inst.dpDiv[showAnim || 'show']((showAnim ? duration : null), postProcess);
716
+ if (!showAnim || !duration)
717
+ postProcess();
718
+ if (inst.input.is(':visible') && !inst.input.is(':disabled'))
719
+ inst.input.focus();
720
+ $.datepicker._curInst = inst;
721
+ }
722
+ },
723
+
724
+ /* Generate the date picker content. */
725
+ _updateDatepicker: function(inst) {
726
+ var self = this;
727
+ self.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
728
+ var borders = $.datepicker._getBorders(inst.dpDiv);
729
+ instActive = inst; // for delegate hover events
730
+ inst.dpDiv.empty().append(this._generateHTML(inst));
731
+ this._attachHandlers(inst);
732
+ var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only
733
+ if( !!cover.length ){ //avoid call to outerXXXX() when not in IE6
734
+ cover.css({left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()})
735
+ }
736
+ inst.dpDiv.find('.' + this._dayOverClass + ' a').mouseover();
737
+ var numMonths = this._getNumberOfMonths(inst);
738
+ var cols = numMonths[1];
739
+ var width = 17;
740
+ inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('');
741
+ if (cols > 1)
742
+ inst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em');
743
+ inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') +
744
+ 'Class']('ui-datepicker-multi');
745
+ inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') +
746
+ 'Class']('ui-datepicker-rtl');
747
+ if (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input &&
748
+ // #6694 - don't focus the input if it's already focused
749
+ // this breaks the change event in IE
750
+ inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)
751
+ inst.input.focus();
752
+ // deffered render of the years select (to avoid flashes on Firefox)
753
+ if( inst.yearshtml ){
754
+ var origyearshtml = inst.yearshtml;
755
+ setTimeout(function(){
756
+ //assure that inst.yearshtml didn't change.
757
+ if( origyearshtml === inst.yearshtml && inst.yearshtml ){
758
+ inst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml);
759
+ }
760
+ origyearshtml = inst.yearshtml = null;
761
+ }, 0);
762
+ }
763
+ },
764
+
765
+ /* Retrieve the size of left and top borders for an element.
766
+ @param elem (jQuery object) the element of interest
767
+ @return (number[2]) the left and top borders */
768
+ _getBorders: function(elem) {
769
+ var convert = function(value) {
770
+ return {thin: 1, medium: 2, thick: 3}[value] || value;
771
+ };
772
+ return [parseFloat(convert(elem.css('border-left-width'))),
773
+ parseFloat(convert(elem.css('border-top-width')))];
774
+ },
775
+
776
+ /* Check positioning to remain on screen. */
777
+ _checkOffset: function(inst, offset, isFixed) {
778
+ var dpWidth = inst.dpDiv.outerWidth();
779
+ var dpHeight = inst.dpDiv.outerHeight();
780
+ var inputWidth = inst.input ? inst.input.outerWidth() : 0;
781
+ var inputHeight = inst.input ? inst.input.outerHeight() : 0;
782
+ var viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft());
783
+ var viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());
784
+
785
+ offset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0);
786
+ offset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0;
787
+ offset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;
788
+
789
+ // now check if datepicker is showing outside window viewport - move to a better place if so.
790
+ offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?
791
+ Math.abs(offset.left + dpWidth - viewWidth) : 0);
792
+ offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?
793
+ Math.abs(dpHeight + inputHeight) : 0);
794
+
795
+ return offset;
796
+ },
797
+
798
+ /* Find an object's position on the screen. */
799
+ _findPos: function(obj) {
800
+ var inst = this._getInst(obj);
801
+ var isRTL = this._get(inst, 'isRTL');
802
+ while (obj && (obj.type == 'hidden' || obj.nodeType != 1 || $.expr.filters.hidden(obj))) {
803
+ obj = obj[isRTL ? 'previousSibling' : 'nextSibling'];
804
+ }
805
+ var position = $(obj).offset();
806
+ return [position.left, position.top];
807
+ },
808
+
809
+ /* Hide the date picker from view.
810
+ @param input element - the input field attached to the date picker */
811
+ _hideDatepicker: function(input) {
812
+ var inst = this._curInst;
813
+ if (!inst || (input && inst != $.data(input, PROP_NAME)))
814
+ return;
815
+ if (this._datepickerShowing) {
816
+ var showAnim = this._get(inst, 'showAnim');
817
+ var duration = this._get(inst, 'duration');
818
+ var postProcess = function() {
819
+ $.datepicker._tidyDialog(inst);
820
+ };
821
+ if ($.effects && $.effects[showAnim])
822
+ inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);
823
+ else
824
+ inst.dpDiv[(showAnim == 'slideDown' ? 'slideUp' :
825
+ (showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess);
826
+ if (!showAnim)
827
+ postProcess();
828
+ this._datepickerShowing = false;
829
+ var onClose = this._get(inst, 'onClose');
830
+ if (onClose)
831
+ onClose.apply((inst.input ? inst.input[0] : null),
832
+ [(inst.input ? inst.input.val() : ''), inst]);
833
+ this._lastInput = null;
834
+ if (this._inDialog) {
835
+ this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' });
836
+ if ($.blockUI) {
837
+ $.unblockUI();
838
+ $('body').append(this.dpDiv);
839
+ }
840
+ }
841
+ this._inDialog = false;
842
+ }
843
+ },
844
+
845
+ /* Tidy up after a dialog display. */
846
+ _tidyDialog: function(inst) {
847
+ inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar');
848
+ },
849
+
850
+ /* Close date picker if clicked elsewhere. */
851
+ _checkExternalClick: function(event) {
852
+ if (!$.datepicker._curInst)
853
+ return;
854
+
855
+ var $target = $(event.target),
856
+ inst = $.datepicker._getInst($target[0]);
857
+
858
+ if ( ( ( $target[0].id != $.datepicker._mainDivId &&
859
+ $target.parents('#' + $.datepicker._mainDivId).length == 0 &&
860
+ !$target.hasClass($.datepicker.markerClassName) &&
861
+ !$target.closest("." + $.datepicker._triggerClass).length &&
862
+ $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||
863
+ ( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst != inst ) )
864
+ $.datepicker._hideDatepicker();
865
+ },
866
+
867
+ /* Adjust one of the date sub-fields. */
868
+ _adjustDate: function(id, offset, period) {
869
+ var target = $(id);
870
+ var inst = this._getInst(target[0]);
871
+ if (this._isDisabledDatepicker(target[0])) {
872
+ return;
873
+ }
874
+ this._adjustInstDate(inst, offset +
875
+ (period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning
876
+ period);
877
+ this._updateDatepicker(inst);
878
+ },
879
+
880
+ /* Action for current link. */
881
+ _gotoToday: function(id) {
882
+ var target = $(id);
883
+ var inst = this._getInst(target[0]);
884
+ if (this._get(inst, 'gotoCurrent') && inst.currentDay) {
885
+ inst.selectedDay = inst.currentDay;
886
+ inst.drawMonth = inst.selectedMonth = inst.currentMonth;
887
+ inst.drawYear = inst.selectedYear = inst.currentYear;
888
+ }
889
+ else {
890
+ var date = new Date();
891
+ inst.selectedDay = date.getDate();
892
+ inst.drawMonth = inst.selectedMonth = date.getMonth();
893
+ inst.drawYear = inst.selectedYear = date.getFullYear();
894
+ }
895
+ this._notifyChange(inst);
896
+ this._adjustDate(target);
897
+ },
898
+
899
+ /* Action for selecting a new month/year. */
900
+ _selectMonthYear: function(id, select, period) {
901
+ var target = $(id);
902
+ var inst = this._getInst(target[0]);
903
+ inst['selected' + (period == 'M' ? 'Month' : 'Year')] =
904
+ inst['draw' + (period == 'M' ? 'Month' : 'Year')] =
905
+ parseInt(select.options[select.selectedIndex].value,10);
906
+ this._notifyChange(inst);
907
+ this._adjustDate(target);
908
+ },
909
+
910
+ /* Action for selecting a day. */
911
+ _selectDay: function(id, month, year, td) {
912
+ var target = $(id);
913
+ if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {
914
+ return;
915
+ }
916
+ var inst = this._getInst(target[0]);
917
+ inst.selectedDay = inst.currentDay = $('a', td).html();
918
+ inst.selectedMonth = inst.currentMonth = month;
919
+ inst.selectedYear = inst.currentYear = year;
920
+ this._selectDate(id, this._formatDate(inst,
921
+ inst.currentDay, inst.currentMonth, inst.currentYear));
922
+ },
923
+
924
+ /* Erase the input field and hide the date picker. */
925
+ _clearDate: function(id) {
926
+ var target = $(id);
927
+ var inst = this._getInst(target[0]);
928
+ this._selectDate(target, '');
929
+ },
930
+
931
+ /* Update the input field with the selected date. */
932
+ _selectDate: function(id, dateStr) {
933
+ var target = $(id);
934
+ var inst = this._getInst(target[0]);
935
+ dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
936
+ if (inst.input)
937
+ inst.input.val(dateStr);
938
+ this._updateAlternate(inst);
939
+ var onSelect = this._get(inst, 'onSelect');
940
+ if (onSelect)
941
+ onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback
942
+ else if (inst.input)
943
+ inst.input.trigger('change'); // fire the change event
944
+ if (inst.inline)
945
+ this._updateDatepicker(inst);
946
+ else {
947
+ this._hideDatepicker();
948
+ this._lastInput = inst.input[0];
949
+ if (typeof(inst.input[0]) != 'object')
950
+ inst.input.focus(); // restore focus
951
+ this._lastInput = null;
952
+ }
953
+ },
954
+
955
+ /* Update any alternate field to synchronise with the main field. */
956
+ _updateAlternate: function(inst) {
957
+ var altField = this._get(inst, 'altField');
958
+ if (altField) { // update alternate field too
959
+ var altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat');
960
+ var date = this._getDate(inst);
961
+ var dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));
962
+ $(altField).each(function() { $(this).val(dateStr); });
963
+ }
964
+ },
965
+
966
+ /* Set as beforeShowDay function to prevent selection of weekends.
967
+ @param date Date - the date to customise
968
+ @return [boolean, string] - is this date selectable?, what is its CSS class? */
969
+ noWeekends: function(date) {
970
+ var day = date.getDay();
971
+ return [(day > 0 && day < 6), ''];
972
+ },
973
+
974
+ /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
975
+ @param date Date - the date to get the week for
976
+ @return number - the number of the week within the year that contains this date */
977
+ iso8601Week: function(date) {
978
+ var checkDate = new Date(date.getTime());
979
+ // Find Thursday of this week starting on Monday
980
+ checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
981
+ var time = checkDate.getTime();
982
+ checkDate.setMonth(0); // Compare with Jan 1
983
+ checkDate.setDate(1);
984
+ return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
985
+ },
986
+
987
+ /* Parse a string value into a date object.
988
+ See formatDate below for the possible formats.
989
+
990
+ @param format string - the expected format of the date
991
+ @param value string - the date in the above format
992
+ @param settings Object - attributes include:
993
+ shortYearCutoff number - the cutoff year for determining the century (optional)
994
+ dayNamesShort string[7] - abbreviated names of the days from Sunday (optional)
995
+ dayNames string[7] - names of the days from Sunday (optional)
996
+ monthNamesShort string[12] - abbreviated names of the months (optional)
997
+ monthNames string[12] - names of the months (optional)
998
+ @return Date - the extracted date value or null if value is blank */
999
+ parseDate: function (format, value, settings) {
1000
+ if (format == null || value == null)
1001
+ throw 'Invalid arguments';
1002
+ value = (typeof value == 'object' ? value.toString() : value + '');
1003
+ if (value == '')
1004
+ return null;
1005
+ var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff;
1006
+ shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :
1007
+ new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
1008
+ var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;
1009
+ var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;
1010
+ var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;
1011
+ var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;
1012
+ var year = -1;
1013
+ var month = -1;
1014
+ var day = -1;
1015
+ var doy = -1;
1016
+ var literal = false;
1017
+ // Check whether a format character is doubled
1018
+ var lookAhead = function(match) {
1019
+ var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
1020
+ if (matches)
1021
+ iFormat++;
1022
+ return matches;
1023
+ };
1024
+ // Extract a number from the string value
1025
+ var getNumber = function(match) {
1026
+ var isDoubled = lookAhead(match);
1027
+ var size = (match == '@' ? 14 : (match == '!' ? 20 :
1028
+ (match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2))));
1029
+ var digits = new RegExp('^\\d{1,' + size + '}');
1030
+ var num = value.substring(iValue).match(digits);
1031
+ if (!num)
1032
+ throw 'Missing number at position ' + iValue;
1033
+ iValue += num[0].length;
1034
+ return parseInt(num[0], 10);
1035
+ };
1036
+ // Extract a name from the string value and convert to an index
1037
+ var getName = function(match, shortNames, longNames) {
1038
+ var names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {
1039
+ return [ [k, v] ];
1040
+ }).sort(function (a, b) {
1041
+ return -(a[1].length - b[1].length);
1042
+ });
1043
+ var index = -1;
1044
+ $.each(names, function (i, pair) {
1045
+ var name = pair[1];
1046
+ if (value.substr(iValue, name.length).toLowerCase() == name.toLowerCase()) {
1047
+ index = pair[0];
1048
+ iValue += name.length;
1049
+ return false;
1050
+ }
1051
+ });
1052
+ if (index != -1)
1053
+ return index + 1;
1054
+ else
1055
+ throw 'Unknown name at position ' + iValue;
1056
+ };
1057
+ // Confirm that a literal character matches the string value
1058
+ var checkLiteral = function() {
1059
+ if (value.charAt(iValue) != format.charAt(iFormat))
1060
+ throw 'Unexpected literal at position ' + iValue;
1061
+ iValue++;
1062
+ };
1063
+ var iValue = 0;
1064
+ for (var iFormat = 0; iFormat < format.length; iFormat++) {
1065
+ if (literal)
1066
+ if (format.charAt(iFormat) == "'" && !lookAhead("'"))
1067
+ literal = false;
1068
+ else
1069
+ checkLiteral();
1070
+ else
1071
+ switch (format.charAt(iFormat)) {
1072
+ case 'd':
1073
+ day = getNumber('d');
1074
+ break;
1075
+ case 'D':
1076
+ getName('D', dayNamesShort, dayNames);
1077
+ break;
1078
+ case 'o':
1079
+ doy = getNumber('o');
1080
+ break;
1081
+ case 'm':
1082
+ month = getNumber('m');
1083
+ break;
1084
+ case 'M':
1085
+ month = getName('M', monthNamesShort, monthNames);
1086
+ break;
1087
+ case 'y':
1088
+ year = getNumber('y');
1089
+ break;
1090
+ case '@':
1091
+ var date = new Date(getNumber('@'));
1092
+ year = date.getFullYear();
1093
+ month = date.getMonth() + 1;
1094
+ day = date.getDate();
1095
+ break;
1096
+ case '!':
1097
+ var date = new Date((getNumber('!') - this._ticksTo1970) / 10000);
1098
+ year = date.getFullYear();
1099
+ month = date.getMonth() + 1;
1100
+ day = date.getDate();
1101
+ break;
1102
+ case "'":
1103
+ if (lookAhead("'"))
1104
+ checkLiteral();
1105
+ else
1106
+ literal = true;
1107
+ break;
1108
+ default:
1109
+ checkLiteral();
1110
+ }
1111
+ }
1112
+ if (iValue < value.length){
1113
+ throw "Extra/unparsed characters found in date: " + value.substring(iValue);
1114
+ }
1115
+ if (year == -1)
1116
+ year = new Date().getFullYear();
1117
+ else if (year < 100)
1118
+ year += new Date().getFullYear() - new Date().getFullYear() % 100 +
1119
+ (year <= shortYearCutoff ? 0 : -100);
1120
+ if (doy > -1) {
1121
+ month = 1;
1122
+ day = doy;
1123
+ do {
1124
+ var dim = this._getDaysInMonth(year, month - 1);
1125
+ if (day <= dim)
1126
+ break;
1127
+ month++;
1128
+ day -= dim;
1129
+ } while (true);
1130
+ }
1131
+ var date = this._daylightSavingAdjust(new Date(year, month - 1, day));
1132
+ if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day)
1133
+ throw 'Invalid date'; // E.g. 31/02/00
1134
+ return date;
1135
+ },
1136
+
1137
+ /* Standard date formats. */
1138
+ ATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601)
1139
+ COOKIE: 'D, dd M yy',
1140
+ ISO_8601: 'yy-mm-dd',
1141
+ RFC_822: 'D, d M y',
1142
+ RFC_850: 'DD, dd-M-y',
1143
+ RFC_1036: 'D, d M y',
1144
+ RFC_1123: 'D, d M yy',
1145
+ RFC_2822: 'D, d M yy',
1146
+ RSS: 'D, d M y', // RFC 822
1147
+ TICKS: '!',
1148
+ TIMESTAMP: '@',
1149
+ W3C: 'yy-mm-dd', // ISO 8601
1150
+
1151
+ _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +
1152
+ Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),
1153
+
1154
+ /* Format a date object into a string value.
1155
+ The format can be combinations of the following:
1156
+ d - day of month (no leading zero)
1157
+ dd - day of month (two digit)
1158
+ o - day of year (no leading zeros)
1159
+ oo - day of year (three digit)
1160
+ D - day name short
1161
+ DD - day name long
1162
+ m - month of year (no leading zero)
1163
+ mm - month of year (two digit)
1164
+ M - month name short
1165
+ MM - month name long
1166
+ y - year (two digit)
1167
+ yy - year (four digit)
1168
+ @ - Unix timestamp (ms since 01/01/1970)
1169
+ ! - Windows ticks (100ns since 01/01/0001)
1170
+ '...' - literal text
1171
+ '' - single quote
1172
+
1173
+ @param format string - the desired format of the date
1174
+ @param date Date - the date value to format
1175
+ @param settings Object - attributes include:
1176
+ dayNamesShort string[7] - abbreviated names of the days from Sunday (optional)
1177
+ dayNames string[7] - names of the days from Sunday (optional)
1178
+ monthNamesShort string[12] - abbreviated names of the months (optional)
1179
+ monthNames string[12] - names of the months (optional)
1180
+ @return string - the date in the above format */
1181
+ formatDate: function (format, date, settings) {
1182
+ if (!date)
1183
+ return '';
1184
+ var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;
1185
+ var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;
1186
+ var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;
1187
+ var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;
1188
+ // Check whether a format character is doubled
1189
+ var lookAhead = function(match) {
1190
+ var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
1191
+ if (matches)
1192
+ iFormat++;
1193
+ return matches;
1194
+ };
1195
+ // Format a number, with leading zero if necessary
1196
+ var formatNumber = function(match, value, len) {
1197
+ var num = '' + value;
1198
+ if (lookAhead(match))
1199
+ while (num.length < len)
1200
+ num = '0' + num;
1201
+ return num;
1202
+ };
1203
+ // Format a name, short or long as requested
1204
+ var formatName = function(match, value, shortNames, longNames) {
1205
+ return (lookAhead(match) ? longNames[value] : shortNames[value]);
1206
+ };
1207
+ var output = '';
1208
+ var literal = false;
1209
+ if (date)
1210
+ for (var iFormat = 0; iFormat < format.length; iFormat++) {
1211
+ if (literal)
1212
+ if (format.charAt(iFormat) == "'" && !lookAhead("'"))
1213
+ literal = false;
1214
+ else
1215
+ output += format.charAt(iFormat);
1216
+ else
1217
+ switch (format.charAt(iFormat)) {
1218
+ case 'd':
1219
+ output += formatNumber('d', date.getDate(), 2);
1220
+ break;
1221
+ case 'D':
1222
+ output += formatName('D', date.getDay(), dayNamesShort, dayNames);
1223
+ break;
1224
+ case 'o':
1225
+ output += formatNumber('o',
1226
+ Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);
1227
+ break;
1228
+ case 'm':
1229
+ output += formatNumber('m', date.getMonth() + 1, 2);
1230
+ break;
1231
+ case 'M':
1232
+ output += formatName('M', date.getMonth(), monthNamesShort, monthNames);
1233
+ break;
1234
+ case 'y':
1235
+ output += (lookAhead('y') ? date.getFullYear() :
1236
+ (date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100);
1237
+ break;
1238
+ case '@':
1239
+ output += date.getTime();
1240
+ break;
1241
+ case '!':
1242
+ output += date.getTime() * 10000 + this._ticksTo1970;
1243
+ break;
1244
+ case "'":
1245
+ if (lookAhead("'"))
1246
+ output += "'";
1247
+ else
1248
+ literal = true;
1249
+ break;
1250
+ default:
1251
+ output += format.charAt(iFormat);
1252
+ }
1253
+ }
1254
+ return output;
1255
+ },
1256
+
1257
+ /* Extract all possible characters from the date format. */
1258
+ _possibleChars: function (format) {
1259
+ var chars = '';
1260
+ var literal = false;
1261
+ // Check whether a format character is doubled
1262
+ var lookAhead = function(match) {
1263
+ var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
1264
+ if (matches)
1265
+ iFormat++;
1266
+ return matches;
1267
+ };
1268
+ for (var iFormat = 0; iFormat < format.length; iFormat++)
1269
+ if (literal)
1270
+ if (format.charAt(iFormat) == "'" && !lookAhead("'"))
1271
+ literal = false;
1272
+ else
1273
+ chars += format.charAt(iFormat);
1274
+ else
1275
+ switch (format.charAt(iFormat)) {
1276
+ case 'd': case 'm': case 'y': case '@':
1277
+ chars += '0123456789';
1278
+ break;
1279
+ case 'D': case 'M':
1280
+ return null; // Accept anything
1281
+ case "'":
1282
+ if (lookAhead("'"))
1283
+ chars += "'";
1284
+ else
1285
+ literal = true;
1286
+ break;
1287
+ default:
1288
+ chars += format.charAt(iFormat);
1289
+ }
1290
+ return chars;
1291
+ },
1292
+
1293
+ /* Get a setting value, defaulting if necessary. */
1294
+ _get: function(inst, name) {
1295
+ return inst.settings[name] !== undefined ?
1296
+ inst.settings[name] : this._defaults[name];
1297
+ },
1298
+
1299
+ /* Parse existing date and initialise date picker. */
1300
+ _setDateFromField: function(inst, noDefault) {
1301
+ if (inst.input.val() == inst.lastVal) {
1302
+ return;
1303
+ }
1304
+ var dateFormat = this._get(inst, 'dateFormat');
1305
+ var dates = inst.lastVal = inst.input ? inst.input.val() : null;
1306
+ var date, defaultDate;
1307
+ date = defaultDate = this._getDefaultDate(inst);
1308
+ var settings = this._getFormatConfig(inst);
1309
+ try {
1310
+ date = this.parseDate(dateFormat, dates, settings) || defaultDate;
1311
+ } catch (event) {
1312
+ this.log(event);
1313
+ dates = (noDefault ? '' : dates);
1314
+ }
1315
+ inst.selectedDay = date.getDate();
1316
+ inst.drawMonth = inst.selectedMonth = date.getMonth();
1317
+ inst.drawYear = inst.selectedYear = date.getFullYear();
1318
+ inst.currentDay = (dates ? date.getDate() : 0);
1319
+ inst.currentMonth = (dates ? date.getMonth() : 0);
1320
+ inst.currentYear = (dates ? date.getFullYear() : 0);
1321
+ this._adjustInstDate(inst);
1322
+ },
1323
+
1324
+ /* Retrieve the default date shown on opening. */
1325
+ _getDefaultDate: function(inst) {
1326
+ return this._restrictMinMax(inst,
1327
+ this._determineDate(inst, this._get(inst, 'defaultDate'), new Date()));
1328
+ },
1329
+
1330
+ /* A date may be specified as an exact value or a relative one. */
1331
+ _determineDate: function(inst, date, defaultDate) {
1332
+ var offsetNumeric = function(offset) {
1333
+ var date = new Date();
1334
+ date.setDate(date.getDate() + offset);
1335
+ return date;
1336
+ };
1337
+ var offsetString = function(offset) {
1338
+ try {
1339
+ return $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),
1340
+ offset, $.datepicker._getFormatConfig(inst));
1341
+ }
1342
+ catch (e) {
1343
+ // Ignore
1344
+ }
1345
+ var date = (offset.toLowerCase().match(/^c/) ?
1346
+ $.datepicker._getDate(inst) : null) || new Date();
1347
+ var year = date.getFullYear();
1348
+ var month = date.getMonth();
1349
+ var day = date.getDate();
1350
+ var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;
1351
+ var matches = pattern.exec(offset);
1352
+ while (matches) {
1353
+ switch (matches[2] || 'd') {
1354
+ case 'd' : case 'D' :
1355
+ day += parseInt(matches[1],10); break;
1356
+ case 'w' : case 'W' :
1357
+ day += parseInt(matches[1],10) * 7; break;
1358
+ case 'm' : case 'M' :
1359
+ month += parseInt(matches[1],10);
1360
+ day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
1361
+ break;
1362
+ case 'y': case 'Y' :
1363
+ year += parseInt(matches[1],10);
1364
+ day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
1365
+ break;
1366
+ }
1367
+ matches = pattern.exec(offset);
1368
+ }
1369
+ return new Date(year, month, day);
1370
+ };
1371
+ var newDate = (date == null || date === '' ? defaultDate : (typeof date == 'string' ? offsetString(date) :
1372
+ (typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));
1373
+ newDate = (newDate && newDate.toString() == 'Invalid Date' ? defaultDate : newDate);
1374
+ if (newDate) {
1375
+ newDate.setHours(0);
1376
+ newDate.setMinutes(0);
1377
+ newDate.setSeconds(0);
1378
+ newDate.setMilliseconds(0);
1379
+ }
1380
+ return this._daylightSavingAdjust(newDate);
1381
+ },
1382
+
1383
+ /* Handle switch to/from daylight saving.
1384
+ Hours may be non-zero on daylight saving cut-over:
1385
+ > 12 when midnight changeover, but then cannot generate
1386
+ midnight datetime, so jump to 1AM, otherwise reset.
1387
+ @param date (Date) the date to check
1388
+ @return (Date) the corrected date */
1389
+ _daylightSavingAdjust: function(date) {
1390
+ if (!date) return null;
1391
+ date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
1392
+ return date;
1393
+ },
1394
+
1395
+ /* Set the date(s) directly. */
1396
+ _setDate: function(inst, date, noChange) {
1397
+ var clear = !date;
1398
+ var origMonth = inst.selectedMonth;
1399
+ var origYear = inst.selectedYear;
1400
+ var newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));
1401
+ inst.selectedDay = inst.currentDay = newDate.getDate();
1402
+ inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
1403
+ inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
1404
+ if ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange)
1405
+ this._notifyChange(inst);
1406
+ this._adjustInstDate(inst);
1407
+ if (inst.input) {
1408
+ inst.input.val(clear ? '' : this._formatDate(inst));
1409
+ }
1410
+ },
1411
+
1412
+ /* Retrieve the date(s) directly. */
1413
+ _getDate: function(inst) {
1414
+ var startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null :
1415
+ this._daylightSavingAdjust(new Date(
1416
+ inst.currentYear, inst.currentMonth, inst.currentDay)));
1417
+ return startDate;
1418
+ },
1419
+
1420
+ /* Attach the onxxx handlers. These are declared statically so
1421
+ * they work with static code transformers like Caja.
1422
+ */
1423
+ _attachHandlers: function(inst) {
1424
+ var stepMonths = this._get(inst, 'stepMonths');
1425
+ var id = '#' + inst.id.replace( /\\\\/g, "\\" );
1426
+ inst.dpDiv.find('[data-handler]').map(function () {
1427
+ var handler = {
1428
+ prev: function () {
1429
+ window['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, -stepMonths, 'M');
1430
+ },
1431
+ next: function () {
1432
+ window['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, +stepMonths, 'M');
1433
+ },
1434
+ hide: function () {
1435
+ window['DP_jQuery_' + dpuuid].datepicker._hideDatepicker();
1436
+ },
1437
+ today: function () {
1438
+ window['DP_jQuery_' + dpuuid].datepicker._gotoToday(id);
1439
+ },
1440
+ selectDay: function () {
1441
+ window['DP_jQuery_' + dpuuid].datepicker._selectDay(id, +this.getAttribute('data-month'), +this.getAttribute('data-year'), this);
1442
+ return false;
1443
+ },
1444
+ selectMonth: function () {
1445
+ window['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'M');
1446
+ return false;
1447
+ },
1448
+ selectYear: function () {
1449
+ window['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'Y');
1450
+ return false;
1451
+ }
1452
+ };
1453
+ $(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);
1454
+ });
1455
+ },
1456
+
1457
+ /* Generate the HTML for the current state of the date picker. */
1458
+ _generateHTML: function(inst) {
1459
+ var today = new Date();
1460
+ today = this._daylightSavingAdjust(
1461
+ new Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time
1462
+ var isRTL = this._get(inst, 'isRTL');
1463
+ var showButtonPanel = this._get(inst, 'showButtonPanel');
1464
+ var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext');
1465
+ var navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat');
1466
+ var numMonths = this._getNumberOfMonths(inst);
1467
+ var showCurrentAtPos = this._get(inst, 'showCurrentAtPos');
1468
+ var stepMonths = this._get(inst, 'stepMonths');
1469
+ var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);
1470
+ var currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :
1471
+ new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
1472
+ var minDate = this._getMinMaxDate(inst, 'min');
1473
+ var maxDate = this._getMinMaxDate(inst, 'max');
1474
+ var drawMonth = inst.drawMonth - showCurrentAtPos;
1475
+ var drawYear = inst.drawYear;
1476
+ if (drawMonth < 0) {
1477
+ drawMonth += 12;
1478
+ drawYear--;
1479
+ }
1480
+ if (maxDate) {
1481
+ var maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
1482
+ maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));
1483
+ maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);
1484
+ while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {
1485
+ drawMonth--;
1486
+ if (drawMonth < 0) {
1487
+ drawMonth = 11;
1488
+ drawYear--;
1489
+ }
1490
+ }
1491
+ }
1492
+ inst.drawMonth = drawMonth;
1493
+ inst.drawYear = drawYear;
1494
+ var prevText = this._get(inst, 'prevText');
1495
+ prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,
1496
+ this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),
1497
+ this._getFormatConfig(inst)));
1498
+ var prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?
1499
+ '<a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click"' +
1500
+ ' title="' + prevText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>' :
1501
+ (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+ prevText +'"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>'));
1502
+ var nextText = this._get(inst, 'nextText');
1503
+ nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,
1504
+ this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),
1505
+ this._getFormatConfig(inst)));
1506
+ var next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
1507
+ '<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click"' +
1508
+ ' title="' + nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>' :
1509
+ (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+ nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>'));
1510
+ var currentText = this._get(inst, 'currentText');
1511
+ var gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today);
1512
+ currentText = (!navigationAsDateFormat ? currentText :
1513
+ this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
1514
+ var controls = (!inst.inline ? '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" data-handler="hide" data-event="click">' +
1515
+ this._get(inst, 'closeText') + '</button>' : '');
1516
+ var buttonPanel = (showButtonPanel) ? '<div class="ui-datepicker-buttonpane ui-widget-content">' + (isRTL ? controls : '') +
1517
+ (this._isInRange(inst, gotoDate) ? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click"' +
1518
+ '>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : '';
1519
+ var firstDay = parseInt(this._get(inst, 'firstDay'),10);
1520
+ firstDay = (isNaN(firstDay) ? 0 : firstDay);
1521
+ var showWeek = this._get(inst, 'showWeek');
1522
+ var dayNames = this._get(inst, 'dayNames');
1523
+ var dayNamesShort = this._get(inst, 'dayNamesShort');
1524
+ var dayNamesMin = this._get(inst, 'dayNamesMin');
1525
+ var monthNames = this._get(inst, 'monthNames');
1526
+ var monthNamesShort = this._get(inst, 'monthNamesShort');
1527
+ var beforeShowDay = this._get(inst, 'beforeShowDay');
1528
+ var showOtherMonths = this._get(inst, 'showOtherMonths');
1529
+ var selectOtherMonths = this._get(inst, 'selectOtherMonths');
1530
+ var calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week;
1531
+ var defaultDate = this._getDefaultDate(inst);
1532
+ var html = '';
1533
+ for (var row = 0; row < numMonths[0]; row++) {
1534
+ var group = '';
1535
+ this.maxRows = 4;
1536
+ for (var col = 0; col < numMonths[1]; col++) {
1537
+ var selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));
1538
+ var cornerClass = ' ui-corner-all';
1539
+ var calender = '';
1540
+ if (isMultiMonth) {
1541
+ calender += '<div class="ui-datepicker-group';
1542
+ if (numMonths[1] > 1)
1543
+ switch (col) {
1544
+ case 0: calender += ' ui-datepicker-group-first';
1545
+ cornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break;
1546
+ case numMonths[1]-1: calender += ' ui-datepicker-group-last';
1547
+ cornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break;
1548
+ default: calender += ' ui-datepicker-group-middle'; cornerClass = ''; break;
1549
+ }
1550
+ calender += '">';
1551
+ }
1552
+ calender += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '">' +
1553
+ (/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') +
1554
+ (/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') +
1555
+ this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
1556
+ row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers
1557
+ '</div><table class="ui-datepicker-calendar"><thead>' +
1558
+ '<tr>';
1559
+ var thead = (showWeek ? '<th class="ui-datepicker-week-col">' + this._get(inst, 'weekHeader') + '</th>' : '');
1560
+ for (var dow = 0; dow < 7; dow++) { // days of the week
1561
+ var day = (dow + firstDay) % 7;
1562
+ thead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end"' : '') + '>' +
1563
+ '<span title="' + dayNames[day] + '">' + dayNamesMin[day] + '</span></th>';
1564
+ }
1565
+ calender += thead + '</tr></thead><tbody>';
1566
+ var daysInMonth = this._getDaysInMonth(drawYear, drawMonth);
1567
+ if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth)
1568
+ inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);
1569
+ var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
1570
+ var curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate
1571
+ var numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)
1572
+ this.maxRows = numRows;
1573
+ var printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));
1574
+ for (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows
1575
+ calender += '<tr>';
1576
+ var tbody = (!showWeek ? '' : '<td class="ui-datepicker-week-col">' +
1577
+ this._get(inst, 'calculateWeek')(printDate) + '</td>');
1578
+ for (var dow = 0; dow < 7; dow++) { // create date picker days
1579
+ var daySettings = (beforeShowDay ?
1580
+ beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);
1581
+ var otherMonth = (printDate.getMonth() != drawMonth);
1582
+ var unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||
1583
+ (minDate && printDate < minDate) || (maxDate && printDate > maxDate);
1584
+ tbody += '<td class="' +
1585
+ ((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + // highlight weekends
1586
+ (otherMonth ? ' ui-datepicker-other-month' : '') + // highlight days from other months
1587
+ ((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || // user pressed key
1588
+ (defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ?
1589
+ // or defaultDate is current printedDate and defaultDate is selectedDate
1590
+ ' ' + this._dayOverClass : '') + // highlight selected day
1591
+ (unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled': '') + // highlight unselectable days
1592
+ (otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + // highlight custom dates
1593
+ (printDate.getTime() == currentDate.getTime() ? ' ' + this._currentClass : '') + // highlight selected day
1594
+ (printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '"' + // highlight today (if different)
1595
+ ((!otherMonth || showOtherMonths) && daySettings[2] ? ' title="' + daySettings[2] + '"' : '') + // cell title
1596
+ (unselectable ? '' : ' data-handler="selectDay" data-event="click" data-month="' + printDate.getMonth() + '" data-year="' + printDate.getFullYear() + '"') + '>' + // actions
1597
+ (otherMonth && !showOtherMonths ? '&#xa0;' : // display for other months
1598
+ (unselectable ? '<span class="ui-state-default">' + printDate.getDate() + '</span>' : '<a class="ui-state-default' +
1599
+ (printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') +
1600
+ (printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + // highlight selected day
1601
+ (otherMonth ? ' ui-priority-secondary' : '') + // distinguish dates from other months
1602
+ '" href="#">' + printDate.getDate() + '</a>')) + '</td>'; // display selectable date
1603
+ printDate.setDate(printDate.getDate() + 1);
1604
+ printDate = this._daylightSavingAdjust(printDate);
1605
+ }
1606
+ calender += tbody + '</tr>';
1607
+ }
1608
+ drawMonth++;
1609
+ if (drawMonth > 11) {
1610
+ drawMonth = 0;
1611
+ drawYear++;
1612
+ }
1613
+ calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
1614
+ ((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
1615
+ group += calender;
1616
+ }
1617
+ html += group;
1618
+ }
1619
+ html += buttonPanel + ($.browser.msie && parseInt($.browser.version,10) < 7 && !inst.inline ?
1620
+ '<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>' : '');
1621
+ inst._keyEvent = false;
1622
+ return html;
1623
+ },
1624
+
1625
+ /* Generate the month and year header. */
1626
+ _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
1627
+ secondary, monthNames, monthNamesShort) {
1628
+ var changeMonth = this._get(inst, 'changeMonth');
1629
+ var changeYear = this._get(inst, 'changeYear');
1630
+ var showMonthAfterYear = this._get(inst, 'showMonthAfterYear');
1631
+ var html = '<div class="ui-datepicker-title">';
1632
+ var monthHtml = '';
1633
+ // month selection
1634
+ if (secondary || !changeMonth)
1635
+ monthHtml += '<span class="ui-datepicker-month">' + monthNames[drawMonth] + '</span>';
1636
+ else {
1637
+ var inMinYear = (minDate && minDate.getFullYear() == drawYear);
1638
+ var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);
1639
+ monthHtml += '<select class="ui-datepicker-month" data-handler="selectMonth" data-event="change">';
1640
+ for (var month = 0; month < 12; month++) {
1641
+ if ((!inMinYear || month >= minDate.getMonth()) &&
1642
+ (!inMaxYear || month <= maxDate.getMonth()))
1643
+ monthHtml += '<option value="' + month + '"' +
1644
+ (month == drawMonth ? ' selected="selected"' : '') +
1645
+ '>' + monthNamesShort[month] + '</option>';
1646
+ }
1647
+ monthHtml += '</select>';
1648
+ }
1649
+ if (!showMonthAfterYear)
1650
+ html += monthHtml + (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '');
1651
+ // year selection
1652
+ if ( !inst.yearshtml ) {
1653
+ inst.yearshtml = '';
1654
+ if (secondary || !changeYear)
1655
+ html += '<span class="ui-datepicker-year">' + drawYear + '</span>';
1656
+ else {
1657
+ // determine range of years to display
1658
+ var years = this._get(inst, 'yearRange').split(':');
1659
+ var thisYear = new Date().getFullYear();
1660
+ var determineYear = function(value) {
1661
+ var year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) :
1662
+ (value.match(/[+-].*/) ? thisYear + parseInt(value, 10) :
1663
+ parseInt(value, 10)));
1664
+ return (isNaN(year) ? thisYear : year);
1665
+ };
1666
+ var year = determineYear(years[0]);
1667
+ var endYear = Math.max(year, determineYear(years[1] || ''));
1668
+ year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
1669
+ endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
1670
+ inst.yearshtml += '<select class="ui-datepicker-year" data-handler="selectYear" data-event="change">';
1671
+ for (; year <= endYear; year++) {
1672
+ inst.yearshtml += '<option value="' + year + '"' +
1673
+ (year == drawYear ? ' selected="selected"' : '') +
1674
+ '>' + year + '</option>';
1675
+ }
1676
+ inst.yearshtml += '</select>';
1677
+
1678
+ html += inst.yearshtml;
1679
+ inst.yearshtml = null;
1680
+ }
1681
+ }
1682
+ html += this._get(inst, 'yearSuffix');
1683
+ if (showMonthAfterYear)
1684
+ html += (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '') + monthHtml;
1685
+ html += '</div>'; // Close datepicker_header
1686
+ return html;
1687
+ },
1688
+
1689
+ /* Adjust one of the date sub-fields. */
1690
+ _adjustInstDate: function(inst, offset, period) {
1691
+ var year = inst.drawYear + (period == 'Y' ? offset : 0);
1692
+ var month = inst.drawMonth + (period == 'M' ? offset : 0);
1693
+ var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) +
1694
+ (period == 'D' ? offset : 0);
1695
+ var date = this._restrictMinMax(inst,
1696
+ this._daylightSavingAdjust(new Date(year, month, day)));
1697
+ inst.selectedDay = date.getDate();
1698
+ inst.drawMonth = inst.selectedMonth = date.getMonth();
1699
+ inst.drawYear = inst.selectedYear = date.getFullYear();
1700
+ if (period == 'M' || period == 'Y')
1701
+ this._notifyChange(inst);
1702
+ },
1703
+
1704
+ /* Ensure a date is within any min/max bounds. */
1705
+ _restrictMinMax: function(inst, date) {
1706
+ var minDate = this._getMinMaxDate(inst, 'min');
1707
+ var maxDate = this._getMinMaxDate(inst, 'max');
1708
+ var newDate = (minDate && date < minDate ? minDate : date);
1709
+ newDate = (maxDate && newDate > maxDate ? maxDate : newDate);
1710
+ return newDate;
1711
+ },
1712
+
1713
+ /* Notify change of month/year. */
1714
+ _notifyChange: function(inst) {
1715
+ var onChange = this._get(inst, 'onChangeMonthYear');
1716
+ if (onChange)
1717
+ onChange.apply((inst.input ? inst.input[0] : null),
1718
+ [inst.selectedYear, inst.selectedMonth + 1, inst]);
1719
+ },
1720
+
1721
+ /* Determine the number of months to show. */
1722
+ _getNumberOfMonths: function(inst) {
1723
+ var numMonths = this._get(inst, 'numberOfMonths');
1724
+ return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths));
1725
+ },
1726
+
1727
+ /* Determine the current maximum date - ensure no time components are set. */
1728
+ _getMinMaxDate: function(inst, minMax) {
1729
+ return this._determineDate(inst, this._get(inst, minMax + 'Date'), null);
1730
+ },
1731
+
1732
+ /* Find the number of days in a given month. */
1733
+ _getDaysInMonth: function(year, month) {
1734
+ return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();
1735
+ },
1736
+
1737
+ /* Find the day of the week of the first of a month. */
1738
+ _getFirstDayOfMonth: function(year, month) {
1739
+ return new Date(year, month, 1).getDay();
1740
+ },
1741
+
1742
+ /* Determines if we should allow a "next/prev" month display change. */
1743
+ _canAdjustMonth: function(inst, offset, curYear, curMonth) {
1744
+ var numMonths = this._getNumberOfMonths(inst);
1745
+ var date = this._daylightSavingAdjust(new Date(curYear,
1746
+ curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));
1747
+ if (offset < 0)
1748
+ date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
1749
+ return this._isInRange(inst, date);
1750
+ },
1751
+
1752
+ /* Is the given date in the accepted range? */
1753
+ _isInRange: function(inst, date) {
1754
+ var minDate = this._getMinMaxDate(inst, 'min');
1755
+ var maxDate = this._getMinMaxDate(inst, 'max');
1756
+ return ((!minDate || date.getTime() >= minDate.getTime()) &&
1757
+ (!maxDate || date.getTime() <= maxDate.getTime()));
1758
+ },
1759
+
1760
+ /* Provide the configuration settings for formatting/parsing. */
1761
+ _getFormatConfig: function(inst) {
1762
+ var shortYearCutoff = this._get(inst, 'shortYearCutoff');
1763
+ shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :
1764
+ new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
1765
+ return {shortYearCutoff: shortYearCutoff,
1766
+ dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'),
1767
+ monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')};
1768
+ },
1769
+
1770
+ /* Format the given date for display. */
1771
+ _formatDate: function(inst, day, month, year) {
1772
+ if (!day) {
1773
+ inst.currentDay = inst.selectedDay;
1774
+ inst.currentMonth = inst.selectedMonth;
1775
+ inst.currentYear = inst.selectedYear;
1776
+ }
1777
+ var date = (day ? (typeof day == 'object' ? day :
1778
+ this._daylightSavingAdjust(new Date(year, month, day))) :
1779
+ this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
1780
+ return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst));
1781
+ }
1782
+ });
1783
+
1784
+ /*
1785
+ * Bind hover events for datepicker elements.
1786
+ * Done via delegate so the binding only occurs once in the lifetime of the parent div.
1787
+ * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
1788
+ */
1789
+ function bindHover(dpDiv) {
1790
+ var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';
1791
+ return dpDiv.bind('mouseout', function(event) {
1792
+ var elem = $( event.target ).closest( selector );
1793
+ if ( !elem.length ) {
1794
+ return;
1795
+ }
1796
+ elem.removeClass( "ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover" );
1797
+ })
1798
+ .bind('mouseover', function(event) {
1799
+ var elem = $( event.target ).closest( selector );
1800
+ if ($.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0]) ||
1801
+ !elem.length ) {
1802
+ return;
1803
+ }
1804
+ elem.parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');
1805
+ elem.addClass('ui-state-hover');
1806
+ if (elem.hasClass('ui-datepicker-prev')) elem.addClass('ui-datepicker-prev-hover');
1807
+ if (elem.hasClass('ui-datepicker-next')) elem.addClass('ui-datepicker-next-hover');
1808
+ });
1809
+ }
1810
+
1811
+ /* jQuery extend now ignores nulls! */
1812
+ function extendRemove(target, props) {
1813
+ $.extend(target, props);
1814
+ for (var name in props)
1815
+ if (props[name] == null || props[name] == undefined)
1816
+ target[name] = props[name];
1817
+ return target;
1818
+ };
1819
+
1820
+ /* Determine whether an object is an array. */
1821
+ function isArray(a) {
1822
+ return (a && (($.browser.safari && typeof a == 'object' && a.length) ||
1823
+ (a.constructor && a.constructor.toString().match(/\Array\(\)/))));
1824
+ };
1825
+
1826
+ /* Invoke the datepicker functionality.
1827
+ @param options string - a command, optionally followed by additional parameters or
1828
+ Object - settings for attaching new datepicker functionality
1829
+ @return jQuery object */
1830
+ $.fn.datepicker = function(options){
1831
+
1832
+ /* Verify an empty collection wasn't passed - Fixes #6976 */
1833
+ if ( !this.length ) {
1834
+ return this;
1835
+ }
1836
+
1837
+ /* Initialise the date picker. */
1838
+ if (!$.datepicker.initialized) {
1839
+ $(document).mousedown($.datepicker._checkExternalClick).
1840
+ find('body').append($.datepicker.dpDiv);
1841
+ $.datepicker.initialized = true;
1842
+ }
1843
+
1844
+ var otherArgs = Array.prototype.slice.call(arguments, 1);
1845
+ if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget'))
1846
+ return $.datepicker['_' + options + 'Datepicker'].
1847
+ apply($.datepicker, [this[0]].concat(otherArgs));
1848
+ if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string')
1849
+ return $.datepicker['_' + options + 'Datepicker'].
1850
+ apply($.datepicker, [this[0]].concat(otherArgs));
1851
+ return this.each(function() {
1852
+ typeof options == 'string' ?
1853
+ $.datepicker['_' + options + 'Datepicker'].
1854
+ apply($.datepicker, [this].concat(otherArgs)) :
1855
+ $.datepicker._attachDatepicker(this, options);
1856
+ });
1857
+ };
1858
+
1859
+ $.datepicker = new Datepicker(); // singleton instance
1860
+ $.datepicker.initialized = false;
1861
+ $.datepicker.uuid = new Date().getTime();
1862
+ $.datepicker.version = "1.8.24";
1863
+
1864
+ // Workaround for #4055
1865
+ // Add another global to avoid noConflict issues with inline event handlers
1866
+ window['DP_jQuery_' + dpuuid] = $;
1867
+
1868
+ })(jQuery);
1869
+
1870
+
1871
+ return module.exports;
1872
+ }).call(this);
1873
+ // node_modules/@atlassian/aui/src/js/aui/date-picker.js
1874
+ (typeof window === 'undefined' ? global : window).__b9c4058e54a8cdac47eaf6f5b237bbb4 = (function () {
1875
+ var module = {
1876
+ exports: {}
1877
+ };
1878
+ var exports = module.exports;
1879
+
1880
+ 'use strict';
1881
+
1882
+ Object.defineProperty(exports, "__esModule", {
1883
+ value: true
1884
+ });
1885
+
1886
+ var _jquery = __307d3e18fd611f85395c67cddeb1fe24;
1887
+
1888
+ var _jquery2 = _interopRequireDefault(_jquery);
1889
+
1890
+ __601fc554d291439a8ef8bcac7fc51f19;
1891
+
1892
+ var _log = __cf890abdf040e0993fb71f2f839bc972;
1893
+
1894
+ var logger = _interopRequireWildcard(_log);
1895
+
1896
+ var _globalize = __4d02fe17b8e885a34493e34af3d145dd;
1897
+
1898
+ var _globalize2 = _interopRequireDefault(_globalize);
1899
+
1900
+ var _inlineDialog = __8a05e920b7d8181524465449ac7de6d2;
1901
+
1902
+ var _inlineDialog2 = _interopRequireDefault(_inlineDialog);
1903
+
1904
+ var _keyCode = __509557c937caa8763def39004fcf3193;
1905
+
1906
+ var _keyCode2 = _interopRequireDefault(_keyCode);
1907
+
1908
+ var _i18n = __d74c881c8f23921c15438d0f30c99f80;
1909
+
1910
+ var _i18n2 = _interopRequireDefault(_i18n);
1911
+
1912
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
1913
+
1914
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1915
+
1916
+ var datePickerCounter = 0;
1917
+
1918
+ function DatePicker(field, options) {
1919
+ var datePicker;
1920
+ var initPolyfill;
1921
+ var $field;
1922
+ var datePickerUUID;
1923
+ var parentPopup;
1924
+
1925
+ datePicker = {};
1926
+ datePickerUUID = datePickerCounter++;
1927
+
1928
+ // ---------------------------------------------------------------------
1929
+ // fix up arguments ----------------------------------------------------
1930
+ // ---------------------------------------------------------------------
1931
+
1932
+ $field = (0, _jquery2.default)(field);
1933
+ $field.attr('data-aui-dp-uuid', datePickerUUID);
1934
+ options = _jquery2.default.extend(undefined, DatePicker.prototype.defaultOptions, options);
1935
+
1936
+ // ---------------------------------------------------------------------
1937
+ // expose arguments with getters ---------------------------------------
1938
+ // ---------------------------------------------------------------------
1939
+
1940
+ datePicker.getField = function () {
1941
+ return $field;
1942
+ };
1943
+
1944
+ datePicker.getOptions = function () {
1945
+ return options;
1946
+ };
1947
+
1948
+ // ---------------------------------------------------------------------
1949
+ // exposed methods -----------------------------------------------------
1950
+ // ---------------------------------------------------------------------
1951
+
1952
+ initPolyfill = function initPolyfill() {
1953
+
1954
+ var calendar;
1955
+ var handleDatePickerFocus;
1956
+ var handleFieldBlur;
1957
+ var handleFieldFocus;
1958
+ var handleFieldUpdate;
1959
+ var initCalendar;
1960
+ var isSuppressingShow;
1961
+ var isTrackingDatePickerFocus;
1962
+ var popup;
1963
+ var popupContents;
1964
+
1965
+ // -----------------------------------------------------------------
1966
+ // expose methods for controlling the popup ------------------------
1967
+ // -----------------------------------------------------------------
1968
+
1969
+ datePicker.hide = function () {
1970
+ popup.hide();
1971
+ };
1972
+
1973
+ datePicker.show = function () {
1974
+ popup.show();
1975
+ };
1976
+
1977
+ datePicker.setDate = function (value) {
1978
+ if (typeof calendar !== 'undefined') {
1979
+ calendar.datepicker('setDate', value);
1980
+ }
1981
+ };
1982
+
1983
+ datePicker.getDate = function () {
1984
+ if (typeof calendar !== 'undefined') {
1985
+ return calendar.datepicker('getDate');
1986
+ }
1987
+ };
1988
+
1989
+ // -----------------------------------------------------------------
1990
+ // initialise the calendar -----------------------------------------
1991
+ // -----------------------------------------------------------------
1992
+
1993
+ initCalendar = function initCalendar(i18nConfig) {
1994
+
1995
+ popupContents.off();
1996
+ if (options.hint) {
1997
+ var $hint = (0, _jquery2.default)('<div/>').addClass('aui-datepicker-hint');
1998
+ $hint.append('<span/>').text(options.hint);
1999
+ popupContents.append($hint);
2000
+ }
2001
+ calendar = (0, _jquery2.default)('<div/>');
2002
+ calendar.attr('data-aui-dp-popup-uuid', datePickerUUID);
2003
+ popupContents.append(calendar);
2004
+
2005
+ var config = {
2006
+ 'dateFormat': options.dateFormat,
2007
+ 'defaultDate': $field.val(),
2008
+ 'maxDate': $field.attr('max'),
2009
+ 'minDate': $field.attr('min'),
2010
+ 'nextText': '>',
2011
+ 'onSelect': function onSelect(dateText) {
2012
+ $field.val(dateText);
2013
+ $field.change();
2014
+ datePicker.hide();
2015
+ isSuppressingShow = true;
2016
+ $field.focus();
2017
+ options.onSelect && options.onSelect.call(this, dateText);
2018
+ },
2019
+ onChangeMonthYear: function onChangeMonthYear() {
2020
+ // defer rehresh call until current stack has cleared (after month has rendered)
2021
+ setTimeout(popup.refresh, 0);
2022
+ },
2023
+ 'prevText': '<'
2024
+ };
2025
+
2026
+ _jquery2.default.extend(config, i18nConfig);
2027
+
2028
+ if (options.firstDay > -1) {
2029
+ config.firstDay = options.firstDay;
2030
+ }
2031
+
2032
+ if (typeof $field.attr('step') !== 'undefined') {
2033
+ logger.log('WARNING: The date picker polyfill currently does not support the step attribute!');
2034
+ }
2035
+
2036
+ calendar.datepicker(config);
2037
+
2038
+ // bind additional field processing events
2039
+ (0, _jquery2.default)('body').on('keydown', handleDatePickerFocus);
2040
+ $field.on('focusout keydown', handleFieldBlur);
2041
+ $field.on('propertychange keyup input paste', handleFieldUpdate);
2042
+ };
2043
+
2044
+ // -----------------------------------------------------------------
2045
+ // event handler wrappers ------------------------------------------
2046
+ // -----------------------------------------------------------------
2047
+
2048
+ handleDatePickerFocus = function handleDatePickerFocus(event) {
2049
+ var $eventTarget = (0, _jquery2.default)(event.target);
2050
+ var isTargetInput = $eventTarget.closest(popupContents).length || $eventTarget.is($field);
2051
+ var isTargetPopup = $eventTarget.closest('.ui-datepicker-header').length;
2052
+
2053
+ // Hide if we're clicking anywhere else but the input or popup OR if esc is pressed.
2054
+ if (!isTargetInput && !isTargetPopup || event.keyCode === _keyCode2.default.ESCAPE) {
2055
+ datePicker.hide();
2056
+ return;
2057
+ }
2058
+
2059
+ if ($eventTarget[0] !== $field[0]) {
2060
+ event.preventDefault();
2061
+ }
2062
+ };
2063
+
2064
+ handleFieldBlur = function handleFieldBlur() {
2065
+ // Trigger blur if event is keydown and esc OR is focusout.
2066
+ if (!isTrackingDatePickerFocus) {
2067
+ (0, _jquery2.default)('body').on('focus blur click mousedown', '*', handleDatePickerFocus);
2068
+ isTrackingDatePickerFocus = true;
2069
+ }
2070
+ };
2071
+
2072
+ handleFieldFocus = function handleFieldFocus() {
2073
+ if (!isSuppressingShow) {
2074
+ datePicker.show();
2075
+ } else {
2076
+ isSuppressingShow = false;
2077
+ }
2078
+ };
2079
+
2080
+ handleFieldUpdate = function handleFieldUpdate() {
2081
+ var val = (0, _jquery2.default)(this).val();
2082
+ // IE10/11 fire the 'input' event when internally showing and hiding
2083
+ // the placeholder of an input. This was cancelling the inital click
2084
+ // event and preventing the selection of the first date. The val check here
2085
+ // is a workaround to assure we have legitimate user input that should update
2086
+ // the calendar
2087
+ if (val) {
2088
+ calendar.datepicker('setDate', $field.val());
2089
+ calendar.datepicker('option', {
2090
+ 'maxDate': $field.attr('max'),
2091
+ 'minDate': $field.attr('min')
2092
+ });
2093
+ }
2094
+ };
2095
+
2096
+ // -----------------------------------------------------------------
2097
+ // undo (almost) everything ----------------------------------------
2098
+ // -----------------------------------------------------------------
2099
+
2100
+ datePicker.destroyPolyfill = function () {
2101
+
2102
+ // goodbye, cruel world!
2103
+ datePicker.hide();
2104
+
2105
+ $field.attr('placeholder', null);
2106
+
2107
+ $field.off('propertychange keyup input paste', handleFieldUpdate);
2108
+ $field.off('focus click', handleFieldFocus);
2109
+ $field.off('focusout keydown', handleFieldBlur);
2110
+ (0, _jquery2.default)('body').off('keydown', handleFieldBlur);
2111
+
2112
+ if (DatePicker.prototype.browserSupportsDateField) {
2113
+ $field[0].type = 'date';
2114
+ }
2115
+
2116
+ if (typeof calendar !== 'undefined') {
2117
+ calendar.datepicker('destroy');
2118
+ }
2119
+
2120
+ // TODO: figure out a way to tear down the popup (if necessary)
2121
+
2122
+ delete datePicker.destroyPolyfill;
2123
+
2124
+ delete datePicker.show;
2125
+ delete datePicker.hide;
2126
+ };
2127
+
2128
+ // -----------------------------------------------------------------
2129
+ // polyfill bootstrap ----------------------------------------------
2130
+ // -----------------------------------------------------------------
2131
+
2132
+ isSuppressingShow = false; // used to stop the popover from showing when focus is restored to the field after a date has been selected
2133
+ isTrackingDatePickerFocus = false; // used to prevent multiple bindings of handleDatePickerFocus within handleFieldBlur
2134
+
2135
+ if (!(options.languageCode in DatePicker.prototype.localisations)) {
2136
+ options.languageCode = '';
2137
+ }
2138
+ var i18nConfig = DatePicker.prototype.localisations;
2139
+
2140
+ var containerClass = '';
2141
+ var width = 240;
2142
+
2143
+ if (i18nConfig.size === 'large') {
2144
+ width = 325;
2145
+ containerClass = 'aui-datepicker-dialog-large';
2146
+ }
2147
+ var dialogOptions = {
2148
+ 'hideCallback': function hideCallback() {
2149
+ (0, _jquery2.default)('body').off('focus blur click mousedown', '*', handleDatePickerFocus);
2150
+ isTrackingDatePickerFocus = false;
2151
+ if (parentPopup && parentPopup._datePickerPopup) {
2152
+ delete parentPopup._datePickerPopup;
2153
+ }
2154
+ },
2155
+ 'hideDelay': null,
2156
+ 'noBind': true,
2157
+ 'persistent': true,
2158
+ 'closeOthers': false,
2159
+ 'width': width
2160
+ };
2161
+
2162
+ if (options.position) {
2163
+ dialogOptions.calculatePositions = function (popup, targetPosition) {
2164
+ // create a jQuery object from the internal
2165
+ var vanilla = (0, _jquery2.default)(popup[0]);
2166
+ return options.position.call(this, vanilla, targetPosition);
2167
+ };
2168
+ }
2169
+
2170
+ popup = (0, _inlineDialog2.default)($field, undefined, function (contents, trigger, showPopup) {
2171
+ if (typeof calendar === 'undefined') {
2172
+ popupContents = contents;
2173
+ initCalendar(i18nConfig);
2174
+ }
2175
+ parentPopup = (0, _jquery2.default)(trigger).closest('.aui-inline-dialog').get(0);
2176
+ if (parentPopup) {
2177
+ parentPopup._datePickerPopup = popup; // AUI-2696 - hackish coupling to control inline-dialog close behaviour.
2178
+ }
2179
+
2180
+ showPopup();
2181
+ }, dialogOptions);
2182
+
2183
+ popup.addClass('aui-datepicker-dialog');
2184
+ popup.addClass(containerClass);
2185
+
2186
+ // bind what we need to start off with
2187
+ $field.on('focus click', handleFieldFocus); // the click is for fucking opera... Y U NO FIRE FOCUS EVENTS PROPERLY???
2188
+
2189
+ // give users a hint that this is a date field; note that placeholder isn't technically a valid attribute
2190
+ // according to the spec...
2191
+ $field.attr('placeholder', options.dateFormat);
2192
+
2193
+ // override the browser's default date field implementation (if applicable)
2194
+ // since IE doesn't support date input fields, we should be fine...
2195
+ if (options.overrideBrowserDefault && DatePicker.prototype.browserSupportsDateField) {
2196
+ $field[0].type = 'text';
2197
+
2198
+ //workaround for this issue in Edge: https://connect.microsoft.com/IE/feedback/details/1603512/changing-an-input-type-to-text-does-not-set-the-value
2199
+ var value = $field[0].getAttribute('value'); //can't use jquery to get the attribute because it doesn't work in Edge
2200
+ if (value) {
2201
+ $field[0].value = value;
2202
+ }
2203
+ }
2204
+ };
2205
+
2206
+ datePicker.reset = function () {
2207
+
2208
+ if (typeof datePicker.destroyPolyfill === 'function') {
2209
+ datePicker.destroyPolyfill();
2210
+ }
2211
+
2212
+ if (!DatePicker.prototype.browserSupportsDateField || options.overrideBrowserDefault) {
2213
+ initPolyfill();
2214
+ }
2215
+ };
2216
+
2217
+ // ---------------------------------------------------------------------
2218
+ // bootstrap -----------------------------------------------------------
2219
+ // ---------------------------------------------------------------------
2220
+
2221
+ datePicker.reset();
2222
+
2223
+ return datePicker;
2224
+ };
2225
+
2226
+ // -------------------------------------------------------------------------
2227
+ // things that should be common --------------------------------------------
2228
+ // -------------------------------------------------------------------------
2229
+
2230
+ DatePicker.prototype.browserSupportsDateField = (0, _jquery2.default)('<input type="date" />')[0].type === 'date';
2231
+
2232
+ DatePicker.prototype.defaultOptions = {
2233
+ overrideBrowserDefault: false,
2234
+ firstDay: -1,
2235
+ languageCode: (0, _jquery2.default)('html').attr('lang') || 'en-AU',
2236
+ dateFormat: _jquery2.default.datepicker.W3C // same as $.datepicker.ISO_8601
2237
+ };
2238
+
2239
+ // adapted from the jQuery UI Datepicker widget (v1.8.16), with the following changes:
2240
+ // - dayNamesShort -> dayNamesMin
2241
+ // - unnecessary attributes omitted
2242
+ /*
2243
+ CODE to extract codes out:
2244
+
2245
+ var langCode, langs, out;
2246
+ langs = jQuery.datepicker.regional;
2247
+ out = {};
2248
+
2249
+ for (langCode in langs) {
2250
+ if (langs.hasOwnProperty(langCode)) {
2251
+ out[langCode] = {
2252
+ 'dayNames': langs[langCode].dayNames,
2253
+ 'dayNamesMin': langs[langCode].dayNamesShort, // this is deliberate
2254
+ 'firstDay': langs[langCode].firstDay,
2255
+ 'isRTL': langs[langCode].isRTL,
2256
+ 'monthNames': langs[langCode].monthNames,
2257
+ 'showMonthAfterYear': langs[langCode].showMonthAfterYear,
2258
+ 'yearSuffix': langs[langCode].yearSuffix
2259
+ };
2260
+ }
2261
+ }
2262
+
2263
+ */
2264
+
2265
+ DatePicker.prototype.localisations = {
2266
+ "dayNames": [_i18n2.default.getText('ajs.datepicker.localisations.day-names.sunday'), _i18n2.default.getText('ajs.datepicker.localisations.day-names.monday'), _i18n2.default.getText('ajs.datepicker.localisations.day-names.tuesday'), _i18n2.default.getText('ajs.datepicker.localisations.day-names.wednesday'), _i18n2.default.getText('ajs.datepicker.localisations.day-names.thursday'), _i18n2.default.getText('ajs.datepicker.localisations.day-names.friday'), _i18n2.default.getText('ajs.datepicker.localisations.day-names.saturday')],
2267
+ "dayNamesMin": [_i18n2.default.getText('ajs.datepicker.localisations.day-names-min.sunday'), _i18n2.default.getText('ajs.datepicker.localisations.day-names-min.monday'), _i18n2.default.getText('ajs.datepicker.localisations.day-names-min.tuesday'), _i18n2.default.getText('ajs.datepicker.localisations.day-names-min.wednesday'), _i18n2.default.getText('ajs.datepicker.localisations.day-names-min.thursday'), _i18n2.default.getText('ajs.datepicker.localisations.day-names-min.friday'), _i18n2.default.getText('ajs.datepicker.localisations.day-names-min.saturday')],
2268
+ "firstDay": _i18n2.default.getText('ajs.datepicker.localisations.first-day'),
2269
+ "isRTL": _i18n2.default.getText('ajs.datepicker.localisations.is-RTL') === "true" ? true : false,
2270
+ "monthNames": [_i18n2.default.getText('ajs.datepicker.localisations.month-names.january'), _i18n2.default.getText('ajs.datepicker.localisations.month-names.february'), _i18n2.default.getText('ajs.datepicker.localisations.month-names.march'), _i18n2.default.getText('ajs.datepicker.localisations.month-names.april'), _i18n2.default.getText('ajs.datepicker.localisations.month-names.may'), _i18n2.default.getText('ajs.datepicker.localisations.month-names.june'), _i18n2.default.getText('ajs.datepicker.localisations.month-names.july'), _i18n2.default.getText('ajs.datepicker.localisations.month-names.august'), _i18n2.default.getText('ajs.datepicker.localisations.month-names.september'), _i18n2.default.getText('ajs.datepicker.localisations.month-names.october'), _i18n2.default.getText('ajs.datepicker.localisations.month-names.november'), _i18n2.default.getText('ajs.datepicker.localisations.month-names.december')],
2271
+ "showMonthAfterYear": _i18n2.default.getText('ajs.datepicker.localisations.show-month-after-year') === "true" ? true : false,
2272
+ "yearSuffix": _i18n2.default.getText('ajs.datepicker.localisations.year-suffix')
2273
+ };
2274
+
2275
+ // -------------------------------------------------------------------------
2276
+ // finally, integrate with jQuery for convenience --------------------------
2277
+ // -------------------------------------------------------------------------
2278
+
2279
+ _jquery2.default.fn.datePicker = function (options) {
2280
+ return new DatePicker(this, options);
2281
+ };
2282
+
2283
+ (0, _globalize2.default)('DatePicker', DatePicker);
2284
+
2285
+ exports.default = DatePicker;
2286
+ module.exports = exports['default'];
2287
+
2288
+ return module.exports;
2289
+ }).call(this);
2290
+ // node_modules/@atlassian/aui/src/js/aui-datepicker.js
2291
+ (typeof window === 'undefined' ? global : window).__5a41298dbca41a4762e53a22d5617652 = (function () {
2292
+ var module = {
2293
+ exports: {}
2294
+ };
2295
+ var exports = module.exports;
2296
+
2297
+ 'use strict';
2298
+
2299
+ Object.defineProperty(exports, "__esModule", {
2300
+ value: true
2301
+ });
2302
+
2303
+ __b9c4058e54a8cdac47eaf6f5b237bbb4;
2304
+
2305
+ exports.default = window.AJS;
2306
+ module.exports = exports['default'];
2307
+
2308
+ return module.exports;
2309
+ }).call(this);
2310
+ // src/js/aui-datepicker.js
2311
+ (typeof window === 'undefined' ? global : window).__16673278d117bf693c050ccc87fa8527 = (function () {
2312
+ var module = {
2313
+ exports: {}
2314
+ };
2315
+ var exports = module.exports;
2316
+
2317
+ 'use strict';
2318
+
2319
+ Object.defineProperty(exports, "__esModule", {
2320
+ value: true
2321
+ });
2322
+
2323
+ var _auiDatepicker = __5a41298dbca41a4762e53a22d5617652;
2324
+
2325
+ var _auiDatepicker2 = _interopRequireDefault(_auiDatepicker);
2326
+
2327
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2328
+
2329
+ exports.default = _auiDatepicker2.default;
2330
+ module.exports = exports['default'];
2331
+
2332
+ return module.exports;
2333
+ }).call(this);