﻿var tree;
var PROVINCE = 0;
var DISTRICT = 1;
var WARD = 2;
var PROVINCE_LEVEL = 3;
var DISTRICT_LEVEL = 6;
var WARD_LEVEL = 9;
var LayerLevel = DISTRICT;
var PreviousSelectNode;
TreeBinding = {
    BindTree: function () {
        tree = new dTree('tree', "Treeview/dtree/");
        tree.config.inOrder = true; //Speed up the tree
        tree.config.useStatusText = true; //For Security Reason
        tree.config.useCookies = false;

        tree.add(0, -1, 'Bản đồ');
        tree.add(1, 0, 'Việt Nam');
        TreeBinding.LoadTreeLayer(tree, 1, "", 0, 0);
        document.getElementById('searchresult_div').innerHTML = tree;
        tree.openTo(1, true);
    },
    LoadTreeLayer: function (tree, ParentID, MapCode, layer) //layer: 0,1,2,  Mapcode: AG, LD, DN
    {
        //if(layer > LayerLevel) return;
        var count = tree.ChildsCount(ParentID);
        if (count > 0) return;
        //preLoading(true);
        var ds = vbdmap.GetTreeChapter(MapCode, layer);
        dsTreeChapter = ds.value;
        if (dsTreeChapter == null || dsTreeChapter.length == 0) return;

        for (var i = 0; i < dsTreeChapter.Tables[0].Rows.length; i++) {
            var mapid = dsTreeChapter.Tables[0].Rows[i].MapId;
            var dID = dsTreeChapter.Tables[0].Rows[i].Dolgis_GraphicId;
            var lng = dsTreeChapter.Tables[0].Rows[i].X;
            var lat = dsTreeChapter.Tables[0].Rows[i].Y;
            var Name = dsTreeChapter.Tables[0].Rows[i].NAME;
            /*if(layer == 1)
            mapid = dsTreeChapter.Tables[0].Rows[i].DISTRICTID;*/

            //Sovle conflict dID
            switch (layer) {
                case PROVINCE: dID = 'p' + dID;
                    break;
                case DISTRICT: dID = 'd' + dID;
                    break;
                case WARD: dID = 'w' + dID;
                    break;
            }
            if (layer == DISTRICT) mapid += "," + dsTreeChapter.Tables[0].Rows[i].DISTRICTID;
            if (layer == PROVINCE) {
                tree.add(dID, ParentID, Name, 'javascript:TreeBinding.TreeClick(' + i + ',\'' + Name + '\',\'' + mapid + '\',' + layer + ",'" + dID + "'," + lat + "," + lng + ",4)", i + "," + Name + "," + mapid + "," + layer + "," + dID + "," + lat + "," + lng + ",4", '', '', tree.icon.folder, tree.icon.folderOpen, false);

            }
            else if (layer == DISTRICT) {
                tree.add(dID, ParentID, Name, 'javascript:TreeBinding.TreeClick(' + i + ',\'' + Name + '\',\'' + mapid + '\',' + layer + ",'" + dID + "'," + lat + "," + lng + "," + DISTRICT_LEVEL + ")", i + "," + Name + "," + mapid + "," + layer + "," + dID + "," + lat + "," + lng + "," + DISTRICT_LEVEL, '', '', tree.icon.folder, tree.icon.folderOpen, false);
            }
            else
                tree.add(dID, ParentID, Name, 'javascript:TreeBinding.TreeClick(' + i + ',\'' + Name + '\',\'' + mapid + '\',' + layer + ",'" + dID + "'," + lat + "," + lng + "," + WARD_LEVEL + ")", i + "," + Name + "," + mapid + "," + layer + "," + dID + "," + lat + "," + lng + "," + WARD_LEVEL);
        }
    },
    ShowRegion: function (order, layer, dID, lat, lng, level) {
        if (layer == PROVINCE)
            LayerNameInfo = 'vn_province_dat';
        else if (layer == DISTRICT)
            LayerNameInfo = 'vn_district_dat';
        else if (layer == WARD)
            LayerNameInfo = 'vn_ward_dat';

        preLoading(true);
        if (arrSearchMapResult != null) {
            if (arrSearchMapResult.length == 1)
                map.removeOverlay(arrSearchMapResult[0]);
        }
        map.closeInfoWindow();

        arrSearchMapResult = new Array();
        var latlng = new VLatLng(lat, lng);
        var icon = new VIcon("images/1.gif");
        icon.iconSize = new VSize(26, 29);
        var mopt = new VMarkerOptions(icon);
        var marker = new VMarker(latlng, mopt);
        marker.order = order + 1;
        marker.type = MARKER_POI;
        marker.obj = 'object';
        map.addOverlay(marker);

        arrSearchMapResult.push(marker);
        /*map.setCenter(new VLatLng(lat,lng),level);
        var bound = map.getDirectionBounds();
        vbdmap.GetGeometry(dID,layer,level, bound.getNorthWest().longitude,  bound.getNorthWest().latitude, bound.getSouthEast().longitude,  bound.getSouthEast().latitude, GetGeometryChange);*/
        var strResult = vbdmap.GetFitLevel(dID, layer, map.getSize().width, map.getSize().height);
        if (strResult.value != "" && strResult.error == null) {
            arr = strResult.value;
            lat = parseFloat(arr[1]);
            lng = parseFloat(arr[2]);
            level = parseInt(arr[0]);
            var bound = map.getBoundsAtCenterLevel(new VLatLng(lat, lng), level);
            //centerPoint = new VLatLng(lat,lng);
            //nLevel = level;
            //map.redrawOverlay();
            //map.setCenter(centerPoint , nLevel);
            LayerSelect = layer;
            Dolgis = dID;
            //LevelInfo = level;
            vbdmap.GetGeometry(dID, layer, level, bound.getNorthWest().longitude, bound.getNorthWest().latitude, bound.getSouthEast().longitude, bound.getSouthEast().latitude, GetGeometryChange);
        }

    }
,
    ShowRegionTrungTam: function (order, layer, dID, lat, lng, level) {
        if (layer == PROVINCE)
            LayerNameInfo = 'vn_province_dat';
        else if (layer == DISTRICT)
            LayerNameInfo = 'vn_district_dat';
        else if (layer == WARD)
            LayerNameInfo = 'vn_ward_dat';

        preLoading(true);
        if (arrSearchMapResult != null) {
            if (arrSearchMapResult.length == 1)
                map.removeOverlay(arrSearchMapResult[0]);
        }
        map.closeInfoWindow();

        arrSearchMapResult = new Array();
        var latlng = new VLatLng(lat, lng);
        var icon = new VIcon("images/1.gif");
        icon.iconSize = new VSize(26, 29);
        var mopt = new VMarkerOptions(icon);
        var marker = new VMarker(latlng, mopt);
        marker.order = order + 1;
        marker.type = MARKER_POI;
        marker.obj = 'object';
        map.addOverlay(marker);

        arrSearchMapResult.push(marker);
        map.setCenter(new VLatLng(lat, lng), level);
        preLoading(false);

        //Xoa ranh gioi neu co
        if (plHighlight != null) {
            for (var j = 0; j < plHighlight.length; j++) {
                map.removeOverlay(plHighlight[j]);
            }
            plHighlight = null;
        }
    }
,
    BindChild: function (MapCode, layer, dID) {
        TreeBinding.LoadTreeLayer(tree, dID, MapCode, layer + 1);
        document.getElementById('searchresult_div').innerHTML = tree;

        if (!tree.isOpening(dID) && tree.ChildsCount(dID) > 0) {
            tree.ToggleNode(dID);
        }
    },
    TreeClick: function (order, Name, MapCode, layer, dID, lat, lng, level) {
        if ("Trung Tâm Thành phố" == Name) 
        {
            OrderID = 1;
            NameInfo = Name;
            LatInfo = lat;
            LngInfo = lng;
            LevelInfo = level;
            DolgisIdInfo = parseInt(dID.substr(1));
            isTreeClick = true;
            TreeBinding.ShowRegionTrungTam(order, layer, DolgisIdInfo, lat, lng, 12);
            //TreeBinding.BindChild(MapCode, layer, dID);
        }
        else
        {
            OrderID = 1;
            NameInfo = Name;
            LatInfo = lat;
            LngInfo = lng;
            LevelInfo = level;
            DolgisIdInfo = parseInt(dID.substr(1));
            isTreeClick = true;
            TreeBinding.ShowRegion(order, layer, DolgisIdInfo, lat, lng, level);
            TreeBinding.BindChild(MapCode, layer, dID);
            //tree.refreshIcon(dID);   
        }
    }
}


