
/*Suggest class for IE / Mozilla / Konqueror / Opera
Version 1.0
copyright(c) 2005 by Enrique Dominguez Miguel & Daniel Gimenez Sanchez
*/
function SuggestEngineClass()
{
	SuggestEngineClass.prototype.inputText		= new Array() ;
	SuggestEngineClass.prototype.suggestLayer	= new Array() ;
	SuggestEngineClass.prototype.suggestIframe	= new Array() ;
	SuggestEngineClass.prototype.nav			= SuggestEngineClass.prototype.getBrowser() ;
	SuggestEngineClass.prototype.phpUrl		= "" ;
	SuggestEngineClass.prototype.phpFunction	= new Array() ;
	SuggestEngineClass.prototype.phpParams		= new Array() ;
	SuggestEngineClass.prototype.debug			= false ;
	SuggestEngineClass.prototype.enableSuggest	= new Array() ;
	SuggestEngineClass.prototype.autoRellenar	= new Array() ;
	SuggestEngineClass.prototype.autoRellenarActivado = new Array();
	SuggestEngineClass.prototype.soloComienzoActivado = true;
	SuggestEngineClass.prototype.autoNegritaActivado = new Array();
	SuggestEngineClass.prototype.language		= "es_ES";
	SuggestEngineClass.prototype.tipo_zona		= "0";
	SuggestEngineClass.prototype.id_pais		= "";
	SuggestEngineClass.prototype.id_pais_busqueda = "";
	SuggestEngineClass.prototype.staticText		= new Array() ;
	SuggestEngineClass.prototype.posicion_actual = 0;
	SuggestEngineClass.prototype.sendText		= new Array() ;
	/*el valor de lo escrito cuando hay algo seleccionado se guarda en este atributo*/
	SuggestEngineClass.prototype.valor_de_lo_escrito	= new Array() ;
	/*movimiento de las flechas...*/
	SuggestEngineClass.prototype.opcionActiva	= new Array() ;
	SuggestEngineClass.prototype.maxOpciones	= new Array() ;
	/*array de información (que nos llega de PHP)*/
	SuggestEngineClass.prototype.aInfo			= new Array() ;
	/*control de tiempos de ejecución PHP*/
	SuggestEngineClass.prototype.intervalo = 0 ;
	SuggestEngineClass.prototype.callDelay = 100 ;
	SuggestEngineClass.prototype.hiddenInputText = new Array() ;
	SuggestEngineClass.prototype.hiddenInputValues = new Array() ;
	/*URL destino*/
	SuggestEngineClass.prototype.destinationURL = new Array() ;
	SuggestEngineClass.prototype.iActiva = -1 ;
};

/*Set static text (in the current language)*/
SuggestEngineClass.prototype.set_staticText = function() {
	for(var i = 0 ; i < arguments.length ; i++){
		SuggestEngineClass.prototype.staticText[i] = arguments[i];
	}
};

/*Set the language*/
SuggestEngineClass.prototype.set_language = function(val) {
	SuggestEngineClass.prototype.language = val ;	
};

/*Set the zone*/
SuggestEngineClass.prototype.set_tipo_zona = function(val) {
	SuggestEngineClass.prototype.tipo_zona = val ;	
};

/*Set the pais*/
SuggestEngineClass.prototype.set_id_pais = function(val) {
	SuggestEngineClass.prototype.id_pais = val ;	
};

/*SET PAIS BUSQUEDA : ESTE ES DE SALIDA, NO DE ENTRADA PARA BUSCAR
SINO PARA VER DE QUE PAIS ES LA FILA SELECCIONADA*/
SuggestEngineClass.prototype.set_id_pais_busqueda = function(val) {
	SuggestEngineClass.prototype.id_pais_busqueda = val ; 
};

SuggestEngineClass.prototype.set_posicion_actual = function(val) {
	SuggestEngineClass.prototype.posicion_actual = val ; 
};

/*Set the destination URL*/
SuggestEngineClass.prototype.set_destinationURL = function() {
	for(var i=0; i<arguments.length; i++){
		SuggestEngineClass.prototype.destinationURL[i] = arguments[i];
	}
};

/*Set the auto fill feature*/
SuggestEngineClass.prototype.set_autoFill = function() {
	for(var i=0; i<arguments.length; i++) 
	{
		SuggestEngineClass.prototype.autoRellenarActivado[i] = arguments[i];
	}
};

/*Set the justStarting feature*/
SuggestEngineClass.prototype.set_justStarting = function(val) {
	SuggestEngineClass.prototype.soloComienzoActivado = val ;	
};

/*Set the autoBold feature*/
SuggestEngineClass.prototype.set_autoBold = function() {
	for(var i=0; i<arguments.length; i++) 
	{
		SuggestEngineClass.prototype.autoNegritaActivado[i] = arguments[i];
	}
};

