compass-jquery-plugin 0.3.2.7 → 0.3.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. data/README.md +17 -11
  2. data/VERSION.yml +2 -2
  3. data/lib/handle_js_files.rb +1 -1
  4. data/lib/jquery/emulators.rb +13 -0
  5. data/templates/dynatree/jquery.dynatree.min.js +79 -81
  6. data/templates/emulators/config/initializers/emulators.rb +0 -9
  7. data/templates/emulators/emulators/{blackberry.landscape.scss → blackberry.torch.landscape.scss} +6 -2
  8. data/templates/emulators/emulators/{blackberry.portrait.scss → blackberry.torch.portrait.scss} +6 -1
  9. data/templates/emulators/emulators/galaxy.s.landscape.png +0 -0
  10. data/templates/emulators/emulators/galaxy.s.landscape.scss +20 -0
  11. data/templates/emulators/emulators/galaxy.s.portrait.png +0 -0
  12. data/templates/emulators/emulators/galaxy.s.portrait.scss +20 -0
  13. data/templates/emulators/emulators/galaxy.s2.landscape.png +0 -0
  14. data/templates/emulators/emulators/galaxy.s2.landscape.scss +20 -0
  15. data/templates/emulators/emulators/galaxy.s2.portrait.png +0 -0
  16. data/templates/emulators/emulators/galaxy.s2.portrait.scss +20 -0
  17. data/templates/emulators/emulators/galaxy.tab.10.1.landscape.png +0 -0
  18. data/templates/emulators/emulators/galaxy.tab.10.1.landscape.scss +20 -0
  19. data/templates/emulators/emulators/galaxy.tab.10.1.portrait.png +0 -0
  20. data/templates/emulators/emulators/galaxy.tab.10.1.portrait.scss +20 -0
  21. data/templates/emulators/emulators/galaxy.tab.7.landscape.png +0 -0
  22. data/templates/emulators/emulators/galaxy.tab.7.landscape.scss +20 -0
  23. data/templates/emulators/emulators/galaxy.tab.7.portrait.png +0 -0
  24. data/templates/emulators/emulators/galaxy.tab.7.portrait.scss +20 -0
  25. data/templates/emulators/emulators/galaxy.tab.8.9.landscape.png +0 -0
  26. data/templates/emulators/emulators/galaxy.tab.8.9.landscape.scss +20 -0
  27. data/templates/emulators/emulators/galaxy.tab.8.9.portrait.png +0 -0
  28. data/templates/emulators/emulators/galaxy.tab.8.9.portrait.scss +20 -0
  29. data/templates/emulators/emulators/ipad.landscape.png +0 -0
  30. data/templates/emulators/emulators/ipad.landscape.scss +9 -4
  31. data/templates/emulators/emulators/ipad.portrait.png +0 -0
  32. data/templates/emulators/emulators/ipad.portrait.scss +9 -4
  33. data/templates/emulators/emulators/{iphone.landscape.png → iphone.3.landscape.png} +0 -0
  34. data/templates/emulators/emulators/{iphone.landscape.scss → iphone.3.landscape.scss} +7 -3
  35. data/templates/emulators/emulators/{iphone.portrait.png → iphone.3.portrait.png} +0 -0
  36. data/templates/emulators/emulators/{iphone.portrait.scss → iphone.3.portrait.scss} +7 -3
  37. data/templates/emulators/emulators/iphone.4.landscape .scss +20 -0
  38. data/templates/emulators/emulators/iphone.4.landscape.png +0 -0
  39. data/templates/emulators/emulators/iphone.4.portrait.png +0 -0
  40. data/templates/emulators/emulators/iphone.4.portrait.scss +20 -0
  41. data/templates/emulators/emulators/{palm.pre.landscape.png → palm.pre.2.landscape.png} +0 -0
  42. data/templates/emulators/emulators/{palm.landscape.scss → palm.pre.2.landscape.scss} +7 -3
  43. data/templates/emulators/emulators/{palm.pre.portrait.png → palm.pre.2.portrait.png} +0 -0
  44. data/templates/emulators/emulators/{palm.portrait.scss → palm.pre.2.portrait.scss} +7 -3
  45. data/templates/emulators/manifest.rb +34 -10
  46. data/templates/graphics/config/initializers/graphics.rb +8 -0
  47. data/templates/graphics/highcharts/dark-blue.js +170 -0
  48. data/templates/graphics/highcharts/dark-blue.min.js +4 -0
  49. data/templates/graphics/highcharts/dark-green.js +170 -0
  50. data/templates/graphics/highcharts/dark-green.min.js +4 -0
  51. data/templates/graphics/highcharts/gray.js +164 -0
  52. data/templates/graphics/highcharts/gray.min.js +4 -0
  53. data/templates/graphics/highcharts/grid.js +97 -0
  54. data/templates/graphics/highcharts/grid.min.js +3 -0
  55. data/templates/graphics/highcharts/highslide-config.js +12 -0
  56. data/templates/graphics/highcharts/highslide-config.min.js +1 -0
  57. data/templates/graphics/highcharts/highslide-full.js +3391 -0
  58. data/templates/graphics/highcharts/highslide-full.min.js +132 -0
  59. data/templates/graphics/highcharts/skies.js +89 -0
  60. data/templates/graphics/highcharts/skies.min.js +3 -0
  61. data/templates/graphics/jquery.ganttView.js +1 -1
  62. data/templates/graphics/jquery.ganttView.min.js +61 -61
  63. data/templates/graphics/jquery.highcharts.js +11342 -0
  64. data/templates/graphics/jquery.highcharts.min.js +176 -0
  65. data/templates/graphics/jquery.sparkline.min.js +35 -36
  66. data/templates/graphics/jquery/highcharts/graphics/close.png +0 -0
  67. data/templates/graphics/jquery/highcharts/graphics/closeX.png +0 -0
  68. data/templates/graphics/jquery/highcharts/graphics/controlbar-black-border.gif +0 -0
  69. data/templates/graphics/jquery/highcharts/graphics/controlbar-text-buttons.png +0 -0
  70. data/templates/graphics/jquery/highcharts/graphics/controlbar-white-small.gif +0 -0
  71. data/templates/graphics/jquery/highcharts/graphics/controlbar-white.gif +0 -0
  72. data/templates/graphics/jquery/highcharts/graphics/controlbar2.gif +0 -0
  73. data/templates/graphics/jquery/highcharts/graphics/controlbar3.gif +0 -0
  74. data/templates/graphics/jquery/highcharts/graphics/controlbar4-hover.gif +0 -0
  75. data/templates/graphics/jquery/highcharts/graphics/controlbar4.gif +0 -0
  76. data/templates/graphics/jquery/highcharts/graphics/fullexpand.gif +0 -0
  77. data/templates/graphics/jquery/highcharts/graphics/geckodimmer.png +0 -0
  78. data/templates/graphics/jquery/highcharts/graphics/icon.gif +0 -0
  79. data/templates/graphics/jquery/highcharts/graphics/loader.gif +0 -0
  80. data/templates/graphics/jquery/highcharts/graphics/loader.white.gif +0 -0
  81. data/templates/graphics/jquery/highcharts/graphics/outlines/beveled.png +0 -0
  82. data/templates/graphics/jquery/highcharts/graphics/outlines/drop-shadow.png +0 -0
  83. data/templates/graphics/jquery/highcharts/graphics/outlines/glossy-dark.png +0 -0
  84. data/templates/graphics/jquery/highcharts/graphics/outlines/outer-glow.png +0 -0
  85. data/templates/graphics/jquery/highcharts/graphics/outlines/rounded-black.png +0 -0
  86. data/templates/graphics/jquery/highcharts/graphics/outlines/rounded-white.png +0 -0
  87. data/templates/graphics/jquery/highcharts/graphics/resize.gif +0 -0
  88. data/templates/graphics/jquery/highcharts/graphics/scrollarrows.png +0 -0
  89. data/templates/graphics/jquery/highcharts/graphics/zoomin.cur +0 -0
  90. data/templates/graphics/jquery/highcharts/graphics/zoomout.cur +0 -0
  91. data/templates/graphics/jquery/highcharts/skies.jpg +0 -0
  92. data/templates/graphics/jquery/highslide.scss +763 -0
  93. data/templates/graphics/manifest.rb +43 -0
  94. data/templates/ical/config/initializers/ical.rb +1 -0
  95. data/templates/ical/jquery.ical.js +8401 -8209
  96. data/templates/ical/jquery.ical.min.js +206 -208
  97. data/templates/ical/jquery/ical.print.scss +48 -0
  98. data/templates/ical/jquery/ical.scss +372 -343
  99. data/templates/ical/manifest.rb +1 -0
  100. data/templates/jqgrid/i18n/jqgrid/locale-ar.min.js +2 -2
  101. data/templates/jqgrid/i18n/jqgrid/locale-bg.min.js +1 -1
  102. data/templates/jqgrid/i18n/jqgrid/locale-bg1251.min.js +1 -1
  103. data/templates/jqgrid/i18n/jqgrid/locale-cat.min.js +1 -1
  104. data/templates/jqgrid/i18n/jqgrid/locale-cn.min.js +1 -1
  105. data/templates/jqgrid/i18n/jqgrid/locale-cs.min.js +1 -1
  106. data/templates/jqgrid/i18n/jqgrid/locale-da.min.js +1 -1
  107. data/templates/jqgrid/i18n/jqgrid/locale-de.min.js +1 -1
  108. data/templates/jqgrid/i18n/jqgrid/locale-el.min.js +2 -2
  109. data/templates/jqgrid/i18n/jqgrid/locale-en.min.js +1 -1
  110. data/templates/jqgrid/i18n/jqgrid/locale-es.min.js +2 -2
  111. data/templates/jqgrid/i18n/jqgrid/locale-fa.min.js +1 -1
  112. data/templates/jqgrid/i18n/jqgrid/locale-fi.min.js +1 -1
  113. data/templates/jqgrid/i18n/jqgrid/locale-fr.min.js +2 -2
  114. data/templates/jqgrid/i18n/jqgrid/locale-gl.min.js +2 -2
  115. data/templates/jqgrid/i18n/jqgrid/locale-he.min.js +1 -1
  116. data/templates/jqgrid/i18n/jqgrid/locale-hu.min.js +1 -1
  117. data/templates/jqgrid/i18n/jqgrid/locale-is.min.js +1 -1
  118. data/templates/jqgrid/i18n/jqgrid/locale-it.min.js +2 -2
  119. data/templates/jqgrid/i18n/jqgrid/locale-ja.min.js +1 -1
  120. data/templates/jqgrid/i18n/jqgrid/locale-lt.min.js +2 -2
  121. data/templates/jqgrid/i18n/jqgrid/locale-nl.min.js +1 -1
  122. data/templates/jqgrid/i18n/jqgrid/locale-no.min.js +1 -1
  123. data/templates/jqgrid/i18n/jqgrid/locale-pl.min.js +1 -1
  124. data/templates/jqgrid/i18n/jqgrid/locale-pt-br.min.js +1 -1
  125. data/templates/jqgrid/i18n/jqgrid/locale-pt.min.js +1 -1
  126. data/templates/jqgrid/i18n/jqgrid/locale-ro.min.js +1 -1
  127. data/templates/jqgrid/i18n/jqgrid/locale-ru.min.js +2 -2
  128. data/templates/jqgrid/i18n/jqgrid/locale-sk.min.js +1 -1
  129. data/templates/jqgrid/i18n/jqgrid/locale-sr.min.js +1 -1
  130. data/templates/jqgrid/i18n/jqgrid/locale-sv.min.js +1 -1
  131. data/templates/jqgrid/i18n/jqgrid/locale-tr.min.js +1 -1
  132. data/templates/jqgrid/i18n/jqgrid/locale-ua.min.js +2 -2
  133. data/templates/jqgrid/jquery.jqGrid.js +162 -850
  134. data/templates/jqgrid/jquery.jqGrid.min.js +476 -497
  135. data/templates/jqgrid/jquery/jqGrid.scss +0 -19
  136. data/templates/jquery/amplify.store.js +248 -0
  137. data/templates/jquery/amplify.store.min.js +6 -0
  138. data/templates/jquery/config/initializers/jquery.rb +5 -1
  139. data/templates/jquery/history.adapter.jquery.js +37 -43
  140. data/templates/jquery/history.adapter.jquery.min.js +1 -1
  141. data/templates/jquery/history.html4.js +596 -587
  142. data/templates/jquery/history.html4.min.js +8 -8
  143. data/templates/jquery/history.js +1839 -1669
  144. data/templates/jquery/history.min.js +27 -25
  145. data/templates/jquery/i18n/jquery.ui/datepicker-af.min.js +1 -1
  146. data/templates/jquery/i18n/jquery.ui/datepicker-ar-DZ.min.js +1 -1
  147. data/templates/jquery/i18n/jquery.ui/datepicker-ar.min.js +1 -1
  148. data/templates/jquery/i18n/jquery.ui/datepicker-az.min.js +1 -1
  149. data/templates/jquery/i18n/jquery.ui/datepicker-bg.min.js +1 -1
  150. data/templates/jquery/i18n/jquery.ui/datepicker-bs.min.js +1 -1
  151. data/templates/jquery/i18n/jquery.ui/datepicker-ca.min.js +1 -1
  152. data/templates/jquery/i18n/jquery.ui/datepicker-cs.min.js +1 -1
  153. data/templates/jquery/i18n/jquery.ui/datepicker-da.min.js +1 -1
  154. data/templates/jquery/i18n/jquery.ui/datepicker-de.min.js +1 -1
  155. data/templates/jquery/i18n/jquery.ui/datepicker-el.min.js +1 -1
  156. data/templates/jquery/i18n/jquery.ui/datepicker-en-AU.min.js +1 -1
  157. data/templates/jquery/i18n/jquery.ui/datepicker-en-GB.min.js +1 -1
  158. data/templates/jquery/i18n/jquery.ui/datepicker-en-NZ.min.js +1 -1
  159. data/templates/jquery/i18n/jquery.ui/datepicker-eo.min.js +1 -1
  160. data/templates/jquery/i18n/jquery.ui/datepicker-es.min.js +1 -1
  161. data/templates/jquery/i18n/jquery.ui/datepicker-et.min.js +1 -1
  162. data/templates/jquery/i18n/jquery.ui/datepicker-eu.min.js +1 -1
  163. data/templates/jquery/i18n/jquery.ui/datepicker-fa.min.js +2 -2
  164. data/templates/jquery/i18n/jquery.ui/datepicker-fi.min.js +1 -1
  165. data/templates/jquery/i18n/jquery.ui/datepicker-fo.min.js +1 -1
  166. data/templates/jquery/i18n/jquery.ui/datepicker-fr-CH.min.js +1 -1
  167. data/templates/jquery/i18n/jquery.ui/datepicker-fr.min.js +1 -1
  168. data/templates/jquery/i18n/jquery.ui/datepicker-gl.min.js +1 -1
  169. data/templates/jquery/i18n/jquery.ui/datepicker-he.min.js +1 -1
  170. data/templates/jquery/i18n/jquery.ui/datepicker-hr.min.js +1 -1
  171. data/templates/jquery/i18n/jquery.ui/datepicker-hu.min.js +1 -1
  172. data/templates/jquery/i18n/jquery.ui/datepicker-hy.min.js +1 -1
  173. data/templates/jquery/i18n/jquery.ui/datepicker-id.min.js +1 -1
  174. data/templates/jquery/i18n/jquery.ui/datepicker-is.min.js +1 -1
  175. data/templates/jquery/i18n/jquery.ui/datepicker-it.min.js +1 -1
  176. data/templates/jquery/i18n/jquery.ui/datepicker-ja.min.js +1 -1
  177. data/templates/jquery/i18n/jquery.ui/datepicker-ko.min.js +1 -1
  178. data/templates/jquery/i18n/jquery.ui/datepicker-kz.min.js +1 -1
  179. data/templates/jquery/i18n/jquery.ui/datepicker-lt.min.js +1 -1
  180. data/templates/jquery/i18n/jquery.ui/datepicker-lv.min.js +1 -1
  181. data/templates/jquery/i18n/jquery.ui/datepicker-ml.min.js +2 -2
  182. data/templates/jquery/i18n/jquery.ui/datepicker-ms.min.js +1 -1
  183. data/templates/jquery/i18n/jquery.ui/datepicker-nl.min.js +1 -1
  184. data/templates/jquery/i18n/jquery.ui/datepicker-no.min.js +1 -1
  185. data/templates/jquery/i18n/jquery.ui/datepicker-pl.min.js +1 -1
  186. data/templates/jquery/i18n/jquery.ui/datepicker-pt-BR.min.js +1 -1
  187. data/templates/jquery/i18n/jquery.ui/datepicker-pt.min.js +1 -1
  188. data/templates/jquery/i18n/jquery.ui/datepicker-rm.min.js +1 -1
  189. data/templates/jquery/i18n/jquery.ui/datepicker-ro.min.js +1 -1
  190. data/templates/jquery/i18n/jquery.ui/datepicker-ru.min.js +1 -1
  191. data/templates/jquery/i18n/jquery.ui/datepicker-sk.min.js +1 -1
  192. data/templates/jquery/i18n/jquery.ui/datepicker-sl.min.js +1 -1
  193. data/templates/jquery/i18n/jquery.ui/datepicker-sq.min.js +1 -1
  194. data/templates/jquery/i18n/jquery.ui/datepicker-sr-SR.min.js +1 -1
  195. data/templates/jquery/i18n/jquery.ui/datepicker-sr.min.js +1 -1
  196. data/templates/jquery/i18n/jquery.ui/datepicker-sv.min.js +1 -1
  197. data/templates/jquery/i18n/jquery.ui/datepicker-ta.min.js +1 -1
  198. data/templates/jquery/i18n/jquery.ui/datepicker-th.min.js +1 -1
  199. data/templates/jquery/i18n/jquery.ui/datepicker-tj.min.js +1 -1
  200. data/templates/jquery/i18n/jquery.ui/datepicker-tr.min.js +1 -1
  201. data/templates/jquery/i18n/jquery.ui/datepicker-uk.min.js +1 -1
  202. data/templates/jquery/i18n/jquery.ui/datepicker-vi.min.js +1 -1
  203. data/templates/jquery/i18n/jquery.ui/datepicker-zh-CN.min.js +1 -1
  204. data/templates/jquery/i18n/jquery.ui/datepicker-zh-HK.min.js +1 -1
  205. data/templates/jquery/i18n/jquery.ui/datepicker-zh-TW.min.js +1 -1
  206. data/templates/jquery/jquery-ui.js +217 -104
  207. data/templates/jquery/jquery-ui.min.js +437 -436
  208. data/templates/jquery/jquery.bgiframe.min.js +1 -1
  209. data/templates/jquery/jquery.contextMenu.min.js +7 -7
  210. data/templates/jquery/jquery.cookie.js +60 -58
  211. data/templates/jquery/jquery.cookie.min.js +1 -1
  212. data/templates/jquery/jquery.dotimeout.min.js +2 -2
  213. data/templates/jquery/jquery.dst.min.js +4 -4
  214. data/templates/jquery/jquery.farbtastic.min.js +10 -10
  215. data/templates/jquery/jquery.form.js +15 -5
  216. data/templates/jquery/jquery.form.min.js +20 -20
  217. data/templates/jquery/jquery.haml.min.js +5 -5
  218. data/templates/jquery/jquery.hotkeys.min.js +3 -3
  219. data/templates/jquery/jquery.js +8205 -8170
  220. data/templates/jquery/jquery.layout.min.js +48 -50
  221. data/templates/jquery/jquery.min.js +166 -167
  222. data/templates/jquery/jquery.mousewheel.min.js +2 -2
  223. data/templates/jquery/jquery.offline.min.js +4 -4
  224. data/templates/jquery/jquery.pngFix.js +28 -30
  225. data/templates/jquery/jquery.pngFix.min.js +5 -5
  226. data/templates/jquery/jquery.rails.js +166 -0
  227. data/templates/jquery/jquery.rails.min.js +6 -0
  228. data/templates/jquery/jquery.replacetext.min.js +1 -1
  229. data/templates/jquery/jquery.themeswitchertool.min.js +4 -4
  230. data/templates/jquery/jquery.tmpl.js +14 -12
  231. data/templates/jquery/jquery.tmpl.min.js +12 -12
  232. data/templates/jquery/jquery.tmplPlus.js +2 -2
  233. data/templates/jquery/jquery.tmplPlus.min.js +3 -3
  234. data/templates/jquery/jquery.tokeninput.js +729 -0
  235. data/templates/jquery/jquery.tokeninput.min.js +14 -0
  236. data/templates/jquery/jquery/ui/_theme.scss +23 -16
  237. data/templates/jquery/jquery/ui/black-tie/ui-icons_4ca300_256x240.png +0 -0
  238. data/templates/jquery/jquery/ui/black-tie/ui-icons_bbbbbb_256x240.png +0 -0
  239. data/templates/jquery/jquery/ui/black-tie/ui-icons_ededed_256x240.png +0 -0
  240. data/templates/jquery/jquery/ui/black-tie/ui-icons_ffcf29_256x240.png +0 -0
  241. data/templates/jquery/jquery/ui/tokeninput.facebook.scss +95 -0
  242. data/templates/jquery/jquery/ui/tokeninput.mac.scss +164 -0
  243. data/templates/jquery/jquery/ui/tokeninput.scss +85 -0
  244. data/templates/jquery/jquery/ui/vader/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  245. data/templates/jquery/jquery/ui/vader/ui-icons_bbbbbb_256x240.png +0 -0
  246. data/templates/jquery/jquery/ui/vader/ui-icons_c98000_256x240.png +0 -0
  247. data/templates/jquery/jquery/ui/vader/ui-icons_f29a00_256x240.png +0 -0
  248. data/templates/jquery/json.min.js +6 -6
  249. data/templates/jquery/json2.js +214 -214
  250. data/templates/jquery/json2.min.js +5 -6
  251. data/templates/jquery/manifest.rb +9 -2
  252. data/templates/jstree/jquery.jstree.min.js +222 -224
  253. data/templates/mobile/config/initializers/mobile.rb +1 -1
  254. data/templates/mobile/jquery.mobile.js +887 -404
  255. data/templates/mobile/jquery.mobile.min.js +4 -4
  256. data/templates/mobile/jquery/mobile/_base.scss +50 -26
  257. data/templates/mobile/jquery/mobile/default.scss +59 -63
  258. data/templates/mobile/jquery/mobile/valencia.scss +44 -42
  259. data/templates/ribbon/jquery.ribbon.min.js +14 -14
  260. data/templates/tiny_mce/manifest.rb +4 -0
  261. data/templates/tiny_mce/tiny_mce/langs/de.js +1 -1
  262. data/templates/tiny_mce/tiny_mce/langs/en.js +1 -1
  263. data/templates/tiny_mce/tiny_mce/plugins/advimage/js/image.js +1 -1
  264. data/templates/tiny_mce/tiny_mce/plugins/advimage/langs/de_dlg.js +1 -1
  265. data/templates/tiny_mce/tiny_mce/plugins/advlink/js/advlink.js +1 -1
  266. data/templates/tiny_mce/tiny_mce/plugins/advlink/langs/en_dlg.js +1 -1
  267. data/templates/tiny_mce/tiny_mce/plugins/advlink/link.htm +1 -1
  268. data/templates/tiny_mce/tiny_mce/plugins/advlist/editor_plugin.js +1 -1
  269. data/templates/tiny_mce/tiny_mce/plugins/advlist/editor_plugin_src.js +1 -1
  270. data/templates/tiny_mce/tiny_mce/plugins/autolink/editor_plugin.js +1 -0
  271. data/templates/tiny_mce/tiny_mce/plugins/autolink/editor_plugin_src.js +1 -0
  272. data/templates/tiny_mce/tiny_mce/plugins/autoresize/editor_plugin.js +1 -1
  273. data/templates/tiny_mce/tiny_mce/plugins/autoresize/editor_plugin_src.js +1 -1
  274. data/templates/tiny_mce/tiny_mce/plugins/contextmenu/editor_plugin.js +1 -1
  275. data/templates/tiny_mce/tiny_mce/plugins/contextmenu/editor_plugin_src.js +1 -1
  276. data/templates/tiny_mce/tiny_mce/plugins/fullpage/css/fullpage.css +1 -1
  277. data/templates/tiny_mce/tiny_mce/plugins/fullpage/editor_plugin.js +1 -1
  278. data/templates/tiny_mce/tiny_mce/plugins/fullpage/editor_plugin_src.js +1 -1
  279. data/templates/tiny_mce/tiny_mce/plugins/fullpage/fullpage.htm +1 -1
  280. data/templates/tiny_mce/tiny_mce/plugins/fullpage/js/fullpage.js +1 -1
  281. data/templates/tiny_mce/tiny_mce/plugins/legacyoutput/editor_plugin.js +1 -1
  282. data/templates/tiny_mce/tiny_mce/plugins/legacyoutput/editor_plugin_src.js +1 -1
  283. data/templates/tiny_mce/tiny_mce/plugins/lists/editor_plugin.js +1 -0
  284. data/templates/tiny_mce/tiny_mce/plugins/lists/editor_plugin_src.js +1 -0
  285. data/templates/tiny_mce/tiny_mce/plugins/media/js/media.js +1 -1
  286. data/templates/tiny_mce/tiny_mce/plugins/media/media.htm +1 -1
  287. data/templates/tiny_mce/tiny_mce/plugins/noneditable/editor_plugin.js +1 -1
  288. data/templates/tiny_mce/tiny_mce/plugins/noneditable/editor_plugin_src.js +1 -1
  289. data/templates/tiny_mce/tiny_mce/plugins/paste/editor_plugin.js +1 -1
  290. data/templates/tiny_mce/tiny_mce/plugins/paste/editor_plugin_src.js +1 -1
  291. data/templates/tiny_mce/tiny_mce/plugins/searchreplace/js/searchreplace.js +1 -1
  292. data/templates/tiny_mce/tiny_mce/plugins/spellchecker/editor_plugin.js +1 -1
  293. data/templates/tiny_mce/tiny_mce/plugins/spellchecker/editor_plugin_src.js +1 -1
  294. data/templates/tiny_mce/tiny_mce/plugins/table/editor_plugin.js +1 -1
  295. data/templates/tiny_mce/tiny_mce/plugins/table/editor_plugin_src.js +1 -1
  296. data/templates/tiny_mce/tiny_mce/plugins/xhtmlxtras/editor_plugin.js +1 -1
  297. data/templates/tiny_mce/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js +1 -1
  298. data/templates/tiny_mce/tiny_mce/plugins/xhtmlxtras/js/attributes.js +1 -1
  299. data/templates/tiny_mce/tiny_mce/themes/advanced/editor_template.js +1 -1
  300. data/templates/tiny_mce/tiny_mce/themes/advanced/editor_template_src.js +1 -1
  301. data/templates/tiny_mce/tiny_mce/themes/advanced/js/charmap.js +1 -1
  302. data/templates/tiny_mce/tiny_mce/themes/advanced/langs/de_dlg.js +1 -1
  303. data/templates/tiny_mce/tiny_mce/themes/advanced/langs/en_dlg.js +1 -1
  304. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/default/ui.css +1 -1
  305. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/o2k7/dialog.css +1 -1
  306. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/o2k7/ui.css +1 -1
  307. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +1 -1
  308. data/templates/tiny_mce/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +1 -1
  309. data/templates/tiny_mce/tiny_mce/tiny_mce.js +1 -1
  310. data/templates/tiny_mce/tiny_mce/utils/form_utils.js +1 -1
  311. data/templates/tiny_mce/tiny_mce/utils/validate.js +1 -1
  312. data/templates/tools/flowplayer.min.js +29 -30
  313. data/templates/tools/jquery.tools.min.js +96 -96
  314. data/templates/tools/swfobject.min.js +18 -19
  315. metadata +95 -16
  316. data/templates/jquery/jrails.js +0 -200
  317. data/templates/jquery/jrails.min.js +0 -8
