head_start 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (302) hide show
  1. data/.gitignore +6 -0
  2. data/.rvmrc +1 -0
  3. data/Gemfile +4 -0
  4. data/README.txt +21 -0
  5. data/Rakefile +1 -0
  6. data/bin/head_start +3 -0
  7. data/head_start.gemspec +22 -0
  8. data/lib/assets/images/apple-touch-icon-114x114-precomposed.png +0 -0
  9. data/lib/assets/images/apple-touch-icon-57x57-precomposed.png +0 -0
  10. data/lib/assets/images/apple-touch-icon-72x72-precomposed.png +0 -0
  11. data/lib/assets/images/apple-touch-icon-precomposed.png +0 -0
  12. data/lib/assets/images/apple-touch-icon.png +0 -0
  13. data/lib/assets/images/favicon.ico +0 -0
  14. data/lib/assets/images/icons/buttons/geomicons/Layer_13.png +0 -0
  15. data/lib/assets/images/icons/buttons/geomicons/Layer_14.png +0 -0
  16. data/lib/assets/images/icons/buttons/geomicons/Layer_15.png +0 -0
  17. data/lib/assets/images/icons/buttons/geomicons/Layer_16.png +0 -0
  18. data/lib/assets/images/icons/buttons/geomicons/Layer_17.png +0 -0
  19. data/lib/assets/images/icons/buttons/geomicons/Layer_18.png +0 -0
  20. data/lib/assets/images/icons/buttons/geomicons/Layer_19.png +0 -0
  21. data/lib/assets/images/icons/buttons/geomicons/Layer_20.png +0 -0
  22. data/lib/assets/images/icons/buttons/geomicons/Layer_21.png +0 -0
  23. data/lib/assets/images/icons/buttons/geomicons/Layer_22.png +0 -0
  24. data/lib/assets/images/icons/buttons/geomicons/Layer_23.png +0 -0
  25. data/lib/assets/images/icons/buttons/geomicons/Layer_24.png +0 -0
  26. data/lib/assets/images/icons/buttons/geomicons/Layer_25.png +0 -0
  27. data/lib/assets/images/icons/buttons/geomicons/Layer_26.png +0 -0
  28. data/lib/assets/images/icons/buttons/geomicons/Layer_27.png +0 -0
  29. data/lib/assets/images/icons/buttons/geomicons/Layer_28.png +0 -0
  30. data/lib/assets/images/icons/buttons/geomicons/Layer_29.png +0 -0
  31. data/lib/assets/images/icons/buttons/geomicons/Layer_30.png +0 -0
  32. data/lib/assets/images/icons/buttons/geomicons/Layer_31.png +0 -0
  33. data/lib/assets/images/icons/buttons/geomicons/Layer_32.png +0 -0
  34. data/lib/assets/images/icons/buttons/geomicons/Layer_33.png +0 -0
  35. data/lib/assets/images/icons/buttons/geomicons/back.png +0 -0
  36. data/lib/assets/images/icons/buttons/geomicons/create.png +0 -0
  37. data/lib/assets/images/icons/buttons/geomicons/destroy.png +0 -0
  38. data/lib/assets/images/icons/buttons/geomicons/download.png +0 -0
  39. data/lib/assets/images/icons/buttons/geomicons/edit.png +0 -0
  40. data/lib/assets/images/icons/buttons/geomicons/index.png +0 -0
  41. data/lib/assets/images/icons/buttons/geomicons/negative.png +0 -0
  42. data/lib/assets/images/icons/buttons/geomicons/new.png +0 -0
  43. data/lib/assets/images/icons/buttons/geomicons/positive.png +0 -0
  44. data/lib/assets/images/icons/buttons/geomicons/print.png +0 -0
  45. data/lib/assets/images/icons/buttons/geomicons/show.png +0 -0
  46. data/lib/assets/images/icons/buttons/geomicons/update.png +0 -0
  47. data/lib/assets/images/icons/buttons/silk/back.png +0 -0
  48. data/lib/assets/images/icons/buttons/silk/create.png +0 -0
  49. data/lib/assets/images/icons/buttons/silk/destroy.png +0 -0
  50. data/lib/assets/images/icons/buttons/silk/download.png +0 -0
  51. data/lib/assets/images/icons/buttons/silk/edit.png +0 -0
  52. data/lib/assets/images/icons/buttons/silk/index.png +0 -0
  53. data/lib/assets/images/icons/buttons/silk/negative.png +0 -0
  54. data/lib/assets/images/icons/buttons/silk/new.png +0 -0
  55. data/lib/assets/images/icons/buttons/silk/positive.png +0 -0
  56. data/lib/assets/images/icons/buttons/silk/print.png +0 -0
  57. data/lib/assets/images/icons/buttons/silk/show.png +0 -0
  58. data/lib/assets/images/icons/buttons/silk/show2.png +0 -0
  59. data/lib/assets/images/icons/buttons/silk/update.png +0 -0
  60. data/lib/assets/images/icons/buttons/silk/useful/bullet_add.png +0 -0
  61. data/lib/assets/images/icons/buttons/silk/useful/bullet_delete.png +0 -0
  62. data/lib/assets/images/icons/buttons/silk/useful/bullet_disk.png +0 -0
  63. data/lib/assets/images/icons/buttons/silk/useful/email.png +0 -0
  64. data/lib/assets/images/icons/buttons/silk/useful/exit.png +0 -0
  65. data/lib/assets/images/icons/buttons/silk/useful/find.png +0 -0
  66. data/lib/assets/images/icons/buttons/silk/useful/help.png +0 -0
  67. data/lib/assets/images/icons/buttons/silk/useful/important.png +0 -0
  68. data/lib/assets/images/icons/buttons/silk/useful/information.png +0 -0
  69. data/lib/assets/images/icons/buttons/silk/useful/star.png +0 -0
  70. data/lib/assets/images/icons/buttons/silk/useful/stop.png +0 -0
  71. data/lib/assets/images/icons/messages/error_large.png +0 -0
  72. data/lib/assets/images/icons/messages/error_medium.png +0 -0
  73. data/lib/assets/images/icons/messages/error_small.png +0 -0
  74. data/lib/assets/images/icons/messages/notice_large.png +0 -0
  75. data/lib/assets/images/icons/messages/notice_medium.png +0 -0
  76. data/lib/assets/images/icons/messages/notice_small.png +0 -0
  77. data/lib/assets/images/icons/messages/success_large.png +0 -0
  78. data/lib/assets/images/icons/messages/success_medium.png +0 -0
  79. data/lib/assets/images/icons/messages/success_small.png +0 -0
  80. data/lib/assets/images/icons/messages/waiting_small.gif +0 -0
  81. data/lib/assets/images/icons/messages/warning_large.png +0 -0
  82. data/lib/assets/images/icons/messages/warning_medium.png +0 -0
  83. data/lib/assets/images/icons/messages/warning_small.png +0 -0
  84. data/lib/assets/images/scorpion/brownsword_logo.png +0 -0
  85. data/lib/assets/images/scorpion/datepicker/backstripes.gif +0 -0
  86. data/lib/assets/images/scorpion/datepicker/bg_header.jpg +0 -0
  87. data/lib/assets/images/scorpion/datepicker/bullet1.gif +0 -0
  88. data/lib/assets/images/scorpion/datepicker/bullet2.gif +0 -0
  89. data/lib/assets/images/scorpion/datepicker/cal.gif +0 -0
  90. data/lib/assets/images/scorpion/datepicker/gradient-e5e5e5-ffffff.gif +0 -0
  91. data/lib/assets/images/scorpion/delete.png +0 -0
  92. data/lib/assets/images/scorpion/fader.png +0 -0
  93. data/lib/assets/images/scorpion/grid.png +0 -0
  94. data/lib/assets/images/scorpion/icons/button_accept.png +0 -0
  95. data/lib/assets/images/scorpion/icons/button_back.png +0 -0
  96. data/lib/assets/images/scorpion/icons/button_complete.png +0 -0
  97. data/lib/assets/images/scorpion/icons/button_decline.png +0 -0
  98. data/lib/assets/images/scorpion/icons/button_document.png +0 -0
  99. data/lib/assets/images/scorpion/icons/button_invoice.png +0 -0
  100. data/lib/assets/images/scorpion/icons/button_photo.png +0 -0
  101. data/lib/assets/images/scorpion/icons/button_print.png +0 -0
  102. data/lib/assets/images/scorpion/icons/button_report.png +0 -0
  103. data/lib/assets/images/scorpion/icons/button_task.png +0 -0
  104. data/lib/assets/images/scorpion/icons/category_drag.png +0 -0
  105. data/lib/assets/images/scorpion/icons/document_sent.png +0 -0
  106. data/lib/assets/images/scorpion/icons/in_progress.png +0 -0
  107. data/lib/assets/images/scorpion/icons/information.png +0 -0
  108. data/lib/assets/images/scorpion/icons/job_accepted.png +0 -0
  109. data/lib/assets/images/scorpion/icons/job_completed.png +0 -0
  110. data/lib/assets/images/scorpion/icons/job_completed2.png +0 -0
  111. data/lib/assets/images/scorpion/icons/job_declined.png +0 -0
  112. data/lib/assets/images/scorpion/icons/job_unaccepted.png +0 -0
  113. data/lib/assets/images/scorpion/icons/priority1.png +0 -0
  114. data/lib/assets/images/scorpion/icons/priority2.png +0 -0
  115. data/lib/assets/images/scorpion/icons/priority3.png +0 -0
  116. data/lib/assets/images/scorpion/icons/sentby_email.png +0 -0
  117. data/lib/assets/images/scorpion/icons/sentby_fax1.png +0 -0
  118. data/lib/assets/images/scorpion/icons/sentby_fax2.png +0 -0
  119. data/lib/assets/images/scorpion/icons/sentby_fax3.png +0 -0
  120. data/lib/assets/images/scorpion/icons/sentby_portal1.png +0 -0
  121. data/lib/assets/images/scorpion/icons/sentby_portal2.png +0 -0
  122. data/lib/assets/images/scorpion/icons/sentby_portal3.png +0 -0
  123. data/lib/assets/images/scorpion/icons/sentby_post.png +0 -0
  124. data/lib/assets/images/scorpion/icons/task_priority.png +0 -0
  125. data/lib/assets/images/scorpion/indicator.gif +0 -0
  126. data/lib/assets/images/scorpion/loading.gif +0 -0
  127. data/lib/assets/images/scorpion/messaging/error_large.png +0 -0
  128. data/lib/assets/images/scorpion/messaging/error_medium.png +0 -0
  129. data/lib/assets/images/scorpion/messaging/error_small.png +0 -0
  130. data/lib/assets/images/scorpion/messaging/notice_large.png +0 -0
  131. data/lib/assets/images/scorpion/messaging/notice_medium.png +0 -0
  132. data/lib/assets/images/scorpion/messaging/notice_small.png +0 -0
  133. data/lib/assets/images/scorpion/messaging/success_large.png +0 -0
  134. data/lib/assets/images/scorpion/messaging/success_medium.png +0 -0
  135. data/lib/assets/images/scorpion/messaging/success_small.png +0 -0
  136. data/lib/assets/images/scorpion/messaging/waiting_small.gif +0 -0
  137. data/lib/assets/images/scorpion/messaging/warning_large.png +0 -0
  138. data/lib/assets/images/scorpion/messaging/warning_medium.png +0 -0
  139. data/lib/assets/images/scorpion/messaging/warning_small.png +0 -0
  140. data/lib/assets/images/scorpion/nav_button.gif +0 -0
  141. data/lib/assets/images/scorpion/nav_button_left.gif +0 -0
  142. data/lib/assets/images/scorpion/rails.png +0 -0
  143. data/lib/assets/images/scorpion/time.png +0 -0
  144. data/lib/assets/images/scorpion/web/abi.gif +0 -0
  145. data/lib/assets/images/scorpion/web/arrow1.gif +0 -0
  146. data/lib/assets/images/scorpion/web/bg.gif +0 -0
  147. data/lib/assets/images/scorpion/web/careers.gif +0 -0
  148. data/lib/assets/images/scorpion/web/company_profile.gif +0 -0
  149. data/lib/assets/images/scorpion/web/contact.gif +0 -0
  150. data/lib/assets/images/scorpion/web/content_bg.gif +0 -0
  151. data/lib/assets/images/scorpion/web/corporate_responsibility.gif +0 -0
  152. data/lib/assets/images/scorpion/web/footer_bg.gif +0 -0
  153. data/lib/assets/images/scorpion/web/general_investigations.gif +0 -0
  154. data/lib/assets/images/scorpion/web/header_bg.gif +0 -0
  155. data/lib/assets/images/scorpion/web/hr_employment_investigation.gif +0 -0
  156. data/lib/assets/images/scorpion/web/image1.jpg +0 -0
  157. data/lib/assets/images/scorpion/web/image10.jpg +0 -0
  158. data/lib/assets/images/scorpion/web/image11.jpg +0 -0
  159. data/lib/assets/images/scorpion/web/image12.jpg +0 -0
  160. data/lib/assets/images/scorpion/web/image13.jpg +0 -0
  161. data/lib/assets/images/scorpion/web/image14.jpg +0 -0
  162. data/lib/assets/images/scorpion/web/image2.jpg +0 -0
  163. data/lib/assets/images/scorpion/web/image3.jpg +0 -0
  164. data/lib/assets/images/scorpion/web/image4.jpg +0 -0
  165. data/lib/assets/images/scorpion/web/image5.jpg +0 -0
  166. data/lib/assets/images/scorpion/web/image6.jpg +0 -0
  167. data/lib/assets/images/scorpion/web/image7.jpg +0 -0
  168. data/lib/assets/images/scorpion/web/image8.jpg +0 -0
  169. data/lib/assets/images/scorpion/web/image9.jpg +0 -0
  170. data/lib/assets/images/scorpion/web/logo.gif +0 -0
  171. data/lib/assets/images/scorpion/web/logo_rcr.jpg +0 -0
  172. data/lib/assets/images/scorpion/web/logo_talksafe.gif +0 -0
  173. data/lib/assets/images/scorpion/web/mi5.gif +0 -0
  174. data/lib/assets/images/scorpion/web/navbar.gif +9 -0
  175. data/lib/assets/images/scorpion/web/navbut1.gif +0 -0
  176. data/lib/assets/images/scorpion/web/navbut2.gif +0 -0
  177. data/lib/assets/images/scorpion/web/navbut3.gif +0 -0
  178. data/lib/assets/images/scorpion/web/navbut4.gif +0 -0
  179. data/lib/assets/images/scorpion/web/navbut5.gif +0 -0
  180. data/lib/assets/images/scorpion/web/navbut6.gif +0 -0
  181. data/lib/assets/images/scorpion/web/navbut7.gif +0 -0
  182. data/lib/assets/images/scorpion/web/navbut8.gif +0 -0
  183. data/lib/assets/images/scorpion/web/payment_income_protection.gif +0 -0
  184. data/lib/assets/images/scorpion/web/pdf.gif +0 -0
  185. data/lib/assets/images/scorpion/web/press.gif +0 -0
  186. data/lib/assets/images/scorpion/web/rta_investigation.gif +0 -0
  187. data/lib/assets/images/scorpion/web/subnav_bg.gif +0 -0
  188. data/lib/assets/images/scorpion/web/surveillance.gif +0 -0
  189. data/lib/assets/images/scorpion/web/welcome.gif +0 -0
  190. data/lib/assets/images/scorpion/web/why_instruct_us.gif +0 -0
  191. data/lib/assets/images/scorpion/web-app-theme/application_edit.png +0 -0
  192. data/lib/assets/images/scorpion/web-app-theme/cross.png +0 -0
  193. data/lib/assets/images/scorpion/web-app-theme/key.png +0 -0
  194. data/lib/assets/images/scorpion/web-app-theme/tick.png +0 -0
  195. data/lib/head_start/helpers/head_start_rails_helper.rb +71 -0
  196. data/lib/head_start/version.rb +3 -0
  197. data/lib/head_start.rb +22 -0
  198. data/stylesheets/_boilerplate.scss +6 -0
  199. data/stylesheets/_jumpstart.scss +1 -0
  200. data/stylesheets/_scorpion.scss +5 -0
  201. data/stylesheets/boilerplate/_fox_form_styles.scss +353 -0
  202. data/stylesheets/boilerplate/_fox_menu_styles.scss +78 -0
  203. data/stylesheets/boilerplate/_fox_message_styles.scss +99 -0
  204. data/stylesheets/boilerplate/_fox_table_styles.scss +40 -0
  205. data/stylesheets/scorpion/_fox_message_styles.scss +78 -0
  206. data/stylesheets/scorpion/_kathleene.scss +272 -0
  207. data/stylesheets/scorpion/_web_app_theme.scss +397 -0
  208. data/templates/boilerplate/.gitignore +40 -0
  209. data/templates/boilerplate/404.html +38 -0
  210. data/templates/boilerplate/crossdomain.xml +25 -0
  211. data/templates/boilerplate/frank_setup.rb +79 -0
  212. data/templates/boilerplate/htaccess +503 -0
  213. data/templates/boilerplate/humans.txt +43 -0
  214. data/templates/boilerplate/javascripts/boilerplate.js +9 -0
  215. data/templates/boilerplate/javascripts/stand_alone/application.js +0 -0
  216. data/templates/boilerplate/layouts/_flashes.html.haml +4 -0
  217. data/templates/boilerplate/layouts/_footer.html.haml +2 -0
  218. data/templates/boilerplate/layouts/_head.html.haml +29 -0
  219. data/templates/boilerplate/layouts/_header.html.haml +1 -0
  220. data/templates/boilerplate/layouts/_javascripts.html.haml +24 -0
  221. data/templates/boilerplate/layouts/boilerplate.html.haml +27 -0
  222. data/templates/boilerplate/layouts/stand_alone/_flashes.haml +4 -0
  223. data/templates/boilerplate/layouts/stand_alone/_head.haml +27 -0
  224. data/templates/boilerplate/layouts/stand_alone/_javascripts.haml +24 -0
  225. data/templates/boilerplate/layouts/stand_alone/boilerplate.haml +33 -0
  226. data/templates/boilerplate/manifest.rb +82 -0
  227. data/templates/boilerplate/robots.txt +5 -0
  228. data/templates/boilerplate/stylesheets/_custom_styles.scss +7 -0
  229. data/templates/boilerplate/stylesheets/_helpers.scss +129 -0
  230. data/templates/boilerplate/stylesheets/_media.scss +15 -0
  231. data/templates/boilerplate/stylesheets/_normalize.scss +208 -0
  232. data/templates/boilerplate/stylesheets/_print.scss +19 -0
  233. data/templates/boilerplate/stylesheets/_styling_helpers.scss +24 -0
  234. data/templates/boilerplate/stylesheets/rails/boilerplate.scss +9 -0
  235. data/templates/boilerplate/stylesheets/stand_alone/_custom_styles.scss +6 -0
  236. data/templates/boilerplate/stylesheets/stand_alone/_template.scss +11 -0
  237. data/templates/boilerplate/stylesheets/stand_alone/boilerplate.scss +2 -0
  238. data/templates/boilerplate/stylesheets/template.scss +11 -0
  239. data/templates/boilerplate/test/index.html +31 -0
  240. data/templates/boilerplate/test/qunit/qunit.css +148 -0
  241. data/templates/boilerplate/test/qunit/qunit.js +1265 -0
  242. data/templates/boilerplate/test/tests.js +27 -0
  243. data/templates/project/manifest.rb +2 -0
  244. data/templates/project/screen.scss +2 -0
  245. data/templates/scorpion/application.scss +8 -0
  246. data/templates/scorpion/manifest.rb +29 -0
  247. data/templates/scorpion/partials/_base.scss +26 -0
  248. data/templates/scorpion/partials/_fonts.scss +4 -0
  249. data/templates/scorpion/partials/_media.scss +22 -0
  250. data/templates/scorpion/partials/_overrides.scss +57 -0
  251. data/templates/scorpion/partials/_page.scss +485 -0
  252. data/templates/scorpion/style.scss +28 -0
  253. data/vendor/assets/javascripts/boilerplate/plugins.js +20 -0
  254. data/vendor/assets/javascripts/boilerplate.js +3 -0
  255. data/vendor/assets/javascripts/modernizr/modernizr-2.0.6.min.js +4 -0
  256. data/vendor/assets/javascripts/modernizr.js +3 -0
  257. data/vendor/assets/javascripts/scorpion/application.js +37 -0
  258. data/vendor/assets/javascripts/scorpion/category_drag_drop.js +12 -0
  259. data/vendor/assets/javascripts/scorpion/controls.js +963 -0
  260. data/vendor/assets/javascripts/scorpion/datepicker.js +1445 -0
  261. data/vendor/assets/javascripts/scorpion/documents.js +14 -0
  262. data/vendor/assets/javascripts/scorpion/dragdrop.js +973 -0
  263. data/vendor/assets/javascripts/scorpion/effects.js +1128 -0
  264. data/vendor/assets/javascripts/scorpion/example_text.js +39 -0
  265. data/vendor/assets/javascripts/scorpion/fees.js +106 -0
  266. data/vendor/assets/javascripts/scorpion/invoices.js +18 -0
  267. data/vendor/assets/javascripts/scorpion/jobs.js +7 -0
  268. data/vendor/assets/javascripts/scorpion/jobs_admin.js +21 -0
  269. data/vendor/assets/javascripts/scorpion/jquery.js +8865 -0
  270. data/vendor/assets/javascripts/scorpion/jquery.min.js +16 -0
  271. data/vendor/assets/javascripts/scorpion/jquery.rest_in_place.js +55 -0
  272. data/vendor/assets/javascripts/scorpion/lang/af.js +40 -0
  273. data/vendor/assets/javascripts/scorpion/lang/ar.js +50 -0
  274. data/vendor/assets/javascripts/scorpion/lang/de.js +40 -0
  275. data/vendor/assets/javascripts/scorpion/lang/du.js +40 -0
  276. data/vendor/assets/javascripts/scorpion/lang/en.js +42 -0
  277. data/vendor/assets/javascripts/scorpion/lang/es.js +41 -0
  278. data/vendor/assets/javascripts/scorpion/lang/fi.js +40 -0
  279. data/vendor/assets/javascripts/scorpion/lang/fr.js +44 -0
  280. data/vendor/assets/javascripts/scorpion/lang/gr.js +40 -0
  281. data/vendor/assets/javascripts/scorpion/lang/he.js +49 -0
  282. data/vendor/assets/javascripts/scorpion/lang/it.js +13 -0
  283. data/vendor/assets/javascripts/scorpion/lang/nl.js +40 -0
  284. data/vendor/assets/javascripts/scorpion/lang/no.js +40 -0
  285. data/vendor/assets/javascripts/scorpion/lang/pt.js +50 -0
  286. data/vendor/assets/javascripts/scorpion/lang/ro.js +40 -0
  287. data/vendor/assets/javascripts/scorpion/lang/ru.js +40 -0
  288. data/vendor/assets/javascripts/scorpion/lang/sp.js +40 -0
  289. data/vendor/assets/javascripts/scorpion/lang/sv.js +41 -0
  290. data/vendor/assets/javascripts/scorpion/lang/ua.js +40 -0
  291. data/vendor/assets/javascripts/scorpion/modernizr.min.js +2 -0
  292. data/vendor/assets/javascripts/scorpion/photo_reports.js +16 -0
  293. data/vendor/assets/javascripts/scorpion/photo_reports_drag_drop.js +15 -0
  294. data/vendor/assets/javascripts/scorpion/plugins.js +16 -0
  295. data/vendor/assets/javascripts/scorpion/prototype.js +4320 -0
  296. data/vendor/assets/javascripts/scorpion/rails.js +315 -0
  297. data/vendor/assets/javascripts/scorpion/respond.min.js +7 -0
  298. data/vendor/assets/javascripts/scorpion/rest_in_place.js +57 -0
  299. data/vendor/assets/javascripts/scorpion/supplementary_tasks.js +45 -0
  300. data/vendor/assets/javascripts/scorpion/tasks.js +52 -0
  301. data/vendor/assets/javascripts/scorpion/webglobal.js +45 -0
  302. metadata +360 -0
