<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Feature Details</title>
<link rel="stylesheet" type="text/css" href="$HTMLBase$/default.css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgColor="#FFFFFF" style="margin:0;" link="#000080">
$JavaScript$

<script language="JavaScript">
var infosetTitle = "$label$";
</script>

<div style="position:absolute; left:0; top:0; ">
     <span style="position: absolute; left: 0; top: 0; z-index: -1">
     <img border="0" src="$HTMLBase$/images/banner.gif" width="604" height="45"  margin=0>
     </span>
</div>

<div id="bannerTitle" style="position:absolute; left:10; top:10; font-size: 12pt; font-weight:bold;">
  <script language="JavaScript"> 
	 if (document.getElementById)
	 {
	 	// code for IE5 and NS6
	 	var div = document.getElementById("bannerTitle");
	 	if (div)
	 	{
	 		//div.document.write(infosetTitle);
	 		//div.document.close();
	 		div.appendChild(document.createTextNode(infosetTitle));
	 	}
	 }
     else if (document.all)
     {
         // code for IE4 (even though we require IE5...)
         var div = document.all("bannerTitle");
         if (div)
             div.document.write(infosetTitle); 
     }
     else if (document.layers) 
     {
     	 // code for NS4
     	 if (window.document.bannerTitle)
              window.document.bannerTitle.document.write(infosetTitle);
     }
  </script>
</div>

<p>&nbsp;</p>

<p>&nbsp;</p>
<div style="margin-left: 10; margin-right: 10;">
<table border="0" width="100%">
  <tr>
    <td width="50%" nowrap><b><font color="#006699">Provider<br>
      </font></b>$provider$
      <p><b><font color="#006699">Version<br>
      </font></b>$version$</p>
      <p><b><font color="#006699">Size<br>
      </font></b>$size$</p>
    </td>
    <td valign="middle" align="center"><img src="$image$"></img></td>
  </tr>
</table>
<p><b><font color="#006699">Description<br>
</font></b>$description$</p>
<SCRIPT>
   if (infoURL!=null)
      document.write('<p><a href="'+infoURL+'">More Info</a>');
</SCRIPT>
<form method="POST" action="--WEBBOT-SELF--">
  <!--webbot bot="SaveResults" U-File="update://index.html" S-Format="HTML/BR"
  S-Label-Fields="TRUE" B-Reverse-Chronology="FALSE" S-Builtin-Fields
  S-Form-Fields -->
  <div align="right">
    <table border="0" width="182">
      <tr>
        <td width="205" valign="middle" align="center"><input type="button" value="Checklist" name="Schedule" style="font-size: 8pt; margin:0;" onClick="location.replace('update://action/uninstall?key=value+key2=value')" class="body"></td>
        <td width="90" valign="middle" align="center"><font size="1"><input type="button" value="Install Now!" name="InstallNow" style="font-size: 8pt;" onClick="location.replace('update://index.html')"></font></td>
      </tr>
    </table>
  </div>
  <p align="right">&nbsp;</p>
</form>
<p>&nbsp;</p>
</div>
</body>
</html>
