home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 February / CHIP_2_98.iso / software / pelne / optionp / iis4_03.cab / iihd.asp < prev    next >
Text File  |  1997-11-12  |  18KB  |  716 lines

  1. <%@ LANGUAGE=VBScript %>
  2. <%'Option Explicit %>
  3. <% Response.Expires = 0 %>
  4.  
  5. <% 
  6.  
  7.     ' This script is the main container for the admin..
  8.     ' It holds the client-cached tree list, stored in cachedList
  9.     ' in addition to a variety of global functions & customization
  10.     ' flags. This script gets loaded once for the admin and is
  11.     ' persistant throughout.
  12.  
  13. %>
  14.  
  15. <%
  16. '    strings for localization
  17. Const L_ISM_TEXT="Internet Service Manager"
  18. Const L_ACCESSDENIED_TEXT="Access Denied" 
  19. Const L_HELP_TEXT="Help"
  20. Const L_DOCS_TEXT="Documentation"
  21. Const L_ABOUT_TEXT="About..."
  22. Const L_MICROSOFT_TEXT="Go to www.microsoft.com"
  23. Const L_NOHELP_ERRORMESSAGE="Sorry, the help file is unavailable."
  24. Const L_NOTIMPLEMENTED_ERRORMESSAGE="This feature is not yet implemented."
  25.  
  26.  
  27. Dim browser, bgcolor
  28.  
  29. if Instr(Request.ServerVariables("HTTP_USER_AGENT"),"MSIE") then 
  30.     browser="ms" 
  31.     bgcolor="#FFCC00" 
  32. else
  33.     browser="ns"
  34.     bgcolor="#000000"
  35. end if
  36.  
  37. %>
  38.  
  39. <html>
  40. <head>
  41. <title><%= L_ISM_TEXT %></title>
  42.  
  43. <script language="JavaScript">
  44.  
  45.     // Create an instance of our Global Variables for reference by other frames...
  46.     Global=new globalVars();
  47.  
  48.     function helpBox(){
  49.         if (Global.helpFileName==null){
  50.             alert("<%= L_NOHELP_ERRORMESSAGE %>");
  51.         }
  52.         else{
  53.             thefile=Global.helpDir +Global.helpFileName+".htm";
  54.             window.open(thefile ,"Help","toolbar=no,scrollbars=yes,directories=no,menubar=no,width=375,height=500");
  55.         }
  56.     }
  57.  
  58.     function aboutBox() {
  59.         popbox=window.open("iiabout.asp","about","toolbar=no,scrollbars=yes,directories=no,menubar=no,width="+525+",height="+300);
  60.         if(popbox !=null){
  61.             if (popbox.opener==null){
  62.                 popbox.opener=self;
  63.             }
  64.         }
  65.  
  66.     }
  67.  
  68.     function popBox(title, width, height, filename){
  69.         thefile=(filename + ".asp");
  70.         thefile="iipop.asp?pg="+thefile;
  71.         <% if browser="ns" then %>
  72.             width=width +25;
  73.             height=height + 50;
  74.         <% end if %>
  75.  
  76.         popbox=window.open(thefile,title,"toolbar=no,scrollbars=yes,directories=no,menubar=no,width="+width+",height="+height);
  77.         if(popbox !=null){
  78.             if (popbox.opener==null){
  79.                 popbox.opener=self;
  80.             }
  81.         }
  82.     }
  83.  
  84.  
  85.     function globalVars(){
  86.  
  87.         // Sets the global variables for the script. 
  88.         // These may be changed to quickly customize the tree's apperance
  89.  
  90.         // Fonts
  91.         this.face="Helv,Arial";
  92.         this.fSize=1;
  93.  
  94.         // Spacing
  95.         this.vSpace=2;
  96.         this.hSpace=4;
  97.         this.tblWidth=500;
  98.         this.selTColor="#FFCC00";
  99.         this.selFColor="#000000";
  100.         this.selUColor="#CCCCCC";
  101.  
  102.         // Images
  103.         this.imagedir="images/";
  104.         this.appIcon = "app";        
  105.         this.spaceImg=this.imagedir  + "space.gif";
  106.         this.lineImg=this.imagedir  + "line.gif";
  107.         this.plusImg=this.imagedir  + "plus.gif";
  108.         this.minusImg=this.imagedir  + "minus.gif";
  109.         this.emptyImg=this.imagedir + "blank.gif";
  110.         this.plusImgLast=this.imagedir  + "plusl.gif";
  111.         this.minusImgLast=this.imagedir  + "minusl.gif";
  112.         this.emptyImgLast=this.imagedir + "blankl.gif";
  113.         this.stateImg=new Array();
  114.         this.stateImg[0]=this.imagedir + "stop.gif";
  115.         this.stateImg[1]=this.imagedir + "go.gif";
  116.         this.stateImg[2]=this.imagedir + "pause.gif";
  117.  
  118.         // Instant State
  119.         this.displaystate=new Array();
  120.         this.displaystate[0]="";
  121.         this.displaystate[2]="";        
  122.         this.displaystate[4]="(stopped)";        
  123.         this.displaystate[6]="(paused)";
  124.         
  125.         this.state=new Array();
  126.         this.state[4]="stopped";
  127.         this.state[2]="started";
  128.         this.state[1]="starting";
  129.         this.state[3]="stopping";        
  130.  
  131.         // ID of selected item
  132.         this.selId=0;
  133.         this.selName="";
  134.         this.selSType="";
  135.         this.selVType="";
  136.         
  137.         //Help
  138.         this.helpFileName="iipxmain.htm";
  139.         this.helpDir="http://<%= Request.ServerVariables("SERVER_NAME") %>/iishelp/iis/htm/core/"
  140.         
  141.  
  142.         // Other Flags
  143.         this.showState=false;    
  144.         this.dontAsk=false;
  145.         this.updated=false;
  146.         this.homeurl=top.location.href;
  147.         this.siteProperties = false;
  148.         this.working = false;
  149.     }
  150.  
  151.     function openLocation(){
  152.     
  153.         //opens the property sheet for the selected node,
  154.         //regardless of service type or node type. this
  155.         //script calls iiset.asp which sets the appropriate
  156.         //session variables for server side persistance throughout
  157.         //the property sheet
  158.                 
  159.         var path;
  160.         var sel=Global.selId;
  161.         Global.selName=nodeList[sel].title;
  162.         Global.selSType=nodeList[sel].stype;
  163.         Global.selVType=nodeList[sel].vtype;
  164.  
  165.         top.body.iisstatus.location.href=("iistat.asp?thisState=Loading");
  166.  
  167.         path="stype=" + Global.selSType;
  168.         path=path + "&vtype=" + Global.selVType;
  169.         path=path + "&title=" +escape(nodeList[sel].title);
  170.  
  171.         if (nodeList[sel].vtype=="server"){
  172.             path=path + "&spath=" + escape(nodeList[sel].path);
  173.             path=path + "&dpath=" + escape(nodeList[sel].path) + "/Root";
  174.         }
  175.         else{
  176.             path=path + "&spath=";        
  177.             path=path + "&dpath=" + escape(nodeList[sel].path);            
  178.         }
  179.  
  180.         page="iiset.asp?"+path; 
  181.         
  182.         //iiset.asp sets the serverside session variables...
  183.         
  184.         top.connect.location.href=(page);    
  185.     }
  186.  
  187.  
  188.     function sortOrder(a,b){
  189.  
  190.         x=a.id - b.id
  191.  
  192.         return x
  193.     }
  194.     
  195.     function sortList(){
  196.         nodeList.sort(sortOrder);
  197.     }
  198.  
  199.     function selectItem(item){
  200.         nodeList[Global.selId].selected=false;
  201.         Global.selId=item;
  202.         nodeList[item].selected=true;
  203.     }
  204.  
  205.     function insertNode(title,caption,parent,vtype,stype){
  206.  
  207.         //add a new node to the client-cached list
  208.         
  209.         var nodepath;
  210.         var indexnum=nodeList.length;
  211.         var Nextid=parent+1;
  212.  
  213.         if (nodeList[parent].vtype=="server"){
  214.             nodepath=nodeList[parent].path + "/Root/" + title;            
  215.         }
  216.         else{
  217.             if (nodeList[parent].vtype=="comp"){
  218.                 if (stype == "www"){
  219.                     nodepath=nodeList[parent].path + "/W3SVC/" + title;
  220.                 }
  221.                 else{
  222.                     nodepath=nodeList[parent].path + "/MSFTPSVC/" + title;                    
  223.                 }
  224.             }
  225.             else{
  226.                 nodepath=nodeList[parent].path + "/" + title;
  227.             }
  228.         }
  229.         title=title;
  230.  
  231.         while ((nodeList.length > Nextid) && (nodeList[Nextid].parent >=parent)) {
  232.             if(nodeList[Nextid].parent==parent){
  233.                 if(nodeList[Nextid].title > title){
  234.                     break;
  235.                 }
  236.             }
  237.             Nextid=Nextid +1;
  238.         }
  239.  
  240.         if (nodeList.length <=Nextid){
  241.             var newid=nodeList.length;
  242.         }
  243.         else{
  244.             var newid=nodeList[Nextid].id;
  245.         }
  246.  
  247.         nodeList[indexnum]=nodeList[parent].addNode(new listObj(indexnum,caption,nodepath,vtype,4));
  248.         nodeList[indexnum].isCached=true;
  249.         nodeList[indexnum].id=newid;        
  250.         for (var i=newid; i < indexnum; i++) {
  251.             nodeList[i].id=nodeList[i].id + 1;        
  252.             if (nodeList[i].parent >=nodeList[indexnum].id){
  253.                 nodeList[i].parent=nodeList[i].parent +1;
  254.             }    
  255.         }
  256.  
  257.         nodeList[parent].open=true;
  258.         
  259.         nodeList[0].sortList();
  260.         nodeList[0].markTerms();
  261.              
  262.         
  263.         selectItem(newid);
  264.  
  265.         top.body.list.location.href="iisrvls.asp";
  266.     }
  267.     
  268.     function browseItem() {
  269.         popBox('Browse',640,480, nodeList[Global.selId].loc);
  270.     }
  271.  
  272.     function deleteItem() {
  273.             // marks items in the client cached list as deleted...
  274.             nodeList[Global.selId].deleted=true;
  275.             if (Global.selId+1 !=listLength){
  276.                 deleteChildren(Global.selId);
  277.             }
  278.             markTerms();
  279.             top.body.list.location="iisrvls.asp";
  280.     }
  281.  
  282.     function deleteChildren(item){
  283.         var z=item+1;
  284.         while (nodeList[z].parent >=item) {
  285.             nodeList[z].deleted=true;
  286.             z=z+1;
  287.             if(z >=nodeList.length){
  288.                 break;
  289.             }
  290.         }            
  291.     }
  292.  
  293.  
  294.     function deCache(){
  295.  
  296.         //marks a node as uncached (forcing a recache when expanded)
  297.         //and marks all child nodes as deleted
  298.  
  299.         sel=Global.selId;
  300.         nodeList[sel].isCached=false;
  301.         nodeList[sel].open=false;
  302.         if (sel+1 !=listLength){
  303.             deleteChildren(sel);
  304.         }
  305.         markTerms();
  306.     }
  307.  
  308.  
  309.     function markTerms(){
  310.     
  311.         //marks cached list items as being a terminater (ie, having no siblings)
  312.         //this forces an "end" gif in the tree view...
  313.         
  314.         var i
  315.         listLength=nodeList.length; 
  316.         for (i=0; i < listLength; i++) {
  317.             nodeList[i].lastChild=isLast(i);
  318.         }
  319.     }
  320.  
  321.     function isLast(item){
  322.         var i;
  323.         last=false;
  324.         if (item+1==listLength){
  325.             last=true;
  326.         }
  327.         else{
  328.             if (nodeList[item].parent==null){
  329.                 last=true;
  330.                 for (i=item+1; i < listLength; i++) {
  331.                     if (nodeList[i].parent==null){
  332.                         last=false;
  333.                         break;
  334.                     }
  335.                 }
  336.             }
  337.             else{
  338.                 last=true;
  339.                 var y=item+1;
  340.                 while(nodeList[y].parent >=nodeList[item].parent){
  341.                     if(nodeList[y].parent==nodeList[item].parent){
  342.                         if(!nodeList[y].deleted){
  343.                             last=false;
  344.                             break;
  345.                         }
  346.                     }
  347.     
  348.                     y=y+1;
  349.     
  350.                     if ((y)==listLength){
  351.                         break;
  352.                     }
  353.                 }
  354.             }
  355.         }
  356.         return last;
  357.     }
  358.  
  359.     function addNode(childNode){
  360.     
  361.         //adds a new node to the tree, setting some default parameters
  362.     
  363.         childNode.parent=this.id;
  364.         childNode.level=this.level +1;
  365.  
  366.         dir="images/"
  367.         if (childNode.vtype=="vdir"){
  368.             childNode.loc=nodeList[this.id].loc + childNode.title+"/";
  369.             childNode.icon=dir+ "vdir";
  370.         } 
  371.         else{
  372.             if (childNode.vtype=="dir"){
  373.                 childNode.loc=nodeList[this.id].loc + childNode.title+"/";
  374.                 childNode.icon=dir + "dir";
  375.             }
  376.             else{
  377.                 if (childNode.stype=="www"){    
  378.                     childNode.loc="http://"+childNode.title+"/";
  379.                     childNode.icon=dir +"www";
  380.                     
  381.                 }
  382.                 
  383.                 if (childNode.stype=="ftp"){
  384.                     childNode.loc="ftp://"+childNode.title+"/";
  385.                     childNode.icon=dir +"ftp";
  386.                 }
  387.             }
  388.         }
  389.  
  390.         return childNode;
  391.     }
  392.  
  393.     function connect(){
  394.         serverurl=prompt("Please enter the URL of the server you wish to connect to:", "http://<%= Request.ServerVariables("SERVER_NAME") %>/iisadmin/")
  395.         if (serverurl !=""){
  396.             page="iicnct.asp";
  397.             top.body.iisstatus.location="iistat.asp?thisState=Loading";
  398.             top.connect.location=page;
  399.         }
  400.     }
  401.  
  402.     function cache(item){
  403.         page="iicache.asp?sname="+escape(nodeList[item].path)+"&Nextid="+nodeList.length+"¤tid="+item;
  404.         <% if (browser<>"ns") then %>
  405.         top.body.iisstatus.location.href="iistat.asp?thisState=Loading";
  406.         <% end if %>
  407.         top.connect.location.href=page;
  408.     }
  409.     
  410.     function loadPage(){
  411.         top.body.location.href='iibody.asp';
  412.     }    
  413.     
  414.     
  415.     function inheritenceItem(property, path){
  416.         this.property = property;
  417.         this.path = path;
  418.     }
  419.     
  420.     function iListsortOrder(a,b){
  421.         x=((a.property + a.path) - (b.property + b.path));
  422.         return x
  423.     }
  424.     
  425.  
  426.     function listObj(id, title, path,vtype,state){
  427.  
  428.         // This is the object that represents each line item 
  429.         // In the tree structure.
  430.  
  431.         // ID is the id refered to by the parent property
  432.         // title is the text string that appears In the list
  433.         // parent is the ID of the parent list item
  434.         // level is the depth of the list item, 0 being the furthest left on the tree
  435.         // href is the location to open when selected
  436.         // open is a flag that determines whether children are displayed
  437.         // state is a flag to determine the state (4=stopped, 2=running)
  438.         // selected is an interenal flag
  439.         // openLocation is the function that opens the href file In a frame
  440.         //sortby will change to reflect the new sort order when a new item is added to the list.
  441.  
  442.         this.id=id;
  443.         this.title=title;
  444.         this.path=path;
  445.         this.keytype="";
  446.         this.fspath="";
  447.         this.err="";
  448.     
  449.     
  450.         this.stype="";
  451.         
  452.         if (path.indexOf("W3SVC") !=-1){
  453.             this.stype="www";
  454.         }
  455.  
  456.         if (path.indexOf("FTPSVC") !=-1){
  457.             this.stype="ftp";
  458.         }
  459.         
  460.  
  461.         this.vtype=vtype;
  462.  
  463.  
  464.         this.open=false;
  465.         this.state=state;
  466.         this.displaystate = Global.displaystate[state];
  467.         this.isApp = false;
  468.         this.isCached=false;
  469.         this.isWorkingServer=false;
  470.  
  471.         this.parent=null;
  472.         this.level=1;
  473.         this.loc="http://"+this.title;
  474.         dir="images/";
  475.  
  476.         this.icon=dir +"comp";
  477.  
  478.         this.href="blank.htm";
  479.         this.deleted=false;
  480.         this.selected=false;
  481.         this.lastChild=false;
  482.  
  483.         //methods
  484.         this.openLocation=openLocation;
  485.         this.addNode=addNode;
  486.         this.insertNode=insertNode;
  487.         this.deleteItem=deleteItem;
  488.         this.deCache=deCache;
  489.         this.browseItem=browseItem;
  490.         this.markTerms=markTerms;
  491.         this.cache=cache;
  492.         this.connect=connect;
  493.         this.sortList=sortList;
  494.  
  495.         }
  496.  
  497.  
  498.     // Create the nodeList array, and fill with the objects.
  499.     // The array items will be displayed In the id # order,
  500.     // as Jscript has limited array sorting capabilities.
  501.     // Children should always follow their parent item.
  502.  
  503.     nodeList=new Array();
  504.     nodeList[0]="";
  505.     
  506.     // Create a blank array for our set data path inheritence list
  507.     inheritenceList = new Array();    
  508.  
  509.     <% 
  510.  
  511.     On Error Resume Next 
  512.     Dim newid, computer, thisinstance, currentADsObj, FileSystem
  513.     Dim thisname
  514.     
  515.     computer="localhost"
  516.     thisinstance=Request.ServerVariables("INSTANCE_ID")
  517.  
  518.     if Session("isAdmin") then
  519.  
  520.          %>
  521.         //the localhost
  522.         nodeList[0]=new listObj(0,"<%= Request.ServerVariables("SERVER_NAME") %>","IIS://<%= computer %>", "comp",1);
  523.  
  524.         nodeList[0].isCached=true;    
  525.         nodeList[0].open=true;
  526.         nodeList[0].selected=true;
  527.  
  528.         <% 
  529.         newid=1
  530.  
  531.          %>//FTPSVC<% 
  532.         Set currentADsObj=GetObject("IIS://" & computer & "/MSFTPSVC") 
  533.         addInstances currentADsObj,0,"server"
  534.  
  535.          %>//W3SVC<% 
  536.         Set currentADsObj=GetObject("IIS://" & computer & "/W3SVC") 
  537.         addInstances currentADsObj,0,"server"    
  538.         
  539.     else
  540.         Set FileSystem=CreateObject("Scripting.FileSystemObject")
  541.         Set currentADsObj=GetObject("IIS://" & computer & "/W3SVC/" & thisInstance)
  542.         thisname=currentADsObj.ServerComment
  543.         if thisname="" then
  544.             thisname="[Web Site #" & currentADsObj.Name & "]"
  545.         end if
  546.          %>
  547.         //the instance
  548.         nodeList[0]=new listObj(0,"<%= thisname %>","IIS://<%= computer %>/W3SVC/<%= thisinstance %>", "server",2);
  549.         nodeList[0].isWorkingServer=false;    
  550.         nodeList[0].isCached=true;    
  551.         nodeList[0].open=true;
  552.         nodeList[0].icon="images/www";
  553.         nodeList[0].loc="http://<%= Request.ServerVariables("SERVER_NAME") %>/"; 
  554.  
  555.         <% 
  556.         newid=1
  557.  
  558.         addNodes currentADsObj,0,"vdir"
  559.     end if
  560.  
  561.     Sub addInstances(Container, parentid, vtype)
  562.         On Error Resume Next
  563.         Dim thisname, Child, thisid, thisstate
  564.         For Each Child In Container
  565.             if Instr(Child.KeyType,"Server") <> 0 then
  566.                 thisid=newid
  567.                 thisname=Child.Name
  568.                 thisstate=""
  569.                 thisname=Child.ServerComment
  570.                 if thisname="" then
  571.                     if Instr(Child.KeyType,"Ftp") <> 0 then
  572.                         thisname="[FTP Site #" & Child.Name & "]"                    
  573.                     else
  574.                         thisname="[Web Site #" & Child.Name & "]"
  575.                     end if
  576.                 end if
  577.                 thisstate=Child.ServerState                    
  578.     
  579.                 if err=0 then
  580.                     SetJscriptObj thisname, Child.ADsPath,parentid, vtype, thisstate, false, "",False
  581.                     if Child.Name=Request.ServerVariables("INSTANCE_ID") then
  582.                         SetWorkingInstance thisid
  583.                     end if
  584.                 end if
  585.             end if 
  586.             'this child may have err'd but we need to enum the rest anyway, so we clear our error...
  587.             err.Clear
  588.  
  589.         Next
  590.     End Sub
  591.  
  592.     Sub addNodes(Container, parentid, vtype)
  593.         On Error Resume Next    
  594.         Dim thisname, isApp, thisid, thisstate, thisroot, approot
  595.         
  596.         For Each Child In Container
  597.             if Instr(Child.KeyType, "VirtualDir") <> 0 then
  598.     
  599.                 thisid=newid
  600.                 thisname=Child.Name
  601.                 thisstate=2
  602.                 
  603.                 isApp = False
  604.                 approot=LCase(Child.AppRoot)
  605.                 if len(approot) <> 0 then
  606.                     thisroot = LCase(Child.ADsPath)
  607.                     approot = Mid(approot,Instr(approot,"w3svc/")+1)
  608.                     thisroot = Mid(thisroot,Instr(thisroot,"w3svc/")+1) & "/"        
  609.                     if thisroot=approot then
  610.                         isApp = True
  611.                     end if
  612.                 end if
  613.                 
  614.                 
  615.                 if UCase(thisname) <> "ROOT" then 
  616.     
  617.                     SetJscriptObj thisname, Child.ADsPath, parentid, vtype, thisstate, true, Child.Path, isApp
  618.     
  619.                     addNodes Child, thisid, "vdir"
  620.                     addDirs Child.Path, Child.ADsPath, thisid, "dir"
  621.                 else
  622.     
  623.                     addNodes Child, parentid, "vdir"
  624.                     addDirs Child.Path, Child.ADsPath, parentid, "dir"    
  625.                 end if
  626.             end if 
  627.         Next
  628.     End Sub
  629.  
  630.     Sub addDirs(path, adspath, parentid, vtype)
  631.     On Error Resume Next    
  632.     Dim thisid,thisname,thisstate,i,f, thispath
  633.  
  634.     if Instr(UCase(adspath),"W3SVC") <> 0   then     
  635.         if path <> "" then 
  636.             if Left(path,2) <> "\\" then
  637.                  If FileSystem.FolderExists(path) Then    
  638.                      Set f=FileSystem.GetFolder(path)
  639.                      For Each i In f.SubFolders
  640.                           thisid=newid
  641.                          thisstate=2
  642.                          thispath=adspath & "/" & i.Name
  643.                          SetJscriptObj i.Name,thispath, parentid, vtype, thisstate, true,i, false
  644.                           if err=0 then
  645.                              addDirs i, thispath, thisid, "dir"
  646.                          end if
  647.                     Next
  648.                  End If
  649.             end if
  650.         end if
  651.     end if
  652.  
  653.     End Sub
  654.  
  655.  
  656.     Sub SetJscriptObj(caption, path, parentid, vtype,state, cached,fspath,isApp)
  657.          %>
  658.         nodeList[<%= newid %>]=nodeList[<%= parentid %>].addNode(new top.title.listObj(<%= newid %>,"<%= caption %>","<%= path %>","<%= vtype %>",<%= state %>));
  659.         <% if cached then %>
  660.             nodeList[<%= newid %>].isCached=true;
  661.         <% else %>
  662.             nodeList[<%= newid %>].isCached=false;
  663.         <% end if %>
  664.         <% if isApp then %>
  665.             nodeList[<%= newid %>].icon = Global.imagedir + "app";
  666.             nodeList[<%= newid %>].isApp = true;
  667.         <% end if %>
  668.         nodeList[<%= newid %>].fspath="<%= replace(fspath,"\","\\") %>";
  669.  
  670.         <% 
  671.         newid=newid +1
  672.     End Sub
  673.     
  674.     Sub SetWorkingInstance(thisid)
  675.         %>
  676.         nodeList[<%= thisid %>].isWorkingServer=true;
  677.         <%
  678.     End Sub
  679.  %>
  680.  
  681.     markTerms();
  682.  
  683. </script>
  684.  
  685. </head>
  686.  
  687. <body text="#FFFFFF" bgcolor="<%= bgcolor %>" topmargin="0" leftmargin="0" onload="loadPage();">
  688.  
  689. <table width="100%" cellpadding="0" cellspacing="0" border="0" align="LEFT">
  690.     <tr>
  691.         <td bgcolor="#000000"> <img src="images/ismhd.gif" vspace="7" border="0" alt="<%= L_ISM_TEXT %>" width="285" height="15"></td>
  692.         <td align="right" bgcolor="#000000" valign="middle"><font color="#FFFFFF">
  693.             <a href="javascript:aboutBox()"><img height="16" width="16" src="images/about.gif" alt="<%= L_ABOUT_TEXT %>" border="0" vspace="3" hspace="4"></a>
  694.             <a href="http://<%= Request.ServerVariables("SERVER_NAME") %>/iishelp/iis/misc/" target="window"><img height="16" width="16" src="images/doc.gif" alt="<%= L_DOCS_TEXT %>" border="0" vspace="3" hspace="4"></a>
  695.             <a href="javascript:helpBox();"><img height="16" width="16" src="images/help.gif" border="0" vspace="3" hspace="4" alt="<%= L_HELP_TEXT %>"></a>
  696.             <a href="http://www.microsoft.com/" target="_parent"><img src="images/logo.gif" border="0" vspace="3" hspace="2" alt="<%= L_MICROSOFT_TEXT %>" width="80" height="15"></a></font>
  697.         </td>
  698.     </tr>
  699.  
  700. <% if (browser="ns") then %>
  701.     <tr>
  702.         <td bgcolor="#FFCC00" colspan="2"> </td>
  703.     </tr>
  704. <% end if %>
  705.  
  706. </table>
  707. <form name="hiddenform">
  708.     <input type="hidden" name="slash" value="\">
  709. </form>
  710.  
  711. </body>
  712. </html>
  713.  
  714.  
  715.  
  716.