﻿var map;
var mapID;
var area = new Array();
var areaCenter = new Array();
//默认比例
var defaultSize = 17;
//最小显示比例
var smallSize = 14;
//当前比例
var curSize = 17;
//默认区域
var curArea = 7;
//区域地理坐标
var moveArea = new Array(
                            new Array(85.0507289296831,-179.99695301055908),//i
                            new Array(85.05072800406674,-179.9909234046936),//e
                            new Array(85.0507270784502,-179.984872341156),//a
                            new Array(85.05072985529931,-179.97884273529053),//g
                            new Array(85.0507270784502,-179.972802400589),//k
                            
                            new Array(85.04994857379284,-179.9969744682312),//m
                            new Array(85.04994949955464,-179.99091267585754),//c
                            new Array(85.04994857379284,-179.98489379882812),//z
                            new Array(85.04994857379284,-179.9788534641266),//d
                            new Array(85.04994764803091,-179.97279167175293),//n
                            
                            new Array(85.04916902107692,-179.99696373939514),//l
                            new Array(85.04916994698415,-179.99091267585754),//h
                            new Array(85.04916902107692,-179.98489379882812),//b
                            new Array(85.04916809516955,-179.97884273529053),//f
                            new Array(85.04916809516955,-179.972802400589)//j
                         );
//是否键盘移动
var isKeyMove = 0;
//是否超出展会范围
var isOverScope = 0;

var oldPosition = null;

function load() 
{
  if (GBrowserIsCompatible()) 
  {
    //初始化
    map = new GMap2($("map"),{draggableCursor:"default",draggingCursor:"move"});//在给定的HTML容器之中创建一个新的地图
    
	map.addControl(new GSmallMapControl());//左上角添加放大缩小控件(小号)
	    
	//map.addControl(new GLargeMapControl ()); //左上角添加放大缩小控件(大号)
	
	//当它不嵌套在页面上时
    if(top.location == self.location)
	    map.addControl(new GOverviewMapControl(new GSize(176,160)));//右下角的微缩图
	
    var copyCollection = new GCopyrightCollection('网上展会');//Copyright Messages
    
    //获取当前年份
    var today = new Date();
    
    var copyright = new GCopyright(1, new GLatLngBounds(new GLatLng(-90, -180), new GLatLng(90, 180)), 0, "©"+ today.getFullYear() +" 18show.cn");//创建版本信息
    copyCollection.addCopyright(copyright);//添加版本信息

    var tilelayers = [new GTileLayer(copyCollection, smallSize - 1, defaultSize)]; //数组 参数1:copyCollection对象,参数2:Zoom 最少值 Zoom最大值
    //加载地图块
    function CustomGetTileUrl(tile, zoom) {

        if (tile.x < 10)
            tile.x = '0' + tile.x;
        return imageurl = "/res/show/" + zoom + "/Show_x" + tile.y + "_y" + tile.x + ".jpg";
    }

    tilelayers[0].getTileUrl = CustomGetTileUrl;
     

    //自定义地图
    var custommap = new GMapType(tilelayers, G_SATELLITE_MAP.getProjection(), "网上展会", {errorMessage:"已经超出展厅范围"});
    map.addMapType(custommap);//添加自定义地图
    map.removeMapType(G_HYBRID_MAP);//在地图之中删除地图类型支持
    map.removeMapType(G_SATELLITE_MAP);
    map.removeMapType(G_NORMAL_MAP);
        
    //var coordinate = GetUrlValue("Coordinate");
    
    map.setCenter(new GLatLng(85.04994857379284, -179.98489379882812), defaultSize,custommap);
    
//    //移动到指定位置 ivan 080423
//    if(coordinate != '1')
//     {
//        coordinateLeft = coordinate.substring(0,coordinate.indexOf(','));
//        coordinateTop = coordinate.substring(coordinate.indexOf(',')+1);
//           
//        //延迟两秒后移动到指点位置   
//        setTimeout('panToPositoin(' + coordinateLeft + ',' + coordinateTop +')',2000);
//        
//        //map.setCenter(new GLatLng(coordinateLeft,coordinateTop), defaultSize,custommap);
//     }
        
    //当比例变化时触发事件(比例13只用于右下角微缩图)
    GEvent.addListener(map, "zoomend", function() 
         {
            if( map.getZoom() < smallSize )
                map.setZoom( smallSize );  
         } 
     )  
        
    //初始化结束
    mapID = GetUrlValue('mapId');    
    _Default.GetAllPlacesArea(mapID,GetArea_callback);//加载所有区域矩形
    
    //根据Mouse坐标更新显示坐标显示信息
    GEvent.addListener(map, "moveend", function() 
    {
        for(var i=0;i<area.length;i++)
        {
            var rectangleArea = area[i]
            if(rectangleArea.CheckArea(map.getBounds(),rectangleArea))
            {
                _Default.GetAreaPlaces(mapID,rectangleArea.Name,getGroups_callback);
                area.remove(rectangleArea);
                i--;
            }
        }
        //var center = map.getCenter();
        setcurArea(map.getCenter());        
        
        //$("latlon").innerHTML = center.toString();
    });
    //$('bottomtoolbar').style.display='inline';//显示坐标显示控件
  }  
  //其它
  //$("latlon").innerHTML = "(85.0500347015082, -179.985837936401)";//设置Span控件显示值
  //首次加载Z区
  _Default.GetAreaPlaces(mapID,'Z',getGroups_callback);
  
  //alert(document.getElementById("558"));
    
  GetPositionValue();
  
  
}


