fhirsmith 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/FHIRsmith.png +0 -0
  3. package/README.md +277 -0
  4. package/config-template.json +144 -0
  5. package/library/folder-setup.js +58 -0
  6. package/library/html-server.js +166 -0
  7. package/library/html.js +835 -0
  8. package/library/i18nsupport.js +259 -0
  9. package/library/languages.js +779 -0
  10. package/library/logger-telnet.js +205 -0
  11. package/library/logger.js +279 -0
  12. package/library/package-manager.js +876 -0
  13. package/library/utilities.js +196 -0
  14. package/library/version-utilities.js +1056 -0
  15. package/npmprojector/config-example.json +13 -0
  16. package/npmprojector/indexer.js +394 -0
  17. package/npmprojector/npmprojector.js +395 -0
  18. package/npmprojector/readme.md +174 -0
  19. package/npmprojector/watcher.js +335 -0
  20. package/package.json +119 -0
  21. package/packages/package-crawler.js +846 -0
  22. package/packages/packages-template.html +126 -0
  23. package/packages/packages.js +2838 -0
  24. package/passwords.ini +2 -0
  25. package/publisher/publisher-template.html +208 -0
  26. package/publisher/publisher.js +2167 -0
  27. package/publisher/task-draft.js +458 -0
  28. package/registry/api.js +735 -0
  29. package/registry/crawler.js +637 -0
  30. package/registry/model.js +513 -0
  31. package/registry/readme.md +243 -0
  32. package/registry/registry-data.json +121015 -0
  33. package/registry/registry-template.html +126 -0
  34. package/registry/registry.js +1395 -0
  35. package/registry/test-runner.js +237 -0
  36. package/root-template.html +124 -0
  37. package/server.js +524 -0
  38. package/shl/private-key.pem +5 -0
  39. package/shl/public-key.pem +18 -0
  40. package/shl/shl.js +1125 -0
  41. package/shl/vhl.js +69 -0
  42. package/static/FHIRsmith128.png +0 -0
  43. package/static/FHIRsmith16.png +0 -0
  44. package/static/FHIRsmith32.png +0 -0
  45. package/static/FHIRsmith64.png +0 -0
  46. package/static/assets/css/bootstrap-fhir.css +5302 -0
  47. package/static/assets/css/bootstrap-glyphicons.css +2 -0
  48. package/static/assets/css/bootstrap.css +4097 -0
  49. package/static/assets/css/jquery-ui.css +523 -0
  50. package/static/assets/css/jquery-ui.structure.css +863 -0
  51. package/static/assets/css/jquery-ui.structure.min.css +5 -0
  52. package/static/assets/css/jquery-ui.theme.css +439 -0
  53. package/static/assets/css/jquery-ui.theme.min.css +5 -0
  54. package/static/assets/css/jquery.ui.all.css +7 -0
  55. package/static/assets/css/modules.css +18 -0
  56. package/static/assets/css/project.css +367 -0
  57. package/static/assets/css/pygments-manni.css +66 -0
  58. package/static/assets/css/tags.css +74 -0
  59. package/static/assets/css/xml.css +2 -0
  60. package/static/assets/fonts/glyphiconshalflings-regular.eot +0 -0
  61. package/static/assets/fonts/glyphiconshalflings-regular.otf +0 -0
  62. package/static/assets/fonts/glyphiconshalflings-regular.svg +175 -0
  63. package/static/assets/fonts/glyphiconshalflings-regular.ttf +0 -0
  64. package/static/assets/fonts/glyphiconshalflings-regular.woff +0 -0
  65. package/static/assets/ico/apple-touch-icon-114-precomposed.png +0 -0
  66. package/static/assets/ico/apple-touch-icon-144-precomposed.png +0 -0
  67. package/static/assets/ico/apple-touch-icon-57-precomposed.png +0 -0
  68. package/static/assets/ico/apple-touch-icon-72-precomposed.png +0 -0
  69. package/static/assets/ico/favicon.ico +0 -0
  70. package/static/assets/ico/favicon.png +0 -0
  71. package/static/assets/images/fhir-logo-www.png +0 -0
  72. package/static/assets/images/fhir-logo.png +0 -0
  73. package/static/assets/images/hl7-logo.png +0 -0
  74. package/static/assets/images/logo_ansinew.jpg +0 -0
  75. package/static/assets/images/search.png +0 -0
  76. package/static/assets/images/stripe.png +0 -0
  77. package/static/assets/images/target.png +0 -0
  78. package/static/assets/images/tx-registry-root.gif +0 -0
  79. package/static/assets/images/tx-registry.png +0 -0
  80. package/static/assets/images/tx-server.png +0 -0
  81. package/static/assets/images/tx-version.png +0 -0
  82. package/static/assets/js/bootstrap.min.js +6 -0
  83. package/static/assets/js/fhir-gw.js +259 -0
  84. package/static/assets/js/fhir.js +2 -0
  85. package/static/assets/js/html5shiv.js +8 -0
  86. package/static/assets/js/jcookie.js +96 -0
  87. package/static/assets/js/jquery-ui.min.js +6 -0
  88. package/static/assets/js/jquery.js +10716 -0
  89. package/static/assets/js/jquery.min.js +2 -0
  90. package/static/assets/js/jquery.ui.core.js +314 -0
  91. package/static/assets/js/jquery.ui.draggable.js +825 -0
  92. package/static/assets/js/jquery.ui.mouse.js +162 -0
  93. package/static/assets/js/jquery.ui.resizable.js +842 -0
  94. package/static/assets/js/jquery.ui.widget.js +268 -0
  95. package/static/assets/js/json2.js +487 -0
  96. package/static/assets/js/jtip.js +97 -0
  97. package/static/assets/js/respond.min.js +6 -0
  98. package/static/assets/js/statuspage.js +70 -0
  99. package/static/assets/js/xml.js +2 -0
  100. package/static/dist/js/bootstrap.js +1964 -0
  101. package/static/favicon.png +0 -0
  102. package/static/fhir.css +626 -0
  103. package/static/icon-fhir-16.png +0 -0
  104. package/static/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  105. package/static/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  106. package/static/images/ui-bg_flat_10_000000_40x100.png +0 -0
  107. package/static/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  108. package/static/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  109. package/static/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  110. package/static/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  111. package/static/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  112. package/static/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  113. package/static/images/ui-icons_222222_256x240.png +0 -0
  114. package/static/images/ui-icons_228ef1_256x240.png +0 -0
  115. package/static/images/ui-icons_ef8c08_256x240.png +0 -0
  116. package/static/images/ui-icons_ffd27a_256x240.png +0 -0
  117. package/static/images/ui-icons_ffffff_256x240.png +0 -0
  118. package/static/js/jquery.effects.blind.js +49 -0
  119. package/static/js/jquery.effects.bounce.js +78 -0
  120. package/static/js/jquery.effects.clip.js +54 -0
  121. package/static/js/jquery.effects.core.js +763 -0
  122. package/static/js/jquery.effects.drop.js +50 -0
  123. package/static/js/jquery.effects.explode.js +79 -0
  124. package/static/js/jquery.effects.fade.js +32 -0
  125. package/static/js/jquery.effects.fold.js +56 -0
  126. package/static/js/jquery.effects.highlight.js +50 -0
  127. package/static/js/jquery.effects.pulsate.js +51 -0
  128. package/static/js/jquery.effects.scale.js +178 -0
  129. package/static/js/jquery.effects.shake.js +57 -0
  130. package/static/js/jquery.effects.slide.js +50 -0
  131. package/static/js/jquery.effects.transfer.js +45 -0
  132. package/static/js/jquery.ui.accordion.js +611 -0
  133. package/static/js/jquery.ui.autocomplete.js +612 -0
  134. package/static/js/jquery.ui.button.js +416 -0
  135. package/static/js/jquery.ui.datepicker.js +1823 -0
  136. package/static/js/jquery.ui.dialog.js +878 -0
  137. package/static/js/jquery.ui.droppable.js +296 -0
  138. package/static/js/jquery.ui.position.js +252 -0
  139. package/static/js/jquery.ui.progressbar.js +109 -0
  140. package/static/js/jquery.ui.selectable.js +266 -0
  141. package/static/js/jquery.ui.slider.js +666 -0
  142. package/static/js/jquery.ui.sortable.js +1077 -0
  143. package/static/js/jquery.ui.tabs.js +758 -0
  144. package/stats.js +80 -0
  145. package/test-cache/vsac/vsac-valuesets.db +0 -0
  146. package/token/nginx_passport_setup.md +383 -0
  147. package/token/security_guide.md +294 -0
  148. package/token/token-template.html +330 -0
  149. package/token/token.js +1300 -0
  150. package/translations/Messages.properties +1510 -0
  151. package/translations/Messages_ar.properties +1399 -0
  152. package/translations/Messages_de.properties +836 -0
  153. package/translations/Messages_es.properties +737 -0
  154. package/translations/Messages_fr.properties +1 -0
  155. package/translations/Messages_ja.properties +893 -0
  156. package/translations/Messages_nl.properties +1357 -0
  157. package/translations/Messages_pt.properties +1302 -0
  158. package/translations/Messages_ru.properties +1 -0
  159. package/translations/Messages_uz.properties +1 -0
  160. package/translations/Messages_zh.properties +1 -0
  161. package/translations/rendering-phrases.properties +1128 -0
  162. package/translations/rendering-phrases_ar.properties +1091 -0
  163. package/translations/rendering-phrases_de.properties +6 -0
  164. package/translations/rendering-phrases_es.properties +6 -0
  165. package/translations/rendering-phrases_fr.properties +624 -0
  166. package/translations/rendering-phrases_ja.properties +21 -0
  167. package/translations/rendering-phrases_nl.properties +970 -0
  168. package/translations/rendering-phrases_pt.properties +1020 -0
  169. package/translations/rendering-phrases_ru.properties +1094 -0
  170. package/translations/rendering-phrases_uz.properties +1 -0
  171. package/translations/rendering-phrases_zh.properties +1 -0
  172. package/tx/README.md +418 -0
  173. package/tx/cm/cm-api.js +110 -0
  174. package/tx/cm/cm-database.js +735 -0
  175. package/tx/cm/cm-package.js +325 -0
  176. package/tx/cs/cs-api.js +789 -0
  177. package/tx/cs/cs-areacode.js +615 -0
  178. package/tx/cs/cs-country.js +1110 -0
  179. package/tx/cs/cs-cpt.js +785 -0
  180. package/tx/cs/cs-cs.js +1579 -0
  181. package/tx/cs/cs-currency.js +539 -0
  182. package/tx/cs/cs-db.js +1321 -0
  183. package/tx/cs/cs-hgvs.js +329 -0
  184. package/tx/cs/cs-lang.js +465 -0
  185. package/tx/cs/cs-loinc.js +1485 -0
  186. package/tx/cs/cs-mimetypes.js +238 -0
  187. package/tx/cs/cs-ndc.js +704 -0
  188. package/tx/cs/cs-omop.js +1025 -0
  189. package/tx/cs/cs-provider-api.js +43 -0
  190. package/tx/cs/cs-provider-list.js +37 -0
  191. package/tx/cs/cs-rxnorm.js +808 -0
  192. package/tx/cs/cs-snomed.js +1102 -0
  193. package/tx/cs/cs-ucum.js +514 -0
  194. package/tx/cs/cs-unii.js +271 -0
  195. package/tx/cs/cs-uri.js +218 -0
  196. package/tx/cs/cs-usstates.js +305 -0
  197. package/tx/dev.fhir.org.yml +14 -0
  198. package/tx/fixtures/test-cases-setup.json +18 -0
  199. package/tx/fixtures/test-cases.yml +16 -0
  200. package/tx/html/codesystem-operations.liquid +25 -0
  201. package/tx/html/home-metrics.liquid +247 -0
  202. package/tx/html/operations-form.liquid +148 -0
  203. package/tx/html/search-form.liquid +62 -0
  204. package/tx/html/tx-template.html +133 -0
  205. package/tx/html/valueset-operations.liquid +54 -0
  206. package/tx/importers/atc-to-fhir.js +316 -0
  207. package/tx/importers/import-loinc.module.js +1536 -0
  208. package/tx/importers/import-ndc.module.js +1088 -0
  209. package/tx/importers/import-rxnorm.module.js +898 -0
  210. package/tx/importers/import-sct.module.js +2457 -0
  211. package/tx/importers/import-unii.module.js +601 -0
  212. package/tx/importers/readme.md +453 -0
  213. package/tx/importers/subset-loinc.module.js +1081 -0
  214. package/tx/importers/subset-rxnorm.module.js +938 -0
  215. package/tx/importers/tx-import-base.js +351 -0
  216. package/tx/importers/tx-import-settings.js +310 -0
  217. package/tx/importers/tx-import.js +357 -0
  218. package/tx/library/canonical-resource.js +88 -0
  219. package/tx/library/capabilitystatement.js +292 -0
  220. package/tx/library/codesystem.js +774 -0
  221. package/tx/library/conceptmap.js +568 -0
  222. package/tx/library/designations.js +932 -0
  223. package/tx/library/errors.js +77 -0
  224. package/tx/library/extensions.js +117 -0
  225. package/tx/library/namingsystem.js +322 -0
  226. package/tx/library/operation-outcome.js +127 -0
  227. package/tx/library/parameters.js +105 -0
  228. package/tx/library/renderer.js +1559 -0
  229. package/tx/library/terminologycapabilities.js +418 -0
  230. package/tx/library/ucum-parsers.js +1029 -0
  231. package/tx/library/ucum-service.js +370 -0
  232. package/tx/library/ucum-types.js +1099 -0
  233. package/tx/library/valueset.js +543 -0
  234. package/tx/library.js +676 -0
  235. package/tx/ocl/cm-ocl.js +106 -0
  236. package/tx/ocl/cs-ocl.js +39 -0
  237. package/tx/ocl/vs-ocl.js +105 -0
  238. package/tx/operation-context.js +568 -0
  239. package/tx/params.js +613 -0
  240. package/tx/provider.js +403 -0
  241. package/tx/sct/ecl.js +1560 -0
  242. package/tx/sct/expressions.js +2077 -0
  243. package/tx/sct/structures.js +1396 -0
  244. package/tx/tx-html.js +1063 -0
  245. package/tx/tx.fhir.org.yml +39 -0
  246. package/tx/tx.js +927 -0
  247. package/tx/vs/vs-api.js +112 -0
  248. package/tx/vs/vs-database.js +786 -0
  249. package/tx/vs/vs-package.js +358 -0
  250. package/tx/vs/vs-vsac.js +366 -0
  251. package/tx/workers/batch-validate.js +129 -0
  252. package/tx/workers/batch.js +361 -0
  253. package/tx/workers/closure.js +32 -0
  254. package/tx/workers/expand.js +1845 -0
  255. package/tx/workers/lookup.js +407 -0
  256. package/tx/workers/metadata.js +467 -0
  257. package/tx/workers/operations.js +34 -0
  258. package/tx/workers/read.js +164 -0
  259. package/tx/workers/search.js +384 -0
  260. package/tx/workers/subsumes.js +334 -0
  261. package/tx/workers/translate.js +492 -0
  262. package/tx/workers/validate.js +2504 -0
  263. package/tx/workers/worker.js +904 -0
  264. package/tx/xml/capabilitystatement-xml.js +63 -0
  265. package/tx/xml/codesystem-xml.js +62 -0
  266. package/tx/xml/conceptmap-xml.js +65 -0
  267. package/tx/xml/namingsystem-xml.js +65 -0
  268. package/tx/xml/operationoutcome-xml.js +127 -0
  269. package/tx/xml/parameters-xml.js +312 -0
  270. package/tx/xml/terminologycapabilities-xml.js +64 -0
  271. package/tx/xml/valueset-xml.js +64 -0
  272. package/tx/xml/xml-base.js +603 -0
  273. package/vcl/vcl-parser.js +1098 -0
  274. package/vcl/vcl.js +253 -0
  275. package/windows-install.js +19 -0
  276. package/xig/xig-template.html +124 -0
  277. package/xig/xig.js +3049 -0
