lady_josephine 0.0.1

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 (304) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +32 -0
  4. data/app/assets/fonts/lady_josephine/icons/icons.eot +0 -0
  5. data/app/assets/fonts/lady_josephine/icons/icons.svg +215 -0
  6. data/app/assets/fonts/lady_josephine/icons/icons.ttf +0 -0
  7. data/app/assets/fonts/lady_josephine/icons/icons.woff +0 -0
  8. data/app/assets/javascripts/lady_josephine/blocks/facebook.js +25 -0
  9. data/app/assets/javascripts/lady_josephine/blocks/instagram.js +22 -0
  10. data/app/assets/javascripts/lady_josephine/blocks/soundcloud.js +24 -0
  11. data/app/assets/javascripts/lady_josephine/blocks/twitter.js +25 -0
  12. data/app/assets/javascripts/lady_josephine/blocks/vimeo.js +55 -0
  13. data/app/assets/javascripts/lady_josephine/blocks/youtube.js +64 -0
  14. data/app/assets/javascripts/lady_josephine/editor.js +40 -0
  15. data/app/assets/javascripts/lady_josephine/lady_josephine.js +4 -0
  16. data/app/assets/javascripts/lady_josephine/lady_josephine_view.js +6 -0
  17. data/app/assets/stylesheets/lady_josephine/content.sass +33 -0
  18. data/app/assets/stylesheets/lady_josephine/icons.sass +175 -0
  19. data/app/assets/stylesheets/lady_josephine/lady_josephine.sass +6 -0
  20. data/app/assets/stylesheets/lady_josephine/sir_trevor.sass +619 -0
  21. data/app/assets/stylesheets/lady_josephine/vars.sass +36 -0
  22. data/app/controllers/lady_josephine/application_controller.rb +4 -0
  23. data/app/controllers/lady_josephine/editor_controller.rb +40 -0
  24. data/app/controllers/lady_josephine/images_controller.rb +26 -0
  25. data/app/helpers/lady_josephine/helper.rb +25 -0
  26. data/app/helpers/lady_josephine/sir_trevor_helper.rb +172 -0
  27. data/app/models/lady_josephine/concerns/model.rb +29 -0
  28. data/app/models/lady_josephine/concerns/pingable.rb +28 -0
  29. data/app/models/lady_josephine/concerns/server_uuid.rb +24 -0
  30. data/app/models/lady_josephine/concerns/sir_trevor_images.rb +38 -0
  31. data/app/models/lady_josephine/image.rb +41 -0
  32. data/app/uploader/lady_josephine/base_uploader.rb +47 -0
  33. data/app/uploader/lady_josephine/image_uploader.rb +149 -0
  34. data/app/views/lady_josephine/blocks/_audio_block.haml +2 -0
  35. data/app/views/lady_josephine/blocks/_definition_block.haml +4 -0
  36. data/app/views/lady_josephine/blocks/_divider_block.haml +2 -0
  37. data/app/views/lady_josephine/blocks/_extended_image_block.haml +63 -0
  38. data/app/views/lady_josephine/blocks/_extended_quote_block.haml +5 -0
  39. data/app/views/lady_josephine/blocks/_extended_tweet_block.haml +2 -0
  40. data/app/views/lady_josephine/blocks/_facebook_post_block.haml +2 -0
  41. data/app/views/lady_josephine/blocks/_heading_block.haml +2 -0
  42. data/app/views/lady_josephine/blocks/_html_block.haml +1 -0
  43. data/app/views/lady_josephine/blocks/_instagram_block.haml +2 -0
  44. data/app/views/lady_josephine/blocks/_list_block.haml +3 -0
  45. data/app/views/lady_josephine/blocks/_quote_block.haml +5 -0
  46. data/app/views/lady_josephine/blocks/_text_block.html.haml +2 -0
  47. data/app/views/lady_josephine/blocks/_video_block.haml +9 -0
  48. data/config/routes.rb +9 -0
  49. data/db/migrate/20160222151500_lady_josephine_image.rb +18 -0
  50. data/lib/generators/lady_josephine_migration/USAGE +9 -0
  51. data/lib/generators/lady_josephine_migration/lady_josephine_migration_generator.rb +17 -0
  52. data/lib/generators/lady_josephine_migration/templates/migration.rb +9 -0
  53. data/lib/lady_josephine.rb +18 -0
  54. data/lib/lady_josephine/engine.rb +18 -0
  55. data/lib/lady_josephine/redcarpet/custom_markdown_formatter.rb +63 -0
  56. data/lib/lady_josephine/renderer/sir_trevor_renderer.rb +16 -0
  57. data/lib/lady_josephine/version.rb +3 -0
  58. data/lib/lady_josephine/whitelist.rb +26 -0
  59. data/lib/tasks/lady_josephine_tasks.rake +4 -0
  60. data/spec/controllers/lady_josephine/editor_controller_spec.rb +58 -0
  61. data/spec/dummy/README.rdoc +28 -0
  62. data/spec/dummy/Rakefile +6 -0
  63. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  64. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  65. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  66. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  67. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  68. data/spec/dummy/bin/bundle +3 -0
  69. data/spec/dummy/bin/rails +4 -0
  70. data/spec/dummy/bin/rake +4 -0
  71. data/spec/dummy/bin/setup +29 -0
  72. data/spec/dummy/config.ru +4 -0
  73. data/spec/dummy/config/application.rb +26 -0
  74. data/spec/dummy/config/boot.rb +5 -0
  75. data/spec/dummy/config/database.yml +25 -0
  76. data/spec/dummy/config/environment.rb +5 -0
  77. data/spec/dummy/config/environments/development.rb +41 -0
  78. data/spec/dummy/config/environments/production.rb +79 -0
  79. data/spec/dummy/config/environments/test.rb +42 -0
  80. data/spec/dummy/config/initializers/assets.rb +11 -0
  81. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  82. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  83. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  84. data/spec/dummy/config/initializers/inflections.rb +16 -0
  85. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  86. data/spec/dummy/config/initializers/session_store.rb +3 -0
  87. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  88. data/spec/dummy/config/locales/en.yml +23 -0
  89. data/spec/dummy/config/routes.rb +4 -0
  90. data/spec/dummy/config/secrets.yml +22 -0
  91. data/spec/dummy/db/development.sqlite3 +0 -0
  92. data/spec/dummy/db/schema.rb +16 -0
  93. data/spec/dummy/db/test.sqlite3 +0 -0
  94. data/spec/dummy/log/bla +0 -0
  95. data/spec/dummy/public/404.html +67 -0
  96. data/spec/dummy/public/422.html +67 -0
  97. data/spec/dummy/public/500.html +66 -0
  98. data/spec/dummy/public/favicon.ico +0 -0
  99. data/spec/spec_helper.rb +17 -0
  100. data/vendor/assets/components/Eventable/README.md +12 -0
  101. data/vendor/assets/components/Eventable/bower.json +10 -0
  102. data/vendor/assets/components/Eventable/component.json +11 -0
  103. data/vendor/assets/components/Eventable/eventable.js +207 -0
  104. data/vendor/assets/components/Eventable/package.json +15 -0
  105. data/vendor/assets/components/jquery-autosize/bower.json +30 -0
  106. data/vendor/assets/components/jquery-autosize/demo.html +36 -0
  107. data/vendor/assets/components/jquery-autosize/jquery.autosize.js +273 -0
  108. data/vendor/assets/components/jquery-autosize/jquery.autosize.min.js +6 -0
  109. data/vendor/assets/components/jquery-autosize/package.json +32 -0
  110. data/vendor/assets/components/jquery-autosize/readme.md +216 -0
  111. data/vendor/assets/components/jquery/AUTHORS.txt +163 -0
  112. data/vendor/assets/components/jquery/CONTRIBUTING.md +216 -0
  113. data/vendor/assets/components/jquery/Gruntfile.js +496 -0
  114. data/vendor/assets/components/jquery/MIT-LICENSE.txt +21 -0
  115. data/vendor/assets/components/jquery/README.md +415 -0
  116. data/vendor/assets/components/jquery/build/release-notes.js +59 -0
  117. data/vendor/assets/components/jquery/build/release.js +246 -0
  118. data/vendor/assets/components/jquery/component.json +13 -0
  119. data/vendor/assets/components/jquery/composer.json +35 -0
  120. data/vendor/assets/components/jquery/jquery-migrate.js +496 -0
  121. data/vendor/assets/components/jquery/jquery-migrate.min.js +3 -0
  122. data/vendor/assets/components/jquery/jquery.js +9597 -0
  123. data/vendor/assets/components/jquery/jquery.min.js +5 -0
  124. data/vendor/assets/components/jquery/jquery.min.map +1 -0
  125. data/vendor/assets/components/jquery/package.json +39 -0
  126. data/vendor/assets/components/jquery/speed/benchmark.js +15 -0
  127. data/vendor/assets/components/jquery/speed/benchmarker.css +65 -0
  128. data/vendor/assets/components/jquery/speed/benchmarker.js +181 -0
  129. data/vendor/assets/components/jquery/speed/closest.html +39 -0
  130. data/vendor/assets/components/jquery/speed/css.html +82 -0
  131. data/vendor/assets/components/jquery/speed/event.html +58 -0
  132. data/vendor/assets/components/jquery/speed/filter.html +183 -0
  133. data/vendor/assets/components/jquery/speed/find.html +179 -0
  134. data/vendor/assets/components/jquery/speed/index.html +72 -0
  135. data/vendor/assets/components/jquery/speed/jquery-basis.js +6238 -0
  136. data/vendor/assets/components/jquery/speed/slice.vs.concat.html +47 -0
  137. data/vendor/assets/components/jquery/src/ajax.js +851 -0
  138. data/vendor/assets/components/jquery/src/ajax/jsonp.js +80 -0
  139. data/vendor/assets/components/jquery/src/ajax/script.js +86 -0
  140. data/vendor/assets/components/jquery/src/ajax/xhr.js +207 -0
  141. data/vendor/assets/components/jquery/src/attributes.js +661 -0
  142. data/vendor/assets/components/jquery/src/callbacks.js +196 -0
  143. data/vendor/assets/components/jquery/src/core.js +949 -0
  144. data/vendor/assets/components/jquery/src/css.js +679 -0
  145. data/vendor/assets/components/jquery/src/data.js +340 -0
  146. data/vendor/assets/components/jquery/src/deferred.js +141 -0
  147. data/vendor/assets/components/jquery/src/deprecated.js +4 -0
  148. data/vendor/assets/components/jquery/src/dimensions.js +41 -0
  149. data/vendor/assets/components/jquery/src/effects.js +730 -0
  150. data/vendor/assets/components/jquery/src/event-alias.js +15 -0
  151. data/vendor/assets/components/jquery/src/event.js +991 -0
  152. data/vendor/assets/components/jquery/src/exports.js +18 -0
  153. data/vendor/assets/components/jquery/src/intro.js +20 -0
  154. data/vendor/assets/components/jquery/src/manipulation.js +796 -0
  155. data/vendor/assets/components/jquery/src/offset.js +169 -0
  156. data/vendor/assets/components/jquery/src/outro.js +2 -0
  157. data/vendor/assets/components/jquery/src/queue.js +147 -0
  158. data/vendor/assets/components/jquery/src/serialize.js +99 -0
  159. data/vendor/assets/components/jquery/src/sizzle-jquery.js +9 -0
  160. data/vendor/assets/components/jquery/src/support.js +241 -0
  161. data/vendor/assets/components/jquery/src/traversing.js +275 -0
  162. data/vendor/assets/components/jquery/test/csp.php +16 -0
  163. data/vendor/assets/components/jquery/test/data/1x1.jpg +0 -0
  164. data/vendor/assets/components/jquery/test/data/ajax/unreleasedXHR.html +25 -0
  165. data/vendor/assets/components/jquery/test/data/atom+xml.php +4 -0
  166. data/vendor/assets/components/jquery/test/data/badcall.js +1 -0
  167. data/vendor/assets/components/jquery/test/data/badjson.js +1 -0
  168. data/vendor/assets/components/jquery/test/data/cleanScript.html +10 -0
  169. data/vendor/assets/components/jquery/test/data/core/cc_on.html +22 -0
  170. data/vendor/assets/components/jquery/test/data/dashboard.xml +11 -0
  171. data/vendor/assets/components/jquery/test/data/dimensions/documentLarge.html +17 -0
  172. data/vendor/assets/components/jquery/test/data/dimensions/documentSmall.html +21 -0
  173. data/vendor/assets/components/jquery/test/data/echoData.php +1 -0
  174. data/vendor/assets/components/jquery/test/data/echoQuery.php +1 -0
  175. data/vendor/assets/components/jquery/test/data/errorWithText.php +5 -0
  176. data/vendor/assets/components/jquery/test/data/etag.php +21 -0
  177. data/vendor/assets/components/jquery/test/data/evalScript.php +1 -0
  178. data/vendor/assets/components/jquery/test/data/event/longLoadScript.php +4 -0
  179. data/vendor/assets/components/jquery/test/data/event/promiseReady.html +17 -0
  180. data/vendor/assets/components/jquery/test/data/event/syncReady.html +23 -0
  181. data/vendor/assets/components/jquery/test/data/headers.php +18 -0
  182. data/vendor/assets/components/jquery/test/data/if_modified_since.php +20 -0
  183. data/vendor/assets/components/jquery/test/data/iframe.html +8 -0
  184. data/vendor/assets/components/jquery/test/data/jquery-1.8.2.ajax_xhr.min.js +2 -0
  185. data/vendor/assets/components/jquery/test/data/json.php +13 -0
  186. data/vendor/assets/components/jquery/test/data/json_obj.js +1 -0
  187. data/vendor/assets/components/jquery/test/data/jsonp.php +14 -0
  188. data/vendor/assets/components/jquery/test/data/manipulation/iframe-denied.html +36 -0
  189. data/vendor/assets/components/jquery/test/data/name.html +1 -0
  190. data/vendor/assets/components/jquery/test/data/name.php +24 -0
  191. data/vendor/assets/components/jquery/test/data/nocontent.php +5 -0
  192. data/vendor/assets/components/jquery/test/data/offset/absolute.html +41 -0
  193. data/vendor/assets/components/jquery/test/data/offset/body.html +26 -0
  194. data/vendor/assets/components/jquery/test/data/offset/fixed.html +34 -0
  195. data/vendor/assets/components/jquery/test/data/offset/relative.html +31 -0
  196. data/vendor/assets/components/jquery/test/data/offset/scroll.html +39 -0
  197. data/vendor/assets/components/jquery/test/data/offset/static.html +31 -0
  198. data/vendor/assets/components/jquery/test/data/offset/table.html +43 -0
  199. data/vendor/assets/components/jquery/test/data/params_html.php +12 -0
  200. data/vendor/assets/components/jquery/test/data/readywaitasset.js +1 -0
  201. data/vendor/assets/components/jquery/test/data/readywaitloader.js +25 -0
  202. data/vendor/assets/components/jquery/test/data/script.php +11 -0
  203. data/vendor/assets/components/jquery/test/data/selector/html5_selector.html +114 -0
  204. data/vendor/assets/components/jquery/test/data/selector/sizzle_cache.html +21 -0
  205. data/vendor/assets/components/jquery/test/data/statusText.php +5 -0
  206. data/vendor/assets/components/jquery/test/data/support/bodyBackground.html +28 -0
  207. data/vendor/assets/components/jquery/test/data/support/shrinkWrapBlocks.html +23 -0
  208. data/vendor/assets/components/jquery/test/data/support/testElementCrash.html +17 -0
  209. data/vendor/assets/components/jquery/test/data/test.html +7 -0
  210. data/vendor/assets/components/jquery/test/data/test.js +3 -0
  211. data/vendor/assets/components/jquery/test/data/test.php +7 -0
  212. data/vendor/assets/components/jquery/test/data/test2.html +5 -0
  213. data/vendor/assets/components/jquery/test/data/test3.html +3 -0
  214. data/vendor/assets/components/jquery/test/data/testinit.js +269 -0
  215. data/vendor/assets/components/jquery/test/data/testrunner.js +368 -0
  216. data/vendor/assets/components/jquery/test/data/testsuite.css +155 -0
  217. data/vendor/assets/components/jquery/test/data/text.php +12 -0
  218. data/vendor/assets/components/jquery/test/data/ua.txt +272 -0
  219. data/vendor/assets/components/jquery/test/data/with_fries.xml +25 -0
  220. data/vendor/assets/components/jquery/test/data/with_fries_over_jsonp.php +7 -0
  221. data/vendor/assets/components/jquery/test/delegatetest.html +228 -0
  222. data/vendor/assets/components/jquery/test/hovertest.html +158 -0
  223. data/vendor/assets/components/jquery/test/index.html +330 -0
  224. data/vendor/assets/components/jquery/test/localfile.html +75 -0
  225. data/vendor/assets/components/jquery/test/networkerror.html +84 -0
  226. data/vendor/assets/components/jquery/test/polluted.php +110 -0
  227. data/vendor/assets/components/jquery/test/readywait.html +70 -0
  228. data/vendor/assets/components/jquery/test/unit/ajax.js +1971 -0
  229. data/vendor/assets/components/jquery/test/unit/attributes.js +1332 -0
  230. data/vendor/assets/components/jquery/test/unit/callbacks.js +326 -0
  231. data/vendor/assets/components/jquery/test/unit/core.js +1332 -0
  232. data/vendor/assets/components/jquery/test/unit/css.js +1036 -0
  233. data/vendor/assets/components/jquery/test/unit/data.js +636 -0
  234. data/vendor/assets/components/jquery/test/unit/deferred.js +440 -0
  235. data/vendor/assets/components/jquery/test/unit/deprecated.js +1 -0
  236. data/vendor/assets/components/jquery/test/unit/dimensions.js +461 -0
  237. data/vendor/assets/components/jquery/test/unit/effects.js +2050 -0
  238. data/vendor/assets/components/jquery/test/unit/event.js +2690 -0
  239. data/vendor/assets/components/jquery/test/unit/exports.js +7 -0
  240. data/vendor/assets/components/jquery/test/unit/manipulation.js +2242 -0
  241. data/vendor/assets/components/jquery/test/unit/offset.js +549 -0
  242. data/vendor/assets/components/jquery/test/unit/queue.js +316 -0
  243. data/vendor/assets/components/jquery/test/unit/selector.js +185 -0
  244. data/vendor/assets/components/jquery/test/unit/serialize.js +146 -0
  245. data/vendor/assets/components/jquery/test/unit/support.js +384 -0
  246. data/vendor/assets/components/jquery/test/unit/traversing.js +667 -0
  247. data/vendor/assets/components/jquery/test/xhtml.php +5 -0
  248. data/vendor/assets/components/sir-trevor-js/CHANGELOG.md +44 -0
  249. data/vendor/assets/components/sir-trevor-js/Gemfile +3 -0
  250. data/vendor/assets/components/sir-trevor-js/Gemfile.lock +10 -0
  251. data/vendor/assets/components/sir-trevor-js/Gruntfile.js +109 -0
  252. data/vendor/assets/components/sir-trevor-js/MIT-LICENCE +20 -0
  253. data/vendor/assets/components/sir-trevor-js/Readme.md +84 -0
  254. data/vendor/assets/components/sir-trevor-js/bower.json +21 -0
  255. data/vendor/assets/components/sir-trevor-js/component.json +42 -0
  256. data/vendor/assets/components/sir-trevor-js/contributing.md +74 -0
  257. data/vendor/assets/components/sir-trevor-js/examples-component/component.json +14 -0
  258. data/vendor/assets/components/sir-trevor-js/examples-component/index.html +33 -0
  259. data/vendor/assets/components/sir-trevor-js/examples-component/index.js +29 -0
  260. data/vendor/assets/components/sir-trevor-js/examples-component/javascript/example_block.js +203 -0
  261. data/vendor/assets/components/sir-trevor-js/examples-component/javascript/limit_chars.js +46 -0
  262. data/vendor/assets/components/sir-trevor-js/examples-component/sir-trevor.gif +0 -0
  263. data/vendor/assets/components/sir-trevor-js/locales/cn.js +51 -0
  264. data/vendor/assets/components/sir-trevor-js/locales/de.js +51 -0
  265. data/vendor/assets/components/sir-trevor-js/locales/es.js +51 -0
  266. data/vendor/assets/components/sir-trevor-js/locales/fi.js +51 -0
  267. data/vendor/assets/components/sir-trevor-js/locales/fr.js +51 -0
  268. data/vendor/assets/components/sir-trevor-js/locales/pt.js +52 -0
  269. data/vendor/assets/components/sir-trevor-js/package.json +23 -0
  270. data/vendor/assets/components/sir-trevor-js/sir-trevor-icons.css +6 -0
  271. data/vendor/assets/components/sir-trevor-js/sir-trevor.css +393 -0
  272. data/vendor/assets/components/sir-trevor-js/sir-trevor.css.map +7 -0
  273. data/vendor/assets/components/sir-trevor-js/sir-trevor.js +5481 -0
  274. data/vendor/assets/components/sir-trevor-js/sir-trevor.min.js +13 -0
  275. data/vendor/assets/components/underscore/CNAME +1 -0
  276. data/vendor/assets/components/underscore/CONTRIBUTING.md +9 -0
  277. data/vendor/assets/components/underscore/LICENSE +22 -0
  278. data/vendor/assets/components/underscore/README.md +19 -0
  279. data/vendor/assets/components/underscore/Rakefile +10 -0
  280. data/vendor/assets/components/underscore/docs/docco.css +192 -0
  281. data/vendor/assets/components/underscore/docs/favicon.ico +0 -0
  282. data/vendor/assets/components/underscore/docs/images/background.png +0 -0
  283. data/vendor/assets/components/underscore/docs/images/underscore.png +0 -0
  284. data/vendor/assets/components/underscore/docs/underscore.html +823 -0
  285. data/vendor/assets/components/underscore/favicon.ico +0 -0
  286. data/vendor/assets/components/underscore/index.html +2467 -0
  287. data/vendor/assets/components/underscore/index.js +1 -0
  288. data/vendor/assets/components/underscore/package.json +16 -0
  289. data/vendor/assets/components/underscore/test/arrays.js +200 -0
  290. data/vendor/assets/components/underscore/test/chaining.js +59 -0
  291. data/vendor/assets/components/underscore/test/collections.js +453 -0
  292. data/vendor/assets/components/underscore/test/functions.js +265 -0
  293. data/vendor/assets/components/underscore/test/index.html +44 -0
  294. data/vendor/assets/components/underscore/test/objects.js +570 -0
  295. data/vendor/assets/components/underscore/test/speed.js +75 -0
  296. data/vendor/assets/components/underscore/test/utility.js +266 -0
  297. data/vendor/assets/components/underscore/test/vendor/jquery.js +9404 -0
  298. data/vendor/assets/components/underscore/test/vendor/jslitmus.js +670 -0
  299. data/vendor/assets/components/underscore/test/vendor/qunit.css +235 -0
  300. data/vendor/assets/components/underscore/test/vendor/qunit.js +1977 -0
  301. data/vendor/assets/components/underscore/test/vendor/runner.js +98 -0
  302. data/vendor/assets/components/underscore/underscore-min.js +1 -0
  303. data/vendor/assets/components/underscore/underscore.js +1226 -0
  304. metadata +473 -0
