﻿//KHAI BÁO BIẾN CẦN DÙNG
// Người Tạo: Nguyễn Chí Linh
//#region

var VIEW_MODE = { ViewREPoint: 0, None: 1 };
// Che do view full ko hien thi bat dong san
var viewMode = VIEW_MODE.None;

var MaLopDiem = 0;

//Mã bản đồ
var MapID = 1;

var MaTinh = 1;

var DefaultMapID = 1;

//Thẻ div ngoài cũng trên trang bando
var divBanDo;

//Thẻ div chưa Image bản đồ (Image Map)
var divImage;

//Các Image bản đồ
var imgMap; //Image dùng để load bản đồ

var imgMap_Temp; //Image dùng để thực thi các hiệu ứng như zoom, pan...

//div dùng để chứa các span điểm bds  và khi trỏ vào điểm này thì sẽ hiện thị lên thông tin BDS
var divDiemBDS_Contain;

var divInfoBDS_Out;

//Div chứa thông tin của 1 bất động sản nào đó
var divInfoBDS;

//Div để hiển thị tooltip cho các tool
var divZoomTool_Tooltip;

//Dive chưa nội dung của tooltip
var divZoomTool_Tooltip_In;

var divBanDoOver;

//Border ngoài của DivCenter
var divCenter_Out;

//Thẻ div mà người dùng có thể nhìn thấy bản đồ và thực hiện các thao tác trên nó
var divCenter;

//Span thể hiện mức độ zoom hiện tại
var span_CurrentZoom;

//Thẻ div chứa Banner trong trang bản đồ
var divBanDo_Banner;

//Thẻ Div dùng để ẩn, hiện divRight khi click vào
var divBanDo_CloseRight;

//Thể div chứa banner bên phải của trang bản đồ
var divRight;

//
var divRight_In

//Div chứa kết quả tìm kiếm
var divKetQuaTimKiem;

//Thẻ div dùng để hiển thị vùng chọn khi người dùng muốn chọn 1 vùng nào đó trên bản đồ
var divAreaSearch;

//Thẻ div dùng để chứa các công cụ tool của Bản đồ
var divTools;

//Thẻ div chứa thông tin chú thích (thẻ này sẽ được hiển thị ra khi con trỏ chuột trỏ vào 1 điểm BDS)
var divNode;

//Thẻ Div chứa danh sách các lớp (phục vụ cho chức năng bật tắt lớp)
var divDanhSachLop;

//Div chứa danh sách các lớp (Các checkbox để bật tắt lớp)
var divDanhSachLop_Content;

//Textbox chứa các danh sách các ID của checkbox trong list các lớp
var tbx_ListIDCheckBox;

//Div chứa thông tin về lô thửa
var divThongTinLoThua;

//Div chứa nội dung thông tin về lô thửa
var divThongTinLoThua_Content;

//Div chua form sua thong tin lo thua
var DivShowUpdateMap

//Div Hướng dẫn sử dụng bản đồ
var divHuongDanSuDung;

//Div chứa tên của bản đồ
var divMapName;

//lable chứa Tên của Bản đồ
var lbl_MapName;

//Thẻ div tạo ra hiệu ứng xung quanh con trỏ chuột khi phóng to (zoomIn) 1 điểm nào đó
var divZoomInEffect;
//Thẻ div tạo ra hiệu ứng xung quanh con trỏ chuột khi thu nhỏ (zoomOut) 1 điểm nào đó
var divZoomOutEffect;

//Thẻ div nằm trong thẻ divZoomInEffect
var divZoomIn_Child;

//Thẻ div nằm trong thẻ divZoomOutEffect
var divZoomOut_Child;

//Chiều rộng của Ifame khi hiển thị bản đồ ở 1 IFrame
var iframe_Width = 0;

//Chiều cao của Ifame khi hiển thị bản đồ ở 1 IFrame
var iframe_Height = 0;

//Chiều rộng của Image bản đồ
var mapWidth;

//Chiều cao của Image bản đồ
var mapHeight;

//Biến cho phép hiển thị banner của trang bản đồ hay không (ẩn đi để tạo diện tích rộng hơn cho trang bản đồ)
var allowShowBanner = true;

//Tool hiện tại đang được sử dung (VD: Zoomin hoặc ZoomOut,Pan...)
var doAction = 0;

//isMoved = true: bản đồ trang được di chuyển (move) hay bản đồ đang được Pan
var isMoved = false;

//isDown = true khi mà sự kiện mouse down xảy ra
var isDown = false;

//isProcessing = true: cho biết web đang xử lý một Action nào đó (VD: Đang Move thì ko thể Zoom và ngược lại)
var isProcessing = false

//Loại trình duyệt mà người dùng đang sử dụng
var typeBrowser = 0 //mặc định là trình duyệt IE

//CÁC BIẾN DÙNG TRONG VIÊC ZOOM IMAGE

//Kích thước chiểu rộng của Image Map trước khi chạy hiệu ứng zoom
var beforeZoom_W = 0;

//Kích thước chiểu dai của Image Map trước khi chạy hiệu ứng zoom
var beforeZoom_H = 0;

//Kích thường chiều rộng của Image Map sau khi zoom xong
var afterZoom_W = 0; //luôn được thiết lập lại trong hàng DoOnLoad()

//Kích thường chiều dài của Image Map sau khi zoom xong
var afterZoom_H = 0; //luôn được thiết lập lại trong hàng DoOnLoad()

//Vị trí (x) của Image Map trước khi zoom
var beforeZoom_L = 0;

//Vị trí (y) của Image Map trước khi zoom
var beforeZoom_T = 0;

//Cấp độ zoom nhỏ nhất cho phép
var minZoom = 0;

//Cấp độ zoom lớn nhất cho phép
var maxZoom = 10;

//Cấp độ zoom hiện tại của image map
var currentZoom = 0;

//Tỉ lệ zoom (nếu tỷ lệ càng nhỏ thì hiệu ứng zoom image chạy càng chậm --> độ mịn của zoom càng cao)
var factorZoom = 0.05

//Khoảng các giữa 2 mức zoom trên thanh ZoomTool
var KC_Zoom = 11;

//Div chứa các công cụ để Zoom
var divBanDo_ZoomTool_1;

//Vị trí top của divBanDo_ZoomTool_1_Top
var divBanDo_ZoomTool_1_Top = 74;

//Div chứa các công cụ mở rộng
var divBanDo_ZoomTool_2;

//chiều cao Div chứa các công cụ mở rộng
var divBanDo_ZoomTool_2_Height = 135; ;

//Nút để hiển thị, ân ZoomTool_2
var btn_Toggle;

//Vị trí Top của Span Current Zoom trước khi di chuyển
var span_CurrentZoom_Top;

//Vị trí Top của Span Current Zoom tại vị trí Zoom = 1
var span_CurrentZoom_Top_First = 140;

//Span là bottom select vùng
var span_Select;

//Span là Button Add điểm
var span_AddPoint;

//Span là Button Chọn điểm hay chọn lô thửa đất
var span_ChoicePoint;

//Span là Button Lưu điểm
var span_SavePoint;

//Span là Button bật tắt lớp
var span_Layer;

//Biểu tượng cho Điểm BĐS khi Add lên bản đồ
var span_BDS_Point;

//Mỗi lần Zoom ảnh sẽ bị sai số do quá trình chuyển đổi từ số double -- > interger và ngược lại)
//Nên phải giữ lại các số dư để hạn chế việc sai số
var du_x = 0, du_y = 0;

//ID của Interval khi zoom ảnh (dùng để dừng interval lại nếu ảnh load xong hoặc ảnh zoom xong)
var IntervalZoom;

//////////////////////////CÁC BIẾN TRONG VIỆC PAN IMAGE MAP/////////////////////////////////////

//Tọa độ của của con trỏ chuột trước
var previous_X = 0;
var previous_Y = 0;

//Những thông số khi MouseDown
//Tọa độ của Image Map_temp khi mouse down
var beginPan_L = 0;
var beginPan_T = 0;

//Tọa độ của Mouse khi Mouse down
var beginPan_X = 0;
var beginPan_Y = 0;

//Tọa độ của Image_Temp trước
var previous_Pan_L = 0;
var previous_Pan_T = 0;

//Tọa độ tại vị trí tâm của divCenter
var Center_X;
var Center_Y;

var TimeOutDelay;

//Biến để dành cho các hành động chỉ chạy 1 lần lúc load map đầu tiên, == true là chưa chạy
var RunOnlyOne = true;

//#endregion


////////////////////////////////////////////////////////////////////////////////////////////////
//CÁC HÀM CẦN THIẾT/////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////


var timeOut_InfoBDS;
/// <summary>
/// Hàm dùng để Hiện, ẩn div thông tin bất động sản
/// </summary>
function Show_Hide_InfoBDS(span_DiemBDS,Content,isShow)
{
    //#region

    if (timeOut_InfoBDS)
        clearTimeout(timeOut_InfoBDS);
        
    if (!span_DiemBDS)
        return false;
    
    if (isShow)
    {
        divInfoBDS.innerHTML = Content;
        
        divInfoBDS_Out.style.top = (parseInt(span_DiemBDS.style.top) + span_DiemBDS.offsetHeight / 2 - divInfoBDS_Out.offsetHeight / 2) + "px";
        divInfoBDS_Out.style.left = (parseInt(span_DiemBDS.style.left) + span_DiemBDS.offsetWidth) + "px";
        divInfoBDS_Out.style.visibility = "visible";
    }
    else
    {
       
        timeOut_InfoBDS = setTimeout("Hide_InfoBDS()", 500);
    }

    span_DiemBDS.onload = null;
    
    //#endregion
    return false;
}

function Show_InfoBDS()
{
    if (timeOut_InfoBDS)
        clearTimeout(timeOut_InfoBDS);
    divInfoBDS_Out.style.visibility = "visible";
    return false;
}

function Hide_InfoBDS_Check(e)
{ 
    //#region
    if (e == null)
    {
        e = window.event;
    }
    var min_X = parseInt(divInfoBDS_Out.style.left);
    var min_Y = parseInt(divInfoBDS_Out.style.top);
    var max_X = min_X + parseInt(divInfoBDS_Out.offsetWidth);
    var max_Y = min_Y + parseInt(divInfoBDS_Out.offsetHeight);
    var x = GetMouseX(e);
    var y = GetMouseY(e);
   
    if (x <= min_X || x >= max_X || y <= min_Y || y >= max_Y)
    {
        Hide_InfoBDS();
    }
    //#endregion
    return false;
}

function Hide_InfoBDS()
{
    if (timeOut_InfoBDS)
        clearTimeout(timeOut_InfoBDS);
        
    divInfoBDS.innerHTML = "";
    
    divInfoBDS_Out.style.visibility = "hidden";
    divInfoBDS_Out.style.top = "-100px";
    divInfoBDS_Out.style.left = "-100px";
    return false;
}

