repsheet_visualizer 0.2.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (504) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/Gemfile.lock +8 -6
  4. data/lib/repsheet_visualizer/application/app.rb +51 -5
  5. data/lib/repsheet_visualizer/application/backend.rb +27 -0
  6. data/lib/repsheet_visualizer/application/public/fonts/FontAwesome.otf +0 -0
  7. data/lib/repsheet_visualizer/application/public/fonts/fontawesome-webfont.eot +0 -0
  8. data/lib/repsheet_visualizer/application/public/fonts/fontawesome-webfont.svg +414 -0
  9. data/lib/repsheet_visualizer/application/public/fonts/fontawesome-webfont.ttf +0 -0
  10. data/lib/repsheet_visualizer/application/public/fonts/fontawesome-webfont.woff +0 -0
  11. data/lib/repsheet_visualizer/application/public/fonts/glyphicons-halflings-regular.eot +0 -0
  12. data/lib/repsheet_visualizer/application/public/fonts/glyphicons-halflings-regular.svg +228 -0
  13. data/lib/repsheet_visualizer/application/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  14. data/lib/repsheet_visualizer/application/public/fonts/glyphicons-halflings-regular.woff +0 -0
  15. data/lib/repsheet_visualizer/application/public/img/jquery/handle-vertical.png +0 -0
  16. data/lib/repsheet_visualizer/application/public/img/jquery/handle.png +0 -0
  17. data/lib/repsheet_visualizer/application/public/img/layout/sidebar-bg.png +0 -0
  18. data/lib/repsheet_visualizer/application/public/img/loaders/ajax-loader.gif +0 -0
  19. data/lib/repsheet_visualizer/application/public/img/photos/map.png +0 -0
  20. data/lib/repsheet_visualizer/application/public/js/App.js +372 -0
  21. data/lib/repsheet_visualizer/application/public/js/Login.js +17 -0
  22. data/lib/repsheet_visualizer/application/public/js/demos/buttons.js +7 -0
  23. data/lib/repsheet_visualizer/application/public/js/demos/calendar.js +142 -0
  24. data/lib/repsheet_visualizer/application/public/js/demos/charts/flot/area.js +73 -0
  25. data/lib/repsheet_visualizer/application/public/js/demos/charts/flot/chart1.js +77 -0
  26. data/lib/repsheet_visualizer/application/public/js/demos/charts/flot/chart2.js +70 -0
  27. data/lib/repsheet_visualizer/application/public/js/demos/charts/flot/chart3.js +71 -0
  28. data/lib/repsheet_visualizer/application/public/js/demos/charts/flot/chart4.js +69 -0
  29. data/lib/repsheet_visualizer/application/public/js/demos/charts/flot/donut.js +49 -0
  30. data/lib/repsheet_visualizer/application/public/js/demos/charts/flot/horizontal.js +56 -0
  31. data/lib/repsheet_visualizer/application/public/js/demos/charts/flot/line.js +76 -0
  32. data/lib/repsheet_visualizer/application/public/js/demos/charts/flot/pie.js +50 -0
  33. data/lib/repsheet_visualizer/application/public/js/demos/charts/flot/scatter.js +62 -0
  34. data/lib/repsheet_visualizer/application/public/js/demos/charts/flot/stacked-area.js +86 -0
  35. data/lib/repsheet_visualizer/application/public/js/demos/charts/flot/stacked-horizontal.js +60 -0
  36. data/lib/repsheet_visualizer/application/public/js/demos/charts/flot/stacked-vertical.js +75 -0
  37. data/lib/repsheet_visualizer/application/public/js/demos/charts/flot/vertical.js +70 -0
  38. data/lib/repsheet_visualizer/application/public/js/demos/charts/morris/area.js +28 -0
  39. data/lib/repsheet_visualizer/application/public/js/demos/charts/morris/bar.js +29 -0
  40. data/lib/repsheet_visualizer/application/public/js/demos/charts/morris/donut.js +26 -0
  41. data/lib/repsheet_visualizer/application/public/js/demos/charts/morris/line.js +30 -0
  42. data/lib/repsheet_visualizer/application/public/js/demos/dashboard.js +26 -0
  43. data/lib/repsheet_visualizer/application/public/js/demos/form-extended.js +61 -0
  44. data/lib/repsheet_visualizer/application/public/js/demos/popups.js +16 -0
  45. data/lib/repsheet_visualizer/application/public/js/demos/pricing.js +10 -0
  46. data/lib/repsheet_visualizer/application/public/js/demos/sliders.js +77 -0
  47. data/lib/repsheet_visualizer/application/public/js/libs/bootstrap.js +1999 -0
  48. data/lib/repsheet_visualizer/application/public/js/libs/bootstrap.min.js +6 -0
  49. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  50. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  51. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  52. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  53. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  54. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  55. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  56. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  57. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  58. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  59. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  60. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  61. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  62. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  63. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/jquery-ui-1.9.2.custom.css +294 -0
  64. data/lib/repsheet_visualizer/application/public/js/libs/css/ui-lightness/jquery-ui-1.9.2.custom.min.css +7 -0
  65. data/lib/repsheet_visualizer/application/public/js/libs/jquery-1.9.1.min.js +5 -0
  66. data/lib/repsheet_visualizer/application/public/js/libs/jquery-ui-1.9.2.custom.min.js +6 -0
  67. data/lib/repsheet_visualizer/application/public/js/libs/jquery.min.map +1 -0
  68. data/lib/repsheet_visualizer/application/public/js/libs/raphael-2.1.2.min.js +11 -0
  69. data/lib/repsheet_visualizer/application/public/js/plugins/autosize/jquery.autosize.min.js +7 -0
  70. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/DT_bootstrap.js +148 -0
  71. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/img/Sorting icons.psd +0 -0
  72. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/img/back_disabled.png +0 -0
  73. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/img/back_enabled.png +0 -0
  74. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/img/back_enabled_hover.png +0 -0
  75. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/img/datatable-row-openclose.png +0 -0
  76. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/img/favicon.ico +0 -0
  77. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/img/forward_disabled.png +0 -0
  78. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/img/forward_enabled.png +0 -0
  79. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/img/forward_enabled_hover.png +0 -0
  80. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/img/sort_asc.png +0 -0
  81. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/img/sort_asc_disabled.png +0 -0
  82. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/img/sort_both.png +0 -0
  83. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/img/sort_desc.png +0 -0
  84. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/img/sort_desc_disabled.png +0 -0
  85. data/lib/repsheet_visualizer/application/public/js/plugins/datatables/jquery.dataTables.min.js +155 -0
  86. data/lib/repsheet_visualizer/application/public/js/plugins/datepicker/bootstrap-datepicker.js +1258 -0
  87. data/lib/repsheet_visualizer/application/public/js/plugins/datepicker/datepicker.css +481 -0
  88. data/lib/repsheet_visualizer/application/public/js/plugins/datepicker/less/datepicker.less +122 -0
  89. data/lib/repsheet_visualizer/application/public/js/plugins/fileupload/bootstrap-fileupload.css +132 -0
  90. data/lib/repsheet_visualizer/application/public/js/plugins/fileupload/bootstrap-fileupload.js +169 -0
  91. data/lib/repsheet_visualizer/application/public/js/plugins/fileupload/bootstrap-fileupload.min.css +31 -0
  92. data/lib/repsheet_visualizer/application/public/js/plugins/fileupload/bootstrap-fileupload.min.js +7 -0
  93. data/lib/repsheet_visualizer/application/public/js/plugins/flot/jquery.flot.js +2599 -0
  94. data/lib/repsheet_visualizer/application/public/js/plugins/flot/jquery.flot.orderBars.js +186 -0
  95. data/lib/repsheet_visualizer/application/public/js/plugins/flot/jquery.flot.pie.js +750 -0
  96. data/lib/repsheet_visualizer/application/public/js/plugins/flot/jquery.flot.resize.js +57 -0
  97. data/lib/repsheet_visualizer/application/public/js/plugins/flot/jquery.flot.stack.js +184 -0
  98. data/lib/repsheet_visualizer/application/public/js/plugins/flot/jquery.flot.tooltip.min.js +14 -0
  99. data/lib/repsheet_visualizer/application/public/js/plugins/fullcalendar/fullcalendar.css +589 -0
  100. data/lib/repsheet_visualizer/application/public/js/plugins/fullcalendar/fullcalendar.js +6110 -0
  101. data/lib/repsheet_visualizer/application/public/js/plugins/fullcalendar/fullcalendar.min.js +7 -0
  102. data/lib/repsheet_visualizer/application/public/js/plugins/fullcalendar/fullcalendar.print.css +32 -0
  103. data/lib/repsheet_visualizer/application/public/js/plugins/fullcalendar/gcal.js +107 -0
  104. data/lib/repsheet_visualizer/application/public/js/plugins/howl/howl.js +70 -0
  105. data/lib/repsheet_visualizer/application/public/js/plugins/howl/howl.min.js +2 -0
  106. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/jquery.icheck.js +462 -0
  107. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/jquery.icheck.min.js +11 -0
  108. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/all.css +61 -0
  109. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/_all.css +540 -0
  110. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/aero.css +54 -0
  111. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/aero.png +0 -0
  112. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/aero@2x.png +0 -0
  113. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/blue.css +54 -0
  114. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/blue.png +0 -0
  115. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/blue@2x.png +0 -0
  116. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/flat.css +54 -0
  117. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/flat.png +0 -0
  118. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/flat@2x.png +0 -0
  119. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/green.css +54 -0
  120. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/green.png +0 -0
  121. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/green@2x.png +0 -0
  122. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/grey.css +54 -0
  123. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/grey.png +0 -0
  124. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/grey@2x.png +0 -0
  125. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/orange.css +54 -0
  126. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/orange.png +0 -0
  127. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/orange@2x.png +0 -0
  128. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/pink.css +54 -0
  129. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/pink.png +0 -0
  130. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/pink@2x.png +0 -0
  131. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/purple.css +54 -0
  132. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/purple.png +0 -0
  133. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/purple@2x.png +0 -0
  134. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/red.css +54 -0
  135. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/red.png +0 -0
  136. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/red@2x.png +0 -0
  137. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/yellow.css +54 -0
  138. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/yellow.png +0 -0
  139. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/flat/yellow@2x.png +0 -0
  140. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/futurico/futurico.css +54 -0
  141. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/futurico/futurico.png +0 -0
  142. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/futurico/futurico@2x.png +0 -0
  143. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/line/_all.css +740 -0
  144. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/line/aero.css +74 -0
  145. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/line/blue.css +74 -0
  146. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/line/green.css +74 -0
  147. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/line/grey.css +74 -0
  148. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/line/line.css +74 -0
  149. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/line/line.png +0 -0
  150. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/line/line@2x.png +0 -0
  151. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/line/orange.css +74 -0
  152. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/line/pink.css +74 -0
  153. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/line/purple.css +74 -0
  154. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/line/red.css +74 -0
  155. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/line/yellow.css +74 -0
  156. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/_all.css +600 -0
  157. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/aero.css +60 -0
  158. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/aero.png +0 -0
  159. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/aero@2x.png +0 -0
  160. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/blue.css +60 -0
  161. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/blue.png +0 -0
  162. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/blue@2x.png +0 -0
  163. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/green.css +60 -0
  164. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/green.png +0 -0
  165. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/green@2x.png +0 -0
  166. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/grey.css +60 -0
  167. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/grey.png +0 -0
  168. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/grey@2x.png +0 -0
  169. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/minimal.css +60 -0
  170. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/minimal.png +0 -0
  171. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/minimal@2x.png +0 -0
  172. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/orange.css +60 -0
  173. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/orange.png +0 -0
  174. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/orange@2x.png +0 -0
  175. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/pink.css +60 -0
  176. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/pink.png +0 -0
  177. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/pink@2x.png +0 -0
  178. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/purple.css +60 -0
  179. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/purple.png +0 -0
  180. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/purple@2x.png +0 -0
  181. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/red.css +60 -0
  182. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/red.png +0 -0
  183. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/red@2x.png +0 -0
  184. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/yellow.css +60 -0
  185. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/yellow.png +0 -0
  186. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/minimal/yellow@2x.png +0 -0
  187. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/polaris/polaris.css +60 -0
  188. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/polaris/polaris.png +0 -0
  189. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/polaris/polaris@2x.png +0 -0
  190. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/_all.css +600 -0
  191. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/aero.css +60 -0
  192. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/aero.png +0 -0
  193. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/aero@2x.png +0 -0
  194. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/blue.css +60 -0
  195. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/blue.png +0 -0
  196. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/blue@2x.png +0 -0
  197. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/green.css +60 -0
  198. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/green.png +0 -0
  199. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/green@2x.png +0 -0
  200. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/grey.css +60 -0
  201. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/grey.png +0 -0
  202. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/grey@2x.png +0 -0
  203. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/orange.css +60 -0
  204. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/orange.png +0 -0
  205. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/orange@2x.png +0 -0
  206. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/pink.css +60 -0
  207. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/pink.png +0 -0
  208. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/pink@2x.png +0 -0
  209. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/purple.css +60 -0
  210. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/purple.png +0 -0
  211. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/purple@2x.png +0 -0
  212. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/red.css +60 -0
  213. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/red.png +0 -0
  214. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/red@2x.png +0 -0
  215. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/square.css +60 -0
  216. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/square.png +0 -0
  217. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/square@2x.png +0 -0
  218. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/yellow.css +60 -0
  219. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/yellow.png +0 -0
  220. data/lib/repsheet_visualizer/application/public/js/plugins/icheck/skins/square/yellow@2x.png +0 -0
  221. data/lib/repsheet_visualizer/application/public/js/plugins/magnific/jquery.magnific-popup.js +2026 -0
  222. data/lib/repsheet_visualizer/application/public/js/plugins/magnific/jquery.magnific-popup.min.js +4 -0
  223. data/lib/repsheet_visualizer/application/public/js/plugins/magnific/magnific-popup.css +396 -0
  224. data/lib/repsheet_visualizer/application/public/js/plugins/morris/morris.css +1 -0
  225. data/lib/repsheet_visualizer/application/public/js/plugins/morris/morris.min.js +1 -0
  226. data/lib/repsheet_visualizer/application/public/js/plugins/parsley/parsley.js +1363 -0
  227. data/lib/repsheet_visualizer/application/public/js/plugins/select2/select2-spinner.gif +0 -0
  228. data/lib/repsheet_visualizer/application/public/js/plugins/select2/select2.css +615 -0
  229. data/lib/repsheet_visualizer/application/public/js/plugins/select2/select2.js +3217 -0
  230. data/lib/repsheet_visualizer/application/public/js/plugins/select2/select2.min.js +22 -0
  231. data/lib/repsheet_visualizer/application/public/js/plugins/select2/select2.png +0 -0
  232. data/lib/repsheet_visualizer/application/public/js/plugins/select2/select2x2.png +0 -0
  233. data/lib/repsheet_visualizer/application/public/js/plugins/simplecolorpicker/jquery.simplecolorpicker.css +98 -0
  234. data/lib/repsheet_visualizer/application/public/js/plugins/simplecolorpicker/jquery.simplecolorpicker.js +211 -0
  235. data/lib/repsheet_visualizer/application/public/js/plugins/sparkline/jquery.sparkline.min.js +5 -0
  236. data/lib/repsheet_visualizer/application/public/js/plugins/tableCheckable/jquery.tableCheckable.js +122 -0
  237. data/lib/repsheet_visualizer/application/public/js/plugins/textarea-counter/jquery.textarea-counter.js +163 -0
  238. data/lib/repsheet_visualizer/application/public/js/plugins/timepicker/bootstrap-timepicker.css +121 -0
  239. data/lib/repsheet_visualizer/application/public/js/plugins/timepicker/bootstrap-timepicker.js +893 -0
  240. data/lib/repsheet_visualizer/application/public/stylesheets/App.css +3436 -0
  241. data/lib/repsheet_visualizer/application/public/stylesheets/Login.css +88 -0
  242. data/lib/repsheet_visualizer/application/public/stylesheets/bootstrap.min.css +9 -0
  243. data/lib/repsheet_visualizer/application/public/stylesheets/custom.css +0 -0
  244. data/lib/repsheet_visualizer/application/public/stylesheets/font-awesome.min.css +395 -0
  245. data/lib/repsheet_visualizer/application/views/actor.erb +169 -0
  246. data/lib/repsheet_visualizer/application/views/blacklist.erb +105 -0
  247. data/lib/repsheet_visualizer/application/views/index.erb +188 -0
  248. data/lib/repsheet_visualizer/application/views/layout.erb +73 -0
  249. data/lib/repsheet_visualizer/application/views/suspects.erb +105 -0
  250. data/lib/repsheet_visualizer/application/views/whitelist.erb +90 -78
  251. data/lib/repsheet_visualizer/application/views/worldview.erb +84 -78
  252. data/lib/repsheet_visualizer/version.rb +1 -1
  253. data/redesign/404.html +446 -0
  254. data/redesign/500.html +453 -0
  255. data/redesign/actor.html +237 -0
  256. data/redesign/blacklist.html +274 -0
  257. data/redesign/css/App.css +3436 -0
  258. data/redesign/css/Login.css +88 -0
  259. data/redesign/css/bootstrap.min.css +9 -0
  260. data/redesign/css/custom.css +0 -0
  261. data/redesign/css/font-awesome.min.css +395 -0
  262. data/redesign/fonts/FontAwesome.otf +0 -0
  263. data/redesign/fonts/fontawesome-webfont.eot +0 -0
  264. data/redesign/fonts/fontawesome-webfont.svg +414 -0
  265. data/redesign/fonts/fontawesome-webfont.ttf +0 -0
  266. data/redesign/fonts/fontawesome-webfont.woff +0 -0
  267. data/redesign/fonts/glyphicons-halflings-regular.eot +0 -0
  268. data/redesign/fonts/glyphicons-halflings-regular.svg +228 -0
  269. data/redesign/fonts/glyphicons-halflings-regular.ttf +0 -0
  270. data/redesign/fonts/glyphicons-halflings-regular.woff +0 -0
  271. data/redesign/img/jquery/handle-vertical.png +0 -0
  272. data/redesign/img/jquery/handle.png +0 -0
  273. data/redesign/img/layout/sidebar-bg.png +0 -0
  274. data/redesign/img/loaders/ajax-loader.gif +0 -0
  275. data/redesign/img/photos/map.png +0 -0
  276. data/redesign/index.html +333 -0
  277. data/redesign/js/App.js +372 -0
  278. data/redesign/js/Login.js +17 -0
  279. data/redesign/js/demos/buttons.js +7 -0
  280. data/redesign/js/demos/calendar.js +142 -0
  281. data/redesign/js/demos/charts/flot/area.js +73 -0
  282. data/redesign/js/demos/charts/flot/chart1.js +77 -0
  283. data/redesign/js/demos/charts/flot/chart2.js +70 -0
  284. data/redesign/js/demos/charts/flot/chart3.js +71 -0
  285. data/redesign/js/demos/charts/flot/chart4.js +69 -0
  286. data/redesign/js/demos/charts/flot/donut.js +49 -0
  287. data/redesign/js/demos/charts/flot/horizontal.js +56 -0
  288. data/redesign/js/demos/charts/flot/line.js +76 -0
  289. data/redesign/js/demos/charts/flot/pie.js +50 -0
  290. data/redesign/js/demos/charts/flot/scatter.js +62 -0
  291. data/redesign/js/demos/charts/flot/stacked-area.js +86 -0
  292. data/redesign/js/demos/charts/flot/stacked-horizontal.js +60 -0
  293. data/redesign/js/demos/charts/flot/stacked-vertical.js +75 -0
  294. data/redesign/js/demos/charts/flot/vertical.js +70 -0
  295. data/redesign/js/demos/charts/morris/area.js +28 -0
  296. data/redesign/js/demos/charts/morris/bar.js +29 -0
  297. data/redesign/js/demos/charts/morris/donut.js +26 -0
  298. data/redesign/js/demos/charts/morris/line.js +30 -0
  299. data/redesign/js/demos/dashboard.js +26 -0
  300. data/redesign/js/demos/form-extended.js +61 -0
  301. data/redesign/js/demos/popups.js +16 -0
  302. data/redesign/js/demos/pricing.js +10 -0
  303. data/redesign/js/demos/sliders.js +77 -0
  304. data/redesign/js/libs/bootstrap.js +1999 -0
  305. data/redesign/js/libs/bootstrap.min.js +6 -0
  306. data/redesign/js/libs/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  307. data/redesign/js/libs/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  308. data/redesign/js/libs/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  309. data/redesign/js/libs/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  310. data/redesign/js/libs/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  311. data/redesign/js/libs/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  312. data/redesign/js/libs/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  313. data/redesign/js/libs/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  314. data/redesign/js/libs/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  315. data/redesign/js/libs/css/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  316. data/redesign/js/libs/css/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  317. data/redesign/js/libs/css/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  318. data/redesign/js/libs/css/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  319. data/redesign/js/libs/css/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  320. data/redesign/js/libs/css/ui-lightness/jquery-ui-1.9.2.custom.css +294 -0
  321. data/redesign/js/libs/css/ui-lightness/jquery-ui-1.9.2.custom.min.css +7 -0
  322. data/redesign/js/libs/jquery-1.9.1.min.js +5 -0
  323. data/redesign/js/libs/jquery-ui-1.9.2.custom.min.js +6 -0
  324. data/redesign/js/libs/jquery.min.map +1 -0
  325. data/redesign/js/libs/raphael-2.1.2.min.js +11 -0
  326. data/redesign/js/plugins/autosize/jquery.autosize.min.js +7 -0
  327. data/redesign/js/plugins/datatables/DT_bootstrap.js +148 -0
  328. data/redesign/js/plugins/datatables/img/Sorting icons.psd +0 -0
  329. data/redesign/js/plugins/datatables/img/back_disabled.png +0 -0
  330. data/redesign/js/plugins/datatables/img/back_enabled.png +0 -0
  331. data/redesign/js/plugins/datatables/img/back_enabled_hover.png +0 -0
  332. data/redesign/js/plugins/datatables/img/datatable-row-openclose.png +0 -0
  333. data/redesign/js/plugins/datatables/img/favicon.ico +0 -0
  334. data/redesign/js/plugins/datatables/img/forward_disabled.png +0 -0
  335. data/redesign/js/plugins/datatables/img/forward_enabled.png +0 -0
  336. data/redesign/js/plugins/datatables/img/forward_enabled_hover.png +0 -0
  337. data/redesign/js/plugins/datatables/img/sort_asc.png +0 -0
  338. data/redesign/js/plugins/datatables/img/sort_asc_disabled.png +0 -0
  339. data/redesign/js/plugins/datatables/img/sort_both.png +0 -0
  340. data/redesign/js/plugins/datatables/img/sort_desc.png +0 -0
  341. data/redesign/js/plugins/datatables/img/sort_desc_disabled.png +0 -0
  342. data/redesign/js/plugins/datatables/jquery.dataTables.min.js +155 -0
  343. data/redesign/js/plugins/datepicker/bootstrap-datepicker.js +1258 -0
  344. data/redesign/js/plugins/datepicker/datepicker.css +481 -0
  345. data/redesign/js/plugins/datepicker/less/datepicker.less +122 -0
  346. data/redesign/js/plugins/fileupload/bootstrap-fileupload.css +132 -0
  347. data/redesign/js/plugins/fileupload/bootstrap-fileupload.js +169 -0
  348. data/redesign/js/plugins/fileupload/bootstrap-fileupload.min.css +31 -0
  349. data/redesign/js/plugins/fileupload/bootstrap-fileupload.min.js +7 -0
  350. data/redesign/js/plugins/flot/jquery.flot.js +2599 -0
  351. data/redesign/js/plugins/flot/jquery.flot.orderBars.js +186 -0
  352. data/redesign/js/plugins/flot/jquery.flot.pie.js +750 -0
  353. data/redesign/js/plugins/flot/jquery.flot.resize.js +57 -0
  354. data/redesign/js/plugins/flot/jquery.flot.stack.js +184 -0
  355. data/redesign/js/plugins/flot/jquery.flot.tooltip.min.js +14 -0
  356. data/redesign/js/plugins/fullcalendar/fullcalendar.css +589 -0
  357. data/redesign/js/plugins/fullcalendar/fullcalendar.js +6110 -0
  358. data/redesign/js/plugins/fullcalendar/fullcalendar.min.js +7 -0
  359. data/redesign/js/plugins/fullcalendar/fullcalendar.print.css +32 -0
  360. data/redesign/js/plugins/fullcalendar/gcal.js +107 -0
  361. data/redesign/js/plugins/howl/howl.js +70 -0
  362. data/redesign/js/plugins/howl/howl.min.js +2 -0
  363. data/redesign/js/plugins/icheck/jquery.icheck.js +462 -0
  364. data/redesign/js/plugins/icheck/jquery.icheck.min.js +11 -0
  365. data/redesign/js/plugins/icheck/skins/all.css +61 -0
  366. data/redesign/js/plugins/icheck/skins/flat/_all.css +540 -0
  367. data/redesign/js/plugins/icheck/skins/flat/aero.css +54 -0
  368. data/redesign/js/plugins/icheck/skins/flat/aero.png +0 -0
  369. data/redesign/js/plugins/icheck/skins/flat/aero@2x.png +0 -0
  370. data/redesign/js/plugins/icheck/skins/flat/blue.css +54 -0
  371. data/redesign/js/plugins/icheck/skins/flat/blue.png +0 -0
  372. data/redesign/js/plugins/icheck/skins/flat/blue@2x.png +0 -0
  373. data/redesign/js/plugins/icheck/skins/flat/flat.css +54 -0
  374. data/redesign/js/plugins/icheck/skins/flat/flat.png +0 -0
  375. data/redesign/js/plugins/icheck/skins/flat/flat@2x.png +0 -0
  376. data/redesign/js/plugins/icheck/skins/flat/green.css +54 -0
  377. data/redesign/js/plugins/icheck/skins/flat/green.png +0 -0
  378. data/redesign/js/plugins/icheck/skins/flat/green@2x.png +0 -0
  379. data/redesign/js/plugins/icheck/skins/flat/grey.css +54 -0
  380. data/redesign/js/plugins/icheck/skins/flat/grey.png +0 -0
  381. data/redesign/js/plugins/icheck/skins/flat/grey@2x.png +0 -0
  382. data/redesign/js/plugins/icheck/skins/flat/orange.css +54 -0
  383. data/redesign/js/plugins/icheck/skins/flat/orange.png +0 -0
  384. data/redesign/js/plugins/icheck/skins/flat/orange@2x.png +0 -0
  385. data/redesign/js/plugins/icheck/skins/flat/pink.css +54 -0
  386. data/redesign/js/plugins/icheck/skins/flat/pink.png +0 -0
  387. data/redesign/js/plugins/icheck/skins/flat/pink@2x.png +0 -0
  388. data/redesign/js/plugins/icheck/skins/flat/purple.css +54 -0
  389. data/redesign/js/plugins/icheck/skins/flat/purple.png +0 -0
  390. data/redesign/js/plugins/icheck/skins/flat/purple@2x.png +0 -0
  391. data/redesign/js/plugins/icheck/skins/flat/red.css +54 -0
  392. data/redesign/js/plugins/icheck/skins/flat/red.png +0 -0
  393. data/redesign/js/plugins/icheck/skins/flat/red@2x.png +0 -0
  394. data/redesign/js/plugins/icheck/skins/flat/yellow.css +54 -0
  395. data/redesign/js/plugins/icheck/skins/flat/yellow.png +0 -0
  396. data/redesign/js/plugins/icheck/skins/flat/yellow@2x.png +0 -0
  397. data/redesign/js/plugins/icheck/skins/futurico/futurico.css +54 -0
  398. data/redesign/js/plugins/icheck/skins/futurico/futurico.png +0 -0
  399. data/redesign/js/plugins/icheck/skins/futurico/futurico@2x.png +0 -0
  400. data/redesign/js/plugins/icheck/skins/line/_all.css +740 -0
  401. data/redesign/js/plugins/icheck/skins/line/aero.css +74 -0
  402. data/redesign/js/plugins/icheck/skins/line/blue.css +74 -0
  403. data/redesign/js/plugins/icheck/skins/line/green.css +74 -0
  404. data/redesign/js/plugins/icheck/skins/line/grey.css +74 -0
  405. data/redesign/js/plugins/icheck/skins/line/line.css +74 -0
  406. data/redesign/js/plugins/icheck/skins/line/line.png +0 -0
  407. data/redesign/js/plugins/icheck/skins/line/line@2x.png +0 -0
  408. data/redesign/js/plugins/icheck/skins/line/orange.css +74 -0
  409. data/redesign/js/plugins/icheck/skins/line/pink.css +74 -0
  410. data/redesign/js/plugins/icheck/skins/line/purple.css +74 -0
  411. data/redesign/js/plugins/icheck/skins/line/red.css +74 -0
  412. data/redesign/js/plugins/icheck/skins/line/yellow.css +74 -0
  413. data/redesign/js/plugins/icheck/skins/minimal/_all.css +600 -0
  414. data/redesign/js/plugins/icheck/skins/minimal/aero.css +60 -0
  415. data/redesign/js/plugins/icheck/skins/minimal/aero.png +0 -0
  416. data/redesign/js/plugins/icheck/skins/minimal/aero@2x.png +0 -0
  417. data/redesign/js/plugins/icheck/skins/minimal/blue.css +60 -0
  418. data/redesign/js/plugins/icheck/skins/minimal/blue.png +0 -0
  419. data/redesign/js/plugins/icheck/skins/minimal/blue@2x.png +0 -0
  420. data/redesign/js/plugins/icheck/skins/minimal/green.css +60 -0
  421. data/redesign/js/plugins/icheck/skins/minimal/green.png +0 -0
  422. data/redesign/js/plugins/icheck/skins/minimal/green@2x.png +0 -0
  423. data/redesign/js/plugins/icheck/skins/minimal/grey.css +60 -0
  424. data/redesign/js/plugins/icheck/skins/minimal/grey.png +0 -0
  425. data/redesign/js/plugins/icheck/skins/minimal/grey@2x.png +0 -0
  426. data/redesign/js/plugins/icheck/skins/minimal/minimal.css +60 -0
  427. data/redesign/js/plugins/icheck/skins/minimal/minimal.png +0 -0
  428. data/redesign/js/plugins/icheck/skins/minimal/minimal@2x.png +0 -0
  429. data/redesign/js/plugins/icheck/skins/minimal/orange.css +60 -0
  430. data/redesign/js/plugins/icheck/skins/minimal/orange.png +0 -0
  431. data/redesign/js/plugins/icheck/skins/minimal/orange@2x.png +0 -0
  432. data/redesign/js/plugins/icheck/skins/minimal/pink.css +60 -0
  433. data/redesign/js/plugins/icheck/skins/minimal/pink.png +0 -0
  434. data/redesign/js/plugins/icheck/skins/minimal/pink@2x.png +0 -0
  435. data/redesign/js/plugins/icheck/skins/minimal/purple.css +60 -0
  436. data/redesign/js/plugins/icheck/skins/minimal/purple.png +0 -0
  437. data/redesign/js/plugins/icheck/skins/minimal/purple@2x.png +0 -0
  438. data/redesign/js/plugins/icheck/skins/minimal/red.css +60 -0
  439. data/redesign/js/plugins/icheck/skins/minimal/red.png +0 -0
  440. data/redesign/js/plugins/icheck/skins/minimal/red@2x.png +0 -0
  441. data/redesign/js/plugins/icheck/skins/minimal/yellow.css +60 -0
  442. data/redesign/js/plugins/icheck/skins/minimal/yellow.png +0 -0
  443. data/redesign/js/plugins/icheck/skins/minimal/yellow@2x.png +0 -0
  444. data/redesign/js/plugins/icheck/skins/polaris/polaris.css +60 -0
  445. data/redesign/js/plugins/icheck/skins/polaris/polaris.png +0 -0
  446. data/redesign/js/plugins/icheck/skins/polaris/polaris@2x.png +0 -0
  447. data/redesign/js/plugins/icheck/skins/square/_all.css +600 -0
  448. data/redesign/js/plugins/icheck/skins/square/aero.css +60 -0
  449. data/redesign/js/plugins/icheck/skins/square/aero.png +0 -0
  450. data/redesign/js/plugins/icheck/skins/square/aero@2x.png +0 -0
  451. data/redesign/js/plugins/icheck/skins/square/blue.css +60 -0
  452. data/redesign/js/plugins/icheck/skins/square/blue.png +0 -0
  453. data/redesign/js/plugins/icheck/skins/square/blue@2x.png +0 -0
  454. data/redesign/js/plugins/icheck/skins/square/green.css +60 -0
  455. data/redesign/js/plugins/icheck/skins/square/green.png +0 -0
  456. data/redesign/js/plugins/icheck/skins/square/green@2x.png +0 -0
  457. data/redesign/js/plugins/icheck/skins/square/grey.css +60 -0
  458. data/redesign/js/plugins/icheck/skins/square/grey.png +0 -0
  459. data/redesign/js/plugins/icheck/skins/square/grey@2x.png +0 -0
  460. data/redesign/js/plugins/icheck/skins/square/orange.css +60 -0
  461. data/redesign/js/plugins/icheck/skins/square/orange.png +0 -0
  462. data/redesign/js/plugins/icheck/skins/square/orange@2x.png +0 -0
  463. data/redesign/js/plugins/icheck/skins/square/pink.css +60 -0
  464. data/redesign/js/plugins/icheck/skins/square/pink.png +0 -0
  465. data/redesign/js/plugins/icheck/skins/square/pink@2x.png +0 -0
  466. data/redesign/js/plugins/icheck/skins/square/purple.css +60 -0
  467. data/redesign/js/plugins/icheck/skins/square/purple.png +0 -0
  468. data/redesign/js/plugins/icheck/skins/square/purple@2x.png +0 -0
  469. data/redesign/js/plugins/icheck/skins/square/red.css +60 -0
  470. data/redesign/js/plugins/icheck/skins/square/red.png +0 -0
  471. data/redesign/js/plugins/icheck/skins/square/red@2x.png +0 -0
  472. data/redesign/js/plugins/icheck/skins/square/square.css +60 -0
  473. data/redesign/js/plugins/icheck/skins/square/square.png +0 -0
  474. data/redesign/js/plugins/icheck/skins/square/square@2x.png +0 -0
  475. data/redesign/js/plugins/icheck/skins/square/yellow.css +60 -0
  476. data/redesign/js/plugins/icheck/skins/square/yellow.png +0 -0
  477. data/redesign/js/plugins/icheck/skins/square/yellow@2x.png +0 -0
  478. data/redesign/js/plugins/magnific/jquery.magnific-popup.js +2026 -0
  479. data/redesign/js/plugins/magnific/jquery.magnific-popup.min.js +4 -0
  480. data/redesign/js/plugins/magnific/magnific-popup.css +396 -0
  481. data/redesign/js/plugins/morris/morris.css +1 -0
  482. data/redesign/js/plugins/morris/morris.min.js +1 -0
  483. data/redesign/js/plugins/parsley/parsley.js +1363 -0
  484. data/redesign/js/plugins/select2/select2-spinner.gif +0 -0
  485. data/redesign/js/plugins/select2/select2.css +615 -0
  486. data/redesign/js/plugins/select2/select2.js +3217 -0
  487. data/redesign/js/plugins/select2/select2.min.js +22 -0
  488. data/redesign/js/plugins/select2/select2.png +0 -0
  489. data/redesign/js/plugins/select2/select2x2.png +0 -0
  490. data/redesign/js/plugins/simplecolorpicker/jquery.simplecolorpicker.css +98 -0
  491. data/redesign/js/plugins/simplecolorpicker/jquery.simplecolorpicker.js +211 -0
  492. data/redesign/js/plugins/sparkline/jquery.sparkline.min.js +5 -0
  493. data/redesign/js/plugins/tableCheckable/jquery.tableCheckable.js +122 -0
  494. data/redesign/js/plugins/textarea-counter/jquery.textarea-counter.js +163 -0
  495. data/redesign/js/plugins/timepicker/bootstrap-timepicker.css +121 -0
  496. data/redesign/js/plugins/timepicker/bootstrap-timepicker.js +893 -0
  497. data/redesign/page-blank.html +417 -0
  498. data/redesign/suspects.html +273 -0
  499. data/redesign/whitelist.html +273 -0
  500. data/repsheet_visualizer.gemspec +1 -0
  501. data/script/fill +2 -0
  502. metadata +508 -5
  503. data/lib/repsheet_visualizer/application/views/activity.erb +0 -74
  504. data/lib/repsheet_visualizer/application/views/actors.erb +0 -130
