function ajax(Pagina,contenedor)
{
	this.VarPost="";
	this.PostCarga="";
	this.Parametros=new Array();
	this.PreCarga="";
	this.Metodo="POST";
	this.objPagina=null;
	this.urlPagina=Pagina;
	this.Contenedor=contenedor;
	this.Mostrar=true;
	this.Clase=window;
	this.Datos="";
		
	this.CreaActiveX = function()
	{
		if (window.XMLHttpRequest)
		{// Si es Mozilla, Safari etc
			this.objPagina = new XMLHttpRequest();
		} 
		else if (window.ActiveXObject)
		{
			// pero si es IE
			try 
			{
				this.objPagina = new ActiveXObject ("Msxml2.XMLHTTP");
			}
			catch (e)
			{
			// en caso que sea una versión antigua
				try
				{
					this.objPagina = new ActiveXObject ("Microsoft.XMLHTTP");
				}
				catch (e)
				{}
			}
		}	
		
	}

	this.CambioEstado=function()
	{ // función de respuesta
		if(this.objPagina.readyState == 4 && (this.objPagina.status==200 || window.location.href.indexOf("http")==-1))
		{
			if(this.objPagina.status==200)
			{
				if(this.Mostrar)
					this.MuestraResultado();
				else
					this.Resultado();

				EjecutaPost(this.PostCarga,this.Parametros);
			}
			else
				this.Error();
		}
	}

	this.Cargar=function()
	{
		this.CreaActiveX();
		if(this.objPagina==null)
		{
			alert("el navegador no soporta ajax");
			return;
		}
		
		var Pagina=this;
		this.objPagina.onreadystatechange=function()
		{
			Pagina.CambioEstado();
		}

		if(this.Metodo=="POST")
		{
			this.objPagina.open('POST', this.urlPagina, true) // asignamos los métodos open y send
			this.objPagina.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			this.objPagina.send(this.VarPost);
		}
		else
		{
			this.objPagina.open('GET', this.urlPagina+"?"+this.VarPost, true) // asignamos los métodos open y send
			this.objPagina.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			this.objPagina.send("");
		}		
		
	}

	this.MuestraResultado=function()
	{
		var resultado=this.objPagina.responseText;
		document.getElementById(this.Contenedor).innerHTML=resultado;	
	}

	this.Resultado=function()
	{
		this.Datos=this.objPagina.responseText;
	}

//Funciones de error
	this.Error=function()
	{
		switch(this.objPagina.status)
		{
			case 403:
				alert("no tiene permisos");
			break;
			case 404:
				alert("Pagina no encontrada");
			break;
			case 500:
				alert("no se encuentra la pagina");
			break;
		}
	}

//funciones privadas

	//funcion mientras carga la paginas
	
	this.CambioEstado=function()
	{ // función de respuesta
		if(this.objPagina.readyState == 4 && (this.objPagina.status==200 || window.location.href.indexOf("http")==-1))
		{
			if(this.objPagina.status==200)
			{
				this.MuestraResultado();
				this.EjecutaPost(this.PostCarga,this.Parametros);
			}
			else
				this.Error();
		}
	}

	//funciones de ejecucion despues de cargar la paginas
	this.EjecutaPost=function(NombreFuncion,Parametros)
	{
		if(NombreFuncion!="")
		{
			var func;
			func=this.Clase[NombreFuncion];
			func.apply(this.Clase,Parametros)
		}
	}
	
}


var carga=false;
var dispara_ajax=null;
var variables="";
function recarga_contenido(nmbPag,html,funcion_ajax)
{
	carga=false;
	var pagina_php = false
	if (window.XMLHttpRequest)
	{// Si es Mozilla, Safari etc
		pagina_php = new XMLHttpRequest()
	} 
	else if (window.ActiveXObject)
	{
		//pero si es IE
		try 
		{
			pagina_php = new ActiveXObject ("Msxml2.XMLHTTP");
		}
		catch (e)
		{
		//en caso que sea una versión antigua
			try
			{
				pagina_php = new ActiveXObject ("Microsoft.XMLHTTP");
			}
			catch (e)
			{}
		}
	}	

 	pagina_php.onreadystatechange=function()
	{ // función de respuesta
		cargarpagina_contenido(pagina_php,html,funcion_ajax)
	}
	

	var tipo=nmbPag.split(".");
	if(tipo[1]=="php" || tipo[1]=="php5")
	{
		pagina_php.open('POST', nmbPag, true) // asignamos los métodos open y send
		pagina_php.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		pagina_php.send(variables);
	}
	else
	{
		pagina_php.open('GET', nmbPag+"?"+variables, true) // asignamos los métodos open y send
		pagina_php.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		pagina_php.send("");
	}
}

function cargarpagina_contenido(pagina_php,html,funcion_ajax)
{
	var cargando=document.getElementById("cargando");
	if (pagina_php.readyState == 4 && (pagina_php.status==200 || window.location.href.indexOf("http")==-1))
	{	
		resultado=pagina_php.responseText.split("#->");
		document.getElementById(html).innerHTML=resultado[0];
		if(resultado.length>1)
		{
			objeto=resultado[1].split("=");
			objetoID=document.getElementById(objeto[0]);
			switch(objetoID.type)
			{
				case "hidden":
					objetoID.value=objeto[1];
				break;
			}
		}
		cargando.style.display="none";
		variables="";
		carga=true;
		if(funcion_ajax!=null)
			funcion_ajax();
		dispara_ajax=null;
	}
	else
		cargando.style.display="block";

	if(pagina_php.readyState==4)
	{
		switch(pagina_php.status)
		{
			case 403:
				alert("no tiene permisos");
			break;
			case 404:
				alert("Pagina no encontrada");
			break;
			case 500:
				alert("no se encuentra la pagina");
			break;
		}
	}
}