//移动到指定位置
function panToPositoin(coordinateLeft,coordinateTop)
{
    map.panTo(new GLatLng(coordinateLeft,coordinateTop))
}


function getGroups_callback(response)
{
    var table = response.value;
    for(var i=0;i<table.Rows.length;i++)
    {
        var row = table.Rows[i];
        
        AddOverlay(row,'OnInit')
	}
}

//拼展台详细信息HTML
function CreateInfoHtml(imageUrl,companyName,placeNo,linkMan,telephone,email,url,isCustom,customLinkMode,tradeShowType)
{
    var showDefaultUrl = url;
    
    if(tradeShowType == 4)
        showDefaultUrl = showDefaultUrl + '/default.html';
    
    //判断是否自定义联系方式  -- by ivan
    if(isCustom == 0)
        return '<table><tr><td height=5px></td></tr></table><table align=center width=300px cellpadding=1 cellspacing=0 border=0 bgcolor=#FFFDEF style=font-size:9pt><tr><td colspan=2 background=/ad/5.png width=100% height=23px style=font-size=10pt>' + companyName + '</td></tr><tr><td colspan =2><iframe width=100% height=72px nosize scrolling=no src=http://'+url+'/CommendProducts.html></iframe></td></tr><tr><td rowspan = 4 width=64px valign=top><img width=64px height=64px src='+imageUrl+'></td><td width=70px>展位号: <font color = red>' + placeNo + '</font></td></tr><tr><td>联系人: ' + linkMan + '</td></tr><tr><td valign=top>联系电话: ' + telephone + '</td></tr><tr><td>Email:' + email + '</td></tr><tr><td colspan = 2 align=center><a target=_blank href=http://'+showDefaultUrl+'><img width=144px height=31px src=/ad/4.png></a></td></tr></table><div style=height:5px;width:318px></div>';
    else
        return '<table><tr><td height=5px></td></tr></table><table align=center width=300px cellpadding=1 cellspacing=0 border=0 bgcolor=#FFFDEF style=font-size:9pt><tr><td colspan=2 background=/ad/5.png width=100% height=23px style=font-size=10pt>' + companyName + '</td></tr><tr><td colspan =2><iframe width=100% height=72px nosize scrolling=no src=http://'+url+'/CommendProducts.html></iframe></td></tr><tr><td rowspan = 2 width=64px valign=top><img width=64px height=64px src='+imageUrl+'></td><td width=70px>展位号: <font color = red>' + placeNo + '</font></td></tr><tr><td>'+ customLinkMode +'</td></tr><tr><td colspan = 2 align=center><a target=_blank href=http://'+showDefaultUrl+'><img width=144px height=31px src=/ad/4.png></a></td></tr></table><div style=height:5px;width:318px></div>';
}


