bastion 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (278) hide show
  1. checksums.yaml +15 -0
  2. data/.jshintrc +35 -0
  3. data/Gruntfile.js +24 -0
  4. data/LICENSE +339 -0
  5. data/README.md +8 -0
  6. data/Rakefile +53 -0
  7. data/app/assets/javascripts/bastion/auth/auth.module.js +87 -0
  8. data/app/assets/javascripts/bastion/auth/authorization.service.js +48 -0
  9. data/app/assets/javascripts/bastion/bastion-bootstrap.js +32 -0
  10. data/app/assets/javascripts/bastion/bastion-resource.factory.js +39 -0
  11. data/app/assets/javascripts/bastion/bastion.js +52 -0
  12. data/app/assets/javascripts/bastion/bastion.module.js +213 -0
  13. data/app/assets/javascripts/bastion/i18n/README +9 -0
  14. data/app/assets/javascripts/bastion/i18n/i18n.module.js +24 -0
  15. data/app/assets/javascripts/bastion/i18n/katello.pot +968 -0
  16. data/app/assets/javascripts/bastion/i18n/locale/README +1 -0
  17. data/app/assets/javascripts/bastion/i18n/translate.service.js +14 -0
  18. data/app/assets/javascripts/bastion/i18n/translations.js +3 -0
  19. data/app/assets/javascripts/bastion/i18n/zanata.xml +28 -0
  20. data/app/assets/javascripts/bastion/incubator/alch-alert.directive.js +67 -0
  21. data/app/assets/javascripts/bastion/incubator/alch-container-scroll.directive.js +44 -0
  22. data/app/assets/javascripts/bastion/incubator/alch-dropdown.directive.js +28 -0
  23. data/app/assets/javascripts/bastion/incubator/alch-edit.directive.js +361 -0
  24. data/app/assets/javascripts/bastion/incubator/alch-flyout.directive.js +19 -0
  25. data/app/assets/javascripts/bastion/incubator/alch-form-buttons.directive.js +60 -0
  26. data/app/assets/javascripts/bastion/incubator/alch-form-group.directive.js +87 -0
  27. data/app/assets/javascripts/bastion/incubator/alch-infinite-scroll.directive.js +84 -0
  28. data/app/assets/javascripts/bastion/incubator/alch-menu.directive.js +56 -0
  29. data/app/assets/javascripts/bastion/incubator/alch-modal.directive.js +80 -0
  30. data/app/assets/javascripts/bastion/incubator/alch-save-control.directive.js +42 -0
  31. data/app/assets/javascripts/bastion/incubator/alch-table.directive.js +295 -0
  32. data/app/assets/javascripts/bastion/incubator/format/alch-format.module.js +21 -0
  33. data/app/assets/javascripts/bastion/incubator/format/array-to-string.filter.js +30 -0
  34. data/app/assets/javascripts/bastion/incubator/format/boolean-to-yes-no.filter.js +34 -0
  35. data/app/assets/javascripts/bastion/incubator/format/capitalize.filter.js +32 -0
  36. data/app/assets/javascripts/bastion/incubator/format/key-value-to-string.filter.js +40 -0
  37. data/app/assets/javascripts/bastion/incubator/format/unlimitedFilter.filter.js +35 -0
  38. data/app/assets/javascripts/bastion/incubator/stylesheets/alch-edit.scss +34 -0
  39. data/app/assets/javascripts/bastion/incubator/stylesheets/header.scss +207 -0
  40. data/app/assets/javascripts/bastion/incubator/views/alch-alert.html +6 -0
  41. data/app/assets/javascripts/bastion/incubator/views/alch-dropdown.html +19 -0
  42. data/app/assets/javascripts/bastion/incubator/views/alch-edit-add-item.html +21 -0
  43. data/app/assets/javascripts/bastion/incubator/views/alch-edit-add-remove-cancel.html +28 -0
  44. data/app/assets/javascripts/bastion/incubator/views/alch-edit-checkbox.html +6 -0
  45. data/app/assets/javascripts/bastion/incubator/views/alch-edit-custom.html +8 -0
  46. data/app/assets/javascripts/bastion/incubator/views/alch-edit-multiselect.html +17 -0
  47. data/app/assets/javascripts/bastion/incubator/views/alch-edit-save-cancel.html +20 -0
  48. data/app/assets/javascripts/bastion/incubator/views/alch-edit-select.html +10 -0
  49. data/app/assets/javascripts/bastion/incubator/views/alch-edit-text.html +6 -0
  50. data/app/assets/javascripts/bastion/incubator/views/alch-edit-textarea.html +6 -0
  51. data/app/assets/javascripts/bastion/incubator/views/alch-edit.html +18 -0
  52. data/app/assets/javascripts/bastion/incubator/views/alch-flyout.html +10 -0
  53. data/app/assets/javascripts/bastion/incubator/views/alch-form-buttons.html +10 -0
  54. data/app/assets/javascripts/bastion/incubator/views/alch-form-group.html +9 -0
  55. data/app/assets/javascripts/bastion/incubator/views/alch-menu.html +18 -0
  56. data/app/assets/javascripts/bastion/incubator/views/alch-modal-remove.html +13 -0
  57. data/app/assets/javascripts/bastion/incubator/views/alch-save-control.html +18 -0
  58. data/app/assets/javascripts/bastion/layouts/details-nutupane.html +73 -0
  59. data/app/assets/javascripts/bastion/layouts/nutupane.html +63 -0
  60. data/app/assets/javascripts/bastion/layouts/select-all-results.html +9 -0
  61. data/app/assets/javascripts/bastion/menu/menu-expander.service.js +51 -0
  62. data/app/assets/javascripts/bastion/menu/menu.module.js +26 -0
  63. data/app/assets/javascripts/bastion/utils/as.filter.js +33 -0
  64. data/app/assets/javascripts/bastion/utils/form-utils.service.js +53 -0
  65. data/app/assets/javascripts/bastion/utils/utils.module.js +21 -0
  66. data/app/assets/javascripts/bastion/widgets/current-tasks.directive.js +67 -0
  67. data/app/assets/javascripts/bastion/widgets/nutupane-table.directive.js +59 -0
  68. data/app/assets/javascripts/bastion/widgets/nutupane.factory.js +316 -0
  69. data/app/assets/javascripts/bastion/widgets/page-title.directive.js +61 -0
  70. data/app/assets/javascripts/bastion/widgets/page-title.service.js +42 -0
  71. data/app/assets/javascripts/bastion/widgets/path-selector.directive.js +109 -0
  72. data/app/assets/javascripts/bastion/widgets/views/current-tasks.html +23 -0
  73. data/app/assets/javascripts/bastion/widgets/views/path-selector.html +11 -0
  74. data/app/assets/javascripts/bastion/widgets/widgets.module.js +24 -0
  75. data/app/assets/stylesheets/bastion/animations.less +15 -0
  76. data/app/assets/stylesheets/bastion/bastion.less +160 -0
  77. data/app/assets/stylesheets/bastion/forms.less +41 -0
  78. data/app/assets/stylesheets/bastion/gpg-keys.less +36 -0
  79. data/app/assets/stylesheets/bastion/helpers.less +6 -0
  80. data/app/assets/stylesheets/bastion/mixins.less +15 -0
  81. data/app/assets/stylesheets/bastion/nutupane.less +382 -0
  82. data/app/assets/stylesheets/bastion/overrides.less +54 -0
  83. data/app/assets/stylesheets/bastion/path-selector.less +123 -0
  84. data/app/assets/stylesheets/bastion/systems.less +35 -0
  85. data/app/assets/stylesheets/bastion/tasks.less +23 -0
  86. data/app/assets/stylesheets/bastion/typography.less +31 -0
  87. data/app/assets/stylesheets/bastion/variables.less +3 -0
  88. data/app/controllers/bastion/bastion_controller.rb +24 -0
  89. data/app/views/bastion/layouts/application.html.erb +32 -0
  90. data/app/views/bastion/layouts/application_ie.html.erb +5 -0
  91. data/bastion.js +26 -0
  92. data/bower.json +94 -0
  93. data/config/routes.rb +25 -0
  94. data/config/routes/mount_engine.rb +3 -0
  95. data/grunt/bower.js +20 -0
  96. data/grunt/htmlhint.js +15 -0
  97. data/grunt/jshint.js +9 -0
  98. data/grunt/karma.js +83 -0
  99. data/lib/bastion.rb +17 -0
  100. data/lib/bastion/engine.rb +37 -0
  101. data/lib/bastion/version.rb +3 -0
  102. data/package.json +29 -0
  103. data/test/auth/authorization.service.test.js +63 -0
  104. data/test/bastion/bastion-resource.factory.test.js +31 -0
  105. data/test/bastion/test-constants.js +30 -0
  106. data/test/i18n/translate.service.test.js +31 -0
  107. data/test/incubator/alch-alert.directive.test.js +84 -0
  108. data/test/incubator/alch-container-scroll.directive.test.js +68 -0
  109. data/test/incubator/alch-dropdown.directive.test.js +113 -0
  110. data/test/incubator/alch-edit.directive.test.js +320 -0
  111. data/test/incubator/alch-flyout.directive.test.js +73 -0
  112. data/test/incubator/alch-form-buttons.directive.test.js +55 -0
  113. data/test/incubator/alch-form-group.directive.test.js +76 -0
  114. data/test/incubator/alch-infinite-scroll.directive.test.js +123 -0
  115. data/test/incubator/alch-menu.directive.test.js +94 -0
  116. data/test/incubator/alch-modal.directive.test.js +81 -0
  117. data/test/incubator/alch-table.directive.test.js +270 -0
  118. data/test/incubator/format/array-to-string.filter.test.js +38 -0
  119. data/test/incubator/format/boolean-to-yes-no.filter.test.js +41 -0
  120. data/test/incubator/format/capitalize.filter.test.js +35 -0
  121. data/test/incubator/format/key-value-to-string.filter.test.js +60 -0
  122. data/test/incubator/format/unlimited-filter.filter.test.js +31 -0
  123. data/test/incubator/nutupane-table.directive.test.js +69 -0
  124. data/test/incubator/nutupane.factory.test.js +307 -0
  125. data/test/menu/menu-expander.service.test.js +74 -0
  126. data/test/test-mocks.module.js +268 -0
  127. data/test/utils/as.filter.test.js +33 -0
  128. data/test/utils/form-utils.service.test.js +52 -0
  129. data/test/widgets/page-title.directive.test.js +54 -0
  130. data/test/widgets/page-title.service.test.js +51 -0
  131. data/test/widgets/path-selector.directive.test.js +136 -0
  132. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.eot +0 -0
  133. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.svg +229 -0
  134. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  135. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.woff +0 -0
  136. data/vendor/assets/fonts/bastion/font-awesome/FontAwesome.otf +0 -0
  137. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.eot +0 -0
  138. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.svg +399 -0
  139. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.ttf +0 -0
  140. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.woff +0 -0
  141. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.eot +0 -0
  142. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.svg +146 -0
  143. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.ttf +0 -0
  144. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.woff +0 -0
  145. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.eot +0 -0
  146. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.svg +146 -0
  147. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.ttf +0 -0
  148. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.woff +0 -0
  149. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.eot +0 -0
  150. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.svg +146 -0
  151. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.ttf +0 -0
  152. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.woff +0 -0
  153. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.eot +0 -0
  154. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.svg +146 -0
  155. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.ttf +0 -0
  156. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.woff +0 -0
  157. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.eot +0 -0
  158. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.svg +146 -0
  159. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.ttf +0 -0
  160. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.woff +0 -0
  161. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.eot +0 -0
  162. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.svg +146 -0
  163. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.ttf +0 -0
  164. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.woff +0 -0
  165. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.eot +0 -0
  166. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.svg +146 -0
  167. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.ttf +0 -0
  168. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.woff +0 -0
  169. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.eot +0 -0
  170. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.svg +146 -0
  171. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.ttf +0 -0
  172. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.woff +0 -0
  173. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.eot +0 -0
  174. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.svg +146 -0
  175. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.ttf +0 -0
  176. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.woff +0 -0
  177. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.eot +0 -0
  178. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.svg +146 -0
  179. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  180. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.woff +0 -0
  181. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.eot +0 -0
  182. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.svg +454 -0
  183. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.ttf +0 -0
  184. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.woff +0 -0
  185. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.eot +0 -0
  186. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.svg +454 -0
  187. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.ttf +0 -0
  188. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.woff +0 -0
  189. data/vendor/assets/javascripts/bastion/alchemy/alchemy.js +20 -0
  190. data/vendor/assets/javascripts/bastion/angular-animate/angular-animate.js +1226 -0
  191. data/vendor/assets/javascripts/bastion/angular-blocks/angular-blocks.js +79 -0
  192. data/vendor/assets/javascripts/bastion/angular-bootstrap/ui-bootstrap-tpls.js +3677 -0
  193. data/vendor/assets/javascripts/bastion/angular-bootstrap/ui-bootstrap.js +3427 -0
  194. data/vendor/assets/javascripts/bastion/angular-gettext/angular-gettext.js +345 -0
  195. data/vendor/assets/javascripts/bastion/angular-resource/angular-resource.js +594 -0
  196. data/vendor/assets/javascripts/bastion/angular-route/angular-route.js +920 -0
  197. data/vendor/assets/javascripts/bastion/angular-sanitize/angular-sanitize.js +622 -0
  198. data/vendor/assets/javascripts/bastion/angular-ui-bootstrap/datepicker.js +447 -0
  199. data/vendor/assets/javascripts/bastion/angular-ui-bootstrap/timepicker.js +232 -0
  200. data/vendor/assets/javascripts/bastion/angular-ui-router/angular-ui-router.js +3223 -0
  201. data/vendor/assets/javascripts/bastion/angular-uuid4/angular-uuid4.js +21 -0
  202. data/vendor/assets/javascripts/bastion/angular/angular.js +20560 -0
  203. data/vendor/assets/javascripts/bastion/es5-shim/es5-shim.js +1216 -0
  204. data/vendor/assets/javascripts/bastion/json3/json3.js +861 -0
  205. data/vendor/assets/javascripts/bastion/ngUpload/ng-upload.js +205 -0
  206. data/vendor/assets/javascripts/bastion/underscore/underscore.js +1276 -0
  207. data/vendor/assets/stylesheets/bastion/alchemy/_colors.scss +99 -0
  208. data/vendor/assets/stylesheets/bastion/alchemy/_media_object.scss +22 -0
  209. data/vendor/assets/stylesheets/bastion/alchemy/_mixins.scss +24 -0
  210. data/vendor/assets/stylesheets/bastion/alchemy/_normalize.scss +396 -0
  211. data/vendor/assets/stylesheets/bastion/alchemy/_vars.scss +31 -0
  212. data/vendor/assets/stylesheets/bastion/alchemy/alchemy.scss +8 -0
  213. data/vendor/assets/stylesheets/bastion/bootstrap/alerts.less +67 -0
  214. data/vendor/assets/stylesheets/bastion/bootstrap/badges.less +51 -0
  215. data/vendor/assets/stylesheets/bastion/bootstrap/bootstrap.less +49 -0
  216. data/vendor/assets/stylesheets/bastion/bootstrap/breadcrumbs.less +23 -0
  217. data/vendor/assets/stylesheets/bastion/bootstrap/button-groups.less +227 -0
  218. data/vendor/assets/stylesheets/bastion/bootstrap/buttons.less +155 -0
  219. data/vendor/assets/stylesheets/bastion/bootstrap/carousel.less +232 -0
  220. data/vendor/assets/stylesheets/bastion/bootstrap/close.less +33 -0
  221. data/vendor/assets/stylesheets/bastion/bootstrap/code.less +53 -0
  222. data/vendor/assets/stylesheets/bastion/bootstrap/component-animations.less +29 -0
  223. data/vendor/assets/stylesheets/bastion/bootstrap/dropdowns.less +187 -0
  224. data/vendor/assets/stylesheets/bastion/bootstrap/forms.less +375 -0
  225. data/vendor/assets/stylesheets/bastion/bootstrap/glyphicons.less +237 -0
  226. data/vendor/assets/stylesheets/bastion/bootstrap/grid.less +79 -0
  227. data/vendor/assets/stylesheets/bastion/bootstrap/input-groups.less +136 -0
  228. data/vendor/assets/stylesheets/bastion/bootstrap/jumbotron.less +46 -0
  229. data/vendor/assets/stylesheets/bastion/bootstrap/labels.less +64 -0
  230. data/vendor/assets/stylesheets/bastion/bootstrap/list-group.less +88 -0
  231. data/vendor/assets/stylesheets/bastion/bootstrap/media.less +56 -0
  232. data/vendor/assets/stylesheets/bastion/bootstrap/mixins.less +845 -0
  233. data/vendor/assets/stylesheets/bastion/bootstrap/modals.less +129 -0
  234. data/vendor/assets/stylesheets/bastion/bootstrap/navbar.less +612 -0
  235. data/vendor/assets/stylesheets/bastion/bootstrap/navs.less +242 -0
  236. data/vendor/assets/stylesheets/bastion/bootstrap/normalize.less +406 -0
  237. data/vendor/assets/stylesheets/bastion/bootstrap/pager.less +55 -0
  238. data/vendor/assets/stylesheets/bastion/bootstrap/pagination.less +85 -0
  239. data/vendor/assets/stylesheets/bastion/bootstrap/panels.less +182 -0
  240. data/vendor/assets/stylesheets/bastion/bootstrap/popovers.less +133 -0
  241. data/vendor/assets/stylesheets/bastion/bootstrap/print.less +105 -0
  242. data/vendor/assets/stylesheets/bastion/bootstrap/progress-bars.less +80 -0
  243. data/vendor/assets/stylesheets/bastion/bootstrap/responsive-utilities.less +209 -0
  244. data/vendor/assets/stylesheets/bastion/bootstrap/scaffolding.less +119 -0
  245. data/vendor/assets/stylesheets/bastion/bootstrap/tables.less +231 -0
  246. data/vendor/assets/stylesheets/bastion/bootstrap/theme.less +247 -0
  247. data/vendor/assets/stylesheets/bastion/bootstrap/thumbnails.less +36 -0
  248. data/vendor/assets/stylesheets/bastion/bootstrap/tooltip.less +95 -0
  249. data/vendor/assets/stylesheets/bastion/bootstrap/type.less +281 -0
  250. data/vendor/assets/stylesheets/bastion/bootstrap/utilities.less +56 -0
  251. data/vendor/assets/stylesheets/bastion/bootstrap/variables.less +642 -0
  252. data/vendor/assets/stylesheets/bastion/bootstrap/wells.less +29 -0
  253. data/vendor/assets/stylesheets/bastion/font-awesome/less/bootstrap.less +84 -0
  254. data/vendor/assets/stylesheets/bastion/font-awesome/less/core.less +129 -0
  255. data/vendor/assets/stylesheets/bastion/font-awesome/less/extras.less +93 -0
  256. data/vendor/assets/stylesheets/bastion/font-awesome/less/font-awesome-ie7.less +1953 -0
  257. data/vendor/assets/stylesheets/bastion/font-awesome/less/font-awesome.less +33 -0
  258. data/vendor/assets/stylesheets/bastion/font-awesome/less/icons.less +381 -0
  259. data/vendor/assets/stylesheets/bastion/font-awesome/less/mixins.less +48 -0
  260. data/vendor/assets/stylesheets/bastion/font-awesome/less/path.less +14 -0
  261. data/vendor/assets/stylesheets/bastion/font-awesome/less/variables.less +735 -0
  262. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_bootstrap.scss +84 -0
  263. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_core.scss +129 -0
  264. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_extras.scss +93 -0
  265. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_icons.scss +381 -0
  266. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_mixins.scss +48 -0
  267. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_path.scss +14 -0
  268. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_variables.scss +734 -0
  269. data/vendor/assets/stylesheets/bastion/font-awesome/scss/font-awesome-ie7.scss +1953 -0
  270. data/vendor/assets/stylesheets/bastion/font-awesome/scss/font-awesome.scss +33 -0
  271. data/vendor/assets/stylesheets/bastion/rcue/buttons.less +44 -0
  272. data/vendor/assets/stylesheets/bastion/rcue/fonts.less +52 -0
  273. data/vendor/assets/stylesheets/bastion/rcue/forms.less +19 -0
  274. data/vendor/assets/stylesheets/bastion/rcue/mixins.less +50 -0
  275. data/vendor/assets/stylesheets/bastion/rcue/navbar.less +481 -0
  276. data/vendor/assets/stylesheets/bastion/rcue/rcue.less +15 -0
  277. data/vendor/assets/stylesheets/bastion/rcue/variables.less +47 -0
  278. metadata +376 -0
