(function ($) {
    
    function hide_all_tabs (node) {
        node.find('.tab').hide();
    }
    
    function show_tab (target) {
        $(target).show();
    }
    
    function select_tab (links, select) {
        links.removeClass('current');
        show_tab(select.attr('href'));
        select.addClass('current');
    }
    
    
    function self_labelling_focus () {
        var me = $(this);
        var original_val = me.val();
        me.val('');
        me.removeClass('shaded');
        me.unbind('focus', self_labelling_focus);
        me.blur(self_labelling_blur(original_val));
    }
    
    function self_labelling_blur (original_val) {
        return function (node) {
            var me = $(this);
            if ('' == me.val()) {
                me.addClass('shaded');
                me.val(original_val);
                me.unbind('blur');
                me.focus(self_labelling_focus);
            }
            return false;
        };
    }
    
    function search_options_change () {
        var me = $(this);
        if (me.val() == 'daterange') {
            // $('#search-dates').show('slide', {direction: 'horizontal'}, 500);
            $('#search-dates').fadeIn();
        } else {
            $('#search-dates').fadeOut();
            // $('#search-dates').hide('slide', {direction: 'horizontal'}, 500);
        }
    }
    
    function mk_list (s) {
        return s.split('/').reverse();
    }
    
    function check_end_date () {
        var start = $('#search_start_date');
        var end = $('#search_end_date');
        if (mk_list(start.val()) > mk_list(end.val())) {
            start.val(end.val());
        }
    }

    function check_start_date () {
        var start = $('#search_start_date');
        var end = $('#search_end_date');
        if (mk_list(start.val()) > mk_list(end.val())) {
            end.val(start.val());
        }
    }
    
    function toggle_elem (el) {
        if (el.hasClass('visible')) {
            el.slideUp();
            el.removeClass('visible');
        } else {
            el.slideDown();
            el.addClass('visible');
        }
        return false;
    }
    
    function toggle_contact_form () {
        return toggle_elem($('#contact-event-form'));
    }
    
    function toggle_send_form () {
        return toggle_elem($('#send-event-form'));
    }
    
    // DOM-ready
    $(function () {
        
        // current top nav
        var has_current_nav = false;
        $('#nav a').each(function () {
            if (has_current_nav) { return; }
            var me = $(this);
            if ('/' == me.attr('href')) {
                if ('/' == document.location.pathname) {
                    me.addClass('current');
                    has_current_nav = true;
                    return;
                }
            } else if (document.location.pathname.match(me.attr('href'))) {
                me.addClass('current');
                has_current_nav = true;
                return;
            }
        });
        
        // TABS
        $('.tabs').each(function () {
            var me = $(this);
            hide_all_tabs(me);
            var links = me.find('.tab-control a');
            links.click(function () {
                hide_all_tabs(me);
                select_tab(links, $(this));
                return false;
            });
            show_tab(links.eq(0).attr('href'));
        });
        
        // EVENTS - make properly clickable
        $('.event').add('.featured-event').each(function () {
            var me = $(this);
            me.addClass('clickable');
            me.click(function () {
                document.location.href = me.find('a').eq(0).attr('href');
            });
        });
        
        // SELF-LABELLING
        $('.self-labelling').each(function () {
            var me = $(this);
            me.addClass('shaded');
            me.focus(self_labelling_focus);
        });
        
        $('#search-form').submit(function () {
            var q = $('#search_q');
            if (q.hasClass('shaded')) {
                q.val('');
            }
            return true;
        });
        
        // DATE FIELDS
        var dateOpts = {
            dateFormat: 'dd/mm/yy',
            showAnim: 'fadeIn',
            buttonImage: '/media/i/calendar-icon.gif',
            showOn: 'both',
            buttonImageOnly: true,
            numberOfMonths: 1,
            changeMonth: false,
            changeYear: false,
            defaultDate: 0,
            currentText: 'Today',
            minDate: 0
        };
        
        $('.date-field').datepicker(dateOpts);
        
        $('#id_start_date').datepicker(dateOpts);
        $('#id_end_date').datepicker(dateOpts);
        
        dateOpts.altField = '#search_start_date';
        dateOpts.altFormat = 'dd/mm/yy';
        dateOpts.defaultDate = 0;
        
        $('#div_start_date').datepicker(dateOpts);
        
        dateOpts.altField = '#search_end_date';
        dateOpts.defaultDate = +7;
        
        $('#div_end_date').datepicker(dateOpts);
        
        
        $('#search-options').change(search_options_change);
        if ($('#search-options').val() != 'daterange') {
            $('#search-dates').hide();            
        }
        
        $('#search-date-filter input').focus(function () {
            $('#search-options').val('daterange');
            $('#search-options').change();
            return true;
        });
        
        $('#search_end_date').change(check_end_date);
        $('#search_start_date').change(check_start_date);

        $('.alt-search-submit').click(function () {
           $('#search-form').submit();
           // return false;
        });

        // HIDDEN FORMS ON EVENT PAGE
        $('.contact-event-link').click(toggle_contact_form);
        $('.send-event-link').click(toggle_send_form);
        
        // LIGHTBOX
        $('a.lightbox').lightBox();
        
        $('label[for=id_industry_opt_in]')
			.insertAfter('#id_industry_opt_in')
			.attr('id', 'id_industry_opt_in_label');
    });
    
    $(window).load(function () {
        
        // Column heights
        var max_bottom = 0;
        $('.final').each(function () {
            var me = $(this);
            var bottom = me.offset().top + me.height();
            if (bottom > max_bottom) { max_bottom = bottom; }
        });
        $('.final').each(function () {
           var me = $(this);
           var bottom = me.offset().top + me.height();
           var new_height = me.height() + (max_bottom - bottom);
           
           me.height(new_height);
        });
        
        
        
    });


    $(function() {
        $('form .box').each(function() {
            $(this).find('.form-row:odd').addClass('odd');
            $(this).find('.form-row:even').addClass('even');
        });
        
        $('tr:odd').addClass('odd');
        $('tr:even').addClass('even');
        $('input[type=checkbox]').addClass('checkbox');
        $('input[type=radio]').addClass('radio');
        
    });

})($);