/*Set the suggest input text*/
SuggestEngineClass.prototype.set_inputText = function() {
	for(var i=0; i<arguments.length; i++){
		SuggestEngineClass.prototype.inputText[i] = arguments[i];
	}
};

/*Set the suggest hidden input default values*/
SuggestEngineClass.prototype.set_hiddenInputValues = function() {
	for(var i=0; i<arguments.length; i++){
		SuggestEngineClass.prototype.hiddenInputValues[i] = arguments[i];
	}
};

/*Set the suggest div*/
SuggestEngineClass.prototype.set_suggestLayer = function() {
	for(var i=0; i<arguments.length; i++){
		SuggestEngineClass.prototype.suggestLayer[i] = arguments[i];
	}
};


/*Set the suggest Iframe*/
SuggestEngineClass.prototype.set_suggestIframe = function() {
	for(var i=0; i<arguments.length; i++){
		SuggestEngineClass.prototype.suggestIframe[i] = arguments[i];
	}
};

/*Set the php url*/
SuggestEngineClass.prototype.set_phpUrl = function(val) {
	SuggestEngineClass.prototype.phpUrl = val ;
};

/*Set the name of the php function*/
SuggestEngineClass.prototype.set_phpFunction = function() {
	for(var i=0; i<arguments.length; i++){
		SuggestEngineClass.prototype.phpFunction[i] = arguments[i];
	}
};

/*Set the debug parameter*/
SuggestEngineClass.prototype.set_debug = function(val) {
	SuggestEngineClass.prototype.debug = val ;
};

/*Set the debug parameter*/
SuggestEngineClass.prototype.set_opcionActiva = function(val, i) {
	SuggestEngineClass.prototype.opcionActiva[i] = val ;
};

/*Set the event handler functions*/
SuggestEngineClass.prototype.initEventHandler = function() {
	for(var i=0; i<SuggestEngineClass.prototype.inputText.length; i++){
		SuggestEngineClass.prototype.enableSuggest[i]	= false ;
		SuggestEngineClass.prototype.autoRellenar[i]	= true ;
		/* creacion de los hidden input para devolver valores*/
		the_input = document.createElement('input');
		the_input.type = "hidden";
		the_input.name = "id_"+SuggestEngineClass.prototype.inputText[i].name;
		the_input.value = SuggestEngineClass.prototype.hiddenInputValues[i];
		SuggestEngineClass.prototype.inputText[i].form.appendChild(the_input);
		SuggestEngineClass.prototype.hiddenInputText[i] = the_input;
		SuggestEngineClass.prototype.inputText[i].onblur = function(){
			SuggestEngineClass.prototype.onSuggestBlur(SuggestEngineClass.prototype.iActiva) ;
		};
		SuggestEngineClass.prototype.inputText[i].onfocus = function(){
			for(var j=0; j<SuggestEngineClass.prototype.inputText.length; j++){
				if (SuggestEngineClass.prototype.inputText[j].name == this.name){
					i = j;
				}
			}
			SuggestEngineClass.prototype.iActiva = i ;
			SuggestEngineClass.prototype.onSuggestFocus(i) ;
		};
	}
};

SuggestEngineClass.prototype.onSuggestBlur = function(i) {
	SuggestEngineClass.prototype.hideLayer(i) ;
	SuggestEngineClass.prototype.enableSuggest[i] = false ;
	SuggestEngineClass.prototype.iActiva = -1 ;
};

SuggestEngineClass.prototype.onSuggestFocus = function(i) {
	SuggestEngineClass.prototype.enableSuggest[i] = true ;
};

