GM.namespace('GM.cms.gplus');

//Init

GM.cms.gplus.init = function ()
{
  new GM.cms.gplus.TextController('rood', true);
  new GM.cms.gplus.TextController('blauw', true);
  new GM.cms.gplus.TextController('groen', true);
};

// TextController

GM.cms.gplus.TextController = function (linkParentName, checkHash)
{
  this.blockName = linkParentName + '-rechts';
  
  if (checkHash && window.location.hash) {
    this.open(window.location.hash);
  }
  
  this.addHandlers(linkParentName);
};

GM.cms.gplus.TextController.prototype.addHandlers = function (linkParentName)
{
  var parent = GM.dom.getElementsByClassName(linkParentName, 'blockquote');
  
  for (var i = 0; i < parent.length; i += 1) {
    var links = parent[i].getElementsByTagName('a');
    
    for (var j = 0; j < links.length; j += 1) {
      GM.event.register(links[j], 'click', this.click, this);
    }
  }
};

GM.cms.gplus.TextController.prototype.click = function (e)
{
  var target = GM.event.getTarget(e);
  
  this.open(target.hash);
};

GM.cms.gplus.TextController.prototype.open = function (id)
{
  var parts = id.split('-');
  
  var numRight = parts[parts.length - 1];
  var numUnder = parts[parts.length - 2];  
    
  var right = GM.dom.getElementsByClassName(this.blockName, 'p');
  
  for (var i = 0; i < right.length; i += 1) {
    right[i].style.display = (i == numRight) ? 'block' : 'none';
  }
  
  var under = GM.dom.getElementsByClassName('onder', 'blockquote');
  
  for (var i = 0; i < under.length; i += 1) {
    if (i + 1 == numUnder) {
      under[i].style.display = 'block';
      
      var top = 0;
      var object = under[i];      
      
      while (object) {
        top += object.offsetTop;
        
        object = object.offsetParent;
      }
      
      window.scrollTo(0, top);
    } else {
      under[i].style.display = 'none';
    }
  }
};

GM.event.register(window, 'load', GM.cms.gplus.init);