function Show_Hide_Tooltip(isShow, ctr_ZoomTool, ToolOrder, str_Content)
{
    //#region
    if (!ctr_ZoomTool)
        return false;
    var du = 0;
    if (ToolOrder == 1 && typeBrowser == 0) //trình duyệt là ie
        du = 22;
    if (ToolOrder == 2 && typeBrowser == 0) //trình duyệt là ie
        du = 182;
    if (isShow)
    {
        divZoomTool_Tooltip_In.innerHTML = str_Content;
        divZoomTool_Tooltip.style.top = ($(ctr_ZoomTool).offset().top - $("#divBanDo_ZoomTool_Middle").offset().top ) + "px";
        divZoomTool_Tooltip.style.visibility = "visible";
    }
    else
    {
        divZoomTool_Tooltip_In.innerHTML = "";
        divZoomTool_Tooltip.style.visibility = "hidden";
    }
    //#endregion
}
//Edit
function Show_Hide_Tooltip1(isShow, ctr_ZoomTool, ToolOrder, str_Content) {
    //#region
    if (!ctr_ZoomTool)
        return false;
    var du = 0;
    if (ToolOrder == 1 && typeBrowser == 0) //trình duyệt là ie
        du = 22;
    if (ToolOrder == 2 && typeBrowser == 0) //trình duyệt là ie
        du = 182;
    if (isShow) {
        divZoomTool_Tooltip_In2.innerHTML = str_Content;
        divZoomTool_Tooltip2.style.top = ($(ctr_ZoomTool).offset().top - $("#divBanDo_ZoomTool_Benngoai").offset().top) + "px";
        divZoomTool_Tooltip2.style.visibility = "visible";
    }
    else {
        divZoomTool_Tooltip_In.innerHTML = "";
        divZoomTool_Tooltip.style.visibility = "hidden";
    }
    //#endregion
}
//End Edit
function DoKeyDown(e)
{
    if (e == null) { e = window.event; }
    var sender = (typeof (window.event) != "undefined") ? e.srcElement : e.target;
    var charCode = (e.which) ? e.which : event.keyCode
    if ((!sender.id || sender.id == "") && charCode == 32)
    {
        return false
    }
    return true;
}
/// <summary>
/// Hàm dùng để thiết lập các công cụ (tool) - (doAction) hiện tại 
/// </summary>
function DoAction(type)
{
   
    //Thiết lập cho giá trị tool hiện tại
    if (type != 0)
    {
        doAction = type;
        span_BDS_Point.style.display = "none";
        Enable_MapTool(2, false);
        Hide_InfoBDS();
    }
    if (doAction != 7 && doAction != 11)
    {
        divDiemBDS_Contain.innerHTML = "";
    }
    divAreaSearch.style.display = "none";
    switch (type)
    {
        //#region 
        case 0: //Remove DoAction
            document.onclick = DoMouseRightClick;
            document.onmousedown = null;
            document.onmouseup = null;
            if (typeBrowser == 0) //nếu là IE
            {
                document.onmousewheel = null;
            }
            else
                document.removeEventListener('DOMMouseScroll', DoMouseWheel, false);

            document.ondblclick = DoMouseRightClick;
            
            divCenter.style.cursor = "wait";
            imgMap.style.cursor = "wait";
            imgMap_Temp.style.cursor = "wait";

            break;
        case 1: //Zoom in
            document.onclick = DoZoomIn;
            document.onmousedown = null;
            document.onmouseup = null;
            //document.onmousewheel = null;

            imgMap.style.cursor = window.opera ? '../Images/Cursor/zoomin.cur' : 'url(../Images/Cursor/zoomin.cur), pointer';

            break;
        case 2: //Zoom out
            document.onclick = DoZoomOut;
            document.onmousedown = null;
            document.onmouseup = null;
            //document.onmousewheel = null;
            imgMap.style.cursor = window.opera ? '../Images/Cursor/zoomout.cur' : 'url(../Images/Cursor/zoomout.cur), pointer';

            break;
        case 3: // Wheel
            if (typeBrowser == 0) //nếu là IE
            {
                document.onmousewheel = DoMouseWheel;
            }
            else
                document.addEventListener('DOMMouseScroll', DoMouseWheel, false);

            document.onclick = DoMouseRightClick;
            document.onmousedown = null;
            document.onmouseup = null;
            break;
        case 4: //Pan

            document.onclick = DoMouseRightClick;
            
            document.onmousedown = DoMouseDown;
            document.onmouseup = DoMouseUp;
           
            if (typeBrowser == 0) //nếu là IE
            {
                document.onmousewheel = DoMouseWheel;
            }
            else
                document.addEventListener('DOMMouseScroll', DoMouseWheel, false);
                
            document.ondblclick = DoDoubleClick;
            divCenter.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';
            imgMap.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';
            imgMap_Temp.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';

            break;
        case 7: //AreaSearch

            document.onclick = DoMouseRightClick;
            document.onmousedown = DoMouseDown;
            document.onmouseup = DoMouseUp;

            if (typeBrowser == 0) //nếu là IE
            {
                document.onmousewheel = DoMouseWheel;
            }
            else
                document.addEventListener('DOMMouseScroll', DoMouseWheel, false);

            divCenter.style.cursor = window.opera ? '../Images/Cursor/Cross.cur' : 'url(../Images/Cursor/Cross.cur), move';
            imgMap.style.cursor = window.opera ? '../Images/Cursor/Cross.cur' : 'url(../Images/Cursor/Cross.cur), move';
            imgMap_Temp.style.cursor = window.opera ? '../Images/Cursor/Cross.cur' : 'url(../Images/Cursor/Cross.cur), move';

            break;
        case 8: //Addpoint

            document.onclick = DoAddPoint;
            document.onmousedown = null;
            document.onmouseup = null;
            if (typeBrowser == 0) //nếu là IE
            {
                document.onmousewheel = DoMouseWheel;
            }
            else
                document.addEventListener('DOMMouseScroll', DoMouseWheel, false);

            divCenter.style.cursor = window.opera ? '../Images/Cursor/pen_r.cur' : 'url(../Images/Cursor/pen_r.cur), move';
            imgMap.style.cursor = window.opera ? '../Images/Cursor/pen_r.cur' : 'url(../Images/Cursor/pen_r.cur), move';
            imgMap_Temp.style.cursor = window.opera ? '../Images/Cursor/pen_r.cur' : 'url(../Images/Cursor/pen_r.cur), move';

            break;
        case 9: //Reload

            if (typeBrowser == 0) //nếu là IE
            {
                document.onmousewheel = DoMouseWheel;
            }
            else
                document.addEventListener('DOMMouseScroll', DoMouseWheel, false);

            document.onclick = DoMouseRightClick;
            document.onmousedown = DoMouseDown;
            document.onmouseup = DoMouseUp;

            divCenter.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';
            imgMap.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';
            imgMap_Temp.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';


            break;
        case 10: //ChoicePoint
            document.onclick = DoChoicePoint;
            document.onmousedown = null;
            document.onmouseup = null;
            if (typeBrowser == 0) //nếu là IE
            {
                document.onmousewheel = DoMouseWheel;
            }
            else
                document.addEventListener('DOMMouseScroll', DoMouseWheel, false);

            divCenter.style.cursor = window.opera ? '../Images/Cursor/pen_r.cur' : 'url(../Images/Cursor/pen_r.cur), move';
            imgMap.style.cursor = window.opera ? '../Images/Cursor/pen_r.cur' : 'url(../Images/Cursor/pen_r.cur), move';
            imgMap_Temp.style.cursor = window.opera ? '../Images/Cursor/pen_r.cur' : 'url(../Images/Cursor/pen_r.cur), move';

            break;
        case 11: //ViewPoint
            document.onclick = DoMouseRightClick;
            document.onmousedown = DoMouseDown;
            document.onmouseup = DoMouseUp;
            //document.ondblclick = DoZoomIn;
            if (typeBrowser == 0) //nếu là IE
            {
                document.onmousewheel = DoMouseWheel;
            }
            else
                document.addEventListener('DOMMouseScroll', DoMouseWheel, false);

            divCenter.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';
            imgMap.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';
            imgMap_Temp.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';

            break;
        default:
            if (typeBrowser == 0) //nếu là IE
            {
                document.onmousewheel = DoMouseWheel;
            }
            else
                document.addEventListener('DOMMouseScroll', DoMouseWheel, false);

            document.onclick = DoMouseRightClick;
            document.onmousedown = DoMouseDown;
            document.onmouseup = DoMouseUp;

            divCenter.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';
            imgMap.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';
            imgMap_Temp.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';

            break;
        //#endregion
    }
    
    return false;
    
}

function isNumberKey_int(evt)
{
    var charCode = (evt.which) ? evt.which : event.keyCode

    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

    return true;
}
/// <summary>
/// Lấy QueryString
/// </summary> 
function GetQueryString(name)
{
    //#region
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if (results == null)
        return "";
    else
        return results[1];
    //#endregion
}

/// <summary>
/// Hàm dùng để lấy trình duyệt đang sử dụng
/// </summary>
function GetBrowser()
{
    //#region
    var sBrowser = navigator.userAgent.toLowerCase();
    if (sBrowser.indexOf('msie') > -1)
        return 0;
    else if (sBrowser.indexOf('firefox') > -1)
        return 1;
    else if (sBrowser.indexOf('chrome') > -1)
        return 2;
    else if (sBrowser.indexOf('safari') > -1)
        return 3;
    else if (sBrowser.indexOf('opera') > -1)
        return 4;
    else if (sBrowser.indexOf('netscape') > -1)
        return 5;
    else return -1;
    //#endregion
}


/// <summary>
/// Lấy chiều rộng cho phép của màn hình
/// </summary>
function GetWidth()
{
    //#region
    var w = 0;
    if (self.innerHeight)
    {
        w = self.innerWidth;
    }
    else if (document.documentElement && document.documentElement.clientHeight)
    {
        w = document.documentElement.clientWidth;
    }
    else if (document.body)
    {
        w = document.body.clientWidth;
    }
    return w;
    //#endregion
}

/// <summary>
/// Lấy chiều cao cho phép của màn hình
/// </summary>
function GetHeight()
{
    //#region
    var h = 0;
    if (self.innerHeight)
    {
        h = self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientHeight)
    {
        h = document.documentElement.clientHeight;
    }
    else if (document.body)
    {
        h = document.body.clientHeight;
    }
    return h
    //#endregion
}

/// <summary>
/// Lấy tọa độ x của chuột
/// </summary>
function GetMouseX(e)
{
    //#region
    var tempX = 0;

    if (typeBrowser == 0)
    {
        tempX = e.clientX - divBanDo.offsetLeft + document.body.scrollLeft - document.body.clientLeft;
    } else
    {
        tempX = e.pageX - divBanDo.offsetLeft + document.body.scrollLeft - document.body.clientLeft;
    }
    if (tempX < 0) { tempX = 0; }
    return tempX;
    //#endregion
}

