bootstrap-sass-rails 2.2.1.1 → 2.2.1.2

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 (239) hide show
  1. data/Rakefile +1 -0
  2. data/lib/bootstrap/sass/rails/version.rb +1 -1
  3. data/test/cases/usage_css_spec.rb +3 -2
  4. data/test/dummy/config/application.rb +4 -1
  5. data/test/dummy/config/environments/test.rb +3 -3
  6. data/test/dummy/log/test.log +274 -0
  7. data/test/dummy/tmp/cache/assets/C41/5B0/sprockets%2F095415e1141a435237aa9464752d21fd +2583 -0
  8. data/test/dummy/tmp/cache/assets/C6F/370/sprockets%2F966879d6ff8742dc619724287f4a5150 +0 -0
  9. data/test/dummy/tmp/cache/assets/C73/6D0/sprockets%2F1960b4507c3aaa988180fb04093d1427 +0 -0
  10. data/test/dummy/tmp/cache/assets/C83/870/sprockets%2F508e55e1444b44d0187677a51893acf2 +0 -0
  11. data/test/dummy/tmp/cache/assets/C94/270/sprockets%2F40520eb6297b2908496e752e588f2f7d +0 -0
  12. data/test/dummy/tmp/cache/assets/CA6/110/sprockets%2F272615ec4af76b10339048ca6da44284 +0 -0
  13. data/test/dummy/tmp/cache/assets/CAD/040/sprockets%2F915d29a78a13fbbb606d47840634d703 +0 -0
  14. data/test/dummy/tmp/cache/assets/CB0/110/sprockets%2F057089195001bff3a770cec267e0877b +0 -0
  15. data/test/dummy/tmp/cache/assets/CB4/BD0/sprockets%2Fe0c39183ec49530b6c0758c1e945d274 +0 -0
  16. data/test/dummy/tmp/cache/assets/CB5/410/sprockets%2Ff2d804e78b14c4005d86653e2e957a35 +0 -0
  17. data/test/dummy/tmp/cache/assets/CCE/280/sprockets%2F59565d2ec707a1eb10c0b2302d58f920 +0 -0
  18. data/test/dummy/tmp/cache/assets/CD1/580/sprockets%2F7e48514e772b39d8878a8181798eaea6 +0 -0
  19. data/test/dummy/tmp/cache/assets/CDD/E80/sprockets%2Fa7248f6c140e4c834d8a4b5b0703f189 +0 -0
  20. data/test/dummy/tmp/cache/assets/CE2/910/sprockets%2Fee1ae05707da2d0176094849e35099ce +0 -0
  21. data/test/dummy/tmp/cache/assets/CE5/650/sprockets%2F8ab512c9b33ac90e699b73469d71f061 +0 -0
  22. data/test/dummy/tmp/cache/assets/CE9/4E0/sprockets%2F1c1f6d1579d9ad26654219f30c46f95c +0 -0
  23. data/test/dummy/tmp/cache/assets/CE9/E40/sprockets%2F47f8666418cd38da2ff7625f02422b5e +0 -0
  24. data/test/dummy/tmp/cache/assets/CF1/ED0/sprockets%2F9947d52d16da82564b988d16366e3aea +529 -0
  25. data/test/dummy/tmp/cache/assets/D04/3C0/sprockets%2F29d763bd40cc25622b1f04b876a5c3e3 +0 -0
  26. data/test/dummy/tmp/cache/assets/D22/C90/sprockets%2Fe1a46318a188f29186cbe4f9d97792bb +0 -0
  27. data/test/dummy/tmp/cache/assets/D25/E70/sprockets%2Fb39f1d7ace7781584f2b27397c4d298d +0 -0
  28. data/test/dummy/tmp/cache/assets/D2D/410/sprockets%2F19d37b85ac2b8498758bdf8d08099e8b +0 -0
  29. data/test/dummy/tmp/cache/assets/D2D/8A0/sprockets%2F16702b2d73e90a918e2a03d40dd0fb6e +0 -0
  30. data/test/dummy/tmp/cache/assets/D34/0D0/sprockets%2F2e0e0061bc75f35b8665ee31f0af343f +0 -0
  31. data/test/dummy/tmp/cache/assets/D36/7D0/sprockets%2Ffc5ea6a588c4b2791581fdb35a30031d +0 -0
  32. data/test/dummy/tmp/cache/assets/D39/3D0/sprockets%2F744241c89d9c401d40d4ee5ad44a2f3f +0 -0
  33. data/test/dummy/tmp/cache/assets/D3F/FA0/sprockets%2F22c8366fdbaaa2872b202dfe7376629f +0 -0
  34. data/test/dummy/tmp/cache/assets/D44/700/sprockets%2Fd328468f953946d2e2bef62c4cb7cb01 +0 -0
  35. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  36. data/test/dummy/tmp/cache/assets/D5A/560/sprockets%2Fad87bf89db0c636d2899f3d47eb70838 +0 -0
  37. data/test/dummy/tmp/cache/assets/D5C/3F0/sprockets%2F67d5fd7ae45e04fd786ee67812769cb5 +0 -0
  38. data/test/dummy/tmp/cache/assets/D63/540/sprockets%2F40806eccd4be04b3c3fa44d23576e18d +0 -0
  39. data/test/dummy/tmp/cache/assets/D63/C70/sprockets%2F382f45c06aa1f72aea7048fd474bbc33 +0 -0
  40. data/test/dummy/tmp/cache/assets/D70/0D0/sprockets%2F75765d3bfee9346a60198cbb8cdad102 +0 -0
  41. data/test/dummy/tmp/cache/assets/D73/760/sprockets%2F4e1d706de9dc13479c028238faea6ff2 +0 -0
  42. data/test/dummy/tmp/cache/assets/D74/A80/sprockets%2F89c4c5e2f034b736d5e839adfe7012db +0 -0
  43. data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +2056 -0
  44. data/test/dummy/tmp/cache/assets/D91/080/sprockets%2Fbcca522c6302f184f12fe0e8a7d7e71a +0 -0
  45. data/test/dummy/tmp/cache/assets/D9F/300/sprockets%2Fc13fc73ceafa45876a901b3e775b83ae +0 -0
  46. data/test/dummy/tmp/cache/assets/DA2/4C0/sprockets%2Faf35c2c354c87b8ced15ed3cbc276576 +2153 -0
  47. data/test/dummy/tmp/cache/assets/DB6/FE0/sprockets%2F1446b4accb510daee592aa8f34b03d2e +0 -0
  48. data/test/dummy/tmp/cache/assets/DB9/250/sprockets%2F15de37cf628d966fd377f94afbffe244 +0 -0
  49. data/test/dummy/tmp/cache/assets/DC1/D20/sprockets%2Fd6edb12fc70021e8ada656d316e0cd8d +0 -0
  50. data/test/dummy/tmp/cache/assets/DC7/8B0/sprockets%2Fc57aff8fcaace116023b4ae45c88138c +0 -0
  51. data/test/dummy/tmp/cache/assets/DCD/540/sprockets%2F81dd0cb0661e7e9725d4cecb2ea2e9d5 +0 -0
  52. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  53. data/test/dummy/tmp/cache/assets/DFC/550/sprockets%2Fc63af852c0f9cc4aa6a7dd59d74ab0a9 +0 -0
  54. data/test/dummy/tmp/cache/assets/DFF/EA0/sprockets%2Fc05f92ff4e2fa5eadcfe9d3d151047f3 +0 -0
  55. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  56. data/test/dummy/tmp/cache/assets/E22/B10/sprockets%2Fec73dbc745e21ceda62ae0b9d41b4ed5 +240 -0
  57. data/test/dummy/tmp/cache/assets/E2A/B40/sprockets%2F591e8bae8cab045e0af3ce80e3fa7ad9 +0 -0
  58. data/test/dummy/tmp/cache/assets/E30/FF0/sprockets%2F33f27cfaa7bec6fcb98ce5163c2d5c5d +0 -0
  59. data/test/dummy/tmp/cache/assets/E3A/D90/sprockets%2Fce0dbefdb4416ebc42589ecdbf7d7857 +0 -0
  60. data/test/dummy/tmp/cache/assets/E5F/300/sprockets%2F243a2fff0dbb8aeec3dd579b4ff7c81b +2582 -0
  61. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_accordion.scssc +0 -0
  62. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_alerts.scssc +0 -0
  63. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_breadcrumbs.scssc +0 -0
  64. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_button-groups.scssc +0 -0
  65. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_buttons.scssc +0 -0
  66. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_carousel.scssc +0 -0
  67. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_close.scssc +0 -0
  68. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_code.scssc +0 -0
  69. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_component-animations.scssc +0 -0
  70. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_dropdowns.scssc +0 -0
  71. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_forms.scssc +0 -0
  72. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_grid.scssc +0 -0
  73. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_hero-unit.scssc +0 -0
  74. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_labels-badges.scssc +0 -0
  75. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_layouts.scssc +0 -0
  76. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_media.scssc +0 -0
  77. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_mixins.scssc +0 -0
  78. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_modals.scssc +0 -0
  79. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_navbar.scssc +0 -0
  80. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_navs.scssc +0 -0
  81. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_pager.scssc +0 -0
  82. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_pagination.scssc +0 -0
  83. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_popovers.scssc +0 -0
  84. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_progress-bars.scssc +0 -0
  85. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_reset.scssc +0 -0
  86. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_responsive-1200px-min.scssc +0 -0
  87. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_responsive-767px-max.scssc +0 -0
  88. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_responsive-768px-979px.scssc +0 -0
  89. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_responsive-navbar.scssc +0 -0
  90. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_responsive-utilities.scssc +0 -0
  91. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_responsive.scssc +0 -0
  92. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_scaffolding.scssc +0 -0
  93. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_sprites.scssc +0 -0
  94. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_tables.scssc +0 -0
  95. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_thumbnails.scssc +0 -0
  96. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_tooltip.scssc +0 -0
  97. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_type.scssc +0 -0
  98. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_utilities.scssc +0 -0
  99. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_variables.scssc +0 -0
  100. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_wells.scssc +0 -0
  101. data/test/dummy/tmp/cache/assets/test/sprockets/057089195001bff3a770cec267e0877b +0 -0
  102. data/test/dummy/tmp/cache/assets/test/sprockets/0a69d2de11b1b15afecec9a903469851 +0 -0
  103. data/test/dummy/tmp/cache/assets/test/sprockets/1446b4accb510daee592aa8f34b03d2e +0 -0
  104. data/test/dummy/tmp/cache/assets/test/sprockets/15de37cf628d966fd377f94afbffe244 +0 -0
  105. data/test/dummy/tmp/cache/assets/test/sprockets/16702b2d73e90a918e2a03d40dd0fb6e +0 -0
  106. data/test/dummy/tmp/cache/assets/test/sprockets/1960b4507c3aaa988180fb04093d1427 +0 -0
  107. data/test/dummy/tmp/cache/assets/test/sprockets/19d37b85ac2b8498758bdf8d08099e8b +0 -0
  108. data/test/dummy/tmp/cache/assets/test/sprockets/1c1f6d1579d9ad26654219f30c46f95c +0 -0
  109. data/test/dummy/tmp/cache/assets/test/sprockets/22c8366fdbaaa2872b202dfe7376629f +0 -0
  110. data/test/dummy/tmp/cache/assets/test/sprockets/272615ec4af76b10339048ca6da44284 +0 -0
  111. data/test/dummy/tmp/cache/assets/test/sprockets/29d763bd40cc25622b1f04b876a5c3e3 +0 -0
  112. data/test/dummy/tmp/cache/assets/test/sprockets/2e0e0061bc75f35b8665ee31f0af343f +0 -0
  113. data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  114. data/test/dummy/tmp/cache/assets/test/sprockets/33f27cfaa7bec6fcb98ce5163c2d5c5d +0 -0
  115. data/test/dummy/tmp/cache/assets/test/sprockets/382f45c06aa1f72aea7048fd474bbc33 +0 -0
  116. data/test/dummy/tmp/cache/assets/test/sprockets/40520eb6297b2908496e752e588f2f7d +0 -0
  117. data/test/dummy/tmp/cache/assets/test/sprockets/40806eccd4be04b3c3fa44d23576e18d +0 -0
  118. data/test/dummy/tmp/cache/assets/test/sprockets/47f8666418cd38da2ff7625f02422b5e +0 -0
  119. data/test/dummy/tmp/cache/assets/test/sprockets/4e1d706de9dc13479c028238faea6ff2 +0 -0
  120. data/test/dummy/tmp/cache/assets/test/sprockets/508e55e1444b44d0187677a51893acf2 +0 -0
  121. data/test/dummy/tmp/cache/assets/test/sprockets/591e8bae8cab045e0af3ce80e3fa7ad9 +0 -0
  122. data/test/dummy/tmp/cache/assets/test/sprockets/59565d2ec707a1eb10c0b2302d58f920 +0 -0
  123. data/test/dummy/tmp/cache/assets/test/sprockets/643fbcfada5ead21709e3c550f415c48 +0 -0
  124. data/test/dummy/tmp/cache/assets/test/sprockets/67d5fd7ae45e04fd786ee67812769cb5 +0 -0
  125. data/test/dummy/tmp/cache/assets/test/sprockets/744241c89d9c401d40d4ee5ad44a2f3f +0 -0
  126. data/test/dummy/tmp/cache/assets/test/sprockets/75765d3bfee9346a60198cbb8cdad102 +0 -0
  127. data/test/dummy/tmp/cache/assets/test/sprockets/7e48514e772b39d8878a8181798eaea6 +0 -0
  128. data/test/dummy/tmp/cache/assets/test/sprockets/81dd0cb0661e7e9725d4cecb2ea2e9d5 +0 -0
  129. data/test/dummy/tmp/cache/assets/test/sprockets/89c4c5e2f034b736d5e839adfe7012db +0 -0
  130. data/test/dummy/tmp/cache/assets/test/sprockets/8ab512c9b33ac90e699b73469d71f061 +0 -0
  131. data/test/dummy/tmp/cache/assets/test/sprockets/915d29a78a13fbbb606d47840634d703 +0 -0
  132. data/test/dummy/tmp/cache/assets/test/sprockets/966879d6ff8742dc619724287f4a5150 +0 -0
  133. data/test/dummy/tmp/cache/assets/test/sprockets/a39c51a80c786ee6aa2f938094583302 +0 -0
  134. data/test/dummy/tmp/cache/assets/test/sprockets/a7248f6c140e4c834d8a4b5b0703f189 +0 -0
  135. data/test/dummy/tmp/cache/assets/test/sprockets/ad87bf89db0c636d2899f3d47eb70838 +0 -0
  136. data/test/dummy/tmp/cache/assets/test/sprockets/b39f1d7ace7781584f2b27397c4d298d +0 -0
  137. data/test/dummy/tmp/cache/assets/test/sprockets/bcca522c6302f184f12fe0e8a7d7e71a +0 -0
  138. data/test/dummy/tmp/cache/assets/test/sprockets/c05f92ff4e2fa5eadcfe9d3d151047f3 +0 -0
  139. data/test/dummy/tmp/cache/assets/test/sprockets/c13fc73ceafa45876a901b3e775b83ae +0 -0
  140. data/test/dummy/tmp/cache/assets/test/sprockets/c57aff8fcaace116023b4ae45c88138c +0 -0
  141. data/test/dummy/tmp/cache/assets/test/sprockets/c63af852c0f9cc4aa6a7dd59d74ab0a9 +0 -0
  142. data/test/dummy/tmp/cache/assets/test/sprockets/ce0dbefdb4416ebc42589ecdbf7d7857 +0 -0
  143. data/test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  144. data/test/dummy/tmp/cache/assets/test/sprockets/d328468f953946d2e2bef62c4cb7cb01 +0 -0
  145. data/test/dummy/tmp/cache/assets/test/sprockets/d6edb12fc70021e8ada656d316e0cd8d +0 -0
  146. data/test/dummy/tmp/cache/assets/test/sprockets/e0c39183ec49530b6c0758c1e945d274 +0 -0
  147. data/test/dummy/tmp/cache/assets/test/sprockets/e1a46318a188f29186cbe4f9d97792bb +0 -0
  148. data/test/dummy/tmp/cache/assets/test/sprockets/ee1ae05707da2d0176094849e35099ce +0 -0
  149. data/test/dummy/tmp/cache/assets/test/sprockets/f2d804e78b14c4005d86653e2e957a35 +0 -0
  150. data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  151. data/test/dummy/tmp/cache/assets/test/sprockets/fc5ea6a588c4b2791581fdb35a30031d +0 -0
  152. data/test/dummy/tmp/cache/assets/test/sprockets/fe5d5c303a50e71c182568c32bf25296 +0 -0
  153. data/test/dummy/tmp/cache/sass/73d26439e044eca0a3af4a431659ef4346a1c77c/application.css.scssc +0 -0
  154. data/test/dummy/tmp/cache/sass/73d26439e044eca0a3af4a431659ef4346a1c77c/individual.css.scssc +0 -0
  155. data/test/dummy/tmp/cache/sass/73d26439e044eca0a3af4a431659ef4346a1c77c/no-sprites.css.scssc +0 -0
  156. data/test/dummy/tmp/cache/sass/97a2fe4b4206536e366a73e1378c8e4d6acfc29d/bootstrap-no-sprites.css.scssc +0 -0
  157. data/test/dummy/tmp/cache/sass/97a2fe4b4206536e366a73e1378c8e4d6acfc29d/bootstrap.css.scssc +0 -0
  158. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_accordion.scssc +0 -0
  159. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_alerts.scssc +0 -0
  160. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_breadcrumbs.scssc +0 -0
  161. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_button-groups.scssc +0 -0
  162. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_buttons.scssc +0 -0
  163. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_carousel.scssc +0 -0
  164. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_close.scssc +0 -0
  165. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_code.scssc +0 -0
  166. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_component-animations.scssc +0 -0
  167. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_dropdowns.scssc +0 -0
  168. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_forms.scssc +0 -0
  169. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_grid.scssc +0 -0
  170. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_hero-unit.scssc +0 -0
  171. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_labels-badges.scssc +0 -0
  172. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_layouts.scssc +0 -0
  173. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_media.scssc +0 -0
  174. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_mixins.scssc +0 -0
  175. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_modals.scssc +0 -0
  176. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_navbar.scssc +0 -0
  177. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_navs.scssc +0 -0
  178. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_pager.scssc +0 -0
  179. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_pagination.scssc +0 -0
  180. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_popovers.scssc +0 -0
  181. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_progress-bars.scssc +0 -0
  182. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_reset.scssc +0 -0
  183. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_responsive-1200px-min.scssc +0 -0
  184. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_responsive-767px-max.scssc +0 -0
  185. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_responsive-768px-979px.scssc +0 -0
  186. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_responsive-navbar.scssc +0 -0
  187. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_responsive-utilities.scssc +0 -0
  188. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_responsive.scssc +0 -0
  189. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_scaffolding.scssc +0 -0
  190. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_sprites.scssc +0 -0
  191. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_tables.scssc +0 -0
  192. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_thumbnails.scssc +0 -0
  193. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_tooltip.scssc +0 -0
  194. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_type.scssc +0 -0
  195. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_utilities.scssc +0 -0
  196. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_variables.scssc +0 -0
  197. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_wells.scssc +0 -0
  198. data/test/support/helpers.rb +0 -8
  199. data/vendor/assets/stylesheets/twitter/bootstrap/_accordion.scss +1 -0
  200. data/vendor/assets/stylesheets/twitter/bootstrap/_alerts.scss +1 -0
  201. data/vendor/assets/stylesheets/twitter/bootstrap/_breadcrumbs.scss +1 -0
  202. data/vendor/assets/stylesheets/twitter/bootstrap/_button-groups.scss +1 -0
  203. data/vendor/assets/stylesheets/twitter/bootstrap/_buttons.scss +1 -0
  204. data/vendor/assets/stylesheets/twitter/bootstrap/_carousel.scss +1 -0
  205. data/vendor/assets/stylesheets/twitter/bootstrap/_close.scss +1 -0
  206. data/vendor/assets/stylesheets/twitter/bootstrap/_code.scss +1 -0
  207. data/vendor/assets/stylesheets/twitter/bootstrap/_component-animations.scss +1 -0
  208. data/vendor/assets/stylesheets/twitter/bootstrap/_dropdowns.scss +1 -0
  209. data/vendor/assets/stylesheets/twitter/bootstrap/_forms.scss +1 -0
  210. data/vendor/assets/stylesheets/twitter/bootstrap/_grid.scss +1 -0
  211. data/vendor/assets/stylesheets/twitter/bootstrap/_hero-unit.scss +1 -0
  212. data/vendor/assets/stylesheets/twitter/bootstrap/_labels-badges.scss +1 -0
  213. data/vendor/assets/stylesheets/twitter/bootstrap/_layouts.scss +1 -0
  214. data/vendor/assets/stylesheets/twitter/bootstrap/_media.scss +1 -0
  215. data/vendor/assets/stylesheets/twitter/bootstrap/_mixins.scss +1 -0
  216. data/vendor/assets/stylesheets/twitter/bootstrap/_modals.scss +1 -0
  217. data/vendor/assets/stylesheets/twitter/bootstrap/_navbar.scss +1 -0
  218. data/vendor/assets/stylesheets/twitter/bootstrap/_navs.scss +1 -0
  219. data/vendor/assets/stylesheets/twitter/bootstrap/_pager.scss +1 -0
  220. data/vendor/assets/stylesheets/twitter/bootstrap/_pagination.scss +1 -0
  221. data/vendor/assets/stylesheets/twitter/bootstrap/_popovers.scss +1 -0
  222. data/vendor/assets/stylesheets/twitter/bootstrap/_progress-bars.scss +1 -0
  223. data/vendor/assets/stylesheets/twitter/bootstrap/_reset.scss +1 -0
  224. data/vendor/assets/stylesheets/twitter/bootstrap/_responsive-1200px-min.scss +1 -0
  225. data/vendor/assets/stylesheets/twitter/bootstrap/_responsive-767px-max.scss +1 -0
  226. data/vendor/assets/stylesheets/twitter/bootstrap/_responsive-768px-979px.scss +1 -0
  227. data/vendor/assets/stylesheets/twitter/bootstrap/_responsive-navbar.scss +1 -0
  228. data/vendor/assets/stylesheets/twitter/bootstrap/_responsive-utilities.scss +1 -0
  229. data/vendor/assets/stylesheets/twitter/bootstrap/_responsive.scss +1 -0
  230. data/vendor/assets/stylesheets/twitter/bootstrap/_scaffolding.scss +1 -0
  231. data/vendor/assets/stylesheets/twitter/bootstrap/_sprites.scss +1 -0
  232. data/vendor/assets/stylesheets/twitter/bootstrap/_tables.scss +19 -4
  233. data/vendor/assets/stylesheets/twitter/bootstrap/_thumbnails.scss +1 -0
  234. data/vendor/assets/stylesheets/twitter/bootstrap/_tooltip.scss +1 -0
  235. data/vendor/assets/stylesheets/twitter/bootstrap/_type.scss +1 -0
  236. data/vendor/assets/stylesheets/twitter/bootstrap/_utilities.scss +1 -0
  237. data/vendor/assets/stylesheets/twitter/bootstrap/_variables.scss +1 -0
  238. data/vendor/assets/stylesheets/twitter/bootstrap/_wells.scss +1 -0
  239. metadata +228 -14
