/*------------------------------------------------------------------------
 * Functions to handle multiple handler for onload and onunload events.
 * Call page_onload(fn) and page_unload(fn) to register functions to be
 * call when the page is loaded/unloaded
 *------------------------------------------------------------------------*/

var onload_functions = new Array();
var unload_functions = new Array();

window.onload   = onloader;
window.onunload = unloader;

function onloader() {
//  console.log('running onloader()');
    for(var i = 0; i < onload_functions.length; i++) {
//      console.log('running onload function %d: %s', i, onload_functions[i]);
        try { onload_functions[i](); }
        catch(err) { 
            console.log('Caught error in onload function: %s', err);
        }
    }
}

function unloader() {
//  console.log('running unloader()');
    for(var i = 0; i < unload_functions.length; i++) {
        try { unload_functions[i](); }
        catch(err) {
            console.log('Caught error in unload function: %s', err);
        }
    }
}

function page_onload(func) {
//  console.log('registering onload %s', func);
    onload_functions.push(func);
}

function page_unload(func) {
//  console.log('registering unload %s', func);
    unload_functions.push(func);
}



var weekdays = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
var months   = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

function update_clock() {
    var elem  = document.getElementById('clock');
    if (elem) {
        elem.innerHTML = clock_html();
    }
}

function clock_html() {
    var date  = new Date();
    var day   = date.getDate();
    var wday  = weekdays[date.getDay()];
    var mon   = months[date.getMonth()];
    var year  = date.getFullYear();
    var hours = date.getHours() % 12;
    var mins  = date.getMinutes();
    var secs  = date.getSeconds();
    var ordinal;

    // this is wrong, otherwise 5pm looks like 05:00
    //if (hours < 10)
    //    hours = '0' + hours;
    
    if (mins < 10)
        mins = '0' + mins; 
    if (secs < 10)
        secs = '0' + secs; 

    if (day == 1 || day == 21 || day == 31) {
        ordinal = 'st';
    }
    else if (day == 2 || day == 22) {
        ordinal = 'nd';
    }
    else if (day == 3 || day == 23) {
        ordinal = 'rd';
    }
    else {
        ordinal = 'th';
    }

    return wday + ' '
         + day + '<span class="ordinal">' + ordinal + '</span> '
         + mon + ' ' + year + ' | ' 
         + hours + ':' + mins + ':' + secs;
}


page_onload(update_clock);
window.setInterval(update_clock, 1000);

jQuery.fn.extend({
    // add 'warm' to class and remove from all siblings
    make_warm: function() {
        this.addClass('warm').siblings('.warm').removeClass('warm');
        return this;
    },
    // remove 'warm' class
    make_cold: function() {
        this.removeClass('warm');
        return this;
    }
});


/* this is used (or rather, is not used, but was used) to switch the 
 * forms in the top header on and off - see templates/library/site/forms
 */

function select_form(menu_elem, form_id) {
    $('#' + form_id).make_warm();
}

function select_panel(tab) {
    var elem = $(tab);
    elem.parent('li').make_warm();
    $(elem.attr('href')).make_warm();
    return false;
}


