function strpos (haystack, needle, offset) {
    // Finds position of first occurrence of a string within another  
    // 
    // version: 1103.1210
    // discuss at: http://phpjs.org/functions/strpos    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Onno Marsman    
    // +   bugfixed by: Daniel Esteban
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: strpos('Kevin van Zonneveld', 'e', 5);    // *     returns 1: 14
    var i = (haystack + '').indexOf(needle, (offset || 0));
   
	return i === -1 ? false : i;
}


var normalize = (function() {
  var from = "ÃÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛãàáäâèéëêìíïîòóöôùúüûÑñÇç",
      to   = "AAAAAEEEEIIIIOOOOUUUUaaaaaeeeeiiiioooouuuunncc",
      mapping = {};
 
  for(var i = 0, j = from.length; i < j; i++ )
      mapping[ from.charAt( i ) ] = to.charAt( i );
 
  return function( str ) {
      var ret = [];
      for( var i = 0, j = str.length; i < j; i++ ) {
          var c = str.charAt( i );
          if( mapping.hasOwnProperty( str.charAt( i ) ) )
              ret.push( mapping[ c ] );
          else
              ret.push( c );
      }
      return ret.join( '' );
  }
 
})();

/* 

	SearchField 
	written by Alen Grakalic, provided by Css Globe (cssglobe.com)
	please visit http://cssglobe.com/post/1202/style-your-websites-search-field-with-jscss/ for more info
	
*/

