ish_lib_assets 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (868) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +37 -0
  5. data/app/assets/images/200x200/devops.png +0 -0
  6. data/app/assets/images/200x200/html5.jpg +0 -0
  7. data/app/assets/images/200x200/nodejs.png +0 -0
  8. data/app/assets/images/200x200/project_management.jpg +0 -0
  9. data/app/assets/images/200x200/ror.jpg +0 -0
  10. data/app/assets/images/200x200/uiux.jpg +0 -0
  11. data/app/assets/images/400x400/contact-us.png +0 -0
  12. data/app/assets/images/400x400/devops.png +0 -0
  13. data/app/assets/images/400x400/html5.jpg +0 -0
  14. data/app/assets/images/400x400/nodejs.png +0 -0
  15. data/app/assets/images/400x400/project_management.jpg +0 -0
  16. data/app/assets/images/400x400/ror.jpg +0 -0
  17. data/app/assets/images/400x400/the-cloud.png +0 -0
  18. data/app/assets/images/400x400/uiux.jpg +0 -0
  19. data/app/assets/images/backgrounds/10.jpg +0 -0
  20. data/app/assets/images/backgrounds/11.jpg +0 -0
  21. data/app/assets/images/backgrounds/12.jpg +0 -0
  22. data/app/assets/images/backgrounds/6.jpg +0 -0
  23. data/app/assets/images/backgrounds/7.jpg +0 -0
  24. data/app/assets/images/backgrounds/8.jpg +0 -0
  25. data/app/assets/images/backgrounds/9.jpg +0 -0
  26. data/app/assets/images/backgrounds/970_grey-blue.png +0 -0
  27. data/app/assets/images/backgrounds/970_white.png +0 -0
  28. data/app/assets/images/backgrounds/970_yellow.png +0 -0
  29. data/app/assets/images/backgrounds/bg-circles.png +0 -0
  30. data/app/assets/images/backgrounds/bg5.jpg +0 -0
  31. data/app/assets/images/backgrounds/bg6.jpg +0 -0
  32. data/app/assets/images/backgrounds/bg_texture_dark.jpg +0 -0
  33. data/app/assets/images/backgrounds/bkg_bg.gif +0 -0
  34. data/app/assets/images/backgrounds/blue-seamless.jpg +0 -0
  35. data/app/assets/images/backgrounds/flower_1.jpg +0 -0
  36. data/app/assets/images/backgrounds/glitch1.jpg +0 -0
  37. data/app/assets/images/backgrounds/glitch2.jpg +0 -0
  38. data/app/assets/images/backgrounds/gray-1.jpg +0 -0
  39. data/app/assets/images/backgrounds/havaianas.jpg +0 -0
  40. data/app/assets/images/backgrounds/light-purple.jpg +0 -0
  41. data/app/assets/images/backgrounds/noise.jpg +0 -0
  42. data/app/assets/images/backgrounds/paper.jpg +0 -0
  43. data/app/assets/images/backgrounds/pattern_011.gif +0 -0
  44. data/app/assets/images/backgrounds/pattern_013.gif +0 -0
  45. data/app/assets/images/backgrounds/pattern_016.gif +0 -0
  46. data/app/assets/images/backgrounds/pattern_020.gif +0 -0
  47. data/app/assets/images/backgrounds/pattern_022.gif +0 -0
  48. data/app/assets/images/backgrounds/pattern_044.gif +0 -0
  49. data/app/assets/images/backgrounds/pattern_062.gif +0 -0
  50. data/app/assets/images/backgrounds/pattern_096.gif +0 -0
  51. data/app/assets/images/backgrounds/pattern_153.gif +0 -0
  52. data/app/assets/images/backgrounds/pattern_154.gif +0 -0
  53. data/app/assets/images/backgrounds/pattern_156.gif +0 -0
  54. data/app/assets/images/backgrounds/pattern_157.gif +0 -0
  55. data/app/assets/images/backgrounds/skull_1.jpg +0 -0
  56. data/app/assets/images/backgrounds/sky.jpg +0 -0
  57. data/app/assets/images/backgrounds/sky2.jpg +0 -0
  58. data/app/assets/images/backgrounds/sky3.jpg +0 -0
  59. data/app/assets/images/backgrounds/sky4.jpg +0 -0
  60. data/app/assets/images/backgrounds/sky5.jpg +0 -0
  61. data/app/assets/images/backgrounds/transparent_40.png +0 -0
  62. data/app/assets/images/backgrounds/transparent_70.png +0 -0
  63. data/app/assets/images/backgrounds/transparent_90.png +0 -0
  64. data/app/assets/images/backgrounds/white-seamless.jpg +0 -0
  65. data/app/assets/images/backgrounds/white_970x5.png +0 -0
  66. data/app/assets/images/backgrounds/white_blue_1.jpg +0 -0
  67. data/app/assets/images/cac/dot-footer.png +0 -0
  68. data/app/assets/images/cac/dot-header.png +0 -0
  69. data/app/assets/images/cac/list-style.png +0 -0
  70. data/app/assets/images/cac/map.png +0 -0
  71. data/app/assets/images/cac/phone.png +0 -0
  72. data/app/assets/images/cac/phone_number.png +0 -0
  73. data/app/assets/images/cac/screenshots/about.png +0 -0
  74. data/app/assets/images/cac/screenshots/contact.png +0 -0
  75. data/app/assets/images/cac/screenshots/home.png +0 -0
  76. data/app/assets/images/cac/screenshots/home.psd +0 -0
  77. data/app/assets/images/cac/screenshots/portfolio.png +0 -0
  78. data/app/assets/images/cac/screenshots/services.png +0 -0
  79. data/app/assets/images/cac/screenshots/team.png +0 -0
  80. data/app/assets/images/cac/sfbay.jpg +0 -0
  81. data/app/assets/images/cac/sprite.png +0 -0
  82. data/app/assets/images/cac/team/lizza.jpg +0 -0
  83. data/app/assets/images/cac/team/lizza_raw.jpg +0 -0
  84. data/app/assets/images/cac/team/piousbox.jpg +0 -0
  85. data/app/assets/images/close.png +0 -0
  86. data/app/assets/images/contact.png +0 -0
  87. data/app/assets/images/controls.png +0 -0
  88. data/app/assets/images/favicon.gif +0 -0
  89. data/app/assets/images/favicons/cac.gif +0 -0
  90. data/app/assets/images/favicons/ish.gif +0 -0
  91. data/app/assets/images/favicons/manager.ico +0 -0
  92. data/app/assets/images/favicons/piousbox.gif +0 -0
  93. data/app/assets/images/favicons/ppf.gif +0 -0
  94. data/app/assets/images/flags/br.png +0 -0
  95. data/app/assets/images/flags/en.png +0 -0
  96. data/app/assets/images/flags/pt.png +0 -0
  97. data/app/assets/images/flags/ru.png +0 -0
  98. data/app/assets/images/flags/us.png +0 -0
  99. data/app/assets/images/grad-hr.png +0 -0
  100. data/app/assets/images/gradient.png +0 -0
  101. data/app/assets/images/icons/100x100/hazard.png +0 -0
  102. data/app/assets/images/icons/100x100/venue.png +0 -0
  103. data/app/assets/images/icons/10x10/thumbs_down.png +0 -0
  104. data/app/assets/images/icons/10x10/thumbs_up.png +0 -0
  105. data/app/assets/images/icons/128x128/manager.png +0 -0
  106. data/app/assets/images/icons/12x12/tag.png +0 -0
  107. data/app/assets/images/icons/14x14/bullet.png +0 -0
  108. data/app/assets/images/icons/16x16/cancel.png +0 -0
  109. data/app/assets/images/icons/16x16/delete.png +0 -0
  110. data/app/assets/images/icons/16x16/expand_down.png +0 -0
  111. data/app/assets/images/icons/16x16/new_16.png +0 -0
  112. data/app/assets/images/icons/16x16/search.png +0 -0
  113. data/app/assets/images/icons/16x16/uploadify-cancel.png +0 -0
  114. data/app/assets/images/icons/20x20/edit.png +0 -0
  115. data/app/assets/images/icons/20x20/email.gif +0 -0
  116. data/app/assets/images/icons/20x20/expand.gif +0 -0
  117. data/app/assets/images/icons/20x20/eye-crossed.png +0 -0
  118. data/app/assets/images/icons/20x20/eye.png +0 -0
  119. data/app/assets/images/icons/20x20/facebook.gif +0 -0
  120. data/app/assets/images/icons/20x20/gmail.gif +0 -0
  121. data/app/assets/images/icons/20x20/java.gif +0 -0
  122. data/app/assets/images/icons/20x20/linkedin.png +0 -0
  123. data/app/assets/images/icons/20x20/lock.gif +0 -0
  124. data/app/assets/images/icons/20x20/new.png +0 -0
  125. data/app/assets/images/icons/20x20/pdf.gif +0 -0
  126. data/app/assets/images/icons/20x20/php.jpg +0 -0
  127. data/app/assets/images/icons/20x20/private.png +0 -0
  128. data/app/assets/images/icons/20x20/private2.png +0 -0
  129. data/app/assets/images/icons/20x20/public.png +0 -0
  130. data/app/assets/images/icons/20x20/public2.png +0 -0
  131. data/app/assets/images/icons/20x20/python.png +0 -0
  132. data/app/assets/images/icons/20x20/search.png +0 -0
  133. data/app/assets/images/icons/20x20/top.gif +0 -0
  134. data/app/assets/images/icons/20x20/trash.png +0 -0
  135. data/app/assets/images/icons/20x20/wiki.gif +0 -0
  136. data/app/assets/images/icons/20x20/wp.gif +0 -0
  137. data/app/assets/images/icons/20x20/youtube.png +0 -0
  138. data/app/assets/images/icons/24x24/configure.png +0 -0
  139. data/app/assets/images/icons/24x24/customize.png +0 -0
  140. data/app/assets/images/icons/24x24/edit.png +0 -0
  141. data/app/assets/images/icons/24x24/trash.png +0 -0
  142. data/app/assets/images/icons/28x28/customize.png +0 -0
  143. data/app/assets/images/icons/28x28/expand.png +0 -0
  144. data/app/assets/images/icons/32x32/comment.png +0 -0
  145. data/app/assets/images/icons/32x32/delicious.png +0 -0
  146. data/app/assets/images/icons/32x32/doc.png +0 -0
  147. data/app/assets/images/icons/32x32/email.png +0 -0
  148. data/app/assets/images/icons/32x32/expand_down.png +0 -0
  149. data/app/assets/images/icons/32x32/facebook.png +0 -0
  150. data/app/assets/images/icons/32x32/github.png +0 -0
  151. data/app/assets/images/icons/32x32/home.png +0 -0
  152. data/app/assets/images/icons/32x32/linkedin.png +0 -0
  153. data/app/assets/images/icons/32x32/list.png +0 -0
  154. data/app/assets/images/icons/32x32/logout.png +0 -0
  155. data/app/assets/images/icons/32x32/manager.png +0 -0
  156. data/app/assets/images/icons/32x32/myspace.png +0 -0
  157. data/app/assets/images/icons/32x32/new.png +0 -0
  158. data/app/assets/images/icons/32x32/new_addritem.png +0 -0
  159. data/app/assets/images/icons/32x32/pdf.png +0 -0
  160. data/app/assets/images/icons/32x32/photos_new.png +0 -0
  161. data/app/assets/images/icons/32x32/print.png +0 -0
  162. data/app/assets/images/icons/32x32/scratchpad.png +0 -0
  163. data/app/assets/images/icons/32x32/search.png +0 -0
  164. data/app/assets/images/icons/32x32/sharethis.png +0 -0
  165. data/app/assets/images/icons/32x32/thumbs_down.png +0 -0
  166. data/app/assets/images/icons/32x32/thumbs_down_2.png +0 -0
  167. data/app/assets/images/icons/32x32/thumbs_up.png +0 -0
  168. data/app/assets/images/icons/32x32/thumbs_up_2.png +0 -0
  169. data/app/assets/images/icons/32x32/trac.gif +0 -0
  170. data/app/assets/images/icons/32x32/trash.png +0 -0
  171. data/app/assets/images/icons/32x32/twitter.png +0 -0
  172. data/app/assets/images/icons/32x32/upload.png +0 -0
  173. data/app/assets/images/icons/32x32/word.png +0 -0
  174. data/app/assets/images/icons/40x40/search_40x40.png +0 -0
  175. data/app/assets/images/icons/48x48/city.png +0 -0
  176. data/app/assets/images/icons/48x48/new_photo.png +0 -0
  177. data/app/assets/images/icons/64x64/extended_forms.png +0 -0
  178. data/app/assets/images/icons/64x64/facebook.png +0 -0
  179. data/app/assets/images/icons/64x64/facebook_flat.png +0 -0
  180. data/app/assets/images/icons/64x64/github.png +0 -0
  181. data/app/assets/images/icons/64x64/github_flat.png +0 -0
  182. data/app/assets/images/icons/64x64/google.png +0 -0
  183. data/app/assets/images/icons/64x64/linkedin.png +0 -0
  184. data/app/assets/images/icons/64x64/linkedin_flat.png +0 -0
  185. data/app/assets/images/icons/64x64/manager.png +0 -0
  186. data/app/assets/images/icons/64x64/my-profile.png +0 -0
  187. data/app/assets/images/icons/64x64/new_addritem.png +0 -0
  188. data/app/assets/images/icons/64x64/new_photo.png +0 -0
  189. data/app/assets/images/icons/64x64/new_report.png +0 -0
  190. data/app/assets/images/icons/64x64/openid.png +0 -0
  191. data/app/assets/images/icons/64x64/rails.png +0 -0
  192. data/app/assets/images/icons/64x64/scratchpad.png +0 -0
  193. data/app/assets/images/icons/64x64/settings.png +0 -0
  194. data/app/assets/images/icons/64x64/twitter.png +0 -0
  195. data/app/assets/images/icons/64x64/yahoo_64.png +0 -0
  196. data/app/assets/images/icons/64x64/youtube_flat.png +0 -0
  197. data/app/assets/images/icons/96x96/doc.png +0 -0
  198. data/app/assets/images/icons/96x96/pdf.png +0 -0
  199. data/app/assets/images/icons/96x96/venue.png +0 -0
  200. data/app/assets/images/icons/delete.png +0 -0
  201. data/app/assets/images/icons/delicious.png +0 -0
  202. data/app/assets/images/icons/edit.png +0 -0
  203. data/app/assets/images/icons/email.gif +0 -0
  204. data/app/assets/images/icons/expand.gif +0 -0
  205. data/app/assets/images/icons/facebook.gif +0 -0
  206. data/app/assets/images/icons/gmail.gif +0 -0
  207. data/app/assets/images/icons/hazard.png +0 -0
  208. data/app/assets/images/icons/new_16.png +0 -0
  209. data/app/assets/images/icons/open.png +0 -0
  210. data/app/assets/images/icons/php.jpg +0 -0
  211. data/app/assets/images/icons/rails.png +0 -0
  212. data/app/assets/images/icons/search_40x40.png +0 -0
  213. data/app/assets/images/icons/tag.png +0 -0
  214. data/app/assets/images/icons/top.gif +0 -0
  215. data/app/assets/images/icons/trash/calendar.png +0 -0
  216. data/app/assets/images/left.png +0 -0
  217. data/app/assets/images/loading-100x100.gif +0 -0
  218. data/app/assets/images/loading.gif +0 -0
  219. data/app/assets/images/login_with_facebook.png +0 -0
  220. data/app/assets/images/logos/100x100/ish.png +0 -0
  221. data/app/assets/images/logos/100x100/ish_logo_100.png +0 -0
  222. data/app/assets/images/logos/100x100/logo100x100.png +0 -0
  223. data/app/assets/images/logos/200x200/ish_logo_200.gif +0 -0
  224. data/app/assets/images/logos/20x20/ish.gif +0 -0
  225. data/app/assets/images/logos/400x400/cac.jpg +0 -0
  226. data/app/assets/images/logos/400x400/ish.png +0 -0
  227. data/app/assets/images/logos/400x400/ish_logo_400.gif +0 -0
  228. data/app/assets/images/logos/400x400/ish_logo_400.jpg +0 -0
  229. data/app/assets/images/logos/400x400/ish_logo_400.png +0 -0
  230. data/app/assets/images/logos/400x400/ish_logo_400.psd +0 -0
  231. data/app/assets/images/logos/40x40/ish.png +0 -0
  232. data/app/assets/images/logos/40x40/ish_logo_40.png +0 -0
  233. data/app/assets/images/logos/45x45/ish.png +0 -0
  234. data/app/assets/images/logos/60x60/logo_60x60.png +0 -0
  235. type_on gray].eps +0 -0
  236. type_on white].eps +0 -0
  237. data/app/assets/images/logos/Infinite Shelter/Infinitre Shelter_FINAL [image_on gray].eps +0 -0
  238. data/app/assets/images/logos/Infinite Shelter/Infinitre Shelter_FINAL [image_on white].eps +0 -0
  239. data/app/assets/images/logos/Infinite Shelter/Infinitre-Shelter_FINAL-[image-and-type_on-gray].png +0 -0
  240. data/app/assets/images/logos/Infinite Shelter/Infinitre-Shelter_FINAL-[image-and-type_on-white].png +0 -0
  241. data/app/assets/images/logos/Infinite Shelter/Infinitre-Shelter_FINAL-[image_on-gray].png +0 -0
  242. data/app/assets/images/logos/Infinite Shelter/Infinitre-Shelter_FINAL-[image_on-white].png +0 -0
  243. data/app/assets/images/logos/Infinite Shelter/logo100x100.png +0 -0
  244. data/app/assets/images/logos/Infinite Shelter/logo30.jpg +0 -0
  245. data/app/assets/images/logos/Infinite Shelter/logoGray.png +0 -0
  246. data/app/assets/images/logos/Infinite Shelter/logoWhite.png +0 -0
  247. data/app/assets/images/logos/Infinitre-Shelter_FINAL-[image_on-white].png +0 -0
  248. data/app/assets/images/logos/cac.png +0 -0
  249. data/app/assets/images/logos/cac/CAC_logo_02_FINAL.eps +0 -0
  250. data/app/assets/images/logos/cac/cac.jpg +0 -0
  251. data/app/assets/images/logos/cac/cac.png +0 -0
  252. data/app/assets/images/logos/cac_long.jpg +0 -0
  253. data/app/assets/images/logos/ish.png +0 -0
  254. data/app/assets/images/logos/ish_logo_100.png +0 -0
  255. data/app/assets/images/logos/ish_logo_20.gif +0 -0
  256. data/app/assets/images/logos/ish_logo_200.gif +0 -0
  257. data/app/assets/images/logos/ish_logo_40.gif +0 -0
  258. data/app/assets/images/logos/ish_logo_40.png +0 -0
  259. data/app/assets/images/logos/ish_logo_400.gif +0 -0
  260. data/app/assets/images/logos/ish_logo_400.jpg +0 -0
  261. data/app/assets/images/logos/ish_logo_400.png +0 -0
  262. data/app/assets/images/logos/ish_logo_400.psd +0 -0
  263. data/app/assets/images/logos/logo.png +0 -0
  264. data/app/assets/images/logos/logo100x100.png +0 -0
  265. data/app/assets/images/logos/logo_60x60.png +0 -0
  266. data/app/assets/images/logos/organizer.png +0 -0
  267. data/app/assets/images/logos/ppf.gif +0 -0
  268. data/app/assets/images/logos/travel.png +0 -0
  269. data/app/assets/images/logos/travel_guide.png +0 -0
  270. data/app/assets/images/missing.png +0 -0
  271. data/app/assets/images/next.png +0 -0
  272. data/app/assets/images/no_photo.png +0 -0
  273. data/app/assets/images/no_photo_mini.png +0 -0
  274. data/app/assets/images/organizer/blue-arrow-right.png +0 -0
  275. data/app/assets/images/organizer/sprite2.png +0 -0
  276. data/app/assets/images/ppf.gif +0 -0
  277. data/app/assets/images/prev.png +0 -0
  278. data/app/assets/images/resume/language.png +0 -0
  279. data/app/assets/images/resume/main-nav-left.png +0 -0
  280. data/app/assets/images/resume/main-nav-right-active.png +0 -0
  281. data/app/assets/images/resume/main-nav-right.png +0 -0
  282. data/app/assets/images/resume/user-name-left.png +0 -0
  283. data/app/assets/images/resume/user-name-right.png +0 -0
  284. data/app/assets/images/right.png +0 -0
  285. data/app/assets/images/showv/about-us.jpg +0 -0
  286. data/app/assets/images/showv/arrows-ffffff.png +0 -0
  287. data/app/assets/images/showv/dragon_head_bottom.jpg +0 -0
  288. data/app/assets/images/showv/dragon_head_top.jpg +0 -0
  289. data/app/assets/images/showv/menu-border.png +0 -0
  290. data/app/assets/images/showv/shadow.png +0 -0
  291. data/app/assets/images/showv/subhead-bg.png +0 -0
  292. data/app/assets/images/showv/world.jpg +0 -0
  293. data/app/assets/images/src/contact-us.png +0 -0
  294. data/app/assets/images/src/devops-cropped.png +0 -0
  295. data/app/assets/images/src/devops.png +0 -0
  296. data/app/assets/images/src/html5.jpg +0 -0
  297. data/app/assets/images/src/html5_cropped.jpg +0 -0
  298. data/app/assets/images/src/nodejs.png +0 -0
  299. data/app/assets/images/src/nodejs_cropped.png +0 -0
  300. data/app/assets/images/src/project_management.jpg +0 -0
  301. data/app/assets/images/src/ror.jpg +0 -0
  302. data/app/assets/images/src/the-cloud.png +0 -0
  303. data/app/assets/images/src/uiux.jpg +0 -0
  304. data/app/assets/images/venue.png +0 -0
  305. data/app/assets/images/wait.gif +0 -0
  306. data/app/assets/javascripts/application.js +8 -0
  307. data/app/assets/javascripts/application.js~ +8 -0
  308. data/app/assets/javascripts/application_foundation.js +19 -0
  309. data/app/assets/javascripts/ish_lib_assets/application.js +13 -0
  310. data/app/assets/javascripts/photos_multiadd.coffee +35 -0
  311. data/app/assets/javascripts/utils.coffee +36 -0
  312. data/app/assets/stylesheets/application.css +25 -0
  313. data/app/assets/stylesheets/application.css~ +10 -0
  314. data/app/assets/stylesheets/application_foundation/galleries.sass +11 -0
  315. data/app/assets/stylesheets/application_foundation/header_footer.sass +21 -0
  316. data/app/assets/stylesheets/application_foundation/layout.sass +10 -0
  317. data/app/assets/stylesheets/application_foundation/newsitems.sass +20 -0
  318. data/app/assets/stylesheets/application_foundation/reports.sass +16 -0
  319. data/app/assets/stylesheets/application_foundation/users.sass +4 -0
  320. data/app/assets/stylesheets/application_foundation/videos.sass +11 -0
  321. data/app/assets/stylesheets/application_manager.css +6 -0
  322. data/app/assets/stylesheets/application_print.css +6 -0
  323. data/app/assets/stylesheets/application_resume.css +13 -0
  324. data/app/assets/stylesheets/application_resume.css~ +13 -0
  325. data/app/assets/stylesheets/application_resume_2.css +13 -0
  326. data/app/assets/stylesheets/application_resume_2.css~ +13 -0
  327. data/app/assets/stylesheets/common/_ads.sass +77 -0
  328. data/app/assets/stylesheets/common/_maps.sass +63 -0
  329. data/app/assets/stylesheets/common/_rate_this.sass +23 -0
  330. data/app/assets/stylesheets/common/_set_locale.sass +37 -0
  331. data/app/assets/stylesheets/common/blog.sass +7 -0
  332. data/app/assets/stylesheets/common/cities.sass +202 -0
  333. data/app/assets/stylesheets/common/common.sass +111 -0
  334. data/app/assets/stylesheets/common/devise.sass +29 -0
  335. data/app/assets/stylesheets/common/events.sass +9 -0
  336. data/app/assets/stylesheets/common/features.sass +28 -0
  337. data/app/assets/stylesheets/common/form.sass +19 -0
  338. data/app/assets/stylesheets/common/galleries.sass +216 -0
  339. data/app/assets/stylesheets/common/hf2.sass +91 -0
  340. data/app/assets/stylesheets/common/newsitems.sass +31 -0
  341. data/app/assets/stylesheets/common/photos.sass +32 -0
  342. data/app/assets/stylesheets/common/rate_me.sass +8 -0
  343. data/app/assets/stylesheets/common/reports.sass +269 -0
  344. data/app/assets/stylesheets/common/tags.sass +64 -0
  345. data/app/assets/stylesheets/common/trash/blog.sass +7 -0
  346. data/app/assets/stylesheets/common/users.sass +96 -0
  347. data/app/assets/stylesheets/common/users_organizer.sass +31 -0
  348. data/app/assets/stylesheets/common/users_organizer_forms.sass +126 -0
  349. data/app/assets/stylesheets/common/utils.sass +123 -0
  350. data/app/assets/stylesheets/common/vars.sass +44 -0
  351. data/app/assets/stylesheets/common/venues.sass +88 -0
  352. data/app/assets/stylesheets/common/videos.sass +10 -0
  353. data/app/assets/stylesheets/common/welcome.sass +21 -0
  354. data/app/assets/stylesheets/common_2/_maps.sass +63 -0
  355. data/app/assets/stylesheets/common_2/_rate_this.sass +23 -0
  356. data/app/assets/stylesheets/common_2/_set_locale.sass +37 -0
  357. data/app/assets/stylesheets/common_2/common.sass +43 -0
  358. data/app/assets/stylesheets/common_2/hf_application.sass +177 -0
  359. data/app/assets/stylesheets/common_2/hf_application_mini.sass +98 -0
  360. data/app/assets/stylesheets/common_2/photos.sass +5 -0
  361. data/app/assets/stylesheets/common_2/photos.sass~ +12 -0
  362. data/app/assets/stylesheets/common_2/users_organizer.sass +33 -0
  363. data/app/assets/stylesheets/common_2/users_organizer_forms.sass +126 -0
  364. data/app/assets/stylesheets/common_2/vars.sass +235 -0
  365. data/app/assets/stylesheets/ish_lib_assets/application.css +15 -0
  366. data/app/assets/stylesheets/manager/_search.sass +9 -0
  367. data/app/assets/stylesheets/manager/cities.sass +22 -0
  368. data/app/assets/stylesheets/manager/features.sass +5 -0
  369. data/app/assets/stylesheets/manager/galleries.sass +58 -0
  370. data/app/assets/stylesheets/manager/hf.sass +38 -0
  371. data/app/assets/stylesheets/manager/layout_manager.sass +32 -0
  372. data/app/assets/stylesheets/manager/manager.sass +55 -0
  373. data/app/assets/stylesheets/manager/newsitems.sass +3 -0
  374. data/app/assets/stylesheets/manager/photos.sass +19 -0
  375. data/app/assets/stylesheets/manager/reports.sass +66 -0
  376. data/app/assets/stylesheets/manager/sites.sass +27 -0
  377. data/app/assets/stylesheets/manager/tags.sass +34 -0
  378. data/app/assets/stylesheets/manager/users.sass +14 -0
  379. data/app/assets/stylesheets/manager/vars.sass +4 -0
  380. data/app/assets/stylesheets/manager/venues.sass +20 -0
  381. data/app/assets/stylesheets/manager/welcome.sass +13 -0
  382. data/app/assets/stylesheets/print/default.sass +20 -0
  383. data/app/assets/stylesheets/print/vars.sass +3 -0
  384. data/app/assets/stylesheets/resume/github.sass +9 -0
  385. data/app/assets/stylesheets/resume/hf.sass +18 -0
  386. data/app/assets/stylesheets/resume/layout_piousbox.sass +56 -0
  387. data/app/assets/stylesheets/resume/reports.sass +21 -0
  388. data/app/assets/stylesheets/resume/resume.sass +387 -0
  389. data/app/assets/stylesheets/resume/vars.sass +3 -0
  390. data/app/assets/stylesheets/spec_runner.css +5 -0
  391. data/app/controllers/ish_lib_assets/application_controller.rb +5 -0
  392. data/app/helpers/application_helper.rb +96 -0
  393. data/app/helpers/devise_helper.rb +9 -0
  394. data/app/helpers/images_helper.rb +200 -0
  395. data/app/helpers/ish_lib_assets/application_helper.rb +7 -0
  396. data/app/helpers/ish_lib_assets/application_helper.rb~ +7 -0
  397. data/app/views/layouts/ish_lib_assets/application.html.erb +14 -0
  398. data/app/views/templates/_blah_template.haml +2 -0
  399. data/app/views/templates/blah_template.haml~ +0 -0
  400. data/app/views/templates/kaminari/_first_page.haml +9 -0
  401. data/app/views/templates/kaminari/_first_page.haml~ +9 -0
  402. data/app/views/templates/kaminari/_gap.haml +8 -0
  403. data/app/views/templates/kaminari/_last_page.haml +9 -0
  404. data/app/views/templates/kaminari/_last_page.haml~ +9 -0
  405. data/app/views/templates/kaminari/_next_page.haml +9 -0
  406. data/app/views/templates/kaminari/_next_page.haml~ +9 -0
  407. data/app/views/templates/kaminari/_page.haml +10 -0
  408. data/app/views/templates/kaminari/_page.haml~ +10 -0
  409. data/app/views/templates/kaminari/_paginator.haml +18 -0
  410. data/app/views/templates/kaminari/_paginator.haml~ +18 -0
  411. data/app/views/templates/kaminari/_prev_page.haml +9 -0
  412. data/app/views/templates/kaminari/_prev_page.haml~ +9 -0
  413. data/config/routes.rb +2 -0
  414. data/lib/ish_lib_assets.rb +4 -0
  415. data/lib/ish_lib_assets/engine.rb +9 -0
  416. data/lib/ish_lib_assets/engine.rb~ +9 -0
  417. data/lib/ish_lib_assets/version.rb +3 -0
  418. data/lib/ish_lib_assets/version.rb~ +3 -0
  419. data/lib/tasks/ish_lib_assets_tasks.rake +4 -0
  420. data/test/dummy/README.rdoc +28 -0
  421. data/test/dummy/Rakefile +6 -0
  422. data/test/dummy/app/assets/javascripts/application.js +13 -0
  423. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  424. data/test/dummy/app/controllers/application_controller.rb +5 -0
  425. data/test/dummy/app/helpers/application_helper.rb +2 -0
  426. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  427. data/test/dummy/bin/bundle +3 -0
  428. data/test/dummy/bin/rails +4 -0
  429. data/test/dummy/bin/rake +4 -0
  430. data/test/dummy/bin/setup +29 -0
  431. data/test/dummy/config.ru +4 -0
  432. data/test/dummy/config/application.rb +26 -0
  433. data/test/dummy/config/boot.rb +5 -0
  434. data/test/dummy/config/database.yml +25 -0
  435. data/test/dummy/config/environment.rb +5 -0
  436. data/test/dummy/config/environments/development.rb +41 -0
  437. data/test/dummy/config/environments/production.rb +79 -0
  438. data/test/dummy/config/environments/test.rb +42 -0
  439. data/test/dummy/config/initializers/assets.rb +11 -0
  440. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  441. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  442. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  443. data/test/dummy/config/initializers/inflections.rb +16 -0
  444. data/test/dummy/config/initializers/mime_types.rb +4 -0
  445. data/test/dummy/config/initializers/session_store.rb +3 -0
  446. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  447. data/test/dummy/config/locales/en.yml +23 -0
  448. data/test/dummy/config/routes.rb +4 -0
  449. data/test/dummy/config/secrets.yml +22 -0
  450. data/test/dummy/public/404.html +67 -0
  451. data/test/dummy/public/422.html +67 -0
  452. data/test/dummy/public/500.html +66 -0
  453. data/test/dummy/public/favicon.ico +0 -0
  454. data/test/integration/navigation_test.rb +8 -0
  455. data/test/ish_lib_assets_test.rb +7 -0
  456. data/test/test_helper.rb +21 -0
  457. data/vendor/assets/images/close.png +0 -0
  458. data/vendor/assets/images/glyphicons-halflings-white.png +0 -0
  459. data/vendor/assets/images/glyphicons-halflings.png +0 -0
  460. data/vendor/assets/images/loading.gif +0 -0
  461. data/vendor/assets/images/next.png +0 -0
  462. data/vendor/assets/images/prev.png +0 -0
  463. data/vendor/assets/javascripts/angular.js +14847 -0
  464. data/vendor/assets/javascripts/angular/angular-animate.js +1375 -0
  465. data/vendor/assets/javascripts/angular/angular-cookies.js +202 -0
  466. data/vendor/assets/javascripts/angular/angular-csp.css +13 -0
  467. data/vendor/assets/javascripts/angular/angular-loader.js +410 -0
  468. data/vendor/assets/javascripts/angular/angular-mocks.js +2116 -0
  469. data/vendor/assets/javascripts/angular/angular-resource.js +594 -0
  470. data/vendor/assets/javascripts/angular/angular-route.js +911 -0
  471. data/vendor/assets/javascripts/angular/angular-sanitize.js +622 -0
  472. data/vendor/assets/javascripts/angular/angular-scenario.js +32544 -0
  473. data/vendor/assets/javascripts/angular/angular-touch.js +563 -0
  474. data/vendor/assets/javascripts/angular/angular.js +20539 -0
  475. data/vendor/assets/javascripts/angular/errors.json +1 -0
  476. data/vendor/assets/javascripts/angular/i18n/angular-locale_af-na.js +99 -0
  477. data/vendor/assets/javascripts/angular/i18n/angular-locale_af-za.js +99 -0
  478. data/vendor/assets/javascripts/angular/i18n/angular-locale_af.js +99 -0
  479. data/vendor/assets/javascripts/angular/i18n/angular-locale_am-et.js +99 -0
  480. data/vendor/assets/javascripts/angular/i18n/angular-locale_am.js +99 -0
  481. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-001.js +99 -0
  482. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-ae.js +99 -0
  483. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-bh.js +99 -0
  484. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-dz.js +99 -0
  485. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-eg.js +99 -0
  486. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-iq.js +99 -0
  487. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-jo.js +99 -0
  488. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-kw.js +99 -0
  489. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-lb.js +99 -0
  490. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-ly.js +99 -0
  491. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-ma.js +99 -0
  492. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-om.js +99 -0
  493. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-qa.js +99 -0
  494. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-sa.js +99 -0
  495. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-sd.js +99 -0
  496. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-sy.js +99 -0
  497. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-tn.js +99 -0
  498. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar-ye.js +99 -0
  499. data/vendor/assets/javascripts/angular/i18n/angular-locale_ar.js +99 -0
  500. data/vendor/assets/javascripts/angular/i18n/angular-locale_bg-bg.js +99 -0
  501. data/vendor/assets/javascripts/angular/i18n/angular-locale_bg.js +99 -0
  502. data/vendor/assets/javascripts/angular/i18n/angular-locale_bn-bd.js +99 -0
  503. data/vendor/assets/javascripts/angular/i18n/angular-locale_bn-in.js +99 -0
  504. data/vendor/assets/javascripts/angular/i18n/angular-locale_bn.js +99 -0
  505. data/vendor/assets/javascripts/angular/i18n/angular-locale_ca-ad.js +99 -0
  506. data/vendor/assets/javascripts/angular/i18n/angular-locale_ca-es.js +99 -0
  507. data/vendor/assets/javascripts/angular/i18n/angular-locale_ca.js +99 -0
  508. data/vendor/assets/javascripts/angular/i18n/angular-locale_cs-cz.js +99 -0
  509. data/vendor/assets/javascripts/angular/i18n/angular-locale_cs.js +99 -0
  510. data/vendor/assets/javascripts/angular/i18n/angular-locale_da-dk.js +99 -0
  511. data/vendor/assets/javascripts/angular/i18n/angular-locale_da.js +99 -0
  512. data/vendor/assets/javascripts/angular/i18n/angular-locale_de-at.js +99 -0
  513. data/vendor/assets/javascripts/angular/i18n/angular-locale_de-be.js +99 -0
  514. data/vendor/assets/javascripts/angular/i18n/angular-locale_de-ch.js +99 -0
  515. data/vendor/assets/javascripts/angular/i18n/angular-locale_de-de.js +99 -0
  516. data/vendor/assets/javascripts/angular/i18n/angular-locale_de-li.js +99 -0
  517. data/vendor/assets/javascripts/angular/i18n/angular-locale_de-lu.js +99 -0
  518. data/vendor/assets/javascripts/angular/i18n/angular-locale_de.js +99 -0
  519. data/vendor/assets/javascripts/angular/i18n/angular-locale_el-cy.js +99 -0
  520. data/vendor/assets/javascripts/angular/i18n/angular-locale_el-gr.js +99 -0
  521. data/vendor/assets/javascripts/angular/i18n/angular-locale_el.js +99 -0
  522. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-as.js +99 -0
  523. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-au.js +99 -0
  524. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-bb.js +99 -0
  525. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-be.js +99 -0
  526. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-bm.js +99 -0
  527. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-bw.js +99 -0
  528. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-bz.js +99 -0
  529. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-ca.js +99 -0
  530. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-dsrt-us.js +99 -0
  531. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-dsrt.js +99 -0
  532. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-fm.js +99 -0
  533. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-gb.js +99 -0
  534. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-gu.js +99 -0
  535. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-gy.js +99 -0
  536. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-hk.js +99 -0
  537. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-ie.js +99 -0
  538. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-in.js +99 -0
  539. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-iso.js +99 -0
  540. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-jm.js +99 -0
  541. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-mh.js +99 -0
  542. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-mp.js +99 -0
  543. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-mt.js +99 -0
  544. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-mu.js +99 -0
  545. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-na.js +99 -0
  546. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-nz.js +99 -0
  547. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-ph.js +99 -0
  548. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-pk.js +99 -0
  549. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-pr.js +99 -0
  550. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-pw.js +99 -0
  551. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-sg.js +99 -0
  552. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-tc.js +99 -0
  553. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-tt.js +99 -0
  554. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-um.js +99 -0
  555. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-us.js +99 -0
  556. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-vg.js +99 -0
  557. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-vi.js +99 -0
  558. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-za.js +99 -0
  559. data/vendor/assets/javascripts/angular/i18n/angular-locale_en-zw.js +99 -0
  560. data/vendor/assets/javascripts/angular/i18n/angular-locale_en.js +99 -0
  561. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-419.js +99 -0
  562. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-ar.js +99 -0
  563. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-bo.js +99 -0
  564. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-cl.js +99 -0
  565. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-co.js +99 -0
  566. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-cr.js +99 -0
  567. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-do.js +99 -0
  568. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-ea.js +99 -0
  569. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-ec.js +99 -0
  570. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-es.js +99 -0
  571. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-gq.js +99 -0
  572. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-gt.js +99 -0
  573. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-hn.js +99 -0
  574. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-ic.js +99 -0
  575. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-mx.js +99 -0
  576. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-ni.js +99 -0
  577. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-pa.js +99 -0
  578. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-pe.js +99 -0
  579. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-pr.js +99 -0
  580. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-py.js +99 -0
  581. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-sv.js +99 -0
  582. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-us.js +99 -0
  583. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-uy.js +99 -0
  584. data/vendor/assets/javascripts/angular/i18n/angular-locale_es-ve.js +99 -0
  585. data/vendor/assets/javascripts/angular/i18n/angular-locale_es.js +99 -0
  586. data/vendor/assets/javascripts/angular/i18n/angular-locale_et-ee.js +99 -0
  587. data/vendor/assets/javascripts/angular/i18n/angular-locale_et.js +99 -0
  588. data/vendor/assets/javascripts/angular/i18n/angular-locale_eu-es.js +99 -0
  589. data/vendor/assets/javascripts/angular/i18n/angular-locale_eu.js +99 -0
  590. data/vendor/assets/javascripts/angular/i18n/angular-locale_fa-af.js +99 -0
  591. data/vendor/assets/javascripts/angular/i18n/angular-locale_fa-ir.js +99 -0
  592. data/vendor/assets/javascripts/angular/i18n/angular-locale_fa.js +99 -0
  593. data/vendor/assets/javascripts/angular/i18n/angular-locale_fi-fi.js +99 -0
  594. data/vendor/assets/javascripts/angular/i18n/angular-locale_fi.js +99 -0
  595. data/vendor/assets/javascripts/angular/i18n/angular-locale_fil-ph.js +99 -0
  596. data/vendor/assets/javascripts/angular/i18n/angular-locale_fil.js +99 -0
  597. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-be.js +99 -0
  598. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-bf.js +99 -0
  599. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-bi.js +99 -0
  600. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-bj.js +99 -0
  601. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-bl.js +99 -0
  602. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-ca.js +99 -0
  603. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-cd.js +99 -0
  604. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-cf.js +99 -0
  605. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-cg.js +99 -0
  606. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-ch.js +99 -0
  607. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-ci.js +99 -0
  608. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-cm.js +99 -0
  609. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-dj.js +99 -0
  610. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-fr.js +99 -0
  611. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-ga.js +99 -0
  612. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-gf.js +99 -0
  613. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-gn.js +99 -0
  614. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-gp.js +99 -0
  615. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-gq.js +99 -0
  616. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-km.js +99 -0
  617. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-lu.js +99 -0
  618. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-mc.js +99 -0
  619. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-mf.js +99 -0
  620. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-mg.js +99 -0
  621. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-ml.js +99 -0
  622. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-mq.js +99 -0
  623. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-ne.js +99 -0
  624. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-re.js +99 -0
  625. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr-yt.js +99 -0
  626. data/vendor/assets/javascripts/angular/i18n/angular-locale_fr.js +99 -0
  627. data/vendor/assets/javascripts/angular/i18n/angular-locale_gl-es.js +99 -0
  628. data/vendor/assets/javascripts/angular/i18n/angular-locale_gl.js +99 -0
  629. data/vendor/assets/javascripts/angular/i18n/angular-locale_gsw-ch.js +99 -0
  630. data/vendor/assets/javascripts/angular/i18n/angular-locale_gsw.js +99 -0
  631. data/vendor/assets/javascripts/angular/i18n/angular-locale_gu-in.js +99 -0
  632. data/vendor/assets/javascripts/angular/i18n/angular-locale_gu.js +99 -0
  633. data/vendor/assets/javascripts/angular/i18n/angular-locale_he-il.js +99 -0
  634. data/vendor/assets/javascripts/angular/i18n/angular-locale_he.js +99 -0
  635. data/vendor/assets/javascripts/angular/i18n/angular-locale_hi-in.js +99 -0
  636. data/vendor/assets/javascripts/angular/i18n/angular-locale_hi.js +99 -0
  637. data/vendor/assets/javascripts/angular/i18n/angular-locale_hr-hr.js +99 -0
  638. data/vendor/assets/javascripts/angular/i18n/angular-locale_hr.js +99 -0
  639. data/vendor/assets/javascripts/angular/i18n/angular-locale_hu-hu.js +99 -0
  640. data/vendor/assets/javascripts/angular/i18n/angular-locale_hu.js +99 -0
  641. data/vendor/assets/javascripts/angular/i18n/angular-locale_id-id.js +99 -0
  642. data/vendor/assets/javascripts/angular/i18n/angular-locale_id.js +99 -0
  643. data/vendor/assets/javascripts/angular/i18n/angular-locale_in.js +99 -0
  644. data/vendor/assets/javascripts/angular/i18n/angular-locale_is-is.js +99 -0
  645. data/vendor/assets/javascripts/angular/i18n/angular-locale_is.js +99 -0
  646. data/vendor/assets/javascripts/angular/i18n/angular-locale_it-it.js +99 -0
  647. data/vendor/assets/javascripts/angular/i18n/angular-locale_it-sm.js +99 -0
  648. data/vendor/assets/javascripts/angular/i18n/angular-locale_it.js +99 -0
  649. data/vendor/assets/javascripts/angular/i18n/angular-locale_iw.js +99 -0
  650. data/vendor/assets/javascripts/angular/i18n/angular-locale_ja-jp.js +99 -0
  651. data/vendor/assets/javascripts/angular/i18n/angular-locale_ja.js +99 -0
  652. data/vendor/assets/javascripts/angular/i18n/angular-locale_kn-in.js +99 -0
  653. data/vendor/assets/javascripts/angular/i18n/angular-locale_kn.js +99 -0
  654. data/vendor/assets/javascripts/angular/i18n/angular-locale_ko-kr.js +99 -0
  655. data/vendor/assets/javascripts/angular/i18n/angular-locale_ko.js +99 -0
  656. data/vendor/assets/javascripts/angular/i18n/angular-locale_ln-cd.js +99 -0
  657. data/vendor/assets/javascripts/angular/i18n/angular-locale_ln.js +99 -0
  658. data/vendor/assets/javascripts/angular/i18n/angular-locale_lt-lt.js +99 -0
  659. data/vendor/assets/javascripts/angular/i18n/angular-locale_lt.js +99 -0
  660. data/vendor/assets/javascripts/angular/i18n/angular-locale_lv-lv.js +99 -0
  661. data/vendor/assets/javascripts/angular/i18n/angular-locale_lv.js +99 -0
  662. data/vendor/assets/javascripts/angular/i18n/angular-locale_ml-in.js +99 -0
  663. data/vendor/assets/javascripts/angular/i18n/angular-locale_ml.js +99 -0
  664. data/vendor/assets/javascripts/angular/i18n/angular-locale_mr-in.js +99 -0
  665. data/vendor/assets/javascripts/angular/i18n/angular-locale_mr.js +99 -0
  666. data/vendor/assets/javascripts/angular/i18n/angular-locale_ms-my.js +99 -0
  667. data/vendor/assets/javascripts/angular/i18n/angular-locale_ms.js +99 -0
  668. data/vendor/assets/javascripts/angular/i18n/angular-locale_mt-mt.js +99 -0
  669. data/vendor/assets/javascripts/angular/i18n/angular-locale_mt.js +99 -0
  670. data/vendor/assets/javascripts/angular/i18n/angular-locale_nl-cw.js +99 -0
  671. data/vendor/assets/javascripts/angular/i18n/angular-locale_nl-nl.js +99 -0
  672. data/vendor/assets/javascripts/angular/i18n/angular-locale_nl-sx.js +99 -0
  673. data/vendor/assets/javascripts/angular/i18n/angular-locale_nl.js +99 -0
  674. data/vendor/assets/javascripts/angular/i18n/angular-locale_no.js +99 -0
  675. data/vendor/assets/javascripts/angular/i18n/angular-locale_or-in.js +99 -0
  676. data/vendor/assets/javascripts/angular/i18n/angular-locale_or.js +99 -0
  677. data/vendor/assets/javascripts/angular/i18n/angular-locale_pl-pl.js +99 -0
  678. data/vendor/assets/javascripts/angular/i18n/angular-locale_pl.js +99 -0
  679. data/vendor/assets/javascripts/angular/i18n/angular-locale_pt-br.js +99 -0
  680. data/vendor/assets/javascripts/angular/i18n/angular-locale_pt-pt.js +99 -0
  681. data/vendor/assets/javascripts/angular/i18n/angular-locale_pt.js +99 -0
  682. data/vendor/assets/javascripts/angular/i18n/angular-locale_ro-ro.js +99 -0
  683. data/vendor/assets/javascripts/angular/i18n/angular-locale_ro.js +99 -0
  684. data/vendor/assets/javascripts/angular/i18n/angular-locale_ru-ru.js +99 -0
  685. data/vendor/assets/javascripts/angular/i18n/angular-locale_ru.js +99 -0
  686. data/vendor/assets/javascripts/angular/i18n/angular-locale_sk-sk.js +99 -0
  687. data/vendor/assets/javascripts/angular/i18n/angular-locale_sk.js +99 -0
  688. data/vendor/assets/javascripts/angular/i18n/angular-locale_sl-si.js +99 -0
  689. data/vendor/assets/javascripts/angular/i18n/angular-locale_sl.js +99 -0
  690. data/vendor/assets/javascripts/angular/i18n/angular-locale_sq-al.js +99 -0
  691. data/vendor/assets/javascripts/angular/i18n/angular-locale_sq.js +99 -0
  692. data/vendor/assets/javascripts/angular/i18n/angular-locale_sr-cyrl-rs.js +99 -0
  693. data/vendor/assets/javascripts/angular/i18n/angular-locale_sr-latn-rs.js +99 -0
  694. data/vendor/assets/javascripts/angular/i18n/angular-locale_sr.js +99 -0
  695. data/vendor/assets/javascripts/angular/i18n/angular-locale_sv-se.js +99 -0
  696. data/vendor/assets/javascripts/angular/i18n/angular-locale_sv.js +99 -0
  697. data/vendor/assets/javascripts/angular/i18n/angular-locale_sw-tz.js +99 -0
  698. data/vendor/assets/javascripts/angular/i18n/angular-locale_sw.js +99 -0
  699. data/vendor/assets/javascripts/angular/i18n/angular-locale_ta-in.js +99 -0
  700. data/vendor/assets/javascripts/angular/i18n/angular-locale_ta.js +99 -0
  701. data/vendor/assets/javascripts/angular/i18n/angular-locale_te-in.js +99 -0
  702. data/vendor/assets/javascripts/angular/i18n/angular-locale_te.js +99 -0
  703. data/vendor/assets/javascripts/angular/i18n/angular-locale_th-th.js +99 -0
  704. data/vendor/assets/javascripts/angular/i18n/angular-locale_th.js +99 -0
  705. data/vendor/assets/javascripts/angular/i18n/angular-locale_tl.js +99 -0
  706. data/vendor/assets/javascripts/angular/i18n/angular-locale_tr-tr.js +99 -0
  707. data/vendor/assets/javascripts/angular/i18n/angular-locale_tr.js +99 -0
  708. data/vendor/assets/javascripts/angular/i18n/angular-locale_uk-ua.js +99 -0
  709. data/vendor/assets/javascripts/angular/i18n/angular-locale_uk.js +99 -0
  710. data/vendor/assets/javascripts/angular/i18n/angular-locale_ur-pk.js +99 -0
  711. data/vendor/assets/javascripts/angular/i18n/angular-locale_ur.js +99 -0
  712. data/vendor/assets/javascripts/angular/i18n/angular-locale_vi-vn.js +99 -0
  713. data/vendor/assets/javascripts/angular/i18n/angular-locale_vi.js +99 -0
  714. data/vendor/assets/javascripts/angular/i18n/angular-locale_zh-cn.js +99 -0
  715. data/vendor/assets/javascripts/angular/i18n/angular-locale_zh-hans-cn.js +99 -0
  716. data/vendor/assets/javascripts/angular/i18n/angular-locale_zh-hk.js +99 -0
  717. data/vendor/assets/javascripts/angular/i18n/angular-locale_zh-tw.js +99 -0
  718. data/vendor/assets/javascripts/angular/i18n/angular-locale_zh.js +99 -0
  719. data/vendor/assets/javascripts/angular/i18n/angular-locale_zu-za.js +99 -0
  720. data/vendor/assets/javascripts/angular/i18n/angular-locale_zu.js +99 -0
  721. data/vendor/assets/javascripts/angular/version.json +1 -0
  722. data/vendor/assets/javascripts/angular/version.txt +1 -0
  723. data/vendor/assets/javascripts/custom.modernizr.js +4 -0
  724. data/vendor/assets/javascripts/fancybox/blank.gif +0 -0
  725. data/vendor/assets/javascripts/fancybox/fancybox_loading.gif +0 -0
  726. data/vendor/assets/javascripts/fancybox/fancybox_loading@2x.gif +0 -0
  727. data/vendor/assets/javascripts/fancybox/fancybox_overlay.png +0 -0
  728. data/vendor/assets/javascripts/fancybox/fancybox_sprite.png +0 -0
  729. data/vendor/assets/javascripts/fancybox/fancybox_sprite@2x.png +0 -0
  730. data/vendor/assets/javascripts/fancybox/helpers/fancybox_buttons.png +0 -0
  731. data/vendor/assets/javascripts/fancybox/helpers/jquery.fancybox-buttons.css +97 -0
  732. data/vendor/assets/javascripts/fancybox/helpers/jquery.fancybox-buttons.js +122 -0
  733. data/vendor/assets/javascripts/fancybox/helpers/jquery.fancybox-media.js +199 -0
  734. data/vendor/assets/javascripts/fancybox/helpers/jquery.fancybox-thumbs.css +55 -0
  735. data/vendor/assets/javascripts/fancybox/helpers/jquery.fancybox-thumbs.js +162 -0
  736. data/vendor/assets/javascripts/fancybox/jquery.fancybox.css +274 -0
  737. data/vendor/assets/javascripts/fancybox/jquery.fancybox.js +2020 -0
  738. data/vendor/assets/javascripts/fancybox/jquery.fancybox.pack.js +46 -0
  739. data/vendor/assets/javascripts/fastclick.js +761 -0
  740. data/vendor/assets/javascripts/foundation/foundation-6.2.1-complete/foundation.js +8921 -0
  741. data/vendor/assets/javascripts/foundation/foundation-6.2.1-complete/foundation.min.js +4 -0
  742. data/vendor/assets/javascripts/foundation/foundation-6.2.1-complete/jquery.js +9842 -0
  743. data/vendor/assets/javascripts/foundation/foundation-6.2.1-complete/what-input.js +295 -0
  744. data/vendor/assets/javascripts/foundation/foundation.abide.js +201 -0
  745. data/vendor/assets/javascripts/foundation/foundation.accordion.js +41 -0
  746. data/vendor/assets/javascripts/foundation/foundation.alert.js +34 -0
  747. data/vendor/assets/javascripts/foundation/foundation.clearing.js +450 -0
  748. data/vendor/assets/javascripts/foundation/foundation.dropdown.js +184 -0
  749. data/vendor/assets/javascripts/foundation/foundation.interchange.js +304 -0
  750. data/vendor/assets/javascripts/foundation/foundation.joyride.js +839 -0
  751. data/vendor/assets/javascripts/foundation/foundation.js +8921 -0
  752. data/vendor/assets/javascripts/foundation/foundation.magellan.js +118 -0
  753. data/vendor/assets/javascripts/foundation/foundation.min.js +10 -0
  754. data/vendor/assets/javascripts/foundation/foundation.offcanvas.js +37 -0
  755. data/vendor/assets/javascripts/foundation/foundation.orbit.js +434 -0
  756. data/vendor/assets/javascripts/foundation/foundation.reveal.js +347 -0
  757. data/vendor/assets/javascripts/foundation/foundation.tab.js +37 -0
  758. data/vendor/assets/javascripts/foundation/foundation.tooltip.js +202 -0
  759. data/vendor/assets/javascripts/foundation/foundation.topbar.js +380 -0
  760. data/vendor/assets/javascripts/jasmine/assert.coffee +62 -0
  761. data/vendor/assets/javascripts/jasmine/jasmine-1.1.0/MIT.LICENSE +20 -0
  762. data/vendor/assets/javascripts/jasmine/jasmine-1.1.0/jasmine-html.js +190 -0
  763. data/vendor/assets/javascripts/jasmine/jasmine-1.1.0/jasmine.css +166 -0
  764. data/vendor/assets/javascripts/jasmine/jasmine-1.1.0/jasmine.js +2476 -0
  765. data/vendor/assets/javascripts/jasmine/jasmine-1.1.0/jasmine_favicon.png +0 -0
  766. data/vendor/assets/javascripts/jasmine/jasmine-1.3.1/MIT.LICENSE +20 -0
  767. data/vendor/assets/javascripts/jasmine/jasmine-1.3.1/jasmine-html.js +681 -0
  768. data/vendor/assets/javascripts/jasmine/jasmine-1.3.1/jasmine.css +82 -0
  769. data/vendor/assets/javascripts/jasmine/jasmine-1.3.1/jasmine.js +2600 -0
  770. data/vendor/assets/javascripts/jquery-file-upload/README.md +68 -0
  771. data/vendor/assets/javascripts/jquery-file-upload/application.js +79 -0
  772. data/vendor/assets/javascripts/jquery-file-upload/cors/jquery.postmessage-transport.js +117 -0
  773. data/vendor/assets/javascripts/jquery-file-upload/cors/jquery.xdr-transport.js +85 -0
  774. data/vendor/assets/javascripts/jquery-file-upload/cors/postmessage.html +75 -0
  775. data/vendor/assets/javascripts/jquery-file-upload/cors/result.html +20 -0
  776. data/vendor/assets/javascripts/jquery-file-upload/index.html +176 -0
  777. data/vendor/assets/javascripts/jquery-file-upload/jquery.fileupload-ui.js +547 -0
  778. data/vendor/assets/javascripts/jquery-file-upload/jquery.fileupload.js +1477 -0
  779. data/vendor/assets/javascripts/jquery-file-upload/jquery.iframe-transport.js +217 -0
  780. data/vendor/assets/javascripts/jquery-file-upload/jquery.ui.widget.js +572 -0
  781. data/vendor/assets/javascripts/jquery-file-upload/package.json +60 -0
  782. data/vendor/assets/javascripts/jquery-file-upload/progressbar.gif +0 -0
  783. data/vendor/assets/javascripts/jquery-file-upload/trash/gae-go/app.yaml +12 -0
  784. data/vendor/assets/javascripts/jquery-file-upload/trash/gae-go/app/main.go +360 -0
  785. data/vendor/assets/javascripts/jquery-file-upload/trash/gae-go/resize/resize.go +246 -0
  786. data/vendor/assets/javascripts/jquery-file-upload/trash/gae-go/static/favicon.ico +0 -0
  787. data/vendor/assets/javascripts/jquery-file-upload/trash/gae-go/static/robots.txt +2 -0
  788. data/vendor/assets/javascripts/jquery-file-upload/trash/gae-python/app.yaml +16 -0
  789. data/vendor/assets/javascripts/jquery-file-upload/trash/gae-python/main.py +145 -0
  790. data/vendor/assets/javascripts/jquery-file-upload/trash/gae-python/static/favicon.ico +0 -0
  791. data/vendor/assets/javascripts/jquery-file-upload/trash/gae-python/static/robots.txt +2 -0
  792. data/vendor/assets/javascripts/jquery-file-upload/trash/php/index.php +384 -0
  793. data/vendor/assets/javascripts/jquery-file-upload/trash/test/index.html +105 -0
  794. data/vendor/assets/javascripts/jquery-file-upload/trash/test/test.js +1116 -0
  795. data/vendor/assets/javascripts/jquery-file-upload/vendor/jquery.ui.widget.js +282 -0
  796. data/vendor/assets/javascripts/jquery/jquery-1.7.1.js +9266 -0
  797. data/vendor/assets/javascripts/jquery/jquery-1.7.1.min.js +4 -0
  798. data/vendor/assets/javascripts/jquery/jquery-2.2.2.js +9842 -0
  799. data/vendor/assets/javascripts/jquery/jquery-ui.min.js +13 -0
  800. data/vendor/assets/javascripts/jquery/jquery-uploadify.js +986 -0
  801. data/vendor/assets/javascripts/jquery/jquery.autocomplete.js +645 -0
  802. data/vendor/assets/javascripts/jquery/jquery.cookie.js +107 -0
  803. data/vendor/assets/javascripts/jquery/jquery.infinitecarousel3.js +409 -0
  804. data/vendor/assets/javascripts/jquery/jquery.infinitecarousel3.min.js +10 -0
  805. data/vendor/assets/javascripts/jquery/jquery.js +9842 -0
  806. data/vendor/assets/javascripts/json2.js +482 -0
  807. data/vendor/assets/javascripts/mustache.js +536 -0
  808. data/vendor/assets/javascripts/order.js +189 -0
  809. data/vendor/assets/javascripts/placeholder.js +426 -0
  810. data/vendor/assets/javascripts/rails.js +393 -0
  811. data/vendor/assets/javascripts/share_this.js +3 -0
  812. data/vendor/assets/javascripts/underscore.js +999 -0
  813. data/vendor/assets/javascripts/what-input.js +295 -0
  814. data/vendor/assets/stylesheets/fancybox/jquery.fancybox.css +274 -0
  815. data/vendor/assets/stylesheets/foundation/foundation-6.2.1-complete/css/app.css +0 -0
  816. data/vendor/assets/stylesheets/foundation/foundation-6.2.1-complete/css/foundation.css +4148 -0
  817. data/vendor/assets/stylesheets/foundation/foundation-6.2.1-complete/css/foundation.min.css +2 -0
  818. data/vendor/assets/stylesheets/foundation/foundation-6.2.1-complete/index.html +169 -0
  819. data/vendor/assets/stylesheets/foundation/foundation-6.2.1-complete/js/app.js +1 -0
  820. data/vendor/assets/stylesheets/foundation/foundation-6.2.1-complete/js/vendor/foundation.js +8921 -0
  821. data/vendor/assets/stylesheets/foundation/foundation-6.2.1-complete/js/vendor/foundation.min.js +4 -0
  822. data/vendor/assets/stylesheets/foundation/foundation-6.2.1-complete/js/vendor/jquery.js +9842 -0
  823. data/vendor/assets/stylesheets/foundation/foundation-6.2.1-complete/js/vendor/what-input.js +295 -0
  824. data/vendor/assets/stylesheets/foundation/foundation.css +4148 -0
  825. data/vendor/assets/stylesheets/jquery-file-upload/jquery.fileupload-ui.css +56 -0
  826. data/vendor/assets/stylesheets/reset-min.css +2 -0
  827. data/vendor/assets/stylesheets/trash/active_admin.css.scss +32 -0
  828. data/vendor/assets/stylesheets/trash/bootstrap-responsive.css +1092 -0
  829. data/vendor/assets/stylesheets/trash/bootstrap-responsive.min.css +9 -0
  830. data/vendor/assets/stylesheets/trash/bootstrap.css +6039 -0
  831. data/vendor/assets/stylesheets/trash/bootstrap.min.css +9 -0
  832. data/vendor/assets/stylesheets/trash/foundation-5.0.2/css/foundation.css +5331 -0
  833. data/vendor/assets/stylesheets/trash/foundation-5.0.2/css/foundation.min.css +1 -0
  834. data/vendor/assets/stylesheets/trash/foundation-5.0.2/css/normalize.css +410 -0
  835. data/vendor/assets/stylesheets/trash/foundation-5.0.2/index.html +166 -0
  836. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation.min.js +10 -0
  837. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.abide.js +201 -0
  838. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.accordion.js +41 -0
  839. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.alert.js +34 -0
  840. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.clearing.js +450 -0
  841. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.dropdown.js +184 -0
  842. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.interchange.js +304 -0
  843. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.joyride.js +839 -0
  844. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.js +416 -0
  845. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.magellan.js +118 -0
  846. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.offcanvas.js +37 -0
  847. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.orbit.js +434 -0
  848. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.reveal.js +347 -0
  849. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.tab.js +37 -0
  850. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.tooltip.js +202 -0
  851. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/foundation/foundation.topbar.js +380 -0
  852. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/jquery.js +8829 -0
  853. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/modernizr.js +4 -0
  854. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/vendor/custom.modernizr.js +4 -0
  855. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/vendor/fastclick.js +761 -0
  856. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/vendor/jquery.autocomplete.js +645 -0
  857. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/vendor/jquery.cookie.js +107 -0
  858. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/vendor/jquery.js +8829 -0
  859. data/vendor/assets/stylesheets/trash/foundation-5.0.2/js/vendor/placeholder.js +426 -0
  860. data/vendor/assets/stylesheets/trash/foundation-5.css +5331 -0
  861. data/vendor/assets/stylesheets/trash/foundation.min.css +1 -0
  862. data/vendor/assets/stylesheets/trash/grid.css +280 -0
  863. data/vendor/assets/stylesheets/trash/lightbox.css +210 -0
  864. data/vendor/assets/stylesheets/trash/normalize.css +410 -0
  865. data/vendor/assets/stylesheets/trash/scaffolds.css.scss +69 -0
  866. data/vendor/assets/stylesheets/trash/screen.css +858 -0
  867. data/vendor/assets/stylesheets/trash/uploadify.css +92 -0
  868. metadata +977 -0
