// Calendar js
$(document).ready(function() {
    var current_month = $('#current_month').attr('value');
    var current_year = $('#current_year').attr('value');
    var selected_calendar = 0;
    var selected_event = 0;
    var calendar_rank = [];
    var event_coords = [];  // keeps track of event starting position
    var list_query = '?view=list';
    var month_query = '?view=month';

    // Handle change of dropdown to filter results - Month View
    $('#filter-by.month').change( function(){
        $('#current_filter').text($(this).val());
        event_data = {'jump_month':current_month,'jump_year':current_year, 'filter':$(this).val()};
        $("#calendar").load('/film_screenings/calendar/load_month'+month_query, event_data, function() {
            setup_calendar_cells();
            setup_add_event_div();
        });
    });
    // Handle change of dropdown to filter results - List View
    $('#filter-by.list').change( function(){
        $('#current_filter').text($(this).val());
        event_data = {'jump_month':current_month,'jump_year':current_year, 'filter':$(this).val()};
        $("#calendar").load('/film_screenings/calendar/load_month'+list_query, event_data, function() {
            setup_calendar_cells();
            setup_add_event_div();
            setup_film_notes();
        });
    });

    $('span.share-toggle').live('click', function() {
        var box = $(this).siblings('.share-box');
        if (box.css('display') === 'none') {
            box.slideDown();
        } else {
            box.slideUp();
        }
    });

    $('input.highlight-on-click').live('click', function() {
        $(this).focus().select();
    });

    // Navigation functions:
    function goto_next_month() {
        current_year  = (current_month==12 ? (parseInt(current_year, 10) + 1) : current_year);
        current_month = (current_month==12 ? 1 : (parseInt(current_month, 10) + 1));
    }
    function goto_last_month() {
        current_year  = (current_month==1 ? (parseInt(current_year, 10) - 1) : current_year);
        current_month = (current_month==1 ? 12 : (parseInt(current_month, 10) - 1));
    }

    // Function to update the calendar via Ajax. It also changes the month label.
    function update_month_html(query_string) {
        var month_array = Array("January","February","March","April","May","June","July","August","September","October","November","December");
        event_data = {'jump_month':current_month,'jump_year':current_year, 'filter':$('#current_filter').text()};
        $("#calendar").load('/film_screenings/calendar/load_month'+query_string, event_data, function() {

            setup_calendar_cells();
            setup_add_event_div();

            // change month label
            var month_label = month_array[current_month-1] + " "+ current_year;
            $('#month_label').text(month_label);
            $('#calendar-pdf-link').attr('href', '/uploads/calendar-' + current_month + '-' + current_year + '.pdf');

            setup_film_notes();
            setup_calendar_images();
        });


    }

    function update_active_anchor() {
        $('a.time-anchor').removeClass('active');
        if ($(this)) {
            $(this).addClass('active');
        } else {
            $('a.time-anchor[href=' + window.location.hash + ']').addClass('active');
        }
    }

    $('a.time-anchor').live('click', update_active_anchor);

    // Function to activate the calendar-day events
    function setup_calendar_cells() {
    }

    function calendar_select_handler(calendar_id) {
        var el = $(calendar_id);    // load the selected calendar
        if(selected_calendar != calendar_id) {
            //new Fx.Style($(selected_calendar+'_toggle'),'margin-right', {duration:100}).start(5);
            $(selected_calendar).removeClass('selected_calendar');
            el.addClass('selected_calendar');
            selected_calendar = el.attr('id');
            $('#event_submit').attr('value', 'Add Personal Event');
            //new Fx.Style($(selected_calendar+'_toggle'),'margin-right', {duration:100}).start(10);
        }
    }

    function setup_add_event_div() {
        //$("#event_date").datepicker();
    }

    function setup_navigation() {
        // Activate previous/next links
        $('#previous_month.month').click( function(event) {
            goto_last_month();
            update_month_html(month_query);
        });
        $('#next_month.month').click( function(event) {
            goto_next_month();
            update_month_html(month_query);
        });
        $('#previous_month.list').click( function(event) {
            goto_last_month();
            update_month_html(list_query);
        });
        $('#next_month.list').click( function(event) {
            goto_next_month();
            update_month_html(list_query);
        });
        $('#add_event').click( function(){
            time_slider.toggle();
        });
    }

    function clear_event_form() {
        $('#event_title').attr('value','');
        $('#event_date').attr('value','');
        $('#event_details').attr('value','');
        selected_event = 0;
    }

    function setup_film_notes() {
        $('.showing-details').each( function(){
            $('.film-notes-link', $(this)).click( function(){
                if ($(this).is('.active')) {
                    $(this).removeClass('active');
                    $('.film-notes', $(this).parent()).slideUp();
                }
                else {
                    $(this).addClass('active');
                    $('.film-notes', $(this).parent()).slideDown();
                }
            });
        });
    }

    function setup_calendar_images() {
        $('.event-image').click( function(e){
           $('#event-image-overlay img').attr('src','/uploads/'+$(this).attr('image-url'));
           $('#event-image-overlay span.caption').text($(this).attr('caption'));
           $('#event-image-overlay').css('top', e.pageY - 40);
           $('#event-image-overlay').css('left', e.pageX - 265);
           $('#event-image-overlay').toggle();
        });

        $('#event-image-overlay').click( function(){
           $(this).toggle();
        });
    }

    // The calendar is divided up into 4 parts:
    // 1. The navigation
    setup_navigation();
    // 2. the add/edit event form
    setup_add_event_div();
    // 3. the calendar days (only reason I don't call update_month_html here is because the template is prefilled)
    setup_calendar_cells();
    // 4. activate film notes dropdowns
    setup_film_notes();
    // 5. calendar images
    setup_calendar_images();

    if (window.location.hash) {
        $('.film-notes-link:first')
            .removeClass('active')
            .parent().find('.film-notes').hide();

        var $details = $('.showing-details')
            .has('a[name=' + window.location.hash.replace('#', '') + ']');

        $details.find('.film-notes-link').addClass('active');
        $details.find('.film-notes').show();
    } else {
        var pad = function(n) { return n < 10 ? '0' + n : n };
        window.location.hash = '#day-' + pad(new Date().getDate());
    }
});

