/**
 * Created by JetBrains PhpStorm.
 * User: Max
 * Date: 01.11.11
 * Time: 14:52
 * To change this template use File | Settings | File Templates.
 */

jQuery.fn.ajaxMenu = function (options) {

    // default configuration
    var options = jQuery.extend({
        ajaxBackend:'backend.php',
        ajaxTarget:'#target',
        defVal:'all',
        initialization:false,
        initializationBackend:'',
        initializationData:'',
        initializationForm:false,
        searchFilter:false,
        adId:0,
        addValue:false
    }, options);

    return this.each(function () {
        jQuery.ajaxSetup({
            cache:false
        });

        if (options.initialization === true) {
            jQuery.post('' + options.initializationBackend + '', {serverData:options.initializationData}, function (data) {
                // add output data to html
                jQuery('' + options.ajaxTarget + '').append(data);
                var formType = jQuery('.navi:last').children('option:selected').attr('form-type') - 0;
                var data = jQuery('.navi:last').children('option:selected').attr('data') - 0;

                if (formType <= 0) {
                    jQuery('#filter-button').attr('id', 'filter-disabled');
                } else {
                    jQuery('#filter-disabled').attr('id', 'filter-button');
                }

                // add custom form fo this menu
                if (options.initializationForm === true && formType > 0 && data == 0 || options.searchFilter == true) {
                    jQuery.post('http://fn.ua/fn_rubrics_menu/formBuilder.php', {fID:formType, sf:(options.searchFilter ? 1 : 0)}, function (html) {
                        jQuery('#form-view').html(html), jQuery('.required').append('<span class="required-field">*</span>');

                        if (options.addValue) {
                            for (var i = 1; i <= 10; i++) {
                                if (getUrlVars()['comfort%5B' + i + '%5D'] != undefined) {
                                    if (jQuery('input [name^="comfort"],[value="' + i + '"]')) {
                                        jQuery('input [name^="comfort"],[value="' + i + '"]').attr('checked', true);
                                    }
                                }
                            }

                            jQuery('#arooms [value="' + getUrlVars()['arooms'] + '"]').attr('selected', true),
                                jQuery('#numbeds [value="' + getUrlVars()['num_beds'] + '"]').attr('selected', true),
                                jQuery('#apricefrom').val(getUrlVars()['apricefrom']),
                                jQuery('#apriceto').val(getUrlVars()['apriceto']),
                                jQuery('#apricecur [value="' + getUrlVars()['apricecur'] + '"]').attr('selected', true),
                                jQuery('#apricetype [value="' + getUrlVars()['aricetype'] + '"]').attr('selected', true),
                                (getUrlVars()['acomtype'] > 0 ? jQuery('#acomtype').attr('checked', true) : jQuery('#acomtype').attr('checked', false)),
                                (getUrlVars()['hourly'] > 0 ? jQuery('#hourly').attr('checked', true) : jQuery('#hourly').attr('checked', false)),
                                (getUrlVars()['daily'] > 0 ? jQuery('#daily').attr('checked', true) : jQuery('#daily').attr('checked', false)),
                                jQuery('#buildtype [value="' + getUrlVars()['build_type'] + '"]').attr('selected', true),
                                jQuery('#spaceallfrom').val(getUrlVars()['spaceallfrom']),
                                jQuery('#spaceallto').val(getUrlVars()['spaceallto']),
                                jQuery('#spacelivefrom').val(getUrlVars()['spacelivefrom']),
                                jQuery('#spaceliveto').val(getUrlVars()['spaceliveto']),
                                jQuery('#spacekitchfrom').val(getUrlVars()['spacekitchfrom']),
                                jQuery('#spacekitchto').val(getUrlVars()['spacekitchto']),
                                jQuery('#flrfrom').val(getUrlVars()['flrfrom']),
                                jQuery('#flrto').val(getUrlVars()['flrto']),
                                jQuery('#flrsfrom').val(getUrlVars()['flrsfrom']),
                                jQuery('#flrsto').val(getUrlVars()['flrsto']),
                                jQuery('#remotefrom').val(getUrlVars()['remotefrom']),
                                jQuery('#remoteto').val(getUrlVars()['remoteto']),
                                jQuery('#wctype [value="' + getUrlVars()['wc_type'] + '"]').attr('selected', true);

                            if (getUrlVars()['balcony'] == 1) {
                                jQuery('#balconyspacefrom').val(getUrlVars()['balconyspacefrom']).attr('disabled', false),
                                    jQuery("#balconyspaceto").val(getUrlVars()['balconyspaceto']).attr('disabled', false),
                                    jQuery('#balcony').attr('checked', true),
                                    (getUrlVars()['balcony_type'] > 0 ? jQuery('#balconytype').attr('checked', true).attr('disabled', false) : ''),
                                    jQuery('#loggiaspacefrom').attr('disabled', true),
                                    jQuery('#loggiaspaceto').attr('disabled', true),
                                    jQuery('#loggiatype').attr('checked', false).attr('disabled', true);
                            } else if (getUrlVars()['balcony'] == 2) {
                                jQuery('#loggiaspacefrom').val(getUrlVars()['balconyspacefrom']).attr('disabled', false),
                                    jQuery("#loggiaspaceto").val(getUrlVars()['balconyspaceto']).attr('disabled', false),
                                    jQuery('#loggia').attr('checked', true),
                                    (getUrlVars()['balcony_type'] > 0 ? jQuery('#loggiatype').attr('checked', true).attr('disabled', false) : ''),
                                    jQuery('#balconyspacefrom').attr('disabled', true),
                                    jQuery('#balconyspaceto').attr('disabled', true),
                                    jQuery('#balconytype').attr('checked', false).attr('disabled', true);
                            }
                        }

                        if (options.adId > 0) {
                            jQuery.getJSON("http://fn.ua/fn_rubrics_menu/backendTest.php", {serverData:options.adId, serviceName:'adetail'},
                                function (data) {
                                    var adItems = data.items;

                                    if (adItems.iservice != null) {
                                        var services = adItems.iservice.split(',');

                                        $.each(services, function (i, v) {
                                            if (jQuery('input [name^="comfort"],[value="' + v + '"]')) {
                                                jQuery('input [name^="comfort"],[value="' + v + '"]').attr('checked', true);
                                            }
                                        });
                                    }

                                    (adItems.atitle != '' ? jQuery('#atitle').val(adItems.atitle) : ''); // write the title
                                    jQuery('#arooms [value="' + adItems.arooms + '"]').attr('selected', true); // select rooms
                                    (adItems.spaceall > 0 ? jQuery('#spaceall').val(adItems.spaceall) : ''); // write the value of spacell
                                    (adItems.spacelive > 0 ? jQuery('#spacelive').val(adItems.spacelive) : ''); // write the value of spacelive
                                    (adItems.spacekitch > 0 ? jQuery('#spacekitch').val(adItems.spacekitch) : ''); // write the value of spacekitch
                                    (adItems.flr > 0 ? jQuery('#flr').val(adItems.flr) : ''); // floor build
                                    (adItems.flrs > 0 ? jQuery('#flrs').val(adItems.flrs) : ''); // floors build
                                    (adItems.remote > 0 ? jQuery('#remote').val(adItems.remote) : '');
                                    jQuery('#numbeds [value="' + adItems.num_beds + '"]').attr('selected', true);
                                    jQuery('#buildtype [value="' + adItems.build_type + '"]').attr('selected', true); // select build type
                                    jQuery('#wctype [value="' + adItems.wc_type + '"]').attr('selected', true); // select wc type
                                    //jQuery('input [name="balcony"],[value="' + adItems.balcony + '"]').attr('checked', true); // select balcony
                                    (adItems.daily == 1 ? jQuery('#daily').attr('checked', true) : jQuery('#daily').attr('checked', false));
                                    (adItems.hourly == 1 ? jQuery('#hourly').attr('checked', true) : jQuery('#hourly').attr('checked', false));
                                    (adItems.atext != '' ? jQuery('#atext').val(adItems.atext) : ''); // write the text
                                    (adItems.acode1 != '' ? jQuery('#acode1').val(adItems.acode1) : ''); // write phone code 1
                                    (adItems.acode2 != '' ? jQuery('#acode2').val(adItems.acode2) : ''); // write phone code 2
                                    (adItems.acode3 != '' ? jQuery('#acode3').val(adItems.acode3) : ''); // write phone code 3
                                    (adItems.aphone1 != '' ? jQuery('#aphone1').val(adItems.aphone1) : ''); // write phone 1
                                    (adItems.aphone2 != '' ? jQuery('#aphone2').val(adItems.aphone2) : ''); // write phone 2
                                    (adItems.aphone3 != '' ? jQuery('#aphone3').val(adItems.aphone3) : ''); // write phone 3
                                    (adItems.asite != '' ? jQuery('#asite').val(adItems.asite) : ''); // write site name
                                    (adItems.acontact != '' ? jQuery('#acontact').val(adItems.acontact) : ''); // write contact name

                                    // balcony select module
                                    if (adItems.balcony == 1) {
                                        jQuery('#balcony').attr('checked', true);
                                        jQuery('#balconyspace').val((adItems.balcony_space > 0 ? adItems.balcony_space : ''));
                                        jQuery('#loggiaspace').attr('disabled', true);
                                        jQuery('#loggiatype').attr('checked', false);
                                    } else if (adItems.balcony == 2) {
                                        jQuery('#loggia').attr('checked', true);
                                        jQuery('#loggiaspace').val((adItems.balcony_space > 0 ? adItems.balcony_space : ''));
                                        jQuery('#balconyspace').attr('disabled', true);
                                        jQuery('#balconytype').attr('checked', false);
                                    }

                                    // price select module
                                    if (adItems.aprice >= 0) {
                                        jQuery('#aprice').val(adItems.aprice - 0), jQuery('#apricecur [value="' + adItems.apricecur + '"]').attr('selected', true);
                                        jQuery('#apricetype [value="' + adItems.apricetype + '"]').attr('selected', true);
                                        (adItems.acomtype > 0 ? jQuery('#acomtype').attr('checked', true) : jQuery('#acomtype').attr('checked', false));
                                    }
                                });
                        }
                    });
                }
            });
        }

        jQuery(this).delegate('.navi', 'change', function () {

            // get value from id, data, form-type
            var idVal = jQuery(this).val();
            var data = jQuery(this).children('option:selected').attr('data') - 0;
            var formType = jQuery(this).children('option:selected').attr('form-type') - 0;

            if (formType <= 0) {
                jQuery('#filter-button').attr('id', 'filter-disabled');
            } else {
                jQuery('#filter-disabled').attr('id', 'filter-button');
            }

            // removing items from the current
            jQuery(this).nextAll().remove().fadeOut('slow');

            // sending data to server when select change
            if (data > 0) {
                jQuery.post('' + options.ajaxBackend + '', {serverData:idVal}, function (data) {

                    // add output data to html
                    if (data != 0) {
                        jQuery('' + options.ajaxTarget + '').append(data);
                    }
                });
            }

            // add custom form fo this menu
            if (options.initializationForm === true && formType > 0 && data == 0 || options.searchFilter == true) {
                jQuery.post('http://fn.ua/fn_rubrics_menu/formBuilder.php', {fID:formType, sf:(options.searchFilter ? 1 : 0)},
                    function (html) {
                        jQuery('#form-view').html(html),
                            jQuery('.required').append('<span class="required-field">*</span>');

                        if (options.adId > 0) {
                            jQuery.getJSON('http://fn.ua/fn_rubrics_menu/backendTest.php', {serverData:options.adId, serviceName:'adetail'}, function (data) {
                                var adItems = data.items;
                                var services = adItems.iservice.split(',');

                                if (adItems != '') {


                                    (adItems.atitle != '' ? jQuery('#atitle').val(adItems.atitle) : ''); // write the title
                                    jQuery('#arooms [value="' + adItems.arooms + '"]').attr('selected', true); // select rooms
                                    (adItems.spaceall > 0 ? jQuery('#spaceall').val(adItems.spaceall) : ''); // write the value of spacell
                                    (adItems.spacelive > 0 ? jQuery('#spacelive').val(adItems.spacelive) : ''); // write the value of spacelive
                                    (adItems.spacekitch > 0 ? jQuery('#spacekitch').val(adItems.spacekitch) : ''); // write the value of spacekitch
                                    (adItems.flr > 0 ? jQuery('#flr').val(adItems.flr) : ''); // floor build
                                    (adItems.flrs > 0 ? jQuery('#flrs').val(adItems.flrs) : ''); // floors build
                                    (adItems.remote > 0 ? jQuery('#remote').val(adItems.remote) : '');
                                    jQuery('#numbeds [value="' + adItems.num_beds + '"]').attr('selected', true);
                                    jQuery('#buildtype [value="' + adItems.build_type + '"]').attr('selected', true); // select build type
                                    jQuery('#wctype [value="' + adItems.wc_type + '"]').attr('selected', true); // select wc type
                                    jQuery('input [name="balcony"],[value="' + adItems.balcony + '"]').attr('checked', true); // select balcony
                                    (adItems.daily == 1 ? jQuery('#daily').attr('checked', true) : jQuery('#daily').attr('checked', false));
                                    (adItems.hourly == 1 ? jQuery('#hourly').attr('checked', true) : jQuery('#hourly').attr('checked', false));
                                    (adItems.atext != '' ? jQuery('#atext').val(adItems.atext) : ''); // write the text
                                    (adItems.acode1 != '' ? jQuery('#acode1').val(adItems.acode1) : ''); // write phone code 1
                                    (adItems.acode2 != '' ? jQuery('#acode2').val(adItems.acode2) : ''); // write phone code 2
                                    (adItems.acode3 != '' ? jQuery('#acode3').val(adItems.acode3) : ''); // write phone code 3
                                    (adItems.aphone1 != '' ? jQuery('#aphone1').val(adItems.aphone1) : ''); // write phone 1
                                    (adItems.aphone2 != '' ? jQuery('#aphone2').val(adItems.aphone2) : ''); // write phone 2
                                    (adItems.aphone3 != '' ? jQuery('#aphone3').val(adItems.aphone3) : ''); // write phone 3
                                    (adItems.asite != '' ? jQuery('#asite').val(adItems.asite) : ''); // write site name
                                    (adItems.acontact != '' ? jQuery('#acontact').val(adItems.acontact) : ''); // write contact name

                                    // balcony select module
                                    if (adItems.balcony == 1) {
                                        jQuery('#balconyspace').val(adItems.balcony_space).attr('disabled', false), jQuery('#balconytype').attr('disabled', false);
                                        (adItems.balcony_type > 0 ? jQuery('#balconytype').attr('checked', true) : jQuery('#loggiatype').attr('checked', false));
                                    } else {
                                        jQuery('#loggiaspace').val(adItems.balcony_space).attr('disabled', false), jQuery('#loggiatype').attr('disabled', false);
                                        (adItems.balcony_type > 0 ? jQuery('#loggiatype').attr('checked', true) : jQuery('#balconytype').attr('checked', false));
                                    }

                                    // price select module
                                    if (adItems.aprice >= 0) {
                                        jQuery('#aprice').val(adItems.aprice - 0), jQuery('#apricecur [value="' + adItems.apricecur + '"]').attr('selected', true);
                                        jQuery('#apricetype [value="' + adItems.apricetype + '"]').attr('selected', true);
                                        (adItems.acomtype > 0 ? jQuery('#acomtype').attr('checked', true) : jQuery('#acomtype').attr('checked', false));
                                    }
                                }
                            });
                        }
                    });
            } else {
                jQuery('#top-fields').empty();
            }
        });
    });
}
