// xCollapsible, Copyright 2004-2006 Michael Foster (Cross-Browser.com)
// Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL

function xCollapsibleIMG(outerEle, bShow) // object prototype
{
  // Constructor

  var container = xGetElementById(outerEle);
  if (!container) {return null;}
  var isUL = container.nodeName.toUpperCase() == 'UL';
  var aTgt = xGetElementsByClassName("content", container);
  var aLabel = xGetElementsByClassName("label", container);
  var button = xCreateElement("img");
  button.align = "right";
  button.src = "gfx/void.gif";
  button.className = bShow ?  'minimize' : 'maximize';
  aLabel[0].insertBefore(button, xFirstChild(aLabel[0]));

  for (i = 0; i < aTgt.length; ++i) {
	 var ele = xParentNode(aTgt[i],1);
	 var trg = xGetElementsByTagName("IMG", ele)[0];
	 //var trg = button;
	 if (trg && (isUL || trg.nodeName.toUpperCase() == 'IMG')) {
      aTgt[i].xTrgPtr = trg;
      aTgt[i].style.display = bShow ? 'block' : 'none';
      trg.className = bShow ?  'minimize' : 'maximize';
		trg.style.cursor = 'pointer';
      trg.xTgtPtr = aTgt[i];
      trg.onclick = trg_onClick;
    }  
  }
  
  // Private

  function trg_onClick()
  {
    var tgt = this.xTgtPtr.style;
    tgt.display = (tgt.display == 'none') ? "block" : "none";
	 this.className = (tgt.display == 'none') ? 'maximize' : 'minimize';
	 registerBoxStatus(this.parentNode.parentNode.id, tgt.display);	
  }

  // Public

  this.displayAll = function(bShow)
  {
    for (var i = 0; i < aTgt.length; ++i) {
      if (aTgt[i].xTrgPtr) {
        aTgt[i].style.display = bShow ? "block" : "none";
      }
    }
  };

  // The unload listener is for IE's circular reference memory leak bug.
  this.onUnload = function()
  {
    if (!container || !aTgt) {return;}
    for (i = 0; i < aTgt.length; ++i) {
      trg = aTgt[i].xTrgPtr;
      if (trg) {
        if (trg.xTgtPtr) {
          trg.xTgtPtr.TrgPtr = null;
          trg.xTgtPtr = null;
        }
        trg.onclick = null;
      }
    }
  };
}