/// <summary>
/// Lấy tọa độ y của chuột
/// </summary>
function GetMouseY(e)
{
    //#region
    var tempY = 0;
    if (typeBrowser == 0)
    {
        tempY = e.clientY - divBanDo.offsetTop + document.body.scrollTop - document.body.clientTop;
    } else
    {
        tempY = e.pageY - divBanDo.offsetTop + document.body.scrollTop - document.body.clientTop;
    }

    if (tempY < 0) { tempY = 0; }
    return tempY;
    //#endregion
}

/// <summary>
/// Kiểm tra cấp độ zoom để xét có cho phép zoom in tiếp hay không
/// </summary>
function CheckZoomIn()
{
    //#region
    if (currentZoom >= maxZoom)
    {
        //ajax_GetZoomLevel();
        return false;
    }
    else
    {
        return true;
    }
    //#endregion
}

/// <summary>
/// Kiểm tra cấp độ zoom để xét có cho phép zoom out tiếp hay không
/// </summary>
function CheckZoomOut()
{
    //#region
    if (currentZoom <= minZoom)
    {
        //ajax_GetZoomLevel();
        return false;
    }
    else
    {
        return true;
    }
    //#endregion
}

function CheckLogined()
{
    //#region
    var URL_Get = "../Membership/KiemTra.ashx?Type=4";
    var xmlHttp;
    try
    {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    }
    catch (e)
    {
        // Internet Explorer
        try
        {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e)
            {
                alert("Your browser does not support AJAX!");
                return false;
            }
        }
    }
    xmlHttp.onreadystatechange = function()
    {
        if (xmlHttp.readyState == 4)
        {
            var strContent = xmlHttp.responseText;
            if (strContent == "1") //Đã đăng nhập
            {
                Enable_MapTool(0, true);
            }
            else //Chưa đăng nhập
            {
                //Gọi trang đăng nhập bằng facebox hoặc hiện thông báo ko cho phép
            }
        }
    }
    xmlHttp.open("GET", URL_Get, true);
    xmlHttp.send(null);
    //#endregion
}

function GetMapID(type)
{
    var Temp_MapID
    
    switch(type)
    {
        case 1: //Lấy MapID từ querystring
            Temp_MapID = GetQueryString("MapID");
            break;
        case 2: //Lấy MapID trong cookie
            Temp_MapID = ReadCookie("MapID");
            break;
    }
    if (!Temp_MapID)
    {
        MapID = DefaultMapID;
        CreateCookie("MapID", MapID, 1);
    }
    else
    {
        MapID = Number(Temp_MapID);
        CreateCookie("MapID", MapID, 1);
    }
}
function InitListMap()
{
    //#region
    var xmlhttp = CreateAjax();

//    xmlhttp.onreadystatechange = function()
//    {
//        if (xmlhttp.readyState == 4)
//        {
//            var str_URL = "HandlerListMap.ashx?MaTinh=" + MaTinh + "";

//        }
//    }
    xmlhttp.open("GET", "HandlerListMap.ashx?MaTinh=" + MaTinh, true);
    xmlhttp.send(null);
    return false;
}
/// <summary>
/// Hàm khởi tạo Map
/// </summary>
function InitMap()
{
    //#region

    //Kiểm tra trình duyệt là trình duyệt gì
    typeBrowser = GetBrowser();

    var window_w, window_h;

    window_w = parseInt(GetWidth());
    window_h = parseInt(GetHeight());

    //Thiế lập lại kích thước cho DivBando theo chế độ phân giải của màn hình hoặc khi browser resize
    divBanDo.style.width = (screen.availWidth) + 'px';
    divBanDo.style.height = (screen.availHeight) + 'px';

//    divDiemBDS_Contain.style.width = (screen.availWidth) + 'px';
//    divDiemBDS_Contain.style.height = (screen.availHeight) + 'px';


    imgMap.style.width = imgMap_Temp.style.width = divBanDo.style.width;
    imgMap.style.height = imgMap_Temp.style.height = divBanDo.style.height;
    mapWidth = parseInt(imgMap.style.width);
    mapHeight = parseInt(imgMap.style.height);

    //Để ghi nhận trường hợp chuột mà di chuyển (trong trường hớp Pan)
    isMoved = false;

    imgMap.style.top = imgMap_Temp.style.top = "0px";
    imgMap.style.left = imgMap_Temp.style.left = "0px";

    //Ẩn điểm đại diện cho BDS
    span_BDS_Point.style.display = "none";

    beforeZoom_W = 0;
    beforeZoom_H = 0;
    afterZoom_W = 0;
    afterZoom_H = 0;

    IntervalZoom = null;

    factorZoom = 0.2

    beforeZoom_T = 0;
    beforeZoom_L = 0;

    du_x = 0;
    du_y = 0;

    span_CurrentZoom.style.top = span_CurrentZoom_Top_First + 'px';

    divBanDo_ZoomTool_2.style.height = "0px";
    
    //Vì FireFox khi nhấn phím Space thì sẽ bĩ scroll nên phải cấm chức năng này để ko bị scroll dẫn đến làm bể ảnh
    if (typeBrowser != 0)
        document.onkeydown = DoKeyDown;
        
    ResizeWindow();

    if (doAction == 11)
    {
        //Thiết lập tool sử dụng đầu tiên khi load page
        DoAction(7);
        ViewPoint();
    }
    else
    {
        //Thiết lập tool sử dụng đầu tiên khi load page
        DoAction(4);
        
        SetMapSRC_DoAction(MapID, 0, mapWidth, mapHeight, window_w / 2, window_h / 2, null, null, null);
        
        //Lấy tên của Map
        LastRunOnLoad = function()
        {
            ajax_GetMapName();
            LastRunOnLoad = function() { };
        };
    }


    //Hiện thị các MapTool;
    SetToggleZoomTool_2();
    
    //#endregion
}



/// <summary>
/// Enable hoặc disable maptool theo MapID
/// <summary>
function Enable_DisableMapTool()
{
    //Enable - Disable MapTool
//    switch (MapID)
//    {
//        case 1: //Hà Nội
//            Enable_MapTool(1, false);
//            Enable_MapTool(0, true);
//            Enable_MapTool(3, true);
//            break;
//        case 2: //Văn Khê
//            Enable_MapTool(1, true);
//            Enable_MapTool(0, true);
//            Enable_MapTool(3, true);
//            break;
//        case 4: //Phú lãm
//            Enable_MapTool(1, false);
//            Enable_MapTool(0, true);
//            Enable_MapTool(3, true);
//            break;
//    }
}

/// <summary>
///Load Image Map
/// <summary>
function SetMapSRC_DoAction(mMapID, mapAction, mapW, mapH, mapX, mapY, mZoomLevel, mDelta, mOtherPara)
{
    //#region
    //Chuyển vào trạng thái chờ load
    isProcessing = true;

    var str_URL = "ImageMap.ashx?viewMode=" + viewMode + "&MapID=" + mMapID + "&DoAction=" + mapAction + "&W=" + mapW + "&H=" + mapH + "&MaLopDiem=" + MaLopDiem;
    if (mapX)
    {
        str_URL += "&X=" + mapX;
    }
    if (mapY)
    {
        str_URL += "&Y=" + mapY;
    }
    if (mZoomLevel)
    {
        str_URL += "&Z=" + mZoomLevel;
    }
    if (mDelta)
    {
        str_URL += "&Delta=" + mDelta;
    }
//    if (mMaBDS)
//    {
//        str_URL += "&MaBDS=" + mMaBDS;
//    }
//    if (mNoiDung)
//    {
//        str_URL += "&ND=" + encodeURIComponent(mNoiDung);
//    }
//    if (mListLayerID)
//    {
//        str_URL += "&ListID=" + mListLayerID;
//    }
    if (mOtherPara)
    {
        str_URL += mOtherPara;
    }
    
    //Lấy thông tin của Div Center
    var str_add = "&divCenter_W=" + parseInt(divCenter_Out.style.width) +
                    "&divCenter_H=" + parseInt(divCenter_Out.style.height) +
                    "&divCenter_L=" + parseInt(divCenter_Out.offsetLeft) +
                    "&divCenter_T=" + parseInt(divCenter_Out.offsetTop);
    
    str_URL += str_add + "&time=" + (new Date()).getTime();
    //Xóa nội dung Khi AreaSearch
    divDiemBDS_Contain.innerHTML = "";

    //Remove DoAction;
    DoAction(0);
    imgMap.src = str_URL;

    //ShowInfo();
    //#endregion
}

/// <summary>
///Viet điểm BDS
/// <summary>
function ViewPoint()
{
   
    var MaBDS = GetQueryString("MaBDS");

    var OtherPara = "&MaBDS=" + MaBDS;
    //Ko cần truyền vào mapID vì trong code c# sẽ lấy MapID từ MaBDS
    SetMapSRC_DoAction(MapID, 11, mapWidth, mapHeight, null, null, 5, null, OtherPara);

    LastRunOnLoad = function()
    {
        var MaBDS = GetQueryString("MaBDS");
        //ajax_GetInfoDiemBDS(MaBDS);
        ajax_LoadNode_DiemBDS(MaBDS);

        ajax_GetMapName();
        //Hủy bỏ hàm này đi, chỉ chạy 1 lần 
        LastRunOnLoad = function() { };
    }
    return false;
}

/// <summary>
///Tìm chính xác với tên đường truyền vào, hiện thị đương này trên bản đồ
/// <summary>
function ViewSearch(str_ChuoiKetNoi,str_TenBang,str_TenTruong,str_GiaTri)
{
    var OtherPara = "&ChuoiKetNoi=" + encodeURIComponent(str_ChuoiKetNoi) +
                    "&TenBang=" + str_TenBang +
                    "&TenTruong=" + str_TenTruong +
                    "&GiaTri=" + str_GiaTri;

    SetMapSRC_DoAction(MapID, 13, mapWidth, mapHeight, null, null,5, null, OtherPara);
    return false;
}
/// <summary>
///Tìm kiếm tương đối với nội dung truyền vào, trả về 1 danh sách các kết quả tìm kiếm, khi lick lên
///danh sách kết quả thì hiện thị đối tượng lên bản đồ
/// <summary>
function SearchRoad_Ajax(str_NoiDung)
{
    //#region
    isProcessing = true;
    DoAction(0);
    
    var xmlhttp = CreateAjax();

    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4)
        {
            divKetQuaTimKiem.innerHTML = "";
            divKetQuaTimKiem.innerHTML = xmlhttp.responseText;

            isProcessing = false;
            DoAction(doAction);
        }
    }
    var str_add = "divCenter_W=" + parseInt(divCenter_Out.style.width) +
                    "&divCenter_H=" + parseInt(divCenter_Out.style.height) +
                    "&divCenter_L=" + parseInt(divCenter_Out.offsetLeft) +
                    "&divCenter_T=" + parseInt(divCenter_Out.offsetTop);
    encodeURIComponent
    xmlhttp.open("GET", "ImageMap.ashx?viewMode=" + viewMode + "&MapID=0&DoAction=14&W=" + mapWidth + "&H=" + mapHeight + "&ND=" + encodeURIComponent(str_NoiDung) + "&Z=6&" + str_add + "&time=" + (new Date()).getTime(), true)
    xmlhttp.send(null);
    return false;
    //#endregion
}