@@ -0,0 +1,878 @@
1
+ /*
2
+ * jQuery UI Dialog 1.8.16
3
+ *
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ * http://jquery.org/license
7
+ *
8
+ * http://docs.jquery.com/UI/Dialog
9
+ *
10
+ * Depends:
11
+ * jquery.ui.core.js
12
+ * jquery.ui.widget.js
13
+ * jquery.ui.button.js
14
+ * jquery.ui.draggable.js
15
+ * jquery.ui.mouse.js
16
+ * jquery.ui.position.js
17
+ * jquery.ui.resizable.js
18
+ */
19
+ (function( $, undefined ) {
20
+
21
+ var uiDialogClasses =
22
+ 'ui-dialog ' +
23
+ 'ui-widget ' +
24
+ 'ui-widget-content ' +
25
+ 'ui-corner-all ',
26
+ sizeRelatedOptions = {
27
+ buttons: true,
28
+ height: true,
29
+ maxHeight: true,
30
+ maxWidth: true,
31
+ minHeight: true,
32
+ minWidth: true,
33
+ width: true
34
+ },
35
+ resizableRelatedOptions = {
36
+ maxHeight: true,
37
+ maxWidth: true,
38
+ minHeight: true,
39
+ minWidth: true
40
+ },
41
+ // support for jQuery 1.3.2 - handle common attrFn methods for dialog
42
+ attrFn = $.attrFn || {
43
+ val: true,
44
+ css: true,
45
+ html: true,
46
+ text: true,
47
+ data: true,
48
+ width: true,
49
+ height: true,
50
+ offset: true,
51
+ click: true
52
+ };
53
+
54
+ $.widget("ui.dialog", {
55
+ options: {
56
+ autoOpen: true,
57
+ buttons: {},
58
+ closeOnEscape: true,
59
+ closeText: 'close',
60
+ dialogClass: '',
61
+ draggable: true,
62
+ hide: null,
63
+ height: 'auto',
64
+ maxHeight: false,
65
+ maxWidth: false,
66
+ minHeight: 150,
67
+ minWidth: 150,
68
+ modal: false,
69
+ position: {
70
+ my: 'center',
71
+ at: 'center',
72
+ collision: 'fit',
73
+ // ensure that the titlebar is never outside the document
74
+ using: function(pos) {
75
+ var topOffset = $(this).css(pos).offset().top;
76
+ if (topOffset < 0) {
77
+ $(this).css('top', pos.top - topOffset);
78
+ }
79
+ }
80
+ },
81
+ resizable: true,
82
+ show: null,
83
+ stack: true,
84
+ title: '',
85
+ width: 300,
86
+ zIndex: 1000
87
+ },
88
+
89
+ _create: function() {
90
+ this.originalTitle = this.element.attr('title');
91
+ // #5742 - .attr() might return a DOMElement
92
+ if ( typeof this.originalTitle !== "string" ) {
93
+ this.originalTitle = "";
94
+ }
95
+
96
+ this.options.title = this.options.title || this.originalTitle;
97
+ var self = this,
98
+ options = self.options,
99
+
100
+ title = options.title || '&#160;',
101
+ titleId = $.ui.dialog.getTitleId(self.element),
102
+
103
+ uiDialog = (self.uiDialog = $('<div></div>'))
104
+ .appendTo(document.body)
105
+ .hide()
106
+ .addClass(uiDialogClasses + options.dialogClass)
107
+ .css({
108
+ zIndex: options.zIndex
109
+ })
110
+ // setting tabIndex makes the div focusable
111
+ // setting outline to 0 prevents a border on focus in Mozilla
112
+ .attr('tabIndex', -1).css('outline', 0).keydown(function(event) {
113
+ if (options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
114
+ event.keyCode === $.ui.keyCode.ESCAPE) {
115
+
116
+ self.close(event);
117
+ event.preventDefault();
118
+ }
119
+ })
120
+ .attr({
121
+ role: 'dialog',
122
+ 'aria-labelledby': titleId
123
+ })
124
+ .mousedown(function(event) {
125
+ self.moveToTop(false, event);
126
+ }),
127
+
128
+ uiDialogContent = self.element
129
+ .show()
130
+ .removeAttr('title')
131
+ .addClass(
132
+ 'ui-dialog-content ' +
133
+ 'ui-widget-content')
134
+ .appendTo(uiDialog),
135
+
136
+ uiDialogTitlebar = (self.uiDialogTitlebar = $('<div></div>'))
137
+ .addClass(
138
+ 'ui-dialog-titlebar ' +
139
+ 'ui-widget-header ' +
140
+ 'ui-corner-all ' +
141
+ 'ui-helper-clearfix'
142
+ )
143
+ .prependTo(uiDialog),
144
+
145
+ uiDialogTitlebarClose = $('<a href="#"></a>')
146
+ .addClass(
147
+ 'ui-dialog-titlebar-close ' +
148
+ 'ui-corner-all'
149
+ )
150
+ .attr('role', 'button')
151
+ .hover(
152
+ function() {
153
+ uiDialogTitlebarClose.addClass('ui-state-hover');
154
+ },
155
+ function() {
156
+ uiDialogTitlebarClose.removeClass('ui-state-hover');
157
+ }
158
+ )
159
+ .focus(function() {
160
+ uiDialogTitlebarClose.addClass('ui-state-focus');
161
+ })
162
+ .blur(function() {
163
+ uiDialogTitlebarClose.removeClass('ui-state-focus');
164
+ })
165
+ .click(function(event) {
166
+ self.close(event);
167
+ return false;
168
+ })
169
+ .appendTo(uiDialogTitlebar),
170
+
171
+ uiDialogTitlebarCloseText = (self.uiDialogTitlebarCloseText = $('<span></span>'))
172
+ .addClass(
173
+ 'ui-icon ' +
174
+ 'ui-icon-closethick'
175
+ )
176
+ .text(options.closeText)
177
+ .appendTo(uiDialogTitlebarClose),
178
+
179
+ uiDialogTitle = $('<span></span>')
180
+ .addClass('ui-dialog-title')
181
+ .attr('id', titleId)
182
+ .html(title)
183
+ .prependTo(uiDialogTitlebar);
184
+
185
+ //handling of deprecated beforeclose (vs beforeClose) option
186
+ //Ticket #4669 http://dev.jqueryui.com/ticket/4669
187
+ //TODO: remove in 1.9pre
188
+ if ($.isFunction(options.beforeclose) && !$.isFunction(options.beforeClose)) {
189
+ options.beforeClose = options.beforeclose;
190
+ }
191
+
192
+ uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection();
193
+
194
+ if (options.draggable && $.fn.draggable) {
195
+ self._makeDraggable();
196
+ }
197
+ if (options.resizable && $.fn.resizable) {
198
+ self._makeResizable();
199
+ }
200
+
201
+ self._createButtons(options.buttons);
202
+ self._isOpen = false;
203
+
204
+ if ($.fn.bgiframe) {
205
+ uiDialog.bgiframe();
206
+ }
207
+ },
208
+
209
+ _init: function() {
210
+ if ( this.options.autoOpen ) {
211
+ this.open();
212
+ }
213
+ },
214
+
215
+ destroy: function() {
216
+ var self = this;
217
+
218
+ if (self.overlay) {
219
+ self.overlay.destroy();
220
+ }
221
+ self.uiDialog.hide();
222
+ self.element
223
+ .unbind('.dialog')
224
+ .removeData('dialog')
225
+ .removeClass('ui-dialog-content ui-widget-content')
226
+ .hide().appendTo('body');
227
+ self.uiDialog.remove();
228
+
229
+ if (self.originalTitle) {
230
+ self.element.attr('title', self.originalTitle);
231
+ }
232
+
233
+ return self;
234
+ },
235
+
236
+ widget: function() {
237
+ return this.uiDialog;
238
+ },
239
+
240
+ close: function(event) {
241
+ var self = this,
242
+ maxZ, thisZ;
243
+
244
+ if (false === self._trigger('beforeClose', event)) {
245
+ return;
246
+ }
247
+
248
+ if (self.overlay) {
249
+ self.overlay.destroy();
250
+ }
251
+ self.uiDialog.unbind('keypress.ui-dialog');
252
+
253
+ self._isOpen = false;
254
+
255
+ if (self.options.hide) {
256
+ self.uiDialog.hide(self.options.hide, function() {
257
+ self._trigger('close', event);
258
+ });
259
+ } else {
260
+ self.uiDialog.hide();
261
+ self._trigger('close', event);
262
+ }
263
+
264
+ $.ui.dialog.overlay.resize();
265
+
266
+ // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
267
+ if (self.options.modal) {
268
+ maxZ = 0;
269
+ $('.ui-dialog').each(function() {
270
+ if (this !== self.uiDialog[0]) {
271
+ thisZ = $(this).css('z-index');
272
+ if(!isNaN(thisZ)) {
273
+ maxZ = Math.max(maxZ, thisZ);
274
+ }
275
+ }
276
+ });
277
+ $.ui.dialog.maxZ = maxZ;
278
+ }
279
+
280
+ return self;
281
+ },
282
+
283
+ isOpen: function() {
284
+ return this._isOpen;
285
+ },
286
+
287
+ // the force parameter allows us to move modal dialogs to their correct
288
+ // position on open
289
+ moveToTop: function(force, event) {
290
+ var self = this,
291
+ options = self.options,
292
+ saveScroll;
293
+
294
+ if ((options.modal && !force) ||
295
+ (!options.stack && !options.modal)) {
296
+ return self._trigger('focus', event);
297
+ }
298
+
299
+ if (options.zIndex > $.ui.dialog.maxZ) {
300
+ $.ui.dialog.maxZ = options.zIndex;
301
+ }
302
+ if (self.overlay) {
303
+ $.ui.dialog.maxZ += 1;
304
+ self.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ);
305
+ }
306
+
307
+ //Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed.
308
+ // http://ui.jquery.com/bugs/ticket/3193
309
+ saveScroll = { scrollTop: self.element.scrollTop(), scrollLeft: self.element.scrollLeft() };
310
+ $.ui.dialog.maxZ += 1;
311
+ self.uiDialog.css('z-index', $.ui.dialog.maxZ);
312
+ self.element.attr(saveScroll);
313
+ self._trigger('focus', event);
314
+
315
+ return self;
316
+ },
317
+
318
+ open: function() {
319
+ if (this._isOpen) { return; }
320
+
321
+ var self = this,
322
+ options = self.options,
323
+ uiDialog = self.uiDialog;
324
+
325
+ self.overlay = options.modal ? new $.ui.dialog.overlay(self) : null;
326
+ self._size();
327
+ self._position(options.position);
328
+ uiDialog.show(options.show);
329
+ self.moveToTop(true);
330
+
331
+ // prevent tabbing out of modal dialogs
332
+ if (options.modal) {
333
+ uiDialog.bind('keypress.ui-dialog', function(event) {
334
+ if (event.keyCode !== $.ui.keyCode.TAB) {
335
+ return;
336
+ }
337
+
338
+ var tabbables = $(':tabbable', this),
339
+ first = tabbables.filter(':first'),
340
+ last = tabbables.filter(':last');
341
+
342
+ if (event.target === last[0] && !event.shiftKey) {
343
+ first.focus(1);
344
+ return false;
345
+ } else if (event.target === first[0] && event.shiftKey) {
346
+ last.focus(1);
347
+ return false;
348
+ }
349
+ });
350
+ }
351
+
352
+ // set focus to the first tabbable element in the content area or the first button
353
+ // if there are no tabbable elements, set focus on the dialog itself
354
+ $(self.element.find(':tabbable').get().concat(
355
+ uiDialog.find('.ui-dialog-buttonpane :tabbable').get().concat(
356
+ uiDialog.get()))).eq(0).focus();
357
+
358
+ self._isOpen = true;
359
+ self._trigger('open');
360
+
361
+ return self;
362
+ },
363
+
364
+ _createButtons: function(buttons) {
365
+ var self = this,
366
+ hasButtons = false,
367
+ uiDialogButtonPane = $('<div></div>')
368
+ .addClass(
369
+ 'ui-dialog-buttonpane ' +
370
+ 'ui-widget-content ' +
371
+ 'ui-helper-clearfix'
372
+ ),
373
+ uiButtonSet = $( "<div></div>" )
374
+ .addClass( "ui-dialog-buttonset" )
375
+ .appendTo( uiDialogButtonPane );
376
+
377
+ // if we already have a button pane, remove it
378
+ self.uiDialog.find('.ui-dialog-buttonpane').remove();
379
+
380
+ if (typeof buttons === 'object' && buttons !== null) {
381
+ $.each(buttons, function() {
382
+ return !(hasButtons = true);
383
+ });
384
+ }
385
+ if (hasButtons) {
386
+ $.each(buttons, function(name, props) {
387
+ props = $.isFunction( props ) ?
388
+ { click: props, text: name } :
389
+ props;
390
+ var button = $('<button type="button"></button>')
391
+ .click(function() {
392
+ props.click.apply(self.element[0], arguments);
393
+ })
394
+ .appendTo(uiButtonSet);
395
+ // can't use .attr( props, true ) with jQuery 1.3.2.
396
+ $.each( props, function( key, value ) {
397
+ if ( key === "click" ) {
398
+ return;
399
+ }
400
+ if ( key in attrFn ) {
401
+ button[ key ]( value );
402
+ } else {
403
+ button.attr( key, value );
404
+ }
405
+ });
406
+ if ($.fn.button) {
407
+ button.button();
408
+ }
409
+ });
410
+ uiDialogButtonPane.appendTo(self.uiDialog);
411
+ }
412
+ },
413
+
414
+ _makeDraggable: function() {
415
+ var self = this,
416
+ options = self.options,
417
+ doc = $(document),
418
+ heightBeforeDrag;
419
+
420
+ function filteredUi(ui) {
421
+ return {
422
+ position: ui.position,
423
+ offset: ui.offset
424
+ };
425
+ }
426
+
427
+ self.uiDialog.draggable({
428
+ cancel: '.ui-dialog-content, .ui-dialog-titlebar-close',
429
+ handle: '.ui-dialog-titlebar',
430
+ containment: 'document',
431
+ start: function(event, ui) {
432
+ heightBeforeDrag = options.height === "auto" ? "auto" : $(this).height();
433
+ $(this).height($(this).height()).addClass("ui-dialog-dragging");
434
+ self._trigger('dragStart', event, filteredUi(ui));
435
+ },
436
+ drag: function(event, ui) {
437
+ self._trigger('drag', event, filteredUi(ui));
438
+ },
439
+ stop: function(event, ui) {
440
+ options.position = [ui.position.left - doc.scrollLeft(),
441
+ ui.position.top - doc.scrollTop()];
442
+ $(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag);
443
+ self._trigger('dragStop', event, filteredUi(ui));
444
+ $.ui.dialog.overlay.resize();
445
+ }
446
+ });
447
+ },
448
+
449
+ _makeResizable: function(handles) {
450
+ handles = (handles === undefined ? this.options.resizable : handles);
451
+ var self = this,
452
+ options = self.options,
453
+ // .ui-resizable has position: relative defined in the stylesheet
454
+ // but dialogs have to use absolute or fixed positioning
455
+ position = self.uiDialog.css('position'),
456
+ resizeHandles = (typeof handles === 'string' ?
457
+ handles :
458
+ 'n,e,s,w,se,sw,ne,nw'
459
+ );
460
+
461
+ function filteredUi(ui) {
462
+ return {
463
+ originalPosition: ui.originalPosition,
464
+ originalSize: ui.originalSize,
465
+ position: ui.position,
466
+ size: ui.size
467
+ };
468
+ }
469
+
470
+ self.uiDialog.resizable({
471
+ cancel: '.ui-dialog-content',
472
+ containment: 'document',
473
+ alsoResize: self.element,
474
+ maxWidth: options.maxWidth,
475
+ maxHeight: options.maxHeight,
476
+ minWidth: options.minWidth,
477
+ minHeight: self._minHeight(),
478
+ handles: resizeHandles,
479
+ start: function(event, ui) {
480
+ $(this).addClass("ui-dialog-resizing");
481
+ self._trigger('resizeStart', event, filteredUi(ui));
482
+ },
483
+ resize: function(event, ui) {
484
+ self._trigger('resize', event, filteredUi(ui));
485
+ },
486
+ stop: function(event, ui) {
487
+ $(this).removeClass("ui-dialog-resizing");
488
+ options.height = $(this).height();
489
+ options.width = $(this).width();
490
+ self._trigger('resizeStop', event, filteredUi(ui));
491
+ $.ui.dialog.overlay.resize();
492
+ }
493
+ })
494
+ .css('position', position)
495
+ .find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se');
496
+ },
497
+
498
+ _minHeight: function() {
499
+ var options = this.options;
500
+
501
+ if (options.height === 'auto') {
502
+ return options.minHeight;
503
+ } else {
504
+ return Math.min(options.minHeight, options.height);
505
+ }
506
+ },
507
+
508
+ _position: function(position) {
509
+ var myAt = [],
510
+ offset = [0, 0],
511
+ isVisible;
512
+
513
+ if (position) {
514
+ // deep extending converts arrays to objects in jQuery <= 1.3.2 :-(
515
+ // if (typeof position == 'string' || $.isArray(position)) {
516
+ // myAt = $.isArray(position) ? position : position.split(' ');
517
+
518
+ if (typeof position === 'string' || (typeof position === 'object' && '0' in position)) {
519
+ myAt = position.split ? position.split(' ') : [position[0], position[1]];
520
+ if (myAt.length === 1) {
521
+ myAt[1] = myAt[0];
522
+ }
523
+
524
+ $.each(['left', 'top'], function(i, offsetPosition) {
525
+ if (+myAt[i] === myAt[i]) {
526
+ offset[i] = myAt[i];
527
+ myAt[i] = offsetPosition;
528
+ }
529
+ });
530
+
531
+ position = {
532
+ my: myAt.join(" "),
533
+ at: myAt.join(" "),
534
+ offset: offset.join(" ")
535
+ };
536
+ }
537
+
538
+ position = $.extend({}, $.ui.dialog.prototype.options.position, position);
539
+ } else {
540
+ position = $.ui.dialog.prototype.options.position;
541
+ }
542
+
543
+ // need to show the dialog to get the actual offset in the position plugin
544
+ isVisible = this.uiDialog.is(':visible');
545
+ if (!isVisible) {
546
+ this.uiDialog.show();
547
+ }
548
+ this.uiDialog
549
+ // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
550
+ .css({ top: 0, left: 0 })
551
+ .position($.extend({ of: window }, position));
552
+ if (!isVisible) {
553
+ this.uiDialog.hide();
554
+ }
555
+ },
556
+
557
+ _setOptions: function( options ) {
558
+ var self = this,
559
+ resizableOptions = {},
560
+ resize = false;
561
+
562
+ $.each( options, function( key, value ) {
563
+ self._setOption( key, value );
564
+
565
+ if ( key in sizeRelatedOptions ) {
566
+ resize = true;
567
+ }
568
+ if ( key in resizableRelatedOptions ) {
569
+ resizableOptions[ key ] = value;
570
+ }
571
+ });
572
+
573
+ if ( resize ) {
574
+ this._size();
575
+ }
576
+ if ( this.uiDialog.is( ":data(resizable)" ) ) {
577
+ this.uiDialog.resizable( "option", resizableOptions );
578
+ }
579
+ },
580
+
581
+ _setOption: function(key, value){
582
+ var self = this,
583
+ uiDialog = self.uiDialog;
584
+
585
+ switch (key) {
586
+ //handling of deprecated beforeclose (vs beforeClose) option
587
+ //Ticket #4669 http://dev.jqueryui.com/ticket/4669
588
+ //TODO: remove in 1.9pre
589
+ case "beforeclose":
590
+ key = "beforeClose";
591
+ break;
592
+ case "buttons":
593
+ self._createButtons(value);
594
+ break;
595
+ case "closeText":
596
+ // ensure that we always pass a string
597
+ self.uiDialogTitlebarCloseText.text("" + value);
598
+ break;
599
+ case "dialogClass":
600
+ uiDialog
601
+ .removeClass(self.options.dialogClass)
602
+ .addClass(uiDialogClasses + value);
603
+ break;
604
+ case "disabled":
605
+ if (value) {
606
+ uiDialog.addClass('ui-dialog-disabled');
607
+ } else {
608
+ uiDialog.removeClass('ui-dialog-disabled');
609
+ }
610
+ break;
611
+ case "draggable":
612
+ var isDraggable = uiDialog.is( ":data(draggable)" );
613
+ if ( isDraggable && !value ) {
614
+ uiDialog.draggable( "destroy" );
615
+ }
616
+
617
+ if ( !isDraggable && value ) {
618
+ self._makeDraggable();
619
+ }
620
+ break;
621
+ case "position":
622
+ self._position(value);
623
+ break;
624
+ case "resizable":
625
+ // currently resizable, becoming non-resizable
626
+ var isResizable = uiDialog.is( ":data(resizable)" );
627
+ if (isResizable && !value) {
628
+ uiDialog.resizable('destroy');
629
+ }
630
+
631
+ // currently resizable, changing handles
632
+ if (isResizable && typeof value === 'string') {
633
+ uiDialog.resizable('option', 'handles', value);
634
+ }
635
+
636
+ // currently non-resizable, becoming resizable
637
+ if (!isResizable && value !== false) {
638
+ self._makeResizable(value);
639
+ }
640
+ break;
641
+ case "title":
642
+ // convert whatever was passed in o a string, for html() to not throw up
643
+ $(".ui-dialog-title", self.uiDialogTitlebar).html("" + (value || '&#160;'));
644
+ break;
645
+ }
646
+
647
+ $.Widget.prototype._setOption.apply(self, arguments);
648
+ },
649
+
650
+ _size: function() {
651
+ /* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
652
+ * divs will both have width and height set, so we need to reset them
653
+ */
654
+ var options = this.options,
655
+ nonContentHeight,
656
+ minContentHeight,
657
+ isVisible = this.uiDialog.is( ":visible" );
658
+
659
+ // reset content sizing
660
+ this.element.show().css({
661
+ width: 'auto',
662
+ minHeight: 0,
663
+ height: 0
664
+ });
665
+
666
+ if (options.minWidth > options.width) {
667
+ options.width = options.minWidth;
668
+ }
669
+
670
+ // reset wrapper sizing
671
+ // determine the height of all the non-content elements
672
+ nonContentHeight = this.uiDialog.css({
673
+ height: 'auto',
674
+ width: options.width
675
+ })
676
+ .height();
677
+ minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
678
+
679
+ if ( options.height === "auto" ) {
680
+ // only needed for IE6 support
681
+ if ( $.support.minHeight ) {
682
+ this.element.css({
683
+ minHeight: minContentHeight,
684
+ height: "auto"
685
+ });
686
+ } else {
687
+ this.uiDialog.show();
688
+ var autoHeight = this.element.css( "height", "auto" ).height();
689
+ if ( !isVisible ) {
690
+ this.uiDialog.hide();
691
+ }
692
+ this.element.height( Math.max( autoHeight, minContentHeight ) );
693
+ }
694
+ } else {
695
+ this.element.height( Math.max( options.height - nonContentHeight, 0 ) );
696
+ }
697
+
698
+ if (this.uiDialog.is(':data(resizable)')) {
699
+ this.uiDialog.resizable('option', 'minHeight', this._minHeight());
700
+ }
701
+ }
702
+ });
703
+
704
+ $.extend($.ui.dialog, {
705
+ version: "1.8.16",
706
+
707
+ uuid: 0,
708
+ maxZ: 0,
709
+
710
+ getTitleId: function($el) {
711
+ var id = $el.attr('id');
712
+ if (!id) {
713
+ this.uuid += 1;
714
+ id = this.uuid;
715
+ }
716
+ return 'ui-dialog-title-' + id;
717
+ },
718
+
719
+ overlay: function(dialog) {
720
+ this.$el = $.ui.dialog.overlay.Create(dialog);
721
+ }
722
+ });
723
+
724
+ $.extend($.ui.dialog.overlay, {
725
+ instances: [],
726
+ // reuse old instances due to IE memory leak with alpha transparency (see #5185)
727
+ oldInstances: [],
728
+ maxZ: 0,
729
+ events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),
730
+ function(event) { return event + '.dialog-overlay'; }).join(' '),
731
+ create: function(dialog) {
732
+ if (this.instances.length === 0) {
733
+ // prevent use of anchors and inputs
734
+ // we use a setTimeout in case the overlay is created from an
735
+ // event that we're going to be cancelling (see #2804)
736
+ setTimeout(function() {
737
+ // handle $(el).dialog().dialog('close') (see #4065)
738
+ if ($.ui.dialog.overlay.instances.length) {
739
+ $(document).bind($.ui.dialog.overlay.events, function(event) {
740
+ // stop events if the z-index of the target is < the z-index of the overlay
741
+ // we cannot return true when we don't want to cancel the event (#3523)
742
+ if ($(event.target).zIndex() < $.ui.dialog.overlay.maxZ) {
743
+ return false;
744
+ }
745
+ });
746
+ }
747
+ }, 1);
748
+
749
+ // allow closing by pressing the escape key
750
+ $(document).bind('keydown.dialog-overlay', function(event) {
751
+ if (dialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
752
+ event.keyCode === $.ui.keyCode.ESCAPE) {
753
+
754
+ dialog.close(event);
755
+ event.preventDefault();
756
+ }
757
+ });
758
+
759
+ // handle window resize
760
+ $(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize);
761
+ }
762
+
763
+ var $el = (this.oldInstances.pop() || $('<div></div>').addClass('ui-widget-overlay'))
764
+ .appendTo(document.body)
765
+ .css({
766
+ width: this.width(),
767
+ height: this.height()
768
+ });
769
+
770
+ if ($.fn.bgiframe) {
771
+ $el.bgiframe();
772
+ }
773
+
774
+ this.instances.push($el);
775
+ return $el;
776
+ },
777
+
778
+ destroy: function($el) {
779
+ var indexOf = $.inArray($el, this.instances);
780
+ if (indexOf != -1){
781
+ this.oldInstances.push(this.instances.splice(indexOf, 1)[0]);
782
+ }
783
+
784
+ if (this.instances.length === 0) {
785
+ $([document, window]).unbind('.dialog-overlay');
786
+ }
787
+
788
+ $el.remove();
789
+
790
+ // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
791
+ var maxZ = 0;
792
+ $.each(this.instances, function() {
793
+ maxZ = Math.max(maxZ, this.css('z-index'));
794
+ });
795
+ this.maxZ = maxZ;
796
+ },
797
+
798
+ height: function() {
799
+ var scrollHeight,
800
+ offsetHeight;
801
+ // handle IE 6
802
+ if ($.browser.msie && $.browser.version < 7) {
803
+ scrollHeight = Math.max(
804
+ document.documentElement.scrollHeight,
805
+ document.body.scrollHeight
806
+ );
807
+ offsetHeight = Math.max(
808
+ document.documentElement.offsetHeight,
809
+ document.body.offsetHeight
810
+ );
811
+
812
+ if (scrollHeight < offsetHeight) {
813
+ return $(window).height() + 'px';
814
+ } else {
815
+ return scrollHeight + 'px';
816
+ }
817
+ // handle "good" browsers
818
+ } else {
819
+ return $(document).height() + 'px';
820
+ }
821
+ },
822
+
823
+ width: function() {
824
+ var scrollWidth,
825
+ offsetWidth;
826
+ // handle IE
827
+ if ( $.browser.msie ) {
828
+ scrollWidth = Math.max(
829
+ document.documentElement.scrollWidth,
830
+ document.body.scrollWidth
831
+ );
832
+ offsetWidth = Math.max(
833
+ document.documentElement.offsetWidth,
834
+ document.body.offsetWidth
835
+ );
836
+
837
+ if (scrollWidth < offsetWidth) {
838
+ return $(window).width() + 'px';
839
+ } else {
840
+ return scrollWidth + 'px';
841
+ }
842
+ // handle "good" browsers
843
+ } else {
844
+ return $(document).width() + 'px';
845
+ }
846
+ },
847
+
848
+ resize: function() {
849
+ /* If the dialog is draggable and the user drags it past the
850
+ * right edge of the window, the document becomes wider so we
851
+ * need to stretch the overlay. If the user then drags the
852
+ * dialog back to the left, the document will become narrower,
853
+ * so we need to shrink the overlay to the appropriate size.
854
+ * This is handled by shrinking the overlay before setting it
855
+ * to the full document size.
856
+ */
857
+ var $overlays = $([]);
858
+ $.each($.ui.dialog.overlay.instances, function() {
859
+ $overlays = $overlays.add(this);
860
+ });
861
+
862
+ $overlays.css({
863
+ width: 0,
864
+ height: 0
865
+ }).css({
866
+ width: $.ui.dialog.overlay.width(),
867
+ height: $.ui.dialog.overlay.height()
868
+ });
869
+ }
870
+ });
871
+
872
+ $.extend($.ui.dialog.overlay.prototype, {
873
+ destroy: function() {
874
+ $.ui.dialog.overlay.destroy(this.$el);
875
+ }
876
+ });
877
+
878
+ }(jQuery));