ish_lib_assets 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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);