﻿/// <reference path="../jquery-1.3.2.min-vsdoc.js" />
/// <reference path="GS_Map.js" />
/// <reference path="Fluster2.packed.js" />


// chứa danh sách id của RE trong session phục vụ cho so sánh
var listIdRE = "";
//Mảng chứa một list các phần tử RealEstateTabs
var listTabs = [];

var infoWindow;
var maxlen = 100; //Xem mảng marker lưu lại lớn nhất bao nhiêu phần tử -- cache

var $tabs;

var idRE; //Biến giữ id của real estate vừa được thêm vào theo một chuỗi sự kiện khi thêm tab
          //gồm. thêm tab. select tab.load tab. show tab

var list; //mảng chứa danh sách các bản ghi bđs lấy ra được sau mỗi lần drap map

//trang hiện tại
var curPage = 0;
//Số item hiển thị trên một trang trong ds bđs bên cạnh bản đồ
var sizePage = 5;


var pageSizeOnMap = 20;
var pageCurrentOnMap=0;
var pageFirstOnMap = 1;
var totalPagesOnMap;

var length; //Số lượng bản ghi bds lấy ra được trong một lần drap map

var idTabSelected = -1; //id cua tab duoc hien thi

//Mảng chứa một list block chua các phần tử RealEstateMarkers
var blocks = [];

//Mang chua mot list block chua cac phan tu DistrictMarkers
var blockDistricts = [];

//Mang chua mot list cac phan tu ProvinceMarkers
var markerProvince = [];

var markers = [];
var markerDistrict = [];

//doi tuong tab
function RealEstateTabs(idTab, idReal) {
    this.idTab = idTab
    this.IdReal = idReal
    this.isLoaded = null
}

//doi tuong marker tuong ung voi bds
function RealEstateMarkers(markerReal, idReal) {
    this.Marker = markerReal
    this.IdReal = idReal
    this.InfoOfMarker = null
}

//doi tuong marker tuong ung voi quan huyen
function DistrictMarker(markerDistrict, idDistrict) {
    this.Marker = markerDistrict;
    this.IdDistrict = idDistrict;
    this.InfoOfMarker = null;
}

//doi tuong marker tuong ung voi tinh thanh
function ProvinceMarker(markerProvince, idProvince) {
    this.Marker = markerProvince;
    this.IdProvince = idProvince;
    this.InfoOfMarker = null;
}

//doi tuong block
function Block(id) {
    this.BlockID = id;
    this.REMarkersOfBlock = [];
}

function BlockDistrict(id) {
    this.BlockID = id;
    this.DistrictsOfBlock = [];
}

//# prototype for array{ 

//Phương thức này chỉ dùng trong mảng chứa các phần tử RealEstateMarkers
//Trả lại index của phần tử nếu giá trị truyền vào được tìm thấy trong mảng
//Trả lại -1 nếu nó không tồn tại
Array.prototype.IsOfArrayRe = function(value) {
    var i;
    for (i = 0; i < this.length; i++) {

        var ID = this[i].IdReal;
            if (ID==value) { return i; }
    }
    return -1;

};

Array.prototype.IsOfArrayBlock = function (value) {
    var i;
    for (i = 0; i < this.length; i++) {

        var ID = this[i].BlockID;
        if (ID == value) { return i; }
    }
    return -1;

};

Array.prototype.IsOfArrayDistrict = function (value) {
    var i;
    for (i = 0; i < this.length; i++) {

        var ID = this[i].IdDistrict;
        if (ID == value) { return i; }
    }
    return -1;

};

Array.prototype.IsOfArrayProvince = function (value) {
    var i;
    for (i = 0; i < this.length; i++) {

        var ID = this[i].IdProvince;
        if (ID == value) { return i; }
    }
    return -1;

};


//Phuong thuc de tim theo IdTAB
//Trả lại index của phần tử nếu giá trị truyền vào được tìm thấy trong mảng
//Trả lại -1 nếu nó không tồn tại
Array.prototype.IsOfArrayReIdTAB = function(value) {
    var i;
    for (i = 0; i < this.length; i++) {

        var ID = this[i].idTab;
        if (ID == value) { return i; }
    }
    return -1;
};

//#}
/*-----------------Khi dropdow list của province thay đổi----------------*/

//# Data for province{ 
var dataOfDistrict;
function provinceChange() {
    var provinceId = $('#ProvinceId > option:selected').attr('value');

    $.ajax({
        type: "POST",
        url: "/Bases/GetDistrict",
        dataType: 'json',
        data: 'provinceid=' + provinceId,
        success: function(data) {
            dataOfDistrict = data;
            bindDataIntoSelectTag(data);
        }
    });
};

function bindDataIntoSelectTag(data) {
    if (data.length > 0) {
        var options = '';
        for (s in data) {

            var district = data[s];
            if (district.Value != undefined) {
                options += "<option value='" + district.Value + "'>" + district.Text + "</option>";
            }
        }
        $("#DistricId").empty().removeAttr('disabled').html(options);

    }
    else {
        $("#DistricId").attr("disabled", true).html('');
        $("#DistricId").append('<option selected >(Not found)</option>');

    }


}

/*-------------------Province của bản đồ------------------------------*/
var provinceSelected;

function province_change() {
    var coordinateProvince = $('#ProvinceOnMapId > option:selected').attr('value');
    provinceSelected = coordinateProvince;
    if (coordinateProvince != "") {
        var latLng = coordinateProvince.split('/');

        var myLatlng = new google.maps.LatLng(latLng[0], latLng[1]);
        map.setCenter(myLatlng);

        ModuleZoomModel.CurrentZoomLevel = map.getZoom();
        var currentZoomType = ModuleZoomModel.GetTypeOfLevelZoomMap(ModuleZoomModel.CurrentZoomLevel);
        if (currentZoomType == ModuleZoomModel.MapAtDistrict) {
            //LoadREinMapViewport(getTypeREchecked(), getPurposeREchecked(), pageCurrentOnMap, pageSizeOnMap);
            LoadREinMapViewportWithBlocks(getTypeREchecked(), getPurposeREchecked());
            //có lên fluster vào đây không, có thể gay dơ khi drap map
        }
        else if (currentZoomType == ModuleZoomModel.MapAtProvince) {
            //PopMarkerDistrictInStack();
            // Load Marker District in view port
            //LoadDistrictInMapViewport();
            LoadDistrictinMapViewportWithBlocks(false, getTypeREchecked(), getPurposeREchecked());
        }
        else if (currentZoomType == ModuleZoomModel.MapAtNation) {
            // Load Marker Province in view port
            //LoadProvinceInMapViewport();
            //LoadAllREsInProvinces(false,getTypeREchecked(), getPurposeREchecked());
        }
    }
}
//#}

/*Lấy các tiêu chí để lọc hiển thị các bất động sản trên bản đồ
--------------------------------------------------------------------------*/
function getTypeREchecked(){
    var s = "*";
    $.each($("input[name='TypeRE']:checked"), function (index, item) {
    s = s + item.value + "*";
    });

    return s;
}

function getPurposeREchecked() {
    var s = "*";
    $.each($("input[name='PurposeRE']:checked"), function (index, item) {
    s = s + item.value + "*";
    });

    return s;
}

//Bắt sự kiện ấn nút hiển thị để load bđs theo điều kiện lọc
function ReloadRealEstateInMap() {
    //ClearMarkerOnMap();
    //pageCurrentOnMap = pageFirstOnMap;
    //LoadREinMapViewport(getTypeREchecked(), getPurposeREchecked(), pageCurrentOnMap, pageSizeOnMap);
    ModuleZoomModel.CurrentZoomLevel = map.getZoom();
    var currentZoomType = ModuleZoomModel.GetTypeOfLevelZoomMap(ModuleZoomModel.CurrentZoomLevel);
    if (currentZoomType == ModuleZoomModel.MapAtDistrict) {
        //LoadREinMapViewport(getTypeREchecked(), getPurposeREchecked(), pageCurrentOnMap, pageSizeOnMap);
        //LoadREinMapViewportWithBlocks(getTypeREchecked(), getPurposeREchecked());
        ReloadMarkerReInMap(getTypeREchecked(), getPurposeREchecked());
        blockDistricts = [];
        markerProvince = [];
    }
    else if (currentZoomType == ModuleZoomModel.MapAtProvince) {
        //PopMarkerDistrictInStack();
        // Load Marker District in view port
        //LoadDistrictInMapViewport();
        LoadDistrictinMapViewportWithBlocks(true, getTypeREchecked(), getPurposeREchecked());
        markerProvince = [];
    }
    else if (currentZoomType == ModuleZoomModel.MapAtNation) {
        // Load Marker Province in view port
        //LoadProvinceInMapViewport();
        LoadAllREsInProvinces(true, getTypeREchecked(), getPurposeREchecked());
    }

}

function pageOnMapChangeSelect() {
    //ClearMarkerOnMap();
    PopMarkerInStack();
    pageCurrentOnMap = $("#mapPagingSelect").val();
    LoadREinMapViewport(getTypeREchecked(), getPurposeREchecked(), pageCurrentOnMap, pageSizeOnMap);
}

function prevPageOnMap() {
    if (pageCurrentOnMap > 1) {
        //ClearMarkerOnMap();
        PopMarkerInStack();
        pageCurrentOnMap = pageCurrentOnMap - 1;
        LoadREinMapViewport(getTypeREchecked(), getPurposeREchecked(), pageCurrentOnMap, pageSizeOnMap);
    }
}

function nextPageOnMap() {
    ///<summary>Ham next page tren map
    ///  <para>Name:Day la ten tham so truyen vao</para>
    ///  <para>DT:Day la sdt tham so truyen vao</para>
    ///</summary>
    if (pageCurrentOnMap < totalPagesOnMap) {
        //ClearMarkerOnMap();
        PopMarkerInStack();
        pageCurrentOnMap = pageCurrentOnMap + 1;
        LoadREinMapViewport(getTypeREchecked(), getPurposeREchecked(), pageCurrentOnMap, pageSizeOnMap);
    }
}

//Xóa tất cả các marker trên bản đồ
function ClearMarkerOnMap() {
    //remove tất cả các marker trên map. có thể không cần xóa
    //if (markers.length > maxlen) {
    if (markers.length > 0) {
        for (var i = markers.length - 1; i >= 0; i--) {
            markers[i].Marker.setMap(null);
            //markers.pop();
            //if (markers.length == maxlen) break;
        }
        markers.length = 0;
    };
    //};
}

//remove tất cả các marker trên map. có thể không cần xóa, cache dữ liệu
function PopMarkerInStack() {
    if (markers.length > maxlen) {
        for (var i = markers.length - 1; i >= 0; i--) {
            markers[i].Marker.setMap(null);
            markers.pop();
            if (markers.length == maxlen) break;
        }
    };
}

function PopMarkerDistrictInStack() {
    if (markerDistrict.length > maxlen) {
        for (var i = markerDistrict.length - 1; i >= 0; i--) {
            markerDistrict[i].Marker.setMap(null);
            marmarkerDistrictkers.pop();
            if (markerDistrict.length == maxlen) break;
        }
    };
}
/*-----------Phân trang trong list bđs hiển thị cho người dùng-----------*/
function previewPage() {    
    if (curPage > 1) {
        curPage = curPage - 1;

        $('#next').removeClass('inactive');
        $('#disable-next').addClass('inactive');

        if (curPage == 1) {
            $('#preview').addClass('inactive');
            $('#disable-preview').removeClass('inactive');

        }

        
        var content = "";

        for (var i = (curPage-1) * sizePage; i < curPage * sizePage; i++) {
            if (i < length) {
                var item = list[i];
                var date = item["CreatedOn"].split(" ");
                var address = item["DistrictName"] + ',' + item["ProvinceName"];
                var param = "'" + address + "'";
                var indexRE = listIdRE.indexOf(item["ReID"] + "-" + item["TypeId"]);

                var htmlraw = "";
                if (indexRE <0 )
                    htmlraw = '<div class="row-list"  onclick="trigger(' + item["ReID"] + ');"><div class="row-left"><img alt="BDS image" src="' + item["ImageLink"]+'" /></div>' +
                                 '<div class="row-right"><div><span>Số ' + item["SoNha"] + ', ' + item["Hem"] + ', ' + item["Nghach"] + ', ' + item["Ngo"] + ', ' + item["StreetAddress"] + ', ' + address + '</span></div>' +
                                 '<div><span><div class="item_title">Loại:</div> ' + item["TypeName"] + ' - ' + item["Purpose"] + '</span></div>' +
                                 '<div class="field-info"><div class="item_title">Giá:</div> ' + item["Price"] + ' ' + item["PriceCode"] + '</div>' +
                                 '<div class="field-info"><div class="item_title">Ngày đăng:</div> ' + date[0] + '</div>' +
                                 '<div ><a href="#tab" onclick="addTab(' + item["ReID"] + ',' + param + ',' + item["TypeId"] + ');">Chi tiết</a>&nbsp;|&nbsp;<a href="#tab-right" class="addCompare" id="aNTTCompareTTN' + item["ReID"] + "-" + item["TypeId"] + '">So sánh</a></div></div></div>';
                else
                    htmlraw = '<div class="row-list"  onclick="trigger(' + item["ReID"] + ');"><div class="row-left"><img alt="BDS image" src="' + item["ImageLink"]+'" /></div>' +
                                 '<div class="row-right"><div><span>Số ' + item["SoNha"] + ', ' + item["Hem"] + ', ' + item["Nghach"] + ', ' + item["Ngo"] + ', ' + item["StreetAddress"] + ', ' + address + '</span></div>' +
                                 '<div><span><div class="item_title">Loại:</div> ' + item["TypeName"] + ' - ' + item["Purpose"] + '</span></div>' +
                                 '<div class="field-info"><div class="item_title">Giá:</div>' + item["Price"] + ' ' + item["PriceCode"] + '</div>' +
                                 '<div class="field-info"><div class="item_title">Ngày đăng:</div> ' + date[0] + '</div>' +
                                 '<div ><a href="#tab" onclick="addTab(' + item["ReID"] + ',' + param + ',' + item["TypeId"] + ');">Chi tiết</a>&nbsp;|&nbsp;<a href="#compare-tab" class="viewCompare" id="aNTTCompareTTN' + item["ReID"] + "-" + item["TypeId"] + '">Xem so sánh</a></div></div></div>';

                content = content + htmlraw;
            }


        }
        $("#listRe").html('');
        $('#listRe').html(content);

        $('.addCompare').click(addCompare);
        $('.viewCompare').click(viewCompare);
    }
}

