var req_uid=new Object;var req_base_url='/requestor.pl';var req_queue_online_status_update=new Object;function req_online_status(u){var os=get_online_status(u);if(os==undefined){req_queue_online_status_update[u]=1;return 0;}return os?1:0;}function queue_update_online_status_all(){var all=new Array();for(var u in req_queue_online_status_update){all.push(u);}req_queue_online_status_update=new Object;request_update_online_status(all);}function refresh_online_status_all(){var all_img=document.getElementsByTagName('img');for(var i=0;i<all_img.length;i++){var img=all_img[i];var id=img.id;if(!id||id.indexOf('onlsts-')!=0)continue;var uid=id.substr(7);var os=req_online_status(uid);if(os==undefined)continue;img.style.display=os?'':'none';}}function request_update_online_status(all_uid){var all_req=new Array();var all_online=new Object;for(var i=0;i<all_uid.length;i++){var uid=all_uid[i];var os=get_online_status(uid);if(os==undefined){all_req.push('o,'+uid);}else{all_online[uid]=os;}}if(all_req.length>0){gk_request_remote_data(req_base_url,0,req_remote_data_callback,all_req.join('\n'));}update_online_status_all(all_online);}function req_remote_data_callback(id,data){if(!data)return;var all_data=data.split('\n');if(all_data[0]!='requestor.1.0'){report_error('Bogus data received:\n'+data);return;}var all_online=new Object;var b_update_online_status=0;for(var i=1;i<all_data.length;i++){var got=all_data[i].split(',');if(!got[0])continue;if(got[0]=='o'){var uid=got[1];var os=to_int(got[2]);var expire=to_int(got[3])*1000;if(expire<=0)expire=60000;if(req_uid[uid]==undefined)req_uid[uid]=new Object;var r=req_uid[uid];r.online_status=os;r.online_status_expire=get_time()+expire;all_online[uid]=os;b_update_online_status=1;}else{report_error('Unknown tag: '+all_data[i]);}}if(b_update_online_status)update_online_status_all(all_online);}function update_online_status_all(all_online){var all_img=document.getElementsByTagName('img');for(var i=0;i<all_img.length;i++){var img=all_img[i];var id=img.id;if(!id||id.indexOf('onlsts-')!=0)continue;var uid=id.substr(7);var os=all_online[uid];if(os==undefined)continue;img.style.display=os?'':'none';}}function get_online_status(uid){var r=req_uid[uid];if(r==undefined)return undefined;var os=r.online_status;if(os==undefined)return undefined;if(r.online_status_expire<get_time())return undefined;return os?1:0;}function report_error(msg){gk_log_error(msg);}

