var SignalBus = {

  signals: {},

  listen: function ( signal, fn ) {
    if( !this.signals[signal] ) {
      this.signals[signal] = new Array();
    }
    this.signals[signal].push( fn );
  },

  dispatch: function ( signal, params ) {
    if( this.signals[signal] ) {
      for( var i =0; i<this.signals[signal].length; i++ ) {
        this.signals[signal][i]( params );
      }
    }
  },

  remove: function ( signal, fn ) {
    if( !this.signals[signal] ) {
      var tmp = new Array();
      for( var i =0; i<this.signals[signal].length; i++ ) {
        if( this.signals[signal][i] != fn ) {
          tmp.push( this.signals[signal][i] );
        }
      }
      this.signals[signal] = tmp;
    }
  }
}
var lastSignalsRefresh = '';

function signalsRefreshSend() {
	
	paramObject = new Object();
	paramObject['lastRefresh'] = lastSignalsRefresh;
	
	outObject = new Object();
	outObject['module'] = 'check-for-new-signals';
	outObject['action'] = 'refresh';
	outObject['paramArray'] = paramObject;
	return outObject;
}

function signalsRefreshReceive( recievedArrayWithData ) {
	
	for (key in recievedArrayWithData['signals']) {
		SignalBus.dispatch( recievedArrayWithData['signals'][key]['signal'], recievedArrayWithData['signals'][key]['parameters'] );
	}
	
	lastSignalsRefresh = recievedArrayWithData['lastRefresh'];
}

/// register all auto queries
ah.registerAutoquery( 8, 'signalsRefreshSend', 'signalsRefreshReceive' );