/*!
* jQuery Cycle Plugin (with Transition Definitions)
* Examples and documentation at: http://jquery.malsup.com/cycle/
* Copyright (c) 2007-2010 M. Alsup
* Version: 2.99 (12-MAR-2011)
* Dual licensed under the MIT and GPL licenses.
* http://jquery.malsup.com/license.html
* Requires: jQuery v1.3.2 or later
*/
; (function ($) {

    var ver = '2.99';

    // if $.support is not defined (pre jQuery 1.3) add what I need
    if ($.support == undefined) {
        $.support = {
            opacity: !($.browser.msie)
        };
    }

    function debug(s) {
        $.fn.cycle.debug && log(s);
    }
    function log() {
        window.console && console.log && console.log('[cycle] ' + Array.prototype.join.call(arguments, ' '));
    }
    $.expr[':'].paused = function (el) {
        return el.cyclePause;
    }


    // the options arg can be...
    //   a number  - indicates an immediate transition should occur to the given slide index
    //   a string  - 'pause', 'resume', 'toggle', 'next', 'prev', 'stop', 'destroy' or the name of a transition effect (ie, 'fade', 'zoom', etc)
    //   an object - properties to control the slideshow
    //
    // the arg2 arg can be...
    //   the name of an fx (only used in conjunction with a numeric value for 'options')
    //   the value true (only used in first arg == 'resume') and indicates
    //	 that the resume should occur immediately (not wait for next timeout)

    $.fn.cycle = function (options, arg2) {
        var o = { s: this.selector, c: this.context };

        // in 1.3+ we can fix mistakes with the ready state
        if (this.length === 0 && options != 'stop') {
            if (!$.isReady && o.s) {
                log('DOM not ready, queuing slideshow');
                $(function () {
                    $(o.s, o.c).cycle(options, arg2);
                });
                return this;
            }
            // is your DOM ready?  http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
            log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
            return this;
        }

        // iterate the matched nodeset
        return this.each(function () {
            var opts = handleArguments(this, options, arg2);
            if (opts === false)
                return;

            opts.updateActivePagerLink = opts.updateActivePagerLink || $.fn.cycle.updateActivePagerLink;

            // stop existing slideshow for this container (if there is one)
            if (this.cycleTimeout)
                clearTimeout(this.cycleTimeout);
            this.cycleTimeout = this.cyclePause = 0;

            var $cont = $(this);
            var $slides = opts.slideExpr ? $(opts.slideExpr, this) : $cont.children();
            var els = $slides.get();
            if (els.length < 2) {
                log('terminating; too few slides: ' + els.length);
                return;
            }

            var opts2 = buildOptions($cont, $slides, els, opts, o);
            if (opts2 === false)
                return;

            var startTime = opts2.continuous ? 10 : getTimeout(els[opts2.currSlide], els[opts2.nextSlide], opts2, !opts2.backwards);

            // if it's an auto slideshow, kick it off
            if (startTime) {
                startTime += (opts2.delay || 0);
                if (startTime < 10)
                    startTime = 10;
                debug('first timeout: ' + startTime);
                this.cycleTimeout = setTimeout(function () { go(els, opts2, 0, !opts.backwards) }, startTime);
            }
        });
    };

    // process the args that were passed to the plugin fn
    function handleArguments(cont, options, arg2) {
        if (cont.cycleStop == undefined)
            cont.cycleStop = 0;
        if (options === undefined || options === null)
            options = {};
        if (options.constructor == String) {
            switch (options) {
                case 'destroy':
                case 'stop':
                    var opts = $(cont).data('cycle.opts');
                    if (!opts)
                        return false;
                    cont.cycleStop++; // callbacks look for change
                    if (cont.cycleTimeout)
                        clearTimeout(cont.cycleTimeout);
                    cont.cycleTimeout = 0;
                    $(cont).removeData('cycle.opts');
                    if (options == 'destroy')
                        destroy(opts);
                    return false;
                case 'toggle':
                    cont.cyclePause = (cont.cyclePause === 1) ? 0 : 1;
                    checkInstantResume(cont.cyclePause, arg2, cont);
                    return false;
                case 'pause':
                    cont.cyclePause = 1;
                    return false;
                case 'resume':
                    cont.cyclePause = 0;
                    checkInstantResume(false, arg2, cont);
                    return false;
                case 'prev':
                case 'next':
                    var opts = $(cont).data('cycle.opts');
                    if (!opts) {
                        log('options not found, "prev/next" ignored');
                        return false;
                    }
                    $.fn.cycle[options](opts);
                    return false;
                default:
                    options = { fx: options };
            };
            return options;
        }
        else if (options.constructor == Number) {
            // go to the requested slide
            var num = options;
            options = $(cont).data('cycle.opts');
            if (!options) {
                log('options not found, can not advance slide');
                return false;
            }
            if (num < 0 || num >= options.elements.length) {
                log('invalid slide index: ' + num);
                return false;
            }
            options.nextSlide = num;
            if (cont.cycleTimeout) {
                clearTimeout(cont.cycleTimeout);
                cont.cycleTimeout = 0;
            }
            if (typeof arg2 == 'string')
                options.oneTimeFx = arg2;
            go(options.elements, options, 1, num >= options.currSlide);
            return false;
        }
        return options;

        function checkInstantResume(isPaused, arg2, cont) {
            if (!isPaused && arg2 === true) { // resume now!
                var options = $(cont).data('cycle.opts');
                if (!options) {
                    log('options not found, can not resume');
                    return false;
                }
                if (cont.cycleTimeout) {
                    clearTimeout(cont.cycleTimeout);
                    cont.cycleTimeout = 0;
                }
                go(options.elements, options, 1, !options.backwards);
            }
        }
    };

    function removeFilter(el, opts) {
        if (!$.support.opacity && opts.cleartype && el.style.filter) {
            try { el.style.removeAttribute('filter'); }
            catch (smother) { } // handle old opera versions
        }
    };

    // unbind event handlers
    function destroy(opts) {
        if (opts.next)
            $(opts.next).unbind(opts.prevNextEvent);
        if (opts.prev)
            $(opts.prev).unbind(opts.prevNextEvent);

        if (opts.pager || opts.pagerAnchorBuilder)
            $.each(opts.pagerAnchors || [], function () {
                this.unbind().remove();
            });
        opts.pagerAnchors = null;
        if (opts.destroy) // callback
            opts.destroy(opts);
    };

    // one-time initialization
    function buildOptions($cont, $slides, els, options, o) {
        // support metadata plugin (v1.0 and v2.0)
        var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {});
        if (opts.autostop)
            opts.countdown = opts.autostopCount || els.length;

        var cont = $cont[0];
        $cont.data('cycle.opts', opts);
        opts.$cont = $cont;
        opts.stopCount = cont.cycleStop;
        opts.elements = els;
        opts.before = opts.before ? [opts.before] : [];
        opts.after = opts.after ? [opts.after] : [];

        // push some after callbacks
        if (!$.support.opacity && opts.cleartype)
            opts.after.push(function () { removeFilter(this, opts); });
        if (opts.continuous)
            opts.after.push(function () { go(els, opts, 0, !opts.backwards); });

        saveOriginalOpts(opts);

        // clearType corrections
        if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
            clearTypeFix($slides);

        // container requires non-static position so that slides can be position within
        if ($cont.css('position') == 'static')
            $cont.css('position', 'relative');
        if (opts.width)
            $cont.width(opts.width);
        if (opts.height && opts.height != 'auto')
            $cont.height(opts.height);

        if (opts.startingSlide)
            opts.startingSlide = parseInt(opts.startingSlide);
        else if (opts.backwards)
            opts.startingSlide = els.length - 1;

        // if random, mix up the slide array
        if (opts.random) {
            opts.randomMap = [];
            for (var i = 0; i < els.length; i++)
                opts.randomMap.push(i);
            opts.randomMap.sort(function (a, b) { return Math.random() - 0.5; });
            opts.randomIndex = 1;
            opts.startingSlide = opts.randomMap[1];
        }
        else if (opts.startingSlide >= els.length)
            opts.startingSlide = 0; // catch bogus input
        opts.currSlide = opts.startingSlide || 0;
        var first = opts.startingSlide;

        // set position and zIndex on all the slides
        $slides.css({ position: 'absolute', top: 0, left: 0 }).hide().each(function (i) {
            var z;
            if (opts.backwards)
                z = first ? i <= first ? els.length + (i - first) : first - i : els.length - i;
            else
                z = first ? i >= first ? els.length - (i - first) : first - i : els.length - i;
            $(this).css('z-index', z)
        });

        // make sure first slide is visible
        $(els[first]).css('opacity', 1).show(); // opacity bit needed to handle restart use case
        removeFilter(els[first], opts);

        // stretch slides
        if (opts.fit && opts.width)
            $slides.width(opts.width);
        if (opts.fit && opts.height && opts.height != 'auto')
            $slides.height(opts.height);

        // stretch container
        var reshape = opts.containerResize && !$cont.innerHeight();
        if (reshape) { // do this only if container has no size http://tinyurl.com/da2oa9
            var maxw = 0, maxh = 0;
            for (var j = 0; j < els.length; j++) {
                var $e = $(els[j]), e = $e[0], w = $e.outerWidth(), h = $e.outerHeight();
                if (!w) w = e.offsetWidth || e.width || $e.attr('width');
                if (!h) h = e.offsetHeight || e.height || $e.attr('height');
                maxw = w > maxw ? w : maxw;
                maxh = h > maxh ? h : maxh;
            }
            if (maxw > 0 && maxh > 0)
                $cont.css({ width: maxw + 'px', height: maxh + 'px' });
        }

        if (opts.pause)
            $cont.hover(function () { this.cyclePause++; }, function () { this.cyclePause--; });

        if (supportMultiTransitions(opts) === false)
            return false;

        // apparently a lot of people use image slideshows without height/width attributes on the images.
        // Cycle 2.50+ requires the sizing info for every slide; this block tries to deal with that.
        var requeue = false;
        options.requeueAttempts = options.requeueAttempts || 0;
        $slides.each(function () {
            // try to get height/width of each slide
            var $el = $(this);
            this.cycleH = (opts.fit && opts.height) ? opts.height : ($el.height() || this.offsetHeight || this.height || $el.attr('height') || 0);
            this.cycleW = (opts.fit && opts.width) ? opts.width : ($el.width() || this.offsetWidth || this.width || $el.attr('width') || 0);

            if ($el.is('img')) {
                // sigh..  sniffing, hacking, shrugging...  this crappy hack tries to account for what browsers do when
                // an image is being downloaded and the markup did not include sizing info (height/width attributes);
                // there seems to be some "default" sizes used in this situation
                var loadingIE = ($.browser.msie && this.cycleW == 28 && this.cycleH == 30 && !this.complete);
                var loadingFF = ($.browser.mozilla && this.cycleW == 34 && this.cycleH == 19 && !this.complete);
                var loadingOp = ($.browser.opera && ((this.cycleW == 42 && this.cycleH == 19) || (this.cycleW == 37 && this.cycleH == 17)) && !this.complete);
                var loadingOther = (this.cycleH == 0 && this.cycleW == 0 && !this.complete);
                // don't requeue for images that are still loading but have a valid size
                if (loadingIE || loadingFF || loadingOp || loadingOther) {
                    if (o.s && opts.requeueOnImageNotLoaded && ++options.requeueAttempts < 100) { // track retry count so we don't loop forever
                        log(options.requeueAttempts, ' - img slide not loaded, requeuing slideshow: ', this.src, this.cycleW, this.cycleH);
                        setTimeout(function () { $(o.s, o.c).cycle(options) }, opts.requeueTimeout);
                        requeue = true;
                        return false; // break each loop
                    }
                    else {
                        log('could not determine size of image: ' + this.src, this.cycleW, this.cycleH);
                    }
                }
            }
            return true;
        });

        if (requeue)
            return false;

        opts.cssBefore = opts.cssBefore || {};
        opts.cssAfter = opts.cssAfter || {};
        opts.cssFirst = opts.cssFirst || {};
        opts.animIn = opts.animIn || {};
        opts.animOut = opts.animOut || {};

        $slides.not(':eq(' + first + ')').css(opts.cssBefore);
        $($slides[first]).css(opts.cssFirst);

        if (opts.timeout) {
            opts.timeout = parseInt(opts.timeout);
            // ensure that timeout and speed settings are sane
            if (opts.speed.constructor == String)
                opts.speed = $.fx.speeds[opts.speed] || parseInt(opts.speed);
            if (!opts.sync)
                opts.speed = opts.speed / 2;

            var buffer = opts.fx == 'none' ? 0 : opts.fx == 'shuffle' ? 500 : 250;
            while ((opts.timeout - opts.speed) < buffer) // sanitize timeout
                opts.timeout += opts.speed;
        }
        if (opts.easing)
            opts.easeIn = opts.easeOut = opts.easing;
        if (!opts.speedIn)
            opts.speedIn = opts.speed;
        if (!opts.speedOut)
            opts.speedOut = opts.speed;

        opts.slideCount = els.length;
        opts.currSlide = opts.lastSlide = first;
        if (opts.random) {
            if (++opts.randomIndex == els.length)
                opts.randomIndex = 0;
            opts.nextSlide = opts.randomMap[opts.randomIndex];
        }
        else if (opts.backwards)
            opts.nextSlide = opts.startingSlide == 0 ? (els.length - 1) : opts.startingSlide - 1;
        else
            opts.nextSlide = opts.startingSlide >= (els.length - 1) ? 0 : opts.startingSlide + 1;

        // run transition init fn
        if (!opts.multiFx) {
            var init = $.fn.cycle.transitions[opts.fx];
            if ($.isFunction(init))
                init($cont, $slides, opts);
            else if (opts.fx != 'custom' && !opts.multiFx) {
                log('unknown transition: ' + opts.fx, '; slideshow terminating');
                return false;
            }
        }

        // fire artificial events
        var e0 = $slides[first];
        if (opts.before.length)
            opts.before[0].apply(e0, [e0, e0, opts, true]);
        if (opts.after.length)
            opts.after[0].apply(e0, [e0, e0, opts, true]);

        if (opts.next)
            $(opts.next).bind(opts.prevNextEvent, function () { return advance(opts, 1) });
        if (opts.prev)
            $(opts.prev).bind(opts.prevNextEvent, function () { return advance(opts, 0) });
        if (opts.pager || opts.pagerAnchorBuilder)
            buildPager(els, opts);

        exposeAddSlide(opts, els);

        return opts;
    };

    // save off original opts so we can restore after clearing state
    function saveOriginalOpts(opts) {
        opts.original = { before: [], after: [] };
        opts.original.cssBefore = $.extend({}, opts.cssBefore);
        opts.original.cssAfter = $.extend({}, opts.cssAfter);
        opts.original.animIn = $.extend({}, opts.animIn);
        opts.original.animOut = $.extend({}, opts.animOut);
        $.each(opts.before, function () { opts.original.before.push(this); });
        $.each(opts.after, function () { opts.original.after.push(this); });
    };

    function supportMultiTransitions(opts) {
        var i, tx, txs = $.fn.cycle.transitions;
        // look for multiple effects
        if (opts.fx.indexOf(',') > 0) {
            opts.multiFx = true;
            opts.fxs = opts.fx.replace(/\s*/g, '').split(',');
            // discard any bogus effect names
            for (i = 0; i < opts.fxs.length; i++) {
                var fx = opts.fxs[i];
                tx = txs[fx];
                if (!tx || !txs.hasOwnProperty(fx) || !$.isFunction(tx)) {
                    log('discarding unknown transition: ', fx);
                    opts.fxs.splice(i, 1);
                    i--;
                }
            }
            // if we have an empty list then we threw everything away!
            if (!opts.fxs.length) {
                log('No valid transitions named; slideshow terminating.');
                return false;
            }
        }
        else if (opts.fx == 'all') {  // auto-gen the list of transitions
            opts.multiFx = true;
            opts.fxs = [];
            for (p in txs) {
                tx = txs[p];
                if (txs.hasOwnProperty(p) && $.isFunction(tx))
                    opts.fxs.push(p);
            }
        }
        if (opts.multiFx && opts.randomizeEffects) {
            // munge the fxs array to make effect selection random
            var r1 = Math.floor(Math.random() * 20) + 30;
            for (i = 0; i < r1; i++) {
                var r2 = Math.floor(Math.random() * opts.fxs.length);
                opts.fxs.push(opts.fxs.splice(r2, 1)[0]);
            }
            debug('randomized fx sequence: ', opts.fxs);
        }
        return true;
    };

    // provide a mechanism for adding slides after the slideshow has started
    function exposeAddSlide(opts, els) {
        opts.addSlide = function (newSlide, prepend) {
            var $s = $(newSlide), s = $s[0];
            if (!opts.autostopCount)
                opts.countdown++;
            els[prepend ? 'unshift' : 'push'](s);
            if (opts.els)
                opts.els[prepend ? 'unshift' : 'push'](s); // shuffle needs this
            opts.slideCount = els.length;

            $s.css('position', 'absolute');
            $s[prepend ? 'prependTo' : 'appendTo'](opts.$cont);

            if (prepend) {
                opts.currSlide++;
                opts.nextSlide++;
            }

            if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
                clearTypeFix($s);

            if (opts.fit && opts.width)
                $s.width(opts.width);
            if (opts.fit && opts.height && opts.height != 'auto')
                $s.height(opts.height);
            s.cycleH = (opts.fit && opts.height) ? opts.height : $s.height();
            s.cycleW = (opts.fit && opts.width) ? opts.width : $s.width();

            $s.css(opts.cssBefore);

            if (opts.pager || opts.pagerAnchorBuilder)
                $.fn.cycle.createPagerAnchor(els.length - 1, s, $(opts.pager), els, opts);

            if ($.isFunction(opts.onAddSlide))
                opts.onAddSlide($s);
            else
                $s.hide(); // default behavior
        };
    }

    // reset internal state; we do this on every pass in order to support multiple effects
    $.fn.cycle.resetState = function (opts, fx) {
        fx = fx || opts.fx;
        opts.before = []; opts.after = [];
        opts.cssBefore = $.extend({}, opts.original.cssBefore);
        opts.cssAfter = $.extend({}, opts.original.cssAfter);
        opts.animIn = $.extend({}, opts.original.animIn);
        opts.animOut = $.extend({}, opts.original.animOut);
        opts.fxFn = null;
        $.each(opts.original.before, function () { opts.before.push(this); });
        $.each(opts.original.after, function () { opts.after.push(this); });

        // re-init
        var init = $.fn.cycle.transitions[fx];
        if ($.isFunction(init))
            init(opts.$cont, $(opts.elements), opts);
    };

    // this is the main engine fn, it handles the timeouts, callbacks and slide index mgmt
    function go(els, opts, manual, fwd) {
        // opts.busy is true if we're in the middle of an animation
        if (manual && opts.busy && opts.manualTrump) {
            // let manual transitions requests trump active ones
            debug('manualTrump in go(), stopping active transition');
            $(els).stop(true, true);
            opts.busy = 0;
        }
        // don't begin another timeout-based transition if there is one active
        if (opts.busy) {
            debug('transition active, ignoring new tx request');
            return;
        }

        var p = opts.$cont[0], curr = els[opts.currSlide], next = els[opts.nextSlide];

        // stop cycling if we have an outstanding stop request
        if (p.cycleStop != opts.stopCount || p.cycleTimeout === 0 && !manual)
            return;

        // check to see if we should stop cycling based on autostop options
        if (!manual && !p.cyclePause && !opts.bounce &&
		((opts.autostop && (--opts.countdown <= 0)) ||
		(opts.nowrap && !opts.random && opts.nextSlide < opts.currSlide))) {
            if (opts.end)
                opts.end(opts);
            return;
        }

        // if slideshow is paused, only transition on a manual trigger
        var changed = false;
        if ((manual || !p.cyclePause) && (opts.nextSlide != opts.currSlide)) {
            changed = true;
            var fx = opts.fx;
            // keep trying to get the slide size if we don't have it yet
            curr.cycleH = curr.cycleH || $(curr).height();
            curr.cycleW = curr.cycleW || $(curr).width();
            next.cycleH = next.cycleH || $(next).height();
            next.cycleW = next.cycleW || $(next).width();

            // support multiple transition types
            if (opts.multiFx) {
                if (opts.lastFx == undefined || ++opts.lastFx >= opts.fxs.length)
                    opts.lastFx = 0;
                fx = opts.fxs[opts.lastFx];
                opts.currFx = fx;
            }

            // one-time fx overrides apply to:  $('div').cycle(3,'zoom');
            if (opts.oneTimeFx) {
                fx = opts.oneTimeFx;
                opts.oneTimeFx = null;
            }

            $.fn.cycle.resetState(opts, fx);

            // run the before callbacks
            if (opts.before.length)
                $.each(opts.before, function (i, o) {
                    if (p.cycleStop != opts.stopCount) return;
                    o.apply(next, [curr, next, opts, fwd]);
                });

            // stage the after callacks
            var after = function () {
                opts.busy = 0;
                $.each(opts.after, function (i, o) {
                    if (p.cycleStop != opts.stopCount) return;
                    o.apply(next, [curr, next, opts, fwd]);
                });
            };

            debug('tx firing(' + fx + '); currSlide: ' + opts.currSlide + '; nextSlide: ' + opts.nextSlide);

            // get ready to perform the transition
            opts.busy = 1;
            if (opts.fxFn) // fx function provided?
                opts.fxFn(curr, next, opts, after, fwd, manual && opts.fastOnEvent);
            else if ($.isFunction($.fn.cycle[opts.fx])) // fx plugin ?
                $.fn.cycle[opts.fx](curr, next, opts, after, fwd, manual && opts.fastOnEvent);
            else
                $.fn.cycle.custom(curr, next, opts, after, fwd, manual && opts.fastOnEvent);
        }

        if (changed || opts.nextSlide == opts.currSlide) {
            // calculate the next slide
            opts.lastSlide = opts.currSlide;
            if (opts.random) {
                opts.currSlide = opts.nextSlide;
                if (++opts.randomIndex == els.length)
                    opts.randomIndex = 0;
                opts.nextSlide = opts.randomMap[opts.randomIndex];
                if (opts.nextSlide == opts.currSlide)
                    opts.nextSlide = (opts.currSlide == opts.slideCount - 1) ? 0 : opts.currSlide + 1;
            }
            else if (opts.backwards) {
                var roll = (opts.nextSlide - 1) < 0;
                if (roll && opts.bounce) {
                    opts.backwards = !opts.backwards;
                    opts.nextSlide = 1;
                    opts.currSlide = 0;
                }
                else {
                    opts.nextSlide = roll ? (els.length - 1) : opts.nextSlide - 1;
                    opts.currSlide = roll ? 0 : opts.nextSlide + 1;
                }
            }
            else { // sequence
                var roll = (opts.nextSlide + 1) == els.length;
                if (roll && opts.bounce) {
                    opts.backwards = !opts.backwards;
                    opts.nextSlide = els.length - 2;
                    opts.currSlide = els.length - 1;
                }
                else {
                    opts.nextSlide = roll ? 0 : opts.nextSlide + 1;
                    opts.currSlide = roll ? els.length - 1 : opts.nextSlide - 1;
                }
            }
        }
        if (changed && opts.pager)
            opts.updateActivePagerLink(opts.pager, opts.currSlide, opts.activePagerClass);

        // stage the next transition
        var ms = 0;
        if (opts.timeout && !opts.continuous)
            ms = getTimeout(els[opts.currSlide], els[opts.nextSlide], opts, fwd);
        else if (opts.continuous && p.cyclePause) // continuous shows work off an after callback, not this timer logic
            ms = 10;
        if (ms > 0)
            p.cycleTimeout = setTimeout(function () { go(els, opts, 0, !opts.backwards) }, ms);
    };

    // invoked after transition
    $.fn.cycle.updateActivePagerLink = function (pager, currSlide, clsName) {
        $(pager).each(function () {
            $(this).children().removeClass(clsName).eq(currSlide).addClass(clsName);
        });
    };

    // calculate timeout value for current transition
    function getTimeout(curr, next, opts, fwd) {
        if (opts.timeoutFn) {
            // call user provided calc fn
            var t = opts.timeoutFn.call(curr, curr, next, opts, fwd);
            while (opts.fx != 'none' && (t - opts.speed) < 250) // sanitize timeout
                t += opts.speed;
            debug('calculated timeout: ' + t + '; speed: ' + opts.speed);
            if (t !== false)
                return t;
        }
        return opts.timeout;
    };

    // expose next/prev function, caller must pass in state
    $.fn.cycle.next = function (opts) { advance(opts, 1); };
    $.fn.cycle.prev = function (opts) { advance(opts, 0); };

    // advance slide forward or back
    function advance(opts, moveForward) {
        var val = moveForward ? 1 : -1;
        var els = opts.elements;
        var p = opts.$cont[0], timeout = p.cycleTimeout;
        if (timeout) {
            clearTimeout(timeout);
            p.cycleTimeout = 0;
        }
        if (opts.random && val < 0) {
            // move back to the previously display slide
            opts.randomIndex--;
            if (--opts.randomIndex == -2)
                opts.randomIndex = els.length - 2;
            else if (opts.randomIndex == -1)
                opts.randomIndex = els.length - 1;
            opts.nextSlide = opts.randomMap[opts.randomIndex];
        }
        else if (opts.random) {
            opts.nextSlide = opts.randomMap[opts.randomIndex];
        }
        else {
            opts.nextSlide = opts.currSlide + val;
            if (opts.nextSlide < 0) {
                if (opts.nowrap) return false;
                opts.nextSlide = els.length - 1;
            }
            else if (opts.nextSlide >= els.length) {
                if (opts.nowrap) return false;
                opts.nextSlide = 0;
            }
        }

        var cb = opts.onPrevNextEvent || opts.prevNextClick; // prevNextClick is deprecated
        if ($.isFunction(cb))
            cb(val > 0, opts.nextSlide, els[opts.nextSlide]);
        go(els, opts, 1, moveForward);
        return false;
    };

    function buildPager(els, opts) {
        var $p = $(opts.pager);
        $.each(els, function (i, o) {
            $.fn.cycle.createPagerAnchor(i, o, $p, els, opts);
        });
        opts.updateActivePagerLink(opts.pager, opts.startingSlide, opts.activePagerClass);
    };

    $.fn.cycle.createPagerAnchor = function (i, el, $p, els, opts) {
        var a;
        if ($.isFunction(opts.pagerAnchorBuilder)) {
            a = opts.pagerAnchorBuilder(i, el);
            debug('pagerAnchorBuilder(' + i + ', el) returned: ' + a);
        }
        else
            a = '<a href="#">' + (i + 1) + '</a>';

        if (!a)
            return;
        var $a = $(a);
        // don't reparent if anchor is in the dom
        if ($a.parents('body').length === 0) {
            var arr = [];
            if ($p.length > 1) {
                $p.each(function () {
                    var $clone = $a.clone(true);
                    $(this).append($clone);
                    arr.push($clone[0]);
                });
                $a = $(arr);
            }
            else {
                $a.appendTo($p);
            }
        }

        opts.pagerAnchors = opts.pagerAnchors || [];
        opts.pagerAnchors.push($a);
        $a.bind(opts.pagerEvent, function (e) {
            e.preventDefault();
            opts.nextSlide = i;
            var p = opts.$cont[0], timeout = p.cycleTimeout;
            if (timeout) {
                clearTimeout(timeout);
                p.cycleTimeout = 0;
            }
            var cb = opts.onPagerEvent || opts.pagerClick; // pagerClick is deprecated
            if ($.isFunction(cb))
                cb(opts.nextSlide, els[opts.nextSlide]);
            go(els, opts, 1, opts.currSlide < i); // trigger the trans
            //		return false; // <== allow bubble
        });

        if (!/^click/.test(opts.pagerEvent) && !opts.allowPagerClickBubble)
            $a.bind('click.cycle', function () { return false; }); // suppress click

        if (opts.pauseOnPagerHover)
            $a.hover(function () { opts.$cont[0].cyclePause++; }, function () { opts.$cont[0].cyclePause--; });
    };

    // helper fn to calculate the number of slides between the current and the next
    $.fn.cycle.hopsFromLast = function (opts, fwd) {
        var hops, l = opts.lastSlide, c = opts.currSlide;
        if (fwd)
            hops = c > l ? c - l : opts.slideCount - l;
        else
            hops = c < l ? l - c : l + opts.slideCount - c;
        return hops;
    };

    // fix clearType problems in ie6 by setting an explicit bg color
    // (otherwise text slides look horrible during a fade transition)
    function clearTypeFix($slides) {
        debug('applying clearType background-color hack');
        function hex(s) {
            s = parseInt(s).toString(16);
            return s.length < 2 ? '0' + s : s;
        };
        function getBg(e) {
            for (; e && e.nodeName.toLowerCase() != 'html'; e = e.parentNode) {
                var v = $.css(e, 'background-color');
                if (v && v.indexOf('rgb') >= 0) {
                    var rgb = v.match(/\d+/g);
                    return '#' + hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]);
                }
                if (v && v != 'transparent')
                    return v;
            }
            return '#ffffff';
        };
        $slides.each(function () { $(this).css('background-color', getBg(this)); });
    };

    // reset common props before the next transition
    $.fn.cycle.commonReset = function (curr, next, opts, w, h, rev) {
        $(opts.elements).not(curr).hide();
        if (typeof opts.cssBefore.opacity == 'undefined')
            opts.cssBefore.opacity = 1;
        opts.cssBefore.display = 'block';
        if (opts.slideResize && w !== false && next.cycleW > 0)
            opts.cssBefore.width = next.cycleW;
        if (opts.slideResize && h !== false && next.cycleH > 0)
            opts.cssBefore.height = next.cycleH;
        opts.cssAfter = opts.cssAfter || {};
        opts.cssAfter.display = 'none';
        $(curr).css('zIndex', opts.slideCount + (rev === true ? 1 : 0));
        $(next).css('zIndex', opts.slideCount + (rev === true ? 0 : 1));
    };

    // the actual fn for effecting a transition
    $.fn.cycle.custom = function (curr, next, opts, cb, fwd, speedOverride) {
        var $l = $(curr), $n = $(next);
        var speedIn = opts.speedIn, speedOut = opts.speedOut, easeIn = opts.easeIn, easeOut = opts.easeOut;
        $n.css(opts.cssBefore);
        if (speedOverride) {
            if (typeof speedOverride == 'number')
                speedIn = speedOut = speedOverride;
            else
                speedIn = speedOut = 1;
            easeIn = easeOut = null;
        }
        var fn = function () {
            $n.animate(opts.animIn, speedIn, easeIn, function () {
                cb();
            });
        };
        $l.animate(opts.animOut, speedOut, easeOut, function () {
            $l.css(opts.cssAfter);
            if (!opts.sync)
                fn();
        });
        if (opts.sync) fn();
    };

    // transition definitions - only fade is defined here, transition pack defines the rest
    $.fn.cycle.transitions = {
        fade: function ($cont, $slides, opts) {
            $slides.not(':eq(' + opts.currSlide + ')').css('opacity', 0);
            opts.before.push(function (curr, next, opts) {
                $.fn.cycle.commonReset(curr, next, opts);
                opts.cssBefore.opacity = 0;
            });
            opts.animIn = { opacity: 1 };
            opts.animOut = { opacity: 0 };
            opts.cssBefore = { top: 0, left: 0 };
        }
    };

    $.fn.cycle.ver = function () { return ver; };

    // override these globally if you like (they are all optional)
    $.fn.cycle.defaults = {
        activePagerClass: 'activeSlide', // class name used for the active pager link
        after: null,  // transition callback (scope set to element that was shown):  function(currSlideElement, nextSlideElement, options, forwardFlag)
        allowPagerClickBubble: false, // allows or prevents click event on pager anchors from bubbling
        animIn: null,  // properties that define how the slide animates in
        animOut: null,  // properties that define how the slide animates out
        autostop: 0,   // true to end slideshow after X transitions (where X == slide count)
        autostopCount: 0,   // number of transitions (optionally used with autostop to define X)
        backwards: false, // true to start slideshow at last slide and move backwards through the stack
        before: null,  // transition callback (scope set to element to be shown):	 function(currSlideElement, nextSlideElement, options, forwardFlag)
        cleartype: !$.support.opacity,  // true if clearType corrections should be applied (for IE)
        cleartypeNoBg: false, // set to true to disable extra cleartype fixing (leave false to force background color setting on slides)
        containerResize: 1,   // resize container to fit largest slide
        continuous: 0,   // true to start next transition immediately after current one completes
        cssAfter: null,  // properties that defined the state of the slide after transitioning out
        cssBefore: null,  // properties that define the initial state of the slide before transitioning in
        delay: 0,   // additional delay (in ms) for first transition (hint: can be negative)
        easeIn: null,  // easing for "in" transition
        easeOut: null,  // easing for "out" transition
        easing: null,  // easing method for both in and out transitions
        end: null,  // callback invoked when the slideshow terminates (use with autostop or nowrap options): function(options)
        fastOnEvent: 0,   // force fast transitions when triggered manually (via pager or prev/next); value == time in ms
        fit: 0,   // force slides to fit container
        fx: 'fade', // name of transition effect (or comma separated names, ex: 'fade,scrollUp,shuffle')
        fxFn: null,  // function used to control the transition: function(currSlideElement, nextSlideElement, options, afterCalback, forwardFlag)
        height: 'auto', // container height
        manualTrump: true,  // causes manual transition to stop an active transition instead of being ignored
        next: null,  // selector for element to use as event trigger for next slide
        nowrap: 0,   // true to prevent slideshow from wrapping
        onPagerEvent: null,  // callback fn for pager events: function(zeroBasedSlideIndex, slideElement)
        onPrevNextEvent: null,  // callback fn for prev/next events: function(isNext, zeroBasedSlideIndex, slideElement)
        pager: null,  // selector for element to use as pager container
        pagerAnchorBuilder: null, // callback fn for building anchor links:  function(index, DOMelement)
        pagerEvent: 'click.cycle', // name of event which drives the pager navigation
        pause: 0,   // true to enable "pause on hover"
        pauseOnPagerHover: 0, // true to pause when hovering over pager link
        prev: null,  // selector for element to use as event trigger for previous slide
        prevNextEvent: 'click.cycle', // event which drives the manual transition to the previous or next slide
        random: 0,   // true for random, false for sequence (not applicable to shuffle fx)
        randomizeEffects: 1,  // valid when multiple effects are used; true to make the effect sequence random
        requeueOnImageNotLoaded: true, // requeue the slideshow if any image slides are not yet loaded
        requeueTimeout: 250,  // ms delay for requeue
        rev: 0,   // causes animations to transition in reverse (for effects that support it such as scrollHorz/scrollVert/shuffle)
        shuffle: null,  // coords for shuffle animation, ex: { top:15, left: 200 }
        slideExpr: null,  // expression for selecting slides (if something other than all children is required)
        slideResize: 1,     // force slide width/height to fixed size before every transition
        speed: 1000,  // speed of the transition (any valid fx speed value)
        speedIn: null,  // speed of the 'in' transition
        speedOut: null,  // speed of the 'out' transition
        startingSlide: 0,   // zero-based index of the first slide to be displayed
        sync: 1,   // true if in/out transitions should occur simultaneously
        timeout: 4000,  // milliseconds between slide transitions (0 to disable auto advance)
        timeoutFn: null,  // callback for determining per-slide timeout value:  function(currSlideElement, nextSlideElement, options, forwardFlag)
        updateActivePagerLink: null // callback fn invoked to update the active pager link (adds/removes activePagerClass style)
    };

})(jQuery);