@@ -1,5 +1,5 @@
1
- (function(){jQuery.fn.pngFix=function(c){c=jQuery.extend({blankgif:"/images/jquery/ui/pngFix/blank.gif"},c);var e=navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion)==4&&navigator.appVersion.indexOf("MSIE 5.5")!=-1,f=navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion)==4&&navigator.appVersion.indexOf("MSIE 6.0")!=-1;if(jQuery.browser.msie&&(e||f)){jQuery(this).find("img[@src$=.png]").each(function(){jQuery(this).attr("width",jQuery(this).width());
2
- jQuery(this).attr("height",jQuery(this).height());var a="",b="",g=jQuery(this).attr("id")?'id="'+jQuery(this).attr("id")+'" ':"",h=jQuery(this).attr("class")?'class="'+jQuery(this).attr("class")+'" ':"",i=jQuery(this).attr("title")?'title="'+jQuery(this).attr("title")+'" ':"",j=jQuery(this).attr("alt")?'alt="'+jQuery(this).attr("alt")+'" ':"",k=jQuery(this).attr("align")?"float:"+jQuery(this).attr("align")+";":"",d=jQuery(this).parent().attr("href")?"cursor:hand;":"";if(this.style.border){a+="border:"+
3
- this.style.border+";";this.style.border=""}if(this.style.padding){a+="padding:"+this.style.padding+";";this.style.padding=""}if(this.style.margin){a+="margin:"+this.style.margin+";";this.style.margin=""}var l=this.style.cssText;b+="<span "+g+h+i+j;b+='style="position:relative;white-space:pre-line;display:inline-block;background:transparent;'+k+d;b+="width:"+jQuery(this).width()+"px;height:"+jQuery(this).height()+"px;";b+="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+jQuery(this).attr("src")+
4
- "', sizingMethod='scale');";b+=l+'"></span>';if(a!="")b='<span style="position:relative;display:inline-block;'+a+d+"width:"+jQuery(this).width()+"px;height:"+jQuery(this).height()+'px;">'+b+"</span>";jQuery(this).hide();jQuery(this).after(b)});jQuery(this).find("*").each(function(){var a=jQuery(this).css("background-image");if(a.indexOf(".png")!=-1){a=a.split('url("')[1].split('")')[0];jQuery(this).css("background-image","none");jQuery(this).get(0).runtimeStyle.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+
5
- a+"',sizingMethod='scale')"}});jQuery(this).find("input[@src$=.png]").each(function(){var a=jQuery(this).attr("src");jQuery(this).get(0).runtimeStyle.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+a+"', sizingMethod='scale');";jQuery(this).attr("src",c.blankgif)})}return jQuery}})(jQuery);
1
+ (function(){jQuery.fn.pngFix=function(c){var c=jQuery.extend({blankgif:"/images/jquery/ui/pngFix/blank.gif"},c),d=navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion)==4&&navigator.appVersion.indexOf("MSIE 5.5")!=-1,e=navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion)==4&&navigator.appVersion.indexOf("MSIE 6.0")!=-1;if(jQuery.browser.msie&&(d||e))jQuery(this).find("img[@src$=.png]").each(function(){jQuery(this).attr("width",jQuery(this).width());
2
+ jQuery(this).attr("height",jQuery(this).height());var a="",b="",c=jQuery(this).attr("id")?'id="'+jQuery(this).attr("id")+'" ':"",d=jQuery(this).attr("class")?'class="'+jQuery(this).attr("class")+'" ':"",e=jQuery(this).attr("title")?'title="'+jQuery(this).attr("title")+'" ':"",g=jQuery(this).attr("alt")?'alt="'+jQuery(this).attr("alt")+'" ':"",h=jQuery(this).attr("align")?"float:"+jQuery(this).attr("align")+";":"",f=jQuery(this).parent().attr("href")?"cursor:hand;":"";if(this.style.border)a+="border:"+
3
+ this.style.border+";",this.style.border="";if(this.style.padding)a+="padding:"+this.style.padding+";",this.style.padding="";if(this.style.margin)a+="margin:"+this.style.margin+";",this.style.margin="";var i=this.style.cssText;b+="<span "+c+d+e+g;b+='style="position:relative;white-space:pre-line;display:inline-block;background:transparent;'+h+f;b+="width:"+jQuery(this).width()+"px;height:"+jQuery(this).height()+"px;";b+="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+jQuery(this).attr("src")+
4
+ "', sizingMethod='scale');";b+=i+'"></span>';a!=""&&(b='<span style="position:relative;display:inline-block;'+a+f+"width:"+jQuery(this).width()+"px;height:"+jQuery(this).height()+'px;">'+b+"</span>");jQuery(this).hide();jQuery(this).after(b)}),jQuery(this).find("*").each(function(){var a=jQuery(this).css("background-image");if(a.indexOf(".png")!=-1)a=a.split('url("')[1].split('")')[0],jQuery(this).css("background-image","none"),jQuery(this).get(0).runtimeStyle.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+
5
+ a+"',sizingMethod='scale')"}),jQuery(this).find("input[@src$=.png]").each(function(){var a=jQuery(this).attr("src");jQuery(this).get(0).runtimeStyle.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+a+"', sizingMethod='scale');";jQuery(this).attr("src",c.blankgif)});return jQuery}})(jQuery);
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Unobtrusive scripting adapter for jQuery
3
+ *
4
+ * Requires jQuery 1.4.3 or later.
5
+ * https://github.com/rails/jquery-ujs
6
+ */
7
+
8
+ (function($) {
9
+ // Make sure that every Ajax request sends the CSRF token
10
+ function CSRFProtection(xhr) {
11
+ var token = $('meta[name="csrf-token"]').attr('content');
12
+ if (token) xhr.setRequestHeader('X-CSRF-Token', token);
13
+ }
14
+
15
+ if ('ajaxPrefilter' in $) $.ajaxPrefilter(function(options, originalOptions, xhr) {
16
+ CSRFProtection(xhr)
17
+ });
18
+ else $(document).ajaxSend(function(e, xhr) {
19
+ CSRFProtection(xhr)
20
+ });
21
+
22
+ // Triggers an event on an element and returns the event result
23
+ function fire(obj, name, data) {
24
+ var event = $.Event(name);
25
+ obj.trigger(event, data);
26
+ return event.result !== false;
27
+ }
28
+
29
+ // Submits "remote" forms and links with ajax
30
+ function handleRemote(element) {
31
+ var method, url, data,
32
+ dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType);
33
+
34
+ if (fire(element, 'ajax:before')) {
35
+ if (element.is('form')) {
36
+ method = element.attr('method');
37
+ url = element.attr('action');
38
+ data = element.serializeArray();
39
+ // memoized value from clicked submit button
40
+ var button = element.data('ujs:submit-button');
41
+ if (button) {
42
+ data.push(button);
43
+ element.data('ujs:submit-button', null);
44
+ }
45
+ } else {
46
+ method = element.data('method');
47
+ url = element.attr('href');
48
+ data = null;
49
+ }
50
+ $.ajax({
51
+ url: url, type: method || 'GET', data: data, dataType: dataType,
52
+ // stopping the "ajax:beforeSend" event will cancel the ajax request
53
+ beforeSend: function(xhr, settings) {
54
+ if (settings.dataType === undefined) {
55
+ xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);
56
+ }
57
+ return fire(element, 'ajax:beforeSend', [xhr, settings]);
58
+ },
59
+ success: function(data, status, xhr) {
60
+ element.trigger('ajax:success', [data, status, xhr]);
61
+ },
62
+ complete: function(xhr, status) {
63
+ element.trigger('ajax:complete', [xhr, status]);
64
+ },
65
+ error: function(xhr, status, error) {
66
+ element.trigger('ajax:error', [xhr, status, error]);
67
+ }
68
+ });
69
+ }
70
+ }
71
+
72
+ // Handles "data-method" on links such as:
73
+ // <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a>
74
+ function handleMethod(link) {
75
+ var href = link.attr('href'),
76
+ method = link.data('method'),
77
+ csrf_token = $('meta[name=csrf-token]').attr('content'),
78
+ csrf_param = $('meta[name=csrf-param]').attr('content'),
79
+ form = $('<form method="post" action="' + href + '"></form>'),
80
+ metadata_input = '<input name="_method" value="' + method + '" type="hidden" />';
81
+
82
+ if (csrf_param !== undefined && csrf_token !== undefined) {
83
+ metadata_input += '<input name="' + csrf_param + '" value="' + csrf_token + '" type="hidden" />';
84
+ }
85
+
86
+ form.hide().append(metadata_input).appendTo('body');
87
+ form.submit();
88
+ }
89
+
90
+ function disableFormElements(form) {
91
+ form.find('input[data-disable-with], button[data-disable-with]').each(function() {
92
+ var element = $(this), method = element.is('button') ? 'html' : 'val';
93
+ element.data('ujs:enable-with', element[method]());
94
+ element[method](element.data('disable-with'));
95
+ element.attr('disabled', 'disabled');
96
+ });
97
+ }
98
+
99
+ function enableFormElements(form) {
100
+ form.find('input[data-disable-with]:disabled, button[data-disable-with]:disabled').each(function() {
101
+ var element = $(this), method = element.is('button') ? 'html' : 'val';
102
+ if (element.data('ujs:enable-with')) element[method](element.data('ujs:enable-with'));
103
+ element.removeAttr('disabled');
104
+ });
105
+ }
106
+
107
+ function allowAction(element) {
108
+ var message = element.data('confirm');
109
+ return !message || (fire(element, 'confirm') && confirm(message));
110
+ }
111
+
112
+ function requiredValuesMissing(form) {
113
+ var missing = false;
114
+ form.find('input[name][required]').each(function() {
115
+ if (!$(this).val()) missing = true;
116
+ });
117
+ return missing;
118
+ }
119
+
120
+ $('a[data-confirm], a[data-method], a[data-remote]').live('click.rails', function(e) {
121
+ var link = $(this);
122
+ if (!allowAction(link)) return false;
123
+
124
+ if (link.data('remote') != undefined) {
125
+ handleRemote(link);
126
+ return false;
127
+ } else if (link.data('method')) {
128
+ handleMethod(link);
129
+ return false;
130
+ }
131
+ });
132
+
133
+ $('form').live('submit.rails', function(e) {
134
+ var form = $(this), remote = form.data('remote') != undefined;
135
+ if (!allowAction(form)) return false;
136
+
137
+ // skip other logic when required values are missing
138
+ if (requiredValuesMissing(form)) return !remote;
139
+
140
+ if (remote) {
141
+ handleRemote(form);
142
+ return false;
143
+ } else {
144
+ // slight timeout so that the submit button gets properly serialized
145
+ setTimeout(function() {
146
+ disableFormElements(form)
147
+ }, 13);
148
+ }
149
+ });
150
+
151
+ $('form input[type=submit], form input[type=image], form button[type=submit], form button:not([type])').live('click.rails', function() {
152
+ var button = $(this);
153
+ if (!allowAction(button)) return false;
154
+ // register the pressed submit button
155
+ var name = button.attr('name'), data = name ? {name:name, value:button.val()} : null;
156
+ button.closest('form').data('ujs:submit-button', data);
157
+ });
158
+
159
+ $('form').live('ajax:beforeSend.rails', function(event) {
160
+ if (this == event.target) disableFormElements($(this));
161
+ });
162
+
163
+ $('form').live('ajax:complete.rails', function(event) {
164
+ if (this == event.target) enableFormElements($(this));
165
+ });
166
+ })(jQuery);
@@ -0,0 +1,6 @@
1
+ (function(c){function f(a){var b=c('meta[name="csrf-token"]').attr("content");b&&a.setRequestHeader("X-CSRF-Token",b)}function h(a,b,d){b=c.Event(b);a.trigger(b,d);return b.result!==!1}function i(a){var b,d,e,g=a.data("type")||c.ajaxSettings&&c.ajaxSettings.dataType;if(h(a,"ajax:before")){if(a.is("form")){b=a.attr("method");d=a.attr("action");e=a.serializeArray();var f=a.data("ujs:submit-button");f&&(e.push(f),a.data("ujs:submit-button",null))}else b=a.data("method"),d=a.attr("href"),e=null;c.ajax({url:d,
2
+ type:b||"GET",data:e,dataType:g,beforeSend:function(b,c){c.dataType===void 0&&b.setRequestHeader("accept","*/*;q=0.5, "+c.accepts.script);return h(a,"ajax:beforeSend",[b,c])},success:function(b,c,d){a.trigger("ajax:success",[b,c,d])},complete:function(b,c){a.trigger("ajax:complete",[b,c])},error:function(b,c,d){a.trigger("ajax:error",[b,c,d])}})}}function j(a){a.find("input[data-disable-with], button[data-disable-with]").each(function(){var b=c(this),a=b.is("button")?"html":"val";b.data("ujs:enable-with",
3
+ b[a]());b[a](b.data("disable-with"));b.attr("disabled","disabled")})}function k(a){a.find("input[data-disable-with]:disabled, button[data-disable-with]:disabled").each(function(){var a=c(this),d=a.is("button")?"html":"val";if(a.data("ujs:enable-with"))a[d](a.data("ujs:enable-with"));a.removeAttr("disabled")})}function g(a){var b=a.data("confirm");return!b||h(a,"confirm")&&confirm(b)}function l(a){var b=!1;a.find("input[name][required]").each(function(){c(this).val()||(b=!0)});return b}"ajaxPrefilter"in
4
+ c?c.ajaxPrefilter(function(a,b,c){f(c)}):c(document).ajaxSend(function(a,b){f(b)});c("a[data-confirm], a[data-method], a[data-remote]").live("click.rails",function(){var a=c(this);if(!g(a))return!1;if(a.data("remote")!=void 0)return i(a),!1;else if(a.data("method")){var b=a.attr("href"),d=a.data("method"),a=c("meta[name=csrf-token]").attr("content"),e=c("meta[name=csrf-param]").attr("content"),b=c('<form method="post" action="'+b+'"></form>'),d='<input name="_method" value="'+d+'" type="hidden" />';
5
+ e!==void 0&&a!==void 0&&(d+='<input name="'+e+'" value="'+a+'" type="hidden" />');b.hide().append(d).appendTo("body");b.submit();return!1}});c("form").live("submit.rails",function(){var a=c(this),b=a.data("remote")!=void 0;if(!g(a))return!1;if(l(a))return!b;if(b)return i(a),!1;else setTimeout(function(){j(a)},13)});c("form input[type=submit], form input[type=image], form button[type=submit], form button:not([type])").live("click.rails",function(){var a=c(this);if(!g(a))return!1;var b=a.attr("name"),
6
+ b=b?{name:b,value:a.val()}:null;a.closest("form").data("ujs:submit-button",b)});c("form").live("ajax:beforeSend.rails",function(a){this==a.target&&j(c(this))});c("form").live("ajax:complete.rails",function(a){this==a.target&&k(c(this))})})(jQuery);
@@ -1 +1 @@
1
- (function(c){c.fn.replaceText=function(f,g,h){return this.each(function(){var a=this.firstChild,d,b,e=[];if(a){do if(a.nodeType===3){d=a.nodeValue;b=d.replace(f,g);if(b!==d)if(!h&&/</.test(b)){c(a).before(b);e.push(a)}else a.nodeValue=b}while(a=a.nextSibling)}e.length&&c(e).remove()})}})(jQuery);
1
+ (function(c){c.fn.replaceText=function(f,g,h){return this.each(function(){var a=this.firstChild,d,b,e=[];if(a){do if(a.nodeType===3&&(d=a.nodeValue,b=d.replace(f,g),b!==d))!h&&/</.test(b)?(c(a).before(b),e.push(a)):a.nodeValue=b;while(a=a.nextSibling)}e.length&&c(e).remove()})}})(jQuery);
@@ -1,7 +1,7 @@
1
- $.fn.themeswitcher=function(e){var a=jQuery.extend({loadTheme:null,initialText:"Switch Theme",width:150,height:400,buttonPreText:"Theme: ",closeOnSelect:true,buttonHeight:14,cookieName:"jquery-ui-theme",onOpen:function(){},onClose:function(){},onSelect:function(){}},e),c=$('<a href="#" class="jquery-ui-themeswitcher-trigger"><span class="jquery-ui-themeswitcher-icon"></span><span class="jquery-ui-themeswitcher-title">'+a.initialText+"</span></a>"),b=$('<div class="jquery-ui-themeswitcher"><div id="themeGallery"> <ul> <li><a href="compiled/jquery/ui/ui-lightness.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_ui_light.png" alt="UI Lightness" title="UI Lightness" /> <span class="themeName">UI lightness</span></a></li> <li><a href="compiled/jquery/ui/ui-darkness.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_ui_dark.png" alt="UI Darkness" title="UI Darkness" /> <span class="themeName">UI darkness</span> </a></li> <li><a href="compiled/jquery/ui/smoothness.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_smoothness.png" alt="Smoothness" title="Smoothness" /> <span class="themeName">Smoothness</span> </a></li> <li><a href="compiled/jquery/ui/start.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_start_menu.png" alt="Start" title="Start" /> <span class="themeName">Start</span></a></li></li> <li><a href="compiled/jquery/ui/redmond.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_windoze.png" alt="Redmond" title="Redmond" /> <span class="themeName">Redmond</span></a></li></li> <li><a href="compiled/jquery/ui/sunny.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_sunny.png" alt="Sunny" title="Sunny" /> <span class="themeName">Sunny</span></a></li></li> <li><a href="compiled/jquery/ui/overcast.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_overcast.png" alt="Overcast" title="Overcast" /> <span class="themeName">Overcast</span></a></li> <li><a href="compiled/jquery/ui/le-frog.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_le_frog.png" alt="Le Frog" title="Le Frog" /> <span class="themeName">Le Frog</span></a></li></li> <li><a href="compiled/jquery/ui/flick.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_flick.png" alt="Flick" title="Flick" /> <span class="themeName">Flick</span></a></li> <li><a href="compiled/jquery/ui/pepper-grinder.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_pepper_grinder.png" alt="Pepper Grinder" title="Pepper Grinder" /> <span class="themeName">Pepper Grinder</span></a></li> <li><a href="compiled/jquery/ui/eggplant.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_eggplant.png" alt="Eggplant" title="Eggplant" /> <span class="themeName">Eggplant</span></a></li> <li><a href="compiled/jquery/ui/dark-hive.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_dark_hive.png" alt="Dark Hive" title="Dark Hive" /> <span class="themeName">Dark Hive</span></a></li></li> <li><a href="compiled/jquery/ui/cupertino.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_cupertino.png" alt="Cupertino" title="Cupertino" /> <span class="themeName">Cupertino</span></a></li> <li><a href="compiled/jquery/ui/south-street.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_south_street.png" alt="South St" title="South St" /> <span class="themeName">South Street</span></a></li> <li><a href="compiled/jquery/ui/blitzer.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_blitzer.png" alt="Blitzer" title="Blitzer" /> <span class="themeName">Blitzer</span></a></li></li> <li><a href="compiled/jquery/ui/humanity.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_humanity.png" alt="Humanity" title="Humanity" /> <span class="themeName">Humanity</span></a></li></li> <li><a href="compiled/jquery/ui/hot-sneaks.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_hot_sneaks.png" alt="Hot Sneaks" title="Hot Sneaks" /> <span class="themeName">Hot sneaks</span></a></li></li> <li><a href="compiled/jquery/ui/excite-bike.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_excite_bike.png" alt="Excite Bike" title="Excite Bike" /> <span class="themeName">Excite Bike</span></a></li> <li><a href="compiled/jquery/ui/vader.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_black_matte.png" alt="Vader" title="Vader" /> <span class="themeName">Vader</span></a></li> <li><a href="compiled/jquery/ui/dot-luv.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_dot_luv.png" alt="Dot Luv" title="Dot Luv" /> <span class="themeName">Dot Luv</span></a></li> <li><a href="compiled/jquery/ui/mint-choc.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_mint_choco.png" alt="Mint Choc" title="Mint Choc" /> <span class="themeName">Mint Choc</span></a></li></li> <li><a href="compiled/jquery/ui/black-tie.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_black_tie.png" alt="Black Tie" title="Black Tie" /> <span class="themeName">Black Tie</span></a></li></li> <li><a href="compiled/jquery/ui/trontastic.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_trontastic.png" alt="Trontastic" title="Trontastic" /><span class="themeName">Trontastic</span></a></li> <li><a href="compiled/jquery/ui/swanky-purse.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_swanky_purse.png" alt="Swanky Purse" title="Swanky Purse" /> <span class="themeName">Swanky Purse</span></a></li></ul></div></div>').find("div").removeAttr("id");
2
- c.click(function(){b.is(":visible")?b.spHide():b.spShow();return false});b.hover(function(){},function(){b.is(":visible")&&$(this).spHide()});$.fn.spShow=function(){$(this).css({top:c.offset().top+a.buttonHeight+6,left:c.offset().left}).slideDown(50);c.css(g);a.onOpen()};$.fn.spHide=function(){$(this).slideUp(50,function(){a.onClose()});c.css(f)};b.find("a").click(function(){var d=$(this).attr("href");d=$('<link href="/stylesheets/'+d+'" type="text/css" rel="Stylesheet" class="ui-theme" />');$("head").append(d);
3
- $("link.ui-theme").size()>3&&$("link.ui-theme:first").remove();d=$(this).find("span").text();c.find(".jquery-ui-themeswitcher-title").text(a.buttonPreText+d);$.cookie(a.cookieName,d);a.onSelect();a.closeOnSelect&&b.is(":visible")&&b.spHide();return false});var f={fontFamily:"Trebuchet MS, Verdana, sans-serif",fontSize:"11px",color:"#666",background:'#eee image_url("jquery/ui/themeSwitcher/buttonbg.png") 50% 50% repeat-x',border:"1px solid #ccc","-moz-border-radius":"6px","-webkit-border-radius":"6px",
1
+ $.fn.themeswitcher=function(e){var a=jQuery.extend({loadTheme:null,initialText:"Switch Theme",width:150,height:400,buttonPreText:"Theme: ",closeOnSelect:!0,buttonHeight:14,cookieName:"jquery-ui-theme",onOpen:function(){},onClose:function(){},onSelect:function(){}},e),c=$('<a href="#" class="jquery-ui-themeswitcher-trigger"><span class="jquery-ui-themeswitcher-icon"></span><span class="jquery-ui-themeswitcher-title">'+a.initialText+"</span></a>"),b=$('<div class="jquery-ui-themeswitcher"><div id="themeGallery"> <ul> <li><a href="compiled/jquery/ui/ui-lightness.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_ui_light.png" alt="UI Lightness" title="UI Lightness" /> <span class="themeName">UI lightness</span></a></li> <li><a href="compiled/jquery/ui/ui-darkness.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_ui_dark.png" alt="UI Darkness" title="UI Darkness" /> <span class="themeName">UI darkness</span> </a></li> <li><a href="compiled/jquery/ui/smoothness.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_smoothness.png" alt="Smoothness" title="Smoothness" /> <span class="themeName">Smoothness</span> </a></li> <li><a href="compiled/jquery/ui/start.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_start_menu.png" alt="Start" title="Start" /> <span class="themeName">Start</span></a></li></li> <li><a href="compiled/jquery/ui/redmond.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_windoze.png" alt="Redmond" title="Redmond" /> <span class="themeName">Redmond</span></a></li></li> <li><a href="compiled/jquery/ui/sunny.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_sunny.png" alt="Sunny" title="Sunny" /> <span class="themeName">Sunny</span></a></li></li> <li><a href="compiled/jquery/ui/overcast.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_overcast.png" alt="Overcast" title="Overcast" /> <span class="themeName">Overcast</span></a></li> <li><a href="compiled/jquery/ui/le-frog.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_le_frog.png" alt="Le Frog" title="Le Frog" /> <span class="themeName">Le Frog</span></a></li></li> <li><a href="compiled/jquery/ui/flick.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_flick.png" alt="Flick" title="Flick" /> <span class="themeName">Flick</span></a></li> <li><a href="compiled/jquery/ui/pepper-grinder.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_pepper_grinder.png" alt="Pepper Grinder" title="Pepper Grinder" /> <span class="themeName">Pepper Grinder</span></a></li> <li><a href="compiled/jquery/ui/eggplant.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_eggplant.png" alt="Eggplant" title="Eggplant" /> <span class="themeName">Eggplant</span></a></li> <li><a href="compiled/jquery/ui/dark-hive.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_dark_hive.png" alt="Dark Hive" title="Dark Hive" /> <span class="themeName">Dark Hive</span></a></li></li> <li><a href="compiled/jquery/ui/cupertino.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_cupertino.png" alt="Cupertino" title="Cupertino" /> <span class="themeName">Cupertino</span></a></li> <li><a href="compiled/jquery/ui/south-street.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_south_street.png" alt="South St" title="South St" /> <span class="themeName">South Street</span></a></li> <li><a href="compiled/jquery/ui/blitzer.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_blitzer.png" alt="Blitzer" title="Blitzer" /> <span class="themeName">Blitzer</span></a></li></li> <li><a href="compiled/jquery/ui/humanity.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_humanity.png" alt="Humanity" title="Humanity" /> <span class="themeName">Humanity</span></a></li></li> <li><a href="compiled/jquery/ui/hot-sneaks.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_hot_sneaks.png" alt="Hot Sneaks" title="Hot Sneaks" /> <span class="themeName">Hot sneaks</span></a></li></li> <li><a href="compiled/jquery/ui/excite-bike.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_excite_bike.png" alt="Excite Bike" title="Excite Bike" /> <span class="themeName">Excite Bike</span></a></li> <li><a href="compiled/jquery/ui/vader.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_black_matte.png" alt="Vader" title="Vader" /> <span class="themeName">Vader</span></a></li> <li><a href="compiled/jquery/ui/dot-luv.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_dot_luv.png" alt="Dot Luv" title="Dot Luv" /> <span class="themeName">Dot Luv</span></a></li> <li><a href="compiled/jquery/ui/mint-choc.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_mint_choco.png" alt="Mint Choc" title="Mint Choc" /> <span class="themeName">Mint Choc</span></a></li></li> <li><a href="compiled/jquery/ui/black-tie.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_black_tie.png" alt="Black Tie" title="Black Tie" /> <span class="themeName">Black Tie</span></a></li></li> <li><a href="compiled/jquery/ui/trontastic.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_trontastic.png" alt="Trontastic" title="Trontastic" /><span class="themeName">Trontastic</span></a></li> <li><a href="compiled/jquery/ui/swanky-purse.css"> <img src="/images/jquery/ui/themeSwitcher/theme_90_swanky_purse.png" alt="Swanky Purse" title="Swanky Purse" /> <span class="themeName">Swanky Purse</span></a></li></ul></div></div>').find("div").removeAttr("id");
2
+ c.click(function(){b.is(":visible")?b.spHide():b.spShow();return!1});b.hover(function(){},function(){b.is(":visible")&&$(this).spHide()});$.fn.spShow=function(){$(this).css({top:c.offset().top+a.buttonHeight+6,left:c.offset().left}).slideDown(50);c.css(g);a.onOpen()};$.fn.spHide=function(){$(this).slideUp(50,function(){a.onClose()});c.css(f)};b.find("a").click(function(){var d=$(this).attr("href"),d=$('<link href="/stylesheets/'+d+'" type="text/css" rel="Stylesheet" class="ui-theme" />');$("head").append(d);
3
+ $("link.ui-theme").size()>3&&$("link.ui-theme:first").remove();d=$(this).find("span").text();c.find(".jquery-ui-themeswitcher-title").text(a.buttonPreText+d);$.cookie(a.cookieName,d);a.onSelect();a.closeOnSelect&&b.is(":visible")&&b.spHide();return!1});var f={fontFamily:"Trebuchet MS, Verdana, sans-serif",fontSize:"11px",color:"#666",background:'#eee image_url("jquery/ui/themeSwitcher/buttonbg.png") 50% 50% repeat-x',border:"1px solid #ccc","-moz-border-radius":"6px","-webkit-border-radius":"6px",
4
4
  textDecoration:"none",padding:"3px 3px 3px 8px",width:a.width-11,display:"block",height:a.buttonHeight,outline:"0"},h={borderColor:"#bbb",background:"#f0f0f0",cursor:"pointer",color:"#444"},g={color:"#aaa",background:"#000",border:"1px solid #ccc",borderBottom:0,"-moz-border-radius-bottomleft":0,"-webkit-border-bottom-left-radius":0,"-moz-border-radius-bottomright":0,"-webkit-border-bottom-right-radius":0,outline:"0"};c.css(f).hover(function(){$(this).css(h)},function(){!b.is(":animated")&&b.is(":hidden")&&
5
5
  $(this).css(f)}).find(".jquery-ui-themeswitcher-icon").css({"float":"right",width:"16px",height:"16px",background:'image_url("jquery/ui/themeSwitcher/icon_color_arrow.gif") 50% 50% no-repeat'});b.css({position:"absolute","float":"left",fontFamily:"Trebuchet MS, Verdana, sans-serif",fontSize:"12px",background:"#000",color:"#fff",padding:"8px 3px 3px",border:"1px solid #ccc","-moz-border-radius-bottomleft":"6px","-webkit-border-bottom-left-radius":"6px","-moz-border-radius-bottomright":"6px","-webkit-border-bottom-right-radius":"6px",
6
6
  borderTop:0,zIndex:999999,width:a.width-6}).find("ul").css({listStyle:"none",margin:"0",padding:"0",overflow:"auto",height:a.height}).end().find("li").hover(function(){$(this).css({borderColor:"#555",background:'image_url("jquery/ui/themeSwitcher/menuhoverbg.png") 50% 50% repeat-x',cursor:"pointer"})},function(){$(this).css({borderColor:"#111",background:"#000",cursor:"auto"})}).css({width:a.width-30,height:"",padding:"2px",margin:"1px",border:"1px solid #111","-moz-border-radius":"4px",clear:"left",
7
- "float":"left"}).end().find("a").css({color:"#aaa",textDecoration:"none","float":"left",width:"100%",outline:"0"}).end().find("img").css({"float":"left",border:"1px solid #333",margin:"0 2px"}).end().find(".themeName").css({"float":"left",margin:"3px 0"}).end();$(this).append(c);$("body").append(b);b.hide();if($.cookie(a.cookieName)||a.loadTheme){e=$.cookie(a.cookieName)||a.loadTheme;b.find("a:contains("+e+")").trigger("click")}return this};
7
+ "float":"left"}).end().find("a").css({color:"#aaa",textDecoration:"none","float":"left",width:"100%",outline:"0"}).end().find("img").css({"float":"left",border:"1px solid #333",margin:"0 2px"}).end().find(".themeName").css({"float":"left",margin:"3px 0"}).end();$(this).append(c);$("body").append(b);b.hide();if($.cookie(a.cookieName)||a.loadTheme)e=$.cookie(a.cookieName)||a.loadTheme,b.find("a:contains("+e+")").trigger("click");return this};
@@ -16,7 +16,7 @@
16
16
  // The content field is a hierarchical array of strings and nested items (to be