/// <summary>
///Tìm kiếm lô thửa
/// <summary>
function SearchPlot_Ajax(str_ToBanDo,str_SoLoThua)
{
    //#region
    isProcessing = true;
    DoAction(0);

    var xmlhttp = CreateAjax();

    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4)
        {
        
            divKetQuaTimKiem.innerHTML = "";
            var s = "";
            s = xmlhttp.responseText;
            if (s.length < 2)
            {
                alert("Không tìm thấy kết quả nào phù hợp");
                isProcessing = false;
                DoAction(doAction);
                return;
            }

            var arr_x_y = s.split("|");

            if (arr_x_y.length == 2)
            {
                var x = arr_x_y[0];
                var y = arr_x_y[1];

                //Lấy thông tin về lô thửa đất này
                ajax_GetInfoLoThua(x, y,true);
                
            }
            else
            {
                divKetQuaTimKiem.innerHTML = "";
                divKetQuaTimKiem.innerHTML = xmlhttp.responseText;

                isProcessing = false;
                DoAction(doAction);
            }
        }
    }
    var str_add = "divCenter_W=" + parseInt(divCenter_Out.style.width) +
                    "&divCenter_H=" + parseInt(divCenter_Out.style.height) +
                    "&divCenter_L=" + parseInt(divCenter_Out.offsetLeft) +
                    "&divCenter_T=" + parseInt(divCenter_Out.offsetTop);
    encodeURIComponent
    xmlhttp.open("GET", "ImageMap.ashx?viewMode=" + viewMode + "&MapID=0&DoAction=20&W=" + mapWidth + "&H=" + mapHeight + "&ND=" + encodeURIComponent(str_ToBanDo + "|" + str_SoLoThua) + "&Z=6&" + str_add + "&time=" + (new Date()).getTime(), true);
    xmlhttp.send(null);
    return false;
    //#endregion
}

/// <summary>
///Ẩn - Hiện các Button của Map
/// <summary>
function Enable_MapTool(type, IsEnable)
{
    //#region
    switch (type)
    {
        case -1: //All
            if (IsEnable)
            {
//                span_ChoicePoint.style.background = "url('../Images/Map/ChoicePoint.png')";
//                span_ChoicePoint.onclick = function() { DoAction(10); };;

                span_SavePoint.style.background = "url('../Images/Map/SavePoint.png')";
                span_SavePoint.onclick = SavePoint;
            }
            else
            {
//                span_ChoicePoint.style.background = "url('../Images/Map/ChoicePoint_Dis.png')";
//                span_ChoicePoint.onclick = null;

                span_SavePoint.style.background = "url('../Images/Map/SavePoint_Dis.png')";
                span_SavePoint.onclick = null;
            }
            break;
        case 0: //span_AddPoint
            if (IsEnable)
            {
                span_AddPoint.style.background = "url('../Images/Map/AddPoint.png')";

                span_AddPoint.onclick = function() { DoAction(8); };
            }
            else
            {
                span_AddPoint.style.background = "url('../Images/Map/AddPoint_Dis.png')";

                span_AddPoint.onclick = null;
            }
            break;
        case 1: //span_ChoicePoint
            if (IsEnable)
            {
                span_ChoicePoint.style.background = "url('../Images/Map/ChoicePoint.png')";
                span_ChoicePoint.onclick = function() { DoAction(10); };
            }
            else
            {
                span_ChoicePoint.style.background = "url('../Images/Map/ChoicePoint_Dis.png')";
                span_ChoicePoint.onclick = null;
            }

            break;
        case 2: //span_SavePoint
            if (IsEnable)
            {
                span_SavePoint.style.background = "url('../Images/Map/SavePoint.png')";
                span_SavePoint.onclick = SavePoint;
            }
            else
            {
                span_SavePoint.style.background = "url('../Images/Map/SavePoint_Dis.png')";
                span_SavePoint.onclick = null;
            }
            break;
        case 3: //span_Select
            if (IsEnable)
            {
                span_Select.style.background = "url('../Images/Map/Select.png')";
                span_Select.onclick = function() { DoAction(7); };
            }
            else
            {
                span_Select.style.background = "url('../Images/Map/Select_Dis.png')";
                span_Select.onclick = null;
            }
            break;
    }
    return false;
    //#endregion    
}

var interval_Toggle;
/// <summary>
///Thực hiện Interval hàm Ần, Hiện ZoomTool_2
/// <summary>
function SetToggleZoomTool_2()
{
    //#region
    if (interval_Toggle)
        clearInterval(interval_Toggle);

    if (parseInt(divBanDo_ZoomTool_2.style.height) < divBanDo_ZoomTool_2_Height)
    {
        btn_Toggle.style.background = "url('../Images/Map/Arrow_Toggle_Up.png')";

        interval_Toggle = setInterval("ToggleZoomTool_2(" + true + ")", 10);
    }
    else
    {
        btn_Toggle.style.background = "url('../Images/Map/Arrow_Toggle_Down.png')";
        interval_Toggle = setInterval("ToggleZoomTool_2(" + false + ")", 10);
    }
    return false;
    //#endregion
}
/// <summary>
///Hiển thị hoặc ẩn zoom tool_2
/// <summary>
function ToggleZoomTool_2(show)
{
    //#region
    var ZoomTool_2_H = parseInt(divBanDo_ZoomTool_2.style.height);

    if (show)
    {
        if (ZoomTool_2_H + 10 >= divBanDo_ZoomTool_2_Height)
        {
            clearInterval(interval_Toggle);
            divBanDo_ZoomTool_2.style.height = divBanDo_ZoomTool_2_Height + "px";
        }
        else
        {
            divBanDo_ZoomTool_2.style.height = (ZoomTool_2_H + 10) + "px";
        }
    }
    else
    {
        if (ZoomTool_2_H - 10 <= 0)
        {
            clearInterval(interval_Toggle);
            divBanDo_ZoomTool_2.style.height = 0 + "px";
        }
        else
        {
            divBanDo_ZoomTool_2.style.height = (ZoomTool_2_H - 10) + "px";
        }
    }
    //#endregion
}

/// <summary>
/// Load lại map với các thông tin mặc định ban đầu
/// <summary>
function ReLoadMap()
{
    SetMapSRC_DoAction(MapID, 9, mapWidth, mapHeight, 0, 0, null, null, null);
    return false;
}

/// <summary>
///Thay đổi map theo MapID
/// <summary>
function ChangeMap(mapID)
{
    MapID = Number(mapID);

    CreateCookie("MapID", MapID, 1);
   
    InitMap();
    
    return false;
}
function ChangeMapList(maTinh)
{
    MaTinh = Number(maTinh);
    CreateCookie("MaTinh", MaTinh, 1);
    InitListMap();
    return false;
}
/// <summary>
/// Hàm dùng để phóng to (Zoom In) bản đồ
/// </summary>
function DoZoomIn(e)
{
    //#region
    if (isProcessing || !CheckZoomIn())
        return false;
    currentZoom++;
    imgMap_Temp.style.visibility = 'visible';
    imgMap.style.visibility = 'hidden';

    beforeZoom_W = parseInt(imgMap_Temp.style.width);
    beforeZoom_H = parseInt(imgMap_Temp.style.height);
    beforeZoom_L = parseInt(imgMap_Temp.style.left);
    beforeZoom_T = parseInt(imgMap_Temp.style.top);

    if (du_x < 0)
        du_x = du_y = 0;

    afterZoom_W = afterZoom_W * 2;
    afterZoom_H = afterZoom_H * 2;

    //Lấy vị trí của Span CurrentZoom
    span_CurrentZoom_Top = parseInt(span_CurrentZoom.style.top);

    if (IntervalZoom)
    {
        clearInterval(IntervalZoom);
    }  
    //Bắt đầu Zoom Image Map
    IntervalZoom = setInterval("ZoomImage(" + 1 + "," + Center_X + "," + Center_Y + ")", 100);
    SetMapSRC_DoAction(MapID, 1, mapWidth, mapHeight, Center_X, Center_Y, null, null, null);

    return false;
    //#endregion
}

/// <summary>
/// Hàm dùng để thu nhỏ (Zoom Out) bản đồ
/// </summary>
function DoZoomOut(e)
{
    //#region
    if (isProcessing || !CheckZoomOut())
        return false;
    currentZoom--;
    imgMap_Temp.style.visibility = 'visible';
    imgMap.style.visibility = 'hidden';

    beforeZoom_W = parseInt(imgMap_Temp.style.width);
    beforeZoom_H = parseInt(imgMap_Temp.style.height);
    beforeZoom_L = parseInt(imgMap_Temp.style.left);
    beforeZoom_T = parseInt(imgMap_Temp.style.top);

    if (du_x > 0)
        du_x = du_y = 0;

    afterZoom_W = afterZoom_W / 2;
    afterZoom_H = afterZoom_H / 2;

    //Lấy vị trí của Span CurrentZoom
    span_CurrentZoom_Top = parseInt(span_CurrentZoom.style.top);

    if (IntervalZoom)
    {
        clearInterval(IntervalZoom);
    }
    //Bắt đầu Zoom Image Map
    IntervalZoom = setInterval("ZoomImage(" + -1 + "," + Center_X + "," + Center_Y + ")", 100);

    SetMapSRC_DoAction(MapID, 2, mapWidth, mapHeight, Center_X, Center_Y, null, null, null);
    return false;
    //#endregion
}

/// <summary>
/// Di chuyển biểu tượng của Điểm BĐS khi Add điểm
/// </summary>
function Move_BDS_Point(x, y)
{
    span_BDS_Point.style.display = "inline";
    span_BDS_Point.style.left = parseInt(21 / 2 + x - 17) + "px";
    span_BDS_Point.style.top = parseInt(y - 27) + "px";
}


/// <summary>
/// Hàm dùng để Add điểm vào map
/// </summary>
function DoAddPoint(e)
{
    //#region
    if (isProcessing || doAction != 8)
        return;

    if (e == null) { e = window.event; }

    var sender = (typeof (window.event) != "undefined") ? e.srcElement : e.target;

    if (sender.id == "divCenter" || sender.id == "imgMap" || sender.id == "imgMap_Temp" || sender.id == "divBanDo")
    {
        var x = GetMouseX(e);
        var y = GetMouseY(e);
        
        Move_BDS_Point(x, y);
        Enable_MapTool(2, true);

        // SAVE POINT
        SavePoint();
    }

    return false;
    
    
    //#endregion
}
function SavePoint()
{
    var x = parseInt(span_BDS_Point.style.left) + 6;
    var y = parseInt(span_BDS_Point.style.top) + 26;
    
    //Không quan tấm tới MapID
    SetMapSRC_DoAction(MapID, 8, mapWidth, mapHeight, x, y, null, null, null);
    Enable_MapTool(2, false);
    return false;
}

