pstuteville-scrubyt 0.4.31

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 (520) hide show
  1. data/CHANGELOG +355 -0
  2. data/COPYING +340 -0
  3. data/README.rdoc +121 -0
  4. data/Rakefile +120 -0
  5. data/VERSION +1 -0
  6. data/examples/README.txt +1 -0
  7. data/examples/events/delta/input.html +682 -0
  8. data/examples/events/delta/test.rb +16 -0
  9. data/examples/misc/auto_regex/input.html +22 -0
  10. data/examples/misc/auto_regex/test.rb +14 -0
  11. data/examples/misc/compound_example/advanced/test.rb +11 -0
  12. data/examples/misc/compound_example/advanced/tricky_compound.html +9 -0
  13. data/examples/misc/compound_example/regexp/regexp_compound.html +17 -0
  14. data/examples/misc/compound_example/regexp/test.rb +11 -0
  15. data/examples/misc/compound_example/simple/compound.html +5 -0
  16. data/examples/misc/compound_example/simple/test.rb +11 -0
  17. data/examples/misc/detail_page/detailpage.html +6 -0
  18. data/examples/misc/detail_page/index.html +9 -0
  19. data/examples/misc/detail_page/test.rb +17 -0
  20. data/examples/misc/google/test.rb +39 -0
  21. data/examples/misc/identical_examples/data_extractor_export.rb +12 -0
  22. data/examples/misc/identical_examples/input.html +16 -0
  23. data/examples/misc/identical_examples/test.rb +15 -0
  24. data/examples/misc/immediate_attribute_extraction/data_extractor_export.rb +10 -0
  25. data/examples/misc/immediate_attribute_extraction/input.html +16 -0
  26. data/examples/misc/immediate_attribute_extraction/test.rb +14 -0
  27. data/examples/misc/multiple_examples/input.html +7 -0
  28. data/examples/misc/multiple_examples/test.rb +22 -0
  29. data/examples/misc/on_click_next/next_page_link.rb +42 -0
  30. data/examples/misc/on_click_next/page_1.html +10 -0
  31. data/examples/misc/on_click_next/page_2.html +10 -0
  32. data/examples/misc/on_click_next/page_3.html +7 -0
  33. data/examples/misc/rubycorner/test.rb +29 -0
  34. data/examples/misc/rubyforge_login/test.rb +30 -0
  35. data/examples/misc/tables/ambigous_records/input.html +17 -0
  36. data/examples/misc/tables/ambigous_records/test.rb +37 -0
  37. data/examples/misc/tables/another_plain_table/input.html +15 -0
  38. data/examples/misc/tables/another_plain_table/test.rb +25 -0
  39. data/examples/misc/tables/complex_table/input.html +45 -0
  40. data/examples/misc/tables/complex_table/test.rb +30 -0
  41. data/examples/misc/tables/grab_rows/input.html +20 -0
  42. data/examples/misc/tables/grab_rows/test.rb +30 -0
  43. data/examples/misc/tables/plain_table/input.html +39 -0
  44. data/examples/misc/tables/plain_table/test.rb +35 -0
  45. data/examples/misc/tables/plain_table_morepages/2.html +38 -0
  46. data/examples/misc/tables/plain_table_morepages/3.html +33 -0
  47. data/examples/misc/tables/plain_table_morepages/input.html +40 -0
  48. data/examples/misc/tables/plain_table_morepages/test.rb +32 -0
  49. data/examples/misc/tables/plain_table_morepages_with_image/2.html +40 -0
  50. data/examples/misc/tables/plain_table_morepages_with_image/3.html +33 -0
  51. data/examples/misc/tables/plain_table_morepages_with_image/images/right_arrow.png +0 -0
  52. data/examples/misc/tables/plain_table_morepages_with_image/input.html +42 -0
  53. data/examples/misc/tables/plain_table_morepages_with_image/test.rb +32 -0
  54. data/examples/misc/tables/test_select_indices/input.html +46 -0
  55. data/examples/misc/tables/test_select_indices/test.rb +55 -0
  56. data/examples/misc/xpath_example_type/input.html +15 -0
  57. data/examples/misc/xpath_example_type/test.rb +18 -0
  58. data/examples/misc/yahoo_finance/test.rb +26 -0
  59. data/examples/social/blog_comment/test.rb +27 -0
  60. data/examples/social/del.icio.us/test.rb +22 -0
  61. data/examples/social/digg/test.rb +37 -0
  62. data/examples/social/dzone/test.rb +28 -0
  63. data/examples/social/linkedin/linkedin.rb +23 -0
  64. data/examples/social/reddit/test.rb +23 -0
  65. data/examples/tones_extractor_export.rb +23 -0
  66. data/examples/webshops/amazon/002-8212888-3924065.html +5311 -0
  67. data/examples/webshops/amazon/002-8212888-3924065_files/0130796034.jpg +0 -0
  68. data/examples/webshops/amazon/002-8212888-3924065_files/020161622X.jpg +0 -0
  69. data/examples/webshops/amazon/002-8212888-3924065_files/0321223675.jpg +0 -0
  70. data/examples/webshops/amazon/002-8212888-3924065_files/0465067107.jpg +0 -0
  71. data/examples/webshops/amazon/002-8212888-3924065_files/0470069155.jpg +0 -0
  72. data/examples/webshops/amazon/002-8212888-3924065_files/0470081201.jpg +0 -0
  73. data/examples/webshops/amazon/002-8212888-3924065_files/0596005253.jpg +0 -0
  74. data/examples/webshops/amazon/002-8212888-3924065_files/0596101325.jpg +0 -0
  75. data/examples/webshops/amazon/002-8212888-3924065_files/0596523696.jpg +0 -0
  76. data/examples/webshops/amazon/002-8212888-3924065_files/0672328844.jpg +0 -0
  77. data/examples/webshops/amazon/002-8212888-3924065_files/0764596861.jpg +0 -0
  78. data/examples/webshops/amazon/002-8212888-3924065_files/0974514055.jpg +0 -0
  79. data/examples/webshops/amazon/002-8212888-3924065_files/0976694069.jpg +0 -0
  80. data/examples/webshops/amazon/002-8212888-3924065_files/0977616606.jpg +0 -0
  81. data/examples/webshops/amazon/002-8212888-3924065_files/0977616614.jpg +0 -0
  82. data/examples/webshops/amazon/002-8212888-3924065_files/0977616630.jpg +0 -0
  83. data/examples/webshops/amazon/002-8212888-3924065_files/1590597362.jpg +0 -0
  84. data/examples/webshops/amazon/002-8212888-3924065_files/1594480060.jpg +0 -0
  85. data/examples/webshops/amazon/002-8212888-3924065_files/1932394699.jpg +0 -0
  86. data/examples/webshops/amazon/002-8212888-3924065_files/2841772101.jpg +0 -0
  87. data/examples/webshops/amazon/002-8212888-3924065_files/amzn-logo-118w.gif +0 -0
  88. data/examples/webshops/amazon/002-8212888-3924065_files/askville-adwidget-bullet.gif +0 -0
  89. data/examples/webshops/amazon/002-8212888-3924065_files/askville-logo-sm-adwidget-white-bg.gif +0 -0
  90. data/examples/webshops/amazon/002-8212888-3924065_files/book_display_on_website-icon.gif +0 -0
  91. data/examples/webshops/amazon/002-8212888-3924065_files/btn-inactive-no-ns.gif +0 -0
  92. data/examples/webshops/amazon/002-8212888-3924065_files/btn-inactive-no.gif +0 -0
  93. data/examples/webshops/amazon/002-8212888-3924065_files/btn-inactive-yes-ns.gif +0 -0
  94. data/examples/webshops/amazon/002-8212888-3924065_files/btn-inactive-yes.gif +0 -0
  95. data/examples/webshops/amazon/002-8212888-3924065_files/btn-no-tiny.gif +0 -0
  96. data/examples/webshops/amazon/002-8212888-3924065_files/btn-yes-tiny.gif +0 -0
  97. data/examples/webshops/amazon/002-8212888-3924065_files/buybox-button-find-gifts-a.gif +0 -0
  98. data/examples/webshops/amazon/002-8212888-3924065_files/c7y_badge_rn_1.gif +0 -0
  99. data/examples/webshops/amazon/002-8212888-3924065_files/cap-a9-3.gif +0 -0
  100. data/examples/webshops/amazon/002-8212888-3924065_files/drop-down-icon-small-arrow.gif +0 -0
  101. data/examples/webshops/amazon/002-8212888-3924065_files/endcap-a9-go-2.gif +0 -0
  102. data/examples/webshops/amazon/002-8212888-3924065_files/gb-open-new.gif +0 -0
  103. data/examples/webshops/amazon/002-8212888-3924065_files/gc-logo-popover-a.gif +0 -0
  104. data/examples/webshops/amazon/002-8212888-3924065_files/gift-cert-roto-pop-a.gif +0 -0
  105. data/examples/webshops/amazon/002-8212888-3924065_files/go-button-books.gif +0 -0
  106. data/examples/webshops/amazon/002-8212888-3924065_files/go-button.gif +0 -0
  107. data/examples/webshops/amazon/002-8212888-3924065_files/go-orange-trans.gif +0 -0
  108. data/examples/webshops/amazon/002-8212888-3924065_files/go_button_photo.gif +0 -0
  109. data/examples/webshops/amazon/002-8212888-3924065_files/logo-off.gif +0 -0
  110. data/examples/webshops/amazon/002-8212888-3924065_files/n2CoreLibs-events-18134.js +1407 -0
  111. data/examples/webshops/amazon/002-8212888-3924065_files/n2CoreLibs-n2v1-57871.css +364 -0
  112. data/examples/webshops/amazon/002-8212888-3924065_files/n2CoreLibs-simplePopover-41153.js +749 -0
  113. data/examples/webshops/amazon/002-8212888-3924065_files/n2CoreLibs-utilities-25439.js +1608 -0
  114. data/examples/webshops/amazon/002-8212888-3924065_files/orange-arrow.gif +0 -0
  115. data/examples/webshops/amazon/002-8212888-3924065_files/orange-arrow_002.gif +0 -0
  116. data/examples/webshops/amazon/002-8212888-3924065_files/popover-blurb.gif +0 -0
  117. data/examples/webshops/amazon/002-8212888-3924065_files/powered-by-a9.gif +0 -0
  118. data/examples/webshops/amazon/002-8212888-3924065_files/stars-3-5.gif +0 -0
  119. data/examples/webshops/amazon/002-8212888-3924065_files/stars-4-0.gif +0 -0
  120. data/examples/webshops/amazon/002-8212888-3924065_files/stars-4-5.gif +0 -0
  121. data/examples/webshops/amazon/002-8212888-3924065_files/stars-5-0.gif +0 -0
  122. data/examples/webshops/amazon/002-8212888-3924065_files/tagline-adwidget.gif +0 -0
  123. data/examples/webshops/amazon/002-8212888-3924065_files/topnav-cart.gif +0 -0
  124. data/examples/webshops/amazon/002-8212888-3924065_files/transparent-pixel.gif +0 -0
  125. data/examples/webshops/amazon/002-8212888-3924065_files/transparent-pixel_002.gif +0 -0
  126. data/examples/webshops/amazon/test.rb +27 -0
  127. data/examples/webshops/amazon-online/test.rb +34 -0
  128. data/examples/webshops/barnes_and_noble/test.rb +32 -0
  129. data/examples/webshops/barnes_offline/barnes_and_noble.html +115 -0
  130. data/examples/webshops/barnes_offline/barnes_and_noble_files/10964080.gif +0 -0
  131. data/examples/webshops/barnes_offline/barnes_and_noble_files/10999676.gif +0 -0
  132. data/examples/webshops/barnes_offline/barnes_and_noble_files/11018492.gif +0 -0
  133. data/examples/webshops/barnes_offline/barnes_and_noble_files/11656534.gif +0 -0
  134. data/examples/webshops/barnes_offline/barnes_and_noble_files/11985045.gif +0 -0
  135. data/examples/webshops/barnes_offline/barnes_and_noble_files/12052378.gif +0 -0
  136. data/examples/webshops/barnes_offline/barnes_and_noble_files/12138286.gif +0 -0
  137. data/examples/webshops/barnes_offline/barnes_and_noble_files/12533212.gif +0 -0
  138. data/examples/webshops/barnes_offline/barnes_and_noble_files/12533268.gif +0 -0
  139. data/examples/webshops/barnes_offline/barnes_and_noble_files/9583392.gif +0 -0
  140. data/examples/webshops/barnes_offline/barnes_and_noble_files/SearchProduct.css +626 -0
  141. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin3_gtpointup.gif +0 -0
  142. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin_aboutshipping.gif +0 -0
  143. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin_account.gif +0 -0
  144. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin_colon.gif +0 -0
  145. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin_giftreminder.gif +0 -0
  146. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin_help.gif +0 -0
  147. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin_orderstatus.gif +0 -0
  148. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin_wishlist.gif +0 -0
  149. data/examples/webshops/barnes_offline/barnes_and_noble_files/bg.gif +0 -0
  150. data/examples/webshops/barnes_offline/barnes_and_noble_files/btnGoGrn.gif +0 -0
  151. data/examples/webshops/barnes_offline/barnes_and_noble_files/cleardot.gif +0 -0
  152. data/examples/webshops/barnes_offline/barnes_and_noble_files/cleardot_002.gif +0 -0
  153. data/examples/webshops/barnes_offline/barnes_and_noble_files/dot4.gif +0 -0
  154. data/examples/webshops/barnes_offline/barnes_and_noble_files/dotGold20.gif +0 -0
  155. data/examples/webshops/barnes_offline/barnes_and_noble_files/hdCantFind.gif +0 -0
  156. data/examples/webshops/barnes_offline/barnes_and_noble_files/hdSearchResults.gif +0 -0
  157. data/examples/webshops/barnes_offline/barnes_and_noble_files/hgg_tab_home_cold.gif +0 -0
  158. data/examples/webshops/barnes_offline/barnes_and_noble_files/hgg_tab_toy_cold.gif +0 -0
  159. data/examples/webshops/barnes_offline/barnes_and_noble_files/iframeKMP.js +172 -0
  160. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2.html +25 -0
  161. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2_data/070226_mc_lnav_search.gif +0 -0
  162. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2_data/XmlUtil.js +199 -0
  163. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2_data/XslStyleSheet.js +1 -0
  164. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2_data/kmp_gen.css +81 -0
  165. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2_data/product-preview-core.js +337 -0
  166. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2_data/product-preview.css +36 -0
  167. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2_data/productpreview.js +11 -0
  168. data/examples/webshops/barnes_offline/barnes_and_noble_files/linePagination.gif +0 -0
  169. data/examples/webshops/barnes_offline/barnes_and_noble_files/logo_bn05.gif +0 -0
  170. data/examples/webshops/barnes_offline/barnes_and_noble_files/navbar.js +34 -0
  171. data/examples/webshops/barnes_offline/barnes_and_noble_files/navbar_06.css +136 -0
  172. data/examples/webshops/barnes_offline/barnes_and_noble_files/popup_open.js +116 -0
  173. data/examples/webshops/barnes_offline/barnes_and_noble_files/qsearch3_vline_dots.gif +0 -0
  174. data/examples/webshops/barnes_offline/barnes_and_noble_files/qsearch4_search.gif +0 -0
  175. data/examples/webshops/barnes_offline/barnes_and_noble_files/qsearch_AdvSearch.jpg +0 -0
  176. data/examples/webshops/barnes_offline/barnes_and_noble_files/subnav_colon.gif +0 -0
  177. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_Bookclubs_cold.gif +0 -0
  178. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_bnjr_cold.gif +0 -0
  179. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_books_hot.gif +0 -0
  180. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_dvd_cold.gif +0 -0
  181. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_giftcards_cold.gif +0 -0
  182. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_home_cold.gif +0 -0
  183. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_member_cc_cold.gif +0 -0
  184. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_music_cold.gif +0 -0
  185. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_pipe.gif +0 -0
  186. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_textbooksonly_cold.gif +0 -0
  187. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_usedoop_cold.gif +0 -0
  188. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_videogames_cold.gif +0 -0
  189. data/examples/webshops/barnes_offline/barnes_and_noble_files/toppromo3_rule.gif +0 -0
  190. data/examples/webshops/barnes_offline/barnes_and_noble_files/toppromo_fastfree05.gif +0 -0
  191. data/examples/webshops/barnes_offline/barnes_and_noble_files/vcart_btn_checkout.gif +0 -0
  192. data/examples/webshops/barnes_offline/barnes_and_noble_files/vcart_icon_cart.gif +0 -0
  193. data/examples/webshops/barnes_offline/barnes_and_noble_files/vcart_topbot_rule.gif +0 -0
  194. data/examples/webshops/barnes_offline/barnes_and_noble_files/visualcart_prodid.js +401 -0
  195. data/examples/webshops/barnes_offline/test.rb +30 -0
  196. data/examples/webshops/buydig/2_files/03AA1BB9089A4A6A92CF23F280D664EB.jpg +0 -0
  197. data/examples/webshops/buydig/2_files/1008.gif +0 -0
  198. data/examples/webshops/buydig/2_files/1013.gif +0 -0
  199. data/examples/webshops/buydig/2_files/1020.gif +0 -0
  200. data/examples/webshops/buydig/2_files/106CF2FB84B446518397517C3E6D5AD8.jpg +0 -0
  201. data/examples/webshops/buydig/2_files/13-www.gif +0 -0
  202. data/examples/webshops/buydig/2_files/1E9BB2E56AB145FC9D6EF952703AF476.jpg +0 -0
  203. data/examples/webshops/buydig/2_files/1FCDFBE85CDB4D429EC2C8CB24D20457.jpg +0 -0
  204. data/examples/webshops/buydig/2_files/1pix.gif +0 -0
  205. data/examples/webshops/buydig/2_files/2014.gif +0 -0
  206. data/examples/webshops/buydig/2_files/2089.gif +0 -0
  207. data/examples/webshops/buydig/2_files/24992_medal.gif +0 -0
  208. data/examples/webshops/buydig/2_files/24BBCBA1397F4DDCBBBBE8456D6D6E5B.jpg +0 -0
  209. data/examples/webshops/buydig/2_files/281F8A6019B140F38DFD45EB7B69B0FB.jpg +0 -0
  210. data/examples/webshops/buydig/2_files/2975F866CB2149F7ACBC559C8E24E304.jpg +0 -0
  211. data/examples/webshops/buydig/2_files/316FC9256DC9460ABC3C5ECAF6C60286.jpg +0 -0
  212. data/examples/webshops/buydig/2_files/50569327D8B94252B95E449AE470E505.jpg +0 -0
  213. data/examples/webshops/buydig/2_files/519CDAB404FA4543B76B5F281468ACBF.jpg +0 -0
  214. data/examples/webshops/buydig/2_files/57D6146419A647BA89C96AF0B5CAB03C.jpg +0 -0
  215. data/examples/webshops/buydig/2_files/58E3F988E184448B8C0A59874AE123A8.jpg +0 -0
  216. data/examples/webshops/buydig/2_files/5E5B10197A4E4C9B9ECCD6309DBE4C54.jpg +0 -0
  217. data/examples/webshops/buydig/2_files/609A249177D04065B37B9161CB0BC92D.jpg +0 -0
  218. data/examples/webshops/buydig/2_files/676CEE8E53C2445982E991871B4DF613.jpg +0 -0
  219. data/examples/webshops/buydig/2_files/712BA08FAB524A31A76ABB9E2009FF8E.jpg +0 -0
  220. data/examples/webshops/buydig/2_files/734BD08D7A5049339393166491D09D21.jpg +0 -0
  221. data/examples/webshops/buydig/2_files/751E72B7003343248497FE6905F80787.jpg +0 -0
  222. data/examples/webshops/buydig/2_files/76493D4F02F14EF7B5886510604C7BB4.jpg +0 -0
  223. data/examples/webshops/buydig/2_files/79521E251278486DB29529C60C9D012A.jpg +0 -0
  224. data/examples/webshops/buydig/2_files/9C9AF82AC3B54BDC8C705278B50FDFD6.jpg +0 -0
  225. data/examples/webshops/buydig/2_files/BC3FD8307B9948FDB7EEF156D8629C37.jpg +0 -0
  226. data/examples/webshops/buydig/2_files/C0DD4574765047D1836F505E69DC8AE5.jpg +0 -0
  227. data/examples/webshops/buydig/2_files/C143F48515274A44B04F4B3E46306BD2.jpg +0 -0
  228. data/examples/webshops/buydig/2_files/C6B02E88F729464699DB275D140F4563.jpg +0 -0
  229. data/examples/webshops/buydig/2_files/CE334D6206DB4FA9AFDF339AEF0AF50F.jpg +0 -0
  230. data/examples/webshops/buydig/2_files/D66AE0DC865A4021AB300ED3A0C4CD11.jpg +0 -0
  231. data/examples/webshops/buydig/2_files/DEA2EC2093DC474D96B651068576DAE5.jpg +0 -0
  232. data/examples/webshops/buydig/2_files/F547677D83844042BF13A4BE6523BB50.jpg +0 -0
  233. data/examples/webshops/buydig/2_files/Rbbbonlineseal.gif +0 -0
  234. data/examples/webshops/buydig/2_files/TopSellers_bottom.gif +0 -0
  235. data/examples/webshops/buydig/2_files/TopSellers_ttl.gif +0 -0
  236. data/examples/webshops/buydig/2_files/addToFavorites_ttl.gif +0 -0
  237. data/examples/webshops/buydig/2_files/banner_CorporateSales.gif +0 -0
  238. data/examples/webshops/buydig/2_files/banner_Shipping.gif +0 -0
  239. data/examples/webshops/buydig/2_files/bizratehonoree.gif +0 -0
  240. data/examples/webshops/buydig/2_files/btn_submit.gif +0 -0
  241. data/examples/webshops/buydig/2_files/checkFlash.js +110 -0
  242. data/examples/webshops/buydig/2_files/checkFlash2.js +109 -0
  243. data/examples/webshops/buydig/2_files/cnetcertified.gif +0 -0
  244. data/examples/webshops/buydig/2_files/credPriceGrabber.gif +0 -0
  245. data/examples/webshops/buydig/2_files/credShopping.gif +0 -0
  246. data/examples/webshops/buydig/2_files/credential_paypal.gif +0 -0
  247. data/examples/webshops/buydig/2_files/credentials.gif +0 -0
  248. data/examples/webshops/buydig/2_files/dealtime.gif +0 -0
  249. data/examples/webshops/buydig/2_files/dvxstyle.css +754 -0
  250. data/examples/webshops/buydig/2_files/footer_021306_1_v1.gif +0 -0
  251. data/examples/webshops/buydig/2_files/func.js +132 -0
  252. data/examples/webshops/buydig/2_files/getseal +1 -0
  253. data/examples/webshops/buydig/2_files/help.gif +0 -0
  254. data/examples/webshops/buydig/2_files/home.gif +0 -0
  255. data/examples/webshops/buydig/2_files/java.js +155 -0
  256. data/examples/webshops/buydig/2_files/leftnv_help.gif +0 -0
  257. data/examples/webshops/buydig/2_files/logo.gif +0 -0
  258. data/examples/webshops/buydig/2_files/logo2.gif +0 -0
  259. data/examples/webshops/buydig/2_files/logo3.gif +0 -0
  260. data/examples/webshops/buydig/2_files/main.js +227 -0
  261. data/examples/webshops/buydig/2_files/mastercard_secured.gif +0 -0
  262. data/examples/webshops/buydig/2_files/newsBox_bkg.jpg +0 -0
  263. data/examples/webshops/buydig/2_files/newsBox_bottom.jpg +0 -0
  264. data/examples/webshops/buydig/2_files/newsBox_text.gif +0 -0
  265. data/examples/webshops/buydig/2_files/newsBox_ttl.jpg +0 -0
  266. data/examples/webshops/buydig/2_files/noimage75.gif +0 -0
  267. data/examples/webshops/buydig/2_files/orangeleftfrmbtm.gif +0 -0
  268. data/examples/webshops/buydig/2_files/pixel153.gif +0 -0
  269. data/examples/webshops/buydig/2_files/rightnv_bottom.gif +0 -0
  270. data/examples/webshops/buydig/2_files/search_btn_off.gif +0 -0
  271. data/examples/webshops/buydig/2_files/search_c1.gif +0 -0
  272. data/examples/webshops/buydig/2_files/search_c2.gif +0 -0
  273. data/examples/webshops/buydig/2_files/search_c3.gif +0 -0
  274. data/examples/webshops/buydig/2_files/search_c4.gif +0 -0
  275. data/examples/webshops/buydig/2_files/search_down.gif +0 -0
  276. data/examples/webshops/buydig/2_files/search_left.gif +0 -0
  277. data/examples/webshops/buydig/2_files/search_right.gif +0 -0
  278. data/examples/webshops/buydig/2_files/search_top.gif +0 -0
  279. data/examples/webshops/buydig/2_files/siteLinks_bottom.gif +0 -0
  280. data/examples/webshops/buydig/2_files/siteLinks_bullet.gif +0 -0
  281. data/examples/webshops/buydig/2_files/siteLinks_ttl.gif +0 -0
  282. data/examples/webshops/buydig/2_files/spacer.gif +0 -0
  283. data/examples/webshops/buydig/2_files/style.js +45 -0
  284. data/examples/webshops/buydig/2_files/styles.html +33 -0
  285. data/examples/webshops/buydig/2_files/track_orders.jpg +0 -0
  286. data/examples/webshops/buydig/2_files/urchin +534 -0
  287. data/examples/webshops/buydig/2_files/verified_by_visa.gif +0 -0
  288. data/examples/webshops/buydig/2_files/welcome.gif +0 -0
  289. data/examples/webshops/buydig/2_files/welcome_ttl.gif +0 -0
  290. data/examples/webshops/buydig/2_files/yahoologo.gif +0 -0
  291. data/examples/webshops/buydig/input.html +1194 -0
  292. data/examples/webshops/buydig/test.rb +31 -0
  293. data/examples/webshops/ebay/test.rb +32 -0
  294. data/examples/webshops/finewines_offline/_finewines.html +1739 -0
  295. data/examples/webshops/finewines_offline/_finewines_cut.html +371 -0
  296. data/examples/webshops/finewines_offline/_finewines_files/011064.jpg +0 -0
  297. data/examples/webshops/finewines_offline/_finewines_files/012674.jpg +0 -0
  298. data/examples/webshops/finewines_offline/_finewines_files/013268.jpg +0 -0
  299. data/examples/webshops/finewines_offline/_finewines_files/013300.jpg +0 -0
  300. data/examples/webshops/finewines_offline/_finewines_files/013409.jpg +0 -0
  301. data/examples/webshops/finewines_offline/_finewines_files/014340.jpg +0 -0
  302. data/examples/webshops/finewines_offline/_finewines_files/015073.jpg +0 -0
  303. data/examples/webshops/finewines_offline/_finewines_files/015255.jpg +0 -0
  304. data/examples/webshops/finewines_offline/_finewines_files/015479.jpg +0 -0
  305. data/examples/webshops/finewines_offline/_finewines_files/015487.jpg +0 -0
  306. data/examples/webshops/finewines_offline/_finewines_files/017038.jpg +0 -0
  307. data/examples/webshops/finewines_offline/_finewines_files/017129.jpg +0 -0
  308. data/examples/webshops/finewines_offline/_finewines_files/017145.jpg +0 -0
  309. data/examples/webshops/finewines_offline/_finewines_files/017152.jpg +0 -0
  310. data/examples/webshops/finewines_offline/_finewines_files/017285.jpg +0 -0
  311. data/examples/webshops/finewines_offline/_finewines_files/017392.jpg +0 -0
  312. data/examples/webshops/finewines_offline/_finewines_files/017400.jpg +0 -0
  313. data/examples/webshops/finewines_offline/_finewines_files/019778.jpg +0 -0
  314. data/examples/webshops/finewines_offline/_finewines_files/019786.jpg +0 -0
  315. data/examples/webshops/finewines_offline/_finewines_files/020503.jpg +0 -0
  316. data/examples/webshops/finewines_offline/_finewines_files/021253.jpg +0 -0
  317. data/examples/webshops/finewines_offline/_finewines_files/021279.jpg +0 -0
  318. data/examples/webshops/finewines_offline/_finewines_files/021337.jpg +0 -0
  319. data/examples/webshops/finewines_offline/_finewines_files/021352.jpg +0 -0
  320. data/examples/webshops/finewines_offline/_finewines_files/023002.jpg +0 -0
  321. data/examples/webshops/finewines_offline/_finewines_files/023135.jpg +0 -0
  322. data/examples/webshops/finewines_offline/_finewines_files/023143.jpg +0 -0
  323. data/examples/webshops/finewines_offline/_finewines_files/023788.jpg +0 -0
  324. data/examples/webshops/finewines_offline/_finewines_files/024166.jpg +0 -0
  325. data/examples/webshops/finewines_offline/_finewines_files/024182.jpg +0 -0
  326. data/examples/webshops/finewines_offline/_finewines_files/024216.jpg +0 -0
  327. data/examples/webshops/finewines_offline/_finewines_files/027268.jpg +0 -0
  328. data/examples/webshops/finewines_offline/_finewines_files/027516.jpg +0 -0
  329. data/examples/webshops/finewines_offline/_finewines_files/027862.jpg +0 -0
  330. data/examples/webshops/finewines_offline/_finewines_files/028118.jpg +0 -0
  331. data/examples/webshops/finewines_offline/_finewines_files/028936.jpg +0 -0
  332. data/examples/webshops/finewines_offline/_finewines_files/033894.jpg +0 -0
  333. data/examples/webshops/finewines_offline/_finewines_files/033902.jpg +0 -0
  334. data/examples/webshops/finewines_offline/_finewines_files/033910.jpg +0 -0
  335. data/examples/webshops/finewines_offline/_finewines_files/033936.jpg +0 -0
  336. data/examples/webshops/finewines_offline/_finewines_files/033944.jpg +0 -0
  337. data/examples/webshops/finewines_offline/_finewines_files/033951.jpg +0 -0
  338. data/examples/webshops/finewines_offline/_finewines_files/034553.jpg +0 -0
  339. data/examples/webshops/finewines_offline/_finewines_files/034561.jpg +0 -0
  340. data/examples/webshops/finewines_offline/_finewines_files/232439.jpg +0 -0
  341. data/examples/webshops/finewines_offline/_finewines_files/237834.jpg +0 -0
  342. data/examples/webshops/finewines_offline/_finewines_files/268359.jpg +0 -0
  343. data/examples/webshops/finewines_offline/_finewines_files/289082.jpg +0 -0
  344. data/examples/webshops/finewines_offline/_finewines_files/331603.jpg +0 -0
  345. data/examples/webshops/finewines_offline/_finewines_files/369686.jpg +0 -0
  346. data/examples/webshops/finewines_offline/_finewines_files/420257.jpg +0 -0
  347. data/examples/webshops/finewines_offline/_finewines_files/422014.jpg +0 -0
  348. data/examples/webshops/finewines_offline/_finewines_files/460410.jpg +0 -0
  349. data/examples/webshops/finewines_offline/_finewines_files/480533.jpg +0 -0
  350. data/examples/webshops/finewines_offline/_finewines_files/556795.jpg +0 -0
  351. data/examples/webshops/finewines_offline/_finewines_files/597054.jpg +0 -0
  352. data/examples/webshops/finewines_offline/_finewines_files/650606.jpg +0 -0
  353. data/examples/webshops/finewines_offline/_finewines_files/652628.jpg +0 -0
  354. data/examples/webshops/finewines_offline/_finewines_files/653790.jpg +0 -0
  355. data/examples/webshops/finewines_offline/_finewines_files/658450.jpg +0 -0
  356. data/examples/webshops/finewines_offline/_finewines_files/660027.jpg +0 -0
  357. data/examples/webshops/finewines_offline/_finewines_files/660951.jpg +0 -0
  358. data/examples/webshops/finewines_offline/_finewines_files/684514.jpg +0 -0
  359. data/examples/webshops/finewines_offline/_finewines_files/685131.jpg +0 -0
  360. data/examples/webshops/finewines_offline/_finewines_files/686865.jpg +0 -0
  361. data/examples/webshops/finewines_offline/_finewines_files/699330.jpg +0 -0
  362. data/examples/webshops/finewines_offline/_finewines_files/703017.jpg +0 -0
  363. data/examples/webshops/finewines_offline/_finewines_files/703140.jpg +0 -0
  364. data/examples/webshops/finewines_offline/_finewines_files/703850.jpg +0 -0
  365. data/examples/webshops/finewines_offline/_finewines_files/717306.jpg +0 -0
  366. data/examples/webshops/finewines_offline/_finewines_files/900274.jpg +0 -0
  367. data/examples/webshops/finewines_offline/_finewines_files/938225.jpg +0 -0
  368. data/examples/webshops/finewines_offline/_finewines_files/947440.jpg +0 -0
  369. data/examples/webshops/finewines_offline/_finewines_files/951319.jpg +0 -0
  370. data/examples/webshops/finewines_offline/_finewines_files/967893.jpg +0 -0
  371. data/examples/webshops/finewines_offline/_finewines_files/981407.jpg +0 -0
  372. data/examples/webshops/finewines_offline/_finewines_files/981613.jpg +0 -0
  373. data/examples/webshops/finewines_offline/_finewines_files/982421.jpg +0 -0
  374. data/examples/webshops/finewines_offline/_finewines_files/985598.jpg +0 -0
  375. data/examples/webshops/finewines_offline/_finewines_files/986737.jpg +0 -0
  376. data/examples/webshops/finewines_offline/_finewines_files/987503.jpg +0 -0
  377. data/examples/webshops/finewines_offline/_finewines_files/992800.jpg +0 -0
  378. data/examples/webshops/finewines_offline/_finewines_files/VintageslogoEN.gif +0 -0
  379. data/examples/webshops/finewines_offline/_finewines_files/blanc-up.gif +0 -0
  380. data/examples/webshops/finewines_offline/_finewines_files/btn_vintages_latest.gif +0 -0
  381. data/examples/webshops/finewines_offline/_finewines_files/cc_en.gif +0 -0
  382. data/examples/webshops/finewines_offline/_finewines_files/common.js +860 -0
  383. data/examples/webshops/finewines_offline/_finewines_files/drink.gif +0 -0
  384. data/examples/webshops/finewines_offline/_finewines_files/drinkhold.gif +0 -0
  385. data/examples/webshops/finewines_offline/_finewines_files/ec_en.gif +0 -0
  386. data/examples/webshops/finewines_offline/_finewines_files/ev_en.gif +0 -0
  387. data/examples/webshops/finewines_offline/_finewines_files/hold.gif +0 -0
  388. data/examples/webshops/finewines_offline/_finewines_files/index-wines-features.jpg +0 -0
  389. data/examples/webshops/finewines_offline/_finewines_files/indexSTYLE.css +398 -0
  390. data/examples/webshops/finewines_offline/_finewines_files/keyword_search.gif +0 -0
  391. data/examples/webshops/finewines_offline/_finewines_files/mm_menu.js +1 -0
  392. data/examples/webshops/finewines_offline/_finewines_files/nr_en.gif +0 -0
  393. data/examples/webshops/finewines_offline/_finewines_files/ontario_en.gif +0 -0
  394. data/examples/webshops/finewines_offline/_finewines_files/popup.js +81 -0
  395. data/examples/webshops/finewines_offline/_finewines_files/releases_nav.js +229 -0
  396. data/examples/webshops/finewines_offline/_finewines_files/so_en.gif +0 -0
  397. data/examples/webshops/finewines_offline/_finewines_files/spacer.gif +0 -0
  398. data/examples/webshops/finewines_offline/_finewines_files/top.gif +0 -0
  399. data/examples/webshops/finewines_offline/_finewines_files/urchin.js +576 -0
  400. data/examples/webshops/finewines_offline/_finewines_files/wom_en.gif +0 -0
  401. data/examples/webshops/finewines_offline/test.rb +30 -0
  402. data/examples/webshops/us1camera/1_files/1pix.gif +0 -0
  403. data/examples/webshops/us1camera/1_files/1pix_002.gif +0 -0
  404. data/examples/webshops/us1camera/1_files/CnetCertified.gif +0 -0
  405. data/examples/webshops/us1camera/1_files/CyberSource.gif +0 -0
  406. data/examples/webshops/us1camera/1_files/Images50.gif +0 -0
  407. data/examples/webshops/us1camera/1_files/Images50_002.gif +0 -0
  408. data/examples/webshops/us1camera/1_files/Images50_003.gif +0 -0
  409. data/examples/webshops/us1camera/1_files/Images50_004.gif +0 -0
  410. data/examples/webshops/us1camera/1_files/Images50_005.gif +0 -0
  411. data/examples/webshops/us1camera/1_files/Images50_006.gif +0 -0
  412. data/examples/webshops/us1camera/1_files/PriceGrabber.gif +0 -0
  413. data/examples/webshops/us1camera/1_files/QSearch.gif +0 -0
  414. data/examples/webshops/us1camera/1_files/ban-m.jpg +0 -0
  415. data/examples/webshops/us1camera/1_files/banner1.bin +0 -0
  416. data/examples/webshops/us1camera/1_files/banner3.bin +0 -0
  417. data/examples/webshops/us1camera/1_files/block1.jpg +0 -0
  418. data/examples/webshops/us1camera/1_files/block2.jpg +0 -0
  419. data/examples/webshops/us1camera/1_files/block3.jpg +0 -0
  420. data/examples/webshops/us1camera/1_files/block4.jpg +0 -0
  421. data/examples/webshops/us1camera/1_files/block5.jpg +0 -0
  422. data/examples/webshops/us1camera/1_files/block6.jpg +0 -0
  423. data/examples/webshops/us1camera/1_files/bos.js +280 -0
  424. data/examples/webshops/us1camera/1_files/box1.jpg +0 -0
  425. data/examples/webshops/us1camera/1_files/box2.jpg +0 -0
  426. data/examples/webshops/us1camera/1_files/box3.jpg +0 -0
  427. data/examples/webshops/us1camera/1_files/box4.jpg +0 -0
  428. data/examples/webshops/us1camera/1_files/dot.jpg +0 -0
  429. data/examples/webshops/us1camera/1_files/eDevix.gif +0 -0
  430. data/examples/webshops/us1camera/1_files/electronics1.jpg +0 -0
  431. data/examples/webshops/us1camera/1_files/getseal +1 -0
  432. data/examples/webshops/us1camera/1_files/pride.jpg +0 -0
  433. data/examples/webshops/us1camera/1_files/search.jpg +0 -0
  434. data/examples/webshops/us1camera/1_files/sidebutton.jpg +0 -0
  435. data/examples/webshops/us1camera/1_files/sslroilogic.js +49 -0
  436. data/examples/webshops/us1camera/1_files/style.css +1 -0
  437. data/examples/webshops/us1camera/1_files/tl.html +2 -0
  438. data/examples/webshops/us1camera/input.html +548 -0
  439. data/examples/webshops/us1camera/test.rb +37 -0
  440. data/lib/scrubyt/core/navigation/agents/firewatir.rb +285 -0
  441. data/lib/scrubyt/core/navigation/agents/mechanize.rb +315 -0
  442. data/lib/scrubyt/core/navigation/fetch_action.rb +63 -0
  443. data/lib/scrubyt/core/navigation/navigation_actions.rb +107 -0
  444. data/lib/scrubyt/core/scraping/compound_example.rb +30 -0
  445. data/lib/scrubyt/core/scraping/constraint.rb +169 -0
  446. data/lib/scrubyt/core/scraping/constraint_adder.rb +49 -0
  447. data/lib/scrubyt/core/scraping/filters/attribute_filter.rb +14 -0
  448. data/lib/scrubyt/core/scraping/filters/base_filter.rb +112 -0
  449. data/lib/scrubyt/core/scraping/filters/constant_filter.rb +9 -0
  450. data/lib/scrubyt/core/scraping/filters/detail_page_filter.rb +37 -0
  451. data/lib/scrubyt/core/scraping/filters/download_filter.rb +64 -0
  452. data/lib/scrubyt/core/scraping/filters/html_subtree_filter.rb +9 -0
  453. data/lib/scrubyt/core/scraping/filters/regexp_filter.rb +13 -0
  454. data/lib/scrubyt/core/scraping/filters/script_filter.rb +11 -0
  455. data/lib/scrubyt/core/scraping/filters/text_filter.rb +34 -0
  456. data/lib/scrubyt/core/scraping/filters/tree_filter.rb +138 -0
  457. data/lib/scrubyt/core/scraping/pattern.rb +359 -0
  458. data/lib/scrubyt/core/scraping/pre_filter_document.rb +14 -0
  459. data/lib/scrubyt/core/scraping/result_indexer.rb +90 -0
  460. data/lib/scrubyt/core/shared/extractor.rb +171 -0
  461. data/lib/scrubyt/logging.rb +154 -0
  462. data/lib/scrubyt/output/post_processor.rb +139 -0
  463. data/lib/scrubyt/output/result.rb +44 -0
  464. data/lib/scrubyt/output/result_dumper.rb +154 -0
  465. data/lib/scrubyt/output/result_node.rb +145 -0
  466. data/lib/scrubyt/output/scrubyt_result.rb +42 -0
  467. data/lib/scrubyt/utils/compound_example_lookup.rb +50 -0
  468. data/lib/scrubyt/utils/ruby_extensions.rb +85 -0
  469. data/lib/scrubyt/utils/shared_utils.rb +58 -0
  470. data/lib/scrubyt/utils/simple_example_lookup.rb +40 -0
  471. data/lib/scrubyt/utils/xpathutils.rb +202 -0
  472. data/lib/scrubyt.rb +53 -0
  473. data/pkg/scrubyt-0.4.31.gem +0 -0
  474. data/resources/allison/LICENSE +184 -0
  475. data/resources/allison/README +37 -0
  476. data/resources/allison/allison.css +301 -0
  477. data/resources/allison/allison.gif +0 -0
  478. data/resources/allison/allison.js +307 -0
  479. data/resources/allison/allison.rb +287 -0
  480. data/resources/allison/cache/BODY +588 -0
  481. data/resources/allison/cache/CLASS_INDEX +4 -0
  482. data/resources/allison/cache/CLASS_PAGE +1 -0
  483. data/resources/allison/cache/FILE_INDEX +4 -0
  484. data/resources/allison/cache/FILE_PAGE +1 -0
  485. data/resources/allison/cache/FONTS +1 -0
  486. data/resources/allison/cache/FR_INDEX_BODY +1 -0
  487. data/resources/allison/cache/IMGPATH +1 -0
  488. data/resources/allison/cache/INDEX +1 -0
  489. data/resources/allison/cache/JAVASCRIPT +307 -0
  490. data/resources/allison/cache/METHOD_INDEX +4 -0
  491. data/resources/allison/cache/METHOD_LIST +1 -0
  492. data/resources/allison/cache/SRC_PAGE +1 -0
  493. data/resources/allison/cache/STYLE +323 -0
  494. data/resources/allison/cache/URL +1 -0
  495. data/scrubyt.gemspec +609 -0
  496. data/test/blackbox_test.rb +60 -0
  497. data/test/blackbox_tests/basic/multi_root.expected.xml +8 -0
  498. data/test/blackbox_tests/basic/multi_root.rb +6 -0
  499. data/test/blackbox_tests/basic/simple.expected.xml +5 -0
  500. data/test/blackbox_tests/basic/simple.rb +5 -0
  501. data/test/blackbox_tests/basic/three_divs.html +12 -0
  502. data/test/blackbox_tests/detail_page/detail_page_1.html +7 -0
  503. data/test/blackbox_tests/detail_page/detail_page_2.html +7 -0
  504. data/test/blackbox_tests/detail_page/main_page_1.html +5 -0
  505. data/test/blackbox_tests/detail_page/main_page_2.html +6 -0
  506. data/test/blackbox_tests/detail_page/one_detail_page.expected.xml +7 -0
  507. data/test/blackbox_tests/detail_page/one_detail_page.rb +9 -0
  508. data/test/blackbox_tests/detail_page/two_detail_pages.expected.xml +12 -0
  509. data/test/blackbox_tests/detail_page/two_detail_pages.rb +9 -0
  510. data/test/blackbox_tests/next_page/next_page_link.expected.xml +11 -0
  511. data/test/blackbox_tests/next_page/next_page_link.rb +7 -0
  512. data/test/blackbox_tests/next_page/page_1.html +11 -0
  513. data/test/blackbox_tests/next_page/page_2.html +11 -0
  514. data/test/blackbox_tests/next_page/page_3.html +7 -0
  515. data/test/blackbox_tests/next_page/page_list_links.expected.xml +11 -0
  516. data/test/blackbox_tests/next_page/page_list_links.rb +7 -0
  517. data/test/blackbox_tests/next_page/page_list_links.tofix +7 -0
  518. data/todo/backlog.txt +73 -0
  519. data/todo/scenario_ideas.txt +19 -0
  520. metadata +637 -0
