*** empty log message ***
[m17n/m17n-lib-js.git] / xex.js
diff --git a/xex.js b/xex.js
index e5f9c84..ccd6e65 100644 (file)
--- a/xex.js
+++ b/xex.js
@@ -1351,7 +1351,7 @@ Xex.Zero = new Xex.IntTerm (0);
 Xex.One = new Xex.IntTerm (1);
 Xex.nil = new Xex.SymTerm ('nil');
 
-Xex.Load = function (server, file)
+Xex.LoadOld = function (server, file)
 {
   var obj = new XMLHttpRequest ();
   var url = server ? server + '/' + file : file;
@@ -1362,27 +1362,44 @@ Xex.Load = function (server, file)
 };
 
 (function () {
-  function getxml (event)
+  var queue = new Array ();
+  var iframe = null;
+
+  function receiver (event)
   {
+    var request = queue.shift ();
+    //alert ('received: ' + request[0]);
     var parser = new DOMParser ();
-    Xex.xml = parser.parseFromString (event.data, 'text/xml');
+    var xml = parser.parseFromString (event.data, 'text/xml');
+    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);
+      }
+    request[1] (xml.firstElement (), request[2]);
+    event.preventDefault ();
   };
 
-  Xex.LoadTesting = function (server, file)
-  {
-    var body = document.getElementsByTagName ('body')[0];
-    Xex.xml = undefined;
-    window.addEventListener ('message', getxml, false);
-    var iframe = document.createElement ('iframe');
-    iframe.src = server + '/loadxml.html#' + file;
-    alert ('iframe created');
-    body.appendChild (iframe);
-/*
-    while (! Xex.xml)
-      alert ('wait loading ' + file);
-    window.removeEventListener ('message', getxml, false);
-    body.removeChild (iframe);
-    return (Xex.xml.firstChild);
-*/
+  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);
+      }
   }
 }) ();
+