17
17
  // removed and replaced by nodes field of dom elements, once inserted in DOM).
18
18
  var newItem = {
19
- data: data || (parentItem ? parentItem.data : {}),
19
+ data: data || (data === 0 || data === false) ? data : (parentItem ? parentItem.data : {}),
20
20
  _wrap: parentItem ? parentItem._wrap : null,
21
21
  tmpl: null,
22
22
  parent: parentItem || null,
@@ -195,7 +195,8 @@
195
195
  // Return named compiled template
196
196
  return name ? (typeof name !== "string" ? jQuery.template(null, name) :
197
197
  (jQuery.template[name] ||
198
- // If not in map, treat as a selector. (If integrated with core, use quickExpr.exec)
198
+ // If not in map, and not containing at least on HTML tag, treat as a selector.
199
+ // (If integrated with core, use quickExpr.exec)
199
200
  jQuery.template(null, htmlExpr.test(name) ? name : jQuery(name)))) : null;
200
201
  },
201
202
 
@@ -209,15 +210,15 @@
209
210
  tag: {
210
211
  "tmpl": {
211
212
  _default: { $2: "null" },
212
- open: "if($notnull_1){_=_.concat($item.nest($1,$2));}"
213
+ open: "if($notnull_1){__=__.concat($item.nest($1,$2));}"
213
214
  // tmpl target parameter can be of type function, so use $1, not $1a (so not auto detection of functions)
214
215
  // This means that {{tmpl foo}} treats foo as a template (which IS a function).
215
216
  // Explicit parens can be used if foo is a function that returns a template: {{tmpl foo()}}.
216
217
  },
217
218
  "wrap": {
218
219
  _default: { $2: "null" },
219
- open: "$item.calls(_,$1,$2);_=[];",
220
- close: "call=$item.calls();_=call._.concat($item.wrap(call,_));"
220
+ open: "$item.calls(__,$1,$2);__=[];",
221
+ close: "call=$item.calls();__=call._.concat($item.wrap(call,__));"
221
222
  },
222
223
  "each": {
223
224
  _default: { $2: "$index, $value" },
@@ -234,12 +235,12 @@
234
235
  },
235
236
  "html": {
236
237
  // Unecoded expression evaluation.
237
- open: "if($notnull_1){_.push($1a);}"
238
+ open: "if($notnull_1){__.push($1a);}"
238
239
  },
239
240
  "=": {
240
241
  // Encoded expression evaluation. Abbreviated form is ${}.
241
242
  _default: { $1: "$data" },
242
- open: "if($notnull_1){_.push($.encode($1a));}"
243
+ open: "if($notnull_1){__.push($.encode($1a));}"
243
244
  },
244
245
  "!": {
245
246
  // Comment tag. Skipped by parser
@@ -316,10 +317,11 @@
316
317
  // Generate a reusable function that will serve to render a template against data
317
318
  function buildTmplFn(markup) {
318
319
  return new Function("jQuery", "$item",
319
- "var $=jQuery,call,_=[],$data=$item.data;" +
320
+ // Use the variable __ to hold a string array while building the compiled template. (See https://github.com/jquery/jquery-tmpl/issues#issue/10).
321
+ "var $=jQuery,call,__=[],$data=$item.data;" +
320
322
 
321
323
  // Introduce the data as local variables using with(){}
322
- "with($data){_.push('" +
324
+ "with($data){__.push('" +
323
325
 
324
326
  // Convert the template into pure JavaScript
325
327
  jQuery.trim(markup)
@@ -330,7 +332,7 @@
330
332
  function(all, slash, type, fnargs, target, parens, args) {
331
333
  var tag = jQuery.tmpl.tag[ type ], def, expr, exprAutoFnDetect;
332
334
  if (!tag) {
333
- throw "Template command not found: " + type;
335
+ throw "Unknown template tag: " + type;
334
336
  }
335
337
  def = tag._default || [];
336
338
  if (parens && !/\w$/.test(target)) {
@@ -354,9 +356,9 @@
354
356
  .split("$1a").join(exprAutoFnDetect)
355
357
  .split("$1").join(expr)
356
358
  .split("$2").join(fnargs || def.$2 || "") +
357
- "_.push('";
359
+ "__.push('";
358
360
  }) +
359
- "');}return _;"
361
+ "');}return __;"
360
362
  );
361
363
  }
362
364
 
@@ -1,12 +1,12 @@
1
- (function(d){function s(a,b,e,c){c={data:c||(b?b.data:{}),_wrap:b?b._wrap:null,tmpl:null,parent:b||null,nodes:[],calls:I,nest:J,wrap:K,html:L,update:M};a&&d.extend(c,a,{nodes:[],parent:b});if(e){c.tmpl=e;c._ctnt=c._ctnt||c.tmpl(d,c);c.key=++t;(y.length?u:l)[t]=c}return c}function v(a,b,e){var c;e=e?d.map(e,function(f){return typeof f==="string"?a.key?f.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+q+'="'+a.key+'" $2'):f:v(f,a,f._ctnt)}):a;if(b)return e;e=e.join("");e.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,
2
- function(f,g,h,j){c=d(h).get();B(c);if(g)c=z(g).concat(c);if(j)c=c.concat(z(j))});return c?c:z(e)}function z(a){var b=document.createElement("div");b.innerHTML=a;return d.makeArray(b.childNodes)}function C(a){return new Function("jQuery","$item","var $=jQuery,call,_=[],$data=$item.data;with($data){_.push('"+d.trim(a).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,
3
- function(b,e,c,f,g,h,j){b=d.tmpl.tag[c];if(!b)throw"Template command not found: "+c;c=b._default||[];if(h&&!/\w$/.test(g)){g+=h;h=""}if(g){g=w(g);j=j?","+w(j)+")":h?")":"";j=h?g.indexOf(".")>-1?g+w(h):"("+g+").call($item"+j:g;h=h?j:"(typeof("+g+")==='function'?("+g+").call($item):("+g+"))"}else h=j=c.$1||"null";f=w(f);return"');"+b[e?"close":"open"].split("$notnull_1").join(g?"typeof("+g+")!=='undefined' && ("+g+")!=null":"true").split("$1a").join(h).split("$1").join(j).split("$2").join(f||c.$2||
4
- "")+"_.push('"})+"');}return _;")}function D(a,b){a._wrap=v(a,true,d.isArray(b)?b:[E.test(b)?b:d(b).html()]).join("")}function w(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function B(a){function b(o){function F(A){A+=e;i=g[A]=g[A]||s(i,l[i.parent.key+e]||i.parent)}var m,k=o,i,r;if(r=o.getAttribute(q)){for(;k.parentNode&&(k=k.parentNode).nodeType===1&&!(m=k.getAttribute(q)););if(m!==r){k=k.parentNode?k.nodeType===11?0:k.getAttribute(q)||0:0;if(!(i=l[r])){i=u[r];i=s(i,l[k]||u[k]);
5
- i.key=++t;l[t]=i}n&&F(r)}o.removeAttribute(q)}else if(n&&(i=d.data(o,"tmplItem"))){F(i.key);l[i.key]=i;k=(k=d.data(o.parentNode,"tmplItem"))?k.key:0}if(i){for(m=i;m&&m.key!=k;){m.nodes.push(o);m=m.parent}delete i._ctnt;delete i._wrap;d.data(o,"tmplItem",i)}}var e="_"+n,c,f,g={},h,j,p;h=0;for(j=a.length;h<j;h++)if((c=a[h]).nodeType===1){f=c.getElementsByTagName("*");for(p=f.length-1;p>=0;p--)b(f[p]);b(c)}}function I(a,b,e,c){if(!a)return y.pop();y.push({_:a,tmpl:b,item:this,data:e,options:c})}function J(a,
6
- b,e){return d.tmpl(d.template(a),b,e,this)}function K(a,b){var e=a.options||{};e.wrapped=b;return d.tmpl(d.template(a.tmpl),a.data,e,a.item)}function L(a,b){var e=this._wrap;return d.map(d(d.isArray(e)?e.join(""):e).filter(a||"*"),function(c){if(b)c=c.innerText||c.textContent;else{var f;if(!(f=c.outerHTML)){f=document.createElement("div");f.appendChild(c.cloneNode(true));f=f.innerHTML}c=f}return c})}function M(){var a=this.nodes;d.tmpl(null,null,null,this).insertBefore(a[0]);d(a).remove()}var G=d.fn.domManip,
7
- q="_tmplitem",E=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,l={},u={},x,H={key:0,data:{}},t=0,n=0,y=[];d.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){d.fn[a]=function(e){var c=[];e=d(e);var f,g,h;f=this.length===1&&this[0].parentNode;x=l||{};if(f&&f.nodeType===11&&f.childNodes.length===1&&e.length===1){e[b](this[0]);c=this}else{g=0;for(h=e.length;g<h;g++){n=g;f=(g>0?this.clone(true):this).get();d(e[g])[b](f);c=c.concat(f)}n=0;
8
- c=this.pushStack(c,a,e.selector)}e=x;x=null;d.tmpl.complete(e);return c}});d.fn.extend({tmpl:function(a,b,e){return d.tmpl(this[0],a,b,e)},tmplItem:function(){return d.tmplItem(this[0])},template:function(a){return d.template(a,this[0])},domManip:function(a,b,e){if(a[0]&&d.isArray(a[0])){for(var c=d.makeArray(arguments),f=a[0],g=f.length,h=0,j;h<g&&!(j=d.data(f[h++],"tmplItem")););if(j&&n)c[2]=function(p){d.tmpl.afterManip(this,p,e)};G.apply(this,c)}else G.apply(this,arguments);n=0;x||d.tmpl.complete(l);
9
- return this}});d.extend({tmpl:function(a,b,e,c){var f=!c;if(f){c=H;a=d.template[a]||d.template(null,a);u={}}else if(!a){a=c.tmpl;l[c.key]=c;c.nodes=[];c.wrapped&&D(c,c.wrapped);return d(v(c,null,c.tmpl(d,c)))}if(!a)return[];if(typeof b==="function")b=b.call(c||{});e&&e.wrapped&&D(e,e.wrapped);b=d.isArray(b)?d.map(b,function(g){return g?s(e,c,a,g):null}):[s(e,c,a,b)];return f?d(v(c,null,b)):b},tmplItem:function(a){var b;if(a instanceof d)a=a[0];for(;a&&a.nodeType===1&&!(b=d.data(a,"tmplItem"))&&(a=
10
- a.parentNode););return b||H},template:function(a,b){if(b){if(typeof b==="string")b=C(b);else if(b instanceof d)b=b[0]||{};if(b.nodeType)b=d.data(b,"tmpl")||d.data(b,"tmpl",C(b.innerHTML));return typeof a==="string"?d.template[a]=b:b}return a?typeof a!=="string"?d.template(null,a):d.template[a]||d.template(null,E.test(a)?a:d(a)):null},encode:function(a){return(""+a).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});d.extend(d.tmpl,{tag:{tmpl:{_default:{$2:"null"},
11
- open:"if($notnull_1){_=_.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(_,$1,$2);_=[];",close:"call=$item.calls();_=call._.concat($item.wrap(call,_));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){_.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){_.push($.encode($1a));}"},
12
- "!":{open:""}},complete:function(){l={}},afterManip:function(a,b,e){var c=b.nodeType===11?d.makeArray(b.childNodes):b.nodeType===1?[b]:[];e.call(a,b);B(c);n++}})})(jQuery);
1
+ (function(d){function m(a,b,e,c){c={data:c||c===0||c===!1?c:b?b.data:{},_wrap:b?b._wrap:null,tmpl:null,parent:b||null,nodes:[],calls:B,nest:C,wrap:D,html:E,update:F};a&&d.extend(c,a,{nodes:[],parent:b});if(e)c.tmpl=e,c._ctnt=c._ctnt||c.tmpl(d,c),c.key=++n,(t.length?o:j)[n]=c;return c}function p(a,b,e){var c,e=e?d.map(e,function(b){return typeof b==="string"?a.key?b.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+l+'="'+a.key+'" $2'):b:p(b,a,b._ctnt)}):a;if(b)return e;e=e.join("");e.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,
2
+ function(b,a,e,i){c=d(e).get();v(c);a&&(c=u(a).concat(c));i&&(c=c.concat(u(i)))});return c?c:u(e)}function u(a){var b=document.createElement("div");b.innerHTML=a;return d.makeArray(b.childNodes)}function w(a){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+d.trim(a).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,
3
+ function(a,e,c,g,h,f,i){a=d.tmpl.tag[c];if(!a)throw"Unknown template tag: "+c;c=a._default||[];f&&!/\w$/.test(h)&&(h+=f,f="");h?(h=q(h),i=i?","+q(i)+")":f?")":"",i=f?h.indexOf(".")>-1?h+q(f):"("+h+").call($item"+i:h,f=f?i:"(typeof("+h+")==='function'?("+h+").call($item):("+h+"))"):f=i=c.$1||"null";g=q(g);return"');"+a[e?"close":"open"].split("$notnull_1").join(h?"typeof("+h+")!=='undefined' && ("+h+")!=null":"true").split("$1a").join(f).split("$1").join(i).split("$2").join(g||c.$2||"")+"__.push('"})+
4
+ "');}return __;")}function x(a,b){a._wrap=p(a,!0,d.isArray(b)?b:[y.test(b)?b:d(b).html()]).join("")}function q(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function v(a){function b(a){function b(a){var G;a+=e;G=h[a]=h[a]||m(f,j[f.parent.key+e]||f.parent),f=G}var c,g=a,f,i;if(i=a.getAttribute(l)){for(;g.parentNode&&(g=g.parentNode).nodeType===1&&!(c=g.getAttribute(l)););if(c!==i){g=g.parentNode?g.nodeType===11?0:g.getAttribute(l)||0:0;if(!(f=j[i]))f=o[i],f=m(f,j[g]||o[g]),f.key=++n,
5
+ j[n]=f;k&&b(i)}a.removeAttribute(l)}else if(k&&(f=d.data(a,"tmplItem")))b(f.key),j[f.key]=f,g=(g=d.data(a.parentNode,"tmplItem"))?g.key:0;if(f){for(c=f;c&&c.key!=g;)c.nodes.push(a),c=c.parent;delete f._ctnt;delete f._wrap;d.data(a,"tmplItem",f)}}var e="_"+k,c,g,h={},f,i,r;f=0;for(i=a.length;f<i;f++)if((c=a[f]).nodeType===1){g=c.getElementsByTagName("*");for(r=g.length-1;r>=0;r--)b(g[r]);b(c)}}function B(a,b,d,c){if(!a)return t.pop();t.push({_:a,tmpl:b,item:this,data:d,options:c})}function C(a,b,e){return d.tmpl(d.template(a),
6
+ b,e,this)}function D(a,b){var e=a.options||{};e.wrapped=b;return d.tmpl(d.template(a.tmpl),a.data,e,a.item)}function E(a,b){var e=this._wrap;return d.map(d(d.isArray(e)?e.join(""):e).filter(a||"*"),function(a){if(b)a=a.innerText||a.textContent;else{var d;if(!(d=a.outerHTML))d=document.createElement("div"),d.appendChild(a.cloneNode(!0)),d=d.innerHTML;a=d}return a})}function F(){var a=this.nodes;d.tmpl(null,null,null,this).insertBefore(a[0]);d(a).remove()}var z=d.fn.domManip,l="_tmplitem",y=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,
7
+ j={},o={},s,A={key:0,data:{}},n=0,k=0,t=[];d.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){d.fn[a]=function(e){var c=[],e=d(e),g,h,f;g=this.length===1&&this[0].parentNode;s=j||{};if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1)e[b](this[0]),c=this;else{h=0;for(f=e.length;h<f;h++)k=h,g=(h>0?this.clone(!0):this).get(),d(e[h])[b](g),c=c.concat(g);k=0;c=this.pushStack(c,a,e.selector)}e=s;s=null;d.tmpl.complete(e);
8
+ return c}});d.fn.extend({tmpl:function(a,b,e){return d.tmpl(this[0],a,b,e)},tmplItem:function(){return d.tmplItem(this[0])},template:function(a){return d.template(a,this[0])},domManip:function(a,b,e){if(a[0]&&d.isArray(a[0])){for(var c=d.makeArray(arguments),g=a[0],h=g.length,f=0,i;f<h&&!(i=d.data(g[f++],"tmplItem")););i&&k&&(c[2]=function(a){d.tmpl.afterManip(this,a,e)});z.apply(this,c)}else z.apply(this,arguments);k=0;s||d.tmpl.complete(j);return this}});d.extend({tmpl:function(a,b,e,c){var g=!c;
9
+ if(g)c=A,a=d.template[a]||d.template(null,a),o={};else if(!a)return a=c.tmpl,j[c.key]=c,c.nodes=[],c.wrapped&&x(c,c.wrapped),d(p(c,null,c.tmpl(d,c)));if(!a)return[];typeof b==="function"&&(b=b.call(c||{}));e&&e.wrapped&&x(e,e.wrapped);b=d.isArray(b)?d.map(b,function(b){return b?m(e,c,a,b):null}):[m(e,c,a,b)];return g?d(p(c,null,b)):b},tmplItem:function(a){var b;for(a instanceof d&&(a=a[0]);a&&a.nodeType===1&&!(b=d.data(a,"tmplItem"))&&(a=a.parentNode););return b||A},template:function(a,b){if(b)return typeof b===
10
+ "string"?b=w(b):b instanceof d&&(b=b[0]||{}),b.nodeType&&(b=d.data(b,"tmpl")||d.data(b,"tmpl",w(b.innerHTML))),typeof a==="string"?d.template[a]=b:b;return a?typeof a!=="string"?d.template(null,a):d.template[a]||d.template(null,y.test(a)?a:d(a)):null},encode:function(a){return(""+a).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});d.extend(d.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},
11
+ open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){j={}},afterManip:function(a,
12
+ b,e){var c=b.nodeType===11?d.makeArray(b.childNodes):b.nodeType===1?[b]:[];e.call(a,b);v(c);k++}})})(jQuery);
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * tmplPlus.js: for jQuery Templates Plugin 1.0.0pre
2
+ * tmplPlus.js: for jQuery Templates Plugin 1.0.0pre
3
3
  * Additional templating features or support for more advanced/less common scenarios.
