﻿var map = null;
var myPoint = null;
var need = 3;
var nearDists = new Array(need);
var nearPoints = new Array(need);
var nearAddresses = new Array(need);
var nearNames = new Array(need);
var nearLinks = new Array(need);
var list = null;
var first = true;//标记首次登陆

function BuildMap() {
    var array = getValues();
    if(GBrowserIsCompatible()){ 
        list = document.getElementById("list");
        if(list.childNodes.length > 0){
            list.removeChild(list.firstChild);
        }
        
//        var mapSize = new GSize(630,500);
//        var mapOptions = { size:mapSize};
        
//        map = new GMap2(document.getElementById("map_canvas"),mapOptions); 
        map = new GMap2(document.getElementById("map_canvas"));
        myPoint = new GLatLng(parseFloat(array[0][0]),parseFloat(array[0][1]));
        
        map.setCenter(myPoint, 12); 
        map.enableScrollWheelZoom(); 
        map.addControl(new GLargeMapControl());  
        map.addControl(new GScaleControl());

        var myIcon = new GIcon(G_DEFAULT_ICON);
        var address = array[0][2];
        var name = array[0][3];
        for ( var i=0;i<need;i++ ){
            nearDists[i] = 50*1000;
            nearPoints[i] = null;
        }
        if (first) {
        //显示所有康宁门店
            ShowAll();
        }
        else {
        //显示指定门店
            ShowPoints();
        }
        var marker = new CreateMarker(myPoint,address,name,null,myIcon,null,true);
        map.addOverlay(marker);
    }
    else{
        alert("请选用IE6.0以上浏览器。");
    }
    if(array[1] != null){
        BuildList(array[1]);
    }
}

function CreateMarker(point,address,name,link,myIcon,distance,show){  
    var markerOptions = { icon:myIcon };
    var marker = new GMarker(point,markerOptions);
    var myHtml = null;
    if (show){
        myHtml = "<b>" + name + "</b><br />您查询的位置";
        if (first) {
            first = false;
        }
        else {
            map.openInfoWindowHtml(point,myHtml);//标记查询点所在位置
        }
    }
    else{
        var distanceString = null;
        if ( distance < 1000 ){
            distanceString = distance.toString().split('.')[0] + "米";
        }
        else{
            var distanceK = distance/1000;
            distanceString = distanceK.toString().split('.')[0] + "公里";
        }
        myHtml = "<b>" + name + "</b><br /><a href='" + link + "'>" + address  + "<br /></a>" + distanceString ;
    }
    GEvent.addListener(marker, "click", 
    function(){    
        map.openInfoWindowHtml(point, myHtml);  
    });  
    return marker;
}

function ShowPoints(){
    var find = null;
    GDownloadUrl("data/points.kml", 
        function(data, responseCode){
            var xml = GXml.parse(data);
            var coordinates = xml.documentElement.getElementsByTagName("coordinates");
            var names = xml.documentElement.getElementsByTagName("name");
            var addresses = xml.documentElement.getElementsByTagName("address");
            var links = xml.documentElement.getElementsByTagName("link"); 
            for (var i = 0; i < coordinates.length; i++){    
                var point = new GLatLng(parseFloat(coordinates[i].firstChild.nodeValue.split(',')[1]),
                                        parseFloat(coordinates[i].firstChild.nodeValue.split(',')[0]));
                var name = names[i+1].firstChild.nodeValue;
                var address = addresses[i].firstChild.nodeValue;
                var link = links[i].firstChild.nodeValue;
                var distance = point.distanceFrom(myPoint);
                for (var k=0;k<need;k++){
                    if( nearDists[k] > distance){
                        for(var j=need-1;j>k;j--){
                            if(nearPoints[j] != null){
                                nearDists[j] = nearDists[j-1];
                                nearPoints[j] = nearPoints[j-1];
                                nearNames[j] = nearNames[j-1];
                                nearAddresses[j] = nearAddresses[j-1];
                                nearLinks[j] = nearLinks[j-1];
                            }
                        }
                        nearDists[k] = distance;
                        nearPoints[k] = point;
                        nearNames[k] = name;
                        nearAddresses[k] = address;
                        nearLinks[k] = link;
                        break;
                    }
                }
            }
            if (nearPoints[0] != null){
                var alarm = document.getElementById("alert");
                if(alarm.childNodes.length > 0){
                    alarm.removeChild(alarm.firstChild);                
                }
                var highIcon = new GIcon(G_DEFAULT_ICON);
                highIcon.image = "images/logo.gif";
                highIcon.iconSize = new GSize(80,20);
                for(var i=0;i<need;i++){
                    if(nearDists[i]!=null){
                        var nearMarker = new CreateMarker(nearPoints[i],nearAddresses[i],nearNames[i],nearLinks[i],highIcon,nearDists[i],false);
                        map.addOverlay(nearMarker);
                    }
                }
             }
             else{ 
                alert("目前，康宁眼镜仅在北京和武汉开有分店。");
             }
        });
}

function ShowAll() {
    GDownloadUrl("data/points.kml", 
        function(data, responseCode){  
            var xml = GXml.parse(data);
            var coordinates = xml.documentElement.getElementsByTagName("coordinates");
            var names = xml.documentElement.getElementsByTagName("name");
            var addresses = xml.documentElement.getElementsByTagName("address");
            var links = xml.documentElement.getElementsByTagName("link");
            for (var i = 0; i < coordinates.length; i++){    
                var point = new GLatLng(parseFloat(coordinates[i].firstChild.nodeValue.split(',')[1]),
                                        parseFloat(coordinates[i].firstChild.nodeValue.split(',')[0]));
                var name = names[i+1].firstChild.nodeValue;
                var address = addresses[i].firstChild.nodeValue;
                var link = links[i].firstChild.nodeValue;
                var distance = point.distanceFrom(myPoint);
                var highIcon = new GIcon(G_DEFAULT_ICON);
                highIcon.image = "images/logo.gif";
                highIcon.iconSize = new GSize(80,20);
                var nearMarker = new CreateMarker(point,address,name,link,highIcon,distance,null,false);
                map.addOverlay(nearMarker);
            }
        }
    );
}

function BuildList(options){
    var select = document.createElement("ul");
    for ( var i=0;i<options.length;i++)
    {
        var liOption = document.createElement("li");
        var aOption = document.createElement("a");
        aOption.setAttribute("href","#");
        //option.setAttribute("onmouseover","alert('OK');");
        var text = document.createTextNode(options[i]);
        aOption.appendChild(text);
        aOption.onclick = ListSelect;
        liOption.appendChild(aOption);
        select.appendChild(liOption);
    }
    list.appendChild(select);
    list.setAttribute("style","display:block");
}

function ListSelect(){
    text = document.getElementById("MapView_TextBoxQuery");
    text.value = this.firstChild.nodeValue;
    list.setAttribute("style","display:none");
    list.removeChild(list.firstChild);
    BuildMap();
    return false;    
}

