//<![CDATA[

// ---------------- 定制图标：为所有标记创建指定阴影、图标尺寸等
var baseIcon = new GIcon();
baseIcon.image = GM.Base;         // 图标的前景图像 URL
baseIcon.shadow = GM.Shadow;                    // 图标的阴影图像 URL
baseIcon.iconAnchor = new GPoint(9, 34);        // 此图标在地图上的锚定点相对于图标图像左上角的像素坐标
baseIcon.infoWindowAnchor = new GPoint(9, 2);   // 信息窗口在此图标上的锚定点相对于图标图像左上角的像素坐标
var skindir;
// ----------------
function initialize(dir) {
    skindir = dir;

	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("c_map_ct"), {draggableCursor:"crosshair"});
		map.setCenter(GmapCenter, GmapZoom);
        map.enableDragging();	                    // 启用拖放
        map.enableScrollWheelZoom();	            // 启用滚轮效果
		map.enableContinuousZoom();                 // 启用选择浏览器的连续平滑缩放（默认情况下禁用）
        geocoder = new GClientGeocoder();           // 创建地理解析器的新实例，直接与 Google 服务器对话 便于查询具体位置
		map.addControl(new GSmallMapControl());
		var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10, 10));

//		GEvent.addListener(map, 'click', mapClick); // 监听map的click事件，调用 mapClick() 进行用户自定义标记的添加
	}

	xmlToMap(); //
}
// ---------------- 创建信息窗口显示对应给定索引的字母的标记。
function createMarker(point,index,pZoom,pName,pCon,pUrl) {
//  创建图标类，并用于此点的字母图标
    var markerZoom = pZoom;
    var GmapMarksIcoNum = String.fromCharCode("0".charCodeAt(0) + index);
    var GmapMarksIcoNumedIcon = new GIcon(baseIcon);
    GmapMarksIcoNumedIcon.image = GM.Url + GmapMarksIcoNum + GM.Type;
//  设置 GMarkerOptions 对象 {draggable: true}为可拖拽标记
    markerOptions = { icon:GmapMarksIcoNumedIcon, title:"点我可以看到详细信息哦" };
    var marker = new GMarker(point, markerOptions);
    GmapMarks.push(marker);
//  加载标签数据（xml）列表
    createHtml(index,pZoom,pName,pCon);
//  鼠标响应地图上标记时，列表中的样式发生变化
    var foli=document.getElementById("c_ul_ct").getElementsByTagName("li");

    function listOn(){
        for (j=0;j < foli.length;j++){
            if (j==index) {
                foli[j].className = "on";
            }
            else {foli[j].className = "";
            }
        }
    }
    GEvent.addListener(marker, "click", function(overlay,point) {
        var thisPoint = marker.getPoint();
        var thisZoom = map.getZoom();
        var thisMarkerInfo = "经纬度：" +thisPoint+ "<br />标签缩放级别：" +markerZoom ;
        var thisInfo ="<strong>" + pName + "</strong><br />"+pCon+"<br /><a href=\""+pUrl+"\" target='_blank' >查看详细信息</a>" ;
	    marker.openInfoWindowHtml(thisInfo);
	    listOn();                 // 点击地图中的标签后在列表中突出显示相对应的数据
	    //map.setZoom(pZoom);     // 根据标签的zoom级别显示地图的zoom级别
	});
    GEvent.addListener(marker, "mouseover", function() {
		marker.setImage(GM.Over + GmapMarksIcoNum + GM.Type);
    	GmapMarksOut=marker;
    });
    GEvent.addListener(marker, "mouseout", function() {
        if(GmapMarksOut){
	        marker.setImage(GM.Url + GmapMarksIcoNum + GM.Type);
	    }
    });
    return marker;
}
// ---------------- 下载 xml 中的数据,并在地图上加载这些数据。期望的格式是：
//    <markers>
//        <marker name="A" label="1" tit="简单说明" address="" lat="39.895044" lng="116.388645" zoom="13"/>
//    </markers>
// ----------------
function xmlToMap(){
    map.clearOverlays();
    GmapMarks=new Array();
	GDownloadUrl(GmapXML, function(data, responseCode) {
	    var xml = GXml.parse(data);

	    var markers = xml.documentElement.getElementsByTagName("marker");
	    var loopNum = 10        // 可以自定义显示的数量(markers.length 为全部数据)
	    for (var i = 0; i < loopNum ; i++) {
			var pZoom = parseInt(markers[i].getAttribute("zoom"));  // 取出zoom值
	        var pName = markers[i].getAttribute("name");            // 取出name值
	        //var pPhone = markers[i].getAttribute("phone");
	        var pUrl = markers[i].getAttribute("url");
            var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
	    					        parseFloat(markers[i].getAttribute("lng")));
            mPoint = point;

            map.addOverlay(createMarker(point, i, pZoom, pName, '', pUrl));
	    }
	});
}
function clearMarkers(v) {
    map.clearOverlays();

}
function xmlToMap1(){
    var areaname = document.getElementById("areaname").value;

    document.getElementById("c_ul_ct").innerHTML='';
    //alert(areaId.selectedIndex);
    showAddress(areaname);


    map.clearOverlays();
    GmapMarks=new Array();

	GDownloadUrl(GmapXML, function(data, responseCode) {
	    var xml = GXml.parse(data);

	    var markers = xml.documentElement.getElementsByTagName("marker");
	    var loopNum = markers.length;        // 可以自定义显示的数量(markers.length 为全部数据)
        var n = 0;


	    for (var i = 0; i < loopNum ; i++) {

			var pZoom = parseInt(markers[i].getAttribute("zoom"));  // 取出zoom值
	        var pName = markers[i].getAttribute("name");            // 取出name值
	        var pPhone = markers[i].getAttribute("phone");
	        var pUrl = markers[i].getAttribute("url");
            var pAreaname = markers[i].getAttribute("areaname");
            var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
	    					        parseFloat(markers[i].getAttribute("lng")));
            mPoint = point;

            if( pAreaname==areaname && n<10 ){

                map.addOverlay(createMarker(point, n, pZoom, pName, '', pUrl));
                n++;
            }

	    }
	});
}




