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(); }