function nextPage() {

        $('#preview').removeClass('inactive');
        $('#disable-preview').addClass('inactive');
        curPage = curPage + 1;

        var content = "";

        for (var i = (curPage - 1) * sizePage; i < curPage * sizePage; i++) {
            if (i < length) {
                var item = list[i];
                var date = item["CreatedOn"].split(" ");
                
                var address = item["DistrictName"] + ',' + item["ProvinceName"];
                var param = "'" + address + "'";
                var indexRE = listIdRE.indexOf(item["ReID"] + "-" + item["TypeId"]);

                var htmlraw="";
                if (indexRE < 0)
                    htmlraw = '<div class="row-list"  onclick="trigger(' + item["ReID"] + ');"><div class="row-left"><img alt="BDS image" src="' + item["ImageLink"]+'" /></div>' +
                                 '<div class="row-right"><div><span>Số ' + item["SoNha"] + ', ' + item["Hem"] + ', ' + item["Nghach"] + ', ' + item["Ngo"] + ', ' + item["StreetAddress"] + ', ' + address + '</span></div>' +
                                 '<div><span><div class="item_title">Loại:</div> ' + item["TypeName"] + ' - ' + item["Purpose"] + '</span></div>' +
                                 '<div class="field-info"><div class="item_title">Giá:</div>' + item["Price"] + ' ' + item["PriceCode"] + '</div>' +
                                 '<div class="field-info"><div class="item_title">Ngày đăng:</div> ' + date[0] + '</div>' +
                                 '<div ><a href="#tab" onclick="addTab(' + item["ReID"] + ',' + param + ',' + item["TypeId"] + ');">Chi tiết</a>&nbsp;|&nbsp;<a href="#tab-right" class="addCompare" id="aNTTCompareTTN' + item["ReID"] + "-" + item["TypeId"] + '">So sánh</a></div></div></div>';
                else
                    htmlraw = '<div class="row-list"  onclick="trigger(' + item["ReID"] + ');"><div class="row-left"><img alt="BDS image" src="' + item["ImageLink"]+'" /></div>' +
                                 '<div class="row-right"><div><span>Số ' + item["SoNha"] + ', ' + item["Hem"] + ', ' + item["Nghach"] + ', ' + item["Ngo"] + ', ' + item["StreetAddress"] + ', ' + address + '</span></div>' +
                                 '<div><span><div class="item_title">Loại:</div> ' + item["TypeName"] + ' - ' + item["Purpose"] + '</span></div>' +
                                 '<div class="field-info"><div class="item_title">Giá:</div>' + item["Price"] + ' ' + item["PriceCode"] + '</div>' +
                                 '<div class="field-info"><div class="item_title">Ngày đăng:</div> ' + date[0] + '</div>' +
                                 '<div ><a href="#tab" onclick="addTab(' + item["ReID"] + ',' + param + ',' + item["TypeId"] + ');">Chi tiết</a>&nbsp;|&nbsp;<a href="#compare-tab" class="viewCompare" id="aNTTCompareTTN' + item["ReID"] + "-" + item["TypeId"] + '">Xem so sánh</a></div></div></div>';

                content = content + htmlraw;

            }
            else if (i >= length) {

                $('#next').addClass('inactive');
                $('#disable-next').removeClass('inactive');
            }

        }
        $("#listRe").html('');
        $('#listRe').html(content);
        $('.addCompare').click(addCompare);
        $('.viewCompare').click(viewCompare);
}

//Cac bien phuc vụ cho viec zoome bản đồ

var currentZoom = 15;
var isReLoadMap = false;

var ModuleZoomModel = (function () {
    var instance = {};
    //Muc zoom ban dau khi hien thi ban do bds
    instance.ZoomLevelInit=15

    //Constance properties
    instance.MapAtNation = 0;
    instance.MapAtProvince = 1;
    instance.MapAtDistrict = 2;
    instance.MapAtRE = 3;

    //Level zoom pefect for display
    instance.ZoomLevelOfDistrict = 12;
    instance.ZoomLevelOfRealEstate = 15;

    //
    instance.PreviousZoomLevel=instance.ZoomLevelInit;
    instance.CurrentZoomLevel=instance.ZoomLevelInit;

    //Public method
    instance.GetTypeOfLevelZoomMap = function (levelZoom) {
        //muc zoom hien thi tong bds o cac tinh
        if (levelZoom <= 10)
            return instance.MapAtNation;
        //muc zoom hien thi tong bds o cac quan
        if (levelZoom >= 11 && levelZoom <= 13)
            return instance.MapAtProvince;
        //muc zoom hien thi cac bds o mot quan
        if (levelZoom >= 14)
            return instance.MapAtDistrict;
    };

    instance.SetNewZoom = function (map, value) {
        map.setZoom(value);
    };

    return instance;
} ());

function focusDistrict(lat, lng) {
    var point = new google.maps.LatLng(lat, lng);
    map.setCenter(point);
    //map.setZoom(ModuleZoomModel.ZoomLevelOfRealEstate);
    $("#slider-vertical").slider("option", "value", ModuleZoomModel.ZoomLevelOfRealEstate);
}

function focusProvince(lat, lng) {
    var point = new google.maps.LatLng(lat, lng);
    map.setCenter(point);
    //map.setZoom(ModuleZoomModel.ZoomLevelOfDistrict);
    $("#slider-vertical").slider("option", "value", ModuleZoomModel.ZoomLevelOfDistrict);
}


function setNewZoom(value) {
    $("#slider-vertical").slider("option", "value", value);
    //map.setZoom(value);
}