/*!
* jQuery Cycle Plugin Transition Definitions
* This script is a plugin for the jQuery Cycle Plugin
* Examples and documentation at: http://malsup.com/jquery/cycle/
* Copyright (c) 2007-2010 M. Alsup
* Version:	 2.73
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
(function ($) {

    //
    // These functions define slide initialization and properties for the named
    // transitions. To save file size feel free to remove any of these that you
    // don't need.
    //
    $.fn.cycle.transitions.none = function ($cont, $slides, opts) {
        opts.fxFn = function (curr, next, opts, after) {
            $(next).show();
            $(curr).hide();
            after();
        };
    };

    // not a cross-fade, fadeout only fades out the top slide
    $.fn.cycle.transitions.fadeout = function ($cont, $slides, opts) {
        $slides.not(':eq(' + opts.currSlide + ')').css({ display: 'block', 'opacity': 1 });
        opts.before.push(function (curr, next, opts, w, h, rev) {
            $(curr).css('zIndex', opts.slideCount + (!rev === true ? 1 : 0));
            $(next).css('zIndex', opts.slideCount + (!rev === true ? 0 : 1));
        });
        opts.animIn.opacity = 1;
        opts.animOut.opacity = 0;
        opts.cssBefore.opacity = 1;
        opts.cssBefore.display = 'block';
        opts.cssAfter.zIndex = 0;
    };

    // scrollUp/Down/Left/Right
    $.fn.cycle.transitions.scrollUp = function ($cont, $slides, opts) {
        $cont.css('overflow', 'hidden');
        opts.before.push($.fn.cycle.commonReset);
        var h = $cont.height();
        opts.cssBefore.top = h;
        opts.cssBefore.left = 0;
        opts.cssFirst.top = 0;
        opts.animIn.top = 0;
        opts.animOut.top = -h;
    };
    $.fn.cycle.transitions.scrollDown = function ($cont, $slides, opts) {
        $cont.css('overflow', 'hidden');
        opts.before.push($.fn.cycle.commonReset);
        var h = $cont.height();
        opts.cssFirst.top = 0;
        opts.cssBefore.top = -h;
        opts.cssBefore.left = 0;
        opts.animIn.top = 0;
        opts.animOut.top = h;
    };
    $.fn.cycle.transitions.scrollLeft = function ($cont, $slides, opts) {
        $cont.css('overflow', 'hidden');
        opts.before.push($.fn.cycle.commonReset);
        var w = $cont.width();
        opts.cssFirst.left = 0;
        opts.cssBefore.left = w;
        opts.cssBefore.top = 0;
        opts.animIn.left = 0;
        opts.animOut.left = 0 - w;
    };
    $.fn.cycle.transitions.scrollRight = function ($cont, $slides, opts) {
        $cont.css('overflow', 'hidden');
        opts.before.push($.fn.cycle.commonReset);
        var w = $cont.width();
        opts.cssFirst.left = 0;
        opts.cssBefore.left = -w;
        opts.cssBefore.top = 0;
        opts.animIn.left = 0;
        opts.animOut.left = w;
    };
    $.fn.cycle.transitions.scrollHorz = function ($cont, $slides, opts) {
        $cont.css('overflow', 'hidden').width();
        opts.before.push(function (curr, next, opts, fwd) {
            if (opts.rev)
                fwd = !fwd;
            $.fn.cycle.commonReset(curr, next, opts);
            opts.cssBefore.left = fwd ? (next.cycleW - 1) : (1 - next.cycleW);
            opts.animOut.left = fwd ? -curr.cycleW : curr.cycleW;
        });
        opts.cssFirst.left = 0;
        opts.cssBefore.top = 0;
        opts.animIn.left = 0;
        opts.animOut.top = 0;
    };
    $.fn.cycle.transitions.scrollVert = function ($cont, $slides, opts) {
        $cont.css('overflow', 'hidden');
        opts.before.push(function (curr, next, opts, fwd) {
            if (opts.rev)
                fwd = !fwd;
            $.fn.cycle.commonReset(curr, next, opts);
            opts.cssBefore.top = fwd ? (1 - next.cycleH) : (next.cycleH - 1);
            opts.animOut.top = fwd ? curr.cycleH : -curr.cycleH;
        });
        opts.cssFirst.top = 0;
        opts.cssBefore.left = 0;
        opts.animIn.top = 0;
        opts.animOut.left = 0;
    };

    // slideX/slideY
    $.fn.cycle.transitions.slideX = function ($cont, $slides, opts) {
        opts.before.push(function (curr, next, opts) {
            $(opts.elements).not(curr).hide();
            $.fn.cycle.commonReset(curr, next, opts, false, true);
            opts.animIn.width = next.cycleW;
        });
        opts.cssBefore.left = 0;
        opts.cssBefore.top = 0;
        opts.cssBefore.width = 0;
        opts.animIn.width = 'show';
        opts.animOut.width = 0;
    };
    $.fn.cycle.transitions.slideY = function ($cont, $slides, opts) {
        opts.before.push(function (curr, next, opts) {
            $(opts.elements).not(curr).hide();
            $.fn.cycle.commonReset(curr, next, opts, true, false);
            opts.animIn.height = next.cycleH;
        });
        opts.cssBefore.left = 0;
        opts.cssBefore.top = 0;
        opts.cssBefore.height = 0;
        opts.animIn.height = 'show';
        opts.animOut.height = 0;
    };

    // shuffle
    $.fn.cycle.transitions.shuffle = function ($cont, $slides, opts) {
        var i, w = $cont.css('overflow', 'visible').width();
        $slides.css({ left: 0, top: 0 });
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, true, true, true);
        });
        // only adjust speed once!
        if (!opts.speedAdjusted) {
            opts.speed = opts.speed / 2; // shuffle has 2 transitions
            opts.speedAdjusted = true;
        }
        opts.random = 0;
        opts.shuffle = opts.shuffle || { left: -w, top: 15 };
        opts.els = [];
        for (i = 0; i < $slides.length; i++)
            opts.els.push($slides[i]);

        for (i = 0; i < opts.currSlide; i++)
            opts.els.push(opts.els.shift());

        // custom transition fn (hat tip to Benjamin Sterling for this bit of sweetness!)
        opts.fxFn = function (curr, next, opts, cb, fwd) {
            if (opts.rev)
                fwd = !fwd;
            var $el = fwd ? $(curr) : $(next);
            $(next).css(opts.cssBefore);
            var count = opts.slideCount;
            $el.animate(opts.shuffle, opts.speedIn, opts.easeIn, function () {
                var hops = $.fn.cycle.hopsFromLast(opts, fwd);
                for (var k = 0; k < hops; k++)
                    fwd ? opts.els.push(opts.els.shift()) : opts.els.unshift(opts.els.pop());
                if (fwd) {
                    for (var i = 0, len = opts.els.length; i < len; i++)
                        $(opts.els[i]).css('z-index', len - i + count);
                }
                else {
                    var z = $(curr).css('z-index');
                    $el.css('z-index', parseInt(z) + 1 + count);
                }
                $el.animate({ left: 0, top: 0 }, opts.speedOut, opts.easeOut, function () {
                    $(fwd ? this : curr).hide();
                    if (cb) cb();
                });
            });
        };
        $.extend(opts.cssBefore, { display: 'block', opacity: 1, top: 0, left: 0 });
    };

    // turnUp/Down/Left/Right
    $.fn.cycle.transitions.turnUp = function ($cont, $slides, opts) {
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, true, false);
            opts.cssBefore.top = next.cycleH;
            opts.animIn.height = next.cycleH;
            opts.animOut.width = next.cycleW;
        });
        opts.cssFirst.top = 0;
        opts.cssBefore.left = 0;
        opts.cssBefore.height = 0;
        opts.animIn.top = 0;
        opts.animOut.height = 0;
    };
    $.fn.cycle.transitions.turnDown = function ($cont, $slides, opts) {
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, true, false);
            opts.animIn.height = next.cycleH;
            opts.animOut.top = curr.cycleH;
        });
        opts.cssFirst.top = 0;
        opts.cssBefore.left = 0;
        opts.cssBefore.top = 0;
        opts.cssBefore.height = 0;
        opts.animOut.height = 0;
    };
    $.fn.cycle.transitions.turnLeft = function ($cont, $slides, opts) {
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, false, true);
            opts.cssBefore.left = next.cycleW;
            opts.animIn.width = next.cycleW;
        });
        opts.cssBefore.top = 0;
        opts.cssBefore.width = 0;
        opts.animIn.left = 0;
        opts.animOut.width = 0;
    };
    $.fn.cycle.transitions.turnRight = function ($cont, $slides, opts) {
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, false, true);
            opts.animIn.width = next.cycleW;
            opts.animOut.left = curr.cycleW;
        });
        $.extend(opts.cssBefore, { top: 0, left: 0, width: 0 });
        opts.animIn.left = 0;
        opts.animOut.width = 0;
    };

    // zoom
    $.fn.cycle.transitions.zoom = function ($cont, $slides, opts) {
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, false, false, true);
            opts.cssBefore.top = next.cycleH / 2;
            opts.cssBefore.left = next.cycleW / 2;
            $.extend(opts.animIn, { top: 0, left: 0, width: next.cycleW, height: next.cycleH });
            $.extend(opts.animOut, { width: 0, height: 0, top: curr.cycleH / 2, left: curr.cycleW / 2 });
        });
        opts.cssFirst.top = 0;
        opts.cssFirst.left = 0;
        opts.cssBefore.width = 0;
        opts.cssBefore.height = 0;
    };

    // fadeZoom
    $.fn.cycle.transitions.fadeZoom = function ($cont, $slides, opts) {
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, false, false);
            opts.cssBefore.left = next.cycleW / 2;
            opts.cssBefore.top = next.cycleH / 2;
            $.extend(opts.animIn, { top: 0, left: 0, width: next.cycleW, height: next.cycleH });
        });
        opts.cssBefore.width = 0;
        opts.cssBefore.height = 0;
        opts.animOut.opacity = 0;
    };

    // blindX
    $.fn.cycle.transitions.blindX = function ($cont, $slides, opts) {
        var w = $cont.css('overflow', 'hidden').width();
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts);
            opts.animIn.width = next.cycleW;
            opts.animOut.left = curr.cycleW;
        });
        opts.cssBefore.left = w;
        opts.cssBefore.top = 0;
        opts.animIn.left = 0;
        opts.animOut.left = w;
    };
    // blindY
    $.fn.cycle.transitions.blindY = function ($cont, $slides, opts) {
        var h = $cont.css('overflow', 'hidden').height();
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts);
            opts.animIn.height = next.cycleH;
            opts.animOut.top = curr.cycleH;
        });
        opts.cssBefore.top = h;
        opts.cssBefore.left = 0;
        opts.animIn.top = 0;
        opts.animOut.top = h;
    };
    // blindZ
    $.fn.cycle.transitions.blindZ = function ($cont, $slides, opts) {
        var h = $cont.css('overflow', 'hidden').height();
        var w = $cont.width();
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts);
            opts.animIn.height = next.cycleH;
            opts.animOut.top = curr.cycleH;
        });
        opts.cssBefore.top = h;
        opts.cssBefore.left = w;
        opts.animIn.top = 0;
        opts.animIn.left = 0;
        opts.animOut.top = h;
        opts.animOut.left = w;
    };

    // growX - grow horizontally from centered 0 width
    $.fn.cycle.transitions.growX = function ($cont, $slides, opts) {
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, false, true);
            opts.cssBefore.left = this.cycleW / 2;
            opts.animIn.left = 0;
            opts.animIn.width = this.cycleW;
            opts.animOut.left = 0;
        });
        opts.cssBefore.top = 0;
        opts.cssBefore.width = 0;
    };
    // growY - grow vertically from centered 0 height
    $.fn.cycle.transitions.growY = function ($cont, $slides, opts) {
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, true, false);
            opts.cssBefore.top = this.cycleH / 2;
            opts.animIn.top = 0;
            opts.animIn.height = this.cycleH;
            opts.animOut.top = 0;
        });
        opts.cssBefore.height = 0;
        opts.cssBefore.left = 0;
    };

    // curtainX - squeeze in both edges horizontally
    $.fn.cycle.transitions.curtainX = function ($cont, $slides, opts) {
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, false, true, true);
            opts.cssBefore.left = next.cycleW / 2;
            opts.animIn.left = 0;
            opts.animIn.width = this.cycleW;
            opts.animOut.left = curr.cycleW / 2;
            opts.animOut.width = 0;
        });
        opts.cssBefore.top = 0;
        opts.cssBefore.width = 0;
    };
    // curtainY - squeeze in both edges vertically
    $.fn.cycle.transitions.curtainY = function ($cont, $slides, opts) {
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, true, false, true);
            opts.cssBefore.top = next.cycleH / 2;
            opts.animIn.top = 0;
            opts.animIn.height = next.cycleH;
            opts.animOut.top = curr.cycleH / 2;
            opts.animOut.height = 0;
        });
        opts.cssBefore.height = 0;
        opts.cssBefore.left = 0;
    };

    // cover - curr slide covered by next slide
    $.fn.cycle.transitions.cover = function ($cont, $slides, opts) {
        var d = opts.direction || 'left';
        var w = $cont.css('overflow', 'hidden').width();
        var h = $cont.height();
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts);
            if (d == 'right')
                opts.cssBefore.left = -w;
            else if (d == 'up')
                opts.cssBefore.top = h;
            else if (d == 'down')
                opts.cssBefore.top = -h;
            else
                opts.cssBefore.left = w;
        });
        opts.animIn.left = 0;
        opts.animIn.top = 0;
        opts.cssBefore.top = 0;
        opts.cssBefore.left = 0;
    };

    // uncover - curr slide moves off next slide
    $.fn.cycle.transitions.uncover = function ($cont, $slides, opts) {
        var d = opts.direction || 'left';
        var w = $cont.css('overflow', 'hidden').width();
        var h = $cont.height();
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, true, true, true);
            if (d == 'right')
                opts.animOut.left = w;
            else if (d == 'up')
                opts.animOut.top = -h;
            else if (d == 'down')
                opts.animOut.top = h;
            else
                opts.animOut.left = -w;
        });
        opts.animIn.left = 0;
        opts.animIn.top = 0;
        opts.cssBefore.top = 0;
        opts.cssBefore.left = 0;
    };

    // toss - move top slide and fade away
    $.fn.cycle.transitions.toss = function ($cont, $slides, opts) {
        var w = $cont.css('overflow', 'visible').width();
        var h = $cont.height();
        opts.before.push(function (curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, true, true, true);
            // provide default toss settings if animOut not provided
            if (!opts.animOut.left && !opts.animOut.top)
                $.extend(opts.animOut, { left: w * 2, top: -h / 2, opacity: 0 });
            else
                opts.animOut.opacity = 0;
        });
        opts.cssBefore.left = 0;
        opts.cssBefore.top = 0;
        opts.animIn.left = 0;
    };

    // wipe - clip animation
    $.fn.cycle.transitions.wipe = function ($cont, $slides, opts) {
        var w = $cont.css('overflow', 'hidden').width();
        var h = $cont.height();
        opts.cssBefore = opts.cssBefore || {};
        var clip;
        if (opts.clip) {
            if (/l2r/.test(opts.clip))
                clip = 'rect(0px 0px ' + h + 'px 0px)';
            else if (/r2l/.test(opts.clip))
                clip = 'rect(0px ' + w + 'px ' + h + 'px ' + w + 'px)';
            else if (/t2b/.test(opts.clip))
                clip = 'rect(0px ' + w + 'px 0px 0px)';
            else if (/b2t/.test(opts.clip))
                clip = 'rect(' + h + 'px ' + w + 'px ' + h + 'px 0px)';
            else if (/zoom/.test(opts.clip)) {
                var top = parseInt(h / 2);
                var left = parseInt(w / 2);
                clip = 'rect(' + top + 'px ' + left + 'px ' + top + 'px ' + left + 'px)';
            }
        }

        opts.cssBefore.clip = opts.cssBefore.clip || clip || 'rect(0px 0px 0px 0px)';

        var d = opts.cssBefore.clip.match(/(\d+)/g);
        var t = parseInt(d[0]), r = parseInt(d[1]), b = parseInt(d[2]), l = parseInt(d[3]);

        opts.before.push(function (curr, next, opts) {
            if (curr == next) return;
            var $curr = $(curr), $next = $(next);
            $.fn.cycle.commonReset(curr, next, opts, true, true, false);
            opts.cssAfter.display = 'block';

            var step = 1, count = parseInt((opts.speedIn / 13)) - 1;
            (function f() {
                var tt = t ? t - parseInt(step * (t / count)) : 0;
                var ll = l ? l - parseInt(step * (l / count)) : 0;
                var bb = b < h ? b + parseInt(step * ((h - b) / count || 1)) : h;
                var rr = r < w ? r + parseInt(step * ((w - r) / count || 1)) : w;
                $next.css({ clip: 'rect(' + tt + 'px ' + rr + 'px ' + bb + 'px ' + ll + 'px)' });
                (step++ <= count) ? setTimeout(f, 13) : $curr.css('display', 'none');
            })();
        });
        $.extend(opts.cssBefore, { display: 'block', opacity: 1, top: 0, left: 0 });
        opts.animIn = { left: 0 };
        opts.animOut = { left: 0 };
    };

})(jQuery);


// ---- utility.js ----------------------------------------------------------------------------------------------------------

$(document).ready(function () {


    $('a.button.download-brochure').click(function () {

        //$.preventDefault();

        $(this).next().slideToggle('slow');
        return false;

    });
    
    $('#buttons').wrap('<div id="buttons-cont" />');


	$('.ForumPost .PostActionLink:first,.ForumPost .ActionLink:first').addClass('first');
	$('.PostForm input[type="checkbox"]').addClass('checkbox');
	$('.PostForm .DicussionPanel input[type="image"]').hide();
	$('.PostForm input.SubmitButton:first').addClass('submit');
	$('.ForumNewPost span.Title').each(function(){
		if($(this).html().trim() == 'Subscribe to forum',$(this).html().trim() == 'Post preview'){
			$(this).addClass('add-margin');
		}
	});

    // ---- Main Menu ----------------------------------------------------------------------------------------------------------

    $('#case-studies-list li:nth-child(4n),ul.brochures li:last').addClass('no-margin');
    $('#main .item').each(function () {
        $(this).find('li:last').addClass('last');
    });


    // ---- Main box   ----------------------------------------------------------------------------------------------------------

    $('.inner #content').wrapInner('<div id="content-top"/>').append('<div id="content-bottom"/>');
    $('.LoginPanelPasswordRetrieval input[type="submit"]').addClass('submitBtn');
    $('.LoginPanelPasswordRetrieval label').addClass('helv-cb');
    

    // ---- PreFilled   ----------------------------------------------------------------------------------------------------------

    $.fn.preFilled = function () {
        $(this).focus(function () {
            if (this.value == this.defaultValue) {
                this.value = "";
            }
        }).blur(function () {
            if (!this.value.length) {
                this.value = this.defaultValue;
            }
        });
    };

    $("#search-field").preFilled();


    // ---- Tooltips   ----------------------------------------------------------------------------------------------------------

    $("body").append("<div id='ToolTipDiv'><span class='title'></span><span class='tip'></span></div>");
    $('#slideshow-nav a').hover(function (e) {
        tooltipText = $(this).attr('title');
        $(this).attr('title','');
        $("#ToolTipDiv").find('.title').html(tooltipText);
        var tooltipHeight = $('#ToolTipDiv').height();
        var triggerWidth = $('#ToolTipDiv').width() - 13;
        $('#ToolTipDiv .tip').css({ 'left': triggerWidth / 2 });
        var offset = $(this).offset();
        var tipY = offset.top + 53;
        var tipX = offset.left + 20 - (triggerWidth / 2);
        $("#ToolTipDiv").css({ 'top': tipY, 'left': tipX }).fadeIn("fast");
    }, function () {
        $(this).attr('title', tooltipText);
        $("#ToolTipDiv").stop(true, true).fadeOut("fast");
    });


    // ---- Slider Tabs  ----------------------------------------------------------------------------------------------------------

		
		$('<a href="#" id="prev" class="generic">Prev</a><a href="#" id="next" class="generic">Next</a>').appendTo('#banner');<!--  -->
		
		$('<div id="tab0" class="tab-content"><div class="slideshow"><div class="slideshow-cont"></div></div></div>').prependTo('#banner .tab-container');
		$('#banner .tab-content').each(function(){
			$(this).find('.slideshow-cont div:first').clone().appendTo('#tab0 .slideshow-cont');
		});
		
		
		$(".tab-content").not('#tab0').hide(); // Hide all content
		
		$("ul.tabs li").click(function() { 
			$('#tab0 .slideshow-cont').cycle('stop');
			$(this).parents('.tabbed-content').find("#slideshow-nav .active").removeClass();
			$(this).find('a').addClass("active"); 
			$(this).parents('.tabbed-content').find(".tab-content").hide();
			var activeTab = $(this).find("a").attr("href"); 
			$('#next.generic,#prev.generic').removeClass('generic').addClass('specific');
			$(activeTab).find(".slideshow-cont").cycle({ timeout: 5000, cleartype: 1, speed: 800, prev: '#prev', next: '#next' });
			$(activeTab).fadeIn(); 
			return false;
		});
		
    
    // ---- Slider   ---------------------------------------------------------------------------------------------------------------
    
		function onBefore(curr, next, opts) { 
		    var currentSlide = opts.nextSlide;
		    if($(this).is(':first-child')){currentSlide = 0}
		    $('#slideshow-nav li a').removeClass('active');
		    $('#slideshow-nav li').eq(currentSlide).find('a').addClass('active');
		}
		
		$('#tab0 .slideshow-cont').cycle({ timeout: 5000, cleartype: 1, speed: 800, prev: null, next: null, before: onBefore });
		
		$('#next,#prev').click(function(){
			if($(this).hasClass('generic')){
				var currentSlideShow = $(this).siblings('.tabbed-content').find('#slideshow-nav .active').attr('href');
				$('#tab0 .slideshow-cont').cycle('stop');
				if($(this).attr('id')=='next'){
					if($.browser.msie){
						$(currentSlideShow).find(".slideshow-cont").cycle({ timeout: 5000, cleartype: 1, speed: 800, prev: '#prev', next: '#next',startingSlide: 0 });
					} else {
						$(currentSlideShow).find(".slideshow-cont").cycle({ timeout: 5000, cleartype: 1, speed: 800, prev: '#prev', next: '#next',startingSlide: 1 });
					}
				} else {
					var nextSlide = $(currentSlideShow).find('.slideshow-cont div:last');
					var nextSlide = $(currentSlideShow + ' .slideshow-cont div').index(nextSlide);
					if($.browser.msie){
						var nextSlide = nextSlide +1;
					}
					$(currentSlideShow).find(".slideshow-cont").cycle({ timeout: 5000, cleartype: 1, speed: 800, prev: '#prev', next: '#next',startingSlide: nextSlide });
				}				
				$(this).siblings('.tabbed-content').find(".tab-content").hide();
				$('#next.generic,#prev.generic').removeClass('generic').addClass('specific');
				$(currentSlideShow).fadeIn(); 
			}
		});
		

		
    
});


// ---- Menu ----------------------------------------------------------------------------------------------------------
		
	function initMenus() {
		$('ul.menu ul').hide();
		$.each($('ul.menu'), function(){
			$('#' + this.id + '.expandfirst ul:first').show();
		});
		$('ul.menu li a').click(
			function() {
				$(this).parents('ul').find('.active').removeClass('active');
				$(this).addClass('active');
				var checkElement = $(this).next();
				var parent = this.parentNode.parentNode.id;
	
				if($('#' + parent).hasClass('noaccordion')) {
					$(this).next().slideToggle('normal');
					return false;
				}
				if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
					if($('#' + parent).hasClass('collapsible')) {
						$('#' + parent + ' ul:visible').slideUp('normal');
					}
					return false;
				}
				if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
					$('#' + parent + ' ul:visible').slideUp('normal');
					checkElement.slideDown('normal');
					return false;
				}
			}
		);
}

// ---- Case Studies Software Filter  ------------------------------------------------------------------------------------

function initCaseStudiesSoftwareFiler() {

    var hasClass;
    hasClass = false;

    $('nav#case-studies ul li').each(function () {

        //$('nav#case-studies ul li').removeClass('highlighted');
        //$(this).parent().addClass('highlighted');

        if ($(this).hasClass('highlighted')) {
            hasClass = true;
        }

    });

    if (hasClass == false) {
        $('nav#case-studies ul li:first').addClass('highlighted');
    }

}


$(document).ready(function () {

    initMenus();

    initCaseStudiesSoftwareFiler();

});

// ---- cufon-yui.js ----------------------------------------------------------------------------------------------------------

/*
 * Copyright (c) 2009 Simo Kinnunen.
 * Licensed under the MIT license.
 *
 * @version 1.09i
 */