Binary file
Binary file
Binary file
@@ -0,0 +1,333 @@
1
+ <!DOCTYPE html>
2
+ <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
3
+ <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
4
+ <!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
5
+ <!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
6
+ <head>
7
+ <title>Repsheet::Visualizer</title>
8
+ <meta charset="utf-8">
9
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
10
+ <meta name="description" content="">
11
+ <meta name="author" content="Aaron Bedra" />
12
+
13
+ <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,800italic,400,600,800" type="text/css">
14
+
15
+ <link rel="stylesheet" href="./css/font-awesome.min.css" type="text/css" />
16
+ <link rel="stylesheet" href="./css/bootstrap.min.css" type="text/css" />
17
+ <link rel="stylesheet" href="./js/libs/css/ui-lightness/jquery-ui-1.9.2.custom.css" type="text/css" />
18
+
19
+ <link rel="stylesheet" href="./js/plugins/icheck/skins/minimal/blue.css" type="text/css" />
20
+ <link rel="stylesheet" href="./js/plugins/select2/select2.css" type="text/css" />
21
+ <link rel="stylesheet" href="./js/plugins/fullcalendar/fullcalendar.css" type="text/css" />
22
+
23
+ <link rel="stylesheet" href="./css/App.css" type="text/css" />
24
+ <link rel="stylesheet" href="./css/custom.css" type="text/css" />
25
+ <style>
26
+ #header {
27
+ padding-top: 20px;
28
+ padding-left: 10px;
29
+ }
30
+
31
+ h3.logo-head {
32
+ color: white;
33
+ }
34
+ </style>
35
+ </head>
36
+ <body>
37
+
38
+ <div id="wrapper">
39
+ <header id="header">
40
+ <a href="index.html" style="text-decoration:none;">
41
+ <h3 class="logo-head">Repsheet Visualizer</h2>
42
+ </a>
43
+
44
+ <a href="javascript:;" data-toggle="collapse" data-target=".top-bar-collapse" id="top-bar-toggle" class="navbar-toggle collapsed">
45
+ <i class="fa fa-cog"></i>
46
+ </a>
47
+
48
+ <a href="javascript:;" data-toggle="collapse" data-target=".sidebar-collapse" id="sidebar-toggle" class="navbar-toggle collapsed">
49
+ <i class="fa fa-reorder"></i>
50
+ </a>
51
+ </header>
52
+
53
+ <nav id="top-bar" class="collapse top-bar-collapse">
54
+ <ul class="nav navbar-nav pull-left">
55
+ <li class="">
56
+ <a href="./index.html">
57
+ <i class="fa fa-home"></i>
58
+ Home
59
+ </a>
60
+ </li>
61
+ </ul>
62
+ </nav>
63
+
64
+ <div id="sidebar-wrapper" class="collapse sidebar-collapse">
65
+ <div id="search">
66
+ <form>
67
+ <input class="form-control input-sm" type="text" name="search" placeholder="Search..." />
68
+ <button type="submit" id="search-btn" class="btn"><i class="fa fa-search"></i></button>
69
+ </form>
70
+ </div>
71
+
72
+ <nav id="sidebar">
73
+ <ul id="main-nav" class="open-active">
74
+ <li class="active">
75
+ <a href="./index.html">
76
+ <i class="fa fa-dashboard"></i>
77
+ Dashboard
78
+ </a>
79
+ </li>
80
+
81
+ <li>
82
+ <a href="blacklist.html">
83
+ <i class="fa fa-ban"></i>
84
+ Blacklist
85
+ </a>
86
+ </li>
87
+
88
+ <li>
89
+ <a href="suspects.html">
90
+ <i class="fa fa-gavel"></i>
91
+ Suspects
92
+ </a>
93
+ </li>
94
+
95
+ <li>
96
+ <a href="whitelist.html">
97
+ <i class="fa fa-thumbs-o-up"></i>
98
+ Whitelist
99
+ </a>
100
+ </li>
101
+
102
+ <li>
103
+ <a href="javascript:;">
104
+ <i class="fa fa-bar-chart-o"></i>
105
+ ModSecurity Analysis
106
+ </a>
107
+ </li>
108
+
109
+ <li>
110
+ <a href="javascript:;">
111
+ <i class="fa fa-globe"></i>
112
+ World View
113
+ </a>
114
+ </li>
115
+ </ul>
116
+ </nav> <!-- #sidebar -->
117
+ </div> <!-- /#sidebar-wrapper -->
118
+
119
+ <div id="content">
120
+ <div id="content-header">
121
+ <h1>Dashboard</h1>
122
+ </div>
123
+
124
+ <div id="content-container">
125
+ <div>
126
+ <h4 class="heading-inline">Daily Stats</h4>
127
+ </div>
128
+
129
+ <br />
130
+
131
+ <div class="row">
132
+ <div class="col-md-3 col-sm-6">
133
+ <a href="blacklist.html" class="dashboard-stat primary">
134
+ <div class="details">
135
+ <span class="content">Blacklisted Actors</span>
136
+ <span class="value">27</span>
137
+ </div>
138
+
139
+ <i class="fa fa-play-circle more"></i>
140
+ </a>
141
+ </div>
142
+
143
+ <div class="col-md-3 col-sm-6">
144
+ <a href="suspects.html" class="dashboard-stat secondary">
145
+ <div class="details">
146
+ <span class="content">Suspect Actors</span>
147
+ <span class="value">94</span>
148
+ </div>
149
+
150
+ <i class="fa fa-play-circle more"></i>
151
+ </a>
152
+ </div>
153
+
154
+ <div class="col-md-3 col-sm-6">
155
+ <a href="whitelist.html" class="dashboard-stat tertiary">
156
+ <div class="details">
157
+ <span class="content">Whitelisted Actors</span>
158
+ <span class="value">10</span>
159
+ </div>
160
+
161
+ <i class="fa fa-play-circle more"></i>
162
+ </a>
163
+ </div>
164
+
165
+ <div class="col-md-3 col-sm-6">
166
+ <a href="javascript:;" class="dashboard-stat">
167
+ <div class="details">
168
+ <span class="content">Blacklist Total</span>
169
+ <span class="value">2,789</span>
170
+ </div>
171
+ </a>
172
+ </div>
173
+ </div>
174
+
175
+ <div class="row">
176
+ <div class="col-md-12">
177
+ <div class="portlet">
178
+ <div class="portlet-header">
179
+ <h3>
180
+ <i class="fa fa-bar-chart-o"></i>
181
+ Activity
182
+ </h3>
183
+ </div>
184
+
185
+ <div class="portlet-content">
186
+ <div id="area-chart" class="chart-holder" style="height: 250px"></div>
187
+ </div>
188
+ </div>
189
+
190
+ <div class="row">
191
+ <div class="col-md-6">
192
+ <div class="portlet">
193
+ <div class="portlet-header">
194
+ <h3>Top 10 Suspect Actors</h3>
195
+ </div>
196
+
197
+ <div class="portlet-content">
198
+ <div class="table-responsive">
199
+ <table class="table">
200
+ <thead>
201
+ <tr>
202
+ <th>IP Address</th>
203
+ <th>Offenses</th>
204
+ <th>Requests</th>
205
+ </tr>
206
+ </thead>
207
+ <tbody>
208
+ <tr>
209
+ <td>27.156.98.127</td>
210
+ <td>31</td>
211
+ <td>200</td>
212
+ <td><a href="actor.html" class="btn btn-xs btn-tertiary">View &nbsp;&nbsp;<i class="fa fa-chevron-right"></i></a></td>
213
+ </tr>
214
+ <tr>
215
+ <td>124.128.236.189</td>
216
+ <td>28</td>
217
+ <td>200</td>
218
+ <td><a href="actor.html" class="btn btn-xs btn-tertiary">View &nbsp;&nbsp;<i class="fa fa-chevron-right"></i></a></td>
219
+ </tr>
220
+ <tr>
221
+ <td>182.236.163.6</td>
222
+ <td>26</td>
223
+ <td>200</td>
224
+ <td><a href="actor.html" class="btn btn-xs btn-tertiary">View &nbsp;&nbsp;<i class="fa fa-chevron-right"></i></a></td>
225
+ </tr>
226
+ <tr>
227
+ <td>188.143.234.90</td>
228
+ <td>20</td>
229
+ <td>200</td>
230
+ <td><a href="actor.html" class="btn btn-xs btn-tertiary">View &nbsp;&nbsp;<i class="fa fa-chevron-right"></i></a></td>
231
+ </tr>
232
+ </tbody>
233
+ </table>
234
+ </div>
235
+
236
+ <hr />
237
+
238
+ <a href="javascript:;" class="btn btn-sm btn-secondary">View All Suspect Actors</a>
239
+ </div> <!-- /.portlet-content -->
240
+ </div> <!-- /.portlet -->
241
+ </div> <!-- /.col-md-6 -->
242
+
243
+ <div class="col-md-6">
244
+ <div class="portlet">
245
+ <div class="portlet-header">
246
+ <h3>Top 10 Blacklisted Actors</h3>
247
+ </div>
248
+
249
+ <div class="portlet-content">
250
+ <div class="table-responsive">
251
+ <table class="table">
252
+ <thead>
253
+ <tr>
254
+ <th>IP Address</th>
255
+ <th>Offenses</th>
256
+ <th>Requests</th>
257
+ </tr>
258
+ </thead>
259
+ <tbody>
260
+ <tr>
261
+ <td>27.156.98.127</td>
262
+ <td>31</td>
263
+ <td>200</td>
264
+ <td><a href="actor.html" class="btn btn-xs btn-tertiary">View &nbsp;&nbsp;<i class="fa fa-chevron-right"></i></a></td>
265
+ </tr>
266
+ <tr>
267
+ <td>124.128.236.189</td>
268
+ <td>28</td>
269
+ <td>200</td>
270
+ <td><a href="actor.html" class="btn btn-xs btn-tertiary">View &nbsp;&nbsp;<i class="fa fa-chevron-right"></i></a></td>
271
+ </tr>
272
+ <tr>
273
+ <td>182.236.163.6</td>
274
+ <td>26</td>
275
+ <td>200</td>
276
+ <td><a href="actor.html" class="btn btn-xs btn-tertiary">View &nbsp;&nbsp;<i class="fa fa-chevron-right"></i></a></td>
277
+ </tr>
278
+ <tr>
279
+ <td>188.143.234.90</td>
280
+ <td>20</td>
281
+ <td>200</td>
282
+ <td><a href="actor.html" class="btn btn-xs btn-tertiary">View &nbsp;&nbsp;<i class="fa fa-chevron-right"></i></a></td>
283
+ </tr>
284
+ </tbody>
285
+ </table>
286
+ </div>
287
+
288
+ <hr />
289
+
290
+ <a href="javascript:;" class="btn btn-sm btn-primary">View All Blacklisted Actors</a>
291
+ </div> <!-- /.portlet-content -->
292
+ </div> <!-- /.portlet -->
293
+ </div> <!-- /.col-md-6 -->
294
+ </div> <!-- /.row -->
295
+ </div> <!-- /.col-md-9 -->
296
+ </div> <!-- /.row -->
297
+ </div> <!-- /#content-container -->
298
+ </div> <!-- #content -->
299
+ </div> <!-- #wrapper -->
300
+
301
+ <footer id="footer">
302
+ <ul class="nav pull-right">
303
+ <li>
304
+ Copyright &copy; 2013, Aaron Bedra.
305
+ </li>
306
+ </ul>
307
+ </footer>
308
+
309
+ <script src="./js/libs/jquery-1.9.1.min.js"></script>
310
+ <script src="./js/libs/jquery-ui-1.9.2.custom.min.js"></script>
311
+ <script src="./js/libs/bootstrap.min.js"></script>
312
+
313
+ <script src="./js/plugins/icheck/jquery.icheck.min.js"></script>
314
+ <script src="./js/plugins/select2/select2.js"></script>
315
+ <script src="./js/plugins/tableCheckable/jquery.tableCheckable.js"></script>
316
+
317
+ <script src="./js/App.js"></script>
318
+
319
+ <script src="./js/libs/raphael-2.1.2.min.js"></script>
320
+ <script src="./js/plugins/morris/morris.min.js"></script>
321
+
322
+ <script src="./js/demos/charts/morris/area.js"></script>
323
+ <script src="./js/demos/charts/morris/donut.js"></script>
324
+
325
+ <script src="./js/plugins/sparkline/jquery.sparkline.min.js"></script>
326
+
327
+ <script src="./js/plugins/fullcalendar/fullcalendar.min.js"></script>
328
+ <script src="./js/demos/calendar.js"></script>
329
+
330
+ <script src="./js/demos/dashboard.js"></script>
331
+
332
+ </body>
333
+ </html>
@@ -0,0 +1,372 @@
1
+ var App = function () {
2
+ "use strict";
3
+
4
+ var chartColors = ['#e5412d', '#f0ad4e', '#444', '#888','#555','#999','#bbb','#ccc','#eee'];
5
+
6
+ return { init: init, chartColors: chartColors, debounce: debounce };
7
+
8
+ function init () {
9
+ initLayout ();
10
+
11
+ initICheck ();
12
+ initSelect2 ();
13
+ initTableCheckable ();
14
+
15
+ initLightbox ();
16
+ initEnhancedAccordion ();
17
+ initDataTableHelper ();
18
+
19
+ initFormValidation ();
20
+ initTooltips ();
21
+ initDatepicker ();
22
+ initTimepicker ();
23
+ initColorpicker ();
24
+ initAutosize ();
25
+
26
+ initBackToTop ();
27
+ }
28
+
29
+ function initLayout () {
30
+ $('#site-logo').prependTo ('#wrapper');
31
+ $('html').removeClass ('no-js');
32
+
33
+ Nav.init ();
34
+
35
+ $('body').on('touchstart.dropdown', '.dropdown-menu', function (e) {
36
+ e.stopPropagation();
37
+ });
38
+ }
39
+
40
+ function initTableCheckable () {
41
+ if ($.fn.tableCheckable) {
42
+ $('.table-checkable')
43
+ .tableCheckable ()
44
+ .on ('masterChecked', function (event, master, slaves) {
45
+ if ($.fn.iCheck) { $(slaves).iCheck ('update'); }
46
+ })
47
+ .on ('slaveChecked', function (event, master, slave) {
48
+ if ($.fn.iCheck) { $(master).iCheck ('update'); }
49
+ });
50
+ }
51
+ }
52
+
53
+ function initAutosize () {
54
+ if ($.fn.autosize) {
55
+ $('.ui-textarea-autosize').each(function() {
56
+ if($(this).data ('animate')) {
57
+ $(this).addClass ('autosize-animate').autosize();
58
+ } else {
59
+ $(this).autosize();
60
+ }
61
+ });
62
+ }
63
+ }
64
+
65
+ function initEnhancedAccordion () {
66
+ $('.accordion .accordion-toggle').on('click', function (e) {
67
+ $(e.target).parent ().parent ().parent ().addClass('open');
68
+ });
69
+
70
+ $('.accordion .accordion-toggle').on('click', function (e) {
71
+ $(this).parents ('.panel').siblings ().removeClass ('open');
72
+ });
73
+
74
+ $('.accordion').each (function () {
75
+ $(this).find ('.panel-collapse.in').parent ().addClass ('open');
76
+ });
77
+ }
78
+
79
+ function initFormValidation () {
80
+ if ($.fn.parsley) {
81
+ $('.parsley-form').each (function () {
82
+ console.log ($(this))
83
+ $(this).parsley ({
84
+ trigger: 'change',
85
+ errors: {
86
+ container: function (element, isRadioOrCheckbox) {
87
+ if (element.parents ('form').is ('.form-horizontal')) {
88
+ return element.parents ("*[class^='col-']");
89
+ }
90
+
91
+ return element.parents ('.form-group');
92
+ }
93
+ }
94
+ });
95
+ });
96
+ }
97
+ }
98
+
99
+ function initLightbox () {
100
+ if ($.fn.magnificPopup) {
101
+ $('.ui-lightbox').magnificPopup({
102
+ type: 'image',
103
+ closeOnContentClick: false,
104
+ closeBtnInside: true,
105
+ fixedContentPos: true,
106
+ mainClass: 'mfp-no-margins mfp-with-zoom', // class to remove default margin from left and right side
107
+ image: {
108
+ verticalFit: true,
109
+ tError: '<a href="%url%">The image #%curr%</a> could not be loaded.'
110
+ }
111
+ });
112
+
113
+ $('.ui-lightbox-video, .ui-lightbox-iframe').magnificPopup({
114
+ disableOn: 700,
115
+ type: 'iframe',
116
+ mainClass: 'mfp-fade',
117
+ removalDelay: 160,
118
+ preloader: false,
119
+ fixedContentPos: false
120
+ });
121
+
122
+ $('.ui-lightbox-gallery').magnificPopup({
123
+ delegate: 'a',
124
+ type: 'image',
125
+ tLoading: 'Loading image #%curr%...',
126
+ mainClass: 'mfp-img-mobile',
127
+ gallery: {
128
+ enabled: true,
129
+ navigateByImgClick: true,
130
+ preload: [0,1] // Will preload 0 - before current, and 1 after the current image
131
+ },
132
+ image: {
133
+ tError: '<a href="%url%">The image #%curr%</a> could not be loaded.',
134
+ titleSrc: function(item) {
135
+ return item.el.attr('title') + '<small>by Marsel Van Oosten</small>';
136
+ }
137
+ }
138
+ });
139
+ }
140
+ }
141
+
142
+ function initSelect2 () {
143
+ if ($.fn.select2) {
144
+ $('.ui-select2').select2({ allowClear: true, placeholder: "Select..." });
145
+ }
146
+ }
147
+
148
+ function initDatepicker () {
149
+ if ($.fn.datepicker) { $('.ui-datepicker').datepicker ({ autoclose: true }); }
150
+ }
151
+
152
+ function initTimepicker () {
153
+ if ($.fn.timepicker) {
154
+ var pickers = $('.ui-timepicker, .ui-timepicker-modal');
155
+
156
+ pickers.each (function () {
157
+ $(this).parent ('.input-group').addClass ('bootstrap-timepicker');
158
+
159
+ if ($(this).is ('.ui-timepicker')) {
160
+ $(this).timepicker ();
161
+ } else {
162
+ $(this).timepicker({ template: 'modal' });
163
+ }
164
+ });
165
+ }
166
+ }
167
+
168
+ function initColorpicker () {
169
+ if ($.fn.simplecolorpicker) {
170
+ $('.ui-colorpicker').each (function (i) {
171
+ var picker = $(this).data ('picker');
172
+
173
+ $(this).simplecolorpicker({
174
+ picker: picker
175
+ });
176
+ });
177
+ }
178
+ }
179
+
180
+ function initTooltips () {
181
+ if ($.fn.tooltip) { $('.ui-tooltip').tooltip (); }
182
+ if ($.fn.popover) { $('.ui-popover').popover ({ container: 'body' }); }
183
+ }
184
+
185
+ function initICheck () {
186
+ if ($.fn.iCheck) {
187
+ $('.icheck-input').iCheck({
188
+ checkboxClass: 'icheckbox_minimal-blue',
189
+ radioClass: 'iradio_minimal-blue',
190
+ inheritClass: true
191
+ }).on ('ifChanged', function (e) {
192
+ $(e.currentTarget).trigger ('change');
193
+ });
194
+ }
195
+ }
196
+
197
+ function initBackToTop () {
198
+ var backToTop = $('<a>', { id: 'back-to-top', href: '#top' });
199
+ var icon = $('<i>', { class: 'fa fa-chevron-up' });
200
+
201
+ backToTop.appendTo ('body');
202
+ icon.appendTo (backToTop);
203
+
204
+ backToTop.hide();
205
+
206
+ $(window).scroll(function () {
207
+ if ($(this).scrollTop() > 150) {
208
+ backToTop.fadeIn ();
209
+ } else {
210
+ backToTop.fadeOut ();
211
+ }
212
+ });
213
+
214
+ backToTop.click (function (e) {
215
+ e.preventDefault ();
216
+
217
+ $('body, html').animate({
218
+ scrollTop: 0
219
+ }, 600);
220
+ });
221
+ }
222
+
223
+ function initDataTableHelper () {
224
+ if ($.fn.dataTable) {
225
+ $('[data-provide="datatable"]').each (function () {
226
+ $(this).addClass ('dataTable-helper');
227
+ var defaultOptions = {
228
+ paginate: false,
229
+ search: false,
230
+ info: false,
231
+ lengthChange: false,
232
+ displayRows: 10
233
+ },
234
+ dataOptions = $(this).data (),
235
+ helperOptions = $.extend (defaultOptions, dataOptions),
236
+ $thisTable,
237
+ tableConfig = {};
238
+
239
+ tableConfig.iDisplayLength = helperOptions.displayRows;
240
+ tableConfig.bFilter = true;
241
+ tableConfig.bSort = true;
242
+ tableConfig.bPaginate = false;
243
+ tableConfig.bLengthChange = false;
244
+ tableConfig.bInfo = false;
245
+
246
+ if (helperOptions.paginate) { tableConfig.bPaginate = true; }
247
+ if (helperOptions.lengthChange) { tableConfig.bLengthChange = true; }
248
+ if (helperOptions.info) { tableConfig.bInfo = true; }
249
+ if (helperOptions.search) { $(this).parent ().removeClass ('datatable-hidesearch'); }
250
+
251
+ tableConfig.aaSorting = [];
252
+ tableConfig.aoColumns = [];
253
+
254
+ $(this).find ('thead tr th').each (function (index, value) {
255
+ var sortable = ($(this).data ('sortable') === true) ? true : false;
256
+ tableConfig.aoColumns.push ({ 'bSortable': sortable });
257
+
258
+ if ($(this).data ('direction')) {
259
+ tableConfig.aaSorting.push ([index, $(this).data ('direction')]);
260
+ }
261
+ });
262
+
263
+ // Create the datatable
264
+ $thisTable = $(this).dataTable (tableConfig);
265
+
266
+ if (!helperOptions.search) {
267
+ $thisTable.parent ().find ('.dataTables_filter').remove ();
268
+ }
269
+
270
+ var filterableCols = $thisTable.find ('thead th').filter ('[data-filterable="true"]');
271
+
272
+ if (filterableCols.length > 0) {
273
+ var columns = $thisTable.fnSettings().aoColumns,
274
+ $row, th, $col, showFilter;
275
+
276
+ $row = $('<tr>', { cls: 'dataTable-filter-row' }).appendTo ($thisTable.find ('thead'));
277
+
278
+ for (var i=0; i<columns.length; i++) {
279
+ $col = $(columns[i].nTh.outerHTML);
280
+ showFilter = ($col.data ('filterable') === true) ? 'show' : 'hide';
281
+
282
+ th = '<th class="' + $col.prop ('class') + '">';
283
+ th += '<input type="text" class="form-control input-sm ' + showFilter + '" placeholder="' + $col.text () + '">';
284
+ th += '</th>';
285
+ $row.append (th);
286
+ }
287
+
288
+ $row.find ('th').removeClass ('sorting sorting_disabled sorting_asc sorting_desc sorting_asc_disabled sorting_desc_disabled');
289
+
290
+ $thisTable.find ('thead input').keyup( function () {
291
+ $thisTable.fnFilter( this.value, $thisTable.oApi._fnVisibleToColumnIndex(
292
+ $thisTable.fnSettings(), $thisTable.find ('thead input[type=text]').index(this) ) );
293
+ });
294
+
295
+ $thisTable.addClass ('datatable-columnfilter');
296
+ }
297
+ });
298
+
299
+ $('.dataTables_filter input').prop ('placeholder', 'Search...');
300
+ }
301
+ }
302
+
303
+ function debounce (func, wait, immediate) {
304
+ var timeout, args, context, timestamp, result;
305
+ return function() {
306
+ context = this;
307
+ args = arguments;
308
+ timestamp = new Date();
309
+
310
+ var later = function() {
311
+ var last = (new Date()) - timestamp;
312
+
313
+ if (last < wait) {
314
+ timeout = setTimeout(later, wait - last);
315
+ } else {
316
+ timeout = null;
317
+ if (!immediate) result = func.apply(context, args);
318
+ }
319
+ };
320
+
321
+ var callNow = immediate && !timeout;
322
+
323
+ if (!timeout) {
324
+ timeout = setTimeout(later, wait);
325
+ }
326
+
327
+ if (callNow) result = func.apply(context, args);
328
+ return result;
329
+ };
330
+ }
331
+ }();
332
+
333
+
334
+
335
+ var Nav = function () {
336
+
337
+ return { init: init };
338
+
339
+ function init () {
340
+ var mainnav = $('#main-nav'),
341
+ openActive = mainnav.is ('.open-active'),
342
+ navActive = mainnav.find ('> .active');
343
+
344
+ mainnav.find ('> .dropdown > a').bind ('click', navClick);
345
+
346
+ if (openActive && navActive.is ('.dropdown')) {
347
+ navActive.addClass ('opened').find ('.sub-nav').show ();
348
+ }
349
+ }
350
+
351
+ function navClick (e) {
352
+ e.preventDefault ();
353
+
354
+ var li = $(this).parents ('li');
355
+
356
+ if (li.is ('.opened')) {
357
+ closeAll ();
358
+ } else {
359
+ closeAll ();
360
+ li.addClass ('opened').find ('.sub-nav').slideDown ();
361
+ }
362
+ }
363
+
364
+ function closeAll () {
365
+ $('.sub-nav').slideUp ().parents ('li').removeClass ('opened');
366
+ }
367
+ }();
368
+
369
+
370
+ $(function () {
371
+ App.init ();
372
+ });