@@ -0,0 +1,2056 @@
1
+ o: ActiveSupport::Cache::Entry :@compressedF:@created_atf1353430023.878386:@expires_in0: @value{ I" length:EFi��I" digest;
2
+ F"%457e590a79444e7059eee7ab748d8ff8I" source;
3
+ FI"��/* ===================================================
4
+ * bootstrap-transition.js v2.2.1
5
+ * http://twitter.github.com/bootstrap/javascript.html#transitions
6
+ * ===================================================
7
+ * Copyright 2012 Twitter, Inc.
8
+ *
9
+ * Licensed under the Apache License, Version 2.0 (the "License");
10
+ * you may not use this file except in compliance with the License.
11
+ * You may obtain a copy of the License at
12
+ *
13
+ * http://www.apache.org/licenses/LICENSE-2.0
14
+ *
15
+ * Unless required by applicable law or agreed to in writing, software
16
+ * distributed under the License is distributed on an "AS IS" BASIS,
17
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ * See the License for the specific language governing permissions and
19
+ * limitations under the License.
20
+ * ========================================================== */
21
+
22
+
23
+
24
+ !function ($) {
25
+
26
+ "use strict"; // jshint ;_;
27
+
28
+
29
+ /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
30
+ * ======================================================= */
31
+
32
+ $(function () {
33
+
34
+ $.support.transition = (function () {
35
+
36
+ var transitionEnd = (function () {
37
+
38
+ var el = document.createElement('bootstrap')
39
+ , transEndEventNames = {
40
+ 'WebkitTransition' : 'webkitTransitionEnd'
41
+ , 'MozTransition' : 'transitionend'
42
+ , 'OTransition' : 'oTransitionEnd otransitionend'
43
+ , 'transition' : 'transitionend'
44
+ }
45
+ , name
46
+
47
+ for (name in transEndEventNames){
48
+ if (el.style[name] !== undefined) {
49
+ return transEndEventNames[name]
50
+ }
51
+ }
52
+
53
+ }())
54
+
55
+ return transitionEnd && {
56
+ end: transitionEnd
57
+ }
58
+
59
+ })()
60
+
61
+ })
62
+
63
+ }(window.jQuery);
64
+ /* ==========================================================
65
+ * bootstrap-alert.js v2.2.1
66
+ * http://twitter.github.com/bootstrap/javascript.html#alerts
67
+ * ==========================================================
68
+ * Copyright 2012 Twitter, Inc.
69
+ *
70
+ * Licensed under the Apache License, Version 2.0 (the "License");
71
+ * you may not use this file except in compliance with the License.
72
+ * You may obtain a copy of the License at
73
+ *
74
+ * http://www.apache.org/licenses/LICENSE-2.0
75
+ *
76
+ * Unless required by applicable law or agreed to in writing, software
77
+ * distributed under the License is distributed on an "AS IS" BASIS,
78
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
79
+ * See the License for the specific language governing permissions and
80
+ * limitations under the License.
81
+ * ========================================================== */
82
+
83
+
84
+
85
+ !function ($) {
86
+
87
+ "use strict"; // jshint ;_;
88
+
89
+
90
+ /* ALERT CLASS DEFINITION
91
+ * ====================== */
92
+
93
+ var dismiss = '[data-dismiss="alert"]'
94
+ , Alert = function (el) {
95
+ $(el).on('click', dismiss, this.close)
96
+ }
97
+
98
+ Alert.prototype.close = function (e) {
99
+ var $this = $(this)
100
+ , selector = $this.attr('data-target')
101
+ , $parent
102
+
103
+ if (!selector) {
104
+ selector = $this.attr('href')
105
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
106
+ }
107
+
108
+ $parent = $(selector)
109
+
110
+ e && e.preventDefault()
111
+
112
+ $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
113
+
114
+ $parent.trigger(e = $.Event('close'))
115
+
116
+ if (e.isDefaultPrevented()) return
117
+
118
+ $parent.removeClass('in')
119
+
120
+ function removeElement() {
121
+ $parent
122
+ .trigger('closed')
123
+ .remove()
124
+ }
125
+
126
+ $.support.transition && $parent.hasClass('fade') ?
127
+ $parent.on($.support.transition.end, removeElement) :
128
+ removeElement()
129
+ }
130
+
131
+
132
+ /* ALERT PLUGIN DEFINITION
133
+ * ======================= */
134
+
135
+ $.fn.alert = function (option) {
136
+ return this.each(function () {
137
+ var $this = $(this)
138
+ , data = $this.data('alert')
139
+ if (!data) $this.data('alert', (data = new Alert(this)))
140
+ if (typeof option == 'string') data[option].call($this)
141
+ })
142
+ }
143
+
144
+ $.fn.alert.Constructor = Alert
145
+
146
+
147
+ /* ALERT DATA-API
148
+ * ============== */
149
+
150
+ $(document).on('click.alert.data-api', dismiss, Alert.prototype.close)
151
+
152
+ }(window.jQuery);
153
+ /* ============================================================
154
+ * bootstrap-button.js v2.2.1
155
+ * http://twitter.github.com/bootstrap/javascript.html#buttons
156
+ * ============================================================
157
+ * Copyright 2012 Twitter, Inc.
158
+ *
159
+ * Licensed under the Apache License, Version 2.0 (the "License");
160
+ * you may not use this file except in compliance with the License.
161
+ * You may obtain a copy of the License at
162
+ *
163
+ * http://www.apache.org/licenses/LICENSE-2.0
164
+ *
165
+ * Unless required by applicable law or agreed to in writing, software
166
+ * distributed under the License is distributed on an "AS IS" BASIS,
167
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
168
+ * See the License for the specific language governing permissions and
169
+ * limitations under the License.
170
+ * ============================================================ */
171
+
172
+
173
+
174
+ !function ($) {
175
+
176
+ "use strict"; // jshint ;_;
177
+
178
+
179
+ /* BUTTON PUBLIC CLASS DEFINITION
180
+ * ============================== */
181
+
182
+ var Button = function (element, options) {
183
+ this.$element = $(element)
184
+ this.options = $.extend({}, $.fn.button.defaults, options)
185
+ }
186
+
187
+ Button.prototype.setState = function (state) {
188
+ var d = 'disabled'
189
+ , $el = this.$element
190
+ , data = $el.data()
191
+ , val = $el.is('input') ? 'val' : 'html'
192
+
193
+ state = state + 'Text'
194
+ data.resetText || $el.data('resetText', $el[val]())
195
+
196
+ $el[val](data[state] || this.options[state])
197
+
198
+ // push to event loop to allow forms to submit
199
+ setTimeout(function () {
200
+ state == 'loadingText' ?
201
+ $el.addClass(d).attr(d, d) :
202
+ $el.removeClass(d).removeAttr(d)
203
+ }, 0)
204
+ }
205
+
206
+ Button.prototype.toggle = function () {
207
+ var $parent = this.$element.closest('[data-toggle="buttons-radio"]')
208
+
209
+ $parent && $parent
210
+ .find('.active')
211
+ .removeClass('active')
212
+
213
+ this.$element.toggleClass('active')
214
+ }
215
+
216
+
217
+ /* BUTTON PLUGIN DEFINITION
218
+ * ======================== */
219
+
220
+ $.fn.button = function (option) {
221
+ return this.each(function () {
222
+ var $this = $(this)
223
+ , data = $this.data('button')
224
+ , options = typeof option == 'object' && option
225
+ if (!data) $this.data('button', (data = new Button(this, options)))
226
+ if (option == 'toggle') data.toggle()
227
+ else if (option) data.setState(option)
228
+ })
229
+ }
230
+
231
+ $.fn.button.defaults = {
232
+ loadingText: 'loading...'
233
+ }
234
+
235
+ $.fn.button.Constructor = Button
236
+
237
+
238
+ /* BUTTON DATA-API
239
+ * =============== */
240
+
241
+ $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) {
242
+ var $btn = $(e.target)
243
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
244
+ $btn.button('toggle')
245
+ })
246
+
247
+ }(window.jQuery);
248
+ /* ==========================================================
249
+ * bootstrap-carousel.js v2.2.1
250
+ * http://twitter.github.com/bootstrap/javascript.html#carousel
251
+ * ==========================================================
252
+ * Copyright 2012 Twitter, Inc.
253
+ *
254
+ * Licensed under the Apache License, Version 2.0 (the "License");
255
+ * you may not use this file except in compliance with the License.
256
+ * You may obtain a copy of the License at
257
+ *
258
+ * http://www.apache.org/licenses/LICENSE-2.0
259
+ *
260
+ * Unless required by applicable law or agreed to in writing, software
261
+ * distributed under the License is distributed on an "AS IS" BASIS,
262
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
263
+ * See the License for the specific language governing permissions and
264
+ * limitations under the License.
265
+ * ========================================================== */
266
+
267
+
268
+
269
+ !function ($) {
270
+
271
+ "use strict"; // jshint ;_;
272
+
273
+
274
+ /* CAROUSEL CLASS DEFINITION
275
+ * ========================= */
276
+
277
+ var Carousel = function (element, options) {
278
+ this.$element = $(element)
279
+ this.options = options
280
+ this.options.slide && this.slide(this.options.slide)
281
+ this.options.pause == 'hover' && this.$element
282
+ .on('mouseenter', $.proxy(this.pause, this))
283
+ .on('mouseleave', $.proxy(this.cycle, this))
284
+ }
285
+
286
+ Carousel.prototype = {
287
+
288
+ cycle: function (e) {
289
+ if (!e) this.paused = false
290
+ this.options.interval
291
+ && !this.paused
292
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
293
+ return this
294
+ }
295
+
296
+ , to: function (pos) {
297
+ var $active = this.$element.find('.item.active')
298
+ , children = $active.parent().children()
299
+ , activePos = children.index($active)
300
+ , that = this
301
+
302
+ if (pos > (children.length - 1) || pos < 0) return
303
+
304
+ if (this.sliding) {
305
+ return this.$element.one('slid', function () {
306
+ that.to(pos)
307
+ })
308
+ }
309
+
310
+ if (activePos == pos) {
311
+ return this.pause().cycle()
312
+ }
313
+
314
+ return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
315
+ }
316
+
317
+ , pause: function (e) {
318
+ if (!e) this.paused = true
319
+ if (this.$element.find('.next, .prev').length && $.support.transition.end) {
320
+ this.$element.trigger($.support.transition.end)
321
+ this.cycle()
322
+ }
323
+ clearInterval(this.interval)
324
+ this.interval = null
325
+ return this
326
+ }
327
+
328
+ , next: function () {
329
+ if (this.sliding) return
330
+ return this.slide('next')
331
+ }
332
+
333
+ , prev: function () {
334
+ if (this.sliding) return
335
+ return this.slide('prev')
336
+ }
337
+
338
+ , slide: function (type, next) {
339
+ var $active = this.$element.find('.item.active')
340
+ , $next = next || $active[type]()
341
+ , isCycling = this.interval
342
+ , direction = type == 'next' ? 'left' : 'right'
343
+ , fallback = type == 'next' ? 'first' : 'last'
344
+ , that = this
345
+ , e
346
+
347
+ this.sliding = true
348
+
349
+ isCycling && this.pause()
350
+
351
+ $next = $next.length ? $next : this.$element.find('.item')[fallback]()
352
+
353
+ e = $.Event('slide', {
354
+ relatedTarget: $next[0]
355
+ })
356
+
357
+ if ($next.hasClass('active')) return
358
+
359
+ if ($.support.transition && this.$element.hasClass('slide')) {
360
+ this.$element.trigger(e)
361
+ if (e.isDefaultPrevented()) return
362
+ $next.addClass(type)
363
+ $next[0].offsetWidth // force reflow
364
+ $active.addClass(direction)
365
+ $next.addClass(direction)
366
+ this.$element.one($.support.transition.end, function () {
367
+ $next.removeClass([type, direction].join(' ')).addClass('active')
368
+ $active.removeClass(['active', direction].join(' '))
369
+ that.sliding = false
370
+ setTimeout(function () { that.$element.trigger('slid') }, 0)
371
+ })
372
+ } else {
373
+ this.$element.trigger(e)
374
+ if (e.isDefaultPrevented()) return
375
+ $active.removeClass('active')
376
+ $next.addClass('active')
377
+ this.sliding = false
378
+ this.$element.trigger('slid')
379
+ }
380
+
381
+ isCycling && this.cycle()
382
+
383
+ return this
384
+ }
385
+
386
+ }
387
+
388
+
389
+ /* CAROUSEL PLUGIN DEFINITION
390
+ * ========================== */
391
+
392
+ $.fn.carousel = function (option) {
393
+ return this.each(function () {
394
+ var $this = $(this)
395
+ , data = $this.data('carousel')
396
+ , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
397
+ , action = typeof option == 'string' ? option : options.slide
398
+ if (!data) $this.data('carousel', (data = new Carousel(this, options)))
399
+ if (typeof option == 'number') data.to(option)
400
+ else if (action) data[action]()
401
+ else if (options.interval) data.cycle()
402
+ })
403
+ }
404
+
405
+ $.fn.carousel.defaults = {
406
+ interval: 5000
407
+ , pause: 'hover'
408
+ }
409
+
410
+ $.fn.carousel.Constructor = Carousel
411
+
412
+
413
+ /* CAROUSEL DATA-API
414
+ * ================= */
415
+
416
+ $(document).on('click.carousel.data-api', '[data-slide]', function (e) {
417
+ var $this = $(this), href
418
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
419
+ , options = $.extend({}, $target.data(), $this.data())
420
+ $target.carousel(options)
421
+ e.preventDefault()
422
+ })
423
+
424
+ }(window.jQuery);
425
+ /* =============================================================
426
+ * bootstrap-collapse.js v2.2.1
427
+ * http://twitter.github.com/bootstrap/javascript.html#collapse
428
+ * =============================================================
429
+ * Copyright 2012 Twitter, Inc.
430
+ *
431
+ * Licensed under the Apache License, Version 2.0 (the "License");
432
+ * you may not use this file except in compliance with the License.
433
+ * You may obtain a copy of the License at
434
+ *
435
+ * http://www.apache.org/licenses/LICENSE-2.0
436
+ *
437
+ * Unless required by applicable law or agreed to in writing, software
438
+ * distributed under the License is distributed on an "AS IS" BASIS,
439
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
440
+ * See the License for the specific language governing permissions and
441
+ * limitations under the License.
442
+ * ============================================================ */
443
+
444
+
445
+
446
+ !function ($) {
447
+
448
+ "use strict"; // jshint ;_;
449
+
450
+
451
+ /* COLLAPSE PUBLIC CLASS DEFINITION
452
+ * ================================ */
453
+
454
+ var Collapse = function (element, options) {
455
+ this.$element = $(element)
456
+ this.options = $.extend({}, $.fn.collapse.defaults, options)
457
+
458
+ if (this.options.parent) {
459
+ this.$parent = $(this.options.parent)
460
+ }
461
+
462
+ this.options.toggle && this.toggle()
463
+ }
464
+
465
+ Collapse.prototype = {
466
+
467
+ constructor: Collapse
468
+
469
+ , dimension: function () {
470
+ var hasWidth = this.$element.hasClass('width')
471
+ return hasWidth ? 'width' : 'height'
472
+ }
473
+
474
+ , show: function () {
475
+ var dimension
476
+ , scroll
477
+ , actives
478
+ , hasData
479
+
480
+ if (this.transitioning) return
481
+
482
+ dimension = this.dimension()
483
+ scroll = $.camelCase(['scroll', dimension].join('-'))
484
+ actives = this.$parent && this.$parent.find('> .accordion-group > .in')
485
+
486
+ if (actives && actives.length) {
487
+ hasData = actives.data('collapse')
488
+ if (hasData && hasData.transitioning) return
489
+ actives.collapse('hide')
490
+ hasData || actives.data('collapse', null)
491
+ }
492
+
493
+ this.$element[dimension](0)
494
+ this.transition('addClass', $.Event('show'), 'shown')
495
+ $.support.transition && this.$element[dimension](this.$element[0][scroll])
496
+ }
497
+
498
+ , hide: function () {
499
+ var dimension
500
+ if (this.transitioning) return
501
+ dimension = this.dimension()
502
+ this.reset(this.$element[dimension]())
503
+ this.transition('removeClass', $.Event('hide'), 'hidden')
504
+ this.$element[dimension](0)
505
+ }
506
+
507
+ , reset: function (size) {
508
+ var dimension = this.dimension()
509
+
510
+ this.$element
511
+ .removeClass('collapse')
512
+ [dimension](size || 'auto')
513
+ [0].offsetWidth
514
+
515
+ this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
516
+
517
+ return this
518
+ }
519
+
520
+ , transition: function (method, startEvent, completeEvent) {
521
+ var that = this
522
+ , complete = function () {
523
+ if (startEvent.type == 'show') that.reset()
524
+ that.transitioning = 0
525
+ that.$element.trigger(completeEvent)
526
+ }
527
+
528
+ this.$element.trigger(startEvent)
529
+
530
+ if (startEvent.isDefaultPrevented()) return
531
+
532
+ this.transitioning = 1
533
+
534
+ this.$element[method]('in')
535
+
536
+ $.support.transition && this.$element.hasClass('collapse') ?
537
+ this.$element.one($.support.transition.end, complete) :
538
+ complete()
539
+ }
540
+
541
+ , toggle: function () {
542
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
543
+ }
544
+
545
+ }
546
+
547
+
548
+ /* COLLAPSIBLE PLUGIN DEFINITION
549
+ * ============================== */
550
+
551
+ $.fn.collapse = function (option) {
552
+ return this.each(function () {
553
+ var $this = $(this)
554
+ , data = $this.data('collapse')
555
+ , options = typeof option == 'object' && option
556
+ if (!data) $this.data('collapse', (data = new Collapse(this, options)))
557
+ if (typeof option == 'string') data[option]()
558
+ })
559
+ }
560
+
561
+ $.fn.collapse.defaults = {
562
+ toggle: true
563
+ }
564
+
565
+ $.fn.collapse.Constructor = Collapse
566
+
567
+
568
+ /* COLLAPSIBLE DATA-API
569
+ * ==================== */
570
+
571
+ $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
572
+ var $this = $(this), href
573
+ , target = $this.attr('data-target')
574
+ || e.preventDefault()
575
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
576
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
577
+ $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
578
+ $(target).collapse(option)
579
+ })
580
+
581
+ }(window.jQuery);
582
+ /* ============================================================
583
+ * bootstrap-dropdown.js v2.2.1
584
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
585
+ * ============================================================
586
+ * Copyright 2012 Twitter, Inc.
587
+ *
588
+ * Licensed under the Apache License, Version 2.0 (the "License");
589
+ * you may not use this file except in compliance with the License.
590
+ * You may obtain a copy of the License at
591
+ *
592
+ * http://www.apache.org/licenses/LICENSE-2.0
593
+ *
594
+ * Unless required by applicable law or agreed to in writing, software
595
+ * distributed under the License is distributed on an "AS IS" BASIS,
596
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
597
+ * See the License for the specific language governing permissions and
598
+ * limitations under the License.
599
+ * ============================================================ */
600
+
601
+
602
+
603
+ !function ($) {
604
+
605
+ "use strict"; // jshint ;_;
606
+
607
+
608
+ /* DROPDOWN CLASS DEFINITION
609
+ * ========================= */
610
+
611
+ var toggle = '[data-toggle=dropdown]'
612
+ , Dropdown = function (element) {
613
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
614
+ $('html').on('click.dropdown.data-api', function () {
615
+ $el.parent().removeClass('open')
616
+ })
617
+ }
618
+
619
+ Dropdown.prototype = {
620
+
621
+ constructor: Dropdown
622
+
623
+ , toggle: function (e) {
624
+ var $this = $(this)
625
+ , $parent
626
+ , isActive
627
+
628
+ if ($this.is('.disabled, :disabled')) return
629
+
630
+ $parent = getParent($this)
631
+
632
+ isActive = $parent.hasClass('open')
633
+
634
+ clearMenus()
635
+
636
+ if (!isActive) {
637
+ $parent.toggleClass('open')
638
+ $this.focus()
639
+ }
640
+
641
+ return false
642
+ }
643
+
644
+ , keydown: function (e) {
645
+ var $this
646
+ , $items
647
+ , $active
648
+ , $parent
649
+ , isActive
650
+ , index
651
+
652
+ if (!/(38|40|27)/.test(e.keyCode)) return
653
+
654
+ $this = $(this)
655
+
656
+ e.preventDefault()
657
+ e.stopPropagation()
658
+
659
+ if ($this.is('.disabled, :disabled')) return
660
+
661
+ $parent = getParent($this)
662
+
663
+ isActive = $parent.hasClass('open')
664
+
665
+ if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
666
+
667
+ $items = $('[role=menu] li:not(.divider) a', $parent)
668
+
669
+ if (!$items.length) return
670
+
671
+ index = $items.index($items.filter(':focus'))
672
+
673
+ if (e.keyCode == 38 && index > 0) index-- // up
674
+ if (e.keyCode == 40 && index < $items.length - 1) index++ // down
675
+ if (!~index) index = 0
676
+
677
+ $items
678
+ .eq(index)
679
+ .focus()
680
+ }
681
+
682
+ }
683
+
684
+ function clearMenus() {
685
+ $(toggle).each(function () {
686
+ getParent($(this)).removeClass('open')
687
+ })
688
+ }
689
+
690
+ function getParent($this) {
691
+ var selector = $this.attr('data-target')
692
+ , $parent
693
+
694
+ if (!selector) {
695
+ selector = $this.attr('href')
696
+ selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
697
+ }
698
+
699
+ $parent = $(selector)
700
+ $parent.length || ($parent = $this.parent())
701
+
702
+ return $parent
703
+ }
704
+
705
+
706
+ /* DROPDOWN PLUGIN DEFINITION
707
+ * ========================== */
708
+
709
+ $.fn.dropdown = function (option) {
710
+ return this.each(function () {
711
+ var $this = $(this)
712
+ , data = $this.data('dropdown')
713
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
714
+ if (typeof option == 'string') data[option].call($this)
715
+ })
716
+ }
717
+
718
+ $.fn.dropdown.Constructor = Dropdown
719
+
720
+
721
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
722
+ * =================================== */
723
+
724
+ $(document)
725
+ .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
726
+ .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
727
+ .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
728
+ .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
729
+
730
+ }(window.jQuery);
731
+ /* =========================================================
732
+ * bootstrap-modal.js v2.2.1
733
+ * http://twitter.github.com/bootstrap/javascript.html#modals
734
+ * =========================================================
735
+ * Copyright 2012 Twitter, Inc.
736
+ *
737
+ * Licensed under the Apache License, Version 2.0 (the "License");
738
+ * you may not use this file except in compliance with the License.
739
+ * You may obtain a copy of the License at
740
+ *
741
+ * http://www.apache.org/licenses/LICENSE-2.0
742
+ *
743
+ * Unless required by applicable law or agreed to in writing, software
744
+ * distributed under the License is distributed on an "AS IS" BASIS,
745
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
746
+ * See the License for the specific language governing permissions and
747
+ * limitations under the License.
748
+ * ========================================================= */
749
+
750
+
751
+
752
+ !function ($) {
753
+
754
+ "use strict"; // jshint ;_;
755
+
756
+
757
+ /* MODAL CLASS DEFINITION
758
+ * ====================== */
759
+
760
+ var Modal = function (element, options) {
761
+ this.options = options
762
+ this.$element = $(element)
763
+ .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
764
+ this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
765
+ }
766
+
767
+ Modal.prototype = {
768
+
769
+ constructor: Modal
770
+
771
+ , toggle: function () {
772
+ return this[!this.isShown ? 'show' : 'hide']()
773
+ }
774
+
775
+ , show: function () {
776
+ var that = this
777
+ , e = $.Event('show')
778
+
779
+ this.$element.trigger(e)
780
+
781
+ if (this.isShown || e.isDefaultPrevented()) return
782
+
783
+ this.isShown = true
784
+
785
+ this.escape()
786
+
787
+ this.backdrop(function () {
788
+ var transition = $.support.transition && that.$element.hasClass('fade')
789
+
790
+ if (!that.$element.parent().length) {
791
+ that.$element.appendTo(document.body) //don't move modals dom position
792
+ }
793
+
794
+ that.$element
795
+ .show()
796
+
797
+ if (transition) {
798
+ that.$element[0].offsetWidth // force reflow
799
+ }
800
+
801
+ that.$element
802
+ .addClass('in')
803
+ .attr('aria-hidden', false)
804
+
805
+ that.enforceFocus()
806
+
807
+ transition ?
808
+ that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) :
809
+ that.$element.focus().trigger('shown')
810
+
811
+ })
812
+ }
813
+
814
+ , hide: function (e) {
815
+ e && e.preventDefault()
816
+
817
+ var that = this
818
+
819
+ e = $.Event('hide')
820
+
821
+ this.$element.trigger(e)
822
+
823
+ if (!this.isShown || e.isDefaultPrevented()) return
824
+
825
+ this.isShown = false
826
+
827
+ this.escape()
828
+
829
+ $(document).off('focusin.modal')
830
+
831
+ this.$element
832
+ .removeClass('in')
833
+ .attr('aria-hidden', true)
834
+
835
+ $.support.transition && this.$element.hasClass('fade') ?
836
+ this.hideWithTransition() :
837
+ this.hideModal()
838
+ }
839
+
840
+ , enforceFocus: function () {
841
+ var that = this
842
+ $(document).on('focusin.modal', function (e) {
843
+ if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
844
+ that.$element.focus()
845
+ }
846
+ })
847
+ }
848
+
849
+ , escape: function () {
850
+ var that = this
851
+ if (this.isShown && this.options.keyboard) {
852
+ this.$element.on('keyup.dismiss.modal', function ( e ) {
853
+ e.which == 27 && that.hide()
854
+ })
855
+ } else if (!this.isShown) {
856
+ this.$element.off('keyup.dismiss.modal')
857
+ }
858
+ }
859
+
860
+ , hideWithTransition: function () {
861
+ var that = this
862
+ , timeout = setTimeout(function () {
863
+ that.$element.off($.support.transition.end)
864
+ that.hideModal()
865
+ }, 500)
866
+
867
+ this.$element.one($.support.transition.end, function () {
868
+ clearTimeout(timeout)
869
+ that.hideModal()
870
+ })
871
+ }
872
+
873
+ , hideModal: function (that) {
874
+ this.$element
875
+ .hide()
876
+ .trigger('hidden')
877
+
878
+ this.backdrop()
879
+ }
880
+
881
+ , removeBackdrop: function () {
882
+ this.$backdrop.remove()
883
+ this.$backdrop = null
884
+ }
885
+
886
+ , backdrop: function (callback) {
887
+ var that = this
888
+ , animate = this.$element.hasClass('fade') ? 'fade' : ''
889
+
890
+ if (this.isShown && this.options.backdrop) {
891
+ var doAnimate = $.support.transition && animate
892
+
893
+ this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
894
+ .appendTo(document.body)
895
+
896
+ this.$backdrop.click(
897
+ this.options.backdrop == 'static' ?
898
+ $.proxy(this.$element[0].focus, this.$element[0])
899
+ : $.proxy(this.hide, this)
900
+ )
901
+
902
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
903
+
904
+ this.$backdrop.addClass('in')
905
+
906
+ doAnimate ?
907
+ this.$backdrop.one($.support.transition.end, callback) :
908
+ callback()
909
+
910
+ } else if (!this.isShown && this.$backdrop) {
911
+ this.$backdrop.removeClass('in')
912
+
913
+ $.support.transition && this.$element.hasClass('fade')?
914
+ this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) :
915
+ this.removeBackdrop()
916
+
917
+ } else if (callback) {
918
+ callback()
919
+ }
920
+ }
921
+ }
922
+
923
+
924
+ /* MODAL PLUGIN DEFINITION
925
+ * ======================= */
926
+
927
+ $.fn.modal = function (option) {
928
+ return this.each(function () {
929
+ var $this = $(this)
930
+ , data = $this.data('modal')
931
+ , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
932
+ if (!data) $this.data('modal', (data = new Modal(this, options)))
933
+ if (typeof option == 'string') data[option]()
934
+ else if (options.show) data.show()
935
+ })
936
+ }
937
+
938
+ $.fn.modal.defaults = {
939
+ backdrop: true
940
+ , keyboard: true
941
+ , show: true
942
+ }
943
+
944
+ $.fn.modal.Constructor = Modal
945
+
946
+
947
+ /* MODAL DATA-API
948
+ * ============== */
949
+
950
+ $(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) {
951
+ var $this = $(this)
952
+ , href = $this.attr('href')
953
+ , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
954
+ , option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data())
955
+
956
+ e.preventDefault()
957
+
958
+ $target
959
+ .modal(option)
960
+ .one('hide', function () {
961
+ $this.focus()
962
+ })
963
+ })
964
+
965
+ }(window.jQuery);
966
+ /* ===========================================================
967
+ * bootstrap-tooltip.js v2.2.1
968
+ * http://twitter.github.com/bootstrap/javascript.html#tooltips
969
+ * Inspired by the original jQuery.tipsy by Jason Frame
970
+ * ===========================================================
971
+ * Copyright 2012 Twitter, Inc.
972
+ *
973
+ * Licensed under the Apache License, Version 2.0 (the "License");
974
+ * you may not use this file except in compliance with the License.
975
+ * You may obtain a copy of the License at
976
+ *
977
+ * http://www.apache.org/licenses/LICENSE-2.0
978
+ *
979
+ * Unless required by applicable law or agreed to in writing, software
980
+ * distributed under the License is distributed on an "AS IS" BASIS,
981
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
982
+ * See the License for the specific language governing permissions and
983
+ * limitations under the License.
984
+ * ========================================================== */
985
+
986
+
987
+
988
+ !function ($) {
989
+
990
+ "use strict"; // jshint ;_;
991
+
992
+
993
+ /* TOOLTIP PUBLIC CLASS DEFINITION
994
+ * =============================== */
995
+
996
+ var Tooltip = function (element, options) {
997
+ this.init('tooltip', element, options)
998
+ }
999
+
1000
+ Tooltip.prototype = {
1001
+
1002
+ constructor: Tooltip
1003
+
1004
+ , init: function (type, element, options) {
1005
+ var eventIn
1006
+ , eventOut
1007
+
1008
+ this.type = type
1009
+ this.$element = $(element)
1010
+ this.options = this.getOptions(options)
1011
+ this.enabled = true
1012
+
1013
+ if (this.options.trigger == 'click') {
1014
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
1015
+ } else if (this.options.trigger != 'manual') {
1016
+ eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
1017
+ eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
1018
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
1019
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
1020
+ }
1021
+
1022
+ this.options.selector ?
1023
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
1024
+ this.fixTitle()
1025
+ }
1026
+
1027
+ , getOptions: function (options) {
1028
+ options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
1029
+
1030
+ if (options.delay && typeof options.delay == 'number') {
1031
+ options.delay = {
1032
+ show: options.delay
1033
+ , hide: options.delay
1034
+ }
1035
+ }
1036
+
1037
+ return options
1038
+ }
1039
+
1040
+ , enter: function (e) {
1041
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
1042
+
1043
+ if (!self.options.delay || !self.options.delay.show) return self.show()
1044
+
1045
+ clearTimeout(this.timeout)
1046
+ self.hoverState = 'in'
1047
+ this.timeout = setTimeout(function() {
1048
+ if (self.hoverState == 'in') self.show()
1049
+ }, self.options.delay.show)
1050
+ }
1051
+
1052
+ , leave: function (e) {
1053
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
1054
+
1055
+ if (this.timeout) clearTimeout(this.timeout)
1056
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
1057
+
1058
+ self.hoverState = 'out'
1059
+ this.timeout = setTimeout(function() {
1060
+ if (self.hoverState == 'out') self.hide()
1061
+ }, self.options.delay.hide)
1062
+ }
1063
+
1064
+ , show: function () {
1065
+ var $tip
1066
+ , inside
1067
+ , pos
1068
+ , actualWidth
1069
+ , actualHeight
1070
+ , placement
1071
+ , tp
1072
+
1073
+ if (this.hasContent() && this.enabled) {
1074
+ $tip = this.tip()
1075
+ this.setContent()
1076
+
1077
+ if (this.options.animation) {
1078
+ $tip.addClass('fade')
1079
+ }
1080
+
1081
+ placement = typeof this.options.placement == 'function' ?
1082
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
1083
+ this.options.placement
1084
+
1085
+ inside = /in/.test(placement)
1086
+
1087
+ $tip
1088
+ .detach()
1089
+ .css({ top: 0, left: 0, display: 'block' })
1090
+ .insertAfter(this.$element)
1091
+
1092
+ pos = this.getPosition(inside)
1093
+
1094
+ actualWidth = $tip[0].offsetWidth
1095
+ actualHeight = $tip[0].offsetHeight
1096
+
1097
+ switch (inside ? placement.split(' ')[1] : placement) {
1098
+ case 'bottom':
1099
+ tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
1100
+ break
1101
+ case 'top':
1102
+ tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
1103
+ break
1104
+ case 'left':
1105
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
1106
+ break
1107
+ case 'right':
1108
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
1109
+ break
1110
+ }
1111
+
1112
+ $tip
1113
+ .offset(tp)
1114
+ .addClass(placement)
1115
+ .addClass('in')
1116
+ }
1117
+ }
1118
+
1119
+ , setContent: function () {
1120
+ var $tip = this.tip()
1121
+ , title = this.getTitle()
1122
+
1123
+ $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
1124
+ $tip.removeClass('fade in top bottom left right')
1125
+ }
1126
+
1127
+ , hide: function () {
1128
+ var that = this
1129
+ , $tip = this.tip()
1130
+
1131
+ $tip.removeClass('in')
1132
+
1133
+ function removeWithAnimation() {
1134
+ var timeout = setTimeout(function () {
1135
+ $tip.off($.support.transition.end).detach()
1136
+ }, 500)
1137
+
1138
+ $tip.one($.support.transition.end, function () {
1139
+ clearTimeout(timeout)
1140
+ $tip.detach()
1141
+ })
1142
+ }
1143
+
1144
+ $.support.transition && this.$tip.hasClass('fade') ?
1145
+ removeWithAnimation() :
1146
+ $tip.detach()
1147
+
1148
+ return this
1149
+ }
1150
+
1151
+ , fixTitle: function () {
1152
+ var $e = this.$element
1153
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
1154
+ $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
1155
+ }
1156
+ }
1157
+
1158
+ , hasContent: function () {
1159
+ return this.getTitle()
1160
+ }
1161
+
1162
+ , getPosition: function (inside) {
1163
+ return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
1164
+ width: this.$element[0].offsetWidth
1165
+ , height: this.$element[0].offsetHeight
1166
+ })
1167
+ }
1168
+
1169
+ , getTitle: function () {
1170
+ var title
1171
+ , $e = this.$element
1172
+ , o = this.options
1173
+
1174
+ title = $e.attr('data-original-title')
1175
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
1176
+
1177
+ return title
1178
+ }
1179
+
1180
+ , tip: function () {
1181
+ return this.$tip = this.$tip || $(this.options.template)
1182
+ }
1183
+
1184
+ , validate: function () {
1185
+ if (!this.$element[0].parentNode) {
1186
+ this.hide()
1187
+ this.$element = null
1188
+ this.options = null
1189
+ }
1190
+ }
1191
+
1192
+ , enable: function () {
1193
+ this.enabled = true
1194
+ }
1195
+
1196
+ , disable: function () {
1197
+ this.enabled = false
1198
+ }
1199
+
1200
+ , toggleEnabled: function () {
1201
+ this.enabled = !this.enabled
1202
+ }
1203
+
1204
+ , toggle: function (e) {
1205
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
1206
+ self[self.tip().hasClass('in') ? 'hide' : 'show']()
1207
+ }
1208
+
1209
+ , destroy: function () {
1210
+ this.hide().$element.off('.' + this.type).removeData(this.type)
1211
+ }
1212
+
1213
+ }
1214
+
1215
+
1216
+ /* TOOLTIP PLUGIN DEFINITION
1217
+ * ========================= */
1218
+
1219
+ $.fn.tooltip = function ( option ) {
1220
+ return this.each(function () {
1221
+ var $this = $(this)
1222
+ , data = $this.data('tooltip')
1223
+ , options = typeof option == 'object' && option
1224
+ if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
1225
+ if (typeof option == 'string') data[option]()
1226
+ })
1227
+ }
1228
+
1229
+ $.fn.tooltip.Constructor = Tooltip
1230
+
1231
+ $.fn.tooltip.defaults = {
1232
+ animation: true
1233
+ , placement: 'top'
1234
+ , selector: false
1235
+ , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
1236
+ , trigger: 'hover'
1237
+ , title: ''
1238
+ , delay: 0
1239
+ , html: false
1240
+ }
1241
+
1242
+ }(window.jQuery);
1243
+ /* ===========================================================
1244
+ * bootstrap-popover.js v2.2.1
1245
+ * http://twitter.github.com/bootstrap/javascript.html#popovers
1246
+ * ===========================================================
1247
+ * Copyright 2012 Twitter, Inc.
1248
+ *
1249
+ * Licensed under the Apache License, Version 2.0 (the "License");
1250
+ * you may not use this file except in compliance with the License.
1251
+ * You may obtain a copy of the License at
1252
+ *
1253
+ * http://www.apache.org/licenses/LICENSE-2.0
1254
+ *
1255
+ * Unless required by applicable law or agreed to in writing, software
1256
+ * distributed under the License is distributed on an "AS IS" BASIS,
1257
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1258
+ * See the License for the specific language governing permissions and
1259
+ * limitations under the License.
1260
+ * =========================================================== */
1261
+
1262
+
1263
+
1264
+ !function ($) {
1265
+
1266
+ "use strict"; // jshint ;_;
1267
+
1268
+
1269
+ /* POPOVER PUBLIC CLASS DEFINITION
1270
+ * =============================== */
1271
+
1272
+ var Popover = function (element, options) {
1273
+ this.init('popover', element, options)
1274
+ }
1275
+
1276
+
1277
+ /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
1278
+ ========================================== */
1279
+
1280
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
1281
+
1282
+ constructor: Popover
1283
+
1284
+ , setContent: function () {
1285
+ var $tip = this.tip()
1286
+ , title = this.getTitle()
1287
+ , content = this.getContent()
1288
+
1289
+ $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
1290
+ $tip.find('.popover-content > *')[this.options.html ? 'html' : 'text'](content)
1291
+
1292
+ $tip.removeClass('fade top bottom left right in')
1293
+ }
1294
+
1295
+ , hasContent: function () {
1296
+ return this.getTitle() || this.getContent()
1297
+ }
1298
+
1299
+ , getContent: function () {
1300
+ var content
1301
+ , $e = this.$element
1302
+ , o = this.options
1303
+
1304
+ content = $e.attr('data-content')
1305
+ || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
1306
+
1307
+ return content
1308
+ }
1309
+
1310
+ , tip: function () {
1311
+ if (!this.$tip) {
1312
+ this.$tip = $(this.options.template)
1313
+ }
1314
+ return this.$tip
1315
+ }
1316
+
1317
+ , destroy: function () {
1318
+ this.hide().$element.off('.' + this.type).removeData(this.type)
1319
+ }
1320
+
1321
+ })
1322
+
1323
+
1324
+ /* POPOVER PLUGIN DEFINITION
1325
+ * ======================= */
1326
+
1327
+ $.fn.popover = function (option) {
1328
+ return this.each(function () {
1329
+ var $this = $(this)
1330
+ , data = $this.data('popover')
1331
+ , options = typeof option == 'object' && option
1332
+ if (!data) $this.data('popover', (data = new Popover(this, options)))
1333
+ if (typeof option == 'string') data[option]()
1334
+ })
1335
+ }
1336
+
1337
+ $.fn.popover.Constructor = Popover
1338
+
1339
+ $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
1340
+ placement: 'right'
1341
+ , trigger: 'click'
1342
+ , content: ''
1343
+ , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
1344
+ })
1345
+
1346
+ }(window.jQuery);
1347
+ /* =============================================================
1348
+ * bootstrap-scrollspy.js v2.2.1
1349
+ * http://twitter.github.com/bootstrap/javascript.html#scrollspy
1350
+ * =============================================================
1351
+ * Copyright 2012 Twitter, Inc.
1352
+ *
1353
+ * Licensed under the Apache License, Version 2.0 (the "License");
1354
+ * you may not use this file except in compliance with the License.
1355
+ * You may obtain a copy of the License at
1356
+ *
1357
+ * http://www.apache.org/licenses/LICENSE-2.0
1358
+ *
1359
+ * Unless required by applicable law or agreed to in writing, software
1360
+ * distributed under the License is distributed on an "AS IS" BASIS,
1361
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1362
+ * See the License for the specific language governing permissions and
1363
+ * limitations under the License.
1364
+ * ============================================================== */
1365
+
1366
+
1367
+
1368
+ !function ($) {
1369
+
1370
+ "use strict"; // jshint ;_;
1371
+
1372
+
1373
+ /* SCROLLSPY CLASS DEFINITION
1374
+ * ========================== */
1375
+
1376
+ function ScrollSpy(element, options) {
1377
+ var process = $.proxy(this.process, this)
1378
+ , $element = $(element).is('body') ? $(window) : $(element)
1379
+ , href
1380
+ this.options = $.extend({}, $.fn.scrollspy.defaults, options)
1381
+ this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
1382
+ this.selector = (this.options.target
1383
+ || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
1384
+ || '') + ' .nav li > a'
1385
+ this.$body = $('body')
1386
+ this.refresh()
1387
+ this.process()
1388
+ }
1389
+
1390
+ ScrollSpy.prototype = {
1391
+
1392
+ constructor: ScrollSpy
1393
+
1394
+ , refresh: function () {
1395
+ var self = this
1396
+ , $targets
1397
+
1398
+ this.offsets = $([])
1399
+ this.targets = $([])
1400
+
1401
+ $targets = this.$body
1402
+ .find(this.selector)
1403
+ .map(function () {
1404
+ var $el = $(this)
1405
+ , href = $el.data('target') || $el.attr('href')
1406
+ , $href = /^#\w/.test(href) && $(href)
1407
+ return ( $href
1408
+ && $href.length
1409
+ && [[ $href.position().top, href ]] ) || null
1410
+ })
1411
+ .sort(function (a, b) { return a[0] - b[0] })
1412
+ .each(function () {
1413
+ self.offsets.push(this[0])
1414
+ self.targets.push(this[1])
1415
+ })
1416
+ }
1417
+
1418
+ , process: function () {
1419
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
1420
+ , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
1421
+ , maxScroll = scrollHeight - this.$scrollElement.height()
1422
+ , offsets = this.offsets
1423
+ , targets = this.targets
1424
+ , activeTarget = this.activeTarget
1425
+ , i
1426
+
1427
+ if (scrollTop >= maxScroll) {
1428
+ return activeTarget != (i = targets.last()[0])
1429
+ && this.activate ( i )
1430
+ }
1431
+
1432
+ for (i = offsets.length; i--;) {
1433
+ activeTarget != targets[i]
1434
+ && scrollTop >= offsets[i]
1435
+ && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
1436
+ && this.activate( targets[i] )
1437
+ }
1438
+ }
1439
+
1440
+ , activate: function (target) {
1441
+ var active
1442
+ , selector
1443
+
1444
+ this.activeTarget = target
1445
+
1446
+ $(this.selector)
1447
+ .parent('.active')
1448
+ .removeClass('active')
1449
+
1450
+ selector = this.selector
1451
+ + '[data-target="' + target + '"],'
1452
+ + this.selector + '[href="' + target + '"]'
1453
+
1454
+ active = $(selector)
1455
+ .parent('li')
1456
+ .addClass('active')
1457
+
1458
+ if (active.parent('.dropdown-menu').length) {
1459
+ active = active.closest('li.dropdown').addClass('active')
1460
+ }
1461
+
1462
+ active.trigger('activate')
1463
+ }
1464
+
1465
+ }
1466
+
1467
+
1468
+ /* SCROLLSPY PLUGIN DEFINITION
1469
+ * =========================== */
1470
+
1471
+ $.fn.scrollspy = function (option) {
1472
+ return this.each(function () {
1473
+ var $this = $(this)
1474
+ , data = $this.data('scrollspy')
1475
+ , options = typeof option == 'object' && option
1476
+ if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
1477
+ if (typeof option == 'string') data[option]()
1478
+ })
1479
+ }
1480
+
1481
+ $.fn.scrollspy.Constructor = ScrollSpy
1482
+
1483
+ $.fn.scrollspy.defaults = {
1484
+ offset: 10
1485
+ }
1486
+
1487
+
1488
+ /* SCROLLSPY DATA-API
1489
+ * ================== */
1490
+
1491
+ $(window).on('load', function () {
1492
+ $('[data-spy="scroll"]').each(function () {
1493
+ var $spy = $(this)
1494
+ $spy.scrollspy($spy.data())
1495
+ })
1496
+ })
1497
+
1498
+ }(window.jQuery);
1499
+ /* ========================================================
1500
+ * bootstrap-tab.js v2.2.1
1501
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
1502
+ * ========================================================
1503
+ * Copyright 2012 Twitter, Inc.
1504
+ *
1505
+ * Licensed under the Apache License, Version 2.0 (the "License");
1506
+ * you may not use this file except in compliance with the License.
1507
+ * You may obtain a copy of the License at
1508
+ *
1509
+ * http://www.apache.org/licenses/LICENSE-2.0
1510
+ *
1511
+ * Unless required by applicable law or agreed to in writing, software
1512
+ * distributed under the License is distributed on an "AS IS" BASIS,
1513
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1514
+ * See the License for the specific language governing permissions and
1515
+ * limitations under the License.
1516
+ * ======================================================== */
1517
+
1518
+
1519
+
1520
+ !function ($) {
1521
+
1522
+ "use strict"; // jshint ;_;
1523
+
1524
+
1525
+ /* TAB CLASS DEFINITION
1526
+ * ==================== */
1527
+
1528
+ var Tab = function (element) {
1529
+ this.element = $(element)
1530
+ }
1531
+
1532
+ Tab.prototype = {
1533
+
1534
+ constructor: Tab
1535
+
1536
+ , show: function () {
1537
+ var $this = this.element
1538
+ , $ul = $this.closest('ul:not(.dropdown-menu)')
1539
+ , selector = $this.attr('data-target')
1540
+ , previous
1541
+ , $target
1542
+ , e
1543
+
1544
+ if (!selector) {
1545
+ selector = $this.attr('href')
1546
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
1547
+ }
1548
+
1549
+ if ( $this.parent('li').hasClass('active') ) return
1550
+
1551
+ previous = $ul.find('.active:last a')[0]
1552
+
1553
+ e = $.Event('show', {
1554
+ relatedTarget: previous
1555
+ })
1556
+
1557
+ $this.trigger(e)
1558
+
1559
+ if (e.isDefaultPrevented()) return
1560
+
1561
+ $target = $(selector)
1562
+
1563
+ this.activate($this.parent('li'), $ul)
1564
+ this.activate($target, $target.parent(), function () {
1565
+ $this.trigger({
1566
+ type: 'shown'
1567
+ , relatedTarget: previous
1568
+ })
1569
+ })
1570
+ }
1571
+
1572
+ , activate: function ( element, container, callback) {
1573
+ var $active = container.find('> .active')
1574
+ , transition = callback
1575
+ && $.support.transition
1576
+ && $active.hasClass('fade')
1577
+
1578
+ function next() {
1579
+ $active
1580
+ .removeClass('active')
1581
+ .find('> .dropdown-menu > .active')
1582
+ .removeClass('active')
1583
+
1584
+ element.addClass('active')
1585
+
1586
+ if (transition) {
1587
+ element[0].offsetWidth // reflow for transition
1588
+ element.addClass('in')
1589
+ } else {
1590
+ element.removeClass('fade')
1591
+ }
1592
+
1593
+ if ( element.parent('.dropdown-menu') ) {
1594
+ element.closest('li.dropdown').addClass('active')
1595
+ }
1596
+
1597
+ callback && callback()
1598
+ }
1599
+
1600
+ transition ?
1601
+ $active.one($.support.transition.end, next) :
1602
+ next()
1603
+
1604
+ $active.removeClass('in')
1605
+ }
1606
+ }
1607
+
1608
+
1609
+ /* TAB PLUGIN DEFINITION
1610
+ * ===================== */
1611
+
1612
+ $.fn.tab = function ( option ) {
1613
+ return this.each(function () {
1614
+ var $this = $(this)
1615
+ , data = $this.data('tab')
1616
+ if (!data) $this.data('tab', (data = new Tab(this)))
1617
+ if (typeof option == 'string') data[option]()
1618
+ })
1619
+ }
1620
+
1621
+ $.fn.tab.Constructor = Tab
1622
+
1623
+
1624
+ /* TAB DATA-API
1625
+ * ============ */
1626
+
1627
+ $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
1628
+ e.preventDefault()
1629
+ $(this).tab('show')
1630
+ })
1631
+
1632
+ }(window.jQuery);
1633
+ /* =============================================================
1634
+ * bootstrap-typeahead.js v2.2.1
1635
+ * http://twitter.github.com/bootstrap/javascript.html#typeahead
1636
+ * =============================================================
1637
+ * Copyright 2012 Twitter, Inc.
1638
+ *
1639
+ * Licensed under the Apache License, Version 2.0 (the "License");
1640
+ * you may not use this file except in compliance with the License.
1641
+ * You may obtain a copy of the License at
1642
+ *
1643
+ * http://www.apache.org/licenses/LICENSE-2.0
1644
+ *
1645
+ * Unless required by applicable law or agreed to in writing, software
1646
+ * distributed under the License is distributed on an "AS IS" BASIS,
1647
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1648
+ * See the License for the specific language governing permissions and
1649
+ * limitations under the License.
1650
+ * ============================================================ */
1651
+
1652
+
1653
+
1654
+ !function($){
1655
+
1656
+ "use strict"; // jshint ;_;
1657
+
1658
+
1659
+ /* TYPEAHEAD PUBLIC CLASS DEFINITION
1660
+ * ================================= */
1661
+
1662
+ var Typeahead = function (element, options) {
1663
+ this.$element = $(element)
1664
+ this.options = $.extend({}, $.fn.typeahead.defaults, options)
1665
+ this.matcher = this.options.matcher || this.matcher
1666
+ this.sorter = this.options.sorter || this.sorter
1667
+ this.highlighter = this.options.highlighter || this.highlighter
1668
+ this.updater = this.options.updater || this.updater
1669
+ this.$menu = $(this.options.menu).appendTo('body')
1670
+ this.source = this.options.source
1671
+ this.shown = false
1672
+ this.listen()
1673
+ }
1674
+
1675
+ Typeahead.prototype = {
1676
+
1677
+ constructor: Typeahead
1678
+
1679
+ , select: function () {
1680
+ var val = this.$menu.find('.active').attr('data-value')
1681
+ this.$element
1682
+ .val(this.updater(val))
1683
+ .change()
1684
+ return this.hide()
1685
+ }
1686
+
1687
+ , updater: function (item) {
1688
+ return item
1689
+ }
1690
+
1691
+ , show: function () {
1692
+ var pos = $.extend({}, this.$element.offset(), {
1693
+ height: this.$element[0].offsetHeight
1694
+ })
1695
+
1696
+ this.$menu.css({
1697
+ top: pos.top + pos.height
1698
+ , left: pos.left
1699
+ })
1700
+
1701
+ this.$menu.show()
1702
+ this.shown = true
1703
+ return this
1704
+ }
1705
+
1706
+ , hide: function () {
1707
+ this.$menu.hide()
1708
+ this.shown = false
1709
+ return this
1710
+ }
1711
+
1712
+ , lookup: function (event) {
1713
+ var items
1714
+
1715
+ this.query = this.$element.val()
1716
+
1717
+ if (!this.query || this.query.length < this.options.minLength) {
1718
+ return this.shown ? this.hide() : this
1719
+ }
1720
+
1721
+ items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
1722
+
1723
+ return items ? this.process(items) : this
1724
+ }
1725
+
1726
+ , process: function (items) {
1727
+ var that = this
1728
+
1729
+ items = $.grep(items, function (item) {
1730
+ return that.matcher(item)
1731
+ })
1732
+
1733
+ items = this.sorter(items)
1734
+
1735
+ if (!items.length) {
1736
+ return this.shown ? this.hide() : this
1737
+ }
1738
+
1739
+ return this.render(items.slice(0, this.options.items)).show()
1740
+ }
1741
+
1742
+ , matcher: function (item) {
1743
+ return ~item.toLowerCase().indexOf(this.query.toLowerCase())
1744
+ }
1745
+
1746
+ , sorter: function (items) {
1747
+ var beginswith = []
1748
+ , caseSensitive = []
1749
+ , caseInsensitive = []
1750
+ , item
1751
+
1752
+ while (item = items.shift()) {
1753
+ if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
1754
+ else if (~item.indexOf(this.query)) caseSensitive.push(item)
1755
+ else caseInsensitive.push(item)
1756
+ }
1757
+
1758
+ return beginswith.concat(caseSensitive, caseInsensitive)
1759
+ }
1760
+
1761
+ , highlighter: function (item) {
1762
+ var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
1763
+ return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
1764
+ return '<strong>' + match + '</strong>'
1765
+ })
1766
+ }
1767
+
1768
+ , render: function (items) {
1769
+ var that = this
1770
+
1771
+ items = $(items).map(function (i, item) {
1772
+ i = $(that.options.item).attr('data-value', item)
1773
+ i.find('a').html(that.highlighter(item))
1774
+ return i[0]
1775
+ })
1776
+
1777
+ items.first().addClass('active')
1778
+ this.$menu.html(items)
1779
+ return this
1780
+ }
1781
+
1782
+ , next: function (event) {
1783
+ var active = this.$menu.find('.active').removeClass('active')
1784
+ , next = active.next()
1785
+
1786
+ if (!next.length) {
1787
+ next = $(this.$menu.find('li')[0])
1788
+ }
1789
+
1790
+ next.addClass('active')
1791
+ }
1792
+
1793
+ , prev: function (event) {
1794
+ var active = this.$menu.find('.active').removeClass('active')
1795
+ , prev = active.prev()
1796
+
1797
+ if (!prev.length) {
1798
+ prev = this.$menu.find('li').last()
1799
+ }
1800
+
1801
+ prev.addClass('active')
1802
+ }
1803
+
1804
+ , listen: function () {
1805
+ this.$element
1806
+ .on('blur', $.proxy(this.blur, this))
1807
+ .on('keypress', $.proxy(this.keypress, this))
1808
+ .on('keyup', $.proxy(this.keyup, this))
1809
+
1810
+ if (this.eventSupported('keydown')) {
1811
+ this.$element.on('keydown', $.proxy(this.keydown, this))
1812
+ }
1813
+
1814
+ this.$menu
1815
+ .on('click', $.proxy(this.click, this))
1816
+ .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
1817
+ }
1818
+
1819
+ , eventSupported: function(eventName) {
1820
+ var isSupported = eventName in this.$element
1821
+ if (!isSupported) {
1822
+ this.$element.setAttribute(eventName, 'return;')
1823
+ isSupported = typeof this.$element[eventName] === 'function'
1824
+ }
1825
+ return isSupported
1826
+ }
1827
+
1828
+ , move: function (e) {
1829
+ if (!this.shown) return
1830
+
1831
+ switch(e.keyCode) {
1832
+ case 9: // tab
1833
+ case 13: // enter
1834
+ case 27: // escape
1835
+ e.preventDefault()
1836
+ break
1837
+
1838
+ case 38: // up arrow
1839
+ e.preventDefault()
1840
+ this.prev()
1841
+ break
1842
+
1843
+ case 40: // down arrow
1844
+ e.preventDefault()
1845
+ this.next()
1846
+ break
1847
+ }
1848
+
1849
+ e.stopPropagation()
1850
+ }
1851
+
1852
+ , keydown: function (e) {
1853
+ this.suppressKeyPressRepeat = !~$.inArray(e.keyCode, [40,38,9,13,27])
1854
+ this.move(e)
1855
+ }
1856
+
1857
+ , keypress: function (e) {
1858
+ if (this.suppressKeyPressRepeat) return
1859
+ this.move(e)
1860
+ }
1861
+
1862
+ , keyup: function (e) {
1863
+ switch(e.keyCode) {
1864
+ case 40: // down arrow
1865
+ case 38: // up arrow
1866
+ case 16: // shift
1867
+ case 17: // ctrl
1868
+ case 18: // alt
1869
+ break
1870
+
1871
+ case 9: // tab
1872
+ case 13: // enter
1873
+ if (!this.shown) return
1874
+ this.select()
1875
+ break
1876
+
1877
+ case 27: // escape
1878
+ if (!this.shown) return
1879
+ this.hide()
1880
+ break
1881
+
1882
+ default:
1883
+ this.lookup()
1884
+ }
1885
+
1886
+ e.stopPropagation()
1887
+ e.preventDefault()
1888
+ }
1889
+
1890
+ , blur: function (e) {
1891
+ var that = this
1892
+ setTimeout(function () { that.hide() }, 150)
1893
+ }
1894
+
1895
+ , click: function (e) {
1896
+ e.stopPropagation()
1897
+ e.preventDefault()
1898
+ this.select()
1899
+ }
1900
+
1901
+ , mouseenter: function (e) {
1902
+ this.$menu.find('.active').removeClass('active')
1903
+ $(e.currentTarget).addClass('active')
1904
+ }
1905
+
1906
+ }
1907
+
1908
+
1909
+ /* TYPEAHEAD PLUGIN DEFINITION
1910
+ * =========================== */
1911
+
1912
+ $.fn.typeahead = function (option) {
1913
+ return this.each(function () {
1914
+ var $this = $(this)
1915
+ , data = $this.data('typeahead')
1916
+ , options = typeof option == 'object' && option
1917
+ if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
1918
+ if (typeof option == 'string') data[option]()
1919
+ })
1920
+ }
1921
+
1922
+ $.fn.typeahead.defaults = {
1923
+ source: []
1924
+ , items: 8
1925
+ , menu: '<ul class="typeahead dropdown-menu"></ul>'
1926
+ , item: '<li><a href="#"></a></li>'
1927
+ , minLength: 1
1928
+ }
1929
+
1930
+ $.fn.typeahead.Constructor = Typeahead
1931
+
1932
+
1933
+ /* TYPEAHEAD DATA-API
1934
+ * ================== */
1935
+
1936
+ $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
1937
+ var $this = $(this)
1938
+ if ($this.data('typeahead')) return
1939
+ e.preventDefault()
1940
+ $this.typeahead($this.data())
1941
+ })
1942
+
1943
+ }(window.jQuery);
1944
+ /* ==========================================================
1945
+ * bootstrap-affix.js v2.2.1
1946
+ * http://twitter.github.com/bootstrap/javascript.html#affix
1947
+ * ==========================================================
1948
+ * Copyright 2012 Twitter, Inc.
1949
+ *
1950
+ * Licensed under the Apache License, Version 2.0 (the "License");
1951
+ * you may not use this file except in compliance with the License.
1952
+ * You may obtain a copy of the License at
1953
+ *
1954
+ * http://www.apache.org/licenses/LICENSE-2.0
1955
+ *
1956
+ * Unless required by applicable law or agreed to in writing, software
1957
+ * distributed under the License is distributed on an "AS IS" BASIS,
1958
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1959
+ * See the License for the specific language governing permissions and
1960
+ * limitations under the License.
1961
+ * ========================================================== */
1962
+
1963
+
1964
+
1965
+ !function ($) {
1966
+
1967
+ "use strict"; // jshint ;_;
1968
+
1969
+
1970
+ /* AFFIX CLASS DEFINITION
1971
+ * ====================== */
1972
+
1973
+ var Affix = function (element, options) {
1974
+ this.options = $.extend({}, $.fn.affix.defaults, options)
1975
+ this.$window = $(window)
1976
+ .on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
1977
+ .on('click.affix.data-api', $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this))
1978
+ this.$element = $(element)
1979
+ this.checkPosition()
1980
+ }
1981
+
1982
+ Affix.prototype.checkPosition = function () {
1983
+ if (!this.$element.is(':visible')) return
1984
+
1985
+ var scrollHeight = $(document).height()
1986
+ , scrollTop = this.$window.scrollTop()
1987
+ , position = this.$element.offset()
1988
+ , offset = this.options.offset
1989
+ , offsetBottom = offset.bottom
1990
+ , offsetTop = offset.top
1991
+ , reset = 'affix affix-top affix-bottom'
1992
+ , affix
1993
+
1994
+ if (typeof offset != 'object') offsetBottom = offsetTop = offset
1995
+ if (typeof offsetTop == 'function') offsetTop = offset.top()
1996
+ if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
1997
+
1998
+ affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
1999
+ false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
2000
+ 'bottom' : offsetTop != null && scrollTop <= offsetTop ?
2001
+ 'top' : false
2002
+
2003
+ if (this.affixed === affix) return
2004
+
2005
+ this.affixed = affix
2006
+ this.unpin = affix == 'bottom' ? position.top - scrollTop : null
2007
+
2008
+ this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
2009
+ }
2010
+
2011
+
2012
+ /* AFFIX PLUGIN DEFINITION
2013
+ * ======================= */
2014
+
2015
+ $.fn.affix = function (option) {
2016
+ return this.each(function () {
2017
+ var $this = $(this)
2018
+ , data = $this.data('affix')
2019
+ , options = typeof option == 'object' && option
2020
+ if (!data) $this.data('affix', (data = new Affix(this, options)))
2021
+ if (typeof option == 'string') data[option]()
2022
+ })
2023
+ }
2024
+
2025
+ $.fn.affix.Constructor = Affix
2026
+
2027
+ $.fn.affix.defaults = {
2028
+ offset: 0
2029
+ }
2030
+
2031
+
2032
+ /* AFFIX DATA-API
2033
+ * ============== */
2034
+
2035
+ $(window).on('load', function () {
2036
+ $('[data-spy="affix"]').each(function () {
2037
+ var $spy = $(this)
2038
+ , data = $spy.data()
2039
+
2040
+ data.offset = data.offset || {}
2041
+
2042
+ data.offsetBottom && (data.offset.bottom = data.offsetBottom)
2043
+ data.offsetTop && (data.offset.top = data.offsetTop)
2044
+
2045
+ $spy.affix(data)
2046
+ })
2047
+ })
2048
+
2049
+
2050
+ }(window.jQuery);
2051
+
2052
+ $(document).ready(function(){...});:
2053
+ ;
2054
+ ;
2055
+ FI"
2056
+ F"%9370c624234123375b3b32be387d3ac5