﻿ 
     // by zhang hong on 2010.12.30 
     // for ypmap p2p search list tips like baidu search box
//     /* aspx code example:
//     
//         <br/><br/><br/><br/><br/>
//        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<asp:TextBox ID="txtKeyF" name="txtKeyF" runat="server"  onkeyup="_suggest_tip_searchCat(event);"  ondblclick="_suggest_tip_searchCat(event)" onclick="_suggest_tip_hideTips()" ></asp:TextBox>
//        <br/><br/><br/><br/><br/>
//        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<asp:TextBox ID="txtKeyT" name="txtKeyT" runat="server"  onkeyup="_suggest_tip_searchCat(event);"  ondblclick="_suggest_tip_searchCat(event)" onclick="_suggest_tip_hideTips()" ></asp:TextBox>
//   
//       
//     
//     
//    */ 
     
     
     
    //ie chrome firefox ok
    document.writeln("<iframe id=\"ifKWCat\" style=\"position:absolute;z-index:998;display:none;\" frameborder=\"0\"></iframe>");
    document.writeln(" <div id=\"divKeywordCat\" style=\"BORDER: black 1px solid; Z-INDEX: 999;margin:0; padding:0; display: none; position: absolute; height:400px; overflow:auto;  text-align:left;  background-color: white;\"></div>");
    $(document).bind("click",function () { $("#divKeywordCat").css("display","none"); $("#ifKWCat").css("display","none");   });
    
    
    var _iSelectItem=0;
    var _iSelectAllItemCount=0;
    var _suggestType="";
    var $objSearch;
    
    function _suggest_tip_searchCat(e)
    {       
        $objSearch = $(e.target||e.srcElement).eq(0);
        if($.trim($objSearch.val()).length < 1)return;
        $objSearch.attr("selectOrInput","input");
        _suggestType = $objSearch.attr("suggestType").toLowerCase();
        if(!(e.keyCode == 13 || e.keyCode == 38 || e.keyCode == 40  || e.keyCode == 9))
        {   
            //_suggest_tip_setText($objSearch.val(),"0","0");
            var _url="", _parm=[];
            if(_suggestType == "p2p")
            {
                _url="GetP2PSearchTips.ashx";
                _parm = {skey:($objSearch.val() == "*"?"%":$objSearch.val().replace("*","%")),flag:"tip"};
            }
            else if(_suggestType == "busroute")
            {
                _url="TransportBus_GetData.ashx";
                _parm = {flag:"tip",e_company:$("#hidSelectTab").val(),line:($objSearch.val() == "*"?"%":$objSearch.val().replace("*","%"))};
            }
            else if(_suggestType == "stationtip")
            {
                _url="TransportBus_GetData.ashx";
                _parm = {flag:"stationtip",station:($objSearch.val() == "*"?"%":$objSearch.val().replace("*","%"))};
            }
            else if(_suggestType == "gmbtip")
            {
                _url="TransportGMB_GetData.ashx";
                _parm = {flag:"gmbtip",route_no:($objSearch.val() == "*"?"%":$objSearch.val().replace("*","%"))};
            }
            _url +="?r="+Math.random();
            //alert(_parm =werqwe );
            $.get(_url,_parm, 
                    function afterSearch(data)
                    {
                        //return json format data string
                    
                        var sT="";;
                        var jsonData=eval(data);
                        for(i = 0; i< jsonData.length ; i++)
                        {
                            if(jsonData[i].name.length > 0)sT = sT + "<p id='p_"+(i+1)+"' tagvalue='"+jsonData[i].name+"' onmouseover='_suggest_tip_onMouseIn(event)' onmouseout='_suggest_tip_onMouseOut(event)' onclick='_suggest_tip_onClick(event)'  x='" + (jsonData[i].x?jsonData[i].x:"0") +"'  y='"+(jsonData[i].y?jsonData[i].y:"0") + "' >"+jsonData[i].name + "</p>"
                            _iSelectAllItemCount = i+1;
                        }
                    
                        //alert(sT)
                        if(sT.length > 2)
                        { 
                            $("#divKeywordCat").css("display","").css("top", $objSearch.eq(0).position().top + 23).css("left", $objSearch.eq(0).position().left).html(sT);
                            $("p[id^='p_']").css("padding", "5px 5px 5px 5px").css("margin", "0").css("font-size", "12px");
                            if($objSearch.attr("suggestWidth"))$("#divKeywordCat").width( parseInt($objSearch.attr("suggestWidth")) ); else $("#divKeywordCat").width( parseInt($objSearch.width())*2 );
                            if($objSearch.attr("suggestHeight"))$("#divKeywordCat").height( $objSearch.attr("suggestHeight") ); else $("#divKeywordCat").height( "auto" ) ;
                            $("#ifKWCat").css("display","").width($("#divKeywordCat").width()).height($("#divKeywordCat").height()).css("top",$("#divKeywordCat").position().top).css("left",$("#divKeywordCat").position().left);
                            
                        }
                        else
                        {    $("#divKeywordCat").html("").css("display","none"); $("#ifKWCat").css("display","none");  }
                    }, 
                  "text"
                 );
        }
        if(e.keyCode == 38)
        { //up            
            if(_iSelectItem > 0)
            {
                $("#divKeywordCat").css("display","").css("top", $objSearch.eq(0).position().top + 23).css("left", $objSearch.eq(0).position().left);  
                $("#ifKWCat").css("display","").css("top", $objSearch.eq(0).position().top + 23).css("left", $objSearch.eq(0).position().left);
                
                
                $("p[id^='p_"+_iSelectItem+"']").eq(0).css("background-color","#fff").css("text-decoration","none");
                _iSelectItem = _iSelectItem - 1;
                if(_iSelectItem > 0)
                {
                    $("p[id^='p_"+_iSelectItem+"']").eq(0).css("background-color","#eee").css("text-decoration","underline");
                    _suggest_tip_setText( $("p[id^='p_"+_iSelectItem+"']").eq(0).text(),$("p[id^='p_"+_iSelectItem+"']").attr("x"),$("p[id^='p_"+_iSelectItem+"']").attr("y"));
                }
                else
                    _suggest_tip_setText( "","0","0"); 
            }  
            else
                _suggest_tip_setText( "","0","0");  
        }
        if(e.keyCode == 40)
        { //down
            if( _iSelectItem < _iSelectAllItemCount )
            {
                $("#divKeywordCat").css("display","").css("top", $objSearch.eq(0).position().top + 23).css("left", $objSearch.eq(0).position().left);  
                $("#ifKWCat").css("display","").css("top", $objSearch.eq(0).position().top + 23).css("left", $objSearch.eq(0).position().left);
                $("p[id^='p_"+_iSelectItem+"']").eq(0).css("background-color","#fff").css("text-decoration","none");
                _iSelectItem = _iSelectItem + 1;
                $("p[id^='p_"+_iSelectItem+"']").eq(0).css("background-color","#eee").css("text-decoration","underline");
                _suggest_tip_setText( $("p[id^='p_"+_iSelectItem+"']").eq(0).text(),$("p[id^='p_"+_iSelectItem+"']").attr("x"),$("p[id^='p_"+_iSelectItem+"']").attr("y"));
            }
        }
        if(e.keyCode == 13)
        { //enter
            if(_iSelectItem > 0)
            {
               _suggest_tip_setText( $("p[id^='p_"+_iSelectItem+"']").eq(0).text(),$("p[id^='p_"+_iSelectItem+"']").attr("x"),$("p[id^='p_"+_iSelectItem+"']").attr("y")); 
               $("#divKeywordCat").css("display","none");      $("#ifKWCat").css("display","none");         
            }    
        }   
         
        if(e.keyCode == 9)
        { //tab
           $("#divKeywordCat").css("display","none");          $("#ifKWCat").css("display","none");     
        }     
        
    }
        
    function _suggest_tip_onMouseOut(e)
    {   
        var obj = e.target||e.srcElement;
        $(obj).css("background-color","#fff").css("text-decoration","none").css("cursor","pointer");
    }
    
    function _suggest_tip_onMouseIn(e)
    { 
        var obj = e.target||e.srcElement;
        $(obj).css("background-color","#eee").css("text-decoration","underline").css("cursor","hand");
    }
    
    function _suggest_tip_onClick(e)
    {   
        var obj = e.target||e.srcElement;
        _suggest_tip_setText( $(obj).text(),$(obj).attr("x"),$(obj).attr("y"));
        
        $("#divKeywordCat").css("display","none");   $("#ifKWCat").css("display","none");
        
        if($objSearch.attr("callback") && $.trim($objSearch.attr("callback")).length > 0){$objSearch.attr("selectOrInput","select");eval($objSearch.attr("callback"));$objSearch.attr("selectOrInput","input");}  //選擇之後要恢復input值
        
    }
    
    
    function _suggest_tip_setText(sValue,x,y)
    {    
        if(_suggestType == "busroute")$objSearch.val($.trim(sValue.split('[')[0]));else $objSearch.val(sValue);
        $objSearch.attr("x",x).attr("y",y);
    }   
       
    function _suggest_tip_hideTips()
    {        
        $("#divKeywordCat").css("display","none");   $("#ifKWCat").css("display","none");
    }
    

