/**
 * Provides general client-side functionality.
 *
 * @package Website
 * @author Codeacious
 * @version $Id: Website.core.js 41 2011-11-16 16:17:07Z glenn $
 */

if (typeof jQuery === 'undefined')
    throw new Error('Website.core.js: jQuery is required and must be loaded first');

if (typeof Website === 'undefined')
    Website = {};

Website.core = (function($) {
    
    var self = {};
    var _self = {};

    self.init = function() {
        $('div.subpara').hide();

        $('a.moreinfo').click(function(e) {
            var href = $(this).attr('href');
            if (href[0] != '#')
                return true;
            
            var anchorName = href.substring(1);
            $("a[name='"+anchorName+"']").closest('div.subpara').slideToggle('slow');
            return false;
        });
        
        self.initRollovers();
    };
    
    self.initRollovers = function() {
        $('a.rollover > img').each(function() {
            var $img = $(this);
            var upSrc = $img.attr('src');
            var overSrc = $img.attr('data-oversrc');
            var downSrc = $img.attr('data-downsrc');
            
            if (overSrc && overSrc.length)
            {
                self.preloadImage(overSrc);
                $img.parent().andSelf().hover(
                    function (e) {
                        $img.attr('src', overSrc);
                    },
                    function (e) {
                        $img.attr('src', upSrc);
                    }
                );
            }
        
            if (downSrc && downSrc.length)
            {
                self.preloadImage(downSrc);

                $img.parent().andSelf().mousedown(function(e) {
                    $img.attr('src', downSrc);
                }).mouseup(function(e) {
                    $img.attr('src', upSrc);
                });
            }
        });
    };

    self.preloadImage = function(src) {
        var img = new Image();
        img.src = src;
    };

    self.numbersOnly = function(event) {
        var key
        if (window.event)
            key = window.event.keyCode;
        else
            key = event.which;

        //Allow numbers, backspace, tab, reverse tab and return
        if ((key < 48 || key > 57) && key != 8 && key != 9 && key != 25 && key != 13 && key != 0
                && key != 118)
        {
            return false;
        }
        else
            return true;
    };

    self.animateSubpara = function(subp, show) {
        if (typeof(subp) == 'string')
            subp = $(subp);
        if (show && subp.is(':visible'))
            return;
        if (!show && !subp.is(':visible'))
            return;
        subp.slideToggle('slow');
    };
    
    //Execute init() automatically when the DOM is ready
    $(self.init);

    return self;
    
})(jQuery.noConflict());