$(document).ready(function () {
    listIdRE = $('#session-compare').val();

    //TODO:Khởi tạo map
    InitialMapUser(0, "#map"); //hàm trong GS_Map.js
    map.setOptions({ scrollwheel: false });

    //Code xử hiển thị các tab chi tiết
    listTabs = new Array();
    //# Khởi tạo tab hiển thị thông tin chi tiet cua bat dong san
    $tabs = $("#tab").tabs({
        spinner: "Đang tải ...",
        cache: true,
        tabTemplate: '<li><a href="#{href}"><span>#{label}</span></a><span class="ui-icon ui-icon-close">Remove Tab</span></li>',
        //tab được thêm vào sẽ dược chọn ngay khi sự kiện thêm tab xảy ra
        add: function (event, ui) {
            $('#tab').css('display', 'block');
            $tabs.tabs('select', '#' + ui.panel.id);
            if ($tabs.tabs("length") == 1)
                idTabSelected = ui.panel.id;

            var index = listTabs.IsOfArrayRe(idRE);
            //isRefresh = idRE;
            if (index != -1) {
                listTabs[index].idTab = ui.panel.id;
                idRE = 0;
            }
            showPleasewait('#tab');
        },
        load: function (event, ui) {
            //tab đã được thêm trong hàm addTab
            var index = listTabs.IsOfArrayReIdTAB(ui.panel.id);
            //Kiểm tra xem tab đã được load chưa nếu không cứ mỗi lần chuyển tab sự kiện tabshow được chỉ ra
            if (index != -1) {
                initializeMediaREControl("#div", listTabs[index].IdReal);
                $('.checkbox-list input[type="checkbox"]').attr('disabled', true);
                listTabs[index].isLoaded = true;
                //Load các tiện nghi đã được đánh dấu.
                var idament = '#Amenities' + listTabs[index].IdReal;
                var arrayAment = $(idament).val();
                if (arrayAment != undefined && arrayAment != "") {
                    var amenities = arrayAment.split(",");
                    $.each(amenities, function (index, item) {
                        if (item != "") {
                            var selector = '#Amenities input[value="' + item + '"]';
                            $(selector).attr('checked', true).next().addClass('checkedbox');
                        }
                    });
                }
                //marker bds tren ban do
                var idmap = "#map-second" + listTabs[index].IdReal;
                var idLat = '#latMarker' + listTabs[index].IdReal;
                var idLng = '#lngMarker' + listTabs[index].IdReal;
                var idCoor = '#coordiante' + listTabs[index].IdReal;
                //ha tang xa hoi tren ban do
                var typeList = '#TypeList' + listTabs[index].IdReal;
                var nameList = '#NameList' + listTabs[index].IdReal;
                var latList = '#LatList' + listTabs[index].IdReal;
                var lngList = '#LngList' + listTabs[index].IdReal;
                var roadCoordinateList = '#RoadCoordinateList' + listTabs[index].IdReal;
                var lengthList = '#Length' + listTabs[index].IdReal;

                registOnLoadDetail(idRE);
                //isRefresh = listTabs[index].IdReal;
                //Khởi tạo map nhỏ trong phân chi tiết
                mapRE = null;
                InitialMapRE(0, idmap);
                MarkREintoMap($(idLat).val(), $(idLng).val(), $(idCoor).val());
                MarkSocietyOfREIntoMap($(idLat).val(), $(idLng).val(), $(typeList).val(), $(nameList).val(), $(latList).val(), $(lngList).val(), $(roadCoordinateList).val(), $(lengthList).val());
                hidePleasewait('#tab');
            }
        } //end add event tab

    }); //end $("#tab").tabs({

    //#}

    //# hiển thị icon close tab và phân trang tab {
    $('#tab span.ui-icon-close').live('click', function () {
        var index = $('li[class!="ui-state-default ui-tabs-paging-prev"]', $tabs).index($(this).parent());
        $tabs.tabs('remove', index);
        var panelId = $(this).prev().attr("href");
        panelId = panelId.substring(1);
        var indexOf = listTabs.IsOfArrayReIdTAB(panelId);
        if (indexOf != -1) {
            listTabs[indexOf].IdReal = -1;
            listTabs[indexOf].idTab = null;
            listTabs[indexOf].isLoaded = null;
        }

        if ($tabs.tabs("length") == 0)
            $('#tab').css('display', 'none');
    });

    $("#tab").tabs('paging', { cycle: true, nextButton: '&gt;&gt;', prevButton: '&lt;&lt;' });

    //#}

    if (getCookie("tabss") != "") {
        //        var tabrestore = getCookie("tabss");
        //        var s = tabrestore.split(",");
        //        for (var i = 0; i < s.length; i++) {
        //            //if (s[i] != "")
        //            //addTabinCookie(s[i]);
        //        }
    }

    if (listTabs.length > 0) {
        //$tabs.tabs('select', '#' + listTabs[listTabs.length - 1].idTab);
        //$('#tab').tabs("option", "selected", listTabs.length - 1); ;
    }

    infoWindow = new google.maps.InfoWindow;
    myListener = google.maps.event.addListener(map, 'tilesloaded', function () {
        $.ajax({
            type: 'GET',
            url: "/RealEstate/GetMapToolbar",
            data: "",
            dataType: 'html',
            success: function (data) {
                $('#mapToolbarDiv').html(data);
            }, //end success: function(data)
            complete: function () {
                $.ajax({
                    type: 'GET',
                    url: "/RealEstate/GetMapPagingControl",
                    data: "",
                    dataType: 'html',
                    success: function (data) {
                        $('#mapPagingDiv').html(data);
                    }, //end success: function(data)
                    complete: function () {
                        $.ajax({
                            type: 'GET',
                            cache: false,
                            timeOut: 30000,
                            async: true,
                            url: '/RealEstate/GetMapZoomControl',
                            dataType: 'html',
                            success: function (data) {
                                $('#zoomUtilityDiv').html(data);
                            }
                        });
                        LoadREinMapViewportWithBlocks(getTypeREchecked(), getPurposeREchecked());
                    }
                });  //end $.ajax(
            }
        });  //end $.ajax(
        //remove event sự kiện title_loaded (nếu không sẽ load 2 lần)
        google.maps.event.removeListener(myListener);
        google.maps.event.addListener(map, 'resize', function () {
            ModuleZoomModel.CurrentZoomLevel = map.getZoom();
            var currentZoomType = ModuleZoomModel.GetTypeOfLevelZoomMap(ModuleZoomModel.CurrentZoomLevel);
            if (currentZoomType == ModuleZoomModel.MapAtDistrict) {
                //LoadREinMapViewport(getTypeREchecked(), getPurposeREchecked(), pageCurrentOnMap, pageSizeOnMap);
                LoadREinMapViewportWithBlocks(getTypeREchecked(), getPurposeREchecked());
                //có lên fluster vào đây không, có thể gay dơ khi drap map
            }
            else if (currentZoomType == ModuleZoomModel.MapAtProvince) {
                //PopMarkerDistrictInStack();
                // Load Marker District in view port
                //LoadDistrictInMapViewport();
                LoadDistrictinMapViewportWithBlocks(false, getTypeREchecked(), getPurposeREchecked());
            }
            else if (currentZoomType == ModuleZoomModel.MapAtNation) {
                // Load Marker Province in view port
                //LoadProvinceInMapViewport();
                //LoadAllREsInProvinces(false, getTypeREchecked(), getPurposeREchecked());
            }
        });
    });

    //google map - ThanhNT{

    // Thay đổi color của text đi với zoom tool khi thay đổi loại bản đồ
    google.maps.event.addListener(map, 'maptypeid_changed', function () {
        ModuleZoomModel.CurrentZoomLevel = map.getZoom();
        if (map.getMapTypeId() == google.maps.MapTypeId.ROADMAP) {
            $('#div_text_slider_map a').css('color', '#6D8ACC');
            $("#slider-vertical").slider('option', 'max', 21);

            $("#slider-vertical").slider('option', 'value', ModuleZoomModel.CurrentZoomLevel);
        }
        else {
            $('#div_text_slider_map a').css('color', 'White');
            $("#slider-vertical").slider('option', 'max', 19);

            $("#slider-vertical").slider('option', 'value', ModuleZoomModel.CurrentZoomLevel);

        }
    });

    google.maps.event.addListener(map, 'dblclick', function () {
        //ModuleZoomModel.CurrentZoomLevel = map.getZoom();
        $("#slider-vertical").slider('option', 'value', ModuleZoomModel.CurrentZoomLevel + 1);

    });

    // Thay đổi giá trị trên thanh zoom tool khi zoom bằng double click
    google.maps.event.addListener(map, 'zoom_changed', function () {
        ModuleZoomModel.CurrentZoomLevel = map.getZoom();
        //alert(currentZoom);
        myListener = google.maps.event.addListener(map, 'bounds_changed', function () {
            //Se load them bds khi zoom bản đồ bé đi
            if (ModuleZoomModel.PreviousZoomLevel > ModuleZoomModel.CurrentZoomLevel)
                isReLoadMap = true;

            var previousZoomType = ModuleZoomModel.GetTypeOfLevelZoomMap(ModuleZoomModel.PreviousZoomLevel); // getTypeOfPreviousMap();
            var currentZoomType = ModuleZoomModel.GetTypeOfLevelZoomMap(ModuleZoomModel.CurrentZoomLevel);
            // mức zoom xem chi tiết cac bđs trong mot quan/huyen
            if (currentZoomType == ModuleZoomModel.MapAtDistrict) {
                // Hiển thị phân trang theo bản đồ
                //$('#div_tab_rightPagingSelect').css('display', 'block');
                if (previousZoomType == ModuleZoomModel.MapAtNation) {
                    isReLoadMap = true;
                    hideMarkerProvince();
                }
                else if (previousZoomType == ModuleZoomModel.MapAtProvince) {
                    isReLoadMap = true;
                    hideMarkerDistrict();
                }
                else if (previousZoomType == ModuleZoomModel.MapAtDistrict) {
                    isReLoadMap = true;
                }
                $('span#titleRes').html('Danh sách bất động sản');
                displayMarkerRE(isReLoadMap);

            }
            // mức zoom xem ở tong so bds trong cac quan thuoc tinh
            else if (currentZoomType == ModuleZoomModel.MapAtProvince) {
                // Ẩn phân trang theo bản đồ
                //$('#div_tab_rightPagingSelect').css('display', 'none');

                if (previousZoomType == ModuleZoomModel.MapAtNation) {
                    isReLoadMap = true;
                    hideMarkerProvince();

                }
                else if (previousZoomType == ModuleZoomModel.MapAtProvince) {
                    isReLoadMap = true;

                }
                else if (previousZoomType == ModuleZoomModel.MapAtDistrict) {
                    isReLoadMap = true;
                    hideMarkerRE();

                }
                $('span#titleRes').html('Bất động sản trong quận/huyện');
                displayMarkerDistrict(isReLoadMap);


            }
            // mức zoom xem ở tỉnh/ thành pho
            else if (currentZoomType == ModuleZoomModel.MapAtNation) {
                // Ẩn phân trang theo bản đồ
                //$('#div_tab_rightPagingSelect').css('display', 'none');

                if (previousZoomType == ModuleZoomModel.MapAtNation) {
                    isReLoadMap = true;
                }
                else if (previousZoomType == ModuleZoomModel.MapAtProvince) {
                    isReLoadMap = true;
                    hideMarkerDistrict();
                }
                else if (previousZoomType == ModuleZoomModel.MapAtDistrict) {
                    isReLoadMap = true;
                    hideMarkerRE();
                }
                $('span#titleRes').html('Bất động sản trong tỉnh/thành phố ');
                displayMarkerProvince(isReLoadMap);


            }


            ModuleZoomModel.PreviousZoomLevel = ModuleZoomModel.CurrentZoomLevel;
            isReLoadMap = false;
            google.maps.event.removeListener(myListener);
        });
    });

    //}

    //Xử lý sự kiện khi người dùng drag map. tọa độ Viewport được gửi về sever
    google.maps.event.addListener(map, 'dragend', function () {
        isReLoadMap = true;
        ModuleZoomModel.CurrentZoomLevel = map.getZoom();
        var currentZoomType = ModuleZoomModel.GetTypeOfLevelZoomMap(ModuleZoomModel.CurrentZoomLevel);
        if (currentZoomType == ModuleZoomModel.MapAtDistrict) {
            //LoadREinMapViewport(getTypeREchecked(), getPurposeREchecked(), pageCurrentOnMap, pageSizeOnMap);
            LoadREinMapViewportWithBlocks(getTypeREchecked(), getPurposeREchecked());
            //có lên fluster vào đây không, có thể gay dơ khi drap map
        }
        else if (currentZoomType == ModuleZoomModel.MapAtProvince) {
            //PopMarkerDistrictInStack();
            // Load Marker District in view port
            //LoadDistrictInMapViewport();
            LoadDistrictinMapViewportWithBlocks(false, getTypeREchecked(), getPurposeREchecked());
        }
        else if (currentZoomType == ModuleZoomModel.MapAtNation) {
            // Load Marker Province in view port
            //LoadProvinceInMapViewport();
        }
    });

});                   //end $(document).ready(function()

function ReloadMarkerReInMap(typeREs, purposeREs) {
    $('div#listRe').empty();
    $('span.numberRes').html('');
    numberRes = 0;
    for (var i = 0; i < blocks.length; i++) {
        var markerInBlocks = blocks[i].REMarkersOfBlock;
        for (var j = 0; j < markerInBlocks.length; j++) {
            if (typeREs.toString().indexOf("*" + markerInBlocks[j].InfoOfMarker["TypeId"].toString() + "*") != -1 &&
                            purposeREs.toString().indexOf("*" + markerInBlocks[j].InfoOfMarker["PurposeId"].toString() + "*") != -1) {
                if (markerInBlocks[j].Marker.getMap() != map) {
                    markerInBlocks[j].Marker.setMap(map);
                }
                $('div#listRe').append(ConvertToHtmlFromInfoRE(markerInBlocks[j].InfoOfMarker, blocks[i].BlockID));
                numberRes = numberRes + 1;
                $('span.numberRes').html('(' + numberRes+ ')');
            }
            else {
                if (markerInBlocks[j].Marker.getMap() != null) {
                    markerInBlocks[j].Marker.setMap(null);
                } 
            }

        }
    }
}


//Ẩn hiện marker: bất động sản, quận/huyện, tỉnh/thành phố - Thanh NT{
function hideMarkerRE() {
    if(infoWindow != null) infoWindow.close();
    for (var i = 0; i < blocks.length; i++) {
        var markerInBlocks=blocks[i].REMarkersOfBlock;
        for (var j = 0; j < markerInBlocks.length; j++) {
            if (markerInBlocks[j].Marker.getMap() != null) {
                markerInBlocks[j].Marker.setMap(null);
            }
        }
    }
    
}

function displayMarkerRE(isReload) {
    for (var i = 0; i < blocks.length; i++) {
        var markerInBlocks = blocks[i].REMarkersOfBlock;
        for (var j = 0; j < markerInBlocks.length; j++) {
            if (getTypeREchecked().indexOf("*" + markerInBlocks[j].InfoOfMarker["TypeId"].toString() + "*") != -1 &&
                            getPurposeREchecked().indexOf("*" + markerInBlocks[j].InfoOfMarker["PurposeId"].toString() + "*") != -1) {
                if (markerInBlocks[j].Marker.getMap() != map) {
                    markerInBlocks[j].Marker.setMap(map);
                }
            }
           
        }
    }

    if (isReload) {
        //var temp = map.getZoom();
        //Load new Marker RE in view port
        //LoadREinMapViewport(getTypeREchecked(), getPurposeREchecked(), pageCurrentOnMap, pageSizeOnMap);
        LoadREinMapViewportWithBlocks(getTypeREchecked(), getPurposeREchecked());
    }
}

function hideMarkerDistrict() {
    for (var i = 0; i < blockDistricts.length; i++) {
        var markerInBlocks = blockDistricts[i].DistrictsOfBlock;
        for (var j = 0; j < markerInBlocks.length; j++) {
            if (markerInBlocks[j].Marker.getMap() != null) {
                markerInBlocks[j].Marker.setMap(null);
            }
        }
    }
}

function displayMarkerDistrict(isReload) {
    for (var i = 0; i < blockDistricts.length; i++) {
        var markerInBlocks = blockDistricts[i].DistrictsOfBlock;
        for (var j = 0; j < markerInBlocks.length; j++) {
            if (markerInBlocks[j].Marker.getMap() != map) {
                markerInBlocks[j].Marker.setMap(map);
            }
        }
    }

    if (isReload) {
        //Load new Marker District in view port
        //LoadDistrictInMapViewport();
        LoadDistrictinMapViewportWithBlocks(false, getTypeREchecked(), getPurposeREchecked());
    }
    
}

function hideMarkerProvince() {
    for (var i = 0; i < markerProvince.length; i++) {
        if (markerProvince[i].Marker.getMap() != null) {
            markerProvince[i].Marker.setMap(null);
        }
    }
}

function displayMarkerProvince(isReload) {
    for (var i = 0; i < markerProvince.length; i++) {
        if (markerProvince[i].Marker.getMap() != map) {
            markerProvince[i].Marker.setMap(map);
        }
    }

    if (isReload) {
        //Load new Province District in view port
        LoadAllREsInProvinces(false, getTypeREchecked(), getPurposeREchecked());
    }
//    else 
//    if (markerProvince.length == 0) {
//        //Load new Marker Province in view port
//        //LoadProvinceInMapViewport();
//        LoadAllREsInProvinces(false, getTypeREchecked(), getPurposeREchecked());
//    }
}

//}

function disableLink() {

    $("#tab-right").tabs("option", "selected", 0);
    $('#next').addClass('inactive');
    $('#disable-next').removeClass('inactive');
    $('#preview').addClass('inactive');
    $('#disable-preview').removeClass('inactive');

    $('.addCompare').click(addCompare);
}

