/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

var numberPattern = /[0-9]+/g;
function prepareFormSelectPicker(data, selector) {
    selector = $(selector);
    var i, l = data.length, array = [];
    var html = "";
    if (l) {

        for (i = 0; i < l; i++) {
            array.push($.extend(true, data[i], {
                text: data[i].name,
                value: data[i].data,
                data: {
                    subtext: data[i].name
                }
            }));
            html += '<option value="' + data[i].value + '" data-tokens="' + data[i].chat + '">' + data[i].name + '</option>';
        }
        selector.prop('disabled', false);
        selector.html(html).selectpicker('refresh');

    } else {
        selector.prop('disabled', true);
        selector.selectpicker('refresh');
    }
}
function prepareFormSelectPickerOptionGroup(data, selector) {
    selector = $(selector);
    var i, l = data.length, array = [];
    var html = "";
    if (l) {
        let initOptGroup = false;
        let optGtoupType = "";
        selector.prop("placeholder", "Êâàðòàë");
        for (i = 0; i < l; i++) {
            array.push($.extend(true, data[i], {
                text: data[i].name,
                value: data[i].data,
                data: {
                    subtext: data[i].name
                }
            }));
            if (!initOptGroup || optGtoupType != data[i].type) {
                initOptGroup = true;
                optGtoupType = data[i].type;
                html += `<optgroup label="${data[i].name}">`;
            } else {
                html += '<option value="' + data[i].value + '" data-tokens="' + data[i].chat + '">' + data[i].name + '</option>';
            }
            if (initOptGroup) {
                html += '</optiongroup>';
            }
        }
        selector.prop('disabled', false);
        selector.html(html).selectpicker('refresh');

    } else {
        selector.prop('disabled', true);
        selector.selectpicker('refresh');
    }
}
function prepareQuartSumoSelect(townid, data_mquart_arr = '', $quart) {
    $quart.selectpicker('val', 0);
    $quart.prop('disabled', true);
    $quart.selectpicker('refresh');
    let data = {};
    data.townid = townid

    $.ajax({
        url: '/get_quarter_imotbg_v8.php',
        type: 'post',
        dataType: 'json',
        timeout: 20000,
        data: data,
        error: function () {

        },
        success: function (data) {
            if (data.arraydata.length > 1) {
                prepareFormSelectPickerOptionGroup(data.arraydata, $quart);
                if (data_mquart_arr.length > 0) {


                    $quart.selectpicker('val', data_mquart_arr)
                    $quart.selectpicker('refresh');

                }
            } else {

            }

        }
    });
}
function loadSearchData($form) {

    let data = {};
    data = $form.serialize();
    loadMarkers(data);

}
$.fn.selectpicker.Constructor.DEFAULTS.multipleSeparator = ' | ';
function loadFormSearchData(where_search = {}) {

}
$(function () {

    //SERACH FORM
    var $form_search = $("form[name='multi_form']");
    var $country = $("[name='location_country']", $form_search);
    var $town = $("[name='location_town']", $form_search);
    var $quart = $("[name='saquarter[]']", $form_search);
    var $ptype = $("[name='mstip[]']", $form_search);

    //LAZY
    prepareFormSelectPicker(country_ac_arr, $country);
    prepareFormSelectPicker(town_ac_arr, $town);
    prepareFormSelectPicker(mstip_arr, $ptype);
if(town_sf_id){
     $town.selectpicker('val', town_sf_id);
        $town.selectpicker('refresh');
    
}
    if (!hasQuartSelect) {
        $quart.prop('disabled', true);
    } else {

        if (town_sf_id > 0) {
            prepareQuartSumoSelect(town_sf_id, mquart_arr, $quart);
        } else {
            $quart.prop('disabled', true);
        }
    }

    if (hasPtypeSelect && mstip_sf_arr.length > 0) {
        $ptype.selectpicker('val', mstip_sf_arr);
        $ptype.selectpicker('refresh');
    }
//
    $quart.prop('disabled', true);
    $quart.selectpicker('refresh');
    //
    $(".bs-select-all").html(obBtnLabel);
    $(".bs-deselect-all").html(cancelBtnLabel)
    $(".bs-select-all").on('click', function (e) {
        e.preventDefault();
        $(this).closest('.bootstrap-select').find('.selectpicker').selectpicker('toggle');
    });
    //
    $country.on('change.bs.select', function (e, clickedIndex, isSelected, previousValue) {


        if ($(this).val() != previousValue) {
            $town.selectpicker('val', 0).prop('disabled', false);
            $quart.selectpicker('val', 0).prop('disabled', false);
            // $ptype.selectpicker('val', 0).prop('disabled', false);

            $town.prop('disabled', true);
            $town.selectpicker('refresh');
            $quart.prop('disabled', true);
            $quart.selectpicker('refresh');
            $("[name='loc_country']", $form_search).val($(this).val());
            $("[name='loc_region']", $form_search).val(0);
            $("[name='loc_town']", $form_search).val(0);




            $.ajax({
                url: '/func/ajax/search_simple_form_ajax_town_v8.php',
                type: 'post',
                dataType: 'json',
                timeout: 20000,
                data: $form_search.serialize(),
                error: function () {

                },
                success: function (data) {

                    prepareFormSelectPicker(data.arraydata, $town);
                }
            });
        }
    });
    $town.on('change.bs.select', function (e, clickedIndex, isSelected, previousValue) {
        console.log("town");
        if ($(this).val() != previousValue) {
            $quart.selectpicker('val', 0);
            $quart.prop('disabled', true);
            $quart.selectpicker('refresh');
            let data = {};
            data.townid = $(this).val();
            $("[name='loc_town']", $form_search).val($(this).val());
            $.ajax({
                url: '/get_quarter_imotbg_v8.php',
                type: 'post',
                dataType: 'json',
                timeout: 20000,
                data: data,
                error: function () {

                },
                success: function (data) {
                    if (data.arraydata.length > 1) {
                        prepareFormSelectPickerOptionGroup(data.arraydata, $quart);
                    } else {

                    }

                }
            });
        }
    });
    $quart.on('hide.bs.select', function (e, clickedIndex, isSelected, previousValue) {
        console.log("quart");
        if ($(this).val() != previousValue) {
            loadSearchData($form_search);
        }
    });
    $ptype.on('hide.bs.select', function (e, clickedIndex, isSelected, previousValue) {

        if ($(this).val() != previousValue) {
            loadSearchData($form_search);
        }
    });
    $("[name='sadx'],[name='sady']").on("change", function (e) {
        loadSearchData($form_search);
    })
    $("[name='maxprice']").on("change", function (e) {
        var oldValue = this.defaultValue;
        var newValue = this.value;
        // console.log(oldValue, newValue)
    })
    var timeoutPrice = null;
    $("[name='maxprice']").on('focusin', function () {
        // console.log("Saving value " + $(this).val());
        $(this).data('val', $(this).val());
    });
    $("[name='maxprice']").on("keypress", function (e) {
        if (e.keyCode == 13) {
            e.preventDefault();
        }
    })
    $("[name='maxprice']").on('keyup', function (å) {
        var prev = $(this).data('val');
        var current = $(this).val();

        //console.log("Prev value " + prev);
        //console.log("New value " + current);
        if (prev != current) {
            if (timeoutPrice) {
                clearTimeout(timeoutPrice);
            }
            timeoutPrice = setTimeout(function () {
                loadSearchData($form_search);
            }, 1000);
        }
    });

    function loadSearchData($form) {

        let data = {};
        data = $form.serialize();

        $('[name="forceUpdateTown"]', $form).val(0);
        return data;
    }
    $.fn.selectpicker.Constructor.DEFAULTS.multipleSeparator = ' | ';
    function loadFormSearchData(where_search = {}) {

    }
    $("form[id='search_filter']").submit(function (e) {
        e.preventDefault();
        // $('#search-filter').foundation('reveal', 'close');

    })


    $('#search_filter_button').click(function () {

        //find the form that this link is in and trigger a submit event for the form
        $('#multi_form').trigger('submit');

        //return false to stop the default behavior of the link
        return false;
    });

    $("[name*='preset'][type=checkbox]", "[id*='multi_form']").change(function (e) {
        $(`[name*='preset'][type=checkbox][value='${$(this).val()}']`, "form[id='search_filter']").prop("checked", $(this).is(":checked"));
    })
    $("[name*='preset'][type=checkbox]", "[id*='search_filter']").change(function (e) {
        $(`[name*='preset'][type=checkbox][value='${$(this).val()}']`, "[id*='multi_form']").prop("checked", $(this).is(":checked"));

    })
    $("[id*='multi_form']").submit(
            function (e) {
                e.preventDefault();
                var error = false;


                var maxprice = "";
                // var maxprice = "&maxprice_curr=" + parseInt($("input[name='maxprice_format']").val());


                if (Boolean($("input[name='maxprice_format']").val())) {
                    maxprice += "&maxprice_curr=" + $("input[name='maxprice_format']").val().match(numberPattern).join([]);
                } else {
                    if (Boolean($("input[name='maxprice']").val())) {
                        maxprice += "&maxprice_curr=" + $("input[name='maxprice']").val().match(numberPattern).join([]);
                    }

                }
                if (Boolean($("input[name='minprice']").val())) {
                    maxprice += "&minprice_curr=" + $("input[name='minprice']").val().match(numberPattern).join([]);
                }
                if (error) {
                    return null;
                }

                $("[name='csel']").val($(this).val());


                var sad = "";


                var get_loc = "&country_id=" + $("[name='loc_country']", form).val();
                get_loc += "&stown=" + $("[name='loc_town']", form).val();
                if ($("#sregion").length == 1) {
                    if ($("#sregion :selected").val() > 0) {
                        get_loc += "&sregion=" + $("#sregion :selected").val();
                    }
                }
                if (parseInt($("[name='loc_type']", form).val()) != 6) {

                    var sad = "";
                    var madevv = "";
                    var mstip = "";
                    var mbasic = "";
                    var preset = "";
                    var rwtop = "";
                    var ntype = "";
                    var seotype = "";
                    var rwplace = '';
                    var rwregion = '';
                    var noff = '';
                    var snew_build = '';
                    var stop='';
                    if ($("[name='sadx']").is(":checked")) {
                        sad += "&sadx=" + $("[name='sadx']").val();
                    }
                    if ($("[name='sady']").is(":checked")) {
                        sad += "&sady=" + $("[name='sady']").val();
                    }

                    if ($("[name='top_offer_selection']").is(":checked")) {
                        sad += "&top_offer_selection=1&noff=1";
                    }
                    if ($("[name='sseller']").is(":checked")) {
                        sad += "&sseller=" + $("[name='sseller']").val();
                    }
                    $("[name='preset'][type=checkbox]:checked").each(function (i, v) {
                        preset += "&preset=" + $(this).val();
                    })
                    $("[name='snew_build'][type=checkbox]:checked").each(function (i, v) {
                        snew_build += "&snew_build=" + $(this).val();
                    })
                    $("[name='rwtop'][type=checkbox]:checked").each(function (i, v) {
                        rwtop += "&rwtop=" + $(this).val();
                    })

                    $("[name='sdevv'][type=checkbox]:checked").each(function (i, v) {
                        madevv += "&sdevv=" + $(this).val();
                    })
                    $("[name='sadevv'][type=checkbox]:checked").each(function (i, v) {
                        madevv += "&sadevv[]=" + $(this).val();
                    })
                    $("[name='sadevv[]'] :selected").each(function (i, v) {
                        madevv += "&sadevv[]=" + $(this).val();
                    })
$("[name='stop[]'][type=checkbox]:checked").each(function (i, v) {
                        stop += "&stop[]=" + $(this).val();
                    })
                    $("#mstip :selected").each(function (i, v) {
                        mstip += "&mstip[]=" + $(this).val();
                    })

                    $("#mbasic :selected").each(function (i, v) {
                        mbasic += "&mbasic[]=" + $(this).val();
                    })
                    var mquart = "";
                    $("#squart :selected").each(function (i, v) {
                        mquart += "&mquart[]=" + $(this).val();
                    })
                    if ($("[name='sadevv[]'][class='SumoSelect']").length > 0) {
                        $.each($("[name='sadevv[]'][class='SumoSelect']").val(), function (i, v) {
                            madevv += "&sadevv[]=" + parseInt(v);
                        })
                    }
                    var sref_no = "";
                    if ($("#sref_no").length == 1) {
                        if ($("#sref_no").val() > 0) {
                            sref_no = "&sref_no=" + $("#sref_no").val();
                        }
                    }
                    var utm = '';
                    if ($("[name='utm_source']").length == 1) {
                        if ($("[name='utm_source']").is(":checked")) {
                            utm += "&utm_source=" + $("[name='utm_source']").val();
                            utm += "&utm_medium=" + $("[name='utm_medium']").val();
                            utm += "&utm_campaign=" + $("[name='utm_campaign']").val();
                            utm += "&utm_content=" + $("[name='utm_content']").val();
                            $("[name='noff'][type=hidden]").each(function (i, v) {
                                noff += "&noff=" + $(this).val();
                            })
                            $("[name='rwtop'][type=hidden]").each(function (i, v) {
                                rwtop += "&rwtop=" + $(this).val();
                            })
                            $("[name='rwplace'][type=hidden]").each(function (i, v) {
                                rwplace += "&rwplace=" + $(this).val();
                            })
                            $("[name='rwregion'][type=hidden]").each(function (i, v) {
                                rwregion += "&rwregion=" + $(this).val();
                            })
                            $("[name='ntype'][type=hidden]").each(function (i, v) {
                                ntype += "&ntype=" + $(this).val();
                            })
                            $("[name='seotype'][type=hidden]").each(function (i, v) {
                                seotype += "&seotype=" + $(this).val();
                            })
                        }
                    }
                     $("[name='l'][type=hidden]").each(function (i, v) {
                                seotype += "&l=" + $(this).val();
                            })
                    var has_video_viewings = "";
                    $("[name='has_video_viewings'][type=checkbox]:checked").each(function (i, v) {
                        has_video_viewings += "&has_video_viewings=" + $(this).val();
                    })
                    $("[name='has_360_viewings'][type=checkbox]:checked").each(function (i, v) {
                        has_video_viewings += "&has_360_viewings=" + $(this).val();
                    })
                    var q_add = new Array();


                    var location = site_url_search
                            + get_loc + mstip + mbasic + mquart + madevv + sref_no
                            + maxprice + "&spredlog="
                            + $("[name='spredlog']", form).val() + "&action=1&csel="
                            + $("[name='csel']", form).val() + "&searchform=1" + sad + q_add + utm + preset + rwtop + ntype + seotype + rwplace + rwregion + noff + has_video_viewings + snew_build+stop;
                    var location_param = get_loc + mstip + mbasic + mquart + madevv + sref_no
                            + maxprice + "&spredlog="
                            + $("[name='spredlog']", form).val() + "&action=1&csel="
                            + $("[name='csel']", form).val() + "&searchform=1" + sad + q_add + utm + preset + rwtop + ntype + rwplace + rwregion + seotype + noff + has_video_viewings + snew_build+stop;
                }
                var hasAdvanceFilter = false;
                if ($("form[id='search_filter']").length == 1) {
                    var fieldsCheck = $("form[id='search_filter']").serializeArray();
                    $.each(fieldsCheck, function (i, val) {
                        if (val.value != '' && val.value !== undefined) {
                            fields = $("form[id='search_filter']").serialize();
                            hasAdvanceFilter = true;
                        }
                    });
                }
                if ($("div[id='search_filter']").length == 1) {
                    var fields = $("div[id='search_filter']").find('input,select').filter(function () {
                        return ((!!this.value) && (!!this.name));
                    }).serialize();
                    if (fields.length > 0)
                        hasAdvanceFilter = true;

                }

                if (hasAdvanceFilter) {
                    location += "&" + fields;
                    window.location = location;
                } else {
                    $.ajax({
                        type: "post",
                        url: "/generate_form_link_v8.php?" + location_param,

                        dataType: "json",
                        error: function (jqXHR, textStatus, errorThrown) {
                           // console.error("AJAX error:", textStatus, errorThrown);
                        },
                        success: function (data) {
                            if (data.succes == 1) {
                                window.location = data.url;
                            } else {
                                window.location = location + '&hmsf=1';
                            }

                        }
                    });
                }


                // alert(location);

                // window.location = location;

            });

});