forgeos_core 1.9.1

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 (1999) hide show
  1. data/LICENSE +2 -0
  2. data/README.textile +42 -0
  3. data/app/assets/images/forgeos/admin/background-page-right-sidebar.png +0 -0
  4. data/app/assets/images/forgeos/admin/backgrounds/background-header.png +0 -0
  5. data/app/assets/images/forgeos/admin/backgrounds/background-menu.png +0 -0
  6. data/app/assets/images/forgeos/admin/backgrounds/background-right-sidebar.png +0 -0
  7. data/app/assets/images/forgeos/admin/backgrounds/background.png +0 -0
  8. data/app/assets/images/forgeos/admin/backgrounds/big-content-header-bg.png +0 -0
  9. data/app/assets/images/forgeos/admin/backgrounds/blue-button.png +0 -0
  10. data/app/assets/images/forgeos/admin/backgrounds/bottom-menu.png +0 -0
  11. data/app/assets/images/forgeos/admin/backgrounds/brown-select.png +0 -0
  12. data/app/assets/images/forgeos/admin/backgrounds/content-background.png +0 -0
  13. data/app/assets/images/forgeos/admin/backgrounds/drag-and-drop.png +0 -0
  14. data/app/assets/images/forgeos/admin/backgrounds/filter-select.png +0 -0
  15. data/app/assets/images/forgeos/admin/backgrounds/gray-glossy-select.png +0 -0
  16. data/app/assets/images/forgeos/admin/backgrounds/gray-select.png +0 -0
  17. data/app/assets/images/forgeos/admin/backgrounds/green-select.png +0 -0
  18. data/app/assets/images/forgeos/admin/backgrounds/left-bubble-tool-tip.png +0 -0
  19. data/app/assets/images/forgeos/admin/backgrounds/menu-on-background.png +0 -0
  20. data/app/assets/images/forgeos/admin/backgrounds/sidebar-background.png +0 -0
  21. data/app/assets/images/forgeos/admin/backgrounds/slider-button-background.png +0 -0
  22. data/app/assets/images/forgeos/admin/backgrounds/submenu.png +0 -0
  23. data/app/assets/images/forgeos/admin/backgrounds-verti.png +0 -0
  24. data/app/assets/images/forgeos/admin/big-icons/add-product.png +0 -0
  25. data/app/assets/images/forgeos/admin/big-icons/box.png +0 -0
  26. data/app/assets/images/forgeos/admin/big-icons/bubble-quantity.png +0 -0
  27. data/app/assets/images/forgeos/admin/big-icons/delete-icon.png +0 -0
  28. data/app/assets/images/forgeos/admin/big-icons/folder.png +0 -0
  29. data/app/assets/images/forgeos/admin/big-icons/new-block.png +0 -0
  30. data/app/assets/images/forgeos/admin/big-icons/new-folder.png +0 -0
  31. data/app/assets/images/forgeos/admin/big-icons/new-menu.png +0 -0
  32. data/app/assets/images/forgeos/admin/big-icons/new-page.png +0 -0
  33. data/app/assets/images/forgeos/admin/big-icons/new-product.png +0 -0
  34. data/app/assets/images/forgeos/admin/big-icons/new-widget.png +0 -0
  35. data/app/assets/images/forgeos/admin/big-icons/resize.png +0 -0
  36. data/app/assets/images/forgeos/admin/big-icons-24-24-hori.png +0 -0
  37. data/app/assets/images/forgeos/admin/big-icons-24-24-verti.png +0 -0
  38. data/app/assets/images/forgeos/admin/big-icons-27-27-verti.png +0 -0
  39. data/app/assets/images/forgeos/admin/big-red-wine-bottle.png +0 -0
  40. data/app/assets/images/forgeos/admin/borders/drag-and-drop.png +0 -0
  41. data/app/assets/images/forgeos/admin/borders/heading-separator.png +0 -0
  42. data/app/assets/images/forgeos/admin/borders/left-action-button.png +0 -0
  43. data/app/assets/images/forgeos/admin/borders/left-blue-button.png +0 -0
  44. data/app/assets/images/forgeos/admin/borders/left-brown-select.png +0 -0
  45. data/app/assets/images/forgeos/admin/borders/left-filter-select.png +0 -0
  46. data/app/assets/images/forgeos/admin/borders/left-gray-glossy-slider.png +0 -0
  47. data/app/assets/images/forgeos/admin/borders/left-gray-select.png +0 -0
  48. data/app/assets/images/forgeos/admin/borders/left-green-select.png +0 -0
  49. data/app/assets/images/forgeos/admin/borders/left-sub-menu-on.png +0 -0
  50. data/app/assets/images/forgeos/admin/borders/left-submenu-off.png +0 -0
  51. data/app/assets/images/forgeos/admin/borders/right-action-button.png +0 -0
  52. data/app/assets/images/forgeos/admin/borders/right-blue-button.png +0 -0
  53. data/app/assets/images/forgeos/admin/borders/right-brown-select.png +0 -0
  54. data/app/assets/images/forgeos/admin/borders/right-filter-select.png +0 -0
  55. data/app/assets/images/forgeos/admin/borders/right-gray-glossy-button.png +0 -0
  56. data/app/assets/images/forgeos/admin/borders/right-gray-select.png +0 -0
  57. data/app/assets/images/forgeos/admin/borders/right-green-select.png +0 -0
  58. data/app/assets/images/forgeos/admin/borders/right-submenu-off.png +0 -0
  59. data/app/assets/images/forgeos/admin/borders/right-submenu-on.png +0 -0
  60. data/app/assets/images/forgeos/admin/borders/separator-menu-left-on.png +0 -0
  61. data/app/assets/images/forgeos/admin/borders/separator-menu-right-on.png +0 -0
  62. data/app/assets/images/forgeos/admin/borders/separator-menu.png +0 -0
  63. data/app/assets/images/forgeos/admin/borders/specialOffers_black_arrow.png +0 -0
  64. data/app/assets/images/forgeos/admin/borders/specialOffers_white_arrow.png +0 -0
  65. data/app/assets/images/forgeos/admin/borders-verti.png +0 -0
  66. data/app/assets/images/forgeos/admin/bouteille-vin.png +0 -0
  67. data/app/assets/images/forgeos/admin/favicon.gif +0 -0
  68. data/app/assets/images/forgeos/admin/left-arrow.png +0 -0
  69. data/app/assets/images/forgeos/admin/left-select.png +0 -0
  70. data/app/assets/images/forgeos/admin/no-image.png +0 -0
  71. data/app/assets/images/forgeos/admin/no-image_50x50.png +0 -0
  72. data/app/assets/images/forgeos/admin/right-arrow.png +0 -0
  73. data/app/assets/images/forgeos/admin/right-select.png +0 -0
  74. data/app/assets/images/forgeos/admin/selects/big-brown-left.png +0 -0
  75. data/app/assets/images/forgeos/admin/selects/big-brown-right-off.png +0 -0
  76. data/app/assets/images/forgeos/admin/selects/big-brown-right.png +0 -0
  77. data/app/assets/images/forgeos/admin/selects/big-gray-left.png +0 -0
  78. data/app/assets/images/forgeos/admin/selects/big-gray-right-off.png +0 -0
  79. data/app/assets/images/forgeos/admin/selects/big-gray-right.png +0 -0
  80. data/app/assets/images/forgeos/admin/selects/big-green-left.png +0 -0
  81. data/app/assets/images/forgeos/admin/selects/big-green-right-off.png +0 -0
  82. data/app/assets/images/forgeos/admin/selects/big-green-right.png +0 -0
  83. data/app/assets/images/forgeos/admin/selects/big-purple-left.png +0 -0
  84. data/app/assets/images/forgeos/admin/selects/big-purple-right-off.png +0 -0
  85. data/app/assets/images/forgeos/admin/selects/big-purple-right.png +0 -0
  86. data/app/assets/images/forgeos/admin/selects/big-red-left.png +0 -0
  87. data/app/assets/images/forgeos/admin/selects/big-red-right-off.png +0 -0
  88. data/app/assets/images/forgeos/admin/selects/big-red-right.png +0 -0
  89. data/app/assets/images/forgeos/admin/selects/big-white-left.png +0 -0
  90. data/app/assets/images/forgeos/admin/selects/big-white-right-off.png +0 -0
  91. data/app/assets/images/forgeos/admin/selects/big-white-right.png +0 -0
  92. data/app/assets/images/forgeos/admin/selects/glossy-gray-left.png +0 -0
  93. data/app/assets/images/forgeos/admin/selects/glossy-gray-right.png +0 -0
  94. data/app/assets/images/forgeos/admin/selects/left-select.png +0 -0
  95. data/app/assets/images/forgeos/admin/selects/new-left.png +0 -0
  96. data/app/assets/images/forgeos/admin/selects/new-right.png +0 -0
  97. data/app/assets/images/forgeos/admin/selects/product-select-left.png +0 -0
  98. data/app/assets/images/forgeos/admin/selects/product-select-right.png +0 -0
  99. data/app/assets/images/forgeos/admin/selects/right-select.png +0 -0
  100. data/app/assets/images/forgeos/admin/selects/small-brown-left.png +0 -0
  101. data/app/assets/images/forgeos/admin/selects/small-brown-right-on.png +0 -0
  102. data/app/assets/images/forgeos/admin/selects/small-brown-right.png +0 -0
  103. data/app/assets/images/forgeos/admin/selects/small-gray-left.png +0 -0
  104. data/app/assets/images/forgeos/admin/selects/small-gray-right-on.png +0 -0
  105. data/app/assets/images/forgeos/admin/selects/small-gray-right.png +0 -0
  106. data/app/assets/images/forgeos/admin/selects/small-green-left.png +0 -0
  107. data/app/assets/images/forgeos/admin/selects/small-green-right-on.png +0 -0
  108. data/app/assets/images/forgeos/admin/selects/small-green-right.png +0 -0
  109. data/app/assets/images/forgeos/admin/selects/small-purple-left.png +0 -0
  110. data/app/assets/images/forgeos/admin/selects/small-purple-right-on.png +0 -0
  111. data/app/assets/images/forgeos/admin/selects/small-purple-right.png +0 -0
  112. data/app/assets/images/forgeos/admin/selects/small-red-left.png +0 -0
  113. data/app/assets/images/forgeos/admin/selects/small-red-right-on.png +0 -0
  114. data/app/assets/images/forgeos/admin/selects/small-red-right.png +0 -0
  115. data/app/assets/images/forgeos/admin/selects/small-white-left.png +0 -0
  116. data/app/assets/images/forgeos/admin/selects/small-white-right-on.png +0 -0
  117. data/app/assets/images/forgeos/admin/selects/small-white-right.png +0 -0
  118. data/app/assets/images/forgeos/admin/selects/unpublished-left.png +0 -0
  119. data/app/assets/images/forgeos/admin/selects/unpublished-right.png +0 -0
  120. data/app/assets/images/forgeos/admin/small-icons/all-blocks.png +0 -0
  121. data/app/assets/images/forgeos/admin/small-icons/audio.png +0 -0
  122. data/app/assets/images/forgeos/admin/small-icons/audio_plus.png +0 -0
  123. data/app/assets/images/forgeos/admin/small-icons/big-blue-plus.png +0 -0
  124. data/app/assets/images/forgeos/admin/small-icons/big-red-right-off.png +0 -0
  125. data/app/assets/images/forgeos/admin/small-icons/big-red-right.png +0 -0
  126. data/app/assets/images/forgeos/admin/small-icons/blue-check.png +0 -0
  127. data/app/assets/images/forgeos/admin/small-icons/blue-eye.png +0 -0
  128. data/app/assets/images/forgeos/admin/small-icons/blue-left-arrow.png +0 -0
  129. data/app/assets/images/forgeos/admin/small-icons/blue-minus.png +0 -0
  130. data/app/assets/images/forgeos/admin/small-icons/blue-pages.png +0 -0
  131. data/app/assets/images/forgeos/admin/small-icons/blue-pen.png +0 -0
  132. data/app/assets/images/forgeos/admin/small-icons/blue-plus.png +0 -0
  133. data/app/assets/images/forgeos/admin/small-icons/blue-recycle-bin.png +0 -0
  134. data/app/assets/images/forgeos/admin/small-icons/bottom-arrow.png +0 -0
  135. data/app/assets/images/forgeos/admin/small-icons/box.png +0 -0
  136. data/app/assets/images/forgeos/admin/small-icons/brown-minus.png +0 -0
  137. data/app/assets/images/forgeos/admin/small-icons/brown-plus.png +0 -0
  138. data/app/assets/images/forgeos/admin/small-icons/bubble.png +0 -0
  139. data/app/assets/images/forgeos/admin/small-icons/cadna.png +0 -0
  140. data/app/assets/images/forgeos/admin/small-icons/cancel.png +0 -0
  141. data/app/assets/images/forgeos/admin/small-icons/checked-checked.png +0 -0
  142. data/app/assets/images/forgeos/admin/small-icons/checked-unchecked.png +0 -0
  143. data/app/assets/images/forgeos/admin/small-icons/dark-blue-minus.png +0 -0
  144. data/app/assets/images/forgeos/admin/small-icons/dark-blue-plus.png +0 -0
  145. data/app/assets/images/forgeos/admin/small-icons/dark-blue-recycle-bin.png +0 -0
  146. data/app/assets/images/forgeos/admin/small-icons/drak-blue-minus.png +0 -0
  147. data/app/assets/images/forgeos/admin/small-icons/eye-off.png +0 -0
  148. data/app/assets/images/forgeos/admin/small-icons/eye.png +0 -0
  149. data/app/assets/images/forgeos/admin/small-icons/left-arrow.png +0 -0
  150. data/app/assets/images/forgeos/admin/small-icons/magnifying-glass.png +0 -0
  151. data/app/assets/images/forgeos/admin/small-icons/menu-icon.png +0 -0
  152. data/app/assets/images/forgeos/admin/small-icons/page.png +0 -0
  153. data/app/assets/images/forgeos/admin/small-icons/pages.png +0 -0
  154. data/app/assets/images/forgeos/admin/small-icons/right-arrow.png +0 -0
  155. data/app/assets/images/forgeos/admin/small-icons/right-blue-arrow.png +0 -0
  156. data/app/assets/images/forgeos/admin/small-icons/select-separator.png +0 -0
  157. data/app/assets/images/forgeos/admin/small-icons/small-blue-plus.png +0 -0
  158. data/app/assets/images/forgeos/admin/small-icons/webpulser-planet.png +0 -0
  159. data/app/assets/images/forgeos/admin/small-icons/white-arrow.png +0 -0
  160. data/app/assets/images/forgeos/admin/small-icons/widget.png +0 -0
  161. data/app/assets/images/forgeos/admin/small-icons-16-16-hori.png +0 -0
  162. data/app/assets/images/forgeos/admin/small-icons-16-16-verti.png +0 -0
  163. data/app/assets/images/forgeos/flashes/audio-player.swf +0 -0
  164. data/app/assets/images/forgeos/flashes/expressInstall.swf +0 -0
  165. data/app/assets/images/forgeos/flashes/flowplayer-3.1.5.swf +0 -0
  166. data/app/assets/images/forgeos/flashes/flowplayer.controls-3.1.5.swf +0 -0
  167. data/app/assets/images/forgeos/flashes/open-flash-chart-bar-clicking.swf +0 -0
  168. data/app/assets/images/forgeos/flashes/open-flash-chart.swf +0 -0
  169. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_diagonals-thick_55_eee7e7_40x40.png +0 -0
  170. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_diagonals-thick_55_eee7e7_40x40_1.png +0 -0
  171. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_dots-small_65_a6a6a6_2x2.png +0 -0
  172. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_dots-small_65_a6a6a6_2x2_1.png +0 -0
  173. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_flat_0_333333_40x100.png +0 -0
  174. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_flat_0_333333_40x100_1.png +0 -0
  175. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_flat_65_ffffff_40x100.png +0 -0
  176. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_flat_65_ffffff_40x100_1.png +0 -0
  177. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_flat_75_ffffff_40x100.png +0 -0
  178. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_flat_75_ffffff_40x100_1.png +0 -0
  179. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_glass_55_fbf8ee_1x400.png +0 -0
  180. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_glass_55_fbf8ee_1x400_1.png +0 -0
  181. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_highlight-hard_100_eeeeee_1x100.png +0 -0
  182. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_highlight-hard_100_eeeeee_1x100_1.png +0 -0
  183. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_highlight-hard_100_f6f6f6_1x100.png +0 -0
  184. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_highlight-hard_100_f6f6f6_1x100_1.png +0 -0
  185. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_highlight-soft_15_cc0000_1x100.png +0 -0
  186. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-bg_highlight-soft_15_cc0000_1x100_1.png +0 -0
  187. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-icons_004276_256x240.png +0 -0
  188. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-icons_004276_256x240_1.png +0 -0
  189. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-icons_cc0000_256x240.png +0 -0
  190. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-icons_cc0000_256x240_1.png +0 -0
  191. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-icons_ffffff_256x240.png +0 -0
  192. data/app/assets/images/forgeos/jquery-ui/themes/blitzer/ui-icons_ffffff_256x240_1.png +0 -0
  193. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_diagonals-thick_15_0b3e6f_40x40.png +0 -0
  194. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_diagonals-thick_15_0b3e6f_40x40_1.png +0 -0
  195. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_dots-medium_30_0b58a2_4x4.png +0 -0
  196. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_dots-medium_30_0b58a2_4x4_1.png +0 -0
  197. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_dots-small_20_333333_2x2.png +0 -0
  198. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_dots-small_20_333333_2x2_1.png +0 -0
  199. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_dots-small_30_a32d00_2x2.png +0 -0
  200. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_dots-small_30_a32d00_2x2_1.png +0 -0
  201. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_dots-small_40_00498f_2x2.png +0 -0
  202. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_dots-small_40_00498f_2x2_1.png +0 -0
  203. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  204. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_flat_0_aaaaaa_40x100_1.png +0 -0
  205. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_flat_40_292929_40x100.png +0 -0
  206. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_flat_40_292929_40x100_1.png +0 -0
  207. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_gloss-wave_20_111111_500x100.png +0 -0
  208. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-bg_gloss-wave_20_111111_500x100_1.png +0 -0
  209. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-icons_00498f_256x240.png +0 -0
  210. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-icons_00498f_256x240_1.png +0 -0
  211. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-icons_98d2fb_256x240.png +0 -0
  212. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-icons_98d2fb_256x240_1.png +0 -0
  213. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-icons_9ccdfc_256x240.png +0 -0
  214. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-icons_9ccdfc_256x240_1.png +0 -0
  215. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-icons_ffffff_256x240.png +0 -0
  216. data/app/assets/images/forgeos/jquery-ui/themes/dot-luv/ui-icons_ffffff_256x240_1.png +0 -0
  217. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  218. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_flat_0_aaaaaa_40x100_1.png +0 -0
  219. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_flat_75_ffffff_40x100.png +0 -0
  220. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_flat_75_ffffff_40x100_1.png +0 -0
  221. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  222. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_glass_55_fbf9ee_1x400_1.png +0 -0
  223. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_glass_65_ffffff_1x400.png +0 -0
  224. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_glass_65_ffffff_1x400_1.png +0 -0
  225. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_glass_75_dadada_1x400.png +0 -0
  226. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_glass_75_dadada_1x400_1.png +0 -0
  227. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  228. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_glass_75_e6e6e6_1x400_1.png +0 -0
  229. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  230. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_glass_95_fef1ec_1x400_1.png +0 -0
  231. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  232. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-bg_highlight-soft_75_cccccc_1x100_1.png +0 -0
  233. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-icons_222222_256x240.png +0 -0
  234. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-icons_222222_256x240_1.png +0 -0
  235. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-icons_2e83ff_256x240.png +0 -0
  236. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-icons_2e83ff_256x240_1.png +0 -0
  237. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-icons_454545_256x240.png +0 -0
  238. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-icons_454545_256x240_1.png +0 -0
  239. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-icons_888888_256x240.png +0 -0
  240. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-icons_888888_256x240_1.png +0 -0
  241. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-icons_cd0a0a_256x240.png +0 -0
  242. data/app/assets/images/forgeos/jquery-ui/themes/forgeos/ui-icons_cd0a0a_256x240_1.png +0 -0
  243. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_flat_75_aaaaaa_40x100.png +0 -0
  244. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_flat_75_aaaaaa_40x100_1.png +0 -0
  245. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_glass_100_f5f0e5_1x400.png +0 -0
  246. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_glass_100_f5f0e5_1x400_1.png +0 -0
  247. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_glass_25_cb842e_1x400.png +0 -0
  248. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_glass_25_cb842e_1x400_1.png +0 -0
  249. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_glass_70_ede4d4_1x400.png +0 -0
  250. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_glass_70_ede4d4_1x400_1.png +0 -0
  251. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_highlight-hard_100_f4f0ec_1x100.png +0 -0
  252. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_highlight-hard_100_f4f0ec_1x100_1.png +0 -0
  253. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_highlight-hard_65_fee4bd_1x100.png +0 -0
  254. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_highlight-hard_65_fee4bd_1x100_1.png +0 -0
  255. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_highlight-hard_75_f5f5b5_1x100.png +0 -0
  256. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_highlight-hard_75_f5f5b5_1x100_1.png +0 -0
  257. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_inset-soft_100_f4f0ec_1x100.png +0 -0
  258. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-bg_inset-soft_100_f4f0ec_1x100_1.png +0 -0
  259. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-icons_c47a23_256x240.png +0 -0
  260. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-icons_c47a23_256x240_1.png +0 -0
  261. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-icons_cb672b_256x240.png +0 -0
  262. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-icons_cb672b_256x240_1.png +0 -0
  263. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-icons_f08000_256x240.png +0 -0
  264. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-icons_f08000_256x240_1.png +0 -0
  265. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-icons_f35f07_256x240.png +0 -0
  266. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-icons_f35f07_256x240_1.png +0 -0
  267. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-icons_ff7519_256x240.png +0 -0
  268. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-icons_ff7519_256x240_1.png +0 -0
  269. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-icons_ffffff_256x240.png +0 -0
  270. data/app/assets/images/forgeos/jquery-ui/themes/humanity/ui-icons_ffffff_256x240_1.png +0 -0
  271. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  272. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-bg_flat_55_fbec88_40x100.png +0 -0
  273. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  274. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  275. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  276. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  277. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  278. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  279. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-icons_217bc0_256x240.png +0 -0
  280. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-icons_2e83ff_256x240.png +0 -0
  281. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-icons_469bdd_256x240.png +0 -0
  282. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-icons_6da8d5_256x240.png +0 -0
  283. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-icons_cd0a0a_256x240.png +0 -0
  284. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-icons_d8e7f3_256x240.png +0 -0
  285. data/app/assets/images/forgeos/jquery-ui/themes/redmond/ui-icons_f9bd01_256x240.png +0 -0
  286. data/app/assets/images/forgeos/medias/128x128/doc.png +0 -0
  287. data/app/assets/images/forgeos/medias/128x128/doc_1.png +0 -0
  288. data/app/assets/images/forgeos/medias/128x128/media.png +0 -0
  289. data/app/assets/images/forgeos/medias/128x128/media_1.png +0 -0
  290. data/app/assets/images/forgeos/medias/128x128/pdf.png +0 -0
  291. data/app/assets/images/forgeos/medias/128x128/pdf_1.png +0 -0
  292. data/app/assets/images/forgeos/medias/128x128/picture.png +0 -0
  293. data/app/assets/images/forgeos/medias/128x128/picture_1.png +0 -0
  294. data/app/assets/images/forgeos/medias/128x128/video.png +0 -0
  295. data/app/assets/images/forgeos/medias/128x128/video_1.png +0 -0
  296. data/app/assets/images/forgeos/medias/50x50/doc.png +0 -0
  297. data/app/assets/images/forgeos/medias/50x50/doc_1.png +0 -0
  298. data/app/assets/images/forgeos/medias/50x50/media.png +0 -0
  299. data/app/assets/images/forgeos/medias/50x50/media_1.png +0 -0
  300. data/app/assets/images/forgeos/medias/50x50/pdf.png +0 -0
  301. data/app/assets/images/forgeos/medias/50x50/pdf_1.png +0 -0
  302. data/app/assets/images/forgeos/medias/50x50/picture.png +0 -0
  303. data/app/assets/images/forgeos/medias/50x50/picture_1.png +0 -0
  304. data/app/assets/images/forgeos/medias/50x50/video.png +0 -0
  305. data/app/assets/images/forgeos/medias/50x50/video_1.png +0 -0
  306. data/app/assets/images/forgeos/spinner.gif +0 -0
  307. data/app/assets/images/forgeos/tinyMCE/align-left.png +0 -0
  308. data/app/assets/images/forgeos/tinyMCE/align-left_1.png +0 -0
  309. data/app/assets/images/forgeos/tinyMCE/align-right.png +0 -0
  310. data/app/assets/images/forgeos/tinyMCE/align-right_1.png +0 -0
  311. data/app/assets/images/forgeos/tinyMCE/bold.png +0 -0
  312. data/app/assets/images/forgeos/tinyMCE/bold_1.png +0 -0
  313. data/app/assets/images/forgeos/tinyMCE/center.png +0 -0
  314. data/app/assets/images/forgeos/tinyMCE/center_1.png +0 -0
  315. data/app/assets/images/forgeos/tinyMCE/html-tag.png +0 -0
  316. data/app/assets/images/forgeos/tinyMCE/html-tag_1.png +0 -0
  317. data/app/assets/images/forgeos/tinyMCE/italic.png +0 -0
  318. data/app/assets/images/forgeos/tinyMCE/italic_1.png +0 -0
  319. data/app/assets/images/forgeos/tinyMCE/justify.png +0 -0
  320. data/app/assets/images/forgeos/tinyMCE/justify_1.png +0 -0
  321. data/app/assets/images/forgeos/tinyMCE/line-throught.png +0 -0
  322. data/app/assets/images/forgeos/tinyMCE/line-throught_1.png +0 -0
  323. data/app/assets/images/forgeos/tinyMCE/tab-to-left.png +0 -0
  324. data/app/assets/images/forgeos/tinyMCE/tab-to-left_1.png +0 -0
  325. data/app/assets/images/forgeos/tinyMCE/tab-to-right.png +0 -0
  326. data/app/assets/images/forgeos/tinyMCE/tab-to-right_1.png +0 -0
  327. data/app/assets/images/forgeos/tinyMCE/underline.png +0 -0
  328. data/app/assets/images/forgeos/tinyMCE/underline_1.png +0 -0
  329. data/app/assets/images/forgeos/uploadify/cancel.png +0 -0
  330. data/app/assets/images/forgeos/uploadify/cancel_1.png +0 -0
  331. data/app/assets/images/forgeos/uploadify/choose-audio_en.png +0 -0
  332. data/app/assets/images/forgeos/uploadify/choose-audio_en_1.png +0 -0
  333. data/app/assets/images/forgeos/uploadify/choose-audio_fr.png +0 -0
  334. data/app/assets/images/forgeos/uploadify/choose-audio_fr_1.png +0 -0
  335. data/app/assets/images/forgeos/uploadify/choose-file_en.png +0 -0
  336. data/app/assets/images/forgeos/uploadify/choose-file_en_1.png +0 -0
  337. data/app/assets/images/forgeos/uploadify/choose-file_fr.png +0 -0
  338. data/app/assets/images/forgeos/uploadify/choose-file_fr_1.png +0 -0
  339. data/app/assets/images/forgeos/uploadify/choose-pdf_en.png +0 -0
  340. data/app/assets/images/forgeos/uploadify/choose-pdf_en_1.png +0 -0
  341. data/app/assets/images/forgeos/uploadify/choose-pdf_fr.png +0 -0
  342. data/app/assets/images/forgeos/uploadify/choose-pdf_fr_1.png +0 -0
  343. data/app/assets/images/forgeos/uploadify/choose-picture_en.png +0 -0
  344. data/app/assets/images/forgeos/uploadify/choose-picture_en_1.png +0 -0
  345. data/app/assets/images/forgeos/uploadify/choose-picture_fr.png +0 -0
  346. data/app/assets/images/forgeos/uploadify/choose-picture_fr_1.png +0 -0
  347. data/app/assets/images/forgeos/uploadify/choose-video_en.png +0 -0
  348. data/app/assets/images/forgeos/uploadify/choose-video_en_1.png +0 -0
  349. data/app/assets/images/forgeos/uploadify/choose-video_fr.png +0 -0
  350. data/app/assets/images/forgeos/uploadify/choose-video_fr_1.png +0 -0
  351. data/app/assets/images/forgeos/uploadify/upload-audio_en.png +0 -0
  352. data/app/assets/images/forgeos/uploadify/upload-audio_en_1.png +0 -0
  353. data/app/assets/images/forgeos/uploadify/upload-audio_fr.png +0 -0
  354. data/app/assets/images/forgeos/uploadify/upload-audio_fr_1.png +0 -0
  355. data/app/assets/images/forgeos/uploadify/upload-button_en.png +0 -0
  356. data/app/assets/images/forgeos/uploadify/upload-button_en_1.png +0 -0
  357. data/app/assets/images/forgeos/uploadify/upload-button_fr.png +0 -0
  358. data/app/assets/images/forgeos/uploadify/upload-button_fr_1.png +0 -0
  359. data/app/assets/images/forgeos/uploadify/upload-doc_en.png +0 -0
  360. data/app/assets/images/forgeos/uploadify/upload-doc_en_1.png +0 -0
  361. data/app/assets/images/forgeos/uploadify/upload-doc_fr.png +0 -0
  362. data/app/assets/images/forgeos/uploadify/upload-doc_fr_1.png +0 -0
  363. data/app/assets/images/forgeos/uploadify/upload-media_en.png +0 -0
  364. data/app/assets/images/forgeos/uploadify/upload-media_en_1.png +0 -0
  365. data/app/assets/images/forgeos/uploadify/upload-media_fr.png +0 -0
  366. data/app/assets/images/forgeos/uploadify/upload-media_fr_1.png +0 -0
  367. data/app/assets/images/forgeos/uploadify/upload-pdf_en.png +0 -0
  368. data/app/assets/images/forgeos/uploadify/upload-pdf_en_1.png +0 -0
  369. data/app/assets/images/forgeos/uploadify/upload-pdf_fr.png +0 -0
  370. data/app/assets/images/forgeos/uploadify/upload-pdf_fr_1.png +0 -0
  371. data/app/assets/images/forgeos/uploadify/upload-picture_en.png +0 -0
  372. data/app/assets/images/forgeos/uploadify/upload-picture_en_1.png +0 -0
  373. data/app/assets/images/forgeos/uploadify/upload-picture_fr.png +0 -0
  374. data/app/assets/images/forgeos/uploadify/upload-picture_fr_1.png +0 -0
  375. data/app/assets/images/forgeos/uploadify/upload-video_en.png +0 -0
  376. data/app/assets/images/forgeos/uploadify/upload-video_en_1.png +0 -0
  377. data/app/assets/images/forgeos/uploadify/upload-video_fr.png +0 -0
  378. data/app/assets/images/forgeos/uploadify/upload-video_fr_1.png +0 -0
  379. data/app/assets/images/forgeos/uploadify/uploader.swf +0 -0
  380. data/app/assets/images/forgeos/uploadify/uploader_1.swf +0 -0
  381. data/app/assets/images/forgeos/uploadify/uploadify-image.png +0 -0
  382. data/app/assets/images/forgeos/uploadify/uploadify-image_1.png +0 -0
  383. data/app/assets/images/forgeos/uploadify/uploadify.allglyphs.swf +0 -0
  384. data/app/assets/images/forgeos/uploadify/uploadify.allglyphs_1.swf +0 -0
  385. data/app/assets/images/forgeos/uploadify/uploadify.swf +0 -0
  386. data/app/assets/images/forgeos/uploadify/uploadify_1.swf +0 -0
  387. data/app/assets/javascripts/forgeos/admin/customselects.js +130 -0
  388. data/app/assets/javascripts/forgeos/admin/functions/forgeos_core/commons.js +76 -0
  389. data/app/assets/javascripts/forgeos/admin/functions/forgeos_core/custom-selects.js +32 -0
  390. data/app/assets/javascripts/forgeos/admin/functions/forgeos_core/dataTable.js +320 -0
  391. data/app/assets/javascripts/forgeos/admin/functions/forgeos_core/inputs.js +20 -0
  392. data/app/assets/javascripts/forgeos/admin/functions/forgeos_core/notifications.js +23 -0
  393. data/app/assets/javascripts/forgeos/admin/functions/forgeos_core/overlay.js +34 -0
  394. data/app/assets/javascripts/forgeos/admin/functions/forgeos_core/right-sidebar.js +58 -0
  395. data/app/assets/javascripts/forgeos/admin/functions/forgeos_core/rights.js +47 -0
  396. data/app/assets/javascripts/forgeos/admin/functions/forgeos_core/search-button.js +35 -0
  397. data/app/assets/javascripts/forgeos/admin/functions/forgeos_core/tinyMCE.js +32 -0
  398. data/app/assets/javascripts/forgeos/admin/functions/forgeos_core/trees.js +429 -0
  399. data/app/assets/javascripts/forgeos/admin/functions/forgeos_core/visual.js +12 -0
  400. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/attachments.js +13 -0
  401. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/clicks.js +22 -0
  402. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/custom-select.js +8 -0
  403. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/header.js +5 -0
  404. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/import.js +25 -0
  405. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/inputs.js +130 -0
  406. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/left-sidebar.js +146 -0
  407. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/overlays.js +260 -0
  408. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/right-sidebar.js +60 -0
  409. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/rights.js +105 -0
  410. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/settings.js +15 -0
  411. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/tabs.js +23 -0
  412. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/tinyMce.js +5 -0
  413. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/trees.js +59 -0
  414. data/app/assets/javascripts/forgeos/admin/inits/forgeos_core/visual.js +144 -0
  415. data/app/assets/javascripts/forgeos/admin/jquery-cookie-plugin.js +96 -0
  416. data/app/assets/javascripts/forgeos/audio-player.js +1 -0
  417. data/app/assets/javascripts/forgeos/flowplayer-3.1.4.min.js +24 -0
  418. data/app/assets/javascripts/forgeos/jquery-ui.js +298 -0
  419. data/app/assets/javascripts/forgeos/jquery.cookies.min.js +95 -0
  420. data/app/assets/javascripts/forgeos/jquery.dataSlides.js +4417 -0
  421. data/app/assets/javascripts/forgeos/jquery.dataTables.min.js +542 -0
  422. data/app/assets/javascripts/forgeos/jquery.droppy.js +61 -0
  423. data/app/assets/javascripts/forgeos/jquery.js +19 -0
  424. data/app/assets/javascripts/forgeos/jquery.uploadify.js +26 -0
  425. data/app/assets/javascripts/forgeos/jstree/jquery.tree.js +2061 -0
  426. data/app/assets/javascripts/forgeos/jstree/plugins/jquery.tree.contextmenu.js +129 -0
  427. data/app/assets/javascripts/forgeos/jstree/plugins/jquery.tree.cookie.js +70 -0
  428. data/app/assets/javascripts/forgeos/swfobject.js +4 -0
  429. data/app/assets/javascripts/forgeos/tiny_mce/jquery.tinymce.js +1 -0
  430. data/app/assets/javascripts/forgeos/tiny_mce/langs/ar.js +154 -0
  431. data/app/assets/javascripts/forgeos/tiny_mce/langs/az.js +155 -0
  432. data/app/assets/javascripts/forgeos/tiny_mce/langs/be.js +155 -0
  433. data/app/assets/javascripts/forgeos/tiny_mce/langs/bg.js +154 -0
  434. data/app/assets/javascripts/forgeos/tiny_mce/langs/bn.js +154 -0
  435. data/app/assets/javascripts/forgeos/tiny_mce/langs/br.js +154 -0
  436. data/app/assets/javascripts/forgeos/tiny_mce/langs/bs.js +154 -0
  437. data/app/assets/javascripts/forgeos/tiny_mce/langs/ca.js +154 -0
  438. data/app/assets/javascripts/forgeos/tiny_mce/langs/ch.js +154 -0
  439. data/app/assets/javascripts/forgeos/tiny_mce/langs/cs.js +154 -0
  440. data/app/assets/javascripts/forgeos/tiny_mce/langs/cy.js +154 -0
  441. data/app/assets/javascripts/forgeos/tiny_mce/langs/da.js +155 -0
  442. data/app/assets/javascripts/forgeos/tiny_mce/langs/de.js +155 -0
  443. data/app/assets/javascripts/forgeos/tiny_mce/langs/dv.js +154 -0
  444. data/app/assets/javascripts/forgeos/tiny_mce/langs/el.js +158 -0
  445. data/app/assets/javascripts/forgeos/tiny_mce/langs/en.js +154 -0
  446. data/app/assets/javascripts/forgeos/tiny_mce/langs/es.js +154 -0
  447. data/app/assets/javascripts/forgeos/tiny_mce/langs/et.js +154 -0
  448. data/app/assets/javascripts/forgeos/tiny_mce/langs/fa.js +154 -0
  449. data/app/assets/javascripts/forgeos/tiny_mce/langs/fi.js +155 -0
  450. data/app/assets/javascripts/forgeos/tiny_mce/langs/fr.js +154 -0
  451. data/app/assets/javascripts/forgeos/tiny_mce/langs/gl.js +154 -0
  452. data/app/assets/javascripts/forgeos/tiny_mce/langs/gu.js +154 -0
  453. data/app/assets/javascripts/forgeos/tiny_mce/langs/he.js +154 -0
  454. data/app/assets/javascripts/forgeos/tiny_mce/langs/hr.js +154 -0
  455. data/app/assets/javascripts/forgeos/tiny_mce/langs/hu.js +154 -0
  456. data/app/assets/javascripts/forgeos/tiny_mce/langs/ia.js +154 -0
  457. data/app/assets/javascripts/forgeos/tiny_mce/langs/id.js +154 -0
  458. data/app/assets/javascripts/forgeos/tiny_mce/langs/ii.js +154 -0
  459. data/app/assets/javascripts/forgeos/tiny_mce/langs/is.js +154 -0
  460. data/app/assets/javascripts/forgeos/tiny_mce/langs/it.js +154 -0
  461. data/app/assets/javascripts/forgeos/tiny_mce/langs/ja.js +154 -0
  462. data/app/assets/javascripts/forgeos/tiny_mce/langs/ko.js +154 -0
  463. data/app/assets/javascripts/forgeos/tiny_mce/langs/lt.js +172 -0
  464. data/app/assets/javascripts/forgeos/tiny_mce/langs/lv.js +154 -0
  465. data/app/assets/javascripts/forgeos/tiny_mce/langs/mk.js +154 -0
  466. data/app/assets/javascripts/forgeos/tiny_mce/langs/ml.js +154 -0
  467. data/app/assets/javascripts/forgeos/tiny_mce/langs/mn.js +154 -0
  468. data/app/assets/javascripts/forgeos/tiny_mce/langs/ms.js +154 -0
  469. data/app/assets/javascripts/forgeos/tiny_mce/langs/nb.js +154 -0
  470. data/app/assets/javascripts/forgeos/tiny_mce/langs/nl.js +154 -0
  471. data/app/assets/javascripts/forgeos/tiny_mce/langs/nn.js +154 -0
  472. data/app/assets/javascripts/forgeos/tiny_mce/langs/no.js +154 -0
  473. data/app/assets/javascripts/forgeos/tiny_mce/langs/pl.js +154 -0
  474. data/app/assets/javascripts/forgeos/tiny_mce/langs/pt.js +154 -0
  475. data/app/assets/javascripts/forgeos/tiny_mce/langs/ro.js +154 -0
  476. data/app/assets/javascripts/forgeos/tiny_mce/langs/ru.js +155 -0
  477. data/app/assets/javascripts/forgeos/tiny_mce/langs/sc.js +162 -0
  478. data/app/assets/javascripts/forgeos/tiny_mce/langs/se.js +154 -0
  479. data/app/assets/javascripts/forgeos/tiny_mce/langs/si.js +154 -0
  480. data/app/assets/javascripts/forgeos/tiny_mce/langs/sk.js +154 -0
  481. data/app/assets/javascripts/forgeos/tiny_mce/langs/sl.js +155 -0
  482. data/app/assets/javascripts/forgeos/tiny_mce/langs/sq.js +154 -0
  483. data/app/assets/javascripts/forgeos/tiny_mce/langs/sr.js +154 -0
  484. data/app/assets/javascripts/forgeos/tiny_mce/langs/sv.js +154 -0
  485. data/app/assets/javascripts/forgeos/tiny_mce/langs/th.js +154 -0
  486. data/app/assets/javascripts/forgeos/tiny_mce/langs/tr.js +154 -0
  487. data/app/assets/javascripts/forgeos/tiny_mce/langs/tt.js +154 -0
  488. data/app/assets/javascripts/forgeos/tiny_mce/langs/tw.js +162 -0
  489. data/app/assets/javascripts/forgeos/tiny_mce/langs/uk.js +157 -0
  490. data/app/assets/javascripts/forgeos/tiny_mce/langs/vi.js +154 -0
  491. data/app/assets/javascripts/forgeos/tiny_mce/langs/zh.js +162 -0
  492. data/app/assets/javascripts/forgeos/tiny_mce/license.txt +504 -0
  493. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/css/advhr.css +5 -0
  494. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/editor_plugin.js +1 -0
  495. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/editor_plugin_src.js +54 -0
  496. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/js/rule.js +43 -0
  497. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/ar_dlg.js +5 -0
  498. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/az_dlg.js +5 -0
  499. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/be_dlg.js +5 -0
  500. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/bg_dlg.js +5 -0
  501. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/bn_dlg.js +5 -0
  502. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/br_dlg.js +5 -0
  503. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/bs_dlg.js +5 -0
  504. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/ca_dlg.js +5 -0
  505. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/ch_dlg.js +5 -0
  506. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/cs_dlg.js +5 -0
  507. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/cy_dlg.js +5 -0
  508. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/da_dlg.js +5 -0
  509. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/de_dlg.js +5 -0
  510. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/dv_dlg.js +5 -0
  511. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/el_dlg.js +5 -0
  512. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/en_dlg.js +5 -0
  513. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/es_dlg.js +5 -0
  514. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/et_dlg.js +5 -0
  515. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/fa_dlg.js +5 -0
  516. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/fi_dlg.js +5 -0
  517. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/fr_dlg.js +5 -0
  518. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/gl_dlg.js +5 -0
  519. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/gu_dlg.js +5 -0
  520. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/he_dlg.js +5 -0
  521. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/hr_dlg.js +5 -0
  522. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/hu_dlg.js +5 -0
  523. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/ia_dlg.js +5 -0
  524. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/id_dlg.js +5 -0
  525. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/ii_dlg.js +5 -0
  526. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/is_dlg.js +5 -0
  527. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/it_dlg.js +5 -0
  528. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/ja_dlg.js +5 -0
  529. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/ko_dlg.js +5 -0
  530. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/lt_dlg.js +5 -0
  531. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/lv_dlg.js +5 -0
  532. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/mk_dlg.js +5 -0
  533. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/ml_dlg.js +5 -0
  534. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/mn_dlg.js +5 -0
  535. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/ms_dlg.js +5 -0
  536. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/nb_dlg.js +5 -0
  537. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/nl_dlg.js +5 -0
  538. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/nn_dlg.js +5 -0
  539. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/no_dlg.js +5 -0
  540. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/pl_dlg.js +5 -0
  541. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/pt_dlg.js +5 -0
  542. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/ro_dlg.js +5 -0
  543. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/ru_dlg.js +5 -0
  544. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/sc_dlg.js +5 -0
  545. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/se_dlg.js +5 -0
  546. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/si_dlg.js +5 -0
  547. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/sk_dlg.js +5 -0
  548. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/sl_dlg.js +5 -0
  549. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/sq_dlg.js +5 -0
  550. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/sr_dlg.js +5 -0
  551. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/sv_dlg.js +5 -0
  552. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/th_dlg.js +5 -0
  553. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/tr_dlg.js +5 -0
  554. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/tt_dlg.js +5 -0
  555. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/tw_dlg.js +5 -0
  556. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/uk_dlg.js +5 -0
  557. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/vi_dlg.js +5 -0
  558. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/langs/zh_dlg.js +5 -0
  559. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advhr/rule.htm +62 -0
  560. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/css/advimage.css +13 -0
  561. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/editor_plugin.js +1 -0
  562. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/editor_plugin_src.js +47 -0
  563. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/image.htm +237 -0
  564. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/img/sample.gif +0 -0
  565. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/js/image.js +443 -0
  566. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/ar_dlg.js +43 -0
  567. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/az_dlg.js +43 -0
  568. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/be_dlg.js +43 -0
  569. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/bg_dlg.js +43 -0
  570. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/bn_dlg.js +43 -0
  571. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/br_dlg.js +43 -0
  572. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/bs_dlg.js +43 -0
  573. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/ca_dlg.js +43 -0
  574. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/ch_dlg.js +43 -0
  575. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/cs_dlg.js +43 -0
  576. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/cy_dlg.js +43 -0
  577. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/da_dlg.js +43 -0
  578. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/de_dlg.js +43 -0
  579. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/dv_dlg.js +43 -0
  580. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/el_dlg.js +43 -0
  581. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/en_dlg.js +43 -0
  582. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/es_dlg.js +43 -0
  583. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/et_dlg.js +43 -0
  584. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/fa_dlg.js +43 -0
  585. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/fi_dlg.js +43 -0
  586. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/fr_dlg.js +43 -0
  587. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/gl_dlg.js +43 -0
  588. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/gu_dlg.js +43 -0
  589. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/he_dlg.js +43 -0
  590. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/hr_dlg.js +43 -0
  591. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/hu_dlg.js +43 -0
  592. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/ia_dlg.js +43 -0
  593. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/id_dlg.js +43 -0
  594. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/ii_dlg.js +43 -0
  595. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/is_dlg.js +43 -0
  596. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/it_dlg.js +43 -0
  597. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/ja_dlg.js +43 -0
  598. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/ko_dlg.js +43 -0
  599. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/lt_dlg.js +43 -0
  600. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/lv_dlg.js +43 -0
  601. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/mk_dlg.js +43 -0
  602. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/ml_dlg.js +43 -0
  603. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/mn_dlg.js +43 -0
  604. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/ms_dlg.js +43 -0
  605. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/nb_dlg.js +43 -0
  606. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/nl_dlg.js +43 -0
  607. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/nn_dlg.js +43 -0
  608. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/no_dlg.js +43 -0
  609. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/pl_dlg.js +43 -0
  610. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/pt_dlg.js +43 -0
  611. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/ro_dlg.js +43 -0
  612. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/ru_dlg.js +43 -0
  613. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/sc_dlg.js +43 -0
  614. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/se_dlg.js +43 -0
  615. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/si_dlg.js +43 -0
  616. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/sk_dlg.js +43 -0
  617. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/sl_dlg.js +43 -0
  618. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/sq_dlg.js +43 -0
  619. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/sr_dlg.js +43 -0
  620. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/sv_dlg.js +43 -0
  621. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/th_dlg.js +43 -0
  622. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/tr_dlg.js +43 -0
  623. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/tt_dlg.js +43 -0
  624. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/tw_dlg.js +43 -0
  625. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/uk_dlg.js +43 -0
  626. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/vi_dlg.js +43 -0
  627. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advimage/langs/zh_dlg.js +43 -0
  628. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/css/advlink.css +8 -0
  629. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/editor_plugin.js +1 -0
  630. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/editor_plugin_src.js +58 -0
  631. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/js/advlink.js +528 -0
  632. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/ar_dlg.js +52 -0
  633. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/az_dlg.js +52 -0
  634. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/be_dlg.js +52 -0
  635. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/bg_dlg.js +52 -0
  636. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/bn_dlg.js +52 -0
  637. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/br_dlg.js +52 -0
  638. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/bs_dlg.js +52 -0
  639. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/ca_dlg.js +52 -0
  640. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/ch_dlg.js +52 -0
  641. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/cs_dlg.js +52 -0
  642. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/cy_dlg.js +52 -0
  643. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/da_dlg.js +52 -0
  644. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/de_dlg.js +52 -0
  645. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/dv_dlg.js +52 -0
  646. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/el_dlg.js +52 -0
  647. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/en_dlg.js +52 -0
  648. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/es_dlg.js +52 -0
  649. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/et_dlg.js +52 -0
  650. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/fa_dlg.js +52 -0
  651. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/fi_dlg.js +52 -0
  652. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/fr_dlg.js +52 -0
  653. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/gl_dlg.js +52 -0
  654. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/gu_dlg.js +52 -0
  655. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/he_dlg.js +52 -0
  656. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/hr_dlg.js +52 -0
  657. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/hu_dlg.js +52 -0
  658. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/ia_dlg.js +52 -0
  659. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/id_dlg.js +52 -0
  660. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/ii_dlg.js +52 -0
  661. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/is_dlg.js +52 -0
  662. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/it_dlg.js +52 -0
  663. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/ja_dlg.js +52 -0
  664. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/ko_dlg.js +52 -0
  665. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/lt_dlg.js +52 -0
  666. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/lv_dlg.js +52 -0
  667. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/mk_dlg.js +52 -0
  668. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/ml_dlg.js +52 -0
  669. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/mn_dlg.js +52 -0
  670. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/ms_dlg.js +52 -0
  671. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/nb_dlg.js +52 -0
  672. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/nl_dlg.js +52 -0
  673. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/nn_dlg.js +52 -0
  674. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/no_dlg.js +52 -0
  675. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/pl_dlg.js +52 -0
  676. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/pt_dlg.js +52 -0
  677. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/ro_dlg.js +52 -0
  678. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/ru_dlg.js +52 -0
  679. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/sc_dlg.js +52 -0
  680. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/se_dlg.js +52 -0
  681. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/si_dlg.js +52 -0
  682. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/sk_dlg.js +52 -0
  683. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/sl_dlg.js +52 -0
  684. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/sq_dlg.js +52 -0
  685. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/sr_dlg.js +52 -0
  686. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/sv_dlg.js +52 -0
  687. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/th_dlg.js +52 -0
  688. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/tr_dlg.js +52 -0
  689. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/tt_dlg.js +52 -0
  690. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/tw_dlg.js +52 -0
  691. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/uk_dlg.js +52 -0
  692. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/vi_dlg.js +52 -0
  693. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/langs/zh_dlg.js +52 -0
  694. data/app/assets/javascripts/forgeos/tiny_mce/plugins/advlink/link.htm +338 -0
  695. data/app/assets/javascripts/forgeos/tiny_mce/plugins/autoresize/editor_plugin.js +1 -0
  696. data/app/assets/javascripts/forgeos/tiny_mce/plugins/autoresize/editor_plugin_src.js +114 -0
  697. data/app/assets/javascripts/forgeos/tiny_mce/plugins/autosave/editor_plugin.js +1 -0
  698. data/app/assets/javascripts/forgeos/tiny_mce/plugins/autosave/editor_plugin_src.js +51 -0
  699. data/app/assets/javascripts/forgeos/tiny_mce/plugins/bbcode/editor_plugin.js +1 -0
  700. data/app/assets/javascripts/forgeos/tiny_mce/plugins/bbcode/editor_plugin_src.js +117 -0
  701. data/app/assets/javascripts/forgeos/tiny_mce/plugins/compat2x/editor_plugin.js +1 -0
  702. data/app/assets/javascripts/forgeos/tiny_mce/plugins/compat2x/editor_plugin_src.js +616 -0
  703. data/app/assets/javascripts/forgeos/tiny_mce/plugins/contextmenu/editor_plugin.js +1 -0
  704. data/app/assets/javascripts/forgeos/tiny_mce/plugins/contextmenu/editor_plugin_src.js +95 -0
  705. data/app/assets/javascripts/forgeos/tiny_mce/plugins/curblyadvimage/css/advimage.css +84 -0
  706. data/app/assets/javascripts/forgeos/tiny_mce/plugins/curblyadvimage/editor_plugin.js +49 -0
  707. data/app/assets/javascripts/forgeos/tiny_mce/plugins/curblyadvimage/editor_plugin_src.js +48 -0
  708. data/app/assets/javascripts/forgeos/tiny_mce/plugins/curblyadvimage/image.htm +273 -0
  709. data/app/assets/javascripts/forgeos/tiny_mce/plugins/curblyadvimage/img/sample.gif +0 -0
  710. data/app/assets/javascripts/forgeos/tiny_mce/plugins/curblyadvimage/js/functions.js +511 -0
  711. data/app/assets/javascripts/forgeos/tiny_mce/plugins/curblyadvimage/langs/en_dlg.js +43 -0
  712. data/app/assets/javascripts/forgeos/tiny_mce/plugins/curblyadvimage/langs/fr_dlg.js +43 -0
  713. data/app/assets/javascripts/forgeos/tiny_mce/plugins/directionality/editor_plugin.js +1 -0
  714. data/app/assets/javascripts/forgeos/tiny_mce/plugins/directionality/editor_plugin_src.js +79 -0
  715. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/editor_plugin.js +1 -0
  716. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/editor_plugin_src.js +40 -0
  717. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/emotions.htm +40 -0
  718. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-cool.gif +0 -0
  719. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-cry.gif +0 -0
  720. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-embarassed.gif +0 -0
  721. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif +0 -0
  722. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-frown.gif +0 -0
  723. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-innocent.gif +0 -0
  724. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-kiss.gif +0 -0
  725. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-laughing.gif +0 -0
  726. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif +0 -0
  727. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-sealed.gif +0 -0
  728. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-smile.gif +0 -0
  729. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-surprised.gif +0 -0
  730. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif +0 -0
  731. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-undecided.gif +0 -0
  732. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-wink.gif +0 -0
  733. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/img/smiley-yell.gif +0 -0
  734. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/js/emotions.js +22 -0
  735. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/ar_dlg.js +20 -0
  736. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/az_dlg.js +20 -0
  737. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/be_dlg.js +20 -0
  738. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/bg_dlg.js +20 -0
  739. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/bn_dlg.js +20 -0
  740. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/br_dlg.js +20 -0
  741. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/bs_dlg.js +20 -0
  742. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/ca_dlg.js +20 -0
  743. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/ch_dlg.js +20 -0
  744. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/cs_dlg.js +20 -0
  745. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/cy_dlg.js +20 -0
  746. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/da_dlg.js +20 -0
  747. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/de_dlg.js +20 -0
  748. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/dv_dlg.js +20 -0
  749. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/el_dlg.js +20 -0
  750. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/en_dlg.js +20 -0
  751. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/es_dlg.js +20 -0
  752. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/et_dlg.js +20 -0
  753. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/fa_dlg.js +20 -0
  754. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/fi_dlg.js +20 -0
  755. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/fr_dlg.js +20 -0
  756. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/gl_dlg.js +20 -0
  757. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/gu_dlg.js +20 -0
  758. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/he_dlg.js +20 -0
  759. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/hr_dlg.js +20 -0
  760. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/hu_dlg.js +20 -0
  761. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/ia_dlg.js +20 -0
  762. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/id_dlg.js +20 -0
  763. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/ii_dlg.js +20 -0
  764. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/is_dlg.js +20 -0
  765. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/it_dlg.js +20 -0
  766. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/ja_dlg.js +20 -0
  767. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/ko_dlg.js +20 -0
  768. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/lt_dlg.js +20 -0
  769. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/lv_dlg.js +20 -0
  770. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/mk_dlg.js +20 -0
  771. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/ml_dlg.js +20 -0
  772. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/mn_dlg.js +20 -0
  773. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/ms_dlg.js +20 -0
  774. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/nb_dlg.js +20 -0
  775. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/nl_dlg.js +20 -0
  776. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/nn_dlg.js +20 -0
  777. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/no_dlg.js +20 -0
  778. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/pl_dlg.js +20 -0
  779. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/pt_dlg.js +20 -0
  780. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/ro_dlg.js +20 -0
  781. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/ru_dlg.js +20 -0
  782. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/sc_dlg.js +20 -0
  783. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/se_dlg.js +20 -0
  784. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/si_dlg.js +20 -0
  785. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/sk_dlg.js +20 -0
  786. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/sl_dlg.js +20 -0
  787. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/sq_dlg.js +20 -0
  788. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/sr_dlg.js +20 -0
  789. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/sv_dlg.js +20 -0
  790. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/th_dlg.js +20 -0
  791. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/tr_dlg.js +20 -0
  792. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/tt_dlg.js +20 -0
  793. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/tw_dlg.js +20 -0
  794. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/uk_dlg.js +20 -0
  795. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/vi_dlg.js +20 -0
  796. data/app/assets/javascripts/forgeos/tiny_mce/plugins/emotions/langs/zh_dlg.js +20 -0
  797. data/app/assets/javascripts/forgeos/tiny_mce/plugins/example/dialog.htm +27 -0
  798. data/app/assets/javascripts/forgeos/tiny_mce/plugins/example/editor_plugin.js +1 -0
  799. data/app/assets/javascripts/forgeos/tiny_mce/plugins/example/editor_plugin_src.js +81 -0
  800. data/app/assets/javascripts/forgeos/tiny_mce/plugins/example/img/example.gif +0 -0
  801. data/app/assets/javascripts/forgeos/tiny_mce/plugins/example/js/dialog.js +19 -0
  802. data/app/assets/javascripts/forgeos/tiny_mce/plugins/example/langs/en.js +3 -0
  803. data/app/assets/javascripts/forgeos/tiny_mce/plugins/example/langs/en_dlg.js +3 -0
  804. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/css/fullpage.css +182 -0
  805. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/editor_plugin.js +1 -0
  806. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/editor_plugin_src.js +146 -0
  807. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/fullpage.htm +576 -0
  808. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/js/fullpage.js +461 -0
  809. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/ar_dlg.js +85 -0
  810. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/az_dlg.js +85 -0
  811. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/be_dlg.js +85 -0
  812. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/bg_dlg.js +85 -0
  813. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/bn_dlg.js +85 -0
  814. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/br_dlg.js +85 -0
  815. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/bs_dlg.js +85 -0
  816. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/ca_dlg.js +85 -0
  817. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/ch_dlg.js +85 -0
  818. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/cs_dlg.js +85 -0
  819. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/cy_dlg.js +85 -0
  820. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/da_dlg.js +85 -0
  821. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/de_dlg.js +85 -0
  822. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/dv_dlg.js +85 -0
  823. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/el_dlg.js +85 -0
  824. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/en_dlg.js +85 -0
  825. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/es_dlg.js +85 -0
  826. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/et_dlg.js +85 -0
  827. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/fa_dlg.js +85 -0
  828. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/fi_dlg.js +85 -0
  829. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/fr_dlg.js +85 -0
  830. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/gl_dlg.js +85 -0
  831. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/gu_dlg.js +85 -0
  832. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/he_dlg.js +85 -0
  833. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/hr_dlg.js +85 -0
  834. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/hu_dlg.js +85 -0
  835. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/ia_dlg.js +85 -0
  836. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/id_dlg.js +85 -0
  837. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/ii_dlg.js +85 -0
  838. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/is_dlg.js +85 -0
  839. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/it_dlg.js +85 -0
  840. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/ja_dlg.js +85 -0
  841. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/ko_dlg.js +85 -0
  842. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/lt_dlg.js +85 -0
  843. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/lv_dlg.js +85 -0
  844. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/mk_dlg.js +85 -0
  845. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/ml_dlg.js +85 -0
  846. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/mn_dlg.js +85 -0
  847. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/ms_dlg.js +85 -0
  848. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/nb_dlg.js +85 -0
  849. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/nl_dlg.js +85 -0
  850. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/nn_dlg.js +85 -0
  851. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/no_dlg.js +85 -0
  852. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/pl_dlg.js +85 -0
  853. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/pt_dlg.js +85 -0
  854. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/ro_dlg.js +85 -0
  855. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/ru_dlg.js +85 -0
  856. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/sc_dlg.js +85 -0
  857. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/se_dlg.js +85 -0
  858. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/si_dlg.js +85 -0
  859. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/sk_dlg.js +85 -0
  860. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/sl_dlg.js +85 -0
  861. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/sq_dlg.js +85 -0
  862. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/sr_dlg.js +85 -0
  863. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/sv_dlg.js +85 -0
  864. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/th_dlg.js +85 -0
  865. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/tr_dlg.js +85 -0
  866. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/tt_dlg.js +85 -0
  867. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/tw_dlg.js +85 -0
  868. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/uk_dlg.js +85 -0
  869. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/vi_dlg.js +85 -0
  870. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullpage/langs/zh_dlg.js +85 -0
  871. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullscreen/editor_plugin.js +1 -0
  872. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullscreen/editor_plugin_src.js +145 -0
  873. data/app/assets/javascripts/forgeos/tiny_mce/plugins/fullscreen/fullscreen.htm +110 -0
  874. data/app/assets/javascripts/forgeos/tiny_mce/plugins/iespell/editor_plugin.js +1 -0
  875. data/app/assets/javascripts/forgeos/tiny_mce/plugins/iespell/editor_plugin_src.js +51 -0
  876. data/app/assets/javascripts/forgeos/tiny_mce/plugins/inlinepopups/editor_plugin.js +1 -0
  877. data/app/assets/javascripts/forgeos/tiny_mce/plugins/inlinepopups/editor_plugin_src.js +632 -0
  878. data/app/assets/javascripts/forgeos/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
  879. data/app/assets/javascripts/forgeos/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
  880. data/app/assets/javascripts/forgeos/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
  881. data/app/assets/javascripts/forgeos/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
  882. data/app/assets/javascripts/forgeos/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
  883. data/app/assets/javascripts/forgeos/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
  884. data/app/assets/javascripts/forgeos/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
  885. data/app/assets/javascripts/forgeos/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css +90 -0
  886. data/app/assets/javascripts/forgeos/tiny_mce/plugins/inlinepopups/template.htm +387 -0
  887. data/app/assets/javascripts/forgeos/tiny_mce/plugins/insertdatetime/editor_plugin.js +1 -0
  888. data/app/assets/javascripts/forgeos/tiny_mce/plugins/insertdatetime/editor_plugin_src.js +80 -0
  889. data/app/assets/javascripts/forgeos/tiny_mce/plugins/layer/editor_plugin.js +1 -0
  890. data/app/assets/javascripts/forgeos/tiny_mce/plugins/layer/editor_plugin_src.js +209 -0
  891. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/css/content.css +6 -0
  892. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/css/media.css +16 -0
  893. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/editor_plugin.js +1 -0
  894. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/editor_plugin_src.js +405 -0
  895. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/img/flash.gif +0 -0
  896. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/img/flv_player.swf +0 -0
  897. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/img/quicktime.gif +0 -0
  898. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/img/realmedia.gif +0 -0
  899. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/img/shockwave.gif +0 -0
  900. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/img/trans.gif +0 -0
  901. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/img/windowsmedia.gif +0 -0
  902. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/js/embed.js +73 -0
  903. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/js/media.js +630 -0
  904. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/ar_dlg.js +103 -0
  905. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/az_dlg.js +103 -0
  906. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/be_dlg.js +103 -0
  907. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/bg_dlg.js +103 -0
  908. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/bn_dlg.js +103 -0
  909. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/br_dlg.js +103 -0
  910. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/bs_dlg.js +103 -0
  911. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/ca_dlg.js +103 -0
  912. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/ch_dlg.js +103 -0
  913. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/cs_dlg.js +103 -0
  914. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/cy_dlg.js +103 -0
  915. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/da_dlg.js +103 -0
  916. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/de_dlg.js +103 -0
  917. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/dv_dlg.js +103 -0
  918. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/el_dlg.js +103 -0
  919. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/en_dlg.js +103 -0
  920. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/es_dlg.js +103 -0
  921. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/et_dlg.js +103 -0
  922. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/fa_dlg.js +103 -0
  923. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/fi_dlg.js +103 -0
  924. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/fr_dlg.js +103 -0
  925. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/gl_dlg.js +103 -0
  926. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/gu_dlg.js +103 -0
  927. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/he_dlg.js +103 -0
  928. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/hr_dlg.js +103 -0
  929. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/hu_dlg.js +103 -0
  930. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/ia_dlg.js +103 -0
  931. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/id_dlg.js +103 -0
  932. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/ii_dlg.js +103 -0
  933. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/is_dlg.js +103 -0
  934. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/it_dlg.js +103 -0
  935. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/ja_dlg.js +103 -0
  936. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/ko_dlg.js +103 -0
  937. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/lt_dlg.js +103 -0
  938. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/lv_dlg.js +103 -0
  939. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/mk_dlg.js +103 -0
  940. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/ml_dlg.js +103 -0
  941. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/mn_dlg.js +103 -0
  942. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/ms_dlg.js +102 -0
  943. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/nb_dlg.js +103 -0
  944. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/nl_dlg.js +103 -0
  945. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/nn_dlg.js +103 -0
  946. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/no_dlg.js +103 -0
  947. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/pl_dlg.js +103 -0
  948. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/pt_dlg.js +103 -0
  949. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/ro_dlg.js +103 -0
  950. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/ru_dlg.js +103 -0
  951. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/sc_dlg.js +103 -0
  952. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/se_dlg.js +103 -0
  953. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/si_dlg.js +103 -0
  954. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/sk_dlg.js +103 -0
  955. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/sl_dlg.js +103 -0
  956. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/sq_dlg.js +103 -0
  957. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/sr_dlg.js +103 -0
  958. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/sv_dlg.js +103 -0
  959. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/th_dlg.js +103 -0
  960. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/tr_dlg.js +103 -0
  961. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/tt_dlg.js +103 -0
  962. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/tw_dlg.js +103 -0
  963. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/uk_dlg.js +103 -0
  964. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/vi_dlg.js +103 -0
  965. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/langs/zh_dlg.js +103 -0
  966. data/app/assets/javascripts/forgeos/tiny_mce/plugins/media/media.htm +822 -0
  967. data/app/assets/javascripts/forgeos/tiny_mce/plugins/nonbreaking/editor_plugin.js +1 -0
  968. data/app/assets/javascripts/forgeos/tiny_mce/plugins/nonbreaking/editor_plugin_src.js +50 -0
  969. data/app/assets/javascripts/forgeos/tiny_mce/plugins/noneditable/editor_plugin.js +1 -0
  970. data/app/assets/javascripts/forgeos/tiny_mce/plugins/noneditable/editor_plugin_src.js +87 -0
  971. data/app/assets/javascripts/forgeos/tiny_mce/plugins/pagebreak/css/content.css +1 -0
  972. data/app/assets/javascripts/forgeos/tiny_mce/plugins/pagebreak/editor_plugin.js +1 -0
  973. data/app/assets/javascripts/forgeos/tiny_mce/plugins/pagebreak/editor_plugin_src.js +74 -0
  974. data/app/assets/javascripts/forgeos/tiny_mce/plugins/pagebreak/img/pagebreak.gif +0 -0
  975. data/app/assets/javascripts/forgeos/tiny_mce/plugins/pagebreak/img/trans.gif +0 -0
  976. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/editor_plugin.js +1 -0
  977. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/editor_plugin_src.js +512 -0
  978. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/js/pastetext.js +36 -0
  979. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/js/pasteword.js +51 -0
  980. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/ar_dlg.js +5 -0
  981. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/az_dlg.js +5 -0
  982. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/be_dlg.js +5 -0
  983. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/bg_dlg.js +5 -0
  984. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/bn_dlg.js +5 -0
  985. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/br_dlg.js +5 -0
  986. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/bs_dlg.js +5 -0
  987. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/ca_dlg.js +5 -0
  988. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/ch_dlg.js +5 -0
  989. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/cs_dlg.js +5 -0
  990. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/cy_dlg.js +5 -0
  991. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/da_dlg.js +5 -0
  992. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/de_dlg.js +5 -0
  993. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/dv_dlg.js +5 -0
  994. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/el_dlg.js +5 -0
  995. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/en_dlg.js +5 -0
  996. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/es_dlg.js +5 -0
  997. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/et_dlg.js +5 -0
  998. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/fa_dlg.js +5 -0
  999. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/fi_dlg.js +5 -0
  1000. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/fr_dlg.js +5 -0
  1001. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/gl_dlg.js +5 -0
  1002. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/gu_dlg.js +5 -0
  1003. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/he_dlg.js +5 -0
  1004. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/hr_dlg.js +5 -0
  1005. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/hu_dlg.js +5 -0
  1006. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/ia_dlg.js +5 -0
  1007. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/id_dlg.js +5 -0
  1008. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/ii_dlg.js +5 -0
  1009. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/is_dlg.js +5 -0
  1010. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/it_dlg.js +5 -0
  1011. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/ja_dlg.js +5 -0
  1012. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/ko_dlg.js +5 -0
  1013. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/lt_dlg.js +5 -0
  1014. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/lv_dlg.js +5 -0
  1015. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/mk_dlg.js +5 -0
  1016. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/ml_dlg.js +5 -0
  1017. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/mn_dlg.js +5 -0
  1018. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/ms_dlg.js +5 -0
  1019. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/nb_dlg.js +5 -0
  1020. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/nl_dlg.js +5 -0
  1021. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/nn_dlg.js +5 -0
  1022. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/no_dlg.js +5 -0
  1023. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/pl_dlg.js +5 -0
  1024. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/pt_dlg.js +5 -0
  1025. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/ro_dlg.js +5 -0
  1026. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/ru_dlg.js +5 -0
  1027. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/sc_dlg.js +5 -0
  1028. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/se_dlg.js +5 -0
  1029. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/si_dlg.js +5 -0
  1030. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/sk_dlg.js +5 -0
  1031. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/sl_dlg.js +5 -0
  1032. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/sq_dlg.js +5 -0
  1033. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/sr_dlg.js +5 -0
  1034. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/sv_dlg.js +5 -0
  1035. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/th_dlg.js +5 -0
  1036. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/tr_dlg.js +5 -0
  1037. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/tt_dlg.js +5 -0
  1038. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/tw_dlg.js +5 -0
  1039. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/uk_dlg.js +5 -0
  1040. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/vi_dlg.js +5 -0
  1041. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/langs/zh_dlg.js +5 -0
  1042. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/pastetext.htm +33 -0
  1043. data/app/assets/javascripts/forgeos/tiny_mce/plugins/paste/pasteword.htm +27 -0
  1044. data/app/assets/javascripts/forgeos/tiny_mce/plugins/preview/editor_plugin.js +1 -0
  1045. data/app/assets/javascripts/forgeos/tiny_mce/plugins/preview/editor_plugin_src.js +50 -0
  1046. data/app/assets/javascripts/forgeos/tiny_mce/plugins/preview/example.html +28 -0
  1047. data/app/assets/javascripts/forgeos/tiny_mce/plugins/preview/jscripts/embed.js +73 -0
  1048. data/app/assets/javascripts/forgeos/tiny_mce/plugins/preview/preview.html +17 -0
  1049. data/app/assets/javascripts/forgeos/tiny_mce/plugins/print/editor_plugin.js +1 -0
  1050. data/app/assets/javascripts/forgeos/tiny_mce/plugins/print/editor_plugin_src.js +31 -0
  1051. data/app/assets/javascripts/forgeos/tiny_mce/plugins/safari/blank.htm +1 -0
  1052. data/app/assets/javascripts/forgeos/tiny_mce/plugins/safari/editor_plugin.js +1 -0
  1053. data/app/assets/javascripts/forgeos/tiny_mce/plugins/safari/editor_plugin_src.js +438 -0
  1054. data/app/assets/javascripts/forgeos/tiny_mce/plugins/save/editor_plugin.js +1 -0
  1055. data/app/assets/javascripts/forgeos/tiny_mce/plugins/save/editor_plugin_src.js +98 -0
  1056. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/css/searchreplace.css +6 -0
  1057. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/editor_plugin.js +1 -0
  1058. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/editor_plugin_src.js +54 -0
  1059. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/js/searchreplace.js +126 -0
  1060. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/ar_dlg.js +16 -0
  1061. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/az_dlg.js +16 -0
  1062. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/be_dlg.js +16 -0
  1063. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/bg_dlg.js +16 -0
  1064. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/bn_dlg.js +16 -0
  1065. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/br_dlg.js +16 -0
  1066. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/bs_dlg.js +16 -0
  1067. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/ca_dlg.js +16 -0
  1068. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/ch_dlg.js +16 -0
  1069. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/cs_dlg.js +16 -0
  1070. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/cy_dlg.js +16 -0
  1071. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/da_dlg.js +16 -0
  1072. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/de_dlg.js +16 -0
  1073. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/dv_dlg.js +16 -0
  1074. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/el_dlg.js +16 -0
  1075. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/en_dlg.js +16 -0
  1076. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/es_dlg.js +16 -0
  1077. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/et_dlg.js +16 -0
  1078. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/fa_dlg.js +16 -0
  1079. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/fi_dlg.js +16 -0
  1080. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/fr_dlg.js +16 -0
  1081. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/gl_dlg.js +16 -0
  1082. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/gu_dlg.js +16 -0
  1083. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/he_dlg.js +16 -0
  1084. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/hr_dlg.js +16 -0
  1085. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/hu_dlg.js +16 -0
  1086. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/ia_dlg.js +16 -0
  1087. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/id_dlg.js +16 -0
  1088. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/ii_dlg.js +16 -0
  1089. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/is_dlg.js +16 -0
  1090. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/it_dlg.js +16 -0
  1091. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/ja_dlg.js +16 -0
  1092. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/ko_dlg.js +16 -0
  1093. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/lt_dlg.js +16 -0
  1094. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/lv_dlg.js +16 -0
  1095. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/mk_dlg.js +16 -0
  1096. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/ml_dlg.js +16 -0
  1097. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/mn_dlg.js +16 -0
  1098. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/ms_dlg.js +16 -0
  1099. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/nb_dlg.js +16 -0
  1100. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/nl_dlg.js +16 -0
  1101. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/nn_dlg.js +16 -0
  1102. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/no_dlg.js +16 -0
  1103. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/pl_dlg.js +16 -0
  1104. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/pt_dlg.js +16 -0
  1105. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/ro_dlg.js +16 -0
  1106. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/ru_dlg.js +16 -0
  1107. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/sc_dlg.js +16 -0
  1108. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/se_dlg.js +16 -0
  1109. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/si_dlg.js +16 -0
  1110. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/sk_dlg.js +16 -0
  1111. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/sl_dlg.js +16 -0
  1112. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/sq_dlg.js +16 -0
  1113. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/sr_dlg.js +16 -0
  1114. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/sv_dlg.js +16 -0
  1115. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/th_dlg.js +16 -0
  1116. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/tr_dlg.js +16 -0
  1117. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/tt_dlg.js +16 -0
  1118. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/tw_dlg.js +16 -0
  1119. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/uk_dlg.js +16 -0
  1120. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/vi_dlg.js +16 -0
  1121. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/langs/zh_dlg.js +16 -0
  1122. data/app/assets/javascripts/forgeos/tiny_mce/plugins/searchreplace/searchreplace.htm +104 -0
  1123. data/app/assets/javascripts/forgeos/tiny_mce/plugins/spellchecker/css/content.css +1 -0
  1124. data/app/assets/javascripts/forgeos/tiny_mce/plugins/spellchecker/editor_plugin.js +1 -0
  1125. data/app/assets/javascripts/forgeos/tiny_mce/plugins/spellchecker/editor_plugin_src.js +338 -0
  1126. data/app/assets/javascripts/forgeos/tiny_mce/plugins/spellchecker/img/wline.gif +0 -0
  1127. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/css/props.css +13 -0
  1128. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/editor_plugin.js +1 -0
  1129. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/editor_plugin_src.js +52 -0
  1130. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/js/props.js +641 -0
  1131. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/ar_dlg.js +63 -0
  1132. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/az_dlg.js +63 -0
  1133. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/be_dlg.js +63 -0
  1134. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/bg_dlg.js +63 -0
  1135. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/bn_dlg.js +63 -0
  1136. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/br_dlg.js +63 -0
  1137. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/bs_dlg.js +63 -0
  1138. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/ca_dlg.js +63 -0
  1139. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/ch_dlg.js +63 -0
  1140. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/cs_dlg.js +63 -0
  1141. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/cy_dlg.js +63 -0
  1142. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/da_dlg.js +63 -0
  1143. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/de_dlg.js +63 -0
  1144. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/dv_dlg.js +63 -0
  1145. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/el_dlg.js +63 -0
  1146. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/en_dlg.js +63 -0
  1147. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/es_dlg.js +63 -0
  1148. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/et_dlg.js +63 -0
  1149. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/fa_dlg.js +63 -0
  1150. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/fi_dlg.js +63 -0
  1151. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/fr_dlg.js +63 -0
  1152. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/gl_dlg.js +63 -0
  1153. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/gu_dlg.js +63 -0
  1154. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/he_dlg.js +63 -0
  1155. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/hr_dlg.js +63 -0
  1156. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/hu_dlg.js +63 -0
  1157. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/ia_dlg.js +63 -0
  1158. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/id_dlg.js +63 -0
  1159. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/ii_dlg.js +63 -0
  1160. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/is_dlg.js +63 -0
  1161. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/it_dlg.js +63 -0
  1162. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/ja_dlg.js +63 -0
  1163. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/ko_dlg.js +63 -0
  1164. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/lt_dlg.js +63 -0
  1165. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/lv_dlg.js +63 -0
  1166. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/mk_dlg.js +63 -0
  1167. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/ml_dlg.js +63 -0
  1168. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/mn_dlg.js +63 -0
  1169. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/ms_dlg.js +63 -0
  1170. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/nb_dlg.js +63 -0
  1171. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/nl_dlg.js +63 -0
  1172. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/nn_dlg.js +63 -0
  1173. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/no_dlg.js +63 -0
  1174. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/pl_dlg.js +63 -0
  1175. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/pt_dlg.js +63 -0
  1176. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/ro_dlg.js +63 -0
  1177. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/ru_dlg.js +63 -0
  1178. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/sc_dlg.js +63 -0
  1179. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/se_dlg.js +63 -0
  1180. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/si_dlg.js +63 -0
  1181. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/sk_dlg.js +63 -0
  1182. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/sl_dlg.js +63 -0
  1183. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/sq_dlg.js +63 -0
  1184. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/sr_dlg.js +63 -0
  1185. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/sv_dlg.js +63 -0
  1186. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/th_dlg.js +63 -0
  1187. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/tr_dlg.js +63 -0
  1188. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/tt_dlg.js +63 -0
  1189. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/tw_dlg.js +63 -0
  1190. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/uk_dlg.js +63 -0
  1191. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/vi_dlg.js +63 -0
  1192. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/langs/zh_dlg.js +63 -0
  1193. data/app/assets/javascripts/forgeos/tiny_mce/plugins/style/props.htm +730 -0
  1194. data/app/assets/javascripts/forgeos/tiny_mce/plugins/tabfocus/editor_plugin.js +1 -0
  1195. data/app/assets/javascripts/forgeos/tiny_mce/plugins/tabfocus/editor_plugin_src.js +109 -0
  1196. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/cell.htm +183 -0
  1197. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/css/cell.css +17 -0
  1198. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/css/row.css +25 -0
  1199. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/css/table.css +13 -0
  1200. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/editor_plugin.js +1 -0
  1201. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/editor_plugin_src.js +1160 -0
  1202. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/js/cell.js +269 -0
  1203. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/js/merge_cells.js +29 -0
  1204. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/js/row.js +212 -0
  1205. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/js/table.js +440 -0
  1206. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/ar_dlg.js +74 -0
  1207. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/az_dlg.js +74 -0
  1208. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/be_dlg.js +74 -0
  1209. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/bg_dlg.js +74 -0
  1210. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/bn_dlg.js +74 -0
  1211. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/br_dlg.js +74 -0
  1212. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/bs_dlg.js +74 -0
  1213. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/ca_dlg.js +74 -0
  1214. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/ch_dlg.js +74 -0
  1215. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/cs_dlg.js +74 -0
  1216. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/cy_dlg.js +74 -0
  1217. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/da_dlg.js +74 -0
  1218. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/de_dlg.js +74 -0
  1219. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/dv_dlg.js +74 -0
  1220. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/el_dlg.js +74 -0
  1221. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/en_dlg.js +74 -0
  1222. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/es_dlg.js +74 -0
  1223. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/et_dlg.js +74 -0
  1224. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/fa_dlg.js +74 -0
  1225. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/fi_dlg.js +74 -0
  1226. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/fr_dlg.js +74 -0
  1227. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/gl_dlg.js +74 -0
  1228. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/gu_dlg.js +74 -0
  1229. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/he_dlg.js +74 -0
  1230. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/hr_dlg.js +74 -0
  1231. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/hu_dlg.js +74 -0
  1232. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/ia_dlg.js +74 -0
  1233. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/id_dlg.js +74 -0
  1234. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/ii_dlg.js +74 -0
  1235. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/is_dlg.js +74 -0
  1236. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/it_dlg.js +74 -0
  1237. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/ja_dlg.js +74 -0
  1238. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/ko_dlg.js +74 -0
  1239. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/lt_dlg.js +74 -0
  1240. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/lv_dlg.js +74 -0
  1241. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/mk_dlg.js +74 -0
  1242. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/ml_dlg.js +74 -0
  1243. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/mn_dlg.js +74 -0
  1244. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/ms_dlg.js +74 -0
  1245. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/nb_dlg.js +74 -0
  1246. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/nl_dlg.js +74 -0
  1247. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/nn_dlg.js +74 -0
  1248. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/no_dlg.js +74 -0
  1249. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/pl_dlg.js +74 -0
  1250. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/pt_dlg.js +74 -0
  1251. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/ro_dlg.js +74 -0
  1252. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/ru_dlg.js +74 -0
  1253. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/sc_dlg.js +74 -0
  1254. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/se_dlg.js +73 -0
  1255. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/si_dlg.js +74 -0
  1256. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/sk_dlg.js +74 -0
  1257. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/sl_dlg.js +74 -0
  1258. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/sq_dlg.js +74 -0
  1259. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/sr_dlg.js +74 -0
  1260. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/sv_dlg.js +73 -0
  1261. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/th_dlg.js +74 -0
  1262. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/tr_dlg.js +74 -0
  1263. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/tt_dlg.js +74 -0
  1264. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/tw_dlg.js +74 -0
  1265. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/uk_dlg.js +74 -0
  1266. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/vi_dlg.js +74 -0
  1267. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/langs/zh_dlg.js +74 -0
  1268. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/merge_cells.htm +37 -0
  1269. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/row.htm +160 -0
  1270. data/app/assets/javascripts/forgeos/tiny_mce/plugins/table/table.htm +192 -0
  1271. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/blank.htm +12 -0
  1272. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/css/template.css +23 -0
  1273. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/editor_plugin.js +1 -0
  1274. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/editor_plugin_src.js +156 -0
  1275. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/js/template.js +106 -0
  1276. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/ar_dlg.js +15 -0
  1277. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/az_dlg.js +15 -0
  1278. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/be_dlg.js +15 -0
  1279. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/bg_dlg.js +15 -0
  1280. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/bn_dlg.js +15 -0
  1281. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/br_dlg.js +15 -0
  1282. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/bs_dlg.js +15 -0
  1283. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/ca_dlg.js +15 -0
  1284. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/ch_dlg.js +15 -0
  1285. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/cs_dlg.js +15 -0
  1286. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/cy_dlg.js +15 -0
  1287. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/da_dlg.js +15 -0
  1288. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/de_dlg.js +15 -0
  1289. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/dv_dlg.js +15 -0
  1290. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/el_dlg.js +15 -0
  1291. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/en_dlg.js +15 -0
  1292. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/es_dlg.js +15 -0
  1293. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/et_dlg.js +15 -0
  1294. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/fa_dlg.js +15 -0
  1295. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/fi_dlg.js +15 -0
  1296. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/fr_dlg.js +15 -0
  1297. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/gl_dlg.js +15 -0
  1298. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/gu_dlg.js +15 -0
  1299. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/he_dlg.js +15 -0
  1300. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/hr_dlg.js +15 -0
  1301. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/hu_dlg.js +15 -0
  1302. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/ia_dlg.js +15 -0
  1303. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/id_dlg.js +15 -0
  1304. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/ii_dlg.js +15 -0
  1305. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/is_dlg.js +15 -0
  1306. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/it_dlg.js +15 -0
  1307. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/ja_dlg.js +15 -0
  1308. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/ko_dlg.js +15 -0
  1309. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/lt_dlg.js +15 -0
  1310. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/lv_dlg.js +15 -0
  1311. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/mk_dlg.js +15 -0
  1312. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/ml_dlg.js +15 -0
  1313. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/mn_dlg.js +15 -0
  1314. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/ms_dlg.js +15 -0
  1315. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/nb_dlg.js +15 -0
  1316. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/nl_dlg.js +15 -0
  1317. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/nn_dlg.js +15 -0
  1318. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/no_dlg.js +15 -0
  1319. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/pl_dlg.js +15 -0
  1320. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/pt_dlg.js +15 -0
  1321. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/ro_dlg.js +15 -0
  1322. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/ru_dlg.js +15 -0
  1323. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/sc_dlg.js +15 -0
  1324. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/se_dlg.js +15 -0
  1325. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/si_dlg.js +15 -0
  1326. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/sk_dlg.js +15 -0
  1327. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/sl_dlg.js +15 -0
  1328. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/sq_dlg.js +15 -0
  1329. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/sr_dlg.js +15 -0
  1330. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/sv_dlg.js +15 -0
  1331. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/th_dlg.js +15 -0
  1332. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/tr_dlg.js +15 -0
  1333. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/tt_dlg.js +15 -0
  1334. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/tw_dlg.js +15 -0
  1335. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/uk_dlg.js +15 -0
  1336. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/vi_dlg.js +15 -0
  1337. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/langs/zh_dlg.js +15 -0
  1338. data/app/assets/javascripts/forgeos/tiny_mce/plugins/template/template.htm +38 -0
  1339. data/app/assets/javascripts/forgeos/tiny_mce/plugins/visualchars/editor_plugin.js +1 -0
  1340. data/app/assets/javascripts/forgeos/tiny_mce/plugins/visualchars/editor_plugin_src.js +73 -0
  1341. data/app/assets/javascripts/forgeos/tiny_mce/plugins/wordcount/editor_plugin.js +1 -0
  1342. data/app/assets/javascripts/forgeos/tiny_mce/plugins/wordcount/editor_plugin_src.js +95 -0
  1343. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/abbr.htm +148 -0
  1344. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/acronym.htm +148 -0
  1345. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/attributes.htm +153 -0
  1346. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/cite.htm +148 -0
  1347. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/css/attributes.css +11 -0
  1348. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/css/popup.css +9 -0
  1349. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/del.htm +169 -0
  1350. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/editor_plugin.js +1 -0
  1351. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js +136 -0
  1352. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/ins.htm +169 -0
  1353. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/js/abbr.js +25 -0
  1354. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/js/acronym.js +25 -0
  1355. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/js/attributes.js +123 -0
  1356. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/js/cite.js +25 -0
  1357. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/js/del.js +60 -0
  1358. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/js/element_common.js +231 -0
  1359. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/js/ins.js +59 -0
  1360. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/ar_dlg.js +32 -0
  1361. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/az_dlg.js +32 -0
  1362. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/be_dlg.js +32 -0
  1363. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/bg_dlg.js +32 -0
  1364. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/bn_dlg.js +32 -0
  1365. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/br_dlg.js +32 -0
  1366. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/bs_dlg.js +32 -0
  1367. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/ca_dlg.js +32 -0
  1368. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/ch_dlg.js +32 -0
  1369. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/cs_dlg.js +32 -0
  1370. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/cy_dlg.js +32 -0
  1371. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/da_dlg.js +32 -0
  1372. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js +32 -0
  1373. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/dv_dlg.js +32 -0
  1374. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/el_dlg.js +32 -0
  1375. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js +32 -0
  1376. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js +32 -0
  1377. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/et_dlg.js +32 -0
  1378. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/fa_dlg.js +32 -0
  1379. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/fi_dlg.js +32 -0
  1380. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js +32 -0
  1381. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/gl_dlg.js +32 -0
  1382. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/gu_dlg.js +32 -0
  1383. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/he_dlg.js +32 -0
  1384. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/hr_dlg.js +32 -0
  1385. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/hu_dlg.js +32 -0
  1386. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/ia_dlg.js +32 -0
  1387. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/id_dlg.js +32 -0
  1388. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/ii_dlg.js +32 -0
  1389. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/is_dlg.js +32 -0
  1390. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/it_dlg.js +32 -0
  1391. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/ja_dlg.js +32 -0
  1392. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/ko_dlg.js +32 -0
  1393. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/lt_dlg.js +32 -0
  1394. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/lv_dlg.js +32 -0
  1395. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/mk_dlg.js +32 -0
  1396. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/ml_dlg.js +32 -0
  1397. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/mn_dlg.js +32 -0
  1398. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/ms_dlg.js +32 -0
  1399. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/nb_dlg.js +32 -0
  1400. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/nl_dlg.js +32 -0
  1401. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/nn_dlg.js +32 -0
  1402. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/no_dlg.js +32 -0
  1403. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/pl_dlg.js +32 -0
  1404. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/pt_dlg.js +32 -0
  1405. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/ro_dlg.js +32 -0
  1406. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/ru_dlg.js +32 -0
  1407. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/sc_dlg.js +32 -0
  1408. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/se_dlg.js +32 -0
  1409. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/si_dlg.js +32 -0
  1410. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/sk_dlg.js +32 -0
  1411. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/sl_dlg.js +32 -0
  1412. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/sq_dlg.js +32 -0
  1413. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/sr_dlg.js +32 -0
  1414. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/sv_dlg.js +32 -0
  1415. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/th_dlg.js +32 -0
  1416. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/tr_dlg.js +32 -0
  1417. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/tt_dlg.js +32 -0
  1418. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/tw_dlg.js +32 -0
  1419. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/uk_dlg.js +32 -0
  1420. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/vi_dlg.js +32 -0
  1421. data/app/assets/javascripts/forgeos/tiny_mce/plugins/xhtmlxtras/langs/zh_dlg.js +32 -0
  1422. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/about.htm +56 -0
  1423. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/anchor.htm +31 -0
  1424. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/charmap.htm +53 -0
  1425. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/color_picker.htm +75 -0
  1426. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/editor_template.js +1 -0
  1427. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/editor_template_src.js +1153 -0
  1428. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/image.htm +85 -0
  1429. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/img/colorpicker.jpg +0 -0
  1430. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/img/icons.gif +0 -0
  1431. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/js/about.js +72 -0
  1432. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/js/anchor.js +37 -0
  1433. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/js/charmap.js +325 -0
  1434. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/js/color_picker.js +253 -0
  1435. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/js/image.js +245 -0
  1436. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/js/link.js +156 -0
  1437. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/js/source_editor.js +62 -0
  1438. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ar.js +64 -0
  1439. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ar_dlg.js +51 -0
  1440. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/az.js +63 -0
  1441. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/az_dlg.js +51 -0
  1442. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/be.js +62 -0
  1443. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/be_dlg.js +51 -0
  1444. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/bg.js +62 -0
  1445. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/bg_dlg.js +51 -0
  1446. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/bn.js +62 -0
  1447. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/bn_dlg.js +51 -0
  1448. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/br.js +62 -0
  1449. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/br_dlg.js +51 -0
  1450. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/bs.js +62 -0
  1451. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/bs_dlg.js +51 -0
  1452. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ca.js +62 -0
  1453. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ca_dlg.js +51 -0
  1454. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ch.js +62 -0
  1455. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ch_dlg.js +51 -0
  1456. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/cs.js +62 -0
  1457. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/cs_dlg.js +51 -0
  1458. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/cy.js +62 -0
  1459. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/cy_dlg.js +51 -0
  1460. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/da.js +62 -0
  1461. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/da_dlg.js +51 -0
  1462. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/de.js +63 -0
  1463. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/de_dlg.js +51 -0
  1464. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/dv.js +62 -0
  1465. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/dv_dlg.js +51 -0
  1466. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/el.js +62 -0
  1467. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/el_dlg.js +51 -0
  1468. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/en.js +62 -0
  1469. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/en_dlg.js +51 -0
  1470. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/es.js +62 -0
  1471. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/es_dlg.js +51 -0
  1472. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/et.js +62 -0
  1473. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/et_dlg.js +51 -0
  1474. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/fa.js +62 -0
  1475. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/fa_dlg.js +51 -0
  1476. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/fi.js +62 -0
  1477. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/fi_dlg.js +51 -0
  1478. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/fr.js +62 -0
  1479. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/fr_dlg.js +51 -0
  1480. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/gl.js +62 -0
  1481. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/gl_dlg.js +51 -0
  1482. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/gu.js +62 -0
  1483. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/gu_dlg.js +51 -0
  1484. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/he.js +62 -0
  1485. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/he_dlg.js +51 -0
  1486. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/hr.js +62 -0
  1487. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/hr_dlg.js +51 -0
  1488. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/hu.js +62 -0
  1489. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/hu_dlg.js +51 -0
  1490. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ia.js +62 -0
  1491. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ia_dlg.js +51 -0
  1492. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/id.js +62 -0
  1493. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/id_dlg.js +51 -0
  1494. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ii.js +62 -0
  1495. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ii_dlg.js +51 -0
  1496. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/is.js +62 -0
  1497. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/is_dlg.js +51 -0
  1498. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/it.js +62 -0
  1499. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/it_dlg.js +51 -0
  1500. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ja.js +62 -0
  1501. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ja_dlg.js +51 -0
  1502. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ko.js +62 -0
  1503. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ko_dlg.js +51 -0
  1504. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/lt.js +63 -0
  1505. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/lt_dlg.js +51 -0
  1506. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/lv.js +62 -0
  1507. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/lv_dlg.js +51 -0
  1508. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/mk.js +62 -0
  1509. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/mk_dlg.js +51 -0
  1510. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ml.js +62 -0
  1511. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ml_dlg.js +51 -0
  1512. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/mn.js +62 -0
  1513. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/mn_dlg.js +51 -0
  1514. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ms.js +62 -0
  1515. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ms_dlg.js +51 -0
  1516. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/nb.js +62 -0
  1517. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/nb_dlg.js +51 -0
  1518. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/nl.js +62 -0
  1519. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/nl_dlg.js +51 -0
  1520. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/nn.js +62 -0
  1521. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/nn_dlg.js +51 -0
  1522. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/no.js +62 -0
  1523. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/no_dlg.js +51 -0
  1524. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/pl.js +62 -0
  1525. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/pl_dlg.js +51 -0
  1526. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/pt.js +62 -0
  1527. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/pt_dlg.js +51 -0
  1528. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ro.js +62 -0
  1529. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ro_dlg.js +51 -0
  1530. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ru.js +63 -0
  1531. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/ru_dlg.js +51 -0
  1532. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/sc.js +64 -0
  1533. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/sc_dlg.js +51 -0
  1534. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/se.js +60 -0
  1535. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/se_dlg.js +51 -0
  1536. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/si.js +61 -0
  1537. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/si_dlg.js +51 -0
  1538. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/sk.js +62 -0
  1539. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/sk_dlg.js +51 -0
  1540. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/sl.js +62 -0
  1541. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/sl_dlg.js +51 -0
  1542. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/sq.js +62 -0
  1543. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/sq_dlg.js +51 -0
  1544. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/sr.js +62 -0
  1545. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/sr_dlg.js +51 -0
  1546. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/sv.js +60 -0
  1547. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/sv_dlg.js +51 -0
  1548. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/th.js +62 -0
  1549. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/th_dlg.js +51 -0
  1550. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/tr.js +62 -0
  1551. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/tr_dlg.js +51 -0
  1552. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/tt.js +62 -0
  1553. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/tt_dlg.js +51 -0
  1554. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/tw.js +64 -0
  1555. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/tw_dlg.js +51 -0
  1556. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/uk.js +62 -0
  1557. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/uk_dlg.js +51 -0
  1558. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/vi.js +62 -0
  1559. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/vi_dlg.js +51 -0
  1560. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/zh.js +64 -0
  1561. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/langs/zh_dlg.js +51 -0
  1562. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/link.htm +63 -0
  1563. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/default/content.css +32 -0
  1564. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/default/dialog.css +116 -0
  1565. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
  1566. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
  1567. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
  1568. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/default/img/menu_check.gif +0 -0
  1569. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/default/img/progress.gif +0 -0
  1570. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
  1571. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/default/ui.css +214 -0
  1572. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/content.css +32 -0
  1573. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/dialog.css +116 -0
  1574. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/align-left.png +0 -0
  1575. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/align-right.png +0 -0
  1576. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/background.png +0 -0
  1577. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/bold.png +0 -0
  1578. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/buttons.png +0 -0
  1579. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/center.png +0 -0
  1580. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/glossy-gray-left.png +0 -0
  1581. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/glossy-gray-right.png +0 -0
  1582. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/html-tag.png +0 -0
  1583. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/italic.png +0 -0
  1584. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/items.gif +0 -0
  1585. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/justify.png +0 -0
  1586. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/line-throught.png +0 -0
  1587. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/menu_arrow.gif +0 -0
  1588. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/menu_check.gif +0 -0
  1589. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/progress.gif +0 -0
  1590. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/separator.png +0 -0
  1591. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/tab-to-left.png +0 -0
  1592. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/tab-to-right.png +0 -0
  1593. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/tabs.gif +0 -0
  1594. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/tinymce.png +0 -0
  1595. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/img/underline.png +0 -0
  1596. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/forgeos/ui.css +244 -0
  1597. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/o2k7/content.css +32 -0
  1598. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/o2k7/dialog.css +115 -0
  1599. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
  1600. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
  1601. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
  1602. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/o2k7/ui.css +215 -0
  1603. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +8 -0
  1604. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +5 -0
  1605. data/app/assets/javascripts/forgeos/tiny_mce/themes/advanced/source_editor.htm +31 -0
  1606. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/editor_template.js +1 -0
  1607. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/editor_template_src.js +85 -0
  1608. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/img/icons.gif +0 -0
  1609. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/ar.js +11 -0
  1610. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/az.js +11 -0
  1611. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/be.js +11 -0
  1612. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/bg.js +11 -0
  1613. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/bn.js +11 -0
  1614. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/br.js +11 -0
  1615. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/bs.js +11 -0
  1616. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/ca.js +11 -0
  1617. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/ch.js +11 -0
  1618. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/cs.js +11 -0
  1619. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/cy.js +11 -0
  1620. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/da.js +11 -0
  1621. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/de.js +11 -0
  1622. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/dv.js +11 -0
  1623. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/el.js +11 -0
  1624. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/en.js +11 -0
  1625. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/es.js +11 -0
  1626. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/et.js +11 -0
  1627. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/fa.js +11 -0
  1628. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/fi.js +11 -0
  1629. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/fr.js +11 -0
  1630. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/gl.js +11 -0
  1631. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/gu.js +11 -0
  1632. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/he.js +11 -0
  1633. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/hr.js +11 -0
  1634. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/hu.js +11 -0
  1635. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/ia.js +11 -0
  1636. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/id.js +11 -0
  1637. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/ii.js +11 -0
  1638. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/is.js +11 -0
  1639. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/it.js +11 -0
  1640. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/ja.js +11 -0
  1641. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/ko.js +11 -0
  1642. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/lt.js +11 -0
  1643. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/lv.js +11 -0
  1644. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/mk.js +11 -0
  1645. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/ml.js +11 -0
  1646. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/mn.js +11 -0
  1647. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/ms.js +11 -0
  1648. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/nb.js +11 -0
  1649. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/nl.js +11 -0
  1650. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/nn.js +11 -0
  1651. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/no.js +11 -0
  1652. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/pl.js +11 -0
  1653. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/pt.js +11 -0
  1654. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/ro.js +11 -0
  1655. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/ru.js +11 -0
  1656. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/sc.js +11 -0
  1657. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/se.js +11 -0
  1658. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/si.js +11 -0
  1659. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/sk.js +11 -0
  1660. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/sl.js +11 -0
  1661. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/sq.js +11 -0
  1662. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/sr.js +11 -0
  1663. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/sv.js +11 -0
  1664. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/th.js +11 -0
  1665. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/tr.js +11 -0
  1666. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/tt.js +11 -0
  1667. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/tw.js +11 -0
  1668. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/uk.js +11 -0
  1669. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/vi.js +11 -0
  1670. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/langs/zh.js +11 -0
  1671. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/skins/default/content.css +25 -0
  1672. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/skins/default/ui.css +32 -0
  1673. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/skins/o2k7/content.css +17 -0
  1674. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png +0 -0
  1675. data/app/assets/javascripts/forgeos/tiny_mce/themes/simple/skins/o2k7/ui.css +35 -0
  1676. data/app/assets/javascripts/forgeos/tiny_mce/tiny_mce.js +1 -0
  1677. data/app/assets/javascripts/forgeos/tiny_mce/tiny_mce_popup.js +5 -0
  1678. data/app/assets/javascripts/forgeos/tiny_mce/tiny_mce_src.js +12332 -0
  1679. data/app/assets/javascripts/forgeos/tiny_mce/utils/editable_selects.js +69 -0
  1680. data/app/assets/javascripts/forgeos/tiny_mce/utils/form_utils.js +199 -0
  1681. data/app/assets/javascripts/forgeos/tiny_mce/utils/mctabs.js +76 -0
  1682. data/app/assets/javascripts/forgeos/tiny_mce/utils/validate.js +219 -0
  1683. data/app/assets/stylesheets/forgeos/960.css.sass +435 -0
  1684. data/app/assets/stylesheets/forgeos/admin/base.css.sass +1 -0
  1685. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_all.css.sass +21 -0
  1686. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_attachments.css.sass +37 -0
  1687. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_colours.css.sass +35 -0
  1688. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_common.css.sass +27 -0
  1689. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_content.css.sass +60 -0
  1690. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_customer.css.sass +72 -0
  1691. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_dashboard.css.sass +169 -0
  1692. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_datatable.css.sass +260 -0
  1693. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_dropdowns.css.sass +314 -0
  1694. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_generals.css.sass +427 -0
  1695. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_icons.css.sass +404 -0
  1696. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_lightbox.css.sass +147 -0
  1697. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_menu.css.sass +70 -0
  1698. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_notifications.css.sass +33 -0
  1699. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_payment.css.sass +20 -0
  1700. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_rightSidebar.css.sass +168 -0
  1701. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_roles.css.sass +7 -0
  1702. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_search.css.sass +50 -0
  1703. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_settings.css.sass +43 -0
  1704. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_sidebar.css.sass +53 -0
  1705. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_statistics.css.sass +67 -0
  1706. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_uploadify.css.sass +19 -0
  1707. data/app/assets/stylesheets/forgeos/admin/forgeos_core/_visuals.css.sass +115 -0
  1708. data/app/assets/stylesheets/forgeos/admin/ie-sucks.css +21 -0
  1709. data/app/assets/stylesheets/forgeos/admin/iepngfix.htc +68 -0
  1710. data/app/assets/stylesheets/forgeos/admin/login.css.sass +96 -0
  1711. data/app/assets/stylesheets/forgeos/dataTables/demo_page.css +81 -0
  1712. data/app/assets/stylesheets/forgeos/dataTables/demo_table.css +415 -0
  1713. data/app/assets/stylesheets/forgeos/jquery-ui/themes/blitzer.css +404 -0
  1714. data/app/assets/stylesheets/forgeos/jquery-ui/themes/dot-luv.css +404 -0
  1715. data/app/assets/stylesheets/forgeos/jquery-ui/themes/forgeos.css.sass +2717 -0
  1716. data/app/assets/stylesheets/forgeos/jquery-ui/themes/humanity.css +404 -0
  1717. data/app/assets/stylesheets/forgeos/jquery-ui/themes/redmond.css +404 -0
  1718. data/app/assets/stylesheets/forgeos/jquery-ui/themes/smoothness.css +404 -0
  1719. data/app/assets/stylesheets/forgeos/jquery-ui/themes/start.css +404 -0
  1720. data/app/assets/stylesheets/forgeos/jquery-ui/themes/swanky-purse.css +404 -0
  1721. data/app/assets/stylesheets/forgeos/jquery.selectbox.css +75 -0
  1722. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/bubble-quantity-products.png +0 -0
  1723. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/check-checked.png +0 -0
  1724. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/check-unchecked.png +0 -0
  1725. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/context.gif +0 -0
  1726. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/create.png +0 -0
  1727. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/dark-blue-minus.png +0 -0
  1728. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/dark-blue-plus.png +0 -0
  1729. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/dot.gif +0 -0
  1730. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/f.png +0 -0
  1731. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/fminus.gif +0 -0
  1732. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/fminus_rtl.gif +0 -0
  1733. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/folder.png +0 -0
  1734. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/fplus.gif +0 -0
  1735. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/fplus_rtl.gif +0 -0
  1736. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/lastli.gif +0 -0
  1737. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/lastli_rtl.gif +0 -0
  1738. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/li.gif +0 -0
  1739. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/remove.png +0 -0
  1740. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/rename.png +0 -0
  1741. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/style.css.sass +166 -0
  1742. data/app/assets/stylesheets/forgeos/jstree/themes/association_categories/throbber.gif +0 -0
  1743. data/app/assets/stylesheets/forgeos/jstree/themes/categories/brown-minus.png +0 -0
  1744. data/app/assets/stylesheets/forgeos/jstree/themes/categories/brown-plus.png +0 -0
  1745. data/app/assets/stylesheets/forgeos/jstree/themes/categories/bubble-quantity-elements.png +0 -0
  1746. data/app/assets/stylesheets/forgeos/jstree/themes/categories/context.gif +0 -0
  1747. data/app/assets/stylesheets/forgeos/jstree/themes/categories/create.png +0 -0
  1748. data/app/assets/stylesheets/forgeos/jstree/themes/categories/dot.gif +0 -0
  1749. data/app/assets/stylesheets/forgeos/jstree/themes/categories/f.png +0 -0
  1750. data/app/assets/stylesheets/forgeos/jstree/themes/categories/fminus.gif +0 -0
  1751. data/app/assets/stylesheets/forgeos/jstree/themes/categories/fminus_rtl.gif +0 -0
  1752. data/app/assets/stylesheets/forgeos/jstree/themes/categories/fplus.gif +0 -0
  1753. data/app/assets/stylesheets/forgeos/jstree/themes/categories/fplus_rtl.gif +0 -0
  1754. data/app/assets/stylesheets/forgeos/jstree/themes/categories/images.png +0 -0
  1755. data/app/assets/stylesheets/forgeos/jstree/themes/categories/lastli.gif +0 -0
  1756. data/app/assets/stylesheets/forgeos/jstree/themes/categories/lastli_rtl.gif +0 -0
  1757. data/app/assets/stylesheets/forgeos/jstree/themes/categories/li.gif +0 -0
  1758. data/app/assets/stylesheets/forgeos/jstree/themes/categories/remove.png +0 -0
  1759. data/app/assets/stylesheets/forgeos/jstree/themes/categories/rename.png +0 -0
  1760. data/app/assets/stylesheets/forgeos/jstree/themes/categories/style.css +106 -0
  1761. data/app/assets/stylesheets/forgeos/jstree/themes/categories/style.css.sass +126 -0
  1762. data/app/assets/stylesheets/forgeos/jstree/themes/categories/throbber.gif +0 -0
  1763. data/app/assets/stylesheets/forgeos/jstree/themes/marker.gif +0 -0
  1764. data/app/assets/stylesheets/forgeos/jstree/themes/marker_rtl.gif +0 -0
  1765. data/app/assets/stylesheets/forgeos/jstree/themes/plus.gif +0 -0
  1766. data/app/assets/stylesheets/forgeos/jstree/themes/remove.gif +0 -0
  1767. data/app/assets/stylesheets/forgeos/jstree/themes/remove.png +0 -0
  1768. data/app/assets/stylesheets/forgeos/jstree/tree_component.css.sass +204 -0
  1769. data/app/controllers/admin/accounts_controller.rb +50 -0
  1770. data/app/controllers/admin/administrators_controller.rb +95 -0
  1771. data/app/controllers/admin/attachments_controller.rb +195 -0
  1772. data/app/controllers/admin/base_controller.rb +55 -0
  1773. data/app/controllers/admin/cachings_controller.rb +60 -0
  1774. data/app/controllers/admin/categories_controller.rb +152 -0
  1775. data/app/controllers/admin/dashboard_controller.rb +10 -0
  1776. data/app/controllers/admin/import_controller.rb +102 -0
  1777. data/app/controllers/admin/person_sessions_controller.rb +48 -0
  1778. data/app/controllers/admin/rights_controller.rb +106 -0
  1779. data/app/controllers/admin/roles_controller.rb +118 -0
  1780. data/app/controllers/admin/settings_controller.rb +33 -0
  1781. data/app/controllers/admin/statistics_controller.rb +114 -0
  1782. data/app/controllers/admin/tags_controller.rb +16 -0
  1783. data/app/controllers/admin/users_controller.rb +201 -0
  1784. data/app/controllers/forgeos/application_controller.rb +85 -0
  1785. data/app/controllers/person_sessions_controller.rb +22 -0
  1786. data/app/controllers/search_controller.rb +14 -0
  1787. data/app/controllers/statistics_collector_controller.rb +17 -0
  1788. data/app/helpers/admin/attachment_helper.rb +56 -0
  1789. data/app/helpers/admin/base_helper.rb +164 -0
  1790. data/app/helpers/forgeos/application_helper.rb +114 -0
  1791. data/app/models/address.rb +21 -0
  1792. data/app/models/admin_category.rb +7 -0
  1793. data/app/models/administrator.rb +17 -0
  1794. data/app/models/attachment.rb +44 -0
  1795. data/app/models/attachment_category.rb +7 -0
  1796. data/app/models/attachment_link.rb +4 -0
  1797. data/app/models/audio.rb +4 -0
  1798. data/app/models/audio_category.rb +2 -0
  1799. data/app/models/avatar.rb +4 -0
  1800. data/app/models/category.rb +44 -0
  1801. data/app/models/country.rb +2 -0
  1802. data/app/models/doc.rb +4 -0
  1803. data/app/models/doc_category.rb +2 -0
  1804. data/app/models/geo_zone.rb +13 -0
  1805. data/app/models/import_set.rb +4 -0
  1806. data/app/models/media.rb +4 -0
  1807. data/app/models/media_category.rb +2 -0
  1808. data/app/models/meta_info.rb +4 -0
  1809. data/app/models/page_viewed_counter.rb +2 -0
  1810. data/app/models/pdf.rb +4 -0
  1811. data/app/models/pdf_category.rb +2 -0
  1812. data/app/models/person.rb +68 -0
  1813. data/app/models/person_session.rb +3 -0
  1814. data/app/models/picture.rb +4 -0
  1815. data/app/models/picture_category.rb +2 -0
  1816. data/app/models/right.rb +14 -0
  1817. data/app/models/right_category.rb +4 -0
  1818. data/app/models/role.rb +16 -0
  1819. data/app/models/role_category.rb +3 -0
  1820. data/app/models/rule.rb +30 -0
  1821. data/app/models/search_keyword.rb +3 -0
  1822. data/app/models/search_keyword_counter.rb +2 -0
  1823. data/app/models/setting.rb +25 -0
  1824. data/app/models/statistic_counter.rb +21 -0
  1825. data/app/models/user.rb +12 -0
  1826. data/app/models/user_category.rb +3 -0
  1827. data/app/models/user_notifier.rb +10 -0
  1828. data/app/models/video.rb +4 -0
  1829. data/app/models/video_category.rb +2 -0
  1830. data/app/models/visitor_counter.rb +2 -0
  1831. data/app/views/admin/accounts/_form.html.haml +33 -0
  1832. data/app/views/admin/accounts/edit.html.haml +1 -0
  1833. data/app/views/admin/accounts/show.html.haml +24 -0
  1834. data/app/views/admin/administrators/_form.html.haml +34 -0
  1835. data/app/views/admin/administrators/_form_rights.html.haml +9 -0
  1836. data/app/views/admin/administrators/_tabs.html.haml +6 -0
  1837. data/app/views/admin/administrators/edit.html.haml +2 -0
  1838. data/app/views/admin/administrators/index.html.haml +12 -0
  1839. data/app/views/admin/administrators/index.json.erb +36 -0
  1840. data/app/views/admin/administrators/new.html.haml +2 -0
  1841. data/app/views/admin/administrators/show.html.haml +24 -0
  1842. data/app/views/admin/administrators/update_rights.html.haml +1 -0
  1843. data/app/views/admin/attachments/_attachments_popup.html.haml +47 -0
  1844. data/app/views/admin/attachments/_audio.html.haml +45 -0
  1845. data/app/views/admin/attachments/_doc.html.haml +35 -0
  1846. data/app/views/admin/attachments/_form.html.haml +95 -0
  1847. data/app/views/admin/attachments/_list_associated_elements.html.haml +12 -0
  1848. data/app/views/admin/attachments/_media.html.haml +35 -0
  1849. data/app/views/admin/attachments/_pdf.html.haml +35 -0
  1850. data/app/views/admin/attachments/_picture.html.haml +66 -0
  1851. data/app/views/admin/attachments/_table_thumbnail.html.haml +6 -0
  1852. data/app/views/admin/attachments/_tabs.html.haml +7 -0
  1853. data/app/views/admin/attachments/_tiny_mce_list.html.haml +22 -0
  1854. data/app/views/admin/attachments/_video.html.haml +44 -0
  1855. data/app/views/admin/attachments/edit.html.haml +1 -0
  1856. data/app/views/admin/attachments/index.html.haml +15 -0
  1857. data/app/views/admin/attachments/index.json.erb +30 -0
  1858. data/app/views/admin/attachments/new.html.haml +3 -0
  1859. data/app/views/admin/attachments/show.html.haml +24 -0
  1860. data/app/views/admin/cachings/_tabs.html.haml +6 -0
  1861. data/app/views/admin/cachings/index.html.haml +14 -0
  1862. data/app/views/admin/categories/_associated_elements.html.haml +22 -0
  1863. data/app/views/admin/categories/_list.html.haml +15 -0
  1864. data/app/views/admin/categories/index.json.erb +15 -0
  1865. data/app/views/admin/import/_map_fields.html.haml +38 -0
  1866. data/app/views/admin/import/_tabs.html.haml +5 -0
  1867. data/app/views/admin/import/create.html.haml +3 -0
  1868. data/app/views/admin/import/index.html.haml +29 -0
  1869. data/app/views/admin/person_sessions/_new_form.html.haml +24 -0
  1870. data/app/views/admin/person_sessions/destroy.html.haml +21 -0
  1871. data/app/views/admin/person_sessions/new.html.haml +1 -0
  1872. data/app/views/admin/person_sessions/reset_password.html.haml +15 -0
  1873. data/app/views/admin/rights/_form.html.haml +22 -0
  1874. data/app/views/admin/rights/_tabs.html.haml +5 -0
  1875. data/app/views/admin/rights/edit.html.haml +3 -0
  1876. data/app/views/admin/rights/index.html.haml +13 -0
  1877. data/app/views/admin/rights/index.json.erb +28 -0
  1878. data/app/views/admin/rights/new.html.haml +3 -0
  1879. data/app/views/admin/rights/show.html.haml +16 -0
  1880. data/app/views/admin/roles/_form.html.haml +57 -0
  1881. data/app/views/admin/roles/_form_rights.html.haml +8 -0
  1882. data/app/views/admin/roles/_tabs.html.haml +5 -0
  1883. data/app/views/admin/roles/edit.html.haml +1 -0
  1884. data/app/views/admin/roles/index.html.haml +13 -0
  1885. data/app/views/admin/roles/index.json.erb +34 -0
  1886. data/app/views/admin/roles/new.html.haml +1 -0
  1887. data/app/views/admin/roles/show.html.haml +49 -0
  1888. data/app/views/admin/settings/_backup.html.haml +0 -0
  1889. data/app/views/admin/settings/_display.html.haml +7 -0
  1890. data/app/views/admin/settings/_general.html.haml +37 -0
  1891. data/app/views/admin/settings/_mailer.html.haml +40 -0
  1892. data/app/views/admin/settings/_tabs.html.haml +9 -0
  1893. data/app/views/admin/settings/edit.html.haml +18 -0
  1894. data/app/views/admin/sidebars/_attachments_popups.html.haml +101 -0
  1895. data/app/views/admin/sidebars/_left_sidebar.html.haml +29 -0
  1896. data/app/views/admin/users/_fieldset_account_informations.html.haml +19 -0
  1897. data/app/views/admin/users/_form.html.haml +58 -0
  1898. data/app/views/admin/users/_tabs.html.haml +0 -0
  1899. data/app/views/admin/users/edit.html.haml +2 -0
  1900. data/app/views/admin/users/index.html.haml +12 -0
  1901. data/app/views/admin/users/index.json.erb +40 -0
  1902. data/app/views/admin/users/new.html.haml +2 -0
  1903. data/app/views/admin/users/show.html.haml +36 -0
  1904. data/app/views/admin/visual/_visual_popup.html.haml +170 -0
  1905. data/app/views/admin/visual/_visuals_popup.html.haml +83 -0
  1906. data/app/views/layouts/admin.html.haml +40 -0
  1907. data/app/views/layouts/admin_login.html.haml +19 -0
  1908. data/app/views/person_sessions/_new_form.html.haml +9 -0
  1909. data/app/views/person_sessions/new.html.haml +1 -0
  1910. data/app/views/user_notifier/reset_password.html.haml +5 -0
  1911. data/config/initializers/load_settings.rb +7 -0
  1912. data/config/locales/activerecord/en.yml +17 -0
  1913. data/config/locales/activerecord/fr.yml +44 -0
  1914. data/config/locales/admin/account/en.yml +4 -0
  1915. data/config/locales/admin/account/fr.yml +4 -0
  1916. data/config/locales/admin/address/en.yml +10 -0
  1917. data/config/locales/admin/address/fr.yml +10 -0
  1918. data/config/locales/admin/admin/en.yml +32 -0
  1919. data/config/locales/admin/admin/fr.yml +32 -0
  1920. data/config/locales/admin/import/en.yml +24 -0
  1921. data/config/locales/admin/import/fr.yml +23 -0
  1922. data/config/locales/admin/right/en.yml +20 -0
  1923. data/config/locales/admin/right/fr.yml +20 -0
  1924. data/config/locales/admin/role/en.yml +21 -0
  1925. data/config/locales/admin/role/fr.yml +21 -0
  1926. data/config/locales/admin/session/en.yml +3 -0
  1927. data/config/locales/admin/session/fr.yml +3 -0
  1928. data/config/locales/admin/statistics/en.yml +20 -0
  1929. data/config/locales/admin/statistics/fr.yml +20 -0
  1930. data/config/locales/common/en.yml +350 -0
  1931. data/config/locales/common/fr.yml +351 -0
  1932. data/config/locales/date/en.yml +19 -0
  1933. data/config/locales/date/fr.yml +22 -0
  1934. data/config/locales/datetime/fr.yml +44 -0
  1935. data/config/locales/en.rb +19 -0
  1936. data/config/locales/fr.rb +11 -0
  1937. data/config/locales/lang/en.yml +9 -0
  1938. data/config/locales/lang/fr.yml +9 -0
  1939. data/config/locales/number/fr.yml +30 -0
  1940. data/config/locales/time/en.yml +18 -0
  1941. data/config/locales/time/fr.yml +14 -0
  1942. data/config/routes.rb +77 -0
  1943. data/db/fixtures/geo_zones.yml +1582 -0
  1944. data/db/fixtures/people.yml +11 -0
  1945. data/db/fixtures/settings.yml +71 -0
  1946. data/db/migrate/20091009134412_create_addresses.rb +18 -0
  1947. data/db/migrate/20091009134419_create_attachments.rb +22 -0
  1948. data/db/migrate/20091009134426_create_attachments_elements.rb +13 -0
  1949. data/db/migrate/20091009134547_create_categories.rb +14 -0
  1950. data/db/migrate/20091009134554_create_categories_elements.rb +11 -0
  1951. data/db/migrate/20091009134602_create_comments.rb +18 -0
  1952. data/db/migrate/20091009134638_create_geo_zones.rb +17 -0
  1953. data/db/migrate/20091009134645_create_meta_infos.rb +14 -0
  1954. data/db/migrate/20091009134743_create_people.rb +31 -0
  1955. data/db/migrate/20091009134828_create_rights.rb +13 -0
  1956. data/db/migrate/20091009134836_create_rights_roles.rb +12 -0
  1957. data/db/migrate/20091009134843_create_roles.rb +14 -0
  1958. data/db/migrate/20091009134850_create_rules.rb +22 -0
  1959. data/db/migrate/20091009134858_create_search_keywords.rb +12 -0
  1960. data/db/migrate/20091009134919_create_statistic_counters.rb +15 -0
  1961. data/db/migrate/20091009134933_create_tags.rb +26 -0
  1962. data/db/migrate/20091030163643_create_settings.rb +20 -0
  1963. data/db/migrate/20091103220541_migrate_from_restful_authentication_to_authlogic.rb +47 -0
  1964. data/db/migrate/20091106163507_add_element_type_to_attachments_elements.rb +17 -0
  1965. data/db/migrate/20091208113464_create_meta_info_translations.rb +9 -0
  1966. data/db/migrate/20091208113465_create_category_translations.rb +9 -0
  1967. data/db/migrate/20091208170261_remove_translations_to_meta_info.rb +10 -0
  1968. data/db/migrate/20091208170262_remove_translations_to_categories.rb +8 -0
  1969. data/db/migrate/20100413133941_add_index_on_categories.rb +13 -0
  1970. data/db/migrate/20100514181312_create_import_sets.rb +15 -0
  1971. data/db/migrate/20100520122617_add_delta_to_person.rb +10 -0
  1972. data/db/migrate/20100611161407_add_position_to_categories_elements.rb +9 -0
  1973. data/db/migrate/20101111121533_add_position_to_categoriesx.rb +9 -0
  1974. data/db/migrate/20101125115041_add_description_and_alt_to_attachments.rb +11 -0
  1975. data/db/migrate/20110310144114_add_perishable_token_to_people.rb +10 -0
  1976. data/db/migrate/20110628082353_add_attachments_to_settings.rb +9 -0
  1977. data/lib/extensions/form_helper_extensions.rb +8 -0
  1978. data/lib/extensions/i18n_fallbacks_config.rb +8 -0
  1979. data/lib/extensions.rb +2 -0
  1980. data/lib/flash_session_cookie_middleware.rb +20 -0
  1981. data/lib/forgeos/core/engine.rb +9 -0
  1982. data/lib/forgeos/core.rb +12 -0
  1983. data/lib/forgeos/statistics.rb +11 -0
  1984. data/lib/forgeos.rb +89 -0
  1985. data/lib/forgeos_core.rb +1 -0
  1986. data/lib/map_fields.rb +187 -0
  1987. data/lib/sortable_attachments.rb +42 -0
  1988. data/lib/sphinx_globalize.rb +23 -0
  1989. data/lib/tasks/attachments_migration.rake +24 -0
  1990. data/lib/tasks/fixtures.rake +64 -0
  1991. data/lib/tasks/generate.rake +60 -0
  1992. data/lib/tasks/install.rake +9 -0
  1993. data/lib/tasks/translations.rake +15 -0
  1994. data/lib/tasks/update_thumbnails.rake +50 -0
  1995. data/lib/technoweenie/attachment_fu/backends/ftp_backend.rb +259 -0
  1996. data/lib/tiny_mce_link_renderer.rb +10 -0
  1997. data/recipes/db.rb +28 -0
  1998. data/recipes/deploy.rb +39 -0
  1999. metadata +2080 -0
