﻿// JScript 文件

	var map;
	var bounds;
	var cookroomGIcons = new Object();
	
	var mapScrollLeft = 0;//地图绝对定位的左边距。
	var mapScrollMiniTop = 0;//地图滚动的最小上边距。不能小于这个值。
	var mapCurTop = 0;//当前的上边距;
	var cookroomNameHash = new Object();
	var lableHangOn = null;//餐馆名提示 当前 是标定到哪个对象的。
    function load() 
    {
        if(cookroomPositioins.length == 0) return;
        if (GBrowserIsCompatible()) 
        {
            map = new GMap2(document.getElementById("map"));
		    map.addControl(new GSmallZoomControl());
		    map.addControl(new GMenuMapTypeControl());
		    //map.setMapType(G_HYBRID_MAP);
            //map.setCenter(new GLatLng(29.57505,106.52933), 15);
            map.setCenter(new GLatLng(0,0),0);
            bounds = new GLatLngBounds();
        }
        
        window.setInterval
        (
            function()
            {
                //得到建议操作条的位置
                var topPosition = getElementXY( document.getElementById("searchAdvice"));
                //alert(topPosition.x + "-" + topPosition.y);
                var mapBaseLine = topPosition.y + 86;
                var scrollToTop = document.documentElement.scrollTop - mapBaseLine;
                if(scrollToTop < 0) scrollToTop = 0;
                var currentTop = document.getElementById("map").style.top;
                if(currentTop == "") 
                {
                    currentTop = 0;
                }
                else
                {
                    currentTop = parseInt(currentTop);
                }
                if(scrollToTop == currentTop) return;
                
                var newTop = Math.floor((scrollToTop - currentTop) * 0.3 + 1) + currentTop;
                
                if(Math.abs(newTop - currentTop) > Math.abs(scrollToTop - currentTop))
                {
                    newTop = scrollToTop;
                }
                
                document.getElementById("map").style.top = newTop +"px";
                
                //alert(document.documentElement.scrollTop);
            }
            ,
            40
        );
        
      /////////////////////////////
//      var panelObject = document.getElementById("tiplist_div");
//      var panelPosition = getXY(panelObject);
//      //alert(panelPosition.x);
//      mapScrollLeft = panelPosition.x-6;
//      
//      mapScrollMiniTop = panelPosition.y + panelObject.offsetHeight + 7;
//      window.setInterval(setMapScrollPosition,33);
//      if(window.attachEvent)
//      {
//        window.attachEvent("onresize",function(){
//            var panelObject = document.getElementById("tiplist_div");
//            var panelPosition = getXY(panelObject);
//            mapScrollLeft = panelPosition.x-6;
//        })
//      }
//      else
//      {
//        window.addEventListener("resize",function(){
//            var panelObject = document.getElementById("tiplist_div");
//            var panelPosition = getXY(panelObject);
//            mapScrollLeft = panelPosition.x-6;
//        },false)
//      }
    }

    var cdebugobj = null;
	function AddPointer()
	{
	    if(cookroomPositioins.length == 0) return;
	    var heighestLan = 0;//用于记录最高纬度
	    var nati = 0;//用于记录一个经度
	    for(var i=0;i<cookroomPositioins.length;i++)//开始循环插入标记点
	    {
	        if(!cookroomPositioins[i].id) continue;
	        if(cookroomPositioins[i].left > heighestLan)
	        {
	            heighestLan = cookroomPositioins[i].left;
	        }
	        nati=cookroomPositioins[i].top;
	        //document.getElementById("debugdiv").innerHTML +=  cookroomPositioins[i].id + " - "+cookroomPositioins[i].left+"<br />";
	        var point = new GLatLng(cookroomPositioins[i].left/100000,cookroomPositioins[i].top/100000);
	        bounds.extend(point);
	        
	        var MarkerOption = {};
            var Icon1 = new GIcon(G_DEFAULT_ICON);
            Icon1.image="GMarkers/"+cookroomPositioins[i].id+".png";
            Icon1.iconSize = new GSize(22, 34); 
            
	        MarkerOption.icon = Icon1;
	        
	        var mk = new GMarker(point,MarkerOption);
	        
			//当用户点击GIcon
	        GEvent.addListener(mk,"click",
							   function()
							   {
								   for(i in cookroomGIcons)
								   {
									   if(cookroomGIcons[i] == this)
									   {
										   var listRootDiv = document.getElementById("reslist_div");
										   var loopChild = listRootDiv.firstChild;
										   var duCount = 0;
										   //开始查找div
										   while(loopChild = loopChild.nextSibling)
										   {
											   if(!loopChild.tagName) continue;
											   if(loopChild.tagName.toLowerCase() == "div")
											   {
												   duCount++;
												   if(duCount==i)
												   {
													   var url = loopChild.innerHTML.match(/cookroom\.aspx\?[^\"]+/i);
													   window.open(url);
												   }
											   }
										   }
									   }
								   }
								   
								   cdebugobj = this;
								});
	        GEvent.addListener(mk,"mouseover",
	                function(id,name)
	                {
	                    return function()
	                    {
	                        displayNameOnMap(this , name);
	                        this.setImage("GMarkers/"+id+"g.png");
	                    }
	                }(cookroomPositioins[i].id,cookroomPositioins[i].name)
	        );
	        
	        GEvent.addListener(mk,"mouseout",
	                function(id)
	                {
	                    return function()
	                    {
	                        var lbObj = document.getElementById("googleMapLable");
	                        lbObj.style.visibility = "hidden";
	                        this.setImage("GMarkers/"+id+".png");
	                    }
	                }(cookroomPositioins[i].id)
	        );
	        map.addOverlay(mk);
	        cookroomGIcons[cookroomPositioins[i].id] = mk;
	    }
	    var additionalTop = new Object();
	    additionalTop[13] = 430;
	    additionalTop[14] = 220;
	    additionalTop[15] = 85;
	    additionalTop[16] = 62;

	    var zonelevel = map.getBoundsZoomLevel(bounds);//计算缩放等级。
	    if(additionalTop[zonelevel])//进行临界点的纬度向上偏移。
	    {
	       bounds.extend(new GLatLng((heighestLan+additionalTop[zonelevel])/100000,nati/100000) );
	    }
	    zonelevel = map.getBoundsZoomLevel(bounds);
        
        var z_level = map.getBoundsZoomLevel(bounds);//计算缩放等级。
        
        if(z_level == 17)
        {
            z_level = 16;
        }
	    map.setZoom(z_level);//设置缩放等级。
	    map.setCenter(bounds.getCenter());
		//var point = new GLatLng(29.57505,106.52933);
		//var mk = new GMarker(point);
		//map.addOverlay(mk);
		
		//var cookroomName = "火锅火锅火锅";
		//mk.openInfoWindow(cookroomName);
		
	}
	
	function findAreaObject(markerObj)
	{
	    for(var i in markerObj)
	    {
	        if(markerObj[i])
	        {
	            if(markerObj[i][0])
	            {
	                if( markerObj[i][0].tagName)
	                {
	                    
	                   if(markerObj[i][0].tagName.toUpperCase() == "AREA")
	                   {
	                        return markerObj[i][0];
	                   }
	                }
	                if(markerObj[i][0].__src__)
	                {
	                    
	                    return markerObj[i][0];
	                    
	                }
	            }
	        }
	    }
	}
	
	//若第二个参数不传，这不更新当前的餐馆名字
	function displayNameOnMap(markerObj, name)
	{
	    
	    
	    areaOjb = findAreaObject(markerObj);
	    var pos = getXY(areaOjb);
	    
	    if(pos.x < mapScrollLeft || pos.y <mapCurTop || pos.x > mapScrollLeft + 276 || pos.y > mapCurTop + 306)
	    {
	        //
	        //return;
	    }
        var lbObj = document.getElementById("googleMapLable");
        if(name)
        {
            lbObj.innerHTML = "<nobr>"+name+"</nobr>";
        }
        //通过长度计算出来的标签向左便宜的长度
        var floatLeftPx;
        floatLeftPx = Math.floor((lbObj.clientWidth - 22)/2);
        var tposLeft = 0;
        if(lbObj.clientWidth + (pos.x - floatLeftPx)+2 > document.body.clientWidth)
        {
            tposLeft = document.body.clientWidth - lbObj.clientWidth - 2;
        }
        else
        {
            tposLeft = (pos.x - floatLeftPx);
        }
        
        lbObj.style.visibility = "visible";
        lbObj.style.left = tposLeft + "px";
        lbObj.style.top = (pos.y - 30)+"px";
	}
	
	cookroomPositioins = new Array();
	
	function storeCookroomPoint(id, left, top,name)
	{
	    
	    if(left == "" || top == "")
	    {
	        cookroomPositioins.push({id:"",left:"",top:"",name:""});   
	    }
	    else
	    {
	        cookroomPositioins.push({id:id,left:left,top:top,name:name});
	    }
	}
	
	function SwitchGIcon(id, isGreen)
	{
	    
	    if(!cookroomGIcons[id+1]) return;
	    if(isGreen)
	    {
	        lableHangOn = cookroomGIcons[id+1];
	        displayNameOnMap(cookroomGIcons[id+1],cookroomPositioins[id].name);
	        cookroomGIcons[id+1].setImage("GMarkers/"+(id+1)+"g.png");
	    }
	    else
	    {
	        lableHangOn = null;
	        var lbObj = document.getElementById("googleMapLable");
	        lbObj.style.visibility = "hidden";
	        cookroomGIcons[id+1].setImage("GMarkers/"+(id+1)+".png");
	    }
	}
	
	function setMapScrollPosition()
	{
	    var gmapdivObj =document.getElementById("gmap_div");
	    gmapdivObj.style.position = "absolute";
	    gmapdivObj.style.left = mapScrollLeft+"px";
	    if(document.documentElement.scrollTop+7 < mapScrollMiniTop)
	    {
	        mapCurTop = mapScrollMiniTop + 7;
	    }
        if(mapCurTop == 0)//第一次直接设置
        {
            gmapdivObj.style.top = (document.documentElement.scrollTop+7)+"px";
            mapCurTop = document.documentElement.scrollTop;
        }
        else
        {
            var distance = document.documentElement.scrollTop - mapCurTop;//目标间距
            if(distance == 0) return;
            var movementDistance = Math.floor(Math.abs(distance/5)+3)*(distance/Math.abs(distance));
            mapCurTop = mapCurTop + movementDistance;//新的位置
            if(movementDistance > 0 && mapCurTop > document.documentElement.scrollTop)
            {
                mapCurTop = document.documentElement.scrollTop;
            }
            else if(movementDistance < 0 && mapCurTop < document.documentElement.scrollTop)
            {
                mapCurTop = document.documentElement.scrollTop;
            }
            if(mapCurTop < mapScrollMiniTop)
            {
                mapCurTop = mapScrollMiniTop;
            }
            gmapdivObj.style.top = mapCurTop+"px";
        }
        if(lableHangOn)
        {
            displayNameOnMap(lableHangOn);//滚动的时候，设置lable位置。
        }
	    
	}
	
	
	///////////
	function NavSearch()
        {
            var inputObj = (document.getElementById(SearchInputID));
            
            if(inputObj.value ==  "多个关键词由空格分隔,例:观音桥 牛肉" || /^\s*$/.test(inputObj.value))
            {
                //alert("请输入内容");
                //return;
            }
            if(inputObj.value != "")
            {
                if(inputObj.value.indexOf("'") > -1)
                {
                    alert("请不要输入引号。");
                    return;
                }
            }
            var inputValue = inputObj.value.replace(/(^\s*)|(\s*$)/g,"");
            window.location = "s_k"+inputValue+".html";
        }
    function alertGetCookInfo(id)
    {
        alert("发送手机短信\"ms"+ id +"\"到10626848获取。(限移动用户,0.5元/条)");
    }
    
    
    function getEvent() //同时兼容ie和ff的写法
{  
    if(document.all)   return window.event;   
    func=getEvent.caller;        
    while(func!=null){  
        var arg0=func.arguments[0];
        if(arg0)
        {
          if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation))
          {  
          return arg0;
          }
        }
        func=func.caller;
    }
    return null;
}