@@ -0,0 +1,315 @@
1
+ /**
2
+ * Unobtrusive scripting adapter for jQuery
3
+ *
4
+ * Requires jQuery 1.4.4 or later.
5
+ * https://github.com/rails/jquery-ujs
6
+
7
+ * Uploading file using rails.js
8
+ * =============================
9
+ *
10
+ * By default, browsers do not allow files to be uploaded via AJAX. As a result, if there are any non-blank file fields
11
+ * in the remote form, this adapter aborts the AJAX submission and allows the form to submit through standard means.
12
+ *
13
+ * The `ajax:aborted:file` event allows you to bind your own handler to process the form submission however you wish.
14
+ *
15
+ * Ex:
16
+ * $('form').live('ajax:aborted:file', function(event, elements){
17
+ * // Implement own remote file-transfer handler here for non-blank file inputs passed in `elements`.
18
+ * // Returning false in this handler tells rails.js to disallow standard form submission
19
+ * return false;
20
+ * });
21
+ *
22
+ * The `ajax:aborted:file` event is fired when a file-type input is detected with a non-blank value.
23
+ *
24
+ * Third-party tools can use this hook to detect when an AJAX file upload is attempted, and then use
25
+ * techniques like the iframe method to upload the file instead.
26
+ *
27
+ * Required fields in rails.js
28
+ * ===========================
29
+ *
30
+ * If any blank required inputs (required="required") are detected in the remote form, the whole form submission
31
+ * is canceled. Note that this is unlike file inputs, which still allow standard (non-AJAX) form submission.
32
+ *
33
+ * The `ajax:aborted:required` event allows you to bind your own handler to inform the user of blank required inputs.
34
+ *
35
+ * !! Note that Opera does not fire the form's submit event if there are blank required inputs, so this event may never
36
+ * get fired in Opera. This event is what causes other browsers to exhibit the same submit-aborting behavior.
37
+ *
38
+ * Ex:
39
+ * $('form').live('ajax:aborted:required', function(event, elements){
40
+ * // Returning false in this handler tells rails.js to submit the form anyway.
41
+ * // The blank required inputs are passed to this function in `elements`.
42
+ * return ! confirm("Would you like to submit the form with missing info?");
43
+ * });
44
+ */
45
+
46
+ (function($) {
47
+ // Shorthand to make it a little easier to call public rails functions from within rails.js
48
+ var rails;
49
+
50
+ $.rails = rails = {
51
+ // Link elements bound by jquery-ujs
52
+ linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]',
53
+
54
+ // Form elements bound by jquery-ujs
55
+ formSubmitSelector: 'form',
56
+
57
+ // Form input elements bound by jquery-ujs
58
+ formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type])',
59
+
60
+ // Form input elements disabled during form submission
61
+ disableSelector: 'input[data-disable-with], button[data-disable-with], textarea[data-disable-with]',
62
+
63
+ // Form input elements re-enabled after form submission
64
+ enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled',
65
+
66
+ // Form required input elements
67
+ requiredInputSelector: 'input[name][required],textarea[name][required]',
68
+
69
+ // Form file input elements
70
+ fileInputSelector: 'input:file',
71
+
72
+ // Make sure that every Ajax request sends the CSRF token
73
+ CSRFProtection: function(xhr) {
74
+ var token = $('meta[name="csrf-token"]').attr('content');
75
+ if (token) xhr.setRequestHeader('X-CSRF-Token', token);
76
+ },
77
+
78
+ // Triggers an event on an element and returns false if the event result is false
79
+ fire: function(obj, name, data) {
80
+ var event = $.Event(name);
81
+ obj.trigger(event, data);
82
+ return event.result !== false;
83
+ },
84
+
85
+ // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm
86
+ confirm: function(message) {
87
+ return confirm(message);
88
+ },
89
+
90
+ // Default ajax function, may be overridden with custom function in $.rails.ajax
91
+ ajax: function(options) {
92
+ return $.ajax(options);
93
+ },
94
+
95
+ // Submits "remote" forms and links with ajax
96
+ handleRemote: function(element) {
97
+ var method, url, data,
98
+ dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType);
99
+
100
+ if (rails.fire(element, 'ajax:before')) {
101
+
102
+ if (element.is('form')) {
103
+ method = element.attr('method');
104
+ url = element.attr('action');
105
+ data = element.serializeArray();
106
+ // memoized value from clicked submit button
107
+ var button = element.data('ujs:submit-button');
108
+ if (button) {
109
+ data.push(button);
110
+ element.data('ujs:submit-button', null);
111
+ }
112
+ } else {
113
+ method = element.data('method');
114
+ url = element.attr('href');
115
+ data = null;
116
+ }
117
+
118
+ rails.ajax({
119
+ url: url, type: method || 'GET', data: data, dataType: dataType,
120
+ // stopping the "ajax:beforeSend" event will cancel the ajax request
121
+ beforeSend: function(xhr, settings) {
122
+ if (settings.dataType === undefined) {
123
+ xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);
124
+ }
125
+ return rails.fire(element, 'ajax:beforeSend', [xhr, settings]);
126
+ },
127
+ success: function(data, status, xhr) {
128
+ element.trigger('ajax:success', [data, status, xhr]);
129
+ },
130
+ complete: function(xhr, status) {
131
+ element.trigger('ajax:complete', [xhr, status]);
132
+ },
133
+ error: function(xhr, status, error) {
134
+ element.trigger('ajax:error', [xhr, status, error]);
135
+ }
136
+ });
137
+ }
138
+ },
139
+
140
+ // Handles "data-method" on links such as:
141
+ // <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a>
142
+ handleMethod: function(link) {
143
+ var href = link.attr('href'),
144
+ method = link.data('method'),
145
+ csrf_token = $('meta[name=csrf-token]').attr('content'),
146
+ csrf_param = $('meta[name=csrf-param]').attr('content'),
147
+ form = $('<form method="post" action="' + href + '"></form>'),
148
+ metadata_input = '<input name="_method" value="' + method + '" type="hidden" />';
149
+
150
+ if (csrf_param !== undefined && csrf_token !== undefined) {
151
+ metadata_input += '<input name="' + csrf_param + '" value="' + csrf_token + '" type="hidden" />';
152
+ }
153
+
154
+ form.hide().append(metadata_input).appendTo('body');
155
+ form.submit();
156
+ },
157
+
158
+ /* Disables form elements:
159
+ - Caches element value in 'ujs:enable-with' data store
160
+ - Replaces element text with value of 'data-disable-with' attribute
161
+ - Adds disabled=disabled attribute
162
+ */
163
+ disableFormElements: function(form) {
164
+ form.find(rails.disableSelector).each(function() {
165
+ var element = $(this), method = element.is('button') ? 'html' : 'val';
166
+ element.data('ujs:enable-with', element[method]());
167
+ element[method](element.data('disable-with'));
168
+ element.attr('disabled', 'disabled');
169
+ });
170
+ },
171
+
172
+ /* Re-enables disabled form elements:
173
+ - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)
174
+ - Removes disabled attribute
175
+ */
176
+ enableFormElements: function(form) {
177
+ form.find(rails.enableSelector).each(function() {
178
+ var element = $(this), method = element.is('button') ? 'html' : 'val';
179
+ if (element.data('ujs:enable-with')) element[method](element.data('ujs:enable-with'));
180
+ element.removeAttr('disabled');
181
+ });
182
+ },
183
+
184
+ /*
185
+ For 'data-confirm' attribute:
186
+ - fires `confirm` event
187
+ - shows the confirmation dialog
188
+ - fires the `confirm:complete` event
189
+
190
+ Returns `true` if no function stops the chain and user chose yes; `false` otherwise.
191
+ Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog.
192
+ Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function
193
+ return false.
194
+ */
195
+ allowAction: function(element) {
196
+ var message = element.data('confirm'),
197
+ answer = false, callback;
198
+ if (!message) { return true; }
199
+
200
+ if (rails.fire(element, 'confirm')) {
201
+ answer = rails.confirm(message);
202
+ callback = rails.fire(element, 'confirm:complete', [answer]);
203
+ }
204
+ return answer && callback;
205
+ },
206
+
207
+ // Helper function which checks for blank inputs in a form that match the specified CSS selector
208
+ blankInputs: function(form, specifiedSelector, nonBlank) {
209
+ var inputs = $(), input,
210
+ selector = specifiedSelector || 'input,textarea';
211
+ form.find(selector).each(function() {
212
+ input = $(this);
213
+ // Collect non-blank inputs if nonBlank option is true, otherwise, collect blank inputs
214
+ if (nonBlank ? input.val() : !input.val()) {
215
+ inputs = inputs.add(input);
216
+ }
217
+ });
218
+ return inputs.length ? inputs : false;
219
+ },
220
+
221
+ // Helper function which checks for non-blank inputs in a form that match the specified CSS selector
222
+ nonBlankInputs: function(form, specifiedSelector) {
223
+ return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank
224
+ },
225
+
226
+ // Helper function, needed to provide consistent behavior in IE
227
+ stopEverything: function(e) {
228
+ e.stopImmediatePropagation();
229
+ return false;
230
+ },
231
+
232
+ // find all the submit events directly bound to the form and
233
+ // manually invoke them. If anyone returns false then stop the loop
234
+ callFormSubmitBindings: function(form) {
235
+ var events = form.data('events'), continuePropagation = true;
236
+ if (events !== undefined && events['submit'] !== undefined) {
237
+ $.each(events['submit'], function(i, obj){
238
+ if (typeof obj.handler === 'function') return continuePropagation = obj.handler(obj.data);
239
+ });
240
+ }
241
+ return continuePropagation;
242
+ }
243
+ };
244
+
245
+ // ajaxPrefilter is a jQuery 1.5 feature
246
+ if ('ajaxPrefilter' in $) {
247
+ $.ajaxPrefilter(function(options, originalOptions, xhr){ rails.CSRFProtection(xhr); });
248
+ } else {
249
+ $(document).ajaxSend(function(e, xhr){ rails.CSRFProtection(xhr); });
250
+ }
251
+
252
+ $(rails.linkClickSelector).live('click.rails', function(e) {
253
+ var link = $(this);
254
+ if (!rails.allowAction(link)) return rails.stopEverything(e);
255
+
256
+ if (link.data('remote') !== undefined) {
257
+ rails.handleRemote(link);
258
+ return false;
259
+ } else if (link.data('method')) {
260
+ rails.handleMethod(link);
261
+ return false;
262
+ }
263
+ });
264
+
265
+ $(rails.formSubmitSelector).live('submit.rails', function(e) {
266
+ var form = $(this),
267
+ remote = form.data('remote') !== undefined,
268
+ blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector),
269
+ nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector);
270
+
271
+ if (!rails.allowAction(form)) return rails.stopEverything(e);
272
+
273
+ // skip other logic when required values are missing or file upload is present
274
+ if (blankRequiredInputs && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {
275
+ return !remote;
276
+ }
277
+
278
+ if (remote) {
279
+ if (nonBlankFileInputs) {
280
+ return rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);
281
+ }
282
+
283
+ // If browser does not support submit bubbling, then this live-binding will be called before direct
284
+ // bindings. Therefore, we should directly call any direct bindings before remotely submitting form.
285
+ if (!$.support.submitBubbles && rails.callFormSubmitBindings(form) === false) return rails.stopEverything(e);
286
+
287
+ rails.handleRemote(form);
288
+ return false;
289
+ } else {
290
+ // slight timeout so that the submit button gets properly serialized
291
+ setTimeout(function(){ rails.disableFormElements(form); }, 13);
292
+ }
293
+ });
294
+
295
+ $(rails.formInputClickSelector).live('click.rails', function(event) {
296
+ var button = $(this);
297
+
298
+ if (!rails.allowAction(button)) return rails.stopEverything(event);
299
+
300
+ // register the pressed submit button
301
+ var name = button.attr('name'),
302
+ data = name ? {name:name, value:button.val()} : null;
303
+
304
+ button.closest('form').data('ujs:submit-button', data);
305
+ });
306
+
307
+ $(rails.formSubmitSelector).live('ajax:beforeSend.rails', function(event) {
308
+ if (this == event.target) rails.disableFormElements($(this));
309
+ });
310
+
311
+ $(rails.formSubmitSelector).live('ajax:complete.rails', function(event) {
312
+ if (this == event.target) rails.enableFormElements($(this));
313
+ });
314
+
315
+ })( jQuery );
@@ -0,0 +1,7 @@
1
+ /*
2
+ * respond.js - A small and fast polyfill for min/max-width CSS3 Media Queries
3
+ * Copyright 2011, Scott Jehl, scottjehl.com
4
+ * Dual licensed under the MIT or GPL Version 2 licenses.
5
+ * Usage: Check out the readme file or github.com/scottjehl/respond
6
+ */
7
+ (function(e,h){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=h;if(h){return}var u=e.document,r=u.documentElement,i=[],k=[],p=[],o={},g=30,f=u.getElementsByTagName("head")[0]||r,b=f.getElementsByTagName("link"),d=[],a=function(){var B=b,w=B.length;for(var z=0;z<w;z++){var y=B[z],x=y.href,A=y.media,v=y.rel&&y.rel.toLowerCase()==="stylesheet";if(!!x&&v&&!o[x]){if(!/^([a-zA-Z]+?:(\/\/)?(www\.)?)/.test(x)||x.replace(RegExp.$1,"").split("/")[0]===e.location.host){d.push({href:x,media:A})}else{o[x]=true}}}t()},t=function(){if(d.length){var v=d.shift();n(v.href,function(w){m(w,v.href,v.media);o[v.href]=true;t()})}},m=function(G,v,x){var E=G.match(/@media ([^\{]+)\{((?!@media)[\s\S])*(?=\}[\s]*\/\*\/mediaquery\*\/)/gmi),H=E&&E.length||0,v=v.substring(0,v.lastIndexOf("/")),w=function(I){return I.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+v+"$2$3")},y=!H&&x;if(v.length){v+="/"}if(y){H=1}for(var B=0;B<H;B++){var C;if(y){C=x;k.push(w(G))}else{C=E[B].match(/@media ([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1;k.push(RegExp.$2&&w(RegExp.$2))}var z=C.split(","),F=z.length;for(var A=0;A<F;A++){var D=z[A];i.push({media:D.match(/(only\s+)?([a-zA-Z]+)(\sand)?/)&&RegExp.$2,rules:k.length-1,minw:D.match(/\(min\-width:[\s]*([\s]*[0-9]+)px[\s]*\)/)&&parseFloat(RegExp.$1),maxw:D.match(/\(max\-width:[\s]*([\s]*[0-9]+)px[\s]*\)/)&&parseFloat(RegExp.$1)})}}j()},l,q,j=function(E){var v="clientWidth",x=r[v],D=u.compatMode==="CSS1Compat"&&x||u.body[v]||x,z={},C=u.createDocumentFragment(),B=b[b.length-1],w=(new Date()).getTime();if(E&&l&&w-l<g){clearTimeout(q);q=setTimeout(j,g);return}else{l=w}for(var y in i){var F=i[y];if(!F.minw&&!F.maxw||(!F.minw||F.minw&&D>=F.minw)&&(!F.maxw||F.maxw&&D<=F.maxw)){if(!z[F.media]){z[F.media]=[]}z[F.media].push(k[F.rules])}}for(var y in p){if(p[y]&&p[y].parentNode===f){f.removeChild(p[y])}}for(var y in z){var G=u.createElement("style"),A=z[y].join("\n");G.type="text/css";G.media=y;if(G.styleSheet){G.styleSheet.cssText=A}else{G.appendChild(u.createTextNode(A))}C.appendChild(G);p.push(G)}f.insertBefore(C,B.nextSibling)},n=function(v,x){var w=c();if(!w){return}w.open("GET",v,true);w.onreadystatechange=function(){if(w.readyState!=4||w.status!=200&&w.status!=304){return}x(w.responseText)};if(w.readyState==4){return}w.send()},c=(function(){var v=false,w=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml3.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new XMLHttpRequest()}],y=w.length;while(y--){try{v=w[y]()}catch(x){continue}break}return function(){return v}})();a();respond.update=a;function s(){j(true)}if(e.addEventListener){e.addEventListener("resize",s,false)}else{if(e.attachEvent){e.attachEvent("onresize",s)}}})(this,(function(f){if(f.matchMedia){return true}var e,i=document,c=i.documentElement,g=c.firstElementChild||c.firstChild,h=!i.body,d=i.body||i.createElement("body"),b=i.createElement("div"),a="only all";b.id="mq-test-1";b.style.cssText="position:absolute;top:-99em";d.appendChild(b);b.innerHTML='_<style media="'+a+'"> #mq-test-1 { width: 9px; }</style>';if(h){c.insertBefore(d,g)}b.removeChild(b.firstChild);e=b.offsetWidth==9;if(h){c.removeChild(d)}else{d.removeChild(b)}return e})(this));
@@ -0,0 +1,57 @@
1
+ rest_in_place = function(element, url, objectName, attributeName){
2
+ var e = element;
3
+
4
+ function clickFunction(){
5
+ var oldValue = e.innerHTML.replace(/^\s*|\s*$/g,'');
6
+ function submitFunction(){
7
+ var value = Form.Element.getValue(e.select('input')[0]);
8
+ e.innerHTML = "saving...";
9
+ new Ajax.Request(url,{
10
+ method: 'put',
11
+ parameters: objectName+'['+attributeName+']='+encodeURIComponent(value)+(window.rails_authenticity_token ? "&authenticity_token="+encodeURIComponent(window.rails_authenticity_token) : ''),
12
+ onSuccess: function(transport){
13
+ new Ajax.Request(url, {
14
+ method: 'get',
15
+ requestHeaders: { "Accept" : "application/javascript"},
16
+ onSuccess : function(xhr){
17
+ var data = xhr.responseText.evalJSON();
18
+ e.innerHTML = data[objectName][attributeName];
19
+ Event.observe(e,'click', clickFunction);
20
+ }
21
+ });
22
+ }
23
+ });
24
+ return false;
25
+ }
26
+ e.innerHTML = '<form action="javascript:void(0)" style="display:inline;"><input type="text" value="' + oldValue + '"></form>';
27
+ Form.Element.select(e.select('input')[0]);
28
+ Event.stopObserving(e, 'click', clickFunction);
29
+ Event.observe(e.select('input')[0], 'blur', function(){
30
+ e.innerHTML = oldValue;
31
+ Event.observe(e, 'click', clickFunction);
32
+ });
33
+ Event.observe(e.select('form')[0], 'submit', submitFunction);
34
+ }
35
+
36
+ Event.observe(e,'click', clickFunction);
37
+ };
38
+
39
+ Event.observe(window, 'load',function() {
40
+ $$(".rest_in_place").each(function(e){
41
+ var url; var obj; var attrib;
42
+ Element.ancestors(e).each(function(a){
43
+ url = url || Element.readAttribute(a, 'url');
44
+ obj = obj || Element.readAttribute(a, 'object');
45
+ attrib = attrib || Element.readAttribute(a, 'attribute');
46
+ });
47
+ Element.ancestors(e).each(function(a){
48
+ if (res = a.id.match(/^(\w+)_(\d+)$/i)) {
49
+ obj = obj || res[1];
50
+ }
51
+ });
52
+ url = Element.readAttribute(e, 'url') || url || document.location.pathname;
53
+ obj = Element.readAttribute(e, 'object') || obj;
54
+ attrib = Element.readAttribute(e, 'attribute') || attrib;
55
+ rest_in_place(e, url, obj, attrib);
56
+ });
57
+ });
@@ -0,0 +1,45 @@
1
+ jQuery.ajaxSetup({
2
+ 'beforeSend': function (xhr) {xhr.setRequestHeader("Accept", "text/javascript");}
3
+ });
4
+
5
+ jQuery.fn.submitWithAjax = function() {
6
+ this.submit(function () {
7
+ $.post($(this).attr('action'), $(this).serialize(), null, "script");
8
+ return false;
9
+ });
10
+ };
11
+
12
+ $(document).ready(function() {
13
+ $("#supplementary_task_party_id").change(function() {
14
+ $.post($(this).attr('data-path')+'?authenticity_token='+encodeURIComponent(window.rails_authenticity_token), $(this).serialize(), null, "script");
15
+ });
16
+
17
+ toggleIndividualTaskFields();
18
+ $('#supplementary_task_party_attributes_entity_1').live('click', function() {
19
+ toggleIndividualTaskFields();
20
+ });
21
+ toggleCompanyTaskFields();
22
+ $('#supplementary_task_party_attributes_entity_2').live('click', function() {
23
+ toggleCompanyTaskFields();
24
+ });
25
+ });
26
+
27
+ function toggleIndividualTaskFields() {
28
+ if ($('#supplementary_task_party_attributes_entity_1').attr('checked') == true) {
29
+ $('#individual_party').fadeIn('fast');
30
+ $('#party_name').fadeIn('fast');
31
+ $("#party_name label").html('Surname');
32
+ $('#supplementary_task_party_attributes_title').removeAttr("disabled");
33
+ $('#supplementary_task_party_attributes_forename').removeAttr("disabled");
34
+ }
35
+ }
36
+
37
+ function toggleCompanyTaskFields() {
38
+ if ($('#supplementary_task_party_attributes_entity_2').attr('checked') == true) {
39
+ $("#individual_party").hide();
40
+ $('#party_name').fadeIn('fast');
41
+ $("#party_name label").html('Company Name');
42
+ $('#supplementary_task_party_attributes_title').attr("disabled", "disabled");
43
+ $('#supplementary_task_party_attributes_forename').attr("disabled", "disabled");
44
+ }
45
+ }
@@ -0,0 +1,52 @@
1
+ $(document).ready(function() {
2
+ togglePartyTasks();
3
+ $('#task_party_attributes_party_type').change(function() {
4
+ togglePartyTasks();
5
+ });
6
+ toggleIndividualTaskFields();
7
+ $('#task_party_attributes_entity_1').click(function() {
8
+ toggleIndividualTaskFields();
9
+ });
10
+ toggleCompanyTaskFields();
11
+ $('#task_party_attributes_entity_2').click(function() {
12
+ toggleCompanyTaskFields();
13
+ });
14
+ });
15
+
16
+ function togglePartyTasks() {
17
+ if ($('#task_party_attributes_party_type').val() == '(NONE)') {
18
+ $("#party_status").find(":input").each(function(index, value){
19
+ $(value).attr("disabled", "disabled");
20
+ });
21
+ $("#party_status").hide();
22
+ } else {
23
+ $("#party_status").find(":input").each(function(index, value){
24
+ $(value).removeAttr("disabled");
25
+ });
26
+ $("#party_status").show();
27
+ }
28
+ }
29
+
30
+ function toggleIndividualTaskFields() {
31
+ if ($('#task_party_attributes_entity_1').val() == "1") {
32
+ $('#individual_party').show().effect('highlight');
33
+ $('#party_name').show().effect('highlight');
34
+ $("#party_name").find("label").first().html('Surname');
35
+ $('#task_party_attributes_title').removeAttr("disabled");
36
+ $('#task_party_attributes_forename').removeAttr("disabled");
37
+ $('task_party_attributes_title').val("");
38
+ $('task_party_attributes_forename').val("");
39
+ $('task_party_attributes_surname').val("");
40
+ }
41
+ }
42
+
43
+ function toggleCompanyTaskFields() {
44
+ if ($('#task_party_attributes_entity_2').val() == "2") {
45
+ $("#individual_party").hide();
46
+ $('#party_name').show().effect('highlight');
47
+ $("#party_name").find("label").first().html('Company Name');
48
+ $('#task_party_attributes_title').attr("disabled", "disabled");
49
+ $('#task_party_attributes_forename').attr("disabled", "disabled");
50
+ $('#task_party_attributes_surname').val("");
51
+ }
52
+ }
@@ -0,0 +1,45 @@
1
+ startList = function() {
2
+ if (document.all&&document.getElementById) {
3
+ navRoot = document.getElementById("navlist");
4
+ for (i=0; i<navRoot.childNodes.length; i++) {
5
+ node = navRoot.childNodes[i];
6
+ if (node.nodeName=="LI") {
7
+ node.onmouseover=function() {
8
+ this.className+=" over";
9
+ }
10
+ node.onmouseout=function() {
11
+ this.className=this.className.replace(" over", "");
12
+ }
13
+ }
14
+ }
15
+ }
16
+ }
17
+ window.onload=startList;
18
+
19
+
20
+ var cX = 0; var cY = 0;
21
+ function UpdateCursorPosition(e){ cX = e.pageX; cY = e.pageY;}
22
+ function UpdateCursorPositionDocAll(e){ cX = event.clientX; cY = event.clientY;}
23
+ if(document.all) { document.onmousemove = UpdateCursorPositionDocAll; }
24
+ else { document.onmousemove = UpdateCursorPosition; }
25
+ function AssignPosition(d) {
26
+ d.style.left = (cX+10) + "px";
27
+ d.style.top = (cY+10) + "px";
28
+ }
29
+ function HideContent(d) {
30
+ if(d.length < 1) { return; }
31
+ document.getElementById(d).style.display = "none";
32
+ }
33
+ function ShowContent(d) {
34
+ if(d.length < 1) { return; }
35
+ var dd = document.getElementById(d);
36
+ AssignPosition(dd);
37
+ dd.style.display = "block";
38
+ }
39
+ function ReverseContentDisplay(d) {
40
+ if(d.length < 1) { return; }
41
+ var dd = document.getElementById(d);
42
+ AssignPosition(dd);
43
+ if(dd.style.display == "none") { dd.style.display = "block"; }
44
+ else { dd.style.display = "none"; }
45
+ }