function WAJAX_findObj(n, d) 
{
	var p,i,x;
	if(!d) d=document;
	if((p=n.indexOf("?"))>0&&window.parent.frames.length) 
	{
		d=window.parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
	}
	if(!(x=d[n])&&d.all)
		x=d.all[n];
	for (i=0;!x&&i<d.forms.length;i++)
		x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) 
		x=WAJAX_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) 
		x=d.getElementById(n);
	return x;
}
function WAJAX_validar(e) {
    tecla = (document.all) ? e.keyCode : e.which;
    if (tecla==8 || tecla==0) return true; //Tecla de retroceso (para poder borrar)
    patron = /\d|\./; //ver nota
    te = String.fromCharCode(tecla);
    return patron.test(te); 
} 
function WAJAX_revalid(obj)
{
	var cad="";
	for(i=0;i<obj.value.length;i++)
	{
		te=obj.value.substr(i,1).charCodeAt(0);
		if(te>=48 && te<=58)
			cad+=obj.value.substr(i,1);
		else if(obj.value.substr(i,1)=='.')
			cad+=obj.value.substr(i,1);
	}
	obj.value=cad;
}
function WAJAX_validareur(e) {
    tecla = (document.all) ? e.keyCode : e.which;
    if (tecla==8 || tecla==0) return true; //Tecla de retroceso (para poder borrar)
    patron = /\d|\,/; //ver nota
    te = String.fromCharCode(tecla);
    return patron.test(te); 
} 
function WAJAX_revalideur(obj)
{
	var cad="";
	for(i=0;i<obj.value.length;i++)
	{
		te=obj.value.substr(i,1).charCodeAt(0);
		if(te>=48 && te<=58)
			cad+=obj.value.substr(i,1);
		else if(obj.value.substr(i,1)==',')
			cad+=obj.value.substr(i,1);
	}
	obj.value=cad;
}
function ClearList(List)
{
	obj=WAJAX_findObj(List);
	if(!obj)
	{
		return;
	}
	obj.innerHTML="";
}
function Makeajax()
{
	var req=false;
	if(window.XMLHttpRequest && !(window.ActiveXObject))
	{
		try
		{
			req=new XMLHttpRequest();
		}	
		catch(e)
		{
			/*Error*/
		}
	}
	else if(window.ActiveXObject)
	{
		try
		{
			req=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				req=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
				/*Error*/
			}
		}
	}
	return req;
}
function AddEvent(variable,functionname,evento)
{
	var obj=variable;
	if(window.addEventListener)
	{
		eval('obj.addEventListener("'+evento+'",'+functionname+',false);');
	}
	else
	{
		eval('obj.detachEvent("'+evento+'",'+functionname+',false);');
	}
	return obj;
}
function ShowHidediv(div,show,width,height)
{
	var obj=WAJAX_findObj(div);
	if(obj)
	{
		if(show)
		{
			obj.style.width=width;
			obj.style.height=height;
			obj.style.visibility="visible";
			obj.style.overflow="auto";
		}
		else
		{
			obj.style.height="1px";obj.style.width="1px";
			obj.style.overflow="scroll";
			obj.style.visibility="hidden";
		}
	}
}
function Hidediv(width,height)
{
	ShowHidediv("divload",false,width,height);
}
function WAJAX(name)
{
	this.name=name;
	this.url="";
	this.apdiv=true;
	this.type="POST";
	this.divload="";
	this.dwidth="auto";
	this.dheight="auto";
	this.dato="";
	this.async=true;
	this.username="";
	this.password="";
	this.xmlhttp=false;
	this.headers=new Array();
	this.headers['Header']=new Array();
	this.headers['Value']=new Array();
	this.error="";
	this.shDiv=function(Show)
	{
		if(this.divload!="")
			ShowHidediv(this.divload,Show,this.dwidth,this.dheight);
	};
	this.setHeader=function(Header,Value)
	{
		if(this.xmlhttp)
		{
			this.xmlhttp.setRequestHeader(Header,Value);
		}
	};
	this.send=function()
	{
		if(this.xmlhttp)
		{
			if(this.dato!="")
			{
				this.xmlhttp.send(this.dato);
			}
			else
			{
				this.xmlhttp.send();
			}
		}
	};
	this.onOpen=function()
	{
		return;
	};
	this.onSend=function()
	{
		return;
	};
	this.onRecive=function()
	{
		return;
	};
	this.onError=function()
	{
		return;
	};
	this.onLoad=function()
	{
		return;
	};
	this.progress=function()
	{
		return;
	};
	this.Hnd=function()
	{
		if(this.xmlhttp)
		{
			this.progress();
			switch (this.xmlhttp.readyState)
			{
				case 1:
					this.onOpen();
					break;
				case 2:
					this.onSend();
					break;
				case 3:
					this.onRecive();
					break;
				case 4:
					this.error="";
					if(this.apdiv==false)
					{
						this.shDiv(false);
					}
					if(this.xmlhttp.status>207)
					{
						switch(this.xmlhttp.status)
						{
							case 404: 
								this.error="Ups! no existe dirección";
								break;
							case 500: 
								this.error="Ups! error en el servidor";
								break;
							default: 
								this.error="Ups! error de procesamiento de página"+this.xmlhttp.status;
						}
						this.onError();
					}
					else
					{
						this.onLoad();
					}
					if(this.apdiv==true)
					{
						this.shDiv(false);
					}
					this.xmlhttp.abort();
					break;
			}
		}
	};
	this.getText=function()
	{
		if(this.xmlhttp)
		{
			return this.xmlhttp.responseText;
		}
		return "";
	};
	this.getXml=function()
	{
		if(this.xmlhttp)
		{
			if(this.xmlhttp.responseXML)
			{
				return this.xmlhttp.responseXML;
			}
			else
			{
				return false;
			}
		}
		return false;
	};
	this.open=function(type)
	{
		if(this.username!="")
		{
			this.xmlhttp.open(type, this.url,this.async,this.username,this.password);
		}
		else
		{
			this.xmlhttp.open(type, this.url,this.async);
		}
	};
	this.sendGet=function()
	{
		if(this.xmlhttp)
		{
			this.shDiv(true);
			this.open("GET");
			this.xmlhttp.send();
		}
	};
	this.sendPost=function()
	{
		if (this.xmlhttp)
		{
			this.shDiv(true);
			this.open("POST");
			this.setHeader('Content-Type','application/x-www-form-urlencoded');
			this.send();
		}
	};
	this.openSend=function()
	{
		var i=0;
		if(this.xmlhttp)
		{
			this.shDiv(true);
			this.open(this.type);
			for(i=0;i<this.headers['Header'].length;i++)
			{
				this.setHeader(this.headers['Header'][i],this.headers['Value']);
			}
			this.send();
		}
	};
	this.arrayElementsxml=function(element)
	{
		var info=new Array();
		if(!this.xmlhttp)
		{
			return info;
		}
		xml=this.getXml();
		if(!xml)
		{
			return info;
		}
		var value='';
		for(i=0;i<xml.getElementsByTagName(element).length;i++)
		{
			value='';
			
			if(xml.getElementsByTagName(element)[i])
			{
				if(xml.getElementsByTagName(element)[i].textContent)
				{
					value=xml.getElementsByTagName(element)[i].textContent;
				}
				else if(xml.getElementsByTagName(element)[i].firstChild)
				{
					if(xml.getElementsByTagName(element)[i].firstChild.data)
					{
						value=xml.getElementsByTagName(element)[i].firstChild.data;
					}
				}
			}
			info[i]=value;
		}
		return info;
	};
	this.arrayValuesxml=function(ftext,fvalue,err)
	{
		if(!this.xmlhttp)
		{
			return false;
		}
		xml=this.getXml();
		if(!xml)
		{
			return false;
		}
		if(xml.getElementsByTagName(err).length>0)
		{
			if(xml.getElementsByTagName(err)[0].textContent)
			{
				alert(xml.getElementsByTagName(err)[0].textContent);
			}
			return false;
		}
		var info=new Array();
		
		for(i=0;i<xml.getElementsByTagName(fvalue).length;i++)
		{
			text="";
			if(xml.getElementsByTagName(ftext)[i])
			{
				if(xml.getElementsByTagName(ftext)[i].textContent)
				{
					text=xml.getElementsByTagName(ftext)[i].textContent;
				}
				else if(xml.getElementsByTagName(ftext)[i].firstChild)
				{
					if(xml.getElementsByTagName(ftext)[i].firstChild.data)
					{
						text=xml.getElementsByTagName(ftext)[i].firstChild.data;
					}
				}
			}
			value="";
			if(xml.getElementsByTagName(fvalue)[i])
			{
				if(xml.getElementsByTagName(fvalue)[i].textContent)
				{
					value=xml.getElementsByTagName(fvalue)[i].textContent;
				}
				else if(xml.getElementsByTagName(fvalue)[i].firstChild)
				{
					if(xml.getElementsByTagName(fvalue)[i].firstChild.data)
					{
						value=xml.getElementsByTagName(fvalue)[i].firstChild.data;
					}
				}
			}
			info[i]=new Array();
			info[i]['Value']=value;
			info[i]['Text']=text;
		}
		return info;
	};
	this.Loadlist=function(obj,ftext,fvalue,err)
	{
		if(obj!="" && obj!="undefined")
		{
			if(this.xmlhttp)
			{
				var xml=this.getXml();
				if(xml)
				{
					if(xml.getElementsByTagName(err).length<=0)
					{
						var s=WAJAX_findObj(obj);
						if(s)
						{
							s.innerHTML="";
							for(i=0;i<xml.getElementsByTagName(ftext).length;i++)
							{
								text="";
								if(xml.getElementsByTagName(ftext)[i])
								{
									if(xml.getElementsByTagName(ftext)[i].textContent)
									{
										text=xml.getElementsByTagName(ftext)[i].textContent;
									}
									else if(xml.getElementsByTagName(ftext)[i].firstChild)
									{
										if(xml.getElementsByTagName(ftext)[i].firstChild.data)
										{
											text=xml.getElementsByTagName(ftext)[i].firstChild.data;
										}
									}
								}
								value="";
								if(xml.getElementsByTagName(fvalue)[i])
								{
									if(xml.getElementsByTagName(fvalue)[i].textContent)
									{
										value=xml.getElementsByTagName(fvalue)[i].textContent;
									}
									else if(xml.getElementsByTagName(fvalue)[i].firstChild)
									{
										if(xml.getElementsByTagName(fvalue)[i].firstChild.data)
										{
											value=xml.getElementsByTagName(fvalue)[i].firstChild.data;
										}
									}
								}
								if(s.options)
								{
									s.options[i]=new Option(" " + text + " ",value,false,false);
								}
							}
						}
					}
				}
			}
		}
	};
	this.close=function()
	{
		clearInterval(this.timer);
	};
	this.xmlhttp=Makeajax();
	if (!window.WAJAX)
	{
		window.WAJAX=new Array();
		window.WAJAX.Version="1.0";
		window.WAJAX.Author="Rodrigo José Prado Mendoza";
	}
	window.WAJAX[this.name]=this;
	if(window.WAJAX[this.name])
	{
		this.timer=setInterval("window.WAJAX['" + this.name + "'].Hnd()",4);
	}
}
