/*
 *	fadeMat.js	v.3.0 2009.12.04
 *	SCRIPT DESAROLLADO EN ARGENTINA POR MAT
 *	mat.hack@gmail.com
 *	LOPEZ, MATIAS
 */



var estado = 0;			// 0: LIBERADO, 1: BLOQUEADO
var cancelando = 0;		// 0: NO SE ESTA CANCELANDO, 1: EL FADE FUE CANCELADO
var arrayObjetos = new Array();		// ARREGLO DE OBJETOS SIENDO FADEADOS

// AGREGA EFECTO DE FADE A UN OBJETO
function fade(idObjeto, opacidadInicial, opacidadFinal, millisec)
{
	if( arrayObjetos[ idObjeto ] )
	{
		clearTimeout( arrayObjetos[ idObjeto ] );
		estado = 0;
	}

	if( estado == 0 )
	{
		document.getElementById( idObjeto ).style.visibility = "visible";

		// CALCULA LA VELOCIDAD PARA CADA CUADRO
		var cantidadCuadros = Math.abs( opacidadFinal - opacidadInicial );
		var velocidad = Math.round( millisec / cantidadCuadros );
		var cantidad = 1;
		if( millisec < 1000 )
			cantidad = 10;
	
		// DETERMINA LA DIRECCION DEL FADE
		// SI LA OPACIDAD INICIAL Y LA FINAL SON IGUALES NO HACE NADA
		if( opacidadInicial > opacidadFinal )
		{
			estado = 1;
			recursivaTransparentar(idObjeto, opacidadInicial, opacidadFinal, velocidad, cantidad);
		}
		else if( opacidadInicial < opacidadFinal )
		{
			estado = 1;
			recursivaOpacar(idObjeto, opacidadInicial, opacidadFinal, velocidad, cantidad);
		}
	}
}

// AGREGA EFECTO DE FADE A UN OBJETO A PARTIR DE SU OPACIDAD ACTUAL
function fadeActual(idObjeto, opacidadFinal, millisec)
{
	var opacidadInicial = parseFloat( getOpacidad(idObjeto) ) * 100;
	fade(idObjeto, opacidadInicial, opacidadFinal, millisec);
}

// CANCELARFADE
function cancelarFade()
{
	cancelando = 1;
}

// RECURSIVA
// OPACA GRADUALMENTE EL OBJETO PASADO COMO PARAMETRO HASTA LLEGAR A LA OPACIDAD FINAL
function recursivaOpacar(idObjeto, opacidad, opacidadFinal, velocidad, cantidad)
{
//	if( cancelando == 0 )
//	{
		cambiarOpacidad(idObjeto, opacidad);
		if( opacidad < opacidadFinal )
		{
			opacidad += cantidad;
			codigo = "recursivaOpacar('"+ idObjeto +"', "+ opacidad +", "+ opacidadFinal +", "+ velocidad +", "+ cantidad +")";

			arrayObjetos[ idObjeto ] = setTimeout(codigo, velocidad);
		}
		else
		{
			estado = 0;
		}
//	}
//	else
//	{
//		cancelando = 0;
//		estado = 0;
//	}
}

// TRANSPARENTA GRADUALMENTE EL OBJETO PASADO COMO PARAMETRO HASTA LLEGAR A LA OPACIDAD FINAL
function recursivaTransparentar(idObjeto, opacidad, opacidadFinal, velocidad, cantidad)
{
	if( cancelando == 0 )
	{
		cambiarOpacidad(idObjeto, opacidad);
		if( opacidad > opacidadFinal )
		{
			opacidad -= cantidad;
			codigo = "recursivaTransparentar('"+ idObjeto +"', "+ opacidad +", "+ opacidadFinal +", "+ velocidad +", "+ cantidad +")";

			arrayObjetos[ idObjeto ] = setTimeout(codigo, velocidad);
		}
		else
		{
			estado = 0;
		}
	}
	else
	{
		cancelando = 0;
		estado = 0;
	}
}

// CAMBIA LA OPACIDAD DEL OBJETO PASADO COMO PARAMETRO DE ACUERDO AL NAVEGADOR
function cambiarOpacidad(idObjeto, opacidad)
{
	var object = document.getElementById( idObjeto ).style;
	object.opacity = (opacidad / 100);
	object.MozOpacity = (opacidad / 100);
	object.KhtmlOpacity = (opacidad / 100);
	object.filter = "alpha(opacity=" + opacidad + ")";
}

// GETOPACIDAD, DEVUELVE LA OPACIDAD ACTUAL DEL OBJETO PASADO COMO PARAMETRO
function getOpacidad(idObjeto)
{
	var object = document.getElementById( idObjeto ).style;
	var opacidad = 0;
	if( (object.opacity != null) && (object.opacity != undefined) && (object.opacity != "") )
	{
		opacidad = object.opacity;
	}
	else if( (object.MozOpacity != null) && (object.MozOpacity != undefined) && (object.MozOpacity != "") )
	{
		opacidad = object.MozOpacity;
	}
	else if( (object.KhtmlOpacity != null) && (object.KhtmlOpacity != undefined) && (object.KhtmlOpacity != "") )
	{
		opacidad = object.KhtmlOpacity;
	}
	else if( (object.filter != null) && (object.filter != undefined) && (object.filter != "") )
	{
		opacidad = object.filter.substring( object.filter.lastIndexOf('=')+1, object.filter.lastIndexOf(')') );
	}
	return opacidad;
}



/*
 *	SCRIPT DESAROLLADO EN ARGENTINA POR MAT
 *	mat.hack@gmail.com
 *	LOPEZ, MATIAS
 */
