﻿var tree;
var PROVINCE = 0;
var DISTRICT = 1;
var WARD = 2;
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);
    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 == 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
            tree.add(dID,ParentID,Name,'javascript:TreeBinding.TreeClick('+i+',\''+Name+'\',\''+mapid+'\','+layer+",'"+dID+"',"+lat+","+lng+",4)", i+","+Name+","+mapid+","+layer+","+dID+","+lat+","+lng+",4");
    }
},
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]);
    }
    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);
        vbdmap.GetGeometry(dID,layer,level, bound.getNorthWest().longitude,  bound.getNorthWest().latitude, bound.getSouthEast().longitude,  bound.getSouthEast().latitude, GetGeometryChange);
    }
        
}
,
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)
{
    OrderID = 1;
    NameInfo = Name;
    LatInfo = lat;
    LngInfo = lng;
    DolgisIdInfo = parseInt(dID.substr(1));
    isTreeClick = true;
    TreeBinding.ShowRegion(order,layer,DolgisIdInfo,lat,lng,level);
    TreeBinding.BindChild(MapCode, layer, dID);
    //tree.refreshIcon(dID);   
}
}

