/**
 * Realiza el efecto de Images Fade
 */

/**
 * Funcion que mueve el fondo de una division
 */
function moveImageBg (fadeZone, up)
	{
	var image = fadeZone.imagesFadeFxItems[fadeZone.imagesFadeFxSelectedIndex];

	
		
	if(up)
		{
		image.yBgPosition+=fadeZone.bgMoveSteps;

		if(image.yBgPosition>0)
			{
			image.yBgPosition=(-1)*fadeZone.bgMoveSteps;
			up=false;
			}
		
		if(image.yBgPosition>=fadeZone.yBgPositionMiddle&&image.changeImageFlag)
			{
			image.setStyle('background-position','0px '+image.yBgPosition+'px');
			setTimeout(function(){changeImagesFadeFx(fadeZone);}, fadeZone.bgMoveTime);
			return;
			}
		
		}
	else
		{
		image.yBgPosition-=fadeZone.bgMoveSteps;

		if(image.yBgPosition<fadeZone.yBgPositionLimit)
			{
			up=true;
			image.yBgPosition = fadeZone.yBgPositionLimit+fadeZone.bgMoveSteps;
			image.changeImageFlag = true;
			}
		}
	
	image.setStyle('background-position','0px '+image.yBgPosition+'px');
	

	setTimeout(function(){moveImageBg(fadeZone,up);}, fadeZone.bgMoveTime);
	}

/**
 * Funcion que cambia la imagen fade
 */
function changeImagesFadeFx (fadeZone)
	{
	var lastItem = null;
	var newIndex = 0;

	if(fadeZone.imagesFadeFxSelectedIndex>=0)
		{
		lastItem = fadeZone.imagesFadeFxItems[fadeZone.imagesFadeFxSelectedIndex];
		newIndex = fadeZone.imagesFadeFxSelectedIndex+1;

		if(newIndex>=fadeZone.imagesFadeFxItems.length)
			newIndex=0;
		
		}

	var newItem = fadeZone.imagesFadeFxItems[newIndex];
	
	if(lastItem!=null)
		{
		lastItem.toggleFadeFx.pause();
		lastItem.setStyle('opacity',1);
		lastItem.toggleFadeFx.toggleOpacity();
		

		if(lastItem.relatedLink!=null)
			{
			lastItem.relatedLink.toggleHeightFx.pause();
			lastItem.relatedLink.setStyle('height',lastItem.relatedLink.linkNormalHeight);
			lastItem.relatedLink.toggleHeightFx.toggleHeight();
			}
		}


	newItem.toggleFadeFx.pause();
	newItem.setStyle('opacity',0);
	newItem.toggleFadeFx.toggleOpacity();

	newItem.setStyle('background-position','0px '+fadeZone.yBgPositionMiddle+'px');

	if(newItem.relatedLink!=null)
		{
		newItem.relatedLink.toggleHeightFx.pause();
		newItem.relatedLink.setStyle('height','0px');
		newItem.relatedLink.toggleHeightFx.toggleHeight();
		}

	newItem.changeImageFlag = false;
				
	fadeZone.imagesFadeFxSelectedIndex = newIndex;

	setTimeout(function(){moveImageBg(fadeZone,true);}, fadeZone.imagesFadeFxDuration+fadeZone.bgMoveTime);
	}


/**
 * Inicia los efectos de las imagenes fade
 */
function initImagesFadeMoveFx (idZone, imagesHeight, opts)
	{
	var fadeZone = $(idZone);

	if(fadeZone==null)
		return;

	var items  = fadeZone.getChildren();
	
	if(items==null||items.length<=1)
		return;
	
	var defaultOptions = {moveTime:100, steps:2, duration: 2000, startTime: 0, matchLinks: null};

	if(opts===undefined)
		{
		opts = defaultOptions;
		}
	else
		{
		if(opts.moveTime===undefined)
			opts.moveTime = defaultOptions.moveTime;

		if(opts.steps===undefined)
			opts.steps = defaultOptions.steps;

		if(opts.duration===undefined)
			opts.duration = defaultOptions.duration;

		if(opts.startTime===undefined)
			opts.startTime = defaultOptions.startTime;

		if(opts.matchLinks===undefined)
			opts.linksZoneId = defaultOptions.matchLinks;
		}


	var toggleOptions = {duration: opts.duration};

	var fadeZoneHeight = fadeZone.getStyle('height').toInt();

	var imagesLinks = null;

	if(opts.matchLinks!=null)
		{
		imagesLinks = $$(opts.matchLinks);

		if(imagesLinks===undefined||imagesLinks==null||imagesLinks.length<=0)
			{
			imagesLinks=null;
			}
		else
			{
			imagesLinks.each(
				function(a) 
				{
				a.linkNormalHeight = a.getStyle('height');
																
				a.toggleHeightFx = new Fx.Toggle(a,toggleOptions);

				if(opts.startTime>0)
					a.setStyle('height','0px');

				a.setStyle('display','block');
				});
			}
		}

	
	fadeZone.yBgPositionLimit = fadeZoneHeight-imagesHeight;
	fadeZone.yBgPositionMiddle = Math.round(fadeZone.yBgPositionLimit/2);

	fadeZone.bgMoveSteps = opts.steps;
	
	fadeZone.imagesFadeFxDuration = opts.duration;
	fadeZone.bgMoveTime = opts.moveTime;
	fadeZone.imagesFadeFxSelectedIndex = (opts.startTime<=0) ? 0 : -1;
	fadeZone.imagesFadeFxItems = items;
	
	var index = 0;
		
	
	items.each
		(
		function(item) 
			{
			item.toggleFadeFx = new Fx.Toggle(item,toggleOptions);

			
			item.setStyle('background-position','0px '+fadeZone.yBgPositionMiddle+'px');
			item.yBgPosition = fadeZone.yBgPositionMiddle; 

			item.changeImageFlag = false;
							

			if(opts.startTime<=0&&index==0)
				{
				item.setStyle('opacity',1);
				}
			else
				{
				item.setStyle('opacity',0);
				}
			
			item.setStyle('visibility','visible');
						
			if(imagesLinks!=null&&imagesLinks.length>index)
				item.relatedLink = imagesLinks[index];
			else
				item.relatedLink = null;
								
			index++;
			}
		);

		
	if(opts.startTime<=0)
		{
		moveImageBg(fadeZone,true);
		}
	else
		{
		setTimeout(function(){changeImagesFadeFx(fadeZone);},opts.startTime);
		}
	}

