var resize_timer;
var call_timer;
var domain;
var list_title = "";
var sell_price = [];
var sell_price_max = 0;
var deposit_price = [1000,3000,5000,7000,10000,15000,20000,25000,30000,40000,50000,60000,70000,80000,90000,100000];
var deposit_price_max = 100000;
var rent_price = [100,300,500,700,1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,15000,20000,25000,30000,35000,40000,45000,50000];
var rent_price_max = 50000;
var area = [20,40,60,80,100,150,200,250,300,350,400,450,500,600,700,800,900,1000];
var area_max = 1000;
var area_total = [50,100,200,300,400,500,600,700,800,900,1000];
var area_total_max = 1000;
var area_land = [0,50,100,200,300,400,500,600,700,800,900,1000];
var area_land_max = 1000;
$(document).ready(function(){
lat = $("#form input[name='lat']").val();
lng = $("#form input[name='lng']").val();
level = $("#form input[name='level']").val();
domain = $("#form input[name='domain']").val();
mapdraw_event();
$("#form").change(function(){
mapdraw_event();
});
$('.dropdown-menu').click(function(e) {
e.stopPropagation();
});
init_rangeslider();
/***********************************************
* 초기화 버튼 실행
***********************************************/
$(".btn-init").click(function(){
$(this).parent().parent().parent().find("input:checkbox").each(function(){
$(this).prop("checked", false);
});
$(this).parent().parent().parent().find("input:radio").each(function(){
$(this).prop("checked", false);
});
$(this).parent().parent().parent().find("select").each(function(){
$(this).val("");
});
mapdraw_event();
});
$(".btn-init-price").click(function(){
sell_price_range.reset();
deposit_price_range.reset();
rent_price_range.reset();
mapdraw_event();
});
$(".btn-init-area").click(function(){
if($("#area").length>0) area_range.reset();
if($("#area_total").length>0) area_total_range.reset();
if($("#area_land").length>0) area_land_range.reset();
mapdraw_event();
});
$(".btn-init-option").click(function(){
$("#form").find("select").each(function(){
$(this).val("");
});
mapdraw_event();
});
$("#sorting").change(function(){
mapdraw_event();
});
if($("#keyword").length > 0){
$("#keyword").autocomplete({
selectFirst: false,
autoFill: false,
autoFocus: false,
focus: function(event,ui){
return false;
},
delay: 0,
scrollHeight:40,
minLength:2,
select: function(a,b){
$("#form input[name='lat']").val(b.item.lat);
$("#form input[name='lng']").val(b.item.lng);
$("#sorting").val("distance_asc");
get_map_list(0);
a.stopPropagation();
return false;
},
source: function(request, response){
totalSearch(lat,lng, response);
},
}).data("ui-autocomplete")._renderItem = autoCompleteRenderSearch;
}
});
function totalSearch(lat,lng, response){
//숫자일 경우에는 매물검색으로 인식해서 해당 매물번호로 이동되므로 아무 것도 하지 않는다.
if($.isNumeric($("#search").val())){
return;
} else {
$.ajax({
url: "/search/address",
type: "POST",
data: {
keyword : $("#keyword").val(),
},
dataType: "json",
success: function(data) {
if(data!=""){
response( $.map( data, function( item ) {
return {
id: item.id,
title: item.title,
type: item.type,
lat: item.lat,
lng: item.lng
};
}));
}
}
});
}
}
function autoCompleteRenderSearch(ul, item) {
return $("
").data("item.autocomplete", item).append(' '+item.title).appendTo(ul);
}
function mapdraw_event(){
list_title = "";
filter_title(); /* 검색버튼 타이틀 수정 */
// 2023-08-18 바로 호출하면 가격을 못가져오는 현상이 있음
setTimeout(function() {
get_map_list(0); /* 지도 매물 리스트 */
}, 450);
}
function get_map_list(page){
var total = 0;
var formData = $("#form").serialize();
formData+='&sorting='+$("#sorting").val();
formData+='&method=grid';
console.log(formData);
$.ajax({
type : "POST",
url : "/property/ajax_grid/"+page,
data : formData,
dataType: 'json',
success: function(data) {
$.each(data, function(key, val) {
if(key=="result") {
$("#property_list").html(val);
}
if(key=="pagination") {
$("#pagination").html(val);
get_map_list_paging();
}
if(key=="total"){
total = val;
$("#map_label").html("매물 " + total + "개");
}
});
$("#property_list").animate({
scrollTop: 0
}, 600);
if(total=="0") {
$("#property_list").html("매물이 없습니다.
지도를 옮기거나 검색조건을 변경해 보세요.
");
}
$(".property-zzim span").click(function(event){
event.stopPropagation();
event.preventDefault();
});
init_zzim();
}
});
}
function get_map_list_paging(){
$(".page-link").click(function(e){
e.preventDefault();
var page = $(this).attr("href").substring($(this).attr("href").lastIndexOf('/') + 1)
get_map_list(page);
$(".property_list_wrapper").animate({
scrollTop: 0
}, 600);
});
}
//다른대서도 사용
function init_zzim(){
$(".property-zzim span").click(function(){
if(confirm("로그인하시겠습니까?")){
location.href="/member/signin";
}
});
}
function init_filter(){
$("#form").find("input:checkbox").each(function(){
$(this).prop("checked", false);
});
$("#form").find("select").each(function(){
$(this).val("");
});
sell_price_range.reset();
deposit_price_range.reset();
rent_price_range.reset();
if($("#area").length>0) area_range.reset();
if($("#area_total").length>0) area_total_range.reset();
if($("#area_land").length>0) area_land_range.reset();
mapdraw_event();
}
function filter_title(){
$("#selltype_label").html("거래 방식");
$("#cate_label").html("매물 종류");
$("#bedcnt_label").html("방 수");
$("#theme_label").html("테마");
$("#price_label").html("가격 대");
$("#area_label").html("면적");
$("#option_label").html(" 상세 검색");
var title = "";
var btn = ['selltype','cate','bedcnt','theme'];
$.each(btn,function(index,item){
title = "";
$("#"+item+"_group input").each(function(){
if($(this).is(":checked")){
if(title=="") title = title + $(this).data("title");
else if(title!="") title = title + "," + $(this).data("title");
}
});
if(title!="") {
$("#"+item+"_label").removeClass("btn-outline-secondary");
$("#"+item+"_label").addClass("btn-secondary");
$("#"+item+"_label").html(title);
} else {
$("#"+item+"_label").removeClass("btn-secondary");
$("#"+item+"_label").addClass("btn-outline-secondary");
}
});
/*
가격대
- 앞 숫자, 뒷 숫자 모두 보여준다.
- labeling_sell_price
- labeling_deposit_price
- labeling_rent_price
*/
title = "";
var sell_price = $("#sell_price").val();
var deposit_price = $("#deposit_price").val();
var rent_price = $("#rent_price").val();
if(sell_price!=";" && sell_price!="null;null" && sell_price!="0;"+sell_price_max) {
title = filter_title_price($("#sell_price").val(),"sell");
}
if(deposit_price!=";" && deposit_price!="null;null" && deposit_price!="0;"+deposit_price_max) {
title = filter_title_price($("#deposit_price").val(),"deposit");
}
if(rent_price!=";" && rent_price!="null;null" && rent_price!="0;"+rent_price_max) {
title = title + filter_title_price($("#rent_price").val(),"rent");
}
if(title.trim()!="") {
$("#price_label").removeClass("btn-outline-secondary");
$("#price_label").addClass("btn-secondary");
$("#price_label").html(title);
} else {
$("#price_label").removeClass("btn-secondary");
$("#price_label").addClass("btn-outline-secondary");
}
/**
* 면적
*/
title = "";
if($("#area").length>0){
var area = $("#area").val();
if(area!="null;null" && area!="0;"+area_max) {
title = filter_title_area($("#area").val());
}
}
if(title.trim()!="") {
$("#area_label").removeClass("btn-outline-secondary");
$("#area_label").addClass("btn-secondary");
$("#area_label").html(title);
} else {
$("#area_label").removeClass("btn-secondary");
$("#area_label").addClass("btn-outline-secondary");
}
/* 옵션 */
//floor, build_date
title="";
if($("#form select[name='floor'] option:selected").val()!="") {
title = $("#form select[name='floor'] option:selected").text()+" ";
}
if($("#form select[name='build_date'] option:selected").val()!=""){
title = title + $("#form select[name='build_date'] option:selected").text();
}
if($("#form select[name='elevator'] option:selected").val()!=""){
title = title + $("#form select[name='elevator'] option:selected").text();
}
if($("#form select[name='park'] option:selected").val()!=""){
title = title + $("#form select[name='park'] option:selected").text();
}
if($("#form select[name='status_id'] option:selected").val()!=""){
title = title + $("#form select[name='status_id'] option:selected").text();
}
if(title.trim()!="") {
$("#option_label").removeClass("btn-outline-secondary");
$("#option_label").addClass("btn-secondary");
$("#option_label").html(title);
} else {
$("#option_label").removeClass("btn-secondary");
$("#option_label").addClass("btn-outline-secondary");
}
}
function filter_title_price(ts,gubun){
var r = "";
var t = ts.split(';');
if(gubun=="sell"){
/* 주가격 */
if(t[0]!="null" && t[0]!="0") r = r+labeling_sell_price(t[0]);
if(t[1]!="null") r = r+"~"+labeling_sell_price(t[1]);
return r;
} else if(gubun=="deposit"){
/* 주가격 */
if(t[0]!="null" && t[0]!="0") r = r+labeling_deposit_price(t[0]);
if(t[1]!="null") r = r+"~"+labeling_deposit_price(t[1]);
return r;
} else {
/* 보조 가격 */
if(t[0]!="null" && t[0]!="0") r = r+labeling_rent_price(t[0]);
if(t[1]!="null") r = r+"~"+labeling_rent_price(t[1]);
if(r!="") return ",월"+r;
}
}
function filter_title_area(ts){
var r = "";
var t = ts.split(';');
/* 주가격 */
if(t[0]!="null" && t[0]!="0") r = r+t[0]+"평";
if(t[1]!="null" && t[1]!=area_max) r = r+"~"+t[1]+"평";
return r;
}
function filter_title_area_total(ts){
var r = "";
var t = ts.split(';');
/* 주가격 */
if(t[0]!="null" && t[0]!="0") r = r+t[0]+"평";
if(t[1]!="null" && t[1]!=area_total_max) r = r+"~"+t[1]+"평";
return r;
}
function filter_title_area_land(ts){
var r = "";
var t = ts.split(';');
/* 주가격 */
if(t[0]!="null" && t[0]!="0") r = r+t[0]+"평";
if(t[1]!="null" && t[1]!=area_land_max) r = r+"~"+t[1]+"평";
return r;
}
function init_rangeslider(){
$("#sell_price").ionRangeSlider({
type: 'double',
min: 0,
max: sell_price_max,
from: 0,
to: sell_price_max,
values: sell_price,
grid: false,
grid_num:1000,
grid_snap: true,
skin: 'round',
prettify: labeling_sell_price,
});
sell_price_range = $("#sell_price").data("ionRangeSlider");
if($("#form input[name='sell_from']").val()!="" || $("#form input[name='sell_to']").val()!=""){
sell_price_range.update({
from: sell_price.indexOf(Number($("#form input[name='sell_from']").val())),
to: sell_price.indexOf(Number($("#form input[name='sell_to']").val()))
});
}
$("#deposit_price").ionRangeSlider({
type: 'double',
min: 0,
max: deposit_price_max,
from: 0,
to: deposit_price_max,
values: deposit_price,
grid: false,
grid_num:1000,
grid_snap: true,
skin: 'round',
prettify: labeling_deposit_price,
});
deposit_price_range = $("#deposit_price").data("ionRangeSlider");
$("#rent_price").ionRangeSlider({
type: 'double',
min: 0,
max: rent_price_max,
from: 0,
to: rent_price_max,
values: rent_price,
grid: false,
grid_snap: true,
skin: 'round',
prettify: labeling_rent_price
});
rent_price_range = $("#rent_price").data("ionRangeSlider");
if($("#area").length>0){
$("#area").ionRangeSlider({
type: 'double',
min: 0,
max: area_max,
from: 0,
to: area_max,
values: area,
grid: false,
grid_snap: true,
skin: 'round',
prettify: labeling_area
});
area_range = $("#area").data("ionRangeSlider");
}
if($("#area_total").length>0){
$("#area_total").ionRangeSlider({
type: 'double',
min: 0,
max: area_total_max,
from: 0,
to: area_total_max,
values: area_total,
grid: false,
grid_snap: true,
skin: 'round',
prettify: labeling_area_total
});
area_total_range = $("#area_total").data("ionRangeSlider");
}
if($("#area_land").length>0){
$("#area_land").ionRangeSlider({
type: 'double',
min: 0,
max: area_land_max,
from: 0,
to: area_land_max,
values: area_land,
grid: false,
grid_snap: true,
skin: 'round',
prettify: labeling_area_land
});
area_land_range = $("#area_land").data("ionRangeSlider");
}
filter_title();
}
function labeling_sell_price(ts) {
if(ts == 0) {
return "0원"
} else if(ts >= sell_price_max) return "제한없음";
else return numberToKorean(ts) + "원";
}
function labeling_deposit_price(ts) {
if(ts == 0) {
return "0원"
} else if(ts >= deposit_price_max) return "제한없음";
else return numberToKorean(ts) + "원";
}
/**
* 월세 가격 검색 보여주기
*/
function labeling_rent_price(ts) {
if(ts == 0) {
return "0원"
} else if(ts >= rent_price_max) return "제한없음";
else return numberToKorean(ts) + "원";
}
/**
* 면적 검색 보여주기
*/
function labeling_area(ts) {
if(ts >= area_max) return "제한없음";
else return ts + "평";
}
function labeling_area_total(ts) {
if(ts >= area_total_max) return "제한없음";
else return ts + "평";
}
function labeling_area_land(ts) {
if(ts >= area_land_max) return "제한없음";
else return ts + "평";
}
function numberToKorean(number){
number = number *10000; /* 사이트에서 기본으로 1만원 기준으로 하니까 */
var inputNumber = number < 0 ? false : number; /* 금액이 0보다 작은 것은 성립하지 않는다 */
var unitWords = ['', '만', '억', '조', '경'];
var splitUnit = 10000;
var splitCount = unitWords.length;
var resultArray = [];
var resultString = '';
for (var i = 0; i < splitCount; i++){
var unitResult = (inputNumber % Math.pow(splitUnit, i + 1)) / Math.pow(splitUnit, i);
unitResult = Math.floor(unitResult);
if(unitResult>=1000){
resultArray[i] = unitResult/1000 + "천";
} else if (unitResult >= 100){
resultArray[i] = unitResult/100 + "백";
} else if (unitResult > 0){
resultArray[i] = unitResult;
}
}
for (var i = 0; i < resultArray.length; i++){
if(!resultArray[i]) continue;
resultString = String(resultArray[i]) + unitWords[i] + resultString;
}
return resultString;
}