// ---------------- 用户添加标记点
function mapClick(overlay,point,title) {
	if (point) {
		addMarker(point, 'Lat：' + point.lat().toFixed(6) + ', Lng：' + point.lng().toFixed(6));     // 标记点title 显示：lat和lng ；toFixed(6)：取小数点后6位
	}
}
function addMarker(point,title) {
	var marker = new GMarker(point,{title:title,draggable:true});
   	GEvent.addListener(marker, "click", function() {
	    var GmapUserMarker = marker.getPoint();
	    var GmapHiddenForm = "<input id=\"GmapUserMarker\" type=\"hidden\" value=\""+GmapUserMarker+"\" />";
	        GmapHiddenForm += "<input id=\"GmapUserInfo\" type=\"hidden\" value=\""+GmapUserInfo+"\" />";
		marker.openInfoWindowHtml(GmapAddMarkInput+GmapHiddenForm);
	});
	GEvent.addListener(marker,"dblclick", function(){map.removeOverlay(marker);});
	GEvent.addListener(marker, "dragend", markerDragEnd);
    map.addOverlay(marker);
}
function markerDragEnd(point,title) {
	GEvent.trigger(this,'click');
}

// ---------------- 输出xml数据到相应列表中
function createHtml(i,pZoom,pName,pCon)
{
//	var textTit="经纬度："+mPoint + "；缩放级别：" + pZoom;
	var textTit=pName;
    var j=i+1;


	var GmapMarksList = "<li id='li'" + i + " onclick='locate(" + i + ")' onmouseover='locateOver(" + i + ")' onmouseout='locateOut(" + i + ")'><a href='javascript:locate(" + i + ")' title='" + textTit + "'>" + j +'.'+ pName + "</a><span><a cursor='default'><img src='"+skindir+"/img/newphoneIcon.gif' alt='phone' /></a></span></li>";
	var fo=document.getElementById("c_ul_ct");

	fo.innerHTML+=GmapMarksList;
}
function locate(i){	GEvent.trigger(GmapMarks[i],"click");}
function locateOver(i) { GEvent.trigger(GmapMarks[i],"mouseover"); }
function locateOut(i) { GEvent.trigger(GmapMarks[i],"mouseout"); }

// 搜索框
function showAddress(address) {
    if (geocoder) {
        geocoder.getLatLng(
            address,
            function(point) {
                if (!point) {
                    alert(address + " not found");
                } else {
                    map.setCenter(point, 13);
                    /*
                    var marker = new GMarker(point);
                    map.addOverlay(marker);
                    address += "<p class=\"en silver\">Point:"+marker.getPoint()+"</p>";
                    marker.openInfoWindowHtml(address);
                    */
                }
            }
        );
    }
}
function viewType(view){
    var vTable = document.getElementById("mapBar");
    var vMaps = document.getElementById("c_map_ct");
    if (view==0){
        vTable.style.width = "0px";
        vTable.style.display = "none";
        vMaps.style.width=allmapDivSize;
    }else if (view==1){
     vTable.style.width = mapBarSize;
     vTable.style.display = "block";
        vMaps.style.width=mapDivSize;
    };
    map.checkResize();
    GmapBack(map.getZoom());
}
function GmapBack(Zoom){
    if(Zoom==null){
        Zoom=GmapZoom;
    };
    map.setCenter(GmapCenter, Zoom);
}
//
//window.onload = initialize
window.onunload = GUnload
//]]>