﻿function HabilitarTextoPredictivo(oCajaTexto){

	$(oCajaTexto).bind("paste", function(event){
        setTimeout('TextoPredictivo("' + oCajaTexto + '")', 350);            
	});
	$(oCajaTexto).keydown(function(event){
        GetionarPulsaciones(event, oCajaTexto);
	});
	$(oCajaTexto).blur(function(event){
		OcultarTextoPredictivo(oCajaTexto);
	});
}

function GetionarPulsaciones(e, objCajaTexto){

    var objContTextoPredictivo = "#cont_texto_predictivo" + $(objCajaTexto).attr("id");
		   
	switch(e.keyCode){
		case 27:    //Escape
			if(GetionarPulsaciones.Tmr)
				clearTimeout(GetionarPulsaciones.Tmr);

			OcultarTextoPredictivo(objCajaTexto);
			break;
		case 40:    //abajo
		    if($(objContTextoPredictivo).length > 0){
		        if($("#" + $(objContTextoPredictivo).attr("id") + ">ul>li.activo").length > 0){
		            $("#" + $(objContTextoPredictivo).attr("id") + ">ul>li.activo").next("li").addClass("activo");
		            $("#" + $(objContTextoPredictivo).attr("id") + ">ul>li.activo:first").removeClass("activo");
		        }else{
		            $("#" + $(objContTextoPredictivo).attr("id") + ">ul>li:first").addClass("activo");
		        }
			    $(objCajaTexto).val($("#" + $(objContTextoPredictivo).attr("id") + ">ul>li.activo").html());
		    }else{
                TextoPredictivo(objCajaTexto);
            }
		    break;
		case 38:    //arriba	
		    if($("#" + $(objContTextoPredictivo).attr("id") + ">ul>li.activo").length > 0){
		        $("#" + $(objContTextoPredictivo).attr("id") + ">ul>li.activo").prev("li").addClass("activo");
		        $("#" + $(objContTextoPredictivo).attr("id") + ">ul>li.activo:last").removeClass("activo");
		    }else{
		        $("#" + $(objContTextoPredictivo).attr("id") + ">ul>li:last").addClass("activo");
		    }
		    $(objCajaTexto).val($("#" + $(objContTextoPredictivo).attr("id") + ">ul>li.activo").html());
		    break;
		case 13:    //Enter
	        if(GetionarPulsaciones.Tmr)
	            clearTimeout(GetionarPulsaciones.Tmr);

		    if($("#" + $(objContTextoPredictivo).attr("id") + ">ul>li.activo").length > 0){
		        $(objCajaTexto).val($("#" + $(objContTextoPredictivo).attr("id") + ">ul>li.activo").html());
		        OcultarTextoPredictivo(objCajaTexto);
		        $(objCajaTexto).focus();
		    }else{
		        OcultarTextoPredictivo(objCajaTexto);
		    }
		    break;
		default:
		    if((e.keyCode >= 48 && e.keyCode <= 90) || (e.keyCode == 32) || (e.keyCode == 8) || (e.keyCode == 46)){
		        if(GetionarPulsaciones.Tmr)
		            clearTimeout(GetionarPulsaciones.Tmr);
    		        
		        if($(objCajaTexto).val().length > 0){
	                GetionarPulsaciones.Tmr = setTimeout('TextoPredictivo("#' + $(objCajaTexto).attr("id") + '")', 350);
		        }else{
			        OcultarTextoPredictivo(objCajaTexto);
		        }
		    }
	}
}

function TextoPredictivo(objCajaTexto){

	if($("#tipo_servicio").val() != "5")
		return false;	
	
    var Texto = $(objCajaTexto).val();
    var objContTextoPredictivo = "#cont_texto_predictivo" + $(objCajaTexto).attr("id");
    
	$.ajax({
	    timeout: 2000,
		type: "GET", 
		url: "/buscador/ajax_texto_predictivo.asp?texto=" + escape(Texto),
		cache: false,
		async: true,
		success: function(html){
			if(html == "" || $(objCajaTexto).val() == ""){
				OcultarTextoPredictivo(objCajaTexto);
			}else{				
			    if($(objCajaTexto).val() == Texto){
			        if($(objContTextoPredictivo).length == 0){
			            $(objCajaTexto).after("<div class='cont_texto_predictivo' id='cont_texto_predictivo" + $(objCajaTexto).attr("id") + "'></div>");
			            var PosCaja = $(objCajaTexto).offset();
			            $(objContTextoPredictivo).offset({top: PosCaja.top + $(objCajaTexto).outerHeight(), left: PosCaja.left})
			        }
				    $(objContTextoPredictivo).html(html);
				    $(objContTextoPredictivo).show();
    				
				    $("#" + $(objContTextoPredictivo).attr("id") + ">ul>li#btn_cerrar_txt_predictivo").click(function(){
					    OcultarTextoPredictivo(objCajaTexto);
				    });
    				
				    $("#" + $(objContTextoPredictivo).attr("id") + ">ul").click(function(){
					    $(objCajaTexto).val($("#" + $(objContTextoPredictivo).attr("id") + ">ul>li.activo").html());
					    OcultarTextoPredictivo(objCajaTexto);
					    $(objCajaTexto).focus();
				    });
    				
				    $("#" + $(objContTextoPredictivo).attr("id") + ">ul>li").mouseover(function(){
				        $("#" + $(objContTextoPredictivo).attr("id") + ">ul>li").not(this).removeClass("activo");
					    $(this).addClass("activo");
				    });
    				
				    $(objContTextoPredictivo).mouseover(function(){
					    $(objCajaTexto).unbind("blur");
				    });
    				
				    $(objContTextoPredictivo).mouseout(function(){
					    $(objCajaTexto).blur(function(event){
						    OcultarTextoPredictivo(objCajaTexto);
					    });
				    });
				}
			}
		}
	});
}

function OcultarTextoPredictivo(objCajaTexto){
	$("#cont_texto_predictivo" + $(objCajaTexto).attr("id")).remove();
}