function setTab() {
    $tabs.tabs('select', listTabs.length - 1);

}
//bind infoWindow vào marker
function bindInfoWindow(marker, map, infoWindow, html) {
    google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setContent(html);
        infoWindow.open(map, marker);
        map.setCenter(marker.getPosition());
    });
};

//Tự động kích hoạt sự kiện click trên marker
function trigger(idReal) {
    var index = markers.IsOfArrayRe(idReal);
    google.maps.event.trigger(markers[index].Marker, 'click');

}

function triggerResize() {
    google.maps.event.trigger(map, 'resize');
}
function triggerInBlock(blockID, RealID) {
    var indexOfBlock = blocks.IsOfArrayBlock(blockID.toString());
    if (indexOfBlock != -1) {
        var indexOfReal = blocks[indexOfBlock].REMarkersOfBlock.IsOfArrayRe(RealID);
        if (indexOfReal != -1) {
            google.maps.event.trigger(blocks[indexOfBlock].REMarkersOfBlock[indexOfReal].Marker, 'click');
        }
    }
}
function callback(object, eventType) {
    return function() {
        google.maps.event.trigger(object, eventType);
    }
};

//Trả lại index của phần tử nếu giá trị truyền vào được tìm thấy trong mảng
//Trả lại -1 nếu nó không tồn tại
Array.prototype.inArray = function(value, caseSenitive) {
    var i;
    for (i = 0; i < this.length; i++) {
        if (caseSenitive) {
            if (this[i].toLowCase() == value.toLowCase()) { return true; }
        }
        else {
            var latlng = this[i].getPosition();
            if (latlng.equals(value.getPosition())) { return i; }
        }

    }
    return -1;

};

/*--------------------------------Xử lý phần hiển đánh dấu 1 bất động sản và đường biên của nó-------------------------*/
var pathCoordinates = [];
var polyOptions;
var poly;
var coordinate = "";

function DrawPolygon(select) {
    switch (select) {
        case 0:
            pathCoordinate = new google.maps.MVCArray();

            polyOptions = {
                path: pathCoordinates,
                strokeColor: '#FF0000',
                strokeOpacity: 1.0,
                strokeWeight: 1.5
            }

            poly = new google.maps.Polygon(polyOptions);
            poly.setMap(mapRE);
            break;
        case 1:
            break;
    }
}

//Load đánh dấu của một bất động sản khi hiển thị chi tiết 
function MarkREintoMap(centerLat, centerLng, mapPosition) {
    DrawPolygon(0);
    //addMarketRE(centerLat, centerLng);

    //marker.setDraggable(true);

    var point = new google.maps.LatLng(centerLat, centerLng);
    var icon = "../../Content/images/RedHouse.png";

    
    marketRE = new google.maps.Marker({
        map: mapRE,
        position: point,
        icon: icon
    });


    mapRE.setZoom(18);
    mapRE.setCenter(point);
    
    
    var path = poly.getPath();

    if (mapPosition != null) {
        var arrayLatLng = mapPosition;
        //Khi lay tu csdl co khoang trang
        arrayLatLng = arrayLatLng.replace(", ", ",");
        var latLngs = arrayLatLng.split(",");

        //    for (var i = 0; i < latLngs.lenght-1; i++) 
        $.each(latLngs, function(index, item) {
            if (item != "") {

                var point = item.split(" ");

                var latLng = new google.maps.LatLng(point[1], point[0]);

                path.insertAt(pathCoordinate.length, latLng);
            }
        });
    }
    
    
}


//Phần hiển thị các hạ tầng xung quanh.
var markerHouse;
var infoWindowHouse;
var coordinate = "";

var roadCoordinates = [];
var polyRoad;

var idReal;

var listSocieties;

var idSociety;

// #Đánh dáu hạ tầng xã hội lên bản đô{
function MarkSocietyOfREIntoMap(realLat,realLng,TypeList,NameList,LatList,LngList,RoadCoorList,LengthList) {
    //var SociId = real.IdSocieties.split("/");

    var names = NameList.split("/");
    var types = TypeList.split("/");
    var lat = LatList.split("/");
    var lng = LngList.split("/");

    var length = LengthList.split("/");
    
    //Chua cac id cuar road ban dau 
    //var roadIds = real.IdRoad.split("/");

    var roads;
    roads = RoadCoorList.split("/");
//    if (real.RoadLinkSociety != null) {
//        roads = real.RoadLinkSociety.split("/");
//    }
//    else roads = null;

    //    for(var i=0;i< name.length-1;i++)
    $.each(names, function(index, item) {
    if (item != "")
            DrawSocietyLinkReal(realLat,realLng,item, types[index], lat[index], lng[index], roads[index],length[index]);
        }
    );
}

function DrawSocietyLinkReal(realLat,realLng,name, type, lat, lng, road,length) {
    var societyInfo = new Society();
    societyInfo.type = type;
    societyInfo.name = name;
    societyInfo.lat = lat;
    societyInfo.lng = lng;
    //societyInfo.index = listSocieties.length;

    //societyInfo.IdSoci = IdSoci;

    //societyInfo.IdRoad = IdRoad;

    //Khởi tạo đường bằng polyline
    roadCoordinates = new google.maps.MVCArray();

    var polyOptions = {
        path: roadCoordinates,
        strokeColor: '#ff0000',
        strokeOpacity: 1.0,
        strokeWeight: 1.3
    }
    polyRoad = new google.maps.Polyline(polyOptions);

    polyRoad.setMap(mapRE);

    var icon = "../../Content/images/entertain.png";
    
    //Danh dau hạ tầng xã hội
    var point = new google.maps.LatLng(lat, lng);
    markerHouse = new google.maps.Marker({
        draggable: false,
        map: mapRE,
        position: point,
        icon: icon
    });

    //thêm điểm đầu tiên là Bđs
    point = new google.maps.LatLng(realLat, realLng);

    var path = polyRoad.getPath();
    path.insertAt(roadCoordinates.length, point);

    //Vẽ đường đến HTXH
    if (road != null) {
        road = road.replace(", ", ",");
        var Points = road.split(",");

        for (var i = 0; i < Points.length; i++) {
            var latlngs = Points[i].split(" ");
            point = new google.maps.LatLng(latlngs[1], latlngs[0]);

            var path = polyRoad.getPath();
            path.insertAt(roadCoordinates.length, point);
        }

    }
    
    
    //Thêm infoWWindow cho ha txh
    var htmlContent = '<div id="infoDisplay"><p><h1>' + type + '&nbsp;' + name + '&nbsp;:' + Math.round(parseFloat(length))+ '&nbsp;m</h1></p></div>';

    var infoLink = new google.maps.InfoWindow;
    infoLink.setContent(htmlContent);

    infoLink.open(mapRE, markerHouse);

    infoLink.close();
//    var society = new RoadLinkSociety(markerHouse, null, poly, infoLink, road);
//    society.SocietyInfo = societyInfo;

//    listSocieties.push(society);

    google.maps.event.addListener(markerHouse, 'click', function() {

//        for (var i = 0; i < listSocieties.length; i++) {
//            var window = listSocieties[i].infoWindow;
//            if (window != null) window.close();
//        }

        infoLink.open(this.getMap(), this);

    });
    polyRoad = null;

}

//#}


/*-------------------------------------Hết phần xử lý hien chi tiet mot bds------------------------------------------*/
 
/*-----------------------------------------Phan xu ly ban do lon-----------------------------------------------------*/
//Load tất cả các bất động sản khi drap map. Load theo cach cu (load dong loat)
function LoadREinMapViewport(typeREs, purposeREs, pageNumber, itemsPerPage) {

    // Hiển thị phân trang theo bản đồ
    $('#div_tab_rightPagingSelect').css('display', 'block');

    //Lấy tạo độ hai góc của bản đồ
    var bounds = map.getBounds();
    var sw = bounds.getSouthWest();
    var ne = bounds.getNorthEast();
    //infoWindow.close();

    $.ajax({
        type: 'POST',
        url: "/RealEstate/GetREsInViewport",
        data: "neLat=" + ne.lat() + "&neLng=" + ne.lng() + "&swLat=" + sw.lat() + "&swLng=" + sw.lng() + "&typeREs=" + typeREs + "&purposeREs=" + purposeREs + "&pageNumber=" + pageNumber + "&itemsPerPage=" + itemsPerPage,
        dataType: 'json',
        success: function (data) {

            totalPagesOnMap = data.total;
            if (data.total > 0) {
                var options = '';
                for (i = 1; i <= data.total; i++) {
                    if (pageCurrentOnMap != 0 && i == pageCurrentOnMap) {
                        options += "<option selected value='" + i + "'>" + i + "/" + data.total + "</option>";
                    }
                    else {
                        options += "<option  value='" + i + "'>" + i + "/" + data.total + "</option>";
                    }
                }
                $("#mapPagingSelect").empty().removeAttr('disabled').html(options);
            }
            else {
                $("#mapPagingSelect").attr("disabled", true).html('');
            }


            var content = "";
            $('#listRe').empty();

            list = null;
            if (data.list != null) {
                list = data.list;

                curPage = 1;

                //Số lượng bản ghi lấy ra được
                length = data.list.length;
                var options = '';
                for (i = 1; i <= Math.round(length / sizePage + 0.5); i++) {
                    options += "<option  value='" + i + "'>" + i + "/" + Math.round(length / sizePage + 0.5) + "</option>";
                }
                $("#tab-rightPagingSelect").empty().removeAttr('disabled').html(options);


                $.each(data.list, function (index, item) {

                    /*------------------------------------------------------------*/
                    //Tạo marker và add lên map. Co

                    var point = new google.maps.LatLng(item["CenterLatitude"], item["CenterLongitude"]);


                    var address = item["DistrictName"] + ',' + item["ProvinceName"];
                    var param = "'" + address + "'";

                    var date = item["CreatedOn"].split(" ");

                    // html for list view
                    var indexRE = listIdRE.indexOf(item["ReID"] + "-" + item["TypeId"]);

                    var htmlraw = "";
                    if (indexRE < 0)
                        htmlraw = '<div class="row-list"  onclick="trigger(' + item["ReID"] + ');"><div class="row-left"><img alt="BDS image" src="' + item["ImageLink"] + '" /></div>' +
                                 '<div class="row-right"><div><span>Số ' + item["SoNha"] + ', ' + item["Hem"] + ', ' + item["Nghach"] + ', ' + item["Ngo"] + ', ' + item["StreetAddress"] + ', ' + address + '</span></div>' +
                                 '<div><span><div class="item_title">Loại:</div> ' + item["TypeName"] + ' - ' + item["Purpose"] + '</span></div>' +
                                 '<div class="field-info"><div class="item_title">Giá:</div>' + item["Price"] + ' ' + item["PriceCode"] + '</div>' +
                                 '<div class="field-info"><div class="item_title">Ngày đăng:</div> ' + date[0] + '</div>' +
                                 '<div ><a href="#tab" onclick="addTab(' + item["ReID"] + ',' + param + ',' + item["TypeId"] + ');">Chi tiết</a>&nbsp;|&nbsp;<a href="#tab-right" class="addCompare" id="aNTTCompareTTN' + item["ReID"] + "-" + item["TypeId"] + '">So sánh</a></div></div></div>';
                    else
                        htmlraw = '<div class="row-list"  onclick="trigger(' + item["ReID"] + ');"><div class="row-left"><img alt="BDS image" src="' + item["ImageLink"] + '" /></div>' +
                                 '<div class="row-right"><div><span>Số ' + item["SoNha"] + ', ' + item["Hem"] + ', ' + item["Nghach"] + ', ' + item["Ngo"] + ', ' + item["StreetAddress"] + ', ' + address + '</span></div>' +
                                 '<div><span><div class="item_title">Loại:</div> ' + item["TypeName"] + ' - ' + item["Purpose"] + '</span></div>' +
                                 '<div class="field-info"><div class="item_title">Giá:</div>' + item["Price"] + ' ' + item["PriceCode"] + '</div>' +
                                 '<div class="field-info"><div class="item_title">Ngày đăng:</div> ' + date[0] + '</div>' +
                                 '<div ><a href="#tab" onclick="addTab(' + item["ReID"] + ',' + param + ',' + item["TypeId"] + ');">Chi tiết</a>&nbsp;|&nbsp;<a href="#compare-tab" class="viewCompare" id="aNTTCompareTTN' + item["ReID"] + "-" + item["TypeId"] + '">Xem so sánh</a></div></div></div>';


                    // html for map
                    //                var html = '<li><div href="#tab" id="' + item["ID"] + '"><h2>' + item["StreetAddress"] + '</h2><p>' + item["Header"] +
                    //                '</p><p>' + item["Price"] + '</p><a href="#tab" style="float:right; onclick="addTab(' + item["ReID"] + ');">Details</a></div></li>';
                    var html = '<div class="row-list" style="height:85px;" ><div class="row-left-infowindow"><img alt="BDS image" src="' + item["ImageLink"] + '" /></div>' +
                             '<div class="row-right-infowindow"><div><span>Số ' + item["SoNha"] + ', ' + item["Hem"] + ', ' + item["Nghach"] + ', ' + item["Ngo"] + ', ' + item["StreetAddress"] + ', ' + address + '</span></div>' +
                             '<div><span>Loại BĐS: ' + item["TypeName"] + '</span></div>' +
                             '<div class="field-info">Giá: ' + item["Price"] + ' ' + item["PriceCode"] + '</div>' +
                             '<div class="field-info">Ngày đăng: ' + date[0] + '</div>' +
                             '<div ><div class="purpose-info">' + item["Purpose"] + '</div><a href="#tab" onclick="addTab(' + item["ReID"] + ',' + param + ',' + item["TypeId"] + ');">Chi tiết</a></div></div></div>';

                    //var icon = new google.maps.MarkerImage("http://localhost:4290/image/heart.png", new google.maps.Size(20, 32));

                    var icon = "../../Content/images/RedHouse.png";
                    if (item["TypeImage"] != null && item["TypeImage"] != "") {
                        icon = item["TypeImage"];
                    }
                    var shadow = "../../Content/images/shadow.png";

                    //Kiểm tra xem markerRe đã có trong mảng chưa
                    var indexOf = markers.IsOfArrayRe(item["ReID"]);
                    if (indexOf == -1) {

                        var markerRe = new google.maps.Marker({
                            //map: map,
                            position: point,
                            icon: icon

                        });

                        markerRe.setMap(map);
                        //fluster.addMarker(markerRe);

                        bindInfoWindow(markerRe, map, infoWindow, html);

                        var rem = new RealEstateMarkers(markerRe, item["ReID"]);
                        markers.push(rem);
                    } else {

                        //a.onclick = callback(markers[indexOf], 'click');

                    }

                    /*--------------------------------------------------------------*/
                    //Tạo nội dung html trong sidebar
                    if (index < sizePage)
                    //                    content = content + '<li><div  onclick="trigger(' + item["ID"] + ');"><h2>' + item["StreetAddress"] + '</h2><p>' + item["Header"] +
                    //                    '</p><p>' + item["Price"] + '</p><a href="#tab" style="float:left;" onclick="addTab(' + item["ID"] + ');">Details</a></div></li>';
                        content = content + htmlraw;

                }); //end $.each(data, function(index, item)

                $('#listRe').html(content);

                $('#next').removeClass('inactive');
                $('#disable-next').addClass('inactive');


                if (length <= sizePage) {
                    $('#next').addClass('inactive');
                    $('#disable-next').removeClass('inactive');
                    $('#preview').addClass('inactive');
                    $('#disable-preview').removeClass('inactive');
                }

                $('.addCompare').click(addCompare);
                $('.viewCompare').click(viewCompare);
            } //end if (data.list != null)
        }   //end success: function(data) 
    });                          //end $.ajax(

}