//定位功能 -- by ivan
function GetPositionValue()
{
     var str = window.location.href.toLowerCase();
     if(str != oldPosition)
     {
        oldPosition = str;
        if (str.indexOf('#') > 0)
        {
            var tempArr = str.split("#")[1].split("=");          
            var position = moveArea[tempArr[0]];
            virtualPlaceID = tempArr[1];                
            panToPositoin(position[0],position[1]);
            
            //移动后显示详细内容 
            point = new GLatLng(position[0],position[1]);
            //newPoint = map.fromLatLngToDivPixel(point);
            
            if(parseInt(virtualPlaceID) > 0)
                _Default.GetVirtualPlaceInfo(parseInt(virtualPlaceID),callbackGetVirtualPlaceInfo);
            
        }
     }
     setTimeout('GetPositionValue()',500);
}

function callbackGetVirtualPlaceInfo(res)
{
    var table = res.value;
    var row = table.Rows[0];
    
    //alert(newPoint.x + ',' + newPoint.y)
    
    //调整展位上详细信息指针的坐标
    var c3 = map.fromLatLngToDivPixel(point);
    var clientX = c3.x;
    
    var clientY ;
    
    var curZoom = map.getZoom();
    if(curZoom == 17)
    {
       clientY = c3.y + 15 ;
    }
    else if(curZoom == 16)
    {
       clientY = c3.y + 25 ;
    }
    else if(curZoom == 15)
    {
       clientY = c3.y + 30 ;
    }
    else
    {
        clientY = c3.y +35 ; 
    }
    
    var gPoint = new GPoint(clientX,clientY);
    
    newPoint = map.fromDivPixelToLatLng(gPoint);
    
    //显示展位上详细信息
    map.openInfoWindowHtml(newPoint,AddOverlay(row,'add'));
}

