/**
 * Realiza el efecto de movimento de imagenes
 */

/**
 * Funcion que mueve la posision vertical de una imagen
 */
function moveImageVerticalPosition (image)
	{
				
	if(!image.toUpMove)
		{
		image.yMovePosition+=image.moveSteps;
		
		if(image.yMovePosition>0)
			{
			image.yMovePosition=(-1)*image.moveSteps;
			image.toUpMove=true;
			}
		}
	else
		{
		
		image.yMovePosition-=image.moveSteps;
				
		
		if(image.yMovePosition<image.yMovePositionLimit)
			{
			image.toUpMove=false;
			image.yMovePosition = image.yMovePositionLimit+image.moveSteps;
			}
		}
	
	image.setStyle('top',image.yMovePosition);
		
	setTimeout(function(){moveImageVerticalPosition(image);}, image.moveTime);
	}


/**
 * Funcion que mueve la posision vertical de una imagen
 */
function moveImageHorizontalPosition (image)
	{
				
	if(image.toRightMove)
		{
		image.xMovePosition+=image.moveSteps;
		
		if(image.xMovePosition>0)
			{
			image.xMovePosition=(-1)*image.moveSteps;
			image.toRightMove=false;
			}
		}
	else
		{
		
		image.xMovePosition-=image.moveSteps;
				
		
		if(image.xMovePosition<image.xMovePositionLimit)
			{
			image.toRightMove=true;
			image.xMovePosition = image.xMovePositionLimit+image.moveSteps;
			}
		}
	
	image.setStyle('left',image.xMovePosition);
		
	setTimeout(function(){moveImageHorizontalPosition(image);}, image.moveTime);
	}

/**
 * Valida si una imagen debe de moverse de forma vertical
 */
function validateImageVerticalMove (imgZone, image, opts)
	{
	var zoneHeight  = imgZone.getStyle('height');

	if(zoneHeight===undefined||zoneHeight==null)
		return;
			
	zoneHeight = zoneHeight.toInt();
	if(zoneHeight<10)
		return;
	

	var imgHeight = image.getStyle('height');

	if(imgHeight===undefined||imgHeight==null)
		return;
		

	imgHeight = imgHeight.toInt();
	
	if(imgHeight<=zoneHeight||((imgHeight-zoneHeight)<opts.minDif))
		return;

	try
		{
		var imgParent = image.getParent();
		if(imgParent.get('tag')=='a')
			{
			imgParent.setStyle('width',image.getStyle('width'));
			imgParent.setStyle('height',imgHeight);
			imgParent.setStyle('display','block');
			image = imgParent;
			}
		}
	catch (err){}
	

	image.yMovePositionLimit = zoneHeight-imgHeight;


	
	if(image.hasClass('inBottom'))
		{
		image.yMovePosition = zoneHeight-imgHeight;
		image.setStyle('top',image.yMovePosition);
		image.setStyle('bottom','auto');
		image.toUpMove = false;
		}
	else
		{
		var y = image.getStyle('top');

		if(y===undefined||y==null)
			image.yMovePosition = 0;
		else
			image.yMovePosition = y.toInt();

		image.toUpMove = true;
		}

							
	image.moveTime = opts.moveTime;
	image.moveSteps = opts.steps;
	
	
	setTimeout(function(){moveImageVerticalPosition(image);}, opts.starTime);
	}


/**
 * Valida si una imagen debe de moverse de forma horizontal
 */
function validateImageHorizontalMove (imgZone, image, opts)
	{
	var zoneWidth  = imgZone.getStyle('width');

	if(zoneWidth===undefined||zoneWidth==null)
		return;
			
	zoneWidth = zoneWidth.toInt();
	if(zoneWidth<10)
		return;
	

	var imgWidth = image.getStyle('width');

	if(imgWidth===undefined||imgWidth==null)
		return;
		

	imgWidth = imgWidth.toInt();
	
	if(imgWidth<=zoneWidth||((imgWidth-zoneWidth)<opts.minDif))
		return;

	try
		{
		var imgParent = image.getParent();
		if(imgParent.get('tag')=='a')
			{
			imgParent.setStyle('width',imgWidth);
			imgParent.setStyle('height',image.getStyle('height'));
			imgParent.setStyle('display','block');
			image = imgParent;
			}
		}
	catch (err){}
	
	
	image.xMovePositionLimit = zoneWidth-imgWidth;
	
	
	if(image.hasClass('inRight'))
		{
		image.xMovePosition = zoneWidth-imgWidth;
		image.setStyle('left',image.xMovePosition);
		image.setStyle('right','auto');
		image.toRightMove = true;
		}
	else
		{
		var x = image.getStyle('left');
		if(x===undefined||x==null)
			image.xMovePosition = 0;
		else
			image.xMovePosition = x.toInt();
		
		image.toRightMove = false;
		}
	
							
	image.moveTime = opts.moveTime;
	image.moveSteps = opts.steps;
	
			
	setTimeout(function(){moveImageHorizontalPosition(image);}, opts.starTime);
	}




/**
 * Inicia los efectos de movimiento de imagenes
 * opts (opcional) es un objeto con...
 *		moveTime = Tiempo entre movimiento y movimiento
 *		steps = Pasos en pixeles del movimiento
 *		starTime = Tiempo en que inicia a moverse la imagen
 *		minDif = Diferencia minima de tamano que exede de una imagen para que esta se mueva (en pixeles)
 */
function initImagesMoveFx (cssMatch, opts)
	{
	var defaultOptions = {moveTime:120, steps:2, starTime: 2000, minDif: 10};

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

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

		if(opts.minDif===undefined)
			opts.minDif = opts.steps*5;
		}

	
	
	var imgs = $$(cssMatch);

	if(imgs===undefined||imgs==null||imgs.length<1)
		return;

		
	if(Browser&&Browser.ie6)
		{
		opts.moveTime = opts.moveTime*2;
		opts.steps = opts.steps*2;
		}	

	imgs.each
		(
		function (imgZone)
			{
			var image = imgZone.getElement('img');

			if(image===undefined||image==null)
				return;

			validateImageVerticalMove(imgZone,image,opts);
			validateImageHorizontalMove(imgZone,image,opts);
			}
		);
	
	}