function DoChoicePoint(e)
{
    //#region
    if (isProcessing || doAction != 10)
        return;

    if (e == null) { e = window.event; }

    var sender = (typeof (window.event) != "undefined") ? e.srcElement : e.target;

    if (sender.id == "divCenter" || sender.id == "imgMap" || sender.id == "imgMap_Temp" || sender.id == "divBanDo")
    {
        var x = GetMouseX(e);
        var y = GetMouseY(e);

        //Lấy thông tin về lô thửa đất này
        ajax_GetInfoLoThua(x, y, false);
        ajax_GetInfoLoThua_forUpdate(x, y, false);

        return false;
    }
    return;
    //#endregion
}

/// <summary>
/// Hàm dùng để thiết lập khi MouseDown (bắt đầu di chuyển map)
/// </summary> 
function DoMouseDown(e)
{
    //#region
    if (isProcessing)
        return;
    isDown = true;
    
    if (e == null) { e = window.event; }

    var sender = (typeof (window.event) != "undefined") ? e.srcElement : e.target;
   
    if (sender.id == "divCenter" || sender.id == "imgMap" || sender.id == "imgMap_Temp" || sender.id == "divBanDo")
    {
        switch (doAction)
        {
            case 4:
                clearTimeout(TimeOutDelay);

                imgMap_Temp.style.visibility = 'visible';
                imgMap.style.visibility = 'hidden';
                //Thay đổi con trỏ chuột
                divCenter.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseDown.cur), move';
                imgMap.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseDown.cur), move';
                imgMap_Temp.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseDown.cur), move';

                beginPan_L = parseInt(imgMap_Temp.style.left);
                beginPan_T = parseInt(imgMap_Temp.style.top);

                beginPan_X = GetMouseX(e);
                beginPan_Y = GetMouseY(e);

                //Thiết lập sự kiện MouseMove cho document
                document.onmousemove = DoMouseMove;
                break;
            case 7:
                divAreaSearch.style.display = "inline";

                beginPan_X = GetMouseX(e);
                beginPan_Y = GetMouseY(e);
                divAreaSearch.style.width = divAreaSearch.style.height = "1px";
                divAreaSearch.style.left = beginPan_X + "px";
                divAreaSearch.style.top = beginPan_Y + "px";

                //Thiết lập sự diện MouseMove cho document
                document.onmousemove = DoMouseMove;
                break;
        }

        return false;
    }

    return;

    //#endregion
}

/// <summary>
/// Hàm dùng để di chuyển bản đồ (Pan)
/// </summary>  
function DoMouseMove(e)
{
    //#region

    if (e == null) { e = window.event; }

    //Đang trong tình trạng di chuyển map
    isMoved = true;
    var currentX = GetMouseX(e);
    var currentY = GetMouseY(e);
    
    var sender = (typeof (window.event) != "undefined") ? e.srcElement : e.target;
    switch (doAction)
    {
        case 4: //Pan
            //Chỉ khi nào tọa độ khác thì mới bắt đầu load map
            if (previous_X != currentX || previous_Y != currentY)
            {
                imgMap_Temp.style.left = beginPan_L + currentX - beginPan_X + "px";
                imgMap_Temp.style.top = beginPan_T + currentY - beginPan_Y + "px";
                previous_Pan_L = parseInt(imgMap_Temp.style.left);
                previous_Pan_T = parseInt(imgMap_Temp.style.top);
            }

            //Thiết lập lại vị trí của con trỏ chuột hiện tại
            previous_X = currentX;
            previous_Y = currentY;
            break;
        case 7: //Select Area
            var x = beginPan_X;
            var y = beginPan_Y;
            var area_w = currentX - beginPan_X;
            var area_h = currentY - beginPan_Y;

            if (area_w < 0)
            {
                x = beginPan_X - Math.abs(area_w);
            }
            if (area_h < 0)
            {
                y = beginPan_Y - Math.abs(area_h);
            }

            divAreaSearch.style.left = x + "px";
            divAreaSearch.style.top = y + "px";
            divAreaSearch.style.width = Math.abs(area_w) + "px";
            divAreaSearch.style.height = Math.abs(area_h) + "px";

            break;
    }
    return false;
    //#endregion
}

/// <summary>
/// Hàm dùng để Load map trong khi Pan
/// </summary>
function LoadContinuos()
{
    //#region
    //Ảnh dịch chuyển bao nhiều thì tâm dịch chuyển bấy nhiêu
    var x = imgMap_Temp.offsetWidth / 2 - previous_Pan_L;
    var y = imgMap_Temp.offsetHeight / 2 - previous_Pan_T;

    SetMapSRC_DoAction(MapID, 4, mapWidth, mapHeight, x, y, null, null, null);
    clearTimeout(TimeOutDelay);
    return false;
    //#endregion
}

/// <summary>
/// Hàm dùng để thiết lập khi MouseUp (Kết thúc di chuyển map)
/// </summary> 
function DoMouseUp(e)
{
    //#region
   
    if (e == null) { e = window.event; }
    var sender = (typeof (window.event) != "undefined") ? e.srcElement : e.target;

    switch (doAction)
    {
        case 4:
            //if (sender.id == "divCenter" || sender.id == "imgMap" || sender.id == "imgMap_Temp" || sender.id == "divBanDo")
            //{
                //Thay đổi con trỏ chuột
                divCenter.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';
                imgMap.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';
                imgMap_Temp.style.cursor = window.opera ? '../Images/Cursor/MouseUp.cur' : 'url(../Images/Cursor/MouseUp.cur), move';

                if (parseInt(imgMap_Temp.style.left) != 0 || parseInt(imgMap_Temp.style.top) != 0)
                {
                    clearTimeout(TimeOutDelay);
                    TimeOutDelay = setTimeout("LoadContinuos()", 100);
                }
                document.onmousemove = null;
            //}
            break;
        case 7:
            //if (sender.id == "divCenter" || sender.id == "imgMap" || sender.id == "imgMap_Temp" || sender.id == "divBanDo")
            //{
                if (!isDown)
                    return false;
                //Lấy thông tin của Div AreaSearch
                var Min_X = parseInt(divAreaSearch.style.left);
                var Min_Y = parseInt(divAreaSearch.style.top);

                var Max_X = Min_X + parseInt(divAreaSearch.style.width);
                var Max_Y = Min_Y + parseInt(divAreaSearch.style.height);

                isProcessing = true;
                DoAction(0);
                ajax_LoadNode(Min_X, Min_Y, Max_X, Max_Y);

                divAreaSearch.style.display = "none";
                divAreaSearch.style.width = divAreaSearch.style.height = "1px";
                document.onmousemove = null;
            //}
            break;
    }
    isMoved = false;

    return false;
    //#endregion
}

/// <summary>
/// Khi click chuột phải lên map
/// </summary>
function DoMouseRightClick(e)
{
    //#region

    if (e == null) { e = window.event; }

    var sender = (typeof (window.event) != "undefined") ? e.srcElement : e.target;

    if (sender.id == "divCenter" || sender.id == "imgMap" || sender.id == "imgMap_Temp" || sender.id == "divBanDo")
    {
        if ((typeBrowser == 1 || typeBrowser == 2 || typeBrowser == 5) && e.which == 3)
        {
            if (!e)
                if (window.event)
                e = window.event;
            else return;
            if (e.cancelBubble != null)
                e.cancelBubble = true;
            if (e.stopPropagation)
                e.stopPropagation();
            if (e.preventDefault)
                e.preventDefault();
            if (window.event)
                e.returnValue = false;
            if (e.cancel != null) e.cancel = true;

            return false;
        }
        else
        {
            if ((typeBrowser == 0) && event.button == 2)
            {
                if (!e)
                    if (window.event)
                    e = window.event;
                else return;
                if (e.cancelBubble != null)
                    e.cancelBubble = true;
                if (e.stopPropagation)
                    e.stopPropagation();
                if (e.preventDefault)
                    e.preventDefault();
                if (window.event)
                    e.returnValue = false;
                if (e.cancel != null) e.cancel = true;

                return false;
            }
        }        
    }
    return true;

    //#endregion
}

function DoDoubleClick(e)
{
    //#region
    if (isProcessing )//Đang load thì ko được phép làm gì
        return;

    imgMap_Temp.style.visibility = 'visible';
    imgMap.style.visibility = 'hidden';

    if (e == null) { e = window.event; }

    var sender = (typeof (window.event) != "undefined") ? e.srcElement : e.target;

    if (sender.id == "divCenter" || sender.id == "imgMap" || sender.id == "imgMap_Temp" || sender.id == "divBanDo")
    {
        var delta = 1
        if (DoMouseRightClick(e))
            delta = 1;
        else
            delta = -1;
             
        if (delta > 0)
        {
            if (!CheckZoomIn())
            {
                return false;
            }
            else
                currentZoom++;
        }
        else
        {
            if (!CheckZoomOut())
            {
                return false;
            }
            else
                currentZoom--;
        }
        var x = GetMouseX(e);
        var y = GetMouseY(e);

        if (IntervalZoom)
        {
            clearInterval(IntervalZoom);
        }

        beforeZoom_W = parseInt(imgMap_Temp.style.width);
        beforeZoom_H = parseInt(imgMap_Temp.style.height);
        beforeZoom_L = parseInt(imgMap_Temp.style.left);
        beforeZoom_T = parseInt(imgMap_Temp.style.top);


        //Phóng to hoặc thu nhỏ đều có tỉ lệ là gấp 2 lần
        if (delta > 0)
        {
            if (du_x < 0)
                du_x = du_y = 0;
            afterZoom_W = afterZoom_W * 2;
            afterZoom_H = afterZoom_H * 2;

            clearInterval(IntervalEffect);
            ResetDivEffectZoom(false);
            //Bắt đầu tạo hiệu ứng Zoom
            IntervalEffect = setInterval("ShowEffectZoom(" + x + "," + y + ",true)", 150);
        }
        else
        {
            if (du_x > 0)
                du_x = du_y = 0;

            afterZoom_W = afterZoom_W / 2;
            afterZoom_H = afterZoom_H / 2;

            clearInterval(IntervalEffect);
            ResetDivEffectZoom(true);
            //Bắt đầu tạo hiệu ứng Zoom
            IntervalEffect = setInterval("ShowEffectZoom(" + x + "," + y + ",false)", 150);
        }
        //Lấy vị trí của Span CurrentZoom
        span_CurrentZoom_Top = parseInt(span_CurrentZoom.style.top);

        //Bắt đầu Zoom Image Map
        IntervalZoom = setInterval("ZoomImage(" + delta + "," + x + "," + y + ")", 100);

        //Thực thi Load Image Map từ Server

        SetMapSRC_DoAction(MapID, 3, mapWidth, mapHeight, x, y, null, delta, null);
        return false;
    }

    return;

    //#endregion
}

