//LSCA. Manubes 27/Junio/2011
function AutoSuggest(elem,sCol)
{
	var me = this;
	this.elem = elem;
	this.suggestions = elem;
	this.eligible = new Array();
	this.inputText = null;
	this.highlighted = -1;
	this.div = document.getElementById("autosuggest");
	
	var TAB = 9;
	var ESC = 27;
	var KEYUP = 38;
	var KEYDN = 40;
	var ENTRAR = 13;
	
	elem.setAttribute("autocomplete","OFF");

	if(!elem.id)
	{
		var id = "autosuggest" + idCounter;
		idCounter++;
		elem.id = id;
	}

	elem.onkeydown = function(ev)
	{
		var key = me.getKeyCode(ev);
		switch(key)
		{
			case TAB:
			me.useSuggestion();
			break;
			
			case ENTRAR:
			me.useSuggestion();
			break;

			case ESC:
			me.hideDiv();
			break;

			case KEYUP:
			break;

			case KEYDN:
			break;
		}
	};
	elem.onkeyup = function(ev) 
	{
		var key = me.getKeyCode(ev);
		switch(key)
		{
			case TAB:
			me.useSuggestion();
			break;
			
			case ENTRAR:
			me.useSuggestion();
			break;

			case ESC:
			me.hideDiv();
			break;

			case KEYUP:
			break;

			case KEYDN:
			break;
			
			default:
			if (this.value != me.inputText && this.value.length > 0)
			{
				me.inputText = this.value;
				me.inputText = this.value;
				me.getEligible();
				me.createDiv();
				me.positionDiv();
				me.showDiv();
			}
			else
			{
				//me.hideDiv();
			}
		}
};

this.useSuggestion = function()
{
	if (this.highlighted > -1)
	{
		this.elem.value = this.eligible[this.highlighted];
		this.hideDiv();
	}
};

this.showDiv = function()
{
	this.div.style.position= 'absolute';
	this.div.style.zIndex=999999;
	this.div.style.top='auto';
	//this.div.style.marginTop=53;
	this.div.style.display = 'block';
};

this.hideDiv = function()
{
	this.div.style.display = 'none';
	this.highlighted = -1;
};

this.changeHighlight = function()
{
	var lis = this.div.getElementsByTagName('LI');
	for (i in lis)
	{
		var li = lis[i];
		if (this.highlighted == i)
		{
			li.className = "selected";
		}
		else
		{
			li.className = "";
		}
	}
};

this.positionDiv = function()
{
	var el = this.elem;
	var x = 0;
	var y = el.offsetHeight;

	while (el.offsetParent && el.tagName.toUpperCase() != 'BODY')
	{
		x += el.offsetLeft;
		y += el.offsetTop;
		el = el.offsetParent;
	}
	x += el.offsetLeft;
	y += el.offsetTop;
	x = el.offsetLeft;
	y = el.offsetTop + 20;
	this.div.style.left = x + 'px';
	this.div.style.top = y + 'px';
	this.div.style.zIndex = 99999;
};

this.createDiv = function()
{
	var ul = document.createElement('ul');
	for (i in this.eligible)
	{
		var word = this.eligible[i];
		word=this.div.style.position='absolute'
		word=this.div.style.zIndex=99999
		var li = document.createElement('li');
		var a = document.createElement('a');
		a.href="javascript:false";
		a.innerHTML = word;
		li.appendChild(a);
		if (me.highlighted == i){li.className = "selected";}
		ul.appendChild(li);
	}

	ul.onmouseover = function(ev)
	{
		var target = me.getEventSource(ev);
		while (target.parentNode && target.tagName.toUpperCase() != 'LI'){target = target.parentNode;}
		var lis = me.div.getElementsByTagName('LI');
		for (i in lis)
		{
			var li = lis[i];
			if(li == target)
			{
				me.highlighted = i;
				break;
			}
		}
		me.changeHighlight();
	};

	ul.onclick = function(ev)
	{
		me.useSuggestion();
		me.hideDiv();
		me.cancelEvent(ev);
		return false;
	};
		
	ul.onKeyUp = function(ev)
	{
		me.useSuggestion();
		//me.hideDiv();
		me.cancelEvent(ev);
		return false;
	};
	
	this.div.className="suggestion_list";
	this.div.style.position = 'absolute';
};

this.getEligible = function()
{
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	{
		alert ("Su navegador no soporta aplicaciones AJAX!");
		return;
	} 
	var url="gethint.asp";
	url=url+"?q="+this.elem.value;
	url=url+"&sid="+Math.random();
	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
};

this.getKeyCode = function(ev)
{
	if(ev)			//Moz

	{
		return ev.keyCode;
	}
	if(window.event)	//IE
	{
		return window.event.keyCode;
	}
};

this.getEventSource = function(ev)
{
	if(ev)			//Moz
	{
		return ev.target;
	}

	if(window.event)	//IE
	{
		return window.event.srcElement;
	}
};

this.cancelEvent = function(ev)
{
	if(ev)			//Moz
	{
		ev.preventDefault();
		ev.stopPropagation();
	}
	if(window.event)	//IE
	{
		window.event.returnValue = false;
	}
}
}

