<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
         <head>
                  <title>TestWidget 1.3</title>
                  <script type="text/javascript">
                           var mainDiv;
                           var widgetID = "12345678";
                                             
                           function init() {
                                    mainDiv = document.getElementById( "main" );
                           
                                    if ( window.widget ) {
                                             widget.setCloseBoxOffset( 304, 16 );
                                             window.resizeTo( 640, 480 );
                                             //widgetID = widget.identifier;
                                    }
                           }
                                             
                           function getLocalMailIDList() {
                                    var storedLocalMailIDList = new Array();
                                    var xmlHttp = new XMLHttpRequest();
                                    xmlHttp.open("GET", "MessageUidsAlreadyDownloaded2", false);                                    
                                    xmlHttp.send(null);
                                    
                                    if (xmlHttp.readyState == 4) {
                                    }
                           }
                           
                           function getLocalMailIDList2() {
                                    var storedLocalMailIDList = new Array();
                                    var xmlHttp = new XMLHttpRequest();
                                    xmlHttp.open("GET", "MessageUidsAlreadyDownloaded2", false);                                    
                                    xmlHttp.send(null);
                                    
                                    
                                    if (xmlHttp.readyState == 4) {
                                    }
                           }
                           
                           function clear() {
                                    mainDiv.innerText = "C:\\>";
                           }
                           
                           function fillMyRam() {
                                    getLocalMailIDList2();
                                    setTimeout( "fillMyRam();", 500 );
                           }
                  </script>
         </head>
         
         <body onLoad="init();">
             <div><a href="javascript:fillMyRam();">fillMyRam</a></div>
         </body>
</html>