SuggestEngineClass.prototype.onSuggestKeyUp = function(eventoObject){
	codigoTecla = eventoObject.keyCode;
	var caracterActual = String.fromCharCode(codigoTecla);
	for(var i=0 ; i < SuggestEngineClass.prototype.enableSuggest.length ; i++){
		if (SuggestEngineClass.prototype.enableSuggest[i]){
			switch (codigoTecla){
			case (123):	/*F12 para debug si debug está activado*/
				if (SuggestEngineClass.prototype.debug) {
					jsrsDebugInfo() ;
				}
			break;
			case (38):	/*UP para seleccion del elemento activo*/
				SuggestEngineClass.prototype.moveUp(i);
				SuggestEngineClass.prototype.set_posicion_actual(SuggestEngineClass.prototype.opcionActiva[i]);
			break;
			case (40):	/* DOWN para seleccion del elemento activo*/
				SuggestEngineClass.prototype.moveDown(i);
				SuggestEngineClass.prototype.set_posicion_actual(SuggestEngineClass.prototype.opcionActiva[i]);
			break;
			case (13):	/* ENTER*/
				try{
					var n_pos = SuggestEngineClass.prototype.posicion_actual;
					
					if (eventoObject.originalTarget.name == SuggestEngineClass.prototype.inputText[i].name) {
						sub_form_suggest(eventoObject.originalTarget.id);
					}
				}catch(err)	{
					$("#buscar").val("");
					return(false);	
				}
			break;
			/*definir lo que queremos que haga...*/
			case (27):	/*ESC*/
			break;
			case (16):	/*PageUp*/
			case (17):	/*PageUp*/
			case (18):	/*PageUp*/
			case (33):	/*PageUp*/
			case (34):	/*PageUp*/
			case (35):	/*End*/
			case (36):	/*Home*/
			case (37):	/*LeftArrow*/
			case (39):	/*RightArrow*/
			case (45):	/*Insert*/
				break;
			default:	/*cualquier tecla*/
				SuggestEngineClass.prototype.valor_de_lo_escrito[i] = SuggestEngineClass.prototype.inputText[i].value ;
				/* BACKSPACE (tenemos que quitar 1 caracter en el value del campo)*/
				if (codigoTecla == 8 || codigoTecla == 46) {
					if (SuggestEngineClass.prototype.inputText[i].value == "") SuggestEngineClass.prototype.hideLayer(i) ;
					SuggestEngineClass.prototype.autoRellenar[i] = false ;
				} else {
					SuggestEngineClass.prototype.autoRellenar[i] = true ;
				}
				/*borramos lo que está seleccionado si es que hay algo...*/
				SuggestEngineClass.prototype.phpParams[0] = new String(SuggestEngineClass.prototype.inputText[i].value) ;
				SuggestEngineClass.prototype.phpParams[1] = new String(SuggestEngineClass.prototype.id_pais) ;
				SuggestEngineClass.prototype.phpParams[2] = new String(SuggestEngineClass.prototype.language) ;
				SuggestEngineClass.prototype.phpParams[3] = new String(SuggestEngineClass.prototype.soloComienzoActivado) ;
				SuggestEngineClass.prototype.phpParams[4] = new String(SuggestEngineClass.prototype.staticText[0]) ;
				SuggestEngineClass.prototype.phpParams[5] = new String(SuggestEngineClass.prototype.tipo_zona) ;
				SuggestEngineClass.prototype.phpParams[6] = new String(SuggestEngineClass.prototype.staticText[2]) ;
				if (SuggestEngineClass.prototype.intervalo != 0) {
					clearTimeout(SuggestEngineClass.prototype.intervalo) ;
				}
				SuggestEngineClass.prototype.intervalo = setTimeout("SuggestEngineClass.prototype.consultaPHP("+i+")", SuggestEngineClass.prototype.callDelay) ;
			}
		}
	}
};

SuggestEngineClass.prototype.onPHPExecuted = function(str) {
	i = SuggestEngineClass.prototype.iActiva ;
	SuggestEngineClass.prototype.fillSuggestLayer(str, i) ;
	if (str != "") {
		if (SuggestEngineClass.prototype.autoRellenar[i]) {
			SuggestEngineClass.prototype.set_opcionActiva(0, i) ;
			if (SuggestEngineClass.prototype.suggestIframe[i]) {
				if (document.all) doc = eval("document." + SuggestEngineClass.prototype.suggestIframe[i].id + ".document") ;
				else doc = SuggestEngineClass.prototype.suggestIframe[i].contentDocument ;				
			} else {
				doc = document ;
			}
			SuggestEngineClass.prototype.turnOnInicial(doc.getElementById("SuggestEngineClassLayerId"+i+SuggestEngineClass.prototype.opcionActiva[i]), SuggestEngineClass.prototype.opcionActiva[i]);
			if (SuggestEngineClass.prototype.autoRellenarActivado[i])
			{
				SuggestEngineClass.prototype.escribeTextoConSeleccion(i) ;
			}
		}
		SuggestEngineClass.prototype.showLayer(i) ;
	} else {
		SuggestEngineClass.prototype.hideLayer(i) ;
		$("#id_pais_suggest").val('');
	}
};