/// <summary>
/// Hàm dùng để thiết lập khi Scroll chuột
/// </summary>
function DoMouseWheel(e)
{
    //#region
    if (isProcessing)//Đang load thì ko được phép làm gì
        return;

    imgMap_Temp.style.visibility = 'visible';
    imgMap.style.visibility = 'hidden';

    if (e == null) { e = window.event; }

    var sender = (typeof (window.event) != "undefined") ? e.srcElement : e.target;

    if (sender.id == "divCenter" || sender.id == "imgMap" || sender.id == "imgMap_Temp" || sender.id == "divBanDo")
    {

        var delta = (e.detail) ? Number(e.detail) * -1 : Number(event.wheelDelta);
        if (delta > 0)
        {
            if (!CheckZoomIn())
            {
                return false;
            }
            else
                currentZoom++;
        }
        else
        {
            if (!CheckZoomOut())
            {
                return false;
            }
            else
                currentZoom--;
        }
        var x = GetMouseX(e);
        var y = GetMouseY(e);

        if (IntervalZoom)
        {
            clearInterval(IntervalZoom);
        }

        beforeZoom_W = parseInt(imgMap_Temp.style.width);
        beforeZoom_H = parseInt(imgMap_Temp.style.height);
        beforeZoom_L = parseInt(imgMap_Temp.style.left);
        beforeZoom_T = parseInt(imgMap_Temp.style.top);


        //Phóng to hoặc thu nhỏ đều có tỉ lệ là gấp 2 lần
        if (delta > 0)
        {
            if (du_x < 0)
                du_x = du_y = 0;
            afterZoom_W = afterZoom_W * 2;
            afterZoom_H = afterZoom_H * 2;

            clearInterval(IntervalEffect);
            ResetDivEffectZoom(false);
            //Bắt đầu tạo hiệu ứng Zoom
            IntervalEffect = setInterval("ShowEffectZoom(" + x + "," + y + ",true)", 150);
        }
        else
        {
            if (du_x > 0)
                du_x = du_y = 0;

            afterZoom_W = afterZoom_W / 2;
            afterZoom_H = afterZoom_H / 2;

            clearInterval(IntervalEffect);
            ResetDivEffectZoom(true);
            //Bắt đầu tạo hiệu ứng Zoom
            IntervalEffect = setInterval("ShowEffectZoom(" + x + "," + y + ",false)", 150);
        }
        //Lấy vị trí của Span CurrentZoom
        span_CurrentZoom_Top = parseInt(span_CurrentZoom.style.top);

        //Bắt đầu Zoom Image Map
        IntervalZoom = setInterval("ZoomImage(" + delta + "," + x + "," + y + ")", 100);

        //Thực thi Load Image Map từ Server

        SetMapSRC_DoAction(MapID, 3, mapWidth, mapHeight, x, y, null, delta, null);
        return false;
    }

    return;

    //#endregion
}


/// <summary>
/// Hàm dùng để Zoom Image Map trong khi chờ load bản đồ
/// </summary> 
function ZoomImage(delta, x, y)
{
    //#region
    //Kích thược hiện tại của Image_Temp
    var currentWidth = parseInt(imgMap_Temp.style.width);
    var currentHeight = parseInt(imgMap_Temp.style.height);

    var left = parseInt(imgMap_Temp.style.left);
    var top = parseInt(imgMap_Temp.style.top);

    //Nếu là chế độ phóng to image (Zoom in)
    if (delta > 0) //Zoom In
    {
        //Nếu kích thước của Image_Temp >= kích thước tối đa thì gắn kích thước của image_Temp = kích thước tối đa(widthZoom)
        if (currentWidth + beforeZoom_W * factorZoom >= afterZoom_W)
        {
            //Xóa interval để thoát khỏi chế độ zoom image
            clearInterval(IntervalZoom);

            // imgMap_Temp.style.width = afterZoom_W + 'px';
            //imgMap_Temp.style.height = afterZoom_H + 'px';

            //left = left + (left - x) * (factorZoom * (currentWidth / afterZoom_W) / ((currentWidth + beforeZoom_W * factorZoom) / currentWidth));
            //top = top + (top - y) * (factorZoom * (currentHeight / afterZoom_H) / ((currentHeight + beforeZoom_H * factorZoom) / currentHeight));

            SetSpanCurrentZoom(delta, true);

            return;
        }

        //Thiết lập lại tọa độ top cho span CurrentZoom
        SetSpanCurrentZoom(delta, false);

        imgMap_Temp.style.width = ((currentWidth + beforeZoom_W * factorZoom)) + 'px';
        imgMap_Temp.style.height = ((currentHeight + beforeZoom_H * factorZoom)) + 'px';

        left = (left + (beforeZoom_L - x) * factorZoom);
        top = (top + (beforeZoom_T - y) * factorZoom);


        //xử lý phần dư(sai số khi chuyển từ double to int) khi tính toán.
        du_x = du_x + Math.abs(parseFloat(left) - parseInt(left));
        du_y = du_y + Math.abs(parseFloat(top) - parseInt(top));

        if (du_x > 1)
        {
            left = left - 1;
            du_x = du_x - 1;
        }
        if (du_y > 1)
        {
            top = top - 1;
            du_y = du_y - 1;
        }
        imgMap_Temp.style.left = left + 'px';
        imgMap_Temp.style.top = top + 'px';
    }
    else// Zoom Out
    {
        if (currentWidth - beforeZoom_W * factorZoom < afterZoom_W)
        {
            clearInterval(IntervalZoom);

            imgMap_Temp.style.width = afterZoom_W + 'px';
            imgMap_Temp.style.height = afterZoom_H + 'px';

            left = left - (left - x) * (factorZoom * (currentWidth / afterZoom_W) / ((currentWidth + beforeZoom_W * factorZoom) / currentWidth));
            top = top - (top - y) * (factorZoom * (currentHeight / afterZoom_H) / ((currentHeight + beforeZoom_H * factorZoom) / currentHeight));

            SetSpanCurrentZoom(delta, true);
        }
        else
        {
            SetSpanCurrentZoom(delta, false);
            imgMap_Temp.style.width = (currentWidth - beforeZoom_W * factorZoom) + 'px';
            imgMap_Temp.style.height = (currentHeight - beforeZoom_H * factorZoom) + 'px';

            left = (left - (beforeZoom_L - x) * factorZoom);
            top = (top - (beforeZoom_T - y) * factorZoom);
        }

        du_x = du_x - Math.abs(parseFloat(left) - parseInt(left));
        du_y = du_y - Math.abs(parseFloat(top) - parseInt(top));

        if (du_x < -1)
        {
            left = left + 1;
            du_x = du_x + 1;
        }
        if (du_y < -1)
        {
            top = top + 1;
            du_y = du_y + 1;
        }
        imgMap_Temp.style.left = (left - 2) + 'px';
        imgMap_Temp.style.top = (top - 1) + 'px';

    }
    //#endregion
}

/// <summary>
/// Hàm dùng để dịch chuyển span Mức Zoom hiện tại trên thanh Zoom
/// </summary> 
function SetSpanCurrentZoom(delta, IsStop)
{
    //#region
    var Span_Top;
    var Span_Top_End = (span_CurrentZoom_Top_First - KC_Zoom * (currentZoom - 1));

    if (delta > 0) //ZoomIn
    {
        Span_Top = (parseInt(span_CurrentZoom.style.top) - KC_Zoom * factorZoom);

        if (IsStop || Span_Top <= Span_Top_End)
        {
            span_CurrentZoom.style.top = Span_Top_End + 'px';
            return false;
        }
    }
    else
    {
        Span_Top = (parseInt(span_CurrentZoom.style.top) + KC_Zoom * factorZoom);

        if (IsStop || Span_Top >= Span_Top_End)
        {
            span_CurrentZoom.style.top = Span_Top_End + 'px';
            return false;
        }
    }

    span_CurrentZoom.style.top = Span_Top + 'px';

    return false;

    //#endregion
}

var IntervalEffect;


/// <summary>
/// Hàm dùng để Hiển thị hiệu ứng xung quanh con trỏ chuột khi Zoom Image
/// </summary> 
function ShowEffectZoom(x, y, IsZoomIN)
{
    //#region
    if (IsZoomIN)
    {
        var Conner_T_R = document.getElementById("Conner_T_R");
        var Conner_B_L = document.getElementById("Conner_B_L");
        var Conner_B_R = document.getElementById("Conner_B_R");
        var divWidth = parseInt(divZoomIn_Child.style.width);
        var divHeight = parseInt(divZoomIn_Child.style.height);

        divWidth = divWidth + 20;
        divHeight = divHeight + 10;
        if (divWidth > 100)
        {
            clearInterval(IntervalEffect);
            ResetDivEffectZoom(true);
            return false;
        }
        divZoomIn_Child.style.width = divWidth + 'px';
        divZoomIn_Child.style.height = divHeight + 'px';

        Conner_T_R.style.left = (divWidth - 8) + 'px';
        Conner_B_L.style.top = (divHeight - 6) + 'px';
        Conner_B_R.style.left = (divWidth - 8) + 'px';
        Conner_B_R.style.top = (divHeight - 6) + 'px';
        divZoomInEffect.style.left = (x - divWidth / 2) + 'px';
        divZoomInEffect.style.top = (y - divHeight / 2) + 'px';
        divZoomInEffect.style.visibility = "visible";

    }
    else
    {
        var _Conner_T_R = document.getElementById("_Conner_T_R");
        var _Conner_B_L = document.getElementById("_Conner_B_L");
        var _Conner_B_R = document.getElementById("_Conner_B_R");

        var divWidth_ = parseInt(divZoomOut_Child.style.width);
        var divHeight_ = parseInt(divZoomOut_Child.style.height);

        divWidth_ = divWidth_ - 20;
        divHeight_ = divHeight_ - 10;
        if (divWidth_ < 21)
        {
            clearInterval(IntervalEffect);
            ResetDivEffectZoom(false);
            return false;
        }
        divZoomOut_Child.style.width = divWidth_ + 'px';
        divZoomOut_Child.style.height = divHeight_ + 'px';

        _Conner_T_R.style.left = (divWidth_ - 8) + 'px';
        _Conner_B_L.style.top = (divHeight_ - 6) + 'px';
        _Conner_B_R.style.left = (divWidth_ - 8) + 'px';
        _Conner_B_R.style.top = (divHeight_ - 6) + 'px';

        divZoomOutEffect.style.left = (x - divWidth_ / 2) + 'px';
        divZoomOutEffect.style.top = (y - divHeight_ / 2) + 'px';
        divZoomOutEffect.style.visibility = "visible";
    }

    //#endregion
}

