/**
 * <settings>
 *   <layer name="info" url="http://...">
 *   </layer>
 * </settings>
 */

function hbLayerMgr (settings, map)
{
  this.settings = settings;
  this.retryTimeout = 5000;
  this.refreshInterval = 600;
  this.nameToLayer = new Object ();
  this.map = map;
  this.settingsAreRead = false;

  if (true == this.settings.isInitialized ())
  {
    this.initialize ();
  }
}

hbLayerMgr.prototype.isInitialized = function ()
{
  if (false == this.settingsAreRead)
  {
    return false;
  }

/*  for (var layer in this.nameToLayer)
  {
    if (false == this.nameToLayer [layer].isInitialized ())
    {
      return false;
    }
  }
*/
  return true;
}

hbLayerMgr.prototype.isInitialized = function (layerName)
{
  if ((this.nameToLayer [layerName]) && (false == this.nameToLayer [layerName].isInitialized ()))
  {
    return false;
  }

  return true;
}

hbLayerMgr.prototype.initialize = function ()
{
  this.settingsAreRead = false;
  var layerArray = this.settings.get ("layer");

  if (null != layerArray)
  {
    for (var layerIndex = 0; layerIndex < layerArray.length; ++layerIndex)
    {
      this.nameToLayer [layerArray [layerIndex] ["name"]] =
          new hbLayer (layerArray [layerIndex], this.map);
    //  this.nameToLayer [layerArray [layerIndex] ["name"]].setLanguage (dictionary.activeLanguage);
    }
  }

  this.settingsAreRead = true;
}

hbLayerMgr.prototype.reload = function ()
{
  for (var layerName in this.nameToLayer)
  {
    this.nameToLayer [layerName].reload ();
  }
}

hbLayerMgr.prototype.setLanguage = function (lang)
{
  for (var layerName in this.nameToLayer)
  {
    this.nameToLayer [layerName].setLanguage (lang);
  }
}

hbLayerMgr.prototype.getReport = function (layerName, reportId)
{
  var layer = this.nameToLayer [layerName];

  if (!layer)
  {
    return null;
  }

  return layer.getReport (reportId);
}
