/* Custom Control for Google Maps by Van der Let & Partners Identity */
function CustomControl(data, title, position, offsetX, offsetY)
{
  this.data = data;
  this.title = title;
  this.position = position;
  this.offsetX = offsetX;
  this.offsetY = offsetY;
}

CustomControl.prototype = new GControl();

CustomControl.prototype.renderGroup = function(groupid)
{
  alert(groupid);
}

CustomControl.prototype.initialize = function(map)
{
  var container = document.createElement('div');
      container.className = 'GMCC_container';

  var controlTitle = document.createElement('div');
      controlTitle.className = 'GMCC_controlTitle';

  controlTitle.appendChild(document.createTextNode(this.title));

  container.appendChild(controlTitle);

  this.createControls(this.data, container);

  map.getContainer().appendChild(container);

  return container;
}

CustomControl.prototype.getDefaultPosition = function()
{
  return new GControlPosition(this.position, new GSize(this.offsetX, this.offsetY));
}

CustomControl.prototype.createControls = function(data, parentElement)
{
  for (var control in data) {

    var buttonContainer           = document.createElement('div');
        buttonContainer.id        = 'customControl_' + control;
        buttonContainer.className = 'GMCC_controlTextButton';

    if (data[control].iconIdle != '') {
      var iconControl           = document.createElement('img');
          iconControl.id        = 'customControl_' + control + '_icon';
          iconControl.className = 'GMCC_iconControl';
          iconControl.title     = data[control].name;

      if (data[control].enabled && data[control].visible) {
        iconControl.src  = data[control].iconActive;
        iconControl.setAttribute('currentSrc', data[control].iconActive);
      }
      else if (data[control].enabled && !data[control].visible) {
        iconControl.src  = data[control].iconIdle;
        iconControl.setAttribute('currentSrc', data[control].iconIdle);
      }

      iconControl.setAttribute('idleSrc', data[control].iconIdle);
      iconControl.setAttribute('activeSrc', data[control].iconActive);
      iconControl.setAttribute('mapId', data[control].mapId);
      iconControl.setAttribute('groupId', data[control].id);

      GEvent.addDomListener(iconControl, 'click', this.handleClick);

      //GEvent.addDomListener(buttonContainer, "click", this.renderGroup(this.id));
      buttonContainer.appendChild(iconControl);
    }
    else {
      buttonContainer.appendChild(document.createTextNode(data[control]['name']));
      this.setButtonStyle_(buttonContainer);
    }

    this.setButtonStyle_(buttonContainer);
    parentElement.appendChild(buttonContainer);
  }
}

CustomControl.prototype.handleClick = function(event)
{
  var element = null;

  if (!event) {
    e = window.event;
  }

  if (event.target) {
    element = event.target;
  }
  else if (event.srcElement) {
    element = event.srcElement;
  }
  if (element.nodeType == 3) {
    element = element.parentNode;
  }
  if (element != null) {
    if (element.getAttribute('currentSrc') == element.getAttribute('idleSrc')) {
      element.src = element.getAttribute('activeSrc');
      element.setAttribute('currentSrc', element.getAttribute('activeSrc'));
    }
    else if (element.getAttribute('currentSrc') == element.getAttribute('activeSrc')) {
      element.src = element.getAttribute('idleSrc');
      element.setAttribute('currentSrc', element.getAttribute('idleSrc'));
    }

    eval('drawGroupMarkers_' + element.getAttribute('mapId') + "('" + escape(element.getAttribute('groupId')) + "')");
    eval('drawMarkers_' + element.getAttribute('mapId') + "(true)");
  }
}

CustomControl.prototype.setButtonStyle_ = function(button)
{
  button.className = 'GMCC_button'
}