/// <summary>
/// Hàm dùng để Reset lại thẻ div hiệu ứng khi zoom con trỏ chuột
/// </summary> 
function ResetDivEffectZoom(IsZoomIn)
{
    //#region
    if (IsZoomIn)
    {
        divZoomInEffect.style.visibility = "hidden";

        // var Conner_T_L = document.getElementById("Conner_T_L");
        var Conner_T_R = document.getElementById("Conner_T_R");
        var Conner_B_L = document.getElementById("Conner_B_L");
        var Conner_B_R = document.getElementById("Conner_B_R");
        var divWidth = 20;
        var divHeight = 10;

        divZoomIn_Child.style.width = divWidth + 'px';
        divZoomIn_Child.style.height = divHeight + 'px';

        Conner_T_R.style.left = (divWidth - 8) + 'px';
        Conner_B_L.style.top = (divHeight - 6) + 'px';
        Conner_B_R.style.left = (divWidth - 8) + 'px';
        Conner_B_R.style.top = (divHeight - 6) + 'px';
    }
    else
    {
        divZoomOutEffect.style.visibility = "hidden";

        // var Conner_T_L = document.getElementById("Conner_T_L");
        var _Conner_T_R = document.getElementById("_Conner_T_R");
        var _Conner_B_L = document.getElementById("_Conner_B_L");
        var _Conner_B_R = document.getElementById("_Conner_B_R");
        var divWidth_ = 100;
        var divHeight_ = 50;

        divZoomOut_Child.style.width = divWidth_ + 'px';
        divZoomOut_Child.style.height = divHeight_ + 'px';

        _Conner_T_R.style.left = (divWidth_ - 8) + 'px';
        _Conner_B_L.style.top = (divHeight_ - 6) + 'px';
        _Conner_B_R.style.left = (divWidth_ - 8) + 'px';
        _Conner_B_R.style.top = (divHeight_ - 6) + 'px';
    }
    //#endregion
}

/// <summary>
/// Hàm dùng để Thiết lập khi image Bản đồ load xong
/// </summary> 
function DoOnload()
{
    //#region
    if (!isMoved)
    {
        imgMap.style.visibility = 'visible';
        imgMap_Temp.style.visibility = 'hidden';
        clearInterval(IntervalZoom);

        imgMap_Temp.style.left = 0 + "px";
        imgMap_Temp.style.top = 0 + "px";
        imgMap_Temp.style.width = imgMap.style.width;
        imgMap_Temp.style.height = imgMap.style.height;

        imgMap_Temp.src = imgMap.src;

        afterZoom_W = parseInt(imgMap.style.width);
        afterZoom_H = parseInt(imgMap.style.height);

        du_x = du_y = 0;
    }
    else
    {
        imgMap_Temp.src = imgMap.src;

        imgMap_Temp.style.left = 0 + "px";
        imgMap_Temp.style.top = 0 + "px";

        beginPan_L = 0;
        beginPan_T = 0;

        if (window.event)
        {
            beginPan_X = window.event.clientX;
            beginPan_Y = window.event.clientY;
        }
        else
        {
            beginPan_X = moveX;
            beginPan_Y = moveY;
        }
    }
    //lấy thông tin về cấp độ zoom
    ajax_GetZoomLevel();
    
    //Lấy lại danh sách lớp
    ajax_GetListLayer();

    //Thiết lập lại doAction là action hiện tại
    DoAction(doAction);
    
    LastRunOnLoad();

    isProcessing = false;
    
    //Các hàng động chỉ thực hiện 1 lần duy nhất khi load map ban đầu
//    if (RunOnlyOne)
//    {
//        RunOnlyOne = false;
//    }
    //#endregion

    
}

///Tạo hàm để chạy sau cùng khi load Map xong, hàm này có thể chỉnh sửa để phù hợp với từng trường hợp
//
var LastRunOnLoad = function() { }


function ResizeWindow()
{
    //#region
    var window_w, window_h;
    if (iframe_Height == 0)
    {
        window_h = parseInt(GetHeight());
    }
    else
    {
        window_h = iframe_Height + 10;
    }
    if (iframe_Width == 0)
    {
        window_w = parseInt(GetWidth());
    }
    else
    {
        window_w = iframe_Width + 22;
    }


    if (divRight.style.display == "inline")
    {
        //Thiết lập lại kích thước cho DivBando theo chế độ phân giải của màn hình hoặc khi browser resize
        divCenter_Out.style.width = (window_w - 250 - 16) + 'px';
        divCenter_Out.style.height = (window_h - divCenter_Out.offsetTop - 16) + 'px';

        divCenter.style.width = (window_w - 250 - 16 - 2) + 'px';
        divCenter.style.height = (window_h - divCenter_Out.offsetTop - 16 - 2) + 'px';
        //
        divRight.style.height = (window_h - divCenter_Out.offsetTop) + 'px';
        divRight.style.width = "250px";
        divRight_In.style.height = (window_h - divCenter_Out.offsetTop - 16 - 3) + 'px';

        divBanDo_CloseRight.style.background = "url('../Images/Map/CloseRight.png')";

    }
    else
    {
        //Thiết lập lại kích thước cho DivBando theo chế độ phân giải của màn hình hoặc khi browser resize
        divCenter_Out.style.width = (window_w - 16) + 'px';
        divCenter_Out.style.height = (window_h - divCenter_Out.offsetTop - 16) + 'px';

        divCenter.style.width = (window_w - 16 - 2) + 'px';
        divCenter.style.height = (window_h - divCenter_Out.offsetTop - 16 - 2) + 'px';
        
        divBanDo_CloseRight.style.background = "url('../Images/Map/OpenRight.png')";
    }

    divBanDo_CloseRight.style.top = (parseInt(divCenter_Out.offsetTop) + (parseInt(divCenter_Out.style.height) / 2) - divBanDo_CloseRight.offsetHeight / 2) + "px";
    divBanDo_CloseRight.style.left = (parseInt(divCenter_Out.offsetLeft) + (parseInt(divCenter_Out.style.width) + 8)) + "px";
    
    Center_X = parseInt(divCenter.style.width) / 2 + divCenter.offsetLeft - divBanDo.offsetTop + document.body.scrollTop - document.body.clientTop;
    Center_Y = parseInt(divCenter.style.height) / 2 + divCenter.offsetTop - divBanDo.offsetLeft + document.body.scrollLeft - document.body.clientLeft;
    
    Center_X = Math.round(Center_X);
    Center_Y = Math.round(Center_Y);

    divMapName.style.position = 'absolute';
    divMapName.style.left = (parseInt(divCenter.style.width) + $(divCenter).offset().left - divMapName.offsetWidth) + "px";
    divMapName.style.top = (parseInt(divCenter.style.height) + $(divCenter).offset().top - divMapName.offsetHeight) + "px";

    $('#DIVGoogleMapIcon').css({
        'top': ((parseInt(divCenter.style.height) + $(divCenter).offset().top - divMapName.offsetHeight) - 10) + 'px'
    });
    //#endregion
}

/// <summary>
/// Hàm dùng để hiện, ẩn divRight
/// </summary> 
function Toggle_DivRight()
{
    //#region
    if (divRight.style.display == "inline")
    {
        divRight.style.display = "none";
        divBanDo_CloseRight.style.background = "url('../Images/Map/OpenRight.png')";
    }
    else
    {
        divRight.style.display = "inline";
        divBanDo_CloseRight.style.background = "url('../Images/Map/CloseRight.png')";
    }
    ResizeWindow();

    return false;
    //#endregion
}

function ShowInfo()
{
    var lbl_info = document.getElementById("lbl_info");
    //    lbl_info.innerHTML = "Map: (" + imgMap.style.top + ")(" + imgMap.style.left + ")<br/>" +
    //                        "Map_Temp: (" + imgMap_Temp.style.top + ")(" + imgMap_Temp.style.left + ")<br/>";

    lbl_info.innerHTML = "domouseup";
}

/// <summary>
/// Toogle Div danh sách layer
/// </summary> 
function ShowHideListLayer()
{
    //#region
    if (!divDanhSachLop)
        return false;
    if (divDanhSachLop.style.display == "" || divDanhSachLop.style.display == "none")
    {
        divDanhSachLop.style.display = "inline";
    }
    else
    {
        divDanhSachLop.style.display = "none";
        //Lấy lại danh sách list layer
        ajax_GetListLayer();            
    }
    return false;
    //#endregion
}

/// <summary>
/// Hàm dùng để bất tắt layer
/// </summary> 
function ShowHideLayer()
{
    //#region
    tbx_ListIDCheckBox = document.getElementById("tbx_ListIDCheckBox");
    if (!tbx_ListIDCheckBox)
    {
        return false;
    }
   
    var listCheckBoxID = tbx_ListIDCheckBox.value.split(',');

    if (listCheckBoxID.length < 1)
        return false;
    var ListLayerID = "";
    for (var i = 0; i < listCheckBoxID.length; i++)
    {
        var chk_LayerItem = document.getElementById(listCheckBoxID[i]);
        if (!chk_LayerItem || chk_LayerItem.checked)
            continue;
            
        ListLayerID += chk_LayerItem.title + ",";
    }
    if (ListLayerID.length > 0)
    {
        ListLayerID = ListLayerID.substring(0, ListLayerID.length - 1);
    }

    var OtherPara = "&ListID=" + ListLayerID;
    SetMapSRC_DoAction(MapID, 16, mapWidth, mapHeight, null, null, null, null, OtherPara);

    return false;
    //#endregion
}
/// <summary>
/// Ẩn hiện Div Thông tin lô thửa
/// </summary> 
function ShowHideThongTinLoThua(IsShow)
{
    //#region
    if (!divThongTinLoThua)
        return false;
    if (IsShow)
    {
        divThongTinLoThua.style.display = "inline";

    }
    else
    {
        divThongTinLoThua.style.display = "none";
        divThongTinLoThua_Content.innerHTML = "<span class='ThongTinLoThua_KhongDuLieu'>KHÔNG CÓ DỮ LIỆU!</span>";
    }
    return false;
    //#endregion2
}

    //#endregion2

/// <summary>
/// Ẩn hiện Div Hướng dẫn sử dụng bản đồ
/// </summary>
function ShowHuongDanSuDung(IsShow)
{
    //#region
    if (!divHuongDanSuDung)
        return false;
    if (IsShow)
    {
        divHuongDanSuDung.style.display = "inline";

    }
    else
    {
        divHuongDanSuDung.style.display = "none";
    }
    return false;
    //#endregion
}



/////////////CÁC HÀM VỀ AJAX ///////////////////////////////////////////////////////////////////////////////

/// <summary>
/// Hàm dùng để hiển thị thông tin 1 điểm bds
/// </summary>
function ajax_GetInfoDiemBDS(MaBDS)
{
    //#region
    var xmlhttp = CreateAjax();

    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4)
        {
            divDiemBDS_Contain.innerHTML = "";
            divDiemBDS_Contain.innerHTML = xmlhttp.responseText;

            isProcessing = false;
            DoAction(doAction);
        }
    }
    
    xmlhttp.open("GET", "ImageMap.ashx?viewMode=" + viewMode +"&MapID=0&DoAction=18&MaBDS=" + MaBDS + "&time=" + (new Date()).getTime(), true)
    xmlhttp.send(null);
    return false;
    //#endregion
}

