this.searchfield = function(){
	var id = "searchfield";
	var defaultText = "";	
	var suggestion = true;
	
	var suggestionText = "amazonas, la esmeralda, san fernando de atabapo, puerto ayacucho, isla raton, san juan de manapiare, maroa, san carlos de rio negro, anzoategui, anaco, aragua de barcelona, lecheria, puerto piritu, valle de guanape, pariaguan, guanta, soledad, mapire, puerto la cruz, onoto, san mateo, clarines, cantaura, piritu, el tigrito, boca de uchire, santa ana, barcelona, el tigre, el chaparro, apure, achaguas, biruaca, bruzual, san juan de payara, guasdalito, elorza, san fernando de apure, aragua, san mateo, camatagua, santa rita, maracay, santa cruz, la victoria, el consejo, palo negro, el limon, ocumare de la costa, san casimiro, san sebastian, turmero, las tejerias, cagua, colonia tovar, barbacoas, villa de cura, barinas, sabaneta, el canton, socopo, arismendi, barinas, barinitas, barrancas, santa barbara, obispos, ciudad bolivia, libertad, ciudad de nutrias, bolivar, ciudad guayana, caicara del orinoco, el callao, santa elena de uairen, ciudad bolivar, el palmar, upata, ciudad piar, guasipati, el dorado, maripa, carabobo, bejuma, güigüe, mariara, guacara, moron, tocuyito, los guayos, miranda, montalban, naguanagua, puerto cabello, san diego, san joaquin, valencia, cojedes, ciudad cojedes, el pao, tinaquillo, el baul, macapo, libertad, las vegas, san carlos, tinaco, delta amacuro, curiapo, sierra imataca, pedernales, tucupita, falcon, san juan de los cayos, san luis, capatarida, yaracal, punto fijo, la vela de coro, dabajuro, pedregal, pueblo nuevo, churuguara, jacura, santa cruz de los taques, mene de mauroa, coro, chichiriviche, palma sola, cabure, piritu, tucacas, la cruz de taratara, tocopero, santa cruz de bucaral, urumaco, puerto cumarebo, guarico, camaguan, chaguaramas, el socorro, calabozo, tucupido, altagracia de orituco, san juan de los morros, el sombrero, las mercedes, valle de la pascua, ortiz, zaraza, guayaban, san jose de guaribe, santa maria de ipire, lara, barquisimeto, carora, el tocuyo, quibor, sanare, cabudare, sarare, duaca, siquisique, merida, el vigia, la azulita, santa cruz de mora, aricagua, canagua, ejido, tucani, santo domingo, guaraque, arapuey, torondoy, merida, timones, santa elena de arenales, santa maria de caparo, pueblo llano, mucuchies, bailadores, tabay, lagunillas, tovar, nueva bolivia, zea, miranda, caucagua, barlovento, nuestra señora del rosario de baruta, higuerote, maporal, carrizal, chacao, charallave, santa rosalia de palermo, los teques, santa teresa del tuy, ocumare del tuy, san antonio de los altos, rio chico, santa lucia del tuy, cupira, guarenas, san francisco de yare, cua, petare, guatire, monagas, san antonio de capayacuar, aguasay, caripito, caripe, caicara, punta de mata, temblador, maturin, aragua de maturin, quiriquire, santa barbara, barrancas del orinoco, uracoa, nueva esparta, la plaza de paraguachi, la asuncion, parroquia san juan bautista, el valle del espiritu santo, santa ana, pampatar, juan griego, porlamar, boca de rio, punta de piedras, san pedro de coche, la asuncion, portuguesa, agua blanca, araure, piritu, guanare, guanarito, paraiso de chabasquen, ospino, acarigua, papelon, boconoito, san rafael de onoto, el playon, biscucuy, villa bruzual, sucre, casanay, san jose de aerocuar, rio caribe, el pilar, carupano, marigüitar, yaguaraparo, araya, tunapuy, irapa, san antonio del golfo, cumanacoa, cariaco, cumana, güiria, tachira, cordero, las mesas, san juan de colon, san antonio del tachira, tariba, santa ana del tachira, san rafael del piñal, san jose de bolivar, la fria, palmira, capacho nuevo, la grita, el cobre, rubio, capacho viejo, abejales, lobatera, michelena, coloncito, ureña, delicias, la tendida, san cristobal, seboruco, san simon, queniquea, san josecito, pregonero, umuguena, trujillo, santa isabel, bocono, sabana grande, chejende, carache, escuque, el paradero, campo elias, santa apolonia, el dividive, monte carmelo, motatan, pampan, pampanito, betijoque, carvajal, sabana de mendoza, trujillo, la quebrada, valera, vargas, caraballeda, carayaca, carlos soublette, caruao, catia la mar, el junko, la guaira, macuto, maiquetia, naiguata y raul leoni, yaracuy, san pablo, aroa, chivacoa, cocorote, independencia, sabana de parra, boraure, yumare, nirgua, yaritagua, san felipe, guama, urachiche, farriar, zulia, el toro, san timoteo, cabimas, encontrados, san carlos del zulia, pueblo nuevo, la concepcion, casigua, concepcion, ciudad ojeda, maquiches, san rafael de el mojan, maracaibo, los puertos de altagracia, sinamaica, san francisco, santa rita, tia juana, la villa del rosario, bobures, bachaquero, distrito capital, caracas"; 
	
	var field = document.getElementById(id);	
	var classInactive = "sf_inactive";
	var classActive = "sf_active";
	var classText = "sf_text";
	var classSuggestion = "sf_suggestion";
	this.safari = ((parseInt(navigator.productSub)>=20020000)&&(navigator.vendor.indexOf("Apple Computer")!=-1));
	if(field && !safari){
		//field.value = defaultText;
		field.c = field.className;		
		field.className = field.c + " " + classInactive;
		field.onfocus = function(){
			this.className = this.c + " "  + classActive;
			this.value = (this.value == "" || this.value == defaultText) ?  "" : this.value;
		};
		/*field.onblur = function(){
			this.className = (this.value != "" && this.value != defaultText) ? this.c + " " +  classText : this.c + " " +  classInactive;
			this.value = (this.value != "" && this.value != defaultText) ?  this.value : defaultText;
			clearList();
		};*/
		if (suggestion){
			
			var selectedIndex = 0;
						
			field.setAttribute("autocomplete", "off");
			var div = document.createElement("div");
			var list = document.createElement("ul");
			list.style.display = "none";
			div.className = classSuggestion;
			list.style.width = field.offsetWidth + "px";
			div.appendChild(list);
			field.parentNode.appendChild(div);	

			field.onkeypress = function(e){
				
				var key = getKeyCode(e);
		
				if(key == 13)
				{
					selectList();
					selectedIndex = 0;
					//return false;
				};	
			};
				
			field.onkeyup = function(e){
			
				var key = getKeyCode(e);
		
				switch(key){
				case 13:
					return false;
					break;			
				case 27: 
					field.value = "";
					selectedIndex = 0;
					clearList();
					break;				
				case 38:
					navList("up");
					break;
				case 40:
					navList("down");		
					break;
				default:
					startList();			
					break;
				};
			};
			
			this.startList = function(){
				var arr = getListItems(field.value);
				if(field.value.length > 0){
					createList(arr);
				} 
				else 
				{
					clearList();
				};	
			};
			
			this.getListItems = function(value){
				var arr = new Array();
				var src = suggestionText;
				var src = src.replace(/, /g, ",");
				var arrSrc = src.split(",");
				for(i=0;i<arrSrc.length;i++){
					if(arrSrc[i].substring(0,value.length).toLowerCase() == value.toLowerCase()){
						arr.push(arrSrc[i]);
					};
				};				
				return arr;
			};
			
			this.createList = function(arr){				
				resetList();			
				if(arr.length > 0) {
					for(i=0;i<arr.length;i++){				
						li = document.createElement("li");
						a = document.createElement("a");
						a.href = "javascript:void(0);";
						a.i = i+1;
						a.innerHTML = arr[i];
						li.i = i+1;
						li.onmouseover = function(){
							navListItem(this.i);
						};
						a.onmousedown = function(){
							selectedIndex = this.i;
							selectList(this.i);		
							return false;
						};					
						li.appendChild(a);
						list.setAttribute("tabindex", "-1");
						list.appendChild(li);	
					};	
					list.style.display = "block";				
				} else {
					clearList();
				};
			};	
			
			this.resetList = function(){
				var li = list.getElementsByTagName("li");
				var len = li.length;
				for(var i=0;i<len;i++){
					list.removeChild(li[0]);
				};
			};
			
			this.navList = function(dir){			
				selectedIndex += (dir == "down") ? 1 : -1;
				li = list.getElementsByTagName("li");
				if (selectedIndex < 1) selectedIndex =  li.length;
				if (selectedIndex > li.length) selectedIndex =  1;
				navListItem(selectedIndex);
			};
			
			this.navListItem = function(index){	
				selectedIndex = index;
				li = list.getElementsByTagName("li");
				for(var i=0;i<li.length;i++){
					li[i].className = (i==(selectedIndex-1)) ? "selected" : "";
				};
			};
			
			this.selectList = function(){
				// Fix by Sten
				if(selectedIndex)
				{
					li = list.getElementsByTagName("li");	
					a = li[selectedIndex-1].getElementsByTagName("a")[0];
					field.value = a.innerHTML;
					clearList();
				}
			};			
			
		};
	};
	
	this.clearList = function(){
		if(list){
			list.style.display = "none";
			selectedIndex = 0;
		};
	};		
	this.getKeyCode = function(e){
		var code;
		if (!e) var e = window.event;
		if (e.keyCode) code = e.keyCode;
		return code;
	};
	
};

this.addEvent = function(obj,type,fn){
	if(obj.attachEvent){
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn](window.event );}
		obj.attachEvent('on'+type, obj[type+fn]);
	} else {
		obj.addEventListener(type,fn,false);
	};
};
addEvent(window,"load",searchfield);