SuggestEngineClass.prototype.fillSuggestLayer = function(str, i) {
	var aStr = String(str).split('|') ;
	var cadena = new String("") ;
	var i_v_position = 0;
	$("#capaSuggestIframe").css("display", "none");
	$("#capaSugerencia").css("display", "none");
	i_v_position = 1;
	/*creamos un array*/
	SuggestEngineClass.prototype.opcionActiva[i] = -1 ;
	delete SuggestEngineClass.prototype.aInfo ;
	SuggestEngineClass.prototype.aInfo = new Array() ;
	if (str){
		/*establecemos el máximo de íneas que tendrá el listado...*/
		SuggestEngineClass.prototype.maxOpciones[i] = parseInt(aStr.length)-1 ;
		for( var j = 0 ; j < aStr.length ; j++ ){
			var aPar = String(aStr[j]).split('~') ;
			SuggestEngineClass.prototype.aInfo[j] = new Object() ;
			SuggestEngineClass.prototype.aInfo[j].id = new Array();
			SuggestEngineClass.prototype.aInfo[j].texto = new Array();
			SuggestEngineClass.prototype.aInfo[j].num_ocurrencias = new Array();
			SuggestEngineClass.prototype.aInfo[j].id_pais_busqueda = new Array();
			SuggestEngineClass.prototype.aInfo[j].id[i] = aPar[0] ;
			SuggestEngineClass.prototype.aInfo[j].texto[i] = SuggestEngineClass.prototype.checkBold(aPar[1], i) ;
			SuggestEngineClass.prototype.aInfo[j].num_ocurrencias[i] = aPar[2] ;
			SuggestEngineClass.prototype.aInfo[j].id_pais_busqueda[i] = aPar[3] ;
			if (SuggestEngineClass.prototype.suggestIframe[i]) {
				identif = SuggestEngineClass.prototype.suggestIframe[i].id ;

				if (document.all) doc = "document.getElementById(\'"+identif+"\').document" ;
				else doc = "document.getElementById(\'"+identif+"\').contentDocument" ;

				pathSugEngClass = "top" ;
			} else {
				doc = "document" ;
				pathSugEngClass = "top" ;
			}
			s_element = "";
			s_element += '<div name="SuggestEngineClassLayerId'+i+''+j+'" id="SuggestEngineClassLayerId'+i+''+j+'" class="item" onmouseover="javascript:'+pathSugEngClass+'.SuggestEngineClass.prototype.set_opcionActiva('+j+','+i+');'+pathSugEngClass+'.SuggestEngineClass.prototype.turnOn(this);" onmouseout="javascript:'+pathSugEngClass+'.SuggestEngineClass.prototype.set_opcionActiva(-1,'+i+');'+pathSugEngClass+'.SuggestEngineClass.prototype.turnOff(this);" onMouseDown="javascript:'+pathSugEngClass+'.SuggestEngineClass.prototype.clickInLayer('+i+');">';
			s_element += ' \n<div>'+SuggestEngineClass.prototype.aInfo[j].num_ocurrencias[i]+'</div>';
			s_element += ' \n<span>'+SuggestEngineClass.prototype.aInfo[j].texto[i]+'</span>';
			s_element += '</div>';
			i_v_position = i_v_position +1; 
			cadena = cadena +s_element;			
		}
		if (aStr.length == 15){
			cadena = cadena.concat('<span class="baseCapaSugerencia">('+SuggestEngineClass.prototype.staticText[1]+')</span>') ;
		}
		SuggestEngineClass.prototype.suggestLayer[i].innerHTML = cadena ;
		/* Si es explorer*/
		var navigatorVersion = navigator.appVersion;
		navigatorVersion = navigatorVersion.replace('MSIE 6.0','');
		if (navigator.appVersion != navigatorVersion) {
			/* Si es explorer 6*/
			$("#capaSuggestIframe").css("top", "260px");
		} else {
			$("#capaSuggestIframe").css("top", "248px");
		}
		$("#capaSuggestIframe").css("height", i_v_position*17+ "px");
	}
};

SuggestEngineClass.prototype.checkBold = function(cadena, i) {
	var retorno;
	if (SuggestEngineClass.prototype.autoNegritaActivado[i]){
		retorno = SuggestEngineClass.prototype.searchAndReplaceBolding(cadena, SuggestEngineClass.prototype.inputText[i].value);
	}else{
		retorno = cadena;
	}
	return retorno;
};

SuggestEngineClass.prototype.searchAndReplaceBolding = function(originalText, searchText)
{
	highlightStartTag = "<strong>";
	highlightEndTag = "</strong>";
	newText = originalText;
	if (searchText.length > 0)	{
		searchArray = searchText.split(" ");
		for (var i = 0; i < searchArray.length; i++) {
			newText = SuggestEngineClass.prototype.doHighlight(originalText, searchArray[i], highlightStartTag, highlightEndTag);
			originalText = newText;
		}
	}
	return newText;
};

SuggestEngineClass.prototype.doHighlight = function(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
	var newText = "";
	var i = -1;
	var lcSearchTerm = searchTerm.toLowerCase();
	var lcBodyText = bodyText.toLowerCase();
	while (bodyText.length > 0) {
		i = lcBodyText.indexOf(lcSearchTerm, i+1);
		if (i < 0) {
			newText += bodyText;
			bodyText = "";
		} else {
			newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
			bodyText = bodyText.substr(i + searchTerm.length);
			lcBodyText = bodyText.toLowerCase();
			i = -1;
		}
	}
	return newText;
};