function pulsaTecla(e) { //ESTA NO HUBO DE OTRA TENIA QUE METERLA. LSCA. MANUBES 24/JUNIO/2011
  var Tecla=event.keyCode;
  if (Tecla==40)  
  {	  //alert("sale Manubes, ya estuvo, FLECHA ABAJO");
	  document.getElementById("sCol").focus(); //ESTE FUÉ EL BUENO PARA LAS FLECHAS LSCA. MANUBES 20/JUNIO/2011
  }
  if (Tecla==9)
  {  //alert("sale Manubes, ya estuvo, TAB");
      document.getElementById("cveedociu").value=document.getElementById("sCol").value;
	  var lacol = document.getElementById("sCol");
	  document.getElementById("localidad").value= lacol[document.getElementById("sCol").selectedIndex].text;
	  document.getElementById("sCol").style.display='none';
	  document.getElementById("propertymls_1").select();		  
  }
  if (Tecla==27)
  {  //alert("sale Manubes, ya estuvo, ESC");
	  document.getElementById("sCol").style.display='none';
	  document.getElementById("localidad").value="";
	  document.getElementById("localidad").select();
  }
}

var idCounter = 0;

function stateChanged()
{
	if (xmlHttp.readyState==4)
	{
		document.getElementById("autosuggest").innerHTML=xmlHttp.responseText;
		if (document.getElementById("localidad").select)
		{
			document.onkeydown = pulsaTecla;
		}
	}
}

function GetXmlHttpObject()
{
  var xmlHttp=null;
  try
  {
    xmlHttp=new XMLHttpRequest();  // Firefox, Opera 8.0+, Safari
  }
  catch (e)
  {
  	try   // Internet Explorer
	{
    	xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  	}
  	catch (e)
  	{
    	xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  	}
  }
  return xmlHttp;
}

function GetChar (event){
	var characterCode = event.charCode;
	if (characterCode == undefined) {characterCode = event.keyCode;}
	if (characterCode == 13 || characterCode == 10)
	{ 
	document.getElementById("cveedociu").value=document.getElementById("sCol").value;
	var lacol = document.getElementById("sCol");
	document.getElementById("localidad").value= lacol[document.getElementById("sCol").selectedIndex].text;
	document.getElementById("autosuggest").style.display = 'none';
	}
}

function GetClickauto(){
	document.getElementById("cveedociu").value=document.getElementById("sCol").value;
	var lacol = document.getElementById("sCol");
	document.getElementById("localidad").value= lacol[document.getElementById("sCol").selectedIndex].text;
	document.getElementById("autosuggest").style.display = 'none';
}