function getXY(el) {
    var pos;
    if (this.getExplorerType() == 1) {
        var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
        var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
        pos = [el.getBoundingClientRect().left + scrollLeft, el.getBoundingClientRect().top + scrollTop];
    } else {
        pos = [el.offsetLeft, el.offsetTop];
        var parentNode = el.offsetParent;
        if (parentNode != el) {
            while (parentNode) {
                pos[0] += parentNode.offsetLeft;
                pos[1] += parentNode.offsetTop;
                parentNode = parentNode.offsetParent;
            }
        }
        if (el.parentNode) {
            parentNode = el.parentNode;
        } else {
            parentNode = null;
        }
        while (parentNode &&
            parentNode.tagName.toUpperCase() != "BODY" &&
            parentNode.tagName.toUpperCase() != "HTML") {
            if (parentNode.style.display != "inline") {
                pos[0] -= parentNode.scrollLeft;
                pos[1] -= parentNode.scrollTop;
            }
            if (parentNode.parentNode) {
                parentNode = parentNode.parentNode;
            } else {
                parentNode = null;
            }
        }
    }
    pos.left = pos.X = pos.x = pos[0];
    pos.top = pos.Y = pos.y = pos[1];
    return pos;
}


function getExplorerType()
    {
        var ua = navigator.userAgent.toLowerCase();
        if(window.ActiveXObject)
        {
            return 1;
        }
        else if((ua.indexOf('firefox')>-1))
        {
            return 2;
        }
        else if((ua.indexOf('opera')>-1))
        {
            return 3;
        }
    }



