*** empty log message ***
[m17n/m17n-lib-js.git] / xex2.js
diff --git a/xex2.js b/xex2.js
index 0d6ceb1..02ab5ce 100644 (file)
--- a/xex2.js
+++ b/xex2.js
@@ -1361,24 +1361,49 @@ Xex.LoadOld = function (server, file)
   return (obj.responseXML && obj.responseXML.firstChild);
 };
 
-Xex.Load = function (server, file, callback)
-{
-  var body = document.getElementsByTagName ('body')[0];
-  var iframe = document.createElement ('iframe');
+(function () {
+  var queue = new Array ();
+  var iframe;
+
   function receiver (event)
   {
-    //alert ('receiver called:'+event.data);
+    var request = queue.shift ();
+    alert ('received: ' + request[0]);
+    alert ('queue length = ' + queue.length);
     var parser = new DOMParser ();
     var xml = parser.parseFromString (event.data, 'text/xml');
     //alert ('parsed:'+xml);
-    window.removeEventListener ('message', receiver, false);
-    body.removeChild (iframe);
-    callback (xml.firstElement ());
+    request[1] (xml.firstElement (), request[2]);
+    alert ('queue length = ' + queue.length);
+    if (queue.length > 0)
+      {
+       document.getElementsByTagName ('body')[0].removeChild (iframe);
+       iframe.src = queue[0][0];
+       document.getElementsByTagName ('body')[0].appendChild (iframe);
+      }
+    else
+      {
+       window.removeEventListener ('message', receiver, false);
+       document.getElementsByTagName ('body')[0].removeChild (iframe);
+       alert ('queue cleared');
+      }
+    event.preventDefault ();
   };
-  Xex.xml = undefined;
-  window.addEventListener ('message', receiver, false);
-  iframe.src = server + '/loadxml.html#' + file;
-  //alert ('iframe created');
-  body.appendChild (iframe);
-};
+
+  Xex.Load = function (server, file, callback, arg)
+  {
+    var url = server + '/loadxml.html#' + file;
+    alert ('loading file:' + file);
+    queue.push ([url, callback, arg]);
+    if (queue.length == 1)
+      {
+       window.addEventListener ('message', receiver, false);
+       iframe = document.createElement ('iframe');
+       iframe.style.display = 'none';
+       iframe.src = url;
+       //alert ('iframe created');
+       document.getElementsByTagName ('body')[0].appendChild (iframe);
+      }
+  }
+}) ();