More trip planner testing with colors
[busui.git] / labs / openlayers / lib / OpenLayers / Control / Attribution.js
blob:a/labs/openlayers/lib/OpenLayers/Control/Attribution.js -> blob:b/labs/openlayers/lib/OpenLayers/Control/Attribution.js
  /* Copyright (c) 2006-2010 by OpenLayers Contributors (see authors.txt for
  * full list of contributors). Published under the Clear BSD license.
  * See http://svn.openlayers.org/trunk/openlayers/license.txt for the
  * full text of the license. */
   
  /**
  * @requires OpenLayers/Control.js
  */
   
  /**
  * Class: OpenLayers.Control.Attribution
  * The attribution control adds attribution from layers to the map display.
  * It uses 'attribution' property of each layer.
  *
  * Inherits from:
  * - <OpenLayers.Control>
  */
  OpenLayers.Control.Attribution =
  OpenLayers.Class(OpenLayers.Control, {
   
  /**
  * APIProperty: seperator
  * {String} String used to seperate layers.
  */
  separator: ", ",
   
  /**
  * Constructor: OpenLayers.Control.Attribution
  *
  * Parameters:
  * options - {Object} Options for control.
  */
  initialize: function(options) {
  OpenLayers.Control.prototype.initialize.apply(this, arguments);
  },
   
  /**
  * Method: destroy
  * Destroy control.
  */
  destroy: function() {
  this.map.events.un({
  "removelayer": this.updateAttribution,
  "addlayer": this.updateAttribution,
  "changelayer": this.updateAttribution,
  "changebaselayer": this.updateAttribution,
  scope: this
  });
   
  OpenLayers.Control.prototype.destroy.apply(this, arguments);
  },
   
  /**
  * Method: draw
  * Initialize control.
  *
  * Returns:
  * {DOMElement} A reference to the DIV DOMElement containing the control
  */
  draw: function() {
  OpenLayers.Control.prototype.draw.apply(this, arguments);
   
  this.map.events.on({
  'changebaselayer': this.updateAttribution,
  'changelayer': this.updateAttribution,
  'addlayer': this.updateAttribution,
  'removelayer': this.updateAttribution,
  scope: this
  });
  this.updateAttribution();
   
  return this.div;
  },
   
  /**
  * Method: updateAttribution
  * Update attribution string.
  */
  updateAttribution: function() {
  var attributions = [];
  if (this.map && this.map.layers) {
  for(var i=0, len=this.map.layers.length; i<len; i++) {
  var layer = this.map.layers[i];
  if (layer.attribution && layer.getVisibility()) {
  // add attribution only if attribution text is unique
  if (OpenLayers.Util.indexOf(
  attributions, layer.attribution) === -1) {
  attributions.push( layer.attribution );
  }
  }
  }
  this.div.innerHTML = attributions.join(this.separator);
  }
  },
   
  CLASS_NAME: "OpenLayers.Control.Attribution"
  });