function getElementXY(obj)
{
    return {x:(obj.getBoundingClientRect().left + document.documentElement.scrollLeft + document.body.scrollLeft),y:(obj.getBoundingClientRect().top + document.documentElement.scrollTop + document.body.scrollTop)};
}


function initHoverUl(id)
{
    var ulObj = document.getElementById(id);
    var liList = ulObj.getElementsByTagName("li");
    if(!liList) return;
    for(var i = 0; i < liList.length; i++)
    {
        if(window.addEventListener)
        {
            liList[i].addEventListener("mouseover",function(i)
            {
                return function()
                {
                    SwitchGIcon(i,true);
                }
            }(i), true);
            
            liList[i].addEventListener("mouseout",function(i)
            {
                return function()
                {
                    SwitchGIcon(i,false);
                }
            }(i), true);
            
        }
        else
        {
            liList[i].attachEvent("onmouseover",function(i)
            {
                return function()
                {
                    SwitchGIcon(i,true);
                }
            }(i));
            
            liList[i].attachEvent("onmouseout",function(i)
            {
                return function()
                {
                    SwitchGIcon(i,false);
                }
            }(i));
        }
        
    }
}


function initResturantHoverEvent()
{
    var mainFriendRcmdList = document.getElementById('friendRcmdContent');
    if(mainFriendRcmdList)
    {
        var bindEventLi = mainFriendRcmdList.getElementsByTagName("li");
        if(!bindEventLi) return;
        for(var i = 0;i < bindEventLi.length; i++)
        {
            bindEventLi[i].onmouseover = function()
            {
                this.style.backgroundColor = "#F2EFEA";
                var toolLine = this.childNodes;
                if(toolLine && toolLine.length > 0)
                {
                    var changeEl = !toolLine[toolLine.length-1].tagName?changeEl = toolLine[toolLine.length - 2]:changeEl = toolLine[toolLine.length - 1];
                    changeEl.className = "restToolHover";
                }
            }
            bindEventLi[i].onmouseout = function()
            {
                this.style.backgroundColor = "white";
                var toolLine = this.childNodes;
                if(toolLine && toolLine.length > 0)
                {
                    var changeEl = !toolLine[toolLine.length-1].tagName?changeEl = toolLine[toolLine.length - 2]:changeEl = toolLine[toolLine.length - 1];
                    changeEl.className = "restToolNormal";
                }
            }
        }
    }
    
    var lilist = $("#resultListUL").find("li");
    for(var i = 0 ; i < lilist.length; i++ )
    {
        $(lilist[i]).mouseenter(
            function()
            {
                //alert(1);
                this.style.backgroundColor = "#F2EFEA";
                $(this).find(".resturantIntro")[0].style.backgroundColor = "#F2EFEA";
                var obj = $(this).find(".bottomTool");
                obj.removeClass();
                obj.addClass("bottomToolHover");
            }
        )
        $(lilist[i]).mouseleave(
            function()
            {
                this.style.backgroundColor = "white";
                $(this).find(".resturantIntro")[0].style.backgroundColor = "white";
                var obj = $(this).find(".bottomToolHover");
                obj.removeClass();
                obj.addClass("bottomTool");
            }
        )
    }
    
    
    $("#foldRcmd").bind("click",function(evt)
    {
        $("#friendRcmdContent").slideToggle("fast",
        function()
        {
            if( $("#foldRcmd").html().indexOf("展开") > -1)
            {
                $("#foldRcmd").html("收起<img src=\"images/cr3_fold_arrow_up.jpg\"  />");
                SetCookie("searchFriendRcmdFold","0");
            }
            else
            {
                $("#foldRcmd").html("展开<img src=\"images/cr3_fold_arrow_down.jpg\"  />");
                SetCookie("searchFriendRcmdFold","1");
            }
            
        }
        );
    });
    
    var rstContainer = document.getElementById("resultListEl");
    if(rstContainer.clientHeight < 600)
    {
        rstContainer.style.height = "600px";
    }
    
    var initPriceChangeEvent = document.getElementById("priceFilter");
    if(initPriceChangeEvent)
    {
        initPriceChangeEvent.onchange = function()
        {
            var nurl = replaceSearchUrlParameter("price", this.value);
            window.location = nurl;
        }
    }
}