SuggestEngineClass.prototype.consultaPHP = function(i) {
	var params = SuggestEngineClass.prototype.phpParams;
	SuggestEngineClass.prototype.sendText[i] = params[0];
	
	if (params[2] == 'undefined') {
		params[2] = sug_lang;
	}
	$.ajax({url: "/services/suggest.php",	type: "POST", data: ({var_str : params[0], id_pais: params[1], lang: params[2], soloComienzoActivado: params[3], texto_provincia: params[4], tipo_zona: params[5], texto_comunidad: params[6]}), success: SuggestEngineClass.prototype.onPHPExecuted });
	SuggestEngineClass.prototype.hiddenInputText[i].value = "";
};

/*hide layer*/
SuggestEngineClass.prototype.hideLayer = function(i){
	if (SuggestEngineClass.prototype.suggestIframe[i]) {
		SuggestEngineClass.prototype.suggestIframe[i].style.display = "none" ;
	} else {
		if (SuggestEngineClass.prototype.suggestLayer[i]) {
			SuggestEngineClass.prototype.suggestLayer[i].style.display = "none"
		}
	}
	if (SuggestEngineClass.prototype.suggestLayer[i]) {
		switch(SuggestEngineClass.prototype.nav){
			case ("IE"):	SuggestEngineClass.prototype.suggestLayer[i].style.visibility = "hidden" ;
			break;
			case ("MOZ"):	SuggestEngineClass.prototype.suggestLayer[i].style.visibility = "hidden" ;
			break;
			default:		SuggestEngineClass.prototype.suggestLayer[i].style.visibility = "hidden" ;
		}
	}
};

/*show layer*/
SuggestEngineClass.prototype.showLayer = function(i){
	if (SuggestEngineClass.prototype.suggestIframe[i]) {
		SuggestEngineClass.prototype.suggestIframe[i].style.display = "block" ;
	} else {
		if (SuggestEngineClass.prototype.suggestLayer[i]) {
			SuggestEngineClass.prototype.suggestLayer[i].style.display = "block"
		}
	}
	if (SuggestEngineClass.prototype.suggestLayer[i]) {
		switch(SuggestEngineClass.prototype.nav)
		{
		case ("IE"):	SuggestEngineClass.prototype.suggestLayer[i].style.visibility = "visible" ;
		break;
		case ("MOZ"):	SuggestEngineClass.prototype.suggestLayer[i].style.visibility = "visible" ;
		break;
		default:		SuggestEngineClass.prototype.suggestLayer[i].style.visibility = "visible" ;
		}
	}
};

SuggestEngineClass.prototype.moveUp = function(i) 
{	
	if (SuggestEngineClass.prototype.suggestIframe[i]){
		if (document.all) doc = eval("document." + SuggestEngineClass.prototype.suggestIframe[i].id + ".document") ;
		else doc = SuggestEngineClass.prototype.suggestIframe[i].contentDocument ;
	} else {
		doc = document ;
	}
	if (SuggestEngineClass.prototype.opcionActiva[i] > 0) {
		SuggestEngineClass.prototype.turnOff(doc.getElementById("SuggestEngineClassLayerId"+i+SuggestEngineClass.prototype.opcionActiva[i]), SuggestEngineClass.prototype.opcionActiva[i]);
		SuggestEngineClass.prototype.opcionActiva[i]-- ;
		SuggestEngineClass.prototype.escribeTexto(i) ;
		SuggestEngineClass.prototype.turnOn(doc.getElementById("SuggestEngineClassLayerId"+i+SuggestEngineClass.prototype.opcionActiva[i]), SuggestEngineClass.prototype.opcionActiva[i]);
	} else {
		if (SuggestEngineClass.prototype.opcionActiva[i] == 0){
			SuggestEngineClass.prototype.turnOff(doc.getElementById("SuggestEngineClassLayerId"+i+SuggestEngineClass.prototype.opcionActiva[i]), SuggestEngineClass.prototype.opcionActiva[i]);
			SuggestEngineClass.prototype.inputText[i].value = SuggestEngineClass.prototype.valor_de_lo_escrito[i] ;
			SuggestEngineClass.prototype.seleccionaTexto(SuggestEngineClass.prototype.inputText[i].value.length, SuggestEngineClass.prototype.inputText[i].value.length, i) ;
			SuggestEngineClass.prototype.opcionActiva[i]-- ;
		}
	}
};

