(function ($) {

function load_videos () {
    var me = $(this);
    var container = $('#on-demand-content');
    var inner = container.find('div.inner').eq(0);
    container.height(container.height());
    container.addClass('loading');
    inner.hide();
    inner.load(me.attr('href'), {}, function () { container.height(''); container.removeClass('loading'); inner.fadeIn(400); });
    $('ul.on-demand a').removeClass('current');
    me.addClass('current');
    return false;
};

function scroll_to_comments () {
    var comms = $('div#comments');
    $('#videos-and-channels').hide();
    comms.fadeIn();
    $('html,body').animate({scrollTop: comms.offset().top});
    return false;   
};



function submit_rating () {
    var me = $(this);
    me.parent().attr('disabled', "true");
    var target = me.attr('href');
    $('div.ratings-stars span').html('<em>Saving...</em>');
    $.get(target, {}, function (html) {
        show_tasks();
        if (html == 'login-required') {
            $('#login-pane-placeholder').hide();
            $('#login-pane').slideDown();
        }
        else {
            $('div.ratings-stars').html(html);
        }
    });
    return false;
};


function show_rating_panel () {

    var me = $('a.rate-link');
    var target = me.attr('href');
    if (target.match('login')) {
        $('#login-pane-placeholder').hide();
        $('#login-pane').slideDown();
        return false;
    }
    else {
        var tasks = me.parents('ul.tasks');
        var container = $('#tasks-container');
        $('div.ratings-stars a.ratings-star').click(submit_rating);
        $('div.ratings-stars a.close').click(show_tasks);
        tasks.hide();
        container.find('div.ratings-stars').fadeIn();
        return false;
    }
};
function show_tasks() {
    $('div.ratings-stars').hide();
    $('div.embed-textbox').hide();
    $('div.share-textbox').hide();
    $('ul.tasks').fadeIn();
    return false;
};

function initialise_embed_codes() {
    // hide textboxes if more than one (links used to show). otherwise just show textbox
    if ($('#tasks-container div.embed-textbox .embed-code').length == 1) {
        $('#tasks-container div.embed-textbox .embed-size-link').hide();
        $('#tasks-container div.embed-textbox .embed-code').show();
    }
    else {
        $('#tasks-container div.embed-textbox .embed-size-link').show();
        $('#tasks-container div.embed-textbox .embed-code').hide();    
    }
};


$(function () {

    $('ul.on-demand a').click(load_videos);
    

    $('#tasks-container a.embed-link').click(function() {
        $('#tasks-container ul.tasks').hide();
        $('#tasks-container div.embed-textbox').fadeIn();
    });
    initialise_embed_codes();

    $('#tasks-container a.close').click(show_tasks).click(initialise_embed_codes);

    $('#tasks-container div.embed-textbox .embed-size-link').click(function() {
        $('#tasks-container div.embed-textbox .embed-size-link').hide();
        
        // get last class - this is the "label" for the embed size
        var label = this.className.match(/[^\s]+$/)[0];
        
        $('#tasks-container div.embed-textbox .embed-code.' + label).show().focus().select();

    });

    
    $('#tasks-container a.share-link').click(function() {
        $('#tasks-container ul.tasks').hide();
        $('#tasks-container div.share-textbox').fadeIn();
        $('#tasks-container div.share-textbox input').focus().select();
    });
    
    
    $('#tasks-container a.rate-link').click(show_rating_panel);
    
    $('a[href=#comments]').click(scroll_to_comments);
    $('a.close-comments-link').click(function () {
        $('#comments').hide();
        $('#videos-and-channels').fadeIn();
        return false;
    });
    $('#id_comment').attr('maxlength', '3000');
    
    $('div.latest-comment').click(scroll_to_comments).addClass('clickable');
});

})(jQuery);

