jQuery(function($) {
    var searchbox = $('#searchbox');

    function pulse(elem,times){
        if (times > 0) elem.animate({opacity: times%2},500,function(){pulse(elem,times - 1)});
    }

    $('.attract_to_searchbox').click(function(){
        // var attract_to = $('#where-input');
        var attract_to = $('#searchbox');
        var focus_to = $('#where-input');
        pulse(attract_to, 4);
		$.scrollTo(attract_to,{offset:{top:-25},duration:500});
        focus_to.focus();
    });

    //map/list selection handle
    var rdt_map = $('#rdt_map'), rdt_list = $('#rdt_list'), form_rdt = $('input[name=display]', searchbox);

    rdt_map.click(function() {
        if (rdt_list.hasClass('active')) {
            rdt_list.removeClass('active');
            rdt_map.addClass('active');
            form_rdt.val('map');
        }
    });

    rdt_list.click(function() {
        if (rdt_map.hasClass('active')) {
            rdt_map.removeClass('active');
            rdt_list.addClass('active');
            form_rdt.val('list');
        }
    });

    $('#advanced_search').bind('click', function() {
        $('.panel', searchbox).toggle();
    });

    function hide_searchbox_options() {
        $('.panel', searchbox).hide();
    }

    searchbox
        .bind('mouseover', function(e) {
            clearTimeout(window.searchbox_mouseleave_timeout);
        })
        .bind('mouseleave', function() {
            window.searchbox_mouseleave_timeout = setTimeout(function() {
                hide_searchbox_options();
            }, 1000);
        });

    function show_hide_params_stuff(){
        var params_div = $('.params',searchbox);
        var events_only_stuff = $('hr,.param',params_div).not(':first-child');
        if ($('input[name=what]:checked', searchbox).val() == 'venues'){
            events_only_stuff.hide();
        }
        else{
            events_only_stuff.show();
        }
    }

    show_hide_params_stuff();

    $('input[name=what]').change(show_hide_params_stuff);

    $('#where-input').placeholder({
        blankSubmit:true
    });

    var dateText = $('#when').val();
    if (dateText == '') {
        var now = new Date;
        dateText = formatDate(now);
    }
    function on_datepicker_change_date(dateText, inst) {
        //date is in format dd-mm-yyyy, but we need to give to date() mm-dd-yyyy
        var ymd = dateText.split('-');
        date = new Date(ymd[0], ymd[1] - 1, ymd[2]);
        $('#when').val(dateText);
        if ($('#datepicker').is(':visible'))
            $('#datepicker').fadeOut(500);
        var ufDate;
        if (dateText != 'upcoming')
            ufDate = userFriendlyDate(date);
        else
            ufDate = dateText;
        $('#when-text').text(ufDate);
        $('#looking-day').text(ufDate);
    }

    $('#datepicker').datepicker({
        dateFormat: 'yy-mm-dd',
        minDate: new Date(),
        defaultDate: dateText,
        onSelect: on_datepicker_change_date
    });
    on_datepicker_change_date(dateText);

    function toggle_pick_a_date() {
        if ($('#datepicker').is(':visible'))
            $('#datepicker').fadeOut(500);
//			$('#pick-a-date').hide('slide', {direction: 'right'}, 500);
        else {
//			$('#pick-date-container').show();
            $('#datepicker').fadeIn(500);
//			$('#pick-a-date').show('slide', {direction: 'right'}, 500);
        }
        return false;
    }

    $('#when-text, #when-but').click(toggle_pick_a_date);

    function combine_url() {
        var url = '';
        var what = $('input[name=what]:checked', searchbox).val();
        var display = $('input[name=display]', searchbox).val();
        var where = $('#where-input').val();
        var when = $('#when').val();
        // var category = $('#what-select').val();
//            alert(where + what + when);
        if (what == 'venues') {
            if (where) {
                url = '/venues/where/' + where + '/';
                url += 'display/' + 'list' + '/';
            }
            else {
                return null;
            }
        }
        else {
            url = '/events/'
            if (where)
                url += 'where/' + where + '/';
            if (when)
                url += 'date/' + when + '/';
            // if (category)
                // url += 'category/' + category + '/';
            if (display)
                url += 'display/' + display + '/';

            if (url == '/events/') { //no params at all
                return null;
            }
        }
        return url;
    }

    // prevent form submitting if we are on map page, load markers instead
    $('#search-event-form').submit(function() {
        if ($('input[name=display]', searchbox).val() == 'map' && window.map != undefined) {
            var where_input = $('#where-input');
            if (where_input.val() && where_input.val() != where_input.attr('placeholder')) {
                var country = window.country || 'Aus'
                geocoder.getLatLng($('#where-input').val() + ', ' + country, function (point) {
                    if (!point) {
                        alert('Location not found')
                    } else {
                        map.setCenter(point, minZoomLevelForMarkers);
                        loadMarkers();
                    }
                });
            }
            if (map.getZoom() < minZoomLevelForMarkers) {
                loadClusteredMarkers();
            } else {
                loadMarkers();
            }
            return false;
        }
        else {
            var url = combine_url();
            if (url) {
                window.location = url;
            }
            return false;
        }
    });

});