SuggestEngineClass.prototype.moveDown = function(i){
	if (SuggestEngineClass.prototype.suggestIframe[i]) {
		if (document.all) doc = eval("document." + SuggestEngineClass.prototype.suggestIframe[i].id + ".document") ;
		else doc = SuggestEngineClass.prototype.suggestIframe[i].contentDocument ;
	} else {
		doc = document ;
	}
	if (SuggestEngineClass.prototype.opcionActiva[i] < SuggestEngineClass.prototype.maxOpciones[i]){
		if (SuggestEngineClass.prototype.opcionActiva[i] != -1) {
			SuggestEngineClass.prototype.turnOff(doc.getElementById("SuggestEngineClassLayerId"+i+SuggestEngineClass.prototype.opcionActiva[i]), SuggestEngineClass.prototype.opcionActiva[i]);
		}
		SuggestEngineClass.prototype.opcionActiva[i]++ ;
		SuggestEngineClass.prototype.escribeTexto(i) ;
		SuggestEngineClass.prototype.turnOn(doc.getElementById("SuggestEngineClassLayerId"+i+SuggestEngineClass.prototype.opcionActiva[i]), SuggestEngineClass.prototype.opcionActiva[i]);	
	}
};

SuggestEngineClass.prototype.escribeTextoConSeleccion = function(i)
{
	/*para hacer el marcado en azul...*/
	SuggestEngineClass.prototype.valor_de_lo_escrito[i] = SuggestEngineClass.prototype.inputText[i].value ;
	var largo_de_lo_escrito = SuggestEngineClass.prototype.valor_de_lo_escrito[i].length ;
	SuggestEngineClass.prototype.inputText[i].value = SuggestEngineClass.prototype.cleanTags(SuggestEngineClass.prototype.aInfo[SuggestEngineClass.prototype.opcionActiva[i]].texto[i]) ;
	SuggestEngineClass.prototype.hiddenInputText[i].value = SuggestEngineClass.prototype.aInfo[SuggestEngineClass.prototype.opcionActiva[i]].id[i];
	SuggestEngineClass.prototype.seleccionaTexto(largo_de_lo_escrito, SuggestEngineClass.prototype.aInfo[SuggestEngineClass.prototype.opcionActiva[i]].texto[i].length, i) ;
};

SuggestEngineClass.prototype.escribeTexto = function(i){
	if (SuggestEngineClass.prototype.opcionActiva[i] != -1)	{
		SuggestEngineClass.prototype.inputText[i].value = SuggestEngineClass.prototype.cleanTags(SuggestEngineClass.prototype.aInfo[SuggestEngineClass.prototype.opcionActiva[i]].texto[i]) ;
		SuggestEngineClass.prototype.hiddenInputText[i].value = SuggestEngineClass.prototype.aInfo[SuggestEngineClass.prototype.opcionActiva[i]].id[i];
	}
	SuggestEngineClass.prototype.seleccionaTexto(SuggestEngineClass.prototype.inputText[i].value.length, SuggestEngineClass.prototype.inputText[i].value.length, i) ;
	SuggestEngineClass.prototype.set_id_pais_busqueda(SuggestEngineClass.prototype.aInfo[SuggestEngineClass.prototype.opcionActiva[i]].id_pais_busqueda[i]);
};

SuggestEngineClass.prototype.escribeTextoHidden = function(i){
	if (SuggestEngineClass.prototype.opcionActiva[i] != -1){
		SuggestEngineClass.prototype.hiddenInputText[i].value = SuggestEngineClass.prototype.aInfo[SuggestEngineClass.prototype.opcionActiva[i]].id[i];
		SuggestEngineClass.prototype.set_id_pais_busqueda(SuggestEngineClass.prototype.aInfo[SuggestEngineClass.prototype.opcionActiva[i]].id_pais_busqueda[i]);
	}
};

SuggestEngineClass.prototype.seleccionaTexto = function(primer_caracter, ultimo_caracter, i){
	if (SuggestEngineClass.prototype.inputText[i].createTextRange){
		/*marcamos el rango que nos interesa*/
		var rango = SuggestEngineClass.prototype.inputText[i].createTextRange() ;
		rango.moveStart("character", primer_caracter);
		rango.moveEnd("character", ultimo_caracter);
		rango.select();
	} else {
		SuggestEngineClass.prototype.inputText[i].setSelectionRange(primer_caracter, ultimo_caracter);
	}
	/*cogemos el foco*/
	SuggestEngineClass.prototype.inputText[i].focus();
};

SuggestEngineClass.prototype.turnOn = function(capa){
	capa.className = "itemOn" ;
	SuggestEngineClass.prototype.escribeTextoHidden(i);
};

SuggestEngineClass.prototype.turnOnInicial = function(capa){
	capa.className = "itemOn" ;
	SuggestEngineClass.prototype.escribeTextoHidden(i);
	//selectInputSuggest(SuggestEngineClass.prototype.inputText[i].id, SuggestEngineClass.prototype.sendText[i], SuggestEngineClass.prototype.cleanTags(SuggestEngineClass.prototype.aInfo[SuggestEngineClass.prototype.opcionActiva[i]].texto[i]));
};

