home *** CD-ROM | disk | FTP | other *** search
/ Kompuutteri K-CD 2000 #14 / K-CD_14_00.iso / Namo / data1.cab / Program_Executable_Files / lib / Script / namoscriptwizard.js < prev    next >
Encoding:
JavaScript  |  2000-06-16  |  25.2 KB  |  783 lines

  1. // javascript source for namo script wizard
  2. function namosw_exchange_src(name, rpath, nsdoc) 
  3.   str = (navigator.appName == 'Netscape') ? nsdoc+'.'+name : 'document.all.'+name;
  4.   img = eval(str);
  5.   if (img) {
  6.     if (img.altsrc == null) {
  7.       img.altsrc = img.src;
  8.       img.src    = rpath;
  9.     } else {
  10.       var temp   = img.src;
  11.       img.src    = img.altsrc;
  12.       img.altsrc = temp;
  13.     }
  14.   } 
  15. }
  16.  
  17. function namosw_preload_img()
  18.   var img_list = namosw_preload_img.arguments;
  19.   if (document.preloadlist == null) 
  20.     document.preloadlist = new Array();
  21.   var top = document.preloadlist.length;
  22.   for (var i=0; i < img_list.length; i++) {
  23.     document.preloadlist[top+i]     = new Image;
  24.     document.preloadlist[top+i].src = img_list[i];
  25.   } 
  26. }
  27.  
  28. function namosw_page_left(element) 
  29. {
  30.   if (navigator.appName == 'Netscape') {
  31.     x = element.pageX;
  32.   } else {
  33.     x = element.offsetLeft;
  34.     for (el = element.offsetParent; el; el = el.offsetParent)
  35.       x += el.offsetLeft;
  36.   }
  37.   return x;
  38. }
  39.  
  40. function namosw_page_top(element) 
  41. {
  42.   if (navigator.appName == 'Netscape') {
  43.     y = element.pageY;
  44.   } else {
  45.     y = element.offsetTop;
  46.     for (el = element.offsetParent; el; el = el.offsetParent)
  47.       y += el.offsetTop;
  48.   }
  49.   return y;
  50. }
  51.  
  52. function namosw_page_right(el) {
  53.   wid =  (navigator.appName == 'Netscape') ? window.innerWidth : document.body.offsetWidth;
  54.   return wid - namosw_page_left(el);
  55. }
  56.  
  57. function namosw_page_bottom(el) {
  58.   hei =  (navigator.appName == 'Netscape') ? window.innerHeight : document.body.offsetHeight;
  59.   return hei - namosw_page_top(el);
  60. }
  61.  
  62. function namosw_set_visible(el, flag) {
  63.   if (navigator.appName == 'Netscape') {
  64.     el.visibility = flag ? 'show' : 'hide';
  65.   } else {
  66.     el.style.visibility = flag ? 'visible' : 'hidden';
  67.   }
  68. }
  69.  
  70. function namosw_set_pos(el, x, y)
  71. {
  72.   if (navigator.appName == 'Netscape') {
  73.     el.left = x;
  74.     el.top  = y;
  75.   } else {
  76.     el.style.pixelLeft = x;
  77.     el.style.pixelTop  = y;
  78.   }
  79. }
  80.  
  81. function namosw_left(el) {
  82.   return (navigator.appName == 'Netscape') ? el.left : el.style.pixelLeft;
  83. }
  84.  
  85. function namosw_top(el) {
  86.   return (navigator.appName == 'Netscape') ? el.top : el.style.pixelTop;
  87. }
  88.  
  89. function namosw_is_relative(el) {
  90.   return (navigator.appName == 'Netscape') ? el.position == 'relative' : 
  91.                                              el.style.position == 'relative';
  92. }
  93.  
  94. function namosw_new_animation_object(name, obj, time, xpos, ypos, path, byword, zoom, stepNum) 
  95. {
  96.   var str = (navigator.appName == 'Netscape') ? 'document.'+name : 'document.all[\''+name+'\']';
  97.   var object;
  98.   object               = eval(str);
  99.   object.name     = name;
  100.   object.startCondObj  = obj;
  101.   object.startCondTime = time;
  102.   object.startXPos     = xpos;     // left, center, right
  103.   object.startYPos     = ypos;     // top,  center, bottom
  104.   object.pathType      = path;     // line, arc, spiral
  105.   object.byword        = byword;   // true, false
  106.   object.zoom          = zoom;
  107.   object.stepNum       = stepNum;
  108.   return object;
  109. }
  110.  
  111. function namosw_is_space(c)
  112. {
  113.   return (c == ' ' || c == '\t' || c == '\r' || c == '\n');
  114. }
  115.  
  116. function namosw_process_byword(list, index)
  117. {
  118.   var el = list[index];
  119.   if (navigator.appName == 'Netscape')
  120.     return;
  121.   if (el.byword == false && el.zoom == null)
  122.     return;
  123.  
  124.   var dest = "";
  125.   var src = el.innerHTML;
  126.   var objNum = document.NamoAnimationObjects.length;
  127.   var wordi = 0, i = 0, mark;
  128.   while (i < src.length) {
  129.     mark = i;
  130.     while (i < src.length) {
  131.       while (i < src.length && namosw_is_space(src.charAt(i))) i++;
  132.       if    (i < src.length && src.charAt(i) != '<') break;
  133.       while (i < src.length && src.charAt(i) != '>') i++;
  134.       if    (i < src.length && src.charAt(i) == '>') i++;
  135.     }
  136.     dest += src.substring(mark, i);
  137.     if (i >= src.length) break;
  138.     dest += '<span id=\"' + el.name + 'word' + (wordi+1) + '\" style=\"position:relative\">';
  139.     mark = i;
  140.     while (i < src.length && !namosw_is_space(src.charAt(i)) && src.charAt(i) != '<') i++;
  141.     while (i < src.length && namosw_is_space(src.charAt(i)) == ' ') i++;
  142.     if (el.byword == false) while (i < src.length && src.charAt(i) != '<') i++;
  143.     dest += src.substring(mark, i);
  144.     dest += '</span>';
  145.     wordi++;
  146.   }
  147.   el.innerHTML = dest;
  148.   el.posLeft   = 0;
  149.   el.style.visibility = 'visible';
  150.  
  151.   list[index] = namosw_new_animation_object(el.name+'word1', el.startCondObj, el.startCondTime, 
  152. el.startXPos, el.startYPos, el.pathType, false, el.zoom, el.stepNum);
  153.   for (i = 1; i < wordi; i++) {
  154.     list[objNum+i-1] = namosw_new_animation_object(el.name+'word'+(i+1), (el.byword ? (el.name+'word'+i) : el.startCondObj), (el.byword ? 0 : el.startCondTime), el.startXPos, el.startYPos, el.pathType, false, el.zoom, el.stepNum);
  155.     list[objNum+i-1].style.posLeft = 0;
  156.     list[objNum+i-1].style.visibility = 'visible';
  157.   }
  158.   el.startCondTime = -1;
  159. }
  160.  
  161. function namosw_init_animation()
  162. {
  163.   var i    = 0;
  164.   var list = new Array;
  165.   document.NamoAnimationObjects = list;
  166.   var length = list.length;
  167.   for (i = 0; i < length; i++)
  168.     namosw_process_byword(list, i);
  169.   for (i = 0; i < list.length; i++) {
  170.     list[i].countDown = (list[i].startCondObj == null) ? list[i].startCondTime : -1;
  171.     list[i].step      = 0;
  172.     list[i].sx        = (list[i].startXPos == 'left')  ? -namosw_page_left(list[i])  :
  173.                (list[i].startXPos == 'right') ?  namosw_page_right(list[i]) : 0;
  174.     list[i].sy        = (list[i].startYPos == 'top')   ? -namosw_page_top(list[i])   :
  175.                (list[i].startYPos == 'bottom')?  namosw_page_bottom(list[i]): 0;
  176.     list[i].ex      = 0;
  177.     list[i].ey       = 0;
  178.     if (!namosw_is_relative(list[i])) {
  179.       list[i].sx += namosw_left(list[i]);
  180.       list[i].sy += namosw_top(list[i]);
  181.       list[i].ex += namosw_left(list[i]);
  182.       list[i].ey += namosw_top(list[i]);
  183.     }
  184.     if (list[i].pathType == 'spiral') {
  185.       list[i].sx = Math.max(-200+list[i].ex, Math.min(200+list[i].ex, list[i].sx));
  186.       list[i].sy = Math.max(-200+list[i].ey, Math.min(200+list[i].ey, list[i].sy));
  187.     }
  188.     namosw_set_pos(list[i], list[i].sx, list[i].sy);
  189.     namosw_set_visible(list[i], false);
  190.   }
  191.   window.setTimeout("namosw_animate();", 10);
  192. }
  193.  
  194. function namosw_animate(str) 
  195. {
  196.   var live_object_num = 0;
  197.   for (var i = 0; i < document.NamoAnimationObjects.length; i++) {
  198.     var el = document.NamoAnimationObjects[i];
  199.     if (el.countDown > 0) {
  200.       el.countDown = (0 < el.countDown-10) ? el.countDown-10 : 0;
  201.       live_object_num++;
  202.       continue;
  203.     }
  204.     if (el.countDown < 0)
  205.       continue;
  206.  
  207.     if (el.pathType == 'line') {
  208.       newx = el.sx + el.step * (el.ex - el.sx) / el.stepNum;
  209.       newy = el.sy + el.step * (el.ey - el.sy) / el.stepNum;
  210.     } else if (el.pathType == 'arc') {
  211.       linex = el.sx + el.step * (el.ex - el.sx) / el.stepNum;
  212.       liney = el.sy + el.step * (el.ey - el.sy) / el.stepNum;
  213.  
  214.       x = (el.ex + el.sx) / 2;
  215.       y = (el.ey + el.sy) / 2;
  216.       sinv = Math.sin(Math.PI*el.step/el.stepNum*(el.ex-el.sx > 0 ? -1:1));
  217.       cosv = Math.cos(Math.PI*el.step/el.stepNum);
  218.       newx = ((cosv*(el.sx-x) - sinv*(el.sy-y) + x) + linex) / 2;
  219.       newy = ((sinv*(el.sx-x) + cosv*(el.sy-y) + y) + liney) / 2;
  220.     } else if (el.pathType == 'spiral') {
  221.       sinv = Math.sin(2*Math.PI*el.step/el.stepNum);
  222.       cosv = Math.cos(2*Math.PI*el.step/el.stepNum);
  223.       r = (el.stepNum-el.step)/el.stepNum;
  224.       newx = el.ex + (cosv*(el.sx-el.ex) - sinv*(el.sy-el.ey))*r;
  225.       newy = el.ey + (sinv*(el.sx-el.ex) + cosv*(el.sy-el.ey))*r;
  226.     }
  227.     if (el.zoom == 'zoomin' && navigator.appName != 'Netscape')
  228.       el.style.fontSize = 50+50*el.step/el.stepNum + '%';
  229.     else if (el.zoom == 'zoomout' && navigator.appName != 'Netscape')
  230.       el.style.fontSize = 200-100*el.step/el.stepNum + '%';
  231.     namosw_set_pos(el, newx, newy);
  232.     namosw_set_visible(el, true);
  233.  
  234.     if (el.step++ == el.stepNum) {
  235.       namosw_set_pos(el, el.ex, el.ey);
  236.       el.step = 0;
  237.       el.countDown = -1;
  238.       // trigger other object(self can be trigger)
  239.       for (var j = 0; j < document.NamoAnimationObjects.length; j++) {
  240.         var obj = document.NamoAnimationObjects[j];
  241.         if (obj.countDown < 0 && obj.startCondObj == el.name) {
  242.           obj.countDown = obj.startCondTime;
  243.           live_object_num++;
  244.           if (i < j) {
  245.             obj.countDown += 10;
  246.             live_object_num--;
  247.           }
  248.         }
  249.       }
  250.     } else {
  251.       live_object_num++;
  252.     }
  253.   }
  254.   if (live_object_num > 0)
  255.     window.setTimeout("namosw_animate();", 10);
  256. }
  257.  
  258. function namosw_goto_byselect(sel, targetstr)
  259. {
  260.   var index = sel.selectedIndex;
  261.   if (sel.options[index].value != '') {
  262.      if (targetstr == 'blank') {
  263.        window.open(sel.options[index].value, 'win1');
  264.      } else {
  265.        var frameobj;
  266.        if ((frameobj = eval(targetstr)) != null)
  267.          frameobj.location = sel.options[index].value;
  268.      }
  269.   }
  270. }
  271.  
  272. function namosw_goto(url, targetstr)
  273. {
  274.   if (url == 'backward')
  275.     history.back(1);
  276.   else if (url == 'forward')
  277.     history.forward(1);
  278.   else {
  279.      if (targetstr == 'blank') {
  280.        window.open(url, 'win1');
  281.      } else {
  282.        var frameobj;
  283.        if ((frameobj = eval(targetstr)) != null)
  284.          frameobj.location = url;
  285.      }
  286.   }
  287. }
  288.  
  289. function namosw_infotext()
  290. {
  291.   var username;
  292.   var type, i, top, obj;
  293.   for (i = 1, top = 0; i < namosw_infotext.arguments.length; i += 2) {
  294.     obj = eval('document.'+namosw_infotext.arguments[i]);
  295.     if (obj == null) continue;
  296.     type = namosw_infotext.arguments[i+1];
  297.     if (type == 'username') {
  298.       if (username == null) 
  299.         username = prompt(namosw_infotext.arguments[0], "");
  300.       username = (username == null) ? '' : username;
  301.       obj.value = username;
  302.     } else if (type == 'moddate') {
  303.       obj.value = document.lastModified;
  304.     } else if (type == 'ipaddr' || type == 'hostname') {
  305.       if (navigator.appName == 'Netscape') {
  306.         var host  = java.net.InetAddress.getLocalHost();
  307.         obj.value = (type == 'ipaddr') ? host.getHostAddress() : host.getHostName();
  308.       } else {
  309.         obj.value = '';
  310.       }
  311.     }
  312.   }
  313. }
  314.  
  315. function namosw_init_clock()
  316. {
  317.   var type, i, top, obj, clocks;
  318.   clocks = new Array();
  319.   for (i = 0, top = 0; i < namosw_init_clock.arguments.length; i += 2) {
  320.     obj = eval('document.'+namosw_init_clock.arguments[i]);
  321.     if (obj == null) continue;
  322.     if ((type = namosw_init_clock.arguments[i+1]) < 1 && 11 < type) continue;
  323.     clocks[top++] = obj;
  324.     clocks[top++] = type;
  325.   }
  326.   clocks.months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July',
  327.                             'August', 'September', 'October', 'November', 'December');
  328.   clocks.days   = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday',
  329.                             'Thursday', 'Friday', 'Saturday');
  330.   clocks.k_days = new Array('└╧', '┐∙', '╚¡', '╝÷', '╕±', '▒▌', '┼Σ');
  331.   clocks.ampm_str   = new Array('AM', 'PM');
  332.   clocks.k_ampm_str = new Array('┐└└ⁿ', '┐└╚─');
  333.  
  334.   if (top > 0) {
  335.     document.namosw_clocks = clocks;
  336.     namosw_clock();
  337.   }
  338. }
  339.  
  340. function namosw_clock()
  341. {
  342.   var i, type, clocks, next_call, str, hour, ampm, now, year2, year4;
  343.   clocks = document.namosw_clocks;
  344.   if (clocks == null) return;
  345.   next_call = false;
  346.   for (i = 0; i < clocks.length; i += 2) {
  347.     obj   = clocks[i];
  348.     type  = clocks[i+1];
  349.     now   = new Date();
  350.     year2 = now.getYear();
  351.     year4 = year2;
  352.     if (year2 < 1000) year4 = 1900 + year2;
  353.     if (year2 >= 100) year2 = year4;
  354.  
  355.     if (type == 1 || type == 2) {
  356.       obj.value = clocks.months[now.getMonth()] + ' ' + now.getDate() + ', ' + year4;
  357.       if (type == 2) 
  358.         obj.value = clocks.days[now.getDay()] + ', ' + obj.value;
  359.     } else if (type == 3 || type == 4) {
  360.       obj.value = year2 + '/' + (now.getMonth()+1) + '/' + now.getDate();
  361.     } else if (type == 5 || type == 6) {
  362.       obj.value = now.getDate() + '/' + (now.getMonth()+1) + '/' + year2;
  363.     } else if (type == 8 || type == 9 || type == 10 || type == 11) {
  364.       obj.value = year4 + '│Γ ' + (now.getMonth()+1) + '┐∙ ' + now.getDate() + '└╧';
  365.       if (type == 9)
  366.         obj.value += ' ' + clocks.k_days[now.getDay()] + '┐Σ└╧';
  367.     }
  368.     if (type == 4 || type == 6 || type == 7 || type == 10 || type == 11) {
  369.       hour = now.getHours();
  370.       ampm = 0;
  371.       if (hour >= 12) {
  372.     if (hour > 12) hour -= 12;
  373.     ampm = 1;
  374.       }
  375.       if (type == 10 || type == 11) {
  376.     str = clocks.k_ampm_str[ampm] +' '+ hour+'╜├ '+ now.getMinutes() +'║╨';
  377.     if (type == 11) str += ' ' + now.getSeconds() +'├╩';
  378.       } else {
  379.     str = hour +':'+ ((now.getMinutes() < 10) ? '0'+now.getMinutes():now.getMinutes()) +':'+ ((now.getSeconds() < 10) ? '0'+now.getSeconds():now.getSeconds()) +' '+ clocks.ampm_str[ampm];
  380.       }
  381.       if (type == 7) obj.value  = str;
  382.       else           obj.value += ' ' + str;
  383.     }
  384.     if (type == 4 || type == 6 || type == 7 || type == 10 || type == 11)
  385.       next_call = true;
  386.   }
  387.   if (next_call)
  388.     window.setTimeout("namosw_clock();", 1000);
  389. }
  390.  
  391. function namosw_init_scrolltext()
  392. {
  393.   list = new Array();
  394.   for (var i = 0, top = 0; i < namosw_init_scrolltext.arguments.length; i += 2) {
  395.     obj = eval('document.'+namosw_init_scrolltext.arguments[i]);
  396.     if (obj == null) continue;
  397.     list[top++] = obj;
  398.     for (str = '', j = 0; j < namosw_init_scrolltext.arguments[i+1]; j++)
  399.       str += ' ';
  400.     str += obj.value;
  401.     obj.value = str;
  402.   }
  403.   if (top > 0) {
  404.     document.namosw_scrolltext_list = list;
  405.     setTimeout('namosw_scrolltext()', 100);
  406.   }
  407. }
  408.  
  409. function namosw_scrolltext()
  410. {
  411.   for (i = 0; i < document.namosw_scrolltext_list.length; i++) {
  412.     obj   = document.namosw_scrolltext_list[i];
  413.     str   = obj.value.substring(1, obj.value.length);
  414.     str  += obj.value.substring(0, 1);
  415.     obj.value = str;
  416.   }
  417.   setTimeout('namosw_scrolltext()', 100);
  418. }
  419.  
  420. function namosw_scrollstatus()
  421. {
  422.   var str = '';
  423.   if (namosw_scrollstatus.arguments.length > 0) {
  424.     var i;
  425.     for (str = '', i = 0; i < 100; i++)
  426.       str += ' ';
  427.     for (i = 0; i < namosw_scrollstatus.arguments.length; i++)
  428.       str += namosw_scrollstatus.arguments[i] + ' ';
  429.     document.namosw_scrollstatus = str;
  430.   } else {
  431.     var src_str = document.namosw_scrollstatus;
  432.     str  = src_str.substring(1, src_str.length);
  433.     str += src_str.substring(0, 1);
  434.     document.namosw_scrollstatus = str;
  435.   }
  436.   window.status = str;
  437.   setTimeout('namosw_scrollstatus()', 100);
  438. }
  439.  
  440. function namosw_init_list(top_layer)
  441. {
  442.   if (parseInt(navigator.appVersion) < 4)
  443.     return;
  444.  
  445.   document.namosw_lists     = new Array();
  446.   document.namosw_lists.lid = 0;
  447.  
  448.   var layer;
  449.   if (navigator.appName == 'Netscape')
  450.     layer = document.layers[top_layer];
  451.   else
  452.     layer = document.all[top_layer];
  453.  
  454. }
  455.  
  456. function namosw_list(parent, visible, width, height, font, size, fgColor, bgColor, indent, hbgColor) {
  457.   this.additem = namosw_l_additem;
  458.   this.addlist = namosw_l_addlist;
  459.   this.make    = namosw_l_make;
  460.   this.write   = namosw_l_write;
  461.   this.show    = namosw_l_show;
  462.   this.update  = namosw_l_update;
  463.   this.updateparent = namosw_l_updateparent;
  464.   this.items = new Array();
  465.   this.id = document.namosw_lists.length;
  466.   this.parent_id = 0;
  467.   this.x = 0;
  468.   this.y = 0;
  469.   this.visible = visible;
  470.   this.width    = width;
  471.   this.height   = height;
  472.   this.parent   = parent;
  473.   this.indent = indent;
  474.   this.bgColor  = bgColor;
  475.   this.hbgColor = hbgColor;
  476.   this.font_start = '<font color=' + fgColor;
  477.   if (font != '') this.font_start += ' face=\"' + font + '\"';
  478.   if (size != '') this.font_start += ' size=' + size;
  479.   this.font_start += '>';
  480.   this.font_end = '</font>';
  481.   this.made     = false;
  482.   this.shown    = false;
  483.   document.namosw_lists[document.namosw_lists.length] = this;
  484. }
  485.  
  486. function namosw_l_setclip(layer, left, right, top, bottom) {
  487.   if (navigator.appName == 'Netscape') {
  488.     layer.clip.left   = left; 
  489.     layer.clip.right  = right;
  490.     layer.clip.top    = top;  
  491.     layer.clip.bottom = bottom;
  492.   } else {    
  493.     layer.style.pixelWidth  = right-left;
  494.     layer.style.pixelHeight = bottom-top;
  495.     layer.style.clip  = "rect(" + top + "," + right + "," + bottom + "," + left + ")";
  496.   }
  497. }
  498.  
  499. function namosw_l_write() {
  500.   var layer, clip, str;
  501.   for(var i = 0; i < this.items.length; i++) { 
  502.     layer = this.items[i];
  503.     if (navigator.appName == 'Netscape') 
  504.       layer.visibility = "hidden";
  505.     else 
  506.       layer.style.visibility = "hidden";
  507.     str = "";
  508.  
  509.     str += "<table width="+this.width+" nowrap border='0' cellpadding='0' cellspacing='0'><tr>";
  510.     if (0 < this.indent) str += "<td width="+this.indent+" nowrap> </td>";
  511.     if (layer.type == 'list') {
  512.       str += "<td width=15  valign='middle' nowrap><a"
  513.       if (navigator.appName == 'Netscape') str += " href=\"javascript:void(0);\""
  514.       str += " onclick=\"namosw_l_expand("+layer.list.id+");\"><img src=\"collapsed.gif\" name=\"_img"+layer.list.id+"\" border='0'></a></td>";
  515.     } else {
  516.       str += "<td width=15 nowrap> </td>";
  517.     }
  518.     str += "<td height="+(this.height-3)+" width="+(this.width-15-this.i)+" valign='middle' align='left'>";
  519.     if (this.font_start) str += this.font_start;
  520.     str += layer.text;
  521.     if (this.font_end) str += this.font_end;
  522.     str += "</td></table>";
  523.  
  524.     if (navigator.appName == 'Netscape') {
  525.       layer.document.writeln(str);
  526.       layer.document.close();
  527.     } else {
  528.       layer.innerHTML = str;
  529.     }
  530.     if (layer.type == 'list' && layer.list.visible)
  531.       this.items[i].list.write();
  532.   }
  533.   this.made = true;
  534. }
  535.  
  536. function namosw_l_show() {
  537.   var layer;
  538.   for(var i = 0; i < this.items.length; i++) { 
  539.     layer = this.items[i];
  540.     namosw_l_setclip(layer, 0, this.width, 0, this.height-1);
  541.     if (navigator.appName == 'Netscape') {
  542.       if (layer.oBgColor) layer.document.bgColor = layer.oBgColor;
  543.       else layer.document.bgColor = this.bgColor;
  544.     } else {
  545.       if (layer.oBgColor) layer.style.backgroundColor = layer.oBgColor;
  546.       else layer.style.backgroundColor = this.bgColor;
  547.     }
  548.     if (layer.type == 'list' && layer.list.visible)
  549.       layer.list.show();
  550.   }
  551.   this.shown = true;
  552. }
  553.  
  554. function namosw_l_update(parent_visible, x, y) {
  555.   var top = y, layer, list;
  556.   for(var i = 0; i < this.items.length; i++) { 
  557.     layer = this.items[i];
  558.     list  = layer.list;
  559.     if (this.visible && parent_visible) {
  560.       if (navigator.appName == 'Netscape') {
  561.     layer.visibility = "visible";
  562.     layer.top = top;
  563.     layer.left = x;
  564.       } else {
  565.     layer.style.visibility = "visible";
  566.     layer.style.pixelTop = top;
  567.     layer.style.pixelLeft = x;
  568.       }
  569.       top += this.height;
  570.     } else {
  571.       if (navigator.appName == 'Netscape') layer.visibility = "hidden";
  572.       else layer.style.visibility = "hidden";
  573.     }
  574.     if (layer.type == 'list') {
  575.       if (list.visible) {
  576.         if (!list.made)  list.write();
  577.         if (!list.shown) list.show();
  578.         if (navigator.appName == 'Netscape') layer.document.images[0].src = "collapsed.gif";
  579.     else eval('document.images._img'+list.id+'.src = "collapsed.gif"');
  580.       } else {
  581.     if (navigator.appName == 'Netscape') layer.document.images[0].src = "expanded.gif";
  582.     else eval('document.images._img'+list.id+'.src = "expanded.gif"');
  583.       }
  584.       if (list.made)
  585.         top = list.update(this.visible && parent_visible, x, top);
  586.     }
  587.   }
  588.   return top;
  589. }
  590.  
  591. function namosw_l_updateparent(parent_id) {
  592.   this.parent_id = parent_id;
  593.   for(var i = 0; i < this.items.length; i++)
  594.     if (this.items[i].type == 'list')
  595.       this.items[i].list.updateparent(parent_id);
  596. }
  597.  
  598. function namosw_l_expand(i) {
  599.   document.namosw_lists[i].visible = !document.namosw_lists[i].visible;
  600.   list = document.namosw_lists[document.namosw_lists[i].parent_id];
  601.   list.update(true, list.x, list.y);
  602. }
  603.  
  604. function namosw_l_make(x, y) {
  605.   this.updateparent(this.id);
  606.   this.write();
  607.   this.show();
  608.   this.update(true, x, y);
  609.   this.x = x; 
  610.   this.y = y;
  611. }
  612.  
  613. function namosw_l_additem(text, url, frame) {
  614.   var layer = null;
  615.   if (navigator.appName == 'Netscape' && this.parent)
  616.     layer = eval('this.parent.document.layers.namoswlistitem'+document.namosw_lists.lid);
  617.   else
  618.     layer = eval('document.all.namoswlistitem'+document.namosw_lists.lid);
  619.   if (layer == null) {
  620.     if (navigator.appName == 'Netscape') 
  621.       layer = this.parent ? new Layer(this.width, this.parent) : new Layer(this.width);
  622.   }
  623.   if (layer == null) return;
  624.  
  625.   if (url)   layer.url   = url;
  626.   if (frame) layer.frame = frame;
  627.   layer.type = 'item';
  628.   layer.text = text;
  629.   this.items[this.items.length] = layer;
  630.   if (this.hbgColor) layer.hbgColor = this.hbgColor;
  631.   if (this.bgColor)  layer.oBgColor = this.bgColor;
  632.  
  633.   if (layer.captureEvents)
  634.     layer.captureEvents(Event.MOUSEOVER|Event.MOUSEOUT|Event.MOUSEUP);
  635.   layer.onmouseover = namosw_l_onmouseover;
  636.   layer.onmouseout  = namosw_l_onmouseout;
  637.   layer.onmouseup   = namosw_l_onmouseup;
  638.   document.namosw_lists.lid++;
  639. }
  640.  
  641. function namosw_l_addlist(list, text, url, frame) {
  642.   var layer = null;
  643.  
  644.   if (navigator.appName == 'Netscape' && this.parent)
  645.     layer = eval('this.parent.document.layers.namoswlistitem'+document.namosw_lists.lid);
  646.   else
  647.     layer = eval('document.all.namoswlistitem'+document.namosw_lists.lid);
  648.   if (layer == null) {
  649.     if (navigator.appName == 'Netscape') 
  650.       layer = this.parent ? new Layer(this.width, this.parent) : new Layer(this.width);
  651.   }
  652.   if (layer == null) return;
  653.  
  654.   if (url)   layer.url   = url;
  655.   if (frame) layer.frame = frame;
  656.   layer.list = list;
  657.   layer.type = 'list';
  658.   layer.text = text;
  659.   this.items[this.items.length] = layer;
  660.   list.parent = this;
  661.   if (this.hbgColor) layer.hbgColor = this.hbgColor;
  662.   if (this.bgColor)  layer.oBgColor = this.bgColor;
  663.  
  664.   if (layer.captureEvents)
  665.     layer.captureEvents(Event.MOUSEOVER|Event.MOUSEOUT|Event.MOUSEUP);
  666.   layer.onmouseover = namosw_l_onmouseover;
  667.   layer.onmouseout  = namosw_l_onmouseout;
  668.   layer.onmouseup   = namosw_l_onmouseup;
  669.   document.namosw_lists.lid++;
  670. }
  671.  
  672. function namosw_l_onmouseover()
  673. {
  674.   if (this.hbgColor) {
  675.     if (navigator.appName == 'Netscape')
  676.       this.bgColor = this.hbgColor;
  677.     else
  678.       this.style.backgroundColor = this.hbgColor;
  679.   }
  680.   if (this.url) self.status = this.url;
  681. }
  682.  
  683. function namosw_l_onmouseout()
  684. {
  685.   if (this.hbgColor) {
  686.     if (navigator.appName == 'Netscape') 
  687.       this.bgColor = this.oBgColor;
  688.     else 
  689.       this.style.backgroundColor = this.oBgColor;
  690.   }
  691.   if (this.url) self.status = '';
  692. }
  693.  
  694. function namosw_l_onmouseup()
  695. {
  696.   if (this.url) {
  697.     if (this.frame == 'blank') {
  698.       window.open(this.url, 'win1');
  699.     } else {
  700.       var frame_obj;
  701.       if ((frame_obj = eval(this.frame)) != null)
  702.         frame_obj.location = this.url;
  703.     }
  704.   }
  705. }
  706.  
  707. function namosw_add_layer_action(layer_str, event_str, action_str, arg1)
  708. {
  709.   var layer = (navigator.appName == 'Netscape') ? document.layers[layer_str] : document.all[layer_str];
  710.   if (layer.namosw_action_array == null) 
  711.     layer.namosw_action_array = new Array;
  712.   var actions = layer.namosw_action_array;
  713.   var i       = actions.length;
  714.   actions[i]            = new String(event_str);
  715.   actions[i].action_str = action_str;
  716.   if (action_str == 'showlayer' || action_str == 'hidelayer') {
  717.     actions[i].target_layer = (navigator.appName == 'Netscape') ? document.layers[arg1] : document.all[arg1];
  718.   } else if (action_str == 'activatetimeline') {
  719.     actions[i].timeline_name = arg1;
  720.   }
  721.  
  722.   if (layer.captureEvents)
  723.     layer.captureEvents(Event.MOUSEOVER|Event.MOUSEOUT|Event.MOUSEUP);
  724.   layer.onmouseup   = namosw_a_click;
  725.   layer.onmouseover = namosw_a_mouseover;
  726.   layer.onmouseout  = namosw_a_mouseout;
  727. }
  728.  
  729. function namosw_a_mouseover()
  730. {
  731.   var actions = this.namosw_action_array;
  732.   for (var i = 0; i < actions.length; i++) {
  733.     if (actions[i] == 'onmouseover') {
  734.       if (actions[i].action_str == 'showlayer' || actions[i].action_str == 'hidelayer') {
  735.         namosw_show_layer(actions[i].target_layer, actions[i].action_str == 'showlayer');
  736.       }
  737.       else if (actions[i].action_str == 'activatetimeline')
  738.         NamoTime_Play(actions[i].timeline_name);
  739.     }
  740.   }
  741. }
  742.  
  743. function namosw_a_mouseout()
  744. {
  745.   var actions = this.namosw_action_array;
  746.   for (var i = 0; i < actions.length; i++) {
  747.     if (actions[i] == 'onmouseout') {
  748.       if (actions[i].action_str == 'showlayer' || actions[i].action_str == 'hidelayer')
  749.         namosw_show_layer(actions[i].target_layer, actions[i].action_str == 'showlayer');
  750.       else if (actions[i].action_str == 'activatetimeline')
  751.         NamoTime_Play(actions[i].timeline_name);
  752.     }
  753.   }
  754. }
  755.  
  756. function namosw_a_click()
  757. {
  758.   var actions = this.namosw_action_array;
  759.   for (var i = 0; i < actions.length; i++) {
  760.     if (actions[i] == 'onclick') {
  761.       if (actions[i].action_str == 'showlayer' || actions[i].action_str == 'hidelayer')
  762.         namosw_show_layer(actions[i].target_layer, actions[i].action_str == 'showlayer');
  763.       else if (actions[i].action_str == 'activatetimeline')
  764.         NamoTime_Play(actions[i].timeline_name);
  765.     }
  766.   }
  767. }
  768.  
  769. function namosw_show_layer(layer, flag)
  770. {
  771.   if (navigator.appName == 'Netscape')
  772.     layer.visibility = flag ? 'show' : 'hide';
  773.   else
  774.     layer.style.visibility = flag ? 'visible' : 'hidden';
  775. }
  776.  
  777. function namosw_init_layer_action()
  778. {
  779. }
  780.  
  781.