
var XmlHttpObj;

var funcAtencion;
var funcFallo;
var AJAX_bloque;
var AJAX_namefunction;
var AJAX_multiplebloques=0;
var AJAX_transitionblock=0;

function CreateXmlHttpObj()
{
	try
	{
		XmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP");	
	}
	catch(e)
	{
		try
		{
			XmlHttpObj = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch(oc)
		{
			XmlHttpObj = null;
		}
	}
		if(!XmlHttpObj && typeof XMLHttpRequest != "undefined") 
	{
		XmlHttpObj = new XMLHttpRequest();
	}
}


function difuminar(velocidad, opacidad_inicial, opacidad_final, sentido) {
	//Sentido 1 es aparecer
	//Sentido -1 es desaparecer.
	
	AJAX_transitionblock=1;
	var bloque = new Array();
	
	if (AJAX_multiplebloques==0) {
		bloque[0] = AJAX_bloque;
		}
	
	if (AJAX_multiplebloques==1) {
		bloque = AJAX_bloque;
		}
	
	if (sentido>0 && opacidad_inicial>opacidad_final){
		AJAX_transitionblock=0;
		return false;
		}
	
	if (sentido<0 && opacidad_inicial<opacidad_final) {
		AJAX_transitionblock=0;
		return false;
		}

	for (var i=0; i<bloque.length; i++) {
		var subbloque = bloque[i];
		if (sentido==-1) {
			subbloque.style.filter = 'alpha(opacity='+10*(opacidad_inicial)+')';
			subbloque.style.opacity = '0.'+opacidad_inicial;
			}
	
		if (sentido==1) {
			subbloque.style.filter = 'alpha(opacity='+10*(opacidad_inicial)+')';
			if (opacidad_inicial>=10)
				subbloque.style.opacity = '1';
			else 	
				subbloque.style.opacity = '0.'+opacidad_inicial;
			}

		}
	setTimeout("difuminar ("+velocidad+", "+(opacidad_inicial+sentido)+","+opacidad_final+","+sentido+")",velocidad);
	}

function EnviarPeticion (requestUrl, funcOk, funcError) {
	CreateXmlHttpObj();

	funcAtencion = funcOk;
	funcFallo = funcError;
	

	difuminar(50, 9, 0, -1);
	this.checkTransition=function() {
		if (AJAX_transitionblock==1) {
			setTimeout("this.checkTransition()", 100);
			}
		else {
			if (XmlHttpObj) {	
				XmlHttpObj.onreadystatechange = RecepcionDeRespuesta;
				XmlHttpObj.open( "POST", requestUrl, true );
				XmlHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
				XmlHttpObj.send('');		
				}
			}
		}
	
	this.checkTransition();
}

function RecepcionDeRespuesta()
{
	if(XmlHttpObj.readyState == 4) {
		//Cargada
		if(XmlHttpObj.status == 200) {
			//Todo ok
			if (funcAtencion)
				funcAtencion(XmlHttpObj.responseText);
		} else {
			if (funcFallo)
				funcFallo(XmlHttpObj.responseText);
		}
	}
}

function Error(XMLRespuesta) 
{
	alert (XMLRespuesta);
}

function RedibujarBloque(XMLRespuesta)
{
	if (AJAX_multiplebloques==0) {
		AJAX_bloque.innerHTML=XMLRespuesta;
		if (AJAX_namefunction)	
			eval(AJAX_namefunction+'()');
		}

	if (AJAX_multiplebloques==1) {
		for (var i=0; i<AJAX_bloque.length; i++) {
			var padre = AJAX_bloque[i];
			padre.innerHTML=XMLRespuesta;
			}
		if (AJAX_namefunction)	
			eval(AJAX_namefunction+'()');
		}
	difuminar(50, 1, 10, 1);

}

//para recargar un elemento cada vez
function recargarBloque(id,url,funcion) 
{
	AJAX_multiplebloques=0;
	var id_hijo = document.getElementById(id);
	var padre = id_hijo.parentNode;
	AJAX_bloque=padre;
	padre.style.zoom = 1;
	AJAX_namefunction=funcion;
	EnviarPeticion (url,RedibujarBloque,Error);

	//return false;
}

//Por si hay que recargar varios elementos a la vez
function recargarBloques(ids,url,funcion) 
{
	AJAX_multiplebloques=1;
	AJAX_bloque = new Array();
	for (var i=0; i<ids.length; i++) {
		var id_hijo = document.getElementById(ids[i]);
		AJAX_bloque[i]=id_hijo.parentNode;
	}
	AJAX_namefunction=funcion;
	EnviarPeticion (url,RedibujarBloque,Error);

	//return false;
}

