// JavaScript Document
; (function($)
{
    $.fn.jSelectHotelCity = function(options)
    {
        var settings = {
            defaultSelectedCity: "",
            defaultHotCity: "",
            tips: ""
        };
        var op = $.extend(settings, options);
        var $this = $(this);
        var citydata = null;
        var windowid = "selectcity";
        var timeoutid = null;
        var searchcitypopwincontent = null;
        var $citys = $("<span></span>"); //全部城市的html
        var hideSelectCity = function()
        {
            $("#" + windowid).remove();
        }
        var checkExternalClick = function(event)
        {
            var $target = $(event.target);
            if ($target.parents('#' + windowid).length == 0 && !$target.hasClass("hasselectcity"))
            {
                setTips();
                hideSelectCity();
            }
        }
        var setTips = function()
        {
            if ($this.val() == "")
            {
                $this.val(op.tips).attr("title", op.tips)
            }
        }
        var initSelectCity = function()
        {
            setTips();
            $this.addClass("hasselectcity");
            $.getJSON("/mu/hotel/images/citydata.js",
            function(data)
            {
                citydata = data;
                $.each(citydata.citys,
                function(i, item)
                {
                    var $city = $("<a style=\"display: none;\" href=\"#\"><span>BEIJING</span>北京</a>");
                    $city.attr("enname", item.enname).attr("cnname", item.cnname).attr("code", item.code);
                    $city.html("<span>" + item.enname + "</span>" + item.cnname);
                    $city.click(function()
                    {

                        var temp = $(this).text();
                        var spantemp = $(this).find("span").text();
                        $this.attr("value", temp.replace(spantemp, ""));
                        $.msgbox.closemsgbox(windowid);
                        return false;
                    });
                    $citys.append($city);
                });
            });
            $.get("/mu/hotel/images/searchcity.html",
            function(data)
            {
                searchcitypopwincontent = data;
            });
            $(document).mousedown(function(event)
            {
                checkExternalClick(event)
            });
        }
        initSelectCity();
        var showHotCity = function(obj)
        {
        	
            var offsetleft = $(obj).offset().left;
            var offsettop = $(obj).offset().top + $(obj).innerHeight();
            var $container_right = $(obj).parents("#container_right");
            if (offsetleft + 260 > $(document).width())
            {
                offsetleft = offsetleft - 260 + 6 + $(obj).width()
            }
            $.get("/mu/hotel/images/hotcity.html",
            function(data)
            {
                var $popwin = $.msgbox.popupwin(windowid, 260, 100, "<a id='hotcity' class='current' href='#' title='热门城市'>热门城市</a> <a id='allcity' href='#' title='所有城市'>所有城市</a>", data).css({
                    "top": offsettop + "px",
                    "left": offsetleft + "px"
                }).addClass("popwin_" + windowid);
                $popwin.find("#hotcitys li").click(function()
                {
                    $(obj).attr("value", $(this).text());
                    $.msgbox.closemsgbox(windowid);
                    return false;
                });
                $popwin.find("#hotcity").click(function()
                {
                    return false;
                }); 
                $popwin.find("#allcity").click(function()
                {
                    showAllCity($(obj));
                    return false;
                })
            })
        }

        var showAllCity = function(obj)
        {
            var offsetleft = $(obj).offset().left;
            var offsettop = $(obj).offset().top + $(obj).innerHeight();
            if (offsetleft + 260 > $(document).width())
            {
                offsetleft = offsetleft - 260 + 6 + $(obj).width()
            }
            $.get("/mu/hotel/images/allcity.html",
            function(data)
            {
                var $popwin = $.msgbox.popupwin(windowid, 260, 100, "<a id='hotcity'href='#' title='热门城市'>热门城市</a> <a id='allcity'  class='current' href='#' title='所有城市'>所有城市</a>", data).css({
                    "top": offsettop + "px",
                    "left": offsetleft + "px"
                }).addClass("popwin_" + windowid);
                $popwin.find("#allcitys a").click(function()
                {
                    var temp = $(this).text();
                    var spantemp = $(this).find("span").text();
                    $(obj).attr("value", temp.replace(spantemp, "")); //spantemp+" "+
                    $.msgbox.closemsgbox(windowid);
                    return false;
                });
                $popwin.find("#allcity").click(function()
                {
                	
                    return false;
                });
                $popwin.find("#hotcity").click(function()
                {
                    showHotCity($(obj));
                    return false;
                })
            })
        }

        var searchCity = function(obj)
        {
        	
            var offsetleft = $(obj).offset().left;
            var offsettop = $(obj).offset().top + $(obj).innerHeight();
            if (offsetleft + 260 > $(document).width())
            {
                offsetleft = offsetleft - 260 + 6 + $(obj).width()
            }
            var $popwin = $.msgbox.popupwin(windowid, 260, 300, "<a id='hotcity'href='#' title='热门城市'>热门城市</a> <a id='allcity'  class='current' href='#' title='所有城市'>所有城市</a>", searchcitypopwincontent).css({
                "top": offsettop + "px",
                "left": offsetleft + "px"
            }).addClass("popwin_" + windowid);
            $popwin.find("#searchmessage").html($(obj).val() + ", 按拼音排序");

            //显示搜索结果
            var keyword = $(obj).val().toLowerCase();
            var $resultcitys = $popwin.find("#resultcitys");
            $resultcitys.append($citys);
            var showNumber=0;
            $citys.find("a").each(function(i, item)
            {
            	if(showNumber>=10)
            	{
            		$(this).hide();
            		return;
            	}
                if ($(item).attr("enname").toLowerCase().indexOf(keyword) > -1 || $(item).attr("cnname").toLowerCase().indexOf(keyword) > -1 || $(item).attr("code").toLowerCase().indexOf(keyword) > -1)
                {
                	showNumber++;
                    $(this).show();
                }
                else
                {
                    $(this).hide();
                }
            });
            $popwin.find("#resultcitys a").click(function()
            {
                var temp = $(this).text();
                var spantemp = $(this).find("span").text();
                $(obj).attr("value", temp.replace(spantemp, ""));
                $.msgbox.closemsgbox(windowid);
                return false;
            });
            if ($resultcitys.find("a").length == 1)
            {
                $popwin.find("#searchmessage").html("对不起，找不到：" + $(obj).val());
            }
            $popwin.find("#allcity").click(function()
            {
                return false;
            });
            $popwin.find("#hotcity").click(function()
            {
                showHotCity($(obj));
                return false;
            })
        }

        $(this).focus(function()
        {
            if ($(this).attr("value") == op.tips || $(this).attr("value") == "")
            {
                $(this).attr("value", "");
                showHotCity(this);
            }
            else
            { //搜索
                searchCity(this);
            }

        });
        $(this).keyup(function()
        {
            var thisobj = this;
            if ($(thisobj).val() == "")
            {
                clearTimeout(timeoutid);
                return false;
            }
            if (timeoutid != null)
            {
                clearTimeout(timeoutid);
                timeoutid = null;
            }
            timeoutid = setTimeout(function()
            {
                searchCity(thisobj)
            },
            350);
        })
    }
})(jQuery);