var Cufon=(function(){var m=function(){return m.replace.apply(null,arguments)};var x=m.DOM={ready:(function(){var C=false,E={loaded:1,complete:1};var B=[],D=function(){if(C){return}C=true;for(var F;F=B.shift();F()){}};if(document.addEventListener){document.addEventListener("DOMContentLoaded",D,false);window.addEventListener("pageshow",D,false)}if(!window.opera&&document.readyState){(function(){E[document.readyState]?D():setTimeout(arguments.callee,10)})()}if(document.readyState&&document.createStyleSheet){(function(){try{document.body.doScroll("left");D()}catch(F){setTimeout(arguments.callee,1)}})()}q(window,"load",D);return function(F){if(!arguments.length){D()}else{C?F():B.push(F)}}})(),root:function(){return document.documentElement||document.body}};var n=m.CSS={Size:function(C,B){this.value=parseFloat(C);this.unit=String(C).match(/[a-z%]*$/)[0]||"px";this.convert=function(D){return D/B*this.value};this.convertFrom=function(D){return D/this.value*B};this.toString=function(){return this.value+this.unit}},addClass:function(C,B){var D=C.className;C.className=D+(D&&" ")+B;return C},color:j(function(C){var B={};B.color=C.replace(/^rgba\((.*?),\s*([\d.]+)\)/,function(E,D,F){B.opacity=parseFloat(F);return"rgb("+D+")"});return B}),fontStretch:j(function(B){if(typeof B=="number"){return B}if(/%$/.test(B)){return parseFloat(B)/100}return{"ultra-condensed":0.5,"extra-condensed":0.625,condensed:0.75,"semi-condensed":0.875,"semi-expanded":1.125,expanded:1.25,"extra-expanded":1.5,"ultra-expanded":2}[B]||1}),getStyle:function(C){var B=document.defaultView;if(B&&B.getComputedStyle){return new a(B.getComputedStyle(C,null))}if(C.currentStyle){return new a(C.currentStyle)}return new a(C.style)},gradient:j(function(F){var G={id:F,type:F.match(/^-([a-z]+)-gradient\(/)[1],stops:[]},C=F.substr(F.indexOf("(")).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);for(var E=0,B=C.length,D;E<B;++E){D=C[E].split("=",2).reverse();G.stops.push([D[1]||E/(B-1),D[0]])}return G}),quotedList:j(function(E){var D=[],C=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,B;while(B=C.exec(E)){D.push(B[3]||B[1])}return D}),recognizesMedia:j(function(G){var E=document.createElement("style"),D,C,B;E.type="text/css";E.media=G;try{E.appendChild(document.createTextNode("/**/"))}catch(F){}C=g("head")[0];C.insertBefore(E,C.firstChild);D=(E.sheet||E.styleSheet);B=D&&!D.disabled;C.removeChild(E);return B}),removeClass:function(D,C){var B=RegExp("(?:^|\\s+)"+C+"(?=\\s|$)","g");D.className=D.className.replace(B,"");return D},supports:function(D,C){var B=document.createElement("span").style;if(B[D]===undefined){return false}B[D]=C;return B[D]===C},textAlign:function(E,D,B,C){if(D.get("textAlign")=="right"){if(B>0){E=" "+E}}else{if(B<C-1){E+=" "}}return E},textShadow:j(function(F){if(F=="none"){return null}var E=[],G={},B,C=0;var D=/(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;while(B=D.exec(F)){if(B[0]==","){E.push(G);G={};C=0}else{if(B[1]){G.color=B[1]}else{G[["offX","offY","blur"][C++]]=B[2]}}}E.push(G);return E}),textTransform:(function(){var B={uppercase:function(C){return C.toUpperCase()},lowercase:function(C){return C.toLowerCase()},capitalize:function(C){return C.replace(/\b./g,function(D){return D.toUpperCase()})}};return function(E,D){var C=B[D.get("textTransform")];return C?C(E):E}})(),whiteSpace:(function(){var D={inline:1,"inline-block":1,"run-in":1};var C=/^\s+/,B=/\s+$/;return function(H,F,G,E){if(E){if(E.nodeName.toLowerCase()=="br"){H=H.replace(C,"")}}if(D[F.get("display")]){return H}if(!G.previousSibling){H=H.replace(C,"")}if(!G.nextSibling){H=H.replace(B,"")}return H}})()};n.ready=(function(){var B=!n.recognizesMedia("all"),E=false;var D=[],H=function(){B=true;for(var K;K=D.shift();K()){}};var I=g("link"),J=g("style");function C(K){return K.disabled||G(K.sheet,K.media||"screen")}function G(M,P){if(!n.recognizesMedia(P||"all")){return true}if(!M||M.disabled){return false}try{var Q=M.cssRules,O;if(Q){search:for(var L=0,K=Q.length;O=Q[L],L<K;++L){switch(O.type){case 2:break;case 3:if(!G(O.styleSheet,O.media.mediaText)){return false}break;default:break search}}}}catch(N){}return true}function F(){if(document.createStyleSheet){return true}var L,K;for(K=0;L=I[K];++K){if(L.rel.toLowerCase()=="stylesheet"&&!C(L)){return false}}for(K=0;L=J[K];++K){if(!C(L)){return false}}return true}x.ready(function(){if(!E){E=n.getStyle(document.body).isUsable()}if(B||(E&&F())){H()}else{setTimeout(arguments.callee,10)}});return function(K){if(B){K()}else{D.push(K)}}})();function s(D){var C=this.face=D.face,B={"\u0020":1,"\u00a0":1,"\u3000":1};this.glyphs=D.glyphs;this.w=D.w;this.baseSize=parseInt(C["units-per-em"],10);this.family=C["font-family"].toLowerCase();this.weight=C["font-weight"];this.style=C["font-style"]||"normal";this.viewBox=(function(){var F=C.bbox.split(/\s+/);var E={minX:parseInt(F[0],10),minY:parseInt(F[1],10),maxX:parseInt(F[2],10),maxY:parseInt(F[3],10)};E.width=E.maxX-E.minX;E.height=E.maxY-E.minY;E.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")};return E})();this.ascent=-parseInt(C.ascent,10);this.descent=-parseInt(C.descent,10);this.height=-this.ascent+this.descent;this.spacing=function(L,N,E){var O=this.glyphs,M,K,G,P=[],F=0,J=-1,I=-1,H;while(H=L[++J]){M=O[H]||this.missingGlyph;if(!M){continue}if(K){F-=G=K[H]||0;P[I]-=G}F+=P[++I]=~~(M.w||this.w)+N+(B[H]?E:0);K=M.k}P.total=F;return P}}function f(){var C={},B={oblique:"italic",italic:"oblique"};this.add=function(D){(C[D.style]||(C[D.style]={}))[D.weight]=D};this.get=function(H,I){var G=C[H]||C[B[H]]||C.normal||C.italic||C.oblique;if(!G){return null}I={normal:400,bold:700}[I]||parseInt(I,10);if(G[I]){return G[I]}var E={1:1,99:0}[I%100],K=[],F,D;if(E===undefined){E=I>400}if(I==500){I=400}for(var J in G){if(!k(G,J)){continue}J=parseInt(J,10);if(!F||J<F){F=J}if(!D||J>D){D=J}K.push(J)}if(I<F){I=F}if(I>D){I=D}K.sort(function(M,L){return(E?(M>=I&&L>=I)?M<L:M>L:(M<=I&&L<=I)?M>L:M<L)?-1:1});return G[K[0]]}}function r(){function D(F,G){if(F.contains){return F.contains(G)}return F.compareDocumentPosition(G)&16}function B(G){var F=G.relatedTarget;if(!F||D(this,F)){return}C(this,G.type=="mouseover")}function E(F){C(this,F.type=="mouseenter")}function C(F,G){setTimeout(function(){var H=d.get(F).options;m.replace(F,G?h(H,H.hover):H,true)},10)}this.attach=function(F){if(F.onmouseenter===undefined){q(F,"mouseover",B);q(F,"mouseout",B)}else{q(F,"mouseenter",E);q(F,"mouseleave",E)}}}function u(){var C=[],D={};function B(H){var E=[],G;for(var F=0;G=H[F];++F){E[F]=C[D[G]]}return E}this.add=function(F,E){D[F]=C.push(E)-1};this.repeat=function(){var E=arguments.length?B(arguments):C,F;for(var G=0;F=E[G++];){m.replace(F[0],F[1],true)}}}function A(){var D={},B=0;function C(E){return E.cufid||(E.cufid=++B)}this.get=function(E){var F=C(E);return D[F]||(D[F]={})}}function a(B){var D={},C={};this.extend=function(E){for(var F in E){if(k(E,F)){D[F]=E[F]}}return this};this.get=function(E){return D[E]!=undefined?D[E]:B[E]};this.getSize=function(F,E){return C[F]||(C[F]=new n.Size(this.get(F),E))};this.isUsable=function(){return !!B}}function q(C,B,D){if(C.addEventListener){C.addEventListener(B,D,false)}else{if(C.attachEvent){C.attachEvent("on"+B,function(){return D.call(C,window.event)})}}}function v(C,B){var D=d.get(C);if(D.options){return C}if(B.hover&&B.hoverables[C.nodeName.toLowerCase()]){b.attach(C)}D.options=B;return C}function j(B){var C={};return function(D){if(!k(C,D)){C[D]=B.apply(null,arguments)}return C[D]}}function c(F,E){var B=n.quotedList(E.get("fontFamily").toLowerCase()),D;for(var C=0;D=B[C];++C){if(i[D]){return i[D].get(E.get("fontStyle"),E.get("fontWeight"))}}return null}function g(B){return document.getElementsByTagName(B)}function k(C,B){return C.hasOwnProperty(B)}function h(){var C={},B,F;for(var E=0,D=arguments.length;B=arguments[E],E<D;++E){for(F in B){if(k(B,F)){C[F]=B[F]}}}return C}function o(E,M,C,N,F,D){var K=document.createDocumentFragment(),H;if(M===""){return K}var L=N.separate;var I=M.split(p[L]),B=(L=="words");if(B&&t){if(/^\s/.test(M)){I.unshift("")}if(/\s$/.test(M)){I.push("")}}for(var J=0,G=I.length;J<G;++J){H=z[N.engine](E,B?n.textAlign(I[J],C,J,G):I[J],C,N,F,D,J<G-1);if(H){K.appendChild(H)}}return K}function l(D,M){var C=D.nodeName.toLowerCase();if(M.ignore[C]){return}var E=!M.textless[C];var B=n.getStyle(v(D,M)).extend(M);var F=c(D,B),G,K,I,H,L,J;if(!F){return}for(G=D.firstChild;G;G=I){K=G.nodeType;I=G.nextSibling;if(E&&K==3){if(H){H.appendData(G.data);D.removeChild(G)}else{H=G}if(I){continue}}if(H){D.replaceChild(o(F,n.whiteSpace(H.data,B,H,J),B,M,G,D),H);H=null}if(K==1){if(G.firstChild){if(G.nodeName.toLowerCase()=="cufon"){z[M.engine](F,null,B,M,G,D)}else{arguments.callee(G,M)}}J=G}}}var t=" ".split(/\s+/).length==0;var d=new A();var b=new r();var y=new u();var e=false;var z={},i={},w={autoDetect:false,engine:null,forceHitArea:false,hover:false,hoverables:{a:true},ignore:{applet:1,canvas:1,col:1,colgroup:1,head:1,iframe:1,map:1,optgroup:1,option:1,script:1,select:1,style:1,textarea:1,title:1,pre:1},printable:true,selector:(window.Sizzle||(window.jQuery&&function(B){return jQuery(B)})||(window.dojo&&dojo.query)||(window.Ext&&Ext.query)||(window.YAHOO&&YAHOO.util&&YAHOO.util.Selector&&YAHOO.util.Selector.query)||(window.$$&&function(B){return $$(B)})||(window.$&&function(B){return $(B)})||(document.querySelectorAll&&function(B){return document.querySelectorAll(B)})||g),separate:"words",textless:{dl:1,html:1,ol:1,table:1,tbody:1,thead:1,tfoot:1,tr:1,ul:1},textShadow:"none"};var p={words:/\s/.test("\u00a0")?/[^\S\u00a0]+/:/\s+/,characters:"",none:/^/};m.now=function(){x.ready();return m};m.refresh=function(){y.repeat.apply(y,arguments);return m};m.registerEngine=function(C,B){if(!B){return m}z[C]=B;return m.set("engine",C)};m.registerFont=function(D){if(!D){return m}var B=new s(D),C=B.family;if(!i[C]){i[C]=new f()}i[C].add(B);return m.set("fontFamily",'"'+C+'"')};m.replace=function(D,C,B){C=h(w,C);if(!C.engine){return m}if(!e){n.addClass(x.root(),"cufon-active cufon-loading");n.ready(function(){n.addClass(n.removeClass(x.root(),"cufon-loading"),"cufon-ready")});e=true}if(C.hover){C.forceHitArea=true}if(C.autoDetect){delete C.fontFamily}if(typeof C.textShadow=="string"){C.textShadow=n.textShadow(C.textShadow)}if(typeof C.color=="string"&&/^-/.test(C.color)){C.textGradient=n.gradient(C.color)}else{delete C.textGradient}if(!B){y.add(D,arguments)}if(D.nodeType||typeof D=="string"){D=[D]}n.ready(function(){for(var F=0,E=D.length;F<E;++F){var G=D[F];if(typeof G=="string"){m.replace(C.selector(G),C,true)}else{l(G,C)}}});return m};m.set=function(B,C){w[B]=C;return m};return m})();Cufon.registerEngine("vml",(function(){var e=document.namespaces;if(!e){return}e.add("cvml","urn:schemas-microsoft-com:vml");e=null;var b=document.createElement("cvml:shape");b.style.behavior="url(#default#VML)";if(!b.coordsize){return}b=null;var h=(document.documentMode||0)<8;document.write(('<style type="text/css">cufoncanvas{text-indent:0;}@media screen{cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}cufoncanvas{position:absolute;text-align:left;}cufon{display:inline-block;position:relative;vertical-align:'+(h?"middle":"text-bottom")+";}cufon cufontext{position:absolute;left:-10000in;font-size:1px;}a cufon{cursor:pointer}}@media print{cufon cufoncanvas{display:none;}}</style>").replace(/;/g,"!important;"));function c(i,j){return a(i,/(?:em|ex|%)$|^[a-z-]+$/i.test(j)?"1em":j)}function a(l,m){if(m==="0"){return 0}if(/px$/i.test(m)){return parseFloat(m)}var k=l.style.left,j=l.runtimeStyle.left;l.runtimeStyle.left=l.currentStyle.left;l.style.left=m.replace("%","em");var i=l.style.pixelLeft;l.style.left=k;l.runtimeStyle.left=j;return i}function f(l,k,j,n){var i="computed"+n,m=k[i];if(isNaN(m)){m=k.get(n);k[i]=m=(m=="normal")?0:~~j.convertFrom(a(l,m))}return m}var g={};function d(p){var q=p.id;if(!g[q]){var n=p.stops,o=document.createElement("cvml:fill"),i=[];o.type="gradient";o.angle=180;o.focus="0";o.method="sigma";o.color=n[0][1];for(var m=1,l=n.length-1;m<l;++m){i.push(n[m][0]*100+"% "+n[m][1])}o.colors=i.join(",");o.color2=n[l][1];g[q]=o}return g[q]}return function(ac,G,Y,C,K,ad,W){var n=(G===null);if(n){G=K.alt}var I=ac.viewBox;var p=Y.computedFontSize||(Y.computedFontSize=new Cufon.CSS.Size(c(ad,Y.get("fontSize"))+"px",ac.baseSize));var y,q;if(n){y=K;q=K.firstChild}else{y=document.createElement("cufon");y.className="cufon cufon-vml";y.alt=G;q=document.createElement("cufoncanvas");y.appendChild(q);if(C.printable){var Z=document.createElement("cufontext");Z.appendChild(document.createTextNode(G));y.appendChild(Z)}if(!W){y.appendChild(document.createElement("cvml:shape"))}}var ai=y.style;var R=q.style;var l=p.convert(I.height),af=Math.ceil(l);var V=af/l;var P=V*Cufon.CSS.fontStretch(Y.get("fontStretch"));var U=I.minX,T=I.minY;R.height=af;R.top=Math.round(p.convert(T-ac.ascent));R.left=Math.round(p.convert(U));ai.height=p.convert(ac.height)+"px";var F=Y.get("color");var ag=Cufon.CSS.textTransform(G,Y).split("");var L=ac.spacing(ag,f(ad,Y,p,"letterSpacing"),f(ad,Y,p,"wordSpacing"));if(!L.length){return null}var k=L.total;var x=-U+k+(I.width-L[L.length-1]);var ah=p.convert(x*P),X=Math.round(ah);var O=x+","+I.height,m;var J="r"+O+"ns";var u=C.textGradient&&d(C.textGradient);var o=ac.glyphs,S=0;var H=C.textShadow;var ab=-1,aa=0,w;while(w=ag[++ab]){var D=o[ag[ab]]||ac.missingGlyph,v;if(!D){continue}if(n){v=q.childNodes[aa];while(v.firstChild){v.removeChild(v.firstChild)}}else{v=document.createElement("cvml:shape");q.appendChild(v)}v.stroked="f";v.coordsize=O;v.coordorigin=m=(U-S)+","+T;v.path=(D.d?"m"+D.d+"xe":"")+"m"+m+J;v.fillcolor=F;if(u){v.appendChild(u.cloneNode(false))}var ae=v.style;ae.width=X;ae.height=af;if(H){var s=H[0],r=H[1];var B=Cufon.CSS.color(s.color),z;var N=document.createElement("cvml:shadow");N.on="t";N.color=B.color;N.offset=s.offX+","+s.offY;if(r){z=Cufon.CSS.color(r.color);N.type="double";N.color2=z.color;N.offset2=r.offX+","+r.offY}N.opacity=B.opacity||(z&&z.opacity)||1;v.appendChild(N)}S+=L[aa++]}var M=v.nextSibling,t,A;if(C.forceHitArea){if(!M){M=document.createElement("cvml:rect");M.stroked="f";M.className="cufon-vml-cover";t=document.createElement("cvml:fill");t.opacity=0;M.appendChild(t);q.appendChild(M)}A=M.style;A.width=X;A.height=af}else{if(M){q.removeChild(M)}}ai.width=Math.max(Math.ceil(p.convert(k*P)),0);if(h){var Q=Y.computedYAdjust;if(Q===undefined){var E=Y.get("lineHeight");if(E=="normal"){E="1em"}else{if(!isNaN(E)){E+="em"}}Y.computedYAdjust=Q=0.5*(a(ad,E)-parseFloat(ai.height))}if(Q){ai.marginTop=Math.ceil(Q)+"px";ai.marginBottom=Q+"px"}}return y}})());Cufon.registerEngine("canvas",(function(){var b=document.createElement("canvas");if(!b||!b.getContext||!b.getContext.apply){return}b=null;var a=Cufon.CSS.supports("display","inline-block");var e=!a&&(document.compatMode=="BackCompat"||/frameset|transitional/i.test(document.doctype.publicId));var f=document.createElement("style");f.type="text/css";f.appendChild(document.createTextNode(("cufon{text-indent:0;}@media screen,projection{cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;"+(e?"":"font-size:1px;line-height:1px;")+"}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;text-indent:-10000in;}"+(a?"cufon canvas{position:relative;}":"cufon canvas{position:absolute;}")+"}@media print{cufon{padding:0;}cufon canvas{display:none;}}").replace(/;/g,"!important;")));document.getElementsByTagName("head")[0].appendChild(f);function d(p,h){var n=0,m=0;var g=[],o=/([mrvxe])([^a-z]*)/g,k;generate:for(var j=0;k=o.exec(p);++j){var l=k[2].split(",");switch(k[1]){case"v":g[j]={m:"bezierCurveTo",a:[n+~~l[0],m+~~l[1],n+~~l[2],m+~~l[3],n+=~~l[4],m+=~~l[5]]};break;case"r":g[j]={m:"lineTo",a:[n+=~~l[0],m+=~~l[1]]};break;case"m":g[j]={m:"moveTo",a:[n=~~l[0],m=~~l[1]]};break;case"x":g[j]={m:"closePath"};break;case"e":break generate}h[g[j].m].apply(h,g[j].a)}return g}function c(m,k){for(var j=0,h=m.length;j<h;++j){var g=m[j];k[g.m].apply(k,g.a)}}return function(V,w,P,t,C,W){var k=(w===null);if(k){w=C.getAttribute("alt")}var A=V.viewBox;var m=P.getSize("fontSize",V.baseSize);var B=0,O=0,N=0,u=0;var z=t.textShadow,L=[];if(z){for(var U=z.length;U--;){var F=z[U];var K=m.convertFrom(parseFloat(F.offX));var I=m.convertFrom(parseFloat(F.offY));L[U]=[K,I];if(I<B){B=I}if(K>O){O=K}if(I>N){N=I}if(K<u){u=K}}}var Z=Cufon.CSS.textTransform(w,P).split("");var E=V.spacing(Z,~~m.convertFrom(parseFloat(P.get("letterSpacing"))||0),~~m.convertFrom(parseFloat(P.get("wordSpacing"))||0));if(!E.length){return null}var h=E.total;O+=A.width-E[E.length-1];u+=A.minX;var s,n;if(k){s=C;n=C.firstChild}else{s=document.createElement("cufon");s.className="cufon cufon-canvas";s.setAttribute("alt",w);n=document.createElement("canvas");s.appendChild(n);if(t.printable){var S=document.createElement("cufontext");S.appendChild(document.createTextNode(w));s.appendChild(S)}}var aa=s.style;var H=n.style;var j=m.convert(A.height);var Y=Math.ceil(j);var M=Y/j;var G=M*Cufon.CSS.fontStretch(P.get("fontStretch"));var J=h*G;var Q=Math.ceil(m.convert(J+O-u));var o=Math.ceil(m.convert(A.height-B+N));n.width=Q;n.height=o;H.width=Q+"px";H.height=o+"px";B+=A.minY;H.top=Math.round(m.convert(B-V.ascent))+"px";H.left=Math.round(m.convert(u))+"px";var r=Math.max(Math.ceil(m.convert(J)),0)+"px";if(a){aa.width=r;aa.height=m.convert(V.height)+"px"}else{aa.paddingLeft=r;aa.paddingBottom=(m.convert(V.height)-1)+"px"}var X=n.getContext("2d"),D=j/A.height;X.scale(D,D*M);X.translate(-u,-B);X.save();function T(){var x=V.glyphs,ab,l=-1,g=-1,y;X.scale(G,1);while(y=Z[++l]){var ab=x[Z[l]]||V.missingGlyph;if(!ab){continue}if(ab.d){X.beginPath();if(ab.code){c(ab.code,X)}else{ab.code=d("m"+ab.d,X)}X.fill()}X.translate(E[++g],0)}X.restore()}if(z){for(var U=z.length;U--;){var F=z[U];X.save();X.fillStyle=F.color;X.translate.apply(X,L[U]);T()}}var q=t.textGradient;if(q){var v=q.stops,p=X.createLinearGradient(0,A.minY,0,A.maxY);for(var U=0,R=v.length;U<R;++U){p.addColorStop.apply(p,v[U])}X.fillStyle=p}else{X.fillStyle=P.get("color")}T();return s}})());

// ---- HelveticaCB.font.js ----------------------------------------------------------------------------------------------------------
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * Copyright (c) 1985, 1987, 1991, 1993, 1997 Adobe Systems Incorporated.  All
 * Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its
 * subsidiaries.
 * 
 * Full name:
 * Helvetica-Condensed-Bold
 */
Cufon.registerFont({"w":180,"face":{"font-family":"HelveticaCB","font-weight":700,"font-stretch":"condensed","units-per-em":"360","panose-1":"0 0 0 0 0 0 0 0 0 0","ascent":"288","descent":"-72","x-height":"5","bbox":"-13 -289 292 90","underline-thickness":"18","underline-position":"-27","stemh":"36","stemv":"47","unicode-range":"U+0020-U+007E"},"glyphs":{" ":{"w":90},"!":{"d":"45,-70r-9,-124r0,-76r47,0v1,71,-1,137,-7,200r-31,0xm84,0r-47,0r0,-48r47,0r0,48","w":119},"\"":{"d":"114,-168r-42,0r0,-98r42,0r0,98xm49,-168r-43,0r0,-98r43,0r0,98","w":119},"#":{"d":"160,-119r0,35r-31,0r-10,84r-31,0r10,-84r-26,0r-10,84r-30,0r10,-84r-31,0r0,-35r35,0r4,-33r-30,0r0,-36r34,0r10,-78r30,0r-9,78r26,0r9,-78r31,0r-10,78r28,0r0,36r-32,0r-4,33r27,0xm107,-152r-26,0r-4,33r25,0"},"$":{"d":"100,-103r0,72v31,-5,23,-64,0,-72xm78,-31r0,-80v-35,-23,-62,-38,-62,-88v0,-32,17,-62,61,-67r0,-23r25,0r0,23v49,9,62,28,60,72r-42,0v0,-19,-3,-31,-20,-36r0,71v37,19,68,46,68,83v1,50,-18,74,-66,81r0,40r-25,0r0,-39v-50,-4,-67,-39,-64,-86r43,0v0,23,-2,43,22,49xm78,-166r0,-64v-30,7,-19,53,0,64"},"%":{"d":"66,-265v53,0,56,32,56,66v0,34,-3,66,-56,66v-52,0,-55,-32,-55,-66v0,-34,3,-66,55,-66xm67,-239v-21,0,-21,16,-21,40v0,24,0,40,21,40v21,0,20,-16,20,-40v0,-24,1,-40,-20,-40xm234,-132v53,0,55,32,55,66v0,34,-2,66,-55,66v-52,0,-55,-32,-55,-66v0,-34,3,-66,55,-66xm234,-105v-21,0,-21,15,-21,39v0,24,0,40,21,40v21,0,21,-16,21,-40v0,-24,0,-39,-21,-39xm101,5r-26,0r121,-275r25,0","w":299},"&":{"d":"110,-186v20,-9,32,-50,3,-54v-28,1,-13,40,-3,54xm131,-153r34,59v5,-16,7,-33,8,-50r40,0v0,32,-8,63,-24,91r32,54r-54,0r-9,-18v-50,49,-135,17,-135,-58v0,-40,20,-63,51,-85v-10,-18,-21,-37,-21,-58v1,-79,118,-75,119,-2v0,30,-17,52,-41,67xm139,-49r-44,-74v-9,4,-27,23,-25,47v3,37,45,56,69,27","w":240},"(":{"d":"71,-276r29,0v-41,69,-51,257,1,347r-30,0v-70,-106,-72,-244,0,-347","w":119},")":{"d":"49,71r-30,0v41,-68,53,-256,0,-347r30,0v70,106,72,244,0,347","w":119},"*":{"d":"138,-166r-24,17v-8,-11,-17,-21,-23,-33v-7,13,-16,22,-24,34r-23,-17r23,-33r-39,-12r9,-27r39,12v-2,-12,-1,-28,-1,-41r29,0r0,40r38,-13r10,28r-39,12v9,10,16,22,25,33"},"+":{"d":"70,-109r0,-68r40,0r0,68r61,0r0,39r-61,0r0,70r-40,0r0,-70r-61,0r0,-39r61,0"},",":{"d":"36,52r0,-16v17,-2,27,-17,26,-36r-26,0r0,-48r48,0v2,52,2,97,-48,100","w":119},"-":{"d":"103,-92r-86,0r0,-41r86,0r0,41","w":119},".":{"d":"84,0r-48,0r0,-48r48,0r0,48","w":119},"\/":{"d":"-4,34r85,-304r31,0r-85,304r-31,0","w":100},"0":{"d":"68,-194r0,122v-1,30,9,38,22,38v13,0,23,-8,23,-38r0,-122v1,-30,-10,-37,-23,-37v-13,0,-22,7,-22,37xm17,-72r0,-122v0,-57,27,-77,73,-77v45,0,73,20,73,77r0,122v0,57,-27,77,-73,77v-45,0,-73,-20,-73,-77"},"1":{"d":"77,0r0,-187r-61,0r0,-36v35,0,64,-10,74,-47r37,0r0,270r-50,0"},"2":{"d":"89,-231v-25,0,-30,28,-28,51r-47,0v0,-35,-5,-87,77,-91v79,-4,92,103,40,144v-22,27,-58,46,-66,87r94,0r0,40r-147,0v-7,-67,35,-105,76,-148v16,-18,25,-25,25,-51v0,-24,-10,-32,-24,-32"},"3":{"d":"62,-164v25,3,52,-11,47,-37v5,-37,-44,-41,-49,-9r0,19r-47,0v-3,-50,20,-80,71,-80v51,0,74,26,74,69v1,24,-12,51,-36,57v24,3,41,24,41,65v0,53,-23,85,-78,85v-78,0,-76,-51,-75,-95r47,0v1,22,-3,56,29,56v37,0,30,-54,21,-80v-9,-11,-31,-11,-45,-11r0,-39"},"4":{"d":"45,-94r51,0r-1,-110xm90,-266r56,0r0,172r23,0r0,39r-23,0r0,55r-50,0r0,-55r-88,0r0,-39"},"5":{"d":"60,-124r-44,0r7,-142r130,0r0,40r-91,0r-4,58v12,-12,23,-16,40,-16v59,0,67,51,67,94v0,61,-18,95,-75,95v-61,0,-77,-28,-77,-90r47,0v1,19,-1,50,26,51v30,2,27,-30,28,-57v2,-43,-10,-53,-28,-53v-13,0,-25,8,-26,20"},"6":{"d":"66,-94v0,33,-2,60,25,60v26,0,24,-25,24,-60v0,-19,2,-48,-25,-48v-25,0,-24,26,-24,48xm91,5v-84,0,-76,-84,-76,-167v0,-86,25,-109,78,-109v40,0,68,18,67,61r-47,0v0,-9,-1,-24,-22,-21v-33,5,-24,38,-26,67v8,-9,16,-18,39,-18v43,0,61,30,61,85v0,68,-16,102,-74,102"},"7":{"d":"45,0v8,-83,36,-161,74,-226r-107,0r0,-40r151,0r0,37v-37,68,-59,139,-66,229r-52,0"},"8":{"d":"65,-75v0,23,1,41,26,41v24,0,24,-22,24,-45v0,-26,-1,-48,-25,-48v-26,0,-25,22,-25,52xm90,-163v36,0,28,-68,1,-68v-19,0,-23,15,-23,33v0,16,1,35,22,35xm53,-146v-49,-23,-47,-125,38,-125v78,0,92,103,34,126v31,6,41,29,41,68v0,60,-28,82,-74,82v-57,0,-77,-27,-77,-81v0,-40,11,-58,38,-70"},"9":{"d":"115,-172v0,-33,1,-59,-26,-59v-26,0,-23,24,-23,59v0,19,-3,49,24,49v25,0,25,-27,25,-49xm90,-271v84,0,76,84,75,167v0,86,-25,109,-78,109v-40,0,-67,-17,-66,-60r47,0v0,9,1,23,22,21v33,-3,24,-40,26,-68v-8,9,-17,18,-40,18v-43,0,-61,-29,-61,-84v0,-68,17,-103,75,-103"},":":{"d":"74,-153r-48,0r0,-47r48,0r0,47xm74,0r-48,0r0,-48r48,0r0,48","w":100},";":{"d":"26,52r0,-16v17,-2,26,-17,25,-36r-25,0r0,-48r48,0v2,52,2,97,-48,100xm74,-153r-48,0r0,-47r48,0r0,47","w":100},"<":{"d":"58,-90r107,59r0,40r-150,-81r0,-36r150,-82r0,40"},"=":{"d":"171,-144r0,39r-162,0r0,-39r162,0xm171,-74r0,39r-162,0r0,-39r162,0"},">":{"d":"15,-31r107,-59r-107,-60r0,-40r150,82r0,36r-150,81r0,-40"},"?":{"d":"88,-239v-25,0,-24,23,-25,40r-44,0v-3,-53,24,-77,70,-77v42,0,69,25,69,66v0,61,-66,76,-62,138r-42,0v-9,-68,55,-81,55,-138v0,-21,-7,-29,-21,-29xm53,-47r46,0r0,47r-46,0r0,-47"},"@":{"d":"286,-163v2,56,-42,104,-93,109v-9,0,-19,-9,-16,-24v-38,45,-105,15,-105,-44v0,-64,79,-118,122,-64r4,-19r35,0r-19,111v-1,7,3,9,7,8v17,-8,37,-33,37,-66v0,-61,-41,-98,-102,-98v-67,0,-114,48,-114,114v0,102,128,153,193,83r35,0v-68,109,-256,53,-256,-83v0,-80,63,-140,143,-140v66,0,127,49,129,113xm181,-133v2,-22,-6,-41,-29,-41v-43,0,-56,79,-15,85v27,4,42,-24,44,-44","w":299},"A":{"d":"57,0r-54,0r65,-270r68,0r61,270r-54,0r-13,-68r-59,0xm101,-240v-5,46,-14,90,-23,132r44,0","w":200},"B":{"d":"74,-40v15,-1,29,3,41,-2v25,-19,24,-87,-22,-79r-19,0r0,81xm74,-161v31,3,55,-3,51,-38v4,-29,-21,-33,-51,-31r0,69xm182,-82v0,51,-25,82,-70,82r-89,0r0,-270r82,0v68,-13,100,93,38,126v28,4,39,27,39,62","w":200},"C":{"d":"134,-96r50,0v-2,56,-14,102,-76,102v-98,1,-88,-76,-88,-163v0,-69,7,-119,88,-119v52,0,76,33,75,90r-50,0v-2,-17,0,-50,-25,-50v-40,0,-36,47,-36,68r0,75v0,22,1,59,36,59v28,0,25,-45,26,-62","w":200},"D":{"d":"76,-40v64,3,71,-10,70,-101v-1,-83,-8,-94,-70,-89r0,190xm198,-146v1,65,-2,146,-79,146r-93,0r0,-270v67,7,124,-21,157,31v12,19,15,48,15,93","w":219},"E":{"d":"165,0r-142,0r0,-270r142,0r0,40r-92,0r0,68r85,0r0,39r-85,0r0,83r92,0r0,40"},"F":{"d":"77,0r-51,0r0,-270r143,0r0,40r-92,0r0,68r86,0r0,40r-86,0r0,122"},"G":{"d":"108,6v-98,1,-88,-76,-88,-163v0,-69,7,-119,88,-119v53,0,91,28,87,91r-50,0v-1,-27,-3,-51,-37,-51v-40,0,-36,47,-36,68r0,75v0,22,1,59,36,59v29,0,38,-30,37,-71r-35,0r0,-40r84,0r0,145r-38,0r0,-31v-10,28,-30,36,-48,37","w":219},"H":{"d":"75,0r-51,0r0,-270r51,0r0,107r70,0r0,-107r51,0r0,270r-51,0r0,-123r-70,0r0,123","w":219},"I":{"d":"75,0r-50,0r0,-270r50,0r0,270","w":100},"J":{"d":"3,-86r50,0v2,21,-8,52,16,52v18,0,19,-14,19,-29r0,-207r50,0r0,197v0,18,3,47,-15,62v-31,27,-88,27,-113,-10v-6,-10,-8,-40,-7,-65","w":159},"K":{"d":"75,0r-51,0r0,-270r51,0r1,120v16,-42,41,-82,61,-120r57,0r-67,116r70,154r-57,0r-47,-107r-18,30r0,77","w":200},"L":{"d":"168,0r-144,0r0,-270r51,0r0,230r93,0r0,40"},"M":{"d":"75,-85r0,85r-51,0r0,-270r80,0r27,125v4,21,8,42,10,63v6,-74,22,-123,35,-188r80,0r0,270r-50,0r4,-246r-54,246r-31,0r-53,-246r-2,0v3,54,5,107,5,161","w":280},"N":{"d":"152,-64r-7,-206r50,0r0,270r-52,0v-27,-69,-53,-124,-75,-203r7,203r-51,0r0,-270r53,0v27,71,53,123,75,206","w":219},"O":{"d":"110,6v-98,0,-88,-76,-88,-163v0,-69,7,-119,88,-119v96,-1,88,73,88,158v0,72,-5,124,-88,124xm74,-168r0,75v0,22,1,59,36,59v58,0,37,-79,37,-132v0,-22,0,-70,-37,-70v-40,0,-36,47,-36,68","w":219},"P":{"d":"75,-230r0,77v38,1,63,3,64,-42v1,-41,-29,-35,-64,-35xm190,-193v0,45,-34,86,-81,80r-34,0r0,113r-51,0r0,-270r103,0v48,0,63,39,63,77","w":200},"Q":{"d":"211,2r-25,24r-28,-28v-12,6,-27,8,-48,8v-98,1,-88,-76,-88,-163v0,-69,7,-119,88,-119v96,-1,87,73,88,158v0,35,-1,71,-14,92xm113,-45v10,-6,20,-22,30,-21v6,-30,4,-68,4,-102v0,-21,3,-68,-37,-68v-40,0,-36,47,-36,68r0,75v-4,26,10,70,49,57","w":219},"R":{"d":"126,-113v-17,-5,-34,-3,-52,-3r0,116r-50,0r0,-270v77,3,172,-20,172,65v0,31,-10,59,-42,66v65,5,24,90,50,134r0,5r-55,0v-15,-36,9,-95,-23,-113xm74,-230r0,74v39,0,69,6,69,-39v0,-47,-33,-32,-69,-35","w":219},"S":{"d":"176,-188r-49,0v0,-24,-1,-48,-29,-48v-17,0,-28,7,-28,25v0,21,13,29,29,39v33,21,84,48,84,101v0,51,-34,77,-83,77v-67,-1,-85,-40,-82,-101r50,0v-1,32,1,61,32,61v40,0,39,-55,11,-68v-34,-29,-93,-44,-93,-103v0,-46,27,-71,80,-71v80,0,78,61,78,88","w":200},"T":{"d":"6,-230r0,-40r168,0r0,40r-58,0r0,230r-51,0r0,-230r-59,0"},"U":{"d":"145,-86r0,-184r51,0r0,188v0,60,-19,88,-85,88v-67,0,-87,-28,-87,-88r0,-188r51,0r0,184v0,26,2,52,36,52v33,0,34,-26,34,-52","w":219},"V":{"d":"102,-28v8,-84,26,-161,37,-242r54,0r-58,270r-68,0r-59,-270r54,0","w":200},"W":{"d":"171,-270v15,79,31,146,38,236r30,-236r53,0r-50,270r-61,0r-20,-107v-6,-27,-5,-60,-12,-86v-6,68,-17,130,-28,193r-61,0r-51,-270r52,0r23,147v5,30,6,59,9,89v8,-88,23,-156,36,-236r42,0","w":299},"X":{"d":"129,-137r67,137r-57,0v-13,-33,-32,-63,-40,-100v-7,37,-28,67,-40,100r-55,0r66,-137r-64,-133r57,0v13,30,30,61,38,95v5,-35,26,-64,36,-95r57,0","w":200},"Y":{"d":"59,-270v14,37,33,71,41,112v10,-44,27,-73,41,-112r55,0r-71,155r0,115r-50,0r0,-115r-71,-155r55,0","w":200},"Z":{"d":"12,0r0,-40r101,-191v-30,2,-63,0,-95,1r0,-40r147,0r0,40r-101,191v33,-2,69,0,104,-1r0,40r-156,0"},"[":{"d":"101,34r-72,0r0,-304r72,0r0,27r-32,0r0,249r32,0r0,28","w":119},"\\":{"d":"18,-270r85,304r-31,0r-85,-304r31,0","w":90},"]":{"d":"19,-270r72,0r0,304r-72,0r0,-28r32,0r0,-249r-32,0r0,-27","w":119},"^":{"d":"41,-117r-37,-17r64,-136r44,0r64,136r-37,17r-49,-101"},"_":{"d":"180,45r-180,0r0,-18r180,0r0,18"},"a":{"d":"111,-21v-21,43,-96,33,-96,-34v0,-46,33,-58,70,-73v20,-8,29,-18,23,-34v-7,-21,-57,-9,-47,19r-44,0v0,-39,11,-65,70,-65v64,0,67,33,67,60v0,49,-5,105,4,148r-44,0v-3,-6,-4,-14,-3,-21xm108,-107v-16,13,-47,20,-46,50v0,15,5,26,22,26v34,0,21,-45,24,-76"},"b":{"d":"92,-172v-38,9,-22,66,-22,105v0,23,8,36,23,36v31,0,20,-67,20,-102v0,-20,1,-39,-21,-39xm23,0r0,-270r47,0r-1,87v9,-19,22,-25,42,-25v54,0,51,85,49,145v-1,32,-9,68,-49,68v-19,0,-33,-7,-43,-27r0,22r-45,0"},"c":{"d":"145,-132r-47,0v0,-18,2,-41,-16,-40v-29,2,-16,62,-18,93v-3,40,4,47,18,48v19,1,15,-28,16,-48r47,0v3,52,-10,85,-64,84v-41,0,-63,-22,-63,-76r0,-65v0,-57,27,-72,63,-72v54,0,67,32,64,76","w":159},"d":{"d":"86,-31v33,0,21,-62,23,-96v1,-16,0,-45,-22,-45v-38,0,-15,68,-21,106v1,19,6,35,20,35xm109,0v-1,-7,2,-17,-1,-22v-9,21,-22,27,-40,27v-65,0,-49,-79,-49,-141v0,-56,19,-71,49,-72v21,-1,32,8,43,25v-4,-26,-1,-58,-2,-87r47,0r0,270r-47,0"},"e":{"d":"94,5v-75,0,-75,-61,-75,-138v0,-48,22,-75,68,-75v76,-1,72,49,72,116r-93,0v-1,27,-1,68,24,61v17,0,23,-12,22,-38r47,0v2,45,-17,74,-65,74xm66,-128r47,0v1,-25,1,-46,-25,-44v-26,2,-21,22,-22,44"},"f":{"d":"26,-169r-18,0r0,-34r18,0v-5,-53,14,-73,67,-67r0,37v-8,-3,-22,-3,-21,6r0,24r21,0r0,34r-21,0r0,169r-46,0r0,-169","w":100},"g":{"d":"109,-127v1,-16,0,-45,-22,-45v-38,0,-15,68,-21,106v1,19,6,35,20,35v33,0,21,-62,23,-96xm68,23v0,10,10,12,20,12v29,-1,22,-30,23,-56v-9,19,-23,26,-43,26v-65,0,-49,-79,-49,-141v0,-56,19,-71,49,-72v22,-1,33,10,41,26r0,-21r47,0r0,197v0,41,-12,74,-76,74v-31,0,-56,-11,-59,-45r47,0"},"h":{"d":"69,0r-47,0r0,-270r47,0r0,88v13,-24,33,-26,43,-26v27,0,46,15,46,51r0,157r-46,0r0,-139v0,-20,-2,-32,-20,-33v-18,-1,-23,15,-23,37r0,135"},"i":{"d":"73,0r-46,0r0,-203r46,0r0,203xm73,-228r-46,0r0,-42r46,0r0,42","w":100},"j":{"d":"11,68r0,-36v11,1,17,0,17,-10r0,-225r47,0r0,204v4,38,-5,80,-64,67xm75,-228r-47,0r0,-42r47,0r0,42","w":100},"k":{"d":"64,0r-47,0r0,-270r47,0r0,148r44,-81r51,0r-51,82r50,121r-52,0r-29,-83r-13,21r0,62","w":159},"l":{"d":"73,0r-46,0r0,-270r46,0r0,270","w":100},"m":{"d":"71,-203r0,21v10,-22,30,-25,45,-26v18,-1,39,9,44,26v9,-18,24,-26,47,-26v35,0,49,21,49,43r0,165r-46,0r0,-137v0,-18,-2,-36,-23,-35v-20,1,-24,14,-24,38r0,134r-46,0r0,-140v0,-18,-1,-32,-23,-32v-22,0,-23,16,-23,38r0,134r-47,0r0,-203r47,0","w":280},"n":{"d":"69,-203r0,21v27,-46,89,-32,89,25r0,157r-46,0r0,-135v0,-20,-2,-33,-20,-34v-18,-1,-23,16,-23,38r0,131r-47,0r0,-203r47,0"},"o":{"d":"91,-172v-45,0,-25,66,-25,106v0,25,2,35,25,35v41,1,23,-67,23,-103v0,-19,0,-38,-23,-38xm91,5v-62,0,-72,-28,-72,-99v0,-69,1,-114,72,-114v69,0,70,45,70,114v0,71,-10,99,-70,99"},"p":{"d":"90,-172v-38,9,-22,66,-22,105v0,23,7,36,22,36v32,0,21,-66,21,-102v0,-20,1,-39,-21,-39xm68,-203r0,21v9,-20,22,-26,41,-26v54,0,51,85,49,146v-1,32,-9,67,-49,67v-18,0,-31,-5,-43,-26r0,89r-45,0r0,-271r47,0"},"q":{"d":"85,-31v33,0,21,-62,23,-96v1,-16,0,-45,-22,-45v-38,0,-15,68,-21,106v1,19,6,35,20,35xm155,-203r0,271r-47,0r-1,-90v-9,20,-21,27,-40,27v-65,0,-49,-79,-49,-141v0,-56,19,-71,49,-72v20,-1,30,7,41,25r0,-20r47,0"},"r":{"d":"67,-203r0,36v7,-24,29,-40,48,-40r0,56v-26,-3,-47,4,-47,34r0,117r-46,0r0,-203r45,0","w":119},"s":{"d":"10,-67r47,0v-4,37,11,36,22,36v34,0,17,-40,-4,-46v-27,-20,-64,-41,-64,-82v0,-31,25,-49,70,-49v45,0,66,23,65,67r-47,0v1,-23,-5,-31,-21,-31v-30,0,-20,34,-2,40v24,18,64,32,70,65v6,35,-5,72,-70,72v-25,0,-71,-10,-66,-72","w":159},"t":{"d":"91,-36r0,37v-28,3,-67,6,-67,-32r0,-138r-19,0r0,-34r19,0r0,-56r47,0r0,56r20,0r0,34r-20,0r0,126v1,9,14,8,20,7","w":100},"u":{"d":"68,-64v-2,15,2,33,19,33v22,0,21,-24,21,-40r0,-132r47,0r0,203r-44,0v-1,-9,2,-23,-1,-30v-7,24,-21,35,-44,35v-37,0,-45,-19,-45,-53r0,-155r47,0r0,139"},"v":{"d":"51,0r-47,-203r50,0v9,54,24,117,26,174v5,-51,18,-121,28,-174r48,0r-47,203r-58,0","w":159},"w":{"d":"137,-203r23,125v4,13,2,31,6,43r19,-168r47,0r-41,203r-51,0r-23,-133v-2,47,-13,89,-19,133r-52,0r-42,-203r49,0r22,169v3,-61,16,-113,24,-169r38,0","w":240},"x":{"d":"57,-104r-52,-99r55,0v8,17,15,37,22,55v4,-21,14,-37,22,-55r52,0r-51,98r52,105r-53,0v-9,-19,-18,-42,-24,-63v-4,24,-15,43,-23,63r-54,0","w":159},"y":{"d":"2,-203r49,0v10,53,23,104,27,162r29,-162r47,0r-49,206v-12,46,-13,74,-78,65r0,-36v8,0,28,4,28,-9v0,-80,-36,-150,-53,-226","w":159},"z":{"d":"132,-170r-74,134r74,0r0,36r-124,0r0,-37r72,-130r-70,0r0,-36r122,0r0,33","w":140},"{":{"d":"-12,-117v69,-15,-30,-177,98,-152v-63,10,10,132,-56,152v65,11,-8,125,56,150v-47,3,-71,-7,-71,-53v0,-41,12,-90,-27,-97","w":98},"|":{"d":"27,-270r36,0r0,360r-36,0r0,-360","w":90},"}":{"d":"37,-270v60,-6,44,61,46,113v0,19,6,37,27,40v-72,8,33,176,-98,150v64,-11,-11,-130,57,-150v-44,-7,-30,-66,-30,-112v0,-22,-9,-35,-27,-41r25,0","w":98},"~":{"d":"150,-129r21,26v-11,19,-22,42,-46,42v-22,0,-55,-24,-67,-24v-15,0,-22,18,-28,30r-21,-27v10,-21,25,-44,48,-44v23,0,53,23,68,23v13,0,19,-15,25,-26"},"'":{"d":"67,-168r-43,0r0,-98r43,0r0,98","w":90},"`":{"d":"0,-279r56,0r34,53r-36,0","w":119},"\u00a0":{"w":90}}});

// ---- HelveticaNT.font.js ----------------------------------------------------------------------------------------------------------
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * Part of the digitally encoded machine readable outline data for producing the
 * Typefaces provided is copyrighted (c) 1988, 1991, 2003 Linotype Library GmbH,
 * www.linotype.com. All rights reserved. This software is the property of Linotype
 * Library GmbH, and may not be reproduced, used, displayed, modified, disclosed or
 * transferred without the express written approval of Linotype Library GmbH.
 * Copyright (c) 1988, 1991 Adobe Systems Incorporated. All rights reserved.
 * 
 * Trademark:
 * Helvetica is a trademark of Heidelberger Druckmaschinen AG which may be
 * registered in certain jurisdictions, exclusively licensed through Linotype
 * Library GmbH, a wholly owned subsidiary of Heidelberger Druckmaschinen AG.
 * 
 * Description:
 * Part of the digitally encoded machine readable outline data for producing the
 * Typefaces provided is copyrighted (c) 1988, 1991, 2003 Linotype Library GmbH,
 * www.linotype.com. All rights reserved. This software is the property of Linotype
 * Library GmbH, and may not be reproduced, used, displayed, modified, disclosed or
 * transferred without the express written approval of Linotype Library GmbH.
 * Copyright (c) 1988, 1991 Adobe Systems Incorporated. All rights reserved.
 * 
 * Manufacturer:
 * Linotype Library GmbH & Adobe Systems
 * 
 * Designer:
 * Linotype Design Studio
 * 
 * Vendor URL:
 * http://www.linotype.com
 * 
 * License information:
 * NOTIFICATION OF LICENSE AGREEMENT
 * 
 * This typeface is the property of Heidelberger Druckmaschinen AG and its use by
 * you is covered under the terms of a license agreement respectively font software
 * license agreement. We are fully authorized and empowered to use and commercially
 * exploit these intellectual property rights in their business of licensing,
 * manufacturing and selling typefaces.
 * 
 * You have obtained this typeface software either directly from Linotype Library
 * GmbH or together with software distributed by one of Linotype Library's
 * licensees.
 * 
 * This software is a valuable asset of the Linotype Library GmbH. Unless you have
 * entered into a specific license agreement granting you additional rights, your
 * use of this software is limited to your workstation(s) for your own publishing
 * use. You may not copy or distribute this software.
 * 
 * If you have any question concerning your rights you should review the license
 * agreement you received with the software or contact Linotype Library GmbH for a
 * copy of the license agreement.
 * 
 * Linotype Library can be contacted at:
 * 
 * Tel.: +49(6172) 484-401  or http://www.linotype.com
 */
Cufon.registerFont({"w":200,"face":{"font-family":"HelveticaNT","font-weight":400,"font-stretch":"normal","units-per-em":"360","panose-1":"2 11 5 0 0 0 0 0 0 0","ascent":"288","descent":"-72","x-height":"4","bbox":"-12 -283 322 77","underline-thickness":"17.9297","underline-position":"-27.0703","unicode-range":"U+0020-U+007E"},"glyphs":{" ":{"w":100},"!":{"d":"38,-257r0,87r5,104r8,0r4,-191r-17,0xm56,0r0,-37r-19,0r0,37r19,0","w":93},"\"":{"d":"29,-175r14,0r0,-82r-14,0r0,82xm71,-175r14,0r0,-82r-14,0r0,82","w":113},"#":{"d":"149,-248r-11,79r-61,0r11,-79r-12,0r-11,79r-44,0r0,12r42,0r-8,62r-44,0r0,12r42,0r-12,83r12,0r12,-83r61,0r-12,83r12,0r11,-83r42,0r0,-12r-40,0r9,-62r41,0r0,-12r-39,0r11,-79r-12,0xm75,-157r61,0r-9,62r-60,0"},"$":{"d":"104,-125v39,6,76,25,76,59v0,41,-36,58,-76,58r0,-117xm93,-142v-34,-7,-67,-13,-67,-53v0,-36,26,-54,67,-54r0,107xm4,-85v0,60,35,86,89,91r0,32r11,0r0,-32v46,-1,90,-22,90,-72v0,-50,-44,-62,-90,-72r0,-112v44,2,68,20,70,66r14,0v-4,-53,-32,-79,-84,-79r0,-18r-11,0r0,18v-81,-10,-111,100,-39,125v12,4,25,8,39,11r0,119v-50,-5,-75,-30,-75,-77r-14,0"},"%":{"d":"50,9r14,0r168,-266r-15,0xm206,4v36,0,60,-28,60,-63v0,-37,-22,-65,-60,-65v-37,0,-60,28,-60,65v0,34,26,63,60,63xm205,-8v-27,0,-45,-25,-45,-51v0,-29,16,-53,46,-53v30,0,46,24,46,53v0,27,-18,51,-47,51xm74,-125v36,1,60,-29,60,-63v0,-37,-22,-65,-59,-65v-37,0,-61,28,-61,65v0,35,26,62,60,63xm74,-136v-27,0,-45,-26,-46,-52v0,-29,17,-53,46,-53v29,0,47,23,46,53v0,27,-18,52,-46,52","w":280},"&":{"d":"61,-208v0,-43,81,-43,81,0v0,32,-28,46,-48,60v-10,-19,-33,-33,-33,-60xm92,-8v-53,6,-85,-62,-42,-96v13,-10,26,-19,40,-28r66,83v-6,13,-33,45,-64,41xm15,-61v-1,78,122,85,150,23r31,38r19,0r-42,-52v7,-17,12,-35,13,-54r-14,0v0,15,-3,29,-9,43r-61,-75v24,-17,52,-31,54,-70v1,-28,-26,-45,-55,-45v-27,0,-54,19,-54,45v0,30,21,47,35,66v-28,20,-66,34,-67,81","w":213},"'":{"d":"30,-175r14,0r0,-82r-14,0r0,82","w":73},"(":{"d":"82,66v-61,-100,-59,-229,1,-329r-13,0v-62,99,-63,232,0,329r12,0","w":86},")":{"d":"5,-263v61,100,60,229,-1,329r12,0v62,-99,63,-231,1,-329r-12,0","w":86},"*":{"d":"58,-257r0,47r-44,-15r-4,10r45,15r-29,37r9,7r28,-38r28,38r8,-7r-27,-37r44,-15r-4,-10r-44,15r0,-47r-10,0","w":126},"+":{"d":"101,-98r-84,0r0,14r84,0r0,84r14,0r0,-84r84,0r0,-14r-84,0r0,-83r-14,0r0,83","w":216},",":{"d":"48,0v-1,11,-2,30,-12,33r0,12v27,-9,23,-47,23,-82r-18,0r0,37r7,0","w":100},"-":{"d":"102,-91r0,-14r-77,0r0,14r77,0","w":126},".":{"d":"59,0r0,-37r-18,0r0,37r18,0","w":100},"\/":{"d":"10,6r115,-269r-15,0r-115,269r15,0","w":119},"0":{"d":"100,4v67,0,91,-58,90,-128v-1,-70,-20,-128,-90,-129v-70,-1,-90,64,-90,129v0,69,22,128,90,128xm100,-8v-60,0,-76,-56,-76,-116v0,-61,16,-117,76,-117v62,0,76,56,76,117v0,60,-15,116,-76,116"},"1":{"d":"119,-248r-12,0v-16,26,-38,41,-68,46r0,12v26,-2,47,-13,66,-32r0,222r14,0r0,-248"},"2":{"d":"165,-185v-8,96,-140,85,-148,185r165,0r0,-14r-148,0v19,-77,141,-77,144,-171v1,-46,-34,-67,-77,-68v-49,0,-75,29,-78,88r13,0v1,-43,22,-76,67,-76v33,0,65,23,62,56"},"3":{"d":"170,-69v0,39,-33,62,-71,61v-48,-1,-72,-25,-72,-74r-14,0v0,57,29,85,86,86v48,0,85,-25,85,-73v0,-36,-22,-60,-54,-64v28,-4,46,-26,48,-57v3,-67,-101,-81,-137,-40v-14,15,-22,35,-22,60r14,0v2,-42,22,-71,66,-71v33,0,66,17,66,51v0,41,-37,52,-78,52r0,12v47,-3,83,12,83,57"},"4":{"d":"131,-248r-121,171r0,14r121,0r0,63r14,0r0,-63r42,0r0,-12r-42,0r0,-173r-14,0xm131,-75r-107,0r107,-155r0,155"},"5":{"d":"183,-82v4,-78,-103,-114,-147,-55r22,-99r114,0r0,-12r-125,0r-26,128r14,0v33,-61,137,-36,134,38v-2,41,-28,74,-70,74v-40,0,-73,-27,-72,-68r-14,0v-4,50,39,80,86,80v49,0,82,-38,84,-86"},"6":{"d":"104,-8v-40,0,-72,-31,-71,-71v1,-40,30,-73,71,-73v41,0,69,33,69,73v0,39,-30,71,-69,71xm107,-241v35,0,56,24,62,54r13,0v-3,-41,-32,-66,-75,-66v-74,0,-92,68,-92,141v0,63,22,116,89,116v48,0,82,-36,83,-83v0,-49,-34,-85,-83,-85v-38,0,-64,24,-74,53v-2,-62,12,-130,77,-130"},"7":{"d":"73,0v10,-112,53,-174,107,-235r0,-13r-160,0r0,12r147,0v-67,72,-101,132,-109,236r15,0"},"8":{"d":"172,-71v0,43,-32,63,-72,63v-40,0,-73,-21,-72,-63v0,-41,32,-58,72,-58v40,0,72,16,72,58xm100,-253v-41,0,-77,18,-77,63v0,30,18,46,46,55v-36,6,-54,27,-55,64v-1,49,37,75,86,75v49,0,87,-25,86,-75v0,-38,-21,-56,-55,-65v30,-7,46,-25,46,-54v1,-45,-35,-63,-77,-63xm163,-190v0,34,-30,49,-63,49v-33,0,-63,-16,-63,-49v-1,-36,28,-51,63,-51v35,0,63,14,63,51"},"9":{"d":"100,-96v-39,0,-70,-34,-70,-73v-1,-41,31,-72,70,-72v41,0,71,31,71,72v0,41,-31,73,-71,73xm96,-8v-33,1,-57,-24,-63,-53r-13,0v5,41,33,65,76,65v74,0,91,-66,91,-140v0,-70,-21,-117,-87,-117v-47,0,-84,36,-83,84v0,49,34,86,83,85v38,1,63,-22,73,-50v-1,63,-15,125,-77,126"},":":{"d":"41,-185r0,37r18,0r0,-37r-18,0xm59,0r0,-37r-18,0r0,37r18,0","w":100},";":{"d":"48,0v-1,11,-2,30,-12,33r0,12v27,-9,23,-47,23,-82r-18,0r0,37r7,0xm41,-185r0,37r18,0r0,-37r-18,0","w":100},"<":{"d":"200,-185r-183,84r0,19r183,85r0,-15r-172,-79r172,-79r0,-15","w":216},"=":{"d":"199,-133r-182,0r0,14r182,0r0,-14xm199,-63r-182,0r0,14r182,0r0,-14","w":216},">":{"d":"17,3r183,-84r0,-19r-183,-85r0,15r171,79r-171,79r0,15","w":216},"?":{"d":"166,-199v5,-68,-96,-82,-130,-41v-14,16,-21,36,-21,62r14,0v1,-41,22,-71,65,-71v33,0,60,15,58,50v-3,61,-73,62,-67,134r14,0v-3,-71,63,-69,67,-134xm83,0r18,0r0,-37r-18,0r0,37","w":186},"@":{"d":"153,-197v25,0,33,18,33,42v0,38,-25,96,-65,96v-22,0,-38,-20,-37,-44v1,-41,24,-94,69,-94xm193,-61v-18,0,-12,-21,-8,-34r34,-107r-15,0v-3,8,-4,19,-9,26v-2,-19,-19,-33,-40,-33v-51,2,-82,53,-85,108v-3,55,69,72,95,28v0,15,11,26,24,26v42,0,82,-56,82,-104v0,-67,-55,-112,-122,-112v-72,0,-132,60,-132,133v0,75,59,137,134,136v50,-1,89,-23,115,-66r-16,0v-57,99,-220,49,-220,-67v0,-66,53,-124,120,-124v56,0,110,41,108,99v-1,39,-25,91,-65,91","w":287},"A":{"d":"99,-257r-103,257r17,0r32,-82r123,0r33,82r17,0r-102,-257r-17,0xm50,-96r58,-146r55,146r-113,0","w":213,"k":{"y":7,"w":7,"v":7,"Y":13,"W":9,"V":11,"T":18}},"B":{"d":"38,-127v70,2,159,-16,162,55v2,70,-91,58,-162,58r0,-113xm207,-190v2,-83,-101,-66,-184,-67r0,257v86,-1,192,15,192,-72v0,-40,-28,-57,-58,-64v27,-4,49,-25,50,-54xm38,-243v65,3,153,-16,153,50v0,65,-88,53,-153,53r0,-103","w":226},"C":{"d":"135,-249v46,0,82,27,88,69r16,0v-10,-46,-42,-83,-104,-83v-77,0,-122,58,-122,135v1,76,44,133,122,134v60,1,103,-48,108,-106r-16,0v-3,47,-41,92,-92,92v-66,0,-106,-55,-106,-120v0,-66,38,-122,106,-121","w":253},"D":{"d":"104,-243v72,-1,106,39,106,114v0,103,-69,123,-172,115r0,-229r66,0xm226,-129v0,-76,-36,-128,-119,-128r-84,0r0,257r83,0v80,2,120,-53,120,-129","w":240},"E":{"d":"38,-14r0,-113r148,0r0,-13r-148,0r0,-103r157,0r0,-14r-172,0r0,257r174,0r0,-14r-159,0","w":201},"F":{"d":"170,-127r0,-13r-132,0r0,-103r146,0r0,-14r-161,0r0,257r15,0r0,-127r132,0","w":185,"k":{"A":13,".":42,",":42}},"G":{"d":"134,6v47,0,85,-25,98,-61r0,55r14,0r0,-126r-109,0r0,14r95,0v3,63,-35,104,-97,104v-68,0,-106,-52,-106,-119v0,-64,38,-123,106,-122v48,1,78,24,91,71r16,0v-6,-89,-146,-111,-197,-45v-62,80,-28,229,89,229","w":266},"H":{"d":"203,-127r0,127r15,0r0,-257r-15,0r0,117r-165,0r0,-117r-15,0r0,257r15,0r0,-127r165,0","w":241},"I":{"d":"23,0r15,0r0,-257r-15,0r0,257","w":61},"J":{"d":"78,-8v-44,0,-57,-29,-55,-74r-16,0v-1,53,17,88,73,88v54,0,70,-31,70,-86r0,-177r-15,0r-1,198v-1,34,-18,51,-56,51","w":173},"K":{"d":"23,0r15,0r0,-91r54,-48r116,139r20,0r-125,-150r118,-107r-21,0r-162,148r0,-148r-15,0r0,257","w":220},"L":{"d":"23,0r161,0r0,-14r-146,0r0,-243r-15,0r0,257","w":180,"k":{"y":20,"Y":40,"W":27,"V":33,"T":33}},"M":{"d":"23,0r15,0r1,-238r99,238r16,0r99,-238r0,238r16,0r0,-257r-23,0r-100,239r-101,-239r-22,0r0,257","w":291},"N":{"d":"23,0r15,0r1,-238r164,238r18,0r0,-257r-16,0r0,236r-162,-236r-20,0r0,257","w":243},"O":{"d":"256,-128v0,-77,-45,-135,-122,-135v-77,0,-123,59,-123,135v0,76,44,134,123,134v78,0,121,-58,122,-134xm27,-128v-1,-67,39,-121,107,-121v68,0,106,55,106,121v0,66,-39,120,-106,120v-67,0,-107,-54,-107,-120","w":266},"P":{"d":"191,-185v0,71,-84,56,-153,57r0,-115v69,1,153,-16,153,58xm207,-185v0,-91,-100,-70,-184,-72r0,257r15,0r0,-114v80,1,169,10,169,-71","w":212,"k":{"A":20,".":52,",":52}},"Q":{"d":"134,-249v107,0,137,150,70,213r-41,-30r-8,12r39,27v-73,53,-167,-10,-167,-101v0,-67,39,-121,107,-121xm11,-128v0,76,44,132,123,134v29,0,53,-8,72,-23r43,30r8,-11r-40,-29v75,-70,38,-236,-83,-236v-77,0,-123,59,-123,135","w":266},"R":{"d":"195,-190v0,75,-86,58,-157,59r0,-112v68,3,157,-18,157,53xm215,0v-16,-44,4,-125,-59,-125v36,-8,54,-30,55,-66v3,-87,-106,-63,-188,-66r0,257r15,0r0,-117r92,0v72,-9,56,63,67,117r18,0","w":226},"S":{"d":"108,-249v46,0,81,20,82,65r16,0v-2,-55,-41,-74,-98,-79v-68,-6,-119,76,-59,117v45,31,148,7,148,80v0,41,-35,57,-75,58v-52,1,-94,-22,-92,-77r-16,0v-1,64,46,86,108,91v70,6,126,-80,63,-124v-44,-31,-148,-8,-148,-77v0,-38,36,-54,71,-54","w":226},"T":{"d":"85,-243r0,243r16,0r0,-243r91,0r0,-14r-197,0r0,14r90,0","w":186,"k":{"y":33,"w":33,"u":33,"s":33,"r":33,"o":33,"i":5,"e":33,"c":33,"a":33,"A":18,";":31,":":31,".":40,",":40}},"U":{"d":"119,-8v-112,0,-74,-145,-81,-249r-15,0v5,116,-30,263,96,263v129,0,96,-145,100,-263r-16,0v-7,105,34,249,-84,249","w":241},"V":{"d":"12,-257r-17,0r96,257r18,0r96,-257r-16,0r-89,243","k":{"u":7,"r":7,"o":13,"e":13,"a":13,"A":15,";":13,":":13,".":33,",":33}},"W":{"d":"72,0r18,0r70,-243r70,243r18,0r74,-257r-17,0r-66,240r-69,-240r-20,0r-69,240r-67,-240r-16,0","w":320,"k":{"o":7,"i":-9,"e":7,"a":7,"A":2,";":7,":":7,".":20,",":20}},"X":{"d":"90,-132r-96,132r19,0r87,-120r87,120r19,0r-95,-132r90,-125r-18,0r-83,113r-81,-113r-19,0"},"Y":{"d":"103,-121r-93,-136r-18,0r103,149r0,108r16,0r0,-108r103,-149r-17,0","w":206,"k":{"v":7,"u":13,"q":27,"p":20,"o":27,"e":27,"a":27,"A":20,";":20,":":20,".":42,",":42}},"Z":{"d":"10,-243r163,0r-173,229r0,14r194,0r0,-14r-178,0r174,-229r0,-14r-180,0r0,14","w":193},"[":{"d":"83,-251r0,-12r-49,0r0,329r49,0r0,-12r-36,0r0,-305r36,0","w":86},"\\":{"d":"125,6r-115,-269r-15,0r115,269r15,0","w":119},"]":{"d":"4,54r0,12r49,0r0,-329r-49,0r0,12r35,0r0,305r-35,0","w":86},"^":{"d":"202,-85r-84,-163r-19,0r-85,163r15,0r79,-151r79,151r15,0","w":216},"_":{"d":"180,45r0,-18r-180,0r0,18r180,0","w":180},"`":{"d":"51,-213r-43,-50r-19,0r48,50r14,0","w":60},"a":{"d":"74,-8v-29,1,-47,-15,-49,-40v-5,-55,82,-35,118,-57v4,59,-14,96,-69,97xm12,-48v0,73,119,61,130,11v0,20,6,45,37,36r0,-12v-17,5,-22,-3,-22,-21r0,-107v1,-36,-30,-49,-65,-48v-44,0,-68,20,-71,61r14,0v-5,-60,103,-68,108,-13v4,45,-29,31,-75,39v-30,5,-56,16,-56,54","w":180},"b":{"d":"108,-8v-49,0,-71,-42,-71,-89v0,-47,24,-81,71,-81v43,0,67,39,67,81v-1,45,-19,89,-67,89xm108,-189v-35,0,-59,18,-71,43r0,-111r-14,0r0,257r14,0v1,-13,-2,-30,1,-41v6,20,36,47,70,45v55,-2,80,-39,80,-101v0,-52,-26,-92,-80,-92"},"c":{"d":"97,-178v33,1,60,17,62,50r14,0v-3,-41,-33,-61,-76,-61v-53,0,-86,42,-85,95v1,54,27,99,85,98v43,0,73,-28,78,-69r-14,0v-4,32,-29,57,-64,57v-49,1,-71,-38,-72,-86v0,-44,27,-84,72,-84","w":186},"d":{"d":"94,-8v-47,0,-68,-40,-69,-84v0,-46,21,-86,69,-86v47,1,69,41,69,86v0,43,-23,84,-69,84xm12,-92v0,52,25,96,79,96v34,0,55,-17,72,-44r0,40r14,0r0,-257r-14,0r-1,113v-8,-27,-34,-45,-68,-45v-56,0,-83,42,-82,97"},"e":{"d":"12,-89v0,53,29,94,82,93v45,-1,71,-23,79,-67r-13,0v-5,58,-87,74,-117,30v-12,-16,-18,-36,-18,-58r150,0v3,-55,-25,-98,-81,-98v-55,0,-82,48,-82,100xm25,-103v4,-38,27,-75,69,-75v41,0,66,35,67,75r-136,0","w":186},"f":{"d":"90,-258v-29,-7,-57,4,-57,35r0,38r-33,0r0,12r33,0r0,173r14,0r0,-173r38,0r0,-12r-38,0v-3,-38,-1,-75,43,-61r0,-12","w":86},"g":{"d":"92,-178v45,1,67,35,67,80v0,44,-22,79,-67,79v-43,0,-67,-37,-67,-79v0,-42,24,-80,67,-80xm159,8v0,61,-120,72,-124,5r-14,0v2,41,30,57,72,57v119,0,70,-151,80,-255r-14,0r0,39v-9,-26,-33,-43,-67,-43v-51,0,-80,41,-80,91v1,52,26,92,80,91v31,0,54,-14,67,-42r0,57","w":193},"h":{"d":"166,-136v0,-67,-119,-69,-131,-9v-4,-34,0,-76,-1,-112r-14,0r0,257r14,0v0,-80,-13,-177,66,-178v80,-1,46,107,53,178r14,0","w":186},"i":{"d":"37,0r0,-185r-14,0r0,185r14,0xm37,-220r0,-37r-14,0r0,37r14,0","w":60},"j":{"d":"-12,66v36,3,49,-13,49,-46r0,-205r-14,0r0,204v2,30,-10,38,-35,35r0,12xm37,-220r0,-37r-14,0r0,37r14,0","w":60},"k":{"d":"21,0r14,0r0,-70r42,-35r79,105r18,0r-86,-116r80,-69r-19,0r-114,98r0,-170r-14,0r0,257","w":166},"l":{"d":"23,-257r0,257r14,0r0,-257r-14,0","w":60},"m":{"d":"93,-189v-29,0,-52,21,-59,42r0,-38r-13,0r0,185r13,0r0,-110v-10,-71,102,-98,102,-17r0,127r14,0v2,-75,-18,-179,58,-178v70,1,37,112,44,178r14,0v-5,-77,26,-189,-58,-189v-29,0,-49,13,-59,39v-5,-23,-25,-39,-56,-39","w":286},"n":{"d":"166,-136v0,-67,-119,-69,-131,-9v-3,-10,0,-28,-1,-40r-14,0r0,185r14,0v0,-80,-13,-177,66,-178v80,-1,46,107,53,178r14,0","w":186},"o":{"d":"97,-189v-81,0,-109,109,-63,165v15,19,36,27,63,28v55,1,84,-44,84,-96v0,-53,-29,-97,-84,-97xm97,-8v-69,0,-92,-94,-53,-144v13,-16,30,-25,53,-26v47,0,71,41,71,86v0,45,-25,84,-71,84","w":193},"p":{"d":"105,-8v-49,0,-67,-38,-68,-84v0,-46,21,-86,68,-86v48,0,70,40,70,86v-1,46,-22,84,-70,84xm105,-189v-36,0,-58,25,-68,46r0,-42r-14,0r0,251r14,0r1,-104v10,27,34,42,67,42v56,1,83,-41,83,-96v0,-54,-28,-97,-83,-97"},"q":{"d":"94,-8v-47,0,-69,-39,-69,-85v1,-45,22,-85,69,-85v45,0,69,41,69,85v0,44,-22,85,-69,85xm94,4v35,0,58,-20,69,-45r0,107r14,0r0,-251r-14,0v-1,13,2,29,-1,40v-15,-29,-38,-44,-71,-44v-54,-1,-79,45,-79,96v0,56,27,96,82,97"},"r":{"d":"106,-186v-35,-2,-62,19,-72,42r0,-41r-14,0r0,185r14,0v-1,-81,-13,-180,72,-172r0,-14","w":100,"k":{"y":-7,"v":-7,".":27,",":27}},"s":{"d":"88,-8v-35,1,-59,-21,-61,-54r-14,0v1,43,33,62,75,66v57,6,97,-54,54,-90v-29,-24,-109,-6,-109,-56v0,-27,27,-36,53,-36v33,0,56,13,55,48r14,0v1,-42,-28,-59,-69,-59v-65,-14,-92,76,-26,94v33,9,86,4,86,48v0,31,-28,38,-58,39","w":173},"t":{"d":"88,-12v-26,1,-41,-4,-40,-32r0,-129r40,0r0,-12r-40,0r0,-58r-14,0r0,58r-34,0r0,12r34,0v2,50,-7,111,4,153v5,18,26,20,50,20r0,-12","w":93},"u":{"d":"86,4v33,0,57,-20,67,-44r0,40r14,0r0,-185r-14,0v0,80,13,177,-67,177v-78,0,-45,-107,-52,-177r-14,0v4,82,-23,189,66,189","w":186},"v":{"d":"160,-185r-15,0r-63,169r-67,-169r-16,0r75,185r17,0","w":159,"k":{".":27,",":27}},"w":{"d":"14,-185r-15,0r59,185r17,0r52,-168r51,168r17,0r59,-185r-15,0r-52,169r-51,-169r-19,0r-51,169","w":253,"k":{".":20,",":20}},"x":{"d":"-2,0r17,0r65,-87r63,87r19,0r-73,-97r67,-88r-18,0r-58,77r-58,-77r-19,0r67,88","w":159},"y":{"d":"75,-1v-16,42,-12,54,-57,55r0,12v44,3,53,-17,64,-46r80,-205r-16,0r-63,169r-69,-169r-16,0","w":159,"k":{".":27,",":27}},"z":{"d":"20,-12r124,-160r0,-13r-131,0r0,12r114,0r-124,160r0,13r147,0r0,-12r-130,0","w":153},"{":{"d":"105,-251r0,-12v-34,-3,-49,6,-49,42v0,43,12,107,-26,116r0,14v37,7,26,72,26,115v0,36,15,44,49,42r0,-12v-76,16,-2,-130,-61,-153v60,-27,-18,-163,61,-152","w":119},"|":{"d":"33,77r14,0r0,-360r-14,0r0,360","w":79},"}":{"d":"14,54r0,12v34,2,50,-6,50,-42v0,-43,-13,-107,26,-115r0,-14v-37,-8,-26,-73,-26,-116v0,-37,-15,-45,-50,-42r0,12v76,-15,3,125,62,152v-61,30,16,165,-62,153","w":119},"~":{"d":"72,-96v38,6,82,46,110,4v3,-3,6,-6,8,-10r-10,-10v-5,10,-19,27,-33,27v-41,-11,-96,-50,-121,5r11,11v4,-12,17,-30,35,-27","w":216},"\u00a0":{"w":100}}});

// ---- Cufon.replace ----------------------------------------------------------------------------------------------------------

Cufon.replace('.helv-cb', { fontFamily: 'HelveticaCB', hover: true });
Cufon.replace('#main h4', { fontFamily: 'HelveticaCB', hover: true });
Cufon.replace('aside#details h4', { fontFamily: 'HelveticaCB', hover: true });
Cufon.replace('#main h5', { fontFamily: 'HelveticaCB', hover: true });
Cufon.replace('#helv-cb', { fontFamily: 'HelveticaCB', hover: true });
Cufon.replace('.helv-nt', { fontFamily: 'HelveticaNT', hover: true });