@@ -0,0 +1,563 @@
1
+ /**
2
+ * @license AngularJS v1.2.6
3
+ * (c) 2010-2014 Google, Inc. http://angularjs.org
4
+ * License: MIT
5
+ */
6
+ (function(window, angular, undefined) {'use strict';
7
+
8
+ /**
9
+ * @ngdoc overview
10
+ * @name ngTouch
11
+ * @description
12
+ *
13
+ * # ngTouch
14
+ *
15
+ * The `ngTouch` module provides touch events and other helpers for touch-enabled devices.
16
+ * The implementation is based on jQuery Mobile touch event handling
17
+ * ([jquerymobile.com](http://jquerymobile.com/)).
18
+ *
19
+ * {@installModule touch}
20
+ *
21
+ * See {@link ngTouch.$swipe `$swipe`} for usage.
22
+ *
23
+ * <div doc-module-components="ngTouch"></div>
24
+ *
25
+ */
26
+
27
+ // define ngTouch module
28
+ /* global -ngTouch */
29
+ var ngTouch = angular.module('ngTouch', []);
30
+
31
+ /* global ngTouch: false */
32
+
33
+ /**
34
+ * @ngdoc object
35
+ * @name ngTouch.$swipe
36
+ *
37
+ * @description
38
+ * The `$swipe` service is a service that abstracts the messier details of hold-and-drag swipe
39
+ * behavior, to make implementing swipe-related directives more convenient.
40
+ *
41
+ * Requires the {@link ngTouch `ngTouch`} module to be installed.
42
+ *
43
+ * `$swipe` is used by the `ngSwipeLeft` and `ngSwipeRight` directives in `ngTouch`, and by
44
+ * `ngCarousel` in a separate component.
45
+ *
46
+ * # Usage
47
+ * The `$swipe` service is an object with a single method: `bind`. `bind` takes an element
48
+ * which is to be watched for swipes, and an object with four handler functions. See the
49
+ * documentation for `bind` below.
50
+ */
51
+
52
+ ngTouch.factory('$swipe', [function() {
53
+ // The total distance in any direction before we make the call on swipe vs. scroll.
54
+ var MOVE_BUFFER_RADIUS = 10;
55
+
56
+ function getCoordinates(event) {
57
+ var touches = event.touches && event.touches.length ? event.touches : [event];
58
+ var e = (event.changedTouches && event.changedTouches[0]) ||
59
+ (event.originalEvent && event.originalEvent.changedTouches &&
60
+ event.originalEvent.changedTouches[0]) ||
61
+ touches[0].originalEvent || touches[0];
62
+
63
+ return {
64
+ x: e.clientX,
65
+ y: e.clientY
66
+ };
67
+ }
68
+
69
+ return {
70
+ /**
71
+ * @ngdoc method
72
+ * @name ngTouch.$swipe#bind
73
+ * @methodOf ngTouch.$swipe
74
+ *
75
+ * @description
76
+ * The main method of `$swipe`. It takes an element to be watched for swipe motions, and an
77
+ * object containing event handlers.
78
+ *
79
+ * The four events are `start`, `move`, `end`, and `cancel`. `start`, `move`, and `end`
80
+ * receive as a parameter a coordinates object of the form `{ x: 150, y: 310 }`.
81
+ *
82
+ * `start` is called on either `mousedown` or `touchstart`. After this event, `$swipe` is
83
+ * watching for `touchmove` or `mousemove` events. These events are ignored until the total
84
+ * distance moved in either dimension exceeds a small threshold.
85
+ *
86
+ * Once this threshold is exceeded, either the horizontal or vertical delta is greater.
87
+ * - If the horizontal distance is greater, this is a swipe and `move` and `end` events follow.
88
+ * - If the vertical distance is greater, this is a scroll, and we let the browser take over.
89
+ * A `cancel` event is sent.
90
+ *
91
+ * `move` is called on `mousemove` and `touchmove` after the above logic has determined that
92
+ * a swipe is in progress.
93
+ *
94
+ * `end` is called when a swipe is successfully completed with a `touchend` or `mouseup`.
95
+ *
96
+ * `cancel` is called either on a `touchcancel` from the browser, or when we begin scrolling
97
+ * as described above.
98
+ *
99
+ */
100
+ bind: function(element, eventHandlers) {
101
+ // Absolute total movement, used to control swipe vs. scroll.
102
+ var totalX, totalY;
103
+ // Coordinates of the start position.
104
+ var startCoords;
105
+ // Last event's position.
106
+ var lastPos;
107
+ // Whether a swipe is active.
108
+ var active = false;
109
+
110
+ element.on('touchstart mousedown', function(event) {
111
+ startCoords = getCoordinates(event);
112
+ active = true;
113
+ totalX = 0;
114
+ totalY = 0;
115
+ lastPos = startCoords;
116
+ eventHandlers['start'] && eventHandlers['start'](startCoords, event);
117
+ });
118
+
119
+ element.on('touchcancel', function(event) {
120
+ active = false;
121
+ eventHandlers['cancel'] && eventHandlers['cancel'](event);
122
+ });
123
+
124
+ element.on('touchmove mousemove', function(event) {
125
+ if (!active) return;
126
+
127
+ // Android will send a touchcancel if it thinks we're starting to scroll.
128
+ // So when the total distance (+ or - or both) exceeds 10px in either direction,
129
+ // we either:
130
+ // - On totalX > totalY, we send preventDefault() and treat this as a swipe.
131
+ // - On totalY > totalX, we let the browser handle it as a scroll.
132
+
133
+ if (!startCoords) return;
134
+ var coords = getCoordinates(event);
135
+
136
+ totalX += Math.abs(coords.x - lastPos.x);
137
+ totalY += Math.abs(coords.y - lastPos.y);
138
+
139
+ lastPos = coords;
140
+
141
+ if (totalX < MOVE_BUFFER_RADIUS && totalY < MOVE_BUFFER_RADIUS) {
142
+ return;
143
+ }
144
+
145
+ // One of totalX or totalY has exceeded the buffer, so decide on swipe vs. scroll.
146
+ if (totalY > totalX) {
147
+ // Allow native scrolling to take over.
148
+ active = false;
149
+ eventHandlers['cancel'] && eventHandlers['cancel'](event);
150
+ return;
151
+ } else {
152
+ // Prevent the browser from scrolling.
153
+ event.preventDefault();
154
+ eventHandlers['move'] && eventHandlers['move'](coords, event);
155
+ }
156
+ });
157
+
158
+ element.on('touchend mouseup', function(event) {
159
+ if (!active) return;
160
+ active = false;
161
+ eventHandlers['end'] && eventHandlers['end'](getCoordinates(event), event);
162
+ });
163
+ }
164
+ };
165
+ }]);
166
+
167
+ /* global ngTouch: false */
168
+
169
+ /**
170
+ * @ngdoc directive
171
+ * @name ngTouch.directive:ngClick
172
+ *
173
+ * @description
174
+ * A more powerful replacement for the default ngClick designed to be used on touchscreen
175
+ * devices. Most mobile browsers wait about 300ms after a tap-and-release before sending
176
+ * the click event. This version handles them immediately, and then prevents the
177
+ * following click event from propagating.
178
+ *
179
+ * Requires the {@link ngTouch `ngTouch`} module to be installed.
180
+ *
181
+ * This directive can fall back to using an ordinary click event, and so works on desktop
182
+ * browsers as well as mobile.
183
+ *
184
+ * This directive also sets the CSS class `ng-click-active` while the element is being held
185
+ * down (by a mouse click or touch) so you can restyle the depressed element if you wish.
186
+ *
187
+ * @element ANY
188
+ * @param {expression} ngClick {@link guide/expression Expression} to evaluate
189
+ * upon tap. (Event object is available as `$event`)
190
+ *
191
+ * @example
192
+ <doc:example>
193
+ <doc:source>
194
+ <button ng-click="count = count + 1" ng-init="count=0">
195
+ Increment
196
+ </button>
197
+ count: {{ count }}
198
+ </doc:source>
199
+ </doc:example>
200
+ */
201
+
202
+ ngTouch.config(['$provide', function($provide) {
203
+ $provide.decorator('ngClickDirective', ['$delegate', function($delegate) {
204
+ // drop the default ngClick directive
205
+ $delegate.shift();
206
+ return $delegate;
207
+ }]);
208
+ }]);
209
+
210
+ ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement',
211
+ function($parse, $timeout, $rootElement) {
212
+ var TAP_DURATION = 750; // Shorter than 750ms is a tap, longer is a taphold or drag.
213
+ var MOVE_TOLERANCE = 12; // 12px seems to work in most mobile browsers.
214
+ var PREVENT_DURATION = 2500; // 2.5 seconds maximum from preventGhostClick call to click
215
+ var CLICKBUSTER_THRESHOLD = 25; // 25 pixels in any dimension is the limit for busting clicks.
216
+
217
+ var ACTIVE_CLASS_NAME = 'ng-click-active';
218
+ var lastPreventedTime;
219
+ var touchCoordinates;
220
+
221
+
222
+ // TAP EVENTS AND GHOST CLICKS
223
+ //
224
+ // Why tap events?
225
+ // Mobile browsers detect a tap, then wait a moment (usually ~300ms) to see if you're
226
+ // double-tapping, and then fire a click event.
227
+ //
228
+ // This delay sucks and makes mobile apps feel unresponsive.
229
+ // So we detect touchstart, touchmove, touchcancel and touchend ourselves and determine when
230
+ // the user has tapped on something.
231
+ //
232
+ // What happens when the browser then generates a click event?
233
+ // The browser, of course, also detects the tap and fires a click after a delay. This results in
234
+ // tapping/clicking twice. So we do "clickbusting" to prevent it.
235
+ //
236
+ // How does it work?
237
+ // We attach global touchstart and click handlers, that run during the capture (early) phase.
238
+ // So the sequence for a tap is:
239
+ // - global touchstart: Sets an "allowable region" at the point touched.
240
+ // - element's touchstart: Starts a touch
241
+ // (- touchmove or touchcancel ends the touch, no click follows)
242
+ // - element's touchend: Determines if the tap is valid (didn't move too far away, didn't hold
243
+ // too long) and fires the user's tap handler. The touchend also calls preventGhostClick().
244
+ // - preventGhostClick() removes the allowable region the global touchstart created.
245
+ // - The browser generates a click event.
246
+ // - The global click handler catches the click, and checks whether it was in an allowable region.
247
+ // - If preventGhostClick was called, the region will have been removed, the click is busted.
248
+ // - If the region is still there, the click proceeds normally. Therefore clicks on links and
249
+ // other elements without ngTap on them work normally.
250
+ //
251
+ // This is an ugly, terrible hack!
252
+ // Yeah, tell me about it. The alternatives are using the slow click events, or making our users
253
+ // deal with the ghost clicks, so I consider this the least of evils. Fortunately Angular
254
+ // encapsulates this ugly logic away from the user.
255
+ //
256
+ // Why not just put click handlers on the element?
257
+ // We do that too, just to be sure. The problem is that the tap event might have caused the DOM
258
+ // to change, so that the click fires in the same position but something else is there now. So
259
+ // the handlers are global and care only about coordinates and not elements.
260
+
261
+ // Checks if the coordinates are close enough to be within the region.
262
+ function hit(x1, y1, x2, y2) {
263
+ return Math.abs(x1 - x2) < CLICKBUSTER_THRESHOLD && Math.abs(y1 - y2) < CLICKBUSTER_THRESHOLD;
264
+ }
265
+
266
+ // Checks a list of allowable regions against a click location.
267
+ // Returns true if the click should be allowed.
268
+ // Splices out the allowable region from the list after it has been used.
269
+ function checkAllowableRegions(touchCoordinates, x, y) {
270
+ for (var i = 0; i < touchCoordinates.length; i += 2) {
271
+ if (hit(touchCoordinates[i], touchCoordinates[i+1], x, y)) {
272
+ touchCoordinates.splice(i, i + 2);
273
+ return true; // allowable region
274
+ }
275
+ }
276
+ return false; // No allowable region; bust it.
277
+ }
278
+
279
+ // Global click handler that prevents the click if it's in a bustable zone and preventGhostClick
280
+ // was called recently.
281
+ function onClick(event) {
282
+ if (Date.now() - lastPreventedTime > PREVENT_DURATION) {
283
+ return; // Too old.
284
+ }
285
+
286
+ var touches = event.touches && event.touches.length ? event.touches : [event];
287
+ var x = touches[0].clientX;
288
+ var y = touches[0].clientY;
289
+ // Work around desktop Webkit quirk where clicking a label will fire two clicks (on the label
290
+ // and on the input element). Depending on the exact browser, this second click we don't want
291
+ // to bust has either (0,0) or negative coordinates.
292
+ if (x < 1 && y < 1) {
293
+ return; // offscreen
294
+ }
295
+
296
+ // Look for an allowable region containing this click.
297
+ // If we find one, that means it was created by touchstart and not removed by
298
+ // preventGhostClick, so we don't bust it.
299
+ if (checkAllowableRegions(touchCoordinates, x, y)) {
300
+ return;
301
+ }
302
+
303
+ // If we didn't find an allowable region, bust the click.
304
+ event.stopPropagation();
305
+ event.preventDefault();
306
+
307
+ // Blur focused form elements
308
+ event.target && event.target.blur();
309
+ }
310
+
311
+
312
+ // Global touchstart handler that creates an allowable region for a click event.
313
+ // This allowable region can be removed by preventGhostClick if we want to bust it.
314
+ function onTouchStart(event) {
315
+ var touches = event.touches && event.touches.length ? event.touches : [event];
316
+ var x = touches[0].clientX;
317
+ var y = touches[0].clientY;
318
+ touchCoordinates.push(x, y);
319
+
320
+ $timeout(function() {
321
+ // Remove the allowable region.
322
+ for (var i = 0; i < touchCoordinates.length; i += 2) {
323
+ if (touchCoordinates[i] == x && touchCoordinates[i+1] == y) {
324
+ touchCoordinates.splice(i, i + 2);
325
+ return;
326
+ }
327
+ }
328
+ }, PREVENT_DURATION, false);
329
+ }
330
+
331
+ // On the first call, attaches some event handlers. Then whenever it gets called, it creates a
332
+ // zone around the touchstart where clicks will get busted.
333
+ function preventGhostClick(x, y) {
334
+ if (!touchCoordinates) {
335
+ $rootElement[0].addEventListener('click', onClick, true);
336
+ $rootElement[0].addEventListener('touchstart', onTouchStart, true);
337
+ touchCoordinates = [];
338
+ }
339
+
340
+ lastPreventedTime = Date.now();
341
+
342
+ checkAllowableRegions(touchCoordinates, x, y);
343
+ }
344
+
345
+ // Actual linking function.
346
+ return function(scope, element, attr) {
347
+ var clickHandler = $parse(attr.ngClick),
348
+ tapping = false,
349
+ tapElement, // Used to blur the element after a tap.
350
+ startTime, // Used to check if the tap was held too long.
351
+ touchStartX,
352
+ touchStartY;
353
+
354
+ function resetState() {
355
+ tapping = false;
356
+ element.removeClass(ACTIVE_CLASS_NAME);
357
+ }
358
+
359
+ element.on('touchstart', function(event) {
360
+ tapping = true;
361
+ tapElement = event.target ? event.target : event.srcElement; // IE uses srcElement.
362
+ // Hack for Safari, which can target text nodes instead of containers.
363
+ if(tapElement.nodeType == 3) {
364
+ tapElement = tapElement.parentNode;
365
+ }
366
+
367
+ element.addClass(ACTIVE_CLASS_NAME);
368
+
369
+ startTime = Date.now();
370
+
371
+ var touches = event.touches && event.touches.length ? event.touches : [event];
372
+ var e = touches[0].originalEvent || touches[0];
373
+ touchStartX = e.clientX;
374
+ touchStartY = e.clientY;
375
+ });
376
+
377
+ element.on('touchmove', function(event) {
378
+ resetState();
379
+ });
380
+
381
+ element.on('touchcancel', function(event) {
382
+ resetState();
383
+ });
384
+
385
+ element.on('touchend', function(event) {
386
+ var diff = Date.now() - startTime;
387
+
388
+ var touches = (event.changedTouches && event.changedTouches.length) ? event.changedTouches :
389
+ ((event.touches && event.touches.length) ? event.touches : [event]);
390
+ var e = touches[0].originalEvent || touches[0];
391
+ var x = e.clientX;
392
+ var y = e.clientY;
393
+ var dist = Math.sqrt( Math.pow(x - touchStartX, 2) + Math.pow(y - touchStartY, 2) );
394
+
395
+ if (tapping && diff < TAP_DURATION && dist < MOVE_TOLERANCE) {
396
+ // Call preventGhostClick so the clickbuster will catch the corresponding click.
397
+ preventGhostClick(x, y);
398
+
399
+ // Blur the focused element (the button, probably) before firing the callback.
400
+ // This doesn't work perfectly on Android Chrome, but seems to work elsewhere.
401
+ // I couldn't get anything to work reliably on Android Chrome.
402
+ if (tapElement) {
403
+ tapElement.blur();
404
+ }
405
+
406
+ if (!angular.isDefined(attr.disabled) || attr.disabled === false) {
407
+ element.triggerHandler('click', [event]);
408
+ }
409
+ }
410
+
411
+ resetState();
412
+ });
413
+
414
+ // Hack for iOS Safari's benefit. It goes searching for onclick handlers and is liable to click
415
+ // something else nearby.
416
+ element.onclick = function(event) { };
417
+
418
+ // Actual click handler.
419
+ // There are three different kinds of clicks, only two of which reach this point.
420
+ // - On desktop browsers without touch events, their clicks will always come here.
421
+ // - On mobile browsers, the simulated "fast" click will call this.
422
+ // - But the browser's follow-up slow click will be "busted" before it reaches this handler.
423
+ // Therefore it's safe to use this directive on both mobile and desktop.
424
+ element.on('click', function(event, touchend) {
425
+ scope.$apply(function() {
426
+ clickHandler(scope, {$event: (touchend || event)});
427
+ });
428
+ });
429
+
430
+ element.on('mousedown', function(event) {
431
+ element.addClass(ACTIVE_CLASS_NAME);
432
+ });
433
+
434
+ element.on('mousemove mouseup', function(event) {
435
+ element.removeClass(ACTIVE_CLASS_NAME);
436
+ });
437
+
438
+ };
439
+ }]);
440
+
441
+ /* global ngTouch: false */
442
+
443
+ /**
444
+ * @ngdoc directive
445
+ * @name ngTouch.directive:ngSwipeLeft
446
+ *
447
+ * @description
448
+ * Specify custom behavior when an element is swiped to the left on a touchscreen device.
449
+ * A leftward swipe is a quick, right-to-left slide of the finger.
450
+ * Though ngSwipeLeft is designed for touch-based devices, it will work with a mouse click and drag
451
+ * too.
452
+ *
453
+ * Requires the {@link ngTouch `ngTouch`} module to be installed.
454
+ *
455
+ * @element ANY
456
+ * @param {expression} ngSwipeLeft {@link guide/expression Expression} to evaluate
457
+ * upon left swipe. (Event object is available as `$event`)
458
+ *
459
+ * @example
460
+ <doc:example>
461
+ <doc:source>
462
+ <div ng-show="!showActions" ng-swipe-left="showActions = true">
463
+ Some list content, like an email in the inbox
464
+ </div>
465
+ <div ng-show="showActions" ng-swipe-right="showActions = false">
466
+ <button ng-click="reply()">Reply</button>
467
+ <button ng-click="delete()">Delete</button>
468
+ </div>
469
+ </doc:source>
470
+ </doc:example>
471
+ */
472
+
473
+ /**
474
+ * @ngdoc directive
475
+ * @name ngTouch.directive:ngSwipeRight
476
+ *
477
+ * @description
478
+ * Specify custom behavior when an element is swiped to the right on a touchscreen device.
479
+ * A rightward swipe is a quick, left-to-right slide of the finger.
480
+ * Though ngSwipeRight is designed for touch-based devices, it will work with a mouse click and drag
481
+ * too.
482
+ *
483
+ * Requires the {@link ngTouch `ngTouch`} module to be installed.
484
+ *
485
+ * @element ANY
486
+ * @param {expression} ngSwipeRight {@link guide/expression Expression} to evaluate
487
+ * upon right swipe. (Event object is available as `$event`)
488
+ *
489
+ * @example
490
+ <doc:example>
491
+ <doc:source>
492
+ <div ng-show="!showActions" ng-swipe-left="showActions = true">
493
+ Some list content, like an email in the inbox
494
+ </div>
495
+ <div ng-show="showActions" ng-swipe-right="showActions = false">
496
+ <button ng-click="reply()">Reply</button>
497
+ <button ng-click="delete()">Delete</button>
498
+ </div>
499
+ </doc:source>
500
+ </doc:example>
501
+ */
502
+
503
+ function makeSwipeDirective(directiveName, direction, eventName) {
504
+ ngTouch.directive(directiveName, ['$parse', '$swipe', function($parse, $swipe) {
505
+ // The maximum vertical delta for a swipe should be less than 75px.
506
+ var MAX_VERTICAL_DISTANCE = 75;
507
+ // Vertical distance should not be more than a fraction of the horizontal distance.
508
+ var MAX_VERTICAL_RATIO = 0.3;
509
+ // At least a 30px lateral motion is necessary for a swipe.
510
+ var MIN_HORIZONTAL_DISTANCE = 30;
511
+
512
+ return function(scope, element, attr) {
513
+ var swipeHandler = $parse(attr[directiveName]);
514
+
515
+ var startCoords, valid;
516
+
517
+ function validSwipe(coords) {
518
+ // Check that it's within the coordinates.
519
+ // Absolute vertical distance must be within tolerances.
520
+ // Horizontal distance, we take the current X - the starting X.
521
+ // This is negative for leftward swipes and positive for rightward swipes.
522
+ // After multiplying by the direction (-1 for left, +1 for right), legal swipes
523
+ // (ie. same direction as the directive wants) will have a positive delta and
524
+ // illegal ones a negative delta.
525
+ // Therefore this delta must be positive, and larger than the minimum.
526
+ if (!startCoords) return false;
527
+ var deltaY = Math.abs(coords.y - startCoords.y);
528
+ var deltaX = (coords.x - startCoords.x) * direction;
529
+ return valid && // Short circuit for already-invalidated swipes.
530
+ deltaY < MAX_VERTICAL_DISTANCE &&
531
+ deltaX > 0 &&
532
+ deltaX > MIN_HORIZONTAL_DISTANCE &&
533
+ deltaY / deltaX < MAX_VERTICAL_RATIO;
534
+ }
535
+
536
+ $swipe.bind(element, {
537
+ 'start': function(coords, event) {
538
+ startCoords = coords;
539
+ valid = true;
540
+ },
541
+ 'cancel': function(event) {
542
+ valid = false;
543
+ },
544
+ 'end': function(coords, event) {
545
+ if (validSwipe(coords)) {
546
+ scope.$apply(function() {
547
+ element.triggerHandler(eventName);
548
+ swipeHandler(scope, {$event: event});
549
+ });
550
+ }
551
+ }
552
+ });
553
+ };
554
+ }]);
555
+ }
556
+
557
+ // Left is negative X-coordinate, right is positive.
558
+ makeSwipeDirective('ngSwipeLeft', -1, 'swipeleft');
559
+ makeSwipeDirective('ngSwipeRight', 1, 'swiperight');
560
+
561
+
562
+
563
+ })(window, window.angular);