Major changes to webserver backend. All socket functions are abstracted to allow support for stream_* which seems to be both more widely supported and better at handling blocking and timeouts, at the cost of a small bit of speed. Keep-Alive times out properly and thanks to a bit of IPC code from stream_create_pair(), zombie children are mostly eliminated by proper pcntl_wait() being called when a child shuts down normally, and children die within 0.2sec if the parent receives a SIGTERM or SIGINT, even if the children are waiting on the socket.
function getScrollOffset()
{
var position;
if (self.pageYOffset)
{
position = self.pageYOffset;
}
else if (document.documentElement && document.documentElement.scrollTop)
{
position = document.documentElement.scrollTop;
}
else if (document.body)
{
position = document.body.scrollTop;
}
return position;
}
var fix_scroll = function()
{
var div = document.getElementById('playbar');
div.style.top = ( String(getScrollOffset()) ) + 'px';
}
window.onscroll = fix_scroll;