var size_block = 0.015;
var numberRes = 0;
function LoadREinMapViewportWithBlocks(typeREs, purposeREs) {
   
    //Lấy tạo độ hai góc của bản đồ
    var bounds = map.getBounds();
    var sw = bounds.getSouthWest();
    var ne = bounds.getNorthEast();

    var x1 = Math.round(ne.lng() / size_block - 0.5);
    var y1 = Math.round(ne.lat() / size_block - 0.5);
    var x2 = Math.round(sw.lng() / size_block - 0.5);
    var y2 = Math.round(sw.lat() / size_block - 0.5);

    $("div#listRe").empty();
    $('span.numberRes').html('');
    numberRes = 0;
    for (var i = 0; i <= x1 - x2; i++)
        for (var j = 0; j <= y1 - y2; j++) {
            var blockid = (x2 + i).toString() + '/' + (y2 + j).toString();
            LoadREinBlock(blockid, typeREs, purposeREs);
        }
    }

function ConvertToHtmlFromInfoRE(item, blockID) {
        var address = item["DistrictName"] + ',' + item["ProvinceName"];
        var param = "'" + address + "'";
        var date = item["CreatedOn"].split(" ");

        //Kiem tra xem re da co trong ds so sanh chua.
        var indexRE = listIdRE.indexOf(item["ReID"] + "-" + item["TypeId"]);

        var htmlraw = "";
        // html for list view
        if (indexRE < 0)
            htmlraw = '<div class="row-list"  onclick="triggerInBlock(\'' + blockID.toString() + '\',' + item["ReID"] + ');"><div class="row-left"><img alt="BDS image" src="' + item["ImageLink"] + '" /></div>' +
                                 '<div class="row-right"><div><span>Số ' + item["SoNha"] + ', ' + item["Hem"] + ', ' + item["Nghach"] + ', ' + item["Ngo"] + ', ' + item["StreetAddress"] + ', ' + address + '</span></div>' +
                                 '<div><span><div class="item_title">Loại:</div> ' + item["TypeName"] + ' - ' + item["Purpose"] + '</span></div>' +
                                 '<div class="field-info"><div class="item_title">Giá:</div>' + item["Price"] + ' ' + item["PriceCode"] + '</div>' +
                                 '<div class="field-info"><div class="item_title">Ngày đăng:</div> ' + date[0] + '</div>' +
                                 '<div ><a href="#tab" onclick="addTab(' + item["ReID"] + ',' + param + ',' + item["TypeId"] + ');">Chi tiết</a>&nbsp;|&nbsp;<a href="#tab-right" class="addCompare" id="aNTTCompareTTN' + item["ReID"] + "-" + item["TypeId"] + '">So sánh</a></div></div></div>';
        else
            htmlraw = '<div class="row-list"  onclick="triggerInBlock(' + blockID.toString() + ',' + item["ReID"] + ');"><div class="row-left"><img alt="BDS image" src="' + item["ImageLink"] + '" /></div>' +
                                 '<div class="row-right"><div><span>Số ' + item["SoNha"] + ', ' + item["Hem"] + ', ' + item["Nghach"] + ', ' + item["Ngo"] + ', ' + item["StreetAddress"] + ', ' + address + '</span></div>' +
                                 '<div><span><div class="item_title">Loại:</div> ' + item["TypeName"] + ' - ' + item["Purpose"] + '</span></div>' +
                                 '<div class="field-info"><div class="item_title">Giá:</div>' + item["Price"] + ' ' + item["PriceCode"] + '</div>' +
                                 '<div class="field-info"><div class="item_title">Ngày đăng:</div> ' + date[0] + '</div>' +
                                 '<div ><a href="#tab" onclick="addTab(' + item["ReID"] + ',' + param + ',' + item["TypeId"] + ');">Chi tiết</a>&nbsp;|&nbsp;<a href="#compare-tab" class="viewCompare" id="aNTTCompareTTN' + item["ReID"] + "-" + item["TypeId"] + '">Xem so sánh</a></div></div></div>';

        return htmlraw

    }
//Load tat ca cac bat dong san trong mot block
function LoadREinBlock(blockID,typeREs, purposeREs) {

    var indexOfBlock = blocks.IsOfArrayBlock(blockID);
    var indexNext = blocks.length;
    //var oScroll = $('#show');
    if (indexOfBlock == -1) {
        
        var block = new Block(blockID);
        blocks.push(block);
        $.ajax({
            type: 'POST',
            url: "/RealEstate/GetREsInBlock",
            data: "blockid=" + blockID + "&index=" + indexNext + "&typeREs=" + "*1*2*3*4*5*6*7*8*9*10*11*" + "&purposeREs=" + "*1*2*3*4*5*",
            dataType: 'json',
            success: function (data) {

                var markersOfBlock = [];
                if (data.list != null) {

                    //Số lượng bản ghi lấy ra được
                    length = data.list.length;
                    $.each(data.list, function (index, item) {
                        /*------------------------------------------------------------*/
                        //Tạo marker và add lên map. Co
                        var point = new google.maps.LatLng(item["CenterLatitude"], item["CenterLongitude"]);
                        var address = item["DistrictName"] + ',' + item["ProvinceName"];
                        var param = "'" + address + "'";
                        var date = item["CreatedOn"].split(" ");

                        //Kiem tra xem re da co trong ds so sanh chua.
                        var indexRE = listIdRE.indexOf(item["ReID"] + "-" + item["TypeId"]);

                        var htmlraw = "";
                        // html for list view
                        if (indexRE < 0)
                            htmlraw = '<div class="row-list"  onclick="triggerInBlock(\'' + blockID.toString() + '\',' + item["ReID"] + ');"><div class="row-left"><img alt="BDS image" src="' + item["ImageLink"] + '" /></div>' +
                                 '<div class="row-right"><div><span>Số ' + item["SoNha"] + ', ' + item["Hem"] + ', ' + item["Nghach"] + ', ' + item["Ngo"] + ', ' + item["StreetAddress"] + ', ' + address + '</span></div>' +
                                 '<div><span><div class="item_title">Loại:</div> ' + item["TypeName"] + ' - ' + item["Purpose"] + '</span></div>' +
                                 '<div class="field-info"><div class="item_title">Giá:</div>' + item["Price"] + ' ' + item["PriceCode"] + '</div>' +
                                 '<div class="field-info"><div class="item_title">Ngày đăng:</div> ' + date[0] + '</div>' +
                                 '<div ><a href="#tab" onclick="addTab(' + item["ReID"] + ',' + param + ',' + item["TypeId"] + ');">Chi tiết</a>&nbsp;|&nbsp;<a href="#tab-right" class="addCompare" id="aNTTCompareTTN' + item["ReID"] + "-" + item["TypeId"] + '">So sánh</a></div></div></div>';
                        else
                            htmlraw = '<div class="row-list"  onclick="triggerInBlock(' + blockID.toString() + ',' + item["ReID"] + ');"><div class="row-left"><img alt="BDS image" src="' + item["ImageLink"] + '" /></div>' +
                                 '<div class="row-right"><div><span>Số ' + item["SoNha"] + ', ' + item["Hem"] + ', ' + item["Nghach"] + ', ' + item["Ngo"] + ', ' + item["StreetAddress"] + ', ' + address + '</span></div>' +
                                 '<div><span><div class="item_title">Loại:</div> ' + item["TypeName"] + ' - ' + item["Purpose"] + '</span></div>' +
                                 '<div class="field-info"><div class="item_title">Giá:</div>' + item["Price"] + ' ' + item["PriceCode"] + '</div>' +
                                 '<div class="field-info"><div class="item_title">Ngày đăng:</div> ' + date[0] + '</div>' +
                                 '<div ><a href="#tab" onclick="addTab(' + item["ReID"] + ',' + param + ',' + item["TypeId"] + ');">Chi tiết</a>&nbsp;|&nbsp;<a href="#compare-tab" class="viewCompare" id="aNTTCompareTTN' + item["ReID"] + "-" + item["TypeId"] + '">Xem so sánh</a></div></div></div>';


                        // html for map
                        var html = '<div class="row-list" style="height:85px;" ><div class="row-left-infowindow"><img alt="BDS image" src="' + item["ImageLink"] + '" /></div>' +
                             '<div class="row-right-infowindow"><div><span>Số ' + item["SoNha"] + ', ' + item["Hem"] + ', ' + item["Nghach"] + ', ' + item["Ngo"] + ', ' + item["StreetAddress"] + ', ' + address + '</span></div>' +
                             '<div><span><div class="item_title">Loại: </div>' + item["TypeName"] + ' - ' + item["Purpose"] + '</span></div>' +
                             '<div class="field-info"><div class="item_title">Giá: </div>' + item["Price"] + ' ' + item["PriceCode"] + '</div>' +
                             '<div class="field-info"><div class="item_title">Ngày đăng: </div>' + date[0] + '</div>' +
                             '<div ><a href="#tab" onclick="addTab(' + item["ReID"] + ',' + param + ',' + item["TypeId"] + ');">Chi tiết</a></div></div></div>';

                        //var icon = new google.maps.MarkerImage("http://localhost:4290/image/heart.png", new google.maps.Size(20, 32));

                        var icon = "../../Content/images/RedHouse.png";
                        if (item["TypeImage"] != null && item["TypeImage"] != "") {
                            icon = item["TypeImage"];
                        }
                        var shadow = "../../Content/images/shadow.png";

                        //Kiểm tra xem markerRe đã có trong mảng cac bat dong san luu o client chưa
                        var indexOf = markersOfBlock.IsOfArrayRe(item["ReID"]);
                        if (indexOf == -1) {
                            var markerRe = new google.maps.Marker({
                                //map: map,
                                position: point,
                                icon: icon
                            });

                            if (typeREs.toString().indexOf("*" + item["TypeId"].toString() + "*") != -1 &&
                            purposeREs.toString().indexOf("*" + item["PurposeId"].toString() + "*") != -1) {
                                markerRe.setMap(map);
                                numberRes = numberRes + 1;
                                $('div#listRe').append(htmlraw);
                                $('span.numberRes').html('(' + numberRes + ')');
                            }
                            //fluster.addMarker(markerRe);
                            bindInfoWindow(markerRe, map, infoWindow, html);

                            var rem = new RealEstateMarkers(markerRe, item["ReID"]);
                            rem.InfoOfMarker = item;
                            markersOfBlock.push(rem);
                        }

                        //oScroll.tinyscrollbar_update();
                    }); //end $.each(data, function(index, item)

                    //$('#listRe').html(content);

                    $('.addCompare').click(addCompare);
                    $('.viewCompare').click(viewCompare);
                } //end if (data.list != null)
                blocks[data.index].REMarkersOfBlock = markersOfBlock;
            }   //end success: function(data) 
        });         //end $.ajax(
        
    } //end if ()
    else {
        var tempListMarkerRes = blocks[indexOfBlock].REMarkersOfBlock;
        $.each(tempListMarkerRes, function (index, item) {
            if (typeREs.toString().indexOf("*" + item.InfoOfMarker["TypeId"].toString() + "*") != -1 &&
                            purposeREs.toString().indexOf("*" + item.InfoOfMarker["PurposeId"].toString() + "*") != -1) {
                $('div#listRe').append(ConvertToHtmlFromInfoRE(item.InfoOfMarker, blocks[indexOfBlock].BlockID));
                numberRes = numberRes + 1;
                $('span.numberRes').html('('+numberRes +')');
            }
        });
    }

}
// Load marker district khi xem ở chế độ zoom của quận huyện
function LoadDistrictInMapViewport() {

    // Ẩn phân trang theo bản đồ
    //$('#div_tab_rightPagingSelect').css('display', 'none');

    //Lấy tạo độ hai góc của bản đồ
    var bounds = map.getBounds();
    var sw = bounds.getSouthWest();
    var ne = bounds.getNorthEast();

    $.ajax({
        type: 'POST',
        url: "/RealEstate/GetDistrictInViewPort",
        data: "neLat=" + ne.lat() + "&neLng=" + ne.lng() + "&swLat=" + sw.lat() + "&swLng=" + sw.lng(),
        dataType: 'json',
        success: function (data) {
            list = null;
            var content = "";

            if (data.list != null) {
                $.each(data.list, function (index, item) {

                    var point = new google.maps.LatLng(item["Lat"], item["Lng"]);
                    var icon = "../../Content/images/empty.png";

                    var indexOf = markerDistrict.IsOfArrayDistrict(item["ID"]);
                    if (indexOf == -1) {
                        var marker1 = new MarkerWithLabel({
                            position: point,
                            icon: icon,
                            //map:map,
                            title: item["Name"],
                            labelContent: item["NumberRealEstate"],
                            labelAnchor: new google.maps.Point(18, 40),
                            labelClass: "labelDistrict"
                        });

                        marker1.setMap(map);
                        google.maps.event.addListener(marker1, "click", function (e) {
                            focusDistrict(item["Lat"], item["Lng"]);
                        });
                        var rem = new DistrictMarker(marker1, item["ID"]); //IdDistrict
                        markerDistrict.push(rem);
                    } 
                    var html = "<div class='item_realestate_by_area'><a class='district' href='javascript:focusDistrict(" + item["Lat"] + "," + item["Lng"] + ")'>" + item["Name"] + "</a> : " + item["NumberRealEstate"] + " bất động sản.<div>";
                    content += html;

                }); //end $.each(data, function(index, item)

            } //end if (data.list != null)
            $('div#listRe').html(content);
        }   //end success: function(data) 
    });                           //end $.ajax(
}

