	
(function() {
		  
		
	var JSON = false;
	var onComplete = false;
	var idform = false;
	var idElem = false;
	var objXHR = false;
	var debug = false;
	var resp = false;
	
		this.objAjax = function() {
			this.objAjax = ExtendObj (objAjax, objAjax.Methods);
			return objAjax;
			
		};
}
).call(window);


objAjax.Methods = {
	method	: 	'GET',
	pagina 	: 	'',
	param	: 	'',
	objXHR	:	false,
	JSON	:	false,
	onComplete :	false,
	idform	:	false,
	idElem	:	false,
	debug : true,
	
	Update	:	function (pag, param, elem)
					{
						this.pagina = pag;
						this.param = param;
						this.idElem = elem;
						this.enviar();
					},
	newXHR	: 	function ()
					{
						//CREA EL OBJETO REQUEST	
						if ( window.XMLHttpRequest) { // Mozilla, Safari,...
							this.objXHR = new XMLHttpRequest();

							if (this.objXHR.overrideMimeType) 
							{
								this.objXHR.overrideMimeType('text/xml');
							}
						} 
						else if (window.ActiveXObject) 
						{ // IE
								try {
									
									this.objXHR = new ActiveXObject("Msxml2.XMLHTTP");
								} 
								catch (e) {
									try { 
										this.objXHR = new ActiveXObject("Microsoft.XMLHTTP");
									} 
									catch (e) {}
								}
						}
					
						if (!this.objXHR) 
						{
							alert('Falla :( No es posible crear una instancia XMLHTTP');
							return false;
						}
				},

	enviar	:	function ()
					{				

						
						this.newXHR();
						/*
						ExtendObj (this.objXHR, {
								   		JSON : this.JSON,
										onComplete : this.onComplete,
										idform : this.idform,
										idElem : this.idElem
								   });*/
						objXHR = this.objXHR;
						JSON = this.JSON;
						onComplete = this.onComplete;
						idform = this.idform;
						idElem = this.idElem;
						debug = this.debug;
						
						if (this.method == 'GET')
						{
							Cargando(true);	
							this.objXHR.onreadystatechange = this.callback;
							this.objXHR.open(this.method, this.pagina+'?'+this.param+'&r=' + Math.random(), true);
							this.objXHR.send(null);
						}
						if (this.method == 'POST')
						{
							Cargando(true);				
							this.objXHR.onreadystatechange = this.callback;
							this.objXHR.open(this.method, this.pagina+'?r=' + Math.random(), true); 
							this.objXHR.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1'); 
							this.objXHR.send(CamposFormulario (this.idform)); 
						}
						this.objXHR = false;
					},
					
	callback	:	function ()
						{
							if (objXHR.readyState == 4) 
							{
								if (objXHR.status == 200) 
								{
									resp = null;
									
									if (!JSON || idElem)
										resp = unescape(objXHR.responseText).replace(/\+/g,' ');
									else
									{ 
										resp = eval("(" + unescape(objXHR.responseText).replace(/\+/g,' ') + ")");
									}
									
									if (idElem)
									{
										document.getElementById(idElem).innerHTML = resp;
									}
									else
									{
										if (!onComplete)
										{
											Proceso (resp);
										}
										else
										{
											onComplete(resp);
										}
									}
									
								} 
								else 
								{
									alert('Hubo problemas con la peticion. Error N '+objXHR.status);
									
									if (debug)
									{
										var w = window.open("", "","fullscreen=0,toolbar=0,location=0,directories=0,status=0,width=500px,height=500px,dependent=1,alwaysRaised,alwaysLowered=no,z-lock=yes,tilebar=no,menubar=0,scrollbars=1,resizable=1,left=" + (window.screen.width  - 500) / 2 + ",top=" + (window.screen.height-500) / 2);
										w.document.write(objXHR.responseText);
									}
            					}
								
								Cargando(false);
								if (idform)
								{
									DesbloqueoForm(idform);
								}
							}
						}

	
};

function ExtendObj (dest, src)
{
  for (var property in src)
  {
    dest[property] = src[property];	
  }
 return dest;
}


function CamposFormulario (id)
{
	
	var Formulario = document.getElementById(id); 
	var longitudFormulario = Formulario.elements.length; 
	var cadenaFormulario = "" 
	var sepCampos 
	sepCampos = "" 
	for (var i=0; i <= Formulario.elements.length-1;i++) 
	{ 
		cadenaFormulario += sepCampos+Formulario.elements[i].name+'='+encodeURI( Formulario.elements[i].value); 
		sepCampos="&";
		Formulario.elements[i].disabled = true; //BLOQUEA LOS ELEMENTOS DEL FORMULARIO
	} 
	return cadenaFormulario;
}

function DesbloqueoForm (id)
{
	//DESBLOQUEA LOS ELEMENTOS DEL FORMULARIO
	var Formulario = document.getElementById(id); 
	for (var i=0; i <= Formulario.elements.length-1;i++) 
	{ 
		Formulario.elements[i].disabled = false; //DESBLOQUEA LOS ELEMENTOS DEL FORMULARIO
	} 
}

 document.write('<div id="DivCargando" style="position:absolute;background-color:#990000; width:109px; padding:3px;border:1px solid #FFFFFF; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; color:#FAF7F5;display:none;top:4 px;left:6;"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; color:#FAF7F5;"><td>&nbsp;Cargando...</td></tr></table></div>'); 
 
function Cargando (a)
{
	if (a)
	{
		document.getElementById("DivCargando").style.top = document.body.scrollTop+5;
		document.getElementById("DivCargando").style.display = 'block';	
	}
	else
	{
		document.getElementById("DivCargando").style.display = 'none';	
	}
	
}

function AjaxPost (pag, formu, onComplete, json)
{
	var objetoAjax = new objAjax();
	objetoAjax.idform = formu;
	objetoAjax.method = "POST";
	objetoAjax.pagina = pag;
	if(typeof callback != 'undefined')
		objetoAjax.onComplete = callback;
		
	if(typeof json != 'undefined')
		objetoAjax.JSON = json;
	else
		objetoAjax.JSON = false;
		
	objetoAjax.enviar();

}

function AjaxGet (pag, paremetros, callback, json)
{
	var objetoAjax = new objAjax();
	objetoAjax.method = "GET";
	objetoAjax.pagina = pag;
	
	if(typeof callback != 'undefined')
		objetoAjax.onComplete = callback;
		
	if(typeof json != 'undefined')
		objetoAjax.JSON = json;
	else
		objetoAjax.JSON = false;
		
	objetoAjax.param = paremetros;
	objetoAjax.enviar();
	
}

function Ajax (pag)
{
	var aux = pag.split('?');
	pag = aux[0];
	var paremetros = aux[1];
	var objetoAjax = new objAjax();
	objetoAjax.method = "GET";
	objetoAjax.pagina = pag;
	objetoAjax.JSON = false;
	objetoAjax.param = paremetros;
	objetoAjax.enviar();
}