function replaceSearchUrlParameter(key, value)
{
    var curUrl = window.location + "";
    var regexCheck = eval("/([\?\&])"+key+"/i");
    var newUrl = "";
    if(regexCheck.test(curUrl))
    {
        newUrl = curUrl.replace(regexCheck,"$1"+key + "=" + value);
    }
    else if(curUrl.indexOf("?") > -1)
    {
        newUrl = curUrl + "&" + key + "=" +value;
    }
    else
    {
        newUrl = curUrl + "?" + key + "=" +value;
    }
    return newUrl;
}

function clickSearchBtn()
{
    window.location = "/s/_" + document.getElementById("searchKeyInput").value.replace(/[\/\.]+/g,"");
    return false;
}

function SetCookie(name,value)//两个参数，一个是cookie的名子，一个是值
{
    var Days = 30; //此 cookie 将被保存 30 天
    var exp  = new Date();    //new Date("December 31, 9998");
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString() + ";path=/;";
}
function getCookie(name)//取cookies函数
{
    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
    if(arr != null) return unescape(arr[2]); return null;
}

//下载餐馆信息到手机
function sendYhqToMobile(cook_id)
{
    $.ajax({
       type: "GET",
       url:"ajax/SendCookRoomInfo.aspx?cook_id="+cook_id,
       success: function(ret){
           if(ret)
           {
              if(ret=="您不是VIP用户或者免费体验已经到期，不能下载餐馆信息到手机。")
              { 
                  if(confirm(ret+"\r\n"+"点击确定查看如何成为VIP。")==true)
                  {
                      window.location.href="vip/vip_help.aspx";
                  }
                  return;
              }
              alert(ret);
           }
       }
    });
    cookinfo_flag=false;  
}

function searchKeyPress(evt)
{
    var key = evt.keyCode || evt.which;
    if(key == 13)
    {
        clickSearchBtn();
        return false;
    }
    return true;
}

if(window.attachEvent)
{
    window.attachEvent("onload",initResturantHoverEvent);
}
else
{
    window.addEventListener("load",initResturantHoverEvent,false);
}
