var GEOSOCKET = (function(geosocket) {
		var _this = geosocket;

		geosocket._socket = null;
		geosocket._me = {
			_position : null,
			_username : null
		};
		geosocket._idNavigationWatch = null;


		geosocket.init = function(options){
			options = options || {};
			options.hostname = options.hostname || document.location.hostname;
			options.port = options.port || document.location.port;
			_this._me._username =  options.username || _this._me._username;
			_this._socket = io('//'+document.location.hostname+':'+document.location.port);
			_this._eventListener();
			_this._watchPosition();
		};


		geosocket._eventListener = function(){
			_this._onNewClient();
			_this._onClientLeft();
			_this._onCoordonneesBroadcast();
		}


		geosocket._watchPosition = function(callback){
			callback = callback || function(){};
			
			// Recuperation des coordonnees
			_this._idNavigationWatch = navigator.geolocation.watchPosition(function(position) {
				// Mise a jour des variables
				_this._me._position = position;
				// Broadcast the new coordinates
				_this._socket.emit('coordonneesClient',{
						pos : JSON.stringify({
							latitude : _this._me._position.coords.latitude,
							longitude : _this._me._position.coords.longitude
						}),
						name: _this._me._username
				});
				callback(position);
			},function(err) {console.warn('ERROR(' + err.code + '): ' + err.message);},
				{
					enableHighAccuracy: true,
					maximumAge: 0
				}
			);
		}

		geosocket.onWatchPosition = function(callback){
			navigator.geolocation.clearWatch(_this._idNavigationWatch);
			_this._watchPosition(callback);
		}


		// Un nouveau client vient de se connecter au serveur
		geosocket._onNewClient = function(callback){
			callback = callback || function(){};

			_this._socket.on('new_client', function(data) {
				// On se presente a ce client en lui envoyant notre position
				_this._socket.emit('present_to_new_client', {
					socketid : data.socketid, 
					pos : JSON.stringify({
						latitude : _this._me._position.coords.latitude,
						longitude : _this._me._position.coords.longitude
					}),
					name: _this._me._username
				});
				
				callback(data);
			});
		}

		geosocket.onNewClient = function(callback){
			_this._socket.off('new_client');
			_this._onNewClient(callback);
		}


		// Un client vient de partir
		geosocket._onClientLeft = function(callback){
			callback = callback || function(){};

			_this._socket.on('clientLeft', function(data) {
				callback(data);
			});
		}

		geosocket.onClientLeft = function(callback){
			_this._socket.off('clientLeft');
			_this._onClientLeft(callback);
		}


		// Un utilisateur vient de diffuser ses coordonnées
		geosocket._onCoordonneesBroadcast = function(callback){
			callback = callback || function(){};

			_this._socket.on('coordonneesBroadcast', function(data) {
				callback(data);
			});
		}

		geosocket.onCoordonneesBroadcast = function(callback){
			_this._socket.off('coordonneesBroadcast');
			_this._onCoordonneesBroadcast(callback);
		}


    return geosocket;
})(GEOSOCKET || {});

@@ -121,20 +121,92 @@
 ition : 
-null
+%7B%0A%09%09%09%09%09coords : %7B%0A%09%09%09%09%09%09latitude : null,%0A%09%09%09%09%09%09longitude : null%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D
 ,%0A%09%09%09_us
@@ -638,37 +638,42 @@
 er();%0A%09%09%09_this._
-watch
+getCurrent
 Position();%0A%09%09%7D;
@@ -745,34 +745,8 @@
 ();%0A
-%09%09%09_this._onClientLeft();%0A
 %09%09%09_
@@ -777,16 +777,42 @@
 cast();%0A
+%09%09%09_this._onClientLeft();%0A
 %09%09%7D%0A%0A%0A%09%09
@@ -898,20 +898,17 @@
 on()%7B%7D;%0A
-%09%09%09
 %0A
+
 %09%09%09// Re
@@ -1684,32 +1684,458 @@
 allback);%0A%09%09%7D%0A%0A%0A
+%09%09geosocket._getCurrentPosition = function(callback)%7B%0A%09%09%09callback = callback %7C%7C function()%7B%7D;%0A%0A%09%09%09navigator.geolocation.getCurrentPosition(function(position)%7B%0A%09%09%09%09_this._watchPosition();%0A%09%09%09%09callback(position);%0A%09%09%09%7D,function(err) %7Bconsole.warn('ERROR(' + err.code + '): ' + err.message);%7D,%7B%0A%09%09%09%09maximumAge:600000%0A%09%09%09%7D);%0A%09%09%7D%0A%0A%09%09geosocket.onGetCurrentPosition = function(callback)%7B%0A%09%09%09_this._getCurrentPosition(callback);%0A%09%09%7D%0A%0A%0A
 %09%09// Un nouveau 
@@ -2309,24 +2309,25 @@
 ion(data) %7B%0A
+%0A
 %09%09%09%09// On se
@@ -2459,17 +2459,16 @@
 ocketid,
- 
 %0A%09%09%09%09%09po
@@ -2645,20 +2645,16 @@
 %09%09%09%09%7D);%0A
-%09%09%09%09
 %0A%09%09%09%09cal

Update GEOSOCKET.js