anchor.diff:            'status'    : true,
             'cookie'    : true,
             'xfbml'     : true,
  +          'version'   : 'v2.0',
             'oauth'     : true
             ${ authResponse != null ? ", 'authResponse': '$authResponse' " : "" }
             ${ _channelURL != null ? ", 'channelUrl': '$_channelURL' " : "" }
  
positive.code: 
      
      fqlQuery(fql, (JsObject resp) {
        _processQueryFriends(resp, functResponse) ;
      });
      
    }
    
    void _processQueryFriends( JsObject resp , void functResponse( List<Map<String,String>> friends )  ) {
      List<Map<String,String>> friends = [] ;
      
      var data = resp['data'] ;
      num sz = data.length ;
      
      for (int i = 0 ; i < sz ; i++) {
        var user = data[i] ;
        
        var uid = user['id'] ;
        if (uid == null) uid = user['uid'] ;
        
        String name = user['name'] ;
        
        friends.add( { 'uid': '$uid' , 'name': name } ) ;
      }
      
      functResponse(friends) ;
    }
    
  }
  
  //////////////////////////////////////////////////////////
  
  class FacebookLoginStatus {
    JsObject _obj ;
  
negative.code:   
    ///////////////////////////////////////////////////////////////
    
    void queryFriends( void functResponse( List<FacebookFriend> friends ) ) {
    
      /*
      api('/me/friends', (JsObject resp) {
        _processQueryFriends(resp, functResponse) ;
      }) ;
      */
      
      List<FacebookFriend> friendsList = [] ;
      
      api('/me/friends', (JsObject resp) {
        _processQueryFriends(resp, friendsList, (l) {
          
          api('/me/invitable_friends', (JsObject resp) {
            _processQueryFriends(resp, friendsList, functResponse) ;          
          });
          
        }) ;
      }) ;
      
    }
    
    void queryOnlineFriends( void functResponse( List<FacebookFriend> friends ) ) {
      
      String fql = "SELECT uid, name FROM user WHERE " +
          "online_presence IN ('active', 'idle') AND " +
  