@@ -0,0 +1,1608 @@
1
+ //! ################################################################
2
+ //! This file contains both original and merged/adapted code .
3
+ //! Except where indicated, all code is
4
+ //! Copyright (c) 2004 Amazon.com, Inc., and its Affiliates.
5
+ //! All Rights Reserved.
6
+ //! Not to be reused without permission
7
+ //! $Change: 948279 $
8
+ //! $Revision: #29 $
9
+ //! $DateTime: 2006/06/28 15:42:35 $
10
+ if ((typeof gbN2Loaded != 'undefined') && !goN2Initializer.isReady()) {
11
+ window.oTheDoc = document;
12
+ window.oTheBody = oTheDoc.body;
13
+ window.oTheHead = document.getElementsByTagName('head').item(0);
14
+ window.gaTD = {};
15
+ var goN2Dbg = window.goN2Debug;
16
+ goN2Initializer.runThisWhen = function (sWhen, fFn, sComment) {
17
+ if (goN2Dbg) {
18
+ ;
19
+ ;
20
+ }
21
+ if ( (typeof fFn != 'function') || fFn == null) return false;
22
+ sWhen = sWhen.toLowerCase();
23
+ if ( (sWhen =='inbody' && document.body) || this.aEventsRun[sWhen] ){
24
+ fFn();
25
+ } else {
26
+ this.aHandlers[this.aHandlers.length] = { sWhen: sWhen, fFn: fFn, sComment: sComment };
27
+ }
28
+ return true
29
+ };
30
+ goN2Initializer.initializeThis = goN2Initializer.runThisWhen;
31
+ goN2Initializer.run = function (sWhen) {
32
+ sWhen = (typeof sWhen == 'undefined') ? null : sWhen;
33
+ sWhen = sWhen.toLowerCase();
34
+ this.aEventsRun[sWhen] = true;
35
+ if (goN2Dbg) {
36
+ ;//goN2Debug.info("N2Initializer called with " + (sWhen ? "'"+sWhen+"'" : "null"));
37
+ }
38
+ var aH = this.aHandlers;
39
+ var len = aH.length;
40
+ for (var i=0;i<len;i++) {
41
+ var oTmp = aH[i];
42
+ if ((oTmp.bCalled != true) &&
43
+ (oTmp.fFn) &&
44
+ ( (sWhen == null) || (oTmp.sWhen && (oTmp.sWhen == sWhen)))
45
+ ) {
46
+ if (goN2Dbg) {
47
+ ;
48
+ }
49
+ if (oTmp.fFn) {
50
+ oTmp.fFn();
51
+ }
52
+ oTmp.bCalled = true;
53
+ }
54
+ }
55
+ }
56
+ function n2RunEvent(sWhen) {
57
+ goN2Initializer.run(sWhen);
58
+ }
59
+ goN2LibMon.bJSLoaded = false;
60
+ goN2LibMon.bCSSLoaded = false;
61
+ goN2LibMon.nREQUESTLOAD = -2;
62
+ goN2LibMon.nBEGINLOAD = -3;
63
+ goN2LibMon.requestLoad = function (sLibID, sFeatureID) {
64
+ var oTmp = this.aLibs[sLibID];
65
+ if (oTmp) { oTmp.nDuration= this.nREQUESTLOAD; }
66
+ };
67
+ goN2LibMon.beginLoad = function (sLibID, sFeatureID) {
68
+ var oTmp = this.aLibs[sLibID];
69
+ if (oTmp) {
70
+ oTmp.sFeature = sFeatureID;
71
+ oTmp.nBegin = new Date().getTime();
72
+ oTmp.nDuration= this.nBEGINLOAD;
73
+ }
74
+ };
75
+ goN2LibMon.endLoad = function (sLibID, nStatus) {
76
+ var oTmp = this.aLibs[sLibID];
77
+ if (oTmp) {
78
+ oTmp.nDuration = new Date().getTime() - oTmp.nBegin;
79
+ oTmp.bLoaded=true;
80
+ }
81
+ var bALL=this.allLibsLoaded();
82
+ goN2Initializer.run(sLibID+'loaded');
83
+ if (bALL) {
84
+ gbN2Loaded = this.bJSLoaded = true;
85
+ goN2Initializer.run('lastlibraryloaded');
86
+ }
87
+ };
88
+ goN2LibMon.allLibsLoaded = function () {
89
+ var bAllLoaded=true;
90
+ for (var key in this.aLibs) {
91
+ if (this.aLibs[key] && this.aLibs[key].nDuration <0) { bAllLoaded=false; }
92
+ }
93
+ return bAllLoaded;
94
+ };
95
+ goN2LibMon.confirmJSLoaded = goN2LibMon.isJSLoaded = function() { return this.bJSLoaded; };
96
+ goN2LibMon.confirmCSSLoaded = goN2LibMon.isCSSLoaded = function() { return true; };
97
+ function n2LibraryIsLoaded (sLibID) {
98
+ var oTmp = goN2LibMon.aLibs[sLibID];
99
+ if (oTmp)
100
+ return oTmp.bLoaded;
101
+ return false;
102
+ }
103
+ goN2Initializer.isReady = function() {return true;}
104
+ n2RunEvent('n2Loader:safetyNet:loaded')
105
+ }
106
+ if (window.goN2LibMon) goN2LibMon.beginLoad('utilities', 'n2CoreLibs');
107
+ function N2Utilities() {
108
+ this.className = 'N2Utilities';
109
+ this.version = '1.0.1';
110
+ this.revision= '$Revision: #29 $';
111
+ this.initialized = false;
112
+ this.bIsCSS;
113
+ this.bIsW3C;
114
+ this.bIsIE4;
115
+ this.bIsNN4;
116
+ this.bIsIE6CSS;
117
+ this.bIsIE;
118
+ this.bIsSafari;
119
+ this.browser_version;
120
+ //! * **********************************************************************
121
+ //! The following section of this file code was mainly adapted from:
122
+ //! "Dynamic HTML:The Definitive Reference"
123
+ //! 2nd Edition
124
+ //! by Danny Goodman
125
+ //! Published by O'Reilly & Associates ISBN 1-56592-494-0
126
+ //! http://www.oreilly.com
127
+ //! http://www.amazon.com/exec/obidos/tg/detail/-/0596003161/qid=1049505315
128
+ //! Copyright 2002 Danny Goodman. All Rights Reserved.
129
+ //! Some minor changes and additions have been made to suit the
130
+ //! current application requirements and to enhance functionality.
131
+ //! ************************************************************************
132
+ this.initDHTMLAPI = function () {
133
+ if (document.images) {
134
+ this.bIsCSS = (document.body && document.body.style) ? true : false;
135
+ this.bIsW3C = (this.bIsCSS && document.getElementById) ? true : false;
136
+ this.bIsIE4 = (this.bIsCSS && document.all) ? true : false;
137
+ this.bIsNN4 = (document.layers) ? true : false;
138
+ this.bIsIE6CSS = (document.compatMode && document.compatMode.indexOf("CSS1") >= 0) ? true : false;
139
+ this.bIsSafari = (navigator.userAgent.indexOf("AppleWebKit") > -1) ? true : false;
140
+ }
141
+ }
142
+ this.seekLayer = function (oDoc, sName) {
143
+ var elem;
144
+ for (var i = 0; i < oDoc.layers.length; i++) {
145
+ if (oDoc.layers[i].name == sName) {
146
+ elem = oDoc.layers[i];
147
+ break;
148
+ }
149
+ if (oDoc.layers[i].document.layers.length > 0) {
150
+ elem = this.seekLayer(document.layers[i].document, sName);
151
+ }
152
+ }
153
+ return elem;
154
+ }
155
+ this.getRawObject = function (obj) {
156
+ ;
157
+ }
158
+ this._getRawObject = function (obj, bFailureOK) {
159
+ var elem;
160
+ ;
161
+ if (!obj) {
162
+ return null;
163
+ }
164
+ if (typeof obj == "string") {
165
+ if (this.bIsW3C) {
166
+ elem = document.getElementById(obj);
167
+ } else if (this.bIsIE4) {
168
+ elem = document.all(obj);
169
+ } else if (this.bIsNN4) {
170
+ elem = this.seekLayer(document, obj);
171
+ }
172
+ if ( this.isUndefOrNull(elem) && !bFailureOK ) {
173
+ ;
174
+ }
175
+ } else {
176
+ elem = obj;
177
+ }
178
+ return elem;
179
+ }
180
+ this.getObject = function (obj) {
181
+ var elem = this.getElement(obj);
182
+ if (elem && this.bIsCSS) {
183
+ elem = elem.style;
184
+ }
185
+ return elem;
186
+ }
187
+ this.shiftTo = function (obj, x, y) {
188
+ var oStyle = this.getElementStyle(obj);
189
+ if (oStyle) {
190
+ if (this.bIsCSS) {
191
+ var units = (typeof oStyle.left == "string") ? "px" : 0;
192
+ oStyle.left = x + units;
193
+ oStyle.top = y + units;
194
+ } else if (this.bIsNN4) {
195
+ oStyle.moveTo(x,y)
196
+ }
197
+ }
198
+ }
199
+ this.shiftBy = function (obj, deltaX, deltaY) {
200
+ var oStyle = this.getElementStyle(obj);
201
+ if (oStyle) {
202
+ if (this.bIsCSS) {
203
+ var units = (typeof oStyle.left == "string") ? "px" : 0;
204
+ oStyle.left = this.getElementLeft(obj) + deltaX + units;
205
+ oStyle.top = this.getElementTop(obj) + deltaY + units;
206
+ } else if (this.bIsNN4) {
207
+ oStyle.moveBy(deltaX, deltaY);
208
+ }
209
+ }
210
+ }
211
+ this.setZIndex = function (obj, zOrder) {
212
+ var oStyle = this.getElementStyle(obj);
213
+ if (oStyle) { oStyle.zIndex = zOrder; }
214
+ }
215
+ this.setBGColor = function (obj, color) {
216
+ var oStyle = this.getElementStyle(obj);
217
+ if (oStyle) {
218
+ if (this.bIsNN4) {
219
+ oStyle.bgColor = color;
220
+ } else if (this.bIsCSS) {
221
+ oStyle.backgroundColor = color;
222
+ }
223
+ }
224
+ }
225
+ this.show = function (obj) {
226
+ var oStyle = this.getElementStyle(obj);
227
+ if (oStyle) { oStyle.visibility = "visible"; }
228
+ }
229
+ this.hide = function (obj) {
230
+ var oStyle = this.getElementStyle(obj);
231
+ if (oStyle) { oStyle.visibility = "hidden"; }
232
+ }
233
+ this.MOZALPHAMAX = 255./256.;
234
+ this.getAlphaLevel = function (elem) {
235
+ var oElem = this.getElement(elem);
236
+ var ret;
237
+ if (oElem) {
238
+ var style = oElem.style;
239
+ if (oElem.filters && oElem.filters.alpha) {
240
+ ret = oElem.filters.alpha.opacity;
241
+ } else if (style) {
242
+ if (this.isDefined(style.MozOpacity)) {
243
+ var strOpacity = style.MozOpacity;
244
+ if (strOpacity.length > 0) {
245
+ ret = parseFloat(style.MozOpacity);
246
+ if (ret >= this.MOZALPHAMAX && this.isDefined(style.azdMozOpacity)) {
247
+ var saved = parseFloat(style.azdMozOpacity);
248
+ if (saved >= this.MOZALPHAMAX) {
249
+ ret = saved;
250
+ }
251
+ }
252
+ ret = ret * 100;
253
+ }
254
+ } else if (this.isDefined(style.opacity)) {
255
+ ret = (style.opacity.length==0 ? 1 : parseFloat(style.opacity)) * 100;
256
+ } else if (this.isDefined(style.KhtmlOpacity)) {
257
+ ret = (style.KhtmlOpacity.length==0 ? 1 : parseFloat(style.KhtmlOpacity)) * 100;
258
+ }
259
+ }
260
+ }
261
+ if (this.isUndefined(ret)) {
262
+ ret = 100; // presume that no set opacity means opaque
263
+ ;
264
+ }
265
+ return ret;
266
+ }
267
+ this.setAlphaLevel = function (elem, level) {
268
+ level = (level <= 0 ? 0 : (level >= 100 ? 100 : level));
269
+ var oElem = this.getElement(elem);
270
+ ;
271
+ if (oElem) {
272
+ var style = oElem.style
273
+ if (oElem.filters) {
274
+ var filters = oElem.filters;
275
+ if (!filters.alpha) {
276
+ ;
277
+ this.addClass(oElem, "n2Fadable");
278
+ filters = oElem.filters; // object changed by adding a filter
279
+ ;
280
+ }
281
+ if (filters.alpha) {
282
+ filters.alpha.opacity = level;
283
+ } else {
284
+ ;
285
+ }
286
+ } else if (style && this.isDefined(style.MozOpacity)) {
287
+ var reqLevel = level * 0.01;
288
+ var mozLevel = (reqLevel > this.MOZALPHAMAX ? this.MOZALPHAMAX : reqLevel);
289
+ if (mozLevel != reqLevel) {
290
+ ;
291
+ }
292
+ style.MozOpacity = mozLevel;
293
+ style.azdMozOpacity = "" + reqLevel; // store as string (just as MozOpacity is) to get same rounding
294
+ } else if (style && this.isDefined(style.opacity)) {
295
+ var reqLevel = "" + (level * 0.01);
296
+ style.opacity = reqLevel;
297
+ } else if (style && this.isDefined(style.KhtmlOpacity)) {
298
+ var reqLevel = "" + (level * 0.01);
299
+ ret = (style.KhtmlOpacity.length==0 ? 1 : parseFloat(style.KhtmlOpacity)) * 100;
300
+ } else {
301
+ ;
302
+ }
303
+ }
304
+ }
305
+ this.getElementLeft = function (obj) {
306
+ var oElem = this.getElement(obj);
307
+ var result = 0;
308
+ if (oElem) {
309
+ var cssDecl, defaultView = document.defaultView;
310
+ if (defaultView &&
311
+ (typeof defaultView.getComputedStyle == 'function') &&
312
+ (cssDecl=defaultView.getComputedStyle(oElem, null))
313
+ ) {
314
+ result = cssDecl.getPropertyValue("left");
315
+ } else if (oElem.currentStyle) {
316
+ result = oElem.currentStyle.left;
317
+ } else if (oElem.style) {
318
+ result = oElem.style.left;
319
+ } else if (this.bIsNN4) {
320
+ result = oElem.left;
321
+ }
322
+ result = parseInt(result);
323
+ if (isNaN(result)) {
324
+ result = this.getPageElementLeft(oElem);
325
+ }
326
+ }
327
+ return result;
328
+ }
329
+ this.getElementTop = function (obj) {
330
+ var oElem = this.getElement(obj);
331
+ var result = 0;
332
+ if (oElem) {
333
+ var cssDecl, defaultView = document.defaultView;
334
+ if (defaultView &&
335
+ (typeof defaultView.getComputedStyle == 'function') &&
336
+ (cssDecl=defaultView.getComputedStyle(oElem, null))
337
+ ) {
338
+ result = cssDecl.getPropertyValue("top");
339
+ } else if (oElem.currentStyle) {
340
+ result = oElem.currentStyle.top;
341
+ } else if (oElem.style) {
342
+ result = oElem.style.top;
343
+ } else if (this.bIsNN4) {
344
+ result = oElem.top;
345
+ }
346
+ }
347
+ result = parseInt(result);
348
+ if (isNaN(result)) {
349
+ result = this.getPageElementTop(oElem);
350
+ }
351
+ return result;
352
+ }
353
+ this.getElementWidth = function (obj) {
354
+ var oElem = this.getElement(obj);
355
+ var result = 0;
356
+ if (oElem) {
357
+ if (oElem.width && this.isMozilla5()) {
358
+ result = oElem.width;
359
+ } else if (oElem.offsetWidth) {
360
+ result = oElem.offsetWidth;
361
+ } else if (oElem.clip && oElem.clip.width) {
362
+ result = oElem.clip.width;
363
+ } else if (oElem.style && oElem.style.pixelWidth) {
364
+ result = oElem.style.pixelWidth;
365
+ }
366
+ }
367
+ return parseInt(result);
368
+ }
369
+ this.getElementHeight = function (obj) {
370
+ var oElem = this.getElement(obj);
371
+ var result = 0;
372
+ if (oElem) {
373
+ if (oElem.height && this.isMozilla5()) {
374
+ result = oElem.height;
375
+ } else if (oElem.offsetHeight) {
376
+ result = oElem.offsetHeight;
377
+ } else if (oElem.clip && oElem.clip.height) {
378
+ result = oElem.clip.height;
379
+ } else if (oElem.style && oElem.style.pixelHeight) {
380
+ result = oElem.style.pixelHeight;
381
+ }
382
+ }
383
+ return parseInt(result);
384
+ }
385
+ this.getInsideWindowWidth = function () {
386
+ if (window.innerWidth) {
387
+ return window.innerWidth;
388
+ } else if (document.body && document.body.clientWidth) {
389
+ return document.body.clientWidth;
390
+ }
391
+ ;
392
+ return 0;
393
+ }
394
+ this.getInsideWindowHeight = function () {
395
+ if (window.innerHeight) {
396
+ return window.innerHeight;
397
+ } else if (document.body && document.body.clientHeight) {
398
+ return document.body.clientHeight;
399
+ }
400
+ ;
401
+ return 0;
402
+ }
403
+ //! ************************************************************
404
+ //! END CODE derived from "Dynamic HTML:The Definitive Reference"
405
+ //! 2nd Edition
406
+ //! by Danny Goodman
407
+ //! Published by O'Reilly & Associates ISBN 1-56592-494-0
408
+ //! http://www.oreilly.com
409
+ //! Copyright 2002 Danny Goodman. All Rights Reserved.
410
+ //! ################################################################
411
+ //! All the code that follows is Copyright 2003 Amazon.com.
412
+ //! All Rights Reserved.
413
+ //! ************************************************************
414
+ //! Copyright (c) Amazon.com 2003, 2004. All Rights Reserved.
415
+ //! Not to be reused without permission
416
+ //! ################################################################
417
+ this.initialize = function () {
418
+ this.initDHTMLAPI();
419
+ var agid = navigator.userAgent.toLowerCase();
420
+ this.bIsIE = (agid.indexOf("msie") != -1);
421
+ this.bIsGecko = (agid.indexOf("gecko") != -1);
422
+ this.bIsFirefox = (agid.indexOf("firefox") != -1);
423
+ this.browser_version = parseInt(navigator.appVersion);
424
+ this.getRawObject = this._getRawObject; // rest to use the correct fn.
425
+ this.getElement = this._getRawObject;
426
+ this.getElementStyle = this.getObject;
427
+ this.getObjectWidth = this.getElementWidth;
428
+ this.getObjectHeight = this.getElementHeight;
429
+ this.getObjectLeft = this.getElementLeft;
430
+ this.getObjectTop = this.getElementTop;
431
+ this.sAnimationDivID = 'goN2UAnimatedBox'; //WARNING: events.js uses goN2U.sAnimationDivID
432
+ this.bAnimateBoxRunning = false;
433
+ this.initialized = true;
434
+ ;
435
+ }
436
+ this.isIE = function () { return this.bIsIE; }
437
+ this.isW3C = function () { return this.bIsW3C; }
438
+ this.isMozilla5 = function () { return this.bIsGecko && this.browser_version>=5 && !this.bIsSafari; }
439
+ this.isFirefox = function () { return this.bIsFirefox && this.browser_version>=5; }
440
+ this.isSafari = function () { return this.bIsSafari; }
441
+ this.exists = function(obj) {
442
+ return ( !this.isUndefOrNull(this.getElement(obj)) );
443
+ }
444
+ this.display = function (obj, type) {
445
+ var oStyle = this.getElementStyle(obj);
446
+ if (oStyle) {
447
+ if(this.bIsIE || this.isMozilla5())
448
+ oStyle.display = this.isDefined(type) ? type : "block";
449
+ else {
450
+ oStyle.display = "block";
451
+ }
452
+ }
453
+ }
454
+ this.undisplay = function (obj) {
455
+ var oStyle = this.getElementStyle(obj);
456
+ if (oStyle) {
457
+ oStyle.display = 'none';
458
+ }
459
+ }
460
+ this.isDisplayed = function(obj) {
461
+ var oStyle = this.getElementStyle(obj);
462
+ if (oStyle) {
463
+ return oStyle.display != 'none';
464
+ }
465
+ return true;
466
+ }
467
+ this.toggleDisplay = function (obj, type) {
468
+ var oStyle = this.getElementStyle(obj);
469
+ if (oStyle) {
470
+ if (oStyle.display == 'none')
471
+ this.display (obj, type);
472
+ else
473
+ this.undisplay(obj);
474
+ }
475
+ }
476
+ this.toggleDualDisplay = function (obj1, obj2) {
477
+ this.toggleDisplay(obj1);
478
+ this.toggleDisplay(obj2);
479
+ }
480
+ this.getScrollLeft = function() {
481
+ if (document.documentElement.scrollLeft) {
482
+ return document.documentElement.scrollLeft;
483
+ } else {
484
+ return document.body.scrollLeft;
485
+ }
486
+ }
487
+ this.getScrollTop = function() {
488
+ if (document.documentElement.scrollTop) {
489
+ return document.documentElement.scrollTop;
490
+ } else {
491
+ return document.body.scrollTop;
492
+ }
493
+ }
494
+ this.setScrollLeft = function(n) {
495
+ if (document.documentElement.scrollLeft) {
496
+ document.documentElement.scrollLeft = n;
497
+ } else {
498
+ document.body.scrollLeft = n;
499
+ }
500
+ }
501
+ this.setScrollTop = function(n) {
502
+ if (document.documentElement.scrollTop) {
503
+ document.documentElement.scrollTop=n;
504
+ } else {
505
+ document.body.scrollTop=n;
506
+ }
507
+ }
508
+ this.animateScrollTo = function(nTo, nStep, nDelay, nStepInc) {
509
+ var nTop = goN2U.getScrollTop();
510
+ nStepInc = this.isDefined(nStepInc) ? nStepInc : 20;
511
+ nStep = nStep ? nStep+=nStepInc : 20;
512
+ nDelay = nDelay ? nDelay : 25;
513
+ if (nTop > nTo) {
514
+ if (nTop > nTo+(nStep*1.5)) {
515
+ goN2U.setScrollTop(nTop-nStep);
516
+ setTimeout(function() { goN2U.animateScrollTo(nTo, nStep, nDelay, nStepInc); }, nDelay);
517
+ } else {
518
+ goN2U.setScrollTop(nTo);
519
+ }
520
+ } else {
521
+ if (nTop < nTo-(nStep*1.5)) {
522
+ goN2U.setScrollTop(nTop+nStep);
523
+ setTimeout(function() { goN2U.animateScrollTo(nTo, nStep, nDelay, nStepInc); }, nDelay);
524
+ } else {
525
+ goN2U.setScrollTop(nTo);
526
+ }
527
+ }
528
+ }
529
+ this.removeElementById = function(sID) {
530
+ var oElem = document.getElementById(sID);
531
+ if (oElem && oElem.parentNode && oElem.parentNode.removeChild) {
532
+ try {
533
+ oElem.parentNode.removeChild(oElem);
534
+ ;
535
+ } catch (e) {
536
+ ;
537
+ }
538
+ } else {
539
+ ;
540
+ }
541
+ }
542
+ this.adjustBy = function (obj, deltaX, deltaY, deltaW, deltaH) {
543
+ var oStyle = this.getElementStyle(obj);
544
+ if (oStyle) {
545
+ if (this.bIsCSS) {
546
+ var units = (typeof oStyle.left == "string") ? "px" : 0;
547
+ oStyle.left = this.getElementLeft(obj) + deltaX + units;
548
+ oStyle.top = this.getElementTop(obj) + deltaY + units;
549
+ oStyle.width = this.getElementWidth(obj) + deltaW; // + units;
550
+ oStyle.height = this.getElementHeight(obj) + deltaH; // + units;
551
+ } else if (this.bIsNN4) {
552
+ oStyle.moveBy(deltaX, deltaY);
553
+ }
554
+ }
555
+ }
556
+ this.clip = function (obj, nTop, nRight, nBottom, nLeft) {
557
+ var oStyle = this.getElementStyle(obj);
558
+ oStyle.clip = "rect("+nTop+"px, " + nRight + "px, "+nBottom+"px, "+nLeft+"px)";
559
+ }
560
+ this.setContent = function (sID, sHtml, sClass) {
561
+ var relem = this.getElement(sID);
562
+ if (relem) relem.innerHTML = sHtml;
563
+ if (sClass) this.setClass(sID, sClass);
564
+ }
565
+ this.setWidth = function (obj, n) {
566
+ var oStyle = this.getElementStyle(obj);
567
+ if (oStyle) {
568
+ if ((typeof oStyle.width == "string") && (typeof n == "number")) {
569
+ oStyle.width=n+"px";
570
+ } else {
571
+ oStyle.width = n;
572
+ }
573
+ }
574
+ }
575
+ this.setHeight = function (obj, n) {
576
+ var oStyle = this.getElementStyle(obj);
577
+ if (oStyle) {
578
+ if ((typeof oStyle.height == "string") && (typeof n == "number")) {
579
+ oStyle.height=n+"px";
580
+ } else {
581
+ oStyle.height = n;
582
+ }
583
+ }
584
+ }
585
+ this.getScrolledElementTop = function (elem) {
586
+ var top = this.getPageElementTop(elem);
587
+ if (elem) {
588
+ var bod = document.body;
589
+ var docParent = this.getParentElement(elem);
590
+ while (docParent !== null && docParent !== bod) {
591
+ top -= docParent.scrollTop;
592
+ docParent = this.getParentElement(docParent);
593
+ }
594
+ }
595
+ return top;
596
+ }
597
+ this.getScrolledElementLeft = function (elem) {
598
+ var left = this.getPageElementLeft(elem);
599
+ if (elem) {
600
+ var bod = document.body;
601
+ var docParent = this.getParentElement(elem);
602
+ while (docParent !== null && docParent !== bod) {
603
+ left -= docParent.scrollLeft;
604
+ docParent = this.getParentElement(docParent);
605
+ }
606
+ }
607
+ return left;
608
+ }
609
+ this.getPageElementTop = function (elem) {
610
+ var top=0;
611
+ if (elem) {
612
+ top = elem.offsetTop;
613
+ var parentObj = elem.offsetParent;
614
+ while (parentObj != null) {
615
+ if(this.bIsIE) {
616
+ if( (parentObj.tagName != "TABLE") && (parentObj.tagName != "BODY") )
617
+ top += parentObj.clientTop;
618
+ }
619
+ else {
620
+ if(parentObj.tagName == "TABLE") {
621
+ var nParBorder = parseInt(parentObj.border);
622
+ if(isNaN(nParBorder)) {
623
+ var nParFrame = parentObj.getAttribute('frame');
624
+ if(nParFrame != null)
625
+ top += 1;
626
+ } else if(nParBorder > 0) {
627
+ top += nParBorder;
628
+ }
629
+ }
630
+ }
631
+ top += parentObj.offsetTop;
632
+ parentObj = parentObj.offsetParent;
633
+ }
634
+ }
635
+ return top;
636
+ }
637
+ this.getPageElementLeft = function (elem) {
638
+ var left=0;
639
+ if (elem) {
640
+ left = elem.offsetLeft;
641
+ var parentObj = elem.offsetParent;
642
+ while (parentObj != null) {
643
+ if(this.bIsIE) {
644
+ if( (parentObj.tagName != "TABLE") && (parentObj.tagName != "BODY") )
645
+ left += parentObj.clientLeft;
646
+ }
647
+ else {
648
+ if(parentObj.tagName == "TABLE") {
649
+ var nParBorder = parseInt(parentObj.border);
650
+ if(isNaN(nParBorder)) {
651
+ var nParFrame = parentObj.getAttribute('frame');
652
+ if(nParFrame != null)
653
+ left += 1;
654
+ } else if(nParBorder > 0) {
655
+ top += nParBorder;
656
+ }
657
+ }
658
+ }
659
+ left += parentObj.offsetLeft;
660
+ parentObj = parentObj.offsetParent;
661
+ }
662
+ }
663
+ return left;
664
+ }
665
+ this.getParentElement = function (elem) {
666
+ if (elem) {
667
+ if(this.bIsIE) return elem.parentElement;
668
+ return elem.parentNode;
669
+ }
670
+ return null;
671
+ }
672
+ this.elementIsContainedBy = function(elem, elemParent) {
673
+ if (this.isUndefOrNull(elem) || this.isUndefOrNull(elemParent)) {
674
+ return false;
675
+ }
676
+ while (true) {
677
+ if (elem === elemParent) {
678
+ return true;
679
+ }
680
+ var parent = this.getParentElement(elem);
681
+ if (parent === null) {
682
+ return false;
683
+ }
684
+ elem = parent;
685
+ }
686
+ }
687
+ this.classfixup;
688
+ if (document.all) this.classfixup = "className";
689
+ else this.classfixup = "class";
690
+ this.setClass = function (obj, style) {
691
+ var obj = this.getElement (obj);
692
+ ;
693
+ if (obj) obj.setAttribute(this.classfixup, style,0);
694
+ }
695
+ this.getClassX = function (obj) {
696
+ var obj = this.getElement (obj);
697
+ if (obj) return obj.getAttribute(this.classfixup, 0);
698
+ return null;
699
+ }
700
+ this.addComma = function addComma(sNum) {
701
+ if (typeof sNum != "string") sNum = sNum.toString();
702
+ var aV = sNum.split('.');
703
+ sNum = aV[0];
704
+ var p0, p1, len, x=3;
705
+ if (sNum.length >x) {
706
+ for (x=3;(len=sNum.length)>x;x+=4 ) {
707
+ p0 = sNum.substring(0, len-x);
708
+ p1 = sNum.substring(len-x);
709
+ sNum = p0 +',' + p1;
710
+ }
711
+ }
712
+ if (aV[1]>=0) sNum += '.' + aV[1];
713
+ return sNum;
714
+ }
715
+ this.preloadImages = new Array();
716
+ this.preloadImage = function (sImage, id) {
717
+ if (!id) id=this.preloadImages.length;
718
+ if (!this.preloadImages[id]) {
719
+ this.preloadImages[id]=new Image();
720
+ this.preloadImages[id].src=sImage;
721
+ ;
722
+ }
723
+ }
724
+ this.getLinkNameInfo = function (sLinkID, sNameOverride) {
725
+ var oLNI = new N2LinkNameInfo(sLinkID, sNameOverride);
726
+ return (oLNI.getLinkID() ? oLNI : null);
727
+ }
728
+ this.getIFrameDocument = function (id) {
729
+ var oIFrame = this.getElement(id);
730
+ if (oIFrame) {
731
+ if (oIFrame.contentDocument) {
732
+ return oIFrame.contentDocument;
733
+ } else if (oIFrame.contentWindow) {
734
+ return oIFrame.contentWindow.document;
735
+ } else if (oIFrame.document) {
736
+ return oIFrame.document;
737
+ }
738
+ ;
739
+ return null;
740
+ }
741
+ ;
742
+ return null;
743
+ }
744
+ this.getIFrameWindow = function (id) {
745
+ var oIFrame = this.getElement(id);
746
+ if (oIFrame) {
747
+ if (oIFrame.contentWindow) {
748
+ return oIFrame.contentWindow;
749
+ }
750
+ ;
751
+ return null;
752
+ }
753
+ ;
754
+ return null;
755
+ }
756
+ this.n2FlashElement = function (id, styleOn, styleOff, count) {
757
+ n2DoFlashElement (id, styleOn, styleOff, count*2);
758
+ }
759
+ this.n2DoFlashElement = function (id, styleOn, styleOrig, count) {
760
+ count--;
761
+ if (count % 2)
762
+ setClass(id, styleOn);
763
+ else
764
+ setClass(id, styleOrig);
765
+ if (count) {
766
+ setTimeout("n2DoFlashElement('" + id +"','" + styleOn + "','" + styleOrig + "'," + count +")", 500);
767
+ }
768
+ }
769
+ this.animateBox = function (sl, st, sw, sh, fl, ft, fw, fh, nSteps, fnDone, style) {
770
+ var nHInc = parseInt((fl -sl)/nSteps);
771
+ var nVInc = parseInt((ft -st)/nSteps);
772
+ var nWdInc = parseInt((fw-sw)/nSteps);
773
+ var nHtInc = parseInt((fh-sh)/nSteps);
774
+ var o = goN2U.getElement(this.sAnimationDivID);
775
+ if (o && !this.bAnimateBoxRunning) {
776
+ this.bAnimateBoxRunning = true;
777
+ if (style) goN2U.setClass(this.sAnimationDivID, style);
778
+ goN2U.shiftTo(o, sl, st);
779
+ goN2U.show(o);
780
+ goN2U.setWidth(o, sw);
781
+ goN2U.setHeight(o, sh);
782
+ var fn = function() { goN2U._animateBox(goN2U.sAnimationDivID, nHInc, nVInc, nWdInc, nHtInc, nSteps, fnDone); };
783
+ setTimeout(fn, 25);
784
+ } else if (fnDone) {
785
+ fnDone();
786
+ }
787
+ }
788
+ this._animateBox = function (sID, nHInc, nVInc, nWdInc, nHtInc, nSteps, fnDone) {
789
+ goN2U.adjustBy(sID, nHInc, nVInc, nWdInc, nHtInc);
790
+ if (--nSteps >0) {
791
+ var fn = function() { goN2U._animateBox(sID, nHInc, nVInc, nWdInc, nHtInc, nSteps, fnDone); };
792
+ setTimeout(fn, 25);
793
+ } else {
794
+ goN2U.hide(sID);
795
+ if (fnDone) fnDone();
796
+ this.bAnimateBoxRunning = false;
797
+ }
798
+ }
799
+ this.expDivProcessing = false;
800
+ this.expDivSize = 30;
801
+ this.stepDone = true;
802
+ this.toggleDivHeight = function (theDiv, hidableElem, delay, fnDone, displayableElem){
803
+ var oParent = this.getElement(theDiv).parentNode;
804
+ if (oParent.style.display != "none")
805
+ this.collapseDivDual('h', theDiv, hidableElem, delay, fnDone, displayableElem);
806
+ else
807
+ this.expandDivDual('h', theDiv, hidableElem, delay, fnDone, displayableElem);
808
+ }
809
+ this.toggleDivWidth = function (theDiv, hidableElem, delay, fnDone, displayableElem){
810
+ var oParent = this.getElement(theDiv).parentNode;
811
+ if (oParent.style.display != "none")
812
+ this.collapseDivDual('w', theDiv, hidableElem, delay, fnDone, displayableElem);
813
+ else
814
+ this.expandDivDual('w', theDiv, hidableElem, delay, fnDone, displayableElem);
815
+ }
816
+ this.expandDivWidth = function (theDiv, hidableElem, delay, fnDone, displayableElem, bImmediate){
817
+ this.expandDivDual('w', theDiv, hidableElem, delay, fnDone, displayableElem, bImmediate);
818
+ }
819
+ this.expandDivHeight = function (theDiv, hidableElem, delay, fnDone, displayableElem, bImmediate){
820
+ this.expandDivDual('h', theDiv, hidableElem, delay, fnDone, displayableElem, bImmediate);
821
+ }
822
+ this.collapseDivWidth = function (theDiv, hidableElem, delay, fnDone, displayableElem, bImmediate){
823
+ this.collapseDivDual('w', theDiv, hidableElem, delay, fnDone, displayableElem, bImmediate);
824
+ }
825
+ this.collapseDivHeight = function (theDiv, hidableElem, delay, fnDone, displayableElem, bImmediate){
826
+ this.collapseDivDual('h', theDiv, hidableElem, delay, fnDone, displayableElem, bImmediate);
827
+ }
828
+ this.collapseExpandDivsWidth = function (divA, divB, delay){
829
+ this.collapseExpandDivsDual ('w', divA, divB, delay);
830
+ }
831
+ this.collapseExpandDivsHeight = function (divA, divB, delay){
832
+ this.collapseExpandDivsDual ('h', divA, divB, delay);
833
+ }
834
+ this.expandCalcStep = function (h) {
835
+ if (h <40) return h/2;
836
+ if (h <225) return 20; //15
837
+ if (h <900) return parseInt(h/10); // h/15
838
+ return 100; // 60
839
+ }
840
+ this.expandDivDual = function (mode, theDiv, hidableElem, delay, fnDone, displayableElem, bImmediate){
841
+ if (this.expDivProcessing) return;
842
+ this.expDivProcessing = true;
843
+ var theDivObj = this.getElement(theDiv);
844
+ var parentDiv = theDivObj.parentNode;
845
+ if (!parentDiv.id) { parentDiv.id = 'outer_' + theDivObj.id; }
846
+ this.expDivSize=0;
847
+ var maxSize;
848
+ if (mode == 'w' ) {
849
+ this.setWidth(parentDiv, this.expDivSize);
850
+ this.display(parentDiv);
851
+ maxSize = this.getElementWidth(theDivObj);
852
+ } else {
853
+ this.setHeight(parentDiv, this.expDivSize);
854
+ this.display(parentDiv);
855
+ maxSize = this.getElementHeight(theDivObj);
856
+ }
857
+ if (hidableElem) this.undisplay(hidableElem);
858
+ if (displayableElem) { this.display(displayableElem); }
859
+ if (bImmediate) {
860
+ this._expandDualFinal(mode, parentDiv, fnDone);
861
+ } else {
862
+ if (!delay || delay<20) { delay = 20; }
863
+ var step = 4;
864
+ this._expandDual(mode, parentDiv.id, maxSize, delay, step, fnDone, displayableElem);
865
+ }
866
+ }
867
+ this._expandDual = function (mode, parentDiv, maxSize, delay, step, fnDone, displayableElem){
868
+ if(this.expDivSize<maxSize) {
869
+ var nS = this.expDivSize;
870
+ if(nS>20){ step = this.expandCalcStep(maxSize); }
871
+ else if(nS>8) { step = 10; }
872
+ this.expDivSize = Math.min(this.expDivSize+=step, maxSize);
873
+ mode == 'w' ? this.setWidth(parentDiv, this.expDivSize) : this.setHeight(parentDiv, this.expDivSize);
874
+ setTimeout("goN2U._expandDual('"+mode+"','"+parentDiv+"',"+maxSize+","+delay+","+step+","+fnDone+",'"+displayableElem+"');",delay );
875
+ } else{
876
+ this._expandDualFinal(mode, parentDiv, fnDone);
877
+ }
878
+ }
879
+ this._expandDualFinal = function (mode, parentDiv, fnDone){
880
+ mode == 'w' ? this.setWidth(parentDiv, "auto") : this.setHeight(parentDiv, "auto");
881
+ this.expDivSize = 20;
882
+ this.expDivProcessing = false;
883
+ if(fnDone) fnDone();
884
+ }
885
+ this.collapseDivDual = function (mode, theDiv, hidableElem, delay, fnDone, displayableElem, bImmediate){
886
+ if (this.expDivProcessing) return;
887
+ this.expDivProcessing = true;
888
+ var theDivObj = this.getElement(theDiv);
889
+ var parentDiv = theDivObj.parentNode;
890
+ if (!parentDiv.id) { parentDiv.id = 'outer_' + theDivObj.id; }
891
+ if (!delay || delay<20) { delay = 20; }
892
+ this.expDivSize=0;
893
+ var size = (mode == 'w' ? this.getElementWidth(parentDiv) : this.getElementHeight(parentDiv));
894
+ var step = this.expandCalcStep(size);
895
+ if (hidableElem) this.undisplay(hidableElem);
896
+ var end = 0;
897
+ if(displayableElem) {
898
+ this.display(displayableElem,"inline");
899
+ end = (mode == 'w' ? this.getElementWidth(displayableElem) : this.getElementHeight(displayableElem));
900
+ this.undisplay(displayableElem);
901
+ }
902
+ if (bImmediate) {
903
+ this._collapseDualFinal(mode, parentDiv, hidableElem, fnDone, displayableElem);
904
+ } else {
905
+ this._collapseDual(mode, parentDiv.id, hidableElem, delay, step, fnDone, displayableElem, end)
906
+ }
907
+ }
908
+ this._collapseDual = function (mode, parentDiv, hidableElem, delay, step, fnDone, displayableElem, end){
909
+ this.expDivSize = (mode == 'w' ? this.getElementWidth(parentDiv) : this.getElementHeight(parentDiv));
910
+ var nRem = this.expDivSize-end;
911
+ if(nRem>0){
912
+ if(nRem<6){ step = 2; }
913
+ else if(nRem<11){ step = 4; }
914
+ else if(nRem<60){ step = 10; }
915
+ this.expDivSize -= step;
916
+ if (this.expDivSize <end) {
917
+ this.expDivSize = end;
918
+ }
919
+ mode == 'w' ? this.setWidth(parentDiv, this.expDivSize) : this.setHeight(parentDiv, this.expDivSize);
920
+ if (this.expDivSize>end) {
921
+ setTimeout("goN2U._collapseDual('"+mode+"','"+parentDiv+"','"+hidableElem+"',"+delay+","+step+","+fnDone+",'"+displayableElem+"',"+end+");",delay );
922
+ } else {
923
+ this._collapseDualFinal(mode, parentDiv, hidableElem, fnDone, displayableElem);
924
+ }
925
+ } else {
926
+ this._collapseDualFinal(mode, parentDiv, hidableElem, fnDone, displayableElem);
927
+ }
928
+ }
929
+ this._collapseDualFinal = function (mode, parentDiv, hidableElem, fnDone, displayableElem){
930
+ this.undisplay(parentDiv);
931
+ this.expDivProcessing = false;
932
+ if(displayableElem) this.display(displayableElem,"inline");
933
+ if(fnDone) fnDone();
934
+ }
935
+ this.getConfigurationObject = function(sID) {
936
+ var sClassName = 'go' + sID + 'Properties';
937
+ var obj;
938
+ if((typeof window[sClassName] != 'undefined') && (typeof window[sClassName] == 'object')) {
939
+ obj = window[sClassName];
940
+ } else {
941
+ obj = new Object;
942
+ }
943
+ obj.getValue = this._defaultConfigObjectGetValue;
944
+ obj.__sJSFID = sClassName;
945
+ return obj;
946
+ }
947
+ this._defaultConfigObjectGetValue = function(sID, sDefault) {
948
+ if (typeof this[sID] != 'undefined') {
949
+ return this[sID];
950
+ }
951
+ return sDefault;
952
+ }
953
+ this.collapseExpandDivsDual = function (mode, divA, divB, delay){
954
+ if (this.expDivProcessing) return;
955
+ this.expDivProcessing = true;
956
+ var divAObj = this.getElement(divA);
957
+ var divBObj = this.getElement(divB);
958
+ var divAParent = divAObj.parentNode;
959
+ var divBParent = divBObj.parentNode;
960
+ if (!divAParent.id) { divAParent.id = 'outer_' + divAObj.id; }
961
+ if (!divBParent.id) { divBParent.id = 'outer_' + divBObj.id; }
962
+ if (!delay || delay<20) { delay = 20; }
963
+ var size = (mode == 'w' ? this.getElementWidth(divAParent) : this.getElementHeight(divAParent));
964
+ var step = this.expandCalcStep(size);
965
+ this._comboCollapseDual(mode, divAParent.id, divBParent.id, delay, step);
966
+ }
967
+ this._comboCollapseDual = function (mode, divAParent, divBParent, delay, step){
968
+ this.expDivSize = (mode == 'w' ? this.getElementWidth(divAParent) : this.getElementHeight(divAParent));
969
+ if(this.expDivSize>step){
970
+ this.expDivSize-=step;
971
+ mode == 'w' ? this.setWidth(divAParent, this.expDivSize) :this.setHeight(divAParent, this.expDivSize);
972
+ setTimeout("goN2U._comboCollapseDual('"+mode+"','"+divAParent+"','"+divBParent+"',"+delay+","+step+");", delay );
973
+ } else {
974
+ this.undisplay(divAParent);
975
+ this.display(divBParent);
976
+ this.setWidth(divBParent,"auto");
977
+ mode == 'w' ? this.setWidth(divBParent,"auto") :this.setHeight(divBParent,"auto");
978
+ var maxSize = (mode == 'w' ? this.getElementWidth(divBParent) : this.getElementHeight(divBParent));
979
+ this.expDivSize = step;
980
+ mode == 'w' ? this.setWidth(divBParent,this.expDivSize) :this.setHeight(divBParent,this.expDivSize);
981
+ setTimeout("goN2U._comboExpandDual('"+mode+"','"+divBParent+"',"+maxSize+","+delay+","+step+");",delay );
982
+ }
983
+ }
984
+ this._comboExpandDual = function (mode,divBParent, maxSize, delay, step){
985
+ this.expDivSize = (mode == 'w' ? this.getElementWidth(divBParent) : this.getElementHeight(divBParent));
986
+ if((this.expDivSize<maxSize) && (maxSize <1000)){
987
+ this.expDivSize+=step;
988
+ mode == 'w' ? this.setWidth(divBParent,this.expDivSize) : this.setHeight(divBParent,this.expDivSize);
989
+ setTimeout("goN2U._comboExpandDual('"+mode+"','"+divBParent+"',"+maxSize+","+delay+","+step+");",delay );
990
+ } else{
991
+ mode == 'w' ? this.setWidth(divBParent,maxSize) : this.setHeight(divBParent,maxSize);
992
+ this.show (divBParent);
993
+ this.expDivSize = 20;
994
+ this.expDivProcessing = false;
995
+ }
996
+ }
997
+ this.animateAlpha = function (sID, alphaStart, alphaFinal, nSteps, fnDone, style) {
998
+ var o = goN2U.getElement(sID);
999
+ if (!o) {
1000
+ ;
1001
+ return;
1002
+ }
1003
+ alphaStart = (alphaStart <= 0 ? 0 : (alphaStart >= 100 ? 100 : alphaStart));
1004
+ alphaFinal = (alphaFinal <= 0 ? 0 : (alphaFinal >= 100 ? 100 : alphaFinal));
1005
+ if (this.isUndefined(o.azdAnimAlpha)) {
1006
+ o.azdAnimAlpha = new Object();
1007
+ o.azdAnimAlpha.bRunning = false;
1008
+ }
1009
+ var anim = o.azdAnimAlpha;
1010
+ if (anim.bRunning) {
1011
+ clearInterval(anim.intervalID);
1012
+ ;
1013
+ anim.intervalID = undefined;
1014
+ anim.bRunning = false;
1015
+ }
1016
+ var alphaDelta = alphaFinal-alphaStart;
1017
+ var alphaStep = alphaDelta * 1.0 / nSteps; // force floating-point so alphaStep is non-zero
1018
+ if (nSteps > 1 && Math.abs(alphaStep) > 0.0001) {
1019
+ anim.alphaStep = alphaStep;
1020
+ anim.alphaFinal = alphaFinal;
1021
+ anim.fnDone = fnDone;
1022
+ var alphaCur = this.getAlphaLevel(o);
1023
+ anim.nDir = (alphaFinal-alphaCur) > 0 ? 1 : -1;
1024
+ if (anim.nDir * alphaStep < 0) {
1025
+ anim.alphaStep = -alphaStep;
1026
+ }
1027
+ if (alphaCur >= this.MOZALPHAMAX*100) {
1028
+ this.setAlphaLevel(o, this.MOZALPHAMAX*100);
1029
+ }
1030
+ anim.bRunning = true;
1031
+ var fn = new Function ("goN2U._animateAlpha('"+sID+"');");
1032
+ anim.intervalID = setInterval(fn, 25);
1033
+ } else {
1034
+ this.setAlphaLevel(o, alphaFinal);
1035
+ if (fnDone) {
1036
+ fnDone();
1037
+ }
1038
+ }
1039
+ }
1040
+ this._animateAlpha = function (sID) {
1041
+ var o = goN2U.getElement(sID);
1042
+ if (!o) {
1043
+ ;
1044
+ return;
1045
+ }
1046
+ var anim = o.azdAnimAlpha;
1047
+ if (!anim.bRunning) {
1048
+ clearInterval(anim.intervalID);
1049
+ ;
1050
+ anim.intervalID = undefined;
1051
+ return;
1052
+ }
1053
+ var alphaNext = this.getAlphaLevel(o) + anim.alphaStep;
1054
+ if ((anim.alphaFinal-alphaNext) * anim.nDir > 0) {
1055
+ this.setAlphaLevel(o, alphaNext);
1056
+ } else {
1057
+ this.setAlphaLevel(o, anim.alphaFinal);
1058
+ clearInterval(anim.intervalID);
1059
+ ;
1060
+ anim.intervalID = undefined;
1061
+ anim.bRunning = false;
1062
+ if (anim.fnDone) {
1063
+ anim.fnDone();
1064
+ }
1065
+ }
1066
+ }
1067
+ this.animateAlphaCancel = function(sID) {
1068
+ var o = goN2U.getElement(sID);
1069
+ if (!o) {
1070
+ ;
1071
+ return;
1072
+ }
1073
+ var anim = o.azdAnimAlpha;
1074
+ clearInterval(anim.intervalID);
1075
+ ;
1076
+ anim.intervalID = undefined;
1077
+ anim.bRunning = false;
1078
+ }
1079
+ this.isUndefined = function (a) { return (typeof a == 'undefined'); }
1080
+ this.isDefined = function (a) { return typeof a != 'undefined'; }
1081
+ this.isFunction = function (a) { return typeof a == 'function'; }
1082
+ this.isNull = function (a) { return typeof a == 'object' && !a; }
1083
+ this.isNumber = function (a) { return typeof a == 'number' && isFinite(a); }
1084
+ this.isObject = function (a) { return (a && typeof a == 'object') || this.isFunction(a); }
1085
+ this.isString = function (a) { return typeof a == 'string'; }
1086
+ this.isArray = function (a) { return this.isObject(a) && a.constructor == Array; }
1087
+ this.isUndefOrNull = function (a) { return (typeof a == 'undefined') || (typeof a == 'object' && !a) }
1088
+ this.objIsInstanceOf = function(obj, classObj) {
1089
+ while (obj.__proto__) {
1090
+ if (obj.__proto__ === classObj) {
1091
+ return true;
1092
+ }
1093
+ obj = obj.__proto__;
1094
+ }
1095
+ return false;
1096
+ }
1097
+ this.templatize = function(oData, sTemplate)
1098
+ {
1099
+ var sHTML = '';
1100
+ if (sTemplate.length > 0)
1101
+ {
1102
+ if (this.bIsSafari) {
1103
+ var sHTML = sTemplate;
1104
+ for (var i in oData) {
1105
+ if (typeof(oData[i]) == "string") {
1106
+ oData[i] = oData[i].replace(new RegExp("\\$", "g"), "&#36;");
1107
+ }
1108
+ sHTML = sHTML.replace(new RegExp("{" + i + "}", "g"), oData[i]);
1109
+ }
1110
+ sHTML = sHTML.replace(/{([^}]+)}/g, '');
1111
+ } else {
1112
+ sHTML = sTemplate.replace(/{([^}]+)}/g, function($0, $1) {
1113
+ var sV = oData[$1];
1114
+ if ( typeof sV != 'undefined' ) {
1115
+ return sV;
1116
+ }
1117
+ return '';
1118
+ });
1119
+ }
1120
+ }
1121
+ return sHTML;
1122
+ }
1123
+ this.extractMultipartValues = function(sVal, cSeparator, aPropertyNames, oProperties, sName) {
1124
+ if (!sVal || sVal.length == 0) {
1125
+ return oProperties;
1126
+ }
1127
+ var aResult = sVal.split(cSeparator);
1128
+ var nExpected = aPropertyNames.length;
1129
+ if (aResult.length) {
1130
+ if (aResult.length > nExpected) {
1131
+ aResult[nExpected-1] = aResult.slice(nExpected-1).join('_');
1132
+ }
1133
+ if (goN2U.isUndefOrNull(oProperties)) {
1134
+ oProperties = {};
1135
+ }
1136
+ if (!oProperties.aRawValues) {
1137
+ oProperties.aRawValues=[];
1138
+ }
1139
+ oProperties.aRawValues[oProperties.aRawValues.length] = sVal;
1140
+ var i;
1141
+ for (i=0;i<aPropertyNames.length;i++) {
1142
+ var sPropName = aPropertyNames[i];
1143
+ var c = sPropName.charAt(0);
1144
+ var val = aResult[i];
1145
+ if (goN2U.isDefined(val)) {
1146
+ switch (c) {
1147
+ case 'a': val = val.split('|');
1148
+ break;
1149
+ case 'b': val = val ? true : false;
1150
+ break;
1151
+ case 'n': val = parseInt(val);
1152
+ break;
1153
+ }
1154
+ oProperties[sPropName] = val;
1155
+ } else {
1156
+ ;
1157
+ }
1158
+ }
1159
+ }
1160
+ return oProperties;
1161
+ }
1162
+ this.handleEvent = function (evt)
1163
+ {
1164
+ if (!evt && window.event) evt = window.event;
1165
+ var elTarget = evt.srcElement || evt.target;
1166
+ if (evt.stopPropagation) evt.stopPropagation();
1167
+ evt.cancelBubble = true;
1168
+ return true;
1169
+ }
1170
+ this.addHandler = function (el, evt, fn)
1171
+ {
1172
+ if (el.attachEvent)
1173
+ return el.attachEvent("on"+evt, fn);
1174
+ else if (el.addEventListener)
1175
+ return (el.addEventListener(evt, fn, false), true);
1176
+ else
1177
+ return (el["on"+evt] = fn, true);
1178
+ return false;
1179
+ }
1180
+ this.removeHandler = function (el, evt, fn)
1181
+ {
1182
+ if (el.detachEvent)
1183
+ return el.detachEvent("on"+evt, fn);
1184
+ else if (el.removeEventListener)
1185
+ return (el.removeEventListener(evt, fn, false), true);
1186
+ else
1187
+ return (el["on"+evt] = null, true);
1188
+ return false;
1189
+ }
1190
+ this.hasClass = function (el, sClass)
1191
+ {
1192
+ el = this.getElement(el);
1193
+ if (el)
1194
+ {
1195
+ return new RegExp("\\b"+sClass+"\\b").test(el.className);
1196
+ }
1197
+ return false;
1198
+ }
1199
+ this.addClass = function (el, sClass)
1200
+ {
1201
+ el = this.getElement(el);
1202
+ if (el)
1203
+ {
1204
+ if (!new RegExp("\\b"+sClass+"\\b").test(el.className)) {
1205
+ el.className += ((el.className.length > 0) ? " " : '')+ sClass;
1206
+ }
1207
+ return true;
1208
+ }
1209
+ return false;
1210
+ }
1211
+ this.removeClass = function (el, sClass)
1212
+ {
1213
+ el = this.getElement(el);
1214
+ if (el)
1215
+ {
1216
+ el.className = el.className.replace(new RegExp('\\b'+sClass+"\\b",'g'), '');
1217
+ return true;
1218
+ }
1219
+ return false;
1220
+ }
1221
+ this.insertAdjacentHTML = function(oElm, sWhere, sHTML)
1222
+ {
1223
+ if (oElm.insertAdjacentHTML && goN2U.isIE())
1224
+ {
1225
+ oElm.insertAdjacentHTML(sWhere, sHTML);
1226
+ return;
1227
+ } else if (oElm.ownerDocument && oElm.ownerDocument.createRange)
1228
+ {
1229
+ var oRange = oElm.ownerDocument.createRange();
1230
+ oRange.setStartBefore(oElm);
1231
+ var oFrag = oRange.createContextualFragment(sHTML);
1232
+ switch (sWhere)
1233
+ {
1234
+ case 'beforeBegin':
1235
+ oElm.parentNode.insertBefore(oFrag,oElm)
1236
+ break;
1237
+ case 'afterBegin':
1238
+ oElm.insertBefore(oFrag,oElm.firstChild);
1239
+ break;
1240
+ case 'beforeEnd':
1241
+ oElm.appendChild(oFrag);
1242
+ break;
1243
+ case 'afterEnd':
1244
+ if (oElm.nextSibling)
1245
+ {
1246
+ oElm.parentNode.insertBefore(oFrag,oElm.nextSibling);
1247
+ } else {
1248
+ oElm.parentNode.appendChild(oFrag);
1249
+ }
1250
+ break;
1251
+ default:
1252
+ ;
1253
+ break;
1254
+ }
1255
+ } else
1256
+ {
1257
+ ;
1258
+ }
1259
+ }
1260
+ this.addStyles = function(aStyles) {
1261
+ var i, s, aS;
1262
+ if (document.styleSheets.length == 0) {
1263
+ var newcss = document.createElement("style");
1264
+ newcss.type="text/css";
1265
+ newcss.media="all";
1266
+ document.getElementsByTagName("head")[0].appendChild(newcss);
1267
+ }
1268
+ var css = document.styleSheets[document.styleSheets.length-1];
1269
+ for (i=0; i< aStyles.length; i++) {
1270
+ s = aStyles[i];
1271
+ if (css.insertRule) {
1272
+ css.insertRule(s, 0);
1273
+ } else if (css.addRule) {
1274
+ if (aS = s.match(/^([^\{]*)\{([^\}]*)\}/))
1275
+ css.addRule(aS[1], aS[2]);
1276
+ }
1277
+ }
1278
+ }
1279
+ } // END of goN2Utilities Class
1280
+ if (typeof(HTMLElement) != 'undefined')
1281
+ {
1282
+ HTMLElement.prototype.insertAdjacentHTML = function(sWhere, sHTML)
1283
+ {
1284
+ goN2U.insertAdjacentHTML(this, sWhere, sHTML);
1285
+ }
1286
+ }
1287
+ window.N2TextSizer=function(spanID) {
1288
+ var spanEl = document.createElement("span");
1289
+ if (spanEl) {
1290
+ spanEl.setAttribute("id",spanID, 0);
1291
+ document.body.appendChild(spanEl);
1292
+ goN2U.hide(spanID);
1293
+ this.span=spanEl; // expects goN2Utility class to have been initialized
1294
+ this.sID = spanID;
1295
+ this.style=null;
1296
+ }
1297
+ this.getStringWidth = function (txt, len) {
1298
+ ;
1299
+ if (len) this.span.innerText = txt.substring(0, len);
1300
+ else this.span.innerText = txt;
1301
+ return goN2U.getElementWidth(this.sID);
1302
+ }
1303
+ this.setStyle = function (style) {
1304
+ if (style != this.style) {
1305
+ goN2U.setClass (this.span, style);
1306
+ this.style = style;
1307
+ }
1308
+ }
1309
+ this.truncateToWidth = function (txt, width) {
1310
+ var len = txt.length;
1311
+ var txtwidth = this.getStringWidth(txt);
1312
+ if (txtwidth >width) {
1313
+ var reqlen = Math.floor(width/txtwidth*len) - 3;
1314
+ var temptxt = txt.substring(0, reqlen);
1315
+ temptxt += '...';
1316
+ return temptxt;
1317
+ } else {
1318
+ return txt;
1319
+ }
1320
+ }
1321
+ this.setContent = function (cont) {
1322
+ this.span.innerHTML=cont;
1323
+ return goN2U.getElementWidth(this.span);
1324
+ }
1325
+ this.getWidth = function () {
1326
+ return goN2U.getElementWidth(this.span);
1327
+ }
1328
+ this.getHeight = function () {
1329
+ return goN2U.getElementHeight(this.span);
1330
+ }
1331
+ }
1332
+ window.N2FifoQueue=function(n) {
1333
+ var current = 0;
1334
+ var next = 0;
1335
+ var size = n ? n : 20;
1336
+ var q = new Array(n);
1337
+ this.add = function (item) {
1338
+ q[next] = item;
1339
+ next++;
1340
+ if (next == size) next = 0;
1341
+ q[next] = null; // to ensure we don't have current go past
1342
+ }
1343
+ this.current = function () {
1344
+ return q[current];
1345
+ }
1346
+ this.next = function () {
1347
+ var val = null;
1348
+ if (q[current]) current++; // don't advance past stop fence
1349
+ if (current == size) current = 0;
1350
+ val = q[current];
1351
+ return val;
1352
+ }
1353
+ this.nextExists = function () {
1354
+ var val = null;
1355
+ var temp = current;
1356
+ if (q[temp]) temp++; // don't advance past stop fence
1357
+ if (temp == size) temp = 0;
1358
+ return q[temp] != null;
1359
+ }
1360
+ this.toString = function () {
1361
+ var txt = "Current: " + current + "\n";
1362
+ txt += "Next: " + next + "\n";
1363
+ for (i=0;i<size;i++) {
1364
+ txt += "["+i+"] = " + q[i];
1365
+ if (i == current) txt += " <-Current ";
1366
+ if (i == next) txt += " <-Next";
1367
+ txt +="\n";
1368
+ }
1369
+ return txt
1370
+ }
1371
+ }
1372
+ window.N2BrowseStack=function(n) {
1373
+ var current = -1;
1374
+ var size = n ? n : 20;
1375
+ var q = new Array(n);
1376
+ this.add = function (item) {
1377
+ current++;
1378
+ q[current] = item;
1379
+ q[current+1] = null; // once we add a new item any past it are toast
1380
+ }
1381
+ this.reset = function () {
1382
+ current = -1;
1383
+ q[0] = null;
1384
+ q[1] = null;
1385
+ }
1386
+ this.previous = function (item) {
1387
+ if (current >0) return q[current-1];
1388
+ return null;
1389
+ }
1390
+ this.current = function () {
1391
+ return q[current];
1392
+ }
1393
+ this.next = function () {
1394
+ return q[current+1];
1395
+ }
1396
+ this.goBack = function () { if (current >0) current--; }
1397
+ this.goForward = function () { if (q[current+1]) current++; }
1398
+ this.toString = function () {
1399
+ var txt = "Current: " + current + "\n";
1400
+ for (i=0;i<=current;i++) {
1401
+ txt += "["+i+"] = " + q[i].id;
1402
+ if (i == current) txt += " <-Current ";
1403
+ txt +="\n";
1404
+ }
1405
+ return txt
1406
+ }
1407
+ }
1408
+ window.N2LinkNameInfo=function(sLinkID, sNameOverride) {
1409
+ if (sLinkID) {
1410
+ var oLink = goN2U.getElement(sLinkID);
1411
+ var sName = "";
1412
+ if (oLink) {
1413
+ sName = oLink.name;
1414
+ ;
1415
+ }
1416
+ if (sNameOverride) {
1417
+ sName = sNameOverride;
1418
+ ;
1419
+ }
1420
+ if (sName) {
1421
+ var tmpArray = sName.split("|");
1422
+ if (tmpArray.length >1) {
1423
+ this.sLinkID = sLinkID;
1424
+ this.sName = sName;
1425
+ this.sFeature = tmpArray[0];
1426
+ this.sType = tmpArray[1];
1427
+ this.sID = tmpArray[2];
1428
+ this.sParams = tmpArray[3];
1429
+ for (var i = 4; !goN2U.isUndefined(tmpArray[i]); i++) {
1430
+ this.sParams = this.sParams + "|" + tmpArray[i];
1431
+ }
1432
+ }
1433
+ }
1434
+ } else {
1435
+ ;
1436
+ }
1437
+ this.getLinkID = function () { return this.sLinkID; }
1438
+ this.getLinkName= function () { return this.sName; }
1439
+ this.getFeature = function () { return this.sFeature; }
1440
+ this.getType = function () { return this.sType; }
1441
+ this.getID = function () { return this.sID; }
1442
+ this.getParams = function () { return this.sParams; }
1443
+ }
1444
+ var gaN2HandlerChains = new Array();
1445
+ var gaN2HandlerRunFns = new Array();
1446
+ window.N2ChainEventHandler=function(sHandlerName, fFn, sComment) {
1447
+ sHandlerName = sHandlerName.toLowerCase();
1448
+ sComment = sComment ? sComment : 'unknown';
1449
+ ;
1450
+ ;
1451
+ if ( (typeof fFn != 'function') || fFn == null) return false;
1452
+ var aChain;
1453
+ if (!gaN2HandlerChains[sHandlerName]) {
1454
+ aChain = gaN2HandlerChains[sHandlerName] = new Array();
1455
+ } else {
1456
+ aChain = gaN2HandlerChains[sHandlerName];
1457
+ }
1458
+ var oE = window;
1459
+ if (sHandlerName != 'onload' && sHandlerName != 'onresize' && sHandlerName != 'onerror') {
1460
+ oE = document.getElementsByTagName("body")[0];
1461
+ if (oE == null) {
1462
+ ;
1463
+ return;
1464
+ }
1465
+ }
1466
+ if (oE[sHandlerName]) {
1467
+ if (oE[sHandlerName] != gaN2HandlerRunFns[sHandlerName]) {
1468
+ aChain[0] = oE[sHandlerName];
1469
+ var fn = new Function ("evt", "evt = evt ? evt : window.event; _N2RunHandlers(evt, '"+sHandlerName+"');");
1470
+ gaN2HandlerRunFns[sHandlerName] = fn;
1471
+ oE[sHandlerName] = fn;
1472
+ }
1473
+ var len = aChain.length;
1474
+ ;
1475
+ aChain[len] = fFn;
1476
+ } else {
1477
+ ;
1478
+ oE[sHandlerName] = fFn;
1479
+ }
1480
+ return true;
1481
+ }
1482
+ function _N2RunHandlers( evt, sHandlerName ) {
1483
+ var aH = gaN2HandlerChains[sHandlerName];
1484
+ var len = aH.length;
1485
+ for (var i=0;i<len;i++) {
1486
+ aH[i](evt);
1487
+ }
1488
+ }
1489
+ N2ChainEventHandler('onload',
1490
+ function(){
1491
+ n2RunEvent('onload');
1492
+ n2RunEvent(gbN2Loaded ? 'onloadsuccess' : 'onloaderror');
1493
+ },
1494
+ 'run onload events' );
1495
+ window.goN2Drag = {
1496
+ obj : null,
1497
+ normalizeEvent : function (evt) {
1498
+ evt = (evt) ? evt : ((window.event) ? window.event : null);
1499
+ if (evt) {
1500
+ if(!evt.target) {
1501
+ evt.target = evt.srcElement;
1502
+ }
1503
+ } else {
1504
+ ;
1505
+ }
1506
+ return evt;
1507
+ },
1508
+ mouseDown : function(evt) {
1509
+ evt = goN2Drag.normalizeEvent(evt);
1510
+ if (evt) {
1511
+ var oE = goN2Drag.obj = evt.target;
1512
+ if (oE._n2bDraggable) {
1513
+ oE._n2SavedMouseMove = document.onmousemove;
1514
+ oE._n2SavedMouseUp = document.onmouseup;
1515
+ document.onmousemove = goN2Drag.mouseMove;
1516
+ document.onmouseup = goN2Drag.mouseUp;
1517
+ if (document.body && document.body.setCapture) {
1518
+ document.body.setCapture();
1519
+ ;
1520
+ }
1521
+ var mouseDownX = (evt.clientX)? evt.clientX : evt.pageX;
1522
+ var mouseDownY = (evt.clientY)? evt.clientY : evt.pageY;
1523
+ oE.dragOffsetX = mouseDownX - ((oE.offsetLeft) ? oE.offsetLeft : oE.left);
1524
+ oE.dragOffsetY = mouseDownY - ((oE.offsetTop) ? oE.offsetTop : oE.top);
1525
+ oE.buttonIsDown = true;
1526
+ if (oE._oN2 && oE._oN2.mouseDown) {
1527
+ oE._oN2.onMouseDown(evt)
1528
+ }
1529
+ }
1530
+ }
1531
+ },
1532
+ mouseMove : function(evt) {
1533
+ evt = goN2Drag.normalizeEvent(evt);
1534
+ if (evt) {
1535
+ var oE = goN2Drag.obj;
1536
+ if (oE.buttonIsDown) {
1537
+ var nX = (evt.clientX)? evt.clientX : evt.pageX;
1538
+ nX -= oE.dragOffsetX;
1539
+ var nY = (evt.clientY)? evt.clientY : evt.pageY;
1540
+ nY -= oE.dragOffsetY;
1541
+ nX = Math.max(oE._n2nMinLeft, nX);
1542
+ nX = Math.min(oE._n2nMaxLeft, nX);
1543
+ nY = Math.max(oE._n2nMinTop, nY);
1544
+ nY = Math.min(oE._n2nMaxTop, nY);
1545
+ var bDoShift = true;
1546
+ if (oE._oN2 && oE._oN2.onMoved) {
1547
+ bDoShift = oE._oN2.onMoved(nX, nY);
1548
+ }
1549
+ if (bDoShift) {
1550
+ goN2U.shiftTo(oE, nX, nY);
1551
+ }
1552
+ }
1553
+ }
1554
+ },
1555
+ mouseUp : function(evt) {
1556
+ ;
1557
+ evt = goN2Drag.normalizeEvent(evt);
1558
+ if (evt) {
1559
+ var oE = goN2Drag.obj;
1560
+ if (oE.buttonIsDown) {
1561
+ if (document.body && document.body.releaseCapture) {
1562
+ document.body.releaseCapture();
1563
+ ;
1564
+ }
1565
+ oE.buttonIsDown = false;
1566
+ if (oE._oN2 && oE._oN2.onMouseUp) {
1567
+ oE._oN2.onMouseUp();
1568
+ }
1569
+ }
1570
+ document.onmousemove = oE._n2SavedMouseMove;
1571
+ document.onmouseup = oE._n2SavedMouseUp;
1572
+ }
1573
+ },
1574
+ makeDraggable : function (sID, nMinLeft, nMaxLeft, nMinTop, nMaxTop) {
1575
+ var oE = goN2U.getElement(sID);
1576
+ if (oE) {
1577
+ oE["onmousedown"] = goN2Drag.mouseDown;
1578
+ oE._n2bDraggable = true;
1579
+ oE._n2nMinLeft = goN2U.isDefined(nMinLeft) ? nMinLeft : 0;
1580
+ oE._n2nMaxLeft = goN2U.isDefined(nMaxLeft) ? nMaxLeft : 10000;
1581
+ oE._n2nMinTop = goN2U.isDefined(nMinTop) ? nMinTop : 0;
1582
+ oE._n2nMaxTop = goN2U.isDefined(nMaxTop) ? nMaxTop : 10000;
1583
+ ;
1584
+ } else {
1585
+ ;
1586
+ }
1587
+ return oE;
1588
+ }
1589
+ }
1590
+ var goN2U = new N2Utilities();
1591
+ goN2U.initialize();
1592
+ n2RunThisWhen('onload',
1593
+ function() {
1594
+ if (!document.body) {
1595
+ alert("Error: Must initialize Utilities library in the body. (body not found)");
1596
+ return;
1597
+ }
1598
+ var sID = goN2U.sAnimationDivID = 'goN2UAnimatedBox';
1599
+ var o = document.createElement("div");
1600
+ if (o) {
1601
+ document.body.appendChild(o);
1602
+ o.setAttribute("id",sID, 0);
1603
+ goN2U.setClass(sID, 'animatedBox');
1604
+ } else {
1605
+ ;
1606
+ }
1607
+ }, 'animate box creation' );
1608
+ if (window.goN2LibMon) goN2LibMon.endLoad('utilities');