/// <summary>
/// Hàm dùng để xem thông tin các bất động sản theo 1 vùng
/// </summary>
function ajax_LoadNode(Min_X, Min_Y, Max_X, Max_Y)
{
    //#region
    var xmlhttp = CreateAjax();

    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4)
        {

            divDiemBDS_Contain.innerHTML = "";
            divDiemBDS_Contain.innerHTML = xmlhttp.responseText;

            isProcessing = false;
            DoAction(doAction);
        }
    }

    xmlhttp.open("GET", "ImageMap.ashx?viewMode=" + viewMode + "&MapID=0&DoAction=5&Min_X=" + Min_X + "&Min_Y=" + Min_Y + "&Max_X=" + Max_X + "&Max_Y=" + Max_Y + "&time=" + (new Date()).getTime(), true)
    xmlhttp.send(null);
    return false;
    //#endregion
}



/// <summary>
/// Hàm dùng để xem thông tin các bất động sản theo 1 vùng(vùng là chiều dài rộng của divCenter) và dánh dấu 1 BDS
/// </summary>
function ajax_LoadNode_DiemBDS(MaBDS)
{
    //#region

    var Min_X, Min_Y, Max_X, Max_Y;
    Min_X = 0;
    Min_Y = 0;
    Max_X = parseInt(divCenter.style.width);
    Max_Y = parseInt(divCenter.style.height);
    
    var xmlhttp = CreateAjax();

    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4)
        {
            divDiemBDS_Contain.innerHTML = "";
            divDiemBDS_Contain.innerHTML = xmlhttp.responseText;

            isProcessing = false;
            DoAction(doAction);
        }
    }

    xmlhttp.open("GET", "ImageMap.ashx?viewMode=" + viewMode + "&MapID=0&DoAction=18&MaBDS=" + MaBDS + "&Min_X=" + Min_X + "&Min_Y=" + Min_Y + "&Max_X=" + Max_X + "&Max_Y=" + Max_Y + "&time=" + (new Date()).getTime(), true)
    xmlhttp.send(null);
    return false;
    //#endregion
}

/// <summary>
/// Hàm dùng để lấy và thiết lập lại cấp độ zoom, và lấy MapID
/// </summary> 
function ajax_GetZoomLevel()
{
    //#region
    var xmlhttp = CreateAjax();

    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4)
        {
            var str_arr = xmlhttp.responseText.split(",");
            var d = "";
            if (str_arr && str_arr.length > 0)
            {
                currentZoom = parseInt(str_arr[0]);
                minZoom = parseInt(str_arr[1]);
                maxZoom = parseInt(str_arr[2]);
                MapID = parseInt(str_arr[3]);

                divBanDo_ZoomTool_1.style.height = (KC_Zoom * maxZoom) + "px";

                span_CurrentZoom_Top_First = divBanDo_ZoomTool_1_Top + KC_Zoom * (maxZoom - 1);

                span_CurrentZoom.style.top = (span_CurrentZoom_Top_First - KC_Zoom * (currentZoom - 1)) + 'px';

                span_CurrentZoom.title = currentZoom;

                CreateCookie("MapID", MapID, 1);
                
                //Disable hoặc Enable MapTool tùy theo loại bản đồ
                Enable_DisableMapTool();
            }
        }
    }
    xmlhttp.open("GET", "ImageMap.ashx?viewMode=" + viewMode + "&MapID=0&DoAction=6&W=" + mapWidth + "&H=" + mapHeight + "&time=" + (new Date()).getTime(), true);
    xmlhttp.send(null);
    return false;

    //#endregion
}

/// <summary>
/// Hàm dùng để lấy danh sách các Lớp (layer)
/// </summary> 
function ajax_GetListLayer()
{
    //#region
    var xmlhttp = CreateAjax();

    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4)
        {
            divDanhSachLop_Content.innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "ImageMap.ashx?viewMode=" + viewMode + "&MapID=0&DoAction=15&W=" + mapWidth + "&H=" + mapHeight + "&time=" + (new Date()).getTime(), true);
    xmlhttp.send(null);
    return false;

    //#endregion
}

/// <summary>
/// Hàm dùng để lấy danh sách các Lớp (layer)
/// </summary> 
function ajax_GetInfoLoThua(x,y,IsMove)
{
    //#region
    var xmlhttp = CreateAjax();

    ShowHideThongTinLoThua(false);

    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4)
        {
            divThongTinLoThua_Content.innerHTML = xmlhttp.responseText;
            //Dánh dấu lô thửa đất
            if (IsMove)
            {
                SetMapSRC_DoAction(MapID, 10, mapWidth, mapHeight, x, y, currentZoom, null, "&IsMove=true&allowSavePointBDS=false");
            }
            else
            {
                SetMapSRC_DoAction(MapID, 10, mapWidth, mapHeight, x, y, currentZoom, null, "&allowSavePointBDS=false");
            }

            LastRunOnLoad = function()
            {
                ShowHideThongTinLoThua(true);

                LastRunOnLoad = function() { };
            };
        }
    }
    xmlhttp.open("GET", "ImageMap.ashx?viewMode=" + viewMode + "&MapID=0&DoAction=17&W=" + mapWidth + "&H=" + mapHeight + "&X=" + x + "&Y=" + y + "&time=" + (new Date()).getTime(), true);
    xmlhttp.send(null);
    return false;

    //#endregion
}

function ajax_GetInfoLoThua_forUpdate(x, y, IsMove)
{
    //#region
    var xmlhttp = CreateAjax();

    ShowHideThongTinLoThua(false);

    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4)
        {
            DivShowUpdateMap.innerHTML = xmlhttp.responseText;
            //Dánh dấu lô thửa đất
            if (IsMove)
            {
                SetMapSRC_DoAction(MapID, 10, mapWidth, mapHeight, x, y, currentZoom, null, "&IsMove=true&allowSavePointBDS=false");
            }
            else
            {
                SetMapSRC_DoAction(MapID, 10, mapWidth, mapHeight, x, y, currentZoom, null, "&allowSavePointBDS=false");
            }

            LastRunOnLoad = function()
            {
                ShowHideThongTinLoThua(true);

                LastRunOnLoad = function() { };
            };
        }
    }
    xmlhttp.open("GET", "ImageMap.ashx?viewMode=" + viewMode + "&MapID=0&DoAction=22&W=" + mapWidth + "&H=" + mapHeight + "&X=" + x + "&Y=" + y + "&time=" + (new Date()).getTime(), true);
    xmlhttp.send(null);
    return false;

    //#endregion
}

/// <summary>
/// Lấy thông tin lô thưa nhưng ko add vào lớp điểm
/// </summary> 
function ajax_GetInfoLoThua_Real(x, y)
{
    //#region
    var xmlhttp = CreateAjax();
    ShowHideThongTinLoThua(false);

    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4)
        {
            divThongTinLoThua_Content.innerHTML = xmlhttp.responseText;

            //Dánh dấu lô thửa đất
            SetMapSRC_DoAction(MapID, 10, mapWidth, mapHeight, x, y, currentZoom, null, "&IsReal=true&IsMove=true");

            LastRunOnLoad = function()
            {
                ShowHideThongTinLoThua(true);

                LastRunOnLoad = function() { };
            };
        }
    }
    xmlhttp.open("GET", "ImageMap.ashx?viewMode=" + viewMode + "&MapID=0&DoAction=17&W=" + mapWidth + "&H=" + mapHeight + "&X=" + x + "&Y=" + y + "&IsReal=true&time=" + (new Date()).getTime(), true);
    xmlhttp.send(null);
    return false;

    //#endregion
}

/// <summary>
/// Lấy thông tin lô thưa nhưng ko add vào lớp điểm
/// </summary> 
function ajax_GetMapName()
{
    //#region
    var xmlhttp = CreateAjax();

    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4)
        {
            lbl_MapName.innerHTML = 'Bạn đang xem : "' + xmlhttp.responseText + '"';
            divMapName.style.position = 'absolute';
            divMapName.style.left = (parseInt(divCenter.style.width) + $(divCenter).offset().left - divMapName.offsetWidth) + "px";
            divMapName.style.top = (parseInt(divCenter.style.height) + $(divCenter).offset().top - divMapName.offsetHeight) + "px";
        }
    }
    xmlhttp.open("GET", "ImageMap.ashx?viewMode=" + viewMode + "&MapID=0&DoAction=21&W=" + mapWidth + "&H=" + mapHeight + "&X=" + "0" + "&Y=" + "0" + "&time=" + (new Date()).getTime(), true);
    xmlhttp.send(null);
    return false;

    //#endregion
}


/// <summary>
/// Hàm dùng để Khởi tạo đối tượng Ajax (XMLHTML)
/// </summary> 
function CreateAjax()
{
    //#region
    var XmlHttp;

    //Creating object of XMLHTTP in IE
    try
    {
        XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
        try
        {
            XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (oc)
        {
            XmlHttp = null;
        }
    }
    //Creating object of XMLHTTP in Mozilla and Safari
    if (!XmlHttp && typeof XMLHttpRequest != "undefined")
    {
        XmlHttp = new XMLHttpRequest();
    }
    return XmlHttp;

    //#endregion
}

//Tạo Cookie
function CreateCookie(name, value, days)
{
    if (days)
    {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

//Đọc Cookie
function ReadCookie(name)
{
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++)
    {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

///Xóa Cookie
function EraseCookie(name)
{
    CreateCookie(name, "", -1);
}

function GetQueryString(name)
{
    name = name.toLowerCase()
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href.toLowerCase());
    if (results == null)
        return null;
    else
        return results[1];
}


function ChangeTab(ctr_a)
{
    var ctr_Link;
    var ctr_SpanLink;
    var ctr_Div;
    if (!ctr_a)
        return false;
    for (var i = 1; i <= 5; i++)
    {
        if (!document.getElementById('11_Tab_' + i))
            continue;

        if ('11_Tab_' + i == ctr_a.id)
        {
            ctr_Link = document.getElementById('11_Tab_' + i);
            ctr_Link.style.background = 'url("../Images/Map/TiemKiem_Tab_L.png") no-repeat left top';

            ctr_SpanLink = ctr_Link.children[0];
            ctr_SpanLink.style.color = '#333333';
            ctr_SpanLink.style.background = 'url("../Images/Map/TiemKiem_Tab_R.png") no-repeat right top';

            ctr_Div = document.getElementById('11_Div_' + i);
           ctr_Div.style.display = "inline";
        }
        else
        {
            ctr_Link = document.getElementById('11_Tab_' + i);
            ctr_Link.style.background = '';

            ctr_SpanLink = ctr_Link.children[0];
            ctr_SpanLink.style.color = '#f67400';
           
            ctr_SpanLink.style.background = '';

            ctr_Div = document.getElementById('11_Div_' + i);
            ctr_Div.style.display = "none";
        }
    }
    return false;
}
