google.load("jquery", "1.3.2");
google.setOnLoadCallback(function()
{ 

    jQuery.fn.tooltips = function(options)
    {
        var defaults = {
            distance: 60,
            time: 200,
            hideDelay: 0,
            hideDelayTimer: null,
            tooltipId: 'tooltips',
            imgPath: '/img/bubble/'
        };
        var opts = $.extend({}, defaults, options);
        if ($('#' + opts.tooltipId).length === 0)
        {
            var template = '<div id="' + opts.tooltipId + '" style="display:none;">' +
                            '<div id="' + opts.tooltipId + 'Content"></div>' +
                            '<div id="' + opts.tooltipId + 'Tail"></div>' +
						    '</div>';
            var parent = $(document.body);
            $(template).appendTo(parent);
        }
        var tooltip = $('#' + opts.tooltipId);
        var tooltipContent = $('#' + opts.tooltipId + 'Content');
        var tooltipTail = $('#' + opts.tooltipId + 'Tail');
        return this.each(function()
        {
            var $this = $(this);

            var o = $.metadata ? $.extend({}, opts, $this.metadata()) : opts;

            var shown = false;
            var beingShown = false;

            function show()
            {
                beingShown = true;
                var triggerPosition = $this.position();
                var tooltipText = $this.html();
                tooltipContent.text(tooltipText);
                tooltipTail.css('left', tooltip.width() / 2 - 10 + 'px');
                tooltip.css({
                    'top': triggerPosition.top - tooltip.height() - o.distance - 16 + 'px',
                    'left': triggerPosition.left - 10 + 'px',
                    'display': 'block',
                    'opacity': '0'
                }).animate({
                    top: '+=' + o.distance + 'px',
                    opacity: 1
                }, o.time, 'swing', function()
                {
                    beingShown = false;
                    shown = true;
                });
            }

            function hide()
            {
                o.hideDelayTimer = null;
                tooltip.animate({
                    top: '-=' + o.distance + 'px',
                    opacity: 0
                },
			    100, 'swing', function()
			    {
			        shown = false;
			        tooltip.css('display', 'none');
			    });
            }

            $this.mouseover(function()
            {
                if (o.hideDelayTimer) clearTimeout(o.hideDelayTimer);
                if (!beingShown && !shown)
                {
                    var t = setTimeout(function()
                    {
                        show();
                        clearTimeout(t);
                    }, 300);
                }
            }).mouseout(function()
            {
                if (o.hideDelayTimer) clearTimeout(o.hideDelayTimer);
                o.hideDelayTimer = setTimeout(hide, o.hideDelay);
            });
        });
    };

    jQuery.fn.smoothScroll = function(options)
    {
        var opts = $.extend({}, $.fn.smoothScroll.defaults, options);

        return this.each(function()
        {
            var $this = $(this);
            var destination = $this.attr('href');

            $this.click(function(event)
            {
                event.preventDefault();
                $.scrollTo(destination, { duration: opts.speed });
            });
        });
    };

    jQuery.fn.smoothScroll.defaults = {
        speed: 300
    };

    jQuery.fn.iFixPng = function()
    {
        if (!$.support.opacity)
        {
            return this.each(function()
            {
                var $this = $(this);
                var cssImage = $this.css('background-image').split('"')[1];

                $this.css('filter', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + cssImage + '", sizingMethod="scale")');
                $this.css('background-image', 'none');
            });
        }
    };

    //accordion
    jQuery.fn.accordion = function(options)
    {
        var defaults = { speed: 'fast' };
        var opts = $.extend({}, defaults, options);
        return this.each(function()
        {
            var $this = $(this);
            var o = $.metadata ? $.extend({}, opts, $this.metadata()) : opts;
            var triggers = $this.find('.accordionTrigger');
            var elements = $this.find('.accordion');
            var handleClick = function(trigger)
            {
                var selectedElement = trigger.next('ul');
                if (selectedElement.css('display') == 'none')
                {
                    triggers.removeClass('expanded');
                    trigger.addClass('expanded');
                    elements.slideUp(o.speed);
                    selectedElement.slideDown(o.speed);
                }
                else
                {
                    trigger.removeClass('expanded');
                    selectedElement.slideUp(o.speed);
                }
            }
            triggers.bind('click', function(event)
            {
                event.preventDefault();
                var trigger = $(this);
                handleClick(trigger);
            });
        });
    };

    //jAlert
    // jQuery Paolo's amazing alert replacement
    // Public
    jQuery.jAlert = function(message, options)
    {
        var opts = $.extend({}, $.jAlert.defaults, options);

        var $container = _buildContainer();

        $container.text(message);

        _show($container, opts);
    };

    jQuery.jAlert.defaults = { duration: 4000 };

    // Private
    var _buildContainer = function()
    {
        var $container = $('#jAlert');

        if ($container.length === 0)
        {
            var $body = $(document.body);
            $container = $('<div id="jAlert"></div>');
            $container.appendTo($body);
        }

        return $container;
    };

    var _centerInViewport = function($obj)
    {
        var $viewport = $(window);


        var top = ($viewport.height() / 2) + $(window).scrollTop() - ($obj.height() / 2);
        var left = ($viewport.width() / 2) - ($obj.width() / 2);

        $obj.css({
            'top': top + 'px',
            'left': left + 'px'
        });

        return $obj;
    };

    var _explode = function($obj, evt)
    {
        $obj.fadeOut('fast');
        if (typeof evt !== 'undefined')
        {
            clearTimeout(evt);
        }
    };

    var _show = function($obj, opts)
    {
        _centerInViewport($obj).fadeIn('fast', function()
        {
            if (opts.duration === 0)
            {
                var $closeBtn = $('<a class="jAlertCloseBtn">Close</a>');
                $closeBtn.appendTo($obj).fadeIn('slow'); ;
                $closeBtn.click(function()
                {
                    _explode($obj);
                });
            } else
            {
                setTimeout(function(evt) { _explode($obj, evt); }, opts.duration);
            }
        });
    };


    $('.goBack').click(function(evt)
    {
        evt.preventDefault();
        history.go(-1);
    });


    // init
    $('.tooltip').tooltips();

    $('.accordion').accordion();

    $('.colorbox').colorbox();
    $('.colorboxLogin').colorbox({ inline: true, href: "#logon" });

    $().bind('cbox_open', function()
    {
        $('#banner').hide();
    });

    $().bind('cbox_closed', function()
    {
        $('#banner').show();
    });
    window.alert = $.jAlert;

});