SuggestEngineClass.prototype.turnOff = function(capa){
	capa.className = "item" ;
};

SuggestEngineClass.prototype.clickInLayer = function(i){
	SuggestEngineClass.prototype.escribeTexto(i) ;
	$("#id_pais_suggest").val(SuggestEngineClass.prototype.id_pais_busqueda);
	coger_suggest(SuggestEngineClass.prototype.inputText[i].form,i,SuggestEngineClass.prototype.tipo_zona, SuggestEngineClass.prototype.id_pais_busqueda);
};

SuggestEngineClass.prototype.getSel = function(){
	var txt = '';
	if (window.getSelection){
		txt = window.getSelection();
	} else if (document.getSelection){
		txt = document.getSelection();
	} else if (document.selection){
		txt = document.selection.createRange().text;
	}
	else return("");
	return(txt);
};

/*Browser Sniffer*/
SuggestEngineClass.prototype.getBrowser = function(){
	if (document.layers) return "NS";
	if (document.all) {
		/* But is it really IE? convert all characters to lowercase to simplify testing*/
		var agt = navigator.userAgent.toLowerCase();
		var is_opera = (agt.indexOf("opera") != -1);
		var is_konq = (agt.indexOf("konqueror") != -1);
		if(is_opera) {
			return "OPR";
		} else {
			if(is_konq) {
				return "KONQ";
			} else {
				/* Really is IE*/
				return "IE";
			}
		}
	}
	if (document.getElementById) return "MOZ";
	return "OTHER";
};

SuggestEngineClass.prototype.cleanTags = function(str){
	do {
		myRegExp = new RegExp("<[^>]*>");
		str = str.replace(myRegExp, "")
	} while (myRegExp.exec(str));

	return str;
};

function initSuggest(lang, txt1, txt2, txt3, tipo_zona, aIdSugerencias, aIdInputText, aForms, aIframesDoc, aIframes) {
	se_obj = new SuggestEngineClass() ;
	se_obj.set_debug(false) ;
	if (aIframes != null && aIframes != undefined) {
		strIframe = 'se_obj.set_suggestIframe(';
		for (var iframeKey in aIframes) {
			strIframe += 'document.getElementById("' + aIframes[iframeKey] + '")';
			if (iframeKey < (aIframes.length -1)) {
				strIframe += ',';
			}
		}
		strIframe += ')';
		eval(strIframe);
	}
	strSuggestLayer = 'se_obj.set_suggestLayer(';
	for (var sugerenciaKey in aIdSugerencias) {
		if ((aIframesDoc != null && aIframesDoc != undefined) && aIframesDoc[sugerenciaKey]) {
			var docIframe = aIframesDoc[sugerenciaKey];
			strSuggestLayer += 'docIframe.getElementById("' + aIdSugerencias[sugerenciaKey] + '")';
		} else {
			strSuggestLayer += 'document.getElementById("' + aIdSugerencias[sugerenciaKey] + '")';
		}
		if (sugerenciaKey < (aIdSugerencias.length -1)) {
			strSuggestLayer += ',';
		}
	}
	strSuggestLayer += ')';
	eval(strSuggestLayer);
	strInputText = 'se_obj.set_inputText(';
	for (var inputKey in aIdInputText) {
		strInputText += 'document.getElementById("' + aIdInputText[inputKey] + '")';
		if (inputKey < (aIdInputText.length -1)) {
			strInputText += ',';
		}
	}
	strInputText += ')';
	eval(strInputText);	
	se_obj.set_hiddenInputValues("") ;
	se_obj.set_phpFunction("getMatching") ;
	se_obj.set_autoFill(false, false) ;
	se_obj.set_justStarting(true) ;
	se_obj.set_autoBold(false, false) ;
	se_obj.set_language(lang) ;
	se_obj.set_tipo_zona(tipo_zona) ;
	se_obj.set_staticText(txt1, txt2, txt3) ;
	se_obj.set_destinationURL("", "");
	se_obj.initEventHandler() ;
	/*onkeyup*/
	for (var inputKey in aIdInputText) {
		$('#' + aIdInputText[inputKey]).keyup(function(eventObject){
			se_obj.onSuggestKeyUp(eventObject);
		});
	}
	/*onsubmit no hacemos nada recogemos el evento del intro*/
	for (var formKey in aForms) {
		$('#' + aForms[formKey]).submit(function(e){
			// Mirar si hay una forma mejor de hacer
			switch(e.currentTarget.name)
			{
				case 'form_suggest':
					// Home central
					sub_form_suggest('buscar_main');
					break;
				case 'form_suggest_menu':
					// TOP
					sub_form_suggest('campobusca');
					break;
				case 'form_suggest_search':
					// SEARCH
					sub_form_suggest('buscar_suggest');
					break;					
			}
			return false;
			});
	}
}