var size_block_district = 0.15;
function LoadDistrictinMapViewportWithBlocks(isReload,typeREs, purposeREs) {

    //Lấy tạo độ hai góc của bản đồ
    var bounds = map.getBounds();
    var sw = bounds.getSouthWest();
    var ne = bounds.getNorthEast();

    var x1 = Math.round(ne.lng() / size_block_district - 0.5);
    var y1 = Math.round(ne.lat() / size_block_district - 0.5);
    var x2 = Math.round(sw.lng() / size_block_district - 0.5);
    var y2 = Math.round(sw.lat() / size_block_district - 0.5);

    $("div#listRe").empty();
    $('span.numberRes').html('');
    numberRes = 0;
    if (isReload) {
        hideMarkerDistrict();
        blockDistricts = [];
    }

    for (var i = 0; i <= x1 - x2; i++)
        for (var j = 0; j <= y1 - y2; j++) {
            var blockid = (x2 + i).toString() + '/' + (y2 + j).toString();
            LoadDistrictInBlock(blockid, typeREs, purposeREs);
        }
}

function LoadDistrictInBlock(blockID, typeREs, purposeREs) {

    var indexOfBlock = blockDistricts.IsOfArrayBlock(blockID);
    var indexNext = blockDistricts.length;
    if (indexOfBlock == -1) {

        var block = new BlockDistrict(blockID);
        blockDistricts.push(block);
        $.ajax({
            type: 'POST',
            url: "/RealEstate/GetDistrictInBlock",
            data: "blockid=" + blockID + "&index=" + indexNext + "&typeREs=" + typeREs + "&purposeREs=" + purposeREs,
            dataType: 'json',
            success: function (data) {

                var markersOfBlock = [];
                if (data.list != null) {
                    $.each(data.list, function (index, item) {

                        var point = new google.maps.LatLng(item["Lat"], item["Lng"]);
                        var icon = "http://rs.golden.net.vn/icon/empty.png";

                        var indexOf = markerDistrict.IsOfArrayDistrict(item["ID"]);
                        if (indexOf == -1) {
                            var markerD = new MarkerWithLabel({
                                position: point,
                                icon: icon,
                                //map:map,
                                title: item["Name"],
                                labelContent: item["NumberRealEstate"],
                                labelAnchor: new google.maps.Point(18, 40),
                                labelClass: "labelDistrict"
                            });

                            markerD.setMap(map);
                            google.maps.event.addListener(markerD, "click", function (e) {
                                focusDistrict(item["Lat"], item["Lng"]);
                            });
                            var rem = new DistrictMarker(markerD, item["ID"]); //IdDistrict
                            rem.InfoOfMarker = item;
                            markersOfBlock.push(rem);
                        }
                        var html = "<div class='item_realestate_by_area'><a class='district' href='javascript:focusDistrict(" + item["Lat"] + "," + item["Lng"] + ")'>" + item["Name"] + "</a> : " + item["NumberRealEstate"] + " bất động sản.<div>";
                        $('div#listRe').append(html);
                        numberRes = numberRes + parseInt(item["NumberRealEstate"]);
                        $('span.numberRes').html('(' + numberRes + ')');

                    }); //end $.each(data, function(index, item)

                } //end if (data.list != null)
                blockDistricts[data.index].DistrictsOfBlock = markersOfBlock;
            }   //end success: function(data) 
        });                              //end $.ajax(
    } //end if ()
    else {
        var tempListMarkerDistrict = blockDistricts[indexOfBlock].DistrictsOfBlock;
        $.each(tempListMarkerDistrict, function (index, item) {
            numberRes = numberRes + parseInt(item.InfoOfMarker["NumberRealEstate"]);
            $('span.numberRes').html('(' + numberRes + ')');
            $('div#listRe').append(ConvertToHtmlFromInfoDistrict(item.InfoOfMarker));
            
        });
    }
}
// Load marker province khi xem ở chế độ zoom của tỉnh/thành phố
function ConvertToHtmlFromInfoDistrict(item) {
    var html = "<div class='item_realestate_by_area'><a class='district' href='javascript:focusDistrict(" + item["Lat"] + "," + item["Lng"] + ")'>" + item["Name"] + "</a> : " + item["NumberRealEstate"] + " bất động sản.<div>";
    return html;
}

function ConvertToHtmlFromInfoProvince(item) {
    var html = "<div class='item_realestate_by_area'><a class='province' href='javascript:focusProvince(" + item["Lat"] + "," + item["Lng"] + ")'>" + item["Name"] + "</a> : " + item["NumberRealEstate"] + " bất động sản.<div>";
    return html;
}
function LoadAllREsInProvinces(isReload,typeREs, purposeREs) {

    $('div#listRe').empty();

    if (isReload) {
        hideMarkerProvince();
        markerProvince = [];
    }
    numberRes = 0;
    $('span.numberRes').html('');
    if (markerProvince.length == 0) {
        $.ajax({
            type: 'POST',
            url: "/RealEstate/GetAllREsInProvinces",
            data: "typeREs=" + typeREs + "&purposeREs=" + purposeREs,
            dataType: 'json',
            success: function (data) {
                var content = "";
                if (data.list != null) {
                    $.each(data.list, function (index, item) {
                        var point = new google.maps.LatLng(item["Lat"], item["Lng"]);
                        var icon = "http://rs.golden.net.vn/icon/empty.png";

                        var indexOf = markerProvince.IsOfArrayProvince(item["ID"]);
                        if (indexOf == -1) {

                            var markerP = new MarkerWithLabel({
                                position: point,
                                icon: icon,
                                title: item["Name"],
                                //map:map,
                                labelContent: item["NumberRealEstate"],
                                labelAnchor: new google.maps.Point(18, 40),
                                labelClass: "labelProvince"
                            });

                            markerP.setMap(map);
                            google.maps.event.addListener(markerP, "click", function (e) {
                                focusProvince(item["Lat"], item["Lng"]);
                            });

                            var rem = new ProvinceMarker(markerP, item["ID"]); //IdDistrict
                            rem.InfoOfMarker = item;
                            markerProvince.push(rem);
                        } else {
                        }

                        var html = "<div class='item_realestate_by_area'><a class='province' href='javascript:focusProvince(" + item["Lat"] + "," + item["Lng"] + ")'>" + item["Name"] + "</a> : " + item["NumberRealEstate"] + " bất động sản.<div>";
                        $('div#listRe').append(html);
                        numberRes = numberRes + parseInt(item["NumberRealEstate"]);
                        $('span.numberRes').html('(' + numberRes + ')');
                    }); //end $.each(data, function(index, item)

                } //end if (data.list != null)

              
            }   //end success: function(data) 
        });                               //end $.ajax(
    }
    else {
        $('div#listRe').empty();
        $.each(markerProvince, function (index, item) {
            $('div#listRe').append(ConvertToHtmlFromInfoProvince(item.InfoOfMarker));
            numberRes = numberRes + parseInt(item.InfoOfMarker["NumberRealEstate"]);
            $('span.numberRes').html('(' + numberRes + ')');
        });
    }
}

var tabs = "";

function addTabinCookie(id) {
    var url = "/RealEstate/DetailsAjaxLoading/" + id;
    
    var ReTab = new RealEstateTabs(null, id);
    listTabs.push(ReTab);


    idRE = id;
    $('#tab').tabs("add", url, "New tab");

    //refreshTab();
    tabs = tabs + id + ",";
    setCookie("tabs", tabs, 1);



}

function addTab(id, address, typeId) {
    /// <summary> Thêm tab hiển thị chi tiết bđs
    /// <para>id: id của bds</para>
    /// <para>address: địa chỉ bđs</para>
    /// <para>typeId: loại bđs</para>
    /// </summary>
    var url = "/RealEstate/DetailsAjaxLoading/" + id+"?typeId="+typeId;
    var indexOf = listTabs.IsOfArrayRe(id);
    if (indexOf == -1) {
        var ReTab = new RealEstateTabs(null, id);
        listTabs.push(ReTab);
        idRE = id;
        $('#tab').tabs("add", url, address);
        tabs =tabs+ id + ",";
       //setCookie("tabss", tabs, 1);    
    }
    else {
        $('#tab').tabs('select','#'+ listTabs[indexOf].idTab);
    }
}

function closeTab(idReal) {
    var selected = $('#tab').tabs('option','selected');

    var indexOf = listTabs.IsOfArrayRe(idReal);
    if (indexOf != -1) {
        listTabs[indexOf].IdReal = -1;
        listTabs[indexOf].idTab = null;
        listTabs[indexOf].isLoaded = null;
    }
    if (selected != -1) {
        $('#tab').tabs('remove', selected);
        var rex = idReal + ",";

        var tabsub = tabs.split(rex);
        tabs = tabsub[0] + tabsub[1];

        setCookie("tabss", tabs, 1);
    }
    else if (indexOf != -1) {
        $('#tab').tabs('remove', 0);
    }

    if ($tabs.tabs("length") == 0)
        $('#tab').css('display', 'none');
    
}

