Salome HOME
DCQ : Merge with Ecole_Ete_a6.
authoryfr <yfr@opencascade.com>
Fri, 18 Jun 2004 08:55:35 +0000 (08:55 +0000)
committeryfr <yfr@opencascade.com>
Fri, 18 Jun 2004 08:55:35 +0000 (08:55 +0000)
343 files changed:
doc/salome/gui/SMESH/SMESH.log [new file with mode: 0755]
doc/salome/gui/SMESH/cshdat_robohelp.htm [new file with mode: 0755]
doc/salome/gui/SMESH/cshdat_webhelp.htm [new file with mode: 0755]
doc/salome/gui/SMESH/default.css [new file with mode: 0755]
doc/salome/gui/SMESH/default.skn [new file with mode: 0755]
doc/salome/gui/SMESH/default_ns.css [new file with mode: 0755]
doc/salome/gui/SMESH/ehlpdhtm.js [new file with mode: 0755]
doc/salome/gui/SMESH/files/1d_meshing_algorithm.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/2d_(quadrangle)_meshing_algorithm.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/2d_meshing_algorithm.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/3d_meshing_algorithm.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/about_hypotheses.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/about_meshes.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/about_meshing_algorithms.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/about_modification_of_meshes.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/about_quality_controls.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/adding_nodes_and_elements.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/area_of_elements.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/aspect_ratio.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/changing_orientation_of_elements.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/computing_meshes.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/connectivity.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/constructing_meshes.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/constructing_submeshes.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/diagonal_iversion_of_elements.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/displacing_nodes.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/displaying_elements_numbers.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/displaying_nodes_numbers.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/editing_hypotheses.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/importing_and_exporting_meshes.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/introduction_to_smesh.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/length_of_edges.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/local_length_hypothesis.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/max._element_area_hypothesis.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/max._element_volume_hypothsis.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/minimum_angle.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/number_of_segments_hypothesis.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/reassigning_hypotheses_and_algorithms.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/removing_nodes_and_elements.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/running_smesh_module.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/scalar_bar_properties.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/shading.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/shrink.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/skew.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/taper.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/tetrahedron_(netgen)_meshing_algorithm.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/using_smesh_module.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/view_update.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/viewing_mesh_info.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/visualization_modes.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/visualization_properties.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/warp.htm [new file with mode: 0755]
doc/salome/gui/SMESH/files/wireframe.htm [new file with mode: 0755]
doc/salome/gui/SMESH/i_blue.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image10.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image11.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image12.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image2.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image22.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image24.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image24.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image25.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image25.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image26.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image26.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image27.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image27.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image28.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image28.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image29.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image29.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image3.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image31.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image32.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image33.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image34.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image35.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image36.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image37.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image38.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image39.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image4.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image4.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image40.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image41.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image42.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image43.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image44.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image45.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image46.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image47.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image48.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image49.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image50.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image51.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image52.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image53.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image55.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image56.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image6.gif [new file with mode: 0755]
doc/salome/gui/SMESH/image6.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image7.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image8.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/image9.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/note1.gif [new file with mode: 0755]
doc/salome/gui/SMESH/pics/exemple.gif [new file with mode: 0755]
doc/salome/gui/SMESH/pics/new.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/smesh.html [new file with mode: 0755]
doc/salome/gui/SMESH/smesh_csh.html [new file with mode: 0755]
doc/salome/gui/SMESH/smesh_rhc.html [new file with mode: 0755]
doc/salome/gui/SMESH/texture_horiz_ltbluebubbles.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/webhelp.cab [new file with mode: 0755]
doc/salome/gui/SMESH/webhelp.jar [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whftdata.js [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whftdata0.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whftdata0.xml [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whfts.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whfts.js [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whfts.xml [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whfwdata.js [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whfwdata0.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whfwdata0.xml [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whgdata.js [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whgdata0.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whgdata0.xml [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whglo.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whglo.js [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whglo.xml [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whidata.js [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whidx.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whidx.js [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whidx.xml [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whtdata.js [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whtdata0.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whtdata0.xml [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whtoc.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whtoc.js [new file with mode: 0755]
doc/salome/gui/SMESH/whdata/whtoc.xml [new file with mode: 0755]
doc/salome/gui/SMESH/whestart.ico [new file with mode: 0755]
doc/salome/gui/SMESH/whfbody.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whfdhtml.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whfform.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whfhost.js [new file with mode: 0755]
doc/salome/gui/SMESH/whform.js [new file with mode: 0755]
doc/salome/gui/SMESH/whframes.js [new file with mode: 0755]
doc/salome/gui/SMESH/whgbody.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whexpbar.gif [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstf0.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstf1.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstf2.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstf3.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl0.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl1.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl10.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl11.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl12.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl13.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl14.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl15.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl16.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl17.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl18.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl19.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl2.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl20.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl21.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl22.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl3.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl4.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl5.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl6.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl7.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl8.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstfl9.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstg0.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlsti0.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstt0.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstt1.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstt10.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstt11.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstt12.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstt2.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstt3.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstt4.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstt5.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstt6.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstt7.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstt8.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whlstt9.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvf30.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvf31.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvf32.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvf33.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvl31.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvl32.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvl33.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvp30.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvp31.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvp32.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvp33.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvt30.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvt31.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvt32.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdata/whnvt33.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdef.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whgdhtml.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whghost.js [new file with mode: 0755]
doc/salome/gui/SMESH/whhost.js [new file with mode: 0755]
doc/salome/gui/SMESH/whibody.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whidhtml.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whiform.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whihost.js [new file with mode: 0755]
doc/salome/gui/SMESH/whlang.js [new file with mode: 0755]
doc/salome/gui/SMESH/whmozemu.js [new file with mode: 0755]
doc/salome/gui/SMESH/whmsg.js [new file with mode: 0755]
doc/salome/gui/SMESH/whnjs.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whphost.js [new file with mode: 0755]
doc/salome/gui/SMESH/whproj.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whproj.js [new file with mode: 0755]
doc/salome/gui/SMESH/whproj.xml [new file with mode: 0755]
doc/salome/gui/SMESH/whproxy.js [new file with mode: 0755]
doc/salome/gui/SMESH/whres.xml [new file with mode: 0755]
doc/salome/gui/SMESH/whrstart.ico [new file with mode: 0755]
doc/salome/gui/SMESH/whskin_banner.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whskin_blank.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whskin_frmset01.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whskin_frmset010.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whskin_info.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whskin_mbars.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whskin_papplet.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whskin_pdhtml.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whskin_plist.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whskin_tbars.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whst_topics.xml [new file with mode: 0755]
doc/salome/gui/SMESH/whstart.ico [new file with mode: 0755]
doc/salome/gui/SMESH/whstart.js [new file with mode: 0755]
doc/salome/gui/SMESH/whstub.js [new file with mode: 0755]
doc/salome/gui/SMESH/wht_abge.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/wht_abgi.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/wht_abgw.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/wht_abte.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/wht_abti.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/wht_abtw.jpg [new file with mode: 0755]
doc/salome/gui/SMESH/wht_fts_h.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_fts_n.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_glo_h.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_glo_n.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_go.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_hide.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_idx_h.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_idx_n.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_logo1.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_logo2.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_next.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_next_g.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_prev.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_prev_g.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_spac.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_sync.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_tab0.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_tab1.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_tab2.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_tab3.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_tab4.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_tab5.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_tab6.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_tab7.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_tab8.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_toc1.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_toc2.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_toc3.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_toc4.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_toc_h.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_toc_n.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_ws.gif [new file with mode: 0755]
doc/salome/gui/SMESH/wht_ws_g.gif [new file with mode: 0755]
doc/salome/gui/SMESH/whtbar.js [new file with mode: 0755]
doc/salome/gui/SMESH/whtdhtml.htm [new file with mode: 0755]
doc/salome/gui/SMESH/whthost.js [new file with mode: 0755]
doc/salome/gui/SMESH/whtopic.js [new file with mode: 0755]
doc/salome/gui/SMESH/whutils.js [new file with mode: 0755]
doc/salome/gui/SMESH/whver.js [new file with mode: 0755]
doc/salome/tui/Makefile.in [new file with mode: 0644]
doc/salome/tui/SMESH/HTML/SMESH_BasicHypothesis.html [new file with mode: 0644]
doc/salome/tui/SMESH/HTML/SMESH_Gen.html [new file with mode: 0644]
doc/salome/tui/SMESH/HTML/SMESH_Hypothesis.html [new file with mode: 0644]
doc/salome/tui/SMESH/HTML/SMESH_Mesh.html [new file with mode: 0644]
doc/salome/tui/SMESH/doxyfile [new file with mode: 0755]
doc/salome/tui/SMESH/sources/Application-About.png [new file with mode: 0755]
doc/salome/tui/SMESH/sources/Application-About1.jpg [new file with mode: 0755]
doc/salome/tui/SMESH/sources/application.gif [new file with mode: 0644]
doc/salome/tui/SMESH/sources/application.jpg [new file with mode: 0755]
doc/salome/tui/SMESH/sources/bg_salome.gif [new file with mode: 0755]
doc/salome/tui/SMESH/sources/logocorp.gif [new file with mode: 0755]
doc/salome/tui/SMESH/sources/myheader.html [new file with mode: 0755]
doc/salome/tui/SMESH/sources/occ.gif [new file with mode: 0755]
doc/salome/tui/SMESH/sources/static/PluginMeshers.html [new file with mode: 0755]
doc/salome/tui/SMESH/sources/static/doxygen.css [new file with mode: 0755]
doc/salome/tui/SMESH/sources/static/page2.html [new file with mode: 0755]
doc/salome/tui/SMESH/sources/static/tree.js [new file with mode: 0755]
doc/salome/tui/SMESH/sources/static/treeview.js [new file with mode: 0644]
src/SMESH/Makefile.in
src/SMESH/SMESH_1D_Algo.cxx
src/SMESH/SMESH_1D_Algo.hxx
src/SMESH/SMESH_2D_Algo.cxx
src/SMESH/SMESH_2D_Algo.hxx
src/SMESH/SMESH_3D_Algo.cxx
src/SMESH/SMESH_3D_Algo.hxx
src/SMESH/SMESH_Algo.cxx
src/SMESH/SMESH_Algo.hxx
src/SMESH/SMESH_Gen.cxx
src/SMESH/SMESH_Gen.hxx
src/SMESH/SMESH_Group.cxx [new file with mode: 0644]
src/SMESH/SMESH_Group.hxx [new file with mode: 0644]
src/SMESH/SMESH_Hexa_3D.cxx [deleted file]
src/SMESH/SMESH_Hexa_3D.hxx [deleted file]
src/SMESH/SMESH_Hypothesis.cxx
src/SMESH/SMESH_Hypothesis.hxx
src/SMESH/SMESH_HypothesisCreator.hxx [deleted file]
src/SMESH/SMESH_HypothesisFactory.cxx [deleted file]
src/SMESH/SMESH_HypothesisFactory.hxx [deleted file]
src/SMESH/SMESH_LengthFromEdges.cxx [deleted file]
src/SMESH/SMESH_LengthFromEdges.hxx [deleted file]
src/SMESH/SMESH_LocalLength.cxx [deleted file]
src/SMESH/SMESH_LocalLength.hxx [deleted file]
src/SMESH/SMESH_MEFISTO_2D.cxx [deleted file]
src/SMESH/SMESH_MEFISTO_2D.hxx [deleted file]
src/SMESH/SMESH_MaxElementArea.cxx [deleted file]
src/SMESH/SMESH_MaxElementArea.hxx [deleted file]
src/SMESH/SMESH_MaxElementVolume.cxx [deleted file]
src/SMESH/SMESH_MaxElementVolume.hxx [deleted file]
src/SMESH/SMESH_Mesh.cxx
src/SMESH/SMESH_Mesh.hxx
src/SMESH/SMESH_NETGEN_3D.cxx [deleted file]
src/SMESH/SMESH_NETGEN_3D.hxx [deleted file]
src/SMESH/SMESH_NumberOfSegments.cxx [deleted file]
src/SMESH/SMESH_NumberOfSegments.hxx [deleted file]
src/SMESH/SMESH_Quadrangle_2D.cxx [deleted file]
src/SMESH/SMESH_Quadrangle_2D.hxx [deleted file]
src/SMESH/SMESH_Regular_1D.cxx [deleted file]
src/SMESH/SMESH_Regular_1D.hxx [deleted file]
src/SMESH/SMESH_subMesh.cxx
src/SMESH/SMESH_subMesh.hxx

diff --git a/doc/salome/gui/SMESH/SMESH.log b/doc/salome/gui/SMESH/SMESH.log
new file mode 100755 (executable)
index 0000000..4552b09
--- /dev/null
@@ -0,0 +1,288 @@
+|SourceProjectName:SMESH.hpr\r
+|DestinationProjectName:smesh.html\r
+whhost.js\r
+whmsg.js\r
+whmozemu.js\r
+whproxy.js\r
+whstub.js\r
+whutils.js\r
+whver.js\r
+whform.js\r
+whphost.js\r
+whstart.js\r
+whtopic.js\r
+whframes.js\r
+whlang.js\r
+whskin_info.htm\r
+whskin_blank.htm\r
+whnjs.htm\r
+whthost.js\r
+whtdhtml.htm\r
+whihost.js\r
+whibody.htm\r
+whiform.htm\r
+whfhost.js\r
+whfbody.htm\r
+whfform.htm\r
+whghost.js\r
+whgbody.htm\r
+whgdhtml.htm\r
+whgdef.htm\r
+whproj.js\r
+whproj.xml\r
+whproj.htm\r
+whdata\whtoc.js\r
+whdata\whtoc.xml\r
+whdata\whtoc.htm\r
+whdata\whtdata.js\r
+whdata\whidx.js\r
+whdata\whidx.xml\r
+whdata\whidx.htm\r
+whdata\whidata.js\r
+whdata\whfts.js\r
+whdata\whfts.xml\r
+whdata\whfts.htm\r
+whdata\whglo.js\r
+whdata\whglo.xml\r
+whdata\whglo.htm\r
+whdata\whgdata.js\r
+whdata\whftdata.js\r
+whdata\whfwdata.js\r
+whres.xml\r
+webhelp.jar\r
+webhelp.cab\r
+whgdata\whnvp30.htm\r
+whgdata\whnvp31.htm\r
+whgdata\whnvp32.htm\r
+whgdata\whnvp33.htm\r
+whgdata\whnvt30.htm\r
+whgdata\whnvt31.htm\r
+whgdata\whnvt32.htm\r
+whgdata\whnvt33.htm\r
+whgdata\whnvf30.htm\r
+whgdata\whnvf31.htm\r
+whgdata\whnvf32.htm\r
+whgdata\whnvf33.htm\r
+whgdata\whnvl31.htm\r
+whgdata\whnvl32.htm\r
+whgdata\whnvl33.htm\r
+whgdata\whexpbar.gif\r
+cshdat_webhelp.htm\r
+cshdat_robohelp.htm\r
+wht_tab0.gif\r
+wht_tab1.gif\r
+wht_tab2.gif\r
+wht_tab3.gif\r
+wht_tab4.gif\r
+wht_tab5.gif\r
+wht_tab6.gif\r
+wht_tab7.gif\r
+wht_tab8.gif\r
+wht_glo_h.gif\r
+wht_glo_n.gif\r
+wht_fts_h.gif\r
+wht_fts_n.gif\r
+wht_idx_h.gif\r
+wht_idx_n.gif\r
+wht_toc_h.gif\r
+wht_toc_n.gif\r
+wht_ws.gif\r
+wht_ws_g.gif\r
+wht_logo1.gif\r
+wht_logo2.gif\r
+wht_abgw.jpg\r
+wht_abgi.jpg\r
+wht_abge.jpg\r
+wht_abtw.jpg\r
+wht_abte.jpg\r
+wht_abti.jpg\r
+wht_spac.gif\r
+wht_next.gif\r
+wht_next_g.gif\r
+wht_prev.gif\r
+wht_prev_g.gif\r
+wht_sync.gif\r
+wht_hide.gif\r
+wht_go.gif\r
+whstart.ico\r
+whestart.ico\r
+whrstart.ico\r
+whidhtml.htm\r
+whfdhtml.htm\r
+whskin_banner.htm\r
+whtbar.js\r
+default.skn\r
+whskin_pdhtml.htm\r
+whskin_papplet.htm\r
+whskin_plist.htm\r
+whskin_tbars.htm\r
+whskin_mbars.htm\r
+wht_toc4.gif\r
+wht_toc1.gif\r
+wht_toc2.gif\r
+wht_toc3.gif\r
+whskin_frmset010.htm\r
+whst_topics.xml\r
+whskin_frmset01.htm\r
+smesh_hha.hhk\r
+smesh.hhc\r
+smesh.hhk\r
+files\1d_meshing_algorithm.htm\r
+files\2d_(quadrangle)_meshing_algorithm.htm\r
+files\2d_meshing_algorithm.htm\r
+files\3d_meshing_algorithm.htm\r
+files\about_hypotheses.htm\r
+files\about_meshes.htm\r
+files\about_meshing_algorithms.htm\r
+files\about_modification_of_meshes.htm\r
+files\about_quality_controls.htm\r
+files\adding_nodes_and_elements.htm\r
+files\area_of_elements.htm\r
+files\aspect_ratio.htm\r
+files\changing_orientation_of_elements.htm\r
+files\computing_meshes.htm\r
+files\connectivity.htm\r
+files\constructing_meshes.htm\r
+files\constructing_submeshes.htm\r
+files\diagonal_iversion_of_elements.htm\r
+files\displacing_nodes.htm\r
+files\displaying_elements_numbers.htm\r
+files\displaying_nodes_numbers.htm\r
+files\editing_hypotheses.htm\r
+files\importing_and_exporting_meshes.htm\r
+files\introduction_to_smesh.htm\r
+files\length_of_edges.htm\r
+files\local_length_hypothesis.htm\r
+files\max._element_area_hypothesis.htm\r
+files\max._element_volume_hypothsis.htm\r
+files\minimum_angle.htm\r
+files\number_of_segments_hypothesis.htm\r
+files\reassigning_hypotheses_and_algorithms.htm\r
+files\removing_nodes_and_elements.htm\r
+files\running_smesh_module.htm\r
+files\scalar_bar_properties.htm\r
+files\shading.htm\r
+files\shrink.htm\r
+files\skew.htm\r
+files\taper.htm\r
+files\tetrahedron_(netgen)_meshing_algorithm.htm\r
+files\using_smesh_module.htm\r
+files\view_update.htm\r
+files\viewing_mesh_info.htm\r
+files\visualization_modes.htm\r
+files\visualization_properties.htm\r
+files\warp.htm\r
+files\wireframe.htm\r
+texture_horiz_ltbluebubbles.jpg\r
+ehlpdhtm.js\r
+smesh.glo\r
+default.css\r
+image3.jpg\r
+image55.gif\r
+image44.gif\r
+image33.gif\r
+image22.gif\r
+image25.jpg\r
+image4.jpg\r
+image56.gif\r
+image45.gif\r
+image34.gif\r
+image26.jpg\r
+image2.gif\r
+image46.gif\r
+image35.gif\r
+image27.jpg\r
+image24.gif\r
+image6.jpg\r
+image47.gif\r
+image36.gif\r
+image28.jpg\r
+image25.gif\r
+image4.gif\r
+image7.jpg\r
+image48.gif\r
+image37.gif\r
+image29.jpg\r
+image26.gif\r
+image8.jpg\r
+image49.gif\r
+image38.gif\r
+image27.gif\r
+note1.gif\r
+image6.gif\r
+image9.jpg\r
+image39.gif\r
+image28.gif\r
+image29.gif\r
+i_blue.jpg\r
+image50.gif\r
+pics\new.jpg\r
+image10.jpg\r
+image51.gif\r
+image40.gif\r
+image11.jpg\r
+image52.gif\r
+image41.gif\r
+image12.jpg\r
+pics\exemple.gif\r
+image53.gif\r
+image42.gif\r
+image31.gif\r
+image43.gif\r
+image32.gif\r
+image24.jpg\r
+smesh.ppf\r
+default_ns.css\r
+whdata\whtdata0.xml\r
+whdata\whtdata0.htm\r
+whdata\whftdata0.xml\r
+whdata\whftdata0.htm\r
+whdata\whfwdata0.xml\r
+whdata\whfwdata0.htm\r
+whdata\whgdata0.xml\r
+whdata\whgdata0.htm\r
+whgdata\whlstt0.htm\r
+whgdata\whlstt1.htm\r
+whgdata\whlstt2.htm\r
+whgdata\whlstt3.htm\r
+whgdata\whlstt4.htm\r
+whgdata\whlstt5.htm\r
+whgdata\whlstt6.htm\r
+whgdata\whlstt7.htm\r
+whgdata\whlstt8.htm\r
+whgdata\whlstt9.htm\r
+whgdata\whlstt10.htm\r
+whgdata\whlstt11.htm\r
+whgdata\whlstt12.htm\r
+whgdata\whlsti0.htm\r
+whgdata\whlstfl0.htm\r
+whgdata\whlstfl1.htm\r
+whgdata\whlstfl2.htm\r
+whgdata\whlstfl3.htm\r
+whgdata\whlstfl4.htm\r
+whgdata\whlstfl5.htm\r
+whgdata\whlstfl6.htm\r
+whgdata\whlstfl7.htm\r
+whgdata\whlstfl8.htm\r
+whgdata\whlstfl9.htm\r
+whgdata\whlstfl10.htm\r
+whgdata\whlstfl11.htm\r
+whgdata\whlstfl12.htm\r
+whgdata\whlstfl13.htm\r
+whgdata\whlstfl14.htm\r
+whgdata\whlstfl15.htm\r
+whgdata\whlstfl16.htm\r
+whgdata\whlstfl17.htm\r
+whgdata\whlstfl18.htm\r
+whgdata\whlstfl19.htm\r
+whgdata\whlstfl20.htm\r
+whgdata\whlstfl21.htm\r
+whgdata\whlstfl22.htm\r
+whgdata\whlstf0.htm\r
+whgdata\whlstf1.htm\r
+whgdata\whlstf2.htm\r
+whgdata\whlstf3.htm\r
+whgdata\whlstg0.htm\r
+smesh.html\r
+smesh_csh.html\r
+smesh_rhc.html\r
diff --git a/doc/salome/gui/SMESH/cshdat_robohelp.htm b/doc/salome/gui/SMESH/cshdat_robohelp.htm
new file mode 100755 (executable)
index 0000000..3baed18
--- /dev/null
@@ -0,0 +1,252 @@
+<html>\r
+<head>\r
+<title>SMESH reference manual</title>\r
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name "description" content="WebHelp 2002">\r
+</head>\r
+<body>\r
+<script language="JavaScript">\r
+<!--\r
+\r
+var gArrayCsh = new Array();\r
+\r
+var gstrWindowOption = "";\r
+var gstrURL = "";\r
+var gbWithNavPane = false;\r
+\r
+function CshEntityItem(strAliasId, nTopicNum, strUrl) \r
+{\r
+    this.strAliasId = strAliasId;\r
+    this.nTopicNum = nTopicNum;\r
+    this.strUrl = strUrl;\r
+}\r
+\r
+\r
+//Try to get to topic number from hash string\r
+function GetTopicNumberAuto(strMayBeNumber)\r
+{\r
+   var nNum = -1;\r
+   if (strMayBeNumber.length >= 1)\r
+   {\r
+               var strTmp = strMayBeNumber;\r
+               var iEnd = strTmp.length;\r
+               for (var i=0; i<iEnd; i++)\r
+               {\r
+                         var ch = strTmp.charAt(i);\r
+                         if (!((ch == "0") || (ch == "1") ||\r
+                               (ch == "2") || (ch == "3") ||\r
+                               (ch == "4") || (ch == "5") ||\r
+                               (ch == "6") || (ch == "7") ||\r
+                               (ch == "8") || (ch == "9")))\r
+                             return GetTopicNumberById(strTmp);\r
+               }\r
+               nNum = parseInt(strTmp);\r
+   }\r
+   return nNum;\r
+}\r
+\r
+function GetTopicNumber(strHashString)\r
+{\r
+       var nTopicEndPos = strHashString.indexOf(',')\r
+       if (nTopicEndPos == -1) { // no window option.\r
+               return GetTopicNumberOnly(strHashString);\r
+       }\r
+       else {\r
+               var strWindowOption = strHashString.substring(nTopicEndPos + 1, strHashString.length);\r
+               var strWithNavPane = 'withnavpane=true';\r
+               if (strWindowOption.toLowerCase().indexOf(strWithNavPane) == 0)\r
+               {\r
+                       if (strWindowOption.length > strWithNavPane.length)\r
+                               gstrWindowOption = strWindowOption.substring(strWithNavPane.length + 1);\r
+                       else\r
+                               gstrWindowOption = "";\r
+                       gbWithNavPane = true;\r
+               }\r
+               else\r
+                       gstrWindowOption = strWindowOption;\r
+               return GetTopicNumberOnly(strHashString.substring(0, nTopicEndPos));            \r
+       }\r
+}\r
+\r
+function GetTopicNumberOnly(strTopicString)\r
+{\r
+       var nEqualPos = strTopicString.indexOf('=');\r
+       if (nEqualPos == -1) {\r
+               return GetTopicNumberAuto(strTopicString);\r
+       }\r
+       else {\r
+               var strValue=strTopicString.substring(nEqualPos + 1, strTopicString.length);\r
+               if (strTopicString.toLowerCase().indexOf("topicnumber") == 0) {\r
+                       return parseInt(strValue);\r
+               } else if (strTopicString.toLowerCase().indexOf("context") == 0) {\r
+                       return GetTopicNumberById(strValue);\r
+               } else if (strTopicString.toLowerCase().indexOf("remoteurl") == 0) {\r
+                       gstrURL = strValue;\r
+                       return -1;\r
+               }\r
+\r
+       }\r
+}\r
+\r
+//Find HomePage of the WebHelp system\r
+// we try to get the topic from remote project if it exists.\r
+function RedirectToHomePage()\r
+{\r
+       if (parent && parent != this && parent.goNext)\r
+       {\r
+               var sHome = parent.goNext();\r
+               if (sHome != "")\r
+                       RedirectTo(sHome);\r
+       }\r
+}\r
+\r
+function getHomePage()\r
+{\r
+       if (parent && parent != this && parent.getRelHomePage)\r
+       {\r
+               return parent.getRelHomePage(document.location.href);\r
+       }\r
+       return "";\r
+}\r
+\r
+function addRemoteProject(strPath)\r
+{\r
+       if (parent && parent != this && parent.addProject)\r
+       {\r
+               parent.addProject(strPath);\r
+       }\r
+}\r
+\r
+//Redirect page to...\r
+function RedirectTo(strUrl)\r
+{\r
+   if (gstrWindowOption.length != 0) {\r
+               var wnd = window.open(strUrl, "HelpStub", gstrWindowOption);\r
+               // close current window and rename the stub window to current window.\r
+               if (wnd)\r
+                       wnd.focus();\r
+               if (parent)\r
+                       parent.close();\r
+   }\r
+   else {\r
+       parent.document.location.href = strUrl;\r
+       window.focus();\r
+  }\r
+}\r
+\r
+//Prompt the user that we can not find...\r
+function FailToFind(strMsg)\r
+{\r
+    RedirectToHomePage();\r
+}\r
+\r
+//Find topic by topic number (defined in h file)\r
+function FindTopicByTopicNum(nTopicNum)\r
+{\r
+       var i = 0;\r
+       var iEnd = gArrayCsh.length;\r
+       for (i=0; i<iEnd; i++)\r
+       {\r
+               if (gArrayCsh[i].nTopicNum == nTopicNum)\r
+               {\r
+                       var strURL = gArrayCsh[i].strUrl;\r
+                       if (gbWithNavPane)\r
+                       {\r
+                               var strHomePage = getHomePage();\r
+                               if (strHomePage.length != 0)\r
+                                       strURL = strHomePage + strURL;\r
+                       }       \r
+                       RedirectTo(strURL);\r
+                       return true;\r
+               }\r
+       }\r
+       FailToFind("Fail to find topic assocaite with topic number: " + nTopicNum);\r
+       return false;\r
+}\r
+\r
+//Find topic by topic id (alias id defined in ali file)\r
+function GetTopicNumberById(strTopicId)\r
+{\r
+   var i = 0;\r
+   var iEnd = gArrayCsh.length;\r
+   for (i=0; i<iEnd; i++)\r
+   {\r
+       if (gArrayCsh[i].strAliasId.toLowerCase() == strTopicId.toLowerCase())\r
+       {\r
+           return gArrayCsh[i].nTopicNum;\r
+        }\r
+   }\r
+   gstrURL = "";\r
+   return -1;\r
+}\r
+\r
+//Set Context-sensitive help entity...\r
+function SetCsh(n, strAliasId, nTopicNum, strUrl)\r
+{\r
+   gArrayCsh[n] = new CshEntityItem(strAliasId,nTopicNum,strUrl);\r
+}\r
+\r
+\r
+function getHash()\r
+{\r
+       if (parent && parent != this)\r
+               return parent.location.hash;\r
+       else\r
+               return "";\r
+}\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+\r
+\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+//Find CSH according to hash string after this page\r
+if (getHash().length > 0)\r
+{\r
+   // VH 05/16/00 now support \r
+   // TopicID=\r
+   // TopicNumber=\r
+   // RemoteURL=   \r
+   // and WindowsOptions\r
+   // with the format #a=xxx,b=xxx,c=xxx...\r
+   var strHashString = getHash().toString();\r
+   // change ? to : for remote URL. because java applet have some problem to pass a URL with two : inside the URL so we changed it. \r
+   // so here need to change it back.\r
+   strHashString = strHashString.substring(1,strHashString.length);\r
+   strHashString = strHashString.replace("%072%057%057", "://");\r
+   var nTopicNum = GetTopicNumber(strHashString);\r
+\r
+   if (nTopicNum != -1)\r
+   {\r
+      FindTopicByTopicNum(nTopicNum);\r
+   }\r
+   else\r
+   {\r
+      if (gstrURL.length > 0) \r
+       RedirectTo(gstrURL);\r
+      else\r
+       RedirectToHomePage();\r
+   }\r
+}\r
+else\r
+{\r
+   RedirectToHomePage();\r
+}\r
+//-->\r
+</script>\r
+<noscript>\r
+ <p> Your browser does not support JavaScript. WebHelp Context-Sensitive Help requires JavaScript support to run.</p>\r
+</noscript>\r
+</body>\r
+</html>\r
+\r
+\r
+\r
+\r
+\r
+\r
diff --git a/doc/salome/gui/SMESH/cshdat_webhelp.htm b/doc/salome/gui/SMESH/cshdat_webhelp.htm
new file mode 100755 (executable)
index 0000000..5712886
--- /dev/null
@@ -0,0 +1,251 @@
+<html>\r
+<head>\r
+<title>SMESH reference manual</title>\r
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name "description" content="WebHelp 2002">\r
+</head>\r
+<body>\r
+<script language="JavaScript">\r
+<!--\r
+\r
+var gArrayCsh = new Array();\r
+\r
+var gstrWindowOption = "";\r
+var gstrURL = "";\r
+var gbWithNavPane = false;\r
+\r
+function CshEntityItem(strAliasId, nTopicNum, strUrl) \r
+{\r
+    this.strAliasId = strAliasId;\r
+    this.nTopicNum = nTopicNum;\r
+    this.strUrl = strUrl;\r
+}\r
+\r
+\r
+//Try to get to topic number from hash string\r
+function GetTopicNumberAuto(strMayBeNumber)\r
+{\r
+   var nNum = -1;\r
+   if (strMayBeNumber.length >= 1)\r
+   {\r
+               var strTmp = strMayBeNumber;\r
+               var iEnd = strTmp.length;\r
+               for (var i=0; i<iEnd; i++)\r
+               {\r
+                         var ch = strTmp.charAt(i);\r
+                         if (!((ch == "0") || (ch == "1") ||\r
+                               (ch == "2") || (ch == "3") ||\r
+                               (ch == "4") || (ch == "5") ||\r
+                               (ch == "6") || (ch == "7") ||\r
+                               (ch == "8") || (ch == "9")))\r
+                             return GetTopicNumberById(strTmp);\r
+               }\r
+               nNum = parseInt(strTmp);\r
+   }\r
+   return nNum;\r
+}\r
+\r
+function GetTopicNumber(strHashString)\r
+{\r
+       var nTopicEndPos = strHashString.indexOf(',')\r
+       if (nTopicEndPos == -1) { // no window option.\r
+               return GetTopicNumberOnly(strHashString);\r
+       }\r
+       else {\r
+               var strWindowOption = strHashString.substring(nTopicEndPos + 1, strHashString.length);\r
+               var strWithNavPane = 'withnavpane=true';\r
+               if (strWindowOption.toLowerCase().indexOf(strWithNavPane) == 0)\r
+               {\r
+                       if (strWindowOption.length > strWithNavPane.length)\r
+                               gstrWindowOption = strWindowOption.substring(strWithNavPane.length + 1);\r
+                       else\r
+                               gstrWindowOption = "";\r
+                       gbWithNavPane = true;\r
+               }\r
+               else\r
+                       gstrWindowOption = strWindowOption;\r
+               return GetTopicNumberOnly(strHashString.substring(0, nTopicEndPos));            \r
+       }\r
+}\r
+\r
+function GetTopicNumberOnly(strTopicString)\r
+{\r
+       var nEqualPos = strTopicString.indexOf('=');\r
+       if (nEqualPos == -1) {\r
+               return GetTopicNumberAuto(strTopicString);\r
+       }\r
+       else {\r
+               var strValue=strTopicString.substring(nEqualPos + 1, strTopicString.length);\r
+               if (strTopicString.toLowerCase().indexOf("topicnumber") == 0) {\r
+                       return parseInt(strValue);\r
+               } else if (strTopicString.toLowerCase().indexOf("topicid") == 0) {\r
+                       return GetTopicNumberById(strValue);\r
+               } else if (strTopicString.toLowerCase().indexOf("remoteurl") == 0) {\r
+                       gstrURL = strValue;\r
+                       return -1;\r
+               }\r
+\r
+       }\r
+}\r
+\r
+//Find HomePage of the WebHelp system\r
+// we try to get the topic from remote project if it exists.\r
+function RedirectToHomePage()\r
+{\r
+       if (parent && parent != this && parent.goNext)\r
+       {\r
+               var sHome = parent.goNext();\r
+               if (sHome != "")\r
+                       RedirectTo(sHome);\r
+       }\r
+}\r
+\r
+function getHomePage()\r
+{\r
+       if (parent && parent != this && parent.getRelHomePage)\r
+       {\r
+               return parent.getRelHomePage(document.location.href);\r
+       }\r
+       return "";\r
+}\r
+\r
+function addRemoteProject(strPath)\r
+{\r
+       if (parent && parent != this && parent.addProject)\r
+       {\r
+               parent.addProject(strPath);\r
+       }\r
+}\r
+\r
+//Redirect page to...\r
+function RedirectTo(strUrl)\r
+{\r
+   if (gstrWindowOption.length != 0) {\r
+               var wnd = window.open(strUrl, "HelpStub", gstrWindowOption);\r
+               // close current window and rename the stub window to current window.\r
+               wnd.focus();\r
+               if (parent)\r
+                       parent.close();\r
+   }\r
+   else {\r
+       parent.document.location.href = strUrl;\r
+       window.focus();\r
+  }\r
+}\r
+\r
+//Prompt the user that we can not find...\r
+function FailToFind(strMsg)\r
+{\r
+    RedirectToHomePage();\r
+}\r
+\r
+//Find topic by topic number (defined in h file)\r
+function FindTopicByTopicNum(nTopicNum)\r
+{\r
+       var i = 0;\r
+       var iEnd = gArrayCsh.length;\r
+       for (i=0; i<iEnd; i++)\r
+       {\r
+               if (gArrayCsh[i].nTopicNum == nTopicNum)\r
+               {\r
+                       var strURL = gArrayCsh[i].strUrl;\r
+                       if (gbWithNavPane)\r
+                       {\r
+                               var strHomePage = getHomePage();\r
+                               if (strHomePage.length != 0)\r
+                                       strURL = strHomePage + strURL;\r
+                       }       \r
+                       RedirectTo(strURL);\r
+                       return true;\r
+               }\r
+       }\r
+       FailToFind("Fail to find topic assocaite with topic number: " + nTopicNum);\r
+       return false;\r
+}\r
+\r
+//Find topic by topic id (alias id defined in ali file)\r
+function GetTopicNumberById(strTopicId)\r
+{\r
+   var i = 0;\r
+   var iEnd = gArrayCsh.length;\r
+   for (i=0; i<iEnd; i++)\r
+   {\r
+       if (gArrayCsh[i].strAliasId == strTopicId)\r
+       {\r
+           return gArrayCsh[i].nTopicNum;\r
+        }\r
+   }\r
+   gstrURL = "";\r
+   return -1;\r
+}\r
+\r
+//Set Context-sensitive help entity...\r
+function SetCsh(n, strAliasId, nTopicNum, strUrl)\r
+{\r
+   gArrayCsh[n] = new CshEntityItem(strAliasId,nTopicNum,strUrl);\r
+}\r
+\r
+\r
+function getHash()\r
+{\r
+       if (parent && parent != this)\r
+               return parent.location.hash;\r
+       else\r
+               return "";\r
+}\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+\r
+\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+//Find CSH according to hash string after this page\r
+if (getHash().length > 0)\r
+{\r
+   // VH 05/16/00 now support \r
+   // TopicID=\r
+   // TopicNumber=\r
+   // RemoteURL=   \r
+   // and WindowsOptions\r
+   // with the format #a=xxx,b=xxx,c=xxx...\r
+   var strHashString = getHash().toString();\r
+   // change ? to : for remote URL. because java applet have some problem to pass a URL with two : inside the URL so we changed it. \r
+   // so here need to change it back.\r
+   strHashString = strHashString.substring(1,strHashString.length);\r
+   strHashString = strHashString.replace("%072%057%057", "://");\r
+   var nTopicNum = GetTopicNumber(strHashString);\r
+\r
+   if (nTopicNum != -1)\r
+   {\r
+      FindTopicByTopicNum(nTopicNum);\r
+   }\r
+   else\r
+   {\r
+      if (gstrURL.length > 0) \r
+       RedirectTo(gstrURL);\r
+      else\r
+       RedirectToHomePage();\r
+   }\r
+}\r
+else\r
+{\r
+   RedirectToHomePage();\r
+}\r
+//-->\r
+</script>\r
+<noscript>\r
+ <p> Your browser does not support JavaScript. WebHelp Context-Sensitive Help requires JavaScript support to run.</p>\r
+</noscript>\r
+</body>\r
+</html>\r
+\r
+\r
+\r
+\r
+\r
+\r
diff --git a/doc/salome/gui/SMESH/default.css b/doc/salome/gui/SMESH/default.css
new file mode 100755 (executable)
index 0000000..d2d425a
--- /dev/null
@@ -0,0 +1,209 @@
+/*=(===============================================================)*/\r
+\r
+/*=(===============================================================)*/\r
+/*=(Created with RoboEditor.)=======================================*/\r
+/*=(===============================================================)*/\r
+\r
+BODY {\r
+       background-color: #ffffff;\r
+       font-family: "Times New Roman", serif;\r
+}\r
+\r
+H1 {\r
+       font-weight: bold;\r
+       font-size: 24.0pt;\r
+}\r
+\r
+/*=(Generated Code)=================================================*/\r
+/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
+/*begin!kadov{{=====================================================*/ \r
+LI.kadov-H1 {\r
+       font-weight: bold;\r
+       font-size: 24.0pt;\r
+}\r
+/*}}end!kadov=======================================================*/ \r
+\r
+\r
+\r
+H2 {\r
+       font-weight: bold;\r
+       font-size: 18.0pt;\r
+}\r
+\r
+/*=(Generated Code)=================================================*/\r
+/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
+/*begin!kadov{{=====================================================*/ \r
+LI.kadov-H2 {\r
+       font-weight: bold;\r
+       font-size: 18.0pt;\r
+}\r
+/*}}end!kadov=======================================================*/ \r
+\r
+\r
+\r
+H3 {\r
+       font-weight: bold;\r
+       font-size: 14.0pt;\r
+}\r
+\r
+/*=(Generated Code)=================================================*/\r
+/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
+/*begin!kadov{{=====================================================*/ \r
+LI.kadov-H3 {\r
+       font-weight: bold;\r
+       font-size: 14.0pt;\r
+}\r
+/*}}end!kadov=======================================================*/ \r
+\r
+\r
+\r
+H4 {\r
+       font-weight: bold;\r
+       font-size: 12.0pt;\r
+}\r
+\r
+/*=(Generated Code)=================================================*/\r
+/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
+/*begin!kadov{{=====================================================*/ \r
+LI.kadov-H4 {\r
+       font-weight: bold;\r
+       font-size: 12.0pt;\r
+}\r
+/*}}end!kadov=======================================================*/ \r
+\r
+\r
+\r
+H5 {\r
+       font-weight: bold;\r
+       font-size: 10.0pt;\r
+}\r
+\r
+/*=(Generated Code)=================================================*/\r
+/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
+/*begin!kadov{{=====================================================*/ \r
+LI.kadov-H5 {\r
+       font-weight: bold;\r
+       font-size: 10.0pt;\r
+}\r
+/*}}end!kadov=======================================================*/ \r
+\r
+\r
+\r
+H6 {\r
+       font-weight: bold;\r
+       font-size: 8.0pt;\r
+}\r
+\r
+/*=(Generated Code)=================================================*/\r
+/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
+/*begin!kadov{{=====================================================*/ \r
+LI.kadov-H6 {\r
+       font-weight: bold;\r
+       font-size: 8.0pt;\r
+}\r
+/*}}end!kadov=======================================================*/ \r
+\r
+\r
+\r
+P {\r
+       font-size: 12.0pt;\r
+       margin-top: 0pt;\r
+       margin-bottom: 0pt;\r
+}\r
+\r
+/*=(Generated Code)=================================================*/\r
+/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
+/*begin!kadov{{=====================================================*/ \r
+LI.kadov-P {\r
+       font-size: 12.0pt;\r
+}\r
+/*}}end!kadov=======================================================*/ \r
+\r
+\r
+\r
+A.expandspot {\r
+       color: #008000;\r
+       cursor: hand;\r
+       font-style: italic;\r
+       x-text-underline: off;\r
+       x-text-overline: off;\r
+       x-text-line-through: off;\r
+       /*begin!kadov{{*/ text-decoration: none none none; /*}}end!kadov*/ \r
+}\r
+\r
+SPAN.expandtext {\r
+       font-style: italic;\r
+       font-weight: normal;\r
+       color: #ff0000;\r
+}\r
+\r
+A.dropspot {\r
+       cursor: hand;\r
+       color: #008000;\r
+       font-style: italic;\r
+       x-text-underline: off;\r
+       x-text-overline: off;\r
+       x-text-line-through: off;\r
+       /*begin!kadov{{*/ text-decoration: none none none; /*}}end!kadov*/ \r
+}\r
+\r
+A.glossterm {\r
+       color: #800000;\r
+       cursor: hand;\r
+       font-style: italic;\r
+       x-text-underline: off;\r
+       x-text-overline: off;\r
+       x-text-line-through: off;\r
+       /*begin!kadov{{*/ text-decoration: none none none; /*}}end!kadov*/ \r
+}\r
+\r
+SPAN.glosstext {\r
+       font-style: italic;\r
+       font-weight: normal;\r
+       color: #0000ff;\r
+}\r
+\r
+OL,\r
+UL {\r
+       margin-top: 0px;\r
+       margin-bottom: 0px;\r
+}\r
+\r
+A:active {\r
+}\r
+\r
+A:hover {\r
+       x-text-underline: Off;\r
+       /*begin!kadov{{*/ text-decoration: none; /*}}end!kadov*/ \r
+}\r
+\r
+A:link {\r
+       x-text-underline: Off;\r
+       /*begin!kadov{{*/ text-decoration: none; /*}}end!kadov*/ \r
+}\r
+\r
+A:visited {\r
+       x-text-underline: Off;\r
+       /*begin!kadov{{*/ text-decoration: none; /*}}end!kadov*/ \r
+}\r
+\r
+P.TODO {\r
+       font-weight: normal;\r
+       font-style: italic;\r
+       font-family: "Arial Black", sans-serif;\r
+}\r
+\r
+/*=(Generated Code)=================================================*/\r
+/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
+/*begin!kadov{{=====================================================*/ \r
+LI.kadov-P-CTODO {\r
+       font-weight: normal;\r
+       font-style: italic;\r
+       font-family: "Arial Black", sans-serif;\r
+}\r
+/*}}end!kadov=======================================================*/ \r
+\r
+\r
+\r
+\r
+/*=(===============================================================)*/\r
diff --git a/doc/salome/gui/SMESH/default.skn b/doc/salome/gui/SMESH/default.skn
new file mode 100755 (executable)
index 0000000..f162a66
--- /dev/null
@@ -0,0 +1,262 @@
+<?xml version="1.0"?>\r
+<sqwebskin version="1.0">\r
+       <summary>\r
+               <skinname>Default</skinname>\r
+               <defaulttab>Contents</defaulttab>\r
+               <font>font-family:Arial font-size:8pt font-weight:normal font-style:normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal</font>\r
+               <color></color>\r
+       </summary>\r
+       <panesummary>\r
+               <![CDATA[\r
+<frameset rows="32,*" >\r
+<frame name="Custom Toolbar Pane" noresize="yes" scrolling="no" id="3" />\r
+<frameset cols="220,*" frameborder="1" borderspace="0" >\r
+<frameset rows="24,*" >\r
+<frame name="MiniBar Pane" marginwidth="-1" scrolling="no" id="6" />\r
+<frame name="Navigation Pane" id="2" />\r
+</frameset>\r
+<frame name="Topic Pane" frameborder="1" borderspace="1" bordercolor="Gray" marginwidth="-1" marginheight="-1" id="4" />\r
+</frameset>\r
+</frameset>\r
+]]>\r
+       </panesummary>\r
+       <frameset rows="32,*">\r
+               <frame name="Custom Toolbar Pane" noresize="yes" scrolling="no" id="3"/>\r
+               <frameset cols="220,*" frameborder="1" borderspace="0">\r
+                       <frameset rows="24,*">\r
+                               <frame name="MiniBar Pane" marginwidth="-1" scrolling="no" id="6"/>\r
+                               <frame name="Navigation Pane" id="2"/>\r
+                       </frameset>\r
+                       <frame name="Topic Pane" frameborder="1" borderspace="1" bordercolor="Gray" marginwidth="-1" marginheight="-1" id="4"/>\r
+               </frameset>\r
+       </frameset>\r
+       <pane name="Custom Toolbar Pane">\r
+               <image></image>\r
+               <color>background:#99ccff</color>\r
+               <font>font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Black</font>\r
+               <btnselected>\r
+                       <color>background:#639ace</color>\r
+                       <font>font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:White</font>\r
+               </btnselected>\r
+               <alignment>left</alignment>\r
+               <toolbaritem mode="BtnWithIcon Mode" type="built-in-content" id="1">\r
+                       <name>Contents</name>\r
+                       <text>::??DefaultWebSkinText??::</text>\r
+                       <color></color>\r
+                       <image></image>\r
+                       <icontype>default</icontype>\r
+                       <selected>\r
+                               <color></color>\r
+                               <image></image>\r
+                               <icontype>default</icontype>\r
+                       </selected>\r
+                       <style>100</style>\r
+               </toolbaritem>\r
+               <toolbaritem mode="BtnWithIcon Mode" type="built-in-index" id="2">\r
+                       <name>Index</name>\r
+                       <text>::??DefaultWebSkinText??::</text>\r
+                       <color></color>\r
+                       <image></image>\r
+                       <icontype>default</icontype>\r
+                       <selected>\r
+                               <color></color>\r
+                               <image></image>\r
+                               <icontype>default</icontype>\r
+                       </selected>\r
+                       <style>100</style>\r
+               </toolbaritem>\r
+               <toolbaritem mode="BtnWithIcon Mode" type="built-in-search" id="3">\r
+                       <name>Search</name>\r
+                       <text>::??DefaultWebSkinText??::</text>\r
+                       <color></color>\r
+                       <image></image>\r
+                       <icontype>default</icontype>\r
+                       <selected>\r
+                               <color></color>\r
+                               <image></image>\r
+                               <icontype>default</icontype>\r
+                       </selected>\r
+                       <style>100</style>\r
+               </toolbaritem>\r
+               <toolbaritem mode="BtnWithIcon Mode" type="built-in-glossary" id="4">\r
+                       <name>Glossary</name>\r
+                       <text>::??DefaultWebSkinText??::</text>\r
+                       <color></color>\r
+                       <image></image>\r
+                       <icontype>default</icontype>\r
+                       <selected>\r
+                               <color></color>\r
+                               <image></image>\r
+                               <icontype>default</icontype>\r
+                       </selected>\r
+                       <style>100</style>\r
+               </toolbaritem>\r
+               <toolbaritem mode="BtnWithIcon Mode" type="built-in-websearch" id="5">\r
+                       <name>WebSearch</name>\r
+                       <text>::??DefaultWebSkinText??::</text>\r
+                       <color></color>\r
+                       <image></image>\r
+                       <icontype>default</icontype>\r
+                       <selected>\r
+                               <color></color>\r
+                               <image></image>\r
+                               <icontype>default</icontype>\r
+                       </selected>\r
+                       <style>100</style>\r
+               </toolbaritem>\r
+               <toolbaritem mode="Form Mode" type="built-in-form" id="6">\r
+                       <name>Search Input</name>\r
+                       <image></image>\r
+                       <color></color>\r
+                       <textbox width="20"/>\r
+                       <title>\r
+                               <text></text>\r
+                       </title>\r
+                       <button mode="default graphic mode">\r
+                       </button>\r
+               </toolbaritem>\r
+               <toolbaritem mode="Logo Mode" type="built-in-logo" id="7">\r
+                       <name>Logo</name>\r
+                       <image></image>\r
+                       <author>eHelp Corporation</author>\r
+               </toolbaritem>\r
+       </pane>\r
+       <pane name="MiniBar Pane">\r
+               <image></image>\r
+               <color>background:#99ccff</color>\r
+               <font>font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Black</font>\r
+               <btnselected>\r
+                       <color>background:#639ace</color>\r
+                       <font>font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:White</font>\r
+               </btnselected>\r
+               <toolbaritem mode="BtnWithIcon Mode" type="built-in-previous" id="8">\r
+                       <name>Previous</name>\r
+                       <text>::??DefaultWebSkinText??::</text>\r
+                       <color></color>\r
+                       <image></image>\r
+                       <icontype>default</icontype>\r
+                       <selected>\r
+                               <color></color>\r
+                               <image></image>\r
+                               <icontype>default</icontype>\r
+                       </selected>\r
+                       <style>100</style>\r
+               </toolbaritem>\r
+               <toolbaritem mode="BtnWithIcon Mode" type="built-in-next" id="9">\r
+                       <name>Next</name>\r
+                       <text>::??DefaultWebSkinText??::</text>\r
+                       <color></color>\r
+                       <image></image>\r
+                       <icontype>default</icontype>\r
+                       <selected>\r
+                               <color></color>\r
+                               <image></image>\r
+                               <icontype>default</icontype>\r
+                       </selected>\r
+                       <style>100</style>\r
+               </toolbaritem>\r
+               <toolbaritem mode="BtnWithIcon Mode" type="built-in-synctoc" id="10">\r
+                       <name>Sync TOC</name>\r
+                       <text>::??DefaultWebSkinText??::</text>\r
+                       <color></color>\r
+                       <image></image>\r
+                       <icontype>default</icontype>\r
+                       <selected>\r
+                               <color></color>\r
+                               <image></image>\r
+                               <icontype>default</icontype>\r
+                       </selected>\r
+                       <style>100</style>\r
+               </toolbaritem>\r
+               <toolbaritem mode="BtnWithIcon Mode" type="built-in-hide" id="11">\r
+                       <name>Hide</name>\r
+                       <text>::??DefaultWebSkinText??::</text>\r
+                       <color></color>\r
+                       <image></image>\r
+                       <icontype>default</icontype>\r
+                       <selected>\r
+                               <color></color>\r
+                               <image></image>\r
+                               <icontype>default</icontype>\r
+                       </selected>\r
+                       <style>100</style>\r
+               </toolbaritem>\r
+       </pane>\r
+       <pane name="Navigation Pane">\r
+               <image></image>\r
+               <color></color>\r
+               <label>\r
+                       <image></image>\r
+                       <color></color>\r
+               </label>\r
+               <subpane name="Contents">\r
+                       <image></image>\r
+                       <color>background:White alink:Silver hover-color:Navy</color>\r
+                       <font>font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Black</font>\r
+               </subpane>\r
+               <subpane name="Index">\r
+                       <image></image>\r
+                       <color>background:White alink:Silver hover-color:Navy</color>\r
+                       <font>font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Black</font>\r
+                       <inputbox>\r
+                               <image></image>\r
+                               <color>background:White</color>\r
+                               <textbox width="0"/>\r
+                               <title>\r
+                                       <text>::??DefaultWebSkinText??::</text>\r
+                                       <font>font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Navy</font>\r
+                               </title>\r
+                               <button mode="none">\r
+                               </button>\r
+                       </inputbox>\r
+               </subpane>\r
+               <subpane name="Search">\r
+                       <image></image>\r
+                       <color>background:White alink:Silver hover-color:Navy</color>\r
+                       <font>font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Black</font>\r
+                       <inputbox>\r
+                               <image></image>\r
+                               <color>background:White</color>\r
+                               <textbox width="0"/>\r
+                               <title>\r
+                                       <text>::??DefaultWebSkinText??::</text>\r
+                                       <font>font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Navy</font>\r
+                               </title>\r
+                               <button mode="default graphic mode">\r
+                               </button>\r
+                       </inputbox>\r
+               </subpane>\r
+               <subpane name="Glossary">\r
+                       <image></image>\r
+                       <color>background:White alink:Silver hover-color:Navy</color>\r
+                       <font>font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Black</font>\r
+                       <definitiontext>\r
+                               <text>::??DefaultWebSkinText??::</text>\r
+                               <font>font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Navy</font>\r
+                               <color>background:White</color>\r
+                               <image></image>\r
+                       </definitiontext>\r
+                       <definition>\r
+                               <text>::??DefaultWebSkinText??::</text>\r
+                               <color></color>\r
+                               <image></image>\r
+                       </definition>\r
+                       <termtext>\r
+                               <text>::??DefaultWebSkinText??::</text>\r
+                               <font>font-family:Tahoma font-size:8pt font-weight:Normal font-style:Normal text-decoration:none font-sizeadjust:none font-stretch:normal font-variant:normal font-color:Navy</font>\r
+                               <color>background:White</color>\r
+                               <image></image>\r
+                       </termtext>\r
+                       <term>\r
+                               <text>::??DefaultWebSkinText??::</text>\r
+                               <color></color>\r
+                               <image></image>\r
+                       </term>\r
+               </subpane>\r
+       </pane>\r
+       <pane name="Topic Pane">\r
+               <in-topic-navbar>\r
+                       <alignment>none</alignment>\r
+               </in-topic-navbar>\r
+       </pane>\r
+</sqwebskin>\r
diff --git a/doc/salome/gui/SMESH/default_ns.css b/doc/salome/gui/SMESH/default_ns.css
new file mode 100755 (executable)
index 0000000..020a671
--- /dev/null
@@ -0,0 +1,122 @@
+BODY { \r
+      background-color:#ffffff; \r
+      font-family:"Times New Roman" , serif;  }\r
+H1 { \r
+    font-weight:bold; \r
+    font-size:24.0pt; \r
+    font-family:"Times New Roman" , serif;  }\r
+LI.kadov-H1 { \r
+             font-weight:bold; \r
+             font-size:24.0pt;  }\r
+H2 { \r
+    font-weight:bold; \r
+    font-size:18.0pt; \r
+    font-family:"Times New Roman" , serif;  }\r
+LI.kadov-H2 { \r
+             font-weight:bold; \r
+             font-size:18.0pt;  }\r
+H3 { \r
+    font-weight:bold; \r
+    font-size:14.0pt; \r
+    font-family:"Times New Roman" , serif;  }\r
+LI.kadov-H3 { \r
+             font-weight:bold; \r
+             font-size:14.0pt;  }\r
+H4 { \r
+    font-weight:bold; \r
+    font-size:12.0pt; \r
+    font-family:"Times New Roman" , serif;  }\r
+LI.kadov-H4 { \r
+             font-weight:bold; \r
+             font-size:12.0pt;  }\r
+H5 { \r
+    font-weight:bold; \r
+    font-size:10.0pt; \r
+    font-family:"Times New Roman" , serif;  }\r
+LI.kadov-H5 { \r
+             font-weight:bold; \r
+             font-size:10.0pt;  }\r
+H6 { \r
+    font-weight:bold; \r
+    font-size:8.0pt; \r
+    font-family:"Times New Roman" , serif;  }\r
+LI.kadov-H6 { \r
+             font-weight:bold; \r
+             font-size:8.0pt;  }\r
+P { \r
+   font-size:12.0pt; \r
+   margin-top:1; \r
+   margin-bottom:1; \r
+   font-family:"Times New Roman" , serif;  }\r
+LI.kadov-P { \r
+            font-size:12.0pt;  }\r
+A.expandspot { \r
+              color:#008000; \r
+              cursor:hand; \r
+              font-style:italic; \r
+              x-text-underline:off; \r
+              x-text-overline:off; \r
+              x-text-line-through:off; \r
+              text-decoration:none none none;  }\r
+SPAN.expandtext { \r
+                 font-style:italic; \r
+                 font-weight:normal; \r
+                 color:#ff0000;  }\r
+A.dropspot { \r
+            cursor:hand; \r
+            color:#008000; \r
+            font-style:italic; \r
+            x-text-underline:off; \r
+            x-text-overline:off; \r
+            x-text-line-through:off; \r
+            text-decoration:none none none;  }\r
+A.glossterm { \r
+             color:#800000; \r
+             cursor:hand; \r
+             font-style:italic; \r
+             x-text-underline:off; \r
+             x-text-overline:off; \r
+             x-text-line-through:off; \r
+             text-decoration:none none none;  }\r
+SPAN.glosstext { \r
+                font-style:italic; \r
+                font-weight:normal; \r
+                color:#0000ff;  }\r
+OL { \r
+    margin-top:0px; \r
+    margin-bottom:0px; \r
+    font-family:"Times New Roman" , serif;  }\r
+UL { \r
+    margin-top:0px; \r
+    margin-bottom:0px; \r
+    font-family:"Times New Roman" , serif;  }\r
+A:active {  }\r
+A:hover { \r
+         x-text-underline:Off; \r
+         text-decoration:none;  }\r
+A:link { \r
+        x-text-underline:Off; \r
+        text-decoration:none;  }\r
+A:visited { \r
+           x-text-underline:Off; \r
+           text-decoration:none;  }\r
+P.TODO { \r
+        font-weight:normal; \r
+        font-style:italic; \r
+        font-family:"Arial Black" , sans-serif;  }\r
+LI.kadov-P-CTODO { \r
+                  font-weight:normal; \r
+                  font-style:italic; \r
+                  font-family:"Arial Black" , sans-serif;  }\r
+ol ol { \r
+       margin-top:1; \r
+       margin-bottom:1;  }\r
+ol ul { \r
+       margin-top:1; \r
+       margin-bottom:1;  }\r
+ul ul { \r
+       margin-top:1; \r
+       margin-bottom:1;  }\r
+ul ol { \r
+       margin-top:1; \r
+       margin-bottom:1;  }\r
diff --git a/doc/salome/gui/SMESH/ehlpdhtm.js b/doc/salome/gui/SMESH/ehlpdhtm.js
new file mode 100755 (executable)
index 0000000..86d26ea
--- /dev/null
@@ -0,0 +1,4033 @@
+// eHelp® Corporation Dynamic HTML JavaScript \r
+// Copyright© 1998-2001 eHelp® Corporation.All rights reserved.\r
+// Version=4.57\r
+\r
+// Warning:Do not modify this file.It is generated by RoboHELP® and changes will be overwritten.\r
+\r
+//// Segment Begin -- (JavaScript 1.0)\r
+\r
+/// Section Begin - General and relative topics(JavaScript 1.0)\r
+\r
+//{{HH_SYMBOL_SECTION\r
+var HH_ChmFilename = "";\r
+var HH_WindowName = "";\r
+var HH_GlossaryFont = "";\r
+var HH_Glossary = "";\r
+var HH_Avenue = "";\r
+var HH_ActiveX = false;\r
+//}}HH_SYMBOL_SECTION\r
+\r
+//Begin to support previous generic parameters\r
+//Get the information about the browser.\r
+var gstrBsAgent        = navigator.userAgent.toLowerCase();\r
+var gnBsVer                    = parseInt(navigator.appVersion);\r
+\r
+var gbBsIE             = (gstrBsAgent.indexOf('msie') != -1);\r
+var gbBsNS             = (gstrBsAgent.indexOf('mozilla') != -1) && ((gstrBsAgent.indexOf('spoofer') == -1) && (gstrBsAgent.indexOf('compatible') == -1));\r
+var gbBsOpera          = (gstrBsAgent.indexOf('opera') != -1);\r
+\r
+var gbBsIE3Before      = ((gbBsIE) && (gnBsVer <= 2));\r
+var gbBsNS3Before      = ((gbBsNS) && (gnBsVer <= 3));\r
+\r
+var gbBsNS2                    = ((gbBsNS) && (gnBsVer <= 2));\r
+var gbBsNS3                    = ((gbBsNS) && (gnBsVer == 3));\r
+var gbBsIE300301       = ((gbBsIE) && (gnBsVer == 2) && ((gstrBsAgent.indexOf("3.00") != -1)||(gstrBsAgent.indexOf("3.0a") != -1)||(gstrBsAgent.indexOf("3.0b")!=-1)||(gstrBsAgent.indexOf("3.01")!=-1)));\r
+var gbBsIE302          = ((gbBsIE) && (gnBsVer == 2) && (gstrBsAgent.indexOf("3.02") != -1));\r
+\r
+var gbBsNS4                    = ((gbBsNS) && (gnBsVer >= 4));\r
+var gbBsNS6                    = ((gbBsNS) && (gnBsVer >= 5));\r
+\r
+var gbBsIE4                    = ((gbBsIE) && (gnBsVer >= 4));\r
+var gbBsIE5                    = false;\r
+var gbBsIE55           = false;\r
+\r
+gbBsIE = (navigator.appName.indexOf("Microsoft") != -1);\r
+\r
+if (parseInt(navigator.appVersion) >= 4) {\r
+       gbBsIE4 = (navigator.appName.indexOf("Microsoft") != -1);\r
+\r
+       if (gbBsIE4) {\r
+               var nPos = gstrBsAgent.indexOf("msie");\r
+               var strIEversion = gstrBsAgent.substring(nPos + 5);\r
+               var nVersion =  parseFloat(strIEversion);\r
+               if (nVersion >= 5)\r
+                       gbBsIE5 = true;\r
+               if (nVersion >= 5.5)\r
+                       gbBsIE55 = true;\r
+       }\r
+}\r
+\r
+var gbBsMac                    = (gstrBsAgent.indexOf('mac') != -1);\r
+var gbBsWindows                = ((gstrBsAgent.indexOf('win') != -1) || (gstrBsAgent.indexOf('16bit') != -1));\r
+var gbBsOp3                    = (gstrBsAgent.indexOf('opera') != -1);\r
+\r
+// Utilities functions.\r
+function BsscHasExtJs()\r
+{\r
+       if( gbBsIE3Before || gbBsNS3Before)\r
+               return false;\r
+       return true;\r
+}\r
+\r
+// Register event handler\r
+var gBsOnLoads                         = new Array();  // An array holds all the onload event handler.\r
+var gBsOnClicks                = new Array();  // An array holds all the onClick event handler.\r
+var gBsOnUnLoads               = new Array();  // An array holds all the OnUnLoad event handler.\r
+var gBsOnMouseOvers    = new Array();  // An array holds all the OnMouseOver event handler.\r
+var gBsOnMouseOuts             = new Array();  // An array holds all the OnMouseOut event handler.\r
+\r
+var gbOrignalOnMouseDown = null;\r
+\r
+function BsscRegisterOnLoad(funcHandler)\r
+{\r
+       var nLength = gBsOnLoads.length;\r
+       gBsOnLoads[nLength] = funcHandler;\r
+}\r
+\r
+function BsscRegisterOnClick(funcHandler)\r
+{\r
+       var nLength = gBsOnClicks.length;\r
+       gBsOnClicks[nLength] = funcHandler;\r
+}\r
+\r
+function BsscRegisterOnUnLoad(funcHandler)\r
+{\r
+       var nLength = gBsOnUnLoads.length;\r
+       gBsOnUnLoads[nLength] = funcHandler;\r
+}\r
+\r
+function BsscRegisterOnMouseOver(funcHandler)\r
+{\r
+       var nLength = gBsOnMouseOvers.length;\r
+       gBsOnMouseOvers[nLength] = funcHandler;\r
+}\r
+\r
+function BsscRegisterOnMouseOut(funcHandler)\r
+{\r
+       var nLength = gBsOnMouseOuts.length;\r
+       gBsOnMouseOuts[nLength] = funcHandler;\r
+}\r
+\r
+\r
+function BsGeneralOnLoad()\r
+{\r
+       if (!gbBsIE4 && !gbBsNS4)\r
+               return;\r
+\r
+       // Make everything visible in navigator\r
+       if (gbBsNS4 && !gbBsNS6) {\r
+               // Make some special effects items visible\r
+               for (var iLayer = 0; iLayer < document.layers.length; iLayer++) {\r
+                       document.layers[iLayer].visibility = "show";\r
+                       document.layers[iLayer].left = 0;\r
+               }\r
+       }\r
+}\r
+\r
+// If resize the netscape browser, need to reload it.\r
+function BsReDo()\r
+{\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+// End of the local functions.\r
+\r
+// The following functions are used by the html files.\r
+function BSSCOnLoad()\r
+{\r
+       if( !BsscHasExtJs() )\r
+               return;\r
+       for (var nElement = gBsOnLoads.length - 1; nElement >= 0; nElement--)\r
+               gBsOnLoads[nElement]();\r
+}\r
+\r
+function BSSCOnClick()\r
+{\r
+       if (!BsscHasExtJs()) return;\r
+               \r
+       for (var nElement = gBsOnClicks.length - 1; nElement >= 0; nElement--)\r
+               gBsOnClicks[nElement]();\r
+}\r
+\r
+function BSSCOnUnload()\r
+{\r
+       if (!BsscHasExtJs()) return;\r
+       for (var nElement = gBsOnUnLoads.length - 1; nElement >= 0; nElement--)\r
+       {\r
+               gBsOnUnLoads[nElement]();\r
+       }\r
+}\r
+\r
+function BSSCOnMouseOver()\r
+{\r
+       if (!BsscHasExtJs()) return;\r
+       for (var nElement = gBsOnMouseOvers.length - 1; nElement >= 0; nElement--)\r
+       {\r
+               gBsOnMouseOvers[nElement]();\r
+       }\r
+}\r
+\r
+function BSSCOnMouseOut()\r
+{\r
+       if (!BsscHasExtJs()) return;\r
+       for (var nElement = gBsOnMouseOuts.length - 1; nElement >= 0; nElement--)\r
+       {\r
+               gBsOnMouseOuts[nElement]();\r
+       }\r
+}\r
+// End of invocation of the event handle functions.\r
+\r
+\r
+// Add the GereralOnLoad to the onload array.\r
+if (typeof(BsscRegisterOnLoad) != "undefined")\r
+{\r
+       BsscRegisterOnLoad(BsGeneralOnLoad);\r
+}\r
+if (gbBsNS4&&!gbBsNS6) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = BsReDo;\r
+}\r
+//End to support previous generic parameters\r
+\r
+//Begin to support previous HHActiveX invoking\r
+function BsHHActivateComponents()\r
+{\r
+       if( HH_ActiveX && (HH_ChmFilename != "") && ((self == top) || (self == top.frames[0])))\r
+       {\r
+               var objBody = document.all.tags("BODY")[0];\r
+               if( typeof(objBody) == "object" )\r
+               {\r
+                       objBody.insertAdjacentHTML("beforeEnd", '<OBJECT ID="HHComponentActivator" CLASSID="CLSID:399CB6C4-7312-11D2-B4D9-00105A0422DF" width=0 height=0></OBJECT>');\r
+                       if (HHComponentActivator.object)\r
+                               HHComponentActivator.Activate(HH_ChmFilename, HH_WindowName, HH_GlossaryFont, HH_Glossary, HH_Avenue);\r
+               }\r
+       }\r
+}\r
+\r
+function BsHHActivXOnLoad()\r
+{      \r
+       if( gbBsIE4 )\r
+               BsHHActivateComponents(); \r
+}\r
+\r
+if( typeof(BsscRegisterOnLoad) != "undefined" )\r
+{\r
+       BsscRegisterOnLoad(BsHHActivXOnLoad);\r
+}\r
+//End to support previous HHActiveX invoking\r
+\r
+//Begin to support previous relative topics\r
+//If webHelp needs Related Topics DHTMLcode, it's supposed to add it here\r
+var gbPopupMenuTimeoutExpired = false;\r
+var gbInPopupMenu = false;\r
+var gbPopupMenuTopicList = null;\r
+var gOlddocumentClick = null;\r
+\r
+//////////////////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Popup Menu code\r
+//\r
+//////////////////////////////////////////////////////////////////////////////////////////\r
+\r
+var g_bIsPopupMenuInit = false;\r
+function _WritePopupMenuLayer()\r
+{\r
+       if (!g_bIsPopupMenuInit)\r
+        {\r
+         if (gbBsNS4) {\r
+//Do not try to write ininle styles for NS!  NS can not handle it and will not stop downloading the html page...\r
+          if (gbBsNS6)\r
+               document.write("<DIV ID='PopupMenu' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>");\r
+          else\r
+               document.write("<DIV CLASS='WebHelpPopupMenu' ID='PopupMenu'></DIV>");\r
+         } else{\r
+         document.write("<DIV ID='PopupMenu' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>");\r
+         if (gbBsIE4) {\r
+               document.write("<STYLE TYPE='text/css'>");\r
+               if (gbBsMac) {\r
+                       document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:10pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
+                       document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:10pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
+               } else {\r
+                       document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:8pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
+                       document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:8pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
+               }\r
+               document.write("</STYLE>");\r
+          }\r
+          }\r
+         g_bIsPopupMenuInit = true;\r
+       }\r
+}\r
+\r
+//Define variable arguments as: strTitle, strUrl\r
+function MTE() \r
+{\r
+       this.strTitle = MTE.arguments[0];\r
+       if (MTE.arguments.length > 1)\r
+               this.strURL = MTE.arguments[1];\r
+       else\r
+               this.strURL = this.strTitle;\r
+}\r
+\r
+// If the topic list is set, it is an array of TopicEntry objects (defined in WebHelp3.js)\r
+function PopupMenu_SetTopicList(aPopupTopicArray)\r
+{\r
+       gbPopupMenuTopicList = aPopupTopicArray;\r
+}\r
+\r
+\r
+//Seek for the bsscright frame \r
+function _SeekFrameByName( cRoot, strName )\r
+{\r
+       if( cRoot == null )     return null;\r
+       if( cRoot.frames == null )      return null;\r
+       if( cRoot.frames[strName] != null )     return cRoot.frames[strName];\r
+       for (var i=0; i<cRoot.frames.length; i++)\r
+       {\r
+               var cObj = null;\r
+               if (!gbBsNS6) \r
+                       cObj = _SeekFrameByName( cRoot.frames(i).document, strName );\r
+               else\r
+                       cObj = _SeekFrameByName( cRoot.frames[i], strName );\r
+               if( cObj != null )              return cObj;\r
+       };\r
+       return null;\r
+}\r
+function _GetFrameByName( cRoot, strName )\r
+{\r
+       if( cRoot == null )     return null;\r
+       var cRet = _SeekFrameByName(cRoot, strName);\r
+       if( cRet != null )      return cRet;\r
+       if (cRoot.parent != cRoot)\r
+               return _GetFrameByName( cRoot.parent, strName );\r
+       else\r
+               return null;\r
+}\r
+\r
+function _PopupMenu_Invoke(fn_arguments)\r
+{\r
+       // Make sure we have reasonable arguments\r
+       var argLen = fn_arguments.length;\r
+       if (argLen < 3) {\r
+               return false;\r
+       }\r
+\r
+       // Check to see if we only have one target\r
+       var strTarget = "";\r
+       var targetDoc = null;\r
+       if (fn_arguments[1] == '') {\r
+               if (BSSCPopup_IsPopup()) {\r
+                       targetDoc = parent;\r
+                       strTarget = "TARGET= _parent";\r
+               }\r
+               else\r
+                       targetDoc = window.document;\r
+       } else {\r
+               targetDoc = _GetFrameByName( parent, fn_arguments[1] );\r
+\r
+               strTarget = "TARGET='" + fn_arguments[1] + "'";\r
+       }\r
+\r
+       if ((!gbBsIE4 && !gbBsNS4) || ((gbBsMac) && (gbBsIE4) && (window.event.srcElement.tagName == "AREA"))) {\r
+       \r
+               var argLen      = fn_arguments.length;\r
+\r
+               // Create the window that the hyperlinks will go into\r
+               var nHeight = argLen * 15;\r
+               var nWidth = 400;\r
+               var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=auto";\r
+               strParam += ",height=" + nHeight + ",width=200";\r
+               strParam += ",resizable";\r
+\r
+               // Create a temporary window first to ensure the real popup comes up on top\r
+               var wndTemp = window.open("", "temp", strParam);\r
+\r
+               // Create the real popup window\r
+               var wndPopupLinks = window.open("", "popuplinks", strParam);\r
+\r
+               // Close the temporary\r
+               wndTemp.close();\r
+\r
+               wndPopupLinks.document.open("text/html");\r
+               wndPopupLinks.document.write("<html><head></head>");\r
+               wndPopupLinks.document.write("<body onBlur=\'self.focus();\'>");\r
+               var strParaLine = "";\r
+               for (var i = 0; i < (argLen - 2) / 2; i++) {\r
+                       strParaLine = "";\r
+                       strParaLine += "<a href=\"javascript:";\r
+                       if (gbBsIE) {\r
+                               strParaLine += "onBlur=null; ";\r
+                       }\r
+                       strParaLine += "opener.location=\'";\r
+                       strParaLine += fn_arguments[2 * i + 3];\r
+                       strParaLine += "\';close();\"";\r
+                       strParaLine += strTarget;\r
+\r
+                       strParaLine += ">";\r
+                       strParaLine += fn_arguments[2 * i + 2];\r
+                       strParaLine += "</a>";\r
+                       strParaLine += "<br>";\r
+                       wndPopupLinks.document.write(strParaLine);\r
+               }\r
+               wndPopupLinks.document.write("</body></html>");\r
+               wndPopupLinks.document.close();\r
+               window.gbInPopupMenu = true;\r
+               if (!gbBsIE) {\r
+                       wndPopupLinks.focus();\r
+               }\r
+\r
+               return false;\r
+       }\r
+\r
+\r
+       if (((argLen < 5) && ((isNaN(fn_arguments[2])) || (gbPopupMenuTopicList == null))) ||\r
+               ((argLen < 4) && ((!isNaN(fn_arguments[2])) && (gbPopupMenuTopicList != null)))) {\r
+               // Get the place that we will be putting the topic into\r
+               var strURL = "";\r
+               if (isNaN(fn_arguments[2]) ||  (gbPopupMenuTopicList == null)) {\r
+                       strURL = fn_arguments[3];\r
+               }\r
+               else    {\r
+                       strURL = gbPopupMenuTopicList[fn_arguments[2]].strURL;\r
+               }\r
+\r
+               if (targetDoc != null) {\r
+                       targetDoc.location.href = strURL;\r
+               }\r
+               else {\r
+                       if (fn_arguments[1] != null && typeof(fn_arguments[1]) != "undefined")\r
+                               window.open(strURL, fn_arguments[1]);\r
+                       else\r
+                               window.open(strURL);\r
+               }               \r
+               window.gbInPopupMenu = true;\r
+               return false;\r
+       }\r
+       \r
+       var strMenu = "";\r
+       if (gbBsNS4) {\r
+               strMenu = '<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=3 BGCOLOR="#c0c0c0">';\r
+       } else {\r
+               strMenu = '<TABLE STYLE="border:2px outset white;" CELLSPACING=0';\r
+               if (gbBsMac) {\r
+                       strMenu += ' CELLPADDING=4';\r
+               } else {\r
+                       strMenu += ' CELLPADDING=2';\r
+               }       \r
+               strMenu += ' BGCOLOR=#c0c0c0>';\r
+       }\r
+       // Add each of the items\r
+       var i = 2;\r
+       while (i <= argLen - 1) {\r
+               strMenu += '<TR><TD><NOBR>'\r
+               // If the destination is a number then look it up in the topic list\r
+               if (isNaN(fn_arguments[i]) ||  (gbPopupMenuTopicList == null)) {\r
+                       strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + fn_arguments[i + 1] + '"' + strTarget;\r
+               } else {\r
+                       strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + gbPopupMenuTopicList[fn_arguments[i]].strURL + '"' + strTarget;\r
+               }\r
+               strMenu += ' onclick="PopupMenu_HandleClick(event);"';\r
+               strMenu += ' onmouseover="PopupMenu_Over(event);"';\r
+               strMenu += ' onmouseout="PopupMenu_Out(event);"';\r
+               strMenu += '>';\r
+               if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) {\r
+                       strMenu += '<SPAN CLASS="PopupNotOver">' + fn_arguments[i] + '</SPAN>';\r
+               } else {\r
+                       strMenu += '<SPAN CLASS="PopupNotOver">' + gbPopupMenuTopicList[fn_arguments[i]].strTitle + '</SPAN>';\r
+               }\r
+               strMenu += '</A></DIV></NOBR></TD></TR>';\r
+\r
+               if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) {\r
+                       i += 2;\r
+               } else {\r
+                       i += 1;\r
+               }\r
+       }\r
+       strMenu += "</TABLE>";\r
+\r
+       if (gbBsMac) {\r
+       // totally hack. because ie5 in mac need something. </TABLE> is one of them. mac is mad.\r
+               strMenu +="<TABLE></TABLE>";\r
+       }\r
+\r
+       var layerPopup = null;\r
+       var stylePopup = null;\r
+       var nEventX = 0;\r
+       var nEventY = 0;\r
+       var nWindowWidth = 0;\r
+       if (gbBsIE4) {\r
+\r
+               layerPopup = document.all["PopupMenu"];\r
+               layerPopup.innerHTML = strMenu;\r
+               stylePopup = layerPopup.style;\r
+\r
+               _BSPSGetClientSize();\r
+\r
+               // Get the position of the item causing the event (relative to its parent)\r
+               nEventX = window.event.clientX;\r
+               nEventY = window.event.clientY;\r
+\r
+               if (nEventY + layerPopup.scrollHeight + 10 < gBsClientHeight) {\r
+                       nEventY += document.body.scrollTop + 10;\r
+               } else {\r
+                       nEventY = (document.body.scrollTop + gBsClientHeight) - layerPopup.scrollHeight - 20;\r
+               }\r
+               stylePopup.top = nEventY;\r
+               \r
+               var nPopupWidth = layerPopup.scrollWidth;\r
+               if (gbBsMac) {\r
+                       nPopupWidth = 80; // we have no idea how to get the dynamic width of the popup.\r
+               }\r
+               if (nEventX + nPopupWidth + 20 > gBsClientWidth) {\r
+                       if (gBsClientWidth - nPopupWidth < 5) {\r
+                               stylePopup.left = 5;\r
+                       } else {\r
+                               stylePopup.left = gBsClientWidth - nPopupWidth - 5;\r
+                       }\r
+               } else {\r
+                       stylePopup.left = nEventX + document.body.scrollLeft + 20;\r
+               }\r
+\r
+               stylePopup.visibility = "visible";\r
+               if (!gOlddocumentClick && document.onclick)\r
+                       gOlddocumentClick = document.onclick;\r
+               document.onclick = PopupMenu_HandleClick;\r
+\r
+       } else if (gbBsNS6) {\r
+               layerPopup = document.getElementById("PopupMenu");\r
+               layerPopup.style.visibility = "hidden";\r
+       \r
+               var e = fn_arguments[0];\r
+               nEventX = e.pageX;\r
+               nEventY = e.pageY;\r
+               _BSPSGetClientSize();\r
+               layerPopup.innerHTML = strMenu;\r
+\r
+               if (nEventY + layerPopup.offsetHeight + 20  <  window.pageYOffset + gBsClientHeight) {\r
+                       nEventY += 20;\r
+               } else {\r
+                       nEventY = gBsClientHeight + window.pageYOffset - layerPopup.offsetHeight - 20;\r
+               }\r
+\r
+               if (nEventX + layerPopup.offsetWidth + 20 > gBsClientWidth + window.pageXOffset) {\r
+                       if (gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth < 20) {\r
+                               nEventX = 5;\r
+                       } else {\r
+                               nEventX = gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth - 20;\r
+                       }\r
+               } else {\r
+                       nEventX += 20;\r
+               }\r
+               layerPopup.style.top = nEventY;\r
+               layerPopup.style.left = nEventX;\r
+               // set again to avoid the stupid frash in netscape 6.\r
+               layerPopup.innerHTML = strMenu;\r
+               layerPopup.style.visibility = "visible";\r
+               //window.captureEvents(Event.MOUSEDOWN);\r
+               if (!gOlddocumentClick && document.onclick)\r
+                       gOlddocumentClick = document.onclick;\r
+               window.onclick = PopupMenu_HandleClick;\r
+       }\r
+       else if (gbBsNS4) {\r
+               layerPopup = document.layers.PopupMenu;\r
+               layerPopup.visibility = "hide";\r
+               stylePopup = layerPopup.document;\r
+               stylePopup.write(strMenu);\r
+               stylePopup.close();\r
+               var e = fn_arguments[0];\r
+               nEventX = e.pageX;\r
+               nEventY = e.pageY;\r
+               _BSPSGetClientSize();\r
+               if (nEventY + layerPopup.clip.height + 20 < window.pageYOffset + gBsClientHeight) {\r
+                       nEventY += 20;\r
+               } else {\r
+                       nEventY = gBsClientHeight + window.pageYOffset- layerPopup.clip.height - 20;\r
+               }\r
+               layerPopup.top = nEventY;\r
+\r
+               if (nEventX + layerPopup.clip.width + 20 > gBsClientWidth + window.pageXOffset) {\r
+                       if (gBsClientWidth + window.pageXOffset - layerPopup.clip.width < 20) {\r
+                               nEventX = 5;\r
+                       } else {\r
+                               nEventX = gBsClientWidth + window.pageXOffset - layerPopup.clip.width - 20;\r
+                       }\r
+               } else {\r
+                       nEventX += 20;\r
+               }\r
+\r
+               layerPopup.left = nEventX;\r
+\r
+               layerPopup.visibility = "show";\r
+\r
+               window.captureEvents(Event.MOUSEDOWN);\r
+               if (!gOlddocumentClick && document.onmousedown)\r
+                       gOlddocumentClick = document.onmousedown;\r
+               window.onmousedown = PopupMenu_HandleClick;\r
+       }\r
+\r
+       window.gbInPopupMenu = true;\r
+       window.gbPopupMenuTimeoutExpired = false;\r
+       setTimeout("PopupMenu_Timeout();", 100);\r
+       return false;\r
+}\r
+\r
+\r
+function PopupMenu_Timeout()\r
+{\r
+       window.gbPopupMenuTimeoutExpired = true;\r
+}\r
+\r
+function PopupMenu_Over(e)\r
+{\r
+    if (gbBsIE4) {\r
+               e.srcElement.className = "PopupOver";\r
+    } else if (gbBsNS4) {\r
+//             this.bgColor = "red";\r
+//        e.target.document.className = "PopupOver";\r
+    }\r
+       return;\r
+}\r
+\r
+function PopupMenu_Out(e)\r
+{\r
+    if (gbBsIE4) {\r
+               e.srcElement.className = "PopupNotOver";\r
+    } else if (gbBsNS4) {\r
+        this.bgColor = "#f0f0f0";\r
+    }\r
+       return;\r
+}\r
+\r
+\r
+function PopupMenu_HandleClick(e)\r
+{\r
+       if (window.gbPopupMenuTimeoutExpired) {\r
+\r
+               window.gbInPopupMenu = false;\r
+\r
+               if (gbBsNS4 && !gbBsNS6) {\r
+                       window.releaseEvents(Event.MOUSEDOWN);\r
+               }\r
+\r
+               var layerPopup = null;\r
+               var stylePopup = null;\r
+               if (gbBsIE4) {\r
+                       layerPopup = document.all["PopupMenu"];\r
+                       stylePopup = layerPopup.style;\r
+                       stylePopup.visibility = "hidden";\r
+               } else if (gbBsNS6) {\r
+                       layerPopup = document.getElementById("PopupMenu");\r
+                       layerPopup.style.visibility = "hidden";\r
+               } else if (gbBsNS4) {\r
+                       layerPopup = document.layers.PopupMenu;\r
+                       layerPopup.visibility = "hide";\r
+               }\r
+       \r
+               if (gOlddocumentClick)\r
+               {\r
+                       if (gbBsNS4 && !gbBsNS6)\r
+                               document.onmousedown = gOlddocumentClick;\r
+                       else\r
+                               document.onclick = gOlddocumentClick;\r
+               }\r
+       }\r
+       return;\r
+}\r
+\r
+// This function should be deleted when all old projects are cleaned up\r
+function BSPSWritePopupFrameForIE4()\r
+{\r
+       return false;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+function BSSCPopup_ClickMac()\r
+{\r
+       if ((!DHTMLPopupSupport()) && (gbBsIE4))\r
+       {       \r
+               var bClickOnAnchor = false;\r
+               var el;\r
+               if ((window.event != null) &&\r
+                   (window.event.srcElement != null))\r
+               {\r
+                   el = window.event.srcElement;\r
+                       while (el != null)\r
+                       {\r
+                               if ((el.tagName == "A") || (el.tagName == "AREA"))      {\r
+                                       bClickOnAnchor = true;\r
+                                       break;\r
+                               }\r
+                               if (el.tagName == "BODY") {\r
+                                       break;\r
+                               }\r
+                               el = el.parentElement;\r
+                       }\r
+               }\r
+               if (BSSCPopup_IsPopup())\r
+               {\r
+                       if (!bClickOnAnchor) {\r
+                               parent.window.gPopupWindow = null;\r
+                               self.close();\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       bClosePopupWindow = true;\r
+                       if ((bClickOnAnchor) &&\r
+                               (el.href) &&\r
+                           ((el.href.indexOf("javascript:BSSCPopup") != -1) || (el.href.indexOf("javascript:null") != -1) || (el.href.indexOf("javascript:void(0)") != -1)))\r
+                       {\r
+                               bClosePopupWindow = false;\r
+                       }\r
+                       if (bClosePopupWindow)\r
+                       {\r
+                               if (window.gPopupWindow != null && !window.gPopupWindow.closed )\r
+                               {\r
+                                       window.gPopupWindow.close();\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+ }\r
+\r
+//////////////////////////////////////////////////////////////////////\r
+\r
+function BsPopupOnClick()\r
+{\r
+       if (!gbBsIE4)\r
+               return;\r
+\r
+       BSSCPopup_ClickMac();\r
+}\r
+\r
+function _BSSCOnError(message)\r
+{\r
+       if(-1 != message.indexOf("denied") \r
+               || -1 != message.indexOf("Object required"))\r
+        return true;\r
+}\r
+\r
+//End to support previous relative topics\r
+\r
+\r
+/// Section End - General and relative topics (JavaScript 1.0)\r
+\r
+/// Section Begin  - Popup (JavaScript 1.0)\r
+\r
+//Begin to support previous popup functions\r
+//////////////////////////////////////////////////////////////////////////////////////////////\r
+//\r
+//     Begin DHTML Popup Functions\r
+//\r
+//////////////////////////////////////////////////////////////////////////////////////////////\r
+//variables used to isolate the browser type\r
+var gBsDoc                     = null;                 \r
+var gBsSty                     = null;\r
+var gBsHtm                     = null;\r
+var gBsStyVisShow      = null;\r
+var gBsStyVisHide      = null;\r
+var gBsClientWidth     = 640;\r
+var gBsClientHeight = 480;\r
+var gBsBrowser         = null;\r
+\r
+// here is the varible for judge popup windows size. these parameter is for IE5.0, it may need adjust for others.\r
+var gBRateH_W          = 0.618; // 1.618 Golden cut.\r
+var gBMaxXOfParent     = 0.8; \r
+var gBMaxYOfParent     = 0.8;\r
+var gBscrollHeight   = 16;\r
+var gBscrollWidth   =  16;\r
+var gBpermitXDelta     = 3;\r
+var gBpermitYDelta     = 3;\r
+\r
+\r
+var arrayPopupURL = new Array();\r
+var arrayAbsPopupURL = new Array();\r
+\r
+var arrayDirty = new Array();\r
+\r
+function setAbsPopupURL(nIndex, strURL)\r
+{\r
+       arrayAbsPopupURL[nIndex] = strURL;\r
+}\r
+\r
+function getAbsPopupURL(nIndex)\r
+{\r
+       if (nIndex == -1 || arrayAbsPopupURL.length <= nIndex) return null;\r
+       else \r
+               return arrayAbsPopupURL[nIndex];\r
+}\r
+\r
+function getPopupURL(nIndex)\r
+{\r
+       if (nIndex == -1 || arrayPopupURL.length <= nIndex) return null;\r
+       else \r
+               return arrayPopupURL[nIndex];\r
+}\r
+\r
+function getPopupID(nIndex)\r
+{\r
+       return gstrPopupID + nIndex;\r
+}\r
+\r
+function getPopupShadowID(nIndex)\r
+{\r
+       return gstrPopupShadowID + nIndex;\r
+}\r
+\r
+function getPopupTopicID(nIndex)\r
+{\r
+       return gstrPopupTopicID + nIndex;\r
+}\r
+\r
+function getPopupIFrameID(nIndex)\r
+{\r
+       return gstrPopupIFrameID + nIndex;\r
+}\r
+\r
+function getPopupIFrameName(nIndex)\r
+{\r
+       return gstrPopupIFrameName + nIndex;\r
+}\r
+\r
+\r
+function getPopupTopicStyle(nIndex)\r
+{\r
+       return eval("document.all['" + getPopupTopicID(nIndex) + "']").style;\r
+}\r
+\r
+function getPopupShadowStyle(nIndex)\r
+{\r
+       return eval("document.all['" + getPopupShadowID(nIndex) + "']").style;\r
+}\r
+\r
+function getPopupIFrame(nIndex)\r
+{\r
+\r
+       return eval("document.frames['" + getPopupIFrameName(nIndex) + "']");\r
+}\r
+\r
+function getPopupDivStyle(nIndex)\r
+{\r
+       return eval("document.all['" + getPopupID(nIndex) + "']").style;\r
+}\r
+\r
+function getPopupIFrameStyle(nIndex)\r
+{\r
+       return eval("document.all['" + getPopupIFrameName(nIndex) + "'].style");\r
+}\r
+\r
+\r
+function findDiv(strURL)\r
+{\r
+       var i = 0;\r
+       for (i = 0; i < arrayPopupURL.length; i ++ ) {\r
+               if (arrayPopupURL[i] == strURL) {\r
+                       return i;\r
+               }\r
+       }\r
+       return -1;\r
+}\r
+\r
+var gnToken = -1;\r
+function takeToken()\r
+{\r
+       gnToken ++;\r
+       if (gnToken > 10000) gnToken = 0;\r
+       return gnToken;\r
+}\r
+\r
+function IsValidToken(nToken)\r
+{\r
+       return (gnToken == nToken);\r
+}\r
+\r
+function addDiv(strURL)\r
+{\r
+       var i = 0; \r
+       for (i = 0; i < arrayPopupURL.length; i ++) {\r
+               if (arrayPopupURL[i] == null) {\r
+                       arrayPopupURL[i] = strURL;\r
+                       return i;\r
+               }\r
+       }       \r
+       arrayPopupURL[i] = strURL;\r
+       arrayDirty[i] = true;\r
+       return i;\r
+}\r
+\r
+function setDirty()\r
+{\r
+       var i = 0;\r
+       for (i = 0; i < arrayPopupURL.length; i ++ )\r
+               arrayDirty[i] = true;\r
+}\r
+\r
+function IsDirty(nIndex)\r
+{\r
+       if (nIndex == -1)\r
+               return true;\r
+       else \r
+               if (arrayDirty.length > nIndex) \r
+                       return arrayDirty[nIndex];\r
+               else\r
+                       return true;\r
+}\r
+\r
+function hideAll()\r
+{\r
+       var i = 0; \r
+       for (i = 0; i < arrayPopupURL.length; i ++ )\r
+               getPopupDivStyle(i).visibility = gBsStyVisHide;\r
+}\r
+\r
+function getCurrentPopupIFrame()\r
+{\r
+       var i = 0;\r
+       for (i = 0; i < arrayPopupURL.length; i ++)\r
+               if (getPopupDivStyle(i).visibility == gBsStyVisShow)\r
+                       return getPopupIFrame(i);\r
+       return null;\r
+}\r
+\r
+function setClear(nIndex)\r
+{\r
+       if (nIndex != -1)\r
+               arrayDirty[nIndex] = false;\r
+}\r
+\r
+function _BSSCCreatePopupDiv(strURL)\r
+{\r
+       var nIndex = findDiv(strURL);\r
+       if (nIndex == -1 ) {\r
+               nIndex = addDiv(strURL);\r
+               BsPopup_CreateDiv(nIndex);\r
+       }\r
+       else {\r
+               if (IsDirty(nIndex)) {\r
+                       if("object" == typeof(getPopupIFrame(nIndex).document))\r
+                               getPopupIFrame(nIndex).document.location.href = strURL;\r
+               }\r
+       }\r
+       return nIndex;\r
+\r
+}\r
+\r
+//the browser information itself\r
+function _BSPSBrowserItself()\r
+{\r
+       var agent  = navigator.userAgent.toLowerCase();\r
+       this.major = parseInt(navigator.appVersion);\r
+       this.minor = parseFloat(navigator.appVersion);\r
+       this.ns    = ((agent.indexOf('mozilla') != -1) && ((agent.indexOf('spoofer') == -1) && (agent.indexOf('compatible') == -1)));\r
+       this.ns2   = ((this.ns) && (this.major == 2));\r
+       this.ns3   = ((this.ns) && (this.major == 3));\r
+       this.ns4   = ((this.ns) && (this.major >= 4));\r
+       this.ns6   = ((this.ns) && (this.major >= 5));\r
+       this.ie    = (agent.indexOf("msie") != -1);\r
+       this.ie3   = ((this.ie) && (this.major == 2));\r
+       this.ie4   = ((this.ie) && (this.major >= 4));\r
+       this.op3   = (agent.indexOf("opera") != -1);\r
+\r
+       if (this.ns4)\r
+       {\r
+               gBsDoc          = "document";\r
+               gBsSty          = "";\r
+               gBsHtm          = ".document";\r
+               gBsStyVisShow   = "show";\r
+               gBsStyVisHide   = "hide";\r
+\r
+       }\r
+       else if (this.ie4)\r
+       {\r
+               gBsDoc           = "document.all";\r
+               gBsSty          = ".style";\r
+               gBsHtm          = "";\r
+               gBsStyVisShow   = "visible";\r
+               gBsStyVisHide   = "hidden";\r
+       }\r
+}\r
+\r
+//Here is the browser type \r
+function _BSPSGetBrowserInfo()\r
+{\r
+       gBsBrowser      = new _BSPSBrowserItself();\r
+}\r
+\r
+_BSPSGetBrowserInfo();\r
+\r
+//Get client size info\r
+function _BSPSGetClientSize()\r
+{\r
+       if (gBsBrowser.ns4)\r
+       {\r
+               gBsClientWidth  = innerWidth;\r
+               gBsClientHeight = innerHeight;\r
+\r
+       }\r
+       else if (gBsBrowser.ie4)\r
+       {\r
+               gBsClientWidth  = document.body.clientWidth;\r
+               gBsClientHeight = document.body.clientHeight;\r
+       }\r
+}\r
+\r
+\r
+var gstrPopupID = 'BSSCPopup';\r
+var gstrPopupShadowID = 'BSSCPopupShadow';\r
+var gstrPopupTopicID = 'BSSCPopupTopic';\r
+var gstrPopupIFrameID = 'BSSCPopupIFrame';\r
+var gstrPopupIFrameName = 'BSSCPopupIFrameName';\r
+\r
+var gstrPopupSecondWindowName = 'BSSCPopup';\r
+\r
+var gPopupWindow = null;\r
+var gnPopupClickX = 0;\r
+var gnPopupClickY = 0;\r
+\r
+var gnPopupScreenClickX = 0;\r
+var gnPopupScreenClickY = 0;\r
+\r
+var gbPopupTimeoutExpired = false;\r
+\r
+\r
+function DHTMLPopupSupport()\r
+{\r
+       if ((gbBsIE4) && (!gbBsMac)) {\r
+               return true;\r
+       }\r
+       return false;\r
+}\r
+\r
+\r
+\r
+function BSSCPopup_IsPopup()\r
+{\r
+       if (DHTMLPopupSupport() && (this.name.indexOf(gstrPopupIFrameName) != -1)) {\r
+               return true;\r
+       } else if ((gbBsNS4 || gbBsIE4) && (this.name.indexOf(gstrPopupID) != -1)) {\r
+               return true;\r
+       } else {\r
+               return false;\r
+       }\r
+}\r
+\r
+\r
+// If there is a hyperlink in a popup window, display the hyperlink in\r
+// the original window.\r
+if (BSSCPopup_IsPopup() && !gbBsIE4) {\r
+       document.write("<base target=\"_parent\">");\r
+}\r
+\r
+// Local functions.\r
+function BsPopup_CreateDiv(nIndex)\r
+{\r
+       if(!DHTMLPopupSupport())\r
+               return;\r
+       // DO NOT SET Width and height for the div, otherwize it will make IE4 popup do not work when view the topic alone.\r
+       var strPopupDiv = "<DIV ID='" + getPopupID(nIndex) + "' STYLE='position:absolute; top:-100; left:0; z-index:600; visibility:hidden;'>";\r
+       strPopupDiv += "<DIV ID='" + getPopupShadowID(nIndex) + "' STYLE=\"position:absolute;top:0; left:0;  background-color:#C0C0C0;\"></DIV>";\r
+       strPopupDiv += "<DIV ID='" + getPopupTopicID(nIndex) + "' STYLE=\"position:absolute;top:0; left:0;  background-color:#FFFFFF;border:1px #000000 outset;\">";\r
+       strPopupDiv += "<IFRAME title=\"Popup Window\" ID='" + getPopupIFrameID(nIndex) + "' name='" + getPopupIFrameName(nIndex) + "' src = '" + getPopupURL(nIndex) + "' frameborder=0 scrolling=auto></IFRAME>";\r
+       strPopupDiv += "</DIV></DIV>";\r
+\r
+       var objBody = document.all.tags("BODY")[0];\r
+       if( typeof(objBody) != "object" )\r
+               return;\r
+\r
+       objBody.insertAdjacentHTML("beforeEnd", strPopupDiv);\r
+}\r
+\r
+function BSSCPopup_Timeout(nIndex, nToken)\r
+{\r
+    if (!IsValidToken(nToken)) return;\r
+\r
+       if ((getPopupIFrame(nIndex).document.readyState == "complete") &&\r
+               (getPopupIFrame(nIndex).document.body != null)) {\r
+               window.getPopupDivStyle(nIndex).visibility = gBsStyVisShow;\r
+               setClear(nIndex);\r
+               window.gbPopupTimeoutExpired = true;\r
+\r
+               BSSCPopup_ChangeTargettoParent(getPopupIFrame(nIndex).document);\r
+               getPopupIFrame(nIndex).document.body.onclick = BSSCPopupClicked;\r
+\r
+               if (!gbOrignalOnMouseDown && document.onmousedown)\r
+                       gbOrignalOnMouseDown = document.onmousedown;\r
+\r
+               document.onmousedown = BSSCPopupParentClicked;\r
+\r
+       } else {\r
+               setTimeout("BSSCPopup_Timeout(" + nIndex + "," + nToken + ")", 100);\r
+       }\r
+}\r
+\r
+\r
+// VH 08/10/00 \r
+// do not change target to parent if the href is using javascript\r
+function BSSCPopup_ChangeTargettoParent(tagsObject)\r
+{\r
+       var collA = tagsObject.all.tags("A");\r
+       BSSCPopup_ChangeTargettoParent2(collA);\r
+\r
+       var collIMG = tagsObject.all.tags("IMG");\r
+       BSSCPopup_ChangeTargettoParent2(collIMG);\r
+}\r
+\r
+function BSSCPopup_ChangeTargettoParent2(colls)\r
+{\r
+       var j = 0;\r
+       if (colls != null)  {\r
+               for (j = 0; j < colls.length; j ++ )\r
+               {\r
+                       var strtemp = colls[j].href;\r
+                       strtemp = strtemp.toLowerCase();\r
+                       if (strtemp.indexOf("javascript:") == -1)\r
+                       if (colls[j].target == "")\r
+                               colls[j].target = "_parent";\r
+               }\r
+\r
+       }\r
+}\r
+\r
+function BSPSPopupTopicWinHelp(strURL)\r
+{\r
+       _BSSCPopup(strURL);\r
+       return;\r
+}\r
+\r
+function _BSSCPopup(strURL, width, height)\r
+{\r
+       var cuswidth = 0;\r
+       var cusheight = 0;\r
+       if ("undefined" != typeof(width) && "undefined" != typeof(height)) {\r
+               cuswidth = width;\r
+               cusheight= height;\r
+       }\r
+       \r
+       if (DHTMLPopupSupport()) {\r
+               // If we are already in a popup, replace the contents\r
+       //      if (BSSCPopup_IsPopup()) {\r
+       //              parent._BSSCPopup(strURL, cuswidth, cusheight);\r
+       //      } else {\r
+                       var nToken = takeToken(); // take  token first.\r
+                       var nIndex = _BSSCCreatePopupDiv(strURL);\r
+                       window.gbPopupTimeoutExpired = false;\r
+                       var ntWidth = gBsClientWidth;\r
+                       var ntHeight = gBsClientHeight;\r
+                       _BSPSGetClientSize();\r
+                       if (ntWidth != gBsClientWidth || ntHeight != gBsClientHeight) {\r
+                               setDirty();\r
+                       }\r
+\r
+\r
+                       if (IsDirty(nIndex)) {\r
+                               if (gbBsMac) {\r
+                                       setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight  +")", 400);\r
+                               } else {\r
+                                       setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 100);\r
+                               }\r
+                       }\r
+                       else {\r
+                               MoveDivAndShow(nIndex ,nToken, cuswidth, cusheight);\r
+                       }\r
+       //      }\r
+\r
+       } else {\r
+               _BSSCPopup2(strURL, cuswidth, cusheight);\r
+       }\r
+       return;\r
+}\r
+\r
+if (gbBsIE55)\r
+{\r
+       var ehlpdhtm_fOldBefureUnload = window.onbeforeunload;\r
+       window.onbeforeunload = window_BUnload;\r
+}\r
+       \r
+function window_BUnload()\r
+{\r
+       for (var i = 0; i < arrayPopupURL.length; i ++)\r
+               document.all(getPopupID(i)).outerHTML = "";\r
+       arrayPopupURL.length = 0;       \r
+       if (ehlpdhtm_fOldBefureUnload)\r
+               ehlpdhtm_fOldBefureUnload();\r
+}\r
+\r
+function _BSSCPopup2(strURL, width, height)\r
+{\r
+       if (window.name == gstrPopupSecondWindowName) {\r
+               window.location = strURL;\r
+       } else {\r
+               if (!gbBsMac || !gBsBrowser.ns4) {\r
+                       BSSCHidePopupWindow();\r
+               }\r
+               var nX = 0;\r
+               var nY = 0;\r
+               var nHeight = 300;\r
+               var nWidth = 400;\r
+               if (width > 0 && height > 0) {\r
+                       nHeight = height;\r
+                       nWidth = width;\r
+               }\r
+               _BSPSGetClientSize();\r
+\r
+               nX = window.gnPopupScreenClickX;\r
+               nY = window.gnPopupScreenClickY;\r
+\r
+               if (nY + nHeight + 40 > screen.availHeight) {\r
+                       nY = screen.availHeight - nHeight - 40;\r
+               }\r
+               if (nX + nWidth + 40 > screen.availWidth) {\r
+                       nX = screen.availWidth - nWidth - 40;\r
+               }\r
+               // Launch a separate window\r
+               var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes";\r
+               if (gBsBrowser.ns) {\r
+                       if (gBsBrowser.ns6) {\r
+                               strParam += ",Height=" + nHeight + ",Width=" + nWidth;\r
+                               strParam += ",screenX=" + nX + ",screenY=" + nY;\r
+                       }\r
+                       else {\r
+                               strParam += ",OuterHeight=" + nHeight + ",OuterWidth=" + nWidth;\r
+                               strParam += ",screenX=" + nX + ",screenY=" + nY;\r
+                               strParam += ",dependent=yes";\r
+                       }\r
+               }\r
+               else {\r
+                       strParam += ",height=" + nHeight + ",width=" + nWidth;\r
+                       strParam += ",left=" + nX + ",top=" + nY;\r
+               }\r
+               window.gPopupWindow = window.open(strURL, gstrPopupSecondWindowName, strParam);\r
+\r
+               if (gBsBrowser.ns4) {\r
+                       window.gPopupWindow.captureEvents(Event.CLICK | Event.BLUE);\r
+                       window.gPopupWindow.onclick = NonIEPopup_HandleClick;\r
+                       window.gPopupWindow.onblur = NonIEPopup_HandleBlur;\r
+               }\r
+               else if (gBsBrowser.ie4)\r
+               {\r
+                       setTimeout("setPopupFocus();", 100);\r
+               }\r
+       }\r
+       return;\r
+}\r
+\r
+function setPopupFocus()\r
+{\r
+       window.gPopupWindow.focus();\r
+}\r
+\r
+function NonIEPopup_HandleBlur(e)\r
+{\r
+       window.gPopupWindow.focus();\r
+}\r
+\r
+function NonIEPopup_HandleClick(e)\r
+{\r
+       // Because navigator will give the event to the handler before the hyperlink, let's\r
+       // first route the event to see if we are clicking on a Popup menu in a popup.\r
+       document.routeEvent(e);\r
+\r
+       // If a popup menu is active then don't do anything with the click\r
+       if (window.gPopupWindow.gbInPopupMenu) {\r
+               window.gPopupWindow.captureEvents(Event.CLICK);\r
+               window.gPopupWindow.onclick = NonIEPopup_HandleClick;\r
+               return false;\r
+       }\r
+\r
+       // Close the popup window\r
+       if (e.target.href) {\r
+               if (e.target.target == "")\r
+                       window.location.href = e.target.href;\r
+               else\r
+                       window.open(e.target.href, e.target.target);\r
+                       \r
+               if (e.target.href.indexOf("javascript:void(0)") == -1 && e.target.href.indexOf("javascript:null") == -1 && e.target.href.indexOf("BsscPopup") == -1) {\r
+                       this.close();\r
+               }\r
+       } else {\r
+               this.close();\r
+       }\r
+       return false;\r
+\r
+}\r
+\r
+function BSSCPopup_AfterLoad(nIndex, nToken, cuswidth, cusheight)\r
+{      \r
+       if (typeof(window.getPopupIFrame(nIndex).document) == "unknown") {\r
+               _BSSCPopup2(getPopupURL(nIndex), cuswidth, cusheight);\r
+               return;\r
+       }\r
+    if (!IsValidToken(nToken)) return;\r
+\r
+       if ((window.getPopupIFrame(nIndex).document.readyState == "complete") &&\r
+               (window.getPopupIFrame(nIndex).document.body != null)) {\r
+                       if (window.getPopupIFrame(nIndex).document.location.href.indexOf("about:blank") != -1) { // add this check. IE will use about:blank" as the default vaule for Iframe.\r
+                               window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex);\r
+                               setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);\r
+                       }\r
+                       else\r
+                               {\r
+                                       setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url.\r
+                                       BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight);\r
+                               }\r
+       } else {\r
+               setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);\r
+       }\r
+}\r
+\r
+\r
+function BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight)\r
+{\r
+       if (window.gbPopupTimeoutExpired) return;\r
+\r
+    if (!IsValidToken(nToken)) return;\r
+\r
+       getPopupDivStyle(nIndex).visibility = gBsStyVisHide;\r
+\r
+       // Determine the width and height for the window\r
+       //var size = new BSSCSize(0, 0);\r
+       //BSSCGetContentSize(window.getPopupIFrame(nIndex), size);\r
+       //var nWidth = size.x;\r
+       //var nHeight = size.y;\r
+\r
+       _BSPSGetClientSize();\r
+       \r
+       var size = new BSSCSize(0, 0);\r
+\r
+       if (cuswidth <= 0 || cusheight <= 0)\r
+               BSSCGetContentSize(window.getPopupIFrame(nIndex), size);\r
+       else {\r
+               size.x = cuswidth;\r
+               size.y = cusheight;\r
+       }\r
+\r
+       // Determine the width and height for the window\r
+       var nWidth = size.x;\r
+       var nHeight = size.y;\r
+\r
+       // for small popup size, we should allow any size.\r
+       // The popup size should be ok if bigger than 0\r
+       if (nWidth < 0 || nHeight < 0) return;  // there must be something terribly wrong.              \r
+       //      if (nWidth < 40 || nHeight < 40) return;  // there must be something terribly wrong.\r
+\r
+       window.getPopupDivStyle(nIndex).pixelWidth = nWidth;\r
+       window.getPopupDivStyle(nIndex).pixelHeight = nHeight;\r
+\r
+       window.getPopupShadowStyle(nIndex).pixelWidth = nWidth;\r
+       window.getPopupShadowStyle(nIndex).pixelHeight = nHeight;\r
+       window.getPopupTopicStyle(nIndex).pixelWidth = nWidth;\r
+       window.getPopupTopicStyle(nIndex).pixelHeight = nHeight;\r
+       if (gbBsIE55)\r
+       {\r
+               window.getPopupShadowStyle(nIndex).pixelWidth = nWidth + 2;\r
+               window.getPopupShadowStyle(nIndex).pixelHeight = nHeight + 2;\r
+               window.getPopupTopicStyle(nIndex).pixelWidth = nWidth + 2;\r
+               window.getPopupTopicStyle(nIndex).pixelHeight = nHeight + 2;\r
+       }\r
+\r
+       window.getPopupIFrameStyle(nIndex).pixelWidth = nWidth;\r
+       window.getPopupIFrameStyle(nIndex).pixelHeight = nHeight;\r
+       if (gbBsIE55)\r
+       {\r
+               window.getPopupIFrameStyle(nIndex).top = 0;\r
+               window.getPopupIFrameStyle(nIndex).left = 0;\r
+       }\r
+       \r
+       var strURL = getPopupURL(nIndex);\r
+       if (strURL.indexOf("#") != -1)\r
+               getPopupIFrame(nIndex).location.href = strURL;  // reload again, this will fix the bookmark misunderstand in IE5.\r
+               \r
+       MoveDivAndShow(nIndex, nToken, cuswidth, cusheight);\r
+}\r
+\r
+function MoveDivAndShow(nIndex, nToken, cuswidth, cusheight)\r
+{\r
+       if (window.getPopupIFrame(nIndex).document.location.href != getAbsPopupURL(nIndex)) { // if redirect, reload again.\r
+                       window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex);\r
+                       setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);\r
+                       return;\r
+       }\r
+\r
+       // Determine the position of the window\r
+       var nClickX = window.gnPopupClickX;\r
+       var nClickY = window.gnPopupClickY;\r
+       var nTop = 0;\r
+       var nLeft = 0;\r
+\r
+       var nWidth = window.getPopupDivStyle(nIndex).pixelWidth;\r
+       var nHeight = window.getPopupDivStyle(nIndex).pixelHeight;\r
+\r
+       if (nClickY + nHeight + 20 < gBsClientHeight + document.body.scrollTop) {\r
+               nTop = nClickY + 10;\r
+       } else {\r
+               nTop = (document.body.scrollTop + gBsClientHeight) - nHeight - 20;\r
+       }\r
+       if (nClickX + nWidth < gBsClientWidth + document.body.scrollLeft) {\r
+               nLeft = nClickX;\r
+       } else {\r
+               nLeft = (document.body.scrollLeft + gBsClientWidth) - nWidth - 8;\r
+       }\r
+       \r
+       if (nTop < document.body.scrollTop ) nTop  = document.body.scrollTop + 1;\r
+       if (nLeft< document.body.scrollLeft) nLeft = document.body.scrollLeft + 1;\r
+\r
+\r
+       window.getPopupDivStyle(nIndex).left = nLeft;\r
+       window.getPopupDivStyle(nIndex).top = nTop;\r
+\r
+       // Set the location of the background blocks\r
+       window.getPopupShadowStyle(nIndex).left = 6;\r
+       window.getPopupShadowStyle(nIndex).top = 6;\r
+       if (gbBsIE55)\r
+       {\r
+               window.getPopupShadowStyle(nIndex).left = 4;\r
+               window.getPopupShadowStyle(nIndex).top = 4;\r
+       }\r
+\r
+       if (gbBsMac) {\r
+               // Total hack on the iMac to get the IFrame to position properly\r
+               window.getPopupIFrameStyle(nIndex).pixelLeft = 100;\r
+               window.getPopupIFrameStyle(nIndex).pixelLeft = 0;\r
+               // Explicitly call BSSCOnLoad because the Mac doesn't seem to do it\r
+               window.getPopupIFrame(nIndex).window.BSSCOnLoad();\r
+       }\r
+\r
+       BSSCPopup_Timeout(nIndex , nToken );\r
+       \r
+       return;\r
+}\r
+\r
+function       BSSCSize(x, y)\r
+{\r
+       this.x = x;\r
+       this.y = y;\r
+}\r
+\r
+function BSSCGetContentSize(thisWindow, size)\r
+{\r
+       if (!((gBsBrowser.ie4) || (gBsBrowser.ns4)))\r
+               return;\r
+\r
+       if (gbBsMac) {\r
+               size.x = 300;\r
+               size.y = 300;\r
+               return;\r
+       }\r
+\r
+       // Resize the width until it is wide enough to handle the content\r
+       // The trick is to start wide and determine when the scrollHeight changes\r
+       // because then we know a scrollbar is necessary. We can then go back\r
+       // to the next widest size (for no scrollbar)\r
+\r
+       var ClientRate = gBsClientHeight / gBsClientWidth;\r
+\r
+       var GoldenSize = new BSSCSize(0,0);\r
+       GoldenSize.x = gBsClientWidth * gBMaxXOfParent;\r
+       GoldenSize.y = gBsClientHeight *gBMaxYOfParent ;\r
+\r
+       if (ClientRate > gBRateH_W) {\r
+               GoldenSize.y = GoldenSize.x * gBRateH_W;\r
+       }\r
+       else {\r
+               GoldenSize.x = GoldenSize.y / gBRateH_W;\r
+       }\r
+\r
+       // Try to using parent specified max x.\r
+       var x = 0;\r
+       var maxgoldx = GoldenSize.x;\r
+       var maxx = gBsClientWidth * gBMaxXOfParent;\r
+       \r
+       // This double resize causes the document to re-render (and we need it to)\r
+       if (!gbBsIE5)\r
+               thisWindow.moveTo(10000,10000); // this is used to fix the flash on IE4.\r
+       thisWindow.resizeTo(1, 1);\r
+       thisWindow.resizeTo(1, 1);\r
+       thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight);\r
+       thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight);\r
+               \r
+       var miny = thisWindow.document.body.scrollHeight + gBscrollHeight;\r
+       \r
+       if (miny > GoldenSize.y) // the popup does not fix in the parent wanted golden area. so try to expand itself as large as it can\r
+       {\r
+               thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight);\r
+               thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight);\r
+               \r
+               miny =  thisWindow.document.body.scrollHeight + gBscrollHeight;\r
+               maxy = gBsClientHeight * gBMaxYOfParent;\r
+               \r
+               if (miny > maxy) { // the popup must have a scroll, OK let it be.\r
+                       miny = maxy;\r
+                       size.x = maxx;\r
+                       size.y = maxy;\r
+                       thisWindow.document.body.scroll = 'yes'; // At this time we do want to show scroll any more. so it will looks better a little.\r
+               }\r
+               else { // popup still can fit in the parent area by someway. now we choose the same h/w rate as parent.\r
+                       size.y = miny;\r
+                       \r
+                       //  downsize from maxx , now I try to using binary divide.\r
+                       x = maxx;\r
+                       deltax = -maxx/2;\r
+                       //j = 0;\r
+                       while (true) {\r
+                               x = x + deltax;\r
+                               thisWindow.resizeTo(x, miny);\r
+                               thisWindow.resizeTo(x, miny);\r
+                               diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * ClientRate;\r
+                               if (diffy >  gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter\r
+                                       deltax = Math.abs(deltax) /2;\r
+                               else if (diffy <  -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter\r
+                                       deltax = -Math.abs(deltax) /2;\r
+                               else \r
+                                       // the y is close enough to wanted.\r
+                                       break;\r
+                               if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore.\r
+                                       break;\r
+                       }\r
+                       size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth;\r
+                       size.y = thisWindow.document.body.scrollHeight;// + gBscrollHeight;     \r
+                       thisWindow.document.body.scroll = 'no';\r
+                       \r
+               // Handle absurd cases just in case IE flakes\r
+       //              if (size.y < 100) {\r
+       //                      size.y = 100;\r
+       //              }\r
+               }\r
+       }\r
+       else {\r
+               if (thisWindow.document.body.scrollWidth > maxgoldx) {\r
+                       size.x = maxx; \r
+                       size.y = miny;  \r
+                       thisWindow.document.body.scroll = 'yes';\r
+               }\r
+               else {\r
+                       //  downsize from maxgoldx , now I try to using binary divide.\r
+                       x = maxgoldx;\r
+                       deltax = -maxgoldx/2;\r
+                       //i = 0;\r
+                       while (true) {\r
+                               x = x + deltax;\r
+                               thisWindow.resizeTo(x, miny);\r
+                               thisWindow.resizeTo(x, miny);\r
+                               diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * gBRateH_W;\r
+                               if (diffy >  gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter\r
+                                       deltax = Math.abs(deltax) /2;\r
+                               else if (diffy <  -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter\r
+                                       deltax = -Math.abs(deltax) /2;\r
+                               else \r
+                                       // the y is close enough to wanted.\r
+                                       break;\r
+                               if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore.\r
+                                       break;\r
+                               //i ++;\r
+                               \r
+                       }\r
+                       //size.x = x - gBscrollWidth;\r
+                       size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth;\r
+                       size.y = thisWindow.document.body.scrollHeight ;\r
+                       thisWindow.document.body.scroll = 'no'; // At this time we do not want to show scroll any more. so it will looks better a little.\r
+                       thisWindow.resizeTo(size.x, size.y);\r
+                       if (thisWindow.document.body.scrollWidth > size.x)\r
+                       {\r
+                               size.x = thisWindow.document.body.scrollWidth;\r
+                       }\r
+                       if (thisWindow.document.body.scrollHeight > size.y)\r
+                       {\r
+                               size.y = thisWindow.document.body.scrollHeight;\r
+                       }\r
+               }\r
+       }\r
+       \r
+       // no reload no scrollbar.\r
+       //size.x = size.x + 16;  //reserve a width for scrollbar (IE 4.0 only)\r
+\r
+       thisWindow.resizeTo(size.x, size.y);\r
+       thisWindow.resizeTo(size.x, size.y);\r
+       return;\r
+}\r
+\r
+\r
+\r
+function BSSCPopupParentClicked()\r
+{\r
+       if (!window.gbPopupTimeoutExpired) {\r
+               return false;\r
+       }\r
+       \r
+       document.onmousedown = gbOrignalOnMouseDown;\r
+\r
+       // Simply hide the popup\r
+       hideAll();\r
+\r
+       window.gbPopupTimeoutExpired = false;\r
+\r
+       return true;\r
+}\r
+\r
+\r
+function BSSCPopupClicked()\r
+{\r
+       if (!window.gbPopupTimeoutExpired) {\r
+               return false;\r
+       }\r
+\r
+\r
+       var popupIFrame = getCurrentPopupIFrame();\r
+       if (popupIFrame == null) {\r
+               return true;\r
+       }\r
+\r
+/*\r
+       if ("undefined" != typeof(popupIFrame.gbInPopupMenu) &&\r
+               popupIFrame.gbInPopupMenu) {\r
+               return true;\r
+       }*/\r
+\r
+       if (!((popupIFrame.window.event != null) &&\r
+           (popupIFrame.window.event.srcElement != null) &&\r
+           ((popupIFrame.window.event.srcElement.tagName == "A") ||\r
+           (popupIFrame.window.event.srcElement.tagName == "IMG")))) {\r
+               document.onmousedown = gbOrignalOnMouseDown;\r
+\r
+       // Simply hide the popup\r
+               hideAll();\r
+\r
+               window.gbPopupTimeoutExpired = false;\r
+\r
+               return true;\r
+       }\r
+}\r
+\r
+\r
+//trace the mouse over's position for hotspot\r
+function  BSPSPopupOnMouseOver(event)\r
+{\r
+       if (gBsBrowser.ie4) {\r
+               window.gnPopupClickX = event.clientX + document.body.scrollLeft;\r
+               window.gnPopupClickY = event.clientY + document.body.scrollTop;\r
+               window.gnPopupScreenClickX = event.screenX;\r
+               window.gnPopupScreenClickY = event.screenY;\r
+       } else if (gBsBrowser.ns4) {\r
+               window.gnPopupClickX = event.pageX - window.pageXOffset;\r
+               window.gnPopupClickY = event.pageY - window.pageYOffset;\r
+               window.gnPopupScreenClickX = event.screenX - window.pageXOffset;\r
+               window.gnPopupScreenClickY = event.screenY - window.pageYOffset;\r
+       }\r
+}\r
+\r
+\r
+function BSSCHidePopupWindow()\r
+{\r
+       if (window.gPopupWindow != null) {\r
+               if (gBsBrowser.ns4) {\r
+                       if ((typeof window.gPopupWindow != "undefined") && (!window.gPopupWindow.closed)) {\r
+                               window.gPopupWindow.close();\r
+                               window.gPopupWindow = null;\r
+                       }\r
+               }\r
+       }\r
+\r
+       return;\r
+}\r
+\r
+// Add the PopupOnClick to the onclick array.\r
+if (typeof(BsscRegisterOnClick) != "undefined")\r
+{\r
+       BsscRegisterOnClick(BsPopupOnClick);\r
+}\r
+//End to support previous popup functions\r
+\r
+/// Section End  - Popup (JavaScript 1.0)\r
+\r
+/// Section Begin - Embedded Stub (JavaScript 1.0)\r
+\r
+var s_strAgent = navigator.userAgent.toLowerCase();\r
+var s_nVer        = parseInt(navigator.appVersion);\r
+\r
+var s_bIE  = (s_strAgent.indexOf('msie') != -1);\r
+var s_bNS  = (s_strAgent.indexOf('mozilla') != -1) && ((s_strAgent.indexOf('spoofer') == -1) && (s_strAgent.indexOf('compatible') == -1));\r
+var s_bOpera   = (s_strAgent.indexOf('opera') != -1);\r
+\r
+var s_bIE3Before = ((s_bIE) && (s_nVer <= 2));\r
+var s_bNS3Before = ((s_bNS) && (s_nVer <= 3));\r
+\r
+var s_bNS2             = ((s_bNS) && (s_nVer <= 2));\r
+var s_bNS3             = ((s_bNS) && (s_nVer == 3));\r
+var s_bIE300301        = ((s_bIE) && (s_nVer == 2) && ((s_strAgent.indexOf("3.00") != -1)||(s_strAgent.indexOf("3.0a") != -1)||(s_strAgent.indexOf("3.0b")!=-1)||(s_strAgent.indexOf("3.01")!=-1)));\r
+var s_bIE302   = ((s_bIE) && (s_nVer == 2) && (s_strAgent.indexOf("3.02") != -1));\r
+\r
+\r
+function HasExtJs()\r
+{\r
+       if (s_bIE3Before) { return false;}\r
+       if (s_bNS3Before) {     return false;}\r
+       if (typeof (BsGeneralOnLoad) == "undefined"){ return false; }\r
+       return true;\r
+}\r
+\r
+\r
+function BSSCCreatePopupDiv()\r
+{\r
+       return;\r
+}\r
+\r
+\r
+function WritePopupMenuLayer()\r
+{\r
+       if (HasExtJs()) {_WritePopupMenuLayer();}\r
+}\r
+\r
+function BSSCPopup(strURL, width, height)\r
+{\r
+       if (HasExtJs()) { \r
+               _BSSCPopup(strURL, width, height);\r
+       }else{\r
+               //Create a temporary window first to ensure the real popup comes up on top\r
+               var wndTemp = null;\r
+               if (!s_bNS3) {\r
+                       wndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4");\r
+               }\r
+               // Create the real popup window\r
+               var wndPopup = window.open(strURL, "BSSCPopup", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=300,width=400");\r
+               // Close the temporary\r
+               if (!s_bNS3) {\r
+                       wndTemp.close();\r
+               } else {\r
+                       wndPopup.focus();\r
+               }\r
+       }\r
+}\r
+\r
+var gbWndTemp = null, gbWndPopupLinks = null;\r
+var gbstrParaTotal = "";\r
+\r
+function PopupMenu_Invoke()\r
+{\r
+       if (HasExtJs()) {\r
+               return _PopupMenu_Invoke(PopupMenu_Invoke.arguments);\r
+       }\r
+       if (s_bNS3Before || s_bIE3Before )      {\r
+               var argLen      = PopupMenu_Invoke.arguments.length;\r
+               if (argLen < 5) {\r
+                       window.document.location.href = PopupMenu_Invoke.arguments[3];\r
+                       return false;\r
+               }\r
+               gbWndTemp = null;\r
+               gbWndPopupLinks = null;\r
+               gbstrParaTotal = "";\r
+               for (var i = 0; i < (argLen - 2) / 2; i++) {\r
+                       var strParaLine = "";\r
+                       if (s_bNS2 || s_bOpera){\r
+                               strParaLine += "<a href=\"";\r
+                               strParaLine += PopupMenu_Invoke.arguments[2 * i + 3];\r
+                               strParaLine += "\">"\r
+                               strParaLine += PopupMenu_Invoke.arguments[2 * i + 2];\r
+                               strParaLine += "</a>";\r
+                       } else {\r
+                               strParaLine += "<a href=\"javascript:";\r
+                               strParaLine += "gotoUrl(\'";\r
+                               strParaLine += PopupMenu_Invoke.arguments[2 * i + 3];\r
+                               strParaLine += "\');\"";\r
+                               if (PopupMenu_Invoke.arguments[1] != '') {\r
+                                       strParaLine += " TARGET='" + PopupMenu_Invoke.arguments[1] + "'";\r
+                               }\r
+                               strParaLine += ">";\r
+                               strParaLine += PopupMenu_Invoke.arguments[2 * i + 2];\r
+                               strParaLine += "</a>";\r
+                       }\r
+                       strParaLine += "<br>";\r
+                       gbstrParaTotal += strParaLine;\r
+               }\r
+               var nHeight = argLen * 15;\r
+               var nWidth = 400;\r
+               var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=auto";\r
+               strParam += ",height=" + nHeight + ",width=200,resizable";\r
+               \r
+               //Create a temporary window first to ensure the real popup comes up on top\r
+               //var wndTemp = null;\r
+               if (!s_bNS3) {\r
+                       gbWndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4");\r
+               } \r
+               gbWndPopupLinks = window.open("", "popuplinks", strParam);\r
+\r
+               setTimeout("Wait_PopupMenuReady()", 100);\r
+       }\r
+       return true;\r
+}\r
+\r
+function Wait_PopupMenuReady() \r
+{\r
+       if (gbWndPopupLinks != null && "object" == typeof(gbWndPopupLinks.document)) {\r
+               PopupMenu_InvokeReady();\r
+       }\r
+       else \r
+               setTimeout("Wait_PopupMenuReady()", 100);\r
+}\r
+\r
+\r
+function PopupMenu_InvokeReady()\r
+{\r
+       if (gbWndPopupLinks != null) {\r
+               gbWndPopupLinks.document.open("text/html");\r
+               gbWndPopupLinks.document.write("<html><head>");\r
+               if (s_bNS2 || s_bOpera) {\r
+                       gbWndPopupLinks.document.write("<base href=\"" + location +"\">");\r
+               } else {\r
+                       //YJ: IE301,302 and NS3.x works fine\r
+                       gbWndPopupLinks.document.write("<");\r
+                       gbWndPopupLinks.document.write("script>");\r
+                       gbWndPopupLinks.document.write("function gotoUrl(aUrl) {opener.window.location=aUrl; close();}");\r
+                       gbWndPopupLinks.document.write("<");\r
+                       gbWndPopupLinks.document.write("/script>");\r
+               }\r
+               gbWndPopupLinks.document.write("</head><body onBlur=\'self.focus();\'>");\r
+               gbWndPopupLinks.document.write(gbstrParaTotal);\r
+               gbWndPopupLinks.document.write("</body></html>");\r
+               gbWndPopupLinks.document.close();\r
+\r
+               // Close the temporary\r
+               if (!s_bNS3 && gbWndTemp != null) {\r
+                       gbWndTemp.close();\r
+               }else {\r
+                       gbWndPopupLinks.focus();\r
+               }\r
+\r
+               return true;\r
+       }\r
+       return false;\r
+}\r
+\r
+/// Section End - Embedded Stub (JavaScript 1.0)\r
+\r
+//// Segment End -- (JavaScript 1.0)\r
+\r
+//// Segment Begin -- (JavaScript 1.2)\r
+/// Section Begin  - kadov DHTM (JavaScript 1.2)\r
+\r
+//Begin to support extended and dropdown text effects.\r
+function kadovIsParagraph(el)\r
+{\r
+       return( el.tagName == "P" || el.tagName.indexOf("H") == 0 ) ? true : false;\r
+}\r
+\r
+function kadovInitEachChild(el)\r
+{      \r
+       for(var i=0; i<el.children.length; i++)\r
+       {\r
+               var child = el.children[i];\r
+               if( child.tagName == "SCRIPT" || child.tagName == "!" )\r
+                       continue;\r
+\r
+               if( child.id != "" )\r
+               {\r
+                       // to wipe out the onload effects\r
+                       var onLoadEffect = child.style.getAttribute( "x-on-pageload" );\r
+                       if( (onLoadEffect != null) && (onLoadEffect > "") )\r
+                               child.style.setAttribute( "x-on-pageload", "" );\r
+                       \r
+                       var href = child.getAttribute("href")\r
+                       if( href != null && href > "" && href.indexOf( "BSSCPopup" ) >= 0 )\r
+                               kadovFilePopupInit(child.id); // Init for Popup\r
+                       else if( child.className == "dropspot" || child.className == "expandspot" || \r
+                                        child.className == "glossterm" )\r
+                               kadovTextPopupInit(child.id);// Init for Expanding/Glossary or DropDown text\r
+                       else if( child.className == "trigger")\r
+                               kadovInitTrigger(child.id);// Init for Trigger\r
+                       else\r
+                       {\r
+                               kadovInitEffects(child.id);// Init for DHTML effects\r
+                               CEngine.SetOneTargetInitialState( child.id );\r
+                       }\r
+               }\r
+               \r
+               if( (child.tagName == "IMG") && (child.getAttribute("dynsrc") > "") )\r
+                       child.start = "mouseover";// to start a AVI file. fileopen doesn't work\r
+\r
+               kadovInitEachChild(child);\r
+       }\r
+}\r
+\r
+function kadovRetrieveTextInner(el)\r
+{      \r
+       var x = "";\r
+       if( (!el) || (el.tagName == "!") || (el.tagName == "SCRIPT" ))\r
+               return x;\r
+\r
+       if( kadovIsParagraph(el) )\r
+       {\r
+               var strNewID = " ";\r
+               if( el.id != "" )\r
+                       strNewID += "id=" + el.id + "_NewSpan ";\r
+               x = "<span" + strNewID + "style='" + el.style.cssText + "'>" + el.innerHTML + "</span>";\r
+       }\r
+       else\r
+       {\r
+               for(var i=0; i<el.children.length; i++)\r
+                       x += kadovRetrieveTextInner( el.children[i] );\r
+       }\r
+       return x;\r
+}\r
+\r
+function kadovRetrieveCleanHTML( strRawHTML, strTagOpen, strTagClose, nDistance )\r
+{      \r
+       var nTagOpen = strRawHTML.indexOf( strTagOpen, 0 );\r
+       if( nTagOpen < 0 )\r
+               return strRawHTML;\r
+\r
+       var nTagClose = strRawHTML.indexOf( strTagClose, nTagOpen);\r
+       if( nTagClose < nTagOpen )\r
+               return strRawHTML;\r
+               \r
+       if( typeof(nDistance) == "number" && nDistance > 0 )\r
+               if( (nTagClose - nTagOpen) != nDistance )\r
+                       return strRawHTML;\r
+               \r
+       var strCleanOnce = strRawHTML.substring(0, nTagOpen) + strRawHTML.substr(nTagClose + strTagClose.length) ;\r
+       return  kadovRetrieveCleanHTML( strCleanOnce, strTagOpen, strTagClose );\r
+}\r
+\r
+function kadovAdjustObjectTag(strRawHTML, nStartPos)\r
+{// adjust object tag for related topics HTML control, because innerHTML misses out the item settings\r
+       \r
+       //Is there any DTC?\r
+       var strDTCTagOpen = '<!--Metadata type="DesignerControl" startspan';\r
+       var strDTCTagClose = '<!--Metadata type="DesignerControl" endspan-->';\r
+       var nDTCTagOpen = strRawHTML.indexOf( strDTCTagOpen, nStartPos );\r
+       if( nDTCTagOpen < 0 )\r
+               return strRawHTML;\r
+       var nDTCTagClose = strRawHTML.indexOf( strDTCTagClose, nDTCTagOpen );\r
+       if( nDTCTagClose < nDTCTagOpen)\r
+               return strRawHTML; // no Design Time Controls;\r
+               \r
+       //Is the DTC HTML Help Control?\r
+       var strRTObjTagOpen = 'classid=clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11';\r
+       var strRTObjTagClose = '</OBJECT>';\r
+       var nRTObjTagOpen = strRawHTML.indexOf( strRTObjTagOpen, nDTCTagOpen );\r
+       if( nRTObjTagOpen < nDTCTagOpen )\r
+               return strRawHTML;\r
+       var nRTObjTagClose = strRawHTML.indexOf( strRTObjTagClose, nRTObjTagOpen );\r
+       if( nRTObjTagClose < nRTObjTagOpen )\r
+               return strRawHTML; // is not a HTML help control\r
+               \r
+       // Is it a related Topics html help control?\r
+       var strRTObjLabel = '<PARAM NAME=\"Command\" VALUE=\"Related Topics';\r
+       if( strRawHTML.indexOf(strRTObjLabel, nRTObjTagOpen) < 0 )\r
+               return strRawHTML;\r
+       \r
+       // does the commented object tag contain a items parameters             \r
+       var strRTItemsOpen = '<param name=Items value="';\r
+       var strRTItemsClose = '$$**$$" >';\r
+       var nRTItemsOpen = strRawHTML.indexOf(strRTItemsOpen, nDTCTagOpen);\r
+       if( nRTItemsOpen < nDTCTagOpen )\r
+               return strRawHTML;\r
+       var nRTItemsClose = strRawHTML.indexOf(strRTItemsClose, nRTItemsOpen);\r
+       if( nRTItemsClose < nRTItemsOpen )\r
+               return strRawHTML;\r
+               \r
+       // found a items string\r
+       var strItems = strRawHTML.substring( nRTItemsOpen + strRTItemsOpen.length, nRTItemsClose);\r
+       if( strItems.length < 1 )\r
+               return strRawHTML;\r
+       \r
+       // to reconstruct the item(s) param tag(s)\r
+       var strItemsArray = strItems.split('$$**$$');\r
+       if( strItemsArray.length < 1 )\r
+               return strRawHTML;\r
+       var strRunTimeItemParam = "";\r
+       for( var i = 0; i < strItemsArray.length; i++ )\r
+       {\r
+               strRunTimeItemParam += '<PARAM  NAME="Item' + (i+1);\r
+               strRunTimeItemParam += '"' + '  VALUE="';\r
+               strRunTimeItemParam += strItemsArray[i];\r
+               strRunTimeItemParam += '">';\r
+       }\r
+       \r
+       // to insert the reconstructed item params into runtime object tag\r
+       var strAdjustedHTML = strRawHTML.substring(0,nRTObjTagClose) + strRunTimeItemParam + strRawHTML.substring(nRTObjTagClose, strRawHTML.length);\r
+       return kadovAdjustObjectTag(strAdjustedHTML, nDTCTagClose + strDTCTagClose.length);\r
+}\r
+\r
+function kadovTextPopupOnLoad( el )\r
+{\r
+       if( !CCSSP.bIsWinOS && !CCSSP.bIsSunOS)\r
+               return 0;\r
+\r
+       if( typeof(el) == "string" )\r
+               el = document.all.item(el);\r
+\r
+       var src = el.getAttribute( "x-use-popup" );\r
+       if(!src)\r
+               return 0;\r
+\r
+       var name = src;\r
+       if( src.substr(0,1) == "#" ) \r
+               name = src.substr(1, src.length-1);\r
+       var srcDiv = document.all.item(name);\r
+       if( !srcDiv )\r
+               return 1;\r
+\r
+       var type = el.getAttribute( "x-popup-type" );\r
+       var setup = el.getAttribute( "x-tmp-setup" );\r
+       var newId = name;\r
+       if( newId.indexOf( "_tmp") <= 0 )\r
+               newId += "_tmp";\r
+\r
+       if( !setup )\r
+       {\r
+               el.setAttribute( "x-tmp-setup", 1 );\r
+       \r
+               if( type == "pulldown"  )\r
+               {\r
+                       var strAdjust = kadovAdjustObjectTag(srcDiv.innerHTML,0);\r
+                       var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");\r
+                       strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");\r
+\r
+                       //work around the bug in HH.exe that highlight the phrases when use Search tab\r
+                       //this approach is just removing the <FONT...> tag inserted by Microsoft in the runtime\r
+                       strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<FONT color=#", "\">", 52);\r
+                       \r
+                       var strStyle = " style='display:none; position:relative;";\r
+                       var newDiv = "<div class=droptext id=" + newId + strStyle + "'>" + strCleanHTML + "</div>";\r
+\r
+                       srcDiv.outerHTML = ""; // empty the original DIV tag\r
+                       var elParentPra = kadovFindParentParagraph(el);\r
+                       if( elParentPra )\r
+                               elParentPra.insertAdjacentHTML( "AfterEnd", newDiv );\r
+               }\r
+               else if( type == "expanding"  )\r
+               {\r
+                       var inner = kadovRetrieveTextInner(srcDiv);\r
+                       if( inner == "" )\r
+                               inner = srcDiv.innerHTML;\r
+                       var strAdjust = kadovAdjustObjectTag(inner,0);\r
+                       var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");\r
+                       strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");\r
+                       var strClassName = (el.className == "glossterm") ? "glosstext" : "expandtext";\r
+                       var newSpan = "<span class=" + strClassName + " style='display: none;' id=" + newId + ">&nbsp;" + strCleanHTML + "</span>";\r
+                       srcDiv.outerHTML = ""; // empty the original DIV tag\r
+                       el.insertAdjacentHTML( "AfterEnd", newSpan );\r
+               }\r
+       }\r
+       return 0;\r
+}\r
+\r
+function kadovTextPopup( el )\r
+{\r
+       if( (!CCSSP.bIsWinOS && !CCSSP.bIsSunOS) || (window.event == null) )\r
+               return;\r
+       window.event.cancelBubble = true;\r
+\r
+       if( typeof(el) == "string" )\r
+               el = document.all.item(el);\r
+\r
+       var src = el.getAttribute( "x-use-popup" );\r
+       if(!src)\r
+               return;\r
+\r
+       var name = src;\r
+       if( src.substr(0,1) == "#" ) \r
+               name = src.substr(1, src.length-1) + "_tmp";\r
+       var srcDiv = document.all.item(name);\r
+       if( !srcDiv )\r
+               return;\r
+\r
+       var type = el.getAttribute( "x-popup-type" );\r
+       var setup = el.getAttribute( "x-tmp-setup" );\r
+       if( srcDiv )\r
+       {\r
+               if( srcDiv.style.display == "" )\r
+                       srcDiv.style.display = "none";\r
+               else\r
+               {\r
+                       srcDiv.style.display = "";\r
+                       if( typeof(srcDiv.bInitialized) == "undefined" )\r
+                       {\r
+                               srcDiv.bInitialized = true;\r
+                               kadovInitEffects(name);\r
+                               kadovInitEachChild(srcDiv);\r
+                       }\r
+               }\r
+       }\r
+       return;\r
+}\r
+\r
+function kadovFindParentParagraph( el )\r
+{\r
+       if( typeof(el) == "string" )\r
+               el = document.all.item(el);\r
+       if( (!el) || el.tagName == "BODY" )\r
+               return null;\r
+       if( kadovIsParagraph(el.parentElement) )\r
+               return el.parentElement;\r
+       else\r
+               return kadovFindParentParagraph( el.parentElement );\r
+}\r
+\r
+//Begin HTML code invoked function\r
+function kadovRegisterEventHandler( obj, strEvent, strEventHandler )\r
+{\r
+       if( !gbBsIE4 )\r
+               return;\r
+       CCSSP.RegisterEventHandler( obj, strEvent, strEventHandler );\r
+}\r
+\r
+function kadovTextPopupInit( el )\r
+{\r
+       if( (!gbBsIE4) || (!CCSSP.bIsWinOS && !CCSSP.bIsSunOS))\r
+               return;\r
+               \r
+       if( typeof(el) == "string" )\r
+               el = document.all.item(el);\r
+       if( el != null )\r
+       {\r
+               CCSSP.RegisterEventHandler( el, "onclick", "kadovTextPopup(" + el.id +");" );\r
+               CCSSP.RegisterEventHandler( window, "onload", "kadovTextPopupOnLoad(" + el.id +");" );\r
+       }\r
+}\r
+//End HTML code invoked function\r
+\r
+//End to support extended and dropdown text effects.\r
+\r
+//Begin to convert iWrite format to RoboEditor Format for DHTML effects\r
+function kadovInitTriggersInHead( )\r
+{\r
+  if( Object.xDelayedInitElements )\r
+  {\r
+     var x = Object.xDelayedInitElements;\r
+     for(i=0; i<x.length; i++)\r
+       kadovInitTrigger( x[i] );\r
+  }\r
+}\r
+\r
+//Begin HTML code invoked function\r
+function kadovFilePopupInit( el )\r
+{\r
+       if( !gbBsIE4 )\r
+               return;\r
+       if( typeof(el) == "string" )\r
+               el = document.all.item(el);\r
+\r
+       if( el != null )\r
+               CCSSP.RegisterEventHandler( el, "onmouseover", "BSPSPopupOnMouseOver(event);" );\r
+}\r
+\r
+function kadovInitTrigger( element )\r
+{\r
+       if( !gbBsIE4 )\r
+               return;\r
+       var srcElement = element;\r
+       if( typeof(srcElement) == "string" )\r
+       {\r
+               srcElement = document.all.item(element,0);\r
+               if(srcElement == null)\r
+                       return;\r
+       }\r
+       \r
+       if( !kadovIsParentVisible(srcElement) )\r
+               return;\r
+\r
+       var targets = srcElement.getAttribute( "x-targets" );\r
+       var arrOneTarget = targets.split( "," );\r
+       for( var i = 0; i < arrOneTarget.length; i ++ )\r
+               bsscFXInit( element, arrOneTarget[i], null, null, null, null );\r
+}\r
+\r
+function kadovIsParentVisible( el )\r
+{\r
+       if( typeof(el) == "string" )\r
+               el = document.all.item(el);\r
+       if( (!el) || el.tagName == "BODY" )\r
+               return true;\r
+       if( el.style.display == 'none' ) //el.visibility == 'hidden' || \r
+               return false;\r
+       else\r
+               return kadovIsParentVisible( el.parentElement );\r
+}\r
+\r
+function kadovInitEffects( element )\r
+{\r
+       if( !gbBsIE4 )\r
+               return;\r
+       var srcElement = element;\r
+       if( typeof(srcElement) == "string" )\r
+       {\r
+               srcElement = document.all.item(element,0);\r
+               if(srcElement == null)\r
+                       return;\r
+       }\r
+       \r
+       if( !kadovIsParentVisible(srcElement) )\r
+               return;\r
+       \r
+       kadovInitEffect( srcElement, "x-on-hover" );\r
+       kadovInitEffect( srcElement, "x-on-pageclick" );\r
+       kadovInitEffect( srcElement, "x-on-pageload" );\r
+       kadovInitEffect( srcElement, "x-on-trigger-1" );\r
+       kadovInitEffect( srcElement, "x-on-trigger-2" );\r
+}\r
+//End HTML code invoked function\r
+\r
+function kadovInitEffect( element, prop )\r
+{\r
+       var values = null;\r
+       if( element.getAttribute( "currentStyle" )  && element.currentStyle.getAttribute)\r
+               values = element.currentStyle.getAttribute( prop );\r
+       else  if (element.style.getAttribute)\r
+               values = element.style.getAttribute( prop );\r
+       if( !values )\r
+               return;\r
+\r
+       var functions = new Array();\r
+       var nIdx = 0, nStart = 0;\r
+       var nNext = values.indexOf( "\)", 0);\r
+       while( nNext >= 0 && nNext < values.length )\r
+       {\r
+               functions[nIdx] = values.substr( nStart, nNext-nStart+1);\r
+               nStart = nNext + 1;\r
+               nIdx++;\r
+               nNext = values.indexOf( "\)", nStart);\r
+       }\r
+               \r
+       for( var i=0; i<functions.length; i++)\r
+       {\r
+               var id = element.getAttribute( "id" );\r
+               var translatedProp = kadovTranslateProp(prop);\r
+\r
+               var lp = functions[i].indexOf( "(" );\r
+               var fnname = functions[i].substring(0, lp);\r
+               var srcargs = functions[i].substring(lp+1, functions[i].length-1);\r
+               \r
+               var nClickTimes = 1;\r
+               var arrForClickCount = srcargs.split( "," );\r
+               for( var j = 0; j < arrForClickCount.length; j++ )\r
+               {// to locate and get the "clicks=99" settings\r
+                       var nPageClick = arrForClickCount[j].indexOf("clicks");\r
+                       if( nPageClick >= 0 )\r
+                       {\r
+                               nPageClick = arrForClickCount[j].indexOf("=");\r
+                               if( nPageClick > 0 )\r
+                               {\r
+                                       nClickTimes = arrForClickCount[j].substring( nPageClick + 1, arrForClickCount[j].length) * 1;\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+               var args = srcargs;\r
+               if( j < arrForClickCount.length )\r
+               {// to strip out the "clicks=99" from the arguments string\r
+                       args = "";\r
+                       for( var k = 0; k < arrForClickCount.length; k ++ )\r
+                       {\r
+                               if( k != j )\r
+                               {\r
+                                       args += arrForClickCount[k];\r
+                                       if( k < arrForClickCount.length - 1 )\r
+                                               args += ",";\r
+                               }\r
+                       }\r
+               }\r
+               bsscFXInit( null, id, translatedProp, fnname, args, nClickTimes );\r
+       }\r
+}\r
+\r
+function kadovTranslateProp( prop )\r
+{\r
+       switch( prop )\r
+       {\r
+       case "x-on-hover" :     return "bsschover";\r
+       case "x-on-pageclick" : return "bsscpageclick";\r
+       case "x-on-pageload" :  return "bsscpageload";\r
+       case "x-on-trigger-1" : return "bssctrigger1";\r
+       case "x-on-trigger-2" : return "bssctrigger2";\r
+       }\r
+       return null;\r
+}\r
+//End to convert iWrite format to RoboEditor Format for DHTML effects\r
+\r
+//Begin the definition of one entry to DHTML effects\r
+function bsscFXInit( trigger_ID, target_ID, event_type, \r
+       action_type, action_setting, event_addional )\r
+{\r
+       if( (!CCSSP.bIsWinOS && !CCSSP.bIsSunOS ) || typeof(target_ID) != "string" )//MUST have a target_ID\r
+               return; // we don't support Navigator yet\r
+       \r
+       if( typeof(event_type) == "string" )\r
+               event_type = event_type.toLowerCase();\r
+       if( typeof(action_type) == "string" )\r
+               action_type = action_type.toLowerCase();\r
+       if( typeof(action_setting) == "string" )\r
+                action_setting = action_setting.toLowerCase();\r
+       \r
+       // to get the target element then add it to the target list\r
+       var eleTarget = CCSSP.GetObject( target_ID );\r
+       if( (eleTarget != null) && (event_type != null) && (action_type != null) )\r
+       {\r
+               CEngine.AddOneTarget( target_ID, eleTarget );\r
+               CEngine.BuildTargetObject(target_ID, event_type, action_type, action_setting, event_addional);\r
+       }\r
+       \r
+       // to validate the trigger_ID parameter\r
+       if( typeof(trigger_ID) == "string" && trigger_ID != "" )\r
+               CEngine.BuildTriggerObject( trigger_ID, target_ID );\r
+}      \r
+//End the definition of one entry to DHTML effects\r
+\r
+\r
+/// Section End  - kadov DHTM (JavaScript 1.2)\r
+\r
+\r
+/// Section Begin  - CCSSP DHTM (JavaScript 1.2)\r
+\r
+//Begin JavaScript libary for cross-platform positioning object.\r
+function CCSSP(){} // constructor of CCSSP class\r
+\r
+CCSSP.strAgent = navigator.userAgent.toLowerCase(); \r
+CCSSP.nAppVersion = parseInt(navigator.appVersion);\r
+\r
+CCSSP.bIsWinOS = ((CCSSP.strAgent.indexOf("win") >= 0) || (CCSSP.strAgent.indexOf("16bit") >= 0));\r
+CCSSP.bIsMacOS = (CCSSP.strAgent.indexOf("mac") >= 0);\r
+CCSSP.bIsSunOS = (CCSSP.strAgent.indexOf("sunos") != -1);\r
+\r
+CCSSP.bIsIE = (navigator.appName.indexOf("Microsoft") >= 0);\r
+CCSSP.bIsIE4 = (CCSSP.bIsIE && (CCSSP.nAppVersion >= 4));\r
+CCSSP.bIsIE5 = (CCSSP.bIsIE4 && (CCSSP.strAgent.indexOf("msie 5") != -1) )\r
+\r
+CCSSP.bIsNav = (navigator.appName.indexOf("Netscape") >= 0);\r
+CCSSP.bIsNav4 = (CCSSP.bIsNav && (CCSSP.nAppVersion >= 4));\r
+CCSSP.bIsNav6 = (CCSSP.bIsNav && (CCSSP.nAppVersion >= 5));\r
+\r
+CCSSP.GetObject = function( obj )\r
+{//convert object name string or reference into a valid object reference\r
+       if( typeof(obj) == "object" )\r
+               return obj;\r
+       else if( typeof(obj) == "string" && obj != "")\r
+       {\r
+               if( CCSSP.bIsNav4 )\r
+                       return eval("document." + obj);\r
+               else\r
+                       return eval("document.all." + obj);\r
+       }\r
+       else\r
+               return null;\r
+}\r
+\r
+CCSSP.MoveObjectTo = function(obj, x, y)\r
+{//positioning an object at a specific pixel coordinate\r
+       if( CCSSP.bIsNav4 )\r
+               obj.moveTo(x,y);\r
+       else\r
+       {\r
+               obj.style.pixelLeft = x;\r
+               obj.style.pixelTop = y;\r
+       }\r
+}\r
+\r
+CCSSP.MoveObjectBy = function(obj, dx, dy)\r
+{//moveing a object by x and/or y pixel\r
+       if( CCSSP.bIsNav4 )\r
+               obj.moveBy(dx,dy);\r
+       else\r
+       {\r
+               obj.style.pixelLeft += dx;\r
+               obj.style.pixelTop += dy;\r
+       }\r
+}\r
+\r
+CCSSP.SetObjectBGColor = function(obj, color)\r
+{//set the background color of an object\r
+       if( CCSSP.bIsNav4 )\r
+               obj.bgColor = color;\r
+       else\r
+               obj.style.backgroundColor = color;\r
+}\r
+\r
+CCSSP.ShowObject = function(obj, bShow)\r
+{// set the object to be visible or invisible\r
+       if( CCSSP.bIsNav4 )\r
+               obj.visibility = (bShow == true) ? 'show' : 'hide';\r
+       else\r
+               obj.style.visibility = (bShow == true) ? 'visible' : 'hidden';// when hidden, it still occupy some space.\r
+}\r
+\r
+CCSSP.GetObjectLeft = function(obj)\r
+{// retrieve the x coordinate of a posionable object\r
+       if( CCSSP.bIsNav4 )\r
+               return obj.left;\r
+       else\r
+               return obj.style.pixelLeft;\r
+}\r
+\r
+CCSSP.GetObjectTop = function(obj)\r
+{// retrieve the y coordinate of a posionable object\r
+       if( CCSSP.bIsNav4 )\r
+               return obj.top;\r
+       else\r
+               return obj.style.pixelTop;\r
+}\r
+\r
+CCSSP.GetObjectContainLeft = function(obj)\r
+{// retrieve the x coordinate of a posionable object relative to it's parent element\r
+       if( CCSSP.bIsNav4 )\r
+               return obj.pageX;\r
+       else\r
+       {\r
+               if( obj == document.body )\r
+                       return obj.clientLeft;\r
+               else\r
+                       return obj.offsetLeft;\r
+       }\r
+}\r
+\r
+CCSSP.GetObjectWindowLeft = function(obj)\r
+{// retrieve the x coordinate of a posionable object relative to browser window\r
+       if( CCSSP.bIsNav4 )\r
+               return obj.pageX;\r
+       else\r
+       {\r
+               var nOffsetWindowLeft = 0;\r
+               for(var element = obj; element; element = element.offsetParent)\r
+                       nOffsetWindowLeft += CCSSP.GetObjectContainLeft(element);\r
+               return nOffsetWindowLeft;\r
+       }\r
+}\r
+\r
+CCSSP.GetObjectContainTop = function(obj)\r
+{// retrieve the y coordinate of a posionable object relative to it's parent element\r
+       if( CCSSP.bIsNav4 )\r
+               return obj.pageY;\r
+       else\r
+       {\r
+               if( obj == document.body )\r
+                       return obj.clientTop;\r
+               else\r
+                       return obj.offsetTop;\r
+       }\r
+}\r
+\r
+CCSSP.GetObjectWindowTop = function(obj)\r
+{// retrieve the y coordinate of a posionable object relative to browser window\r
+       if( CCSSP.bIsNav4 )\r
+               return obj.pageY;\r
+       else\r
+       {\r
+               var nOffsetWindowTop = 0;\r
+               for(var element = obj; element; element = element.offsetParent)\r
+                       nOffsetWindowTop += CCSSP.GetObjectContainTop(element);\r
+               return nOffsetWindowTop;\r
+       }\r
+}\r
+\r
+CCSSP.GetObjectHeight = function(obj)\r
+{// retrieve the height of a posionable object\r
+       if( CCSSP.bIsNav4 )\r
+               return obj.clip.height;\r
+       else\r
+               return obj.offsetHeight;\r
+}\r
+\r
+CCSSP.GetObjectWidth = function(obj)\r
+{// retrieve the width of a posionable object\r
+       if( CCSSP.bIsNav4 )\r
+               return obj.clip.width;\r
+       else\r
+               return obj.offsetWidth;\r
+}\r
+\r
+CCSSP.RegisterEventHandler = function( srcObj, rawEventName, funcHandler )\r
+{ // to add the "funcHandler" as the "rawEventName" 's handler to the "srcObj" object,the original event handler will be combined\r
+       if (CCSSP.bIsNav4 && !CCSSP.bIsNav6)\r
+               return ;\r
+       var oldHandler = "";\r
+       if (CCSSP.bIsMacOS && CCSSP.bIsIE4)\r
+       {\r
+               if (typeof(srcObj[rawEventName.toLowerCase()])=="unknown")\r
+               { //search for <SCRIPT> tag which define the event handler\r
+                       for( var i = 0; i < document.scripts.length; i++ ) \r
+                       {\r
+                               var script = document.scripts[i];\r
+                               if( (script.htmlFor == srcObj.id || script.htmlFor == srcObj ) && script.event == rawEventName )\r
+                               {\r
+                                       oldHandler = script.innerHTML;\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       else\r
+       {\r
+               var oldInlineHandler = srcObj[rawEventName.toLowerCase()];\r
+               if( oldInlineHandler != null && typeof(oldInlineHandler) != "undefined")\r
+               {\r
+                       var functionDefinition = oldInlineHandler.toString();\r
+                       var bodyStart = functionDefinition.indexOf( "{" );\r
+                       var bodyEnd = functionDefinition.lastIndexOf( "}" );\r
+                       if( bodyStart > 0 || bodyEnd > bodyStart )\r
+                               oldHandler = functionDefinition.substr( bodyStart + 1, bodyEnd - bodyStart - 2 );\r
+               }\r
+               else if( CCSSP.bIsIE4 )\r
+               { //search for <SCRIPT> tag which define the event handler\r
+                       for( var i = 0; i < document.scripts.length; i++ ) \r
+                       {\r
+                               var script = document.scripts[i];\r
+                               if( (script.htmlFor == srcObj.id || script.htmlFor == srcObj ) && script.event == rawEventName )\r
+                               {\r
+                                       oldHandler = script.innerHTML;\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+       }       \r
+       if( oldHandler.indexOf(funcHandler) >= 0 )\r
+               return;// to prevent register the funtion twice.\r
+\r
+       if( CCSSP.bIsNav4 ) // only "onload, onresize, onfocus" apply to window\r
+       {// other raw events will apply to layer\r
+               var noOn = rawEventName.substring(2, rawEventName.length);\r
+               if( typeof(noOn) == "string" && noOn.length > 3 ) {\r
+                       srcObj.captureEvents( Event[noOn.toUpperCase()] );\r
+               }\r
+       }\r
+\r
+       var newHandler = oldHandler;\r
+       if( newHandler.length == 0 )\r
+               newHandler = funcHandler;\r
+       else\r
+               newHandler += "; " + funcHandler;\r
+       srcObj[rawEventName.toLowerCase()] = new Function( newHandler );\r
+}\r
+\r
+CCSSP.GetWindowHeight = function()\r
+{// retrieve the height of available content in browser window\r
+       if( CCSSP.bIsNav4 )\r
+               return window.innerHeight;\r
+       else\r
+               return document.body.clientHeight;\r
+}\r
+\r
+CCSSP.GetWindowBottom = function()\r
+{// retrieve the bottom postion of browser window\r
+       if( CCSSP.bIsNav4 )\r
+               return window.outerHeight + window.pageYOffset;\r
+       else\r
+               return document.body.clientHeight + document.body.scrollTop;\r
+}\r
+\r
+CCSSP.GetWindowWidth = function()\r
+{// retrieve the width of available content in browser window\r
+       if( CCSSP.bIsNav4 )\r
+               return window.innerWidth;\r
+       else\r
+               return document.body.clientWidth;\r
+}\r
+\r
+CCSSP.GetWindowRight = function()\r
+{// retrieve the right postion of browser window\r
+       if( CCSSP.bIsNav4 )\r
+               return window.outerWidth + window.pageXOffset;\r
+       else\r
+               return document.body.clientWidth + document.body.scrollLeft;\r
+}\r
+\r
+CCSSP.TrimString = function( objString, subtrim )\r
+{// to trim the "subtrim" in the beginning and ending of a string object\r
+       if( typeof(subtrim) != "string" || subtrim == null )\r
+               return objString;\r
+       var strHead = objString.substring(0, 1);\r
+       var strRear = objString.substring(objString.length-1, objString.length);\r
+       if( strHead != subtrim && strRear != subtrim )\r
+               return objString;\r
+       \r
+       var spacePos = objString.indexOf(subtrim);\r
+       if( spacePos < 0 )\r
+               return objString;\r
+       else if( spacePos == objString.length - 1 )\r
+               return objString.substring(0, spacePos);\r
+       else\r
+       {\r
+               var newString = objString.substring( spacePos + 1, objString.length);\r
+               return CCSSP.TrimString( newString, subtrim );\r
+       }\r
+}\r
+\r
+CCSSP.TrimSpace = function( objString )\r
+{\r
+       var Trim1 = CCSSP.TrimString( objString, " ");\r
+       return CCSSP.TrimString( Trim1, "\'");\r
+}\r
+\r
+CCSSP.GetEventElement = function( navEventObject )\r
+{// to get the element who fired the current event\r
+       if(CCSSP.bIsNav4 ) \r
+               if (CCSSP.bIsNav6)\r
+                       return null;\r
+               else\r
+                        navEventObject.target;\r
+       else\r
+               return event.srcElement;\r
+}\r
+\r
+CCSSP.PrepareFilter = function( Obj )\r
+{//to prepare for making the filter work\r
+       Obj.style.filter = "";\r
+       if( Obj.style.width != "" || Obj.style.height != "" || Obj.style.position == "absolute" )\r
+               return;\r
+       Obj.style.height = CCSSP.GetObjectHeight(Obj);\r
+}\r
+\r
+CCSSP.IsDescendant = function( progenitor, progeny )\r
+{\r
+       if( typeof(progeny) == "undefined" || progeny == null )\r
+               return false;\r
+       else if( progeny == progenitor )\r
+               return true; \r
+       else if( progeny.id == progenitor.id ) \r
+               return true; \r
+       else if( progeny.parentElement == progenitor.parentElement )\r
+               return false;\r
+       else\r
+               return CCSSP.IsDescendant( progenitor, progeny.parentElement );\r
+}\r
+\r
+CCSSP.IsTextTag = function( Obj )\r
+{\r
+       if( typeof( Obj.tagName ) == "undefined" )\r
+               return false;\r
+       return( Obj.tagName.indexOf("H") == 0 || Obj.tagName == "P" || \r
+                       Obj.tagName == "FONT" || Obj.tagName == "SPAN" );\r
+}\r
+\r
+//End JavaScript libary for cross-platform positioning object.\r
+\r
+/// Section End  - CCSSP DHTM (JavaScript 1.2)\r
+\r
+/// Section Begin  - CCSSP DHTM 1 (JavaScript 1.2)\r
+\r
+//Begin the definition of class CTrigger\r
+function CTrigger( TriggerElement )\r
+{\r
+       // object : the trigger element. Never be null. \r
+       this.eleTrigger = TriggerElement;\r
+       \r
+       // number : the click counter number: only 3 values: 0,1,2;\r
+       this.nCounter = 0; \r
+       \r
+       //object as associative array of string:\r
+       // the associate target ID strings; one element at least.                       \r
+       this.objStrTarget = new Object();\r
+       this.eleTrigger.style.cursor = "hand";\r
+       if( this.eleTrigger.tagName == "AREA" && this.eleTrigger.getAttribute("href") == "" )\r
+               this.eleTrigger.setAttribute("href", "#") // to make a hand cursor for image map\r
+}\r
+\r
+CTrigger.prototype.AddTargetID = function( strTargetID )\r
+{// add one target ID string to the objStrTarget\r
+       if( typeof(strTargetID) != "string" )\r
+               return ;\r
+       if( typeof(this.objStrTarget[strTargetID]) != "string" )\r
+               this.objStrTarget[strTargetID] = strTargetID;\r
+}\r
+\r
+CTrigger.prototype.OnTriggerClick = function()\r
+{// to activate all asociated target\r
+       var strEventType = ( (this.nCounter++)% 2 == 0 ) ? \r
+               "bssctrigger1" : "bssctrigger2";\r
+               \r
+       // to enumerate associative target element's ID string\r
+       for( var strTargetID in this.objStrTarget ) \r
+               CEngine.SendEventToOneTarget( strTargetID, strEventType );\r
+}\r
+//End the definition of class CTrigger\r
+\r
+//Begin the definition of class CTarget\r
+function CTarget( TargetElement )\r
+{\r
+       // object : the target element. Never be null.\r
+       this.eleTarget = TargetElement;\r
+       this.objManager = new Object(); // object: the event manager\r
+} \r
+\r
+CTarget.nPageClickCounter = 0;// static class property.\r
+\r
+CTarget.prototype.GetAgencyObject = function(str_action_type,action_setting )\r
+{// return the action agency ( effect )object's refernece \r
+       switch( str_action_type )\r
+       {\r
+       case "show":return new CAgencyShow( this.eleTarget, true ) ;\r
+       case "hide":return new CAgencyShow( this.eleTarget, false ) ;\r
+\r
+    case "flyin" : \r
+       return new CAgencyFly(this.eleTarget, action_setting, true);\r
+    case "flyout" : \r
+       return new CAgencyFly(this.eleTarget, action_setting, false);\r
+    case "spiralin" : \r
+       return new CAgencySpiral(this.eleTarget, action_setting, true);\r
+    case "spiralout" : \r
+       return new CAgencySpiral(this.eleTarget, action_setting, false);\r
+    case "zoomin" :\r
+       return new CAgencyZoom(this.eleTarget, action_setting, true);\r
+    case "zoomout" : \r
+       return new CAgencyZoom(this.eleTarget, action_setting, false);\r
+    case "elastic" : \r
+               return new CAgencyElastic(this.eleTarget, action_setting);\r
+               \r
+    case "fadein" : \r
+       return (CCSSP.bIsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, true) : null;\r
+    case "fadeout" :\r
+       return (CCSSP.bIsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, false) : null;\r
+    case "rockrollstatic" :\r
+    case "rockroll" :\r
+       return (CCSSP.bIsIE4)? new CAgencyWave(this.eleTarget, action_setting, false) : null;\r
\r
+    case "glow":\r
+       return (CCSSP.bIsIE4)? new CAgencyGlow(this.eleTarget,action_setting) : null;\r
+    case "dropshadow":\r
+       return (CCSSP.bIsIE4)? new CAgencyDropShadow(this.eleTarget,action_setting) : null;\r
+    case "transition" :\r
+       return (CCSSP.bIsIE4)? new CAgencyRevealTrans(this.eleTarget,action_setting) : null;\r
+    case "blur" :\r
+       return (CCSSP.bIsIE4)? new CAgencyBlur(this.eleTarget,action_setting) : null;\r
+\r
+    case "fliph" : // all these 4 do NOT need any parameters\r
+    case "flipv" :\r
+    case "invert":\r
+    case "gray" :\r
+       return (CCSSP.bIsIE4)? new CAgencyChangeFilter(this.eleTarget, str_action_type) : null;\r
+    \r
+    case "fontchange": // the effects below change the style on the fly, so won't work in Navigator\r
+       return (CCSSP.bIsIE4)? new CAgencyFontChange(this.eleTarget,action_setting) : null;\r
+    case "boderchange": \r
+    case "stylechange":\r
+       return (CCSSP.bIsIE4)? new CAgencyChangeStyle(this.eleTarget,action_setting) : null;\r
+\r
+       default: return null;\r
+       }\r
+}\r
+\r
+CTarget.prototype.SetEventManager = function( \r
+       one_event_type,str_action_type,action_setting,event_additional)\r
+{// to set the event manager with specified action \r
+       if( typeof( one_event_type ) != "string" ||     \r
+               typeof( str_action_type ) != "string"||\r
+               typeof( action_setting ) != "string" )\r
+               return false;\r
+       if( typeof(this.objManager[one_event_type]) == "undefined" )\r
+       {\r
+               this.objManager[one_event_type] = new Object();\r
+               this.objManager[one_event_type].length = 0;\r
+       }\r
+       \r
+       var eventAgency = this.GetAgencyObject(str_action_type,action_setting);\r
+       if( eventAgency != null )\r
+       {\r
+               var ct = this.objManager[one_event_type].length ++;\r
+               this.objManager[one_event_type][ct] = eventAgency;\r
+               \r
+               if( one_event_type == "bsscpageclick" )\r
+               {// to deal with the "number of pageclick" stuff\r
+                       if( typeof(event_additional) == "number" )\r
+                               this.objManager[one_event_type][ct].nPageClick = event_additional;\r
+                       else // set the default number \r
+                               this.objManager[one_event_type][ct].nPageClick = 1;\r
+                       \r
+                       if( (typeof(this.objManager.nMinPageClickIndex) == "undefined") ||\r
+                           (this.objManager[one_event_type][ct].nPageClick < \r
+                                       this.objManager[one_event_type][this.objManager.nMinPageClickIndex].nPageClick) )\r
+                               this.objManager.nMinPageClickIndex = ct;\r
+               }\r
+               \r
+               //hide the object blindly,SetState function will take care of the final correct state\r
+               if( ((one_event_type == "bsscpageclick") && \r
+                        (this.objManager[one_event_type][ct].nPageClick == 1)) ||\r
+                       one_event_type == "bsscpageload" ||\r
+                       one_event_type == "bssctrigger1" )\r
+                       CCSSP.ShowObject( this.eleTarget, false );\r
+               \r
+               if( one_event_type == "bssctrigger1" || one_event_type == "bssctrigger2" )\r
+                       if( typeof( this.strTriggerEvent ) == "undefined" )\r
+                               this.strTriggerEvent = ( one_event_type == "bssctrigger1" ) ? "bssctrigger2" : "bssctrigger1";\r
+                       \r
+               return true;\r
+       }\r
+       return false;\r
+}\r
+\r
+CTarget.prototype.OnEvent = function( strBsscEvent )\r
+{// response to the event ( bssc format )\r
+       if( typeof(this.objManager[strBsscEvent]) == "object" )\r
+       { // to get the event agency from the event manager\r
+               var eventAgency = this.objManager[strBsscEvent];\r
+               for( var i = 0; i < eventAgency.length; i++ )\r
+               {\r
+                       if( strBsscEvent == "bsscpageclick" && \r
+                               eventAgency[i].nPageClick != CTarget.nPageClickCounter )\r
+                                continue;\r
+                       else if( strBsscEvent == "bsschover" && event.type == "mouseout" )\r
+                               eventAgency[i].EndEffect();\r
+                       else // to invoke the unified function in effect object \r
+                               eventAgency[i].UpdateEffect(); \r
+               }\r
+       }\r
+}\r
+\r
+CTarget.prototype.SetState = function( strBsscEvent )\r
+{\r
+       if( typeof(this.objManager[strBsscEvent]) != "object" )\r
+               return false;\r
+\r
+       // to get the event agency from the event manager\r
+       var eventAgency = this.objManager[strBsscEvent];\r
+       \r
+       if( strBsscEvent == "bsscpageclick" )\r
+       {// we only set the initial state for the minium number of pageclick \r
+               eventAgency[this.objManager.nMinPageClickIndex].PrepareEffect();\r
+               return true;\r
+       }\r
+       else\r
+       {\r
+               for( var i = 0; i < eventAgency.length; i++ )\r
+                       eventAgency[i].PrepareEffect(); // to invoke the unified function in effect object       \r
+               if( i > 0 )\r
+                       return true;\r
+               else\r
+                       return false;\r
+       }\r
+}\r
+//End the definition of class CTarget\r
+\r
+//Begin the definition of CEngine class\r
+function CEngine(){}// all properities are going be "class" properities\r
+\r
+// object : as associative array of trigger objects\r
+CEngine.objTrigger = new Object();\r
+// object : as associative array of target objects \r
+CEngine.objTarget = new Object(); \r
+\r
+// Array : each element is a CAgencyXXX animation object\r
+CEngine.arrAnimation = new Array();\r
+CEngine.PerformAnimation = function( nIndex )\r
+{// animation : update effects function\r
+       CEngine.arrAnimation[nIndex].UpdateEffect();\r
+}\r
+\r
+CEngine.AddOneTrigger = function(TriggerID,TriggerElement)\r
+{// add one Trigger object into the trigger array\r
+       if( typeof(TriggerID) != "string" || TriggerElement == null ||\r
+           typeof(TriggerElement) != "object" )\r
+               return;\r
+       if( typeof(CEngine.objTrigger[TriggerID] ) != "object" )\r
+               CEngine.objTrigger[TriggerID] = new CTrigger(TriggerElement);\r
+}\r
+       \r
+CEngine.AddOneTarget = function(TargetID, TargetElement)\r
+{// add one Target object into the target array\r
+       if( typeof(TargetID) != "string" || TargetElement == null ||\r
+               typeof(TargetElement) != "object" )\r
+               return;\r
+       if( typeof(CEngine.objTarget[TargetID]) != "object" )\r
+               CEngine.objTarget[TargetID] = new CTarget( TargetElement );\r
+}\r
+\r
+CEngine.SendEventToOneTarget = function(strTargetID, strBsscEvent )\r
+{// to activate one target object\r
+       if( typeof(CEngine.objTarget[strTargetID]) == "object" ) \r
+       {\r
+               if( strBsscEvent == "bssctrigger1" || strBsscEvent == "bssctrigger2" )\r
+               {//now, the "bssctrigger1" and "bssctrigger2" work like a toggle\r
+                       if( strBsscEvent == CEngine.objTarget[strTargetID].strTriggerEvent )\r
+                               strBsscEvent = (strBsscEvent == "bssctrigger1") ? "bssctrigger2" : "bssctrigger1";\r
+                       CEngine.objTarget[strTargetID].strTriggerEvent = strBsscEvent;\r
+               }\r
+               CEngine.objTarget[strTargetID].OnEvent( strBsscEvent );\r
+       }\r
+}\r
+\r
+CEngine.SendEventToAllTarget = function( strBsscEvent )\r
+{ //to activate all target associative to the BSSC event\r
+       for( var strTargetID in CEngine.objTarget ) //to enumerate all target\r
+               CEngine.SendEventToOneTarget( strTargetID, strBsscEvent );\r
+}\r
+\r
+CEngine.SetOneTargetInitialState = function( strTargetID )\r
+{// only invoked after ALL effects for the target have been set\r
+       if( typeof(CEngine.objTarget[strTargetID]) == "object" ) \r
+       {// to get target object\r
+               var objTarget = CEngine.objTarget[strTargetID];\r
+               if( objTarget.SetState( "bsscpageload" ) == false )\r
+               {\r
+                       objTarget.SetState( "bsscpageclick" );\r
+                       objTarget.SetState( "bssctrigger1" );\r
+               }\r
+       }\r
+}\r
+\r
+CEngine.AdjustPageClickCounter = function()\r
+{\r
+       var nAdjustedClickCounter = CTarget.nPageClickCounter;\r
+       var bAdjusted = false;\r
+       for( var strTargetID in CEngine.objTarget ) //to enumerate all target\r
+       {// try to find the minum pageCliclConter greater than CTarget.nPageClickCounter\r
+               var objEventPageClick = CEngine.objTarget[strTargetID].objManager.bsscpageclick;\r
+               if( objEventPageClick != null )\r
+               {\r
+                       for( var i = 0; i < objEventPageClick.length; i++ )\r
+                       {\r
+                               var nOtherPageClick = objEventPageClick[i].nPageClick;\r
+                               if( nOtherPageClick == CTarget.nPageClickCounter )\r
+                                       return;\r
+                               if( nOtherPageClick > CTarget.nPageClickCounter )\r
+                               {\r
+                                       if( !bAdjusted )\r
+                                       {\r
+                                               nAdjustedClickCounter = nOtherPageClick;\r
+                                               bAdjusted = true;\r
+                                       }\r
+                                       else if( nOtherPageClick < nAdjustedClickCounter )\r
+                                               nAdjustedClickCounter = nOtherPageClick;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       CTarget.nPageClickCounter = nAdjustedClickCounter;\r
+}\r
+\r
+CEngine.OnPageLoad = function()\r
+{      \r
+       // first, to set all target's initial state\r
+       for( var strTargetID in CEngine.objTarget )\r
+               CEngine.SetOneTargetInitialState( strTargetID );\r
+       \r
+       // to invoke all target's onpageload handler\r
+       CEngine.SendEventToAllTarget( "bsscpageload" );\r
+}\r
+\r
+CEngine.OnPageClick = function()\r
+{ // to invoke all target's onpageclick handler\r
+       var src = CCSSP.GetEventElement( arguments[0] );\r
+       if( src == null )\r
+               return;\r
+               \r
+       var objClickedTrigger = null;\r
+       for( var strTriggerID in CEngine.objTrigger )\r
+       { // to detect which trigger is clicked\r
+               if( CCSSP.IsDescendant( CEngine.objTrigger[strTriggerID].eleTrigger,src) )\r
+               {\r
+                       objClickedTrigger = CEngine.objTrigger[strTriggerID];\r
+                       break;\r
+               }\r
+       }\r
+       \r
+       if( objClickedTrigger != null) // the clicked trigger found\r
+               objClickedTrigger.OnTriggerClick();\r
+       else // no trigger is clicked\r
+       { // to send PageClick event to all target\r
+               CTarget.nPageClickCounter++;\r
+               CEngine.AdjustPageClickCounter();\r
+               CEngine.SendEventToAllTarget( "bsscpageclick" );\r
+       }\r
+}      \r
+\r
+CEngine.OnMouseOver = function()\r
+{ // to invoke all target's onpageload handler\r
+       var src = CCSSP.GetEventElement( arguments[0] );\r
+       if( src == null )\r
+               return;\r
+               \r
+       var strHoveredTargetID = null;\r
+       for( var strTargetID in CEngine.objTarget )\r
+       { // to detect which Target is hovering on\r
+               if( CCSSP.IsDescendant( CEngine.objTarget[strTargetID].eleTarget, src ) )\r
+           {\r
+                       strHoveredTargetID = strTargetID;\r
+                       break;\r
+           }\r
+       }\r
+       \r
+       if( strHoveredTargetID != null ) // the hovered target found\r
+               CEngine.SendEventToOneTarget( strHoveredTargetID, "bsschover" );\r
+}\r
+\r
+CEngine.BuildTargetObject = function(target_ID,event_type,action_type,\r
+                       action_setting, event_additional)\r
+{// to build target object \r
+       // to get the target object\r
+       if( typeof( CEngine.objTarget[target_ID] ) != "object" )\r
+               return false;// the engine's AddOneTarget function might have failed.\r
+       var TargetObject = CEngine.objTarget[target_ID];\r
+       \r
+       // to prepare the parameters for the event manager\r
+       var arrEvent = event_type.split("|"); // to split the combined event_type string\r
+       var arrAction = action_type.split("|");//to split the combined action_type string\r
+       for( var trim = 0; trim < arrEvent.length; trim++ )\r
+               arrEvent[trim] = CCSSP.TrimSpace(arrEvent[trim]);\r
+       \r
+       for( trim = 0; trim < arrAction.length; trim++ )\r
+               arrAction[trim] = CCSSP.TrimSpace(arrAction[trim]);\r
+       \r
+       var arrSetting = new Array(); \r
+       if( typeof(action_setting) == "string" )\r
+               arrSetting = action_setting.split("|");// to split the combined action_setting string\r
+       // to calibrate the arrays\r
+       for( var i = arrSetting.length; i < arrAction.length; i++ )\r
+       {\r
+               if( typeof(arrSetting[i]) != "string" )\r
+                        arrSetting[i] = "";\r
+       }                                \r
+\r
+       // to prepare for dealing with the absolute posioning element\r
+       TargetObject.eleTarget.ABSX = CCSSP.GetObjectLeft( TargetObject.eleTarget );\r
+       TargetObject.eleTarget.ABSY = CCSSP.GetObjectTop( TargetObject.eleTarget );\r
+\r
+       if( arrEvent.length > 1 )\r
+       {// if event is combined, it must be : "bssctrigger1 | bssctrigger2"\r
+               if( arrAction.length != 2 )\r
+                       return false; // if event is combined, there must be 2 actions\r
+               for( i = 0 ; i < 2; i++ )\r
+               {\r
+                       if( TargetObject.SetEventManager(arrEvent[i], arrAction[i], \r
+                               arrSetting[i], event_additional) == false )\r
+                               return false; // the event manager has not been set up\r
+               }\r
+       }\r
+       else // the event_type string is not combined\r
+       {\r
+               for( i = 0 ; i < arrAction.length; i++ )\r
+               {\r
+                       TargetObject.SetEventManager(event_type, arrAction[i], arrSetting[i], event_additional);\r
+                       // to validate the event manager\r
+                       if( typeof(TargetObject.objManager[event_type]) != "object" ||\r
+                                       typeof(TargetObject.objManager[event_type][i]) != "object" )\r
+                               return false; // the event manager has not been set up\r
+               }\r
+       }\r
+       return true;\r
+}\r
+\r
+CEngine.BuildTriggerObject = function(trigger_ID, target_ID)\r
+{// to build the trigger object\r
+       var arrTrigger = trigger_ID.split("|"); // to split the combined trigger_ID string\r
+       for( var i = 0; i < arrTrigger.length; i ++ )\r
+       {// to get the trigger element then add it to the trigger list\r
+               arrTrigger[i] = CCSSP.TrimSpace( arrTrigger[i] );\r
+               var eleTrigger = CCSSP.GetObject( arrTrigger[i] );\r
+               if( eleTrigger == null )\r
+                       continue; // the trigger_ID string in the HTML code maybe wrong\r
+               CEngine.AddOneTrigger( arrTrigger[i], eleTrigger );\r
+\r
+               // to get the target object\r
+               if( typeof( this.objTrigger[arrTrigger[i]] ) != "object" )\r
+                       continue;// the engine's AddOneTarget function might have failed.\r
+               CEngine.objTrigger[arrTrigger[i]].AddTargetID( target_ID );\r
+       }\r
+}\r
+//End the definition of CEngine class\r
+\r
+/// Section End  - CCSSP DHTM 1 (JavaScript 1.2)\r
+\r
+/// Section Begin  - CCSSP DHTM 2 (JavaScript 1.2)\r
+\r
+//Begin the definition of CAgencyXXXX classes\r
+\r
+//Begin of the CAgencyShow definition\r
+function CAgencyShow( element, bIsShow )\r
+{\r
+       this.ele = element;\r
+       this.bIsShow = bIsShow;\r
+}\r
+\r
+CAgencyShow.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.ShowObject( this.ele, !this.bIsShow );\r
+}\r
+\r
+CAgencyShow.prototype.UpdateEffect = function()\r
+{\r
+       CCSSP.ShowObject( this.ele, this.bIsShow );\r
+}\r
+\r
+CAgencyShow.prototype.EndEffect = function()\r
+{\r
+       CCSSP.ShowObject( this.ele, !this.bIsShow );\r
+}\r
+// End of the CAgencyShow definition\r
+\r
+// Begin of CAgencyFly definition\r
+function CAgencyFly( element, settings, bIsIn )\r
+{\r
+       this.ele = element;\r
+       this.bIsIn = bIsIn;\r
+       this.duration = 1000; // default\r
+       this.direction = "right";\r
+\r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {// to retrieve the setting\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
+               case "direction" : this.direction = arrOneSet[1]; break;\r
+               }\r
+       }\r
+               \r
+       if( CCSSP.bIsIE5 && this.ele.style.position != "absolute" )\r
+               this.ele.style.position = "relative";\r
+       this.timer = null;\r
+       this.aniIndex = CEngine.arrAnimation.length;\r
+       CEngine.arrAnimation[this.aniIndex] = this;\r
+}\r
+\r
+CAgencyFly.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.ShowObject(this.ele, !this.bIsIn );\r
+}\r
+\r
+CAgencyFly.prototype.UpdateEffect = function()\r
+{\r
+       if( this.timer == null )\r
+               this.ResetParameters();\r
+\r
+       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
+       if( percent >= 1.0 )\r
+               this.EndEffect();\r
+       else\r
+       {\r
+               var newX = this.startX*(1.0-percent) +  this.finalX*percent;\r
+               var newY = this.startY*(1.0-percent) +  this.finalY*percent;\r
+               CCSSP.MoveObjectTo(this.ele, newX, newY);\r
+               if( this.timer == null )\r
+                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
+       }\r
+}\r
+\r
+CAgencyFly.prototype.EndEffect = function()\r
+{\r
+       clearInterval( this.timer );\r
+       this.timer = null;\r
+\r
+       if( this.bIsIn ) // FlyIn\r
+               CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);\r
+       else // FlyOut\r
+               CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
+       CCSSP.ShowObject(this.ele, this.bIsIn );\r
+}\r
+\r
+CAgencyFly.prototype.ResetParameters = function()\r
+{\r
+       this.PrepareEffect();\r
+       CCSSP.ShowObject(this.ele, true );\r
+\r
+       this.startX = 0;\r
+       this.startY = 0;\r
+       this.finalX = 0;\r
+       this.finalY = 0; \r
+       \r
+       var offsetLeft = CCSSP.GetObjectWindowLeft(this.ele) + this.ele.offsetWidth;\r
+       var offsetTop = CCSSP.GetObjectWindowTop(this.ele) + this.ele.offsetHeight;\r
+       var offsetRight = CCSSP.GetWindowRight();\r
+       var offsetBottom = CCSSP.GetWindowBottom();\r
+\r
+       if( this.bIsIn )\r
+       { // FlyIn\r
+               this.finalX = this.ele.ABSX;\r
+               this.finalY = this.ele.ABSY;\r
+\r
+               switch( this.direction )\r
+               {\r
+               case "right": this.startX = offsetRight; this.startY = this.finalY; break;\r
+               case "left": this.startX = -offsetLeft;  this.startY = this.finalY; break;\r
+               case "down": this.startY = offsetBottom; this.startX = this.finalX; break;\r
+               case "up":  this.startY = -offsetTop;    this.startX = this.finalX; break;\r
+               case "downright":\r
+                       this.startX = ( offsetBottom < offsetRight) ? offsetBottom : offsetRight;\r
+                       this.startY = this.startX;              break;\r
+               case "upright":\r
+                       this.startX = (offsetTop < offsetRight)? offsetTop : offsetRight;\r
+                       this.startY = -this.startX;             break;\r
+               case "upleft":\r
+                       this.startX = -((offsetTop < offsetRight)? offsetTop : offsetRight);\r
+                       this.startY = this.startX;              break;\r
+               case "downleft":\r
+                       this.startX = -(( offsetBottom < offsetRight) ? offsetBottom : offsetRight);\r
+                       this.startY = -this.startX;     break;\r
+               }\r
+       }\r
+       else\r
+       { // FlyOut\r
+               this.startX = this.ele.ABSX;\r
+               this.startY = this.ele.ABSY;\r
+\r
+               switch( this.direction )\r
+               {\r
+               case "right": this.finalX = offsetRight;  this.finalY = this.startY; break;\r
+               case "left": this.finalX = -offsetLeft;   this.finalY = this.startY;  break;\r
+               case "down": this.finalY = offsetBottom;  this.finalX = this.startX; break;\r
+               case "up":  this.finalY = -offsetTop;     this.finalX = this.startX; break;\r
+               case "downright":\r
+                       this.finalX = ( offsetBottom < offsetRight) ? offsetBottom : offsetRight;\r
+                       this.finalY = this.finalX;              break;\r
+               case "upright":\r
+                       this.finalX = (offsetTop < offsetRight)? offsetTop : offsetRight;\r
+                       this.finalY = -this.finalX;             break;\r
+               case "upleft":\r
+                       this.finalX = -((offsetTop < offsetRight)? offsetTop : offsetRight);\r
+                       this.finalY = this.finalX;              break;\r
+               case "downleft":\r
+                       this.finalX = -(( offsetBottom < offsetRight) ? offsetBottom : offsetRight);\r
+                       this.finalY = -this.finalX;     break;\r
+               }\r
+       }\r
+       CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
+       this.startTime = (new Date()).getTime();\r
+}\r
+// End of the CAgencyFly definition\r
+\r
+// Begin of CAgencySpiral\r
+function CAgencySpiral( element, settings, bIsIn )\r
+{\r
+       this.ele = element;\r
+       this.bIsIn = bIsIn;\r
+       this.duration = 1000; // default\r
+\r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {// to retrieve the setting\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
+               }\r
+       }\r
+\r
+       if( CCSSP.bIsIE5 && this.ele.style.position != "absolute" )\r
+               this.ele.style.position = "relative";\r
+       this.timer = null;\r
+       this.aniIndex = CEngine.arrAnimation.length;\r
+       CEngine.arrAnimation[this.aniIndex] = this;\r
+}\r
+\r
+CAgencySpiral.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.ShowObject(this.ele, !this.bIsIn );\r
+}\r
+\r
+CAgencySpiral.prototype.UpdateEffect = function()\r
+{\r
+       if( this.timer == null )\r
+               this.ResetParameters();\r
+\r
+       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
+       if( percent >= 1.0 )\r
+               this.EndEffect();\r
+       else\r
+       {\r
+               var rf = (this.bIsIn)? (1.0 - percent) : percent; \r
+               var t = (1.0-rf) * 4.0 * Math.PI\r
+               var rxP = (this.bIsIn)? this.startX : this.finalX; \r
+               var ryP = (this.bIsIn)? this.startY : this.finalY; \r
+               var rx = (Math.abs(rxP) < 200) ? Math.abs(rxP) : 200;\r
+               var ry = (Math.abs(ryP) < 200) ? Math.abs(ryP) : 200;\r
+\r
+               var newX = Math.ceil(-rf*Math.cos(t)*rx) + this.ele.ABSX;\r
+               var newY = Math.ceil(-rf*Math.sin(t)*ry) + this.ele.ABSY;\r
+               CCSSP.MoveObjectTo(this.ele, newX, newY);\r
+               if( this.timer == null )\r
+                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
+       }\r
+}\r
+\r
+CAgencySpiral.prototype.EndEffect = function()\r
+{\r
+       clearInterval( this.timer );\r
+       this.timer = null;\r
+       \r
+       if( this.bIsIn ) // In\r
+               CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);\r
+       else // Out\r
+               CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
+       CCSSP.ShowObject(this.ele, this.bIsIn );\r
+}\r
+\r
+CAgencySpiral.prototype.ResetParameters = function()\r
+{\r
+       this.PrepareEffect();\r
+       CCSSP.ShowObject(this.ele, true );\r
+       this.startX = (this.bIsIn)? CCSSP.GetWindowRight() : this.ele.ABSX;\r
+       this.startY = (this.bIsIn)? CCSSP.GetWindowBottom() : this.ele.ABSY;\r
+       this.finalX = (this.bIsIn)? this.ele.ABSX : CCSSP.GetWindowRight();\r
+       this.finalY = (this.bIsIn)? this.ele.ABSY : CCSSP.GetWindowBottom(); \r
+       \r
+       CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
+       this.startTime = (new Date()).getTime();\r
+}\r
+// End of CAgencySpiral\r
+\r
+// Begin of CAgencyElastic\r
+function CAgencyElastic( element, settings)\r
+{\r
+       this.ele = element;\r
+       this.duration = 1000; // default\r
+       this.direction = "right";\r
+\r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {// to retrieve the setting\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
+               case "direction" : this.direction = arrOneSet[1]; break;\r
+               }\r
+       }\r
+               \r
+       if( CCSSP.bIsIE5 && this.ele.style.position != "absolute" )\r
+               this.ele.style.position = "relative";\r
+       this.timer = null;\r
+       this.aniIndex = CEngine.arrAnimation.length;\r
+       CEngine.arrAnimation[this.aniIndex] = this;\r
+}\r
+\r
+CAgencyElastic.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.ShowObject(this.ele, false );\r
+}\r
+\r
+CAgencyElastic.prototype.UpdateEffect = function()\r
+{\r
+       if( this.timer == null )\r
+               this.ResetParameters();\r
+\r
+       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
+       if( percent >= 1.0 )\r
+               this.EndEffect();\r
+       else\r
+       {\r
+               var newX = this.startX;\r
+               var newY = this.startY;\r
+               var rf = Math.exp(-percent*3);\r
+               var t = percent * 1.5 * Math.PI\r
+               var rx = (Math.abs(this.startX) > Math.abs(this.startY)) ? this.startX : this.startY;\r
+               switch (this.direction )\r
+               {\r
+               case "left":   \r
+               case "right" : newX = rf*Math.cos(t)*rx + this.ele.ABSX; break;\r
+               case "up":         \r
+               case "down" :  newY = rf*Math.cos(t)*rx + this.ele.ABSX; break;\r
+               }\r
+               CCSSP.MoveObjectTo(this.ele, newX, newY);\r
+               if( this.timer == null )\r
+                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
+       }\r
+}\r
+\r
+CAgencyElastic.prototype.EndEffect = function()\r
+{\r
+       CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);\r
+       clearInterval( this.timer );\r
+       this.timer = null;\r
+}\r
+\r
+CAgencyElastic.prototype.ResetParameters = function()\r
+{\r
+       CCSSP.ShowObject(this.ele, true );\r
+       this.startX = this.ele.ABSX;\r
+       this.finalX = this.ele.ABSX;\r
+       this.startY = this.ele.ABSY;\r
+       this.finalY = this.ele.ABSY;\r
+       \r
+       switch (this.direction)\r
+       { \r
+       case "left":  this.startX = -this.ele.offsetWidth; break;\r
+       case "right": this.startX = this.ele.offsetWidth;  break;\r
+       case "up":    this.startY = -this.ele.offsetHeight;break;\r
+       case "down":  this.startY = this.ele.offsetHeight; break;\r
+       }\r
+       CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
+       this.startTime = (new Date()).getTime();\r
+}\r
+// End of CAgencyElastic\r
+\r
+// Begin of CAgencyZoom\r
+function CAgencyZoom( element, settings, bIsIn)\r
+{\r
+       this.ele = element;\r
+       this.duration = 1000; // default\r
+       \r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {// to retrieve the setting\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
+               }\r
+       }\r
+\r
+       this.bIsIn = bIsIn;\r
+       this.timer = null;\r
+       this.aniIndex = CEngine.arrAnimation.length;\r
+       CEngine.arrAnimation[this.aniIndex] = this;\r
+}\r
+\r
+CAgencyZoom.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.ShowObject(this.ele, false);\r
+}\r
+\r
+CAgencyZoom.prototype.UpdateEffect = function()\r
+{\r
+       if( this.timer == null )\r
+               this.ResetParameters();\r
+\r
+       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
+       if( percent >= 1.0 )\r
+               this.EndEffect();\r
+       else\r
+       {\r
+               var nFactorIn = Math.ceil(50+50*percent);\r
+               var nFactorOut = Math.ceil(100+200*(1-percent));\r
+               var AlterFontsize = ((this.bIsIn)? nFactorIn : nFactorOut) + "%";\r
+               var AlterFactor = ((this.bIsIn)? nFactorIn : nFactorOut) / 100;\r
+               \r
+               this.UpdateEffectAllChildren(this.ele, AlterFontsize, AlterFactor);\r
+               for(var index = 0; index < this.ele.all.length; index++)\r
+                       this.UpdateEffectAllChildren(this.ele.all[index], AlterFontsize, AlterFactor);\r
+                       \r
+               if( this.timer == null )\r
+                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
+       }\r
+}\r
+\r
+CAgencyZoom.prototype.UpdateEffectAllChildren = function(child, FontSize, Factor)\r
+{\r
+       if( CCSSP.IsTextTag(child) )\r
+               child.style.fontSize = FontSize;\r
+       else\r
+       {\r
+               if( typeof(child.orgWidth) == "number" )\r
+                       child.style.width = Factor * child.orgWidth;\r
+               if( typeof(child.orgHeight) == "number" )\r
+                       child.style.height = Factor * child.orgHeight;\r
+       }\r
+}\r
+\r
+CAgencyZoom.prototype.EndEffect = function()\r
+{\r
+       this.EndEffectAllChildren(this.ele);\r
+       for(var index = 0; index < this.ele.all.length; index++)\r
+               this.EndEffectAllChildren(this.ele.all[index]);\r
+       \r
+       clearInterval( this.timer );\r
+       this.timer = null;\r
+}\r
+\r
+CAgencyZoom.prototype.EndEffectAllChildren = function( child )\r
+{      \r
+       if( CCSSP.IsTextTag(child) )\r
+               child.style.fontSize = child.orgFontSize;\r
+       else\r
+       {\r
+               if( typeof(child.intactWidth) != "undefined" )\r
+               {\r
+                       child.width = child.intactWidth;\r
+                       child.height = child.intactHeight;\r
+               }\r
+               else if( typeof(child.style.intactPixelWidth) != "undefined" )\r
+               {\r
+                       child.style.pixelWidth = child.style.intactPixelWidth;\r
+                       child.style.pixelHeight = child.style.intactPixelHeight;\r
+               }\r
+       }\r
+}\r
+\r
+CAgencyZoom.prototype.ResetParameters = function()\r
+{\r
+       this.PrepareEffect();\r
+       this.ResetParametersAllChildren( this.ele );\r
+       for(var index = 0; index < this.ele.all.length; index++)\r
+               this.ResetParametersAllChildren(this.ele.all[index]);\r
+               \r
+       this.startTime = (new Date()).getTime();\r
+}\r
+\r
+CAgencyZoom.prototype.ResetParametersAllChildren = function( child )\r
+{\r
+       CCSSP.ShowObject(child, true );\r
+       if( (child.tagName == "DIV") && (child.parentElement.tagName == "TD") )\r
+               child.width = "100%";// if the div is inside a cell of table, we need the this hack\r
+       \r
+       if( CCSSP.IsTextTag(child) )\r
+               child.orgFontSize = child.style.fontSize;\r
+       else\r
+       {\r
+               if( child.width > "" || child.height > "" )\r
+               {\r
+                       child.orgWidth = child.intactWidth = child.width;\r
+                       child.orgHeight = child.intactHeight = child.height;\r
+               }\r
+               else if( ( typeof(child.orgWidth) != "number" ) && (typeof(child.orgHeight) != "number") )\r
+               {\r
+                       child.orgWidth = child.style.intactPixelWidth = child.style.pixelWidth;\r
+                       child.orgHeight = child.style.intactPixelHeight = child.style.pixelHeight;\r
+               }\r
+       }\r
+}\r
+// End of CAgencyZoom\r
+\r
+//// the following effects will use IE's exclusive "filter" function ////\r
+// Begin of CAgencyAlpha definition\r
+function CAgencyAlpha( element, settings, bIsIn )\r
+{// because of "visual filter" style, this won't work in Navigator\r
+       this.ele = element;\r
+       this.bIsIn = bIsIn;\r
+\r
+       // to set the default value\r
+       this.startOpacity = (this.bIsIn) ? 0 : 100;\r
+       this.endOpacity = (this.bIsIn) ? 100 : 0;\r
+       \r
+       this.duration = 1000; // default\r
+       \r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {// to retrieve the setting\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
+               }\r
+       }\r
+       \r
+       this.timer = null;\r
+       this.aniIndex = CEngine.arrAnimation.length;\r
+       CEngine.arrAnimation[this.aniIndex] = this;\r
+}\r
+\r
+CAgencyAlpha.prototype.PrepareEffect = function()\r
+{// to set the visual filter function\r
+       // the visual filter ONLY work when set by "Width and Height" or\r
+       // absolute position for DIV, SPAN and normal tag ( such as p )\r
+       // but, "absolute" cause the following elements overlap, so:\r
+       CCSSP.PrepareFilter( this.ele );\r
+       CCSSP.ShowObject(this.ele, !this.bIsIn );\r
+}\r
+\r
+CAgencyAlpha.prototype.UpdateEffect = function()\r
+{// to set the visual filter function\r
+       if( this.timer == null )\r
+               this.ResetParameters();\r
+       if( typeof(this.ele.filters.alpha) != "object" )\r
+       {\r
+               this.EndEffect();\r
+               return;\r
+       }\r
+\r
+       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
+       if( percent >= 1.0 )\r
+               this.EndEffect();\r
+       else if( typeof(this.ele.filters.alpha) == "object" )\r
+       {\r
+               this.ele.filters.alpha.opacity = this.startOpacity*(1.0-percent) + this.endOpacity*percent;\r
+               if( this.timer == null )\r
+                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
+       }\r
+}\r
+\r
+CAgencyAlpha.prototype.EndEffect = function()\r
+{// to remove the visual filter function\r
+       clearInterval( this.timer );\r
+       this.timer = null;\r
+       this.ele.style.filter = "";\r
+       CCSSP.ShowObject(this.ele, this.bIsIn );\r
+}\r
+\r
+CAgencyAlpha.prototype.ResetParameters = function()\r
+{\r
+       this.PrepareEffect();\r
+       CCSSP.ShowObject(this.ele, true );\r
+       this.ele.style.filter = "alpha(opacity=" + this.startOpacity + ")";\r
+       this.startTime = (new Date()).getTime();\r
+}\r
+// End of the CAgencyAlpha definition\r
+\r
+// Begin of CAgencyWave definition\r
+function CAgencyWave( element, settings )\r
+{// because of "visual filter" style, this won't work in Navigator\r
+       this.ele = element;\r
+\r
+       this.duration = 0; // default\r
+       this.strength = 10;\r
+       this.freq = 1;\r
+       this.lightstrength = 1;\r
+       \r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {// to retrieve the setting\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "duration" : this.duration = 100000/arrOneSet[1]; break;\r
+               case "strength" : this.strength = arrOneSet[1]; break;\r
+               case "freq" : this.freq = arrOneSet[1]; break;\r
+               case "lightstrength" : this.lightstrength = arrOneSet[1]; break;\r
+               }\r
+       }\r
+\r
+       this.timer = null;\r
+       this.aniIndex = CEngine.arrAnimation.length;\r
+       CEngine.arrAnimation[this.aniIndex] = this;\r
+}\r
+\r
+CAgencyWave.prototype.PrepareEffect = function()\r
+{// to set the visual filter function\r
+       CCSSP.PrepareFilter(this.ele);\r
+\r
+       CCSSP.ShowObject(this.ele, true );\r
+}\r
+\r
+CAgencyWave.prototype.UpdateEffect = function()\r
+{// to set the visual filter function\r
+       if( this.timer == null )\r
+               this.ResetParameters();\r
+       if( typeof(this.ele.filters.wave) != "object" )\r
+       {\r
+               this.EndEffect();\r
+               return;\r
+       }\r
+\r
+       if( this.duration > 0 )\r
+       {\r
+               var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
+               if( percent >= 1.0 )\r
+               {\r
+                       this.EndEffect();\r
+                       return;\r
+               }\r
+       }\r
+       \r
+       this.ele.filters.wave.phase += 5;\r
+       this.ele.filters.wave.phase %= 100;\r
+       if( this.timer == null )\r
+               this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 50 );\r
+}\r
+\r
+CAgencyWave.prototype.EndEffect = function()\r
+{// to remove the visual filter function\r
+       this.ele.style.filter = "";\r
+       clearInterval( this.timer );\r
+       this.timer = null;\r
+}\r
+\r
+CAgencyWave.prototype.ResetParameters = function()\r
+{\r
+       this.PrepareEffect();\r
+       this.ele.style.filter = "wave(strength=" + this.strength + ",freq=" + \r
+        this.freq +", lightstrength=" + this.lightstrength +",phase=0);";\r
+       this.startTime = (new Date()).getTime();\r
+}\r
+// End of the CAgencyWave definition\r
+\r
+// Begin of CAgencyGlow definition\r
+function CAgencyGlow( element, settings )\r
+{// because of "visual filter" style, this won't work in Navigator\r
+       this.ele = element;\r
+\r
+       // to set the default value\r
+       this.glowColor = "green";\r
+       this.glowStrength = "3";\r
+       \r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "color" : this.glowColor = arrOneSet[1]; break;\r
+               case "strength" : this.glowStrength = arrOneSet[1]; break;\r
+               }\r
+       }\r
+}\r
+\r
+CAgencyGlow.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.PrepareFilter(this.ele);\r
+       CCSSP.ShowObject(this.ele, true );\r
+       if( this.ele.style.backgroundColor != "" )\r
+       {//style.backgroundColor somehow stop the visual filter\r
+               this.ele.intactBackgroundColor = this.ele.style.backgroundColor;\r
+               this.ele.style.backgroundColor = "";\r
+       }\r
+}\r
+\r
+CAgencyGlow.prototype.UpdateEffect = function()\r
+{// to set the visual filter function\r
+       this.PrepareEffect();\r
+       this.ele.style.filter = "glow(Color=" + this.glowColor + ", Strength=" + \r
+               this.glowStrength + ", enabled=true" +")";\r
+}\r
+\r
+CAgencyGlow.prototype.EndEffect = function()\r
+{// to remove the visual filter function\r
+       this.ele.style.filter = "";\r
+       if( typeof(this.ele.intactBackgroundColor) != "undefined" )\r
+               this.ele.style.backgroundColor = this.ele.intactBackgroundColor;\r
+}\r
+// End of the CAgencyGlow definition\r
+\r
+// Begin of CAgencyDropShadow definition\r
+function CAgencyDropShadow( element, settings )\r
+{// because of "visual filter" style, this won't work in Navigator\r
+       this.ele = element;\r
+\r
+       // to set the default value\r
+       this.shadowColor = "black"; \r
+       this.shadowOffx = "1";\r
+       this.shadowOffy = "1";\r
+       \r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r