@@ -0,0 +1,1216 @@
1
+ // Copyright 2009-2012 by contributors, MIT License
2
+ // vim: ts=4 sts=4 sw=4 expandtab
3
+
4
+ // Module systems magic dance
5
+ (function (definition) {
6
+ // RequireJS
7
+ if (typeof define == "function") {
8
+ define(definition);
9
+ // YUI3
10
+ } else if (typeof YUI == "function") {
11
+ YUI.add("es5", definition);
12
+ // CommonJS and <script>
13
+ } else {
14
+ definition();
15
+ }
16
+ })(function () {
17
+
18
+ /**
19
+ * Brings an environment as close to ECMAScript 5 compliance
20
+ * as is possible with the facilities of erstwhile engines.
21
+ *
22
+ * Annotated ES5: http://es5.github.com/ (specific links below)
23
+ * ES5 Spec: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
24
+ * Required reading: http://javascriptweblog.wordpress.com/2011/12/05/extending-javascript-natives/
25
+ */
26
+
27
+ //
28
+ // Function
29
+ // ========
30
+ //
31
+
32
+ // ES-5 15.3.4.5
33
+ // http://es5.github.com/#x15.3.4.5
34
+
35
+ function Empty() {}
36
+
37
+ if (!Function.prototype.bind) {
38
+ Function.prototype.bind = function bind(that) { // .length is 1
39
+ // 1. Let Target be the this value.
40
+ var target = this;
41
+ // 2. If IsCallable(Target) is false, throw a TypeError exception.
42
+ if (typeof target != "function") {
43
+ throw new TypeError("Function.prototype.bind called on incompatible " + target);
44
+ }
45
+ // 3. Let A be a new (possibly empty) internal list of all of the
46
+ // argument values provided after thisArg (arg1, arg2 etc), in order.
47
+ // XXX slicedArgs will stand in for "A" if used
48
+ var args = _Array_slice_.call(arguments, 1); // for normal call
49
+ // 4. Let F be a new native ECMAScript object.
50
+ // 11. Set the [[Prototype]] internal property of F to the standard
51
+ // built-in Function prototype object as specified in 15.3.3.1.
52
+ // 12. Set the [[Call]] internal property of F as described in
53
+ // 15.3.4.5.1.
54
+ // 13. Set the [[Construct]] internal property of F as described in
55
+ // 15.3.4.5.2.
56
+ // 14. Set the [[HasInstance]] internal property of F as described in
57
+ // 15.3.4.5.3.
58
+ var bound = function () {
59
+
60
+ if (this instanceof bound) {
61
+ // 15.3.4.5.2 [[Construct]]
62
+ // When the [[Construct]] internal method of a function object,
63
+ // F that was created using the bind function is called with a
64
+ // list of arguments ExtraArgs, the following steps are taken:
65
+ // 1. Let target be the value of F's [[TargetFunction]]
66
+ // internal property.
67
+ // 2. If target has no [[Construct]] internal method, a
68
+ // TypeError exception is thrown.
69
+ // 3. Let boundArgs be the value of F's [[BoundArgs]] internal
70
+ // property.
71
+ // 4. Let args be a new list containing the same values as the
72
+ // list boundArgs in the same order followed by the same
73
+ // values as the list ExtraArgs in the same order.
74
+ // 5. Return the result of calling the [[Construct]] internal
75
+ // method of target providing args as the arguments.
76
+
77
+ var result = target.apply(
78
+ this,
79
+ args.concat(_Array_slice_.call(arguments))
80
+ );
81
+ if (Object(result) === result) {
82
+ return result;
83
+ }
84
+ return this;
85
+
86
+ } else {
87
+ // 15.3.4.5.1 [[Call]]
88
+ // When the [[Call]] internal method of a function object, F,
89
+ // which was created using the bind function is called with a
90
+ // this value and a list of arguments ExtraArgs, the following
91
+ // steps are taken:
92
+ // 1. Let boundArgs be the value of F's [[BoundArgs]] internal
93
+ // property.
94
+ // 2. Let boundThis be the value of F's [[BoundThis]] internal
95
+ // property.
96
+ // 3. Let target be the value of F's [[TargetFunction]] internal
97
+ // property.
98
+ // 4. Let args be a new list containing the same values as the
99
+ // list boundArgs in the same order followed by the same
100
+ // values as the list ExtraArgs in the same order.
101
+ // 5. Return the result of calling the [[Call]] internal method
102
+ // of target providing boundThis as the this value and
103
+ // providing args as the arguments.
104
+
105
+ // equiv: target.call(this, ...boundArgs, ...args)
106
+ return target.apply(
107
+ that,
108
+ args.concat(_Array_slice_.call(arguments))
109
+ );
110
+
111
+ }
112
+
113
+ };
114
+ if(target.prototype) {
115
+ Empty.prototype = target.prototype;
116
+ bound.prototype = new Empty();
117
+ // Clean up dangling references.
118
+ Empty.prototype = null;
119
+ }
120
+ // XXX bound.length is never writable, so don't even try
121
+ //
122
+ // 15. If the [[Class]] internal property of Target is "Function", then
123
+ // a. Let L be the length property of Target minus the length of A.
124
+ // b. Set the length own property of F to either 0 or L, whichever is
125
+ // larger.
126
+ // 16. Else set the length own property of F to 0.
127
+ // 17. Set the attributes of the length own property of F to the values
128
+ // specified in 15.3.5.1.
129
+
130
+ // TODO
131
+ // 18. Set the [[Extensible]] internal property of F to true.
132
+
133
+ // TODO
134
+ // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).
135
+ // 20. Call the [[DefineOwnProperty]] internal method of F with
136
+ // arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]:
137
+ // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and
138
+ // false.
139
+ // 21. Call the [[DefineOwnProperty]] internal method of F with
140
+ // arguments "arguments", PropertyDescriptor {[[Get]]: thrower,
141
+ // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},
142
+ // and false.
143
+
144
+ // TODO
145
+ // NOTE Function objects created using Function.prototype.bind do not
146
+ // have a prototype property or the [[Code]], [[FormalParameters]], and
147
+ // [[Scope]] internal properties.
148
+ // XXX can't delete prototype in pure-js.
149
+
150
+ // 22. Return F.
151
+ return bound;
152
+ };
153
+ }
154
+
155
+ // Shortcut to an often accessed properties, in order to avoid multiple
156
+ // dereference that costs universally.
157
+ // _Please note: Shortcuts are defined after `Function.prototype.bind` as we
158
+ // us it in defining shortcuts.
159
+ var call = Function.prototype.call;
160
+ var prototypeOfArray = Array.prototype;
161
+ var prototypeOfObject = Object.prototype;
162
+ var _Array_slice_ = prototypeOfArray.slice;
163
+ // Having a toString local variable name breaks in Opera so use _toString.
164
+ var _toString = call.bind(prototypeOfObject.toString);
165
+ var owns = call.bind(prototypeOfObject.hasOwnProperty);
166
+
167
+ // If JS engine supports accessors creating shortcuts.
168
+ var defineGetter;
169
+ var defineSetter;
170
+ var lookupGetter;
171
+ var lookupSetter;
172
+ var supportsAccessors;
173
+ if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {
174
+ defineGetter = call.bind(prototypeOfObject.__defineGetter__);
175
+ defineSetter = call.bind(prototypeOfObject.__defineSetter__);
176
+ lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);
177
+ lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);
178
+ }
179
+
180
+ //
181
+ // Array
182
+ // =====
183
+ //
184
+
185
+ // ES5 15.4.4.12
186
+ // http://es5.github.com/#x15.4.4.12
187
+ // Default value for second param
188
+ // [bugfix, ielt9, old browsers]
189
+ // IE < 9 bug: [1,2].splice(0).join("") == "" but should be "12"
190
+ if ([1,2].splice(0).length != 2) {
191
+ var array_splice = Array.prototype.splice;
192
+
193
+ if(function() { // test IE < 9 to splice bug - see issue #138
194
+ function makeArray(l) {
195
+ var a = [];
196
+ while (l--) {
197
+ a.unshift(l)
198
+ }
199
+ return a
200
+ }
201
+
202
+ var array = []
203
+ , lengthBefore
204
+ ;
205
+
206
+ array.splice.bind(array, 0, 0).apply(null, makeArray(20));
207
+ array.splice.bind(array, 0, 0).apply(null, makeArray(26));
208
+
209
+ lengthBefore = array.length; //20
210
+ array.splice(5, 0, "XXX"); // add one element
211
+
212
+ if(lengthBefore + 1 == array.length) {
213
+ return true;// has right splice implementation without bugs
214
+ }
215
+ // else {
216
+ // IE8 bug
217
+ // }
218
+ }()) {//IE 6/7
219
+ Array.prototype.splice = function(start, deleteCount) {
220
+ if (!arguments.length) {
221
+ return [];
222
+ } else {
223
+ return array_splice.apply(this, [
224
+ start === void 0 ? 0 : start,
225
+ deleteCount === void 0 ? (this.length - start) : deleteCount
226
+ ].concat(_Array_slice_.call(arguments, 2)))
227
+ }
228
+ };
229
+ }
230
+ else {//IE8
231
+ Array.prototype.splice = function(start, deleteCount) {
232
+ var result
233
+ , args = _Array_slice_.call(arguments, 2)
234
+ , addElementsCount = args.length
235
+ ;
236
+
237
+ if(!arguments.length) {
238
+ return [];
239
+ }
240
+
241
+ if(start === void 0) { // default
242
+ start = 0;
243
+ }
244
+ if(deleteCount === void 0) { // default
245
+ deleteCount = this.length - start;
246
+ }
247
+
248
+ if(addElementsCount > 0) {
249
+ if(deleteCount <= 0) {
250
+ if(start == this.length) { // tiny optimisation #1
251
+ this.push.apply(this, args);
252
+ return [];
253
+ }
254
+
255
+ if(start == 0) { // tiny optimisation #2
256
+ this.unshift.apply(this, args);
257
+ return [];
258
+ }
259
+ }
260
+
261
+ // Array.prototype.splice implementation
262
+ result = _Array_slice_.call(this, start, start + deleteCount);// delete part
263
+ args.push.apply(args, _Array_slice_.call(this, start + deleteCount, this.length));// right part
264
+ args.unshift.apply(args, _Array_slice_.call(this, 0, start));// left part
265
+
266
+ // delete all items from this array and replace it to 'left part' + _Array_slice_.call(arguments, 2) + 'right part'
267
+ args.unshift(0, this.length);
268
+
269
+ array_splice.apply(this, args);
270
+
271
+ return result;
272
+ }
273
+
274
+ return array_splice.call(this, start, deleteCount);
275
+ }
276
+
277
+ }
278
+ }
279
+
280
+ // ES5 15.4.4.12
281
+ // http://es5.github.com/#x15.4.4.13
282
+ // Return len+argCount.
283
+ // [bugfix, ielt8]
284
+ // IE < 8 bug: [].unshift(0) == undefined but should be "1"
285
+ if ([].unshift(0) != 1) {
286
+ var array_unshift = Array.prototype.unshift;
287
+ Array.prototype.unshift = function() {
288
+ array_unshift.apply(this, arguments);
289
+ return this.length;
290
+ };
291
+ }
292
+
293
+ // ES5 15.4.3.2
294
+ // http://es5.github.com/#x15.4.3.2
295
+ // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray
296
+ if (!Array.isArray) {
297
+ Array.isArray = function isArray(obj) {
298
+ return _toString(obj) == "[object Array]";
299
+ };
300
+ }
301
+
302
+ // The IsCallable() check in the Array functions
303
+ // has been replaced with a strict check on the
304
+ // internal class of the object to trap cases where
305
+ // the provided function was actually a regular
306
+ // expression literal, which in V8 and
307
+ // JavaScriptCore is a typeof "function". Only in
308
+ // V8 are regular expression literals permitted as
309
+ // reduce parameters, so it is desirable in the
310
+ // general case for the shim to match the more
311
+ // strict and common behavior of rejecting regular
312
+ // expressions.
313
+
314
+ // ES5 15.4.4.18
315
+ // http://es5.github.com/#x15.4.4.18
316
+ // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/forEach
317
+
318
+ // Check failure of by-index access of string characters (IE < 9)
319
+ // and failure of `0 in boxedString` (Rhino)
320
+ var boxedString = Object("a"),
321
+ splitString = boxedString[0] != "a" || !(0 in boxedString);
322
+
323
+ if (!Array.prototype.forEach) {
324
+ Array.prototype.forEach = function forEach(fun /*, thisp*/) {
325
+ var object = toObject(this),
326
+ self = splitString && _toString(this) == "[object String]" ?
327
+ this.split("") :
328
+ object,
329
+ thisp = arguments[1],
330
+ i = -1,
331
+ length = self.length >>> 0;
332
+
333
+ // If no callback function or if callback is not a callable function
334
+ if (_toString(fun) != "[object Function]") {
335
+ throw new TypeError(); // TODO message
336
+ }
337
+
338
+ while (++i < length) {
339
+ if (i in self) {
340
+ // Invoke the callback function with call, passing arguments:
341
+ // context, property value, property key, thisArg object
342
+ // context
343
+ fun.call(thisp, self[i], i, object);
344
+ }
345
+ }
346
+ };
347
+ }
348
+
349
+ // ES5 15.4.4.19
350
+ // http://es5.github.com/#x15.4.4.19
351
+ // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map
352
+ if (!Array.prototype.map) {
353
+ Array.prototype.map = function map(fun /*, thisp*/) {
354
+ var object = toObject(this),
355
+ self = splitString && _toString(this) == "[object String]" ?
356
+ this.split("") :
357
+ object,
358
+ length = self.length >>> 0,
359
+ result = Array(length),
360
+ thisp = arguments[1];
361
+
362
+ // If no callback function or if callback is not a callable function
363
+ if (_toString(fun) != "[object Function]") {
364
+ throw new TypeError(fun + " is not a function");
365
+ }
366
+
367
+ for (var i = 0; i < length; i++) {
368
+ if (i in self)
369
+ result[i] = fun.call(thisp, self[i], i, object);
370
+ }
371
+ return result;
372
+ };
373
+ }
374
+
375
+ // ES5 15.4.4.20
376
+ // http://es5.github.com/#x15.4.4.20
377
+ // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter
378
+ if (!Array.prototype.filter) {
379
+ Array.prototype.filter = function filter(fun /*, thisp */) {
380
+ var object = toObject(this),
381
+ self = splitString && _toString(this) == "[object String]" ?
382
+ this.split("") :
383
+ object,
384
+ length = self.length >>> 0,
385
+ result = [],
386
+ value,
387
+ thisp = arguments[1];
388
+
389
+ // If no callback function or if callback is not a callable function
390
+ if (_toString(fun) != "[object Function]") {
391
+ throw new TypeError(fun + " is not a function");
392
+ }
393
+
394
+ for (var i = 0; i < length; i++) {
395
+ if (i in self) {
396
+ value = self[i];
397
+ if (fun.call(thisp, value, i, object)) {
398
+ result.push(value);
399
+ }
400
+ }
401
+ }
402
+ return result;
403
+ };
404
+ }
405
+
406
+ // ES5 15.4.4.16
407
+ // http://es5.github.com/#x15.4.4.16
408
+ // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every
409
+ if (!Array.prototype.every) {
410
+ Array.prototype.every = function every(fun /*, thisp */) {
411
+ var object = toObject(this),
412
+ self = splitString && _toString(this) == "[object String]" ?
413
+ this.split("") :
414
+ object,
415
+ length = self.length >>> 0,
416
+ thisp = arguments[1];
417
+
418
+ // If no callback function or if callback is not a callable function
419
+ if (_toString(fun) != "[object Function]") {
420
+ throw new TypeError(fun + " is not a function");
421
+ }
422
+
423
+ for (var i = 0; i < length; i++) {
424
+ if (i in self && !fun.call(thisp, self[i], i, object)) {
425
+ return false;
426
+ }
427
+ }
428
+ return true;
429
+ };
430
+ }
431
+
432
+ // ES5 15.4.4.17
433
+ // http://es5.github.com/#x15.4.4.17
434
+ // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some
435
+ if (!Array.prototype.some) {
436
+ Array.prototype.some = function some(fun /*, thisp */) {
437
+ var object = toObject(this),
438
+ self = splitString && _toString(this) == "[object String]" ?
439
+ this.split("") :
440
+ object,
441
+ length = self.length >>> 0,
442
+ thisp = arguments[1];
443
+
444
+ // If no callback function or if callback is not a callable function
445
+ if (_toString(fun) != "[object Function]") {
446
+ throw new TypeError(fun + " is not a function");
447
+ }
448
+
449
+ for (var i = 0; i < length; i++) {
450
+ if (i in self && fun.call(thisp, self[i], i, object)) {
451
+ return true;
452
+ }
453
+ }
454
+ return false;
455
+ };
456
+ }
457
+
458
+ // ES5 15.4.4.21
459
+ // http://es5.github.com/#x15.4.4.21
460
+ // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduce
461
+ if (!Array.prototype.reduce) {
462
+ Array.prototype.reduce = function reduce(fun /*, initial*/) {
463
+ var object = toObject(this),
464
+ self = splitString && _toString(this) == "[object String]" ?
465
+ this.split("") :
466
+ object,
467
+ length = self.length >>> 0;
468
+
469
+ // If no callback function or if callback is not a callable function
470
+ if (_toString(fun) != "[object Function]") {
471
+ throw new TypeError(fun + " is not a function");
472
+ }
473
+
474
+ // no value to return if no initial value and an empty array
475
+ if (!length && arguments.length == 1) {
476
+ throw new TypeError("reduce of empty array with no initial value");
477
+ }
478
+
479
+ var i = 0;
480
+ var result;
481
+ if (arguments.length >= 2) {
482
+ result = arguments[1];
483
+ } else {
484
+ do {
485
+ if (i in self) {
486
+ result = self[i++];
487
+ break;
488
+ }
489
+
490
+ // if array contains no values, no initial value to return
491
+ if (++i >= length) {
492
+ throw new TypeError("reduce of empty array with no initial value");
493
+ }
494
+ } while (true);
495
+ }
496
+
497
+ for (; i < length; i++) {
498
+ if (i in self) {
499
+ result = fun.call(void 0, result, self[i], i, object);
500
+ }
501
+ }
502
+
503
+ return result;
504
+ };
505
+ }
506
+
507
+ // ES5 15.4.4.22
508
+ // http://es5.github.com/#x15.4.4.22
509
+ // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight
510
+ if (!Array.prototype.reduceRight) {
511
+ Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
512
+ var object = toObject(this),
513
+ self = splitString && _toString(this) == "[object String]" ?
514
+ this.split("") :
515
+ object,
516
+ length = self.length >>> 0;
517
+
518
+ // If no callback function or if callback is not a callable function
519
+ if (_toString(fun) != "[object Function]") {
520
+ throw new TypeError(fun + " is not a function");
521
+ }
522
+
523
+ // no value to return if no initial value, empty array
524
+ if (!length && arguments.length == 1) {
525
+ throw new TypeError("reduceRight of empty array with no initial value");
526
+ }
527
+
528
+ var result, i = length - 1;
529
+ if (arguments.length >= 2) {
530
+ result = arguments[1];
531
+ } else {
532
+ do {
533
+ if (i in self) {
534
+ result = self[i--];
535
+ break;
536
+ }
537
+
538
+ // if array contains no values, no initial value to return
539
+ if (--i < 0) {
540
+ throw new TypeError("reduceRight of empty array with no initial value");
541
+ }
542
+ } while (true);
543
+ }
544
+
545
+ if (i < 0) {
546
+ return result;
547
+ }
548
+
549
+ do {
550
+ if (i in this) {
551
+ result = fun.call(void 0, result, self[i], i, object);
552
+ }
553
+ } while (i--);
554
+
555
+ return result;
556
+ };
557
+ }
558
+
559
+ // ES5 15.4.4.14
560
+ // http://es5.github.com/#x15.4.4.14
561
+ // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf
562
+ if (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) {
563
+ Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {
564
+ var self = splitString && _toString(this) == "[object String]" ?
565
+ this.split("") :
566
+ toObject(this),
567
+ length = self.length >>> 0;
568
+
569
+ if (!length) {
570
+ return -1;
571
+ }
572
+
573
+ var i = 0;
574
+ if (arguments.length > 1) {
575
+ i = toInteger(arguments[1]);
576
+ }
577
+
578
+ // handle negative indices
579
+ i = i >= 0 ? i : Math.max(0, length + i);
580
+ for (; i < length; i++) {
581
+ if (i in self && self[i] === sought) {
582
+ return i;
583
+ }
584
+ }
585
+ return -1;
586
+ };
587
+ }
588
+
589
+ // ES5 15.4.4.15
590
+ // http://es5.github.com/#x15.4.4.15
591
+ // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf
592
+ if (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) {
593
+ Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {
594
+ var self = splitString && _toString(this) == "[object String]" ?
595
+ this.split("") :
596
+ toObject(this),
597
+ length = self.length >>> 0;
598
+
599
+ if (!length) {
600
+ return -1;
601
+ }
602
+ var i = length - 1;
603
+ if (arguments.length > 1) {
604
+ i = Math.min(i, toInteger(arguments[1]));
605
+ }
606
+ // handle negative indices
607
+ i = i >= 0 ? i : length - Math.abs(i);
608
+ for (; i >= 0; i--) {
609
+ if (i in self && sought === self[i]) {
610
+ return i;
611
+ }
612
+ }
613
+ return -1;
614
+ };
615
+ }
616
+
617
+ //
618
+ // Object
619
+ // ======
620
+ //
621
+
622
+ // ES5 15.2.3.14
623
+ // http://es5.github.com/#x15.2.3.14
624
+ if (!Object.keys) {
625
+ // http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation
626
+ var hasDontEnumBug = true,
627
+ dontEnums = [
628
+ "toString",
629
+ "toLocaleString",
630
+ "valueOf",
631
+ "hasOwnProperty",
632
+ "isPrototypeOf",
633
+ "propertyIsEnumerable",
634
+ "constructor"
635
+ ],
636
+ dontEnumsLength = dontEnums.length;
637
+
638
+ for (var key in {"toString": null}) {
639
+ hasDontEnumBug = false;
640
+ }
641
+
642
+ Object.keys = function keys(object) {
643
+
644
+ if (
645
+ (typeof object != "object" && typeof object != "function") ||
646
+ object === null
647
+ ) {
648
+ throw new TypeError("Object.keys called on a non-object");
649
+ }
650
+
651
+ var keys = [];
652
+ for (var name in object) {
653
+ if (owns(object, name)) {
654
+ keys.push(name);
655
+ }
656
+ }
657
+
658
+ if (hasDontEnumBug) {
659
+ for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
660
+ var dontEnum = dontEnums[i];
661
+ if (owns(object, dontEnum)) {
662
+ keys.push(dontEnum);
663
+ }
664
+ }
665
+ }
666
+ return keys;
667
+ };
668
+
669
+ }
670
+
671
+ //
672
+ // Date
673
+ // ====
674
+ //
675
+
676
+ // ES5 15.9.5.43
677
+ // http://es5.github.com/#x15.9.5.43
678
+ // This function returns a String value represent the instance in time
679
+ // represented by this Date object. The format of the String is the Date Time
680
+ // string format defined in 15.9.1.15. All fields are present in the String.
681
+ // The time zone is always UTC, denoted by the suffix Z. If the time value of
682
+ // this object is not a finite Number a RangeError exception is thrown.
683
+ var negativeDate = -62198755200000,
684
+ negativeYearString = "-000001";
685
+ if (
686
+ !Date.prototype.toISOString ||
687
+ (new Date(negativeDate).toISOString().indexOf(negativeYearString) === -1)
688
+ ) {
689
+ Date.prototype.toISOString = function toISOString() {
690
+ var result, length, value, year, month;
691
+ if (!isFinite(this)) {
692
+ throw new RangeError("Date.prototype.toISOString called on non-finite value.");
693
+ }
694
+
695
+ year = this.getUTCFullYear();
696
+
697
+ month = this.getUTCMonth();
698
+ // see https://github.com/kriskowal/es5-shim/issues/111
699
+ year += Math.floor(month / 12);
700
+ month = (month % 12 + 12) % 12;
701
+
702
+ // the date time string format is specified in 15.9.1.15.
703
+ result = [month + 1, this.getUTCDate(),
704
+ this.getUTCHours(), this.getUTCMinutes(), this.getUTCSeconds()];
705
+ year = (
706
+ (year < 0 ? "-" : (year > 9999 ? "+" : "")) +
707
+ ("00000" + Math.abs(year))
708
+ .slice(0 <= year && year <= 9999 ? -4 : -6)
709
+ );
710
+
711
+ length = result.length;
712
+ while (length--) {
713
+ value = result[length];
714
+ // pad months, days, hours, minutes, and seconds to have two
715
+ // digits.
716
+ if (value < 10) {
717
+ result[length] = "0" + value;
718
+ }
719
+ }
720
+ // pad milliseconds to have three digits.
721
+ return (
722
+ year + "-" + result.slice(0, 2).join("-") +
723
+ "T" + result.slice(2).join(":") + "." +
724
+ ("000" + this.getUTCMilliseconds()).slice(-3) + "Z"
725
+ );
726
+ };
727
+ }
728
+
729
+
730
+ // ES5 15.9.5.44
731
+ // http://es5.github.com/#x15.9.5.44
732
+ // This function provides a String representation of a Date object for use by
733
+ // JSON.stringify (15.12.3).
734
+ var dateToJSONIsSupported = false;
735
+ try {
736
+ dateToJSONIsSupported = (
737
+ Date.prototype.toJSON &&
738
+ new Date(NaN).toJSON() === null &&
739
+ new Date(negativeDate).toJSON().indexOf(negativeYearString) !== -1 &&
740
+ Date.prototype.toJSON.call({ // generic
741
+ toISOString: function () {
742
+ return true;
743
+ }
744
+ })
745
+ );
746
+ } catch (e) {
747
+ }
748
+ if (!dateToJSONIsSupported) {
749
+ Date.prototype.toJSON = function toJSON(key) {
750
+ // When the toJSON method is called with argument key, the following
751
+ // steps are taken:
752
+
753
+ // 1. Let O be the result of calling ToObject, giving it the this
754
+ // value as its argument.
755
+ // 2. Let tv be toPrimitive(O, hint Number).
756
+ var o = Object(this),
757
+ tv = toPrimitive(o),
758
+ toISO;
759
+ // 3. If tv is a Number and is not finite, return null.
760
+ if (typeof tv === "number" && !isFinite(tv)) {
761
+ return null;
762
+ }
763
+ // 4. Let toISO be the result of calling the [[Get]] internal method of
764
+ // O with argument "toISOString".
765
+ toISO = o.toISOString;
766
+ // 5. If IsCallable(toISO) is false, throw a TypeError exception.
767
+ if (typeof toISO != "function") {
768
+ throw new TypeError("toISOString property is not callable");
769
+ }
770
+ // 6. Return the result of calling the [[Call]] internal method of
771
+ // toISO with O as the this value and an empty argument list.
772
+ return toISO.call(o);
773
+
774
+ // NOTE 1 The argument is ignored.
775
+
776
+ // NOTE 2 The toJSON function is intentionally generic; it does not
777
+ // require that its this value be a Date object. Therefore, it can be
778
+ // transferred to other kinds of objects for use as a method. However,
779
+ // it does require that any such object have a toISOString method. An
780
+ // object is free to use the argument key to filter its
781
+ // stringification.
782
+ };
783
+ }
784
+
785
+ // ES5 15.9.4.2
786
+ // http://es5.github.com/#x15.9.4.2
787
+ // based on work shared by Daniel Friesen (dantman)
788
+ // http://gist.github.com/303249
789
+ if (!Date.parse || "Date.parse is buggy") {
790
+ // XXX global assignment won't work in embeddings that use
791
+ // an alternate object for the context.
792
+ Date = (function(NativeDate) {
793
+
794
+ // Date.length === 7
795
+ function Date(Y, M, D, h, m, s, ms) {
796
+ var length = arguments.length;
797
+ if (this instanceof NativeDate) {
798
+ var date = length == 1 && String(Y) === Y ? // isString(Y)
799
+ // We explicitly pass it through parse:
800
+ new NativeDate(Date.parse(Y)) :
801
+ // We have to manually make calls depending on argument
802
+ // length here
803
+ length >= 7 ? new NativeDate(Y, M, D, h, m, s, ms) :
804
+ length >= 6 ? new NativeDate(Y, M, D, h, m, s) :
805
+ length >= 5 ? new NativeDate(Y, M, D, h, m) :
806
+ length >= 4 ? new NativeDate(Y, M, D, h) :
807
+ length >= 3 ? new NativeDate(Y, M, D) :
808
+ length >= 2 ? new NativeDate(Y, M) :
809
+ length >= 1 ? new NativeDate(Y) :
810
+ new NativeDate();
811
+ // Prevent mixups with unfixed Date object
812
+ date.constructor = Date;
813
+ return date;
814
+ }
815
+ return NativeDate.apply(this, arguments);
816
+ };
817
+
818
+ // 15.9.1.15 Date Time String Format.
819
+ var isoDateExpression = new RegExp("^" +
820
+ "(\\d{4}|[\+\-]\\d{6})" + // four-digit year capture or sign +
821
+ // 6-digit extended year
822
+ "(?:-(\\d{2})" + // optional month capture
823
+ "(?:-(\\d{2})" + // optional day capture
824
+ "(?:" + // capture hours:minutes:seconds.milliseconds
825
+ "T(\\d{2})" + // hours capture
826
+ ":(\\d{2})" + // minutes capture
827
+ "(?:" + // optional :seconds.milliseconds
828
+ ":(\\d{2})" + // seconds capture
829
+ "(?:(\\.\\d{1,}))?" + // milliseconds capture
830
+ ")?" +
831
+ "(" + // capture UTC offset component
832
+ "Z|" + // UTC capture
833
+ "(?:" + // offset specifier +/-hours:minutes
834
+ "([-+])" + // sign capture
835
+ "(\\d{2})" + // hours offset capture
836
+ ":(\\d{2})" + // minutes offset capture
837
+ ")" +
838
+ ")?)?)?)?" +
839
+ "$");
840
+
841
+ var months = [
842
+ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365
843
+ ];
844
+
845
+ function dayFromMonth(year, month) {
846
+ var t = month > 1 ? 1 : 0;
847
+ return (
848
+ months[month] +
849
+ Math.floor((year - 1969 + t) / 4) -
850
+ Math.floor((year - 1901 + t) / 100) +
851
+ Math.floor((year - 1601 + t) / 400) +
852
+ 365 * (year - 1970)
853
+ );
854
+ }
855
+
856
+ // Copy any custom methods a 3rd party library may have added
857
+ for (var key in NativeDate) {
858
+ Date[key] = NativeDate[key];
859
+ }
860
+
861
+ // Copy "native" methods explicitly; they may be non-enumerable
862
+ Date.now = NativeDate.now;
863
+ Date.UTC = NativeDate.UTC;
864
+ Date.prototype = NativeDate.prototype;
865
+ Date.prototype.constructor = Date;
866
+
867
+ // Upgrade Date.parse to handle simplified ISO 8601 strings
868
+ Date.parse = function parse(string) {
869
+ var match = isoDateExpression.exec(string);
870
+ if (match) {
871
+ // parse months, days, hours, minutes, seconds, and milliseconds
872
+ // provide default values if necessary
873
+ // parse the UTC offset component
874
+ var year = Number(match[1]),
875
+ month = Number(match[2] || 1) - 1,
876
+ day = Number(match[3] || 1) - 1,
877
+ hour = Number(match[4] || 0),
878
+ minute = Number(match[5] || 0),
879
+ second = Number(match[6] || 0),
880
+ millisecond = Math.floor(Number(match[7] || 0) * 1000),
881
+ // When time zone is missed, local offset should be used
882
+ // (ES 5.1 bug)
883
+ // see https://bugs.ecmascript.org/show_bug.cgi?id=112
884
+ offset = !match[4] || match[8] ?
885
+ 0 : Number(new NativeDate(1970, 0)),
886
+ signOffset = match[9] === "-" ? 1 : -1,
887
+ hourOffset = Number(match[10] || 0),
888
+ minuteOffset = Number(match[11] || 0),
889
+ result;
890
+ if (
891
+ hour < (
892
+ minute > 0 || second > 0 || millisecond > 0 ?
893
+ 24 : 25
894
+ ) &&
895
+ minute < 60 && second < 60 && millisecond < 1000 &&
896
+ month > -1 && month < 12 && hourOffset < 24 &&
897
+ minuteOffset < 60 && // detect invalid offsets
898
+ day > -1 &&
899
+ day < (
900
+ dayFromMonth(year, month + 1) -
901
+ dayFromMonth(year, month)
902
+ )
903
+ ) {
904
+ result = (
905
+ (dayFromMonth(year, month) + day) * 24 +
906
+ hour +
907
+ hourOffset * signOffset
908
+ ) * 60;
909
+ result = (
910
+ (result + minute + minuteOffset * signOffset) * 60 +
911
+ second
912
+ ) * 1000 + millisecond + offset;
913
+ if (-8.64e15 <= result && result <= 8.64e15) {
914
+ return result;
915
+ }
916
+ }
917
+ return NaN;
918
+ }
919
+ return NativeDate.parse.apply(this, arguments);
920
+ };
921
+
922
+ return Date;
923
+ })(Date);
924
+ }
925
+
926
+ // ES5 15.9.4.4
927
+ // http://es5.github.com/#x15.9.4.4
928
+ if (!Date.now) {
929
+ Date.now = function now() {
930
+ return new Date().getTime();
931
+ };
932
+ }
933
+
934
+
935
+ //
936
+ // Number
937
+ // ======
938
+ //
939
+
940
+ // ES5.1 15.7.4.5
941
+ // http://es5.github.com/#x15.7.4.5
942
+ if (!Number.prototype.toFixed || (0.00008).toFixed(3) !== '0.000' || (0.9).toFixed(0) === '0' || (1.255).toFixed(2) !== '1.25' || (1000000000000000128).toFixed(0) !== "1000000000000000128") {
943
+ // Hide these variables and functions
944
+ (function () {
945
+ var base, size, data, i;
946
+
947
+ base = 1e7;
948
+ size = 6;
949
+ data = [0, 0, 0, 0, 0, 0];
950
+
951
+ function multiply(n, c) {
952
+ var i = -1;
953
+ while (++i < size) {
954
+ c += n * data[i];
955
+ data[i] = c % base;
956
+ c = Math.floor(c / base);
957
+ }
958
+ }
959
+
960
+ function divide(n) {
961
+ var i = size, c = 0;
962
+ while (--i >= 0) {
963
+ c += data[i];
964
+ data[i] = Math.floor(c / n);
965
+ c = (c % n) * base;
966
+ }
967
+ }
968
+
969
+ function toString() {
970
+ var i = size;
971
+ var s = '';
972
+ while (--i >= 0) {
973
+ if (s !== '' || i === 0 || data[i] !== 0) {
974
+ var t = String(data[i]);
975
+ if (s === '') {
976
+ s = t;
977
+ } else {
978
+ s += '0000000'.slice(0, 7 - t.length) + t;
979
+ }
980
+ }
981
+ }
982
+ return s;
983
+ }
984
+
985
+ function pow(x, n, acc) {
986
+ return (n === 0 ? acc : (n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc)));
987
+ }
988
+
989
+ function log(x) {
990
+ var n = 0;
991
+ while (x >= 4096) {
992
+ n += 12;
993
+ x /= 4096;
994
+ }
995
+ while (x >= 2) {
996
+ n += 1;
997
+ x /= 2;
998
+ }
999
+ return n;
1000
+ }
1001
+
1002
+ Number.prototype.toFixed = function (fractionDigits) {
1003
+ var f, x, s, m, e, z, j, k;
1004
+
1005
+ // Test for NaN and round fractionDigits down
1006
+ f = Number(fractionDigits);
1007
+ f = f !== f ? 0 : Math.floor(f);
1008
+
1009
+ if (f < 0 || f > 20) {
1010
+ throw new RangeError("Number.toFixed called with invalid number of decimals");
1011
+ }
1012
+
1013
+ x = Number(this);
1014
+
1015
+ // Test for NaN
1016
+ if (x !== x) {
1017
+ return "NaN";
1018
+ }
1019
+
1020
+ // If it is too big or small, return the string value of the number
1021
+ if (x <= -1e21 || x >= 1e21) {
1022
+ return String(x);
1023
+ }
1024
+
1025
+ s = "";
1026
+
1027
+ if (x < 0) {
1028
+ s = "-";
1029
+ x = -x;
1030
+ }
1031
+
1032
+ m = "0";
1033
+
1034
+ if (x > 1e-21) {
1035
+ // 1e-21 < x < 1e21
1036
+ // -70 < log2(x) < 70
1037
+ e = log(x * pow(2, 69, 1)) - 69;
1038
+ z = (e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1));
1039
+ z *= 0x10000000000000; // Math.pow(2, 52);
1040
+ e = 52 - e;
1041
+
1042
+ // -18 < e < 122
1043
+ // x = z / 2 ^ e
1044
+ if (e > 0) {
1045
+ multiply(0, z);
1046
+ j = f;
1047
+
1048
+ while (j >= 7) {
1049
+ multiply(1e7, 0);
1050
+ j -= 7;
1051
+ }
1052
+
1053
+ multiply(pow(10, j, 1), 0);
1054
+ j = e - 1;
1055
+
1056
+ while (j >= 23) {
1057
+ divide(1 << 23);
1058
+ j -= 23;
1059
+ }
1060
+
1061
+ divide(1 << j);
1062
+ multiply(1, 1);
1063
+ divide(2);
1064
+ m = toString();
1065
+ } else {
1066
+ multiply(0, z);
1067
+ multiply(1 << (-e), 0);
1068
+ m = toString() + '0.00000000000000000000'.slice(2, 2 + f);
1069
+ }
1070
+ }
1071
+
1072
+ if (f > 0) {
1073
+ k = m.length;
1074
+
1075
+ if (k <= f) {
1076
+ m = s + '0.0000000000000000000'.slice(0, f - k + 2) + m;
1077
+ } else {
1078
+ m = s + m.slice(0, k - f) + '.' + m.slice(k - f);
1079
+ }
1080
+ } else {
1081
+ m = s + m;
1082
+ }
1083
+
1084
+ return m;
1085
+ }
1086
+ }());
1087
+ }
1088
+
1089
+
1090
+ //
1091
+ // String
1092
+ // ======
1093
+ //
1094
+
1095
+
1096
+ // ES5 15.5.4.14
1097
+ // http://es5.github.com/#x15.5.4.14
1098
+ // [bugfix, chrome]
1099
+ // If separator is undefined, then the result array contains just one String,
1100
+ // which is the this value (converted to a String). If limit is not undefined,
1101
+ // then the output array is truncated so that it contains no more than limit
1102
+ // elements.
1103
+ // "0".split(undefined, 0) -> []
1104
+ if("0".split(void 0, 0).length) {
1105
+ var string_split = String.prototype.split;
1106
+ String.prototype.split = function(separator, limit) {
1107
+ if(separator === void 0 && limit === 0)return [];
1108
+ return string_split.apply(this, arguments);
1109
+ }
1110
+ }
1111
+
1112
+ // ECMA-262, 3rd B.2.3
1113
+ // Note an ECMAScript standart, although ECMAScript 3rd Edition has a
1114
+ // non-normative section suggesting uniform semantics and it should be
1115
+ // normalized across all browsers
1116
+ // [bugfix, IE lt 9] IE < 9 substr() with negative value not working in IE
1117
+ if("".substr && "0b".substr(-1) !== "b") {
1118
+ var string_substr = String.prototype.substr;
1119
+ /**
1120
+ * Get the substring of a string
1121
+ * @param {integer} start where to start the substring
1122
+ * @param {integer} length how many characters to return
1123
+ * @return {string}
1124
+ */
1125
+ String.prototype.substr = function(start, length) {
1126
+ return string_substr.call(
1127
+ this,
1128
+ start < 0 ? ((start = this.length + start) < 0 ? 0 : start) : start,
1129
+ length
1130
+ );
1131
+ }
1132
+ }
1133
+
1134
+ // ES5 15.5.4.20
1135
+ // http://es5.github.com/#x15.5.4.20
1136
+ var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
1137
+ "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
1138
+ "\u2029\uFEFF";
1139
+ if (!String.prototype.trim || ws.trim()) {
1140
+ // http://blog.stevenlevithan.com/archives/faster-trim-javascript
1141
+ // http://perfectionkills.com/whitespace-deviations/
1142
+ ws = "[" + ws + "]";
1143
+ var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
1144
+ trimEndRegexp = new RegExp(ws + ws + "*$");
1145
+ String.prototype.trim = function trim() {
1146
+ if (this === undefined || this === null) {
1147
+ throw new TypeError("can't convert "+this+" to object");
1148
+ }
1149
+ return String(this)
1150
+ .replace(trimBeginRegexp, "")
1151
+ .replace(trimEndRegexp, "");
1152
+ };
1153
+ }
1154
+
1155
+ //
1156
+ // Util
1157
+ // ======
1158
+ //
1159
+
1160
+ // ES5 9.4
1161
+ // http://es5.github.com/#x9.4
1162
+ // http://jsperf.com/to-integer
1163
+
1164
+ function toInteger(n) {
1165
+ n = +n;
1166
+ if (n !== n) { // isNaN
1167
+ n = 0;
1168
+ } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) {
1169
+ n = (n > 0 || -1) * Math.floor(Math.abs(n));
1170
+ }
1171
+ return n;
1172
+ }
1173
+
1174
+ function isPrimitive(input) {
1175
+ var type = typeof input;
1176
+ return (
1177
+ input === null ||
1178
+ type === "undefined" ||
1179
+ type === "boolean" ||
1180
+ type === "number" ||
1181
+ type === "string"
1182
+ );
1183
+ }
1184
+
1185
+ function toPrimitive(input) {
1186
+ var val, valueOf, toString;
1187
+ if (isPrimitive(input)) {
1188
+ return input;
1189
+ }
1190
+ valueOf = input.valueOf;
1191
+ if (typeof valueOf === "function") {
1192
+ val = valueOf.call(input);
1193
+ if (isPrimitive(val)) {
1194
+ return val;
1195
+ }
1196
+ }
1197
+ toString = input.toString;
1198
+ if (typeof toString === "function") {
1199
+ val = toString.call(input);
1200
+ if (isPrimitive(val)) {
1201
+ return val;
1202
+ }
1203
+ }
1204
+ throw new TypeError();
1205
+ }
1206
+
1207
+ // ES5 9.9
1208
+ // http://es5.github.com/#x9.9
1209
+ var toObject = function (o) {
1210
+ if (o == null) { // this matches both null and undefined
1211
+ throw new TypeError("can't convert "+o+" to object");
1212
+ }
1213
+ return Object(o);
1214
+ };
1215
+
1216
+ });