var isRefresh="";
function refreshTab(idReal) {
    var selected = $('#tab').tabs('option','selected');
    if (selected != -1) {
        isRefresh = idReal;
        $('#tab').tabs('load', selected);
        showPleasewait('#tab');
        registOnLoadDetail(idReal);
    }
}

// ---------------------------------- Nguyen Tai Thanh's Method ------------------------------------------

$(document).ready(function () {
    $('.addCompare').click(addCompare);
});

function registerEventCompare() {
    $('.addCompare').click(addCompare);
    $('.viewCompare').click(viewCompare);
    regisToolTip();
    $('.imgLoading').css('visibility', 'hidden');

    //Xu ly hien thi style
    initDisplay();
}

// add a id of RE to Session
function addCompare() {
    var currentLocation = window.location;
    var id = $(this).attr("id");
    var index = id.indexOf("NTTCompareTTN");
    var idRE = id.substr(index + 13);
    //alert(idRE);

    // check this id is in listIDRE, if not, add new id to list
    index = listIdRE.indexOf(idRE);

    // add new
    if (index < 0) {
        // add to string in javascript
        listIdRE += "|" + idRE;
        // add to session
        $.ajax({
            type: "POST",
            data:
            {
                id: idRE
            },
            cache: false,
            timeout:30000,
            async: true,
            url: "/Compare/Add",
            success: function (data) {
                
            }
        });
    }

    //
    //$('#aCompare' + idRE).html("Xem so sánh");
    //$('#aCompare' + idRE).attr('class', 'viewCompare');
    //$('#aCompare' + idRE).unbind('click');

    //$('#aDetailCompare' + idRE).html("Xem so sánh");
    //$('#aDetailCompare' + idRE).attr('class', 'viewCompare');
    //$('#aDetailCompare' + idRE).unbind('click');

    $('[id$="' + 'NTTCompareTTN' + idRE + '"]').each(function () {
        $(this).html("Xem so sánh");
        $(this).attr('class', 'viewCompare');
        $(this).unbind('click');
    });

    $('.viewCompare').click(viewCompare);

    //alert('add compare');
}


// display list of RE for comparing
function viewCompare() {

    $('#compare').html('');
    $('#compare-tab').css('display', 'none');

    $('#divDialogNTT').css('height', $(window).height()+ 'px');
    $('#divDialogNTT').css('display', 'block');
    $('#divDialogNTT').css('opacity', 0.5);
    $('#divDialogNTT img').css('top', '50%');
    $('#divDialogNTT img').css('left', '50%');
    $('#divDialogNTT img').css('margin', '-30px 0 0 -30px');
    

    $(this).attr('href','#compare-tab');
    $.ajax({
        type: "GET",
        cache: false,
        timeout: 30000,
        async: false,
        url: "/Compare/Index",
        success: function (data) {

            // get width of compare tab
            var compareTabWidth = $('#compare-tab').width();

            $('#compare').html(data);
            var tbWidth = $('#tbContainRE tr:eq(0) > td').length * 230 + 20;
            tbWidth += "px";
            $('#tbContainRE').css('width', tbWidth);

            // set width of list RE
            var listREWidth = compareTabWidth - 230 - 10 - 220;
            
            //alert(listREWidth);
            //alert(compareTabWidth);
            //alert($(window).width());
            $('#divListRECompare').width(listREWidth + 'px');

            //alert('compare tab:' + compareTabWidth + ', div list RE:' + $('#divListRE').css('width'));
            // set style for list utilities
            $('#Amenities input').addClass('listInputUtility');
            $('#Amenities label').addClass('listlabelUtility');

            $('#compare').show();
        }
    });

    // hiển thị hạ tầng bất động sản khi di chuột trên text phần hạ tầng bds
   // $("[id^='TNTspan']").each(function () {
   //     var id = $(this).attr('id').substr(7);
   //     $(this).mouseenter(function (e) {
   //         var contentDiv = StandardString($('#TNTdiv' + id).html());
   //         //alert(contentDiv);
   //         if (contentDiv.length > 5) {
   //             $('#TNTdiv' + id).css('display', 'block');
   //             $('#TNTdiv' + id).css('position', 'absolute');
   //             $('#TNTdiv' + id).css('z-index', 1000);
   //             $('#TNTdiv' + id).css('top', e.pageY + 2);
   //             $('#TNTdiv' + id).css('left', e.pageX + 5);
   //         }
   //     });
   //     $(this).mouseout(function () {
   //         $('#TNTdiv' + id).css('display', 'none');
   //     });
   // });

    // ẩn/hiển các đoạn thông tin như thông tin chung, thông tin nhà ... khi click vào header
    $('#divCommonInfor').click(function () {
        $('.commonInfor').toggle('slow');
        var src = $('#divCommonInfor img').attr('src');
        var indexUp = src.indexOf('_up_');
        if (indexUp >= 0) {
            src = src.replace('_up_', '_down_');
        }
        else {
            var indexDown = src.indexOf('_down_');
            if (indexDown >= 0) {
                src = src.replace('_down_', '_up_');
            }
        }

        $('#divCommonInfor img').attr('src', src);
    });

    $('#divLandInfor').click(function () {
        $('.landInfor').toggle('slow');

        var src = $('#divLandInfor img').attr('src');
        var indexUp = src.indexOf('_up_');
        if (indexUp >= 0) {
            src = src.replace('_up_', '_down_');
        }
        else {
            var indexDown = src.indexOf('_down_');
            if (indexDown >= 0) {
                src = src.replace('_down_', '_up_');
            }
        }

        $('#divLandInfor img').attr('src', src);
        
    });

    $('#divHouseInfor').click(function () {
        $('.houseInfor').toggle('slow');

        var src = $('#divHouseInfor img').attr('src');
        var indexUp = src.indexOf('_up_');
        if (indexUp >= 0) {
            src = src.replace('_up_', '_down_');
        }
        else {
            var indexDown = src.indexOf('_down_');
            if (indexDown >= 0) {
                src = src.replace('_down_', '_up_');
            }
        }

        $('#divHouseInfor img').attr('src', src);
    });

    $('#divBdsServiceInfor').click(function () {
        $('.bdsServiceInfor').toggle('slow');

        var src = $('#divBdsServiceInfor img').attr('src');
        var indexUp = src.indexOf('_up_');
        if (indexUp >= 0) {
            src = src.replace('_up_', '_down_');
        }
        else {
            var indexDown = src.indexOf('_down_');
            if (indexDown >= 0) {
                src = src.replace('_down_', '_up_');
            }
        }

        $('#divBdsServiceInfor img').attr('src', src);
    });

    $('#divAmenityInfor').click(function () {
        $('.amenityInfor').toggle('slow');

        var src = $('#divAmenityInfor img').attr('src');
        var indexUp = src.indexOf('_up_');
        if (indexUp >= 0) {
            src = src.replace('_up_', '_down_');
        }
        else {
            var indexDown = src.indexOf('_down_');
            if (indexDown >= 0) {
                src = src.replace('_down_', '_up_');
            }
        }

        $('#divAmenityInfor img').attr('src', src);
    });

    $('#divSocietyInfraInfor').click(function () {
        $('.societyInfraInfor').toggle('slow');

        var src = $('#divSocietyInfraInfor img').attr('src');
        var indexUp = src.indexOf('_up_');
        if (indexUp >= 0) {
            src = src.replace('_up_', '_down_');
        }
        else {
            var indexDown = src.indexOf('_down_');
            if (indexDown >= 0) {
                src = src.replace('_down_', '_up_');
            }
        }

        $('#divSocietyInfraInfor img').attr('src', src);
    });

    $('#divContactInfor').click(function () {
        $('.contactInfor').toggle('slow');

        var src = $('#divContactInfor img').attr('src');
        var indexUp = src.indexOf('_up_');
        if (indexUp >= 0) {
            src = src.replace('_up_', '_down_');
        }
        else {
            var indexDown = src.indexOf('_down_');
            if (indexDown >= 0) {
                src = src.replace('_down_', '_up_');
            }
        }

        $('#divContactInfor img').attr('src', src);
    });

    // xóa bds khỏi danh danh sách khi click nút delete
    $("[id^='TNTimg']").each(function () {
        $(this).click(function () {
            var idItem = $(this).attr('id').substr(6);
            // xóa bds khoi listIdRE trên client
            listIdRE = listIdRE.replace("|" + idItem, "");

            $.ajax({
                type: 'POST',
                data:
                {
                    id: idItem
                },
                cache: false,
                timeout: 30000,
                async: false,
                url: 'Compare/remove',
                success: function (data) {
                    $('#TNTtd' + idItem).fadeOut('fast');
                    var widthTable = $('#tbContainRE').css('width').toLowerCase();
                    var indexPx = widthTable.indexOf("px");
                    widthTable = widthTable.substr(0, indexPx) - 230;
                    widthTable += "px";
                    $('#tbContainRE').css('width', widthTable);


                    if (listIdRE.length <= 2) {
                        $('#compare').html('');
                        listIdRE = "";

                        $('#compare-tab').css('display', 'none');
                    }
                }
            });

            // thiết lại các thuộc tính của tag a có liên quan tới bds bị xóa khỏi danh sách so sánh
            //$('#aCompare' + idItem).attr('href', '#tab-right');
            //$('#aCompare' + idItem).attr('class', 'addCompare');
            //$('#aCompare' + idItem).html('So sánh');
            //$('#aCompare' + idItem).unbind('click');
            //$('#aCompare' + idItem).click(addCompare);


            //$('#aDetailCompare' + idItem).html("So sánh");
            //$('#aDetailCompare' + idItem).attr('class', 'addCompare');
            //$('#aDetailCompare' + idItem).attr('href', '#tab');
            //$('#aDetailCompare' + idItem).unbind('click');

            $('[id$="' + 'NTTCompareTTN' + idItem + '"]').each(function () {
                $(this).html("So sánh");
                $(this).attr('class', 'addCompare');
                $(this).removeAttr('href');
                $(this).unbind('click');
                $(this).click(addCompare);
            });

        });
    });

    // xóa tất cả các bds khỏi danh sách so sánh
    $('#divDeleteAll').click(function () {

        //$('[id^="aCompare"]').attr('href', '#tab-right');
        //$('[id^="aCompare"]').attr('class', 'addCompare');
        //$('[id^="aCompare"]').html('So sánh');
        //$('[id^="aCompare"]').unbind('click');
        //$('[id^="aCompare"]').click(addCompare);

        //$('[id^="aDetailCompare"]').html("So sánh");
        //$('[id^="aDetailCompare"]').attr('class', 'addCompare');
        //$('[id^="aDetailCompare"]').attr('href', '#tab');
        //$('[id^="aDetailCompare"]').unbind('click');
        //$('[id^="aDetailCompare"]').click(addCompare);
        $('[id*="NTTCompareTTN"]').each(function () {
            $(this).html("So sánh");
            $(this).attr('class', 'addCompare');
            $(this).removeAttr('href');
            $(this).unbind('click');
            $(this).click(addCompare);
        });


        $.ajax({
            type: 'POST',
            cache: false,
            timeout: 30000,
            async: false,
            url: 'Compare/removeall',
            success: function (data) {
                $('#compare').html('');
                listIdRE = "";

                // an tab so sanh
                $('#compare-tab').css('display', 'none');
            }
        });
    });

    $('#divDialogNTT').css('display', 'none');
    $('#compare-tab').css('display','block');
}

// Chuẩn hóa xâu
function StandardString(str) {
    var temp = str.toString();
    var i = 0;
    while (i < temp.length) {
        if (temp.charAt(i) == ' ' && (i == 0 || i == temp.length - 1 || temp.charAt(i + 1) == ' ')) {
            if (i < temp.length - 1)
                temp = temp.substr(0, i) + temp.substr(i + 1);
            else
                temp = temp.substr(0, i)
        }
        else i++;
    }
    return temp;
}

// Xóa dấu " " trong xâu
function RemoveSpace(str) {
    var temp = str.toString();
    var i = 0;
    while (i < temp.length) {
        if (temp.charAt(i) == ' ') {
            if (i < temp.length - 1)
                temp = temp.substr(0, i) + temp.substr(i + 1);
            else
                temp = temp.substr(0, i)
        }
        else i++;
    }
    return temp;
}


// javascript for tab search, topview, sale real estate, rent real estate
function afterSearch() {
    alert('search result');
}

// đăng ký sự kiện khi click các tap topview, sale, rent, search, supervised
$(document).ready(function () {
    $('#aSearchRE').click(displaySearch);

    $('#aNewestRE').click(displayNewestRE).trigger("click");

    $('#aTopViewRE').click(displayTopView);

    $('#aSaleRE').click(displaySale);

    $('#aRentRE').click(displayRent);

    $('#aSupervisedRE').click(displaySupervise);

});

