/**
 * Script para implementar menus de acordion
 */


/**
 * Retorna un solo elemento que concide con 'match' del 'item'
 */
function getOneElement (item, match)
	{
	var items  = item.getChildren(match);

	if(items!=null&&items.length>0)
		return items[0];
	
	return null;
	}

/**
 * Funtion que muetra o cierra una zona de subitems
 */

function openOrCloseAccordionSubitemsZone (itemLink)
	{
	if(itemLink.accordionInAction==false)
		{
		itemLink.accordionInAction = true;
		itemLink.blur();
			

		itemLink.accordionToggleFx.pause();

		var to = (itemLink.accordionOpened) ? itemLink.accordionMinHeight : itemLink.accordionMaxHeight;
		var height = itemLink.accordionSubitemsZone.getStyle('height').toInt(); 

		if(to!=height)
			itemLink.accordionToggleFx.toggleProperty('height', height, to, true);
		
		itemLink.accordionOpened = !itemLink.accordionOpened;

		if(itemLink.accordionOpened)
			itemLink.setStyle('background-position','right -24px');
		else	
			itemLink.setStyle('background-position','right 6px');
		
		
		
		itemLink.accordionInAction = false;
		}
	}

/**
 * Inicia un menu de acordion en zoneId
 */
function initAccordionMenu (zoneId, toggleDuration)
	{
	var menuZone = $(zoneId);


	if(menuZone==null)
		return;

			
	if(Browser&&Browser.ie6)
		toggleDuration = Math.round(toggleDuration/2);

	var items  = menuZone.getChildren('.accordionItem');
	var toggleOptions = {duration: toggleDuration};

		

	items.each
		(
		function(item) 
			{
			var subItemsZone = getOneElement(item,'.subItemsZone');
			var itemLink = getOneElement(item,'.itemHeader');

			if(itemLink!=null)
				itemLink = getOneElement(itemLink,'a');

			
			
			if(subItemsZone!=null&&itemLink!=null)
				{
								
				var subOptions = subItemsZone.getChildren('div');
				var subItemsCounter = 0;
				if(subOptions!=null&&subOptions.length>0)
					{
					itemLink.accordionMinHeight = subItemsZone.getStyle('height').toInt();
					itemLink.accordionMaxHeight = 0;

					subOptions.each
						(
						function (subItem)
							{
							itemLink.accordionMaxHeight += subItem.getStyle('height').toInt();
							if(subItem.hasClass('subItem'))
								subItemsCounter++;
							}
						);
					
					if(subItemsCounter>0)
						{
						itemLink.accordionSubitemsZone = subItemsZone;
						itemLink.accordionToggleFx = new Fx.Toggle(subItemsZone,toggleOptions);
						itemLink.accordionOpened = false;
						itemLink.accordionInAction = false;

						itemLink.addEvent('click', function(event) 
								{
								event.preventDefault();
								openOrCloseAccordionSubitemsZone(itemLink);
								}
							);
						
						if(item.hasClass('opened'))
							openOrCloseAccordionSubitemsZone(itemLink);
						}
										
					}
				}
			}
		);

	}


