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');
- window.removeEventListener ('message', receiver, false);
- body.removeChild (iframe);
- callback (xml);
+ //alert ('parsed:'+xml);
+ 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);
+ }
+ }
+}) ();