@@ -0,0 +1,4417 @@
1
+ /*
2
+ * File: jquery.dataSlides.js
3
+ * Version: 1.5.2
4
+ * CVS: $Id$
5
+ * Description: Paginate, search and sort HTML tables
6
+ * Author: Allan Jardine (www.sprymedia.co.uk)
7
+ * Created: 28/3/2008
8
+ * Modified: $Date$ by $Author$
9
+ * Language: Javascript
10
+ * License: GPL v2 or BSD 3 point style
11
+ * Project: Mtaala
12
+ * Contact: allan.jardine@sprymedia.co.uk
13
+ *
14
+ * Copyright 2008-2009 Allan Jardine, all rights reserved.
15
+ *
16
+ * This source file is free software, under either the GPL v2 license or a
17
+ * BSD style license, as supplied with this software.
18
+ *
19
+ * This source file is distributed in the hope that it will be useful, but
20
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
21
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
22
+ *
23
+ * For details pleease refer to: http://www.dataSlides.net
24
+ */
25
+
26
+ /*
27
+ * When considering jsLint, we need to allow eval() as it it is used for reading cookies and
28
+ * building the dynamic multi-column sort functions.
29
+ */
30
+ /*jslint evil: true, undef: true, browser: true */
31
+ /*globals $, jQuery,_fnReadCookie,_fnProcessingDisplay,_fnDraw,_fnSort,_fnReDraw,_fnDetectType,_fnSortingClasses,_fnSettingsFromNode,_fnBuildSearchArray,_fnCalculateEnd,_fnFeatureHtmlProcessing,_fnFeatureHtmlPaginate,_fnFeatureHtmlInfo,_fnFeatureHtmlFilter,_fnFilter,_fnSaveState,_fnFilterColumn,_fnEscapeRegex,_fnFilterComplete,_fnFeatureHtmlLength,_fnGetDataMaster,_fnVisibleToColumnIndex,_fnDrawHead,_fnAddData,_fnGetTrNodes,_fnColumnIndexToVisible,_fnCreateCookie,_fnAddOptionsHtml,_fnMap,_fnClearTable,_fnDataToSearch,_fnReOrderIndex,_fnFilterCustom,_fnVisbleColumns,_fnAjaxUpdate,_fnAjaxUpdateDraw,_fnColumnOrdering,fnGetMaxLenString*/
32
+
33
+ (function($) {
34
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
35
+ * dataSlides variables
36
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
37
+
38
+ /*
39
+ * Variable: dataSlideSettings
40
+ * Purpose: Store the settings for each dataSlides instance
41
+ * Scope: jQuery.fn
42
+ */
43
+ $.fn.dataSlideSettings = [];
44
+
45
+ /*
46
+ * Variable: dataSlideExt
47
+ * Purpose: Container for customisable parts of dataSlides
48
+ * Scope: jQuery.fn
49
+ */
50
+ $.fn.dataSlideExt = {};
51
+ var _oExt = $.fn.dataSlideExt; /* Short reference for fast internal lookup */
52
+
53
+
54
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
55
+ * dataSlides extensible objects
56
+ *
57
+ * The _oExt object is used to provide an area where user dfined plugins can be
58
+ * added to dataSlides. The following properties of the object are used:
59
+ * oApi - Plug-in API functions
60
+ * aTypes - Auto-detection of types
61
+ * oSort - Sorting functions used by dataSlides (based on the type)
62
+ * oPagination - Pagination functions for different input styles
63
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
64
+
65
+ /*
66
+ * Variable: sVersion
67
+ * Purpose: Version string for plug-ins to check compatibility
68
+ * Scope: jQuery.fn.dataSlideExt
69
+ */
70
+ _oExt.sVersion = "1.5.2";
71
+
72
+ /*
73
+ * Variable: iApiIndex
74
+ * Purpose: Index for what 'this' index API functions should use
75
+ * Scope: jQuery.fn.dataSlideExt
76
+ */
77
+ _oExt.iApiIndex = 0;
78
+
79
+ /*
80
+ * Variable: oApi
81
+ * Purpose: Container for plugin API functions
82
+ * Scope: jQuery.fn.dataSlideExt
83
+ */
84
+ _oExt.oApi = { };
85
+
86
+ /*
87
+ * Variable: aFiltering
88
+ * Purpose: Container for plugin filtering functions
89
+ * Scope: jQuery.fn.dataSlideExt
90
+ */
91
+ _oExt.afnFiltering = [ ];
92
+
93
+ /*
94
+ * Variable: aoFeatures
95
+ * Purpose: Container for plugin function functions
96
+ * Scope: jQuery.fn.dataSlideExt
97
+ * Notes: Array of objects with the following parameters:
98
+ * fnInit: Function for initialisation of Feature. Takes oSettings and returns node
99
+ * cFeature: Character that will be matched in sDom - case sensitive
100
+ * sFeature: Feature name - just for completeness :-)
101
+ */
102
+ _oExt.aoFeatures = [ ];
103
+
104
+ /*
105
+ * Variable: ofnSearch
106
+ * Purpose: Container for custom filtering functions
107
+ * Scope: jQuery.fn.dataSlideExt
108
+ * Notes: This is an object (the name should match the type) for custom filtering function,
109
+ * which can be used for live DOM checking or formatted text filtering
110
+ */
111
+ _oExt.ofnSearch = { };
112
+
113
+ /*
114
+ * Variable: oStdClasses
115
+ * Purpose: Storage for the various classes that dataSlides uses
116
+ * Scope: jQuery.fn.dataSlideExt
117
+ */
118
+ _oExt.oStdClasses = {
119
+ /* Two buttons buttons */
120
+ "sPagePrevEnabled": "paginate_enabled_previous",
121
+ "sPagePrevDisabled": "paginate_disabled_previous",
122
+ "sPageNextEnabled": "paginate_enabled_next",
123
+ "sPageNextDisabled": "paginate_disabled_next",
124
+ "sPageJUINext": "",
125
+ "sPageJUIPrev": "",
126
+
127
+ /* Full numbers paging buttons */
128
+ "sPageButton": "paginate_button",
129
+ "sPageButtonActive": "paginate_active",
130
+ "sPageButtonStaticActive": "paginate_button",
131
+ "sPageFirst": "first",
132
+ "sPagePrevious": "previous",
133
+ "sPageNext": "next",
134
+ "sPageLast": "last",
135
+
136
+ /* Stripping classes */
137
+ "sStripOdd": "odd",
138
+ "sStripEven": "even",
139
+
140
+ /* Empty row */
141
+ "sRowEmpty": "dataSlides_empty",
142
+
143
+ /* Features */
144
+ "sWrapper": "dataSlides_wrapper",
145
+ "sFilter": "dataSlides_filter",
146
+ "sInfo": "dataSlides_info",
147
+ "sPaging": "dataSlides_paginate paging_", /* Note that the type is postfixed */
148
+ "sLength": "dataSlides_length",
149
+ "sProcessing": "dataSlides_processing",
150
+
151
+ /* Sorting */
152
+ "sSortAsc": "sorting_asc",
153
+ "sSortDesc": "sorting_desc",
154
+ "sSortable": "sorting",
155
+ "sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */
156
+ "sSortJUIAsc": "",
157
+ "sSortJUIDesc": "",
158
+ "sSortJUI": ""
159
+ };
160
+
161
+ /*
162
+ * Variable: oJUIClasses
163
+ * Purpose: Storage for the various classes that dataSlides uses - jQuery UI suitable
164
+ * Scope: jQuery.fn.dataSlideExt
165
+ */
166
+ _oExt.oJUIClasses = {
167
+ /* Two buttons buttons */
168
+ "sPagePrevEnabled": "fg-button ui-state-default ui-corner-left",
169
+ "sPagePrevDisabled": "fg-button ui-state-default ui-corner-left ui-state-disabled",
170
+ "sPageNextEnabled": "fg-button ui-state-default ui-corner-right",
171
+ "sPageNextDisabled": "fg-button ui-state-default ui-corner-right ui-state-disabled",
172
+ "sPageJUINext": "ui-icon ui-icon-circle-arrow-e",
173
+ "sPageJUIPrev": "ui-icon ui-icon-circle-arrow-w",
174
+
175
+ /* Full numbers paging buttons */
176
+ "sPageButton": "fg-button ui-state-default",
177
+ "sPageButtonActive": "fg-button ui-state-default ui-state-disabled",
178
+ "sPageButtonStaticActive": "fg-button ui-state-default ui-state-disabled",
179
+ "sPageFirst": "first ui-corner-tl ui-corner-bl",
180
+ "sPagePrevious": "previous",
181
+ "sPageNext": "next",
182
+ "sPageLast": "last ui-corner-tr ui-corner-br",
183
+
184
+ /* Stripping classes */
185
+ "sStripOdd": "odd",
186
+ "sStripEven": "even",
187
+
188
+ /* Empty row */
189
+ "sRowEmpty": "dataSlides_empty",
190
+
191
+ /* Features */
192
+ "sWrapper": "dataSlides_wrapper",
193
+ "sFilter": "dataSlides_filter",
194
+ "sInfo": "dataSlides_info",
195
+ "sPaging": "dataSlides_paginate fg-buttonset fg-buttonset-multi paging_", /* Note that the type is postfixed */
196
+ "sLength": "dataSlides_length",
197
+ "sProcessing": "dataSlides_processing",
198
+
199
+ /* Sorting */
200
+ "sSortAsc": "ui-state-default",
201
+ "sSortDesc": "ui-state-default",
202
+ "sSortable": "ui-state-default",
203
+ "sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */
204
+ "sSortJUIAsc": "css_right ui-icon ui-icon-triangle-1-n",
205
+ "sSortJUIDesc": "css_right ui-icon ui-icon-triangle-1-s",
206
+ "sSortJUI": "css_right ui-icon ui-icon-triangle-2-n-s"
207
+ };
208
+
209
+ /*
210
+ * Variable: oPagination
211
+ * Purpose: Container for the various type of pagination that dataSlides supports
212
+ * Scope: jQuery.fn.dataSlideExt
213
+ */
214
+ _oExt.oPagination = {
215
+ /*
216
+ * Variable: two_button
217
+ * Purpose: Standard two button (forward/back) pagination
218
+ * Scope: jQuery.fn.dataSlideExt.oPagination
219
+ */
220
+ "two_button": {
221
+ /*
222
+ * Function: oPagination.two_button.fnInit
223
+ * Purpose: Initalise dom elements required for pagination with forward/back buttons only
224
+ * Returns: -
225
+ * Inputs: object:oSettings - dataSlides settings object
226
+ * function:fnCallbackDraw - draw function which must be called on update
227
+ */
228
+ "fnInit": function ( oSettings, fnCallbackDraw )
229
+ {
230
+ var nPaging = oSettings.anFeatures.p;
231
+
232
+ /* Store the next and previous elements in the oSettings object as they can be very
233
+ * usful for automation - particularly testing
234
+ */
235
+ if ( !oSettings.bJUI )
236
+ {
237
+ oSettings.nPrevious = document.createElement( 'div' );
238
+ oSettings.nNext = document.createElement( 'div' );
239
+ }
240
+ else
241
+ {
242
+ oSettings.nPrevious = document.createElement( 'a' );
243
+ oSettings.nNext = document.createElement( 'a' );
244
+
245
+ var nNextInner = document.createElement('span');
246
+ nNextInner.className = oSettings.oClasses.sPageJUINext;
247
+ oSettings.nNext.appendChild( nNextInner );
248
+
249
+ var nPreviousInner = document.createElement('span');
250
+ nPreviousInner.className = oSettings.oClasses.sPageJUIPrev;
251
+ oSettings.nPrevious.appendChild( nPreviousInner );
252
+ }
253
+
254
+ if ( oSettings.sTableId !== '' )
255
+ {
256
+ nPaging.setAttribute( 'id', oSettings.sTableId+'_paginate' );
257
+ oSettings.nPrevious.setAttribute( 'id', oSettings.sTableId+'_previous' );
258
+ oSettings.nNext.setAttribute( 'id', oSettings.sTableId+'_next' );
259
+ }
260
+
261
+ oSettings.nPrevious.className = oSettings.oClasses.sPagePrevDisabled;
262
+ oSettings.nNext.className = oSettings.oClasses.sPageNextDisabled;
263
+
264
+ oSettings.nPrevious.title = oSettings.oLanguage.oPaginate.sPrevious;
265
+ oSettings.nNext.title = oSettings.oLanguage.oPaginate.sNext;
266
+
267
+ nPaging.appendChild( oSettings.nPrevious );
268
+ nPaging.appendChild( oSettings.nNext );
269
+ $(nPaging).insertAfter( oSettings.nTable );
270
+
271
+ $(oSettings.nPrevious).click( function() {
272
+ oSettings._iDisplayStart -= oSettings._iDisplayLength;
273
+
274
+ /* Correct for underrun */
275
+ if ( oSettings._iDisplayStart < 0 )
276
+ {
277
+ oSettings._iDisplayStart = 0;
278
+ }
279
+
280
+ fnCallbackDraw( oSettings );
281
+ } );
282
+
283
+ $(oSettings.nNext).click( function() {
284
+ /* Make sure we are not over running the display array */
285
+ if ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )
286
+ {
287
+ oSettings._iDisplayStart += oSettings._iDisplayLength;
288
+ }
289
+
290
+ fnCallbackDraw( oSettings );
291
+ } );
292
+
293
+ /* Take the brutal approach to cancelling text selection */
294
+ $(oSettings.nPrevious).bind( 'selectstart', function () { return false; } );
295
+ $(oSettings.nNext).bind( 'selectstart', function () { return false; } );
296
+ },
297
+
298
+ /*
299
+ * Function: oPagination.two_button.fnUpdate
300
+ * Purpose: Update the two button pagination at the end of the draw
301
+ * Returns: -
302
+ * Inputs: object:oSettings - dataSlides settings object
303
+ * function:fnCallbackDraw - draw function which must be called on update
304
+ */
305
+ "fnUpdate": function ( oSettings, fnCallbackDraw )
306
+ {
307
+ if ( !oSettings.anFeatures.p )
308
+ {
309
+ return;
310
+ }
311
+
312
+ oSettings.nPrevious.className =
313
+ ( oSettings._iDisplayStart === 0 ) ?
314
+ oSettings.oClasses.sPagePrevDisabled : oSettings.oClasses.sPagePrevEnabled;
315
+
316
+ oSettings.nNext.className =
317
+ ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) ?
318
+ oSettings.oClasses.sPageNextDisabled : oSettings.oClasses.sPageNextEnabled;
319
+ }
320
+ },
321
+
322
+
323
+ /*
324
+ * Variable: iFullNumbersShowPages
325
+ * Purpose: Change the number of pages which can be seen
326
+ * Scope: jQuery.fn.dataSlideExt.oPagination
327
+ */
328
+ "iFullNumbersShowPages": 5,
329
+
330
+ /*
331
+ * Variable: full_numbers
332
+ * Purpose: Full numbers pagination
333
+ * Scope: jQuery.fn.dataSlideExt.oPagination
334
+ */
335
+ "full_numbers": {
336
+ /*
337
+ * Function: oPagination.full_numbers.fnInit
338
+ * Purpose: Initalise dom elements required for pagination with a list of the pages
339
+ * Returns: -
340
+ * Inputs: object:oSettings - dataSlides settings object
341
+ * function:fnCallbackDraw - draw function which must be called on update
342
+ */
343
+ "fnInit": function ( oSettings, fnCallbackDraw )
344
+ {
345
+ var nPaging = oSettings.anFeatures.p;
346
+ var nFirst = document.createElement( 'span' );
347
+ var nPrevious = document.createElement( 'span' );
348
+ var nList = document.createElement( 'span' );
349
+ var nNext = document.createElement( 'span' );
350
+ var nLast = document.createElement( 'span' );
351
+
352
+ nFirst.innerHTML = oSettings.oLanguage.oPaginate.sFirst;
353
+ nPrevious.innerHTML = oSettings.oLanguage.oPaginate.sPrevious;
354
+ nNext.innerHTML = oSettings.oLanguage.oPaginate.sNext;
355
+ nLast.innerHTML = oSettings.oLanguage.oPaginate.sLast;
356
+
357
+ var oClasses = oSettings.oClasses;
358
+ nFirst.className = oClasses.sPageButton+" "+oClasses.sPageFirst;
359
+ nPrevious.className = oClasses.sPageButton+" "+oClasses.sPagePrevious;
360
+ nNext.className= oClasses.sPageButton+" "+oClasses.sPageNext;
361
+ nLast.className = oClasses.sPageButton+" "+oClasses.sPageLast;
362
+
363
+ if ( oSettings.sTableId !== '' )
364
+ {
365
+ nPaging.setAttribute( 'id', oSettings.sTableId+'_paginate' );
366
+ nFirst.setAttribute( 'id', oSettings.sTableId+'_first' );
367
+ nPrevious.setAttribute( 'id', oSettings.sTableId+'_previous' );
368
+ nNext.setAttribute( 'id', oSettings.sTableId+'_next' );
369
+ nLast.setAttribute( 'id', oSettings.sTableId+'_last' );
370
+ }
371
+
372
+ nPaging.appendChild( nFirst );
373
+ nPaging.appendChild( nPrevious );
374
+ nPaging.appendChild( nList );
375
+ nPaging.appendChild( nNext );
376
+ nPaging.appendChild( nLast );
377
+
378
+ $(nFirst).click( function () {
379
+ oSettings._iDisplayStart = 0;
380
+ fnCallbackDraw( oSettings );
381
+ } );
382
+
383
+ $(nPrevious).click( function() {
384
+ oSettings._iDisplayStart -= oSettings._iDisplayLength;
385
+
386
+ /* Correct for underrun */
387
+ if ( oSettings._iDisplayStart < 0 )
388
+ {
389
+ oSettings._iDisplayStart = 0;
390
+ }
391
+
392
+ fnCallbackDraw( oSettings );
393
+ } );
394
+
395
+ $(nNext).click( function() {
396
+ /* Make sure we are not over running the display array */
397
+ if ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )
398
+ {
399
+ oSettings._iDisplayStart += oSettings._iDisplayLength;
400
+ }
401
+
402
+ fnCallbackDraw( oSettings );
403
+ } );
404
+
405
+ $(nLast).click( function() {
406
+ var iPages = parseInt( (oSettings.fnRecordsDisplay()-1) / oSettings._iDisplayLength, 10 ) + 1;
407
+ oSettings._iDisplayStart = (iPages-1) * oSettings._iDisplayLength;
408
+
409
+ fnCallbackDraw( oSettings );
410
+ } );
411
+
412
+ /* Take the brutal approach to cancelling text selection */
413
+ $('span', nPaging).bind( 'mousedown', function () { return false; } );
414
+ $('span', nPaging).bind( 'selectstart', function () { return false; } );
415
+
416
+ oSettings.nPaginateList = nList;
417
+ },
418
+
419
+ /*
420
+ * Function: oPagination.full_numbers.fnUpdate
421
+ * Purpose: Update the list of page buttons shows
422
+ * Returns: -
423
+ * Inputs: object:oSettings - dataSlides settings object
424
+ * function:fnCallbackDraw - draw function which must be called on update
425
+ */
426
+ "fnUpdate": function ( oSettings, fnCallbackDraw )
427
+ {
428
+ if ( !oSettings.anFeatures.p )
429
+ {
430
+ return;
431
+ }
432
+
433
+ var iPageCount = jQuery.fn.dataSlideExt.oPagination.iFullNumbersShowPages;
434
+ var iPageCountHalf = Math.floor(iPageCount / 2);
435
+ var iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);
436
+ var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;
437
+ var sList = "";
438
+ var iStartButton;
439
+ var iEndButton;
440
+ var oClasses = oSettings.oClasses;
441
+
442
+ if (iPages < iPageCount)
443
+ {
444
+ iStartButton = 1;
445
+ iEndButton = iPages;
446
+ }
447
+ else
448
+ {
449
+ if (iCurrentPage <= iPageCountHalf)
450
+ {
451
+ iStartButton = 1;
452
+ iEndButton = iPageCount;
453
+ }
454
+ else
455
+ {
456
+ if (iCurrentPage >= (iPages - iPageCountHalf))
457
+ {
458
+ iStartButton = iPages - iPageCount + 1;
459
+ iEndButton = iPages;
460
+ }
461
+ else
462
+ {
463
+ iStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;
464
+ iEndButton = iStartButton + iPageCount - 1;
465
+ }
466
+ }
467
+ }
468
+
469
+ for ( var i=iStartButton ; i<=iEndButton ; i++ )
470
+ {
471
+ if ( iCurrentPage != i )
472
+ {
473
+ sList += '<span class="'+oClasses.sPageButton+'">'+i+'</span>';
474
+ }
475
+ else
476
+ {
477
+ sList += '<span class="'+oClasses.sPageButtonActive+'">'+i+'</span>';
478
+ }
479
+ }
480
+
481
+ oSettings.nPaginateList.innerHTML = sList;
482
+
483
+ /* Take the brutal approach to cancelling text selection */
484
+ $('span', oSettings.nPaginateList).bind( 'mousedown', function () { return false; } );
485
+ $('span', oSettings.nPaginateList).bind( 'selectstart', function () { return false; } );
486
+
487
+ $('span', oSettings.nPaginateList).click( function() {
488
+ var iTarget = (this.innerHTML * 1) - 1;
489
+ oSettings._iDisplayStart = iTarget * oSettings._iDisplayLength;
490
+
491
+ fnCallbackDraw( oSettings );
492
+ return false;
493
+ } );
494
+
495
+ /* Update the 'premanent botton's classes */
496
+ var nButtons = $('span', oSettings.anFeatures.p);
497
+ var nStatic = [ nButtons[0], nButtons[1], nButtons[nButtons.length-2], nButtons[nButtons.length-1] ];
498
+ $(nStatic).removeClass( oClasses.sPageButton+" "+oClasses.sPageButtonActive );
499
+ if ( iCurrentPage == 1 )
500
+ {
501
+ nStatic[0].className += " "+oClasses.sPageButtonStaticActive;
502
+ nStatic[1].className += " "+oClasses.sPageButtonStaticActive;
503
+ }
504
+ else
505
+ {
506
+ nStatic[0].className += " "+oClasses.sPageButton;
507
+ nStatic[1].className += " "+oClasses.sPageButton;
508
+ }
509
+
510
+ if ( iCurrentPage == iPages )
511
+ {
512
+ nStatic[2].className += " "+oClasses.sPageButtonStaticActive;
513
+ nStatic[3].className += " "+oClasses.sPageButtonStaticActive;
514
+ }
515
+ else
516
+ {
517
+ nStatic[2].className += " "+oClasses.sPageButton;
518
+ nStatic[3].className += " "+oClasses.sPageButton;
519
+ }
520
+ }
521
+ }
522
+ };
523
+
524
+ /*
525
+ * Variable: oSort
526
+ * Purpose: Wrapper for the sorting functions that can be used in dataSlides
527
+ * Scope: jQuery.fn.dataSlideExt
528
+ * Notes: The functions provided in this object are basically standard javascript sort
529
+ * functions - they expect two inputs which they then compare and then return a priority
530
+ * result. For each sort method added, two functions need to be defined, an ascending sort and
531
+ * a descending sort.
532
+ */
533
+ _oExt.oSort = {
534
+ /*
535
+ * text sorting
536
+ */
537
+ "string-asc": function ( a, b )
538
+ {
539
+ var x = a.toLowerCase();
540
+ var y = b.toLowerCase();
541
+ return ((x < y) ? -1 : ((x > y) ? 1 : 0));
542
+ },
543
+
544
+ "string-desc": function ( a, b )
545
+ {
546
+ var x = a.toLowerCase();
547
+ var y = b.toLowerCase();
548
+ return ((x < y) ? 1 : ((x > y) ? -1 : 0));
549
+ },
550
+
551
+
552
+ /*
553
+ * html sorting (ignore html tags)
554
+ */
555
+ "html-asc": function ( a, b )
556
+ {
557
+ var x = a.replace( /<.*?>/g, "" ).toLowerCase();
558
+ var y = b.replace( /<.*?>/g, "" ).toLowerCase();
559
+ return ((x < y) ? -1 : ((x > y) ? 1 : 0));
560
+ },
561
+
562
+ "html-desc": function ( a, b )
563
+ {
564
+ var x = a.replace( /<.*?>/g, "" ).toLowerCase();
565
+ var y = b.replace( /<.*?>/g, "" ).toLowerCase();
566
+ return ((x < y) ? 1 : ((x > y) ? -1 : 0));
567
+ },
568
+
569
+
570
+ /*
571
+ * date sorting
572
+ */
573
+ "date-asc": function ( a, b )
574
+ {
575
+ var x = Date.parse( a );
576
+ var y = Date.parse( b );
577
+
578
+ if ( isNaN( x ) )
579
+ {
580
+ x = Date.parse( "01/01/1970 00:00:00" );
581
+ }
582
+ if ( isNaN( y ) )
583
+ {
584
+ y = Date.parse( "01/01/1970 00:00:00" );
585
+ }
586
+
587
+ return x - y;
588
+ },
589
+
590
+ "date-desc": function ( a, b )
591
+ {
592
+ var x = Date.parse( a );
593
+ var y = Date.parse( b );
594
+
595
+ if ( isNaN( x ) )
596
+ {
597
+ x = Date.parse( "01/01/1970 00:00:00" );
598
+ }
599
+ if ( isNaN( y ) )
600
+ {
601
+ y = Date.parse( "01/01/1970 00:00:00" );
602
+ }
603
+
604
+ return y - x;
605
+ },
606
+
607
+
608
+ /*
609
+ * numerical sorting
610
+ */
611
+ "numeric-asc": function ( a, b )
612
+ {
613
+ var x = a == "-" ? 0 : a;
614
+ var y = b == "-" ? 0 : b;
615
+ return x - y;
616
+ },
617
+
618
+ "numeric-desc": function ( a, b )
619
+ {
620
+ var x = a == "-" ? 0 : a;
621
+ var y = b == "-" ? 0 : b;
622
+ return y - x;
623
+ }
624
+ };
625
+
626
+
627
+ /*
628
+ * Variable: aTypes
629
+ * Purpose: Container for the various type of type detection that dataSlides supports
630
+ * Scope: jQuery.fn.dataSlideExt
631
+ * Notes: The functions in this array are expected to parse a string to see if it is a data
632
+ * type that it recognises. If so then the function should return the name of the type (a
633
+ * corresponding sort function should be defined!), if the type is not recognised then the
634
+ * function should return null such that the parser and move on to check the next type.
635
+ * Note that ordering is important in this array - the functions are processed linearly,
636
+ * starting at index 0.
637
+ */
638
+ _oExt.aTypes = [
639
+ /*
640
+ * Function: -
641
+ * Purpose: Check to see if a string is numeric
642
+ * Returns: string:'numeric' or null
643
+ * Inputs: string:sText - string to check
644
+ */
645
+ function ( sData )
646
+ {
647
+ /* Snaity check that we are dealing with a string or quick return for a number */
648
+ if ( typeof sData == 'number' )
649
+ {
650
+ return 'numeric';
651
+ }
652
+ else if ( typeof sData.charAt != 'function' )
653
+ {
654
+ return null;
655
+ }
656
+
657
+ var sValidFirstChars = "0123456789-";
658
+ var sValidChars = "0123456789.";
659
+ var Char;
660
+ var bDecimal = false;
661
+
662
+ /* Check for a valid first char (no period and allow negatives) */
663
+ Char = sData.charAt(0);
664
+ if (sValidFirstChars.indexOf(Char) == -1)
665
+ {
666
+ return null;
667
+ }
668
+
669
+ /* Check all the other characters are valid */
670
+ for ( var i=1 ; i<sData.length ; i++ )
671
+ {
672
+ Char = sData.charAt(i);
673
+ if (sValidChars.indexOf(Char) == -1)
674
+ {
675
+ return null;
676
+ }
677
+
678
+ /* Only allowed one decimal place... */
679
+ if ( Char == "." )
680
+ {
681
+ if ( bDecimal )
682
+ {
683
+ return null;
684
+ }
685
+ bDecimal = true;
686
+ }
687
+ }
688
+
689
+ return 'numeric';
690
+ },
691
+
692
+ /*
693
+ * Function: -
694
+ * Purpose: Check to see if a string is actually a formatted date
695
+ * Returns: string:'date' or null
696
+ * Inputs: string:sText - string to check
697
+ */
698
+ function ( sData )
699
+ {
700
+ var iParse = Date.parse(sData);
701
+ if ( iParse !== null && !isNaN(iParse) )
702
+ {
703
+ return 'date';
704
+ }
705
+ return null;
706
+ }
707
+ ];
708
+
709
+
710
+ /*
711
+ * Variable: _oExternConfig
712
+ * Purpose: Store information for dataSlides to access globally about other instances
713
+ * Scope: jQuery.fn.dataSlideExt
714
+ */
715
+ _oExt._oExternConfig = {
716
+ /* int:iNextUnique - next unique number for an instance */
717
+ "iNextUnique": 0
718
+ };
719
+
720
+
721
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
722
+ * dataSlides prototype
723
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
724
+
725
+ /*
726
+ * Function: dataSlide
727
+ * Purpose: dataSlides information
728
+ * Returns: -
729
+ * Inputs: object:oInit - initalisation options for the table
730
+ */
731
+ $.fn.dataSlide = function( oInit )
732
+ {
733
+ /*
734
+ * Variable: _aoSettings
735
+ * Purpose: Easy reference to data table settings
736
+ * Scope: jQuery.dataSlide
737
+ */
738
+ var _aoSettings = $.fn.dataSlideSettings;
739
+
740
+ /*
741
+ * Function: classSettings
742
+ * Purpose: Settings container function for all 'class' properties which are required
743
+ * by dataSlides
744
+ * Returns: -
745
+ * Inputs: -
746
+ */
747
+ function classSettings ()
748
+ {
749
+ this.fnRecordsTotal = function ()
750
+ {
751
+ if ( this.oFeatures.bServerSide ) {
752
+ return this._iRecordsTotal;
753
+ } else {
754
+ return this.aiDisplayMaster.length;
755
+ }
756
+ };
757
+
758
+ this.fnRecordsDisplay = function ()
759
+ {
760
+ if ( this.oFeatures.bServerSide ) {
761
+ return this._iRecordsDisplay;
762
+ } else {
763
+ return this.aiDisplay.length;
764
+ }
765
+ };
766
+
767
+ this.fnDisplayEnd = function ()
768
+ {
769
+ if ( this.oFeatures.bServerSide ) {
770
+ return this._iDisplayStart + this.aiDisplay.length;
771
+ } else {
772
+ return this._iDisplayEnd;
773
+ }
774
+ };
775
+
776
+ /*
777
+ * Variable: sInstance
778
+ * Purpose: Unique idendifier for each instance of the dataSlides object
779
+ * Scope: jQuery.dataSlide.classSettings
780
+ */
781
+ this.sInstance = null;
782
+
783
+ /*
784
+ * Variable: oFeatures
785
+ * Purpose: Indicate the enablement of key dataSlide features
786
+ * Scope: jQuery.dataSlide.classSettings
787
+ */
788
+ this.oFeatures = {
789
+ "bPaginate": true,
790
+ "bLengthChange": true,
791
+ "bFilter": true,
792
+ "bSort": true,
793
+ "bInfo": true,
794
+ "bAutoWidth": true,
795
+ "bProcessing": false,
796
+ "bSortClasses": true,
797
+ "bStateSave": false,
798
+ "bServerSide": false
799
+ };
800
+
801
+ /*
802
+ * Variable: anFeatures
803
+ * Purpose: Array referencing the nodes which are used for the features
804
+ * Scope: jQuery.dataSlide.classSettings
805
+ * Notes: The parameters of this object match what is allowed by sDom - i.e.
806
+ * 'l' - Length changing
807
+ * 'f' - Filtering input
808
+ * 't' - The table!
809
+ * 'i' - Information
810
+ * 'p' - Pagination
811
+ * 'r' - pRocessing
812
+ */
813
+ this.anFeatures = [];
814
+
815
+ /*
816
+ * Variable: oLanguage
817
+ * Purpose: Store the language strings used by dataSlides
818
+ * Scope: jQuery.dataSlide.classSettings
819
+ * Notes: The words in the format _VAR_ are variables which are dynamically replaced
820
+ * by javascript
821
+ */
822
+ this.oLanguage = {
823
+ "sProcessing": "Processing...",
824
+ "sLengthMenu": "Show _MENU_ entries",
825
+ "sZeroRecords": "No matching records found",
826
+ "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
827
+ "sInfoEmpty": "Showing 0 to 0 of 0 entries",
828
+ "sInfoFiltered": "(filtered from _MAX_ total entries)",
829
+ "sInfoPostFix": "",
830
+ "sSearch": "Search:",
831
+ "sUrl": "",
832
+ "oPaginate": {
833
+ "sFirst": "First",
834
+ "sPrevious": "Previous",
835
+ "sNext": "Next",
836
+ "sLast": "Last"
837
+ }
838
+ };
839
+
840
+ /*
841
+ * Variable: aoData
842
+ * Purpose: Store data information
843
+ * Scope: jQuery.dataSlide.classSettings
844
+ * Notes: This is an array of objects with the following parameters:
845
+ * int: _iId - internal id for tracking
846
+ * array: _aData - internal data - used for sorting / filtering etc
847
+ * node: nTr - display node
848
+ * array node: _anHidden - hidden TD nodes
849
+ */
850
+ this.aoData = [];
851
+
852
+ /*
853
+ * Variable: aiDisplay
854
+ * Purpose: Array of indexes which are in the current display (after filtering etc)
855
+ * Scope: jQuery.dataSlide.classSettings
856
+ */
857
+ this.aiDisplay = [];
858
+
859
+ /*
860
+ * Variable: aiDisplayMaster
861
+ * Purpose: Array of indexes for display - no filtering
862
+ * Scope: jQuery.dataSlide.classSettings
863
+ */
864
+ this.aiDisplayMaster = [];
865
+
866
+ /*
867
+ * Variable: aoColumns
868
+ * Purpose: Store information about each column that is in use
869
+ * Scope: jQuery.dataSlide.classSettings
870
+ */
871
+ this.aoColumns = [];
872
+ /*
873
+ * Variable: iNextId
874
+ * Purpose: Store the next unique id to be used for a new row
875
+ * Scope: jQuery.dataSlide.classSettings
876
+ */
877
+ this.iNextId = 0;
878
+
879
+ /*
880
+ * Variable: asDataSearch
881
+ * Purpose: Search data array for regular expression searching
882
+ * Scope: jQuery.dataSlide.classSettings
883
+ */
884
+ this.asDataSearch = [];
885
+
886
+ /*
887
+ * Variable: oPreviousSearch
888
+ * Purpose: Store the previous search incase we want to force a re-search
889
+ * or compare the old search to a new one
890
+ * Scope: jQuery.dataSlide.classSettings
891
+ */
892
+ this.oPreviousSearch = {
893
+ "sSearch": "",
894
+ "bEscapeRegex": true
895
+ };
896
+
897
+ /*
898
+ * Variable: aoPreSearchCols
899
+ * Purpose: Store the previous search for each column
900
+ * Scope: jQuery.dataSlide.classSettings
901
+ */
902
+ this.aoPreSearchCols = [];
903
+
904
+ /*
905
+ * Variable: aaSorting
906
+ * Purpose: Sorting information
907
+ * Scope: jQuery.dataSlide.classSettings
908
+ */
909
+ this.aaSorting = [ [0, 'asc'] ];
910
+
911
+ /*
912
+ * Variable: aaSortingFixed
913
+ * Purpose: Sorting information that is always applied
914
+ * Scope: jQuery.dataSlide.classSettings
915
+ */
916
+ this.aaSortingFixed = null;
917
+
918
+ /*
919
+ * Variable: asStripClasses
920
+ * Purpose: Classes to use for the striping of a table
921
+ * Scope: jQuery.dataSlide.classSettings
922
+ */
923
+ this.asStripClasses = [];
924
+
925
+ /*
926
+ * Variable: fnRowCallback
927
+ * Purpose: Call this function every time a row is inserted (draw)
928
+ * Scope: jQuery.dataSlide.classSettings
929
+ */
930
+ this.fnRowCallback = null;
931
+
932
+ /*
933
+ * Variable: fnHeaderCallback
934
+ * Purpose: Callback function for the header on each draw
935
+ * Scope: jQuery.dataSlide.classSettings
936
+ */
937
+ this.fnHeaderCallback = null;
938
+
939
+ /*
940
+ * Variable: fnFooterCallback
941
+ * Purpose: Callback function for the footer on each draw
942
+ * Scope: jQuery.dataSlide.classSettings
943
+ */
944
+ this.fnFooterCallback = null;
945
+
946
+ /*
947
+ * Variable: fnDrawCallback
948
+ * Purpose: Callback function for the whole table on each draw
949
+ * Scope: jQuery.dataSlide.classSettings
950
+ */
951
+ this.fnDrawCallback = null;
952
+
953
+ /*
954
+ * Variable: fnInitComplete
955
+ * Purpose: Callback function for when the table has been initalised
956
+ * Scope: jQuery.dataSlide.classSettings
957
+ */
958
+ this.fnInitComplete = null;
959
+
960
+ /*
961
+ * Variable: sTableId
962
+ * Purpose: Cache the table ID for quick access
963
+ * Scope: jQuery.dataSlide.classSettings
964
+ */
965
+ this.sTableId = "";
966
+
967
+ /*
968
+ * Variable: nTable
969
+ * Purpose: Cache the table node for quick access
970
+ * Scope: jQuery.dataSlide.classSettings
971
+ */
972
+ this.nTable = null;
973
+
974
+ /*
975
+ * Variable: iDefaultSortIndex
976
+ * Purpose: Sorting index which will be used by default
977
+ * Scope: jQuery.dataSlide.classSettings
978
+ */
979
+ this.iDefaultSortIndex = 0;
980
+
981
+ /*
982
+ * Variable: bInitialised
983
+ * Purpose: Indicate if all required information has been read in
984
+ * Scope: jQuery.dataSlide.classSettings
985
+ */
986
+ this.bInitialised = false;
987
+
988
+ /*
989
+ * Variable: aoOpenRows
990
+ * Purpose: Information about open rows
991
+ * Scope: jQuery.dataSlide.classSettings
992
+ * Notes: Has the parameters 'nTr' and 'nParent'
993
+ */
994
+ this.aoOpenRows = [];
995
+
996
+ /*
997
+ * Variable: sDomPositioning
998
+ * Purpose: Dictate the positioning that the created elements will take
999
+ * Scope: jQuery.dataSlide.classSettings
1000
+ * Notes: The following syntax is expected:
1001
+ * 'l' - Length changing
1002
+ * 'f' - Filtering input
1003
+ * 't' - The table!
1004
+ * 'i' - Information
1005
+ * 'p' - Pagination
1006
+ * 'r' - pRocessing
1007
+ * '<' and '>' - div elements
1008
+ * '<"class" and '>' - div with a class
1009
+ * Examples: '<"wrapper"flipt>', '<lf<t>ip>'
1010
+ */
1011
+ this.sDomPositioning = 'lfrtip';
1012
+
1013
+ /*
1014
+ * Variable: sPaginationType
1015
+ * Purpose: Note which type of sorting should be used
1016
+ * Scope: jQuery.dataSlide.classSettings
1017
+ */
1018
+ this.sPaginationType = "two_button";
1019
+
1020
+ /*
1021
+ * Variable: iCookieDuration
1022
+ * Purpose: The cookie duration (for bStateSave) in seconds - default 2 hours
1023
+ * Scope: jQuery.dataSlide.classSettings
1024
+ */
1025
+ this.iCookieDuration = 60 * 60 * 2;
1026
+
1027
+ /*
1028
+ * Variable: sAjaxSource
1029
+ * Purpose: Source url for AJAX data for the table
1030
+ * Scope: jQuery.dataSlide.classSettings
1031
+ */
1032
+ this.sAjaxSource = null;
1033
+
1034
+ /*
1035
+ * Variable: bAjaxDataGet
1036
+ * Purpose: Note if draw should be blocked while getting data
1037
+ * Scope: jQuery.dataSlide.classSettings
1038
+ */
1039
+ this.bAjaxDataGet = true;
1040
+
1041
+ /*
1042
+ * Variable: fnServerData
1043
+ * Purpose: Function to get the server-side data - can be overruled by the developer
1044
+ * Scope: jQuery.dataSlide.classSettings
1045
+ */
1046
+ this.fnServerData = $.getJSON;
1047
+
1048
+ /*
1049
+ * Variable: iServerDraw
1050
+ * Purpose: Counter and tracker for server-side processing draws
1051
+ * Scope: jQuery.dataSlide.classSettings
1052
+ */
1053
+ this.iServerDraw = 0;
1054
+
1055
+ /*
1056
+ * Variable: _iDisplayLength, _iDisplayStart, _iDisplayEnd
1057
+ * Purpose: Display length variables
1058
+ * Scope: jQuery.dataSlide.classSettings
1059
+ * Notes: These variable must NOT be used externally to get the data length. Rather, use
1060
+ * the fnRecordsTotal() (etc) functions.
1061
+ */
1062
+ this._iDisplayLength = 10;
1063
+ this._iDisplayStart = 0;
1064
+ this._iDisplayEnd = 10;
1065
+
1066
+ /*
1067
+ * Variable: _iRecordsTotal, _iRecordsDisplay
1068
+ * Purpose: Display length variables used for server side processing
1069
+ * Scope: jQuery.dataSlide.classSettings
1070
+ * Notes: These variable must NOT be used externally to get the data length. Rather, use
1071
+ * the fnRecordsTotal() (etc) functions.
1072
+ */
1073
+ this._iRecordsTotal = 0;
1074
+ this._iRecordsDisplay = 0;
1075
+
1076
+ /*
1077
+ * Variable: bJUI
1078
+ * Purpose: Should we add the markup needed for jQuery UI theming?
1079
+ * Scope: jQuery.dataSlide.classSettings
1080
+ */
1081
+ this.bJUI = false;
1082
+
1083
+ /*
1084
+ * Variable: bJUI
1085
+ * Purpose: Should we add the markup needed for jQuery UI theming?
1086
+ * Scope: jQuery.dataSlide.classSettings
1087
+ */
1088
+ this.oClasses = _oExt.oStdClasses;
1089
+ }
1090
+
1091
+ /*
1092
+ * Variable: oApi
1093
+ * Purpose: Container for publicly exposed 'private' functions
1094
+ * Scope: jQuery.dataSlide
1095
+ */
1096
+ this.oApi = {};
1097
+
1098
+
1099
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1100
+ * API functions
1101
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1102
+
1103
+ /*
1104
+ * Function: fnDraw
1105
+ * Purpose: Redraw the table
1106
+ * Returns: -
1107
+ * Inputs: -
1108
+ */
1109
+ this.fnDraw = function()
1110
+ {
1111
+ _fnReDraw( _fnSettingsFromNode( this[_oExt.iApiIndex] ) );
1112
+ };
1113
+
1114
+ /*
1115
+ * Function: fnFilter
1116
+ * Purpose: Filter the input based on data
1117
+ * Returns: -
1118
+ * Inputs: string:sInput - string to filter the table on
1119
+ * int:iColumn - optional - column to limit filtering to
1120
+ * bool:bEscapeRegex - optional - escape regex characters or not - default true
1121
+ */
1122
+ this.fnFilter = function( sInput, iColumn, bEscapeRegex )
1123
+ {
1124
+ var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] );
1125
+
1126
+ if ( typeof bEscapeRegex == 'undefined' )
1127
+ {
1128
+ bEscapeRegex = true;
1129
+ }
1130
+
1131
+ if ( typeof iColumn == "undefined" || iColumn === null )
1132
+ {
1133
+ /* Global filter */
1134
+ _fnFilterComplete( oSettings, {"sSearch":sInput, "bEscapeRegex": bEscapeRegex}, 1 );
1135
+ }
1136
+ else
1137
+ {
1138
+ /* Single column filter */
1139
+ oSettings.aoPreSearchCols[ iColumn ].sSearch = sInput;
1140
+ oSettings.aoPreSearchCols[ iColumn ].bEscapeRegex = bEscapeRegex;
1141
+ _fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );
1142
+ }
1143
+ };
1144
+
1145
+ /*
1146
+ * Function: fnSettings
1147
+ * Purpose: Get the settings for a particular table for extern. manipulation
1148
+ * Returns: -
1149
+ * Inputs: -
1150
+ */
1151
+ this.fnSettings = function( nNode )
1152
+ {
1153
+ return _fnSettingsFromNode( this[_oExt.iApiIndex] );
1154
+ };
1155
+
1156
+ /*
1157
+ * Function: fnSort
1158
+ * Purpose: Sort the table by a particular row
1159
+ * Returns: -
1160
+ * Inputs: int:iCol - the data index to sort on. Note that this will
1161
+ * not match the 'display index' if you have hidden data entries
1162
+ */
1163
+ this.fnSort = function( aaSort )
1164
+ {
1165
+ var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] );
1166
+ oSettings.aaSorting = aaSort;
1167
+ _fnSort( oSettings );
1168
+ };
1169
+
1170
+ /*
1171
+ * Function: fnAddData
1172
+ * Purpose: Add new row(s) into the table
1173
+ * Returns: array int: array of indexes (aoData) which have been added (zero length on error)
1174
+ * Inputs: array:mData - the data to be added. The length must match
1175
+ * the original data from the DOM
1176
+ * or
1177
+ * array array:mData - 2D array of data to be added
1178
+ * bool:bRedraw - redraw the table or not - default true
1179
+ * Notes: Warning - the refilter here will cause the table to redraw
1180
+ * starting at zero
1181
+ * Notes: Thanks to Yekimov Denis for contributing the basis for this function!
1182
+ */
1183
+ this.fnAddData = function( mData, bRedraw )
1184
+ {
1185
+ var aiReturn = [];
1186
+ var iTest;
1187
+ if ( typeof bRedraw == 'undefined' )
1188
+ {
1189
+ bRedraw = true;
1190
+ }
1191
+
1192
+ /* Find settings from table node */
1193
+ var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] );
1194
+
1195
+ /* Check if we want to add multiple rows or not */
1196
+ if ( typeof mData[0] == "object" )
1197
+ {
1198
+ for ( var i=0 ; i<mData.length ; i++ )
1199
+ {
1200
+ iTest = _fnAddData( oSettings, mData[i] );
1201
+ if ( iTest == -1 )
1202
+ {
1203
+ return aiReturn;
1204
+ }
1205
+ aiReturn.push( iTest );
1206
+ }
1207
+ }
1208
+ else
1209
+ {
1210
+ iTest = _fnAddData( oSettings, mData );
1211
+ if ( iTest == -1 )
1212
+ {
1213
+ return aiReturn;
1214
+ }
1215
+ aiReturn.push( iTest );
1216
+ }
1217
+
1218
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
1219
+
1220
+ /* Rebuild the search */
1221
+ _fnBuildSearchArray( oSettings, 1 );
1222
+
1223
+ if ( bRedraw )
1224
+ {
1225
+ _fnReDraw( oSettings );
1226
+ }
1227
+ return aiReturn;
1228
+ };
1229
+
1230
+ /*
1231
+ * Function: fnDeleteRow
1232
+ * Purpose: Remove a row for the table
1233
+ * Returns: array:aReturn - the row that was deleted
1234
+ * Inputs: int:iIndex - index of aoData to be deleted
1235
+ * function:fnCallBack - callback function - default null
1236
+ * bool:bNullRow - remove the row information from aoData by setting the value to
1237
+ * null - default false
1238
+ * Notes: This function requires a little explanation - we don't actually delete the data
1239
+ * from aoData - rather we remove it's references from aiDisplayMastr and aiDisplay. This
1240
+ * in effect prevnts dataSlides from drawing it (hence deleting it) - it could be restored
1241
+ * if you really wanted. The reason for this is that actually removing the aoData object
1242
+ * would mess up all the subsequent indexes in the display arrays (they could be ajusted -
1243
+ * but this appears to do what is required).
1244
+ */
1245
+ this.fnDeleteRow = function( iAODataIndex, fnCallBack, bNullRow )
1246
+ {
1247
+ /* Find settings from table node */
1248
+ var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] );
1249
+ var i;
1250
+
1251
+ /* Delete from the display master */
1252
+ for ( i=0 ; i<oSettings.aiDisplayMaster.length ; i++ )
1253
+ {
1254
+ if ( oSettings.aiDisplayMaster[i] == iAODataIndex )
1255
+ {
1256
+ oSettings.aiDisplayMaster.splice( i, 1 );
1257
+ break;
1258
+ }
1259
+ }
1260
+
1261
+ /* Delete from the current display index */
1262
+ for ( i=0 ; i<oSettings.aiDisplay.length ; i++ )
1263
+ {
1264
+ if ( oSettings.aiDisplay[i] == iAODataIndex )
1265
+ {
1266
+ oSettings.aiDisplay.splice( i, 1 );
1267
+ break;
1268
+ }
1269
+ }
1270
+
1271
+ /* Rebuild the search */
1272
+ _fnBuildSearchArray( oSettings, 1 );
1273
+
1274
+ /* If there is a user callback function - call it */
1275
+ if ( typeof fnCallBack == "function" )
1276
+ {
1277
+ fnCallBack.call( this );
1278
+ }
1279
+
1280
+ /* Check for an 'overflow' they case for dislaying the table */
1281
+ if ( oSettings._iDisplayStart >= oSettings.aiDisplay.length )
1282
+ {
1283
+ oSettings._iDisplayStart -= oSettings._iDisplayLength;
1284
+ if ( oSettings._iDisplayStart < 0 )
1285
+ {
1286
+ oSettings._iDisplayStart = 0;
1287
+ }
1288
+ }
1289
+
1290
+ _fnCalculateEnd( oSettings );
1291
+ _fnDraw( oSettings );
1292
+
1293
+ /* Return the data array from this row */
1294
+ var aData = oSettings.aoData[iAODataIndex]._aData.slice();
1295
+
1296
+ if ( typeof bNullRow != "undefined" && bNullRow === true )
1297
+ {
1298
+ oSettings.aoData[iAODataIndex] = null;
1299
+ }
1300
+
1301
+ return aData;
1302
+ };
1303
+
1304
+ /*
1305
+ * Function: fnClearTable
1306
+ * Purpose: Quickly and simply clear a table
1307
+ * Returns: -
1308
+ * Inputs: bool:bRedraw - redraw the table or not - default true
1309
+ * Notes: Thanks to Yekimov Denis for contributing the basis for this function!
1310
+ */
1311
+ this.fnClearTable = function( bRedraw )
1312
+ {
1313
+ /* Find settings from table node */
1314
+ var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] );
1315
+ _fnClearTable( oSettings );
1316
+
1317
+ if ( typeof bRedraw == 'undefined' || bRedraw )
1318
+ {
1319
+ _fnDraw( oSettings );
1320
+ }
1321
+ };
1322
+
1323
+ /*
1324
+ * Function: fnOpen
1325
+ * Purpose: Open a display row (append a row after the row in question)
1326
+ * Returns: -
1327
+ * Inputs: node:nTr - the table row to 'open'
1328
+ * string:sHtml - the HTML to put into the row
1329
+ * string:sClass - class to give the new cell
1330
+ */
1331
+ this.fnOpen = function( nTr, sHtml, sClass )
1332
+ {
1333
+ /* Find settings from table node */
1334
+ var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] );
1335
+
1336
+ /* the old open one if there is one */
1337
+ this.fnClose( nTr );
1338
+
1339
+
1340
+ var nNewRow = document.createElement("div");
1341
+ $(nNewRow).addClass('tr');
1342
+ var nNewCell = document.createElement("div");
1343
+ nNewRow.appendChild( nNewCell );
1344
+ nNewCell.className = sClass;
1345
+ $(nNewCell).addClass('td')
1346
+ nNewCell.colSpan = _fnVisbleColumns( oSettings );
1347
+ nNewCell.innerHTML = sHtml;
1348
+
1349
+ $(nNewRow).insertAfter(nTr);
1350
+
1351
+ /* No point in storing the row if using server-side processing since the nParent will be
1352
+ * nuked on a re-draw anyway
1353
+ */
1354
+ if ( !oSettings.oFeatures.bServerSide )
1355
+ {
1356
+ oSettings.aoOpenRows.push( {
1357
+ "nTr": nNewRow,
1358
+ "nParent": nTr
1359
+ } );
1360
+ }
1361
+ };
1362
+
1363
+ /*
1364
+ * Function: fnClose
1365
+ * Purpose: Close a display row
1366
+ * Returns: int: 0 (success) or 1 (failed)
1367
+ * Inputs: node:nTr - the table row to 'close'
1368
+ */
1369
+ this.fnClose = function( nTr )
1370
+ {
1371
+ /* Find settings from table node */
1372
+ var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] );
1373
+
1374
+ for ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )
1375
+ {
1376
+ if ( oSettings.aoOpenRows[i].nParent == nTr )
1377
+ {
1378
+ var nTrParent = oSettings.aoOpenRows[i].nTr.parentNode;
1379
+ if ( nTrParent )
1380
+ {
1381
+ /* Remove it if it is currently on display */
1382
+ nTrParent.removeChild( oSettings.aoOpenRows[i].nTr );
1383
+ }
1384
+ oSettings.aoOpenRows.splice( i, 1 );
1385
+ return 0;
1386
+ }
1387
+ }
1388
+ return 1;
1389
+ };
1390
+
1391
+ /*
1392
+ * Function: fnGetData
1393
+ * Purpose: Return an array with the data which is used to make up the table
1394
+ * Returns: array array string: 2d data array ([row][column]) or array string: 1d data array
1395
+ * or
1396
+ * array string (if iRow specified)
1397
+ * Inputs: int:iRow - optional - if present then the array returned will be the data for
1398
+ * the row with the index 'iRow'
1399
+ */
1400
+ this.fnGetData = function( iRow )
1401
+ {
1402
+ var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] );
1403
+
1404
+ if ( typeof iRow != 'undefined' )
1405
+ {
1406
+ return oSettings.aoData[iRow]._aData;
1407
+ }
1408
+ return _fnGetDataMaster( oSettings );
1409
+ };
1410
+
1411
+ /*
1412
+ * Function: fnGetNodes
1413
+ * Purpose: Return an array with the TR nodes used for drawing the table
1414
+ * Returns: array node: TR elements
1415
+ * or
1416
+ * node (if iRow specified)
1417
+ * Inputs: int:iRow - optional - if present then the array returned will be the node for
1418
+ * the row with the index 'iRow'
1419
+ */
1420
+ this.fnGetNodes = function( iRow )
1421
+ {
1422
+ var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] );
1423
+
1424
+ if ( typeof iRow != 'undefined' )
1425
+ {
1426
+ return oSettings.aoData[iRow].nTr;
1427
+ }
1428
+ return _fnGetTrNodes( oSettings );
1429
+ };
1430
+
1431
+ /*
1432
+ * Function: fnGetPosition
1433
+ * Purpose: Get the array indexes of a particular cell from it's DOM element
1434
+ * Returns: int: - row index, or array[ int, int ]: - row index and column index
1435
+ * Inputs: node:nNode - this can either be a TR or a TD in the table, the return is
1436
+ * dependent on this input
1437
+ */
1438
+ this.fnGetPosition = function( nNode )
1439
+ {
1440
+ var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] );
1441
+ var i;
1442
+
1443
+ if ( $(nNode).hasClass('tr') )
1444
+ {
1445
+ for ( i=0 ; i<oSettings.aoData.length ; i++ )
1446
+ {
1447
+ if ( oSettings.aoData[i] !== null && oSettings.aoData[i].nTr == nNode )
1448
+ {
1449
+ return i;
1450
+ }
1451
+ }
1452
+ }
1453
+ else if ( $(nNode).hasClass('td') )
1454
+ {
1455
+ for ( i=0 ; i<oSettings.aoData.length ; i++ )
1456
+ {
1457
+ var iCorrector = 0;
1458
+ for ( var j=0 ; j<oSettings.aoColumns.length ; j++ )
1459
+ {
1460
+ if ( oSettings.aoColumns[j].bVisible )
1461
+ {
1462
+ //$('>td', oSettings.aoData[i].nTr)[j-iCorrector] == nNode )
1463
+ if ( oSettings.aoData[i] !== null &&
1464
+ oSettings.aoData[i].nTr.children('.td')[j-iCorrector] == nNode )
1465
+ {
1466
+ return [ i, j-iCorrector, j ];
1467
+ }
1468
+ }
1469
+ else
1470
+ {
1471
+ iCorrector++;
1472
+ }
1473
+ }
1474
+ }
1475
+ }
1476
+ return null;
1477
+ };
1478
+
1479
+ /*
1480
+ * Function: fnUpdate
1481
+ * Purpose: Update a table cell or row
1482
+ * Returns: int: 0 okay, 1 error
1483
+ * Inputs: array string 'or' string:mData - data to update the cell/row with
1484
+ * int:iRow - the row (from aoData) to update
1485
+ * int:iColumn - the column to update
1486
+ * bool:bRedraw - redraw the table or not - default true
1487
+ */
1488
+ this.fnUpdate = function( mData, iRow, iColumn, bRedraw )
1489
+ {
1490
+ var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] );
1491
+ var iVisibleColumn;
1492
+ var sDisplay;
1493
+ if ( typeof bRedraw == 'undefined' )
1494
+ {
1495
+ bRedraw = true;
1496
+ }
1497
+
1498
+ if ( typeof mData != 'object' )
1499
+ {
1500
+ sDisplay = mData;
1501
+ oSettings.aoData[iRow]._aData[iColumn] = sDisplay;
1502
+
1503
+ if ( oSettings.aoColumns[iColumn].fnRender !== null )
1504
+ {
1505
+ sDisplay = oSettings.aoColumns[iColumn].fnRender( {
1506
+ "iDataRow": iRow,
1507
+ "iDataColumn": iColumn,
1508
+ "aData": oSettings.aoData[iRow]._aData
1509
+ } );
1510
+
1511
+ if ( oSettings.aoColumns[iColumn].bUseRendered )
1512
+ {
1513
+ oSettings.aoData[iRow]._aData[iColumn] = sDisplay;
1514
+ }
1515
+ }
1516
+
1517
+ iVisibleColumn = _fnColumnIndexToVisible( oSettings, iColumn );
1518
+ if ( iVisibleColumn !== null )
1519
+ {
1520
+ oSettings.aoData[iRow].nTr.children('.td')[iVisibleColumn].innerHTML =
1521
+ sDisplay;
1522
+ }
1523
+ }
1524
+ else
1525
+ {
1526
+ if ( mData.length != oSettings.aoColumns.length )
1527
+ {
1528
+ alert( 'Warning: An array passed to fnUpdate must have the same number of columns as '+
1529
+ 'the table in question - in this case '+oSettings.aoColumns.length );
1530
+ return 1;
1531
+ }
1532
+
1533
+ for ( var i=0 ; i<mData.length ; i++ )
1534
+ {
1535
+ sDisplay = mData[i];
1536
+ oSettings.aoData[iRow]._aData[i] = sDisplay;
1537
+
1538
+ if ( oSettings.aoColumns[i].fnRender !== null )
1539
+ {
1540
+ sDisplay = oSettings.aoColumns[i].fnRender( {
1541
+ "iDataRow": iRow,
1542
+ "iDataColumn": i,
1543
+ "aData": oSettings.aoData[iRow]._aData
1544
+ } );
1545
+
1546
+ if ( oSettings.aoColumns[i].bUseRendered )
1547
+ {
1548
+ oSettings.aoData[iRow]._aData[i] = sDisplay;
1549
+ }
1550
+ }
1551
+
1552
+ iVisibleColumn = _fnColumnIndexToVisible( oSettings, i );
1553
+ if ( iVisibleColumn !== null )
1554
+ {
1555
+ oSettings.aoData[iRow].nTr.children('.td')[iVisibleColumn].innerHTML =
1556
+ sDisplay;
1557
+ }
1558
+ }
1559
+ }
1560
+
1561
+ /* Update the search array */
1562
+ _fnBuildSearchArray( oSettings, 1 );
1563
+
1564
+ /* Redraw the table */
1565
+ if ( bRedraw )
1566
+ {
1567
+ _fnReDraw( oSettings );
1568
+ }
1569
+ return 0;
1570
+ };
1571
+
1572
+
1573
+ /*
1574
+ * Function: fnShowColoumn
1575
+ * Purpose: Show a particular column
1576
+ * Returns: -
1577
+ * Inputs: int:iCol - the column whose display should be changed
1578
+ * bool:bShow - show (true) or hide (false) the column
1579
+ */
1580
+ this.fnSetColumnVis = function ( iCol, bShow )
1581
+ {
1582
+ var oSettings = _fnSettingsFromNode( this[_oExt.iApiIndex] );
1583
+ var i, iLen;
1584
+ var iColumns = oSettings.aoColumns.length;
1585
+ var nTd;
1586
+
1587
+ /* No point in doing anything if we are requesting what is already true */
1588
+ if ( oSettings.aoColumns[iCol].bVisible == bShow )
1589
+ {
1590
+ return;
1591
+ }
1592
+
1593
+ var nTrHead = $('.thead .tr', oSettings.nTable)[0];
1594
+ var nTrFoot = $('.tfoot .tr', oSettings.nTable)[0];
1595
+ var anTheadTh = [];
1596
+ var anTfootTh = [];
1597
+ for ( i=0 ; i<iColumns ; i++ )
1598
+ {
1599
+ anTheadTh.push( oSettings.aoColumns[i].nTh );
1600
+ anTfootTh.push( oSettings.aoColumns[i].nTf );
1601
+ }
1602
+
1603
+ /* Show the column */
1604
+ if ( bShow )
1605
+ {
1606
+ var iInsert = 0;
1607
+ for ( i=0 ; i<iCol ; i++ )
1608
+ {
1609
+ if ( oSettings.aoColumns[i].bVisible )
1610
+ {
1611
+ iInsert++;
1612
+ }
1613
+ }
1614
+
1615
+ /* Need to decide if we should use appendChild or insertBefore */
1616
+ if ( iInsert >= _fnVisbleColumns( oSettings ) )
1617
+ {
1618
+ nTrHead.appendChild( anTheadTh[iCol] );
1619
+ if ( nTrFoot )
1620
+ {
1621
+ nTrFoot.appendChild( anTfootTh[iCol] );
1622
+ }
1623
+
1624
+ for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
1625
+ {
1626
+ nTd = oSettings.aoData[i]._anHidden[iCol];
1627
+ oSettings.aoData[i].nTr.appendChild( nTd );
1628
+ }
1629
+ }
1630
+ else
1631
+ {
1632
+ /* Which coloumn should we be inserting before? */
1633
+ var iBefore;
1634
+ for ( i=iCol ; i<iColumns ; i++ )
1635
+ {
1636
+ iBefore = _fnColumnIndexToVisible( oSettings, i );
1637
+ if ( iBefore !== null )
1638
+ {
1639
+ break;
1640
+ }
1641
+ }
1642
+
1643
+ nTrHead.insertBefore( anTheadTh[iCol], $(nTrHead).children('.th')[iBefore] );
1644
+ if ( nTrFoot )
1645
+ {
1646
+ nTrFoot.insertBefore( anTfootTh[iCol], $(nTrFoot).children('.th')[iBefore] );
1647
+ }
1648
+
1649
+ for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
1650
+ {
1651
+ nTd = oSettings.aoData[i]._anHidden[iCol];
1652
+ oSettings.aoData[i].nTr.insertBefore( nTd, oSettings.aoData[i].nTr.children('.td')[iBefore] );
1653
+ }
1654
+ }
1655
+
1656
+ oSettings.aoColumns[iCol].bVisible = true;
1657
+ }
1658
+ else
1659
+ {
1660
+ /* Remove a column from display */
1661
+ nTrHead.removeChild( anTheadTh[iCol] );
1662
+ if ( nTrFoot )
1663
+ {
1664
+ nTrFoot.removeChild( anTfootTh[iCol] );
1665
+ }
1666
+
1667
+ var iVisCol = _fnColumnIndexToVisible(oSettings, iCol);
1668
+ for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
1669
+ {
1670
+ nTd = oSettings.aoData[i].nTr.children('.td')[ iVisCol ];
1671
+ oSettings.aoData[i]._anHidden[iCol] = nTd;
1672
+ nTd.parentNode.removeChild( nTd );
1673
+ }
1674
+
1675
+ oSettings.aoColumns[iCol].bVisible = false;
1676
+ }
1677
+
1678
+ /* If there are any 'open' rows, then we need to alter the colspan for this col change */
1679
+ for ( i=0, iLen=oSettings.aoOpenRows.length ; i<iLen ; i++ )
1680
+ {
1681
+ oSettings.aoOpenRows[i].nTr.colSpan = _fnVisbleColumns( oSettings );
1682
+ }
1683
+
1684
+ /* Since there is no redraw done here, we need to save the state manually */
1685
+ _fnSaveState( oSettings );
1686
+ };
1687
+
1688
+
1689
+ /*
1690
+ * Plugin API functions
1691
+ *
1692
+ * This call will add the functions which are defined in _oExt.oApi to the
1693
+ * dataSlides object, providing a rather nice way to allow plug-in API functions. Note that
1694
+ * this is done here, so that API function can actually override the built in API functions if
1695
+ * required for a particular purpose.
1696
+ */
1697
+
1698
+ /*
1699
+ * Function: _fnExternApiFunc
1700
+ * Purpose: Create a wrapper function for exporting an internal func to an external API func
1701
+ * Returns: function: - wrapped function
1702
+ * Inputs: string:sFunc - API function name
1703
+ */
1704
+ function _fnExternApiFunc (sFunc)
1705
+ {
1706
+ return function() {
1707
+ var aArgs = [_fnSettingsFromNode(this[_oExt.iApiIndex])].concat(
1708
+ Array.prototype.slice.call(arguments) );
1709
+ return _oExt.oApi[sFunc].apply( this, aArgs );
1710
+ };
1711
+ }
1712
+
1713
+ for ( var sFunc in _oExt.oApi )
1714
+ {
1715
+ if ( sFunc )
1716
+ {
1717
+ /*
1718
+ * Function: anon
1719
+ * Purpose: Wrap the plug-in API functions in order to provide the settings as 1st arg
1720
+ * and execute in this scope
1721
+ * Returns: -
1722
+ * Inputs: -
1723
+ */
1724
+ this[sFunc] = _fnExternApiFunc(sFunc);
1725
+ }
1726
+ }
1727
+
1728
+
1729
+
1730
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1731
+ * Local functions
1732
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1733
+
1734
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1735
+ * Initalisation
1736
+ */
1737
+
1738
+ /*
1739
+ * Function: _fnInitalise
1740
+ * Purpose: Draw the table for the first time, adding all required features
1741
+ * Returns: -
1742
+ * Inputs: object:oSettings - dataSlides settings object
1743
+ */
1744
+ function _fnInitalise ( oSettings )
1745
+ {
1746
+ /* Ensure that the table data is fully initialised */
1747
+ if ( oSettings.bInitialised === false )
1748
+ {
1749
+ setTimeout( function(){ _fnInitalise( oSettings ); }, 200 );
1750
+ return;
1751
+ }
1752
+
1753
+ /* Show the display HTML options */
1754
+ _fnAddOptionsHtml( oSettings );
1755
+
1756
+ /* Draw the headers for the table */
1757
+ _fnDrawHead( oSettings );
1758
+
1759
+ /* If there is default sorting required - let's do it. The sort function
1760
+ * will do the drawing for us. Otherwise we draw the table
1761
+ */
1762
+ if ( oSettings.oFeatures.bSort )
1763
+ {
1764
+ _fnSort( oSettings, false );
1765
+ /*
1766
+ * Add the sorting classes to the header and the body (if needed).
1767
+ * Reason for doing it here after the first draw is to stop classes being applied to the
1768
+ * 'static' table.
1769
+ */
1770
+ _fnSortingClasses( oSettings );
1771
+ }
1772
+ else
1773
+ {
1774
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
1775
+ _fnCalculateEnd( oSettings );
1776
+ _fnDraw( oSettings );
1777
+ }
1778
+
1779
+ /* if there is an ajax source */
1780
+ if ( oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )
1781
+ {
1782
+ _fnProcessingDisplay( oSettings, true );
1783
+
1784
+ $.getJSON( oSettings.sAjaxSource, null, function(json) {
1785
+
1786
+ /* Got the data - add it to the table */
1787
+ for ( var i=0 ; i<json.aaData.length ; i++ )
1788
+ {
1789
+ _fnAddData( oSettings, json.aaData[i] );
1790
+ }
1791
+
1792
+ /* Reset the init display for cookie saving. We've already done a filter, and
1793
+ * therefore cleared it before. So we need to make it appear 'fresh'
1794
+ */
1795
+ oSettings.iInitDisplayStart = oSettings._iDisplayStart;
1796
+
1797
+ if ( oSettings.oFeatures.bSort )
1798
+ {
1799
+ _fnSort( oSettings );
1800
+ }
1801
+ else
1802
+ {
1803
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
1804
+ _fnCalculateEnd( oSettings );
1805
+ _fnDraw( oSettings );
1806
+ }
1807
+ _fnProcessingDisplay( oSettings, false );
1808
+
1809
+ /* Run the init callback if there is one */
1810
+ if ( typeof oSettings.fnInitComplete == 'function' )
1811
+ {
1812
+ oSettings.fnInitComplete( oSettings, json );
1813
+ }
1814
+ } );
1815
+ return;
1816
+ }
1817
+
1818
+ /* Run the init callback if there is one */
1819
+ if ( typeof oSettings.fnInitComplete == 'function' )
1820
+ {
1821
+ oSettings.fnInitComplete( oSettings );
1822
+ }
1823
+ _fnProcessingDisplay( oSettings, false );
1824
+ }
1825
+
1826
+ /*
1827
+ * Function: _fnLanguageProcess
1828
+ * Purpose: Copy language variables from remote object to a local one
1829
+ * Returns: -
1830
+ * Inputs: object:oSettings - dataSlides settings object
1831
+ * object:oLanguage - Language information
1832
+ * bool:bInit - init once complete
1833
+ */
1834
+ function _fnLanguageProcess( oSettings, oLanguage, bInit )
1835
+ {
1836
+ _fnMap( oSettings.oLanguage, oLanguage, 'sProcessing' );
1837
+ _fnMap( oSettings.oLanguage, oLanguage, 'sLengthMenu' );
1838
+ _fnMap( oSettings.oLanguage, oLanguage, 'sZeroRecords' );
1839
+ _fnMap( oSettings.oLanguage, oLanguage, 'sInfo' );
1840
+ _fnMap( oSettings.oLanguage, oLanguage, 'sInfoEmpty' );
1841
+ _fnMap( oSettings.oLanguage, oLanguage, 'sInfoFiltered' );
1842
+ _fnMap( oSettings.oLanguage, oLanguage, 'sInfoPostFix' );
1843
+ _fnMap( oSettings.oLanguage, oLanguage, 'sSearch' );
1844
+
1845
+ if ( typeof oLanguage.oPaginate != 'undefined' )
1846
+ {
1847
+ _fnMap( oSettings.oLanguage.oPaginate, oLanguage.oPaginate, 'sFirst' );
1848
+ _fnMap( oSettings.oLanguage.oPaginate, oLanguage.oPaginate, 'sPrevious' );
1849
+ _fnMap( oSettings.oLanguage.oPaginate, oLanguage.oPaginate, 'sNext' );
1850
+ _fnMap( oSettings.oLanguage.oPaginate, oLanguage.oPaginate, 'sLast' );
1851
+ }
1852
+
1853
+ if ( bInit )
1854
+ {
1855
+ _fnInitalise( oSettings );
1856
+ }
1857
+ }
1858
+
1859
+ /*
1860
+ * Function: _fnAddColumn
1861
+ * Purpose: Add a column to the list used for the table
1862
+ * Returns: -
1863
+ * Inputs: object:oSettings - dataSlides settings object
1864
+ * object:oOptions - object with sType, bVisible and bSearchable
1865
+ * node:nTh - the th element for this column
1866
+ * Notes: All options in enter column can be over-ridden by the user
1867
+ * initialisation of dataSlides
1868
+ */
1869
+ function _fnAddColumn( oSettings, oOptions, nTh )
1870
+ {
1871
+ oSettings.aoColumns[ oSettings.aoColumns.length++ ] = {
1872
+ "sType": null,
1873
+ "_bAutoType": true,
1874
+ "bVisible": true,
1875
+ "bSearchable": true,
1876
+ "bSortable": true,
1877
+ "sTitle": nTh ? nTh.innerHTML : '',
1878
+ "sName": '',
1879
+ "sWidth": null,
1880
+ "sClass": null,
1881
+ "fnRender": null,
1882
+ "bUseRendered": true,
1883
+ "iDataSort": oSettings.aoColumns.length-1,
1884
+ "nTh": nTh ? nTh : document.createElement('div'),
1885
+ "nTf": null
1886
+ };
1887
+
1888
+ /* User specified column options */
1889
+ var iLength = oSettings.aoColumns.length-1;
1890
+ if ( typeof oOptions != 'undefined' && oOptions !== null )
1891
+ {
1892
+ var oCol = oSettings.aoColumns[ iLength ];
1893
+
1894
+ if ( typeof oOptions.sType != 'undefined' )
1895
+ {
1896
+ oCol.sType = oOptions.sType;
1897
+ oCol._bAutoType = false;
1898
+ }
1899
+
1900
+ _fnMap( oCol, oOptions, "bVisible" );
1901
+ _fnMap( oCol, oOptions, "bSearchable" );
1902
+ _fnMap( oCol, oOptions, "bSortable" );
1903
+ _fnMap( oCol, oOptions, "sTitle" );
1904
+ _fnMap( oCol, oOptions, "sName" );
1905
+ _fnMap( oCol, oOptions, "sWidth" );
1906
+ _fnMap( oCol, oOptions, "sClass" );
1907
+ _fnMap( oCol, oOptions, "fnRender" );
1908
+ _fnMap( oCol, oOptions, "bUseRendered" );
1909
+ _fnMap( oCol, oOptions, "iDataSort" );
1910
+ }
1911
+
1912
+ /* Add a column specific filter */
1913
+ if ( typeof oSettings.aoPreSearchCols[ iLength ] == 'undefined' ||
1914
+ oSettings.aoPreSearchCols[ iLength ] === null )
1915
+ {
1916
+ oSettings.aoPreSearchCols[ iLength ] = {
1917
+ "sSearch": "",
1918
+ "bEscapeRegex": true
1919
+ };
1920
+ }
1921
+ else if ( typeof oSettings.aoPreSearchCols[ iLength ].bEscapeRegex == 'undefined' )
1922
+ {
1923
+ /* Don't require that the user must specify bEscapeRegex */
1924
+ oSettings.aoPreSearchCols[ iLength ].bEscapeRegex = true;
1925
+ }
1926
+ }
1927
+
1928
+ /*
1929
+ * Function: _fnAddData
1930
+ * Purpose: Add a data array to the table, creating DOM node etc
1931
+ * Returns: int: - >=0 if successful (index of new aoData entry), -1 if failed
1932
+ * Inputs: object:oSettings - dataSlides settings object
1933
+ * array:aData - data array to be added
1934
+ */
1935
+ function _fnAddData ( oSettings, aData )
1936
+ {
1937
+ /* Sanity check the length of the new array */
1938
+ if ( aData.length != oSettings.aoColumns.length )
1939
+ {
1940
+ alert( "Warning - added data does not match known number of columns" );
1941
+ return -1;
1942
+ }
1943
+
1944
+ /* Create the object for storing information about this new row */
1945
+ var iThisIndex = oSettings.aoData.length;
1946
+ var newTr = document.createElement('div');
1947
+ $(newTr).addClass('tr');
1948
+ oSettings.aoData.push( {
1949
+ "_iId": oSettings.iNextId++,
1950
+ "_aData": aData.slice(),
1951
+ "nTr": newTr,
1952
+ "_anHidden": []
1953
+ } );
1954
+
1955
+ /* Create the cells */
1956
+ var nTd;
1957
+ for ( var i=0 ; i<aData.length ; i++ )
1958
+ {
1959
+ nTd = document.createElement('div');
1960
+ $(nTd).addClass('td');
1961
+ if ( typeof oSettings.aoColumns[i].fnRender == 'function' )
1962
+ {
1963
+ var sRendered = oSettings.aoColumns[i].fnRender( {
1964
+ "iDataRow": iThisIndex,
1965
+ "iDataColumn": i,
1966
+ "aData": aData
1967
+ } );
1968
+ nTd.innerHTML = sRendered;
1969
+ if ( oSettings.aoColumns[i].bUseRendered )
1970
+ {
1971
+ /* Use the rendered data for filtering/sorting */
1972
+ oSettings.aoData[iThisIndex]._aData[i] = sRendered;
1973
+ }
1974
+ }
1975
+ else
1976
+ {
1977
+ nTd.innerHTML = aData[i];
1978
+ }
1979
+
1980
+ if ( oSettings.aoColumns[i].sClass !== null )
1981
+ {
1982
+ nTd.className = oSettings.aoColumns[i].sClass;
1983
+ }
1984
+
1985
+ /* See if we should auto-detect the column type */
1986
+ if ( oSettings.aoColumns[i]._bAutoType && oSettings.aoColumns[i].sType != 'string' )
1987
+ {
1988
+ /* Attempt to auto detect the type - same as _fnGatherData() */
1989
+ if ( oSettings.aoColumns[i].sType === null )
1990
+ {
1991
+ oSettings.aoColumns[i].sType = _fnDetectType( aData[i] );
1992
+ }
1993
+ else if ( oSettings.aoColumns[i].sType == "date" ||
1994
+ oSettings.aoColumns[i].sType == "numeric" )
1995
+ {
1996
+ oSettings.aoColumns[i].sType = _fnDetectType( aData[i] );
1997
+ }
1998
+ }
1999
+
2000
+ if ( oSettings.aoColumns[i].bVisible )
2001
+ {
2002
+ oSettings.aoData[iThisIndex].nTr.appendChild( nTd );
2003
+ }
2004
+ else
2005
+ {
2006
+ oSettings.aoData[iThisIndex]._anHidden[i] = nTd;
2007
+ }
2008
+ }
2009
+
2010
+ /* Add to the display array */
2011
+ oSettings.aiDisplayMaster.push( iThisIndex );
2012
+ return iThisIndex;
2013
+ }
2014
+
2015
+ /*
2016
+ * Function: _fnGatherData
2017
+ * Purpose: Read in the data from the target table
2018
+ * Returns: -
2019
+ * Inputs: object:oSettings - dataSlides settings object
2020
+ */
2021
+ function _fnGatherData( oSettings )
2022
+ {
2023
+ var iLoop;
2024
+ var i, j;
2025
+
2026
+ /*
2027
+ * Process by row first
2028
+ * Add the data object for the whole table - storing the tr node. Note - no point in getting
2029
+ * DOM based data if we are going to go and replace it with Ajax source data.
2030
+ */
2031
+ if ( oSettings.sAjaxSource === null )
2032
+ {
2033
+ $('.tbody:eq(0)>.tr', oSettings.nTable).each( function() {
2034
+ var iThisIndex = oSettings.aoData.length;
2035
+ oSettings.aoData.push( {
2036
+ "_iId": oSettings.iNextId++,
2037
+ "_aData": [],
2038
+ "nTr": this,
2039
+ "_anHidden": []
2040
+ } );
2041
+
2042
+ oSettings.aiDisplayMaster.push( iThisIndex );
2043
+
2044
+ /* Add the data for this column */
2045
+ var aLocalData = oSettings.aoData[iThisIndex]._aData;
2046
+ $('.td', this).each( function( i ) {
2047
+ aLocalData[i] = this.innerHTML;
2048
+ } );
2049
+ } );
2050
+ }
2051
+
2052
+ /*
2053
+ * Now process by column
2054
+ */
2055
+ var iCorrector = 0;
2056
+ for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
2057
+ {
2058
+ /* Get the title of the column - unless there is a user set one */
2059
+ if ( oSettings.aoColumns[i].sTitle === null )
2060
+ {
2061
+ oSettings.aoColumns[i].sTitle = oSettings.aoColumns[i].nTh.innerHTML;
2062
+ }
2063
+
2064
+ var bAutoType = oSettings.aoColumns[i]._bAutoType;
2065
+ var bRender = typeof oSettings.aoColumns[i].fnRender == 'function';
2066
+ var bClass = oSettings.aoColumns[i].sClass !== null;
2067
+ var bVisible = oSettings.aoColumns[i].bVisible;
2068
+
2069
+ /* A single loop to rule them all (and be more efficient) */
2070
+ if ( bAutoType || bRender || bClass || !bVisible )
2071
+ {
2072
+ iLoop = oSettings.aoData.length;
2073
+ for ( j=0 ; j<iLoop ; j++ )
2074
+ {
2075
+ var nCellNode = oSettings.aoData[j].nTr.children('.td')[ i-iCorrector ];
2076
+
2077
+ if ( bAutoType )
2078
+ {
2079
+ if ( oSettings.aoColumns[i].sType === null )
2080
+ {
2081
+ oSettings.aoColumns[i].sType = _fnDetectType( oSettings.aoData[j]._aData[i] );
2082
+ }
2083
+ else if ( oSettings.aoColumns[i].sType == "date" ||
2084
+ oSettings.aoColumns[i].sType == "numeric" )
2085
+ {
2086
+ /* If type is date or numeric - ensure that all collected data
2087
+ * in the column is of the same type
2088
+ */
2089
+ oSettings.aoColumns[i].sType = _fnDetectType( oSettings.aoData[j]._aData[i] );
2090
+ }
2091
+ /* The else would be 'type = string' we don't want to do anything
2092
+ * if that is the case
2093
+ */
2094
+ }
2095
+
2096
+ if ( bRender )
2097
+ {
2098
+ var sRendered = oSettings.aoColumns[i].fnRender( {
2099
+ "iDataRow": j,
2100
+ "iDataColumn": i,
2101
+ "aData": oSettings.aoData[j]._aData
2102
+ } );
2103
+ nCellNode.innerHTML = sRendered;
2104
+ if ( oSettings.aoColumns[i].bUseRendered )
2105
+ {
2106
+ /* Use the rendered data for filtering/sorting */
2107
+ oSettings.aoData[j]._aData[i] = sRendered;
2108
+ }
2109
+ }
2110
+
2111
+ if ( bClass )
2112
+ {
2113
+ nCellNode.className += ' '+oSettings.aoColumns[i].sClass;
2114
+ }
2115
+
2116
+ if ( !bVisible )
2117
+ {
2118
+ oSettings.aoData[j]._anHidden[i] = nCellNode;
2119
+ nCellNode.parentNode.removeChild( nCellNode );
2120
+ }
2121
+ }
2122
+
2123
+ /* Keep an index corrector for the next loop */
2124
+ if ( !bVisible )
2125
+ {
2126
+ iCorrector++;
2127
+ }
2128
+ }
2129
+ }
2130
+ }
2131
+
2132
+
2133
+
2134
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2135
+ * Drawing functions
2136
+ */
2137
+
2138
+ /*
2139
+ * Function: _fnDrawHead
2140
+ * Purpose: Create the HTML header for the table
2141
+ * Returns: -
2142
+ * Inputs: object:oSettings - dataSlides settings object
2143
+ */
2144
+ function _fnDrawHead( oSettings )
2145
+ {
2146
+ var i, nTh, iLen;
2147
+ var iThs = $('.thead');
2148
+ var iCorrector = 0;
2149
+
2150
+ /* If there is a header in place - then use it - otherwise it's going to get nuked... */
2151
+ if ( iThs !== 0 )
2152
+ {
2153
+ /* We've got a thead from the DOM, so remove hidden columns and apply width to vis cols */
2154
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
2155
+ {
2156
+ //oSettings.aoColumns[i].nTh = nThs[i];
2157
+ nTh = oSettings.aoColumns[i].nTh;
2158
+
2159
+ if ( oSettings.aoColumns[i].bVisible )
2160
+ {
2161
+ /* Set width */
2162
+ if ( oSettings.aoColumns[i].sWidth !== null )
2163
+ {
2164
+ nTh.style.width = oSettings.aoColumns[i].sWidth;
2165
+ }
2166
+
2167
+ /* Set the title of the column if it is user defined (not what was auto detected) */
2168
+ if ( oSettings.aoColumns[i].sTitle != nTh.innerHTML )
2169
+ {
2170
+ nTh.innerHTML = oSettings.aoColumns[i].sTitle;
2171
+ }
2172
+ }
2173
+ else
2174
+ {
2175
+ //nTh.parentNode.removeChild( nTh );
2176
+ iCorrector++;
2177
+ }
2178
+ }
2179
+ }
2180
+ else
2181
+ {
2182
+ var nTr = document.createElement( "tr" );
2183
+
2184
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
2185
+ {
2186
+ if ( oSettings.aoColumns[i].bVisible )
2187
+ {
2188
+ nTh = oSettings.aoColumns[i].nTh;
2189
+
2190
+ if ( oSettings.aoColumns[i].sClass !== null )
2191
+ {
2192
+ nTh.className = oSettings.aoColumns[i].sClass;
2193
+ }
2194
+
2195
+ if ( oSettings.aoColumns[i].sWidth !== null )
2196
+ {
2197
+ nTh.style.width = oSettings.aoColumns[i].sWidth;
2198
+ }
2199
+
2200
+ nTh.innerHTML = oSettings.aoColumns[i].sTitle;
2201
+ nTr.appendChild( nTh );
2202
+ }
2203
+ }
2204
+ $('thead', oSettings.nTable).html( '' )[0].appendChild( nTr );
2205
+
2206
+ /* We don't have a header in the DOM - so we are going to have to create one */
2207
+ }
2208
+
2209
+ /* Add the extra markup needed by jQuery UI's themes */
2210
+ if ( oSettings.bJUI )
2211
+ {
2212
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
2213
+ {
2214
+ var nSpan = document.createElement('span');
2215
+ oSettings.aoColumns[i].nTh.appendChild( nSpan );
2216
+ }
2217
+ }
2218
+
2219
+ /* Add sort listener */
2220
+ if ( oSettings.oFeatures.bSort )
2221
+ {
2222
+ for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
2223
+ {
2224
+ if ( oSettings.aoColumns[i].bSortable === false )
2225
+ {
2226
+ continue;
2227
+ }
2228
+
2229
+ $(oSettings.aoColumns[i].nTh).click( function (e) {
2230
+ var iDataIndex;
2231
+ /* Find which column we are sorting on - can't use index() due to colspan etc */
2232
+ for ( var i=0 ; i<oSettings.aoColumns.length ; i++ )
2233
+ {
2234
+ if ( oSettings.aoColumns[i].nTh == this )
2235
+ {
2236
+ iDataIndex = i;
2237
+ break;
2238
+ }
2239
+ }
2240
+
2241
+ /* If the column is not sortable - don't to anything */
2242
+ if ( oSettings.aoColumns[iDataIndex].bSortable === false )
2243
+ {
2244
+ return;
2245
+ }
2246
+
2247
+ /*
2248
+ * This is a little bit odd I admit... I declare a temporary function inside the scope of
2249
+ * _fnDrawHead and the click handler in order that the code presented here can be used
2250
+ * twice - once for when bProcessing is enabled, and another time for when it is
2251
+ * disabled, as we need to perform slightly different actions.
2252
+ * Basically the issue here is that the Javascript engine in modern browsers don't
2253
+ * appear to allow the rendering engine to update the display while it is still excuting
2254
+ * it's thread (well - it does but only after long intervals). This means that the
2255
+ * 'processing' display doesn't appear for a table sort. To break the js thread up a bit
2256
+ * I force an execution break by using setTimeout - but this breaks the expected
2257
+ * thread continuation for the end-developer's point of view (their code would execute
2258
+ * too early), so we on;y do it when we absolutely have to.
2259
+ */
2260
+ var fnInnerSorting = function () {
2261
+ if ( e.shiftKey )
2262
+ {
2263
+ /* If the shift key is pressed then we are multipe column sorting */
2264
+ var bFound = false;
2265
+ for ( var i=0 ; i<oSettings.aaSorting.length ; i++ )
2266
+ {
2267
+ if ( oSettings.aaSorting[i][0] == iDataIndex )
2268
+ {
2269
+ if ( oSettings.aaSorting[i][1] == "asc" )
2270
+ {
2271
+ oSettings.aaSorting[i][1] = "desc";
2272
+ }
2273
+ else
2274
+ {
2275
+ oSettings.aaSorting.splice( i, 1 );
2276
+ }
2277
+ bFound = true;
2278
+ break;
2279
+ }
2280
+ }
2281
+
2282
+ if ( bFound === false )
2283
+ {
2284
+ oSettings.aaSorting.push( [ iDataIndex, "asc" ] );
2285
+ }
2286
+ }
2287
+ else
2288
+ {
2289
+ /* If no shift key then single column sort */
2290
+ if ( oSettings.aaSorting.length == 1 && oSettings.aaSorting[0][0] == iDataIndex )
2291
+ {
2292
+ oSettings.aaSorting[0][1] = oSettings.aaSorting[0][1]=="asc" ? "desc" : "asc";
2293
+ }
2294
+ else
2295
+ {
2296
+ oSettings.aaSorting.splice( 0, oSettings.aaSorting.length );
2297
+ oSettings.aaSorting.push( [ iDataIndex, "asc" ] );
2298
+ }
2299
+ }
2300
+
2301
+ /* Run the sort */
2302
+ _fnSort( oSettings );
2303
+ }; /* /fnInnerSorting */
2304
+
2305
+ if ( !oSettings.oFeatures.bProcessing )
2306
+ {
2307
+ fnInnerSorting();
2308
+ }
2309
+ else
2310
+ {
2311
+ _fnProcessingDisplay( oSettings, true );
2312
+ setTimeout( function() {
2313
+ fnInnerSorting();
2314
+ if ( !oSettings.oFeatures.bServerSide )
2315
+ {
2316
+ _fnProcessingDisplay( oSettings, false );
2317
+ }
2318
+ }, 0 );
2319
+ }
2320
+ } ); /* /click */
2321
+ } /* For each column */
2322
+
2323
+ /* Take the brutal approach to cancelling text selection due to the shift key */
2324
+ $('.thead .th', oSettings.nTable).mousedown( function (e) {
2325
+ if ( e.shiftKey )
2326
+ {
2327
+ this.onselectstart = function() { return false; };
2328
+ return false;
2329
+ }
2330
+ } );
2331
+ } /* /if feature sort */
2332
+
2333
+ /* Set an absolute width for the table such that pagination doesn't
2334
+ * cause the table to resize
2335
+ */
2336
+ if ( oSettings.oFeatures.bAutoWidth )
2337
+ {
2338
+ oSettings.nTable.style.width = oSettings.nTable.offsetWidth+"px";
2339
+ }
2340
+
2341
+ /* Cache the footer elements */
2342
+ var nTfoot = oSettings.nTable.getElementsByTagName('tfoot');
2343
+ if ( nTfoot.length !== 0 )
2344
+ {
2345
+ iCorrector = 0;
2346
+ var nTfs = $(nTfoot[0]).children('.th');
2347
+ for ( i=0, iLen=nTfs.length ; i<iLen ; i++ )
2348
+ {
2349
+ oSettings.aoColumns[i].nTf = nTfs[i-iCorrector];
2350
+ if ( !oSettings.aoColumns[i].bVisible )
2351
+ {
2352
+ nTfs[i-iCorrector].parentNode.removeChild( nTfs[i-iCorrector] );
2353
+ iCorrector++;
2354
+ }
2355
+ }
2356
+ }
2357
+ }
2358
+
2359
+ /*
2360
+ * Function: _fnDraw
2361
+ * Purpose: Insert the required TR nodes into the table for display
2362
+ * Returns: -
2363
+ * Inputs: object:oSettings - dataSlides settings object
2364
+ */
2365
+ function _fnDraw( oSettings )
2366
+ {
2367
+ var i;
2368
+ var anRows = [];
2369
+ var iRowCount = 0;
2370
+ var bRowError = false;
2371
+ var iStrips = oSettings.asStripClasses.length;
2372
+ var iOpenRows = oSettings.aoOpenRows.length;
2373
+
2374
+ /* If we are dealing with Ajax - do it here */
2375
+ if ( oSettings.oFeatures.bServerSide &&
2376
+ !_fnAjaxUpdate( oSettings ) )
2377
+ {
2378
+ return;
2379
+ }
2380
+
2381
+ if ( oSettings.aiDisplay.length !== 0 )
2382
+ {
2383
+ var iStart = oSettings._iDisplayStart;
2384
+ var iEnd = oSettings._iDisplayEnd;
2385
+
2386
+ if ( oSettings.oFeatures.bServerSide )
2387
+ {
2388
+ iStart = 0;
2389
+ iEnd = oSettings.aoData.length;
2390
+ }
2391
+
2392
+ for ( var j=iStart ; j<iEnd ; j++ )
2393
+ {
2394
+ var nRow = oSettings.aoData[ oSettings.aiDisplay[j] ].nTr;
2395
+
2396
+ /* Remove any old stripping classes and then add the new one */
2397
+ if ( iStrips !== 0 )
2398
+ {
2399
+ $(nRow).removeClass( oSettings.asStripClasses.join(' ') );
2400
+ $(nRow).addClass( oSettings.asStripClasses[ iRowCount % iStrips ] );
2401
+ }
2402
+
2403
+ /* Custom row callback function - might want to manipule the row */
2404
+ if ( typeof oSettings.fnRowCallback == "function" )
2405
+ {
2406
+ nRow = oSettings.fnRowCallback( nRow,
2407
+ oSettings.aoData[ oSettings.aiDisplay[j] ]._aData, iRowCount, j );
2408
+ if ( !nRow && !bRowError )
2409
+ {
2410
+ alert( "Error: A node was not returned by fnRowCallback" );
2411
+ bRowError = true;
2412
+ }
2413
+ }
2414
+
2415
+ anRows.push( nRow );
2416
+ iRowCount++;
2417
+
2418
+ /* If there is an open row - and it is attached to this parent - attach it on redraw */
2419
+ if ( iOpenRows !== 0 )
2420
+ {
2421
+ for ( var k=0 ; k<iOpenRows ; k++ )
2422
+ {
2423
+ if ( nRow == oSettings.aoOpenRows[k].nParent )
2424
+ {
2425
+ anRows.push( oSettings.aoOpenRows[k].nTr );
2426
+ }
2427
+ }
2428
+ }
2429
+ }
2430
+ }
2431
+ else
2432
+ {
2433
+ /* Table is empty - create a row with an empty message in it */
2434
+ anRows[ 0 ] = document.createElement( 'div' );
2435
+ $(anRows[ 0 ]).addClass('tr');
2436
+
2437
+ var nTd = document.createElement( 'div' );
2438
+ $(nTd).addClass('td');
2439
+ nTd.className = oSettings.oClasses.sRowEmpty;
2440
+ nTd.innerHTML = oSettings.oLanguage.sZeroRecords;
2441
+
2442
+ anRows[ iRowCount ].appendChild( nTd );
2443
+ }
2444
+
2445
+ /* Callback the header and footer custom funcation if there is one */
2446
+ if ( typeof oSettings.fnHeaderCallback == 'function' )
2447
+ {
2448
+ oSettings.fnHeaderCallback( $('.thead .tr', oSettings.nTable)[0],
2449
+ _fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(),
2450
+ oSettings.aiDisplay );
2451
+ }
2452
+
2453
+ if ( typeof oSettings.fnFooterCallback == 'function' )
2454
+ {
2455
+ oSettings.fnFooterCallback( $('.tfoot .tr', oSettings.nTable)[0],
2456
+ _fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(),
2457
+ oSettings.aiDisplay );
2458
+ }
2459
+
2460
+ /*
2461
+ * Need to remove any old row from the display - note we can't just empty the tbody using
2462
+ * .html('') since this will unbind the jQuery event handlers (even although the node still
2463
+ * exists!) - note the initially odd ':eq(0)>tr' expression. This basically ensures that we
2464
+ * only get tr elements of the tbody that the data table has been initialised on. If there
2465
+ * are nested tables then we don't want to remove those elements.
2466
+ */
2467
+ var nTrs = $('.tbody:eq(0)>.tr', oSettings.nTable);
2468
+ for ( i=0 ; i<nTrs.length ; i++ )
2469
+ {
2470
+ nTrs[i].parentNode.removeChild( nTrs[i] );
2471
+ }
2472
+
2473
+ /* Put the draw table into the dom */
2474
+ var nBody = $('.tbody:eq(0)', oSettings.nTable);
2475
+ if ( nBody[0] )
2476
+ {
2477
+ for ( i=0 ; i<anRows.length ; i++ )
2478
+ {
2479
+ nBody[0].appendChild( anRows[i] );
2480
+ }
2481
+ }
2482
+
2483
+ /* Update the pagination display buttons */
2484
+ if ( oSettings.oFeatures.bPaginate )
2485
+ {
2486
+ _oExt.oPagination[ oSettings.sPaginationType ].fnUpdate( oSettings, function( oSettings ) {
2487
+ _fnCalculateEnd( oSettings );
2488
+ _fnDraw( oSettings );
2489
+ } );
2490
+ }
2491
+
2492
+ /* Show information about the table */
2493
+ if ( oSettings.oFeatures.bInfo && oSettings.anFeatures.i )
2494
+ {
2495
+ /* Update the information */
2496
+ if ( oSettings.fnRecordsDisplay() === 0 &&
2497
+ oSettings.fnRecordsDisplay() == oSettings.fnRecordsTotal() )
2498
+ {
2499
+ oSettings.anFeatures.i.innerHTML =
2500
+ oSettings.oLanguage.sInfoEmpty+ oSettings.oLanguage.sInfoPostFix;
2501
+ }
2502
+ else if ( oSettings.fnRecordsDisplay() === 0 )
2503
+ {
2504
+ oSettings.anFeatures.i.innerHTML = oSettings.oLanguage.sInfoEmpty +' '+
2505
+ oSettings.oLanguage.sInfoFiltered.replace('_MAX_',
2506
+ oSettings.fnRecordsTotal())+ oSettings.oLanguage.sInfoPostFix;
2507
+ }
2508
+ else if ( oSettings.fnRecordsDisplay() == oSettings.fnRecordsTotal() )
2509
+ {
2510
+ oSettings.anFeatures.i.innerHTML =
2511
+ oSettings.oLanguage.sInfo.
2512
+ replace('_START_',oSettings._iDisplayStart+1).
2513
+ replace('_END_',oSettings.fnDisplayEnd()).
2514
+ replace('_TOTAL_',oSettings.fnRecordsDisplay())+
2515
+ oSettings.oLanguage.sInfoPostFix;
2516
+ }
2517
+ else
2518
+ {
2519
+ oSettings.anFeatures.i.innerHTML =
2520
+ oSettings.oLanguage.sInfo.
2521
+ replace('_START_',oSettings._iDisplayStart+1).
2522
+ replace('_END_',oSettings.fnDisplayEnd()).
2523
+ replace('_TOTAL_',oSettings.fnRecordsDisplay()) +' '+
2524
+ oSettings.oLanguage.sInfoFiltered.replace('_MAX_', oSettings.fnRecordsTotal())+
2525
+ oSettings.oLanguage.sInfoPostFix;
2526
+ }
2527
+ }
2528
+
2529
+ /* Alter the sorting classes to take account of the changes */
2530
+ if ( oSettings.oFeatures.bServerSide && oSettings.oFeatures.bSort )
2531
+ {
2532
+ _fnSortingClasses( oSettings );
2533
+ }
2534
+
2535
+ /* Save the table state on each draw */
2536
+ _fnSaveState( oSettings );
2537
+
2538
+ /* Drawing is finished - call the callback if there is one */
2539
+ if ( typeof oSettings.fnDrawCallback == 'function' )
2540
+ {
2541
+ oSettings.fnDrawCallback( oSettings );
2542
+ }
2543
+ }
2544
+
2545
+ /*
2546
+ * Function: _fnReDraw
2547
+ * Purpose: Redraw the table - taking account of the various features which are enabled
2548
+ * Returns: -
2549
+ * Inputs: object:oSettings - dataSlides settings object
2550
+ */
2551
+ function _fnReDraw( oSettings )
2552
+ {
2553
+ if ( oSettings.oFeatures.bSort )
2554
+ {
2555
+ /* Sorting will refilter and draw for us */
2556
+ _fnSort( oSettings, oSettings.oPreviousSearch );
2557
+ }
2558
+ else if ( oSettings.oFeatures.bFilter )
2559
+ {
2560
+ /* Filtering will redraw for us */
2561
+ _fnFilterComplete( oSettings, oSettings.oPreviousSearch );
2562
+ }
2563
+ else
2564
+ {
2565
+ _fnCalculateEnd( oSettings );
2566
+ _fnDraw( oSettings );
2567
+ }
2568
+ }
2569
+
2570
+ /*
2571
+ * Function: _fnAjaxUpdate
2572
+ * Purpose: Update the table using an Ajax call
2573
+ * Returns: bool: block the table drawing or not
2574
+ * Inputs: object:oSettings - dataSlides settings object
2575
+ */
2576
+ function _fnAjaxUpdate( oSettings )
2577
+ {
2578
+ if ( oSettings.bAjaxDataGet )
2579
+ {
2580
+ _fnProcessingDisplay( oSettings, true );
2581
+ var iColumns = oSettings.aoColumns.length;
2582
+ var aoData = [];
2583
+ var i;
2584
+
2585
+ /* Paging and general */
2586
+ oSettings.iServerDraw++;
2587
+ aoData.push( { "name": "sEcho", "value": oSettings.iServerDraw } );
2588
+ aoData.push( { "name": "iColumns", "value": iColumns } );
2589
+ aoData.push( { "name": "sColumns", "value": _fnColumnOrdering(oSettings) } );
2590
+ aoData.push( { "name": "iDisplayStart", "value": oSettings._iDisplayStart } );
2591
+ aoData.push( { "name": "iDisplayLength", "value": oSettings.oFeatures.bPaginate !== false ?
2592
+ oSettings._iDisplayLength : -1 } );
2593
+
2594
+ /* Filtering */
2595
+ if ( oSettings.oFeatures.bFilter !== false )
2596
+ {
2597
+ aoData.push( { "name": "sSearch", "value": oSettings.oPreviousSearch.sSearch } );
2598
+ aoData.push( { "name": "bEscapeRegex", "value": oSettings.oPreviousSearch.bEscapeRegex } );
2599
+ for ( i=0 ; i<iColumns ; i++ )
2600
+ {
2601
+ //aoData.push( { "name": "sSearch_"+i, "value": oSettings.aoPreSearchCols[i].sSearch } );
2602
+ //aoData.push( { "name": "bEscapeRegex_"+i, "value": oSettings.aoPreSearchCols[i].bEscapeRegex } );
2603
+ }
2604
+ }
2605
+
2606
+ /* Sorting */
2607
+ if ( oSettings.oFeatures.bSort !== false )
2608
+ {
2609
+ var iFixed = oSettings.aaSortingFixed !== null ? oSettings.aaSortingFixed.length : 0;
2610
+ var iUser = oSettings.aaSorting.length;
2611
+ aoData.push( { "name": "iSortingCols", "value": iFixed+iUser } );
2612
+ for ( i=0 ; i<iFixed ; i++ )
2613
+ {
2614
+ aoData.push( { "name": "iSortCol_"+i, "value": oSettings.aaSortingFixed[i][0] } );
2615
+ aoData.push( { "name": "iSortDir_"+i, "value": oSettings.aaSortingFixed[i][1] } );
2616
+ }
2617
+
2618
+ for ( i=0 ; i<iUser ; i++ )
2619
+ {
2620
+ aoData.push( { "name": "iSortCol_"+(i+iFixed), "value": oSettings.aaSorting[i][0] } );
2621
+ aoData.push( { "name": "iSortDir_"+(i+iFixed), "value": oSettings.aaSorting[i][1] } );
2622
+ }
2623
+ }
2624
+
2625
+ oSettings.fnServerData( oSettings.sAjaxSource, aoData, function(json) {
2626
+ _fnAjaxUpdateDraw( oSettings, json );
2627
+ } );
2628
+ return false;
2629
+ }
2630
+ else
2631
+ {
2632
+ return true;
2633
+ }
2634
+ }
2635
+
2636
+ /*
2637
+ * Function: _fnAjaxUpdateDraw
2638
+ * Purpose: Data the data from the server (nuking the old) and redraw the table
2639
+ * Returns: -
2640
+ * Inputs: object:oSettings - dataSlides settings object
2641
+ * object:json - json data return from the server.
2642
+ * The following must be defined:
2643
+ * iTotalRecords, iTotalDisplayRecords, aaData
2644
+ * The following may be defined:
2645
+ * sColumns
2646
+ */
2647
+ function _fnAjaxUpdateDraw ( oSettings, json )
2648
+ {
2649
+ if ( typeof json.sEcho != 'undefined' )
2650
+ {
2651
+ /* Protect against old returns over-writing a new one. Possible when you get
2652
+ * very fast interaction, and later queires are completed much faster
2653
+ */
2654
+ if ( json.sEcho*1 < oSettings.iServerDraw )
2655
+ {
2656
+ return;
2657
+ }
2658
+ else
2659
+ {
2660
+ oSettings.iServerDraw = json.sEcho * 1;
2661
+ }
2662
+ }
2663
+
2664
+ _fnClearTable( oSettings );
2665
+ oSettings._iRecordsTotal = json.iTotalRecords;
2666
+ oSettings._iRecordsDisplay = json.iTotalDisplayRecords;
2667
+
2668
+ /* Determine if reordering is required */
2669
+ var sOrdering = _fnColumnOrdering(oSettings);
2670
+ var bReOrder = (json.sColumns != 'undefined' && sOrdering !== "" && json.sColumns != sOrdering );
2671
+ if ( bReOrder )
2672
+ {
2673
+ var aiIndex = _fnReOrderIndex( oSettings, json.sColumns );
2674
+ }
2675
+
2676
+ for ( var i=0, iLen=json.aaData.length ; i<iLen ; i++ )
2677
+ {
2678
+ if ( bReOrder )
2679
+ {
2680
+ /* If we need to re-order, then create a new array with the correct order and add it */
2681
+ var aData = [];
2682
+ for ( var j=0, jLen=oSettings.aoColumns.length ; j<jLen ; j++ )
2683
+ {
2684
+ aData.push( json.aaData[i][ aiIndex[j] ] );
2685
+ }
2686
+ _fnAddData( oSettings, aData );
2687
+ }
2688
+ else
2689
+ {
2690
+ /* No re-order required, sever got it "right" - just straight add */
2691
+ _fnAddData( oSettings, json.aaData[i] );
2692
+ }
2693
+ }
2694
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
2695
+
2696
+ oSettings.bAjaxDataGet = false;
2697
+ _fnDraw( oSettings );
2698
+ oSettings.bAjaxDataGet = true;
2699
+ _fnProcessingDisplay( oSettings, false );
2700
+ }
2701
+
2702
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2703
+ * Options (features) HTML
2704
+ */
2705
+
2706
+ /*
2707
+ * Function: _fnAddOptionsHtml
2708
+ * Purpose: Add the options to the page HTML for the table
2709
+ * Returns: -
2710
+ * Inputs: object:oSettings - dataSlides settings object
2711
+ */
2712
+ function _fnAddOptionsHtml ( oSettings )
2713
+ {
2714
+ /*
2715
+ * Create a temporary, empty, div which we can later on replace with what we have generated
2716
+ * we do it this way to rendering the 'options' html offline - speed :-)
2717
+ */
2718
+ var nHolding = document.createElement( 'div' );
2719
+ oSettings.nTable.parentNode.insertBefore( nHolding, oSettings.nTable );
2720
+
2721
+ /*
2722
+ * All dataSlides are wrapped in a div - this is not currently optional - backwards
2723
+ * compatability. It can be removed if you don't want it.
2724
+ */
2725
+ var nWrapper = document.createElement( 'div' );
2726
+ nWrapper.className = oSettings.oClasses.sWrapper;
2727
+ if ( oSettings.sTableId !== '' )
2728
+ {
2729
+ nWrapper.setAttribute( 'id', oSettings.sTableId+'_wrapper' );
2730
+ }
2731
+
2732
+ /* Track where we want to insert the option */
2733
+ var nInsertNode = nWrapper;
2734
+
2735
+ /* IE don't treat strings as arrays */
2736
+ var sDom = oSettings.sDomPositioning.split('');
2737
+
2738
+ /* Loop over the user set positioning and place the elements as needed */
2739
+ var nTmp;
2740
+ for ( var i=0 ; i<sDom.length ; i++ )
2741
+ {
2742
+ var cOption = sDom[i];
2743
+
2744
+ if ( cOption == '<' )
2745
+ {
2746
+ /* New container div */
2747
+ var nNewNode = document.createElement( 'div' );
2748
+
2749
+ /* Check to see if we should append a class name to the container */
2750
+ var cNext = sDom[i+1];
2751
+ if ( cNext == "'" || cNext == '"' )
2752
+ {
2753
+ var sClass = "";
2754
+ var j = 2;
2755
+ while ( sDom[i+j] != cNext )
2756
+ {
2757
+ sClass += sDom[i+j];
2758
+ j++;
2759
+ }
2760
+ nNewNode.className = sClass;
2761
+ i += j; /* Move along the position array */
2762
+ }
2763
+
2764
+ nInsertNode.appendChild( nNewNode );
2765
+ nInsertNode = nNewNode;
2766
+ }
2767
+ else if ( cOption == '>' )
2768
+ {
2769
+ /* End container div */
2770
+ nInsertNode = nInsertNode.parentNode;
2771
+ }
2772
+ else if ( cOption == 'l' && oSettings.oFeatures.bPaginate && oSettings.oFeatures.bLengthChange )
2773
+ {
2774
+ /* Length */
2775
+ nTmp = _fnFeatureHtmlLength( oSettings );
2776
+ oSettings.anFeatures[cOption] = nTmp;
2777
+ nInsertNode.appendChild( nTmp );
2778
+ }
2779
+ else if ( cOption == 'f' && oSettings.oFeatures.bFilter )
2780
+ {
2781
+ /* Filter */
2782
+ nTmp = _fnFeatureHtmlFilter( oSettings );
2783
+ oSettings.anFeatures[cOption] = nTmp;
2784
+ nInsertNode.appendChild( nTmp );
2785
+ }
2786
+ else if ( cOption == 'r' && oSettings.oFeatures.bProcessing )
2787
+ {
2788
+ /* pRocessing */
2789
+ nTmp = _fnFeatureHtmlProcessing( oSettings );
2790
+ oSettings.anFeatures[cOption] = nTmp;
2791
+ nInsertNode.appendChild( nTmp );
2792
+ }
2793
+ else if ( cOption == 't' )
2794
+ {
2795
+ /* Table */
2796
+ oSettings.anFeatures[cOption] = oSettings.nTable;
2797
+ nInsertNode.appendChild( oSettings.nTable );
2798
+ }
2799
+ else if ( cOption == 'i' && oSettings.oFeatures.bInfo )
2800
+ {
2801
+ /* Info */
2802
+ nTmp = _fnFeatureHtmlInfo( oSettings );
2803
+ oSettings.anFeatures[cOption] = nTmp;
2804
+ nInsertNode.appendChild( nTmp );
2805
+ }
2806
+ else if ( cOption == 'p' && oSettings.oFeatures.bPaginate )
2807
+ {
2808
+ /* Pagination */
2809
+ nTmp = _fnFeatureHtmlPaginate( oSettings );
2810
+ oSettings.anFeatures[cOption] = nTmp;
2811
+ nInsertNode.appendChild( nTmp );
2812
+ }
2813
+ else if ( _oExt.aoFeatures.length !== 0 )
2814
+ {
2815
+ var aoFeatures = _oExt.aoFeatures;
2816
+ for ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )
2817
+ {
2818
+ if ( cOption == aoFeatures[k].cFeature )
2819
+ {
2820
+ nTmp = aoFeatures[k].fnInit( oSettings );
2821
+ oSettings.anFeatures[cOption] = nTmp;
2822
+ nInsertNode.appendChild( nTmp );
2823
+ break;
2824
+ }
2825
+ }
2826
+ }
2827
+ }
2828
+
2829
+ /* Built our DOM structure - replace the holding div with what we want */
2830
+ nHolding.parentNode.replaceChild( nWrapper, nHolding );
2831
+ }
2832
+
2833
+ /*
2834
+ * Function: _fnFeatureHtmlFilter
2835
+ * Purpose: Generate the node required for filtering text
2836
+ * Returns: node
2837
+ * Inputs: object:oSettings - dataSlides settings object
2838
+ */
2839
+ function _fnFeatureHtmlFilter ( oSettings )
2840
+ {
2841
+ var nFilter = document.createElement( 'div' );
2842
+ if ( oSettings.sTableId !== '' )
2843
+ {
2844
+ nFilter.setAttribute( 'id', oSettings.sTableId+'_filter' );
2845
+ }
2846
+ nFilter.className = oSettings.oClasses.sFilter;
2847
+ var sSpace = oSettings.oLanguage.sSearch==="" ? "" : " ";
2848
+ nFilter.innerHTML = oSettings.oLanguage.sSearch+sSpace+'<input type="text" />';
2849
+
2850
+ var jqFilter = $("input", nFilter);
2851
+ jqFilter.val( oSettings.oPreviousSearch.sSearch.replace('"','&quot;') );
2852
+ jqFilter.keyup( function(e) {
2853
+ _fnFilterComplete( oSettings, {
2854
+ "sSearch": this.value,
2855
+ "bEscapeRegex": oSettings.oPreviousSearch.bEscapeRegex
2856
+ } );
2857
+
2858
+ /* Prevent default */
2859
+ return false;
2860
+ } );
2861
+
2862
+ return nFilter;
2863
+ }
2864
+
2865
+ /*
2866
+ * Function: _fnFeatureHtmlInfo
2867
+ * Purpose: Generate the node required for the info display
2868
+ * Returns: node
2869
+ * Inputs: object:oSettings - dataSlides settings object
2870
+ */
2871
+ function _fnFeatureHtmlInfo ( oSettings )
2872
+ {
2873
+ var nInfo = document.createElement( 'div' );
2874
+ if ( oSettings.sTableId !== '' )
2875
+ {
2876
+ nInfo.setAttribute( 'id', oSettings.sTableId+'_info' );
2877
+ }
2878
+ nInfo.className = oSettings.oClasses.sInfo;
2879
+ return nInfo;
2880
+ }
2881
+
2882
+ /*
2883
+ * Function: _fnFeatureHtmlPaginate
2884
+ * Purpose: Generate the node required for default pagination
2885
+ * Returns: node
2886
+ * Inputs: object:oSettings - dataSlides settings object
2887
+ */
2888
+ function _fnFeatureHtmlPaginate ( oSettings )
2889
+ {
2890
+ var nPaginate = document.createElement( 'div' );
2891
+ nPaginate.className = oSettings.oClasses.sPaging+oSettings.sPaginationType;
2892
+ oSettings.anFeatures.p = nPaginate; /* Need this stored in order to call paging plug-ins */
2893
+
2894
+ _oExt.oPagination[ oSettings.sPaginationType ].fnInit( oSettings, function( oSettings ) {
2895
+ _fnCalculateEnd( oSettings );
2896
+ _fnDraw( oSettings );
2897
+ } );
2898
+ return nPaginate;
2899
+ }
2900
+
2901
+ /*
2902
+ * Function: _fnFeatureHtmlLength
2903
+ * Purpose: Generate the node required for user display length changing
2904
+ * Returns: node
2905
+ * Inputs: object:oSettings - dataSlides settings object
2906
+ */
2907
+ function _fnFeatureHtmlLength ( oSettings )
2908
+ {
2909
+ /* This can be overruled by not using the _MENU_ var/macro in the language variable */
2910
+ var sName = (oSettings.sTableId === "") ? "" : 'name="'+oSettings.sTableId+'_length"';
2911
+ var sStdMenu =
2912
+ '<select size="1" '+sName+'>'+
2913
+ '<option value="10">10</option>'+
2914
+ '<option value="25">25</option>'+
2915
+ '<option value="50">50</option>'+
2916
+ '<option value="100">100</option>'+
2917
+ '</select>';
2918
+
2919
+ var nLength = document.createElement( 'div' );
2920
+ if ( oSettings.sTableId !== '' )
2921
+ {
2922
+ nLength.setAttribute( 'id', oSettings.sTableId+'_length' );
2923
+ }
2924
+ nLength.className = oSettings.oClasses.sLength;
2925
+ nLength.innerHTML = oSettings.oLanguage.sLengthMenu.replace( '_MENU_', sStdMenu );
2926
+
2927
+ /*
2928
+ * Set the length to the current display length - thanks to Andrea Pavlovic for this fix,
2929
+ * and Stefan Skopnik for fixing the fix!
2930
+ */
2931
+ $('select option[value="'+oSettings._iDisplayLength+'"]',nLength).attr("selected",true);
2932
+
2933
+ $('select', nLength).change( function(e) {
2934
+ oSettings._iDisplayLength = parseInt($(this).val(), 10);
2935
+
2936
+ _fnCalculateEnd( oSettings );
2937
+
2938
+ /* If we have space to show extra rows (backing up from the end point - then do so */
2939
+ if ( oSettings._iDisplayEnd == oSettings.aiDisplay.length )
2940
+ {
2941
+ oSettings._iDisplayStart = oSettings._iDisplayEnd - oSettings._iDisplayLength;
2942
+ if ( oSettings._iDisplayStart < 0 )
2943
+ {
2944
+ oSettings._iDisplayStart = 0;
2945
+ }
2946
+ }
2947
+
2948
+ if ( oSettings._iDisplayLength == -1 )
2949
+ {
2950
+ oSettings._iDisplayStart = 0;
2951
+ }
2952
+
2953
+ _fnDraw( oSettings );
2954
+ } );
2955
+
2956
+ return nLength;
2957
+ }
2958
+
2959
+ /*
2960
+ * Function: _fnFeatureHtmlProcessing
2961
+ * Purpose: Generate the node required for the processing node
2962
+ * Returns: node
2963
+ * Inputs: object:oSettings - dataSlides settings object
2964
+ */
2965
+ function _fnFeatureHtmlProcessing ( oSettings )
2966
+ {
2967
+ var nProcessing = document.createElement( 'div' );
2968
+
2969
+ if ( oSettings.sTableId !== '' )
2970
+ {
2971
+ nProcessing.setAttribute( 'id', oSettings.sTableId+'_processing' );
2972
+ }
2973
+ nProcessing.innerHTML = oSettings.oLanguage.sProcessing;
2974
+ nProcessing.className = oSettings.oClasses.sProcessing;
2975
+ oSettings.nTable.parentNode.insertBefore( nProcessing, oSettings.nTable );
2976
+
2977
+ return nProcessing;
2978
+ }
2979
+
2980
+ /*
2981
+ * Function: _fnProcessingDisplay
2982
+ * Purpose: Display or hide the processing indicator
2983
+ * Returns: -
2984
+ * Inputs: object:oSettings - dataSlides settings object
2985
+ * bool:
2986
+ * true - show the processing indicator
2987
+ * false - don't show
2988
+ */
2989
+ function _fnProcessingDisplay ( oSettings, bShow )
2990
+ {
2991
+ if ( oSettings.oFeatures.bProcessing )
2992
+ {
2993
+ oSettings.anFeatures.r.style.visibility = bShow ? "visible" : "hidden";
2994
+ }
2995
+ }
2996
+
2997
+
2998
+
2999
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
3000
+ * Filtering
3001
+ */
3002
+
3003
+ /*
3004
+ * Function: _fnFilterComplete
3005
+ * Purpose: Filter the table using both the global filter and column based filtering
3006
+ * Returns: -
3007
+ * Inputs: object:oSettings - dataSlides settings object
3008
+ * object:oSearch: search information
3009
+ * int:iForce - optional - force a research of the master array (1) or not (undefined or 0)
3010
+ */
3011
+ function _fnFilterComplete ( oSettings, oInput, iForce )
3012
+ {
3013
+ /* Filter on everything */
3014
+ _fnFilter( oSettings, oInput.sSearch, iForce, oInput.bEscapeRegex );
3015
+
3016
+ /* Now do the individual column filter */
3017
+ for ( var i=0 ; i<oSettings.aoPreSearchCols.length ; i++ )
3018
+ {
3019
+ _fnFilterColumn( oSettings, oSettings.aoPreSearchCols[i].sSearch, i,
3020
+ oSettings.aoPreSearchCols[i].bEscapeRegex );
3021
+ }
3022
+
3023
+ /* Custom filtering */
3024
+ if ( _oExt.afnFiltering.length !== 0 )
3025
+ {
3026
+ _fnFilterCustom( oSettings );
3027
+ }
3028
+
3029
+ /* Redraw the table */
3030
+ if ( typeof oSettings.iInitDisplayStart != 'undefined' && oSettings.iInitDisplayStart != -1 )
3031
+ {
3032
+ oSettings._iDisplayStart = oSettings.iInitDisplayStart;
3033
+ oSettings.iInitDisplayStart = -1;
3034
+ }
3035
+ else
3036
+ {
3037
+ oSettings._iDisplayStart = 0;
3038
+ }
3039
+ _fnCalculateEnd( oSettings );
3040
+ _fnDraw( oSettings );
3041
+
3042
+ /* Rebuild search array 'offline' */
3043
+ _fnBuildSearchArray( oSettings, 0 );
3044
+ }
3045
+
3046
+ /*
3047
+ * Function: _fnFilterCustom
3048
+ * Purpose: Apply custom filtering functions
3049
+ * Returns: -
3050
+ * Inputs: object:oSettings - dataSlides settings object
3051
+ */
3052
+ function _fnFilterCustom( oSettings )
3053
+ {
3054
+ var afnFilters = _oExt.afnFiltering;
3055
+ for ( var i=0, iLen=afnFilters.length ; i<iLen ; i++ )
3056
+ {
3057
+ var iCorrector = 0;
3058
+ for ( var j=0, jLen=oSettings.aiDisplay.length ; j<jLen ; j++ )
3059
+ {
3060
+ var iDisIndex = oSettings.aiDisplay[j-iCorrector];
3061
+
3062
+ /* Check if we should use this row based on the filtering function */
3063
+ if ( !afnFilters[i]( oSettings, oSettings.aoData[iDisIndex]._aData, iDisIndex ) )
3064
+ {
3065
+ oSettings.aiDisplay.splice( j-iCorrector, 1 );
3066
+ iCorrector++;
3067
+ }
3068
+ }
3069
+ }
3070
+ }
3071
+
3072
+ /*
3073
+ * Function: _fnFilterColumn
3074
+ * Purpose: Filter the table on a per-column basis
3075
+ * Returns: -
3076
+ * Inputs: object:oSettings - dataSlides settings object
3077
+ * string:sInput - string to filter on
3078
+ * int:iColumn - column to filter
3079
+ * bool:bEscapeRegex - escape regex or not
3080
+ */
3081
+ function _fnFilterColumn ( oSettings, sInput, iColumn, bEscapeRegex )
3082
+ {
3083
+ if ( sInput === "" )
3084
+ {
3085
+ return;
3086
+ }
3087
+
3088
+ var iIndexCorrector = 0;
3089
+ var sRegexMatch = bEscapeRegex ? _fnEscapeRegex( sInput ) : sInput;
3090
+ var rpSearch = new RegExp( sRegexMatch, "i" );
3091
+
3092
+ for ( var i=oSettings.aiDisplay.length-1 ; i>=0 ; i-- )
3093
+ {
3094
+ var sData = _fnDataToSearch( oSettings.aoData[ oSettings.aiDisplay[i] ]._aData[iColumn],
3095
+ oSettings.aoColumns[iColumn].sType );
3096
+ if ( ! rpSearch.test( sData ) )
3097
+ {
3098
+ oSettings.aiDisplay.splice( i, 1 );
3099
+ iIndexCorrector++;
3100
+ }
3101
+ }
3102
+ }
3103
+
3104
+ /*
3105
+ * Function: _fnFilter
3106
+ * Purpose: Filter the data table based on user input and draw the table
3107
+ * Returns: -
3108
+ * Inputs: object:oSettings - dataSlides settings object
3109
+ * string:sInput - string to filter on
3110
+ * int:iForce - optional - force a research of the master array (1) or not (undefined or 0)
3111
+ * bool:bEscapeRegex - escape regex or not
3112
+ */
3113
+ function _fnFilter( oSettings, sInput, iForce, bEscapeRegex )
3114
+ {
3115
+ var i;
3116
+
3117
+ /* Check if we are forcing or not - optional parameter */
3118
+ if ( typeof iForce == 'undefined' || iForce === null )
3119
+ {
3120
+ iForce = 0;
3121
+ }
3122
+
3123
+ /* Need to take account of custom filtering functions always */
3124
+ if ( _oExt.afnFiltering.length !== 0 )
3125
+ {
3126
+ iForce = 1;
3127
+ }
3128
+
3129
+ /* Generate the regular expression to use. Something along the lines of:
3130
+ * ^(?=.*?\bone\b)(?=.*?\btwo\b)(?=.*?\bthree\b).*$
3131
+ */
3132
+ var asSearch = bEscapeRegex ?
3133
+ _fnEscapeRegex( sInput ).split( ' ' ) :
3134
+ sInput.split( ' ' );
3135
+ var sRegExpString = '^(?=.*?'+asSearch.join( ')(?=.*?' )+').*$';
3136
+ var rpSearch = new RegExp( sRegExpString, "i" ); /* case insensitive */
3137
+
3138
+ /*
3139
+ * If the input is blank - we want the full data set
3140
+ */
3141
+ if ( sInput.length <= 0 )
3142
+ {
3143
+ oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);
3144
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
3145
+ }
3146
+ else
3147
+ {
3148
+ /*
3149
+ * We are starting a new search or the new search string is smaller
3150
+ * then the old one (i.e. delete). Search from the master array
3151
+ */
3152
+ if ( oSettings.aiDisplay.length == oSettings.aiDisplayMaster.length ||
3153
+ oSettings.oPreviousSearch.sSearch.length > sInput.length || iForce == 1 ||
3154
+ sInput.indexOf(oSettings.oPreviousSearch.sSearch) !== 0 )
3155
+ {
3156
+ /* Nuke the old display array - we are going to rebuild it */
3157
+ oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);
3158
+
3159
+ /* Force a rebuild of the search array */
3160
+ _fnBuildSearchArray( oSettings, 1 );
3161
+
3162
+ /* Search through all records to populate the search array
3163
+ * The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1
3164
+ * mapping
3165
+ */
3166
+ for ( i=0 ; i<oSettings.aiDisplayMaster.length ; i++ )
3167
+ {
3168
+ if ( rpSearch.test(oSettings.asDataSearch[i]) )
3169
+ {
3170
+ oSettings.aiDisplay.push( oSettings.aiDisplayMaster[i] );
3171
+ }
3172
+ }
3173
+ }
3174
+ else
3175
+ {
3176
+ /* Using old search array - refine it - do it this way for speed
3177
+ * Don't have to search the whole master array again
3178
+ */
3179
+ var iIndexCorrector = 0;
3180
+
3181
+ /* Search the current results */
3182
+ for ( i=0 ; i<oSettings.asDataSearch.length ; i++ )
3183
+ {
3184
+ if ( ! rpSearch.test(oSettings.asDataSearch[i]) )
3185
+ {
3186
+ oSettings.aiDisplay.splice( i-iIndexCorrector, 1 );
3187
+ iIndexCorrector++;
3188
+ }
3189
+ }
3190
+ }
3191
+ }
3192
+ oSettings.oPreviousSearch.sSearch = sInput;
3193
+ oSettings.oPreviousSearch.bEscapeRegex = bEscapeRegex;
3194
+ }
3195
+
3196
+
3197
+
3198
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
3199
+ * Sorting
3200
+ */
3201
+
3202
+ /*
3203
+ * Function: _fnSort
3204
+ * Purpose: Change the order of the table
3205
+ * Returns: -
3206
+ * Inputs: object:oSettings - dataSlides settings object
3207
+ * bool:bApplyClasses - optional - should we apply classes or not
3208
+ * Notes: We always sort the master array and then apply a filter again
3209
+ * if it is needed. This probably isn't optimal - but atm I can't think
3210
+ * of any other way which is (each has disadvantages)
3211
+ */
3212
+ function _fnSort ( oSettings, bApplyClasses )
3213
+ {
3214
+ /*
3215
+ * Funny one this - we want to sort aiDisplayMaster - but according to aoData[]._aData
3216
+ *
3217
+ * function _fnSortText ( a, b )
3218
+ * {
3219
+ * var iTest;
3220
+ * var oSort = _oExt.oSort;
3221
+ *
3222
+ * iTest = oSort['string-asc']( aoData[ a ]._aData[ COL ], aoData[ b ]._aData[ COL ] );
3223
+ * if ( iTest === 0 )
3224
+ * ...
3225
+ * }
3226
+ */
3227
+
3228
+ /* Here is what we are looking to achieve here (custom sort functions add complication...)
3229
+ * function _fnSortText ( a, b )
3230
+ * {
3231
+ * var iTest;
3232
+ * var oSort = _oExt.oSort;
3233
+ * iTest = oSort['string-asc']( a[0], b[0] );
3234
+ * if ( iTest === 0 )
3235
+ * iTest = oSort['string-asc']( a[1], b[1] );
3236
+ * if ( iTest === 0 )
3237
+ * iTest = oSort['string-asc']( a[2], b[2] );
3238
+ *
3239
+ * return iTest;
3240
+ * }
3241
+ */
3242
+ var aaSort = [];
3243
+ var oSort = _oExt.oSort;
3244
+ var aoData = oSettings.aoData;
3245
+ var iDataSort;
3246
+ var iDataType;
3247
+ var i;
3248
+
3249
+ if ( oSettings.aaSorting.length !== 0 || oSettings.aaSortingFixed !== null )
3250
+ {
3251
+ if ( oSettings.aaSortingFixed !== null )
3252
+ {
3253
+ aaSort = oSettings.aaSortingFixed.concat( oSettings.aaSorting );
3254
+ }
3255
+ else
3256
+ {
3257
+ aaSort = oSettings.aaSorting.slice();
3258
+ }
3259
+
3260
+ if ( !window.runtime )
3261
+ {
3262
+ var fnLocalSorting;
3263
+ var sDynamicSort = "fnLocalSorting = function(a,b){"+
3264
+ "var iTest;";
3265
+
3266
+ for ( i=0 ; i<aaSort.length-1 ; i++ )
3267
+ {
3268
+ iDataSort = oSettings.aoColumns[ aaSort[i][0] ].iDataSort;
3269
+ iDataType = oSettings.aoColumns[ iDataSort ].sType;
3270
+ sDynamicSort += "iTest = oSort['"+iDataType+"-"+aaSort[i][1]+"']"+
3271
+ "( aoData[a]._aData["+iDataSort+"], aoData[b]._aData["+iDataSort+"] ); if ( iTest === 0 )";
3272
+ }
3273
+
3274
+ iDataSort = oSettings.aoColumns[ aaSort[aaSort.length-1][0] ].iDataSort;
3275
+ iDataType = oSettings.aoColumns[ iDataSort ].sType;
3276
+ sDynamicSort += "iTest = oSort['"+iDataType+"-"+aaSort[aaSort.length-1][1]+"']"+
3277
+ "( aoData[a]._aData["+iDataSort+"], aoData[b]._aData["+iDataSort+"] ); return iTest;}";
3278
+
3279
+ /* The eval has to be done to a variable for IE */
3280
+ eval( sDynamicSort );
3281
+ oSettings.aiDisplayMaster.sort( fnLocalSorting );
3282
+ }
3283
+ else
3284
+ {
3285
+ /*
3286
+ * Support for Adobe AIR - AIR doesn't allow eval with a function
3287
+ * Note that for reasonable sized data sets this method is around 1.5 times slower than
3288
+ * the eval above (hence why it is not used all the time). Oddly enough, it is ever so
3289
+ * slightly faster for very small sets (presumably the eval has overhead).
3290
+ * Single column (1083 records) - eval: 32mS AIR: 38mS
3291
+ * Two columns (1083 records) - eval: 55mS AIR: 66mS
3292
+ */
3293
+
3294
+ /* Build a cached array so the sort doesn't have to process this stuff on every call */
3295
+ var aAirSort = [];
3296
+ var iLen = aaSort.length;
3297
+ for ( i=0 ; i<iLen ; i++ )
3298
+ {
3299
+ iDataSort = oSettings.aoColumns[ aaSort[i][0] ].iDataSort;
3300
+ aAirSort.push( [
3301
+ iDataSort,
3302
+ oSettings.aoColumns[ iDataSort ].sType+'-'+aaSort[i][1]
3303
+ ] );
3304
+ }
3305
+
3306
+ oSettings.aiDisplayMaster.sort( function (a,b) {
3307
+ var iTest;
3308
+ for ( var i=0 ; i<iLen ; i++ )
3309
+ {
3310
+ iTest = oSort[ aAirSort[i][1] ]( aoData[a]._aData[aAirSort[i][0]], aoData[b]._aData[aAirSort[i][0]] );
3311
+ if ( iTest !== 0 )
3312
+ {
3313
+ return iTest;
3314
+ }
3315
+ }
3316
+ return 0;
3317
+ } );
3318
+ }
3319
+ }
3320
+
3321
+ /* Alter the sorting classes to take account of the changes */
3322
+ if ( typeof bApplyClasses == 'undefined' || bApplyClasses )
3323
+ {
3324
+ _fnSortingClasses( oSettings );
3325
+ }
3326
+
3327
+ /* Copy the master data into the draw array and re-draw */
3328
+ if ( oSettings.oFeatures.bFilter )
3329
+ {
3330
+ /* _fnFilter() will redraw the table for us */
3331
+ _fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );
3332
+ }
3333
+ else
3334
+ {
3335
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
3336
+ oSettings._iDisplayStart = 0; /* reset display back to page 0 */
3337
+ _fnCalculateEnd( oSettings );
3338
+ _fnDraw( oSettings );
3339
+ }
3340
+ }
3341
+
3342
+ /*
3343
+ * Function: _fnSortingClasses
3344
+ * Purpose: Set the sortting classes on the header
3345
+ * Returns: -
3346
+ * Inputs: object:oSettings - dataSlides settings object
3347
+ */
3348
+ function _fnSortingClasses( oSettings )
3349
+ {
3350
+ var i, j, iFound;
3351
+ var aaSort, sClass;
3352
+ var iColumns = oSettings.aoColumns.length;
3353
+ var oClasses = oSettings.oClasses;
3354
+
3355
+ for ( i=0 ; i<iColumns ; i++ )
3356
+ {
3357
+ $(oSettings.aoColumns[i].nTh).removeClass( oClasses.sSortAsc +" "+ oClasses.sSortDesc +
3358
+ " "+ oClasses.sSortable );
3359
+ }
3360
+
3361
+ if ( oSettings.aaSortingFixed !== null )
3362
+ {
3363
+ aaSort = oSettings.aaSortingFixed.concat( oSettings.aaSorting );
3364
+ }
3365
+ else
3366
+ {
3367
+ aaSort = oSettings.aaSorting.slice();
3368
+ }
3369
+
3370
+ /* Apply the required classes to the header */
3371
+ for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
3372
+ {
3373
+ if ( oSettings.aoColumns[i].bSortable && oSettings.aoColumns[i].bVisible )
3374
+ {
3375
+ sClass = oClasses.sSortable;
3376
+ iFound = -1;
3377
+ for ( j=0 ; j<aaSort.length ; j++ )
3378
+ {
3379
+ if ( aaSort[j][0] == i )
3380
+ {
3381
+ sClass = ( aaSort[j][1] == "asc" ) ?
3382
+ oClasses.sSortAsc : oClasses.sSortDesc;
3383
+ iFound = j;
3384
+ break;
3385
+ }
3386
+ }
3387
+ $(oSettings.aoColumns[i].nTh).addClass( sClass );
3388
+
3389
+ if ( oSettings.bJUI )
3390
+ {
3391
+ /* jQuery UI uses extra markup */
3392
+ var jqSpan = $("span", oSettings.aoColumns[i].nTh);
3393
+ jqSpan.removeClass(oClasses.sSortJUIAsc +" "+ oClasses.sSortJUIDesc +" "+
3394
+ oClasses.sSortJUI);
3395
+
3396
+ var sSpanClass;
3397
+ if ( iFound == -1 )
3398
+ {
3399
+ sSpanClass = oClasses.sSortJUI;
3400
+ }
3401
+ else if ( aaSort[iFound][1] == "asc" )
3402
+ {
3403
+ sSpanClass = oClasses.sSortJUIAsc;
3404
+ }
3405
+ else
3406
+ {
3407
+ sSpanClass = oClasses.sSortJUIDesc;
3408
+ }
3409
+
3410
+ jqSpan.addClass( sSpanClass );
3411
+ }
3412
+ }
3413
+ }
3414
+
3415
+ /*
3416
+ * Apply the required classes to the table body
3417
+ * Note that this is given as a feature switch since it can significantly slow down a sort
3418
+ * on large data sets (adding and removing of classes is always slow at the best of times..)
3419
+ */
3420
+ if ( oSettings.oFeatures.bSortClasses )
3421
+ {
3422
+ var nTrs = _fnGetTrNodes( oSettings );
3423
+ sClass = oClasses.sSortColumn;
3424
+ $('td', nTrs).removeClass( sClass+"1 "+sClass+"2 "+sClass+"3" );
3425
+
3426
+ var iClass = 1;
3427
+ for ( i=0 ; i<aaSort.length ; i++ )
3428
+ {
3429
+ var iVis = _fnColumnIndexToVisible(oSettings, aaSort[i][0]);
3430
+ if ( iVis !== null )
3431
+ {
3432
+ /* Limit the number of classes to three */
3433
+ if ( iClass <= 2 )
3434
+ {
3435
+ $('td:eq('+iVis+')', nTrs).addClass( sClass+iClass );
3436
+ }
3437
+ else
3438
+ {
3439
+ $('td:eq('+iVis+')', nTrs).addClass( sClass+'3' );
3440
+ }
3441
+ iClass++;
3442
+ }
3443
+ }
3444
+ }
3445
+ }
3446
+
3447
+ /*
3448
+ * Function: _fnVisibleToColumnIndex
3449
+ * Purpose: Covert the index of a visible column to the index in the data array (take account
3450
+ * of hidden columns)
3451
+ * Returns: int:i - the data index
3452
+ * Inputs: object:oSettings - dataSlides settings object
3453
+ */
3454
+ function _fnVisibleToColumnIndex( oSettings, iMatch )
3455
+ {
3456
+ var iColumn = -1;
3457
+
3458
+ for ( var i=0 ; i<oSettings.aoColumns.length ; i++ )
3459
+ {
3460
+ if ( oSettings.aoColumns[i].bVisible === true )
3461
+ {
3462
+ iColumn++;
3463
+ }
3464
+
3465
+ if ( iColumn == iMatch )
3466
+ {
3467
+ return i;
3468
+ }
3469
+ }
3470
+
3471
+ return null;
3472
+ }
3473
+
3474
+ /*
3475
+ * Function: _fnColumnIndexToVisible
3476
+ * Purpose: Covert the index of an index in the data array and convert it to the visible
3477
+ * column index (take account of hidden columns)
3478
+ * Returns: int:i - the data index
3479
+ * Inputs: object:oSettings - dataSlides settings object
3480
+ */
3481
+ function _fnColumnIndexToVisible( oSettings, iMatch )
3482
+ {
3483
+ var iVisible = -1;
3484
+ for ( var i=0 ; i<oSettings.aoColumns.length ; i++ )
3485
+ {
3486
+ if ( oSettings.aoColumns[i].bVisible === true )
3487
+ {
3488
+ iVisible++;
3489
+ }
3490
+
3491
+ if ( i == iMatch )
3492
+ {
3493
+ return oSettings.aoColumns[i].bVisible === true ? iVisible : null;
3494
+ }
3495
+ }
3496
+
3497
+ return null;
3498
+ }
3499
+
3500
+ /*
3501
+ * Function: _fnVisbleColumns
3502
+ * Purpose: Get the number of visible columns
3503
+ * Returns: int:i - the number of visible columns
3504
+ * Inputs: object:oS - dataSlides settings object
3505
+ */
3506
+ function _fnVisbleColumns( oS )
3507
+ {
3508
+ var iVis = 0;
3509
+ for ( var i=0 ; i<oS.aoColumns.length ; i++ )
3510
+ {
3511
+ if ( oS.aoColumns[i].bVisible === true )
3512
+ {
3513
+ iVis++;
3514
+ }
3515
+ }
3516
+ return iVis;
3517
+ }
3518
+
3519
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
3520
+ * Support functions
3521
+ */
3522
+
3523
+ /*
3524
+ * Function: _fnBuildSearchArray
3525
+ * Purpose: Create an array which can be quickly search through
3526
+ * Returns: -
3527
+ * Inputs: object:oSettings - dataSlides settings object
3528
+ * int:iMaster - use the master data array - optional
3529
+ */
3530
+ function _fnBuildSearchArray ( oSettings, iMaster )
3531
+ {
3532
+ /* Clear out the old data */
3533
+ oSettings.asDataSearch.splice( 0, oSettings.asDataSearch.length );
3534
+
3535
+ var aArray = (typeof iMaster != 'undefined' && iMaster == 1) ?
3536
+ oSettings.aiDisplayMaster : oSettings.aiDisplay;
3537
+
3538
+ for ( var i=0, iLen=aArray.length ; i<iLen ; i++ )
3539
+ {
3540
+ oSettings.asDataSearch[i] = '';
3541
+ for ( var j=0, jLen=oSettings.aoColumns.length ; j<jLen ; j++ )
3542
+ {
3543
+ if ( oSettings.aoColumns[j].bSearchable )
3544
+ {
3545
+ var sData = oSettings.aoData[ aArray[i] ]._aData[j];
3546
+ oSettings.asDataSearch[i] += _fnDataToSearch( sData, oSettings.aoColumns[j].sType )+' ';
3547
+ }
3548
+ }
3549
+ }
3550
+ }
3551
+
3552
+ /*
3553
+ * Function: _fnDataToSearch
3554
+ * Purpose: Convert raw data into something that the user can search on
3555
+ * Returns: string: - search string
3556
+ * Inputs: string:sData - data to be modified
3557
+ * string:sType - data type
3558
+ */
3559
+ function _fnDataToSearch ( sData, sType )
3560
+ {
3561
+
3562
+ if ( typeof _oExt.ofnSearch[sType] == "function" )
3563
+ {
3564
+ return _oExt.ofnSearch[sType]( sData );
3565
+ }
3566
+ else if ( sType == "html" )
3567
+ {
3568
+ return sData.replace(/\n/g," ").replace( /<.*?>/g, "" );
3569
+ }
3570
+ else if ( typeof sData == "string" )
3571
+ {
3572
+ return sData.replace(/\n/g," ");
3573
+ }
3574
+ return sData;
3575
+ }
3576
+
3577
+ /*
3578
+ * Function: _fnCalculateEnd
3579
+ * Purpose: Rcalculate the end point based on the start point
3580
+ * Returns: -
3581
+ * Inputs: object:oSettings - dataSlides settings object
3582
+ */
3583
+ function _fnCalculateEnd( oSettings )
3584
+ {
3585
+ if ( oSettings.oFeatures.bPaginate === false )
3586
+ {
3587
+ oSettings._iDisplayEnd = oSettings.aiDisplay.length;
3588
+ }
3589
+ else
3590
+ {
3591
+ /* Set the end point of the display - based on how many elements there are
3592
+ * still to display
3593
+ */
3594
+ if ( oSettings._iDisplayStart + oSettings._iDisplayLength > oSettings.aiDisplay.length ||
3595
+ oSettings._iDisplayLength == -1 )
3596
+ {
3597
+ oSettings._iDisplayEnd = oSettings.aiDisplay.length;
3598
+ }
3599
+ else
3600
+ {
3601
+ oSettings._iDisplayEnd = oSettings._iDisplayStart + oSettings._iDisplayLength;
3602
+ }
3603
+ }
3604
+ }
3605
+
3606
+ /*
3607
+ * Function: _fnConvertToWidth
3608
+ * Purpose: Convert a CSS unit width to pixels (e.g. 2em)
3609
+ * Returns: int:iWidth - width in pixels
3610
+ * Inputs: string:sWidth - width to be converted
3611
+ * node:nParent - parent to get the with for (required for
3612
+ * relative widths) - optional
3613
+ */
3614
+ function _fnConvertToWidth ( sWidth, nParent )
3615
+ {
3616
+ if ( !sWidth || sWidth === null || sWidth === '' )
3617
+ {
3618
+ return 0;
3619
+ }
3620
+
3621
+ if ( typeof nParent == "undefined" )
3622
+ {
3623
+ nParent = document.getElementsByTagName('body')[0];
3624
+ }
3625
+
3626
+ var iWidth;
3627
+ var nTmp = document.createElement( "div" );
3628
+ nTmp.style.width = sWidth;
3629
+
3630
+ nParent.appendChild( nTmp );
3631
+ iWidth = nTmp.offsetWidth;
3632
+ nParent.removeChild( nTmp );
3633
+
3634
+ return ( iWidth );
3635
+ }
3636
+
3637
+ /*
3638
+ * Function: _fnCalculateColumnWidths
3639
+ * Purpose: Calculate the width of columns for the table
3640
+ * Returns: -
3641
+ * Inputs: object:oSettings - dataSlides settings object
3642
+ */
3643
+ function _fnCalculateColumnWidths ( oSettings ){
3644
+ }
3645
+
3646
+ /*
3647
+ * Function: fnGetMaxLenString
3648
+ * Purpose: Get the maximum strlen for each data column
3649
+ * Returns: string: - max strlens for each column
3650
+ * Inputs: object:oSettings - dataSlides settings object
3651
+ * int:iCol - column of interest
3652
+ */
3653
+ function fnGetMaxLenString( oSettings, iCol )
3654
+ {
3655
+ var iMax = 0;
3656
+ var iMaxIndex = -1;
3657
+
3658
+ for ( var i=0 ; i<oSettings.aoData.length ; i++ )
3659
+ {
3660
+ if ( oSettings.aoData[i]._aData[iCol].length > iMax )
3661
+ {
3662
+ iMax = oSettings.aoData[i]._aData[iCol].length;
3663
+ iMaxIndex = i;
3664
+ }
3665
+ }
3666
+
3667
+ if ( iMaxIndex >= 0 )
3668
+ {
3669
+ return oSettings.aoData[iMaxIndex]._aData[iCol];
3670
+ }
3671
+ return '';
3672
+ }
3673
+
3674
+ /*
3675
+ * Function: _fnArrayCmp
3676
+ * Purpose: Compare two arrays
3677
+ * Returns: 0 if match, 1 if length is different, 2 if no match
3678
+ * Inputs: array:aArray1 - first array
3679
+ * array:aArray2 - second array
3680
+ */
3681
+ function _fnArrayCmp( aArray1, aArray2 )
3682
+ {
3683
+ if ( aArray1.length != aArray2.length )
3684
+ {
3685
+ return 1;
3686
+ }
3687
+
3688
+ for ( var i=0 ; i<aArray1.length ; i++ )
3689
+ {
3690
+ if ( aArray1[i] != aArray2[i] )
3691
+ {
3692
+ return 2;
3693
+ }
3694
+ }
3695
+
3696
+ return 0;
3697
+ }
3698
+
3699
+ /*
3700
+ * Function: _fnDetectType
3701
+ * Purpose: Get the sort type based on an input string
3702
+ * Returns: string: - type (defaults to 'string' if no type can be detected)
3703
+ * Inputs: string:sData - data we wish to know the type of
3704
+ * Notes: This function makes use of the dataSlides plugin objct _oExt
3705
+ * (.aTypes) such that new types can easily be added.
3706
+ */
3707
+ function _fnDetectType( sData )
3708
+ {
3709
+ var aTypes = _oExt.aTypes;
3710
+ var iLen = aTypes.length;
3711
+
3712
+ for ( var i=0 ; i<iLen ; i++ )
3713
+ {
3714
+ var sType = aTypes[i]( sData );
3715
+ if ( sType !== null )
3716
+ {
3717
+ return sType;
3718
+ }
3719
+ }
3720
+
3721
+ return 'string';
3722
+ }
3723
+
3724
+ /*
3725
+ * Function: _fnSettingsFromNode
3726
+ * Purpose: Return the settings object for a particular table
3727
+ * Returns: object: Settings object - or null if not found
3728
+ * Inputs: node:nTable - table we are using as a dataSlide
3729
+ */
3730
+ function _fnSettingsFromNode ( nTable )
3731
+ {
3732
+ for ( var i=0 ; i<_aoSettings.length ; i++ )
3733
+ {
3734
+ if ( _aoSettings[i].nTable == nTable )
3735
+ {
3736
+ return _aoSettings[i];
3737
+ }
3738
+ }
3739
+
3740
+ return null;
3741
+ }
3742
+
3743
+ /*
3744
+ * Function: _fnGetDataMaster
3745
+ * Purpose: Return an array with the full table data
3746
+ * Returns: array array:aData - Master data array
3747
+ * Inputs: object:oSettings - dataSlides settings object
3748
+ */
3749
+ function _fnGetDataMaster ( oSettings )
3750
+ {
3751
+ var aData = [];
3752
+ var iLen = oSettings.aoData.length;
3753
+ for ( var i=0 ; i<iLen; i++ )
3754
+ {
3755
+ if ( oSettings.aoData[i] === null )
3756
+ {
3757
+ aData.push( null );
3758
+ }
3759
+ else
3760
+ {
3761
+ aData.push( oSettings.aoData[i]._aData );
3762
+ }
3763
+ }
3764
+ return aData;
3765
+ }
3766
+
3767
+ /*
3768
+ * Function: _fnGetTrNodes
3769
+ * Purpose: Return an array with the TR nodes for the table
3770
+ * Returns: array array:aData - TR array
3771
+ * Inputs: object:oSettings - dataSlides settings object
3772
+ */
3773
+ function _fnGetTrNodes ( oSettings )
3774
+ {
3775
+ var aNodes = [];
3776
+ var iLen = oSettings.aoData.length;
3777
+ for ( var i=0 ; i<iLen ; i++ )
3778
+ {
3779
+ if ( oSettings.aoData[i] === null )
3780
+ {
3781
+ aNodes.push( null );
3782
+ }
3783
+ else
3784
+ {
3785
+ aNodes.push( oSettings.aoData[i].nTr );
3786
+ }
3787
+ }
3788
+ return aNodes;
3789
+ }
3790
+
3791
+ /*
3792
+ * Function: _fnEscapeRegex
3793
+ * Purpose: scape a string stuch that it can be used in a regular expression
3794
+ * Returns: string: - escaped string
3795
+ * Inputs: string:sVal - string to escape
3796
+ */
3797
+ function _fnEscapeRegex ( sVal )
3798
+ {
3799
+ var acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^' ];
3800
+ var reReplace = new RegExp( '(\\' + acEscape.join('|\\') + ')', 'g' );
3801
+ return sVal.replace(reReplace, '\\$1');
3802
+ }
3803
+
3804
+ /*
3805
+ * Function: _fnReOrderIndex
3806
+ * Purpose: Figure out how to reorder a display list
3807
+ * Returns: array int:aiReturn - index list for reordering
3808
+ * Inputs: object:oSettings - dataSlides settings object
3809
+ */
3810
+ function _fnReOrderIndex ( oSettings, sColumns )
3811
+ {
3812
+ var aColumns = sColumns.split(',');
3813
+ var aiReturn = [];
3814
+
3815
+ for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
3816
+ {
3817
+ for ( var j=0 ; j<iLen ; j++ )
3818
+ {
3819
+ if ( oSettings.aoColumns[i].sName == aColumns[j] )
3820
+ {
3821
+ aiReturn.push( j );
3822
+ break;
3823
+ }
3824
+ }
3825
+ }
3826
+
3827
+ return aiReturn;
3828
+ }
3829
+
3830
+ /*
3831
+ * Function: _fnColumnOrdering
3832
+ * Purpose: Get the column ordering that dataSlides expects
3833
+ * Returns: string: - comma separated list of names
3834
+ * Inputs: object:oSettings - dataSlides settings object
3835
+ */
3836
+ function _fnColumnOrdering ( oSettings )
3837
+ {
3838
+ var sNames = '';
3839
+ for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
3840
+ {
3841
+ sNames += oSettings.aoColumns[i].sName+',';
3842
+ }
3843
+ if ( sNames.length == iLen )
3844
+ {
3845
+ return "";
3846
+ }
3847
+ return sNames.slice(0, -1);
3848
+ }
3849
+
3850
+ /*
3851
+ * Function: _fnClearTable
3852
+ * Purpose: Nuke the table
3853
+ * Returns: -
3854
+ * Inputs: object:oSettings - dataSlides settings object
3855
+ */
3856
+ function _fnClearTable( oSettings )
3857
+ {
3858
+ oSettings.aoData.length = 0;
3859
+ oSettings.aiDisplayMaster.length = 0;
3860
+ oSettings.aiDisplay.length = 0;
3861
+ _fnCalculateEnd( oSettings );
3862
+ }
3863
+
3864
+ /*
3865
+ * Function: _fnSaveState
3866
+ * Purpose: Save the state of a table in a cookie such that the page can be reloaded
3867
+ * Returns: -
3868
+ * Inputs: object:oSettings - dataSlides settings object
3869
+ */
3870
+ function _fnSaveState ( oSettings )
3871
+ {
3872
+ if ( !oSettings.oFeatures.bStateSave )
3873
+ {
3874
+ return;
3875
+ }
3876
+
3877
+ /* Store the interesting variables */
3878
+ var i;
3879
+ var sValue = "{";
3880
+ sValue += '"iStart": '+oSettings._iDisplayStart+',';
3881
+ sValue += '"iEnd": '+oSettings._iDisplayEnd+',';
3882
+ sValue += '"iLength": '+oSettings._iDisplayLength+',';
3883
+ sValue += '"sFilter": "'+oSettings.oPreviousSearch.sSearch.replace('"','\\"')+'",';
3884
+ sValue += '"sFilterEsc": '+oSettings.oPreviousSearch.bEscapeRegex+',';
3885
+
3886
+ sValue += '"aaSorting": [ ';
3887
+ for ( i=0 ; i<oSettings.aaSorting.length ; i++ )
3888
+ {
3889
+ sValue += "["+oSettings.aaSorting[i][0]+",'"+oSettings.aaSorting[i][1]+"'],";
3890
+ }
3891
+ sValue = sValue.substring(0, sValue.length-1);
3892
+ sValue += "],";
3893
+
3894
+ sValue += '"aaSearchCols": [ ';
3895
+ for ( i=0 ; i<oSettings.aoPreSearchCols.length ; i++ )
3896
+ {
3897
+ sValue += "['"+oSettings.aoPreSearchCols[i].sSearch.replace("'","\'")+
3898
+ "',"+oSettings.aoPreSearchCols[i].bEscapeRegex+"],";
3899
+ }
3900
+ sValue = sValue.substring(0, sValue.length-1);
3901
+ sValue += "],";
3902
+
3903
+ sValue += '"abVisCols": [ ';
3904
+ for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
3905
+ {
3906
+ sValue += oSettings.aoColumns[i].bVisible+",";
3907
+ }
3908
+ sValue = sValue.substring(0, sValue.length-1);
3909
+ sValue += "]";
3910
+
3911
+ sValue += "}";
3912
+ _fnCreateCookie( "SpryMedia_dataSlides_"+oSettings.sInstance, sValue,
3913
+ oSettings.iCookieDuration );
3914
+ }
3915
+
3916
+ /*
3917
+ * Function: _fnLoadState
3918
+ * Purpose: Attempt to load a saved table state from a cookie
3919
+ * Returns: -
3920
+ * Inputs: object:oSettings - dataSlides settings object
3921
+ * object:oInit - dataSlides init object so we can override settings
3922
+ */
3923
+ function _fnLoadState ( oSettings, oInit )
3924
+ {
3925
+ if ( !oSettings.oFeatures.bStateSave )
3926
+ {
3927
+ return;
3928
+ }
3929
+
3930
+ var oData;
3931
+ var sData = _fnReadCookie( "SpryMedia_dataSlides_"+oSettings.sInstance );
3932
+ if ( sData !== null && sData !== '' )
3933
+ {
3934
+ /* Try/catch the JSON eval - if it is bad then we ignore it */
3935
+ try
3936
+ {
3937
+ /* Use the JSON library for safety - if it is available */
3938
+ if ( typeof JSON == 'object' && typeof JSON.parse == 'function' )
3939
+ {
3940
+ /* DT 1.4.0 used single quotes for a string - JSON.parse doesn't allow this and throws
3941
+ * an error. So for now we can do this. This can be removed in future it is just to
3942
+ * allow the tranfrer to 1.4.1+ to occur
3943
+ */
3944
+ oData = JSON.parse( sData.replace(/'/g, '"') );
3945
+ }
3946
+ else
3947
+ {
3948
+ oData = eval( '('+sData+')' );
3949
+ }
3950
+ }
3951
+ catch( e )
3952
+ {
3953
+ return;
3954
+ }
3955
+
3956
+ /* Restore key features */
3957
+ oSettings._iDisplayStart = oData.iStart;
3958
+ oSettings.iInitDisplayStart = oData.iStart;
3959
+ oSettings._iDisplayEnd = oData.iEnd;
3960
+ oSettings._iDisplayLength = oData.iLength;
3961
+ oSettings.oPreviousSearch.sSearch = oData.sFilter;
3962
+ oSettings.aaSorting = oData.aaSorting.slice();
3963
+
3964
+ /* Search filtering - global reference added in 1.4.1 */
3965
+ if ( typeof oData.sFilterEsc != 'undefined' )
3966
+ {
3967
+ oSettings.oPreviousSearch.bEscapeRegex = oData.sFilterEsc;
3968
+ }
3969
+
3970
+ /* Column filtering - added in 1.5.0 beta 6 */
3971
+ if ( typeof oData.aaSearchCols != 'undefined' )
3972
+ {
3973
+ for ( var i=0 ; i<oData.aaSearchCols.length ; i++ )
3974
+ {
3975
+ oSettings.aoPreSearchCols[i] = {
3976
+ "sSearch": oData.aaSearchCols[i][0],
3977
+ "bEscapeRegex": oData.aaSearchCols[i][1]
3978
+ };
3979
+ }
3980
+ }
3981
+
3982
+ /* Column visibility state - added in 1.5.0 beta 10 */
3983
+ if ( typeof oData.abVisCols != 'undefined' )
3984
+ {
3985
+ /* We need to override the settings in oInit for this */
3986
+ if ( typeof oInit.aoColumns == 'undefined' )
3987
+ {
3988
+ oInit.aoColumns = [];
3989
+ }
3990
+
3991
+ for ( i=0 ; i<oData.abVisCols.length ; i++ )
3992
+ {
3993
+ if ( typeof oInit.aoColumns[i] == 'undefined' || oInit.aoColumns[i] === null )
3994
+ {
3995
+ oInit.aoColumns[i] = {};
3996
+ }
3997
+
3998
+ oInit.aoColumns[i].bVisible = oData.abVisCols[i];
3999
+ }
4000
+ }
4001
+ }
4002
+ }
4003
+
4004
+ /*
4005
+ * Function: _fnCreateCookie
4006
+ * Purpose: Create a new cookie with a value to store the state of a table
4007
+ * Returns: -
4008
+ * Inputs: string:sName - name of the cookie to create
4009
+ * string:sValue - the value the cookie should take
4010
+ * int:iSecs - duration of the cookie
4011
+ */
4012
+ function _fnCreateCookie ( sName, sValue, iSecs )
4013
+ {
4014
+ var date = new Date();
4015
+ date.setTime( date.getTime()+(iSecs*1000) );
4016
+
4017
+ /*
4018
+ * Shocking but true - it would appear IE has major issues with having the path being
4019
+ * set to anything but root. We need the cookie to be available based on the path, so we
4020
+ * have to append the pathname to the cookie name. Appalling.
4021
+ */
4022
+ sName += '_'+window.location.pathname.replace(/[\/:]/g,"").toLowerCase();
4023
+
4024
+ document.cookie = sName+"="+sValue+"; expires="+date.toGMTString()+"; path=/";
4025
+ }
4026
+
4027
+ /*
4028
+ * Function: _fnReadCookie
4029
+ * Purpose: Read an old cookie to get a cookie with an old table state
4030
+ * Returns: string: - contents of the cookie - or null if no cookie with that name found
4031
+ * Inputs: string:sName - name of the cookie to read
4032
+ */
4033
+ function _fnReadCookie ( sName )
4034
+ {
4035
+ var sNameEQ = sName +'_'+ window.location.pathname.replace(/[\/:]/g,"").toLowerCase() + "=";
4036
+ var sCookieContents = document.cookie.split(';');
4037
+
4038
+ for( var i=0 ; i<sCookieContents.length ; i++ )
4039
+ {
4040
+ var c = sCookieContents[i];
4041
+
4042
+ while (c.charAt(0)==' ')
4043
+ {
4044
+ c = c.substring(1,c.length);
4045
+ }
4046
+
4047
+ if (c.indexOf(sNameEQ) === 0)
4048
+ {
4049
+ return c.substring(sNameEQ.length,c.length);
4050
+ }
4051
+ }
4052
+ return null;
4053
+ }
4054
+
4055
+ /*
4056
+ * Function: _fnGetUniqueThs
4057
+ * Purpose: Get an array of unique th elements, one for each column
4058
+ * Returns: array node:aReturn - list of unique ths
4059
+ * Inputs: node:nThead - The thead element for the table
4060
+ */
4061
+ function _fnGetUniqueThs ( nThead )
4062
+ {
4063
+ var nTrs = $(nThead).children('.tr');
4064
+
4065
+ /* Nice simple case */
4066
+ if ( nTrs.length == 1 )
4067
+ {
4068
+ return $(nTrs).children('.th');
4069
+ }
4070
+
4071
+ /* Otherwise we need to figure out the layout array to get the nodes */
4072
+ var aLayout = [], aReturn = [];
4073
+ var ROWSPAN = 2, COLSPAN = 3, TDELEM = 4;
4074
+ var i, j, k, iLen, jLen, iColumnShifted;
4075
+ var fnShiftCol = function ( a, i, j ) {
4076
+ while ( typeof a[i][j] != 'undefined' ) {
4077
+ j++;
4078
+ }
4079
+ return j;
4080
+ };
4081
+ var fnAddRow = function ( i ) {
4082
+ if ( typeof aLayout[i] == 'undefined' ) {
4083
+ aLayout[i] = [];
4084
+ }
4085
+ };
4086
+
4087
+ /* Calculate a layout array */
4088
+ for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
4089
+ {
4090
+ fnAddRow( i );
4091
+ var iColumn = 0;
4092
+ var nTds = [];
4093
+
4094
+ for ( j=0, jLen=nTrs[i].childNodes.length ; j<jLen ; j++ )
4095
+ {
4096
+ if ( nTrs[i].childNodes[j].nodeName == "DIV")
4097
+ {
4098
+ nTds.push( nTrs[i].childNodes[j] );
4099
+ }
4100
+ }
4101
+
4102
+ for ( j=0, jLen=nTds.length ; j<jLen ; j++ )
4103
+ {
4104
+ var iColspan = nTds[j].getAttribute('colspan') * 1;
4105
+ var iRowspan = nTds[j].getAttribute('rowspan') * 1;
4106
+
4107
+ if ( !iColspan || iColspan===0 || iColspan===1 )
4108
+ {
4109
+ iColumnShifted = fnShiftCol( aLayout, i, iColumn );
4110
+ aLayout[i][iColumnShifted] = (nTds[j].nodeName=="DIV") ? TDELEM : nTds[j];
4111
+ if ( iRowspan || iRowspan===0 || iRowspan===1 )
4112
+ {
4113
+ for ( k=1 ; k<iRowspan ; k++ )
4114
+ {
4115
+ fnAddRow( i+k );
4116
+ aLayout[i+k][iColumnShifted] = ROWSPAN;
4117
+ }
4118
+ }
4119
+ iColumn++;
4120
+ }
4121
+ else
4122
+ {
4123
+ iColumnShifted = fnShiftCol( aLayout, i, iColumn );
4124
+ for ( k=0 ; k<iColspan ; k++ )
4125
+ {
4126
+ aLayout[i][iColumnShifted+k] = COLSPAN;
4127
+ }
4128
+ iColumn += iColspan;
4129
+ }
4130
+ }
4131
+ }
4132
+
4133
+ /* Convert the layout array into a node array
4134
+ * Note the use of aLayout[0] in the outloop, we want the outer loop to occur the same
4135
+ * number of times as there are columns. Unusual having nested loops this way around
4136
+ * but is what we need here.
4137
+ */
4138
+ for ( i=0, iLen=aLayout[0].length ; i<iLen ; i++ )
4139
+ {
4140
+ for ( j=0, jLen=aLayout.length ; j<jLen ; j++ )
4141
+ {
4142
+ if ( typeof aLayout[j][i] == 'object' )
4143
+ {
4144
+ aReturn.push( aLayout[j][i] );
4145
+ }
4146
+ }
4147
+ }
4148
+
4149
+ return aReturn;
4150
+ }
4151
+
4152
+ /*
4153
+ * Function: _fnMap
4154
+ * Purpose: See if a property is defined on one object, if so assign it to the other object
4155
+ * Returns: - (done by reference)
4156
+ * Inputs: object:oRet - target object
4157
+ * object:oSrc - source object
4158
+ * string:sName - property
4159
+ * string:sMappedName - name to map too - optional, sName used if not given
4160
+ */
4161
+ function _fnMap( oRet, oSrc, sName, sMappedName )
4162
+ {
4163
+ if ( typeof sMappedName == 'undefined' )
4164
+ {
4165
+ sMappedName = sName;
4166
+ }
4167
+ if ( typeof oSrc[sName] != 'undefined' )
4168
+ {
4169
+ oRet[sMappedName] = oSrc[sName];
4170
+ }
4171
+ }
4172
+
4173
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
4174
+ * API
4175
+ *
4176
+ * I'm not overly happy with this solution - I'd much rather that there was a way of getting
4177
+ * a list of all the private functions and do what we need to dynamically - but that doesn't
4178
+ * appear to be possible. Bonkers. A better solution would be to provide a 'bind' type object
4179
+ * To do - bind type method in DTs 1.6.
4180
+ */
4181
+ this.oApi._fnInitalise = _fnInitalise;
4182
+ this.oApi._fnLanguageProcess = _fnLanguageProcess;
4183
+ this.oApi._fnAddColumn = _fnAddColumn;
4184
+ this.oApi._fnAddData = _fnAddData;
4185
+ this.oApi._fnGatherData = _fnGatherData;
4186
+ this.oApi._fnDrawHead = _fnDrawHead;
4187
+ this.oApi._fnDraw = _fnDraw;
4188
+ this.oApi._fnAjaxUpdate = _fnAjaxUpdate;
4189
+ this.oApi._fnAddOptionsHtml = _fnAddOptionsHtml;
4190
+ this.oApi._fnFeatureHtmlFilter = _fnFeatureHtmlFilter;
4191
+ this.oApi._fnFeatureHtmlInfo = _fnFeatureHtmlInfo;
4192
+ this.oApi._fnFeatureHtmlPaginate = _fnFeatureHtmlPaginate;
4193
+ this.oApi._fnFeatureHtmlLength = _fnFeatureHtmlLength;
4194
+ this.oApi._fnFeatureHtmlProcessing = _fnFeatureHtmlProcessing;
4195
+ this.oApi._fnProcessingDisplay = _fnProcessingDisplay;
4196
+ this.oApi._fnFilterComplete = _fnFilterComplete;
4197
+ this.oApi._fnFilterColumn = _fnFilterColumn;
4198
+ this.oApi._fnFilter = _fnFilter;
4199
+ this.oApi._fnSortingClasses = _fnSortingClasses;
4200
+ this.oApi._fnVisibleToColumnIndex = _fnVisibleToColumnIndex;
4201
+ this.oApi._fnColumnIndexToVisible = _fnColumnIndexToVisible;
4202
+ this.oApi._fnVisbleColumns = _fnVisbleColumns;
4203
+ this.oApi._fnBuildSearchArray = _fnBuildSearchArray;
4204
+ this.oApi._fnDataToSearch = _fnDataToSearch;
4205
+ this.oApi._fnCalculateEnd = _fnCalculateEnd;
4206
+ this.oApi._fnConvertToWidth = _fnConvertToWidth;
4207
+ this.oApi._fnCalculateColumnWidths = _fnCalculateColumnWidths;
4208
+ this.oApi._fnArrayCmp = _fnArrayCmp;
4209
+ this.oApi._fnDetectType = _fnDetectType;
4210
+ this.oApi._fnGetDataMaster = _fnGetDataMaster;
4211
+ this.oApi._fnGetTrNodes = _fnGetTrNodes;
4212
+ this.oApi._fnEscapeRegex = _fnEscapeRegex;
4213
+ this.oApi._fnReOrderIndex = _fnReOrderIndex;
4214
+ this.oApi._fnColumnOrdering = _fnColumnOrdering;
4215
+ this.oApi._fnClearTable = _fnClearTable;
4216
+ this.oApi._fnSaveState = _fnSaveState;
4217
+ this.oApi._fnLoadState = _fnLoadState;
4218
+ this.oApi._fnCreateCookie = _fnCreateCookie;
4219
+ this.oApi._fnReadCookie = _fnReadCookie;
4220
+ this.oApi._fnGetUniqueThs = _fnGetUniqueThs;
4221
+
4222
+ /* Want to be able to reference "this" inside the this.each function */
4223
+ var _that = this;
4224
+
4225
+
4226
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
4227
+ * Constructor
4228
+ */
4229
+ return this.each(function()
4230
+ {
4231
+ /* Make a complete and independent copy of the settings object */
4232
+ var oSettings = new classSettings();
4233
+ _aoSettings.push( oSettings );
4234
+
4235
+ var i=0, iLen;
4236
+ var bInitHandedOff = false;
4237
+ var bUsePassedData = false;
4238
+
4239
+ /* Set the id */
4240
+ var sId = this.getAttribute( 'id' );
4241
+ if ( sId !== null )
4242
+ {
4243
+ oSettings.sTableId = sId;
4244
+ oSettings.sInstance = sId;
4245
+ }
4246
+ else
4247
+ {
4248
+ oSettings.sInstance = _oExt._oExternConfig.iNextUnique ++;
4249
+ }
4250
+
4251
+ /* Set the table node */
4252
+ oSettings.nTable = this;
4253
+
4254
+ /* Bind the API functions to the settings, so we can perform actions whenever oSettings is
4255
+ * available
4256
+ */
4257
+ oSettings.oApi = _that.oApi;
4258
+
4259
+ /* Store the features that we have available */
4260
+ if ( typeof oInit != 'undefined' && oInit !== null )
4261
+ {
4262
+ _fnMap( oSettings.oFeatures, oInit, "bPaginate" );
4263
+ _fnMap( oSettings.oFeatures, oInit, "bLengthChange" );
4264
+ _fnMap( oSettings.oFeatures, oInit, "bFilter" );
4265
+ _fnMap( oSettings.oFeatures, oInit, "bSort" );
4266
+ _fnMap( oSettings.oFeatures, oInit, "bInfo" );
4267
+ _fnMap( oSettings.oFeatures, oInit, "bProcessing" );
4268
+ _fnMap( oSettings.oFeatures, oInit, "bAutoWidth" );
4269
+ _fnMap( oSettings.oFeatures, oInit, "bSortClasses" );
4270
+ _fnMap( oSettings.oFeatures, oInit, "bServerSide" );
4271
+ _fnMap( oSettings, oInit, "asStripClasses" );
4272
+ _fnMap( oSettings, oInit, "fnRowCallback" );
4273
+ _fnMap( oSettings, oInit, "fnHeaderCallback" );
4274
+ _fnMap( oSettings, oInit, "fnFooterCallback" );
4275
+ _fnMap( oSettings, oInit, "fnDrawCallback" );
4276
+ _fnMap( oSettings, oInit, "fnInitComplete" );
4277
+ _fnMap( oSettings, oInit, "fnServerData" );
4278
+ _fnMap( oSettings, oInit, "aaSorting" );
4279
+ _fnMap( oSettings, oInit, "aaSortingFixed" );
4280
+ _fnMap( oSettings, oInit, "sPaginationType" );
4281
+ _fnMap( oSettings, oInit, "sAjaxSource" );
4282
+ _fnMap( oSettings, oInit, "sDom", "sDomPositioning" );
4283
+ _fnMap( oSettings, oInit, "oSearch", "oPreviousSearch" );
4284
+ _fnMap( oSettings, oInit, "aoSearchCols", "aoPreSearchCols" );
4285
+ _fnMap( oSettings, oInit, "iDisplayLength", "_iDisplayLength" );
4286
+ _fnMap( oSettings, oInit, "bJQueryUI", "bJUI" );
4287
+
4288
+ if ( typeof oInit.bJQueryUI != 'undefined' )
4289
+ {
4290
+ /* Use the JUI classes object for display. You could clone the oStdClasses object if
4291
+ * you want to have multiple tables with multiple independent classes
4292
+ */
4293
+ oSettings.oClasses = _oExt.oJUIClasses;
4294
+
4295
+ if ( typeof oInit.sDom == 'undefined' )
4296
+ {
4297
+ /* Set the DOM to use a layout suitable for jQuery UI's theming */
4298
+ oSettings.sDomPositioning =
4299
+ '<"fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix"lfr>'+
4300
+ 't'+
4301
+ '<"fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix"ip>';
4302
+ }
4303
+ }
4304
+
4305
+ if ( typeof oInit.iDisplayStart != 'undefined' &&
4306
+ typeof oSettings.iInitDisplayStart == 'undefined' ) {
4307
+ /* Display start point, taking into account the save saving */
4308
+ oSettings.iInitDisplayStart = oInit.iDisplayStart;
4309
+ oSettings._iDisplayStart = oInit.iDisplayStart;
4310
+ }
4311
+
4312
+ /* Must be done after everything which can be overridden by a cookie! */
4313
+ if ( typeof oInit.bStateSave != 'undefined' )
4314
+ {
4315
+ oSettings.oFeatures.bStateSave = oInit.bStateSave;
4316
+ _fnLoadState( oSettings, oInit );
4317
+ }
4318
+
4319
+ if ( typeof oInit.aaData != 'undefined' ) {
4320
+ bUsePassedData = true;
4321
+ }
4322
+
4323
+ /* Backwards compatability */
4324
+ /* aoColumns / aoData - remove at some point... */
4325
+ if ( typeof oInit != 'undefined' && typeof oInit.aoData != 'undefined' )
4326
+ {
4327
+ oInit.aoColumns = oInit.aoData;
4328
+ }
4329
+
4330
+ /* Language definitions */
4331
+ if ( typeof oInit.oLanguage != 'undefined' )
4332
+ {
4333
+ if ( typeof oInit.oLanguage.sUrl != 'undefined' && oInit.oLanguage.sUrl !== "" )
4334
+ {
4335
+ /* Get the language definitions from a file */
4336
+ oSettings.oLanguage.sUrl = oInit.oLanguage.sUrl;
4337
+ $.getJSON( oSettings.oLanguage.sUrl, null, function( json ) {
4338
+ _fnLanguageProcess( oSettings, json, true ); } );
4339
+ bInitHandedOff = true;
4340
+ }
4341
+ else
4342
+ {
4343
+ _fnLanguageProcess( oSettings, oInit.oLanguage, false );
4344
+ }
4345
+ }
4346
+ /* Warning: The _fnLanguageProcess function is async to the remainder of this function due
4347
+ * to the XHR. We use _bInitialised in _fnLanguageProcess() to check this the processing
4348
+ * below is complete. The reason for spliting it like this is optimisation - we can fire
4349
+ * off the XHR (if needed) and then continue processing the data.
4350
+ */
4351
+ }
4352
+
4353
+ /* Add the strip classes now that we know which classes to apply - unless overruled */
4354
+ if ( typeof oInit == 'undefined' || typeof oInit.asStripClasses == 'undefined' )
4355
+ {
4356
+ oSettings.asStripClasses.push( oSettings.oClasses.sStripOdd );
4357
+ oSettings.asStripClasses.push( oSettings.oClasses.sStripEven );
4358
+ }
4359
+
4360
+ /* See if we should load columns automatically or use defined ones - a bit messy this... */
4361
+ var nThead = $('.thead',this);
4362
+ var nThs = nThead.length===0 ? null : _fnGetUniqueThs( nThead[0] );
4363
+ var bUseCols = typeof oInit != 'undefined' && typeof oInit.aoColumns != 'undefined';
4364
+ for ( i=0, iLen=bUseCols ? oInit.aoColumns.length : nThs.length ; i<iLen ; i++ )
4365
+ {
4366
+ var col = bUseCols ? oInit.aoColumns[i] : null;
4367
+ var n = nThs ? nThs[i] : null;
4368
+ _fnAddColumn( oSettings, col, n );
4369
+ }
4370
+
4371
+ /* Sanity check that there is a thead and tfoot. If not let's just create them */
4372
+ if ( $(this).children('.thead').length === 0 )
4373
+ {
4374
+ $(this).append('<div class="thead"></div>');
4375
+ }
4376
+
4377
+ if ( $(this).children('.tbody').length === 0 )
4378
+ {
4379
+ $(this).append('<div class="tbody"></div>');
4380
+ }
4381
+
4382
+ /* Check if there is data passing into the constructor */
4383
+ if ( bUsePassedData )
4384
+ {
4385
+ for ( i=0 ; i<oInit.aaData.length ; i++ )
4386
+ {
4387
+ _fnAddData( oSettings, oInit.aaData[ i ] );
4388
+ }
4389
+ }
4390
+ else
4391
+ {
4392
+ /* Grab the data from the page */
4393
+ _fnGatherData( oSettings );
4394
+ }
4395
+
4396
+ /* Copy the data index array */
4397
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
4398
+
4399
+ /* Calculate sizes for columns */
4400
+ if ( oSettings.oFeatures.bAutoWidth )
4401
+ {
4402
+ _fnCalculateColumnWidths( oSettings );
4403
+ }
4404
+
4405
+ /* Initialisation complete - table can be drawn */
4406
+ oSettings.bInitialised = true;
4407
+
4408
+ /* Check if we need to initialise the table (it might not have been handed off to the
4409
+ * language processor)
4410
+ */
4411
+ if ( bInitHandedOff === false )
4412
+ {
4413
+ _fnInitalise( oSettings );
4414
+ }
4415
+ });
4416
+ };
4417
+ })(jQuery);