﻿window.addEvent('domready', function () {
    // autocomplete for agent filter
    new Autocompleter.Request.HTML($('filter_agent'), 'utils/ajax.asp?call=agent', { 'minLength': 3,
        'onSelection': function (el, selection) {
            var text = selection.getFirst();
            var value = text.getNext();
            el.set('value', text.get('html').replace('&amp;', '&'));
            $('filter_agent_value').set('value', value.get('html'));
            if ($('frm_property_search_sidebar')) { build_results(false); }
        },
        'onBlur': function (el) {
            // clearing value in case choice was selected and then cleared
            if ($('frmSearch') && el.get('value') == '') { $('filter_agent_value').set('value', ''); }
        }
    });

    // autocomplete for company filter
    new Autocompleter.Request.HTML($('filter_company'), 'utils/ajax.asp?call=company', { 'minLength': 3,
        'onSelection': function (el, selection) {
            var text = selection.getFirst();
            var value = text.getNext();
            el.set('value', text.get('html').replace('&amp;', '&'));
            $('filter_company_value').set('value', value.get('html'));
            if ($('frm_property_search_sidebar')) { build_results(false); }
        },
        'onBlur': function (el) {
            // clearing value in case choice was selected and then cleared
            if ($('frmSearch') && el.get('value') == '') { $('filter_company_value').set('value', ''); }
        }
    });

    if ($('filter_method')) {
        $('filter_method').addEvent('change', function (e) {
            $('results_count').set('html', '');
            if ($('filter_method').value == 'location') {
                // setting location to what polygon location is right now
                $('filter_location').value = $('filter_location_polygon').get('value');
                // clear other methods
                filter_method_region_clear();
                filter_method_polygon_clear();
                // showing location                
                $('location_switch_location').addClass('filter_show').removeClass('filter_hide');
                $('map_error').set('html', 'You are now searching by location. Adjust your filters to the left and click refresh.').addClass("alertwarn").addClass('clear');  
            } else if ($('filter_method').value == 'region') {
                // clearing other methods
                filter_method_location_clear();
                filter_method_polygon_clear();
                // showing region
                $('location_switch_region').addClass('filter_show').removeClass('filter_hide');
                $('map_error').set('html', 'You are now searching by region. Please select the regions you want to search by to the left.').addClass("alertwarn").addClass('clear');  
            } else if ($('filter_method').value == 'polygon') {
                // setting location to what polygon location is right now
                $('filter_location_polygon').value = $('filter_location').get('value');
                // clearing other methods
                filter_method_location_clear();
                filter_method_region_clear();
                // showing polygon                
                $('location_switch_polygon').addClass('filter_show').removeClass('filter_hide');
                $('map_error').set('html', 'Searching by polygon<br /><br /><ul><li>Start be setting at least 3 points on the map. Once you have drawn your polygon, click "Refresh".</li><li>To delete a point, click on the marker.</li><li>To move a point, drag the marker.</li></ul>').addClass("alertwarn").addClass('clear');                                
            }
        });
    }

    $$('input[name=filter_method]').each(function (el) {
        el.addEvent('click', function (e) {
            if (el.value == 'location') {
                // clear other methods
                filter_method_region_clear();
                filter_method_polygon_clear();
                // showing location                
                $('location_switch_location').addClass('filter_show').removeClass('filter_hide');
                // setting place holder
                $('filter_location').set('value', $('filter_location').retrieve('placeholder'));
            } else if (el.value == 'region') {
                // clearing other methods
                filter_method_location_clear();
                filter_method_polygon_clear();
                // showing region
                $('location_switch_region').addClass('filter_show').removeClass('filter_hide');
            } else if (el.value == 'polygon') {
                // clearing other methods
                filter_method_location_clear();
                filter_method_region_clear();
                // showing polygon                
                $('location_switch_polygon').addClass('filter_show').removeClass('filter_hide');
                // setting place holder
                $('filter_location_polygon').set('value', $('filter_location_polygon').retrieve('placeholder'));
            }
        });
    });

    // adding click event to each region to show/hide sub region
    $$('input[id^=filter_region]').each(function (region) {
        $(region).addEvent('click', function () {
            if ($(region).get('checked') == true) {
                // showing subregion div and checking all sub regions.
                if ($('subregion' + $(region).get('value')) != null) {
                    $('subregion' + $(region).get('value')).addClass('filter_show').removeClass('filter_hide');
                    $$('input[id^=filter_sub_region]').each(function (el) {
                        //el.set('checked', 'checked'); 
                    });
                }
            } else {
                // unchecking any checkboxes in subregion div and hiding subregion div.
                if ($('subregion' + $(region).get('value')) != null) {
                    $('subregion' + $(region).get('value')).addClass('filter_hide').removeClass('filter_show');
                    $$('input[id^=filter_sub_region]').each(function (el) { el.set('checked', ''); });
                }
            }
        });
    });

    $$('input[name=filter_search_type]').each(function (el) {
        el.addEvent('click', function () {
            if (el.get('id') == 'filter_search_type_both') {
                $$('.filter_lease').each(function (elem) { elem.addClass('filter_show').removeClass('filter_hide') });
                $$('.filter_sale').each(function (elem) { elem.addClass('filter_show').removeClass('filter_hide') });
            } else if (el.get('id') == 'filter_search_type_lease') {
                $$('.filter_lease').each(function (elem) { elem.addClass('filter_show').removeClass('filter_hide'); });
                $$('.filter_sale').each(function (elem) {
                    elem.addClass('filter_hide').removeClass('filter_show');
                    elem.getElements('input').each(function (filter) { filter.set('value', '').set('checked', false); });
                    elem.getElements('select').each(function (filter) { filter.set('value', ''); });
                });
            } else if (el.get('id') == 'filter_search_type_sale') {
                $$('.filter_sale').each(function (elem) { elem.addClass('filter_show').removeClass('filter_hide') });
                $$('.filter_lease').each(function (elem) {
                    elem.addClass('filter_hide').removeClass('filter_show');
                    elem.getElements('input').each(function (filter) { filter.set('value', '').set('checked', false); });
                    elem.getElements('select').each(function (filter) { filter.set('value', ''); });
                });
            }
        });
    });

    if ($('frmSearch')) {
        // setting place holders
        if ($('filter_location')) { $('filter_location').store('placeholder', 'Street and/or City and/or Zip'); }
        if ($('filter_location_polygon')) { $('filter_location_polygon').store('placeholder', 'Street and/or City and/or Zip'); }
        if ($('filter_radius')) { $('filter_radius').store('placeholder', 'Leave blank if you only want results based on address above'); }

        // adding focus event to each element with placeholder class
        $$('.placeholder').each(function (el) {
            // setting original place holder
            if (el.get('value') == el.retrieve('placeholder') || el.get('value') == '') {
                el.set('value', el.retrieve('placeholder'));
            } else {
                el.removeClass('placeholder');
            }

            el.addEvent('focus', function () {
                // clearing place holder value on focus
                if (el.get('value') == el.retrieve('placeholder')) { el.set('value', '').removeClass('placeholder'); }
            }).addEvent('blur', function () {
                // setting back placeholder if value is empty
                if (el.get('value') == '') { el.set('value', el.retrieve('placeholder')).addClass('placeholder'); }
            });
        });

        // handling the search click event
        $('btn_search').addEvent('click', function (e) {
            // clearing any elements that have placeholder class when search is clicked.
            $$('.placeholder').each(function (el) { el.set('value', ''); });

            property_type_checked = false;
            $$('input[name=filter_property_type]').each(function (el) {
                if (property_type_checked == false && el.get('checked') == true) { property_type_checked = true; }
            });

            if (property_type_checked == false) {
                $$('input[name=filter_property_type]').each(function (el) {
                    el.set('checked', true);
                });
            }
        });
    }

    $$('.showhide').each(function (el) { showhide(el); });

    // adds the click event to the control passed in.
    if ($('filter_advanced_options_toggle')) {
        $('filter_advanced_options_toggle').addEvent('click', function (e) {
            var newAjax = new Request({
                url: '/modal/login.asp?action=check',
                method: 'get',
                onComplete: getLoginResult
            });
            newAjax.send();

            function getLoginResult(data) {
                if ($('advanced').hasClass('filter_hide')) {
                    if (data == 'invalid') {
                        $('filter_advanced_options').set('value', '');
                        var loginfade = new Fx.Tween('modal-login', { duration: 1000 }).start('opacity', 0, 1);
                    } else {
                        $('advanced').removeClass('filter_hide').addClass('filter_show');
                        $('filter_advanced_options').set('value', '1');
                    }
                } else {
                    $('advanced').removeClass('filter_show').addClass('filter_hide');
                    $('filter_advanced_options').set('value', '');
                }
            }
        });
    }

    // handles the login form post event.  if no data is returned, valid user so check advanced options and slide them in.
    // else set the error.
    $('frmLoginModal').addEvent('submit', function (e) {
        new Event(e).stop();
        this.set('send', {
            onComplete: function Login(data) {
                if (data != '') {
                    $('modal-login-message').innerHTML = '<h3 class="alert">' + data + '</h3>';
                }
                else {
                    $('modal-login').setStyle('visibility', 'hidden');
                    $('filter_advanced_options').set('value', '1');
                    $('advanced').removeClass('filter_hide').addClass('filter_show');

                    var newAjax = new Request({
                        url: '/includes/header.asp?loginmodal=true&source=' + location.pathname,
                        method: 'get',
                        update: $('Sidebar'),
                        onComplete: function (html) {
                            $('sidebar_header').set('html', html);
                            if (location.pathname == '/search/results.asp') {
                                showhide($('showhide_menu'));
                                $('show_reporting_quick').setStyle('display', 'block');
                                $('show_reporting_custom').setStyle('display', 'block');
                            }

                            if ($('submitNav')) {
                                var navSlide = new Fx.Slide('submitNav').hide();
                            }

                            if ($('submitClick')) {
                                $('submitClick').addEvent('click', function (e) {
                                    e = new Event(e);
                                    navSlide.toggle();
                                    e.stop();
                                });
                            }
                        }
                    });
                    newAjax.send();
                }
            }
        }).send();


    });

    // closes the login modal.
    $('modal-login-close').addEvent('click', function (e) {
        var loginfade = new Fx.Tween('modal-login', { duration: 1000 }).start('opacity', 1, 0);
    });
});

