$(document).ready(function() { /** 주소 검색 초기화 **/ get_sido("search_form",'front'); /** 지하철 검색 초기화 **/ get_subway_local("search_form"); /** 검색 탭 처리 **/ $("ul.nav-search li").click(function(e){ search_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.5311831025777,127.008898087233, response); }, }).data("ui-autocomplete")._renderItem = autoCompleteRenderSearch; } /** * 검색 결과로 가져온 결과를 보여주기위한 함수. * 주소와 지하철 */ 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 }; })); } } }); } } $("#search").keypress(function(event){ if(event.which==13){ if($.isNumeric($(this).val())){ $.ajax({ async: true, url: "/product/product_check/"+$(this).val(), type: "POST", success: function(data){ if(data){ location.href='/mobile/view/'+$(this).val(); } else{ alert("No 자료가 없습니다."); } } }); return false; } 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").attr("action","/search/set_search/grid/1"); var keyword_front = $("#search").val(); if(keyword_front==""){ keyword_front = $("#search_value").val(); } if($("#next_page").length > 0) $("#next_page").val("0"); $("#search_type").val("google"); $("#search").val(keyword_front); $("#search_value").val(keyword_front); $("#keyword_front").val(keyword_front); } } }); $("#go_keyword").click(function(){ if($("#search").val()){ if($.isNumeric($("#search").val())){ location.href="/mobile/view/"+$("#search").val(); return false; } $("#search_form").attr("action","/search/set_search/grid/1"); var keyword_front = $("#search").val(); if(keyword_front==""){ keyword_front = $("#search_value").val(); } if($("#next_page").length > 0) $("#next_page").val("0"); $("#search_type").val("google"); $("#search").val(keyword_front); $("#search_value").val(keyword_front); $("#keyword_front").val(keyword_front); $("#search_form").trigger("submit"); } else { location.href='/mobile/map'; } }); }); /** * 검색시 매물 유형을 선택하는 기능이다. * 하나를 선택하면 모두 동일한 값으로 세팅한다. */ function set_type(val){ $(".type").val(val); } /** * 검색 방식을 변경할 때 값을 초기화하는 함수 */ function search_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) { 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(){ get_gugun(form, type, this.value); }); }); } function get_gugun(form,type,sido){ $.getJSON("/address/get_gugun/"+type+"/"+encodeURI(sido)+"/",function(data){ var str = ""; var selected = false; $.each(data, function(key, val) { 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(){ $("#"+form).find("#search_type").val("parent_address"); $("#"+form).find("#search_value").val(this.value); $("#"+form).find("#lat").val(); $("#"+form).find("#lng").val(); get_dong(form, type, this.value); }); //refresh_lang(); }); } function get_dong(form,type,parent_id){ $.getJSON("/address/get_dong/"+type+"/"+parent_id+"/"+Math.round(new Date().getTime()),function(data){ var str = ""; var selected = false; $.each(data, function(key, val) { 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(){ get_address(form,this.value); }); //refresh_lang(); }); } function get_address(form,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); //$("#search_form").trigger("submit"); }); } 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){ $.getJSON("/subway/get_hosun/"+local+"/"+Math.round(new Date().getTime()),function(data){ var str = ""; var selected = false; $.each(data, function(key, val) { 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){ $.getJSON("/subway/get_station/"+hosun+"/"+Math.round(new Date().getTime()),function(data){ var str = ""; var selected = false; $.each(data, function(key, val) { 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(){ 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); //$("#search_form").trigger("submit"); }); } function init_price(){ $(".price_range").hide(); if($("input[name='type']:checked").val()=="installation"){ $(".price_sell").fadeIn(); $(".installation_label").fadeIn(); $(".sell_label").hide(); } else if($("input[name='type']:checked").val()=="sell"){ $(".price_sell").fadeIn(); $(".sell_label").fadeIn(); $(".installation_label").hide(); } else if($("input[name='type']:checked").val()=="full_rent"){ $(".price_full").fadeIn(); } else if($("input[name='type']:checked").val()=="monthly_rent"){ $(".price_rent").fadeIn(); } } function init_search(type, category, category_sub){ if(type=="") type = ""; /** 거래 유형 초기화 **/ $(".type_label").removeClass("active"); var type_obj = $("input[name='type']").filter("[value='"+type+"']"); type_obj.prop('checked', true); type_obj.parent().addClass("active"); init_price(); //슬라이드 영역 보여주기 $(".slider").each(function(){ /*** 슬라이드 초기화 ***/ $(this).noUiSlider({ start: [ parseInt($(this).attr("data-start")), parseInt($(this).attr("data-end")) ], range: {'min':0,'max':parseInt($(this).attr("data-max"))}, step: parseInt($(this).attr("data-step")) }, true); /*** 슬라이드와 가격정보 연동 ***/ $(this).Link('lower').to($("#"+$(this).attr("data-type")+"_start"),null,wNumb({decimals: 0})); $(this).Link('upper').to($("#"+$(this).attr("data-type")+"_end"),null,wNumb({decimals: 0})); /*** 가격 레벨 초기갑 표시 ***/ var str = "" var unit = price_unit; /** 금액단위 **/ if($(this).attr("data-type")=="sell") unit = sell_unit; str += numberWithCommas($("#"+$(this).attr("data-type")+"_start").val()); str += unit; str += " - "; if($("#"+$(this).attr("data-type")+"_end").val() < $(this).attr("data-max")){ str += numberWithCommas($("#"+$(this).attr("data-type")+"_end").val()); str += unit; } else { str += "No limit"; } $("#"+$(this).attr("data-type")+"_label").html(str); }); /*** 슬라이드 수정시 행동 ***/ $(".slider").on({ slide: function(){ var str = "" var unit = price_unit; /** 금액단위 **/ if($(this).attr("data-type")=="sell") unit = sell_unit; str += numberWithCommas($("#"+$(this).attr("data-type")+"_start").val()); str += unit; str += " - "; if(parseInt($("#"+$(this).attr("data-type")+"_end").val()) < parseInt($(this).attr("data-max"))){ str += numberWithCommas($("#"+$(this).attr("data-type")+"_end").val()); str += unit; } else { str += "No limit"; } $("#"+$(this).attr("data-type")+"_label").html(str); }, change: function(){ //if( $("#search_form").attr("action") != "/search/set_search/main" ) $('#search_form').submit(); } }, true); /** 매물유형(category) 초기화 **/ var cat = category.split(","); $("input[name='category[]']").each(function(){ if( contains(cat, $(this).val()) ) { $(this).prop('checked',true); if($(this).parent().hasClass("mobile_box")){ $(this).parent().addClass("active"); } } }); if(category_sub!=null){ var cat = category_sub.split(","); $("input[name='category_sub[]']").each(function(){ if( contains(cat, $(this).val()) ) { $(this).prop('checked',true); } }); } $(".category_checkbox").iCheck({ checkboxClass: 'icheckbox_square-red', radioClass: 'iradio_square-red', increaseArea: '20%' // optional }); } /** * 배열에 값이 있는지 여부를 체크하는 함수 */ 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, ","); } /** * 매물 종류에서 서브 종류가 변경되었을 때 동작 */ var category_sub_change = function(){ $("input[name='category[]']").on('ifChanged', function(){ if($(this).prop("checked")){ $(".category_sub_"+$(this).val()).slideDown("slow"); } else{ $(".category_sub_"+$(this).val()).attr("checked",false); $(".category_sub_"+$(this).val()).iCheck('uncheck'); $(".category_sub_"+$(this).val()).iCheck('update'); $(".category_sub_"+$(this).val()).slideUp("slow"); } }); $("input[name='category[]']").each(function(){ if($(this).prop("checked")){ $(".category_sub_"+$(this).val()).show(); } else{ $(".category_sub_"+$(this).val()).attr("checked",false); $(".category_sub_"+$(this).val()).iCheck('uncheck'); $(".category_sub_"+$(this).val()).iCheck('update'); } }); }