﻿/// <reference path="jquery-1.4.2.js"/>

$(function() {
    createTruncate();

    $("#header ul > li > a").mouseout(function() {
        $(this).blur(); //dotted outline ie7, highlight old link on back button - various
    });

    $('.truncationPending')
        .truncate()
        .removeClass('truncationPending');
        
    var regexTrailingSlashes = new RegExp("\/+$", "g")

    var path = decodeURI(location.pathname)
        .toLowerCase()
        .replace(regexTrailingSlashes, "");

    $('#header ul > li > a.navLink')
        .filter(function() {
            return $(this).attr('href')
                .toLowerCase()
                .replace(regexTrailingSlashes, "")
            == path;
        })
        .removeClass('navLink')
        .addClass('navLinkCurrent');
});

function createTruncate() {
    $.fn.truncate = function(options) {

        var defaults = {
            length: 300,
            minTrail: 20,
            maxText: "maximize",
            minText: "minimize",
            ellipsisText: "..."
        };

        var options = $.extend(defaults, options);

        return this.each(function() {
            obj = $(this);
            var body = obj.html();

            var objOptions = $.extend({}, options);
            for (var opt in objOptions) {
                var attr = $(obj).attr(opt);
                if (attr) {
                    objOptions[opt] = isNaN(attr) ? attr : parseInt(attr);
                }
            }

            if (body.length > objOptions.length + objOptions.minTrail) {
                var splitLocation = body.indexOf(' ', objOptions.length);

                if (splitLocation != -1) {
                    var $span = $('<span style="display:block;"/>');

                    $span.expandedText = body;
                    $span.truncatedText = body.substring(0, splitLocation) + objOptions.ellipsisText;

                    $span.html($span.truncatedText);
                    $('p:last', $span).addClass('nopadding');

                    var minMaxButton = $('<input type="button" value="' + objOptions.maxText + '" class="maxButton" />');

                    obj.html($span).append(minMaxButton);

                    minMaxButton.click(function() {
                        if (minMaxButton.val() == objOptions.maxText) {
                            $span.html($span.expandedText);
                            $(this)
                                .val(objOptions.minText)
                                .removeClass('maxButton')
                                .addClass('minButton');
                        } else {
                            $span.html($span.truncatedText);
                            $(this)
                                .val(objOptions.maxText)
                                .removeClass('minButton')
                                .addClass('maxButton');
                        }
                        $('p:last', $span).addClass('nopadding');
                    });
                }
            }
        });
    };
}

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17620482-2']);
_gaq.push(['_trackPageview']);

(function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
