/************************************************************************************************* * 검색 스크립트 * search_reset : 검색 초기화(클릭시 선택된 검색 조건이 모두 초기화된다.) * end_price_trim : 클릭으로 가격검색을 할 때 최대값은 선택된 최소값보다 큰 선택사항만 남도록 한다. * send_form : 검색을 실행한다. (만약 중복으로 요청이 왔을 때 처리절차도 포함되어 있다.) * search_tab_reset : 검색 방식을 변경할 대 초기화하는 함수 * get_sido : 시도가져오기 * get_gugun : 구군가져오기 * get_dong : 동가져오기 * get_address : 주소아이디로 가져오기 * left_loading : 좌측 로딩 보여주기 * get_subway_local : 지하철 지역 가져오기 * get_hosun : 지하철 호선 가져오기 * get_station : 지하철 역 가져오기 * get_subway : 지하철 아이디로 가져오기 * init_price : 가격 슬라이드 초기화하기 * contains : 배열에 값이 있는지 체크하는 함수 * numberWithCommas : 숫자에 콤마 붙여주기 * get_gugun_modal : 구군가져오기(modal) * get_dong_modal : 동가져오기(modal) * area_search : 해당 지역으로 좌표이동(modal) * get_hosun_modal : 지하철 호선 가져오기(modal) * get_station_modal : 지하철 역 가져오기(modal) * subway_search : 해당 지하철역으로 좌표이동(modal) * not_submit : 유저페이지 매물관리에서 ajax로 submit을 시키지 않기 위함 *************************************************************************************************/ var sell_unit = "억원"; var price_unit = "만원"; var address_type="front"; /** 공개매물 등록된 주소 가져오도록 **/ var search_form ; var not_submit = false; $(document).ready(function() { $(window).bind("pageshow", function() { //update hidden input field $("#search").val(""); }); search_form = $("#search_form"); $('button').tooltip(); /* 버튼 툴팁 보여주기 */ $.support.cors = true; /* ie9 등에서 한글도메인일 경우에 넣어줘야만 ajaxform이 동작한다. */ /** 매매유형을 클릭할 때마다 바꿔주는 코드 (사용안되는거같아서 지움) **/ /* $(".btn-group > .btn").click(function(){ $(".btn-group > .btn").removeClass("active"); $(this).addClass("active"); }); */ /** 주소 검색 초기화 **/ get_sido("search_form",address_type); /** 지하철 검색 초기화 **/ get_subway_local("search_form"); /** 검색 탭 처리 **/ $("ul.nav-search li").click(function(e){ search_tab_reset(); if (!$(this).hasClass("active")) { var tabNum = $(this).index(); var nthChild = tabNum+1; $("ul.nav-search li.active").removeClass("active"); $(this).addClass("active"); $("ul#tab li.active").removeClass("active"); $("ul#tab li:nth-child("+nthChild+")").addClass("active"); }; }); if($("#search").length > 0){ $("#search").autocomplete({ selectFirst: true, autoFill: false, autoFocus: true, focus: function(event,ui){ return false; }, delay: 0, scrollHeight:40, minLength:2, select: function(a,b){ $("#search_type").val(b.item.type); $("#search_value").val(b.item.id); $("#lat").val(b.item.lat); $("#lng").val(b.item.lng); //페이징 초기화 if($("#next_page").length > 0) $("#next_page").val("0"); send_form(); //$("#search_form").trigger("submit"); //지도에서는 통합검색을 완료 하고 나면 선택이 안되는 문제가 있다. //지도에서는 지도가 움직이는 속도가 있으므로 1초 딜레이를 준 뒤 클릭시킨다 if(""=="1"){ if(b.item.type=="address"){ setTimeout(function () { $("#round"+b.item.id).trigger("click"); }, 1000); } else if(b.item.type=="subway"){ setTimeout(function () { $("#subway_round"+b.item.id).trigger("click"); }, 1000); } } a.stopPropagation(); return false; }, source: function(request, response){ totalSearch(37.49472064,127.0362358866, response); }, }).data("ui-autocomplete")._renderItem = autoCompleteRenderSearch; } $("#search").keypress(function(event){ if(event.which==13){ init_price(); change_range(); if($("#next_page").length > 0) $("#next_page").val("0"); $("#keyword_front").val($("#search").val()); if($("#keyword_front").val()){ $("#search_type").val(""); $("#search_value").val(""); $("#lat").val(""); $("#lng").val(""); $("#zoom").val(""); } } }); $("#go_keyword").click(function(e){ init_price(); change_range(); if($("#next_page").length > 0) $("#next_page").val("0"); $("#keyword_front").val($("#search").val()); if($("#keyword_front").val()){ $("#search_type").val(""); $("#search_value").val(""); $("#lat").val(""); $("#lng").val(""); $("#zoom").val(""); } }); $("#search_form").on("submit", function(e) { if($.isNumeric($("#search").val())){ $.ajax({ url: "/product/product_check/"+$("#search").val(), dataType: "json", success: function(data) { if(data){ $("#keyword_front").val(""); location.href="/product/view/"+$("#search").val(); } else{ msg("error" ,"매물 번호 자료가 없습니다."); } } }); return false; } }); /* 클릭으로 가격검색 하는 기능 추가 */ var search_priceLabelObj; search_form.find(".price-label").focus(function (event) { end_price_trim(); search_priceLabelObj=$(this); search_form.find(".price-range").addClass("hide"); search_form.find("#"+$(this).data("dropdownId")).removeClass("hide"); }); /* 가격선택하면 창이 닫혀버리는 것을 막는다. */ search_form.find(".band-wrapper .dropdown-menu").click(function (event) { event.stopPropagation(); }); search_form.find(".right_search_wrap .dropdown-menu").click(function (event) { event.stopPropagation(); }); search_form.find(".button-section .dropdown-menu").click(function (event) { event.stopPropagation(); }); //버튼 클릭하면 버튼과 함께 있는 첫 번째 값에 포커스가 가도록 한다. var btn; search_form.find(".btn-price").click(function(event){ btn = $(this); setTimeout(function(){ btn.parent().find(".price-label").first().focus();},0); }); search_form.find(".price-range li").click(function(event){ search_priceLabelObj.val($(this).attr("data-value")); //focus되어 있는 곳에 선택된 값을 입력해 준다. var curElmIndex=search_form.find( ".price-label" ).index( search_priceLabelObj ); end_price_trim(); if(curElmIndex % 2 == 0){ search_form.find(".price-range li").removeClass("hide"); search_form.find( ".price-label" ).eq(curElmIndex+1).focus(); }else{ btn.dropdown('toggle'); //최근 눌렸던 버튼을 토글한다. if($(this).attr("notsubmit")==undefined){ send_form(); } } }); search_form.find('.price-label').keypress(function(event){ if(event.which==13){ btn.dropdown('toggle'); //최근 눌렸던 버튼을 토글한다. //search_form.find('.price_select').removeClass('open'); if($(this).attr("notsubmit")==undefined){ send_form(); } } }); }); /** * 검색 결과로 가져온 결과를 보여주기위한 함수. 2016년 5월 6일 * 주소와 지하철 */ function autoCompleteRenderSearch(ul, item) { if(item.type=="address"){ return $("
  • ").data("item.autocomplete", item).append(item.title).appendTo(ul); } else { return $("
  • ").data("item.autocomplete", item).append(item.title+'('+item.hosun+'호선)').appendTo(ul); } } /** * 검색 결과를 반환 */ function totalSearch(lat,lng, response){ //숫자일 경우에는 매물검색으로 인식해서 해당 매물번호로 이동되므로 아무 것도 하지 않는다. if($.isNumeric($("#search").val())){ return false; } else { $.ajax({ url: "/search/total/"+lat+"/"+lng, type: "POST", data: { search: $("#search").val() }, dataType: "json", success: function(data) { if(data!=""){ response( $.map( data, function( item ) { return { id: item.id, title: item.title, type: item.type, hosun: item.hosun, lat: item.lat, lng: item.lng }; })); } } }); } } /** * 검색을 하다가 초기화를 누르면 모든 검색 내용이 초기화된다. */ function search_reset(submit){ loading_delay(true); $("#search_form").find("select").not(".sorting_select").each(function() { $(this).val(""); }); $("#search_form").find("input").each(function() { $(this).val(""); $(this).prop("selected",false); $(this).prop("checked",false); }); $('#sell_min').html("0"); $('#sell_max').html("0"); $('#monthly1_min').html("0"); $('#monthly1_max').html("0"); $('#monthly2_min').html("0"); $('#monthly2_max').html("0"); $('#total_floor_area_min').html("0"); $('#total_floor_area_max').html("0"); $('#structure_area_min').html("0"); $('#structure_area_max').html("0"); $('#plottage_area_min').html("0"); $('#plottage_area_max').html("0"); $('#rent_area_min').html("0"); $('#rent_area_max').html("0"); $('#private_area_min').html("0"); $('#private_area_max').html("0"); $('input').iCheck('uncheck'); $('input').iCheck('update'); $('.btn-types').removeClass('active'); $('.btn-types-sell-btn').addClass('active'); $("#lat, #lng").val(""); $('#zoom').val('8'); if(submit){ calling = 1; setTimeout(function () { loading_delay(false); calling = 0; }, 400); send_form(); if(typeof init_position == 'function'){ init_position(); } } } /** * 새로운 가격검색(클릭으로 검색)에서 최소값을 선택하였을 때 최대값은 최소값보다 큰 값들을 선택하기 위한 함수 */ function end_price_trim(){ if(search_form.find("input[name='sell_start']").val()!=""){ search_form.find("#sell-price-max li").each(function(){ if(eval(search_form.find("input[name='sell_start']").val()) >= eval($(this).attr("data-value"))){ $(this).addClass("hide"); } }); } if(search_form.find("input[name='monthly_deposit_start']").val()!=""){ search_form.find("#monthly_deposit-price-max li").each(function(){ if(eval(search_form.find("input[name='monthly_deposit_start']").val()) >= eval($(this).attr("data-value"))){ $(this).addClass("hide"); } }); } if(search_form.find("input[name='monthly_start']").val()!=""){ search_form.find("#monthly-price-max li").each(function(){ if(eval(search_form.find("input[name='monthly_start']").val()) >= eval($(this).attr("data-value"))){ $(this).addClass("hide"); } }); } if(search_form.find("input[name='total_floor_area_start']").val()!=""){ search_form.find("#total_floor_area-max li").each(function(){ if(eval(search_form.find("input[name='total_floor_area_start']").val()) >= eval($(this).attr("data-value"))){ $(this).addClass("hide"); } }); } if(search_form.find("input[name='structure_area_start']").val()!=""){ search_form.find("#structure_area-max li").each(function(){ if(eval(search_form.find("input[name='structure_area_start']").val()) >= eval($(this).attr("data-value"))){ $(this).addClass("hide"); } }); } if(search_form.find("input[name='plottage_area_start']").val()!=""){ search_form.find("#plottage_area-max li").each(function(){ if(eval(search_form.find("input[name='plottage_area_start']").val()) >= eval($(this).attr("data-value"))){ $(this).addClass("hide"); } }); } if(search_form.find("input[name='rent_area_start']").val()!=""){ search_form.find("#rent_area-max li").each(function(){ if(eval(search_form.find("input[name='rent_area_start']").val()) >= eval($(this).attr("data-value"))){ $(this).addClass("hide"); } }); } if(search_form.find("input[name='private_area_start']").val()!=""){ search_form.find("#private_area-max li").each(function(){ if(eval(search_form.find("input[name='private_area_start']").val()) >= eval($(this).attr("data-value"))){ $(this).addClass("hide"); } }); } } var send_form_flag=0; function send_form(){ if(!not_submit && send_form_flag==0){ init_price(); change_range(); send_form_flag=1; setTimeout(function () { $("#next_page").val("0"); /*** 검색 조건이 바뀌면 다시 페이지가 0이 되면서 시작되어야 한다. more가 되면 submit이 아닌 success 된 이후에 ajax만 동작하면 된다. ***/ $("#search_form").trigger("submit"); send_form_flag=0; }, 100); } } function bed_display(){ var bed_show = function(){ $("#bed_fa").removeClass("fa-chevron-down").addClass("fa-chevron-up"); $(".bed_li").slideDown("slow"); } var bed_hide = function(){ $("#bed_fa").removeClass("fa-chevron-up").addClass("fa-chevron-down"); $(".bed_li").slideUp("slow"); } if($(".bed_li").css("display") != "none") bed_hide(); else bed_show(); } function bath_display(){ var bath_show = function(){ $("#bath_fa").removeClass("fa-chevron-down").addClass("fa-chevron-up"); $(".bath_li").slideDown("slow"); } var bath_hide = function(){ $("#bath_fa").removeClass("fa-chevron-up").addClass("fa-chevron-down"); $(".bath_li").slideUp("slow"); } if($(".bath_li").css("display") != "none") bath_hide(); else bath_show(); } /** * 검색시 매물 유형을 선택하는 기능이다. * 하나를 선택하면 모두 동일한 값으로 세팅한다. */ function set_type(val){ $(".type").val(val); $("#type").val(val); } /** * 검색 방식을 변경할 때 값을 초기화하는 함수 */ function search_tab_reset(){ $("#type1, #type2, #type3").val($("#type").val()); $("#sido, #gugun, #subway_local, #hosun, #station, #search").val(""); $("#gugun").html(''); $("#dong").html(''); $("#hosun").html(''); $("#station").html(''); } function get_sido(form,type){ $.getJSON("/address/get_sido/"+type+"/"+Math.round(new Date().getTime()),function(data){ var str = ""; var selected = false; $.each(data, function(key, val) { var sido_label; if(typeof val["sido_label"] !== 'undefined') { sido_label = val["sido_label"]; } else { sido_label = val["sido"]; } if( $("#sido_val").val()==val["sido"] ){ str = str + ""; selected = true; } else { str = str + ""; } }); $("#"+form).find("#sido").html(str); /** 값이 있으면 change event와는 별개로 get_gugun을 호출해 준다. **/ if(selected) get_gugun(form, type, $("#sido").val()); $("#"+form).find("#sido").change(function(){ $.getJSON("/address/get_sido_one/"+encodeURI(this.value)+"/"+Math.round(new Date().getTime()),function(data){ $("#"+form).find("#search_type").val("sido_address"); $("#"+form).find("#search_value").val(data["sido"]); $("#"+form).find("#lat").val(data["lat"]); $("#"+form).find("#lng").val(data["lng"]); $("#"+form).find("#sido_val").val(data["sido"]); }); if($("#sido_submit").length > 0){ if($("#sido_submit").val()){ send_form(); } } get_gugun(form, type, this.value); }); }); } function get_gugun(form,type,sido){ $.getJSON("/address/get_gugun/"+type+"/"+encodeURI(sido)+"/"+Math.round(new Date().getTime()),function(data){ var str = ""; var selected = false; $.each(data, function(key, val) { var gugun_label; if(typeof val["gugun_label"] !== 'undefined') { gugun_label = val["gugun_label"]; } else { gugun_label = val["gugun"]; } if( $("#gugun_val").val()==val["parent_id"] ){ str = str + ""; selected = true; } else { str = str + ""; } }); $("#"+form).find("#gugun").html(str); if(selected) get_dong(form, type, $("#gugun").val()); /** 초기값만 세팅하는 것이기 때문에 이것만 호출해 주면 된다. **/ $("#"+form).find("#gugun").change(function(){ $.getJSON("/address/get_parent/"+this.value+"/"+Math.round(new Date().getTime()),function(data){ $("#"+form).find("#search_type").val("parent_address"); $("#"+form).find("#search_value").val(data["id"]); $("#"+form).find("#lat").val(data["lat"]); $("#"+form).find("#lng").val(data["lng"]); if($("#gugun_submit").length > 0){ if($("#gugun_submit").val()){ if($("#next_page").length > 0) $("#next_page").val("0"); } } }); get_dong(form, type, this.value); }); //refresh_lang(); }); } function get_dong(form,type,parent_id){ if(type=="admin") send_form(); $.getJSON("/address/get_dong/"+type+"/"+parent_id+"/"+Math.round(new Date().getTime()),function(data){ var str = ""; var selected = false; $.each(data, function(key, val) { var dong_label; if(typeof val["dong_label"] !== 'undefined') { dong_label = val["dong_label"]; } else { dong_label = val["dong"]; } if( $("#dong_val").val()==val["id"] ){ str = str + ""; selected = true; } else { str = str + ""; } }); $("#"+form).find("#dong").html(str); if(selected) get_address(form, $("#dong_val").val()); /** 초기값만 세팅하는 것이기 때문에 이것만 호출해 주면 된다. **/ $("#"+form).find("#dong").change(function(){ $("#next_page").val("0"); get_address(form,this.value); }); //refresh_lang(); }); } function get_address(form,id){ if(id){ $.getJSON("/address/get/"+id+"/"+Math.round(new Date().getTime()),function(data){ $("#"+form).find("#lat").val(data["lat"]); $("#"+form).find("#lng").val(data["lng"]); $("#"+form).find("#search_type").val("address"); $("#"+form).find("#search_value").val(id); $("#"+form).find("#zoom").val(2); send_form(); }); } } function left_loading(){ calling = 1; loading_delay(true); setTimeout(function () { loading_delay(false); calling = 0; }, 400); $("#next_page").val("0"); send_form(); } function get_subway_local(form){ $.getJSON("/subway/get_local/"+Math.round(new Date().getTime()),function(data){ var str = ""; var selected = false; $.each(data, function(key, val) { if( $("#subway_local_val").val()==val["local"] ){ str = str + ""; selected = true; } else { str = str + ""; } }); $("#"+form).find("#subway_local").html(str); if(selected) get_hosun(form, $("#subway_local_val").val()); /** 초기값만 세팅하는 것이기 때문에 이것만 호출해 주면 된다. **/ $("#"+form).find("#subway_local").change(function(){ get_hosun(form, this.value); }); }); } function get_hosun(form,local){ var url = "get_hosun"; $.getJSON("/subway/"+url+"/"+local+"/"+Math.round(new Date().getTime()),function(data){ var str = ""; var selected = false; $.each(data, function(key, val) { var hosun_label; if(typeof val["hosun_label"] !== 'undefined') { hosun_label = val["hosun_label"]; } else { hosun_label = val["hosun"]; } if( $("#hosun_val").val()==val["hosun_id"] ){ str = str + ""; selected = true; } else { str = str + ""; } }); $("#"+form).find("#hosun").html(str); if(selected) get_station(form, local, $("#hosun_val").val()); /** 초기값만 세팅하는 것이기 때문에 이것만 호출해 주면 된다. **/ $("#"+form).find("#hosun").change(function(){ get_station(form,local,this.value); }); //refresh_lang(); }); } function get_station(form,local,hosun){ var url = "get_station"; $.getJSON("/subway/"+url+"/"+hosun+"/"+Math.round(new Date().getTime()),function(data){ var str = ""; var selected = false; $.each(data, function(key, val) { var name_label; if(typeof val["name_label"] !== 'undefined') { name_label = val["name_label"]; } else { name_label = val["name"]; } if( $("#station_val").val()==val["id"] ){ str = str + ""; selected = true; } else { str = str + ""; } }); $("#"+form).find("#station").html(str); if(selected) get_subway(form, $("#station_val").val()); /** 초기값만 세팅하는 것이기 때문에 이것만 호출해 주면 된다. **/ $("#"+form).find("#station").change(function(){ $("#next_page").val("0"); get_subway(form,this.value); }); //refresh_lang(); }); } function get_subway(form,id){ $.getJSON("/subway/get/"+id+"/"+Math.round(new Date().getTime()),function(data){ $("#"+form).find("#lat").val(data["lat"]); $("#"+form).find("#lng").val(data["lng"]); $("#"+form).find("#search_type").val("subway"); $("#"+form).find("#search_value").val(id); $("#"+form).find("#zoom").val(2); send_form(); }); } function init_price(){ search_form.find(".price_range").hide(); $(".sell_search").fadeIn(); $(".rent_search").hide(); } /** * 배열에 값이 있는지 여부를 체크하는 함수 */ function contains(a, obj) { for (var i = 0; i < a.length; i++) { if (a[i] === obj) { return true; } } return false; } function numberWithCommas(x) { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } function get_gugun_modal(obj,sido){ $("#sido_label").addClass("active"); $("#label_text").text("구군을 선택하세요"); $("#sido_section > ul > li > div> button").removeClass("active"); $("#gugun_label").removeClass("active"); $("#dong_label").removeClass("active"); $(obj).addClass("active"); $("#sido").val($(obj).text()); $("#dong_section > ul > li > div").html(""); $.getJSON("/address/get_gugun/front/"+encodeURI(sido)+"/"+Math.round(new Date().getTime()),function(data){ var str = ""; $.each(data, function(key, val) { str = str + ""; }); $("#gugun_section > ul > li > div").html(str); }); } function get_dong_modal(obj,parent_id){ $("#gugun_label").addClass("active"); $("#label_text").text("읍면동을 선택하세요"); $("#gugun_section > ul > li > div > button").removeClass("active"); $("#dong_label").removeClass("active"); $(obj).addClass("active"); $("#gugun").val($(obj).text()); $.getJSON("/address/get_dong/front/"+parent_id+"/"+Math.round(new Date().getTime()),function(data){ var str = ""; $.each(data, function(key, val) { str = str + ""; }); $("#dong_section > ul > li > div").html(str); }); } function area_search(obj,id,lat,lng){ $("#search_type").val("address"); $("#search_value").val(id); $("#lat").val(lat); $("#lng").val(lng); $("#zoom").val(2); $("#dong_label").addClass("active"); $("#dong_section > ul > li > div > button").removeClass("active"); $(obj).addClass("active"); send_form(); $("#address_modal").modal("hide"); } function get_hosun_modal(obj,local){ $("#local_label").addClass("active"); $("#label_text").text("호선을 선택하세요"); $("#local_section > ul > li > div > button").removeClass("active"); $("#hosun_label").removeClass("active"); $(obj).addClass("active"); $("#station_section > ul > li > div").html(""); $.getJSON("/subway/get_hosun/"+local+"/"+Math.round(new Date().getTime()),function(data){ var str = ""; $.each(data, function(key, val) { var hosun = ($.isNumeric(val["hosun"])) ? val["hosun"]+"호선" : val["hosun"]; str = str + ""; }); $("#hosun_section > ul > li > div").html(str); }); } function get_station_modal(obj,hosun_id){ $("#hosun_label").addClass("active"); $("#label_text").text("역을 선택하세요"); $("#hosun_section > ul > li > div > button").removeClass("active"); $("#station_label").removeClass("active"); $(obj).addClass("active"); $.getJSON("/subway/get_station/"+hosun_id+"/"+Math.round(new Date().getTime()),function(data){ var str = ""; $.each(data, function(key, val) { str = str + ""; }); $("#station_section > ul > li > div").html(str); }); } function subway_search(obj,id,lat,lng,subway_local,hosun){ $("#search_type").val("subway"); $("#search_value").val(id); $("#lat").val(lat); $("#lng").val(lng); $("#subway_local_val").val(subway_local); $("#hosun_val").val(hosun); $("#station_val").val(id); $("#zoom").val(2); $("#station_label").addClass("active"); $("#station_section > ul > li > div > button").removeClass("active"); $(obj).addClass("active"); send_form(); $("#subway_modal").modal("hide"); } /** * 매매, 임대 스위칭 */ function type_toggle(val,finish){ if($("#right_address_id").val()!="" || $("#right_subway_id").val()!="" || $("#structure_id").val()!=""){ if(typeof right_close=="function") right_close(); } search_reset(false); $(".toggle_button").find("a").removeClass("active"); if( val=="sell" ){ if(finish=="1"){ $("#sell_finish_btn").addClass("active"); }else{ $("#sell_btn").addClass("active"); } $(".sell_title").show(); $(".rent_title").hide(); }else{ if(finish=="2"){ $("#shop_btn").addClass("active"); }else{ $("#rent_btn").addClass("active"); } $(".sell_title").hide(); $(".rent_title").show(); } $("#type").val(val); $("#finish").val(finish); send_form(); } function change_range(){ $(".range_display_area").each(function(){ var flag = false; $(this).find("span").each(function(){ if( $(this).html() != "0" ) flag =true; }); if(flag){ $(this).show(); } else { $(this).hide(); } }); }