code: function ( Pin, pinPosition ) {
  
  				Pin.options.pinId = _NextPinId++;
  				
  				if ( undefined === pinPosition ) {
  					pinPosition = -1;
  				}
  				if ( Pin.options.distance && 0 < Pin.options.distance ) {
  					pinPosition = -1;
  				}
  				if ( -1 !== pinPosition )
  				{
  					_Pins.splice ( pinPosition  , 0, Pin );
  				}
  				else {
  					var isStartPin = '28' === Pin.options.pinCategory.CategoryId;
  					var newPinDistance =  isStartPin ? 0 : ( Pin.options.distance ? Pin.options.distance : 0 );
  					if ( 0 < newPinDistance || isStartPin ) {
  						for ( var pinCounter = 0; pinCounter < _Pins.length; pinCounter ++ ) {
  							var currentPinDistance = '28' === _Pins [ pinCounter ].options.pinCategory.CategoryId ? 0 : ( _Pins [ pinCounter ].options.distance ? _Pins [ pinCounter ].options.distance : 0 );
  							if ( currentPinDistance >  newPinDistance )
  							{
  								_Pins.splice ( pinCounter  , 0, Pin );
  								pinPosition = pinCounter;
  								break;
  							}
  						}
  						if ( -1 === pinPosition ) {
  							_Pins.push ( Pin );
  							pinPosition = _Pins.length - 1;
  						}
  					}
  					else {
  						_Pins.push ( Pin );
  						pinPosition = _Pins.length - 1;
  					}
  				}
  				this.CallbackFunction ( );
  				_updateControl ( );
  				
  				return pinPosition;
  			}
docs: /*
  --- push ( Pin ) method ---
  
  this method add a pin to the collection
  
  Parameters :
  - Pin : the L.Marker.Pin object to add to the collection
  
  Return :
  - the position of the new pin in the pins collection (first position = 0)