home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 25: Programming / pc_actual_25.iso / Javascript / InteractiveWebDesignJavascript / Scripting / nav.js < prev    next >
Encoding:
Text File  |  2001-08-10  |  28.1 KB  |  453 lines

  1.     //  Navigation Script
  2.     //  
  3.     //  (c) December 1999 by Web-Data Internet Services
  4.     //  
  5.     //  Freely use, freely copy, freely pass along. (no Warranty, no guarantee)
  6.     //  
  7.  
  8.     targetFrame = "contents";
  9.     
  10.     function subMenuItem(isItem, name, link, varNam){    // boolean, string, string
  11.         this.isItm = isItem;                // is this an item or sub menu?
  12.         this.subName = name;
  13.         this.subLink = link;
  14.         this.subs = new Object();        // an array to hold sub items
  15.         this.currentSubs = 0;    // the number of subs in this sub item
  16.         this.isOpen = false;                // is this sub open?
  17.         this.varName = varNam
  18.     }
  19.  
  20.  
  21.     function addSubMenuToMenu(subMenuA, subMenuB){
  22.         subMenuA.subs[subMenuA.currentSubs] = subMenuB;
  23.         subMenuA.currentSubs++;
  24.     }
  25.  
  26.     function addSubMenuItemToMenu(subMenu, name, link){
  27.         subMenu.subs[subMenu.currentSubs] = new subMenuItem(true, name, link);
  28.         subMenu.currentSubs++;    
  29.     }
  30.  
  31.  
  32.     mainNodes = new subMenuItem(false, "parent", "title.htm", "mainNodes");
  33.     js1 = new subMenuItem(false, "<strong><b>JavaScript 1</b></strong>", "js1/title.htm", "js1");
  34.     
  35.     alert("Welcome To:   Free On-Line Tutorial\nIntro to Web Programming with JavaScript\n\nOrder the full version from www.web-data.org");
  36.  
  37. //js1 menus
  38.     js1Menu1 = new subMenuItem(false, "Lecture 1:<br><font color=gray>Intro To JavaScript</font>", "js1/lectures/intro/title.htm", "js1Menu1");
  39.     js1Menu2 = new subMenuItem(false, "Lecture 2:<br><font color=gray>JavaScript Basics 1</font>", "js1/lectures/basics/title.htm", "js1Menu2");
  40.     js1Menu3 = new subMenuItem(false, "Lecture 3:<br><font color=gray>JavaScript Basics 2</font>", "js1/lectures/basics/title2.htm", "js1Menu3");
  41.     js1Menu4 = new subMenuItem(false, "Lecture 4:<br><font color=gray>Porting Scripts</font>", "js1/lectures/incorporate/title.htm", "js1Menu4");
  42.     dhtmlNode = new subMenuItem(false, "Dynamic HTML", "js1/lectures/dhtml/title.htm", "dhtmlNode");
  43.     js1Labs = new subMenuItem(false, "Labs", "js1/lectures/basics/wpp.htm", "js1Labs");
  44.     js1Links = new subMenuItem(false, "<strong><b>Javascript Links</b></strong>", null, "js1Links");
  45.  
  46.     addSubMenuToMenu(mainNodes, js1);
  47.     addSubMenuItemToMenu(js1, "Syllabus", "js1/syllabus.htm");
  48.     addSubMenuItemToMenu(js1, "Objectives", "js1/course_objectives.htm");
  49.     addSubMenuToMenu(js1, js1Menu1);
  50.     addSubMenuToMenu(js1, js1Menu2);
  51.     addSubMenuToMenu(js1, js1Menu3);
  52.     addSubMenuToMenu(js1, js1Menu4);
  53.     addSubMenuToMenu(js1, dhtmlNode);
  54.     addSubMenuToMenu(js1, js1Labs);
  55.  
  56.  
  57. //js2 menus
  58.     js2 = new subMenuItem(false, "<strong><b>JavaScript 2</b></strong>", "js2/default.htm", "js2");
  59.     js2Menu1 = new subMenuItem(false, "Lecture 1:<br><font color=gray>Javascript 1 Refresher</font>", "js2/lectures/review/agenda.htm", "js2Menu1");
  60.     js2Menu2 = new subMenuItem(false, "Lecture 2:<br><font color=gray>Javascript and Loops</font>", "js2/lectures/loops/agenda.htm", "js2Menu2");
  61.     js2Menu4 = new subMenuItem(false, "Lecture 3:<br><font color=gray>Modular Code and Functions</font>", "js2/lectures/functions/title.htm", "js2Menu4");
  62.     js2Menu5 = new subMenuItem(false, "Lecture 4:<br><font color=gray>Cookies</font>", "js2/lectures/cookies/title.htm", "js2Menu5");
  63.     js2Menu6 = new subMenuItem(false, "Lecture 5:<br><font color=gray>How-To Debug</font>", "js2/lectures/debug/default.htm", "js2Menu6");
  64.     js2Menu7 = new subMenuItem(false, "Lecture 6:<br><font color=gray>Advanced DHTML</font>", "dhtml/title.htm", "js2Menu7");
  65.     js2Labs = new subMenuItem(false, "Labs", "js1/lectures/basics/wpp.htm", "js2Labs");
  66.     js2Links = new subMenuItem(false, "<strong><b>Javascript Links</b></strong>", null, "js2Links");
  67.  
  68.  
  69.     cgi1 = new subMenuItem(false, "<strong><b>Intro to CGI</b></strong>", "cgi1/title.htm", "cgi1");
  70.     cgi1Menu1 = new subMenuItem(false, "Section 1:<br><font color=gray>A Web Primer</font>", null, "cgi1Menu1");
  71.     cgi1Menu2 = new subMenuItem(false, "Section 2:<br><font color=gray>Building an Interactive Internet System</font>", null, "cgi1Menu2");
  72.     cgi1MenuS1 = new subMenuItem(false, "Lecture 1:<br><font color=gray>History</font>", null, "cgi1MenuS1");
  73.     cgi1MenuS2 = new subMenuItem(false, "Lecture 2:<br><font color=gray>Protocols</font>", null, "cgi1MenuS2");
  74.     cgi1MenuS3 = new subMenuItem(false, "Lecture 3:<br><font color=gray>Introduction to CGI</font>", "cgi1/cgi_intro/title.htm", "cgi1MenuS3");
  75.     cgi1MenuS4 = new subMenuItem(false, "Lecture 4:<br><font color=gray>Web Servers and Platforms</font>", null, "cgi1MenuS4");
  76.     cgi1MenuS5 = new subMenuItem(false, "Lecture 5:<br><font color=gray>Creating CGI With Perl</font>", null, "cgi1MenuS5");
  77.     cgi1MenuS6 = new subMenuItem(false, "Lecture 6:<br><font color=gray>Scripted CGI</font>", "CGI1/scripting/default.htm", "cgi1MenuS6");
  78.     cgi1MenuASP = new subMenuItem(false, "ASP Programming:<br><font color=gray>Scripted CGI</font>", "CGI1/scripting/default.htm", "cgi1MenuASP");
  79.     cgi1Labs = new subMenuItem(false, "Labs", "cgi1/lectures/basics/wpp.htm", "cgi1Labs");
  80.     cgi1Links = new subMenuItem(false, "<strong><b>Javascript Links</b></strong>", null, "cgi1Links");
  81.  
  82.  
  83.  
  84.  
  85.     addSubMenuToMenu(mainNodes, js2);
  86.     addSubMenuItemToMenu(js2, "Syllabus", "js2/syllabus.htm");
  87.     addSubMenuItemToMenu(js2, "Objectives", "js2/course_objectives.htm");
  88.     addSubMenuToMenu(js2, js2Menu1);
  89.     addSubMenuToMenu(js2, js2Menu2);
  90.     addSubMenuToMenu(js2, js2Menu4);
  91.     addSubMenuToMenu(js2, js2Menu5);
  92.     addSubMenuToMenu(js2, js2Menu6);
  93.     addSubMenuToMenu(js2, js2Menu7);
  94.     addSubMenuToMenu(js2, js2Labs);
  95.  
  96.     addSubMenuToMenu(mainNodes, cgi1);
  97.     addSubMenuItemToMenu(cgi1, "Syllabus", "cgi1/syllabus.htm");
  98.     addSubMenuItemToMenu(cgi1, "Objectives", "cgi1/course_objectives.htm");
  99.     addSubMenuToMenu(cgi1, cgi1Menu1);
  100.     addSubMenuToMenu(cgi1Menu1, cgi1MenuS1);
  101.     addSubMenuToMenu(cgi1Menu1, cgi1MenuS2);
  102.     addSubMenuToMenu(cgi1, cgi1Menu2);
  103.     addSubMenuToMenu(cgi1Menu2, cgi1MenuS3);
  104.     addSubMenuToMenu(cgi1Menu2, cgi1MenuS4);
  105.     addSubMenuToMenu(cgi1Menu2, cgi1MenuS5);
  106.     addSubMenuToMenu(cgi1Menu2, cgi1MenuS6);
  107.     addSubMenuToMenu(cgi1MenuS6, cgi1MenuASP);
  108.  
  109. //additional links
  110.  
  111.  
  112.     addSubMenuItemToMenu(mainNodes, "<img src='info.gif' border='0'>JavaScript Reference", "manual/index.htm#-frame-#_blank");
  113.     addSubMenuItemToMenu(mainNodes, "<img src='up.gif' border='0'>Up to IWD", "../IWD/index.htm#-frame-#_blank");
  114.  
  115.  
  116. //js1 menu items
  117.     addSubMenuItemToMenu(dhtmlNode, "Title", "js1/lectures/dhtml/title.htm");
  118.     addSubMenuItemToMenu(dhtmlNode, "What is Dynamic HTML", "js1/lectures/dhtml/what_is_dhtml.htm");
  119.     addSubMenuItemToMenu(dhtmlNode, "Static Content", "js1/lectures/dhtml/static_content.htm");
  120.     addSubMenuItemToMenu(dhtmlNode, "Dynamic Content", "js1/lectures/dhtml/dynamic_content.htm");
  121.     addSubMenuItemToMenu(dhtmlNode, "Examples of Dynamic Content", "js1/lectures/dhtml/dynamic_examples.htm");
  122.     addSubMenuItemToMenu(dhtmlNode, "Using JavaScript to Deliver Dynamic HTML", "js1/lectures/dhtml/using_javascript.htm");
  123.     addSubMenuItemToMenu(dhtmlNode, "Advantages of DHTML", "js1/lectures/dhtml/advantages_of_dhtml.htm");
  124.     addSubMenuItemToMenu(dhtmlNode, "Challenges of DHTML", "js1/lectures/dhtml/challenges.htm");
  125.     addSubMenuItemToMenu(dhtmlNode, "Strategy for DHTML", "js1/lectures/dhtml/strategy.htm");
  126.     addSubMenuItemToMenu(dhtmlNode, "DHTML How To", "js1/lectures/dhtml/tips.htm");
  127.     addSubMenuItemToMenu(dhtmlNode, "Summary", "js1/lectures/dhtml/summary.htm");
  128.     
  129.     addSubMenuItemToMenu(js1Menu1, "Title", "js1/lectures/intro/title.htm");
  130.     addSubMenuItemToMenu(js1Menu1, "Agenda", "js1/lectures/intro/agenda1.htm");
  131.     addSubMenuItemToMenu(js1Menu1, "What is Scripting?", "js1/lectures/intro/whatis.htm");
  132.     addSubMenuItemToMenu(js1Menu1, "What is Scripting 2", "js1/lectures/intro/whatis2.htm");
  133.     addSubMenuItemToMenu(js1Menu1, "Where 1", "js1/lectures/intro/where_scripting1.htm");
  134.     addSubMenuItemToMenu(js1Menu1, "Where 2", "js1/lectures/intro/where_scripting2.htm");
  135.     addSubMenuItemToMenu(js1Menu1, "Where 3", "js1/lectures/intro/where_scripting3.htm");
  136.     addSubMenuItemToMenu(js1Menu1, "Where 4", "js1/lectures/intro/where_scripting4.htm");
  137.     addSubMenuItemToMenu(js1Menu1, "Where 5", "js1/lectures/intro/where_scripting5.htm");
  138.     addSubMenuItemToMenu(js1Menu1, "Difficulties", "js1/lectures/intro/difficulties_of_scripting.htm");
  139.     addSubMenuItemToMenu(js1Menu1, "Limitations", "js1/lectures/intro/limitations.htm");
  140.     addSubMenuItemToMenu(js1Menu1, "Application", "js1/lectures/intro/apply.htm");
  141.     addSubMenuItemToMenu(js1Menu1, "Examples", "js1/lectures/intro/examples.htm");
  142.     addSubMenuItemToMenu(js1Menu1, "Summary", "js1/lectures/intro/summary.htm");
  143.     
  144.     addSubMenuItemToMenu(js1Menu2, "Title", "js1/lectures/basics/title.htm");
  145.     addSubMenuItemToMenu(js1Menu2, "Agenda", "js1/lectures/basics/agenda1.htm");
  146.     addSubMenuItemToMenu(js1Menu2, "The Script", "js1/lectures/basics/the_script.htm");
  147.     addSubMenuItemToMenu(js1Menu2, "Script Trigger", "js1/lectures/basics/script_trigger.htm");
  148.     addSubMenuItemToMenu(js1Menu2, "Events", "js1/lectures/basics/events.htm");
  149.     addSubMenuItemToMenu(js1Menu2, "Event Handlers", "js1/lectures/basics/event_handlers.htm");
  150.     addSubMenuItemToMenu(js1Menu2, "Functions 1", "js1/lectures/basics/functions1.htm");
  151.     addSubMenuItemToMenu(js1Menu2, "Functions 2", "js1/lectures/basics/functions2.htm");
  152.     addSubMenuItemToMenu(js1Menu2, "Summary", "js1/lectures/basics/summary1.htm");
  153.  
  154.     addSubMenuItemToMenu(js1Menu3, "Title", "js1/lectures/basics/title2.htm");
  155.     addSubMenuItemToMenu(js1Menu3, "Agenda", "js1/lectures/basics/agenda.htm");
  156.     addSubMenuItemToMenu(js1Menu3, "Tag", "js1/lectures/basics/tag.htm");
  157.     addSubMenuItemToMenu(js1Menu3, "Good Scripting", "js1/lectures/basics/good_scripting2.htm");
  158.     addSubMenuItemToMenu(js1Menu3, "Hiding", "js1/lectures/basics/hiding.htm");
  159.  
  160.     addSubMenuItemToMenu(js1Menu3, "Variables", "js1/lectures/basics/variables.htm");
  161.     addSubMenuItemToMenu(js1Menu3, "Numbers", "js1/lectures/basics/variables1.htm");
  162.     addSubMenuItemToMenu(js1Menu3, "Strings", "js1/lectures/basics/variables2.htm");
  163.     addSubMenuItemToMenu(js1Menu3, "Arrays", "js1/lectures/basics/variables3.htm");
  164.  
  165.     addSubMenuItemToMenu(js1Menu3, "Form Variables", "js1/lectures/basics/dom.htm");
  166.     addSubMenuItemToMenu(js1Menu3, "Document Object Model", "js1/lectures/basics/dom2.htm");
  167.     addSubMenuItemToMenu(js1Menu3, "If and Else", "js1/lectures/basics/if_else.htm");
  168.     addSubMenuItemToMenu(js1Menu3, "Exercise", "js1/lectures/basics/in_class_exercise_ifelse.htm");
  169.     addSubMenuItemToMenu(js1Menu3, "Application", "js1/lectures/basics/apply_lab1.htm");
  170.     addSubMenuItemToMenu(js1Menu3, "Summary", "js1/lectures/basics/summary.htm");
  171.  
  172.     addSubMenuItemToMenu(js1Menu4, "Title", "js1/lectures/incorporate/title.htm");
  173.     addSubMenuItemToMenu(js1Menu4, "Agenda", "js1/lectures/incorporate/agenda.htm");
  174.     addSubMenuItemToMenu(js1Menu4, "Identification", "js1/lectures/incorporate/identify_candidate.htm");
  175.     addSubMenuItemToMenu(js1Menu4, "Making Sense", "js1/lectures/incorporate/make_sense.htm");
  176.     addSubMenuItemToMenu(js1Menu4, "Changes", "js1/lectures/incorporate/what_changes.htm");
  177.     addSubMenuItemToMenu(js1Menu4, "Reminder 1", "js1/lectures/incorporate/remember1.htm");
  178.     addSubMenuItemToMenu(js1Menu4, "Reminder 2", "js1/lectures/incorporate/remember2.htm");
  179.     addSubMenuItemToMenu(js1Menu4, "Worst Case", "js1/lectures/incorporate/worst_case.htm");
  180.     addSubMenuItemToMenu(js1Menu4, "Summary", "js1/lectures/incorporate/summary.htm");
  181.  
  182.     addSubMenuItemToMenu(js1Labs, "The Alert: 1", "js1/labs/lab1/lab1.htm");
  183.     addSubMenuItemToMenu(js1Labs, "The Alert: 2", "js1/labs/lab1/lab1_part2.htm");
  184.     addSubMenuItemToMenu(js1Labs, "The Alert: 3", "js1/labs/lab1/lab1_part3.htm");
  185.     addSubMenuItemToMenu(js1Labs, "A Scripted Menu", "js1/labs/lab2/lab 2.htm");
  186.     addSubMenuItemToMenu(js1Labs, "dHTML Lab", "js1/labs/lab3/lab3.htm");
  187.     addSubMenuItemToMenu(js1Labs, "Porting Script", "js1/labs/lab4/lab4.htm");
  188.     addSubMenuItemToMenu(js1Labs, "<b>" + colorMyHTMLText("Pokemon Time") + "<b>", "pokemon/index.htm");
  189.  
  190.  
  191.     addSubMenuItemToMenu(js1Links, "Netscape's JavaScript Developer Central", "http://developer.netscape.com/tech/javascript/#-frame-#_blank");
  192.     addSubMenuItemToMenu(js1Links, "The JavaScript Source", "http://javascriptsource.com/#-frame-#_blank");
  193.     addSubMenuItemToMenu(js1Links, "Dynamic Drive", "http://www.dynamicdrive.com/#-frame-#_blank");
  194.     addSubMenuItemToMenu(js1Links, "The Joy Of JavaScript", "http://www.chalcedony.com/javascript/#-frame-#_blank");
  195.     addSubMenuItemToMenu(js1Links, "JavaScript Games", "http://plaza.harmonix.ne.jp/~jimmeans/#-frame-#_blank");
  196.  
  197.  
  198. //js2 menu items
  199.     addSubMenuItemToMenu(js2Menu1, "Agenda", "js2/lectures/review/agenda.htm");
  200.     addSubMenuItemToMenu(js2Menu1, "What Is Javascript", "js2/lectures/review/whatis.htm");
  201.     addSubMenuItemToMenu(js2Menu1, "Where To Use", "js2/lectures/review/where_scripting5.htm");
  202.     addSubMenuItemToMenu(js2Menu1, "Difficulties Of", "js2/lectures/review/difficulties_of_scripting.htm");
  203.     addSubMenuItemToMenu(js2Menu1, "The Script", "js2/lectures/review/the_script.htm");
  204.     addSubMenuItemToMenu(js2Menu1, "Script Triggers", "js2/lectures/review/script_trigger.htm");
  205.     addSubMenuItemToMenu(js2Menu1, "Event Handlers", "js2/lectures/review/event_handlers.htm");
  206.     addSubMenuItemToMenu(js2Menu1, "Functions 1", "js2/lectures/review/functions1.htm");
  207.     addSubMenuItemToMenu(js2Menu1, "Functions 2", "js2/lectures/review/functions2.htm");
  208.     addSubMenuItemToMenu(js2Menu1, "Variables", "js2/lectures/review/variables.htm");
  209.     addSubMenuItemToMenu(js2Menu1, "Numbers", "js2/lectures/review/variables1.htm");
  210.     addSubMenuItemToMenu(js2Menu1, "Strings", "js2/lectures/review/variables2.htm");
  211.     addSubMenuItemToMenu(js2Menu1, "Arrays", "js2/lectures/review/variables3.htm");
  212.     addSubMenuItemToMenu(js2Menu1, "Form Field Values", "js2/lectures/review/dom.htm");
  213.     addSubMenuItemToMenu(js2Menu1, "Document Object Model", "js2/lectures/review/dom2.htm");
  214.     addSubMenuItemToMenu(js2Menu1, "If - Else", "js2/lectures/review/if_else.htm");
  215.  
  216.     addSubMenuItemToMenu(js2Menu2, "Agenda", "js2/lectures/loops/agenda.htm");
  217.     addSubMenuItemToMenu(js2Menu2, "Why Loops?", "js2/lectures/loops/why_loops.htm");
  218.     addSubMenuItemToMenu(js2Menu2, "For Loop Syntax", "js2/lectures/loops/for_loop_syntax.htm");
  219.     addSubMenuItemToMenu(js2Menu2, "For Loop Example", "js2/lectures/loops/for_loop_example.htm");
  220.     addSubMenuItemToMenu(js2Menu2, "Looping Example", "js2/lectures/loops/looping_example.htm");
  221.     addSubMenuItemToMenu(js2Menu2, "Looping Pitfalls", "js2/lectures/loops/looping_pitfalls.htm");
  222.     addSubMenuItemToMenu(js2Menu2, "Summary", "js2/lectures/loops/summary.htm");
  223.  
  224.     addSubMenuItemToMenu(js2Menu4, "Agenda", "js2/lectures/functions/agenda.htm");
  225.     addSubMenuItemToMenu(js2Menu4, "What Are Functions", "js2/lectures/functions/what_are_functions.htm");
  226.     addSubMenuItemToMenu(js2Menu4, "How To Use Functions", "js2/lectures/functions/how_to_use_functions.htm");
  227.     addSubMenuItemToMenu(js2Menu4, "What's In a Function", "js2/lectures/functions/whats_in_a_function.htm");
  228.     addSubMenuItemToMenu(js2Menu4, "Calling With Values", "js2/lectures/functions/calling_with_values.htm");
  229.     addSubMenuItemToMenu(js2Menu4, "Returning a Value", "js2/lectures/functions/returning_a_value.htm");
  230.     addSubMenuItemToMenu(js2Menu4, "Returning Many Values", "js2/lectures/functions/returning_many_values.htm");
  231.     addSubMenuItemToMenu(js2Menu4, "Summary", "js2/lectures/functions/summary.htm");
  232.  
  233.  
  234.     addSubMenuItemToMenu(js2Menu5, "Title", "js2/lectures/cookies/title.htm");
  235.     addSubMenuItemToMenu(js2Menu5, "Agenda", "js2/lectures/cookies/agenda.htm");
  236.     addSubMenuItemToMenu(js2Menu5, "What Are Cookies?", "js2/lectures/cookies/what_are_cookies.htm");
  237.     addSubMenuItemToMenu(js2Menu5, "What Are Cookies2?", "js2/lectures/cookies/what_are_cookies2.htm");
  238.     addSubMenuItemToMenu(js2Menu5, "Why Cookies?", "js2/lectures/cookies/why_cookies.htm");
  239.     addSubMenuItemToMenu(js2Menu5, "Example Cookies", "js2/lectures/cookies/example_cookies.htm");
  240.     addSubMenuItemToMenu(js2Menu5, "Things You Can Do With Cookies", "js2/lectures/cookies/things_you_can_do_with_cookies.htm");
  241.     addSubMenuItemToMenu(js2Menu5, "Cookie Tools", "js2/lectures/cookies/cookie_tools.htm");
  242.     addSubMenuItemToMenu(js2Menu5, "Example", "js2/lectures/cookies/example.htm");
  243.     addSubMenuItemToMenu(js2Menu5, "Summary", "js2/lectures/cookies/summary.htm");
  244.  
  245.  
  246.     addSubMenuItemToMenu(js2Menu6, "Start", "js2/lectures/debug/default.htm");
  247.     addSubMenuItemToMenu(js2Menu6, "Introduction", "js2/lectures/debug/intro.htm");
  248.     addSubMenuItemToMenu(js2Menu6, "Installing", "js2/lectures/debug/install.htm");
  249.     addSubMenuItemToMenu(js2Menu6, "Viewing Problems", "js2/lectures/debug/problems1.htm");
  250.     addSubMenuItemToMenu(js2Menu6, "Select Debugger", "js2/lectures/debug/debug1.htm");
  251.     addSubMenuItemToMenu(js2Menu6, "Debug Windows", "js2/lectures/debug/debugWin.htm");
  252.     addSubMenuItemToMenu(js2Menu6, "Back Button", "js2/lectures/debug/back.htm");
  253.     addSubMenuItemToMenu(js2Menu6, "Useful Buttons 1", "js2/lectures/debug/buttons1.htm");
  254.     addSubMenuItemToMenu(js2Menu6, "Useful Buttons 2", "js2/lectures/debug/buttons2.htm");
  255.     addSubMenuItemToMenu(js2Menu6, "Errors", "js2/lectures/debug/watch.htm");
  256.     addSubMenuItemToMenu(js2Menu6, "Useful Buttons 3", "js2/lectures/debug/buttons3.htm");
  257.     addSubMenuItemToMenu(js2Menu6, "Tips 1", "js2/lectures/debug/tips1.htm");
  258.     addSubMenuItemToMenu(js2Menu6, "Tips 2", "js2/lectures/debug/tips2.htm");
  259.     addSubMenuItemToMenu(js2Menu6, "Inspecting 1", "js2/lectures/debug/inspecting1.htm");
  260.     addSubMenuItemToMenu(js2Menu6, "Inspecting 2", "js2/lectures/debug/inspecting2.htm");
  261.     addSubMenuItemToMenu(js2Menu6, "Inspecting 3", "js2/lectures/debug/inspecting3.htm");
  262.     addSubMenuItemToMenu(js2Menu6, "Inspecting 4", "js2/lectures/debug/inspecting4.htm");
  263.     addSubMenuItemToMenu(js2Menu6, "Conclusion", "js2/lectures/debug/conclusion.htm");
  264.  
  265.     addSubMenuItemToMenu(js2Menu7, "DHTML", "dhtml/1.htm");
  266.     addSubMenuItemToMenu(js2Menu7, "non-JS Browsers", "dhtml/2.htm");
  267.     addSubMenuItemToMenu(js2Menu7, "Using JS with a Frame", "dhtml/3.htm");
  268.     addSubMenuItemToMenu(js2Menu7, "Using Frames for DHTML", "dhtml/4.htm");
  269.     addSubMenuItemToMenu(js2Menu7, "DHTML Example: The Shopping Cart", "dhtml/5.htm");
  270.     addSubMenuItemToMenu(js2Menu7, "DHTML Tools", "dhtml/6.htm");
  271.     addSubMenuItemToMenu(js2Menu7, "Summary", "dhtml/summary.htm");
  272.     
  273.     addSubMenuItemToMenu(js2Labs, "Looping Example", "js2/lectures/loops/looping_example.htm");
  274. //    addSubMenuItemToMenu(js2Labs, "Array / Javascript Basics", "js2/newlabs/basicsLab/labStart.htm");
  275.     addSubMenuItemToMenu(js2Labs, "Calculator/Converter", "js2/newlabs/calculatorLab/labStart.htm");
  276.     addSubMenuItemToMenu(js2Labs, "Cookies", "js2/labs/cookies/lab2.htm");
  277.     addSubMenuItemToMenu(js2Labs, "Debug A Shopping Cart", "js2/newlabs/cartlab/storeFrame.htm");
  278.     addSubMenuItemToMenu(js2Labs, "Dashboard", "js2/labs/dashboard/dashboard.htm");
  279.     addSubMenuItemToMenu(js2Labs, "<b>" + colorMyHTMLText("Pokemon Time") + "<b>", "pokemon/index.htm");
  280.  
  281.     addSubMenuToMenu(mainNodes, js1Links);
  282.     
  283. //cgi1 menu items
  284.  
  285.     addSubMenuItemToMenu(cgi1MenuS1, "Introduction", "cgi1/lecture1/introduction.htm");
  286.     addSubMenuItemToMenu(cgi1MenuS1, "History 1", "cgi1/lecture1/history1.htm");
  287.     addSubMenuItemToMenu(cgi1MenuS1, "History 2", "cgi1/lecture1/history2.htm");
  288.     addSubMenuItemToMenu(cgi1MenuS1, "History 3", "cgi1/lecture1/history3.htm");
  289.     addSubMenuItemToMenu(cgi1MenuS1, "History 4", "cgi1/lecture1/history4.htm");
  290.     addSubMenuItemToMenu(cgi1MenuS1, "History 5", "cgi1/lecture1/history5.htm");
  291.     addSubMenuItemToMenu(cgi1MenuS1, "Conclusion", "cgi1/lecture1/conclusion.htm");
  292.  
  293.     addSubMenuItemToMenu(cgi1MenuS2, "Web Protocols", "cgi1/lecture2/webprotocols.htm");
  294.     addSubMenuItemToMenu(cgi1MenuS2, "Summary Of Protocols", "cgi1/lecture2/summaryofprotocols.htm");
  295.     addSubMenuItemToMenu(cgi1MenuS2, "URL", "cgi1/lecture2/url.htm");
  296.     addSubMenuItemToMenu(cgi1MenuS2, "HTTP", "cgi1/lecture2/http.htm");
  297.     addSubMenuItemToMenu(cgi1MenuS2, "4 Parts of HTTP", "cgi1/lecture2/http2.htm");
  298.     addSubMenuItemToMenu(cgi1MenuS2, "HTTP Continued", "cgi1/lecture2/http3.htm");
  299.     addSubMenuItemToMenu(cgi1MenuS2, "HTTP Conclusion", "cgi1/lecture2/httpconclusion.htm");
  300.     addSubMenuItemToMenu(cgi1MenuS2, "HTML", "cgi1/lecture2/html1.htm");
  301.     addSubMenuItemToMenu(cgi1MenuS2, "HTML Grows", "cgi1/lecture2/html2.htm");
  302.     addSubMenuItemToMenu(cgi1MenuS2, "HTML and the Browser", "cgi1/lecture2/html3.htm");
  303.     addSubMenuItemToMenu(cgi1MenuS2, "HTML Conclusion", "cgi1/lecture2/html4.htm");
  304.     addSubMenuItemToMenu(cgi1MenuS2, "CGI: Common Gateway Interface", "cgi1/lecture2/cgi1.htm");
  305.     addSubMenuItemToMenu(cgi1MenuS2, "SQL", "cgi1/lecture2/sql1.htm");
  306.     addSubMenuItemToMenu(cgi1MenuS2, "SQL Examples", "cgi1/lecture2/sql2.htm");
  307.     addSubMenuItemToMenu(cgi1MenuS2, "Conclusion", "cgi1/lecture2/conclusion.htm");
  308.  
  309.     addSubMenuItemToMenu(cgi1MenuS3, "Building With CGI and HTML", "cgi1/cgi_intro/title.htm");
  310.     addSubMenuItemToMenu(cgi1MenuS3, "Agenda", "cgi1/cgi_intro/l1_agnd1.htm");
  311.     addSubMenuItemToMenu(cgi1MenuS3, "HTML and CGI", "cgi1/cgi_intro/l1_html1.htm");
  312.     addSubMenuItemToMenu(cgi1MenuS3, "Sending Input", "cgi1/cgi_intro/l1_html2.htm");
  313.     addSubMenuItemToMenu(cgi1MenuS3, "Creating Interactive Widgets", "cgi1/cgi_intro/l1_html3.htm");
  314.     addSubMenuItemToMenu(cgi1MenuS3, "How CGI Works", "cgi1/cgi_intro/l1_cgi1.htm");
  315.     addSubMenuItemToMenu(cgi1MenuS3, "Common CGI programs", "cgi1/cgi_intro/common_cgis.htm");
  316.     addSubMenuItemToMenu(cgi1MenuS3, "Is CGI required?", "cgi1/cgi_intro/l1_html5.htm");
  317.     addSubMenuItemToMenu(cgi1MenuS3, "Interactive Options", "cgi1/cgi_intro/l1_html6.htm");
  318.     addSubMenuItemToMenu(cgi1MenuS3, "Static Versus Dynamic", "cgi1/cgi_intro/static_vs_dynamic.htm");
  319.     addSubMenuItemToMenu(cgi1MenuS3, "CGI Summary", "cgi1/cgi_intro/l1_sumy.htm");
  320.     addSubMenuItemToMenu(cgi1MenuS3, "CGI Summary (cont'd)", "cgi1/cgi_intro/l1_smy2.htm");
  321.  
  322.     addSubMenuItemToMenu(cgi1MenuS4, "Agenda", "cgi1/lecture4/agenda.htm");
  323.     addSubMenuItemToMenu(cgi1MenuS4, "Determine Your Requirements", "cgi1/lecture4/requirements.htm");
  324.     addSubMenuItemToMenu(cgi1MenuS4, "Your Network Connection", "cgi1/lecture4/netconnect.htm");
  325.     addSubMenuItemToMenu(cgi1MenuS4, "Platform Options:<br>    Win95/98", "cgi1/lecture4/platformoptions1.htm");
  326.     addSubMenuItemToMenu(cgi1MenuS4, "Platform Options:<br>    Windows NT", "cgi1/lecture4/platformoptions2.htm");
  327.     addSubMenuItemToMenu(cgi1MenuS4, "Platform Options:<br>    OS/2 Warp", "cgi1/lecture4/platformoptions3.htm");
  328.     addSubMenuItemToMenu(cgi1MenuS4, "Platform Options:<br>    Sun Solaris", "cgi1/lecture4/platformoptions4.htm");
  329.     addSubMenuItemToMenu(cgi1MenuS4, "Platform Options:<br>    Others", "cgi1/lecture4/platformoptions5.htm");
  330.     addSubMenuItemToMenu(cgi1MenuS4, "Server Options", "cgi1/lecture4/serveroptions1.htm");
  331.     addSubMenuItemToMenu(cgi1MenuS4, "Security", "cgi1/lecture4/security1.htm");
  332.     addSubMenuItemToMenu(cgi1MenuS4, "Other Considerations", "cgi1/lecture4/other1.htm");
  333.     addSubMenuItemToMenu(cgi1MenuS4, "Scalability", "cgi1/lecture4/howtoscale.htm");
  334.     addSubMenuItemToMenu(cgi1MenuS4, "Summary", "cgi1/lecture4/summary.htm");
  335.  
  336.     addSubMenuItemToMenu(cgi1MenuS5, "CGI Programming With Perl", "cgi1/perl/title.htm");
  337.     addSubMenuItemToMenu(cgi1MenuS5, "Agenda", "cgi1/perl/l1_agnd1.htm");
  338.     addSubMenuItemToMenu(cgi1MenuS5, "Perl's Background", "cgi1/perl/backgrd.htm");
  339.     addSubMenuItemToMenu(cgi1MenuS5, "Perl's Background <br>     part2", "cgi1/perl/backgrd2.htm");
  340.     addSubMenuItemToMenu(cgi1MenuS5, "Advantages of PERL", "cgi1/perl/advantages.htm");
  341.     addSubMenuItemToMenu(cgi1MenuS5, "Perl can be Ideal", "cgi1/perl/advantages2.htm");
  342.     addSubMenuItemToMenu(cgi1MenuS5, "Disadvantages of Perl", "cgi1/perl/disadv.htm");
  343.     addSubMenuItemToMenu(cgi1MenuS5, "A Scripting Example", "cgi1/perl/example1.htm");
  344.     addSubMenuItemToMenu(cgi1MenuS5, "A PERL OMS Sample", "cgi1/perl/example2.htm");
  345.     addSubMenuItemToMenu(cgi1MenuS5, "Informative Links", "cgi1/perl/more_information.htm");
  346.     addSubMenuItemToMenu(cgi1MenuS5, "Summary", "cgi1/perl/summary.htm");
  347.  
  348.     addSubMenuItemToMenu(cgi1MenuS6, "Server Side Includes", "cgi1/scripting/ssi.htm");
  349.  
  350.     addSubMenuItemToMenu(cgi1MenuASP, "Agenda", "cgi1/scripting/asp/agenda.htm");
  351.     addSubMenuItemToMenu(cgi1MenuASP, "The ASP Model", "cgi1/scripting/asp/asp_model.htm");
  352.     addSubMenuItemToMenu(cgi1MenuASP, "What Is an ASP File?", "cgi1/scripting/asp/an_asp_file.htm");
  353.     addSubMenuItemToMenu(cgi1MenuASP, "A Simple ASP Example", "cgi1/scripting/asp/simple_example.htm");
  354.     addSubMenuItemToMenu(cgi1MenuASP, "ASP and ActiveX", "cgi1/scripting/asp/asp_activex.htm");
  355.     addSubMenuItemToMenu(cgi1MenuASP, "ASP and Databases", "cgi1/scripting/asp/database_online.htm");
  356.     addSubMenuItemToMenu(cgi1MenuASP, "Summary", "cgi1/scripting/asp/summary.htm");
  357.  
  358. //actual programming really starts here
  359.     drawDepthi = new Object();
  360.     drawDepthi[0] = 0;
  361.  
  362.     buildMenu();
  363.  
  364.     if(mainNodes.subLink != null)
  365.         doLinkClick(mainNodes.subLink)
  366.  
  367.     parent.frames[1].document.close()
  368.     
  369.     function buildMenu(){
  370.         parent.frames[1].document.close()
  371.         parent.frames[1].document.clear()
  372.  
  373.         parent.frames[1].document.writeln("<HTML><BODY background='blutextb.gif' leftmargin='1'><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">");
  374.         drawMenu(mainNodes, 0);
  375.         //put the aminated image here!
  376.         parent.frames[1].document.writeln("<TR><TD><TABLE border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><TR><TD>");
  377.         parent.frames[1].document.write("<a href=\"../IWD/order.htm\" target=\"content\"><img src=\"IWD3Tile.gif\" border=0></a>");
  378.         parent.frames[1].document.writeln("</TD></TR></TABLE></TD></TR>");
  379.  
  380.         parent.frames[1].document.writeln("</table></BODY></HTML>");
  381.  
  382.         parent.frames[1].document.close()
  383.     }
  384.     
  385.     function drawMenu(subMenu, depth){
  386.         for(drawDepthi[depth] = 0; drawDepthi[depth] < subMenu.currentSubs; drawDepthi[depth]++){
  387.             parent.frames[1].document.writeln("<TR><TD><TABLE border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><TR><TD>");
  388.             parent.frames[1].document.write("<img src=spacer.gif width=" + (10 * depth) + " height=1> ");
  389.             parent.frames[1].document.writeln("</TD><TD>");
  390.             if(subMenu.subs[drawDepthi[depth]].isItm == true){
  391.                 parent.frames[1].document.writeln("<font face=verdana size=1 color=blue><a href=\"javascript:parent.frames[0].doLinkClick('"+subMenu.subs[drawDepthi[depth]].subLink+"')\">"+subMenu.subs[drawDepthi[depth]].subName+"</a></font><br>");
  392.                 parent.frames[1].document.writeln("</TD></TR></TABLE></TD></TR>");
  393.             }else{
  394.                 if(subMenu.subs[drawDepthi[depth]].isOpen){
  395.                     parent.frames[1].document.writeln("<font face=verdana size=1><a style=\"COLOR: black\" href=\"javascript:parent.frames[0].doExpandClick(parent.frames[0]."+subMenu.subs[drawDepthi[depth]].varName+")\"><img src=minus.gif border=0> "+subMenu.subs[drawDepthi[depth]].subName+"</a></font><br>");
  396.                     parent.frames[1].document.writeln("</TD></TR></TABLE></TD></TR>");
  397.                     drawMenu(subMenu.subs[drawDepthi[depth]], depth+1)
  398.                 }else{
  399.                     parent.frames[1].document.writeln("<font face=verdana size=1><a style=\"COLOR: black\" href=\"javascript:parent.frames[0].doExpandClick(parent.frames[0]."+subMenu.subs[drawDepthi[depth]].varName+")\"><img src=plus.gif border=0> "+subMenu.subs[drawDepthi[depth]].subName+"</a></font><br>");
  400.                     parent.frames[1].document.writeln("</TD></TR></TABLE></TD></TR>");
  401.                 }
  402.             }
  403.         }
  404.     }
  405.     
  406.     function doExpandClick(menu){
  407.         parent.frames[1].document.close()
  408.         parent.frames[1].document.clear;
  409.         if(menu.isOpen)
  410.             menu.isOpen=false;
  411.         else{
  412.             menu.isOpen=true;
  413.             if(menu.subLink != null)
  414.                 doLinkClick(menu.subLink)
  415.         }
  416.         buildMenu();
  417.         parent.frames[1].document.close()
  418.     }
  419.     
  420.     function doLinkClick(link){
  421.         if(link.indexOf('#-frame-#') == -1){
  422.             parent.parent.frames[1].location = link;
  423.         }else{
  424.             open(link.substring(0, link.indexOf('#-frame-#')), link.substring(link.indexOf('#-frame-#')+9, link.length));
  425.         }
  426.     }
  427.     
  428.     function colorMyHTMLText(inputString){
  429.         var returnString = "";
  430.         var strLen = new Number(inputString.length);
  431.         var currentChar = new Number(0);
  432.         var myInputString = new String(inputString)
  433.         var currentColor = "red"
  434.         
  435.         for(var i = currentChar; i < strLen; i++){
  436.             if(i % 4 == 0){
  437.                 currentColor="Blue"
  438.             }else if(i % 3 == 0){
  439.                 currentColor="Green"
  440.             }else if(i % 2 == 0){
  441.                 currentColor="Magenta"
  442.             }else{
  443.                 currentColor="Red"
  444.             }
  445.             returnString += colorChar(inputString.charAt(i), currentColor);
  446.         }
  447.  
  448.         return returnString;
  449.     }
  450.  
  451.     function colorChar(inputChar, color){
  452.         return "<font color='" + color + "'>" + inputChar + "</font>";
  453.     }