
removeElement = function (){
  var el = this.getEl();
  el.parentNode.removeChild(el);
};

function showBanner(e) {
  var YD = YAHOO.util.Dom;
  var YE = YAHOO.util.Event;
  var YA = YAHOO.util.Anim;
  
  YE.preventDefault(e);
  var c = YD.getAncestorByClassName(this, 'container');
  
  var thumb = this.getElementsByTagName('img')[0];
  
  // Does a banner exist for this container?
  var b = YD.getElementsByClassName('banner', 'div', c);
  if (b == false) { // No. Close the other one(s), create a new one 
    var banners = YD.getElementsByClassName('banner','div');
    var anims = [];
    var bannerHeight = 314;
    for (i in banners) {
      bannerHeight = banners[i].clientHeight;
      anims[i] = new YA(banners[i], {height: {to: 0}}, 0.2);
      anims[i].onComplete.subscribe(removeElement);
    }

    // Create a new banner and insert it into the container
    var newbanner = document.createElement('div');
    YD.addClass(newbanner, 'banner');
    newbanner.style.height = 0;
    
    // Add the overlay
    var newoverlay = document.createElement('a');
    YD.addClass(newoverlay, 'overlay');
    newoverlay.href = this.href;
    newoverlay.innerHTML = thumb.alt;
    newbanner.appendChild(newoverlay);
    
    var newimg = document.createElement('img');
    newimg.src = thumb.src.replace('thumb__', 'banner__');
    newbanner.appendChild(newimg);

    YD.insertBefore(newbanner, YD.getFirstChild(c));
    
    // Queue the animation to expand the new banner
    var i = anims.length;
    anims[i] = new YA(newbanner, {height: {to: bannerHeight}}, 0.2);

    // Animate everything
    for (i in anims) {
      anims[i].animate();
    }
    
  } else {
    b[0].getElementsByTagName('img')[0].src = thumb.src.replace('thumb__', 'banner__');
    var overlay = b[0].getElementsByTagName('a')[0];
    overlay.innerHTML = thumb.alt;
    overlay.href = this.href;
    
  }
  
}


function attachBehaviour() {
  var pics = YAHOO.util.Selector.query('.thumb a');
  YAHOO.util.Event.addListener(pics, 'click', showBanner);
}

YAHOO.util.Event.onDOMReady(attachBehaviour);

