function hbFilter (nameOfSource)
{
  this.values = new Array ();
  this.select = null;
  this.selected = null;
  this.sourceName = nameOfSource;
}

hbFilter.prototype.add = function (newValue)
{
  this.values.push (newValue);
}

hbFilter.prototype.getSpec = function ()
{
  if (0 == this.values.length)
  {
    return new hbFilterSpec (null);
  }

  var layername = this.getActiveLayer ();
  return new hbFilterSpec (layername);
}
/*
hbFilter.prototype.createElements = function (myDocument, enabled)
{
  var result = new Array ();

  if (0 == this.values.length)
  {
    return result;
  }

  if (0 < this.values.length)
  { 
    this.selected = this.values [0] ["name"];
  }

  this.select = myDocument.createElement ("select");
  this.select.size = "1";

  if (false == enabled)
  {
    this.select.disabled = true;
  }

  this.select.multiple = false;
  var selectedString = vcnlinfoCookies.get ("filter_" + this.sourceName);

  for (var v in this.values)
  {
    var value = this.values [v];
    var opt = myDocument.createElement ("option");
    opt.label = value ["name"];
    opt.value = value ["layer"];
    opt.appendChild (myDocument.createTextNode (value ["name"]));

    if (value ["name"] == selectedString)
    {
      opt.selected = true;
      this.selected = value ["name"];
    }
    else if (("" == selectedString) && (value ["activeByDefault"]) && ("true" == value ["activeByDefault"]))
    {
      opt.selected = true;
      this.selected = value ["name"];
    }

    this.select.appendChild (opt);
  }

  result [0] = this.select;
  return result;
}*/
/*
hbFilter.prototype.storeValue = function ()
{
  this.selected = null;

  if (null == this.select)
  {
    return;
  }

  for (var o in this.select.childNodes)
  {
    var opt = this.select.childNodes [o];

    if (true == opt.selected)
    {
      this.selected = opt.label;
      return;
    }
  }
}*/
/*
hbFilter.prototype.resetValue = function ()
{
  if (null == this.select)
  {
    return null;
  }

  for (var o in this.select.childNodes)
  {
    var opt = this.select.childNodes [o];

    if ((true == opt.selected) && (opt.label != this.selected))
    {
      opt.selected = false;
    }
    else if (opt.label == this.selected)
    {
      opt.selected = true;
    }
  }
}*/
/*
hbFilter.prototype.setEnabled = function (enabled)
{
  if (this.select)
  {
    this.select.disabled = ! enabled;
  }
}*/

hbFilter.prototype.isEmpty = function ()
{
  return (0 == this.values);
}

hbFilter.prototype.getActiveLayer = function ()
{
/*  if (null != this.select)
  {
    for (var o in this.select.childNodes)
    {
      var opt = this.select.childNodes [o];

      if (this.selected == opt.label)
      {
        return opt.value;
      }
    }
  }
*/
  if (null == this.selected)
  {
    this.selected = vcnlinfoCookies.get ("filter_" + this.sourceName);
  }

  for (var v in this.values)
  {
    var value = this.values [v];

    if (value ["name"] == this.selected)
    {
      return value ["layer"];
    }
    else if (("" == this.selected) && (value ["activeByDefault"]) && ("true" == value ["activeByDefault"]))
    {
      this.selected = value ["name"];
      return value ["layer"];
    }
  }

  return null;
}

hbFilter.prototype.getActiveFilterName = function ()
{
  return this.selected;
}

hbFilter.prototype.activate = function (layer)
{
  for (var v in this.values)
  {
    var value = this.values [v];

    if (layer == value ["layer"])
    {
      this.selected = value ["name"];
    }
  }
}

hbFilter.prototype.hasLayer = function (layer)
{
  for (var v in this.values)
  {
    var value = this.values [v];

    if (layer == value ["layer"])
    {
      return true;
    }
  }

  return false;
}