//添加覆盖层
function AddOverlay(row,type)
{
        
    var companyID=row.CompanyID;
    
    var showID = row.ShowID;
    
    var companyName = row.CompanyName;

    var localHostUrl = row.LocalHostUrl;
    
    var companyClass=row.CompanyClass;
    
    var isCustom = row.IsCustom;
    
    var customLinkMode = row.CustomLinkMode;
    
    var tradeShowType = row.TradeShowType;
        
    var html = '<div width: 300px"></div>';
    var image;

    var lines = row.CoordinateLT.split(",");//获取X,Y坐标
    
    var marker;
    var ShowImage = 0;
    RB = row.CoordinateRB.split(",");
    
    var point = new GLatLng(RB[0],lines[1]);  //图标标在地图的坐标
    var rectBounds = new GLatLngBounds(
    new GLatLng(lines[0],lines[1]),
    new GLatLng(RB[0],RB[1])
    );        
    
    if(showID <= 0)
    {
        if (companyClass == "3")
        {    
            image = '/ad/3.gif';
            companyName = '申请普通展台' ;
        }
        else
        {
            image = '/ad/1.gif';
            companyName = '申请钻石展台' 
        }
        ShowImage = 1;
        html ='<table><tr><td width=310px height=5px></td></tr></table><table align=center width=300px cellpadding=1 cellspacing=0 border=0 bgcolor=#FFFDEF style=font-size:9pt><tr><td colspan=2 align=Center background=/ad/5.png width=80% height=23px style=font-size:10pt> 展位号: <font color = red>' + row.VirtualPlaceNO + '</font></td></tr><tr><td rowspan = 3 width=64px valign=top><img width=64px height=64px src=' + image + '></td><td width=60%>网上展会, 24小时不落幕!</td></tr><tr><td width=50%><a target = \'_blank\' href=\'http://www.18show.cn/register.html\'><strong>开通免费展台</strong></a> -- <a target = \'_blank\' href=\'http://www.18show.cn/fastrequest.html?GPId=3\'><strong>申请钻石展台</strong></a></td></tr><tr><td>快速申请热线：0756-2183085</td></tr></table><table><tr><td width=310px height=5px></td></tr></table>';
    }
    else
    {
        if (row.DisplayType > 0)
        {
            //广告位
            if (row.IsADPlace > 1 )
            {
                ShowImage = 1;
                image = 'http:\\\\mapimage.18show.cn\\Uploads\\'+ companyID + '\\Logo\\'+ showID + '-AD.gif';
                html = CreateInfoHtml(image,companyName,row.VirtualPlaceNO,row.CompanyLinkMan,row.CompanyTelephone,row.CompanyEmail,localHostUrl,isCustom,customLinkMode,tradeShowType);
            }
            else
            {
                //图片
                if(row.Style == 3)
                {
                    ShowImage = 1;
                    image = 'http:\\\\mapimage.18show.cn\\Uploads\\'+ companyID + '\\Logo\\'+ showID + '-VE.gif';
                    html = CreateInfoHtml(image,companyName,row.VirtualPlaceNO,row.CompanyLinkMan,row.CompanyTelephone,row.CompanyEmail,localHostUrl,isCustom,customLinkMode,tradeShowType);
                
                }
                else//文字
                {
                    ShowImage = 0;
                    image = '/ad/2.gif';
                    html = CreateInfoHtml(image,companyName,row.VirtualPlaceNO,row.CompanyLinkMan,row.CompanyTelephone,row.CompanyEmail,localHostUrl,isCustom,customLinkMode,tradeShowType);
                }
            }
        }
        else
        {
            ShowImage = 0;
            image = '/ad/2.gif';
            html = CreateInfoHtml(image,companyName,row.VirtualPlaceNO,row.CompanyLinkMan,row.CompanyTelephone,row.CompanyEmail,localHostUrl,isCustom,customLinkMode,tradeShowType);
        }
    }

    if(type == 'OnInit')
    {
        PlaceWidth = row.PlaceWidth;
        PlaceHeight = row.PlaceHeight;
//	    map.addOverlay(marker);
	    map.addOverlay( new Rectangle( rectBounds,companyName, showID ,point, image, html,ShowImage,PlaceWidth,PlaceHeight));
    }
    else
    {
        return html;
    }
}

//--------------获取URL参数值--------------
function GetUrlValue(name)
{
 var str=window.location.search.toLowerCase();
 name = name.toLowerCase();
 if (str.indexOf(name)!=-1)
 {
    var pos_start=str.indexOf(name)+name.length+1;
    var pos_end=str.indexOf("&",pos_start);
    if (pos_end==-1)
        return str.substring(pos_start);
    else
        return str.substring(pos_start,pos_end)
 }
 else
      return 1;
}

//-----------------自定义类--------------------
function RectangleArea(name, leftTop, rightTop, leftMiddel, rightMiddle, leftBottom, rightBottom)
{
    this.AreaList = new Array(6);
    this.Name = name;
    this.AreaList[0] = eval('new GLatLng('+leftTop+')');
    this.AreaList[1] = eval('new GLatLng('+rightTop+')');
    this.AreaList[2] = eval('new GLatLng('+leftMiddel+')');
    this.AreaList[3] = eval('new GLatLng('+rightMiddle+')');
    this.AreaList[4] = eval('new GLatLng('+leftBottom+')');
    this.AreaList[5] = eval('new GLatLng('+rightBottom+')');
};

RectangleArea.prototype.CheckArea=function(mapBounds,rectangleArea)
{
    var amount = 0;
    var result = false;
    for(var j=0;j<rectangleArea.AreaList.length;j++)
    {
         if(mapBounds.contains(rectangleArea.AreaList[j]))
         {
            amount++;
            if(amount>1)//两个点以上
            {
                result = true;
                break;
            }
         }
    }
    return result;
};

