var ajax = {

	keylatencyinterval:undefined,keylatencylaunched:undefined,keytime:undefined,keylatencytime:10,keylimitlatency:800,	//milisegundos, control de keygrabber
	url:undefined,lastajaxtime:undefined,
	ajaxfield:undefined,

	init:function(){addlistener(window,"load",this.onload.bindAsEventListener(this));},

	onload:function()
	{	/*this.ajaxmsg=document.getElementById("ajaxmsg");
		this.autocompleteobj=document.getElementById("search");
		this.autocomplete=document.getElementById("ajaxautocomplete");
		this.ajaxinfo=document.getElementById("ajaxinfo");  this.ajaxinfo.style.display="none";
		this.ajaxerror=document.getElementById("ajaxerror"); this.ajaxerror.style.display="none";
		this.ajaxloading=document.getElementById("ajaxloading"); this.ajaxloading.style.display="none";
		addlistener(this.autocompleteobj, 'keypress', this.keycontrol.bindAsEventListener(this));
		addlistener(this.autocompleteobj, 'focus', this.focus.bindAsEventListener(this));

		this.autocompleteobj.disabled=false;*/
	},

	error:function(s){  this.ajaxfield.nextSibling.style.display="none";this.ajaxfield.nextSibling.nextSibling.style.display="block"; /*alert(s);*/},
	info:function(s){ /*this.showall(false); this.showinfo(true); this.msg(s);*/ },



	initajax:function()
	{	delete this.ajaxobj;
		if (window.XMLHttpRequest) { this.ajaxobj = new XMLHttpRequest (); } // Si es Mozilla, Safari etc
		else if (window.ActiveXObject)
		{	try { this.ajaxobj = new ActiveXObject ("Msxml2.XMLHTTP"); } //pero si es IE
			catch (e){ try { this.ajaxobj = new ActiveXObject ("Microsoft.XMLHTTP"); } catch(e) { }  } // en caso que sea una versión antigua
		}
		else return false;
		if(this.ajaxobj) return true; else return false;
	},


	launch_search:function(field,flagconduccion)
	{	try
		{	//if(this.autocompleteobj.value.length <= 0) return;
			this.initajax();
			this.lastajaxtime=Math.floor(new Date());
			this.url='/templates/default/modules/empresa/puntosventa/ajax_db.php?time='+this.lastajaxtime+'&op=search&field='+field.name+'&value='+escape(field.value)+'&flagconduccion='+escape(flagconduccion);
			//document.location=(this.url)//.replace(/&/g,"&amp;"));//return;
			//trace(this.url.replace(/&/g,"&amp;"));//return;
			this.ajaxobj.onreadystatechange = this.process_search.bindAsEventListener(this);
			//this.showall(false);this.msg('');this.showloading(true);
	      this.ajaxobj.open('GET', this.url, true); // asignamos los métodos open y send
	   	this.ajaxobj.send(null);
			return;
      }
		catch(e){this.error("js:"+e.message);}
	},

	process_search:function(ajaxobj)
	{  try
		{
			//var ajax=this.ajaxobj;
			if(!(this.ajaxobj.readyState == 4 && (this.ajaxobj.status==200|| window.location.href.indexOf("http")==- 1))) return;
			if(!this.ajaxobj.responseXML || this.ajaxobj.responseXML==null) { this.error("Not XML response"); alert(ajaxobj.responseText);return;}

			//alert(ajaxobj.responseText);

        	var xml  = this.ajaxobj.responseXML;
			var error=eval(xml.getElementsByTagName("error"));
			var info=xml.getElementsByTagName("info");
			var ok=xml.getElementsByTagName("ok");
			var time=eval(xml.getElementsByTagName("time")); if(time && time.length>0) time=time[0].firstChild.data; else time=undefined;

			if(time && time!=this.lastajaxtime) {  alert("ajax jurasica"); return; }

         if(info && info.length>0){ switch(info[0].firstChild.data)
			{	case "NOTFOUND" : this.info("No encontrado"); break;
				default : this.info(info[0].firstChild.data); break;
			} return; }

			if(ok && ok.length>0)
			{
				this.ajaxfield.nextSibling.style.display="none";
				$('buttonprovinciaON').style.display="none";
				$('buttonmunicipioON').style.display="none";
				$('buttonpuntoventaON').style.display="none";

				var op=eval(xml.getElementsByTagName("op")); 			if(op && op.length>0) 			op=op[0].firstChild.data; 			else op=undefined;
				var result=eval(xml.getElementsByTagName("result")); 	if(result && result.length>0)	result=result[0]; 					else result=undefined;

				switch(this.ajaxfield.name)
				{	case 'provincia'  : $('buttonprovinciaON').style.display="block"; $('buttonprovinciaOFF').style.display="none";break;
					case 'municipio'  : $('buttonmunicipioON').style.display="block"; $('buttonmunicipioOFF').style.display="none";break;
					case 'puntoventa' : $('buttonpuntoventaON').style.display="block"; $('buttonpuntoventaOFF').style.display="none";break;
				}

            //this.ajaxfield.nextSibling.nextSibling.nextSibling.style.display="block";

				size=result.getAttribute("size");
				municipio=result.getElementsByTagName("municipio");
				if(municipio && municipio.length>0)
				{	$('municipio').options.length=0;	$('municipio').options[0] = new Option("","");
					for (i=0;i< municipio.length;i++)
					{	o=municipio[i].firstChild.data//.replace(/&/g,"&amp;");
						$('municipio').options[i+1] = new Option(o,o);
					}

					if(municipio.length==1) { $('municipio').value=$('municipio').options[1].value;  $('municipio').nextSibling.nextSibling.nextSibling.nextSibling.style.display="block"; }
				}
            puntoventa=result.getElementsByTagName("puntoventa");
				if(puntoventa && puntoventa.length>0)
				{	$('puntoventa').options.length=0;	if($('puntoventa').options.length>1) {$('puntoventa').options[0] = new Option("","");a=1;}
					for (i=0;i< puntoventa.length;i++)
					{	o=puntoventa[i].firstChild.data//.replace(/&/g,"&amp;");
						$('puntoventa').options[i+1] = new Option(o,puntoventa[i].getAttribute("codigo"));
					}

					if(puntoventa.length==1)
					{ $('puntoventa').value=$('puntoventa').options[1].value;
						$('buttonpuntoventaON').style.display="block"; $('buttonpuntoventaOFF').style.display="none";
					  	$('buttonmunicipioON').style.display="none"; $('buttonmunicipioOFF').style.display="block";
				   }
				}


				return;
			}
			this.error("ok - bad XML resp.format"); alert(this.ajaxobj.responseText);
      }
		catch(e){ this.error("js:"+e.message);}
	},



	select:function(obj,flagconduccion)
	{ 	this.ajaxfield=obj;
     	$('buttonprovinciaON').style.display="none"; $('buttonprovinciaOFF').style.display="block";
		$('buttonmunicipioON').style.display="none"; $('buttonmunicipioOFF').style.display="block";
		$('buttonpuntoventaON').style.display="none"; $('buttonpuntoventaOFF').style.display="block";


		switch(obj.name)
		{	case 'provincia':	$('municipio').options.length=0;
									$('puntoventa').options.length=0;
									if(!this.ajaxfield.value){ return;}
									this.ajaxfield.nextSibling.nextSibling.style.display="none";
									this.ajaxfield.nextSibling.style.display="block";

									this.launch_search(obj,flagconduccion);
									break;
			case 'municipio': $('puntoventa').options.length=0;
									if(!this.ajaxfield.value){ $('buttonprovinciaON').style.display="block";$('buttonprovinciaOFF').style.display="none"; return;}
									this.ajaxfield.nextSibling.nextSibling.style.display="none";
									this.ajaxfield.nextSibling.style.display="block";
									this.launch_search(obj,flagconduccion);

									break;
			case 'puntoventa':if(this.ajaxfield.value){ 	$('buttonpuntoventaON').style.display="block"; $('buttonpuntoventaOFF').style.display="none";return;}

									break;
		}


	}

}

ajax.init();