/*
///AJAXobj.js V3.1 by Josware
///Credits always appreciated
///--- J05
*/

function cnx(uri)
	{
	try
	{
		var XMLHttp = false;

		if(window.XMLHttpRequest)
		{
			XMLHttp = new XMLHttpRequest()
			return XMLHttp;
		}
		else if (window.ActiveXObject)
		{
		var versiones = ["Msxml2.XMLHTTP.7.0","Msxml2.XMLHTTP.6.0",
						  "Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0",
						  "Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP",
						  "Microsoft.XMLHTTP"];
			for (var i=0; i<versiones.length; i++)
			{
				try
				{	//BUG explorer 6 (que raro)
					//Una suerte que antes de ser AJAX era 1.0, so la pagina soporta cargar el video
					/*	var leVid = uri.substring(24);
					 *	if(i>0){window.location =  leVid;}
					 */
					XMLHttp = new ActiveXObject(versiones[i]);
					if (XMLHttp)
					{
						//En debug te dice que XMLHTTP esta devolviendo: alert(versiones[i]);
						return XMLHttp
						break;
					}
				}
			catch (e) {};
			}
				if(!XMLHttp)
				{
					alert('No se pudo iniciar la instancia');
					return null
				}
		}

	}
	catch(e){ 
			var custom = '';
			sender = "funcion cnx"; errhnd(e, sender, custom); 
		}
	}

//----------------------------------------------------------------------------------------------------

	function testload ()
	{
	try
	{
		if (this.div != null) 
		{
			var refDiv = document.getElementById(this.div);
			if (refDiv != null){refDiv.innerHTML = 'Cargando';} 
			else {alert('NO EXISTE DIV con el id especificado ('+ this.div + ')' +
			' Si eso esta bien, para desactivar este mensaje utiliza AJAXobj3nDiv(str div, str uri)');
			niuDIV(this.div);}
		}
		else
		{
			alert('NO se ha ESPECIFICADO div para: ' + this.name);
		}
		
		this.xcnx.onreadystatechange=maneja
		this.xcnx.open('GET', this.url, true)
		this.xcnx.send(null);
		
	}
	catch(e){ 
			var custom = 'Revisa que el ID del div esta ANTES de que lo mandas llamar';
			sender = "funcion testload"; errhnd(e, sender, custom); 
		}
	}
	//----------------------------------------------------------------------------------------------------

	function load_wDiv ()
	{
	try
	{
		if (this.div != null) 
		{
		    niuDIV(this.div);
			var refDiv = document.getElementById(this.div);
			refDiv.innerHTML = 'Cargando';
		}
		else
		{
			alert('NO se ha ESPECIFICADO div para: AJAXobj3nDiv ' + this.name);
		}
		
		this.xcnx.onreadystatechange=maneja
		this.xcnx.open('GET', this.url, true)
		this.xcnx.send(null);
		
	}
	catch(e){ 
			var custom = 'Revisa que el ID del div esta ANTES de que lo mandas llamar';
			sender = "funcion testload"; errhnd(e, sender, custom); 
		}
	}
	
//----------------------------------------------------------------------------------------------------

	function AJAXobj(name, div, uri)
	{
	try
	{
		this.xcnx = new cnx(uri);
		this.load = testload;
		this.name = name;
		this.rpl = null;
		this.stat = null;
		this.show = muestra;
		this.div = div;
		this.url = uri;

	}
	catch(e){ 
			var custom = '';
			sender = "funcion AJAXobj"; errhnd(e, sender, custom); 
		}
	}



//----------------------------------------------------------------------------------------------------

	function maneja()
	{
	try
	{
		if(this.readyState == 4) 
		{

			return unescape(this.responseText)
			
		}
		else
		{
			return this.readyState
		}
	}
	catch(e){ 
			var custom = '';
			sender = "funcion maneja"; errhnd(e, sender, custom); 
		}
	}

//----------------------------------------------------------------------------------------------------

function muestra (refOBJ) 
	{
	try
	{

		if(refOBJ.xcnx.readyState == 4) 
		{
			var refDiv = document.getElementById(refOBJ.div);
			//Con prototype: var refDiv = $(refOBJ.div);
			refDiv.innerHTML = unescape(refOBJ.xcnx.responseText);
		}
		else
		{
			var refDiv = document.getElementById(refOBJ.div);
			//Con prototype: var refDiv = $(refOBJ.div);
			refDiv.innerHTML += '.';
			var delay = 100;
			setTimeout( function() {muestra(refOBJ)}, delay)
		}
	}
	catch(e){ 
			var custom = '';
			sender = "---funcion muestra"; errhnd(e, sender, custom); 
		}
	}

//----------------------------------------------------------------------------------------------------
function muestra2 () 
	{
		var refOBJ = this;
		refOBJ.load();
	try
	{

		if(refOBJ.xcnx.readyState == 4) 
		{
			var refDiv = document.getElementById(refOBJ.div);
			//Con prototype: var refDiv = $(refOBJ.div);
			refDiv.innerHTML = unescape(refOBJ.xcnx.responseText);
		}
		else
		{
			var refDiv = document.getElementById(refOBJ.div);
			//Con prototype: var refDiv = $(refOBJ.div);
			refDiv.innerHTML += '.';
			var delay = 100;
			setTimeout( function() {muestra(refOBJ)}, delay)
		}
	}
	catch(e){ 
			var custom = '';
			sender = "funcion muestra2"; errhnd(e, sender, custom); 
		}
	}

//----------------------------------------------------------------------------------------------------
function AJAXobj2(name, div, uri)
	{
		alert("entre AJAXobj y AJAXobj3 los cambios fueron internos, de hecho NO existio un contstructor para AJAXobj2.\n" +
			  "Por favor utiliza AJAXobj3, es la onda\n---J05");
	}
//----------------------------------------------------------------------------------------------------
	function AJAXobj3(div, uri)
	{
	try
	{
		this.xcnx = new cnx(uri);
		this.load = testload; //needed from show() (ver maneja2())
		this.name = null;
		this.rpl = null;
		this.stat = null;
		this.show = muestra2;
		this.div = div;
		this.url = uri;

		this.show();
	}
	catch(e){ 
			var custom = '';
			sender = "funcion AJAXobj"; errhnd(e, sender, custom); 
		}
	}
//----------------------------------------------------------------------------------------------------
	function AJAXobj3nDiv(div, uri)
	{
	try
	{
		this.xcnx = new cnx(uri);
		this.load = load_wDiv; //needed from show() (ver maneja2())
		this.name = null;
		this.rpl = null;
		this.stat = null;
		this.show = muestra2;
		this.div = div;
		this.url = uri;

		this.show();
	}
	catch(e){ 
			var custom = '';
			sender = "funcion AJAXobj"; errhnd(e, sender, custom); 
		}
	}
//----------------------------------------------------------------------------------------------------
	function niuDIV(name)
	{
	    var div = document.createElement("div");
	    div.id = name;
	    div.innerHTML = "DIV agregado Dynamicamente por: AJAXobj3.1";
	    document.body.appendChild(div);
	}

//----------------------------------------------------------------------------------------------------
function errhnd(e, sener, custom)
	{
	
		alert("funcion (sender):" +
						sender + '\n' + custom + '\n Nombre(name): ' + e.name + '; msg: ' + e.message + 
						'; Descripcion del Error: '  + e.description + '; \n err# ' + e.number + '\n--- J05');
	
	}

//----------------------------------------------------------------------------------------------------	