var eUserType = { Self: 0, User: 1, Group: 2 };
function user( _id, _name, _type, _avatar ) {
this.id = _id;
this.name = _name;
this.type = _type;
this.av = _avatar;
this.image = null;
this.lat = null;
this.lng = null;
if( !this.av || this.av == '' ) this.av = 'genav.gif';
}
user.prototype = {
getImage: function() {
if( !this.image ) {
var d = new Date();
this.image = new Image();
//this.image.onabort = this.image.onerror = function() { this.src = './avatars/genav.gif'; }
if( this.type == eUserType.Group ) this.image.src = 'image.php?gid=' + this.id + '&' + d.getFullYear() + d.getMonth() + d.getDate();
else this.image.src = 'image.php?id=' + this.id + '&' + d.getFullYear() + d.getMonth() + d.getDate();
}
return this.image.cloneNode( true );
}
}
var usrMgr = new userManager();
function userManager(){
this.loaded = false;
this.users = [];
this.groups = [];
this.onLoad = null;
this.av = null;
}
userManager.prototype.getByID = function( _id ){
var res = this.getUserByID( _id );
if( !res ) res = this.getGroupByID( _id );
return res;
}
userManager.prototype.getUserByID = function( _id ){
_id = parseInt( _id, 10 );
for( var i = 0; i < this.users.length; i++ ){
if( this.users[ i ].id == _id ) return this.users[ i ];
}
return new user( _id, 'UNKNOWN USER', eUserType.User );
}
userManager.prototype.getGroupByID = function( _id ){
_id = parseInt( _id, 10 );
for( var i = 0; i < this.groups.length; i++ ){
if( this.groups[ i ].id == _id ) return this.groups[ i ];
}
return new user( _id, 'UNKNOWN GROUP', eUserType.Group );
}
userManager.prototype.retrieveUsers = function(){
this.loaded = false;
var o = new ajaxobject2();
o.create( this, this.loadUsers, eAjaxModes.Get, 'wheriz.php?get=users', '' );
o.request();
}
/* List management
var l = ge( "users" );
if( vv.length > 0 ){
if( users ) delete users;
users = new Array();
for( var j = 0; j < l.options.length; j++ )
l.remove( j );
for( var k = 0; k < vv.length; k++ ){
var t = ga( vv[ k ], 'name' );
var opt = document.createElement( 'option' );
opt.text = t;
try{
l.add( opt, null );
} catch( e ){
l.add( opt );
}
*/
userManager.prototype.loadUsers = function( _obj ){
_obj.thisPtr.users.clear();
var response = _obj.http_request.responseXML.documentElement;
_obj.thisPtr.av = ga( gfc( response ), 'image' );
var uid = ga( response, 'id' );
_obj.thisPtr.users.push( new user( uid, loc_js.me, eUserType.Self ) );
var vv = gds( response, 'user' );
if( vv.length > 0 && _obj.thisPtr ){
for( var k = 0; k < vv.length; k++ ){
var vi = vv[ k ];
var t = ga( vi, 'name' );
var u = new user( ga( vi, 'id' ), t, eUserType.User, ga( vi, 'image' ) );
u.city = ga( vi, 'city' );
u.eid = ga( vi, 'eid' );
u.lat = parseFloat( ga( vi, 'lat' ) );
u.lng = parseFloat( ga( vi, 'lng' ) );
u.sector = parseInt( ga( vi, 'sector' ), 10 );
u.te = new wTimestamp( parseInt( ga( vi, 'te' ), 10 ), 0, null );
_obj.thisPtr.users.push( u );
}
}
var vv = gds( response, 'group' );
if( vv.length > 0 && _obj.thisPtr ){
_obj.thisPtr.groups.clear();
for( var k = 0; k < vv.length; k++ ){
var t = ga( vv[ k ], 'name' );
_obj.thisPtr.groups.push( new user( ga( vv[ k ], 'id' ), t, eUserType.Group, '' ) );
}
}
_obj.thisPtr.loaded = true;
if( _obj.thisPtr.onLoad ) _obj.thisPtr.onLoad();
}