function initCalendar(prefijo) {
	if(!prefijo) {
		prefijo = '';
	}
	/*Inicializacion calendarios()*/
	$("#"+prefijo+"fecha_ini").datePicker({clickInput:true, showYearNavigation:false,
		createButton:false,verticalOffset:20});
	$("#"+prefijo+"fecha_fin").datePicker({clickInput:true, showYearNavigation:false,
		createButton:false, horizontalOffset:-110,verticalOffset:20});
}

function coger_suggest(formulario,i,tipo_zona,s_pais) {
	if (isNaN(i)) i=0 ;
	/*TIPO ZONA*/ 
	$("#tipo_zona").val(tipo_zona);
	/*TEXTO BUSCADO*/
	$("#buscar").val(formulario.elements[se_obj.inputText[i].name].value);
	/*POBLACION PROV ZONA BUSCADA*/
	$("#id_buscar").val(formulario.elements[formulario.elements.length-1].value);
	return(false) ;	
}

/*Envío del form del suggest*/
function sub_form_suggest(id_suggest) {
	//var valor = document.getElementsByName("id_" + id_suggest)[0].value;
	var valor = $("[name=id_"+ id_suggest+"]").val();
	if (valor == null|| valor == undefined || jQuery.trim(valor) == "") {
		alert(texto_selecciona_destino);
	} else {
		var bFechas = false;
		/* Campobusca,buscador sin fechas*/
		if (id_suggest != "campobusca") {
			var sFechas = parseExtraData();
			if (sFechas.error != '') {
				alert(sFechas.error);
				return false;			
			}
			bFechas = true;
		}
		str = "/index.php/cod.search/suggest.1/" ;
		str = str.concat("id_buscar." + valor + "/");
		var send_lang = $("#lang").val();
		if (send_lang == undefined || send_lang == 'undefined') {
			send_lang = sug_lang;
		}
		str = str.concat("lang." + send_lang + "/");
		if (bFechas) {
			str = str.concat(sFechas.str);
		}
		self.location.href = str ;
		return false;
	}
}

/*Envío del formulario*/
function parseExtraData(){
	var b_fecha_ini = false;
	var b_fecha_fin = false;
	var s_error = '';
	var str = '';
	var s_fecha_ini = $('#fecha_ini').val();
	var s_fecha_fin = $('#fecha_fin').val();
	if (s_fecha_ini != "") {
		s_fecha_ini = s_fecha_ini.substr(6,4) + s_fecha_ini.substr(3,2) + s_fecha_ini.substr(0,2);
		str = "fecha_ini."+ s_fecha_ini+ "/";
		b_fecha_ini = true;
	}

	if (s_fecha_fin != "") {
		s_fecha_fin = s_fecha_fin.substr(6,4)+ s_fecha_fin.substr(3,2)+ 
		s_fecha_fin.substr(0,2);
		str = str + "fecha_fin."+ s_fecha_fin+ "/";
		b_fecha_fin = true; 
	} 

	if ((b_fecha_ini == true) && (b_fecha_fin == true)) {
		if (parseInt(s_fecha_ini) > parseInt(s_fecha_fin)) {
			s_error = "\n"+ ctrl_reserva;
		} else if (parseInt(s_fecha_ini) == parseInt(s_fecha_fin)) {
			s_error = "\n"+ ctrl_reserva;
		}
	} else if (((b_fecha_ini == false) && (b_fecha_fin == true)) || ((b_fecha_ini == true) && (b_fecha_fin == false))) {
		s_error = "\n"+ctrl_reserva_d_salida;
		b_valid = false; 
	}
	var s_num_personas = $('select[name="num_personas"]').val();
	if (s_num_personas != "" && s_num_personas != null) {
		str = str.concat("num_personas." + s_num_personas + "/");
	}
	var rs = {"error":s_error,"str":str};
	return rs;	
}

$.fn.selectSuggestRange = function(start, end, id, value) {
	return this.each(function() {
		if(this.setSelectionRange) {
			this.focus();
			$('#'+id).val(value);
			this.setSelectionRange(start, end);
		} else if(this.createTextRange) {
			var range = this.createTextRange();
			$('#'+id).val(value);
			range.collapse(true);
			range.moveEnd('character', end);
			range.moveStart('character', start);
			range.select();
		}
	});
};

function selectInputSuggest(id, sendWord, value){
	if (value.substring(0, sendWord.length).toUpperCase() == sendWord.toUpperCase()) {
		size_sugg_ini= sendWord.length;
		if(size_sugg_ini>0){
			size_sugg_fin= value.length;
			$('#'+id).selectSuggestRange(size_sugg_ini,size_sugg_fin, id, value);
		}
	}
}