function filter_method_location_clear() {
    // hiding location
    $('location_switch_location').addClass('filter_hide').removeClass('filter_show');
    // clearing fields
    $('filter_location').set('value', '');
    $('filter_radius').set('value', '');
}

function filter_method_region_clear() {
    // hiding region
    $('location_switch_region').addClass('filter_hide').removeClass('filter_show');
    // clearing fields
    $$('input[id^=filter_region]').each(function (el) {
        el.set('checked', '');
        if ($('subregion' + el.get('value')) != null) {
            $('subregion' + el.get('value')).addClass('filter_hide').removeClass('filter_show');
        }
    });
    $$('input[id^=filter_sub_region]').each(function (el) { el.set('checked', ''); });
}

function filter_method_polygon_clear() {
    // hiding polygon
    $('location_switch_polygon').addClass('filter_hide').removeClass('filter_show');
    // clearing fields
    $('filter_polygon').set('value', '');
    $('filter_location_polygon').set('value', '');
}


function showhide(el) {
    // grabbing sibling of element with class of showhide
    if (el.hasClass('menu')) {
        var sibling = el.getParent('p').getNext('ul');
    } else {
        var sibling = el.getParent('legend').getNext('div');
    }

    // handle click event to toggle view
    el.addEvent('click', function () {
        if (sibling.hasClass('filter_show')) {
            // was showing, now should be hidden and all filters should be cleared
            sibling.addClass('filter_hide').removeClass('filter_show');
            sibling.getElements('input').each(function (filter) { filter.set('value', '').set('checked', false); });
            sibling.getElements('select').each(function (filter) { filter.set('value', ''); });
        } else if (sibling.hasClass('filter_hide')) {
            // was not showing, no should be
            sibling.addClass('filter_show').removeClass('filter_hide');
        }
    });
}

