/**
 * Default Javascript file for cousework. Please write jQuery plugins for additional
 * functionality and load them using the plugin loader. See:
 *
 * http://nicolas.rudas.info/jQuery/getPlugin/
 *
 * for more details on the plugin loader
 */
$(function () {
    // Set the default ajax url
    $.ajax_url = '/cgi-bin/json.cgi';
    // Set the static folder (global is set in template)
    $.static_folder = STATIC_FOLDER;

    // Enable or disable developer mode
    var staged = false;

    // Default settings
    if (!staged) {
        var debug = false;
        var load_minimized = true;
        var cache_plugins = false;
    }
    // Staged settings
    else {
        var debug = true;
        var load_minimized = false;
        var cache_plugins = false;
    }

    // Initialize the quick search form
    $('#search-q').focus(function() {
        if ($(this).val() == 'Search Coursework.info') {
            $(this).val('');
        }
    });

    // Initialize google click tracker plugin
    $.plugin('google_click_tracker', {
        files: [$.static_folder + '/js/jquery.google_click_tracker' + ((load_minimized) ? '.min' : '') + '.js'],
        selectors: ['.gct'],
        callback: function() { $.google_click_tracker({
            auto_regiser: true,
            track_prefix: [ 'virtual' ],
            debug: debug
        }); },
        cache: cache_plugins
    });

    // Initialize category browser plugin
    $.plugin('category_browser', {
        files: [$.static_folder + '/js/jquery.category_browser' + ((load_minimized) ? '.min' : '') + '.js'],
        selectors: ['.category_widget'],
        callback: function() { $.category_browser(); },
        cache: cache_plugins
    });

    // Initialize sprite plugin
    $.plugin('sprite', {
        files: [$.static_folder + '/js/jquery.sprite' + ((load_minimized) ? '.min' : '') + '.js'],
        selectors: ['.sprite'],
        callback: function() { $.sprite({
            s1: {
                src: STATIC_FOLDER + "/images/smilies/review_rating.jpg",
                width: 24,
                height: 24
            }
        }); },
        cache: cache_plugins
    });

    // Initialize review rating plugin
    $.plugin('review_rating', {
        files: [$.static_folder + '/js/jquery.review_rating' + ((load_minimized) ? '.min' : '') + '.js'],
        selectors: ['.review_rating_bar'],
        callback: function() { $.review_rating(); },
        cache: cache_plugins
    });


    // Initialize user rating plugin
    $.plugin('user_rating', {
        files: [$.static_folder + '/js/jquery.user_rating.js'],
        selectors: ['.stars'],
        callback: function() { $.user_rating(); },
        cache: cache_plugins
    });

    // Cookie handling routines (syntactical sugar)
    $.plugin('cookie', {
        files: [$.static_folder + '/js/jquery.cookie' + ((load_minimized) ? '.min' : '') + '.js'],
        selectors: ['.cookie_handler'],
        cache: cache_plugins
    });

    // Payment page handler
    $.plugin('paymentselector', {
        files: [$.static_folder + '/js/jquery.paymentselector.js'],
        selectors: ['.paymentselector'],
        cache: cache_plugins,
        callback: function() {}
    });

    // Initialize DD_Roundies plugin
    // TODO: check if there is a better solution
    $.plugin('rounded_corners', {
        files: [$.static_folder + '/js/DD_roundies.js'],
        selectors: [
            '.category_widget',
            '.pagenav_inactive',
            '.pagenav_box_current',
            '.pagenav_box',
            '.pagenav_active',
            '.essay_content_box',
            '.grey_box',
            '.category_content_box'
        ],
        callback: function() {
            DD_roundies.addRule('.category_widget .top .tree', '0 0 6px 6px', true);
            DD_roundies.addRule('.category_widget .bottom', '6px', true);
            DD_roundies.addRule('.pagenav_inactive', '2px', true);
            DD_roundies.addRule('.pagenav_box_current', '2px', true);
            DD_roundies.addRule('.pagenav_box', '2px', true);
            DD_roundies.addRule('.pagenav_active', '2px', true);
            DD_roundies.addRule('.essay_content_box', '6px', true);
            DD_roundies.addRule('.grey_box', '3px', true);
            DD_roundies.addRule('.category_content_box', '0 0 6px 6px', true);
        },
        cache: cache_plugins
    });

    $.plugin();
});