this.searchfield = function(){
	
	// CONFIG 
	
	// this is id of the search field you want to add this script to. 
	// You can use your own id just make sure that it matches the search field in your html file.
	var id = "txt_buscar";
	
	// Text you want to set as a default value of your search field.
	
	if (document.getElementById(id).value==""){
		var defaultText = "Buscar en el sitio...";	
	}else{
		var defaultText = document.getElementById(id).value;	
	}
	// set to either true or false
	// when set to true it will generate search suggestions list for search field based on content of variable below
	var suggestion = true;
	
	// static list of suggestion options, separated by comma
	// replace with your own
	var suggestionText = "ABOGADOS,ACABADOS PARA LA CONSTRUCCION,ACADEMIAS,ACADEMIAS DE ARTES MARCIALES,ACADEMIAS DE DANZA,ACADEMIAS DE IDIOMAS,ACEITES,ACEITES LUBRICANTES,ACEROS,ADITIVOS,ADMINISTRADORAS DE FONDOS,ADUANAS,AEROLINEAS,AGENCIAS DE CARGA,AGENCIAS DE EMPLEOS,AGENCIAS DE MODELOS,AGENCIAS DE PUBLICIDAD,AGENCIAS DE VIAJES,AGENCIAS NAVIERAS,AGENTES AFIANZADOS DE ADUANA,AGROINDUSTRIA,AGROQUÍMICOS,AGROVETERINARIA,AGUA,AIRE ACONDICIONADO PARA AUTOMÓVILES,AIRES ACONDICIONADOS,AISLANTES TÉRMICOS,ALERGOLOGOS,ALIMENTOS,ALMACENERAS,ALMACENES,ALQUILER DE ILUMINACIÓN Y SONIDO,ALQUILER DE ROPA,ALQUILER DE VEHÍCULOS,ALUMINIO Y VIDRIO,ARQUITECTOS,ARTÍCULOS PARA EL HOGAR,ARTICULOS PUBLICITARIOS Y PROMOCIONALES,ARTÍCULOS Y MATERIALES PARA CALZADO,ASCENSORES,ASEGURADORAS,ASESORES,ASESORES DE SEGUROS,ASESORES EMPRESARIALES,ASILOS,ASPIRADORAS Y PULIDORAS,ASTILLEROS,ASTROLOGIA,AUDIO Y VIDEO,AUDIOVISUALES,AUDITORES EXTERNOS,AUTOMOTRIZ,AUTOS,AVALÚOS,AVÍCOLAS,BALANZAS,BANCOS,BANDAS TRANSPORTADORAS,BARES,BATERÍAS,BAZARES,BEBIDAS ALCOHÓLICAS ENVASADAS,BEBIDAS GASEOSAS,BIENES RAÍCES,BOUTIQUES,CABLEADO ESTRUCTURADO,CABLES,CABLES ELECTRICOS,CAFETERÍAS,CALL CENTER,CANALES DE TELEVISIÓN,CANCHAS DE FUTBOL,CAPACITACIÓN,CARDIOLOGOS,CARNISARIATOS,CARTONERAS,CASINOS,CAUCHOS,CEMENTERIOS,CENTRO DE TERAPIA FÍSICA Y REHABILITACIÓN,CENTROS COMERCIALES,CENTROS DE CAPACITACIÓN,CENTROS DE ESTETICA,CENTROS DE REHABILITACIÓN DE ALCOHOLISMO Y DROGADICCIÓN,CENTROS MEDICOS,CERÁMICAS,CERRAJERÍAS,CERRAMIENTOS,CIELO RASO,CINES,CIRUJANOS GENERALES,CIRUJANOS PLÁSTICOS,CLÍNICAS,CLÍNICAS DENTALES,CLÍNICAS VETERINARIAS,CLUB,COLCHONES,COLEGIO DE PROFESIONALES,COLEGIOS,COMERCIO EXTERIOR,Comidas Rápidas,COMPAÑÍAS DE AVIACIÓN,COMPAÑÍAS DE SEGURIDAD,COMPRAVENTA,COMPUTADORAS,CONCESIONARIOS DE VEHÍCULOS,CONFECCIONES DE PRENDAS DE VESTIR Y UNIFORMES,CONSERVATORIOS,CONSOLIDADORAS DE CARGA,CONSTRUCTORAS,CONTADORES,COOPERATIVAS DE AHORRO Y CREDITO,COPIADORAS,CORTINAS,COSMÉTICOS,COSMETOLOGÍA,COURIER,CYBER CAFÉS,DECORACIÓN,DEPORTES,DEPÓSITOS DE MADERA,DERMATOLOGOS,DIARIOS Y PERIÓDICOS,DISCOTECAS Y PEÑAS,DISEÑO DE PÁGINAS WEB,DISEÑOS INDUSTRIALES,DISTRIBUIDORA DE COMBUSTIBLE,DISTRIBUIDORES,DISTRIBUIDORES DE LLANTAS,DISTRIBUIDORES DE PRODUCTOS DE CONSUMO MASIVO,DISTRIBUIDORES DE PRODUCTOS FARMACÉUTICOS,DOCTORES,DULCERÍAS,EDITORES DE LIBROS,ELECTRODOMÉSTICOS,ELECTRÓNICA INDUSTRIAL,EMBAJADAS Y CONSULADOS,EMPAQUES,EMPRESAS DE ELECTRICIDAD,EMPRESAS FUMIGADORAS,ENVASES,EQUIPOS DE OFICINA,EQUIPOS DE SALVAMENTOS Y CONTRA INCENDIOS,EQUIPOS E IMPLEMENTOS PARA SEGURIDAD INDUSTRIAL,EQUIPOS MÉDICOS,EQUIPOS PARA LA INDUSTRIA ALIMENTARIA Y HOTELERÍA,ESCUELAS,ESCUELAS DE CONDUCCIÓN,ESCUELAS DE COSMETOLOGÍA,ESTAMPADOS,ESTANTERÍAS,ESTRUCTURAS METÁLICAS,ESTUDIOS JURÍDICOS,ESTUDIOS SUPERIORES,ETIQUETAS,EVENTOS,EXPORTADORES,EXTINTORES,FÁBRICAS,FÁBRICAS DE ALCOHOLES,FÁBRICAS DE PLÁSTICOS,FARMACIAS BOTICAS Y DROGUERÍAS,FERRETERÍAS,Ferreterias eléctricas,FERRETERÍAS INDUSTRIAL NAVAL,FERRETERÍAS INDUSTRIALES,FIBRA DE VIDRIO,FIESTAS,FIESTAS INFANTILES,FILTROS INDUSTRIALES Y DOMÉSTICOS,FLORERÍAS Y FLORISTERÍAS,FOTÓGRAFOS,FUMIGADORAS,FUNDACIONES,FUNDAS PLÁSTICAS,FUNDICIONES,FUNERARIAS,GASES INDUSTRIALES Y MEDICINALES,GASOLINERAS,GASTROENTEROLOGOS,GENERADORES,GIGANTOGRAFÍAS,GIMNASIOS,GINECOLOGOS,GRÚAS,GUÍAS TELEFÓNICAS,HELADOS,HIELO,HOSPITALES,HOSTALES,HOSTERÍAS,HOTELES,IGLESIAS Y TEMPLOS RELIGIOSOS,ILUMINACIÓN,IMPORTADORAS,IMPRENTAS,INDUSTRIA ALIMENTICIA,INGENIEROS,INGENIOS AZUCAREROS,INMOBILIARIAS,INSEMINACIÓN ARTIFICIAL,INSTITUCIONES,INSTITUCIONES FINANCIERAS,INSTITUCIONES PUBLICAS,INSTITUTOS SUPERIORES,INSUMOS MEDICOS,INTERNET,JARDINERÍA - VIVEROS,JARDINES DE INFANTES,JOYERÍAS,JUGUETERÍAS,LABORATORIOS,LABORATORIOS CLÍNICOS,LABORATORIOS FARMACÉUTICOS,LAVANDERÍAS,LETREROS,LIBRERÍAS,LICORERÍAS,LIMPIEZA,LIMPIEZA MANTENIMIENTO Y SERVICIOS,LUMINARIAS,MADERAS,MALLAS DE ACERO INOXIDABLE,MANGUERAS HIDRÁULICAS,MANTENIMIENTO DE VEHÍCULOS,MANTENIMIENTO INDUSTRIAL,MAQUINARIA AGRÍCOLA,MAQUINARIA INDUSTRIAL,MAQUINARIAS,MÁQUINAS DE COSER,MARIACHIS,MARKETING,MÁRMOLES,MATERIALES ELÉCTRICOS,MATERIALES PARA LA CONSTRUCCIÓN,MAYORISTAS DE TURISMO,MEDICINA ALTERNATIVA,MEDICINA INTERNA,MEDICINA NATURAL,MEDICINA PREPAGADA,MEDIO AMBIENTE,MEDIOS ALTERNATIVOS DE PROMOCIÓN Y COMUNICACIÓN,METALMECÁNICA,MONTACARGAS,MOTELES,MOTORES,MOTOS,MUEBLERÍAS,MUEBLES,MUEBLES PARA OFICINAS,MULTIMEDIA,MUSEOS,NEUMOLOGOS,NEUROCIRUJANOS,NEURÓLOGOS,NOTARÍAS,NUTRICIONISTAS,OBSTETRICES,ODONTOLOGIA ESTETICA,ODONTÓLOGOS,OFTALMOLOGOS,OPERADORES RECEPTIVOS,ÓPTICAS,ORGANIZACIÓN DE ARCHIVOS,ORTOPEDIA,OTORRINOLARINGOLOGOS,OZONO,PANADERÍAS,PAPELERÍAS,PARASICOLOGÍA,PARQUES,PARQUES DE DIVERSIÓN,PARRILLADAS,PASTELERÍAS,PEDIATRA,PELUQUERÍAS,PERFUMES,PERIÓDICOS,PINTURAS,PISCINAS,PIZZERÍAS,PLÁSTICOS,Portales Web,PRODUCTORAS,PRODUCTOS ALIMENTICIOS,PRODUCTOS DE LIMPIEZA,PRODUCTOS NATURALES,PRODUCTOS ORTOPEDICOS,PRODUCTOS QUÍMICOS,PSICOLOGOS,PSIQUIATRAS,PUBLICIDAD,PUERTAS ENROLLABLES,PUERTOS MARÍTIMOS,PURIFICADORES DE AGUA,RADIOCOMUNICACIONES,RADIODIFUSORAS,RADIOS AM,RADIOS FM,RAYOS X,RECICLAJE,RECTIFICADORAS,REFRIGERACIÓN COMERCIAL E INDUSTRIAL,REHABILITACIÓN,REPARACIONES DE MÁQUINAS,REPUESTOS,REPUESTOS AUTOMOTRICES,REPUESTOS PARA CAMIONES,REPUESTOS PARA MAQUINARIA,REPUESTOS PARA MOTORES A DIESEL,REPUESTOS PARA TRACTORES,RESTAURANTES,RESTAURANTES DE COMIDA INTERNACIONAL,RESTAURANTES DE MARISCOS,REVISTAS,ROPA,ROPA INTERIOR,ROPA PARA CABALLEROS,ROPA UNISEX,RUEDAS INDUSTRIALES,RULIMANES,SACOS,SALONES DE BELLEZA,SALONES DE EVENTOS Y RECEPCIONES,SALUD,SANITARIOS PORTABLES,SEGURIDAD,SEGURIDAD ELECTRÓNICA,SEGURIDAD Y VIGILANCIA,SEGUROS,SEGUROS AGENTES Y COMPAÑÍAS DE ,SEGUROS MÉDICOS,SELLOS DE SEGURIDAD,SERVICIOS EMPRESARIALES,SERVICIOS PARA AERONAVES PRIVADAS,SERVICIOS TECNICOS,SERVICIOS TEMPORARIOS,Servicios Terciarios,SEXOLOGOS,SISTEMAS DE RASTREO Y LOCALIZACION,SISTEMAS Y SERVICIOS HIDRÁULICOS,SOLDADURAS,SPA,SUMINISTROS DE OFICINA,SUPERMERCADOS,TABLEROS ELÉCTRICOS,TALLERES,TALLERES AUTOMOTRICES,TALLERES MECÁNICOS,TALLERES METALMECÁNICO,TARJETAS DE CRÉDITO,TAXI AMIGO,TAXIS,TECNOLOGIA,TELECOMUNICACIONES,TELEFONÍA CELULAR,TERAPIA FAMILIAR,TEXTILES,TRADUCCIONES,TRADUCTORES,TRANSFERENCIA DE DINERO,TRANSPORTE,TRANSPORTE DE CARGA PESADA,TRANSPORTE TURISTICO,TRAUMATOLOGÍA,TROFEOS Y COPAS DEPORTIVAS,TUBERÍAS,TURISMO,UNIDADES EDUCATIVAS,UNIFORMES Y ROPA DE TRABAJO,UNIVERSIDADES,URBANIZACIONES,UROLOGOS,VALLAS PUBLICITARIAS,VEHICULOS,VENTA DE LLANTAS,VENTA Y REPARACIÓN DE MÁQUINAS DE ESCRIBIR,VENTAS POR CATÁLOGO,VENTILACIÓN INDUSTRIAL,VERIFICADORAS,VESTIDOS DE NOVIAS,VETERINARIAS,VETERINARIOS,VIDRIERÍAS,ZAPATERÍAS"; 
	
	// END CONFIG (do not edit below this line, well unless you really, really want to change something :) )
	
	// Peace, 
	// Alen

	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)+ 100 + "px";
			div.appendChild(list);
			field.parentNode.appendChild(div);	

			field.onkeypress = function(e){
				
				var key = getKeyCode(e);
		
				if(key == 13){ // enter
					selectList();
					selectedIndex = 0;
					return false;
				};	
			};
				
			field.onkeyup = function(e){
			
				var key = getKeyCode(e);
		
				switch(key){
				case 13:
					return false;
					break;			
				case 27:  // esc
					field.value = "";
					selectedIndex = 0;
					clearList();
					break;				
				case 38: // up
					navList("up");
					break;
				case 40: // down
					navList("down");		
					break;
				default:
					startList();			
					break;
				};
			};
			
			this.startList = function(){
				var arr = getListItems(field.value);
				if(field.value.length > 1){
					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++){
					//vari=strpos(arrSrc[i].toLowerCase(), value.toLowerCase(), 0)
					
					
					//alert(vari);
					
					
					//if(arrSrc[i].substring(0,value.length).toLowerCase() == value.toLowerCase()){
					//alert(strpos(arrSrc[i].toLowerCase(), value.toLowerCase()));
					
					frase=normalize(arrSrc[i].toLowerCase());
					cadena=normalize(value.toLowerCase());
					
					if(strpos(frase,cadena)!==false){
//alert(arrSrc[i].toLowerCase());
					//alert(value.toLowerCase());
					    pala1=frase.toUpperCase();
						text=pala1.replace(cadena.toUpperCase(),"<SPAN class='sf_red'>"+cadena.toUpperCase()+"</SPAN>");
						//alert(text);
						arr.push(text);
						
						//alert(text);
						
					};
				};				
				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(){
				li = list.getElementsByTagName("li");	
				a = li[selectedIndex-1].getElementsByTagName("a")[0];
				text=a.innerHTML;
				//alert(text);
				text=text.replace("<SPAN class=\"sf_red\">","");
				text=text.replace("<span class=\"sf_red\">","");
				text=text.replace("<SPAN class=sf_red>","");
				text=text.replace("</SPAN>","");
								text=text.replace("</span>","");
				
				field.value =text ;
				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;
	};
	
};

// script initiates on page load. 

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);