// hiển thị nội dung của tab search khi chọn tab search
var openedSearch = false;
var openedTopView = false;
var openedRent = false;
var openedSale = false;
var openedNewest = false;

function displaySearch() {
    //var temp = RemoveSpace($('#divSearchRE').html());

    var strText = $(this).html();
    $(this).html("<span>Đang tải ...</span>");
    if (!openedSearch) {
        $.ajax({
            type: 'GET',
            cache: false,
            timeout: 30000,
            async: false,
            url: '/Search/Index',
            success: function (data) {
                $('#divSearchRE').html(data);
            }
        });

        openedSearch = true;
    }

    $('#divSearchRE').show();
    $('.addCompare').click(addCompare);
    $('.viewCompare').click(viewCompare);
    regisToolTip();
    $(this).html(strText);
}

//hien thi noi dung tab bds moi nhat
function displayNewestRE() {
    //var temp = RemoveSpace($('#divTopViewRE').html());

    var strText = $(this).html();
    $(this).html("<span>Đang tải ...</span>");
    if (!openedNewest) {
        $.ajax({
            type: 'GET',
            cache: false,
            timeout: 30000,
            async: false,
            url: '/Search/GetNewestRealEstate',
            success: function (data) {
                $('#divNewestRE').html(data);
            }
        });

        openedNewest = true;
    }

    $('#divNewestRE').show();
    $('.addCompare').click(addCompare);
    $('.viewCompare').click(viewCompare);
    regisToolTip();
    $(this).html(strText);
}

// hiển thị nội dung tab topview khi chọn tab top view
function displayTopView() {
    //var temp = RemoveSpace($('#divTopViewRE').html());
    var strText = $(this).html();
    $(this).html("<span>Đang tải ...</span>");
    if (!openedTopView) {
        $.ajax({
            type: 'GET',
            cache: false,
            timeout: 30000,
            async: false,
            url: '/Search/GetTopViewRealEstate',
            success: function (data) {
                $('#divTopViewRE').html(data);
            }
        });

        openedTopView = true;
    }

    $('#divTopViewRE').show();
    $('.addCompare').click(addCompare);
    $('.viewCompare').click(viewCompare);
    regisToolTip();
    $(this).html(strText);
}

// hiển thị nội dung tab sale khi chọn tab sale
function displaySale() {
    //var temp = RemoveSpace($('#divSaleRE').html());

    var strText = $(this).html();
    $(this).html("<span>Đang tải ...</span>");
    if (!openedSale) {
        $.ajax({
            type: 'GET',
            cache: false,
            timeout: 30000,
            async: false,
            url: '/Search/GetSaleRealEstate',
            success: function (data) {
                $('#divSaleRE').html(data);
            }
        });

        openedSale = true;
    }

    $('#divSaleRE').show();
    $('.addCompare').click(addCompare);
    $('.viewCompare').click(viewCompare);
    regisToolTip();
    $(this).html(strText);
}

// hiển thị nội dung tab rent khi chọn tab rent
function displayRent() {
    //var temp = RemoveSpace($('#divRentRE').html());

    var strText = $(this).html();
    $(this).html("<span>Đang tải ...</span>");
    if (!openedRent) {
        $.ajax({
            type: 'GET',
            cache: false,
            timeout: 30000,
            async: false,
            url: '/Search/GetRentRealEstate',
            success: function (data) {
                $('#divRentRE').html(data);
            }
        });

        openedRent = true;
    }

    $('#divRentRE').show();
    $('.addCompare').click(addCompare);
    $('.viewCompare').click(viewCompare);
    regisToolTip();
    $(this).html(strText);
}


// kiểm tra tham số trước khi gửi lên server để thực hiện search
function checkInputParam() {
    var typeId = $('#TypeId').val();
    var provinceId = $('#ProvinceId').val();
    var districId = $('#DistricId').val();
    var directionId = $('#DirectionId').val();
    var costRE = $('#CostRE').val();
    var areaRE = $('#AreaRE').val();

    if (typeId == null || typeId.length == 0 || parseInt(typeId) == 0) {

        $("#hWarning").html("Chưa chọn loại bất động sản !");
        $('#divWarning').css('display','block');
        return false;
    }

    if (provinceId == null || provinceId.length == 0 || parseInt(provinceId) == 0) {
        $("#hWarning").html("Chưa chọn tỉnh/ thành phố !");
        $('#divWarning').css('display', 'block');
        return false;
    }

    if (districId == null || districId.length == 0 || parseInt(districId) == 0) {
        $("#hWarning").html("Chưa chọn quận/ huyện !");
        $('#divWarning').css('display', 'block');
        return false;
    }

    $('#divWarning').css('display', 'none');

    $('.imgLoading').css('visibility', 'visible');
}

// gọi sau khi việc gọi lên và trả về của search thành công
function displayResultSearch() {
    $('.addCompare').click(addCompare);
    $('.viewCompare').click(viewCompare);
    regisToolTip();
    $('.imgLoading').css('visibility', 'hidden');
}

// chuyển tới trang mới khi thay đổi giá trị ở dropdownlist (bỏ khi click button "xem")
function changePage(current) {

    //$(current).parents('form:eq(0)').unbind('submit');

    $(current).parents('form:eq(0)').bind('submit', function (event) {  // rất quan trọng nếu muốn ajax.beginform thực hiện, nếu không có thì ajax sẽ chuyển trang như form thường
        eval($(this).attr('onsubmit'));
        $(this).unbind('submit');
        return false;
    });

    $(current).parents('form:eq(0)').trigger('submit');
}



// gọi khi chọn giá để tìm kiếm
function costChange() {
    var value = $('#CostRE').val();
    value = parseInt(value, 10);
    if (value == -1)
        $('#divTypeCost').css('display', 'block');
    else {
        $('#divTypeCost').css('display', 'none');
        $('#txtCostFrom').val('');
        $('#txtCostTo').val('');
    }
}

// gọi khi chọn diện tích để tìm kiếm
function areaChange() {
    var value = $('#AreaRE').val();
    value = parseInt(value, 10);
    if (value == -1)
        $('#divTypeArea').css('display', 'block');
    else {
        $('#divTypeArea').css('display', 'none');
        $('#txtAreaFrom').val('');
        $('#txtAreaTo').val('');
    }
}

var updateSupervise = true;

// hiển thị nội dung tab supervise khi chọn tab supervise
function displaySupervise() {
    //var temp = RemoveSpace($('#divSupervisedRE').html());
    var strText = $(this).html();
    $(this).html("<span>Đang tải ...</span>");
    if (updateSupervise) {
        $.ajax({
            type: 'GET',
            cache: false,
            timeout: 30000,
            async: false,
            url: '/RealEstate/ListSupervisedRealEstate',
            success: function (data) {
                $('#divSupervisedRE').html(data);
            }
        });
    }

    $('#divSupervisedRE').show();
    $(this).html(strText);

    updateSupervise = false;
}

/*-----------------------------------------------------------------------------*/
/*-------------- Các hàm xử lý thêm bất động sản theo dõi----------------------*/
/*-----------------------------------------------------------------------------*/

$(document).ready(function () {
    $('#divDialogTracing').dialog({
        bgiframe: true,
        title: "Đăng ký theo dõi bất động sản ",
        autoOpen: false,
        modal: true,
        width: 500,
        height: 270,
        resizable: false
    });
});
function regisKeepTrace(idRE) {
    $.ajax({
        type: 'GET',
        async: false,
        url: '/RealEstate/CreateSupervisedRealEstate?RealEstateID=' + idRE,
        success: function (data) {
            $('#divDialogTracing').html(data);
        }
    });

    $('#divDialogTracing').dialog('option', 'title', 'Đăng ký theo dõi bất động sản ');
    $('#divDialogTracing').dialog('open');
}

function unRegisKeepTrace(idRE) {
    if (!confirm("Bạn thực sự muốn bỏ theo dõi bất động sản này ?"))
        return;

    $.ajax({
        type: 'POST',
        cache: false,
        data: {
            ReID: idRE
        },
        dataType: 'json',
        url: "/RealEstate/DeleteSupervisedRealEstateByRE",
        success: function (data) {
            try {
                if (parseInt(data.result, 10) == 1) {
                    $('[id$="' + 'NTTTraceTTN' + idRE + '"]').each(function () {
                        $(this).html("Theo dõi");
                        $(this).attr('href', 'javascript:regisKeepTrace(' + idRE + ')');
                    });

                    try {
                        // Xoa theo doi ben listSupervise
                        $('[id^="' + idRE + 'trSupervise"]').each(function () {
                            $(this).css('display', 'none');
                        });

                        // refresh số lượng bất động sản thay đổi chưa đọc vì có thể bất động sản bỏ theo dõi nằm trong danh sách này
                        var totalnumber = data.totalnumber;
                        if (parseInt(totalnumber, 10) > 0)
                            $('#NTT_SupervisedRECounter_TTN').html(totalnumber);
                        else
                            $('#NTT_SupervisedRECounter_TTN').css('visibility','hidden');
                    }
                    catch (error) {
                    }
                }
                else
                    alert(data.message);
            }
            catch (error) {
                alert(data.message);
            }
        }
    });

    updateSupervise = true;
}

function addKeepTrace() {
    if (checkTypeKeepTrace()) {
        var typeKeepTrace = $('#typeKeepTrace').val();
        var contentType = $('#contentTypeKeepTrace').val();
        var idRE = $('#idREKeepTrace').val();

        $.ajax({
            type: 'POST',
            data: {
                RealEstateID: idRE,
                type: typeKeepTrace,
                contentType: contentType,
                actionType: $('#typeAction').val(),
                idSuperviseRE: $('#idSRE').val()
            },
            dataType: 'json',
            cache: false,
            timeout: 30000,
            async: false,
            url: 'RealEstate/AddSuperviseRealEstate',
            success: function (data) {

                if (parseInt(data.result, 10) == 1) {
                    if ($('#typeAction').val() == "edit") {
                        $('#aSupervise' + $('#idSRE').val()).html(contentType);
                    }

                    alert(data.message);
                    $('#divDialogTracing').dialog('close');

                    $('[id$="' + 'NTTTraceTTN' + idRE + '"]').each(function () {
                        $(this).html("Bỏ theo dõi");
                        $(this).attr('href', 'javascript:unRegisKeepTrace(' + idRE + ')');
                    });


                }
                else {
                    alert(data.message);
                }
            }
        });
       
    }

    updateSupervise = true;
    return false;
}


function checkTypeKeepTrace() {
    var typeKeepTrace = $('#typeKeepTrace').val();

    var contentType = StandardString($('#contentTypeKeepTrace').val());
    $('#contentTypeKeepTrace').val(contentType);
    if (typeKeepTrace == 'mail') {
        if (IsValidEmail(contentType))
            return true;
        alert("Nhập lại email !");
        return false;
    }
    else {
        if (IsValidPhone(contentType))
            return true;
        alert("Nhập lại số điện thoại !");
        return false;
    }
}



function IsValidEmail(email) {
    var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/i;
    return filter.test(email);
}

function IsValidPhone(phone) {
    if (phone.length < 10 || phone.length >= 15)
        return false; 
    for (var i = 0; i < phone.length; i++) {
        if (phone.charAt(i) < '0' || phone.charAt(i) > '9')
            return false;
    }

    return true;
}
/*-----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------*/

function registOnLoadDetail(idRE) {
    registCompare();
    regisToolTip();
    regisSliderImage(idRE);
    regisLightBoxImage();
}


function registCompare() {
    $('.addCompare').click(addCompare);
    $('.viewCompare').click(viewCompare);
}

function regisToolTip() {
    $('.tooltip').tooltip({
        bordercolor: '#cccccc',
        fontsize: '12px',
        cursor:'pointer'
    });
}

function regisSliderImage(idRE) {
    $("#div_contain_slider_image_" + idRE + " .div_slider_image").jCarouselLite({
        btnNext: "#div_contain_slider_image_" + idRE + " .next",
        btnPrev: "#div_contain_slider_image_" + idRE + " .prev"
    });
}

function regisLightBoxImage() {
    $('.remain_image').each(function () {
        var idParent = $(this).parent().attr('id');
        $('#' + idParent + ' a.lightbox').lightBox({
            imageLoading: '/Content/images/lightbox/lightbox-ico-loading.gif',
            imageBtnClose: '/Content/images/lightbox/close.gif',
            imageBtnPrev: '/Content/images/lightbox/pre.gif',
            imageBtnNext: '/Content/images/lightbox/next.gif',
            containerResizeSpeed: 350,
            fixedNavigation: true,
            maxHeight: 700,
            maxWidth: 700
        });
    });

}

// ----------------------------------End  Nguyen Tai Thanh's Method ------------------------------------------
