outlook.js
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:27k
源码类别:

OA系统

开发平台:

Java

  1. // ---------------------------------------------------------------------------
  2. // this script is copyright (c) 2001 by Michael Wallner!
  3. // http://www.wallner-software.com
  4. // mailto:dhtml@wallner-software.com
  5. //
  6. // you may use this script on web pages of your own
  7. // you must not remove this copyright note!
  8. //
  9. // This script featured on Dynamic Drive (http://www.dynamicdrive.com)
  10. // Visit http://www.dynamicdrive.com for full source to this script and more
  11. // ---------------------------------------------------------------------------
  12. // ---------------------------------------------------------------------------
  13. //                   Outlook like navigation bar version 1.2
  14. //
  15. // supported browsers:  IE4, IE5, NS4, NS6, MOZ, OP5
  16. // needed script files: crossbrowser.js
  17. //
  18. // History:
  19. // 1.0: initial version
  20. // 1.1: no Reload in IE and NS6
  21. // 1.2: no Reload in OP5 if width is not changed
  22. // ---------------------------------------------------------------------------
  23. //add one button to a panel
  24. //einen Button zu einem Panel hinzuf黦en
  25. //img:    image name - Name der Bilddatei
  26. //label:  button caption - Beschriftung des Buttons
  27. //action: javascript on MouseUp event - Javascript beim onMouseUp event
  28. function b_addButton(img, label, action) {
  29.   this.img[this.img.length]=img;
  30.   this.lbl[this.lbl.length]=label;
  31.   this.act[this.act.length]=action;
  32.   this.sta[this.sta.length]=0;
  33.   return this
  34. }
  35. //reset all panel buttons  (ns4, op5)
  36. //alle Panel Buttons zur點ksetzten (ns4, op5)
  37. function b_clear() {
  38. var i
  39.   for (i=0;i<this.sta.length;i++) {
  40.     if (this.sta[i] != 0)
  41.       this.mOut(i);
  42.   }
  43. }
  44. //----------------------------------------------------------------------------
  45. // Panel functions for Netscape 4
  46. //----------------------------------------------------------------------------
  47. // write new htmlcode into the button layer
  48. // schreibe den neuen HTML Code in den Button Layer
  49. function b_mOver_ns4(nr) {
  50.   this.clear();
  51.   l=this.obj.layers[0].layers[nr].document;
  52.   l.open();
  53.   l.write("<Center>")
  54.   l.write("<SPAN class='imgbout'>")
  55.   l.write("<A href='#' onmouseOut='"+this.v+".mOut("+nr+")' ");
  56.   l.write("onMousedown='"+this.v+".mDown("+nr+")'><img src='"+this.img[nr]);
  57.   l.write("' border=0></A></SPAN><Font size=2 face=Arial color=white>");
  58.   l.write(this.lbl[nr]+"</FONT><BR><BR>");
  59.   l.close();
  60.   this.sta[nr]=1;
  61. }
  62. function b_mOut_ns4(nr) {
  63.   l=this.obj.layers[0].layers[nr].document;
  64.   l.open();
  65.   l.write("<Center>")
  66.   l.write("<SPAN class='imgnob'>")
  67.   l.write("<A href='#' onmouseOver='"+this.v+".mOver("+nr+")' ");
  68.   l.write("onmouseOut='"+this.v+".mOut("+nr+")'><img src='"+this.img[nr]);
  69.   l.write("' border=0></A></SPAN><Font size=2 Face=Arial color=white>");
  70.   l.write(this.lbl[nr]+"</FONT><BR><BR>");
  71.   l.close();
  72.   this.sta[nr]=0;
  73. }
  74. function b_mDown_ns4(nr) {
  75.   l=this.obj.layers[0].layers[nr].document;
  76.   l.open();
  77.   l.write("<Center>")
  78.   l.write("<SPAN class='imgbin'>")
  79.   l.write("<A href='#' onmouseOver='"+this.v+".mOver("+nr+")' ");
  80.   l.write("onmouseOut='"+this.v+".mOut("+nr+")' onMouseup='"+this.act[nr]);
  81.   l.write(";"+this.v+".mOver("+nr+")'><img src='"+this.img[nr]);
  82.   l.write("' border=0></A></SPAN><Font size=2 Face=Arial color=white>");
  83.   l.write(this.lbl[nr]+"</FONT><BR><BR>");
  84.   l.close();
  85.   this.sta[nr]=1;
  86. }
  87. //test if scroll buttons should be visible
  88. //teste ob Scroll-Buttons sichtbar sein sollen
  89. function b_testScroll_ns4() {
  90. var i
  91. var j
  92. var k
  93.   i=this.obj.clip.bottom;
  94.   j=this.obj.layers[0].clip.bottom;
  95.   k=parseInt(this.obj.layers[0].top);
  96.   if (k==38)
  97.     this.obj.layers[2].visibility='hide';
  98.   else
  99.     this.obj.layers[2].visibility='show';
  100.   if ((j+k)<i) {
  101.     this.obj.layers[3].visibility='hide';
  102.   }
  103.   else
  104.     this.obj.layers[3].visibility='show';
  105. }
  106. //scroll the panel content up
  107. //scrolle den Panel Inhalt nach Oben
  108. function b_up_ns4(nr) {
  109.     this.ftop = this.ftop - 5;
  110.     this.obj.layers[0].top=this.ftop;
  111.     nr--
  112.     if (nr>0)
  113.       setTimeout(this.v+'.up('+nr+');',10);
  114.     else
  115.       this.testScroll();
  116. }
  117. //scroll the panel content down
  118. //scrolle den Panel Inhalt nach Unten
  119. function b_down_ns4(nr) {
  120.     this.ftop = this.ftop + 5;
  121.     if (this.ftop>=38) {
  122.       this.ftop=38;
  123.       nr=0;
  124.     }
  125.     this.obj.layers[0].top=this.ftop;
  126.     nr--
  127.     if (nr>0)
  128.       setTimeout(this.v+'.down('+nr+');',10);
  129.     else
  130.       this.testScroll();
  131. }
  132. //----------------------------------------------------------------------------
  133. // Panel functions for Opera5
  134. //----------------------------------------------------------------------------
  135. //show one panelbutton layer and hide the others two
  136. //zeige einen Panel Button Layer und verstecke die anderen beiden
  137. function b_mOver_op5(nr) {
  138.   var obj0=getObj(this.name+'_b'+nr+'0')
  139.   var obj1=getObj(this.name+'_b'+nr+'1')
  140.   var obj2=getObj(this.name+'_b'+nr+'2')
  141.   this.clear();
  142.   obj1.style.visibility="VISIBLE";
  143.   obj0.style.visibility="HIDDEN";
  144.   obj2.style.visibility="HIDDEN";
  145.   this.sta[nr]=1;
  146. }
  147. function b_mOut_op5(nr) {
  148.   var obj0=getObj(this.name+'_b'+nr+'0')
  149.   var obj1=getObj(this.name+'_b'+nr+'1')
  150.   var obj2=getObj(this.name+'_b'+nr+'2')
  151.   obj2.style.visibility="visible";
  152.   obj0.style.visibility="hidden";
  153.   obj1.style.visibility="hidden";
  154.   this.sta[nr]=1;
  155. }
  156. function b_mDown_op5(nr) {
  157.   var obj0=getObj(this.name+'_b'+nr+'0')
  158.   var obj1=getObj(this.name+'_b'+nr+'1')
  159.   var obj2=getObj(this.name+'_b'+nr+'2')
  160.   obj0.style.visibility="visible";
  161.   obj1.style.visibility="hidden";
  162.   obj2.style.visibility="hidden";
  163.   this.sta[nr]=1;
  164. }
  165. // ---------------------------------------------------------------------------
  166. // Panel functions for ie4, ie5, ns5, op5
  167. // ---------------------------------------------------------------------------
  168. //test if scroll buttons should be visible
  169. //teste ob Scroll-Buttons sichtbar sein sollen
  170. function b_testScroll() {
  171.   if (bt.op5) {
  172.     var i=parseInt(this.obj.style.pixelHeight);
  173.     var j=parseInt(this.objf.style.pixelHeight);
  174.   }
  175.   else {
  176.     var i=parseInt(this.obj.style.height);
  177.     var j=parseInt(this.objf.style.height);
  178.   }
  179.   var k=parseInt(this.objf.style.top);
  180.   if (k==38)
  181.     this.objm1.style.visibility='hidden';
  182.   else
  183.     this.objm1.style.visibility='visible';
  184.   if ((j+k)<i) {
  185.     this.objm2.style.visibility='hidden';
  186.   }
  187.   else
  188.     this.objm2.style.visibility='visible';
  189. }
  190. //scroll the panel content up
  191. //scrolle den Panel Inhalt nach Oben
  192. function b_up(nr) {
  193.     this.ftop = this.ftop - 5;
  194.     this.objf.style.top=this.ftop;
  195.     nr--
  196.     if (nr>0)
  197.       setTimeout(this.v+'.up('+nr+');',10);
  198.     else
  199.       this.testScroll();
  200. }
  201. //scroll the panel content down
  202. //scrolle den Panel Inhalt nach Unten
  203. function b_down(nr) {
  204.     this.ftop = this.ftop + 5;
  205.     if (this.ftop>=38) {
  206.       this.ftop=38;
  207.       nr=0;
  208.     }
  209.     this.objf.style.top=this.ftop;
  210.     nr--
  211.     if (nr>0)
  212.       setTimeout(this.v+'.down('+nr+');',10);
  213.     else
  214.       this.testScroll();
  215. }
  216. // ---------------------------------------------------------------------------
  217. // Panel object
  218. // ---------------------------------------------------------------------------
  219. //create one panel
  220. function createPanel(name,caption) {
  221.   this.name=name;                  // panel layer ID
  222.   this.ftop=38;                    // actual panel scroll position
  223.   this.obj=null;                   // panel layer object
  224.   this.objc=null;                  // caption layer object
  225.   this.objf=null;                  // panel field layer object
  226.   this.objm1=null;                 // scroll button up
  227.   this.objm2=null;                 // scroll button down
  228.   this.caption=caption;            // panel caption
  229.   this.img=new Array();            // button images
  230.   this.lbl=new Array();            // button labels
  231.   this.act=new Array();            // button actions
  232.   this.sta=new Array();            // button status (internal)
  233.   this.addButton=b_addButton;      // add one button to panel
  234.   this.clear=b_clear;              // reset all buttons
  235.   if (bt.ns4) {                          // functions for ns4
  236.     this.mOver=b_mOver_ns4;              // handles mouseOver event
  237.     this.mOut=b_mOut_ns4;                // handles mouseOut & mouseUp event
  238.     this.mDown=b_mDown_ns4;              // handles mouseDown event
  239.     this.testScroll=b_testScroll_ns4;    // test if scroll buttons visible
  240.     this.up=b_up_ns4;                    // scroll panel buttons up
  241.     this.down=b_down_ns4;                // scroll panel buttons down
  242.   }
  243.   if (bt.op5) {                          // functions for op5
  244.     this.mOver=b_mOver_op5;              // handles mouseOver event
  245.     this.mOut=b_mOut_op5;                // handles mouseOut & mouseUp event
  246.     this.mDown=b_mDown_op5;              // handles mouseDown event
  247.   }
  248.   if (!bt.ns4) {                     // functions for all browsers but ns4
  249.     this.testScroll=b_testScroll;    // test if scroll buttons should be visible
  250.     this.up=b_up;                    // scroll panel buttons up
  251.     this.down=b_down;                // scroll panel buttons down
  252.   }
  253.   this.v = this.name + "var";   // global var of 'this'
  254.   eval(this.v + "=this");
  255.   return this
  256. }
  257. //add one panel to the outlookbar
  258. function b_addPanel(panel) {
  259.   panel.name=this.name+'_panel'+this.panels.length
  260.   this.panels[this.panels.length] = panel;
  261. }
  262. //write style sheets
  263. //schreibe die Style sheets
  264. function b_writeStyle() {
  265.   document.write('<STYLE TYPE="text/css">');
  266.   document.write('.button {width:300; text-align:center; font-family:arial;');
  267.   document.write(' font-size:12pt; cursor:hand; border-width:3;');
  268.   document.write(' border-style:outset; border-color:silver; ');
  269.   document.write('background-color:silver;}');
  270.   document.write('.noLine {text-decoration:none;}');
  271.   document.write('.imgB {color:white; font-family:arial; font-size:10pt;}');
  272.   if (bt.op5) {
  273.     document.write('.imgbin {border-width:3; border-style:inset; ');
  274.     document.write('border-color:white;}');
  275.   }
  276.   else {
  277.     document.write('.imgbin {border-width:3; border-style:inset; ');
  278.     document.write('border-color:silver;}');
  279.   }
  280.   if (bt.op5) {
  281.     document.write('.imgbout {border-width:3; border-style:outset; ');
  282.     document.write('border-color:white;}');
  283.   }
  284.   else {
  285.     document.write('.imgbout {border-width:3; border-style:outset; ');
  286.     document.write('border-color:silver;}');
  287.   }
  288.   
  289.   document.write(' .imgnob {border-width:3; border-style:solid; ');
  290.   document.write('border-color:'+this.bgcolor+';}');
  291.   document.write('</STYLE>');
  292. }
  293. // Draw the Outlook Bar
  294. function b_draw() {
  295. var i;
  296. var j;
  297. var t=0;
  298. var h;
  299. var c=0;
  300.   this.writeStyle();
  301.   if (bt.ns5 || bt.op5) c=6;       //two times border width
  302.   if (bt.ns4) {                 //draw OutlookBar for ns4
  303.     //OutlookBar layer..
  304.     document.write('<layer bgcolor='+this.bgcolor+' name='+this.name+' left=');
  305.     document.write(this.xpos+' top='+this.ypos+' width='+this.width);
  306.     document.write(' clip="0,0,'+this.width+','+this.height+'">');
  307.     //one layer for every panel...
  308.     for (i=0;i<this.panels.length;i++) {
  309.       document.write('<Layer name='+this.name+'_panel'+i+' width='+this.width);
  310.        document.write(' top='+i*28+' bgcolor='+this.bgcolor);
  311.        document.write(' clip="0,0,'+this.width+',');
  312.        document.write(this.height-(this.panels.length-1)*28+'">');
  313.        //one layer to host the panel buttons
  314.        document.write('<Layer top=38 width='+this.width+'>');
  315.         mtop=0
  316.         //one layer for every button
  317.         for (j=0;j<this.panels[i].img.length;j++) {
  318.           document.write('<Layer top='+mtop+' width='+this.width);
  319.           document.write('><Center><SPAN class=imgnob>');
  320.           document.write("<A href='#' onmouseOut='"+this.panels[i].v);
  321.           document.write(".rst("+j+")' onmouseOver='"+this.panels[i].v);
  322.           document.write(".mOver("+j+")'><img src='"+this.panels[i].img[j]);
  323.           document.write("' border=0></A></SPAN>");
  324.           document.write("<Font size=2 face=arial color=white>");
  325.           document.write(this.panels[i].lbl[j]+"</FONT><BR><BR>");
  326.          document.write('</Layer>');
  327.          mtop=mtop+this.buttonspace;
  328.         }
  329.        document.write('</Layer>');
  330.        //one layer for the panels caption
  331.        document.write('<Layer top=0 width='+this.width+' clip="0,0,');
  332.        document.write(this.width+',28" bgcolor=silver class=button ');
  333.        document.write('onmouseOver="'+this.panels[i].v+'.clear();">');
  334.        document.write('<A class=noLine href="javascript:'+this.v+'.showPanel(');
  335.        document.write(i+');" onmouseOver="'+this.panels[i].v+'.clear();">');
  336.        document.write('<Font Color=black class=noLine>'+this.panels[i].caption);
  337.        document.write('</Font></A></Layer>');
  338.        //two layers for scroll-up -down buttons
  339.        document.write('<Layer visibility=hide top=40 left='+(this.width-20));
  340.        document.write('><A href="#" onClick="'+this.panels[i].v+'.down(16);" ');
  341.        document.write('onmouseOver="'+this.panels[i].v+'.clear();"><img ');
  342.        document.write('width=16 height=16 src=arrowup.gif border=0>');
  343.        document.write('</A></LAYER><Layer top=');
  344.        document.write((this.height-(this.panels.length)*28)+'<Layer top=');
  345.        document.write((this.height-(this.panels.length)*28)+' left=');
  346.        document.write((this.width-20)+'><A href="#" onClick="');
  347.        document.write(this.panels[i].v+'.up(16);" onmouseOver="');
  348.        document.write(this.panels[i].v+'.clear();"><img width=16 height=16 ');
  349.        document.write('src=arrowdown.gif border=0></A></LAYER>');
  350.       document.write('</LAYER>');
  351.     }
  352.     document.write('</LAYER>');
  353.   }
  354.   else {                             //draw Outlook bar for all browsers but ns4
  355.     //OutlookBar layer..
  356.     document.write('<DIV id='+this.name+' Style="position:absolute; left:');
  357.     document.write(this.xpos+'; top:'+this.ypos+'; width:'+this.width);
  358.     document.write('; height:'+this.height+'; background-color:'+this.bgcolor)
  359.     document.write('; clip:rect(0,'+this.width+','+this.height+',0)">');
  360.     h=this.height-((this.panels.length-1)*28)
  361.     //one layer for every panel...
  362.     for (i=0;i<this.panels.length;i++) {
  363.       document.write('<DIV id='+this.name+'_panel'+i);
  364.       document.write(' Style="position:absolute; left:0; top:'+t);
  365.       document.write('; width:'+this.width+'; height:'+h+'; clip:rect(0px, ');
  366.       document.write(this.width+'px, '+h+'px, 0px); background-color:');
  367.       document.write(this.bgcolor+';">')
  368.       t=t+28;
  369.        //one layer to host the panel buttons
  370.       document.write('<div id='+this.name+'_panel'+i);
  371.       document.write('_f Style="position:absolute; left:0; top:38; width:');
  372.       document.write(this.width+'; height:');
  373.       document.write((this.panels[i].img.length*this.buttonspace));
  374.       document.write('; background-color:'+this.bgcolor+';">')
  375.       mtop=0
  376.       //one (ie4, ie5, ns5) or three layers (op5) for every button
  377.       for (j=0;j<this.panels[i].img.length;j++) {
  378.         if (bt.op5) {
  379.           document.write('<DIV id='+this.name+'_panel'+i+'_b'+j);
  380.           document.write('0 class=imgB Style="position:absolute; ');
  381.           document.write('visibility:hidden; left:0; width:'+this.width);
  382.           document.write('; top:'+mtop+'; text-align:center;">');
  383.           document.write('<img src='+this.panels[i].img[j]);
  384.           document.write(' class=imgbin onmouseUp=''+this.panels[i].v);
  385.           document.write('.mOver('+j+');'+this.panels[i].act[j]);
  386.           document.write(';' onmouseOut="'+this.panels[i].v+'.mOut('+j);
  387.           document.write(');"><BR>'+this.panels[i].lbl[j]+'</DIV>');
  388.           document.write('<DIV id='+this.name+'_panel'+i+'_b'+j+'1 class=imgB');
  389.           document.write(' Style="position:absolute; visibility:hidden; ');
  390.           document.write('left:0; width:'+this.width+'; top:'+mtop);
  391.           document.write('; text-align:center;">');
  392.           document.write('<img src='+this.panels[i].img[j]);
  393.           document.write(' class=imgbout onmouseDown="'+this.panels[i].v);
  394.           document.write('.mDown('+j+');" onmouseUp=''+this.panels[i].v);
  395.           document.write('.mOver('+j+');'+this.panels[i].act[j]);
  396.           document.write(';' onmouseOut="'+this.panels[i].v+'.mOut('+j);
  397.           document.write(');"><BR>'+this.panels[i].lbl[j]+'</DIV>');
  398.           document.write('<DIV id='+this.name+'_panel'+i+'_b'+j);
  399.           document.write('2 class=imgB Style="position:absolute; ');
  400.           document.write('visibility:visible; left:0; width:'+this.width);
  401.           document.write('; top:'+mtop+'; text-align:center;">');
  402.           document.write('<img src='+this.panels[i].img[j]+' class=imgnob ');
  403.           document.write('onmouseOver="'+this.panels[i].v+'.mOver('+j);
  404.           document.write(');"><BR>'+this.panels[i].lbl[j]+'</DIV>');
  405.         }
  406.         else {
  407.           document.write('<DIV id='+this.name+'_panel'+i+'_b'+j+' class=imgB ');
  408.           document.write('Style="position:absolute; left:0; width:'+this.width);
  409.           document.write('; top:'+mtop+'; text-align:center;">');
  410.           document.write('<img src='+this.panels[i].img[j]+' class=imgnob ');
  411.           document.write('onmouseOver="this.className='imgbout';" ');
  412.           document.write('onmouseDown="this.className='imgbin';" ');
  413.           document.write('onmouseUp='this.className="imgbout";');
  414.           document.write(this.panels[i].act[j]+';' ');
  415.           document.write('onmouseOut="this.className='imgnob';"><BR>');
  416.           document.write(this.panels[i].lbl[j]+'</DIV>');
  417.         }
  418.         mtop=mtop+this.buttonspace;
  419.       }
  420.       document.write('</DIV>');
  421.       //one layer for the panels caption if not op5!
  422.       if (!bt.op5) {
  423.         document.write('<DIV id='+this.name+'_panel'+i+'_c class=button ');
  424.         document.write('onClick="javascript:'+this.v+'.showPanel('+i);
  425.         document.write(');" style="position:absolute; left:0; top:0; width:');
  426.         document.write((this.width-c)+'; height:'+(28-c)+';"><A href="#" ');
  427.         document.write('onClick="'+this.v+'.showPanel('+i+');this.blur();');
  428.         document.write('return false;" class=noLine><FONT color=black ');
  429.         document.write('class=noLine">'+this.panels[i].caption);
  430.         document.write('</FONT></A></DIV>')
  431.       }
  432.       //two layers for scroll-up -down buttons
  433.       document.write('<DIV id='+this.name+'_panel'+i);
  434.       document.write('_m1 style="position:absolute; top:40; left:');
  435.       document.write((this.width-20)+';"><A href="#" onClick="');
  436.       document.write(this.panels[i].v+'.down(16);this.blur();return false;" ');
  437.       document.write('onmouseOver="'+this.panels[i].v+'.clear();">');
  438.       document.write('<img width=16 height=16 src=arrowup.gif border=0>');
  439.       document.write('</A></DIV>');
  440.       document.write('<DIV id='+this.name+'_panel'+i);
  441.       document.write('_m2 style="position:absolute;  top:');
  442.       document.write((this.height-(this.panels.length)*28)+'; left:');
  443.       document.write((this.width-20)+';"><A href="#" onClick="');
  444.       document.write(this.panels[i].v+'.up(16);this.blur();return false" ');
  445.       document.write('onmouseOver="'+this.panels[i].v+'.clear();">');
  446.       document.write('<img width=16 height=16 src=arrowdown.gif border=0>');
  447.       document.write('</A></DIV>');
  448.       document.write('</DIV>')
  449.     }
  450.     //Opera bug (Clip!)
  451.     //op5 doesn't support layer clipping! so use top layers for panel caption
  452.     //and two top layers with background-color like page color to hide
  453.     //panel content outside of the outlookbar.
  454.     //op5 unterst黷zt kein Clip bei Layers! darum erzeugen wir drei top level
  455.     //layers f黵 die Panel 躡erschrift und zwei top Layers mit der gleichen
  456.     //Hintergrundfarbe wie die HTML Seite um den Panel Inhalt au遝rhalb des
  457.     //Outlook Bars zu verdecken!
  458.     if (bt.op5) {
  459.       //one layers for panel captions if op5
  460.       for (i=0;i<this.panels.length;i++) {
  461.         document.write('<DIV id='+this.name+'_panel'+i);
  462.         document.write('_c class=button onmouseOver="'+this.panels[i].v);
  463.         document.write('.clear();" onClick="'+this.v+'.showPanel('+i);
  464.         document.write(');" style="position:absolute; left:0; top:0; width:');
  465.         document.write((this.width-c)+'; height:'+(28-c)+';">');
  466.         document.write('<A href="#" ');
  467.         document.write('onClick="'+this.v+'.showPanel('+i+');this.blur();');
  468.         document.write('return false;" class=noLine><FONT color=black ');
  469.         document.write('class=noLine">'+this.panels[i].caption);
  470.         document.write('</FONT></A></DIV>')
  471.       }
  472.       //two layers to hide 'nonvisible' part of panel
  473.       //(op5 doesn't support clipping!)
  474.       //document.write('<DIV style="position:absolute; left:0; top:');
  475.       //document.write(this.height+'; height:300; width:'+this.width);
  476.       //document.write('; background-color:'+this.pagecolor+';"></DIV>');
  477.       //document.write('<DIV style="position:absolute; left:0; top:-300; ');
  478.       //document.write('height:300; width:'+this.width+'; background-color:');
  479.       //document.write(this.pagecolor+';"></DIV>');
  480.     }
  481.     document.write('</DIV>');
  482.   }
  483.   for (i=0;i<this.panels.length;i++) {
  484.     this.panels[i].obj=getObj(this.name+'_panel'+i);
  485.     if (!bt.ns4) {
  486.       this.panels[i].objc=getObj(this.name+'_panel'+i+'_c');
  487.       this.panels[i].objf=getObj(this.name+'_panel'+i+'_f');
  488.       this.panels[i].objm1=getObj(this.name+'_panel'+i+'_m1');
  489.       this.panels[i].objm2=getObj(this.name+'_panel'+i+'_m2');
  490.     }
  491.     this.panels[i].testScroll();
  492.   }
  493.   //activate last panel
  494.   //op5 dosen't support cookies!
  495.   //so get actual panel from url paramter
  496.   if (bt.op5) {
  497.     if (document.location.search=='')  {
  498.       this.showPanel(0);
  499.     }
  500.     else
  501.       this.showPanel(document.location.search.substr(1,1));
  502.   }
  503.   else {
  504.     //actual panel is saved in a cookie
  505.     if (document.cookie)
  506.       this.showPanel(document.cookie);
  507.     else
  508.       this.showPanel(0);
  509.   }
  510. }
  511. // ---------------------------------------------------------------------------
  512. // outlookbar function for ns4
  513. // ---------------------------------------------------------------------------
  514. function b_showPanel_ns4(nr) {
  515. var i
  516. var l
  517.   document.cookie=nr;
  518.   l = this.panels.length;
  519.   for (i=0;i<l;i++) {
  520.     if (i>nr) {
  521.       this.panels[i].obj.top=this.height-((l-i)*28)-1;
  522.     }
  523.     else {
  524.       this.panels[i].obj.top=i*28;
  525.     }
  526.   }
  527. }
  528. // ---------------------------------------------------------------------------
  529. // outlookbar function for ie4, ie5, ns5, op5
  530. // ---------------------------------------------------------------------------
  531. function b_showPanel(nr) {
  532. var i
  533. var l
  534. var o
  535.   document.cookie=nr;
  536.   this.aktPanel=nr;
  537.   l = this.panels.length;
  538.   for (i=0;i<l;i++) {
  539.     if (i>nr) {
  540.       this.panels[i].obj.style.top=this.height-((l-i)*28);
  541.       //Opera doesn't support clip:rect()!
  542.       //so hide non visible panels
  543.       //and move panel caption
  544.       if (bt.op5) {
  545.         this.panels[i].objf.style.visibility='hidden';
  546.         this.panels[i].objc.style.top=this.height-((l-i)*28);
  547.       }
  548.     }
  549.     else {
  550.       this.panels[i].obj.style.top=i*28;
  551.       //Opera doesn't support clip:rect()!
  552.       //so show visible panel
  553.       //and move panel caption
  554.       if (bt.op5) {
  555.         this.panels[i].objf.style.visibility='visible';
  556.         this.panels[i].objc.style.top=i*28;
  557.       }
  558.     }
  559.   }
  560. }
  561. //resize the Outlook Like Bar
  562. //IE4/5 & NS6 -> resize all layers (width & height)
  563. //op5         -> resize only height - reload on width change
  564. //ns4         -> reload on any change!
  565. //
  566. //if you change the width of a layer (style="text-align:center;") then
  567. //the content will not be moved!
  568. function b_resize(x,y,width,height) {
  569. var o
  570. var i
  571. var j
  572. var h
  573. var c=(bt.ns5)?6:0;
  574.    if (bt.ns4)
  575.      location.reload();
  576.    else {
  577.      if (bt.op5 && (width!=this.width))
  578.        if (location.href.indexOf('?')!=-1)
  579.          location.href=location.href.replace(/?./,"?"+this.aktPanel)
  580.        else
  581.          location.href= location.href+'?'+this.aktPanel;
  582.      else {
  583.        this.xpos=x;
  584.        this.yPos=y;
  585.        this.width=width
  586.        this.height=height
  587.        o=getObj(this.name);
  588.        o.style.left=x;
  589.        o.style.top=y;
  590.        o.style.width=width;
  591.        o.style.height=height;
  592.        o.style.clip='rect(0px '+this.width+'px '+this.height+'px 0px)';
  593.        h=this.height-((this.panels.length-1)*28)
  594.        for (i=0; i<this.panels.length; i++) {
  595.          o=getObj(this.name+'_panel'+i+'_c');
  596.          o.style.width=(this.width-c);
  597.          if (!bt.op5)
  598.            for (j=0;j<this.panels[i].img.length;j++) {
  599.              o=getObj(this.name+'_panel'+i+'_b'+j);
  600.              o.style.width=this.width;
  601.            }
  602.          this.panels[i].objm1.style.left=(this.width-20);
  603.          this.panels[i].objm2.style.top=(this.height-(this.panels.length)*28);
  604.          this.panels[i].objm2.style.left=(this.width-20);
  605.          this.panels[i].objf.style.width=this.width;
  606.          this.panels[i].obj.style.width=this.width
  607.          this.panels[i].obj.style.height=h
  608.          this.panels[i].obj.style.pixelHeight=h
  609.          this.panels[i].obj.style.clip='rect(0px '+this.width+'px '+h+'px 0px)';
  610.          this.panels[i].testScroll();
  611.        }
  612.      }
  613.      this.showPanel(this.aktPanel);
  614.    }
  615. }
  616. // ---------------------------------------------------------------------------
  617. // OutlookBar object for ie4, ie5, ns5, op5
  618. // ---------------------------------------------------------------------------
  619. function createOutlookBar(name,x,y,width,height,bgcolor,pagecolor) {
  620.   this.aktPanel=0;                        // last open panel
  621.   this.name=name                          // OutlookBar name
  622.   this.xpos=x;                            // bar x-pos
  623.   this.ypos=y;                            // bar y-pos
  624.   this.width=width;                       // bar width
  625.   this.height=height;                     // bar height
  626.   this.bgcolor=bgcolor;                   // bar background color
  627.   this.pagecolor=pagecolor;               // page bgcolor (op5!)
  628.   this.buttonspace=80                     // distance of panel buttons
  629.   this.panels=new Array()                 // OutlookBar panels
  630.   this.addPanel=b_addPanel;               // add new panel to bar
  631.   this.writeStyle=b_writeStyle;
  632.   this.draw=b_draw;                       // write HTML code of bar
  633.   if (bt.ns4)
  634.     this.showPanel=b_showPanel_ns4;       // make a panel visible (ns4)
  635.   else
  636.     this.showPanel=b_showPanel;           // make a panel visible (!=ns4)
  637.     
  638.   this.resize=b_resize;                   // resize Outlook Like Bar
  639.   this.v = name + "var";                  // global var of 'this'
  640.   eval(this.v + "=this");
  641.   return this
  642. }