bootstrap-sass-rails 2.3.1.0 → 2.3.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (207) hide show
  1. data/lib/bootstrap/sass/rails/version.rb +1 -1
  2. data/test/cases/less_to_sass_spec.rb +31 -0
  3. data/test/dummy/log/test.log +3284 -1230
  4. data/test/dummy/tmp/cache/assets/C41/5B0/sprockets%2F095415e1141a435237aa9464752d21fd +2583 -0
  5. data/test/dummy/tmp/cache/assets/C6F/370/sprockets%2F966879d6ff8742dc619724287f4a5150 +0 -0
  6. data/test/dummy/tmp/cache/assets/{D90/760/sprockets%2F3f391be0fdf038e21cf04bfef31118a5 → C73/6D0/sprockets%2F1960b4507c3aaa988180fb04093d1427} +0 -0
  7. data/test/dummy/tmp/cache/assets/C83/870/sprockets%2F508e55e1444b44d0187677a51893acf2 +0 -0
  8. data/test/dummy/tmp/cache/assets/C94/270/sprockets%2F40520eb6297b2908496e752e588f2f7d +0 -0
  9. data/test/dummy/tmp/cache/assets/CA6/110/sprockets%2F272615ec4af76b10339048ca6da44284 +0 -0
  10. data/test/dummy/tmp/cache/assets/CAD/040/sprockets%2F915d29a78a13fbbb606d47840634d703 +0 -0
  11. data/test/dummy/tmp/cache/assets/CB0/110/sprockets%2F057089195001bff3a770cec267e0877b +0 -0
  12. data/test/dummy/tmp/cache/assets/{D6F/610/sprockets%2F2c75ea39d9183da8ba0fb16a885e17d1 → CB4/BD0/sprockets%2Fe0c39183ec49530b6c0758c1e945d274} +0 -0
  13. data/test/dummy/tmp/cache/assets/CB5/410/sprockets%2Ff2d804e78b14c4005d86653e2e957a35 +0 -0
  14. data/test/dummy/tmp/cache/assets/CCE/280/sprockets%2F59565d2ec707a1eb10c0b2302d58f920 +0 -0
  15. data/test/dummy/tmp/cache/assets/CD1/580/sprockets%2F7e48514e772b39d8878a8181798eaea6 +0 -0
  16. data/test/dummy/tmp/cache/assets/{D68/5A0/sprockets%2F9ab1ffcdeb9a5c2dc12282b288173642 → CDD/E80/sprockets%2Fa7248f6c140e4c834d8a4b5b0703f189} +0 -0
  17. data/test/dummy/tmp/cache/assets/CE2/910/sprockets%2Fee1ae05707da2d0176094849e35099ce +0 -0
  18. data/test/dummy/tmp/cache/assets/CE5/650/sprockets%2F8ab512c9b33ac90e699b73469d71f061 +0 -0
  19. data/test/dummy/tmp/cache/assets/CE9/4E0/sprockets%2F1c1f6d1579d9ad26654219f30c46f95c +0 -0
  20. data/test/dummy/tmp/cache/assets/CE9/E40/sprockets%2F47f8666418cd38da2ff7625f02422b5e +0 -0
  21. data/test/dummy/tmp/cache/assets/CF1/ED0/sprockets%2F9947d52d16da82564b988d16366e3aea +529 -0
  22. data/test/dummy/tmp/cache/assets/D04/3C0/sprockets%2F29d763bd40cc25622b1f04b876a5c3e3 +0 -0
  23. data/test/dummy/tmp/cache/assets/D22/C90/sprockets%2Fe1a46318a188f29186cbe4f9d97792bb +0 -0
  24. data/test/dummy/tmp/cache/assets/{D16/AE0/sprockets%2F8c36fc6e77648942c466c4d2a8c0b0d1 → D25/E70/sprockets%2Fb39f1d7ace7781584f2b27397c4d298d} +0 -0
  25. data/test/dummy/tmp/cache/assets/D2D/410/sprockets%2F19d37b85ac2b8498758bdf8d08099e8b +0 -0
  26. data/test/dummy/tmp/cache/assets/{E10/910/sprockets%2Fad81bc95b7f6bba2b10cc63a08ea2a1b → D2D/8A0/sprockets%2F16702b2d73e90a918e2a03d40dd0fb6e} +0 -0
  27. data/test/dummy/tmp/cache/assets/{D4B/DE0/sprockets%2Fbfb158877e483c38043fc4fa398ce4a3 → D34/0D0/sprockets%2F2e0e0061bc75f35b8665ee31f0af343f} +0 -0
  28. data/test/dummy/tmp/cache/assets/{D17/420/sprockets%2F2bf2d861c116599c91106efef2f595d1 → D36/7D0/sprockets%2Ffc5ea6a588c4b2791581fdb35a30031d} +0 -0
  29. data/test/dummy/tmp/cache/assets/D39/3D0/sprockets%2F744241c89d9c401d40d4ee5ad44a2f3f +0 -0
  30. data/test/dummy/tmp/cache/assets/D3F/FA0/sprockets%2F22c8366fdbaaa2872b202dfe7376629f +0 -0
  31. data/test/dummy/tmp/cache/assets/{D75/B80/sprockets%2Fde9ec40a11599929af86deb13fb5107d → D44/700/sprockets%2Fd328468f953946d2e2bef62c4cb7cb01} +0 -0
  32. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  33. data/test/dummy/tmp/cache/assets/D5A/560/sprockets%2Fad87bf89db0c636d2899f3d47eb70838 +0 -0
  34. data/test/dummy/tmp/cache/assets/{DBB/130/sprockets%2F7be9c2377fb99c9bca96f3e4735ce4c7 → D5C/3F0/sprockets%2F67d5fd7ae45e04fd786ee67812769cb5} +0 -0
  35. data/test/dummy/tmp/cache/assets/{DF5/540/sprockets%2F0c209952fce9e334e2f1ab6ced0dbae6 → D63/540/sprockets%2F40806eccd4be04b3c3fa44d23576e18d} +0 -0
  36. data/test/dummy/tmp/cache/assets/{D52/710/sprockets%2Fc068f230f77427bede189275fd5f5d5f → D63/C70/sprockets%2F382f45c06aa1f72aea7048fd474bbc33} +0 -0
  37. data/test/dummy/tmp/cache/assets/D70/0D0/sprockets%2F75765d3bfee9346a60198cbb8cdad102 +0 -0
  38. data/test/dummy/tmp/cache/assets/D73/760/sprockets%2F4e1d706de9dc13479c028238faea6ff2 +0 -0
  39. data/test/dummy/tmp/cache/assets/D74/A80/sprockets%2F89c4c5e2f034b736d5e839adfe7012db +0 -0
  40. data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +2056 -0
  41. data/test/dummy/tmp/cache/assets/D91/080/sprockets%2Fbcca522c6302f184f12fe0e8a7d7e71a +0 -0
  42. data/test/dummy/tmp/cache/assets/D9F/300/sprockets%2Fc13fc73ceafa45876a901b3e775b83ae +0 -0
  43. data/test/dummy/tmp/cache/assets/DA2/4C0/sprockets%2Faf35c2c354c87b8ced15ed3cbc276576 +2153 -0
  44. data/test/dummy/tmp/cache/assets/DB6/FE0/sprockets%2F1446b4accb510daee592aa8f34b03d2e +0 -0
  45. data/test/dummy/tmp/cache/assets/DB9/250/sprockets%2F15de37cf628d966fd377f94afbffe244 +0 -0
  46. data/test/dummy/tmp/cache/assets/{DD6/5B0/sprockets%2F7b61b0df4f3cd7ee89e646ac45b8aa73 → DC1/D20/sprockets%2Fd6edb12fc70021e8ada656d316e0cd8d} +0 -0
  47. data/test/dummy/tmp/cache/assets/DC7/8B0/sprockets%2Fc57aff8fcaace116023b4ae45c88138c +0 -0
  48. data/test/dummy/tmp/cache/assets/DCD/540/sprockets%2F81dd0cb0661e7e9725d4cecb2ea2e9d5 +0 -0
  49. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  50. data/test/dummy/tmp/cache/assets/{D5D/120/sprockets%2Ff60d6b30d7c1a6ad7834f84af2c21b11 → DFC/550/sprockets%2Fc63af852c0f9cc4aa6a7dd59d74ab0a9} +0 -0
  51. data/test/dummy/tmp/cache/assets/DFF/EA0/sprockets%2Fc05f92ff4e2fa5eadcfe9d3d151047f3 +0 -0
  52. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  53. data/test/dummy/tmp/cache/assets/E22/B10/sprockets%2Fec73dbc745e21ceda62ae0b9d41b4ed5 +240 -0
  54. data/test/dummy/tmp/cache/assets/{DC6/030/sprockets%2F12f58e0c564a6a91ae6b590fbcc6bb3d → E2A/B40/sprockets%2F591e8bae8cab045e0af3ce80e3fa7ad9} +0 -0
  55. data/test/dummy/tmp/cache/assets/{D56/1E0/sprockets%2Fac9d4fa8dc84acf15894691de8299333 → E30/FF0/sprockets%2F33f27cfaa7bec6fcb98ce5163c2d5c5d} +0 -0
  56. data/test/dummy/tmp/cache/assets/E3A/D90/sprockets%2Fce0dbefdb4416ebc42589ecdbf7d7857 +0 -0
  57. data/test/dummy/tmp/cache/assets/{DBA/570/sprockets%2F99b7b3bee457cc753c9598e08fbde55c → E5F/300/sprockets%2F243a2fff0dbb8aeec3dd579b4ff7c81b} +0 -0
  58. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_accordion.scssc +0 -0
  59. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_alerts.scssc +0 -0
  60. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_breadcrumbs.scssc +0 -0
  61. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_button-groups.scssc +0 -0
  62. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_buttons.scssc +0 -0
  63. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_carousel.scssc +0 -0
  64. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_close.scssc +0 -0
  65. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_code.scssc +0 -0
  66. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_component-animations.scssc +0 -0
  67. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_dropdowns.scssc +0 -0
  68. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_forms.scssc +0 -0
  69. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_grid.scssc +0 -0
  70. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_hero-unit.scssc +0 -0
  71. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_labels-badges.scssc +0 -0
  72. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_layouts.scssc +0 -0
  73. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_media.scssc +0 -0
  74. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_mixins.scssc +0 -0
  75. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_modals.scssc +0 -0
  76. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_navbar.scssc +0 -0
  77. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_navs.scssc +0 -0
  78. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_pager.scssc +0 -0
  79. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_pagination.scssc +0 -0
  80. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_popovers.scssc +0 -0
  81. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_progress-bars.scssc +0 -0
  82. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_reset.scssc +0 -0
  83. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_responsive-1200px-min.scssc +0 -0
  84. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_responsive-767px-max.scssc +0 -0
  85. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_responsive-768px-979px.scssc +0 -0
  86. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_responsive-navbar.scssc +0 -0
  87. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_responsive-utilities.scssc +0 -0
  88. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_responsive.scssc +0 -0
  89. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_scaffolding.scssc +0 -0
  90. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_sprites.scssc +0 -0
  91. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_tables.scssc +0 -0
  92. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_thumbnails.scssc +0 -0
  93. data/test/dummy/tmp/cache/{sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744 → assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b}/_tooltip.scssc +0 -0
  94. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_type.scssc +0 -0
  95. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_utilities.scssc +0 -0
  96. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_variables.scssc +0 -0
  97. data/test/dummy/tmp/cache/assets/test/sass/87e2ffd5982b02eedf694525e8e654eb8dc7674b/_wells.scssc +0 -0
  98. data/test/dummy/tmp/cache/assets/test/sass/9f022039bcde6dbfad5a4cecd880da08604928b6/application.css.scssc +0 -0
  99. data/test/dummy/tmp/cache/assets/test/sass/9f022039bcde6dbfad5a4cecd880da08604928b6/individual.css.scssc +0 -0
  100. data/test/dummy/tmp/cache/assets/test/sass/9f022039bcde6dbfad5a4cecd880da08604928b6/no-sprites.css.scssc +0 -0
  101. data/test/dummy/tmp/cache/assets/test/sass/f6b53beab59b098d292742f61b61ed46283e377c/bootstrap-no-sprites.css.scssc +0 -0
  102. data/test/dummy/tmp/cache/assets/test/sass/f6b53beab59b098d292742f61b61ed46283e377c/bootstrap.css.scssc +0 -0
  103. data/test/dummy/tmp/cache/assets/{DEA/C30/sprockets%2Fc9ec88238d9cf3dbea3999f5e23d1d8d → test/sprockets/057089195001bff3a770cec267e0877b} +0 -0
  104. data/test/dummy/tmp/cache/assets/test/sprockets/0a69d2de11b1b15afecec9a903469851 +0 -0
  105. data/test/dummy/tmp/cache/assets/{D0E/440/sprockets%2Fa907bc33487a395c54255661b1ab9cee → test/sprockets/1446b4accb510daee592aa8f34b03d2e} +0 -0
  106. data/test/dummy/tmp/cache/assets/{D32/7F0/sprockets%2F73631d9351ebd106d16d6f39a112cdfa → test/sprockets/15de37cf628d966fd377f94afbffe244} +0 -0
  107. data/test/dummy/tmp/cache/assets/test/sprockets/16702b2d73e90a918e2a03d40dd0fb6e +0 -0
  108. data/test/dummy/tmp/cache/assets/test/sprockets/1960b4507c3aaa988180fb04093d1427 +0 -0
  109. data/test/dummy/tmp/cache/assets/test/sprockets/19d37b85ac2b8498758bdf8d08099e8b +0 -0
  110. data/test/dummy/tmp/cache/assets/{D6D/E90/sprockets%2Fc69804c1aa5a65ad87dd43387bfa290c → test/sprockets/1c1f6d1579d9ad26654219f30c46f95c} +0 -0
  111. data/test/dummy/tmp/cache/assets/test/sprockets/22c8366fdbaaa2872b202dfe7376629f +0 -0
  112. data/test/dummy/tmp/cache/assets/test/sprockets/272615ec4af76b10339048ca6da44284 +0 -0
  113. data/test/dummy/tmp/cache/assets/test/sprockets/29d763bd40cc25622b1f04b876a5c3e3 +0 -0
  114. data/test/dummy/tmp/cache/assets/test/sprockets/2e0e0061bc75f35b8665ee31f0af343f +0 -0
  115. data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  116. data/test/dummy/tmp/cache/assets/test/sprockets/33f27cfaa7bec6fcb98ce5163c2d5c5d +0 -0
  117. data/test/dummy/tmp/cache/assets/test/sprockets/382f45c06aa1f72aea7048fd474bbc33 +0 -0
  118. data/test/dummy/tmp/cache/assets/test/sprockets/40520eb6297b2908496e752e588f2f7d +0 -0
  119. data/test/dummy/tmp/cache/assets/test/sprockets/40806eccd4be04b3c3fa44d23576e18d +0 -0
  120. data/test/dummy/tmp/cache/assets/test/sprockets/47f8666418cd38da2ff7625f02422b5e +0 -0
  121. data/test/dummy/tmp/cache/assets/test/sprockets/4e1d706de9dc13479c028238faea6ff2 +0 -0
  122. data/test/dummy/tmp/cache/assets/test/sprockets/508e55e1444b44d0187677a51893acf2 +0 -0
  123. data/test/dummy/tmp/cache/assets/test/sprockets/591e8bae8cab045e0af3ce80e3fa7ad9 +0 -0
  124. data/test/dummy/tmp/cache/assets/{D7F/230/sprockets%2F38c0bf69e54b26f3c377a88615dc9afe → test/sprockets/59565d2ec707a1eb10c0b2302d58f920} +0 -0
  125. data/test/dummy/tmp/cache/assets/test/sprockets/643fbcfada5ead21709e3c550f415c48 +0 -0
  126. data/test/dummy/tmp/cache/assets/test/sprockets/67d5fd7ae45e04fd786ee67812769cb5 +0 -0
  127. data/test/dummy/tmp/cache/assets/test/sprockets/744241c89d9c401d40d4ee5ad44a2f3f +0 -0
  128. data/test/dummy/tmp/cache/assets/test/sprockets/75765d3bfee9346a60198cbb8cdad102 +0 -0
  129. data/test/dummy/tmp/cache/assets/test/sprockets/7e48514e772b39d8878a8181798eaea6 +0 -0
  130. data/test/dummy/tmp/cache/assets/{C8D/8B0/sprockets%2F0ce5158126f6a64795f032e3f68a7738 → test/sprockets/81dd0cb0661e7e9725d4cecb2ea2e9d5} +0 -0
  131. data/test/dummy/tmp/cache/assets/{CDE/A90/sprockets%2F262806eb1042266de7f19a415ce8bb96 → test/sprockets/89c4c5e2f034b736d5e839adfe7012db} +0 -0
  132. data/test/dummy/tmp/cache/assets/test/sprockets/8ab512c9b33ac90e699b73469d71f061 +0 -0
  133. data/test/dummy/tmp/cache/assets/{DEF/190/sprockets%2F8decfbb4a0c5daba196d521a9c6e3306 → test/sprockets/915d29a78a13fbbb606d47840634d703} +0 -0
  134. data/test/dummy/tmp/cache/assets/{D15/170/sprockets%2F8b52717826ad023e68f2af421ea8fd86 → test/sprockets/966879d6ff8742dc619724287f4a5150} +0 -0
  135. data/test/dummy/tmp/cache/assets/test/sprockets/a39c51a80c786ee6aa2f938094583302 +0 -0
  136. data/test/dummy/tmp/cache/assets/test/sprockets/a7248f6c140e4c834d8a4b5b0703f189 +0 -0
  137. data/test/dummy/tmp/cache/assets/test/sprockets/ad87bf89db0c636d2899f3d47eb70838 +0 -0
  138. data/test/dummy/tmp/cache/assets/test/sprockets/b39f1d7ace7781584f2b27397c4d298d +0 -0
  139. data/test/dummy/tmp/cache/assets/test/sprockets/bcca522c6302f184f12fe0e8a7d7e71a +0 -0
  140. data/test/dummy/tmp/cache/assets/test/sprockets/c05f92ff4e2fa5eadcfe9d3d151047f3 +0 -0
  141. data/test/dummy/tmp/cache/assets/test/sprockets/c13fc73ceafa45876a901b3e775b83ae +0 -0
  142. data/test/dummy/tmp/cache/assets/{DBF/0F0/sprockets%2F54a8f3ef7b989e877bf3d6ab5e4ce269 → test/sprockets/c57aff8fcaace116023b4ae45c88138c} +0 -0
  143. data/test/dummy/tmp/cache/assets/test/sprockets/c63af852c0f9cc4aa6a7dd59d74ab0a9 +0 -0
  144. data/test/dummy/tmp/cache/assets/test/sprockets/ce0dbefdb4416ebc42589ecdbf7d7857 +0 -0
  145. data/test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  146. data/test/dummy/tmp/cache/assets/test/sprockets/d328468f953946d2e2bef62c4cb7cb01 +0 -0
  147. data/test/dummy/tmp/cache/assets/test/sprockets/d6edb12fc70021e8ada656d316e0cd8d +0 -0
  148. data/test/dummy/tmp/cache/assets/test/sprockets/e0c39183ec49530b6c0758c1e945d274 +0 -0
  149. data/test/dummy/tmp/cache/assets/{D0E/7A0/sprockets%2F8ebc6d15039f0c49e700d398151b57cb → test/sprockets/e1a46318a188f29186cbe4f9d97792bb} +0 -0
  150. data/test/dummy/tmp/cache/assets/{C54/C80/sprockets%2F19036f592b2da9579b66d7160790c122 → test/sprockets/ee1ae05707da2d0176094849e35099ce} +0 -0
  151. data/test/dummy/tmp/cache/assets/test/sprockets/f2d804e78b14c4005d86653e2e957a35 +0 -0
  152. data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  153. data/test/dummy/tmp/cache/assets/test/sprockets/fc5ea6a588c4b2791581fdb35a30031d +0 -0
  154. data/test/dummy/tmp/cache/assets/test/sprockets/fe5d5c303a50e71c182568c32bf25296 +0 -0
  155. data/test/dummy/tmp/cache/sass/{160589301b9f514ee2413ef86950b872e6207b0e → 73d26439e044eca0a3af4a431659ef4346a1c77c}/application.css.scssc +0 -0
  156. data/test/dummy/tmp/cache/sass/{160589301b9f514ee2413ef86950b872e6207b0e → 73d26439e044eca0a3af4a431659ef4346a1c77c}/individual.css.scssc +0 -0
  157. data/test/dummy/tmp/cache/sass/{160589301b9f514ee2413ef86950b872e6207b0e → 73d26439e044eca0a3af4a431659ef4346a1c77c}/no-sprites.css.scssc +0 -0
  158. data/test/dummy/tmp/cache/sass/{07c96a7988a9706bfdf40706fbc8b7136c5de0df → 97a2fe4b4206536e366a73e1378c8e4d6acfc29d}/bootstrap-no-sprites.css.scssc +0 -0
  159. data/test/dummy/tmp/cache/sass/{07c96a7988a9706bfdf40706fbc8b7136c5de0df → 97a2fe4b4206536e366a73e1378c8e4d6acfc29d}/bootstrap.css.scssc +0 -0
  160. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_accordion.scssc +0 -0
  161. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_alerts.scssc +0 -0
  162. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_breadcrumbs.scssc +0 -0
  163. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_button-groups.scssc +0 -0
  164. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_buttons.scssc +0 -0
  165. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_carousel.scssc +0 -0
  166. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_close.scssc +0 -0
  167. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_code.scssc +0 -0
  168. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_component-animations.scssc +0 -0
  169. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_dropdowns.scssc +0 -0
  170. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_forms.scssc +0 -0
  171. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_grid.scssc +0 -0
  172. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_hero-unit.scssc +0 -0
  173. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_labels-badges.scssc +0 -0
  174. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_layouts.scssc +0 -0
  175. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_media.scssc +0 -0
  176. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_mixins.scssc +0 -0
  177. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_modals.scssc +0 -0
  178. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_navbar.scssc +0 -0
  179. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_navs.scssc +0 -0
  180. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_pager.scssc +0 -0
  181. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_pagination.scssc +0 -0
  182. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_popovers.scssc +0 -0
  183. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_progress-bars.scssc +0 -0
  184. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_reset.scssc +0 -0
  185. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_responsive-1200px-min.scssc +0 -0
  186. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_responsive-767px-max.scssc +0 -0
  187. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_responsive-768px-979px.scssc +0 -0
  188. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_responsive-navbar.scssc +0 -0
  189. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_responsive-utilities.scssc +0 -0
  190. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_responsive.scssc +0 -0
  191. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_scaffolding.scssc +0 -0
  192. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_sprites.scssc +0 -0
  193. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_tables.scssc +0 -0
  194. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_thumbnails.scssc +0 -0
  195. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_tooltip.scssc +0 -0
  196. data/test/dummy/tmp/cache/sass/c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c/_type.scssc +0 -0
  197. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_utilities.scssc +0 -0
  198. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_variables.scssc +0 -0
  199. data/test/dummy/tmp/cache/sass/{5887148520ffc8e3b2ac08d8d8055f4c8e974744 → c8ed6f9b68f3f4e8d1dc3308fd9d722018ffc99c}/_wells.scssc +0 -0
  200. data/vendor/assets/stylesheets/twitter/bootstrap/_mixins.scss +3 -0
  201. metadata +366 -158
  202. data/test/dummy/tmp/cache/assets/CE1/100/sprockets%2F2bd95370219836a2591c897bee0a2db6 +0 -0
  203. data/test/dummy/tmp/cache/assets/E35/490/sprockets%2Fae96cd1faee3eeec070ea4c7c2729f77 +0 -0
  204. data/test/dummy/tmp/cache/sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744/_buttons.scssc +0 -0
  205. data/test/dummy/tmp/cache/sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744/_navs.scssc +0 -0
  206. data/test/dummy/tmp/cache/sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744/_tables.scssc +0 -0
  207. data/test/dummy/tmp/cache/sass/5887148520ffc8e3b2ac08d8d8055f4c8e974744/_type.scssc +0 -0
@@ -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