/**
 * @author iPrior
 */

function getDisplayUser(){
	try
	{
		var objList = document.getElementsByClassName('last_act');
	    var count = objList.length;
	    var usersID = new Array();
	    for (var i = 0; i < count; i++) {
	        var obj = objList[i];
	        var id = obj.getAttribute('id');
	        var reg = /uid_/;
	        if (reg.test(id)) {
				usersID[usersID.size()] = new xmlrpcval(parseInt(id.replace(reg, '')), 'i4');
	        }
	    }
		
		if (usersID.size()) {
			requestStatusUser(usersID);
		}
	}
	catch(err) { void(0);	}	
	return;
}

addLoadEvents(getDisplayUser);

/**
 * Функция отправляет запрос к серверу, передавая массив с ID пользователей
 * @param {Array} arrayUsersID - Массив ID пользователей на странице
 */
function requestStatusUser(arrayUsersID) {
	var params = new xmlrpcval();
	if (params.addArray(arrayUsersID) == 0)
		throw 'Cannot add array to params';
		
	var client = new xmlrpc_client('/xmlrpc/', window.location.host);
	var msg = new xmlrpcmsg('isOnline');
	msg.addParam(params);

	var ret = client.send(msg);
	if (ret.faultCode())
		throw ret.faultString() + ' (' + ret.faultCode() + ')';
	
	if (ret.value().kindOf() != 'array')
		throw 'Invalid kind of return value (' + ret.value().kindOf() + ')';
	
	// тут вызываем thisUserOnLine и передаем ему массив пользователей онлайн
	var arrOnline = new Array();
	var arr = ret.value();
	var arraySize = arr.arraySize();
	for (var i=0; i < arraySize; i++)
	{
		var val = arr.arrayMem(i);
		arrOnline[i] = val.scalarVal();
	}
	
	setOnLine(arrOnline);
}

/**
 * Функция меняет картинку с оффлайн на онлайн
 * @param {Array} array - Массив ID пользователей онлайн, который вернул сервер
 */
function setOnLine(array) {
	for (var i=0; i<array.size(); i++) {
		if (!$('uid_'+array[i])) continue;
		$('uid_'+array[i]).update('online');
		$('uid_'+array[i]).setStyle({color: 'green'});
	}
}
