	(function($)
	{

	    $.suggest=function(input,options)
	    {

	        var $input=$(input).attr("autocomplete","off");
	        var $results;

	        var timeout=false;		// hold timeout ID for suggestion results to appear	
	        var prevLength=0;			// last recorded length of $input.val()
	        var cache=[];				// cache MRU list
	        var cacheSize=0;			// size of cache in chars (bytes?)

	        if($.trim($input.val())==''||$.trim($input.val())=='中文/拼音') $input.val('中文/拼音').css('color','#002C6B');
	        if(!options.attachObject)
	            options.attachObject=$(document.createElement("ul")).appendTo('body');

	        $results=$(options.attachObject);
	        $results.addClass(options.resultsClass);

	        resetPosition();
	        $(window)
				.load(resetPosition)		// just in case user is changing size of page while loading
				.resize(resetPosition);

	        $input.blur(function()
	        {
	            setTimeout(function() { $results.hide() },200);
	        });

	        $input.focus(function()
	        {
	            if($.trim($(this).val())=='中文/拼音')
	            {
	                $(this).val('').css('color','#002c6b');
	            }
	            if($.trim($(this).val())=='')
	            {

	                var q=$.trim($(this).val());
	                displayItems(q);
	                //显示热门城市列表
	            }
	        });
	        $input.click(function()
	        {
	            var q=$.trim($(this).val());
	            displayItems(q);
	            $(this).select();
	        });

	        // help IE users if possible
	        try
	        {
	            $results.bgiframe();
	        } catch(e) { }

	        $input.keydown(processKey);//

	        function resetPosition()
	        {
	            // requires jquery.dimension plugin
	            var offset=$input.offset();
	            $results.css({
	                top: (offset.top+input.offsetHeight)+'px',
	                left: offset.left+'px'
	            });
	        }


	        function processKey(e)
	        { 
	            if(e.keyCode==32||e.keyCode==0||e.keyCode==9)
	            { 
	                selectCurrentResult();
	                getCurrentResult();
	            }
	            // handling up/down/escape requires results to be visible
	            // handling enter/tab requires that AND a result to be selected
	            if((/27$|38$|40$/.test(e.keyCode)&&$results.is(':visible'))||
					(/^13$|^9$/.test(e.keyCode)&&getCurrentResult()))
	            {

	                if(e.preventDefault)
	                    e.preventDefault();
	                if(e.stopPropagation)
	                    e.stopPropagation();

	                e.cancelBubble=true;
	                e.returnValue=false;

	                switch(e.keyCode)
	                {

	                    case 38: // up
	                        prevResult();
	                           
	                        break;
	                    case 40: // down
	                        nextResult();
	                         
	                        break;
	                    case 13: // return
	                        selectCurrentResult();
	                        break;
	                    case 27: //	escape
	                        $results.hide();
	                        break;
	                }

	            } else if($input.val().length!=prevLength)
	            {

	                if(timeout)
	                    clearTimeout(timeout);
	                timeout=setTimeout(suggest,options.delay);
	                prevLength=$input.val().length;
	            }
	        }
	        function suggest()
	        {
	            var q=$.trim($input.val());

	            displayItems(q);
	        }
	        function displayItems(items)
	        {
	            var country='CN';
	            var objcountry=document.getElementById("arrcity_2word");
	            if(objcountry!=null)
	            {
	                country=objcountry.value;
	            }
	            var html='';
	            //  alert(country);
	            if(items=='')
	            {//热门城市遍历
	                for(var i=0;i<options.hot_list.length;i++)
	                {
	                    if(country==options.hot_list[i][4]||options.hot_list[i][4]=="")
	                    {
	                        html+='<li rel="'+options.hot_list[i][0]+'"><a href="#'+i+'"><span>'+options.hot_list[i][2]+'</span>'+options.hot_list[i][1]+'</a></li>';
	                    }
	                }
	                html='<div class="gray ac_result_tip">請輸入中文/拼音或者↑↓選擇</div><ul>'+html+'</ul>';
	            }
	            else
	            {
	                /*if (!items)
	                return;
	                if (!items.length) {
	                $results.hide();
	                return;
	                }*/

	                for(var i=0;i<options.source.length;i++)
	                {//国内城市匹配
	                    var reg=new RegExp('^'+items+'.*$','im');
	                    if((reg.test(options.source[i][0])||reg.test(options.source[i][1])||reg.test(options.source[i][2])||reg.test(options.source[i][3]))&(country==options.source[i][4]||options.source[i][4]==""))
	                    {
	                        html+='<li rel="'+options.source[i][0]+'"><a href="#'+i+'"><span>'+options.source[i][2]+'</span>'+options.source[i][1]+'</a></li>';
	                    }
	                }
	                if(html=='')
	                {
	                    suggest_tip='<div class="gray ac_result_tip">對不起，找不到：'+items+'</div>';
	                }
	                else
	                {
	                    suggest_tip='<div class="gray ac_result_tip">'+items+'，按拼音排序</div>';
	                }
	                html=suggest_tip+'<ul>'+html+'</ul>';
	            }

	            $results.html(html).show();
	            $results.children('ul').children('li:first-child').addClass(options.selectClass);

	            $results.children('ul')
					.children('li')
					.mouseover(function()
					{
					    $results.children('ul').children('li').removeClass(options.selectClass);
					    $(this).addClass(options.selectClass);
					})
					.click(function(e)
					{
					    e.preventDefault();
					    e.stopPropagation();
					    selectCurrentResult();
					});
	        }

	        function getCurrentResult()
	        {

	            if(!$results.is(':visible'))
	                return false;

	            var $currentResult=$results.children('ul').children('li.'+options.selectClass);
	            if(!$currentResult.length)
	                $currentResult=false;
	           // alert($currentResult);
	            return $currentResult;

	        }

	        function selectCurrentResult()
	        {

	            $currentResult=getCurrentResult();

	            if($currentResult)
	            {
	                $input.val($currentResult.children('a').html().replace(/<span>.+?<\/span>/i,''));
	                $results.hide();

	                if($(options.dataContainer))
	                {
	                    $(options.dataContainer).val($currentResult.attr('rel'));
	                }

	                if(options.onSelect)
	                {
	                    options.onSelect.apply($input[0]);
	                }
	            }

	        }

	        function nextResult()
	        {

	            $currentResult=getCurrentResult();

	            if($currentResult)
	                $currentResult
						.removeClass(options.selectClass)
						.next()
							.addClass(options.selectClass);
	            else
	                $results.children('ul').children('li:first-child').addClass(options.selectClass);

	        }

	        function prevResult()
	        {

	            $currentResult=getCurrentResult();

	            if($currentResult)
	                $currentResult
						.removeClass(options.selectClass)
						.prev()
							.addClass(options.selectClass);
	            else
	                $results.children('ul').children('li:last-child').addClass(options.selectClass);

	        }

	    }

	    $.fn.suggest=function(source,options)
	    {

	        if(!source)
	            return;

	        options=options||{};
	        options.source=source;
	        options.hot_list=options.hot_list||[];
	        options.delay=options.delay||0;
	        options.resultsClass=options.resultsClass||'ac_results';
	        options.selectClass=options.selectClass||'ac_over';
	        options.matchClass=options.matchClass||'ac_match';
	        options.minchars=options.minchars||1;
	        options.delimiter=options.delimiter||'\n';
	        options.onSelect=options.onSelect||false;
	        options.dataDelimiter=options.dataDelimiter||'\t';
	        options.dataContainer=options.dataContainer||'#SuggestResult';
	        options.attachObject=options.attachObject||null;

	        this.each(function()
	        {
	            new $.suggest(this,options);
	        });

	        return this;

	    };

	})(jQuery);