4
- * Requires jquery.tmpl.js
4
+ * Requires jquery.tmpl.js
5
5
  * http://github.com/jquery/jquery-tmpl
6
6
  *
7
7
  * Copyright Software Freedom Conservancy, Inc.
@@ -1,3 +1,3 @@
1
- (function(b){var p=b.tmpl.complete,l=b.fn.domManip;b.tmpl.complete=function(c){var a;p(c);for(a in c){a=c[a];a.addedTmplItems&&b.inArray(a,a.addedTmplItems)===-1&&a.addedTmplItems.push(a)}for(a in c){a=c[a];a.rendered&&a.rendered(a)}};b.extend({tmplCmd:function(c,a,d){function f(h,g){for(var m=[],j,k,q=g.length,n,o=0,r=h.length;o<r;){n=h[o++];for(k=0;k<q;){j=g[k++];j.data===n&&m.push(j)}}return m}var i=[],e;a=b.isArray(a)?a:[a];switch(c){case "find":return f(a,d);case "replace":a.reverse()}b.each(d?
2
- f(a,d):a,function(h,g){coll=g.nodes;switch(c){case "update":g.update();break;case "remove":b(coll).remove();d&&d.splice(b.inArray(g,d),1);break;case "replace":e=e?b(coll).insertBefore(e)[0]:b(coll).appendTo(coll[0].parentNode)[0];i.unshift(g)}});return i}});b.fn.extend({domManip:function(c,a,d){var f=c[1],i=c[0],e;if(c.length>=2&&typeof f==="object"&&!f.nodeType&&!(f instanceof b)){e=b.makeArray(arguments);e[0]=[b.tmpl(b.template(i),f,c[2],c[3])];e[2]=function(h){b.tmpl.afterManip(this,h,d)};return l.apply(this,
3
- e)}return l.apply(this,arguments)}})})(jQuery);
1
+ (function(b){var i=b.tmpl.complete,h=b.fn.domManip;b.tmpl.complete=function(c){var a;i(c);for(a in c)a=c[a],a.addedTmplItems&&b.inArray(a,a.addedTmplItems)===-1&&a.addedTmplItems.push(a);for(a in c)a=c[a],a.rendered&&a.rendered(a)};b.extend({tmplCmd:function(c,a,e){function d(a,b){for(var c=[],e,f,d=b.length,g,h=0,i=a.length;h<i;){g=a[h++];for(f=0;f<d;)e=b[f++],e.data===g&&c.push(e)}return c}var g=[],f,a=b.isArray(a)?a:[a];switch(c){case "find":return d(a,e);case "replace":a.reverse()}b.each(e?d(a,
2
+ e):a,function(a,d){coll=d.nodes;switch(c){case "update":d.update();break;case "remove":b(coll).remove();e&&e.splice(b.inArray(d,e),1);break;case "replace":f=f?b(coll).insertBefore(f)[0]:b(coll).appendTo(coll[0].parentNode)[0],g.unshift(d)}});return g}});b.fn.extend({domManip:function(c,a,e){var d=c[1],g=c[0],f;if(c.length>=2&&typeof d==="object"&&!d.nodeType&&!(d instanceof b))return f=b.makeArray(arguments),f[0]=[b.tmpl(b.template(g),d,c[2],c[3])],f[2]=function(a){b.tmpl.afterManip(this,a,e)},h.apply(this,
3
+ f);return h.apply(this,arguments)}})})(jQuery);
@@ -0,0 +1,729 @@
1
+ /*
2
+ * jQuery Plugin: Tokenizing Autocomplete Text Entry
3
+ * Version 1.4.2
4
+ *
5
+ * Copyright (c) 2009 James Smith (http://loopj.com)
6
+ * Licensed jointly under the GPL and MIT licenses,
7
+ * choose which one suits your project best!
8
+ *
9
+ */
10
+
11
+ (function ($) {
12
+ // Default settings
13
+ var DEFAULT_SETTINGS = {
14
+ hintText: "Type in a search term",
15
+ noResultsText: "No results",
16
+ searchingText: "Searching...",
17
+ deleteText: "&times;",
18
+ searchDelay: 300,
19
+ minChars: 1,
20
+ tokenLimit: null,
21
+ jsonContainer: null,
22
+ method: "GET",
23
+ contentType: "json",
24
+ queryParam: "q",
25
+ tokenDelimiter: ",",
26
+ preventDuplicates: false,
27
+ prePopulate: null,
28
+ animateDropdown: true,
29
+ onResult: null,
30
+ onAdd: null,
31
+ onDelete: null
32
+ };
33
+
34
+ // Default classes to use when theming
35
+ var DEFAULT_CLASSES = {
36
+ tokenList: "token-input-list",
37
+ token: "token-input-token",
38
+ tokenDelete: "token-input-delete-token",
39
+ selectedToken: "token-input-selected-token",
40
+ highlightedToken: "token-input-highlighted-token",
41
+ dropdown: "token-input-dropdown",
42
+ dropdownItem: "token-input-dropdown-item",
43
+ dropdownItem2: "token-input-dropdown-item2",
44
+ selectedDropdownItem: "token-input-selected-dropdown-item",
45
+ inputToken: "token-input-input-token"
46
+ };
47
+
48
+ // Input box position "enum"
49
+ var POSITION = {
50
+ BEFORE: 0,
51
+ AFTER: 1,
52
+ END: 2
53
+ };
54
+
55
+ // Keys "enum"
56
+ var KEY = {
57
+ BACKSPACE: 8,
58
+ TAB: 9,
59
+ ENTER: 13,
60
+ ESCAPE: 27,
61
+ SPACE: 32,
62
+ PAGE_UP: 33,
63
+ PAGE_DOWN: 34,
64
+ END: 35,
65
+ HOME: 36,
66
+ LEFT: 37,
67
+ UP: 38,
68
+ RIGHT: 39,
69
+ DOWN: 40,
70
+ NUMPAD_ENTER: 108,
71
+ COMMA: 188
72
+ };
73
+
74
+
75
+ // Expose the .tokenInput function to jQuery as a plugin
76
+ $.fn.tokenInput = function (url_or_data, options) {
77
+ var settings = $.extend({}, DEFAULT_SETTINGS, options || {});
78
+
79
+ return this.each(function () {
80
+ new $.TokenList(this, url_or_data, settings);
81
+ });
82
+ };
83
+
84
+
85
+ // TokenList class for each input
86
+ $.TokenList = function (input, url_or_data, settings) {
87
+ //
88
+ // Initialization
89
+ //
90
+
91
+ // Configure the data source
92
+ if(typeof(url_or_data) === "string") {
93
+ // Set the url to query against
94
+ settings.url = url_or_data;
95
+
96
+ // Make a smart guess about cross-domain if it wasn't explicitly specified
97
+ if(settings.crossDomain === undefined) {
98
+ if(settings.url.indexOf("://") === -1) {
99
+ settings.crossDomain = false;
100
+ } else {
101
+ settings.crossDomain = (location.href.split(/\/+/g)[1] !== settings.url.split(/\/+/g)[1]);
102
+ }
103
+ }
104
+ } else if(typeof(url_or_data) === "object") {
105
+ // Set the local data to search through
106
+ settings.local_data = url_or_data;
107
+ }
108
+
109
+ // Build class names
110
+ if(settings.classes) {
111
+ // Use custom class names
112
+ settings.classes = $.extend({}, DEFAULT_CLASSES, settings.classes);
113
+ } else if(settings.theme) {
114
+ // Use theme-suffixed default class names
115
+ settings.classes = {};
116
+ $.each(DEFAULT_CLASSES, function(key, value) {
117
+ settings.classes[key] = value + "-" + settings.theme;
118
+ });
119
+ } else {
120
+ settings.classes = DEFAULT_CLASSES;
121
+ }
122
+
123
+
124
+ // Save the tokens
125
+ var saved_tokens = [];
126
+
127
+ // Keep track of the number of tokens in the list
128
+ var token_count = 0;
129
+
130
+ // Basic cache to save on db hits
131
+ var cache = new $.TokenList.Cache();
132
+
133
+ // Keep track of the timeout, old vals
134
+ var timeout;
135
+ var input_val;
136
+
137
+ // Create a new text input an attach keyup events
138
+ var input_box = $("<input type=\"text\" autocomplete=\"off\">")
139
+ .css({
140
+ outline: "none"
141
+ })
142
+ .focus(function () {
143
+ if (settings.tokenLimit === null || settings.tokenLimit !== token_count) {
144
+ show_dropdown_hint();
145
+ }
146
+ })
147
+ .blur(function () {
148
+ hide_dropdown();
149
+ })
150
+ .bind("keyup keydown blur update", resize_input)
151
+ .keydown(function (event) {
152
+ var previous_token;
153
+ var next_token;
154
+
155
+ switch(event.keyCode) {
156
+ case KEY.LEFT:
157
+ case KEY.RIGHT:
158
+ case KEY.UP:
159
+ case KEY.DOWN:
160
+ if(!$(this).val()) {
161
+ previous_token = input_token.prev();
162
+ next_token = input_token.next();
163
+
164
+ if((previous_token.length && previous_token.get(0) === selected_token) || (next_token.length && next_token.get(0) === selected_token)) {
165
+ // Check if there is a previous/next token and it is selected
166
+ if(event.keyCode === KEY.LEFT || event.keyCode === KEY.UP) {
167
+ deselect_token($(selected_token), POSITION.BEFORE);
168
+ } else {
169
+ deselect_token($(selected_token), POSITION.AFTER);
170
+ }
171
+ } else if((event.keyCode === KEY.LEFT || event.keyCode === KEY.UP) && previous_token.length) {
172
+ // We are moving left, select the previous token if it exists
173
+ select_token($(previous_token.get(0)));
174
+ } else if((event.keyCode === KEY.RIGHT || event.keyCode === KEY.DOWN) && next_token.length) {
175
+ // We are moving right, select the next token if it exists
176
+ select_token($(next_token.get(0)));
177
+ }
178
+ } else {
179
+ var dropdown_item = null;
180
+
181
+ if(event.keyCode === KEY.DOWN || event.keyCode === KEY.RIGHT) {
182
+ dropdown_item = $(selected_dropdown_item).next();
183
+ } else {
184
+ dropdown_item = $(selected_dropdown_item).prev();
185
+ }
186
+
187
+ if(dropdown_item.length) {
188
+ select_dropdown_item(dropdown_item);
189
+ }
190
+ return false;
191
+ }
192
+ break;
193
+
194
+ case KEY.BACKSPACE:
195
+ previous_token = input_token.prev();
196
+
197
+ if(!$(this).val().length) {
198
+ if(selected_token) {
199
+ delete_token($(selected_token));
200
+ } else if(previous_token.length) {
201
+ select_token($(previous_token.get(0)));
202
+ }
203
+
204
+ return false;
205
+ } else if($(this).val().length === 1) {
206
+ hide_dropdown();
207
+ } else {
208
+ // set a timeout just long enough to let this function finish.
209
+ setTimeout(function(){do_search();}, 5);
210
+ }
211
+ break;
212
+
213
+ case KEY.TAB:
214
+ case KEY.ENTER:
215
+ case KEY.NUMPAD_ENTER:
216
+ case KEY.COMMA:
217
+ if(selected_dropdown_item) {
218
+ add_token($(selected_dropdown_item));
219
+ return false;
220
+ }
221
+ break;
222
+
223
+ case KEY.ESCAPE:
224
+ hide_dropdown();
225
+ return true;
226
+
227
+ default:
228
+ if(String.fromCharCode(event.which)) {
229
+ // set a timeout just long enough to let this function finish.
230
+ setTimeout(function(){do_search();}, 5);
231
+ }
232
+ break;
233
+ }
234
+ });
235
+
236
+ // Keep a reference to the original input box
237
+ var hidden_input = $(input)
238
+ .hide()
239
+ .val("")
240
+ .focus(function () {
241
+ input_box.focus();
242
+ })
243
+ .blur(function () {
244
+ input_box.blur();
245
+ });
246
+
247
+ // Keep a reference to the selected token and dropdown item
248
+ var selected_token = null;
249
+ var selected_token_index = 0;
250
+ var selected_dropdown_item = null;
251
+
252
+ // The list to store the token items in
253
+ var token_list = $("<ul />")
254
+ .addClass(settings.classes.tokenList)
255
+ .click(function (event) {
256
+ var li = $(event.target).closest("li");
257
+ if(li && li.get(0) && $.data(li.get(0), "tokeninput")) {
258
+ toggle_select_token(li);
259
+ } else {
260
+ // Deselect selected token
261
+ if(selected_token) {
262
+ deselect_token($(selected_token), POSITION.END);
263
+ }
264
+
265
+ // Focus input box
266
+ input_box.focus();
267
+ }
268
+ })
269
+ .mouseover(function (event) {
270
+ var li = $(event.target).closest("li");
271
+ if(li && selected_token !== this) {
272
+ li.addClass(settings.classes.highlightedToken);
273
+ }
274
+ })
275
+ .mouseout(function (event) {
276
+ var li = $(event.target).closest("li");
277
+ if(li && selected_token !== this) {
278
+ li.removeClass(settings.classes.highlightedToken);
279
+ }
280
+ })
281
+ .insertBefore(hidden_input);
282
+
283
+ // The token holding the input box
284
+ var input_token = $("<li />")
285
+ .addClass(settings.classes.inputToken)
286
+ .appendTo(token_list)
287
+ .append(input_box);
288
+
289
+ // The list to store the dropdown items in
290
+ var dropdown = $("<div>")
291
+ .addClass(settings.classes.dropdown)
292
+ .appendTo("body")
293
+ .hide();
294
+
295
+ // Magic element to help us resize the text input
296
+ var input_resizer = $("<tester/>")
297
+ .insertAfter(input_box)
298
+ .css({
299
+ position: "absolute",
300
+ top: -9999,
301
+ left: -9999,
302
+ width: "auto",
303
+ fontSize: input_box.css("fontSize"),
304
+ fontFamily: input_box.css("fontFamily"),
305
+ fontWeight: input_box.css("fontWeight"),
306
+ letterSpacing: input_box.css("letterSpacing"),
307
+ whiteSpace: "nowrap"
308
+ });
309
+
310
+ // Pre-populate list if items exist
311
+ hidden_input.val("");
312
+ li_data = settings.prePopulate || hidden_input.data("pre");
313
+ if(li_data && li_data.length) {
314
+ $.each(li_data, function (index, value) {
315
+ insert_token(value.id, value.name);
316
+ });
317
+ }
318
+
319
+
320
+
321
+ //
322
+ // Private functions
323
+ //
324
+
325
+ function resize_input() {
326
+ if(input_val === (input_val = input_box.val())) {return;}
327
+
328
+ // Enter new content into resizer and resize input accordingly
329
+ var escaped = input_val.replace(/&/g, '&amp;').replace(/\s/g,' ').replace(/</g, '&lt;').replace(/>/g, '&gt;');
330
+ input_resizer.html(escaped);
331
+ input_box.width(input_resizer.width() + 30);
332
+ }
333
+
334
+ function is_printable_character(keycode) {
335
+ return ((keycode >= 48 && keycode <= 90) || // 0-1a-z
336
+ (keycode >= 96 && keycode <= 111) || // numpad 0-9 + - / * .
337
+ (keycode >= 186 && keycode <= 192) || // ; = , - . / ^
338
+ (keycode >= 219 && keycode <= 222)); // ( \ ) '
339
+ }
340
+
341
+ // Inner function to a token to the list
342
+ function insert_token(id, value) {
343
+ var this_token = $("<li><p>"+ value +"</p></li>")
344
+ .addClass(settings.classes.token)
345
+ .insertBefore(input_token);
346
+
347
+ // The 'delete token' button
348
+ $("<span>" + settings.deleteText + "</span>")
349
+ .addClass(settings.classes.tokenDelete)
350
+ .appendTo(this_token)
351
+ .click(function () {
352
+ delete_token($(this).parent());
353
+ return false;
354
+ });
355
+
356
+ // Store data on the token
357
+ var token_data = {"id": id, "name": value};
358
+ $.data(this_token.get(0), "tokeninput", token_data);
359
+
360
+ // Save this token for duplicate checking
361
+ saved_tokens = saved_tokens.slice(0,selected_token_index).concat([token_data]).concat(saved_tokens.slice(selected_token_index));
362
+ selected_token_index++;
363
+
364
+ // Update the hidden input
365
+ var token_ids = $.map(saved_tokens, function (el) {
366
+ return el.id;
367
+ });
368
+ hidden_input.val(token_ids.join(settings.tokenDelimiter));
369
+
370
+ token_count += 1;
371
+
372
+ return this_token;
373
+ }
374
+
375
+ // Add a token to the token list based on user input
376
+ function add_token (item) {
377
+ var li_data = $.data(item.get(0), "tokeninput");
378
+ var callback = settings.onAdd;
379
+
380
+ // See if the token already exists and select it if we don't want duplicates
381
+ if(token_count > 0 && settings.preventDuplicates) {
382
+ var found_existing_token = null;
383
+ token_list.children().each(function () {
384
+ var existing_token = $(this);
385
+ var existing_data = $.data(existing_token.get(0), "tokeninput");
386
+ if(existing_data && existing_data.id === li_data.id) {
387
+ found_existing_token = existing_token;
388
+ return false;
389
+ }
390
+ });
391
+
392
+ if(found_existing_token) {
393
+ select_token(found_existing_token);
394
+ input_token.insertAfter(found_existing_token);
395
+ input_box.focus();
396
+ return;
397
+ }
398
+ }
399
+
400
+ // Insert the new tokens
401
+ insert_token(li_data.id, li_data.name);
402
+
403
+ // Check the token limit
404
+ if(settings.tokenLimit !== null && token_count >= settings.tokenLimit) {
405
+ input_box.hide();
406
+ hide_dropdown();
407
+ return;
408
+ } else {
409
+ input_box.focus();
410
+ }
411
+
412
+ // Clear input box
413
+ input_box.val("");
414
+
415
+ // Don't show the help dropdown, they've got the idea
416
+ hide_dropdown();
417
+
418
+ // Execute the onAdd callback if defined
419
+ if($.isFunction(callback)) {
420
+ callback(li_data);
421
+ }
422
+ }
423
+
424
+ // Select a token in the token list
425
+ function select_token (token) {
426
+ token.addClass(settings.classes.selectedToken);
427
+ selected_token = token.get(0);
428
+
429
+ // Hide input box
430
+ input_box.val("");
431
+
432
+ // Hide dropdown if it is visible (eg if we clicked to select token)
433
+ hide_dropdown();
434
+ }
435
+
436
+ // Deselect a token in the token list
437
+ function deselect_token (token, position) {
438
+ token.removeClass(settings.classes.selectedToken);
439
+ selected_token = null;
440
+
441
+ if(position === POSITION.BEFORE) {
442
+ input_token.insertBefore(token);
443
+ selected_token_index--;
444
+ } else if(position === POSITION.AFTER) {
445
+ input_token.insertAfter(token);
446
+ selected_token_index++;
447
+ } else {
448
+ input_token.appendTo(token_list);
449
+ selected_token_index = token_count;
450
+ }
451
+
452
+ // Show the input box and give it focus again
453
+ input_box.focus();
454
+ }
455
+
456
+ // Toggle selection of a token in the token list
457
+ function toggle_select_token(token) {
458
+ var previous_selected_token = selected_token;
459
+
460
+ if(selected_token) {
461
+ deselect_token($(selected_token), POSITION.END);
462
+ }
463
+
464
+ if(previous_selected_token === token.get(0)) {
465
+ deselect_token(token, POSITION.END);
466
+ } else {
467
+ select_token(token);
468
+ }
469
+ }
470
+
471
+ // Delete a token from the token list
472
+ function delete_token (token) {
473
+ // Remove the id from the saved list
474
+ var token_data = $.data(token.get(0), "tokeninput");
475
+ var callback = settings.onDelete;
476
+
477
+ var index = token.prevAll().length;
478
+ if(index > selected_token_index) index--;
479
+
480
+ // Delete the token
481
+ token.remove();
482
+ selected_token = null;
483
+
484
+ // Show the input box and give it focus again
485
+ input_box.focus();
486
+
487
+ // Remove this token from the saved list
488
+ saved_tokens = saved_tokens.slice(0,index).concat(saved_tokens.slice(index+1));
489
+ if(index < selected_token_index) selected_token_index--;
490
+
491
+ // Update the hidden input
492
+ var token_ids = $.map(saved_tokens, function (el) {
493
+ return el.id;
494
+ });
495
+ hidden_input.val(token_ids.join(settings.tokenDelimiter));
496
+
497
+ token_count -= 1;
498
+
499
+ if(settings.tokenLimit !== null) {
500
+ input_box
501
+ .show()
502
+ .val("")
503
+ .focus();
504
+ }
505
+
506
+ // Execute the onDelete callback if defined
507
+ if($.isFunction(callback)) {
508
+ callback(token_data);
509
+ }
510
+ }
511
+
512
+ // Hide and clear the results dropdown
513
+ function hide_dropdown () {
514
+ dropdown.hide().empty();
515
+ selected_dropdown_item = null;
516
+ }
517
+
518
+ function show_dropdown() {
519
+ dropdown
520
+ .css({
521
+ position: "absolute",
522
+ top: $(token_list).offset().top + $(token_list).outerHeight(),
523
+ left: $(token_list).offset().left,
524
+ zindex: 999
525
+ })
526
+ .show();
527
+ }
528
+
529
+ function show_dropdown_searching () {
530
+ if(settings.searchingText) {
531
+ dropdown.html("<p>"+settings.searchingText+"</p>");
532
+ show_dropdown();
533
+ }
534
+ }
535
+
536
+ function show_dropdown_hint () {
537
+ if(settings.hintText) {
538
+ dropdown.html("<p>"+settings.hintText+"</p>");
539
+ show_dropdown();
540
+ }
541
+ }
542
+
543
+ // Highlight the query part of the search term
544
+ function highlight_term(value, term) {
545
+ return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<b>$1</b>");
546
+ }
547
+
548
+ // Populate the results dropdown with some results
549
+ function populate_dropdown (query, results) {
550
+ if(results && results.length) {
551
+ dropdown.empty();
552
+ var dropdown_ul = $("<ul>")
553
+ .appendTo(dropdown)
554
+ .mouseover(function (event) {
555
+ select_dropdown_item($(event.target).closest("li"));
556
+ })
557
+ .mousedown(function (event) {
558
+ add_token($(event.target).closest("li"));
559
+ return false;
560
+ })
561
+ .hide();
562
+
563
+ $.each(results, function(index, value) {
564
+ var this_li = $("<li>" + highlight_term(value.name, query) + "</li>")
565
+ .appendTo(dropdown_ul);
566
+
567
+ if(index % 2) {
568
+ this_li.addClass(settings.classes.dropdownItem);
569
+ } else {
570
+ this_li.addClass(settings.classes.dropdownItem2);
571
+ }
572
+
573
+ if(index === 0) {
574
+ select_dropdown_item(this_li);
575
+ }
576
+
577
+ $.data(this_li.get(0), "tokeninput", {"id": value.id, "name": value.name});
578
+ });
579
+
580
+ show_dropdown();
581
+
582
+ if(settings.animateDropdown) {
583
+ dropdown_ul.slideDown("fast");
584
+ } else {
585
+ dropdown_ul.show();
586
+ }
587
+ } else {
588
+ if(settings.noResultsText) {
589
+ dropdown.html("<p>"+settings.noResultsText+"</p>");
590
+ show_dropdown();
591
+ }
592
+ }
593
+ }
594
+
595
+ // Highlight an item in the results dropdown
596
+ function select_dropdown_item (item) {
597
+ if(item) {
598
+ if(selected_dropdown_item) {
599
+ deselect_dropdown_item($(selected_dropdown_item));
600
+ }
601
+
602
+ item.addClass(settings.classes.selectedDropdownItem);
603
+ selected_dropdown_item = item.get(0);
604
+ }
605
+ }
606
+
607
+ // Remove highlighting from an item in the results dropdown
608
+ function deselect_dropdown_item (item) {
609
+ item.removeClass(settings.classes.selectedDropdownItem);
610
+ selected_dropdown_item = null;
611
+ }
612
+
613
+ // Do a search and show the "searching" dropdown if the input is longer
614
+ // than settings.minChars
615
+ function do_search() {
616
+ var query = input_box.val().toLowerCase();
617
+
618
+ if(query && query.length) {
619
+ if(selected_token) {
620
+ deselect_token($(selected_token), POSITION.AFTER);
621
+ }
622
+
623
+ if(query.length >= settings.minChars) {
624
+ show_dropdown_searching();
625
+ clearTimeout(timeout);
626
+
627
+ timeout = setTimeout(function(){
628
+ run_search(query);
629
+ }, settings.searchDelay);
630
+ } else {
631
+ hide_dropdown();
632
+ }
633
+ }
634
+ }
635
+
636
+ // Do the actual search
637
+ function run_search(query) {
638
+ var cached_results = cache.get(query);
639
+ if(cached_results) {
640
+ populate_dropdown(query, cached_results);
641
+ } else {
642
+ // Are we doing an ajax search or local data search?
643
+ if(settings.url) {
644
+ // Extract exisiting get params
645
+ var ajax_params = {};
646
+ ajax_params.data = {};
647
+ if(settings.url.indexOf("?") > -1) {
648
+ var parts = settings.url.split("?");
649
+ ajax_params.url = parts[0];
650
+
651
+ var param_array = parts[1].split("&");
652
+ $.each(param_array, function (index, value) {
653
+ var kv = value.split("=");
654
+ ajax_params.data[kv[0]] = kv[1];
655
+ });
656
+ } else {
657
+ ajax_params.url = settings.url;
658
+ }
659
+
660
+ // Prepare the request
661
+ ajax_params.data[settings.queryParam] = query;
662
+ ajax_params.type = settings.method;
663
+ ajax_params.dataType = settings.contentType;
664
+ if(settings.crossDomain) {
665
+ ajax_params.dataType = "jsonp";
666
+ }
667
+
668
+ // Attach the success callback
669
+ ajax_params.success = function(results) {
670
+ if($.isFunction(settings.onResult)) {
671
+ results = settings.onResult.call(this, results);
672
+ }
673
+ cache.add(query, settings.jsonContainer ? results[settings.jsonContainer] : results);
674
+
675
+ // only populate the dropdown if the results are associated with the active search query
676
+ if(input_box.val().toLowerCase() === query) {
677
+ populate_dropdown(query, settings.jsonContainer ? results[settings.jsonContainer] : results);
678
+ }
679
+ };
680
+
681
+ // Make the request
682
+ $.ajax(ajax_params);
683
+ } else if(settings.local_data) {
684
+ // Do the search through local data
685
+ var results = $.grep(settings.local_data, function (row) {
686
+ return row.name.toLowerCase().indexOf(query.toLowerCase()) > -1;
687
+ });
688
+
689
+ if($.isFunction(settings.onResult)) {
690
+ results = settings.onResult.call(this, results);
691
+ }
692
+ cache.add(query, results);
693
+ populate_dropdown(query, results);
694
+ }
695
+ }
696
+ }
697
+ };
698
+
699
+ // Really basic cache for the results
700
+ $.TokenList.Cache = function (options) {
701
+ var settings = $.extend({
702
+ max_size: 500
703
+ }, options);
704
+
705
+ var data = {};
706
+ var size = 0;
707
+
708
+ var flush = function () {
709
+ data = {};
710
+ size = 0;
711
+ };
712
+
713
+ this.add = function (query, results) {
714
+ if(size > settings.max_size) {
715
+ flush();
716
+ }
717
+
718
+ if(!data[query]) {
719
+ size += 1;
720
+ }
721
+
722
+ data[query] = results;
723
+ };
724
+
725
+ this.get = function (query) {
726
+ return data[query];
727
+ };
728
+ };
729
+ }(jQuery));