function waitForEvent(event, elem) {
suspend {
var rv;
var listener_func = function(e) {
rv = e;
resume();
};
if (elem.addEventListener)
elem.addEventListener(event, listener_func, false);
else // IE special case
elem.attachEvent("on"+event, listener_func);
}
finally {
if (elem.removeEventListener)
elem.removeEventListener(event, listener_func, false);
else // IE special case
elem.detachEvent("on"+event, listener_func);
}
return rv;
}
function dump(message) {
document.getElementById("output").innerHTML = message;
}
while (true) {
var e = waitForEvent("click", document.getElementById('button1')) @
waitForEvent("click", document.getElementById('button2')) @
hold(5000);
if (e) {
var target = e.target;
if (!target) // IE specific
target = e.srcElement;
dump("You clicked button '"+target.id+"'");
}
else
dump("Click a button already!");
}