@@ -0,0 +1,169 @@
1
+ jQuery.fn.offset = function( options ) {
2
+ if ( arguments.length ) {
3
+ return options === undefined ?
4
+ this :
5
+ this.each(function( i ) {
6
+ jQuery.offset.setOffset( this, options, i );
7
+ });
8
+ }
9
+
10
+ var docElem, win,
11
+ box = { top: 0, left: 0 },
12
+ elem = this[ 0 ],
13
+ doc = elem && elem.ownerDocument;
14
+
15
+ if ( !doc ) {
16
+ return;
17
+ }
18
+
19
+ docElem = doc.documentElement;
20
+
21
+ // Make sure it's not a disconnected DOM node
22
+ if ( !jQuery.contains( docElem, elem ) ) {
23
+ return box;
24
+ }
25
+
26
+ // If we don't have gBCR, just use 0,0 rather than error
27
+ // BlackBerry 5, iOS 3 (original iPhone)
28
+ if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
29
+ box = elem.getBoundingClientRect();
30
+ }
31
+ win = getWindow( doc );
32
+ return {
33
+ top: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ),
34
+ left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
35
+ };
36
+ };
37
+
38
+ jQuery.offset = {
39
+
40
+ setOffset: function( elem, options, i ) {
41
+ var position = jQuery.css( elem, "position" );
42
+
43
+ // set position first, in-case top/left are set even on static elem
44
+ if ( position === "static" ) {
45
+ elem.style.position = "relative";
46
+ }
47
+
48
+ var curElem = jQuery( elem ),
49
+ curOffset = curElem.offset(),
50
+ curCSSTop = jQuery.css( elem, "top" ),
51
+ curCSSLeft = jQuery.css( elem, "left" ),
52
+ calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
53
+ props = {}, curPosition = {}, curTop, curLeft;
54
+
55
+ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
56
+ if ( calculatePosition ) {
57
+ curPosition = curElem.position();
58
+ curTop = curPosition.top;
59
+ curLeft = curPosition.left;
60
+ } else {
61
+ curTop = parseFloat( curCSSTop ) || 0;
62
+ curLeft = parseFloat( curCSSLeft ) || 0;
63
+ }
64
+
65
+ if ( jQuery.isFunction( options ) ) {
66
+ options = options.call( elem, i, curOffset );
67
+ }
68
+
69
+ if ( options.top != null ) {
70
+ props.top = ( options.top - curOffset.top ) + curTop;
71
+ }
72
+ if ( options.left != null ) {
73
+ props.left = ( options.left - curOffset.left ) + curLeft;
74
+ }
75
+
76
+ if ( "using" in options ) {
77
+ options.using.call( elem, props );
78
+ } else {
79
+ curElem.css( props );
80
+ }
81
+ }
82
+ };
83
+
84
+
85
+ jQuery.fn.extend({
86
+
87
+ position: function() {
88
+ if ( !this[ 0 ] ) {
89
+ return;
90
+ }
91
+
92
+ var offsetParent, offset,
93
+ parentOffset = { top: 0, left: 0 },
94
+ elem = this[ 0 ];
95
+
96
+ // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
97
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
98
+ // we assume that getBoundingClientRect is available when computed position is fixed
99
+ offset = elem.getBoundingClientRect();
100
+ } else {
101
+ // Get *real* offsetParent
102
+ offsetParent = this.offsetParent();
103
+
104
+ // Get correct offsets
105
+ offset = this.offset();
106
+ if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
107
+ parentOffset = offsetParent.offset();
108
+ }
109
+
110
+ // Add offsetParent borders
111
+ parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
112
+ parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
113
+ }
114
+
115
+ // Subtract parent offsets and element margins
116
+ // note: when an element has margin: auto the offsetLeft and marginLeft
117
+ // are the same in Safari causing offset.left to incorrectly be 0
118
+ return {
119
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
120
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
121
+ };
122
+ },
123
+
124
+ offsetParent: function() {
125
+ return this.map(function() {
126
+ var offsetParent = this.offsetParent || document.documentElement;
127
+ while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
128
+ offsetParent = offsetParent.offsetParent;
129
+ }
130
+ return offsetParent || document.documentElement;
131
+ });
132
+ }
133
+ });
134
+
135
+
136
+ // Create scrollLeft and scrollTop methods
137
+ jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
138
+ var top = /Y/.test( prop );
139
+
140
+ jQuery.fn[ method ] = function( val ) {
141
+ return jQuery.access( this, function( elem, method, val ) {
142
+ var win = getWindow( elem );
143
+
144
+ if ( val === undefined ) {
145
+ return win ? (prop in win) ? win[ prop ] :
146
+ win.document.documentElement[ method ] :
147
+ elem[ method ];
148
+ }
149
+
150
+ if ( win ) {
151
+ win.scrollTo(
152
+ !top ? val : jQuery( win ).scrollLeft(),
153
+ top ? val : jQuery( win ).scrollTop()
154
+ );
155
+
156
+ } else {
157
+ elem[ method ] = val;
158
+ }
159
+ }, method, val, arguments.length, null );
160
+ };
161
+ });
162
+
163
+ function getWindow( elem ) {
164
+ return jQuery.isWindow( elem ) ?
165
+ elem :
166
+ elem.nodeType === 9 ?
167
+ elem.defaultView || elem.parentWindow :
168
+ false;
169
+ }
@@ -0,0 +1,2 @@
1
+
2
+ })( window );
@@ -0,0 +1,147 @@
1
+ jQuery.extend({
2
+ queue: function( elem, type, data ) {
3
+ var queue;
4
+
5
+ if ( elem ) {
6
+ type = ( type || "fx" ) + "queue";
7
+ queue = jQuery._data( elem, type );
8
+
9
+ // Speed up dequeue by getting out quickly if this is just a lookup
10
+ if ( data ) {
11
+ if ( !queue || jQuery.isArray(data) ) {
12
+ queue = jQuery._data( elem, type, jQuery.makeArray(data) );
13
+ } else {
14
+ queue.push( data );
15
+ }
16
+ }
17
+ return queue || [];
18
+ }
19
+ },
20
+
21
+ dequeue: function( elem, type ) {
22
+ type = type || "fx";
23
+
24
+ var queue = jQuery.queue( elem, type ),
25
+ startLength = queue.length,
26
+ fn = queue.shift(),
27
+ hooks = jQuery._queueHooks( elem, type ),
28
+ next = function() {
29
+ jQuery.dequeue( elem, type );
30
+ };
31
+
32
+ // If the fx queue is dequeued, always remove the progress sentinel
33
+ if ( fn === "inprogress" ) {
34
+ fn = queue.shift();
35
+ startLength--;
36
+ }
37
+
38
+ hooks.cur = fn;
39
+ if ( fn ) {
40
+
41
+ // Add a progress sentinel to prevent the fx queue from being
42
+ // automatically dequeued
43
+ if ( type === "fx" ) {
44
+ queue.unshift( "inprogress" );
45
+ }
46
+
47
+ // clear up the last queue stop function
48
+ delete hooks.stop;
49
+ fn.call( elem, next, hooks );
50
+ }
51
+
52
+ if ( !startLength && hooks ) {
53
+ hooks.empty.fire();
54
+ }
55
+ },
56
+
57
+ // not intended for public consumption - generates a queueHooks object, or returns the current one
58
+ _queueHooks: function( elem, type ) {
59
+ var key = type + "queueHooks";
60
+ return jQuery._data( elem, key ) || jQuery._data( elem, key, {
61
+ empty: jQuery.Callbacks("once memory").add(function() {
62
+ jQuery._removeData( elem, type + "queue" );
63
+ jQuery._removeData( elem, key );
64
+ })
65
+ });
66
+ }
67
+ });
68
+
69
+ jQuery.fn.extend({
70
+ queue: function( type, data ) {
71
+ var setter = 2;
72
+
73
+ if ( typeof type !== "string" ) {
74
+ data = type;
75
+ type = "fx";
76
+ setter--;
77
+ }
78
+
79
+ if ( arguments.length < setter ) {
80
+ return jQuery.queue( this[0], type );
81
+ }
82
+
83
+ return data === undefined ?
84
+ this :
85
+ this.each(function() {
86
+ var queue = jQuery.queue( this, type, data );
87
+
88
+ // ensure a hooks for this queue
89
+ jQuery._queueHooks( this, type );
90
+
91
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
92
+ jQuery.dequeue( this, type );
93
+ }
94
+ });
95
+ },
96
+ dequeue: function( type ) {
97
+ return this.each(function() {
98
+ jQuery.dequeue( this, type );
99
+ });
100
+ },
101
+ // Based off of the plugin by Clint Helfers, with permission.
102
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
103
+ delay: function( time, type ) {
104
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
105
+ type = type || "fx";
106
+
107
+ return this.queue( type, function( next, hooks ) {
108
+ var timeout = setTimeout( next, time );
109
+ hooks.stop = function() {
110
+ clearTimeout( timeout );
111
+ };
112
+ });
113
+ },
114
+ clearQueue: function( type ) {
115
+ return this.queue( type || "fx", [] );
116
+ },
117
+ // Get a promise resolved when queues of a certain type
118
+ // are emptied (fx is the type by default)
119
+ promise: function( type, obj ) {
120
+ var tmp,
121
+ count = 1,
122
+ defer = jQuery.Deferred(),
123
+ elements = this,
124
+ i = this.length,
125
+ resolve = function() {
126
+ if ( !( --count ) ) {
127
+ defer.resolveWith( elements, [ elements ] );
128
+ }
129
+ };
130
+
131
+ if ( typeof type !== "string" ) {
132
+ obj = type;
133
+ type = undefined;
134
+ }
135
+ type = type || "fx";
136
+
137
+ while( i-- ) {
138
+ tmp = jQuery._data( elements[ i ], type + "queueHooks" );
139
+ if ( tmp && tmp.empty ) {
140
+ count++;
141
+ tmp.empty.add( resolve );
142
+ }
143
+ }
144
+ resolve();
145
+ return defer.promise( obj );
146
+ }
147
+ });
@@ -0,0 +1,99 @@
1
+ var r20 = /%20/g,
2
+ rbracket = /\[\]$/,
3
+ rCRLF = /\r?\n/g,
4
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
5
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
6
+
7
+ jQuery.fn.extend({
8
+ serialize: function() {
9
+ return jQuery.param( this.serializeArray() );
10
+ },
11
+ serializeArray: function() {
12
+ return this.map(function(){
13
+ // Can add propHook for "elements" to filter or add form elements
14
+ var elements = jQuery.prop( this, "elements" );
15
+ return elements ? jQuery.makeArray( elements ) : this;
16
+ })
17
+ .filter(function(){
18
+ var type = this.type;
19
+ // Use .is(":disabled") so that fieldset[disabled] works
20
+ return this.name && !jQuery( this ).is( ":disabled" ) &&
21
+ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
22
+ ( this.checked || !manipulation_rcheckableType.test( type ) );
23
+ })
24
+ .map(function( i, elem ){
25
+ var val = jQuery( this ).val();
26
+
27
+ return val == null ?
28
+ null :
29
+ jQuery.isArray( val ) ?
30
+ jQuery.map( val, function( val ){
31
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
32
+ }) :
33
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
34
+ }).get();
35
+ }
36
+ });
37
+
38
+ //Serialize an array of form elements or a set of
39
+ //key/values into a query string
40
+ jQuery.param = function( a, traditional ) {
41
+ var prefix,
42
+ s = [],
43
+ add = function( key, value ) {
44
+ // If value is a function, invoke it and return its value
45
+ value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
46
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
47
+ };
48
+
49
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
50
+ if ( traditional === undefined ) {
51
+ traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
52
+ }
53
+
54
+ // If an array was passed in, assume that it is an array of form elements.
55
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
56
+ // Serialize the form elements
57
+ jQuery.each( a, function() {
58
+ add( this.name, this.value );
59
+ });
60
+
61
+ } else {
62
+ // If traditional, encode the "old" way (the way 1.3.2 or older
63
+ // did it), otherwise encode params recursively.
64
+ for ( prefix in a ) {
65
+ buildParams( prefix, a[ prefix ], traditional, add );
66
+ }
67
+ }
68
+
69
+ // Return the resulting serialization
70
+ return s.join( "&" ).replace( r20, "+" );
71
+ };
72
+
73
+ function buildParams( prefix, obj, traditional, add ) {
74
+ var name;
75
+
76
+ if ( jQuery.isArray( obj ) ) {
77
+ // Serialize array item.
78
+ jQuery.each( obj, function( i, v ) {
79
+ if ( traditional || rbracket.test( prefix ) ) {
80
+ // Treat each array item as a scalar.
81
+ add( prefix, v );
82
+
83
+ } else {
84
+ // Item is non-scalar (array or object), encode its numeric index.
85
+ buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
86
+ }
87
+ });
88
+
89
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
90
+ // Serialize object item.
91
+ for ( name in obj ) {
92
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
93
+ }
94
+
95
+ } else {
96
+ // Serialize scalar item.
97
+ add( prefix, obj );
98
+ }
99
+ }
@@ -0,0 +1,9 @@
1
+ // Override sizzle attribute retrieval
2
+ Sizzle.attr = jQuery.attr;
3
+ jQuery.find = Sizzle;
4
+ jQuery.expr = Sizzle.selectors;
5
+ jQuery.expr[":"] = jQuery.expr.pseudos;
6
+ jQuery.unique = Sizzle.uniqueSort;
7
+ jQuery.text = Sizzle.getText;
8
+ jQuery.isXMLDoc = Sizzle.isXML;
9
+ jQuery.contains = Sizzle.contains;
@@ -0,0 +1,241 @@
1
+ jQuery.support = (function() {
2
+
3
+ var support, all, a,
4
+ input, select, fragment,
5
+ opt, eventName, isSupported, i,
6
+ div = document.createElement("div");
7
+
8
+ // Setup
9
+ div.setAttribute( "className", "t" );
10
+ div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
11
+
12
+ // Support tests won't run in some limited or non-browser environments
13
+ all = div.getElementsByTagName("*");
14
+ a = div.getElementsByTagName("a")[ 0 ];
15
+ if ( !all || !a || !all.length ) {
16
+ return {};
17
+ }
18
+
19
+ // First batch of tests
20
+ select = document.createElement("select");
21
+ opt = select.appendChild( document.createElement("option") );
22
+ input = div.getElementsByTagName("input")[ 0 ];
23
+
24
+ a.style.cssText = "top:1px;float:left;opacity:.5";
25
+ support = {
26
+ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
27
+ getSetAttribute: div.className !== "t",
28
+
29
+ // IE strips leading whitespace when .innerHTML is used
30
+ leadingWhitespace: div.firstChild.nodeType === 3,
31
+
32
+ // Make sure that tbody elements aren't automatically inserted
33
+ // IE will insert them into empty tables
34
+ tbody: !div.getElementsByTagName("tbody").length,
35
+
36
+ // Make sure that link elements get serialized correctly by innerHTML
37
+ // This requires a wrapper element in IE
38
+ htmlSerialize: !!div.getElementsByTagName("link").length,
39
+
40
+ // Get the style information from getAttribute
41
+ // (IE uses .cssText instead)
42
+ style: /top/.test( a.getAttribute("style") ),
43
+
44
+ // Make sure that URLs aren't manipulated
45
+ // (IE normalizes it by default)
46
+ hrefNormalized: a.getAttribute("href") === "/a",
47
+
48
+ // Make sure that element opacity exists
49
+ // (IE uses filter instead)
50
+ // Use a regex to work around a WebKit issue. See #5145
51
+ opacity: /^0.5/.test( a.style.opacity ),
52
+
53
+ // Verify style float existence
54
+ // (IE uses styleFloat instead of cssFloat)
55
+ cssFloat: !!a.style.cssFloat,
56
+
57
+ // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
58
+ checkOn: !!input.value,
59
+
60
+ // Make sure that a selected-by-default option has a working selected property.
61
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
62
+ optSelected: opt.selected,
63
+
64
+ // Tests for enctype support on a form (#6743)
65
+ enctype: !!document.createElement("form").enctype,
66
+
67
+ // Makes sure cloning an html5 element does not cause problems
68
+ // Where outerHTML is undefined, this still works
69
+ html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
70
+
71
+ // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
72
+ boxModel: document.compatMode === "CSS1Compat",
73
+
74
+ // Will be defined later
75
+ deleteExpando: true,
76
+ noCloneEvent: true,
77
+ inlineBlockNeedsLayout: false,
78
+ shrinkWrapBlocks: false,
79
+ reliableMarginRight: true,
80
+ boxSizingReliable: true,
81
+ pixelPosition: false
82
+ };
83
+
84
+ // Make sure checked status is properly cloned
85
+ input.checked = true;
86
+ support.noCloneChecked = input.cloneNode( true ).checked;
87
+
88
+ // Make sure that the options inside disabled selects aren't marked as disabled
89
+ // (WebKit marks them as disabled)
90
+ select.disabled = true;
91
+ support.optDisabled = !opt.disabled;
92
+
93
+ // Support: IE<9
94
+ try {
95
+ delete div.test;
96
+ } catch( e ) {
97
+ support.deleteExpando = false;
98
+ }
99
+
100
+ // Check if we can trust getAttribute("value")
101
+ input = document.createElement("input");
102
+ input.setAttribute( "value", "" );
103
+ support.input = input.getAttribute( "value" ) === "";
104
+
105
+ // Check if an input maintains its value after becoming a radio
106
+ input.value = "t";
107
+ input.setAttribute( "type", "radio" );
108
+ support.radioValue = input.value === "t";
109
+
110
+ // #11217 - WebKit loses check when the name is after the checked attribute
111
+ input.setAttribute( "checked", "t" );
112
+ input.setAttribute( "name", "t" );
113
+
114
+ fragment = document.createDocumentFragment();
115
+ fragment.appendChild( input );
116
+
117
+ // Check if a disconnected checkbox will retain its checked
118
+ // value of true after appended to the DOM (IE6/7)
119
+ support.appendChecked = input.checked;
120
+
121
+ // WebKit doesn't clone checked state correctly in fragments
122
+ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
123
+
124
+ // Support: IE<9
125
+ // Opera does not clone events (and typeof div.attachEvent === undefined).
126
+ // IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
127
+ if ( div.attachEvent ) {
128
+ div.attachEvent( "onclick", function() {
129
+ support.noCloneEvent = false;
130
+ });
131
+
132
+ div.cloneNode( true ).click();
133
+ }
134
+
135
+ // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
136
+ // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP), test/csp.php
137
+ for ( i in { submit: true, change: true, focusin: true }) {
138
+ div.setAttribute( eventName = "on" + i, "t" );
139
+
140
+ support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
141
+ }
142
+
143
+ div.style.backgroundClip = "content-box";
144
+ div.cloneNode( true ).style.backgroundClip = "";
145
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
146
+
147
+ // Run tests that need a body at doc ready
148
+ jQuery(function() {
149
+ var container, marginDiv, tds,
150
+ divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
151
+ body = document.getElementsByTagName("body")[0];
152
+
153
+ if ( !body ) {
154
+ // Return for frameset docs that don't have a body
155
+ return;
156
+ }
157
+
158
+ container = document.createElement("div");
159
+ container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
160
+
161
+ body.appendChild( container ).appendChild( div );
162
+
163
+ // Support: IE8
164
+ // Check if table cells still have offsetWidth/Height when they are set
165
+ // to display:none and there are still other visible table cells in a
166
+ // table row; if so, offsetWidth/Height are not reliable for use when
167
+ // determining if an element has been hidden directly using
168
+ // display:none (it is still safe to use offsets if a parent element is
169
+ // hidden; don safety goggles and see bug #4512 for more information).
170
+ div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
171
+ tds = div.getElementsByTagName("td");
172
+ tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
173
+ isSupported = ( tds[ 0 ].offsetHeight === 0 );
174
+
175
+ tds[ 0 ].style.display = "";
176
+ tds[ 1 ].style.display = "none";
177
+
178
+ // Support: IE8
179
+ // Check if empty table cells still have offsetWidth/Height
180
+ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
181
+
182
+ // Check box-sizing and margin behavior
183
+ div.innerHTML = "";
184
+ div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
185
+ support.boxSizing = ( div.offsetWidth === 4 );
186
+ support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );
187
+
188
+ // Use window.getComputedStyle because jsdom on node.js will break without it.
189
+ if ( window.getComputedStyle ) {
190
+ support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
191
+ support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
192
+
193
+ // Check if div with explicit width and no margin-right incorrectly
194
+ // gets computed margin-right based on width of container. (#3333)
195
+ // Fails in WebKit before Feb 2011 nightlies
196
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
197
+ marginDiv = div.appendChild( document.createElement("div") );
198
+ marginDiv.style.cssText = div.style.cssText = divReset;
199
+ marginDiv.style.marginRight = marginDiv.style.width = "0";
200
+ div.style.width = "1px";
201
+
202
+ support.reliableMarginRight =
203
+ !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
204
+ }
205
+
206
+ if ( typeof div.style.zoom !== core_strundefined ) {
207
+ // Support: IE<8
208
+ // Check if natively block-level elements act like inline-block
209
+ // elements when setting their display to 'inline' and giving
210
+ // them layout
211
+ div.innerHTML = "";
212
+ div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
213
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
214
+
215
+ // Support: IE6
216
+ // Check if elements with layout shrink-wrap their children
217
+ div.style.display = "block";
218
+ div.innerHTML = "<div></div>";
219
+ div.firstChild.style.width = "5px";
220
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
221
+
222
+ if ( support.inlineBlockNeedsLayout ) {
223
+ // Prevent IE 6 from affecting layout for positioned elements #11048
224
+ // Prevent IE from shrinking the body in IE 7 mode #12869
225
+ // Support: IE<8
226
+ body.style.zoom = 1;
227
+ }
228
+ }
229
+
230
+ body.removeChild( container );
231
+
232
+ // Null elements to avoid leaks in IE
233
+ container = div = tds = marginDiv = null;
234
+ });
235
+
236
+ // Null elements to avoid leaks in IE
237
+ all = select = fragment = opt = a = input = null;
238
+
239
+ return support;
240
+ })();
241
+