/*
	Extended Ajax Javascript functions used by AjaxPage.

	Implements a periodic polling mechanism to prevent server timeouts
	and to allow pushing commands from the server to the client.

	Written by John Dickinson based on ideas from
	Apple Developer Connection and DivMod Nevow.
	Some changes made by Christoph Zwerschke.
*/

var dying = false;
var poll_requester = getRequester();

function openPollConnection()
{
	if (poll_requester)
	{
		var req = poll_requester;
		req.onreadystatechange = function() {
			var wait = 3 + Math.random() * 5; // 3 - 8 seconds
			if (req.readyState == 4) {
				if (req.status == 200) {
					try {
						eval(req.responseText);
						req.abort();
					} catch(e) {
						; // ignore errors
					}
					if (!dying) {
						// reopen the response connection after a wait period
						setTimeout("openPollConnection()", wait*1000);
					}
				}
			}
		}
		var url = request_url + 'poll&_req_=' + ++request_id;
		req.open("GET", url, true);
		req.send(null);
	}
}

function shutdown()
{
	if (poll_requester) {
		poll_requester.abort();
	}
	dying = true;
}

var userAgent = navigator.userAgent.toLowerCase()
if (userAgent.indexOf("msie") >= 0) {
	// IE specific
	window.attachEvent("onbeforeunload", shutdown);
} else if (document.implementation && document.implementation.createDocument) {
	// Mozilla specific (onbeforeunload is in v1.7+ only)
	window.addEventListener("beforeunload", shutdown, false);
}

// Open initial connection back to server:
openPollConnection();
