/**
 * @author Robert
 */

// global object array
var pageAccordions = [];
var isAnimating = false;
var accordionTimer;

// utility functions
function findAccordionByCode(code) {
  var accordionObject = null;

  for(var i = 0; i < pageAccordions.length; i++) {
    if (pageAccordions[i].accordionCode == code) {
      return pageAccordions[i];
    }
  }

  return accordionObject;
}

function findChildAccordionByCode(parentCode,code)
{
  var accordionObject = null;
  var childAccordionObject = null;
			
  accordionObject = findAccordionByCode(parentCode);

  if (accordionObject != null)
    {
      for (j = 0; j < accordionObject.childAccordions.length; j++)
	{
	  if (accordionObject.childAccordions[j].accordionCode == code)
	    {
	      childAccordionObject = accordionObject.childAccordions[j];
	      break;
	    }
	}
    }
  return childAccordionObject;
}
		
		
function findChildAccordionParentCodeByCode(code)
{
  var parentId;
  var resultCode = null;
			
  if (findAccordionByCode(code) == null)
    {
      for (u = 0; u < pageAccordions.length; u++)
	{
	  var childExists = null;
	  parentId = u;
					
	  childExists = findChildAccordionByCode(pageAccordions[parentId].accordionCode,code);
	  if (childExists != null)
	    {
	      resultCode = pageAccordions[u].accordionCode;
	      break;
	    }
	}
    }
			
  return resultCode;

}
		
		
function closeAllAccordions(currentId) {
  var selectedAccordion = findAccordionByCode(currentId);
			
  if (selectedAccordion != null) {
    for (h = 0; h < pageAccordions.length; h++) {
      if (pageAccordions[h].accordionCode != currentId && pageAccordions[h].isLocked == false && pageAccordions[h].isOpen == true) {
	pageAccordions[h].deactivate();
	
	if (pageAccordions[h].childAccordions.length > 0) {
	  for (w = 0; w < pageAccordions[h].childAccordions.length; w++) {
	    if (pageAccordions[h].childAccordions[w].accordionCode != currentId && pageAccordions[h].childAccordions[w].isLocked == false && pageAccordions[h].childAccordions[w].isOpen == true) {
	      pageAccordions[h].childAccordions[w].deactivate();
	    }
	  }
	}
      } else if (pageAccordions[h].accordionCode == currentId) {
	pageAccordions[h].activate($(pageAccordions[h].accordionCode));
      }
    }
  } else {
    closeAllChildAccordions(findChildAccordionParentCodeByCode(currentId));
  } 
}

function closeAllChildAccordions(code) {
  var targetAccordion = findAccordionByCode(code);
  if (targetAccordion != null) {
    for (y = 0; y < targetAccordion.childAccordions.length; y++) {
      if (targetAccordion.childAccordions[y].accordionCode != code && targetAccordion.childAccordions[y].isLocked == false && targetAccordion.childAccordions[y].isOpen == true) {
	targetAccordion.childAccordions[y].deactivate();
      }
    }
  }
}

// GUI Methods
function setItemOpacity(itemId,state) {
  var targetElement = $(itemId);
  if (targetElement) {
    if (state == 'on') {
      targetElement.setOpacity(1.0);
    } else {
      targetElement.setOpacity(0.4);
    }
  }
}
		
function defineSelected() {
  if (isAnimating == false) {
    isAnimating = true;
    accordionTimer = setTimeout("defineSelected()", 500);
  }
  if (isAnimating == true) {
    clearTimeout(accordionTimer);
    isAnimating = false;
    
    var selectImage = document.createElement('img');
    selectImage.setAttribute('src', '/images/NYLS/leftnav_select_arrow2.gif');
    selectImage.style.border = 'none';
    selectImage.style.textDecoration = 'none';
    selectImage.style.position = 'relative';
    selectImage.style.left = '-12px';
    selectImage.style.top = '2px';
    selectImage.style.width = '7px';
    selectImage.style.height = '13px';
    selectImage.style.padding = '0px';
    
    $$('#leftnav-container a').each(function(a) { 
	if (document.location.toString().match(/^https?:\/\/[a-z0-9\-\.]+(\/.*)/i)[1] == a.readAttribute('href').toString()){
	  a.setStyle({ fontWeight: 'bold', left: '-7px', top: '-1px', position: 'relative' });
	  a.parentNode.insertBefore(selectImage, a);
	}
      });					
  }
}

// Accordion setup Methods
// called on page load event
// loop through object by class and define accordion objects
// vertical-container nested-container
			
var accordionNumber = 0;
var createBaseAccordion = function(className) {
  var targetAccordions = $$(className);

  targetAccordions.each(function(targetAccordion) {
      var targetObjectId = $(targetAccordion).getAttribute('id');
      var targetObjectCode = $(targetAccordion).select('[class="accordion_toggler"]')[0].getAttribute('id');

      pageAccordions[accordionNumber] = new accordion(targetObjectId, targetObjectCode, {
	classNames : {
	  toggle : 'accordion_toggler',
	      toggleActive : 'accordion_toggler_active',
	      content : 'accordion_content'
	      }
	});
					
      // for each nested container
      $$('#' + targetObjectId + ' .nested-container').each(function(name){
	  createSubAccordion(name.id,accordionNumber);
	});
					
      accordionNumber += 1;
    });
};
			
var createSubAccordion = function(childId,targetNumber) {
  pageAccordions[targetNumber].addChild(new accordion(childId, $(childId).select('[class="vertical_accordion_toggler"]')[0].getAttribute('id'), {
      classNames : {
	toggle : 'vertical_accordion_toggler',
	    toggleActive : 'vertical_accordion_toggler_active',
	    content : 'vertical_accordion_content'
	    }
      }));
};

// Setup Methods called on dom loaded event.
var hideAccordions = function(className){
  var accordions = $$(className);

  accordions.each(function(accordion){
      $(accordion.next(0)).setStyle({
	height: '0px'
	    });
    });
};
		
var setAccordionOpacity = function(className)
{
  var accordionTogglers = $$(className);
  accordionTogglers.each(function(accordionToggler) {
      var targetName = $(accordionToggler).getAttribute('id');
      setItemOpacity(targetName,'off');
    });
};			
			
function equalizePanels() {
  var centerHeight = Element.getHeight($('content-center-block'));
  if (centerHeight > 200) {
    $('content-right-container').setStyle({
      height : (centerHeight + 200) + 'px'
	  });
    
    $('content-center-container').setStyle({
      height : (centerHeight + 200) + 'px'
	  });
    
    $('content-wrapper').setStyle({
      height : (centerHeight + 200) + 'px'
	  });
    
    $('content-container').setStyle({
      height : (centerHeight + 200) + 'px'
	  });
  }
}