function GetArea_callback(response)
{
    var table=response.value;
    for(i=0;i<table.Rows.length;i++)
    {
        var row=table.Rows[i];
        var rectangleArea = new RectangleArea(row.AreaName,row.LeftTop,row.RightTop,row.LeftMiddle,row.RightMiddle,row.LeftBottom,row.RightBottom);
        area[i] = rectangleArea;
        areaCenter[i] = new Array(2);
        areaCenter[i][0] = row.AreaName;
        areaCenter[i][1] = row.CenterCoordinate;//该区域的中心坐标
    }
}

//鼠标滚轮操作
function GScroll()
{
    //1为向上,-1为向下
    var curZoom = event.wheelDelta/120;
    if(curZoom > 0)
    {
       GZoom(1);
    }
    else
    {
       GZoom(-1); 
    }  
}

//放大缩小
function GZoom(type)
{
    //当它不嵌套在页面上时
    if(top.location == self.location)
    {
        if(type == 1)
        {
           if( curSize < defaultSize )
           {     
              curSize += 1;
              map.setZoom(curSize)
           }    
        }
        else
        {
            if( curSize > smallSize )
            { 
               curSize -= 1;
               map.setZoom(curSize)
            }
        }
    } 
}

//设置当前中心所在区域
function setcurArea(center)
{
    if(isKeyMove == 0)
    {
        //先判断在哪一行,然后判断在哪一列,最后得到所在区域(把地图看成一个矩阵)        
        //地理坐标转换为像素坐标
        var curPoint = map.fromLatLngToDivPixel(center);

        //y: -123,720(每一行的开始坐标)
        if( curPoint.y <= -123 )
        {
            row = 0;
            isOverScope = 1;
        }
        else if( curPoint.y <= 720 )
           row = 5;
        else if( curPoint.y >= 720 )
        {
            row = 10;
            isOverScope = 1;
        }
        
        //x: -341,222,785,1347(每一列的开始坐标)
        if( curPoint.x <=-341 )
        {
            cell = 0;
            isOverScope = 1;
        }
        else if(curPoint.x <= 222)
       		cell = 1;
        else if(curPoint.x <= 785)
        	cell = 2;
        else if(curPoint.x <= 1347)
        	cell = 3;
        else if(curPoint.x >= 1347 )
         {
            cell = 4;  
            isOverScope = 1;
         }
            
        //得到中心点所在的区域 
        curArea = row + cell;
    }
    else
    {
        isKeyMove = 0;
    }
}  

//键盘操作：上、下、左、右、+、-
function GMove()
{    
    isKeyMove = 1;
    
    //左移
    if( event.keyCode == 37 )
    {
        if( curArea % 5 > 0 )
        {   
            if( isOverScope == 0 )
                curArea -= 1;
            map.panTo(new GLatLng(moveArea[curArea][0],moveArea[curArea][1]));          
        }
    }    
    //上移    
    if( event.keyCode == 38 )
    {
        if( (curArea-5) > -1 )
        {
            if( isOverScope == 0 )
                curArea -= 5;
            map.panTo(new GLatLng(moveArea[curArea][0],moveArea[curArea][1]));
        }
    }    
    //右移    
    if( event.keyCode == 39 )
    {
        if( (curArea + 1) % 5 > 0 )
        {
            if( isOverScope == 0 )
                curArea += 1;
            map.panTo(new GLatLng(moveArea[curArea][0],moveArea[curArea][1]));
        }
    }
    //下移    
    if( event.keyCode == 40 )
    {
        if( (curArea + 5 ) < 15 )
        {   
            if( isOverScope == 0 )
                curArea += 5;
            map.panTo(new GLatLng(moveArea[curArea][0],moveArea[curArea][1]));  
        } 
    }
    //放大
    if( event.keyCode == 107 )
        GZoom(1);
    //缩小    
    if( event.keyCode == 109 )
        GZoom(-1);
        
    isOverScope = 0;
}
