/* $Id: lightbox.js,v 1.5.2.6.2.136 2010/09/24 08:39:40 snpower Exp $ */

/**
 * jQuery Lightbox
 * @author
 *   Stella Power, <http://drupal.org/user/66894>
 *
 * Based on Lightbox v2.03.3 by Lokesh Dhakar
 * <http://www.huddletogether.com/projects/lightbox2/>
 * Also partially based on the jQuery Lightbox by Warren Krewenki
 *   <http://warren.mesozen.com>
 *
 * Permission has been granted to Mark Ashmead & other Drupal Lightbox2 module
 * maintainers to distribute this file via Drupal.org
 * Under GPL license.
 *
 * Slideshow, iframe and video functionality added by Stella Power.
 */

var Lightbox = {
  auto_modal : false,
  overlayOpacity : 0.8, // Controls transparency of shadow overlay.
  overlayColor : '000', // Controls colour of shadow overlay.
  disableCloseClick : true,
  // Controls the order of the lightbox resizing animation sequence.
  resizeSequence: 0, // 0: simultaneous, 1: width then height, 2: height then width.
  resizeSpeed: 'normal', // Controls the speed of the lightbox resizing animation.
  fadeInSpeed: 'normal', // Controls the speed of the image appearance.
  slideDownSpeed: 'slow', // Controls the speed of the image details appearance.
  minWidth: 240,
  borderSize : 10,
  boxColor : 'fff',
  fontColor : '000',
  topPosition : '',
  infoHeight: 20,
  alternative_layout : false,
  imageArray : [],
  imageNum : null,
  total : 0,
  activeImage : null,
  inprogress : false,
  disableResize : false,
  disableZoom : false,
  isZoomedIn : false,
  rtl : false,
  loopItems : false,
  keysClose : ['c', 'x', 27],
  keysPrevious : ['p', 37],
  keysNext : ['n', 39],
  keysZoom : ['z'],
  keysPlayPause : [32],

  // Slideshow options.
  slideInterval : 5000, // In milliseconds.
  showPlayPause : true,
  autoStart : true,
  autoExit : true,
  pauseOnNextClick : false, // True to pause the slideshow when the "Next" button is clicked.
  pauseOnPrevClick : true, // True to pause the slideshow when the "Prev" button is clicked.
  slideIdArray : [],
  slideIdCount : 0,
  isSlideshow : false,
  isPaused : false,
  loopSlides : false,

  // Iframe options.
  isLightframe : false,
  iframe_width : 600,
  iframe_height : 400,
  iframe_border : 1,

  // Video and modal options.
  enableVideo : false,
  flvPlayer : '/flvplayer.swf',
  flvFlashvars : '',
  isModal : false,
  isVideo : false,
  videoId : false,
  modalWidth : 400,
  modalHeight : 400,
  modalHTML : null,


  // initialize()
  // Constructor runs on completion of the DOM loading.
  // The function inserts html at the bottom of the page which is used
  // to display the shadow overlay and the image container.
  initialize: function() {

    var s = Drupal.settings.lightbox2;
    Lightbox.overlayOpacity = s.overlay_opacity;
    Lightbox.overlayColor = s.overlay_color;
    Lightbox.disableCloseClick = s.disable_close_click;
    Lightbox.resizeSequence = s.resize_sequence;
    Lightbox.resizeSpeed = s.resize_speed;
    Lightbox.fadeInSpeed = s.fade_in_speed;
    Lightbox.slideDownSpeed = s.slide_down_speed;
    Lightbox.borderSize = s.border_size;
    Lightbox.boxColor = s.box_color;
    Lightbox.fontColor = s.font_color;
    Lightbox.topPosition = s.top_position;
    Lightbox.rtl = s.rtl;
    Lightbox.loopItems = s.loop_items;
    Lightbox.keysClose = s.keys_close.split(" ");
    Lightbox.keysPrevious = s.keys_previous.split(" ");
    Lightbox.keysNext = s.keys_next.split(" ");
    Lightbox.keysZoom = s.keys_zoom.split(" ");
    Lightbox.keysPlayPause = s.keys_play_pause.split(" ");
    Lightbox.disableResize = s.disable_resize;
    Lightbox.disableZoom = s.disable_zoom;
    Lightbox.slideInterval = s.slideshow_interval;
    Lightbox.showPlayPause = s.show_play_pause;
    Lightbox.showCaption = s.show_caption;
    Lightbox.autoStart = s.slideshow_automatic_start;
    Lightbox.autoExit = s.slideshow_automatic_exit;
    Lightbox.pauseOnNextClick = s.pause_on_next_click;
    Lightbox.pauseOnPrevClick = s.pause_on_previous_click;
    Lightbox.loopSlides = s.loop_slides;
    Lightbox.alternative_layout = s.use_alt_layout;
    Lightbox.iframe_width = s.iframe_width;
    Lightbox.iframe_height = s.iframe_height;
    Lightbox.iframe_border = s.iframe_border;
    Lightbox.enableVideo = s.enable_video;
    if (s.enable_video) {
      Lightbox.flvPlayer = s.flvPlayer;
      Lightbox.flvFlashvars = s.flvFlashvars;
    }

    // Make the lightbox divs.
    var layout_class = (s.use_alt_layout ? 'lightbox2-alt-layout' : 'lightbox2-orig-layout');
    var output = '<div id="lightbox2-overlay" style="display: none;"></div>\
      <div id="lightbox" style="display: none;" class="' + layout_class + '">\
        <div id="outerImageContainer"></div>\
        <div id="imageDataContainer" class="clearfix">\
          <div id="imageData"></div>\
        </div>\
      </div>';
    var loading = '<div id="loading"><a href="#" id="loadingLink"></a></div>';
    var modal = '<div id="modalContainer" style="display: none;"></div>';
    var frame = '<div id="frameContainer" style="display: none;"></div>';
    var imageContainer = '<div id="imageContainer" style="display: none;"></div>';
    var details = '<div id="imageDetails"></div>';
    var bottomNav = '<div id="bottomNav"></div>';
    var image = '<img id="lightboxImage" alt="" />';
    var hoverNav = '<div id="hoverNav"><a id="prevLink" href="#"></a><a id="nextLink" href="#"></a></div>';
    var frameNav = '<div id="frameHoverNav"><a id="framePrevLink" href="#"></a><a id="frameNextLink" href="#"></a></div>';
    var hoverNav = '<div id="hoverNav"><a id="prevLink" title="' + Drupal.t('Previous') + '" href="#"></a><a id="nextLink" title="' + Drupal.t('Next') + '" href="#"></a></div>';
    var frameNav = '<div id="frameHoverNav"><a id="framePrevLink" title="' + Drupal.t('Previous') + '" href="#"></a><a id="frameNextLink" title="' + Drupal.t('Next') + '" href="#"></a></div>';
    var caption = '<span id="caption"></span>';
    var numberDisplay = '<span id="numberDisplay"></span>';
    var close = '<a id="bottomNavClose" title="' + Drupal.t('Close') + '" href="#"></a>';
    var zoom = '<a id="bottomNavZoom" href="#"></a>';
    var zoomOut = '<a id="bottomNavZoomOut" href="#"></a>';
    var pause = '<a id="lightshowPause" title="' + Drupal.t('Pause Slideshow') + '" href="#" style="display: none;"></a>';
    var play = '<a id="lightshowPlay" title="' + Drupal.t('Play Slideshow') + '" href="#" style="display: none;"></a>';

    $("body").append(output);
    $('#outerImageContainer').append(modal + frame + imageContainer + loading);
    if (!s.use_alt_layout) {
      $('#imageContainer').append(image + hoverNav);
      $('#imageData').append(details + bottomNav);
      $('#imageDetails').append(caption + numberDisplay);
      $('#bottomNav').append(frameNav + close + zoom + zoomOut + pause + play);
    }
    else {
      $('#outerImageContainer').append(bottomNav);
      $('#imageContainer').append(image);
      $('#bottomNav').append(close + zoom + zoomOut);
      $('#imageData').append(hoverNav + details);
      $('#imageDetails').append(caption + numberDisplay + pause + play);
    }

    // Setup onclick handlers.
    if (Lightbox.disableCloseClick) {
      $('#lightbox2-overlay').click(function() { Lightbox.end(); return false; } ).hide();
    }
    $('#loadingLink, #bottomNavClose').click(function() { Lightbox.end('forceClose'); return false; } );
    $('#prevLink, #framePrevLink').click(function() { Lightbox.changeData(Lightbox.activeImage - 1); return false; } );
    $('#nextLink, #frameNextLink').click(function() { Lightbox.changeData(Lightbox.activeImage + 1); return false; } );
    $('#bottomNavZoom').click(function() { Lightbox.changeData(Lightbox.activeImage, true); return false; } );
    $('#bottomNavZoomOut').click(function() { Lightbox.changeData(Lightbox.activeImage, false); return false; } );
    $('#lightshowPause').click(function() { Lightbox.togglePlayPause("lightshowPause", "lightshowPlay"); return false; } );
    $('#lightshowPlay').click(function() { Lightbox.togglePlayPause("lightshowPlay", "lightshowPause"); return false; } );

    // Fix positioning.
    $('#prevLink, #nextLink, #framePrevLink, #frameNextLink').css({ 'paddingTop': Lightbox.borderSize + 'px'});
    $('#imageContainer, #frameContainer, #modalContainer').css({ 'padding': Lightbox.borderSize + 'px'});
    $('#outerImageContainer, #imageDataContainer, #bottomNavClose').css({'backgroundColor': '#' + Lightbox.boxColor, 'color': '#'+Lightbox.fontColor});
    if (Lightbox.alternative_layout) {
      $('#bottomNavZoom, #bottomNavZoomOut').css({'bottom': Lightbox.borderSize + 'px', 'right': Lightbox.borderSize + 'px'});
    }
    else if (Lightbox.rtl == 1 && $.browser.msie) {
      $('#bottomNavZoom, #bottomNavZoomOut').css({'left': '0px'});
    }

    // Force navigation links to always be displayed
    if (s.force_show_nav) {
      $('#prevLink, #nextLink').addClass("force_show_nav");
    }

  },

  // initList()
  // Loops through anchor tags looking for 'lightbox', 'lightshow' and
  // 'lightframe', etc, references and applies onclick events to appropriate
  // links. You can rerun after dynamically adding images w/ajax.
  initList : function(context) {

    if (context == undefined || context == null) {
      context = document;
    }

    // Attach lightbox to any links with rel 'lightbox', 'lightshow' or
    // 'lightframe', etc.
    $("a[rel^='lightbox']:not(.lightbox-processed), area[rel^='lightbox']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) {
      if (Lightbox.disableCloseClick) {
        $('#lightbox').unbind('click');
        $('#lightbox').click(function() { Lightbox.end('forceClose'); } );
      }
      Lightbox.start(this, false, false, false, false);
      if (e.preventDefault) { e.preventDefault(); }
      return false;
    });
    $("a[rel^='lightshow']:not(.lightbox-processed), area[rel^='lightshow']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) {
      if (Lightbox.disableCloseClick) {
        $('#lightbox').unbind('click');
        $('#lightbox').click(function() { Lightbox.end('forceClose'); } );
      }
      Lightbox.start(this, true, false, false, false);
      if (e.preventDefault) { e.preventDefault(); }
      return false;
    });
    $("a[rel^='lightframe']:not(.lightbox-processed), area[rel^='lightframe']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) {
      if (Lightbox.disableCloseClick) {
        $('#lightbox').unbind('click');
        $('#lightbox').click(function() { Lightbox.end('forceClose'); } );
      }
      Lightbox.start(this, false, true, false, false);
      if (e.preventDefault) { e.preventDefault(); }
      return false;
    });
    if (Lightbox.enableVideo) {
      $("a[rel^='lightvideo']:not(.lightbox-processed), area[rel^='lightvideo']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) {
        if (Lightbox.disableCloseClick) {
          $('#lightbox').unbind('click');
          $('#lightbox').click(function() { Lightbox.end('forceClose'); } );
        }
        Lightbox.start(this, false, false, true, false);
        if (e.preventDefault) { e.preventDefault(); }
        return false;
      });
    }
    $("a[rel^='lightmodal']:not(.lightbox-processed), area[rel^='lightmodal']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) {
      $('#lightbox').unbind('click');
      // Add classes from the link to the lightbox div - don't include lightbox-processed
      $('#lightbox').addClass($(this).attr('class'));
      $('#lightbox').removeClass('lightbox-processed');
      Lightbox.start(this, false, false, false, true);
      if (e.preventDefault) { e.preventDefault(); }
      return false;
    });
    $("#lightboxAutoModal:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) {
      Lightbox.auto_modal = true;
      $('#lightbox').unbind('click');
      Lightbox.start(this, false, false, false, true);
      if (e.preventDefault) { e.preventDefault(); }
      return false;
    });
  },

  // start()
  // Display overlay and lightbox. If image is part of a set, add siblings to
  // imageArray.
  start: function(imageLink, slideshow, lightframe, lightvideo, lightmodal) {

    Lightbox.isPaused = !Lightbox.autoStart;

    // Replaces hideSelectBoxes() and hideFlash() calls in original lightbox2.
    Lightbox.toggleSelectsFlash('hide');

    // Stretch overlay to fill page and fade in.
    var arrayPageSize = Lightbox.getPageSize();
    $("#lightbox2-overlay").hide().css({
      'width': '100%',
      'zIndex': '10090',
      'height': arrayPageSize[1] + 'px',
      'backgroundColor' : '#' + Lightbox.overlayColor
    });
    // Detect OS X FF2 opacity + flash issue.
    if (lightvideo && this.detectMacFF2()) {
      $("#lightbox2-overlay").removeClass("overlay_default");
      $("#lightbox2-overlay").addClass("overlay_macff2");
      $("#lightbox2-overlay").css({'opacity' : null});
    }
    else {
      $("#lightbox2-overlay").removeClass("overlay_macff2");
      $("#lightbox2-overlay").addClass("overlay_default");
      $("#lightbox2-overlay").css({'opacity' : Lightbox.overlayOpacity});
    }
    $("#lightbox2-overlay").fadeIn(Lightbox.fadeInSpeed);


    Lightbox.isSlideshow = slideshow;
    Lightbox.isLightframe = lightframe;
    Lightbox.isVideo = lightvideo;
    Lightbox.isModal = lightmodal;
    Lightbox.imageArray = [];
    Lightbox.imageNum = 0;

    var anchors = $(imageLink.tagName);
    var anchor = null;
    var rel_parts = Lightbox.parseRel(imageLink);
    var rel = rel_parts["rel"];
    var rel_group = rel_parts["group"];
    var title = (rel_parts["title"] ? rel_parts["title"] : imageLink.title);
    var rel_style = null;
    var i = 0;

    if (rel_parts["flashvars"]) {
      Lightbox.flvFlashvars = Lightbox.flvFlashvars + '&' + rel_parts["flashvars"];
    }

    // Set the title for image alternative text.
    var alt = imageLink.title;
    if (!alt) {
      var img = $(imageLink).find("img");
      if (img && $(img).attr("alt")) {
        alt = $(img).attr("alt");
      }
      else {
        alt = title;
      }
    }

    if ($(imageLink).attr('id') == 'lightboxAutoModal') {
      rel_style = rel_parts["style"];
      Lightbox.imageArray.push(['#lightboxAutoModal > *', title, alt, rel_style, 1]);
    }
    else {
      // Handle lightbox images with no grouping.
      if ((rel == 'lightbox' || rel == 'lightshow') && !rel_group) {
        Lightbox.imageArray.push([imageLink.href, title, alt]);
      }

      // Handle other items with no grouping.
      else if (!rel_group) {
        rel_style = rel_parts["style"];
        Lightbox.imageArray.push([imageLink.href, title, alt, rel_style]);
      }

      // Handle grouped items.
      else {

        // Loop through anchors and add them to imageArray.
        for (i = 0; i < anchors.length; i++) {
          anchor = anchors[i];
          if (anchor.href && typeof(anchor.href) == "string" && $(anchor).attr('rel')) {
            var rel_data = Lightbox.parseRel(anchor);
            var anchor_title = (rel_data["title"] ? rel_data["title"] : anchor.title);
            img_alt = anchor.title;
            if (!img_alt) {
              var anchor_img = $(anchor).find("img");
              if (anchor_img && $(anchor_img).attr("alt")) {
                img_alt = $(anchor_img).attr("alt");
              }
              else {
                img_alt = title;
              }
            }
            if (rel_data["rel"] == rel) {
              if (rel_data["group"] == rel_group) {
                if (Lightbox.isLightframe || Lightbox.isModal || Lightbox.isVideo) {
                  rel_style = rel_data["style"];
                }
                Lightbox.imageArray.push([anchor.href, anchor_title, img_alt, rel_style]);
              }
            }
          }
        }

        // Remove duplicates.
        for (i = 0; i < Lightbox.imageArray.length; i++) {
          for (j = Lightbox.imageArray.length-1; j > i; j--) {
            if (Lightbox.imageArray[i][0] == Lightbox.imageArray[j][0]) {
              Lightbox.imageArray.splice(j,1);
            }
          }
        }
        while (Lightbox.imageArray[Lightbox.imageNum][0] != imageLink.href) {
          Lightbox.imageNum++;
        }
      }
    }

    if (Lightbox.isSlideshow && Lightbox.showPlayPause && Lightbox.isPaused) {
      $('#lightshowPlay').show();
      $('#lightshowPause').hide();
    }

    // Calculate top and left offset for the lightbox.
    var arrayPageScroll = Lightbox.getPageScroll();
    var lightboxTop = arrayPageScroll[1] + (Lightbox.topPosition == '' ? (arrayPageSize[3] / 10) : Lightbox.topPosition) * 1;
    var lightboxLeft = arrayPageScroll[0];
    $('#frameContainer, #modalContainer, #lightboxImage').hide();
    $('#hoverNav, #prevLink, #nextLink, #frameHoverNav, #framePrevLink, #frameNextLink').hide();
    $('#imageDataContainer, #numberDisplay, #bottomNavZoom, #bottomNavZoomOut').hide();
    $('#outerImageContainer').css({'width': '250px', 'height': '250px'});
    $('#lightbox').css({
      'zIndex': '10500',
      'top': lightboxTop + 'px',
      'left': lightboxLeft + 'px'
    }).show();

    Lightbox.total = Lightbox.imageArray.length;
    Lightbox.changeData(Lightbox.imageNum);
  },

  // changeData()
  // Hide most elements and preload image in preparation for resizing image
  // container.
  changeData: function(imageNum, zoomIn) {

    if (Lightbox.inprogress === false) {
      if (Lightbox.total > 1 && ((Lightbox.isSlideshow && Lightbox.loopSlides) || (!Lightbox.isSlideshow && Lightbox.loopItems))) {
        if (imageNum >= Lightbox.total) imageNum = 0;
        if (imageNum < 0) imageNum = Lightbox.total - 1;
      }

      if (Lightbox.isSlideshow) {
        for (var i = 0; i < Lightbox.slideIdCount; i++) {
          window.clearTimeout(Lightbox.slideIdArray[i]);
        }
      }
      Lightbox.inprogress = true;
      Lightbox.activeImage = imageNum;

      if (Lightbox.disableResize && !Lightbox.isSlideshow) {
        zoomIn = true;
      }
      Lightbox.isZoomedIn = zoomIn;


      // Hide elements during transition.
      $('#loading').css({'zIndex': '10500'}).show();
      if (!Lightbox.alternative_layout) {
        $('#imageContainer').hide();
      }
      $('#frameContainer, #modalContainer, #lightboxImage').hide();
      $('#hoverNav, #prevLink, #nextLink, #frameHoverNav, #framePrevLink, #frameNextLink').hide();
      $('#imageDataContainer, #numberDisplay, #bottomNavZoom, #bottomNavZoomOut').hide();

      // Preload image content, but not iframe pages.
      if (!Lightbox.isLightframe && !Lightbox.isVideo && !Lightbox.isModal) {
        $("#lightbox #imageDataContainer").removeClass('lightbox2-alt-layout-data');
        imgPreloader = new Image();
        imgPreloader.onerror = function() { Lightbox.imgNodeLoadingError(this); };

        imgPreloader.onload = function() {
          var photo = document.getElementById('lightboxImage');
          photo.src = Lightbox.imageArray[Lightbox.activeImage][0];
          photo.alt = Lightbox.imageArray[Lightbox.activeImage][2];

          var imageWidth = imgPreloader.width;
          var imageHeight = imgPreloader.height;

          // Resize code.
          var arrayPageSize = Lightbox.getPageSize();
          var targ = { w:arrayPageSize[2] - (Lightbox.borderSize * 2), h:arrayPageSize[3] - (Lightbox.borderSize * 6) - (Lightbox.infoHeight * 4) - (arrayPageSize[3] / 10) };
          var orig = { w:imgPreloader.width, h:imgPreloader.height };

          // Image is very large, so show a smaller version of the larger image
          // with zoom button.
          if (zoomIn !== true) {
            var ratio = 1.0; // Shrink image with the same aspect.
            $('#bottomNavZoomOut, #bottomNavZoom').hide();
            if ((orig.w >= targ.w || orig.h >= targ.h) && orig.h && orig.w) {
              ratio = ((targ.w / orig.w) < (targ.h / orig.h)) ? targ.w / orig.w : targ.h / orig.h;
              if (!Lightbox.disableZoom && !Lightbox.isSlideshow) {
                $('#bottomNavZoom').css({'zIndex': '10500'}).show();
              }
            }

            imageWidth  = Math.floor(orig.w * ratio);
            imageHeight = Math.floor(orig.h * ratio);
          }

          else {
            $('#bottomNavZoom').hide();
            // Only display zoom out button if the image is zoomed in already.
            if ((orig.w >= targ.w || orig.h >= targ.h) && orig.h && orig.w) {
              // Only display zoom out button if not a slideshow and if the
              // buttons aren't disabled.
              if (!Lightbox.disableResize && Lightbox.isSlideshow === false && !Lightbox.disableZoom) {
                $('#bottomNavZoomOut').css({'zIndex': '10500'}).show();
              }
            }
          }

          photo.style.width = (imageWidth) + 'px';
          photo.style.height = (imageHeight) + 'px';
          Lightbox.resizeContainer(imageWidth, imageHeight);

          // Clear onLoad, IE behaves irratically with animated gifs otherwise.
          imgPreloader.onload = function() {};
        };

        imgPreloader.src = Lightbox.imageArray[Lightbox.activeImage][0];
        imgPreloader.alt = Lightbox.imageArray[Lightbox.activeImage][2];
      }

      // Set up frame size, etc.
      else if (Lightbox.isLightframe) {
        $("#lightbox #imageDataContainer").addClass('lightbox2-alt-layout-data');
        var src = Lightbox.imageArray[Lightbox.activeImage][0];
        $('#frameContainer').html('<iframe id="lightboxFrame" style="display: none;" src="'+src+'"></iframe>');

        // Enable swf support in Gecko browsers.
        if ($.browser.mozilla && src.indexOf('.swf') != -1) {
          setTimeout(function () {
            document.getElementById("lightboxFrame").src = Lightbox.imageArray[Lightbox.activeImage][0];
          }, 1000);
        }

        if (!Lightbox.iframe_border) {
          $('#lightboxFrame').css({'border': 'none'});
          $('#lightboxFrame').attr('frameborder', '0');
        }
        var iframe = document.getElementById('lightboxFrame');
        var iframeStyles = Lightbox.imageArray[Lightbox.activeImage][3];
        iframe = Lightbox.setStyles(iframe, iframeStyles);
        Lightbox.resizeContainer(parseInt(iframe.width, 10), parseInt(iframe.height, 10));
      }
      else if (Lightbox.isVideo || Lightbox.isModal) {
        $("#lightbox #imageDataContainer").addClass('lightbox2-alt-layout-data');
        var container = document.getElementById('modalContainer');
        var modalStyles = Lightbox.imageArray[Lightbox.activeImage][3];
        container = Lightbox.setStyles(container, modalStyles);
        if (Lightbox.isVideo) {
          Lightbox.modalHeight =  parseInt(container.height, 10) - 10;
          Lightbox.modalWidth =  parseInt(container.width, 10) - 10;
          Lightvideo.startVideo(Lightbox.imageArray[Lightbox.activeImage][0]);
        }
        Lightbox.resizeContainer(parseInt(container.width, 10), parseInt(container.height, 10));
      }
    }
  },

  // imgNodeLoadingError()
  imgNodeLoadingError: function(image) {
    var s = Drupal.settings.lightbox2;
    var original_image = Lightbox.imageArray[Lightbox.activeImage][0];
    if (s.display_image_size !== "") {
      original_image = original_image.replace(new RegExp("."+s.display_image_size), "");
    }
    Lightbox.imageArray[Lightbox.activeImage][0] = original_image;
    image.onerror = function() { Lightbox.imgLoadingError(image); };
    image.src = original_image;
  },

  // imgLoadingError()
  imgLoadingError: function(image) {
    var s = Drupal.settings.lightbox2;
    Lightbox.imageArray[Lightbox.activeImage][0] = s.default_image;
    image.src = s.default_image;
  },

  // resizeContainer()
  resizeContainer: function(imgWidth, imgHeight) {

    imgWidth = (imgWidth < Lightbox.minWidth ? Lightbox.minWidth : imgWidth);

    this.widthCurrent = $('#outerImageContainer').width();
    this.heightCurrent = $('#outerImageContainer').height();

    var widthNew = (imgWidth  + (Lightbox.borderSize * 2));
    var heightNew = (imgHeight  + (Lightbox.borderSize * 2));

    // Scalars based on change from old to new.
    this.xScale = ( widthNew / this.widthCurrent) * 100;
    this.yScale = ( heightNew / this.heightCurrent) * 100;

    // Calculate size difference between new and old image, and resize if
    // necessary.
    wDiff = this.widthCurrent - widthNew;
    hDiff = this.heightCurrent - heightNew;

    $('#modalContainer').css({'width': imgWidth, 'height': imgHeight});
    // Detect animation sequence.
    if (Lightbox.resizeSequence) {
      var animate1 = {width: widthNew};
      var animate2 = {height: heightNew};
      if (Lightbox.resizeSequence == 2) {
        animate1 = {height: heightNew};
        animate2 = {width: widthNew};
      }
      $('#outerImageContainer').animate(animate1, Lightbox.resizeSpeed).animate(animate2, Lightbox.resizeSpeed, 'linear', function() { Lightbox.showData(); });
    }
    // Simultaneous.
    else {
      $('#outerImageContainer').animate({'width': widthNew, 'height': heightNew}, Lightbox.resizeSpeed, 'linear', function() { Lightbox.showData(); });
    }

    // If new and old image are same size and no scaling transition is necessary
    // do a quick pause to prevent image flicker.
    if ((hDiff === 0) && (wDiff === 0)) {
      if ($.browser.msie) {
        Lightbox.pause(250);
      }
      else {
        Lightbox.pause(100);
      }
    }

    var s = Drupal.settings.lightbox2;
    if (!s.use_alt_layout) {
      $('#prevLink, #nextLink').css({'height': imgHeight + 'px'});
    }
    $('#imageDataContainer').css({'width': widthNew + 'px'});
  },

  // showData()
  // Display image and begin preloading neighbors.
  showData: function() {
    $('#loading').hide();

    if (Lightbox.isLightframe || Lightbox.isVideo || Lightbox.isModal) {
      Lightbox.updateDetails();
      if (Lightbox.isLightframe) {
        $('#frameContainer').show();
        if ($.browser.safari || Lightbox.fadeInSpeed === 0) {
          $('#lightboxFrame').css({'zIndex': '10500'}).show();
        }
        else {
          $('#lightboxFrame').css({'zIndex': '10500'}).fadeIn(Lightbox.fadeInSpeed);
        }
      }
      else {
        if (Lightbox.isVideo) {
          $("#modalContainer").html(Lightbox.modalHTML).click(function(){return false;}).css('zIndex', '10500').show();
        }
        else {
          var src = unescape(Lightbox.imageArray[Lightbox.activeImage][0]);
          if (Lightbox.imageArray[Lightbox.activeImage][4]) {
            $(src).appendTo("#modalContainer");
            $('#modalContainer').css({'zIndex': '10500'}).show();
          }
          else {
            // Use a callback to show the new image, otherwise you get flicker.
            $("#modalContainer").hide().load(src, function () {$('#modalContainer').css({'zIndex': '10500'}).show();});
          }
          $('#modalContainer').unbind('click');
        }
        // This might be needed in the Lightframe section above.
        //$('#modalContainer').css({'zIndex': '10500'}).show();
      }
    }

    // Handle display of image content.
    else {
      $('#imageContainer').show();
      if ($.browser.safari || Lightbox.fadeInSpeed === 0) {
        $('#lightboxImage').css({'zIndex': '10500'}).show();
      }
      else {
        $('#lightboxImage').css({'zIndex': '10500'}).fadeIn(Lightbox.fadeInSpeed);
      }
      Lightbox.updateDetails();
      this.preloadNeighborImages();
    }
    Lightbox.inprogress = false;

    // Slideshow specific stuff.
    if (Lightbox.isSlideshow) {
      if (!Lightbox.loopSlides && Lightbox.activeImage == (Lightbox.total - 1)) {
        if (Lightbox.autoExit) {
          Lightbox.slideIdArray[Lightbox.slideIdCount++] = setTimeout(function () {Lightbox.end('slideshow');}, Lightbox.slideInterval);
        }
      }
      else {
        if (!Lightbox.isPaused && Lightbox.total > 1) {
          Lightbox.slideIdArray[Lightbox.slideIdCount++] = setTimeout(function () {Lightbox.changeData(Lightbox.activeImage + 1);}, Lightbox.slideInterval);
        }
      }
      if (Lightbox.showPlayPause && Lightbox.total > 1 && !Lightbox.isPaused) {
        $('#lightshowPause').show();
        $('#lightshowPlay').hide();
      }
      else if (Lightbox.showPlayPause && Lightbox.total > 1) {
        $('#lightshowPause').hide();
        $('#lightshowPlay').show();
      }
    }

    // Adjust the page overlay size.
    var arrayPageSize = Lightbox.getPageSize();
    var arrayPageScroll = Lightbox.getPageScroll();
    var pageHeight = arrayPageSize[1];
    if (Lightbox.isZoomedIn && arrayPageSize[1] > arrayPageSize[3]) {
      var lightboxTop = (Lightbox.topPosition == '' ? (arrayPageSize[3] / 10) : Lightbox.topPosition) * 1;
      pageHeight = pageHeight + arrayPageScroll[1] + lightboxTop;
    }
    $('#lightbox2-overlay').css({'height': pageHeight + 'px', 'width': arrayPageSize[0] + 'px'});

    // Gecko browsers (e.g. Firefox, SeaMonkey, etc) don't handle pdfs as
    // expected.
    if ($.browser.mozilla) {
      if (Lightbox.imageArray[Lightbox.activeImage][0].indexOf(".pdf") != -1) {
        setTimeout(function () {
          document.getElementById("lightboxFrame").src = Lightbox.imageArray[Lightbox.activeImage][0];
        }, 1000);
      }
    }
  },

  // updateDetails()
  // Display caption, image number, and bottom nav.
  updateDetails: function() {

    $("#imageDataContainer").hide();

    var s = Drupal.settings.lightbox2;

    if (s.show_caption) {
      var caption = Lightbox.filterXSS(Lightbox.imageArray[Lightbox.activeImage][1]);
      if (!caption) caption = '';
      $('#caption').html(caption).css({'zIndex': '10500'}).show();
    }

    // If image is part of set display 'Image x of x'.
    var numberDisplay = null;
    if (s.image_count && Lightbox.total > 1) {
      var currentImage = Lightbox.activeImage + 1;
      if (!Lightbox.isLightframe && !Lightbox.isModal && !Lightbox.isVideo) {
        numberDisplay = s.image_count.replace(/\!current/, currentImage).replace(/\!total/, Lightbox.total);
      }
      else if (Lightbox.isVideo) {
        numberDisplay = s.video_count.replace(/\!current/, currentImage).replace(/\!total/, Lightbox.total);
      }
      else {
        numberDisplay = s.page_count.replace(/\!current/, currentImage).replace(/\!total/, Lightbox.total);
      }
      $('#numberDisplay').html(numberDisplay).css({'zIndex': '10500'}).show();
    }
    else {
      $('#numberDisplay').hide();
    }

    $("#imageDataContainer").hide().slideDown(Lightbox.slideDownSpeed, function() {
      $("#bottomNav").show();
    });
    if (Lightbox.rtl == 1) {
      $("#bottomNav").css({'float': 'left'});
    }
    Lightbox.updateNav();
  },

  // updateNav()
  // Display appropriate previous and next hover navigation.
  updateNav: function() {

    $('#hoverNav').css({'zIndex': '10500'}).show();
    var prevLink = '#prevLink';
    var nextLink = '#nextLink';

    // Slideshow is separated as we need to show play / pause button.
    if (Lightbox.isSlideshow) {
      if ((Lightbox.total > 1 && Lightbox.loopSlides) || Lightbox.activeImage !== 0) {
        $(prevLink).css({'zIndex': '10500'}).show().click(function() {
          if (Lightbox.pauseOnPrevClick) {
            Lightbox.togglePlayPause("lightshowPause", "lightshowPlay");
          }
          Lightbox.changeData(Lightbox.activeImage - 1); return false;
        });
      }
      else {
        $(prevLink).hide();
      }

      // If not last image in set, display next image button.
      if ((Lightbox.total > 1 && Lightbox.loopSlides) || Lightbox.activeImage != (Lightbox.total - 1)) {
        $(nextLink).css({'zIndex': '10500'}).show().click(function() {
          if (Lightbox.pauseOnNextClick) {
            Lightbox.togglePlayPause("lightshowPause", "lightshowPlay");
          }
          Lightbox.changeData(Lightbox.activeImage + 1); return false;
        });
      }
      // Safari browsers need to have hide() called again.
      else {
        $(nextLink).hide();
      }
    }

    // All other types of content.
    else {

      if ((Lightbox.isLightframe || Lightbox.isModal || Lightbox.isVideo) && !Lightbox.alternative_layout) {
        $('#frameHoverNav').css({'zIndex': '10500'}).show();
        $('#hoverNav').css({'zIndex': '10500'}).hide();
        prevLink = '#framePrevLink';
        nextLink = '#frameNextLink';
      }

      // If not first image in set, display prev image button.
      if ((Lightbox.total > 1 && Lightbox.loopItems) || Lightbox.activeImage !== 0) {
        // Unbind any other click handlers, otherwise this adds a new click handler
        // each time the arrow is clicked.
        $(prevLink).css({'zIndex': '10500'}).show().unbind().click(function() {
          Lightbox.changeData(Lightbox.activeImage - 1); return false;
        });
      }
      // Safari browsers need to have hide() called again.
      else {
        $(prevLink).hide();
      }

      // If not last image in set, display next image button.
      if ((Lightbox.total > 1 && Lightbox.loopItems) || Lightbox.activeImage != (Lightbox.total - 1)) {
        // Unbind any other click handlers, otherwise this adds a new click handler
        // each time the arrow is clicked.
        $(nextLink).css({'zIndex': '10500'}).show().unbind().click(function() {
          Lightbox.changeData(Lightbox.activeImage + 1); return false;
        });
      }
      // Safari browsers need to have hide() called again.
      else {
        $(nextLink).hide();
      }
    }

    // Don't enable keyboard shortcuts so forms will work.
    if (!Lightbox.isModal) {
      this.enableKeyboardNav();
    }
  },


  // enableKeyboardNav()
  enableKeyboardNav: function() {
    $(document).bind("keydown", this.keyboardAction);
  },

  // disableKeyboardNav()
  disableKeyboardNav: function() {
    $(document).unbind("keydown", this.keyboardAction);
  },

  // keyboardAction()
  keyboardAction: function(e) {
    if (e === null) { // IE.
      keycode = event.keyCode;
      escapeKey = 27;
    }
    else { // Mozilla.
      keycode = e.keyCode;
      escapeKey = e.DOM_VK_ESCAPE;
    }

    key = String.fromCharCode(keycode).toLowerCase();

    // Close lightbox.
    if (Lightbox.checkKey(Lightbox.keysClose, key, keycode)) {
      Lightbox.end('forceClose');
    }
    // Display previous image (p, <-).
    else if (Lightbox.checkKey(Lightbox.keysPrevious, key, keycode)) {
      if ((Lightbox.total > 1 && ((Lightbox.isSlideshow && Lightbox.loopSlides) || (!Lightbox.isSlideshow && Lightbox.loopItems))) || Lightbox.activeImage !== 0) {
        Lightbox.changeData(Lightbox.activeImage - 1);
      }

    }
    // Display next image (n, ->).
    else if (Lightbox.checkKey(Lightbox.keysNext, key, keycode)) {
      if ((Lightbox.total > 1 && ((Lightbox.isSlideshow && Lightbox.loopSlides) || (!Lightbox.isSlideshow && Lightbox.loopItems))) || Lightbox.activeImage != (Lightbox.total - 1)) {
        Lightbox.changeData(Lightbox.activeImage + 1);
      }
    }
    // Zoom in.
    else if (Lightbox.checkKey(Lightbox.keysZoom, key, keycode) && !Lightbox.disableResize && !Lightbox.disableZoom && !Lightbox.isSlideshow && !Lightbox.isLightframe) {
      if (Lightbox.isZoomedIn) {
        Lightbox.changeData(Lightbox.activeImage, false);
      }
      else if (!Lightbox.isZoomedIn) {
        Lightbox.changeData(Lightbox.activeImage, true);
      }
      return false;
    }
    // Toggle play / pause (space).
    else if (Lightbox.checkKey(Lightbox.keysPlayPause, key, keycode) && Lightbox.isSlideshow) {

      if (Lightbox.isPaused) {
        Lightbox.togglePlayPause("lightshowPlay", "lightshowPause");
      }
      else {
        Lightbox.togglePlayPause("lightshowPause", "lightshowPlay");
      }
      return false;
    }
  },

  preloadNeighborImages: function() {

    if ((Lightbox.total - 1) > Lightbox.activeImage) {
      preloadNextImage = new Image();
      preloadNextImage.src = Lightbox.imageArray[Lightbox.activeImage + 1][0];
    }
    if (Lightbox.activeImage > 0) {
      preloadPrevImage = new Image();
      preloadPrevImage.src = Lightbox.imageArray[Lightbox.activeImage - 1][0];
    }

  },

  end: function(caller) {
    var closeClick = (caller == 'slideshow' ? false : true);
    if (Lightbox.isSlideshow && Lightbox.isPaused && !closeClick) {
      return;
    }
    // To prevent double clicks on navigation links.
    if (Lightbox.inprogress === true && caller != 'forceClose') {
      return;
    }
    Lightbox.disableKeyboardNav();
    $('#lightbox').hide();
    $("#lightbox2-overlay").fadeOut();
    Lightbox.isPaused = true;
    Lightbox.inprogress = false;
    // Replaces calls to showSelectBoxes() and showFlash() in original
    // lightbox2.
    Lightbox.toggleSelectsFlash('visible');
    if (Lightbox.isSlideshow) {
      for (var i = 0; i < Lightbox.slideIdCount; i++) {
        window.clearTimeout(Lightbox.slideIdArray[i]);
      }
      $('#lightshowPause, #lightshowPlay').hide();
    }
    else if (Lightbox.isLightframe) {
      $('#frameContainer').empty().hide();
    }
    else if (Lightbox.isVideo || Lightbox.isModal) {
      if (!Lightbox.auto_modal) {
        $('#modalContainer').hide().html("");
      }
      Lightbox.auto_modal = false;
    }
  },


  // getPageScroll()
  // Returns array with x,y page scroll values.
  // Core code from - quirksmode.com.
  getPageScroll : function() {

    var xScroll, yScroll;

    if (self.pageYOffset || self.pageXOffset) {
      yScroll = self.pageYOffset;
      xScroll = self.pageXOffset;
    }
    else if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft)) {  // Explorer 6 Strict.
      yScroll = document.documentElement.scrollTop;
      xScroll = document.documentElement.scrollLeft;
    }
    else if (document.body) {// All other Explorers.
      yScroll = document.body.scrollTop;
      xScroll = document.body.scrollLeft;
    }

    arrayPageScroll = [xScroll,yScroll];
    return arrayPageScroll;
  },

  // getPageSize()
  // Returns array with page width, height and window width, height.
  // Core code from - quirksmode.com.
  // Edit for Firefox by pHaez.

  getPageSize : function() {

    var xScroll, yScroll;

    if (window.innerHeight && window.scrollMaxY) {
      xScroll = window.innerWidth + window.scrollMaxX;
      yScroll = window.innerHeight + window.scrollMaxY;
    }
    else if (document.body.scrollHeight > document.body.offsetHeight) { // All but Explorer Mac.
      xScroll = document.body.scrollWidth;
      yScroll = document.body.scrollHeight;
    }
    else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari.
      xScroll = document.body.offsetWidth;
      yScroll = document.body.offsetHeight;
    }

    var windowWidth, windowHeight;

    if (self.innerHeight) { // All except Explorer.
      if (document.documentElement.clientWidth) {
        windowWidth = document.documentElement.clientWidth;
      }
      else {
        windowWidth = self.innerWidth;
      }
      windowHeight = self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode.
      windowWidth = document.documentElement.clientWidth;
      windowHeight = document.documentElement.clientHeight;
    }
    else if (document.body) { // Other Explorers.
      windowWidth = document.body.clientWidth;
      windowHeight = document.body.clientHeight;
    }
    // For small pages with total height less than height of the viewport.
    if (yScroll < windowHeight) {
      pageHeight = windowHeight;
    }
    else {
      pageHeight = yScroll;
    }
    // For small pages with total width less than width of the viewport.
    if (xScroll < windowWidth) {
      pageWidth = xScroll;
    }
    else {
      pageWidth = windowWidth;
    }
    arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
    return arrayPageSize;
  },


  // pause(numberMillis)
  pause : function(ms) {
    var date = new Date();
    var curDate = null;
    do { curDate = new Date(); }
    while (curDate - date < ms);
  },


  // toggleSelectsFlash()
  // Hide / unhide select lists and flash objects as they appear above the
  // lightbox in some browsers.
  toggleSelectsFlash: function (state) {
    if (state == 'visible') {
      $("select.lightbox_hidden, embed.lightbox_hidden, object.lightbox_hidden").show();
    }
    else if (state == 'hide') {
      $("select:visible, embed:visible, object:visible").not('#lightboxAutoModal select, #lightboxAutoModal embed, #lightboxAutoModal object').addClass("lightbox_hidden");
      $("select.lightbox_hidden, embed.lightbox_hidden, object.lightbox_hidden").hide();
    }
  },


  // parseRel()
  parseRel: function (link) {
    var parts = [];
    parts["rel"] = parts["title"] = parts["group"] = parts["style"] = parts["flashvars"] = null;
    if (!$(link).attr('rel')) return parts;
    parts["rel"] = $(link).attr('rel').match(/\w+/)[0];

    if ($(link).attr('rel').match(/\[(.*)\]/)) {
      var info = $(link).attr('rel').match(/\[(.*?)\]/)[1].split('|');
      parts["group"] = info[0];
      parts["style"] = info[1];
      if (parts["style"] != undefined && parts["style"].match(/flashvars:\s?(.*?);/)) {
        parts["flashvars"] = parts["style"].match(/flashvars:\s?(.*?);/)[1];
      }
    }
    if ($(link).attr('rel').match(/\[.*\]\[(.*)\]/)) {
      parts["title"] = $(link).attr('rel').match(/\[.*\]\[(.*)\]/)[1];
    }
    return parts;
  },

  // setStyles()
  setStyles: function(item, styles) {
    item.width = Lightbox.iframe_width;
    item.height = Lightbox.iframe_height;
    item.scrolling = "auto";

    if (!styles) return item;
    var stylesArray = styles.split(';');
    for (var i = 0; i< stylesArray.length; i++) {
      if (stylesArray[i].indexOf('width:') >= 0) {
        var w = stylesArray[i].replace('width:', '');
        item.width = jQuery.trim(w);
      }
      else if (stylesArray[i].indexOf('height:') >= 0) {
        var h = stylesArray[i].replace('height:', '');
        item.height = jQuery.trim(h);
      }
      else if (stylesArray[i].indexOf('scrolling:') >= 0) {
        var scrolling = stylesArray[i].replace('scrolling:', '');
        item.scrolling = jQuery.trim(scrolling);
      }
      else if (stylesArray[i].indexOf('overflow:') >= 0) {
        var overflow = stylesArray[i].replace('overflow:', '');
        item.overflow = jQuery.trim(overflow);
      }
    }
    return item;
  },


  // togglePlayPause()
  // Hide the pause / play button as appropriate.  If pausing the slideshow also
  // clear the timers, otherwise move onto the next image.
  togglePlayPause: function(hideId, showId) {
    if (Lightbox.isSlideshow && hideId == "lightshowPause") {
      for (var i = 0; i < Lightbox.slideIdCount; i++) {
        window.clearTimeout(Lightbox.slideIdArray[i]);
      }
    }
    $('#' + hideId).hide();
    $('#' + showId).show();

    if (hideId == "lightshowPlay") {
      Lightbox.isPaused = false;
      if (!Lightbox.loopSlides && Lightbox.activeImage == (Lightbox.total - 1)) {
        Lightbox.end();
      }
      else if (Lightbox.total > 1) {
        Lightbox.changeData(Lightbox.activeImage + 1);
      }
    }
    else {
      Lightbox.isPaused = true;
    }
  },

  triggerLightbox: function (rel_type, rel_group) {
    if (rel_type.length) {
      if (rel_group && rel_group.length) {
        $("a[rel^='" + rel_type +"\[" + rel_group + "\]'], area[rel^='" + rel_type +"\[" + rel_group + "\]']").eq(0).trigger("click");
      }
      else {
        $("a[rel^='" + rel_type +"'], area[rel^='" + rel_type +"']").eq(0).trigger("click");
      }
    }
  },

  detectMacFF2: function() {
    var ua = navigator.userAgent.toLowerCase();
    if (/firefox[\/\s](\d+\.\d+)/.test(ua)) {
      var ffversion = new Number(RegExp.$1);
      if (ffversion < 3 && ua.indexOf('mac') != -1) {
        return true;
      }
    }
    return false;
  },

  checkKey: function(keys, key, code) {
    return (jQuery.inArray(key, keys) != -1 || jQuery.inArray(String(code), keys) != -1);
  },

  filterXSS: function(str, allowed_tags) {
    var output = "";
    $.ajax({
      url: Drupal.settings.basePath + 'system/lightbox2/filter-xss',
      data: {
        'string' : str,
        'allowed_tags' : allowed_tags
      },
      type: "POST",
      async: false,
      dataType:  "json",
      success: function(data) {
        output = data;
      }
    });
    return output;
  }

};

// Initialize the lightbox.
Drupal.behaviors.initLightbox = function (context) {
  $('body:not(.lightbox-processed)', context).addClass('lightbox-processed').each(function() {
    Lightbox.initialize();
    return false; // Break the each loop.
  });

  // Attach lightbox to any links with lightbox rels.
  Lightbox.initList(context);
  $('#lightboxAutoModal', context).triggerHandler('click');
};

;
/* $Id: jquery.hoverIntent.minified.js,v 1.1 2010/02/12 12:53:13 mehrpadin Exp $ */
/**
* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
*
* @param  f  onMouseOver function || An object with configuration options
* @param  g  onMouseOut function  || Nothing (use configuration options object)
* @author    Brian Cherne <brian@cherne.net>
*/
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);;
/* $Id: jquery.bgiframe.min.js,v 1.1 2010/02/15 13:38:03 mehrpadin Exp $ */
/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate: 2007-06-19 20:25:28 -0500 (Tue, 19 Jun 2007) $
 * $Rev: 2111 $
 *
 * Version 2.1
 */
(function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&parseInt($.browser.version)<=6){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+'style="display:block;position:absolute;z-index:-1;'+(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+'"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)this.insertBefore(document.createElement(html),this.firstChild);});}return this;};if(!$.browser.version)$.browser.version=navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)[1];})(jQuery);;
/* $Id: superfish.js,v 1.1 2010/02/12 12:53:13 mehrpadin Exp $ */
/*
 * Superfish v1.4.8 - jQuery menu widget
 * Copyright (c) 2008 Joel Birch
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
 */

;(function($){
  $.fn.superfish = function(op){

    var sf = $.fn.superfish,
      c = sf.c,
      $arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
      over = function(){
        var $$ = $(this), menu = getMenu($$);
        clearTimeout(menu.sfTimer);
        $$.showSuperfishUl().siblings().hideSuperfishUl();
      },
      out = function(){
        var $$ = $(this), menu = getMenu($$), o = sf.op;
        clearTimeout(menu.sfTimer);
        menu.sfTimer=setTimeout(function(){
          o.retainPath=($.inArray($$[0],o.$path)>-1);
          $$.hideSuperfishUl();
          if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
        },o.delay);
      },
      getMenu = function($menu){
        var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
        sf.op = sf.o[menu.serial];
        return menu;
      },
      addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };

    return this.each(function() {
      var s = this.serial = sf.o.length;
      var o = $.extend({},sf.defaults,op);
      o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
        $(this).addClass([o.hoverClass,c.bcClass].join(' '))
          .filter('li:has(ul)').removeClass(o.pathClass);
      });
      sf.o[s] = sf.op = o;

      $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
        if (o.autoArrows) addArrow( $('>a:first-child',this) );
      })
      .not('.'+c.bcClass)
        .hideSuperfishUl();

      var $a = $('a',this);
      $a.each(function(i){
        var $li = $a.eq(i).parents('li');
        $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
      });
      o.onInit.call(this);

    }).each(function() {
      var menuClasses = [c.menuClass];
      if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
      $(this).addClass(menuClasses.join(' '));
    });
  };

  var sf = $.fn.superfish;
  sf.o = [];
  sf.op = {};
  sf.IE7fix = function(){
    var o = sf.op;
    if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
      this.toggleClass(sf.c.shadowClass+'-off');
    };
  sf.c = {
    bcClass  : 'sf-breadcrumb',
    menuClass: 'sf-js-enabled',
    anchorClass : 'sf-with-ul',
    arrowClass  : 'sf-sub-indicator',
    shadowClass : 'sf-shadow'
  };
  sf.defaults = {
    hoverClass  : 'sfHover',
    pathClass  : 'overideThisToUse',
    pathLevels  : 1,
    delay : 800,
    animation  : {opacity:'show'},
    speed : 'normal',
    autoArrows  : true,
    dropShadows : true,
    disableHI  : false, // true disables hoverIntent detection
    onInit : function(){}, // callback functions
    onBeforeShow: function(){},
    onShow : function(){},
    onHide : function(){}
  };
  $.fn.extend({
    hideSuperfishUl : function(){
      var o = sf.op,
        not = (o.retainPath===true) ? o.$path : '';
      o.retainPath = false;
      var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
          .find('>ul').hide().css('visibility','hidden');
      o.onHide.call($ul);
      return this;
    },
    showSuperfishUl : function(){
      var o = sf.op,
        sh = sf.c.shadowClass+'-off',
        $ul = this.addClass(o.hoverClass)
          .find('>ul:hidden').css('visibility','visible');
      sf.IE7fix.call($ul);
      o.onBeforeShow.call($ul);
      $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
      return this;
    }
  });

})(jQuery);
;
/* $Id: supersubs.js,v 1.1 2010/02/12 12:53:13 mehrpadin Exp $ */
/*
 * Supersubs v0.2b - jQuery plugin
 * Copyright (c) 2008 Joel Birch
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 *
 * This plugin automatically adjusts submenu widths of suckerfish-style menus to that of
 * their longest list item children. If you use this, please expect bugs and report them
 * to the jQuery Google Group with the word 'Superfish' in the subject line.
 *
 */

;(function($){ // $ will refer to jQuery within this closure

  $.fn.supersubs = function(options){
    var opts = $.extend({}, $.fn.supersubs.defaults, options);
    // return original object to support chaining
    return this.each(function() {
      // cache selections
      var $$ = $(this);
      // support metadata
      var o = $.meta ? $.extend({}, opts, $$.data()) : opts;
      // get the font size of menu.
      // .css('fontSize') returns various results cross-browser, so measure an em dash instead
      var fontsize = $('<li id="menu-fontsize">&#8212;</li>').css({
        'padding' : 0,
        'position' : 'absolute',
        'top' : '-999em',
        'width' : 'auto'
      }).appendTo($$).width(); //clientWidth is faster, but was incorrect here
      // remove em dash
      $('#menu-fontsize').remove();
      // cache all ul elements
      $ULs = $$.find('ul');
      // loop through each ul in menu
      $ULs.each(function(i) {
        // cache this ul
        var $ul = $ULs.eq(i);
        // get all (li) children of this ul
        var $LIs = $ul.children();
        // get all anchor grand-children
        var $As = $LIs.children('a');
        // force content to one line and save current float property
        var liFloat = $LIs.css('white-space','nowrap').css('float');
        // remove width restrictions and floats so elements remain vertically stacked
        var emWidth = $ul.add($LIs).add($As).css({
          'float' : 'none',
          'width'  : 'auto'
        })
        // this ul will now be shrink-wrapped to longest li due to position:absolute
        // so save its width as ems. Clientwidth is 2 times faster than .width() - thanks Dan Switzer
        .end().end()[0].clientWidth / fontsize;
        // add more width to ensure lines don't turn over at certain sizes in various browsers
        emWidth += o.extraWidth;
        // restrict to at least minWidth and at most maxWidth
        if (emWidth > o.maxWidth)    { emWidth = o.maxWidth; }
        else if (emWidth < o.minWidth)  { emWidth = o.minWidth; }
        emWidth += 'em';
        // set ul to width in ems
        $ul.css('width',emWidth);
        // restore li floats to avoid IE bugs
        // set li width to full width of this ul
        // revert white-space to normal
        $LIs.css({
          'float' : liFloat,
          'width' : '100%',
          'white-space' : 'normal'
        })
        // update offset position of descendant ul to reflect new width of parent
        .each(function(){
          var $childUl = $('>ul',this);
          var offsetDirection = $childUl.css('left')!==undefined ? 'left' : 'right';
          $childUl.css(offsetDirection,emWidth);
        });
      });

    });
  };
  // expose defaults
  $.fn.supersubs.defaults = {
    minWidth: 9, // requires em unit.
    maxWidth: 25, // requires em unit.
    extraWidth: 0 // extra width can ensure lines don't sometimes turn over due to slight browser differences in how they round-off values
  };

})(jQuery); // plugin code ends
;
// $Id: panels.js,v 1.2.4.1 2009/10/05 22:40:35 merlinofchaos Exp $

(function ($) {
  Drupal.Panels = {};

  Drupal.Panels.autoAttach = function() {
    if ($.browser.msie) {
      // If IE, attach a hover event so we can see our admin links.
      $("div.panel-pane").hover(
        function() {
          $('div.panel-hide', this).addClass("panel-hide-hover"); return true;
        },
        function() {
          $('div.panel-hide', this).removeClass("panel-hide-hover"); return true;
        }
      );
      $("div.admin-links").hover(
        function() {
          $(this).addClass("admin-links-hover"); return true;
        },
        function(){
          $(this).removeClass("admin-links-hover"); return true;
        }
      );
    }
  };

  $(Drupal.Panels.autoAttach);
})(jQuery);
;
/**
 * --------------------------------------------------------------------
 * jQuery-Plugin "pngFix"
 * Version: 1.1, 11.09.2007
 * by Andreas Eberhard, andreas.eberhard@gmail.com
 *                      http://jquery.andreaseberhard.de/
 *
 * Copyright (c) 2007 Andreas Eberhard
 * Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php)
 *
 * Changelog:
 *    11.09.2007 Version 1.1
 *    - removed noConflict
 *    - added png-support for input type=image
 *    - 01.08.2007 CSS background-image support extension added by Scott Jehl, scott@filamentgroup.com, http://www.filamentgroup.com
 *    31.05.2007 initial Version 1.0
 * --------------------------------------------------------------------
 * @example $(function(){$(document).pngFix();});
 * @desc Fixes all PNG's in the document on document.ready
 *
 * jQuery(function(){jQuery(document).pngFix();});
 * @desc Fixes all PNG's in the document on document.ready when using noConflict
 *
 * @example $(function(){$('div.examples').pngFix();});
 * @desc Fixes all PNG's within div with class examples
 *
 * @example $(function(){$('div.examples').pngFix( { blankgif:'ext.gif' } );});
 * @desc Fixes all PNG's within div with class examples, provides blank gif for input with png
 * --------------------------------------------------------------------
 */

(function($) {

jQuery.fn.pngFix = function(settings) {

	// Settings
	settings = jQuery.extend({
		blankgif: 'blank.gif'
	}, settings);

	var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
	var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);

	if (jQuery.browser.msie && (ie55 || ie6)) {

		//fix images with png-source
		jQuery(this).find("img[@src$=.png]").each(function() {

			jQuery(this).attr('width',jQuery(this).width());
			jQuery(this).attr('height',jQuery(this).height());

			var prevStyle = '';
			var strNewHTML = '';
			var imgId = (jQuery(this).attr('id')) ? 'id="' + jQuery(this).attr('id') + '" ' : '';
			var imgClass = (jQuery(this).attr('class')) ? 'class="' + jQuery(this).attr('class') + '" ' : '';
			var imgTitle = (jQuery(this).attr('title')) ? 'title="' + jQuery(this).attr('title') + '" ' : '';
			var imgAlt = (jQuery(this).attr('alt')) ? 'alt="' + jQuery(this).attr('alt') + '" ' : '';
			var imgAlign = (jQuery(this).attr('align')) ? 'float:' + jQuery(this).attr('align') + ';' : '';
			var imgHand = (jQuery(this).parent().attr('href')) ? 'cursor:hand;' : '';
			if (this.style.border) {
				prevStyle += 'border:'+this.style.border+';';
				this.style.border = '';
			}
			if (this.style.padding) {
				prevStyle += 'padding:'+this.style.padding+';';
				this.style.padding = '';
			}
			if (this.style.margin) {
				prevStyle += 'margin:'+this.style.margin+';';
				this.style.margin = '';
			}
			var imgStyle = (this.style.cssText);

			strNewHTML += '<span '+imgId+imgClass+imgTitle+imgAlt;
			strNewHTML += 'style="position:relative;white-space:pre-line;display:inline-block;background:transparent;'+imgAlign+imgHand;
			strNewHTML += 'width:' + jQuery(this).width() + 'px;' + 'height:' + jQuery(this).height() + 'px;';
			strNewHTML += 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + jQuery(this).attr('src') + '\', sizingMethod=\'scale\');';
			strNewHTML += imgStyle+'"></span>';
			if (prevStyle != ''){
				strNewHTML = '<span style="position:relative;display:inline-block;'+prevStyle+imgHand+'width:' + jQuery(this).width() + 'px;' + 'height:' + jQuery(this).height() + 'px;'+'">' + strNewHTML + '</span>';
			}

			jQuery(this).hide();
			jQuery(this).after(strNewHTML);

		});

		// fix css background pngs
		jQuery(this).find("*").each(function(){
			var bgIMG = jQuery(this).css('background-image');
			if(bgIMG.indexOf(".png")!=-1){
				var iebg = bgIMG.split('url("')[1].split('")')[0];
				jQuery(this).css('background-image', 'none');
				jQuery(this).get(0).runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + iebg + "',sizingMethod='scale')";
			}
		});
		
		//fix input with png-source
		jQuery(this).find("input[@src$=.png]").each(function() {
			var bgIMG = jQuery(this).attr('src');
			jQuery(this).get(0).runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + bgIMG + '\', sizingMethod=\'scale\');';
   		jQuery(this).attr('src', settings.blankgif)
		});
	
	}
	
	return jQuery;

};

})(jQuery);
;
/*
 * jQuery Form Plugin
 * version: 2.25 (08-APR-2009)
 * @requires jQuery v1.2.2 or later
 * @note This has been modified for ajax.module
 * Examples and documentation at: http://malsup.com/jquery/form/
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(5($){$.B.1s=5(u){2(!4.G){R(\'1b: 2M 9 2N - 2O 2P 1t\');6 4}2(S u==\'5\')u={T:u};3 v=4.14(\'1c\')||1d.2Q.2R;v=(v.2S(/^([^#]+)/)||[])[1];v=v||\'\';u=$.1n({1e:v,H:4.14(\'1u\')||\'1Q\'},u||{});3 w={};4.L(\'C-1R-1S\',[4,u,w]);2(w.1T){R(\'1b: 9 1U 1o C-1R-1S L\');6 4}2(u.1v&&u.1v(4,u)===I){R(\'1b: 9 1f 1o 1v 1V\');6 4}3 a=4.1w(u.2T);2(u.J){u.O=u.J;K(3 n 1x u.J){2(u.J[n]2U 15){K(3 k 1x u.J[n])a.D({7:n,8:u.J[n][k]})}E a.D({7:n,8:u.J[n]})}}2(u.1y&&u.1y(a,4,u)===I){R(\'1b: 9 1f 1o 1y 1V\');6 4}4.L(\'C-9-1W\',[a,4,u,w]);2(w.1T){R(\'1b: 9 1U 1o C-9-1W L\');6 4}3 q=$.1z(a);2(u.H.2V()==\'1Q\'){u.1e+=(u.1e.2W(\'?\')>=0?\'&\':\'?\')+q;u.J=F}E u.J=q;3 x=4,V=[];2(u.2X)V.D(5(){x.1X()});2(u.2Y)V.D(5(){x.1Y()});2(!u.16&&u.17){3 y=u.T||5(){};V.D(5(a){$(u.17).2Z(a).P(y,1Z)})}E 2(u.T)V.D(u.T);u.T=5(a,b){K(3 i=0,M=V.G;i<M;i++)V[i].30(u,[a,b,x])};3 z=$(\'W:31\',4).18();3 A=I;K(3 j=0;j<z.G;j++)2(z[j])A=Q;2(u.20||A){2(u.21)$.32(u.21,1A);E 1A()}E $.33(u);4.L(\'C-9-34\',[4,u]);6 4;5 1A(){3 h=x[0];2($(\':W[7=9]\',h).G){35(\'36: 37 22 38 39 3a 3b "9".\');6}3 i=$.1n({},$.23,u);3 s=$.1n(Q,{},$.1n(Q,{},$.23),i);3 j=\'3c\'+(1B 3d().3e());3 k=$(\'<20 3f="\'+j+\'" 7="\'+j+\'" 24="25:26" />\');3 l=k[0];k.3g({3h:\'3i\',27:\'-28\',29:\'-28\'});3 m={1f:0,19:F,1g:F,3j:0,3k:\'n/a\',3l:5(){},2a:5(){},3m:5(){},3n:5(){4.1f=1;k.14(\'24\',\'25:26\')}};3 g=i.2b;2(g&&!$.1C++)$.1h.L("3o");2(g)$.1h.L("3p",[m,i]);2(s.2c&&s.2c(m,s)===I){s.2b&&$.1C--;6}2(m.1f)6;3 o=0;3 p=0;3 q=h.U;2(q){3 n=q.7;2(n&&!q.1i){u.O=u.O||{};u.O[n]=q.8;2(q.H=="X"){u.O[7+\'.x\']=h.Y;u.O[7+\'.y\']=h.Z}}}1j(5(){3 t=x.14(\'17\'),a=x.14(\'1c\');h.1k(\'17\',j);2(h.2d(\'1u\')!=\'2e\')h.1k(\'1u\',\'2e\');2(h.2d(\'1c\')!=i.1e)h.1k(\'1c\',i.1e);2(!u.3q){x.14({3r:\'2f/C-J\',3s:\'2f/C-J\'})}2(i.1D)1j(5(){p=Q;11()},i.1D);3 b=[];2g{2(u.O)K(3 n 1x u.O)b.D($(\'<W H="3t" 7="\'+n+\'" 8="\'+u.O[n]+\'" />\').2h(h)[0]);k.2h(\'1l\');l.2i?l.2i(\'2j\',11):l.3u(\'2k\',11,I);h.9()}3v{h.1k(\'1c\',a);t?h.1k(\'17\',t):x.3w(\'17\');$(b).2l()}},10);3 r=0;5 11(){2(o++)6;l.2m?l.2m(\'2j\',11):l.3x(\'2k\',11,I);3 c=Q;2g{2(p)3y\'1D\';3 d,N;N=l.2n?l.2n.2o:l.2p?l.2p:l.2o;2((N.1l==F||N.1l.2q==\'\')&&!r){r=1;o--;1j(11,2r);6}m.19=N.1l?N.1l.2q:F;m.1g=N.2s?N.2s:N;m.2a=5(a){3 b={\'3z-H\':i.16};6 b[a]};2(i.16==\'3A\'||i.16==\'3B\'){3 f=N.1E(\'1F\')[0];m.19=f?f.8:m.19}E 2(i.16==\'2t\'&&!m.1g&&m.19!=F){m.1g=2u(m.19)}d=$.3C(m,i.16)}3D(e){c=I;$.3E(i,m,\'2v\',e)}2(c){i.T(d,\'T\');2(g)$.1h.L("3F",[m,i])}2(g)$.1h.L("3G",[m,i]);2(g&&!--$.1C)$.1h.L("3H");2(i.2w)i.2w(m,c?\'T\':\'2v\');1j(5(){k.2l();m.1g=F},2r)};5 2u(s,a){2(1d.2x){a=1B 2x(\'3I.3J\');a.3K=\'I\';a.3L(s)}E a=(1B 3M()).3N(s,\'1G/2t\');6(a&&a.2y&&a.2y.1p!=\'3O\')?a:F}}};$.B.3P=5(c){6 4.2z().2A(\'9.C-1q\',5(){$(4).1s(c);6 I}).P(5(){$(":9,W:X",4).2A(\'2B.C-1q\',5(e){3 a=4.C;a.U=4;2(4.H==\'X\'){2(e.2C!=12){a.Y=e.2C;a.Z=e.3Q}E 2(S $.B.2D==\'5\'){3 b=$(4).2D();a.Y=e.2E-b.29;a.Z=e.2F-b.27}E{a.Y=e.2E-4.3R;a.Z=e.2F-4.3S}}1j(5(){a.U=a.Y=a.Z=F},10)})})};$.B.2z=5(){4.2G(\'9.C-1q\');6 4.P(5(){$(":9,W:X",4).2G(\'2B.C-1q\')})};$.B.1w=5(b){3 a=[];2(4.G==0)6 a;3 c=4[0];3 d=b?c.1E(\'*\'):c.22;2(!d)6 a;K(3 i=0,M=d.G;i<M;i++){3 e=d[i];3 n=e.7;2(!n)1H;2(b&&c.U&&e.H=="X"){2(!e.1i&&c.U==e)a.D({7:n+\'.x\',8:c.Y},{7:n+\'.y\',8:c.Z});1H}3 v=$.18(e,Q);2(v&&v.1r==15){K(3 j=0,2H=v.G;j<2H;j++)a.D({7:n,8:v[j]})}E 2(v!==F&&S v!=\'12\')a.D({7:n,8:v})}2(!b&&c.U){3 f=c.1E("W");K(3 i=0,M=f.G;i<M;i++){3 g=f[i];3 n=g.7;2(n&&!g.1i&&g.H=="X"&&c.U==g)a.D({7:n+\'.x\',8:c.Y},{7:n+\'.y\',8:c.Z})}}6 a};$.B.3T=5(a){6 $.1z(4.1w(a))};$.B.3U=5(b){3 a=[];4.P(5(){3 n=4.7;2(!n)6;3 v=$.18(4,b);2(v&&v.1r==15){K(3 i=0,M=v.G;i<M;i++)a.D({7:n,8:v[i]})}E 2(v!==F&&S v!=\'12\')a.D({7:4.7,8:v})});6 $.1z(a)};$.B.18=5(a){K(3 b=[],i=0,M=4.G;i<M;i++){3 c=4[i];3 v=$.18(c,a);2(v===F||S v==\'12\'||(v.1r==15&&!v.G))1H;v.1r==15?$.3V(b,v):b.D(v)}6 b};$.18=5(b,c){3 n=b.7,t=b.H,1a=b.1p.1I();2(S c==\'12\')c=Q;2(c&&(!n||b.1i||t==\'1m\'||t==\'3W\'||(t==\'1J\'||t==\'1K\')&&!b.1L||(t==\'9\'||t==\'X\')&&b.C&&b.C.U!=b||1a==\'13\'&&b.1M==-1))6 F;2(1a==\'13\'){3 d=b.1M;2(d<0)6 F;3 a=[],1N=b.3X;3 e=(t==\'13-2I\');3 f=(e?d+1:1N.G);K(3 i=(e?d:0);i<f;i++){3 g=1N[i];2(g.1t){3 v=g.8;2(!v)v=(g.1O&&g.1O[\'8\']&&!(g.1O[\'8\'].3Y))?g.1G:g.8;2(e)6 v;a.D(v)}}6 a}6 b.8};$.B.1Y=5(){6 4.P(5(){$(\'W,13,1F\',4).2J()})};$.B.2J=$.B.3Z=5(){6 4.P(5(){3 t=4.H,1a=4.1p.1I();2(t==\'1G\'||t==\'40\'||1a==\'1F\')4.8=\'\';E 2(t==\'1J\'||t==\'1K\')4.1L=I;E 2(1a==\'13\')4.1M=-1})};$.B.1X=5(){6 4.P(5(){2(S 4.1m==\'5\'||(S 4.1m==\'41\'&&!4.1m.42))4.1m()})};$.B.43=5(b){2(b==12)b=Q;6 4.P(5(){4.1i=!b})};$.B.2K=5(b){2(b==12)b=Q;6 4.P(5(){3 t=4.H;2(t==\'1J\'||t==\'1K\')4.1L=b;E 2(4.1p.1I()==\'2L\'){3 a=$(4).44(\'13\');2(b&&a[0]&&a[0].H==\'13-2I\'){a.45(\'2L\').2K(I)}4.1t=b}})};5 R(){2($.B.1s.46&&1d.1P&&1d.1P.R)1d.1P.R(\'[47.C] \'+15.48.49.4a(1Z,\'\'))}})(4b);',62,260,'||if|var|this|function|return|name|value|submit||||||||||||||||||||||||||||fn|form|push|else|null|length|type|false|data|for|trigger|max|doc|extraData|each|true|log|typeof|success|clk|callbacks|input|image|clk_x|clk_y||cb|undefined|select|attr|Array|dataType|target|a_fieldValue|responseText|tag|ajaxSubmit|action|window|url|aborted|responseXML|event|disabled|setTimeout|setAttribute|body|reset|extend|via|tagName|plugin|constructor|a_ajaxSubmit|selected|method|beforeSerialize|a_formToArray|in|beforeSubmit|param|fileUpload|new|active|timeout|getElementsByTagName|textarea|text|continue|toLowerCase|checkbox|radio|checked|selectedIndex|ops|attributes|console|GET|pre|serialize|veto|vetoed|callback|validate|a_resetForm|a_clearForm|arguments|iframe|closeKeepAlive|elements|ajaxSettings|src|about|blank|top|1000px|left|getResponseHeader|global|beforeSend|getAttribute|POST|multipart|try|appendTo|attachEvent|onload|load|remove|detachEvent|contentWindow|document|contentDocument|innerHTML|100|XMLDocument|xml|toXml|error|complete|ActiveXObject|documentElement|a_ajaxFormUnbind|bind|click|offsetX|offset|pageX|pageY|unbind|jmax|one|a_clearFields|a_selected|option|skipping|process|no|element|location|href|match|semantic|instanceof|toUpperCase|indexOf|resetForm|clearForm|html|apply|file|get|ajax|notify|alert|Error|Form|must|not|be|named|jqFormIO|Date|getTime|id|css|position|absolute|status|statusText|getAllResponseHeaders|setRequestHeader|abort|ajaxStart|ajaxSend|skipEncodingOverride|encoding|enctype|hidden|addEventListener|finally|removeAttr|removeEventListener|throw|content|json|script|httpData|catch|handleError|ajaxSuccess|ajaxComplete|ajaxStop|Microsoft|XMLDOM|async|loadXML|DOMParser|parseFromString|parsererror|a_ajaxForm|offsetY|offsetLeft|offsetTop|a_formSerialize|a_fieldSerialize|merge|button|options|specified|a_clearInputs|password|object|nodeType|a_enable|parent|find|debug|jquery|prototype|join|call|jQuery'.split('|'),0,{}));
/**
 * Automatic ajax validation
 *
 * @see http://drupal.org/project/ajax
 * @see irc://freenode.net/#drupy
 * @depends Drupal 6
 * @author brendoncrawford
 * @note This file uses a 79 character width limit.
 * 
 *
 */

Drupal.Ajax = new Object;

Drupal.Ajax.plugins = {};

Drupal.Ajax.firstRun = false;

/**
 * Init function.
 * This is being executed by Drupal behaviours.
 * See bottom of script.
 * 
 * @param {HTMLElement} context
 * @return {Bool}
 */
Drupal.Ajax.init = function(context) {
  var f, s;
  if (f = $('.ajax-form', context)) {
    if (!Drupal.Ajax.firstRun) {
      Drupal.Ajax.invoke('init');
      Drupal.Ajax.firstRun = true;
    }
    s = $('input[type="submit"]', f);
    s.click(function(){
      this.form.ajax_activator = $(this);
      return true;
    });
    f.each(function(){
      this.ajax_activator = null;
      $(this).submit(function(){
        if (this.ajax_activator === null) {
          this.ajax_activator = $('#edit-submit', this);
        }
        if (this.ajax_activator.hasClass('ajax-trigger')) {
          Drupal.Ajax.go($(this), this.ajax_activator);
          return false;
        }
        else {
          return true;
        }
      });
      return true;
    });
  }
  return true;
};

/**
 * Invokes plugins
 * 
 * @param {Object} formObj
 * @param {Object} submitter
 */
Drupal.Ajax.invoke = function(hook, args) {
  var plugin, r, ret;
  ret = true;
  for (plugin in Drupal.Ajax.plugins) {
    r = Drupal.Ajax.plugins[plugin](hook, args);
    if (r === false) {
      ret = false;
    }
  }
  return ret;
};

/**
 * Handles submission
 * 
 * @param {Object} submitter_
 * @return {Bool}
 */
Drupal.Ajax.go = function(formObj, submitter) {
  var submitterVal, submitterName, extraData;
  Drupal.Ajax.invoke('submit', {submitter:submitter});
  submitterVal = submitter.val();
  submitterName = submitter.attr('name');
  submitter.val(Drupal.t('Loading...'));
  extraData = {};
  extraData[submitterName] = submitterVal;
  extraData['drupal_ajax'] = '1';
  formObj.a_ajaxSubmit({
    extraData : extraData,
    beforeSubmit : function(data) {
      data[data.length] = {
        name : submitterName,
        value : submitterVal
      };
      data[data.length] = {
        name : 'drupal_ajax',
        value : '1'
      };
      return true;
    },
    dataType : 'json',
    error: function (XMLHttpRequest, textStatus, errorThrown) {
      window.alert(Drupal.t('ajax.module: An unknown error has occurred.'));
      if (window.console) {
        console.log('error', arguments);
      }
      return true;
    },
    success: function(data){
      submitter.val(submitterVal);
      Drupal.Ajax.response(submitter, formObj, data);
      return true;
    }
  });
  return false;
};

/**
 * Handles scroller
 * 
 * @param {Object} submitter
 * @return {Bool}
 */
Drupal.Ajax.scroller = function(submitter) {
  var scroll_weight, box, found, timer;
  scroll_weight = 100;
  timer = window.setInterval(function() {
    box = submitter;
    found = false;
    // Watch for thickbox
    while (box.parentNode !== null &&
        Drupal.Ajax.invoke('scrollFind', {container:box})) {
      box = box.parentNode;
      // Document
      if (box === document) {
        if (box.documentElement.scrollTop &&
            box.documentElement.scrollTop > 0) {
          box.documentElement.scrollTop -= scroll_weight;
          found = true;
        }
      }
      // Body
      else if (box === document.body) {
        if (box.scrollTop &&
            box.scrollTop > 0) {
          box.scrollTop -= scroll_weight;
          found = true;
        }
      }
      // Window
      else if (box === window) {
        if ((window.pageYOffset && window.pageYOffset > 0) ||
            (window.scrollY && window.scrollY > 0)) {
          window.scrollBy(0, -scroll_weight);
          found = true;
        }
      }
      // Any other element
      else {
        if (box.scrollTop &&
            box.scrollTop > 0) {
          box.scrollTop -= scroll_weight;
          found = true;
        }
      }
    }
    // Check if completed
    if (!found) {
      window.clearInterval(timer);
    }
    return true;
  }, 100);
  return true;
};

/**
 * Handles messaging
 * 
 * @param {Object} formObj
 * @param {Object} submitter
 * @param {Object} data
 * @param {Object} options
 * @return {Bool}
 */
Drupal.Ajax.message = function(formObj, submitter, data, options) {
  var args;
  args = {
    formObj : formObj,
    submitter : submitter,
    data : data,
    options : options
  };
  if (Drupal.Ajax.invoke('message', args)) {
    Drupal.Ajax.writeMessage(args.formObj, args.submitter, args.options);
  }
  return true;
};

/**
 * Writes message
 * 
 * @param {Object} formObj
 * @param {Object} submitter
 * @param {Object} options
 * @return {Bool}
 */
Drupal.Ajax.writeMessage = function(formObj, submitter, options) {
  var i, _i, thisItem, log, errBox, h;
  if (options.action === 'notify') {
    // Cleanups
    $('.messages, .ajax-preview', formObj).remove();
    $('input, textarea').removeClass('error status warning required');
    // Preview
    if (options.type === 'preview') {
      log = $('<div>').addClass('ajax-preview');
      log.html(options.messages);
      formObj.prepend(log);
    }
    // Status, Error, Message
    else {
      log = $('<ul>');
      errBox = $(".messages." + options.type, formObj[0])
      for (i = 0, _i = options.messages.length; i < _i; i++) {
        thisItem = $('#' + options.messages[i].id, formObj[0])
        thisItem.addClass(options.type);
        if (options.messages[i].required) {
          thisItem.addClass('required');
        }
        log.append('<li>' + options.messages[i].value + '</li>');
      }
      if (errBox.length === 0) {
        errBox = $("<div class='messages " + options.type + "'>");
        formObj.prepend(errBox);
      }
      errBox.html(log);
    }
  }
  else if (options.action === 'clear') {
    $('.messages, .ajax-preview', formObj).remove();
  }
  Drupal.Ajax.scroller(submitter[0]);
  return true;
};

/**
 * Updates message containers
 * 
 * @param {Object} updaters
 * @return {Bool}
 */
Drupal.Ajax.updater = function(updaters) {
  var i, _i, elm;
  for (i = 0, _i = updaters.length; i < _i; i++) {
    elm = $(updaters[i].selector);
    // HTML:IN
    if (updaters[i].type === 'html_in') {
      elm.html(updaters[i].value);
    }
    // HTML:OUT
    else if (updaters[i].type === 'html_out') {
      elm.replaceWith(updaters[i].value);
    }
    // FIELD
    else if (updaters[i].type === 'field') {
      elm.val(updaters[i].value);
    }
    // REMOVE
    else if(updaters[i].type === 'remove') {
      elm.remove();
    }
  }
  return true;
};

/**
 * Handles data response
 * 
 * @param {Object} submitter
 * @param {Object} formObj
 * @param {Object} data
 * @return {Bool}
 */
Drupal.Ajax.response = function(submitter, formObj, data){
  var newSubmitter;
  data.local = {
    submitter : submitter,
    form : formObj
  };
  /**
   * Failure
   */
  if (data.status === false) {
    Drupal.Ajax.updater(data.updaters);
    Drupal.Ajax.message(formObj, submitter, data, {
      action : 'notify',
      messages : data.messages_error,
      type : 'error'
    });
  }
  /**
   * Success
   */
  else {
    // Display preview
    if (data.preview !== null) {
      Drupal.Ajax.updater(data.updaters);
      Drupal.Ajax.message(formObj, submitter, data, {
        action : 'notify',
        messages : decodeURIComponent(data.preview),
        type : 'preview'
      });
    }
    // If no redirect, then simply show messages
    else if (data.redirect === null) {
      if (data.messages_status.length > 0) {
        Drupal.Ajax.message(formObj, submitter, data, {
          action : 'notify',
          messages : data.messages_status,
          type : 'status'
        });
      }
      if (data.messages_warning.length > 0) {
        Drupal.Ajax.message(formObj, submitter, data, {
          action : 'notify',
          messages : data.messages_warning,
          type : 'warning'
        });
      }
      if (data.messages_status.length === 0 &&
          data.messages_warning.length === 0) {
        Drupal.Ajax.message(formObj, submitter, data, {action:'clear'});
      }
    }
    // Redirect
    else {
      if (Drupal.Ajax.invoke('complete', data)) {
        Drupal.Ajax.redirect( data.redirect );
      }
      else {
        Drupal.Ajax.updater(data.updaters);
        if (data.messages_status.length === 0 &&
            data.messages_warning.length === 0) {
          Drupal.Ajax.message(formObj, submitter, data, {action:'clear'});
        }
        else {
          Drupal.Ajax.message(formObj, submitter, data, {
            action : 'notify',
            messages : data.messages_status,
            type : 'status'
          });
        }
      }
    }
  }
  return true;
};


/**
 * Redirects to appropriate page
 * 
 * @todo
 *   Some of this functionality should possibly hapen on
 *   the server instead of client.
 * @param {String} url
 */
Drupal.Ajax.redirect = function(url) {
  window.location.href = url;
};

Drupal.behaviors.Ajax = Drupal.Ajax.init;


;
$(document).ready(function(){


$('#regions-map ul.taxonomy-tree li a').click(function(){
    //$('#events-in-area .pane-content').load($(this).attr('href') + " #content");
    //return false; //to avoid refresh
});


if( jQuery.isFunction(jQuery.fn.accordion) ){
	panel = $('#taxonomy_accordion_7 .active').closest('div').prev('h3');
	if(panel.length) { $("#taxonomy_accordion_7").accordion({active:panel}) }
}




});;
/*!
 * Copyright (c) 2011 Simo Kinnunen.
 * Licensed under the MIT license.
 *
 * @version ${Version}
 */

var Cufon = (function() {

	var api = function() {
		return api.replace.apply(null, arguments);
	};

	var DOM = api.DOM = {

		ready: (function() {

			var complete = false, readyStatus = { loaded: 1, complete: 1 };

			var queue = [], perform = function() {
				if (complete) return;
				complete = true;
				for (var fn; fn = queue.shift(); fn());
			};

			// Gecko, Opera, WebKit r26101+

			if (document.addEventListener) {
				document.addEventListener('DOMContentLoaded', perform, false);
				window.addEventListener('pageshow', perform, false); // For cached Gecko pages
			}

			// Old WebKit, Internet Explorer

			if (!window.opera && document.readyState) (function() {
				readyStatus[document.readyState] ? perform() : setTimeout(arguments.callee, 10);
			})();

			// Internet Explorer

			if (document.readyState && document.createStyleSheet) (function() {
				try {
					document.body.doScroll('left');
					perform();
				}
				catch (e) {
					setTimeout(arguments.callee, 1);
				}
			})();

			addEvent(window, 'load', perform); // Fallback

			return function(listener) {
				if (!arguments.length) perform();
				else complete ? listener() : queue.push(listener);
			};

		})(),

		root: function() {
			return document.documentElement || document.body;
		},

		strict: (function() {
			var doctype;
			// no doctype (doesn't always catch it though.. IE I'm looking at you)
			if (document.compatMode == 'BackCompat') return false;
			// WebKit, Gecko, Opera, IE9+
			doctype = document.doctype;
			if (doctype) {
				return !/frameset|transitional/i.test(doctype.publicId);
			}
			// IE<9, firstChild is the doctype even if there's an XML declaration
			doctype = document.firstChild;
			if (doctype.nodeType != 8 || /^DOCTYPE.+(transitional|frameset)/i.test(doctype.data)) {
				return false;
			}
			return true;
		})()

	};

	var CSS = api.CSS = {

		Size: function(value, base) {

			this.value = parseFloat(value);
			this.unit = String(value).match(/[a-z%]*$/)[0] || 'px';

			this.convert = function(value) {
				return value / base * this.value;
			};

			this.convertFrom = function(value) {
				return value / this.value * base;
			};

			this.toString = function() {
				return this.value + this.unit;
			};

		},

		addClass: function(el, className) {
			var current = el.className;
			el.className = current + (current && ' ') + className;
			return el;
		},

		color: cached(function(value) {
			var parsed = {};
			parsed.color = value.replace(/^rgba\((.*?),\s*([\d.]+)\)/, function($0, $1, $2) {
				parsed.opacity = parseFloat($2);
				return 'rgb(' + $1 + ')';
			});
			return parsed;
		}),

		// has no direct CSS equivalent.
		// @see http://msdn.microsoft.com/en-us/library/system.windows.fontstretches.aspx
		fontStretch: cached(function(value) {
			if (typeof value == 'number') return value;
			if (/%$/.test(value)) return parseFloat(value) / 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
			}[value] || 1;
		}),

		getStyle: function(el) {
			var view = document.defaultView;
			if (view && view.getComputedStyle) return new Style(view.getComputedStyle(el, null));
			if (el.currentStyle) return new Style(el.currentStyle);
			return new Style(el.style);
		},

		gradient: cached(function(value) {
			var gradient = {
				id: value,
				type: value.match(/^-([a-z]+)-gradient\(/)[1],
				stops: []
			}, colors = value.substr(value.indexOf('(')).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);
			for (var i = 0, l = colors.length, stop; i < l; ++i) {
				stop = colors[i].split('=', 2).reverse();
				gradient.stops.push([ stop[1] || i / (l - 1), stop[0] ]);
			}
			return gradient;
		}),

		quotedList: cached(function(value) {
			// doesn't work properly with empty quoted strings (""), but
			// it's not worth the extra code.
			var list = [], re = /\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g, match;
			while (match = re.exec(value)) list.push(match[3] || match[1]);
			return list;
		}),

		recognizesMedia: cached(function(media) {
			var el = document.createElement('style'), sheet, container, supported;
			el.type = 'text/css';
			el.media = media;
			try { // this is cached anyway
				el.appendChild(document.createTextNode('/**/'));
			} catch (e) {}
			container = elementsByTagName('head')[0];
			container.insertBefore(el, container.firstChild);
			sheet = (el.sheet || el.styleSheet);
			supported = sheet && !sheet.disabled;
			container.removeChild(el);
			return supported;
		}),

		removeClass: function(el, className) {
			var re = RegExp('(?:^|\\s+)' + className +  '(?=\\s|$)', 'g');
			el.className = el.className.replace(re, '');
			return el;
		},

		supports: function(property, value) {
			var checker = document.createElement('span').style;
			if (checker[property] === undefined) return false;
			checker[property] = value;
			return checker[property] === value;
		},

		textAlign: function(word, style, position, wordCount) {
			if (style.get('textAlign') == 'right') {
				if (position > 0) word = ' ' + word;
			}
			else if (position < wordCount - 1) word += ' ';
			return word;
		},

		textShadow: cached(function(value) {
			if (value == 'none') return null;
			var shadows = [], currentShadow = {}, result, offCount = 0;
			var re = /(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;
			while (result = re.exec(value)) {
				if (result[0] == ',') {
					shadows.push(currentShadow);
					currentShadow = {};
					offCount = 0;
				}
				else if (result[1]) {
					currentShadow.color = result[1];
				}
				else {
					currentShadow[[ 'offX', 'offY', 'blur' ][offCount++]] = result[2];
				}
			}
			shadows.push(currentShadow);
			return shadows;
		}),

		textTransform: (function() {
			var map = {
				uppercase: function(s) {
					return s.toUpperCase();
				},
				lowercase: function(s) {
					return s.toLowerCase();
				},
				capitalize: function(s) {
					return s.replace(/(?:^|\s)./g, function($0) {
						return $0.toUpperCase();
					});
				}
			};
			return function(text, style) {
				var transform = map[style.get('textTransform')];
				return transform ? transform(text) : text;
			};
		})(),

		whiteSpace: (function() {
			var ignore = {
				inline: 1,
				'inline-block': 1,
				'run-in': 1
			};
			var wsStart = /^\s+/, wsEnd = /\s+$/;
			return function(text, style, node, previousElement, simple) {
				if (simple) return text.replace(wsStart, '').replace(wsEnd, ''); // @fixme too simple
				if (previousElement) {
					if (previousElement.nodeName.toLowerCase() == 'br') {
						text = text.replace(wsStart, '');
					}
				}
				if (ignore[style.get('display')]) return text;
				if (!node.previousSibling) text = text.replace(wsStart, '');
				if (!node.nextSibling) text = text.replace(wsEnd, '');
				return text;
			};
		})()

	};

	CSS.ready = (function() {

		// don't do anything in Safari 2 (it doesn't recognize any media type)
		var complete = !CSS.recognizesMedia('all'), hasLayout = false;

		var queue = [], perform = function() {
			complete = true;
			for (var fn; fn = queue.shift(); fn());
		};

		var links = elementsByTagName('link'), styles = elementsByTagName('style');

		var checkTypes = {
			'': 1,
			'text/css': 1
		};

		function isContainerReady(el) {
			if (!checkTypes[el.type.toLowerCase()]) return true;
			return el.disabled || isSheetReady(el.sheet, el.media || 'screen');
		}

		function isSheetReady(sheet, media) {
			// in Opera sheet.disabled is true when it's still loading,
			// even though link.disabled is false. they stay in sync if
			// set manually.
			if (!CSS.recognizesMedia(media || 'all')) return true;
			if (!sheet || sheet.disabled) return false;
			try {
				var rules = sheet.cssRules, rule;
				if (rules) {
					// needed for Safari 3 and Chrome 1.0.
					// in standards-conforming browsers cssRules contains @-rules.
					// Chrome 1.0 weirdness: rules[<number larger than .length - 1>]
					// returns the last rule, so a for loop is the only option.
					search: for (var i = 0, l = rules.length; rule = rules[i], i < l; ++i) {
						switch (rule.type) {
							case 2: // @charset
								break;
							case 3: // @import
								if (!isSheetReady(rule.styleSheet, rule.media.mediaText)) return false;
								break;
							default:
								// only @charset can precede @import
								break search;
						}
					}
				}
			}
			catch (e) {} // probably a style sheet from another domain
			return true;
		}

		function allStylesLoaded() {
			// Internet Explorer's style sheet model, there's no need to do anything
			if (document.createStyleSheet) return true;
			// standards-compliant browsers
			var el, i;
			for (i = 0; el = links[i]; ++i) {
				if (el.rel.toLowerCase() == 'stylesheet' && !isContainerReady(el)) return false;
			}
			for (i = 0; el = styles[i]; ++i) {
				if (!isContainerReady(el)) return false;
			}
			return true;
		}

		DOM.ready(function() {
			// getComputedStyle returns null in Gecko if used in an iframe with display: none
			if (!hasLayout) hasLayout = CSS.getStyle(document.body).isUsable();
			if (complete || (hasLayout && allStylesLoaded())) perform();
			else setTimeout(arguments.callee, 10);
		});

		return function(listener) {
			if (complete) listener();
			else queue.push(listener);
		};

	})();

	function Font(data) {

		var face = this.face = data.face, wordSeparators = {
			'\u0020': 1,
			'\u00a0': 1,
			'\u3000': 1
		};

		this.glyphs = (function(glyphs) {
			var key, fallbacks = {
				'\u2011': '\u002d',
				'\u00ad': '\u2011'
			};
			for (key in fallbacks) {
				if (!hasOwnProperty(fallbacks, key)) continue;
				if (!glyphs[key]) glyphs[key] = glyphs[fallbacks[key]];
			}
			return glyphs;
		})(data.glyphs);

		this.w = data.w;
		this.baseSize = parseInt(face['units-per-em'], 10);

		this.family = face['font-family'].toLowerCase();
		this.weight = face['font-weight'];
		this.style = face['font-style'] || 'normal';

		this.viewBox = (function () {
			var parts = face.bbox.split(/\s+/);
			var box = {
				minX: parseInt(parts[0], 10),
				minY: parseInt(parts[1], 10),
				maxX: parseInt(parts[2], 10),
				maxY: parseInt(parts[3], 10)
			};
			box.width = box.maxX - box.minX;
			box.height = box.maxY - box.minY;
			box.toString = function() {
				return [ this.minX, this.minY, this.width, this.height ].join(' ');
			};
			return box;
		})();

		this.ascent = -parseInt(face.ascent, 10);
		this.descent = -parseInt(face.descent, 10);

		this.height = -this.ascent + this.descent;

		this.spacing = function(chars, letterSpacing, wordSpacing) {
			var glyphs = this.glyphs, glyph,
				kerning, k,
				jumps = [],
				width = 0, w,
				i = -1, j = -1, chr;
			while (chr = chars[++i]) {
				glyph = glyphs[chr] || this.missingGlyph;
				if (!glyph) continue;
				if (kerning) {
					width -= k = kerning[chr] || 0;
					jumps[j] -= k;
				}
				w = glyph.w;
				if (isNaN(w)) w = +this.w; // may have been a String in old fonts
				if (w > 0) {
					w += letterSpacing;
					if (wordSeparators[chr]) w += wordSpacing;
				}
				width += jumps[++j] = ~~w; // get rid of decimals
				kerning = glyph.k;
			}
			jumps.total = width;
			return jumps;
		};

	}

	function FontFamily() {

		var styles = {}, mapping = {
			oblique: 'italic',
			italic: 'oblique'
		};

		this.add = function(font) {
			(styles[font.style] || (styles[font.style] = {}))[font.weight] = font;
		};

		this.get = function(style, weight) {
			var weights = styles[style] || styles[mapping[style]]
				|| styles.normal || styles.italic || styles.oblique;
			if (!weights) return null;
			// we don't have to worry about "bolder" and "lighter"
			// because IE's currentStyle returns a numeric value for it,
			// and other browsers use the computed value anyway
			weight = {
				normal: 400,
				bold: 700
			}[weight] || parseInt(weight, 10);
			if (weights[weight]) return weights[weight];
			// http://www.w3.org/TR/CSS21/fonts.html#propdef-font-weight
			// Gecko uses x99/x01 for lighter/bolder
			var up = {
				1: 1,
				99: 0
			}[weight % 100], alts = [], min, max;
			if (up === undefined) up = weight > 400;
			if (weight == 500) weight = 400;
			for (var alt in weights) {
				if (!hasOwnProperty(weights, alt)) continue;
				alt = parseInt(alt, 10);
				if (!min || alt < min) min = alt;
				if (!max || alt > max) max = alt;
				alts.push(alt);
			}
			if (weight < min) weight = min;
			if (weight > max) weight = max;
			alts.sort(function(a, b) {
				return (up
					? (a >= weight && b >= weight) ? a < b : a > b
					: (a <= weight && b <= weight) ? a > b : a < b) ? -1 : 1;
			});
			return weights[alts[0]];
		};

	}

	function HoverHandler() {

		function contains(node, anotherNode) {
			try {
				if (node.contains) return node.contains(anotherNode);
				return node.compareDocumentPosition(anotherNode) & 16;
			}
			catch(e) {} // probably a XUL element such as a scrollbar
			return false;
		}

		// mouseover/mouseout (standards) mode
		function onOverOut(e) {
			var related = e.relatedTarget;
			// there might be no relatedTarget if the element is right next
			// to the window frame
			if (related && contains(this, related)) return;
			trigger(this, e.type == 'mouseover');
		}

		// mouseenter/mouseleave (probably ie) mode
		function onEnterLeave(e) {
			if (!e) e = window.event;
			// ie model, we don't have access to "this", but
			// mouseenter/leave doesn't bubble so it's fine.
			trigger(e.target || e.srcElement, e.type == 'mouseenter');
		}

		function trigger(el, hoverState) {
			// A timeout is needed so that the event can actually "happen"
			// before replace is triggered. This ensures that styles are up
			// to date.
			setTimeout(function() {
				var options = sharedStorage.get(el).options;
				if (hoverState) {
					options = merge(options, options.hover);
					options._mediatorMode = 1;
				}
				api.replace(el, options, true);
			}, 10);
		}

		this.attach = function(el) {
			if (el.onmouseenter === undefined) {
				addEvent(el, 'mouseover', onOverOut);
				addEvent(el, 'mouseout', onOverOut);
			}
			else {
				addEvent(el, 'mouseenter', onEnterLeave);
				addEvent(el, 'mouseleave', onEnterLeave);
			}
		};

		this.detach = function(el) {
			if (el.onmouseenter === undefined) {
				removeEvent(el, 'mouseover', onOverOut);
				removeEvent(el, 'mouseout', onOverOut);
			}
			else {
				removeEvent(el, 'mouseenter', onEnterLeave);
				removeEvent(el, 'mouseleave', onEnterLeave);
			}
		};

	}

	function ReplaceHistory() {

		var list = [], map = {};

		function filter(keys) {
			var values = [], key;
			for (var i = 0; key = keys[i]; ++i) values[i] = list[map[key]];
			return values;
		}

		this.add = function(key, args) {
			map[key] = list.push(args) - 1;
		};

		this.repeat = function() {
			var snapshot = arguments.length ? filter(arguments) : list, args;
			for (var i = 0; args = snapshot[i++];) api.replace(args[0], args[1], true);
		};

	}

	function Storage() {

		var map = {}, at = 0;

		function identify(el) {
			return el.cufid || (el.cufid = ++at);
		}

		this.get = function(el) {
			var id = identify(el);
			return map[id] || (map[id] = {});
		};

	}

	function Style(style) {

		var custom = {}, sizes = {};

		this.extend = function(styles) {
			for (var property in styles) {
				if (hasOwnProperty(styles, property)) custom[property] = styles[property];
			}
			return this;
		};

		this.get = function(property) {
			return custom[property] != undefined ? custom[property] : style[property];
		};

		this.getSize = function(property, base) {
			return sizes[property] || (sizes[property] = new CSS.Size(this.get(property), base));
		};

		this.isUsable = function() {
			return !!style;
		};

	}

	function addEvent(el, type, listener) {
		if (el.addEventListener) {
			el.addEventListener(type, listener, false);
		}
		else if (el.attachEvent) {
			// we don't really need "this" right now, saves code
			el.attachEvent('on' + type, listener);
		}
	}

	function attach(el, options) {
		if (options._mediatorMode) return el;
		var storage = sharedStorage.get(el);
		var oldOptions = storage.options;
		if (oldOptions) {
			if (oldOptions === options) return el;
			if (oldOptions.hover) hoverHandler.detach(el);
		}
		if (options.hover && options.hoverables[el.nodeName.toLowerCase()]) {
			hoverHandler.attach(el);
		}
		storage.options = options;
		return el;
	}

	function cached(fun) {
		var cache = {};
		return function(key) {
			if (!hasOwnProperty(cache, key)) cache[key] = fun.apply(null, arguments);
			return cache[key];
		};
	}

	function getFont(el, style) {
		var families = CSS.quotedList(style.get('fontFamily').toLowerCase()), family;
		for (var i = 0; family = families[i]; ++i) {
			if (fonts[family]) return fonts[family].get(style.get('fontStyle'), style.get('fontWeight'));
		}
		return null;
	}

	function elementsByTagName(query) {
		return document.getElementsByTagName(query);
	}

	function hasOwnProperty(obj, property) {
		return obj.hasOwnProperty(property);
	}

	function merge() {
		var merged = {}, arg, key;
		for (var i = 0, l = arguments.length; arg = arguments[i], i < l; ++i) {
			for (key in arg) {
				if (hasOwnProperty(arg, key)) merged[key] = arg[key];
			}
		}
		return merged;
	}

	function process(font, text, style, options, node, el) {
		var fragment = document.createDocumentFragment(), processed;
		if (text === '') return fragment;
		var separate = options.separate;
		var parts = text.split(separators[separate]), needsAligning = (separate == 'words');
		if (needsAligning && HAS_BROKEN_REGEXP) {
			// @todo figure out a better way to do this
			if (/^\s/.test(text)) parts.unshift('');
			if (/\s$/.test(text)) parts.push('');
		}
		for (var i = 0, l = parts.length; i < l; ++i) {
			processed = engines[options.engine](font,
				needsAligning ? CSS.textAlign(parts[i], style, i, l) : parts[i],
				style, options, node, el, i < l - 1);
			if (processed) fragment.appendChild(processed);
		}
		return fragment;
	}

	function removeEvent(el, type, listener) {
		if (el.removeEventListener) {
			el.removeEventListener(type, listener, false);
		}
		else if (el.detachEvent) {
			el.detachEvent('on' + type, listener);
		}
	}

	function replaceElement(el, options) {
		var name = el.nodeName.toLowerCase();
		if (options.ignore[name]) return;
		if (options.ignoreClass && options.ignoreClass.test(el.className)) return;
		if (options.onBeforeReplace) options.onBeforeReplace(el, options);
		var replace = !options.textless[name], simple = (options.trim === 'simple');
		var style = CSS.getStyle(attach(el, options)).extend(options);
		// may cause issues if the element contains other elements
		// with larger fontSize, however such cases are rare and can
		// be fixed by using a more specific selector
		if (parseFloat(style.get('fontSize')) === 0) return;
		var font = getFont(el, style), node, type, next, anchor, text, lastElement;
		var isShy = options.softHyphens, anyShy = false, pos, shy, reShy = /\u00ad/g;
		var modifyText = options.modifyText;
		if (!font) return;
		for (node = el.firstChild; node; node = next) {
			type = node.nodeType;
			next = node.nextSibling;
			if (replace && type == 3) {
				if (isShy && el.nodeName.toLowerCase() != TAG_SHY) {
					pos = node.data.indexOf('\u00ad');
					if (pos >= 0) {
						node.splitText(pos);
						next = node.nextSibling;
						next.deleteData(0, 1);
						shy = document.createElement(TAG_SHY);
						shy.appendChild(document.createTextNode('\u00ad'));
						el.insertBefore(shy, next);
						next = shy;
						anyShy = true;
					}
				}
				// Node.normalize() is broken in IE 6, 7, 8
				if (anchor) {
					anchor.appendData(node.data);
					el.removeChild(node);
				}
				else anchor = node;
				if (next) continue;
			}
			if (anchor) {
				text = anchor.data;
				if (!isShy) text = text.replace(reShy, '');
				text = CSS.whiteSpace(text, style, anchor, lastElement, simple);
				// modify text only on the first replace
				if (modifyText) text = modifyText(text, anchor, el, options);
				el.replaceChild(process(font, text, style, options, node, el), anchor);
				anchor = null;
			}
			if (type == 1) {
				if (node.firstChild) {
					if (node.nodeName.toLowerCase() == 'cufon') {
						engines[options.engine](font, null, style, options, node, el);
					}
					else arguments.callee(node, options);
				}
				lastElement = node;
			}
		}
		if (isShy && anyShy) {
			updateShy(el);
			if (!trackingShy) addEvent(window, 'resize', updateShyOnResize);
			trackingShy = true;
		}
		if (options.onAfterReplace) options.onAfterReplace(el, options);
	}

	function updateShy(context) {
		var shys, shy, parent, glue, newGlue, next, prev, i;
		shys = context.getElementsByTagName(TAG_SHY);
		// unfortunately there doesn't seem to be any easy
		// way to avoid having to loop through the shys twice.
		for (i = 0; shy = shys[i]; ++i) {
			shy.className = C_SHY_DISABLED;
			glue = parent = shy.parentNode;
			if (glue.nodeName.toLowerCase() != TAG_GLUE) {
				newGlue = document.createElement(TAG_GLUE);
				newGlue.appendChild(shy.previousSibling);
				parent.insertBefore(newGlue, shy);
				newGlue.appendChild(shy);
			}
			else {
				// get rid of double glue (edge case fix)
				glue = glue.parentNode;
				if (glue.nodeName.toLowerCase() == TAG_GLUE) {
					parent = glue.parentNode;
					while (glue.firstChild) {
						parent.insertBefore(glue.firstChild, glue);
					}
					parent.removeChild(glue);
				}
			}
		}
		for (i = 0; shy = shys[i]; ++i) {
			shy.className = '';
			glue = shy.parentNode;
			parent = glue.parentNode;
			next = glue.nextSibling || parent.nextSibling;
			// make sure we're comparing same types
			prev = (next.nodeName.toLowerCase() == TAG_GLUE) ? glue : shy.previousSibling;
			if (prev.offsetTop >= next.offsetTop) {
				shy.className = C_SHY_DISABLED;
				if (prev.offsetTop < next.offsetTop) {
					// we have an annoying edge case, double the glue
					newGlue = document.createElement(TAG_GLUE);
					parent.insertBefore(newGlue, glue);
					newGlue.appendChild(glue);
					newGlue.appendChild(next);
				}
			}
		}
	}

	function updateShyOnResize() {
		if (ignoreResize) return; // needed for IE
		CSS.addClass(DOM.root(), C_VIEWPORT_RESIZING);
		clearTimeout(shyTimer);
		shyTimer = setTimeout(function() {
			ignoreResize = true;
			CSS.removeClass(DOM.root(), C_VIEWPORT_RESIZING);
			updateShy(document);
			ignoreResize = false;
		}, 100);
	}

	var HAS_BROKEN_REGEXP = ' '.split(/\s+/).length == 0;
	var TAG_GLUE = 'cufonglue';
	var TAG_SHY = 'cufonshy';
	var C_SHY_DISABLED = 'cufon-shy-disabled';
	var C_VIEWPORT_RESIZING = 'cufon-viewport-resizing';

	var sharedStorage = new Storage();
	var hoverHandler = new HoverHandler();
	var replaceHistory = new ReplaceHistory();
	var initialized = false;
	var trackingShy = false;
	var shyTimer;
	var ignoreResize = false;

	var engines = {}, fonts = {}, defaultOptions = {
		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,
			noscript: 1,
			optgroup: 1,
			option: 1,
			script: 1,
			select: 1,
			style: 1,
			textarea: 1,
			title: 1,
			pre: 1
		},
		ignoreClass: null,
		modifyText: null,
		onAfterReplace: null,
		onBeforeReplace: null,
		printable: true,
		selector: (
				window.Sizzle
			||	(window.jQuery && function(query) { return jQuery(query); }) // avoid noConflict issues
			||	(window.dojo && dojo.query)
			||	(window.glow && glow.dom && glow.dom.get)
			||	(window.Ext && Ext.query)
			||	(window.YAHOO && YAHOO.util && YAHOO.util.Selector && YAHOO.util.Selector.query)
			||	(window.$$ && function(query) { return $$(query); })
			||	(window.$ && function(query) { return $(query); })
			||	(document.querySelectorAll && function(query) { return document.querySelectorAll(query); })
			||	elementsByTagName
		),
		separate: 'words', // 'none' and 'characters' are also accepted
		softHyphens: true,
		textless: {
			dl: 1,
			html: 1,
			ol: 1,
			table: 1,
			tbody: 1,
			thead: 1,
			tfoot: 1,
			tr: 1,
			ul: 1
		},
		textShadow: 'none',
		trim: 'advanced'
	};

	var separators = {
		// The first pattern may cause unicode characters above
		// code point 255 to be removed in Safari 3.0. Luckily enough
		// Safari 3.0 does not include non-breaking spaces in \s, so
		// we can just use a simple alternative pattern.
		words: /\s/.test('\u00a0') ? /[^\S\u00a0]+/ : /\s+/,
		characters: '',
		none: /^/
	};

	api.now = function() {
		DOM.ready();
		return api;
	};

	api.refresh = function() {
		replaceHistory.repeat.apply(replaceHistory, arguments);
		return api;
	};

	api.registerEngine = function(id, engine) {
		if (!engine) return api;
		engines[id] = engine;
		return api.set('engine', id);
	};

	api.registerFont = function(data) {
		if (!data) return api;
		var font = new Font(data), family = font.family;
		if (!fonts[family]) fonts[family] = new FontFamily();
		fonts[family].add(font);
		return api.set('fontFamily', '"' + family + '"');
	};

	api.replace = function(elements, options, ignoreHistory) {
		options = merge(defaultOptions, options);
		if (!options.engine) return api; // there's no browser support so we'll just stop here
		if (!initialized) {
			CSS.addClass(DOM.root(), 'cufon-active cufon-loading');
			CSS.ready(function() {
				// fires before any replace() calls, but it doesn't really matter
				CSS.addClass(CSS.removeClass(DOM.root(), 'cufon-loading'), 'cufon-ready');
			});
			initialized = true;
		}
		if (options.hover) options.forceHitArea = true;
		if (options.autoDetect) delete options.fontFamily;
		if (typeof options.ignoreClass == 'string') {
			options.ignoreClass = new RegExp('(?:^|\\s)(?:' + options.ignoreClass.replace(/\s+/g, '|') + ')(?:\\s|$)');
		}
		if (typeof options.textShadow == 'string') {
			options.textShadow = CSS.textShadow(options.textShadow);
		}
		if (typeof options.color == 'string' && /^-/.test(options.color)) {
			options.textGradient = CSS.gradient(options.color);
		}
		else delete options.textGradient;
		if (typeof elements == 'string') {
			if (!ignoreHistory) replaceHistory.add(elements, arguments);
			elements = [ elements ];
		}
		else if (elements.nodeType) elements = [ elements ];
		CSS.ready(function() {
			for (var i = 0, l = elements.length; i < l; ++i) {
				var el = elements[i];
				if (typeof el == 'string') api.replace(options.selector(el), options, true);
				else replaceElement(el, options);
			}
		});
		return api;
	};

	api.set = function(option, value) {
		defaultOptions[option] = value;
		return api;
	};

	return api;

})();

Cufon.registerEngine('vml', (function() {

	var ns = document.namespaces;
	if (!ns) return;
	ns.add('cvml', 'urn:schemas-microsoft-com:vml');
	ns = null;

	var check = document.createElement('cvml:shape');
	check.style.behavior = 'url(#default#VML)';
	if (!check.coordsize) return; // VML isn't supported
	check = null;

	var HAS_BROKEN_LINEHEIGHT = (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:' +
			(HAS_BROKEN_LINEHEIGHT
				? 'middle'
				: 'text-bottom') +
			';}' +
			'cufon cufontext{position:absolute;left:-10000in;font-size:1px;text-align:left;}' +
			'cufonshy.cufon-shy-disabled,.cufon-viewport-resizing cufonshy{display:none;}' +
			'cufonglue{white-space:nowrap;display:inline-block;}' +
			'.cufon-viewport-resizing cufonglue{white-space:normal;}' +
			'a cufon{cursor:pointer}' + // ignore !important here
		'}' +
		'@media print{' +
			'cufon cufoncanvas{display:none;}' +
		'}' +
	'</style>').replace(/;/g, '!important;'));

	function getFontSizeInPixels(el, value) {
		return getSizeInPixels(el, /(?:em|ex|%)$|^[a-z-]+$/i.test(value) ? '1em' : value);
	}

	// Original by Dead Edwards.
	// Combined with getFontSizeInPixels it also works with relative units.
	function getSizeInPixels(el, value) {
		if (!isNaN(value) || /px$/i.test(value)) return parseFloat(value);
		var style = el.style.left, runtimeStyle = el.runtimeStyle.left;
		el.runtimeStyle.left = el.currentStyle.left;
		el.style.left = value.replace('%', 'em');
		var result = el.style.pixelLeft;
		el.style.left = style;
		el.runtimeStyle.left = runtimeStyle;
		return result;
	}

	function getSpacingValue(el, style, size, property) {
		var key = 'computed' + property, value = style[key];
		if (isNaN(value)) {
			value = style.get(property);
			style[key] = value = (value == 'normal') ? 0 : ~~size.convertFrom(getSizeInPixels(el, value));
		}
		return value;
	}

	var fills = {};

	function gradientFill(gradient) {
		var id = gradient.id;
		if (!fills[id]) {
			var stops = gradient.stops, fill = document.createElement('cvml:fill'), colors = [];
			fill.type = 'gradient';
			fill.angle = 180;
			fill.focus = '0';
			fill.method = 'none';
			fill.color = stops[0][1];
			for (var j = 1, k = stops.length - 1; j < k; ++j) {
				colors.push(stops[j][0] * 100 + '% ' + stops[j][1]);
			}
			fill.colors = colors.join(',');
			fill.color2 = stops[k][1];
			fills[id] = fill;
		}
		return fills[id];
	}

	return function(font, text, style, options, node, el, hasNext) {

		var redraw = (text === null);

		if (redraw) text = node.alt;

		var viewBox = font.viewBox;

		var size = style.computedFontSize || (style.computedFontSize = new Cufon.CSS.Size(getFontSizeInPixels(el, style.get('fontSize')) + 'px', font.baseSize));

		var wrapper, canvas;

		if (redraw) {
			wrapper = node;
			canvas = node.firstChild;
		}
		else {
			wrapper = document.createElement('cufon');
			wrapper.className = 'cufon cufon-vml';
			wrapper.alt = text;

			canvas = document.createElement('cufoncanvas');
			wrapper.appendChild(canvas);

			if (options.printable) {
				var print = document.createElement('cufontext');
				print.appendChild(document.createTextNode(text));
				wrapper.appendChild(print);
			}

			// ie6, for some reason, has trouble rendering the last VML element in the document.
			// we can work around this by injecting a dummy element where needed.
			// @todo find a better solution
			if (!hasNext) wrapper.appendChild(document.createElement('cvml:shape'));
		}

		var wStyle = wrapper.style;
		var cStyle = canvas.style;

		var height = size.convert(viewBox.height), roundedHeight = Math.ceil(height);
		var roundingFactor = roundedHeight / height;
		var stretchFactor = roundingFactor * Cufon.CSS.fontStretch(style.get('fontStretch'));
		var minX = viewBox.minX, minY = viewBox.minY;

		cStyle.height = roundedHeight;
		cStyle.top = Math.round(size.convert(minY - font.ascent));
		cStyle.left = Math.round(size.convert(minX));

		wStyle.height = size.convert(font.height) + 'px';

		var color = style.get('color');
		var chars = Cufon.CSS.textTransform(text, style).split('');

		var jumps = font.spacing(chars,
			getSpacingValue(el, style, size, 'letterSpacing'),
			getSpacingValue(el, style, size, 'wordSpacing')
		);

		if (!jumps.length) return null;

		var width = jumps.total;
		var fullWidth = -minX + width + (viewBox.width - jumps[jumps.length - 1]);

		var shapeWidth = size.convert(fullWidth * stretchFactor), roundedShapeWidth = Math.round(shapeWidth);

		var coordSize = fullWidth + ',' + viewBox.height, coordOrigin;
		var stretch = 'r' + coordSize + 'ns';

		var fill = options.textGradient && gradientFill(options.textGradient);

		var glyphs = font.glyphs, offsetX = 0;
		var shadows = options.textShadow;
		var i = -1, j = 0, chr;

		while (chr = chars[++i]) {

			var glyph = glyphs[chars[i]] || font.missingGlyph, shape;
			if (!glyph) continue;

			if (redraw) {
				// some glyphs may be missing so we can't use i
				shape = canvas.childNodes[j];
				while (shape.firstChild) shape.removeChild(shape.firstChild); // shadow, fill
			}
			else {
				shape = document.createElement('cvml:shape');
				canvas.appendChild(shape);
			}

			shape.stroked = 'f';
			shape.coordsize = coordSize;
			shape.coordorigin = coordOrigin = (minX - offsetX) + ',' + minY;
			shape.path = (glyph.d ? 'm' + glyph.d + 'xe' : '') + 'm' + coordOrigin + stretch;
			shape.fillcolor = color;

			if (fill) shape.appendChild(fill.cloneNode(false));

			// it's important to not set top/left or IE8 will grind to a halt
			var sStyle = shape.style;
			sStyle.width = roundedShapeWidth;
			sStyle.height = roundedHeight;

			if (shadows) {
				// due to the limitations of the VML shadow element there
				// can only be two visible shadows. opacity is shared
				// for all shadows.
				var shadow1 = shadows[0], shadow2 = shadows[1];
				var color1 = Cufon.CSS.color(shadow1.color), color2;
				var shadow = document.createElement('cvml:shadow');
				shadow.on = 't';
				shadow.color = color1.color;
				shadow.offset = shadow1.offX + ',' + shadow1.offY;
				if (shadow2) {
					color2 = Cufon.CSS.color(shadow2.color);
					shadow.type = 'double';
					shadow.color2 = color2.color;
					shadow.offset2 = shadow2.offX + ',' + shadow2.offY;
				}
				shadow.opacity = color1.opacity || (color2 && color2.opacity) || 1;
				shape.appendChild(shadow);
			}

			offsetX += jumps[j++];
		}

		// addresses flickering issues on :hover

		var cover = shape.nextSibling, coverFill, vStyle;

		if (options.forceHitArea) {

			if (!cover) {
				cover = document.createElement('cvml:rect');
				cover.stroked = 'f';
				cover.className = 'cufon-vml-cover';
				coverFill = document.createElement('cvml:fill');
				coverFill.opacity = 0;
				cover.appendChild(coverFill);
				canvas.appendChild(cover);
			}

			vStyle = cover.style;

			vStyle.width = roundedShapeWidth;
			vStyle.height = roundedHeight;

		}
		else if (cover) canvas.removeChild(cover);

		wStyle.width = Math.max(Math.ceil(size.convert(width * stretchFactor)), 0);

		if (HAS_BROKEN_LINEHEIGHT) {

			var yAdjust = style.computedYAdjust;

			if (yAdjust === undefined) {
				var lineHeight = style.get('lineHeight');
				if (lineHeight == 'normal') lineHeight = '1em';
				else if (!isNaN(lineHeight)) lineHeight += 'em'; // no unit
				style.computedYAdjust = yAdjust = 0.5 * (getSizeInPixels(el, lineHeight) - parseFloat(wStyle.height));
			}

			if (yAdjust) {
				wStyle.marginTop = Math.ceil(yAdjust) + 'px';
				wStyle.marginBottom = yAdjust + 'px';
			}

		}

		return wrapper;

	};

})());

Cufon.registerEngine('canvas', (function() {

	// Safari 2 doesn't support .apply() on native methods

	var check = document.createElement('canvas');
	if (!check || !check.getContext || !check.getContext.apply) return;
	check = null;

	var HAS_INLINE_BLOCK = Cufon.CSS.supports('display', 'inline-block');

	// Firefox 2 w/ non-strict doctype (almost standards mode)
	var HAS_BROKEN_LINEHEIGHT = !HAS_INLINE_BLOCK && (document.compatMode == 'BackCompat' || /frameset|transitional/i.test(document.doctype.publicId));

	var styleSheet = document.createElement('style');
	styleSheet.type = 'text/css';
	styleSheet.appendChild(document.createTextNode((
		'cufon{text-indent:0;}' +
		'@media screen,projection{' +
			'cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;' +
			(HAS_BROKEN_LINEHEIGHT
				? ''
				: 'font-size:1px;line-height:1px;') +
			'}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;text-align:left;text-indent:-10000in;}' +
			(HAS_INLINE_BLOCK
				? 'cufon canvas{position:relative;}'
				: 'cufon canvas{position:absolute;}') +
			'cufonshy.cufon-shy-disabled,.cufon-viewport-resizing cufonshy{display:none;}' +
			'cufonglue{white-space:nowrap;display:inline-block;}' +
			'.cufon-viewport-resizing cufonglue{white-space:normal;}' +
		'}' +
		'@media print{' +
			'cufon{padding:0;}' + // Firefox 2
			'cufon canvas{display:none;}' +
		'}'
	).replace(/;/g, '!important;')));
	document.getElementsByTagName('head')[0].appendChild(styleSheet);

	function generateFromVML(path, context) {
		var atX = 0, atY = 0;
		var code = [], re = /([mrvxe])([^a-z]*)/g, match;
		generate: for (var i = 0; match = re.exec(path); ++i) {
			var c = match[2].split(',');
			switch (match[1]) {
				case 'v':
					code[i] = { m: 'bezierCurveTo', a: [ atX + ~~c[0], atY + ~~c[1], atX + ~~c[2], atY + ~~c[3], atX += ~~c[4], atY += ~~c[5] ] };
					break;
				case 'r':
					code[i] = { m: 'lineTo', a: [ atX += ~~c[0], atY += ~~c[1] ] };
					break;
				case 'm':
					code[i] = { m: 'moveTo', a: [ atX = ~~c[0], atY = ~~c[1] ] };
					break;
				case 'x':
					code[i] = { m: 'closePath' };
					break;
				case 'e':
					break generate;
			}
			context[code[i].m].apply(context, code[i].a);
		}
		return code;
	}

	function interpret(code, context) {
		for (var i = 0, l = code.length; i < l; ++i) {
			var line = code[i];
			context[line.m].apply(context, line.a);
		}
	}

	return function(font, text, style, options, node, el) {

		var redraw = (text === null);

		if (redraw) text = node.getAttribute('alt');

		var viewBox = font.viewBox;

		var size = style.getSize('fontSize', font.baseSize);

		var expandTop = 0, expandRight = 0, expandBottom = 0, expandLeft = 0;
		var shadows = options.textShadow, shadowOffsets = [];
		if (shadows) {
			for (var i = shadows.length; i--;) {
				var shadow = shadows[i];
				var x = size.convertFrom(parseFloat(shadow.offX));
				var y = size.convertFrom(parseFloat(shadow.offY));
				shadowOffsets[i] = [ x, y ];
				if (y < expandTop) expandTop = y;
				if (x > expandRight) expandRight = x;
				if (y > expandBottom) expandBottom = y;
				if (x < expandLeft) expandLeft = x;
			}
		}

		var chars = Cufon.CSS.textTransform(text, style).split('');

		var jumps = font.spacing(chars,
			~~size.convertFrom(parseFloat(style.get('letterSpacing')) || 0),
			~~size.convertFrom(parseFloat(style.get('wordSpacing')) || 0)
		);

		if (!jumps.length) return null; // there's nothing to render

		var width = jumps.total;

		expandRight += viewBox.width - jumps[jumps.length - 1];
		expandLeft += viewBox.minX;

		var wrapper, canvas;

		if (redraw) {
			wrapper = node;
			canvas = node.firstChild;
		}
		else {
			wrapper = document.createElement('cufon');
			wrapper.className = 'cufon cufon-canvas';
			wrapper.setAttribute('alt', text);

			canvas = document.createElement('canvas');
			wrapper.appendChild(canvas);

			if (options.printable) {
				var print = document.createElement('cufontext');
				print.appendChild(document.createTextNode(text));
				wrapper.appendChild(print);
			}
		}

		var wStyle = wrapper.style;
		var cStyle = canvas.style;

		var height = size.convert(viewBox.height);
		var roundedHeight = Math.ceil(height);
		var roundingFactor = roundedHeight / height;
		var stretchFactor = roundingFactor * Cufon.CSS.fontStretch(style.get('fontStretch'));
		var stretchedWidth = width * stretchFactor;

		var canvasWidth = Math.ceil(size.convert(stretchedWidth + expandRight - expandLeft));
		var canvasHeight = Math.ceil(size.convert(viewBox.height - expandTop + expandBottom));

		canvas.width = canvasWidth;
		canvas.height = canvasHeight;

		// needed for WebKit and full page zoom
		cStyle.width = canvasWidth + 'px';
		cStyle.height = canvasHeight + 'px';

		// minY has no part in canvas.height
		expandTop += viewBox.minY;

		cStyle.top = Math.round(size.convert(expandTop - font.ascent)) + 'px';
		cStyle.left = Math.round(size.convert(expandLeft)) + 'px';

		var wrapperWidth = Math.max(Math.ceil(size.convert(stretchedWidth)), 0) + 'px';

		if (HAS_INLINE_BLOCK) {
			wStyle.width = wrapperWidth;
			wStyle.height = size.convert(font.height) + 'px';
		}
		else {
			wStyle.paddingLeft = wrapperWidth;
			wStyle.paddingBottom = (size.convert(font.height) - 1) + 'px';
		}

		var g = canvas.getContext('2d'), scale = height / viewBox.height;
		var pixelRatio = window.devicePixelRatio || 1;
		if (pixelRatio != 1) {
			canvas.width = canvasWidth * pixelRatio;
			canvas.height = canvasHeight * pixelRatio;
			g.scale(pixelRatio, pixelRatio);
		}

		// proper horizontal scaling is performed later
		g.scale(scale, scale * roundingFactor);
		g.translate(-expandLeft, -expandTop);
		g.save();

		function renderText() {
			var glyphs = font.glyphs, glyph, i = -1, j = -1, chr;
			g.scale(stretchFactor, 1);
			while (chr = chars[++i]) {
				var glyph = glyphs[chars[i]] || font.missingGlyph;
				if (!glyph) continue;
				if (glyph.d) {
					g.beginPath();
					if (glyph.code) interpret(glyph.code, g);
					else glyph.code = generateFromVML('m' + glyph.d, g);
					g.fill();
				}
				g.translate(jumps[++j], 0);
			}
			g.restore();
		}

		if (shadows) {
			for (var i = shadows.length; i--;) {
				var shadow = shadows[i];
				g.save();
				g.fillStyle = shadow.color;
				g.translate.apply(g, shadowOffsets[i]);
				renderText();
			}
		}

		var gradient = options.textGradient;
		if (gradient) {
			var stops = gradient.stops, fill = g.createLinearGradient(0, viewBox.minY, 0, viewBox.maxY);
			for (var i = 0, l = stops.length; i < l; ++i) {
				fill.addColorStop.apply(fill, stops[i]);
			}
			g.fillStyle = fill;
		}
		else g.fillStyle = style.get('color');

		renderText();

		return wrapper;

	};

})());
;
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * Copyright (C) 2003, Emigre Inc.; Designed by Jonathan Barnbrook
 * 
 * Trademark:
 * PrioriSanRegular is a trademark of Emigre, Inc.
 * 
 * Manufacturer:
 * Jonathan Barnbrook
 * 
 * Designer:
 * Jonathan Barnbrook
 * 
 * Vendor URL:
 * http://www.emigre.com
 * 
 * License information:
 * http://www.emigre.com/EUL.php
 */
Cufon.registerFont({"w":90,"face":{"font-family":"PrioriSanRegular","font-weight":500,"font-stretch":"normal","units-per-em":"360","panose-1":"2 0 6 6 3 0 0 2 0 3","ascent":"288","descent":"-72","x-height":"4","bbox":"-11 -256 282 94.8944","underline-thickness":"14.76","underline-position":"-55.8","unicode-range":"U+0020-U+007E"},"glyphs":{" ":{"w":64},"&":{"d":"162,-36v6,16,32,36,46,17v14,12,-2,25,-19,25v-21,0,-29,-13,-40,-25v-34,42,-138,30,-133,-40v3,-39,26,-61,55,-72v-15,-25,-36,-44,-47,-73r141,0r0,18r-107,0r94,135v9,-16,15,-40,20,-57r18,0v-6,26,-14,54,-28,72xm37,-62v-4,54,77,65,102,27r-58,-82v-21,10,-43,24,-44,55","w":216},"'":{"d":"35,-133r-12,0r-9,-71r30,0","w":58,"k":{"t":-11,"q":11,"o":11,"l":-14,"k":-14,"h":-14,"g":11,"f":-7,"e":11,"d":11,"c":11,"b":-14,"A":22}},"(":{"d":"43,-86v0,64,34,99,67,131r-11,11v-59,-37,-104,-141,-55,-222v15,-24,33,-45,55,-62r10,12v-33,32,-66,67,-66,130","w":117},")":{"d":"18,-228v59,37,104,142,55,222v-15,24,-33,45,-55,62r-11,-11v33,-32,67,-67,67,-131v0,-63,-33,-98,-66,-130","w":117},"*":{"d":"84,-142r42,43r-19,14r-28,-53r-28,53r-19,-14r42,-43r-60,-10r8,-23r54,27r-9,-60r24,0r-9,60r54,-27r8,23","w":158},"+":{"d":"118,-83r0,83r-17,0r0,-83r-83,0r0,-17r83,0r0,-83r17,0r0,83r83,0r0,17r-83,0","w":218},",":{"d":"23,51v23,-5,28,-47,7,-59v-13,-8,7,-16,12,-24v36,19,20,89,-19,89r0,-6","k":{"\"":36,"Y":29,"W":14,"V":14,"T":32,"Q":14,"O":14,"G":14,"C":14,"0":14,"'":36}},"-":{"d":"18,-66r0,-18r63,0r0,18r-63,0","w":99,"k":{"Z":18,"Y":18,"X":14,"W":11,"V":11,"T":22,"A":7}},".":{"d":"45,6r-22,-22r22,-21r22,21","k":{"\"":36,"Y":29,"W":14,"V":14,"T":32,"Q":14,"O":14,"G":14,"C":14,"0":14,"'":36}},"\/":{"d":"20,4r-16,0r101,-218r17,0","w":125},"0":{"d":"90,-211v95,7,96,210,0,217v-98,-6,-95,-210,0,-217xm90,-12v68,-11,66,-169,0,-180v-69,10,-68,170,0,180","w":179,"k":{"7":7,".":14,",":14}},"1":{"d":"30,0r0,-201r22,-11r0,212r-22,0","w":82},"2":{"d":"75,-211v69,-4,73,81,37,122r-62,70r89,0r0,19r-125,0r0,-6r92,-108v19,-29,9,-81,-32,-78v-25,2,-42,15,-44,40r-19,0v4,-35,27,-57,64,-59","w":156,"k":{"7":7,"6":7,"4":7}},"3":{"d":"126,-204v-1,43,-24,67,-48,84v26,7,52,23,52,58v0,64,-83,88,-123,47r12,-14v25,29,89,18,89,-33v0,-34,-34,-51,-66,-39r-6,-9v29,-17,57,-38,67,-75r-90,0r0,-19r113,0","w":147},"4":{"d":"121,-58r0,58r-21,0r0,-58r-90,0r-3,-9r97,-137r17,0r0,128r44,0r0,18r-44,0xm100,-173r-68,97r68,0r0,-97","w":168,"k":{"7":7}},"5":{"d":"115,-64v0,-43,-50,-62,-82,-41r-5,-1r7,-98r96,0r0,19r-80,0r-4,56v48,-11,89,17,89,66v0,69,-87,88,-129,45r12,-15v26,35,96,22,96,-31","w":154},"6":{"d":"88,6v-90,2,-81,-132,-29,-172v25,-20,57,-40,97,-43r0,16v-51,9,-89,33,-107,76v43,-23,107,4,104,58v-2,39,-26,64,-65,65xm90,-12v26,-2,42,-20,43,-47v3,-46,-58,-60,-89,-40v-10,38,2,89,46,87","w":173},"7":{"d":"59,0r-24,0r85,-185r-113,0r0,-19r134,0r4,6","w":152,"k":{"6":14,"4":14,"0":7,".":25,",":25}},"8":{"d":"92,-109v26,14,45,27,45,60v0,34,-24,55,-60,55v-35,0,-59,-20,-59,-55v0,-32,19,-46,45,-59v-25,-12,-42,-25,-42,-54v0,-32,24,-49,56,-49v33,0,54,18,57,49v-3,27,-18,41,-42,53xm77,-193v-35,-1,-48,41,-21,59v8,5,20,21,30,12v36,-14,37,-69,-9,-71xm77,-12v39,2,52,-48,24,-69v-7,-5,-20,-24,-31,-14v-40,13,-43,81,7,83","w":154},"9":{"d":"85,-211v91,-3,81,132,29,173v-25,20,-57,39,-96,43r0,-17v52,-8,90,-32,107,-76v-41,23,-108,-2,-104,-57v3,-39,26,-65,64,-66xm84,-193v-26,1,-42,21,-43,48v-4,47,58,59,89,39v11,-39,-4,-89,-46,-87","w":173,"k":{"4":7}},":":{"d":"45,-89r-22,-22r22,-21r22,21xm45,6r-22,-22r22,-21r22,21","k":{"Y":18,"W":7,"V":7,"T":32}},";":{"d":"45,-89r-22,-22r22,-21r22,21xm26,51v23,-5,28,-47,7,-59v-13,-8,7,-16,12,-24v36,20,20,89,-19,89r0,-6","k":{"Y":18,"W":7,"V":7,"T":32}},"\u037e":{"d":"45,-89r-22,-22r22,-21r22,21xm26,51v23,-5,28,-47,7,-59v-13,-8,7,-16,12,-24v36,20,20,89,-19,89r0,-6"},"<":{"d":"14,-84r0,-14r113,-64r0,19r-95,52r95,51r0,19","w":141},"=":{"d":"18,-105r0,-18r149,0r0,18r-149,0xm18,-61r0,-17r149,0r0,17r-149,0","w":185},">":{"d":"14,-21r0,-19r96,-51r-96,-52r0,-19r113,64r0,14","w":141},"?":{"d":"18,-201v45,-16,101,2,99,53v-2,41,-34,58,-64,71r0,31r-15,0r-3,-43v30,-10,58,-23,61,-59v3,-40,-47,-51,-78,-35r0,-18xm46,6r-18,-18r18,-18r18,18","w":128},"@":{"d":"282,-21v-21,53,-63,93,-133,93v-83,0,-135,-52,-135,-135v0,-89,58,-148,146,-148v66,0,109,38,109,105v0,58,-30,102,-83,107v-28,3,-26,-25,-20,-45v-11,21,-32,44,-61,44v-17,0,-31,-17,-29,-37v6,-53,32,-97,85,-104v16,-2,24,9,28,20r5,-20r20,0r-32,117v0,9,4,15,13,14v43,-6,66,-49,66,-97v0,-58,-39,-93,-98,-93v-83,0,-131,60,-131,142v0,72,45,119,118,119v65,0,103,-35,123,-82r9,0xm118,-17v42,-9,58,-52,65,-94v2,-13,-9,-25,-21,-23v-40,5,-63,52,-63,93v0,14,6,23,19,24","w":290},"A":{"d":"148,0r-26,-74r-70,0r-26,74r-22,0r72,-204r22,0r72,204r-22,0xm116,-91r-29,-89r-29,89r58,0","w":173,"k":{"\"":22,"y":4,"w":4,"v":4,"Y":13,"W":13,"V":13,"U":7,"T":18,"Q":7,"O":7,"G":7,"C":7,"-":7,"'":22}},"B":{"d":"121,-106v21,8,33,25,33,50v0,60,-64,58,-127,56r0,-204v59,-2,118,-2,118,54v1,19,-10,35,-24,44xm89,-115v25,4,33,-14,34,-34v2,-37,-36,-39,-75,-37r0,71r41,0xm48,-19v42,2,85,1,84,-39v0,-37,-41,-43,-84,-39r0,78","w":169,"k":{"Y":13,"X":4,"W":7,"V":7,"T":10}},"C":{"d":"194,-12v-17,11,-40,19,-70,18v-65,-3,-106,-42,-109,-108v-3,-92,105,-133,179,-91r-1,22v-56,-42,-161,-14,-156,69v3,53,33,87,87,89v29,1,54,-11,70,-20r0,21","w":209,"k":{"y":11,"w":11,"v":11,"t":7,"f":7,"Y":4,"T":4,"Q":5,"O":5,"G":5,"C":5,"-":22}},"D":{"d":"27,-204v98,-7,176,13,176,102v0,90,-78,109,-176,102r0,-204xm48,-20v76,6,133,-12,133,-82v0,-68,-56,-89,-133,-83r0,165","w":218,"k":{"Z":7,"Y":14,"X":7,"W":7,"V":7,"T":14,"S":4,"A":7,".":14,",":14}},"E":{"d":"27,0r0,-204r114,0r0,19r-93,0r0,72r72,0r0,19r-72,0r0,75r98,0r0,19r-119,0","w":161,"k":{"y":7,"w":7,"v":7,"t":4,"f":7,"T":11,"Q":9,"O":9,"G":9,"C":9,"-":7}},"F":{"d":"48,-185r0,72r70,0r0,19r-70,0r0,94r-21,0r0,-204r107,0r0,19r-86,0","w":146,"k":{"z":7,"y":7,"x":7,"w":7,"v":7,"u":18,"t":11,"s":18,"r":18,"q":18,"p":18,"o":18,"n":18,"m":18,"l":7,"k":7,"j":14,"i":14,"h":7,"g":18,"f":14,"e":18,"d":18,"c":18,"b":7,"a":18,"X":4,"T":11,"Q":9,"O":9,"G":9,"C":9,"A":18,".":41,",":41}},"G":{"d":"37,-102v0,71,72,107,136,80r0,-65r21,0r0,75v-17,11,-40,19,-70,18v-65,-3,-107,-42,-109,-108v-3,-91,101,-134,178,-91r0,22v-56,-42,-156,-14,-156,69","w":217,"k":{"Y":8,"T":8}},"H":{"d":"160,0r0,-94r-112,0r0,94r-21,0r0,-204r21,0r0,91r112,0r0,-91r21,0r0,204r-21,0","w":208},"I":{"d":"28,0r0,-204r22,0r0,204r-22,0","w":78},"J":{"d":"27,93r0,-297r21,0r0,275","w":74},"K":{"d":"149,0r-75,-106r-26,26r0,80r-21,0r0,-204r21,0r0,98r98,-98r26,0r-83,83r86,121r-26,0","w":178,"k":{"y":11,"w":11,"v":11,"u":7,"t":7,"q":7,"o":7,"f":7,"e":7,"d":7,"c":7,"Q":14,"O":14,"G":14,"C":14,"-":14}},"L":{"d":"27,0r0,-204r21,0r0,185r104,0r0,19r-125,0","w":155,"k":{"\"":29,"y":11,"w":11,"v":11,"Y":22,"W":22,"V":22,"U":7,"T":22,"Q":11,"O":11,"G":11,"C":11,"-":22,"'":29}},"M":{"d":"208,0r0,-149r-74,149r-13,0r-74,-149r0,149r-20,0r0,-204r14,0r87,173r87,-173r14,0r0,204r-21,0","w":255},"N":{"d":"173,0r0,-42r-125,-125r0,167r-21,0r0,-204r13,0r133,133r0,-133r21,0r0,204r-21,0","w":220},"O":{"d":"126,-211v66,0,110,42,110,109v0,66,-43,108,-110,108v-67,0,-111,-42,-111,-108v0,-67,45,-109,111,-109xm126,-13v54,0,88,-35,88,-89v0,-55,-34,-90,-88,-90v-55,0,-89,36,-89,90v0,53,34,89,89,89","w":251,"k":{"Z":7,"Y":14,"X":7,"W":7,"V":7,"T":14,"S":4,"A":7,".":14,",":14}},"P":{"d":"27,-204v60,-3,119,0,118,57v-2,49,-43,62,-97,58r0,89r-21,0r0,-204xm48,-106v40,2,74,-2,75,-41v1,-36,-35,-42,-75,-39r0,80","w":154,"k":{"u":7,"r":7,"q":14,"p":7,"o":14,"n":7,"m":7,"g":7,"e":14,"d":14,"c":14,"a":7,"A":14,".":38,",":38}},"Q":{"d":"126,-211v66,0,110,42,110,109v0,62,-40,93,-88,107r88,0r-6,18v-117,7,-215,-22,-215,-125v0,-66,44,-109,111,-109xm126,-9v54,0,88,-36,88,-91v0,-56,-33,-92,-88,-92v-56,0,-89,37,-89,92v0,54,34,91,89,91","w":251,"k":{"Z":7,"Y":14,"X":7,"W":7,"V":7,"T":14,"S":4,"A":7,".":14,",":14}},"R":{"d":"177,-12v-5,12,-34,24,-46,10v-22,-25,-39,-57,-59,-84r-24,0r0,86r-21,0r0,-204v61,-4,117,3,116,59v-1,33,-21,50,-48,57r43,62v9,16,21,15,31,6xm48,-103v40,2,73,-4,73,-43v0,-36,-32,-43,-73,-40r0,83","w":173,"k":{"y":7,"w":7,"v":7,"Y":11,"W":7,"V":7,"U":4,"T":14,"Q":7,"O":7,"G":7,"C":7}},"S":{"d":"122,-177v-28,-30,-111,-7,-74,39v27,32,83,36,86,90v3,58,-79,65,-119,39r0,-23v26,25,112,29,95,-27v-23,-41,-87,-40,-92,-98v-5,-56,69,-63,104,-41r0,21","w":149,"k":{"Y":7,"W":7,"V":7,"T":7,"Q":4,"O":4,"G":4,"C":4}},"T":{"d":"97,-186r0,186r-21,0r0,-186r-72,0r0,-18r165,0r0,18r-72,0","w":172,"k":{"z":42,"y":42,"x":42,"w":42,"v":42,"u":42,"t":18,"s":42,"r":42,"q":42,"p":42,"o":42,"n":42,"m":42,"l":23,"k":23,"j":18,"i":18,"h":23,"g":42,"f":18,"e":42,"d":42,"c":42,"a":42,"S":7,"Q":14,"O":14,"G":14,"C":14,"A":18,";":32,":":32,".":32,"-":22,",":32}},"U":{"d":"95,-15v34,0,51,-26,63,-45r0,-144r21,0r0,204r-21,0r0,-32v-12,18,-34,36,-66,36v-91,0,-63,-121,-67,-208r21,0v7,72,-27,187,49,189","w":205},"V":{"d":"94,0r-18,0r-72,-204r22,0r59,173r59,-173r23,0","w":170,"k":{"z":7,"y":7,"x":7,"w":7,"v":7,"u":14,"s":18,"r":14,"q":18,"p":14,"o":18,"n":14,"m":14,"j":14,"i":14,"g":18,"e":18,"d":18,"c":18,"a":18,"Q":7,"O":7,"G":7,"C":7,"A":13,";":7,":":7,".":14,"-":11,",":14}},"W":{"d":"76,-204r22,0r24,73r25,-73r21,0r-36,101r26,76r61,-177r22,0r-73,204r-19,0r-27,-76r-26,76r-20,0r-72,-204r22,0r61,177r26,-76","w":244,"k":{"z":7,"y":7,"x":7,"w":7,"v":7,"u":14,"s":18,"r":14,"q":18,"p":14,"o":18,"n":14,"m":14,"i":14,"g":18,"e":18,"d":18,"c":18,"a":18,"Q":7,"O":7,"G":7,"C":7,"A":13,";":7,":":7,".":14,"-":11,",":14}},"X":{"d":"149,0r-59,-86r-59,86r-26,0r73,-103r-72,-101r26,0r58,84r58,-84r26,0r-72,101r73,103r-26,0","w":180,"k":{"y":11,"w":11,"v":11,"u":7,"t":7,"q":7,"o":7,"e":7,"d":7,"c":7,"Q":7,"O":7,"G":7,"C":7,"-":14}},"Y":{"d":"91,-86r0,86r-21,0r0,-86r-66,-118r24,0r53,100r53,-100r24,0","w":161,"k":{"z":18,"y":18,"x":18,"w":18,"v":18,"u":25,"s":25,"r":25,"q":29,"p":25,"o":29,"n":25,"m":25,"j":14,"i":14,"g":29,"f":7,"e":29,"d":29,"c":29,"a":29,"Q":14,"O":14,"G":14,"C":14,"A":13,";":18,":":18,".":29,"-":18,",":29}},"Z":{"d":"7,0r0,-8r127,-178r-122,0r0,-18r155,0r0,9r-127,177r130,0r0,18r-163,0","w":176,"k":{"y":11,"w":11,"v":11,"Q":7,"O":7,"G":7,"C":7,"-":18}},"[":{"d":"25,50r0,-278r52,0r0,15r-32,0r0,248r32,0r0,15r-52,0","w":91},"\\":{"d":"91,4r-102,-218r16,0r102,218r-16,0","w":96},"]":{"d":"14,50r0,-15r32,0r0,-248r-32,0r0,-15r52,0r0,278r-52,0","w":91},"^":{"d":"148,-117r-57,-107r-56,107r-21,0r67,-126r21,0r66,126r-20,0","w":182},"_":{"d":"0,19r0,-19r180,0r0,19r-180,0","w":180},"`":{"d":"68,-159r-35,-67r20,0r33,67r-18,0","w":119},"a":{"d":"89,-11v-22,26,-80,16,-78,-26v2,-39,38,-48,77,-49r0,-25r-69,0r3,-16r85,0r0,127r-16,0xm40,-59v-22,17,-2,58,28,45v7,-3,15,-8,20,-14r0,-44v-17,3,-38,5,-48,13","w":127},"b":{"d":"39,-120v42,-26,102,1,102,57v0,56,-65,85,-104,53r-2,10r-15,0r0,-204r19,0r0,84xm39,-27v28,25,82,9,82,-36v0,-44,-53,-64,-82,-37r0,73","w":153,"k":{"\"":11,"'":11}},"c":{"d":"126,-9v-42,28,-113,6,-113,-54v0,-60,68,-84,112,-55r0,18v-31,-22,-92,-13,-92,37v0,50,60,59,93,36r0,18","w":138},"d":{"d":"13,-67v0,-53,61,-79,101,-54r0,-83r19,0r0,204r-19,0r0,-17r-40,21v-32,-9,-61,-28,-61,-71xm114,-102v-41,-36,-114,25,-65,73v6,6,18,11,25,14r40,-20r0,-67","w":153,"k":{"\"":-14,"'":-14}},"e":{"d":"79,-131v37,0,56,27,54,69r-101,0v-2,51,63,59,97,34r0,18v-42,29,-120,10,-116,-53v3,-42,26,-68,66,-68xm114,-77v3,-45,-65,-46,-77,-12v-2,4,-3,8,-4,12r81,0","w":147,"k":{"\"":11,"'":11}},"f":{"d":"27,-127v-15,-66,42,-108,84,-66r-12,12v-15,-21,-53,-11,-53,21r0,33r41,0r-6,15r-35,0r0,112r-19,0r0,-112r-22,0r5,-15r17,0","w":89,"k":{"\"":-36,"q":7,"o":7,"g":7,"e":7,"d":7,"c":7,".":11,",":11,"'":-36}},"g":{"d":"12,-77v0,-50,65,-69,96,-39v6,-10,19,-13,37,-11r0,15r-33,0v34,38,-5,107,-63,86r-13,18v37,13,91,13,91,59v0,60,-118,58,-117,-3v0,-20,12,-31,24,-39r-23,-8r25,-33v-13,-8,-24,-24,-24,-45xm68,-40v24,0,38,-14,39,-37v0,-22,-17,-37,-39,-37v-22,0,-39,16,-38,37v1,22,15,36,38,37xm28,48v0,39,80,42,80,3v0,-29,-35,-28,-57,-37v-12,7,-22,16,-23,34","w":140,"k":{"\"":-7,"'":-7}},"h":{"d":"39,-108v18,-27,86,-36,86,16r0,92r-20,0r0,-91v-3,-39,-56,-16,-66,4r0,87r-19,0r0,-204r19,0r0,96","w":144,"k":{"\"":7,"'":7}},"i":{"d":"23,0r0,-127r20,0r0,127r-20,0xm33,-152r-16,-16r16,-16r16,16","w":66},"j":{"d":"23,91r0,-218r20,0r0,199xm33,-152r-16,-16r16,-16r16,16","w":66},"k":{"d":"101,0r-43,-62r-19,20r0,42r-19,0r0,-204r19,0r0,140r61,-63r24,0r-53,52r54,75r-24,0","w":127,"k":{"q":4,"o":4,"e":4,"d":4,"c":4}},"l":{"d":"39,-31v-2,18,22,20,32,13r0,16v-20,14,-51,4,-51,-28r0,-174r19,0r0,173","w":79,"k":{"y":7,"w":7,"v":7,"u":7,"t":7,"q":7,"o":7,"g":4,"f":7,"e":7,"d":7,"c":7}},"m":{"d":"118,-107v18,-33,86,-34,86,18r0,89r-19,0v-6,-40,18,-111,-24,-113v-20,-1,-30,14,-39,24r0,89r-20,0r0,-87v0,-15,-7,-26,-23,-26v-20,0,-30,15,-40,24r0,89r-19,0r0,-127r19,0r0,17v14,-24,70,-31,79,3","w":223,"k":{"\"":7,"'":7}},"n":{"d":"39,-109v20,-32,86,-29,86,22r0,87r-20,0v-6,-40,18,-111,-25,-113v-20,0,-32,14,-41,25r0,88r-19,0r0,-127r19,0r0,18","w":144,"k":{"\"":7,"'":7}},"o":{"d":"80,-131v41,0,67,28,67,68v0,40,-26,67,-67,67v-41,0,-67,-26,-67,-67v0,-42,26,-68,67,-68xm80,-14v28,0,47,-20,47,-49v0,-29,-18,-50,-47,-50v-29,0,-48,20,-48,50v0,29,19,49,48,49","w":159,"k":{"\"":11,"'":11}},"p":{"d":"79,-131v32,9,61,28,61,71v0,53,-61,79,-101,54r0,88r-19,0r0,-209r19,0r0,17xm39,-26v33,31,102,-6,76,-57v-7,-15,-21,-24,-36,-29r-40,20r0,66","w":153,"k":{"\"":11,"'":11}},"q":{"d":"13,-64v0,-55,64,-85,103,-53r3,-10r15,0r0,209r-20,0r0,-90v-39,29,-101,-1,-101,-56xm114,-100v-27,-25,-85,-9,-81,36v-5,46,53,63,81,37r0,-73","w":153},"r":{"d":"88,-111v-21,-7,-39,7,-49,17r0,94r-19,0r0,-127r19,0r0,18v11,-12,25,-26,49,-21r0,19","w":88,"k":{"\"":-7,".":20,",":20,"'":-7}},"s":{"d":"32,-97v9,32,62,23,64,64v2,42,-57,43,-82,28r0,-20v15,11,60,21,63,-7v-10,-32,-61,-23,-64,-63v-3,-39,55,-43,79,-27r0,19v-14,-11,-57,-19,-60,6","w":109},"t":{"d":"45,-40v-5,32,33,28,48,18r0,17v-26,17,-68,8,-68,-36r0,-71r-27,0r6,-15r21,0r0,-50r20,0r0,50r46,0r-5,15r-41,0r0,72","w":96,"k":{"\"":-7,"z":-2,"'":-7}},"u":{"d":"68,-14v19,0,28,-15,36,-26r0,-87r19,0r0,127r-19,0r0,-16v-20,32,-84,24,-84,-28r0,-83r19,0v4,43,-16,113,29,113","w":142},"v":{"d":"67,0r-19,0r-46,-127r21,0r34,101r35,-101r21,0","w":114,"k":{".":14,",":14}},"w":{"d":"144,0r-18,0r-30,-86r-30,86r-18,0r-46,-127r20,0r35,101r34,-101r9,0r34,101r35,-101r21,0","w":191,"k":{".":14,",":14}},"x":{"d":"101,0r-37,-50r-38,50r-24,0r51,-64r-50,-63r24,0r37,49r36,-49r24,0r-49,63r50,64r-24,0","w":127},"y":{"d":"113,-127r-75,209r-19,0r29,-82r-46,-127r21,0r34,101r35,-101r21,0","w":114,"k":{".":14,",":14}},"z":{"d":"9,0r0,-7r73,-104r-71,0r0,-16r99,0r0,7r-73,104r75,0r0,16r-103,0","w":120},"{":{"d":"59,24v0,22,17,35,37,38r-1,13v-31,-5,-55,-21,-55,-56v0,-42,22,-102,-31,-103r0,-12v86,-6,-25,-148,86,-160r1,13v-20,3,-37,16,-37,39v0,23,8,43,8,66v-1,27,-20,38,-37,48v19,8,37,21,37,47v0,24,-8,43,-8,67","w":103},"|":{"d":"38,68r0,-324r16,0r0,324r-16,0","w":91},"}":{"d":"37,-138v0,-42,20,-101,-30,-105r2,-13v31,4,55,22,55,55v0,43,-22,104,31,105r0,12v-22,3,-41,12,-38,36v7,55,15,119,-48,123r-2,-13v49,-4,30,-63,30,-105v0,-27,19,-38,37,-48v-20,-8,-37,-21,-37,-47","w":103},"~":{"d":"197,-118v3,56,-63,66,-99,35v-11,-5,-26,-14,-39,-15v-21,0,-29,17,-31,35r-15,0v2,-30,16,-54,47,-54v39,0,54,34,91,34v20,0,28,-15,30,-35r16,0","w":209},"!":{"d":"52,-46r-13,0r-9,-158r30,0xm45,6r-18,-18r18,-18r18,18"},"\"":{"d":"84,-133r-12,0r-8,-71r28,0xm34,-133r-11,0r-9,-71r28,0","w":106,"k":{"t":-11,"q":11,"o":11,"l":-14,"k":-14,"h":-14,"g":11,"f":-7,"e":11,"d":11,"c":11,"b":-14,"A":22}},"#":{"d":"192,-130r-46,0r-12,55r46,0r-4,17r-45,0r-13,58r-17,0r13,-58r-43,0r-12,58r-17,0r12,-58r-45,0r4,-17r45,0r12,-55r-46,0r4,-17r45,0r13,-57r17,0r-13,57r43,0r12,-57r17,0r-12,57r45,0xm87,-130r-12,55r42,0r12,-55r-42,0","w":204},"$":{"d":"115,-94v42,26,27,102,-30,99r0,34r-10,0r0,-33v-21,0,-39,-7,-53,-15r0,-23v16,8,32,17,53,19r0,-82v-21,-17,-53,-26,-53,-62v0,-34,22,-50,53,-53r0,-33r10,0r0,33v17,-1,35,7,44,12r0,21v-10,-5,-29,-14,-44,-15r0,78xm85,-14v37,0,45,-50,14,-65r-14,-10r0,75xm75,-191v-36,-1,-43,49,-13,61v4,3,7,7,13,9r0,-70","w":162},"%":{"d":"51,-211v24,0,40,15,40,38v0,23,-16,38,-40,38v-24,0,-40,-14,-40,-38v0,-24,16,-38,40,-38xm46,6r-10,0r92,-217r10,0xm123,-71v25,0,40,14,40,38v0,23,-16,37,-40,37v-24,0,-39,-14,-39,-37v0,-23,15,-38,39,-38xm51,-150v13,0,23,-11,23,-23v0,-12,-9,-22,-23,-22v-13,-1,-23,9,-23,22v0,13,11,23,23,23xm123,-11v13,0,24,-9,24,-22v0,-33,-47,-27,-47,0v1,12,9,22,23,22","w":174},"\u00a0":{"w":64}}});
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * Copyright (C) 2003, Emigre Inc.; Designed by Jonathan Barnbrook
 * 
 * Trademark:
 * PrioriSanBold is a trademark of Emigre, Inc.
 * 
 * Manufacturer:
 * Jonathan Barnbrook
 * 
 * Designer:
 * Jonathan Barnbrook
 * 
 * Vendor URL:
 * http://www.emigre.com
 * 
 * License information:
 * http://www.emigre.com/EUL.php
 */
Cufon.registerFont({"w":90,"face":{"font-family":"PrioriSanBold","font-weight":700,"font-stretch":"normal","units-per-em":"360","panose-1":"2 0 8 6 3 0 0 2 0 3","ascent":"288","descent":"-72","x-height":"4","bbox":"-11 -257 283 95.299","underline-thickness":"14.76","underline-position":"-55.8","unicode-range":"U+0020-U+007E"},"glyphs":{" ":{"w":64},"&":{"d":"178,-40v4,13,26,23,35,5v30,17,2,41,-23,41v-18,1,-30,-9,-37,-19v-44,36,-142,19,-137,-50v2,-37,27,-56,54,-69r-43,-61r0,-11r152,0r0,33r-93,0r72,103v6,-12,10,-28,15,-41r31,0v-6,26,-13,49,-26,69xm54,-65v0,41,55,48,81,26r-48,-68v-16,8,-33,19,-33,42","w":230},"'":{"d":"42,-133r-18,0r-10,-71r38,0","w":66,"k":{"t":-11,"q":11,"o":11,"l":-14,"k":-14,"h":-14,"g":11,"f":-7,"e":11,"d":11,"c":11,"b":-14,"A":22}},"(":{"d":"60,-86v0,61,33,94,65,125r-23,23v-60,-40,-108,-144,-58,-229v14,-26,35,-47,58,-66r23,23v-33,30,-65,64,-65,124","w":132},")":{"d":"31,-233v59,40,108,144,57,228v-15,25,-35,49,-58,67r-23,-23v33,-30,65,-64,65,-125v0,-60,-32,-94,-64,-124","w":132},"*":{"d":"85,-143r44,40r-25,18r-25,-54r-25,54r-24,-18r43,-40r-59,-7r10,-29r51,29r-12,-58r31,0r-11,58r51,-29r9,29","w":157},"+":{"d":"122,-80r0,80r-25,0r0,-80r-79,0r0,-24r79,0r0,-79r25,0r0,79r79,0r0,24r-79,0","w":218},",":{"d":"42,15v0,-19,-14,-28,-25,-39r25,-26v34,13,42,79,6,98v-8,7,-21,11,-30,14r0,-7v12,-8,24,-20,24,-40","k":{"\"":22,"Y":29,"W":18,"V":14,"T":32,"Q":14,"O":14,"G":14,"C":14,"0":7,"'":22}},"-":{"d":"18,-63r0,-24r63,0r0,24r-63,0","w":99,"k":{"Z":18,"Y":18,"X":14,"W":11,"V":11,"T":22,"A":7}},".":{"d":"45,6r-28,-28r28,-28r28,28","k":{"\"":22,"Y":29,"W":18,"V":14,"T":32,"Q":14,"O":14,"G":14,"C":14,"0":7,"'":22}},"\/":{"d":"26,4r-22,0r101,-218r22,0","w":130},"0":{"d":"92,-211v98,6,98,211,0,217v-101,-4,-99,-213,0,-217xm92,-30v49,-11,47,-133,0,-145v-49,10,-50,135,0,145","w":182,"k":{"7":7,".":14,",":14}},"1":{"d":"30,0r0,-201r39,-11r0,212r-39,0","w":99},"2":{"d":"81,-211v72,-6,85,82,44,125r-49,52r76,0r0,34r-138,0r0,-17r90,-101v18,-23,8,-60,-23,-59v-21,0,-33,16,-35,37r-35,0v2,-43,28,-68,70,-71","w":169,"k":{"7":7,"6":7,"4":7}},"3":{"d":"104,-65v0,-28,-31,-38,-54,-25r-16,-21v25,-14,51,-30,63,-58r-81,0r0,-35r123,0v3,41,-17,64,-33,83v20,10,37,25,37,55v0,72,-94,92,-136,47r23,-28v17,24,74,25,74,-18","w":161},"4":{"d":"132,-50r0,50r-38,0r0,-50r-84,0r-6,-17r96,-137r32,0r0,120r29,0r0,34r-29,0xm94,-154r-47,70r47,0r0,-70","w":168,"k":{"7":7}},"5":{"d":"108,-66v0,-35,-44,-48,-68,-29r-16,-4r8,-105r110,0r0,34r-79,0r-3,34v52,-9,88,22,90,70v3,73,-99,90,-145,48r22,-28v21,25,81,24,81,-20","w":167},"6":{"d":"94,6v-95,4,-89,-131,-33,-173v27,-21,63,-38,107,-42r0,30v-41,7,-75,21,-95,49v49,-8,92,17,92,67v0,41,-28,67,-71,69xm87,-102v-22,0,-32,4,-32,26v0,27,14,50,40,49v21,-1,34,-16,34,-36v0,-24,-18,-39,-42,-39","w":186},"7":{"d":"63,0r-41,0r78,-171r-93,0r0,-33r131,0r9,13","w":153,"k":{"6":11,"4":11,"0":7,".":25,",":25}},"8":{"d":"85,-211v65,-5,85,80,32,103v59,30,37,117,-32,114v-39,-1,-67,-22,-67,-59v0,-28,16,-41,35,-54v-18,-12,-32,-25,-32,-50v0,-35,28,-51,64,-54xm85,-177v-34,0,-31,41,-7,48v15,13,30,-10,34,-25v-1,-13,-11,-23,-27,-23xm85,-28v48,-3,27,-56,-1,-66v-12,9,-28,19,-28,38v0,14,12,30,29,28","w":170},"9":{"d":"93,-211v68,-3,92,76,64,133v-23,49,-74,76,-139,83r0,-31v42,-6,75,-20,95,-48v-50,7,-92,-18,-92,-68v0,-41,30,-67,72,-69xm129,-109v7,-34,-5,-69,-38,-68v-20,1,-32,15,-34,35v-2,36,44,47,72,33","w":186,"k":{"4":7}},":":{"d":"45,-77r-28,-27r28,-28r28,28xm45,6r-28,-28r28,-28r28,28","k":{"Y":18,"W":11,"V":7,"T":25}},";":{"d":"45,-77r-28,-27r28,-28r28,28xm44,15v-1,-19,-13,-29,-25,-39r26,-26v34,14,41,78,6,98v-8,7,-22,11,-30,14r0,-7v12,-8,25,-19,23,-40","k":{"Y":18,"W":11,"V":7,"T":25}},"\u037e":{"d":"45,-77r-28,-27r28,-28r28,28xm44,15v-1,-19,-13,-29,-25,-39r26,-26v34,14,41,78,6,98v-8,7,-22,11,-30,14r0,-7v12,-8,25,-19,23,-40"},"<":{"d":"131,-15r-117,-65r0,-22r117,-66r0,35r-77,42r77,41r0,35","w":145},"=":{"d":"18,-105r0,-25r149,0r0,25r-149,0xm18,-54r0,-24r149,0r0,24r-149,0","w":185},">":{"d":"14,-15r0,-35r77,-41r-77,-42r0,-35r117,66r0,22","w":145},"?":{"d":"18,-203v57,-25,143,11,111,80v-11,24,-34,39,-62,46r-3,11r-23,0r-8,-32v30,-6,63,-18,64,-51v2,-37,-54,-33,-79,-20r0,-34xm53,6r-28,-28r28,-28r28,28","w":145},"@":{"d":"283,-26v-21,55,-61,97,-134,97v-83,0,-135,-52,-135,-135v0,-89,58,-147,146,-147v67,0,110,38,110,106v0,57,-31,103,-85,107v-18,1,-27,-14,-25,-32v-13,31,-89,49,-85,-8v4,-53,34,-100,86,-105v13,-1,20,9,27,14r4,-14r25,0r-32,117v0,7,1,13,9,12v39,-8,61,-46,61,-91v0,-55,-35,-89,-92,-89v-79,0,-124,57,-124,136v0,69,42,113,111,113v65,0,100,-35,121,-81r12,0xm118,-21v37,-9,61,-49,61,-90v0,-12,-6,-20,-17,-20v-35,8,-54,51,-59,90v-1,12,5,20,15,20","w":292},"A":{"d":"154,0r-20,-58r-70,0r-20,58r-40,0r79,-204r33,0r79,204r-41,0xm99,-156r-24,69r48,0","w":199,"k":{"\"":22,"y":4,"w":4,"v":4,"Y":18,"W":17,"V":13,"U":7,"T":18,"Q":7,"O":7,"G":7,"C":7,"-":7,"'":22}},"B":{"d":"142,-107v18,10,30,24,30,49v0,67,-77,58,-145,58r0,-204v66,-2,135,-6,136,56v0,16,-7,29,-21,41xm66,-121v28,0,56,6,56,-24v0,-28,-27,-28,-56,-27r0,51xm66,-33v32,1,65,2,65,-29v-1,-27,-33,-31,-65,-29r0,58","w":187,"k":{"Y":13,"X":4,"W":7,"V":7,"T":10}},"C":{"d":"203,-8v-78,35,-188,0,-188,-94v0,-94,107,-130,188,-95r0,39v-16,-9,-41,-18,-68,-18v-47,1,-76,29,-78,74v-4,75,93,88,146,56r0,38","w":218,"k":{"y":11,"w":11,"v":11,"t":7,"f":7,"Y":4,"T":7,"Q":5,"O":5,"G":5,"C":5,"-":22}},"D":{"d":"27,-204v100,-6,185,10,185,102v0,92,-84,109,-185,102r0,-204xm66,-35v61,5,106,-12,106,-67v0,-54,-45,-72,-106,-68r0,135","w":227,"k":{"Z":7,"Y":14,"X":7,"W":7,"V":7,"T":14,"S":4,"A":7,".":14,",":14}},"E":{"d":"27,0r0,-204r123,0r0,34r-84,0r0,50r63,0r0,34r-63,0r0,52r89,0r0,34r-128,0","w":170,"k":{"y":7,"w":7,"v":7,"t":4,"f":7,"T":11,"Q":9,"O":9,"G":9,"C":9,"-":7}},"F":{"d":"66,-170r0,50r61,0r0,34r-61,0r0,86r-39,0r0,-204r116,0r0,34r-77,0","w":155,"k":{"z":7,"y":7,"x":7,"w":7,"v":7,"u":18,"t":11,"s":18,"r":18,"q":18,"p":18,"o":18,"n":18,"m":18,"l":7,"k":7,"j":14,"i":14,"h":7,"g":18,"f":14,"e":18,"d":18,"c":18,"b":7,"a":18,"X":4,"T":11,"Q":9,"O":9,"G":9,"C":9,"A":18,".":34,",":34}},"G":{"d":"203,-8v-78,35,-188,0,-188,-94v0,-94,107,-130,188,-95r0,39v-54,-34,-148,-18,-146,56v2,56,50,83,108,70r0,-66r38,0r0,90","w":226,"k":{"Y":8,"T":8}},"H":{"d":"160,0r0,-86r-94,0r0,86r-39,0r0,-204r39,0r0,84r94,0r0,-84r39,0r0,204r-39,0","w":225},"I":{"d":"28,0r0,-204r39,0r0,204r-39,0","w":95},"J":{"d":"27,93r0,-297r39,0r0,258","w":92},"K":{"d":"150,0r-69,-90r-15,15r0,75r-39,0r0,-204r39,0r0,85r84,-85r45,0r-87,87r88,117r-46,0","w":199,"k":{"y":11,"w":11,"v":11,"u":7,"t":7,"q":7,"o":7,"f":7,"e":7,"d":7,"c":7,"Q":14,"O":14,"G":14,"C":14,"-":14}},"L":{"d":"27,0r0,-204r39,0r0,170r104,0r0,34r-143,0","w":173,"k":{"\"":29,"y":11,"w":11,"v":11,"Y":25,"W":25,"V":22,"U":7,"T":29,"Q":11,"O":11,"G":11,"C":11,"-":22,"'":29}},"M":{"d":"208,0r0,-115r-58,115r-29,0r-57,-115r0,115r-37,0r0,-204r30,0r79,157r79,-157r30,0r0,204r-37,0","w":271},"N":{"d":"164,0r0,-43r-98,-99r0,142r-39,0r0,-204r26,0r111,111r0,-111r39,0r0,204r-39,0","w":229},"O":{"d":"130,-211v99,-6,152,120,82,185v-18,18,-46,33,-82,32v-69,-2,-115,-42,-115,-108v0,-67,47,-105,115,-109xm130,-28v45,0,75,-29,75,-74v0,-44,-28,-74,-75,-74v-47,0,-75,30,-75,74v0,45,30,74,75,74","w":260,"k":{"Z":7,"Y":14,"X":7,"W":7,"V":7,"T":14,"S":4,"A":7,".":14,",":14}},"P":{"d":"27,-204v67,-2,137,-4,136,61v-1,49,-45,63,-97,62r0,81r-39,0r0,-204xm66,-114v29,1,55,-2,56,-29v2,-26,-27,-30,-56,-28r0,57","w":172,"k":{"u":7,"r":7,"q":14,"p":7,"o":14,"n":7,"m":7,"g":7,"e":14,"d":14,"c":14,"a":7,"A":14,".":38,",":38}},"Q":{"d":"130,-211v68,0,112,42,115,109v2,55,-34,82,-70,99r70,0r-6,26v-120,7,-224,-18,-224,-125v0,-67,48,-109,115,-109xm131,-23v47,0,77,-31,77,-77v0,-47,-30,-77,-77,-77v-47,0,-77,30,-77,77v0,46,30,77,77,77","w":260,"k":{"Z":7,"Y":14,"X":7,"W":7,"V":7,"T":14,"S":4,"A":7,".":14,",":14}},"R":{"d":"195,-20v-9,18,-43,33,-65,17v-22,-16,-37,-52,-54,-75r-10,0r0,78r-39,0r0,-204v66,-3,136,-2,134,60v-1,31,-22,49,-44,60v19,18,25,60,58,56v7,-11,13,3,20,8xm66,-110v30,2,54,-5,56,-31v1,-28,-26,-31,-56,-29r0,60","w":191,"k":{"y":7,"w":7,"v":7,"Y":14,"W":11,"V":11,"U":4,"T":14,"Q":7,"O":7,"G":7,"C":7}},"S":{"d":"140,-161v-20,-18,-103,-25,-77,20v30,29,86,33,89,88v3,67,-94,70,-137,41r0,-37v19,8,36,20,63,20v38,0,45,-36,14,-47v-28,-23,-72,-30,-74,-79v-2,-60,82,-67,122,-42r0,36","w":167,"k":{"Y":7,"W":7,"V":7,"T":7,"Q":4,"O":4,"G":4,"C":4}},"T":{"d":"115,-171r0,171r-39,0r0,-171r-72,0r0,-33r183,0r0,33r-72,0","w":190,"k":{"z":42,"y":42,"x":42,"w":42,"v":42,"u":42,"t":18,"s":42,"r":42,"q":42,"p":42,"o":42,"n":42,"m":42,"l":23,"k":23,"j":18,"i":18,"h":23,"g":42,"f":18,"e":42,"d":42,"c":42,"a":42,"S":7,"Q":14,"O":14,"G":14,"C":14,"A":18,";":25,":":25,".":32,"-":22,",":32}},"U":{"d":"64,-77v-6,62,78,53,94,17r0,-144r39,0r0,204r-39,0r0,-20v-14,14,-35,26,-65,24v-43,-2,-67,-29,-68,-75r0,-133r39,0r0,127","w":223},"V":{"d":"113,0r-34,0r-75,-204r41,0r51,145r50,-145r42,0","w":191,"k":{"z":7,"y":7,"x":7,"w":7,"v":7,"u":14,"s":18,"r":14,"q":18,"p":14,"o":18,"n":14,"m":14,"j":14,"i":14,"g":18,"e":18,"d":18,"c":18,"a":18,"Q":7,"O":7,"G":7,"C":7,"A":13,";":7,":":7,".":14,"-":11,",":14}},"W":{"d":"174,-56r57,-148r42,0r-83,204r-25,0r-27,-65r-26,65r-26,0r-82,-204r41,0r57,148r19,-48r-41,-100r38,0r20,55r21,-55r38,0r-41,100","w":276,"k":{"z":7,"y":7,"x":7,"w":7,"v":7,"u":14,"s":18,"r":14,"q":18,"p":14,"o":18,"n":14,"m":14,"i":14,"g":18,"e":18,"d":18,"c":18,"a":18,"Q":7,"O":7,"G":7,"C":7,"A":17,";":11,":":11,".":18,"-":11,",":18}},"X":{"d":"144,0r-45,-71r-46,71r-48,0r72,-103r-71,-101r48,0r45,69r45,-69r47,0r-71,101r72,103r-48,0","w":196,"k":{"y":11,"w":11,"v":11,"u":7,"t":7,"q":7,"o":7,"e":7,"d":7,"c":7,"Q":7,"O":7,"G":7,"C":7,"-":14}},"Y":{"d":"133,-204r43,0r-67,123r0,81r-39,0r0,-81r-67,-123r43,0r44,86","w":179,"k":{"z":18,"y":18,"x":18,"w":18,"v":18,"u":25,"s":25,"r":25,"q":29,"p":25,"o":29,"n":25,"m":25,"j":14,"i":14,"g":29,"f":7,"e":29,"d":29,"c":29,"a":29,"Q":14,"O":14,"G":14,"C":14,"A":18,";":18,":":18,".":29,"-":18,",":29}},"Z":{"d":"7,0r0,-19r122,-153r-117,0r0,-32r173,0r0,20r-121,151r124,0r0,33r-181,0","w":194,"k":{"y":11,"w":11,"v":11,"Q":7,"O":7,"G":7,"C":7,"-":18}},"[":{"d":"25,50r0,-278r70,0r0,31r-31,0r0,216r31,0r0,31r-70,0","w":109},"\\":{"d":"91,4r-102,-218r22,0r102,218r-22,0","w":101},"]":{"d":"14,50r0,-31r31,0r0,-216r-31,0r0,-31r70,0r0,278r-70,0","w":109},"^":{"d":"130,-117r-39,-75r-38,75r-39,0r67,-126r21,0r66,126r-38,0","w":182},"_":{"d":"0,19r0,-19r180,0r0,19r-180,0","w":180},"`":{"d":"63,-159r-34,-67r29,0r33,67r-28,0","w":119},"a":{"d":"13,-37v2,-37,36,-43,73,-44r0,-19r-66,0r6,-27r95,0r0,127r-31,0r-2,-9v-22,23,-78,13,-75,-28xm47,-39v0,20,30,16,39,7r0,-27v-17,2,-39,2,-39,20","w":140},"b":{"d":"154,-63v0,54,-62,86,-102,54r-2,9r-30,0r0,-204r36,0r0,83v43,-26,98,5,98,58xm56,-36v20,19,66,7,62,-27v3,-34,-39,-47,-62,-28r0,55","w":165,"k":{"\"":11,"x":4,"'":11}},"c":{"d":"128,-9v-42,29,-117,6,-117,-54v0,-61,71,-84,116,-55r0,30v-25,-18,-80,-15,-80,25v0,39,55,42,81,23r0,31","w":140},"d":{"d":"11,-68v-2,-51,59,-78,98,-53r0,-83r36,0r0,204r-35,0r-2,-10r-32,14v-33,-9,-64,-29,-65,-72xm109,-89v-29,-31,-86,10,-53,49v5,6,13,11,20,14r33,-15r0,-48","w":164,"k":{"\"":-14,"'":-14}},"e":{"d":"76,-131v41,0,59,31,56,77r-85,0v5,33,59,34,83,18r0,29v-44,24,-123,5,-119,-56v2,-40,25,-68,65,-68xm100,-77v1,-23,-28,-35,-43,-18v-5,5,-8,11,-9,18r52,0","w":149,"k":{"\"":11,"x":4,"'":11}},"f":{"d":"22,-127v-14,-70,52,-108,98,-65r-21,22v-9,-17,-41,-10,-41,15r0,28r44,0r-7,29r-37,0r0,98r-36,0r0,-98r-22,0r6,-29r16,0","w":96,"k":{"\"":-36,".":11,",":11,"'":-36}},"g":{"d":"68,95v-51,5,-81,-54,-43,-80r-19,-6r29,-37v-43,-25,-25,-103,35,-103v15,0,28,4,39,13v4,-12,23,-9,38,-9r0,28r-24,0v20,44,-13,89,-64,80r-7,11v34,12,82,13,82,57v0,32,-31,43,-66,46xm70,-48v14,0,26,-12,26,-27v0,-15,-13,-25,-26,-26v-14,0,-27,11,-27,26v0,15,13,27,27,27xm39,44v-1,30,61,32,61,5v0,-22,-31,-18,-47,-26v-5,2,-16,11,-14,21","w":146,"k":{"\"":-7,"'":-7}},"h":{"d":"56,-116v28,-28,87,-15,87,38r0,78r-36,0v-5,-36,16,-100,-22,-100v-12,0,-22,8,-29,14r0,86r-36,0r0,-204r36,0r0,88","w":162,"k":{"\"":7,"'":7}},"i":{"d":"23,0r0,-127r36,0r0,127r-36,0xm41,-152r-23,-23r23,-24r24,24","w":82},"j":{"d":"23,91r0,-218r36,0r0,182xm41,-152r-23,-23r23,-24r24,24","w":82},"k":{"d":"103,0r-36,-51v-14,6,-11,30,-11,51r-36,0r0,-204r36,0r0,125r47,-48r40,0r-52,52r54,75r-42,0","w":146,"k":{"q":4,"o":4,"e":4,"d":4,"c":4}},"l":{"d":"56,-42v-2,22,26,15,33,7r0,28v-25,21,-69,11,-69,-34r0,-163r36,0r0,162","w":91},"m":{"d":"131,-110v24,-33,88,-26,88,31r0,79r-36,0v-6,-34,16,-97,-19,-100v-10,0,-21,8,-26,13r0,87r-36,0v-5,-35,16,-97,-20,-100v-10,0,-21,8,-26,13r0,87r-36,0r0,-127r34,0r2,10v17,-18,66,-20,75,7","w":239,"k":{"\"":7,"'":7}},"n":{"d":"56,-116v29,-28,87,-14,87,39r0,77r-36,0v-5,-36,16,-100,-22,-100v-12,0,-22,8,-29,14r0,86r-36,0r0,-127r34,0","w":162,"k":{"\"":7,"'":7}},"o":{"d":"82,-131v43,0,72,26,72,68v0,42,-29,67,-72,67v-42,0,-71,-25,-71,-67v0,-43,29,-68,71,-68xm82,-26v22,0,36,-15,36,-37v0,-23,-14,-38,-36,-38v-22,0,-35,16,-35,38v0,22,14,37,35,37","w":164,"k":{"\"":11,"x":4,"'":11}},"p":{"d":"85,-131v35,9,68,27,69,72v1,50,-57,78,-98,53r0,88r-36,0r0,-209r35,0r2,10xm56,-38v25,27,78,0,58,-39v-6,-12,-16,-20,-29,-24r-29,15r0,48","w":164,"k":{"\"":11,"x":4,"'":11}},"q":{"d":"11,-64v0,-54,62,-86,102,-54r3,-9r29,0r0,209r-36,0r0,-88v-43,26,-98,-6,-98,-58xm109,-91v-21,-20,-62,-5,-62,27v0,32,39,48,62,28r0,-55","w":165},"r":{"d":"103,-97v-14,-6,-41,-2,-47,9r0,88r-36,0r0,-127r34,0r2,13v7,-12,29,-21,47,-15r0,32","w":103,"k":{"\"":-7,".":20,",":20,"'":-7}},"s":{"d":"99,-92v-10,-4,-46,-20,-53,-2v13,24,57,20,57,58v0,44,-61,46,-89,31r0,-32v12,5,24,11,40,12v22,1,17,-17,3,-21v-18,-11,-43,-17,-44,-45v-3,-44,56,-47,86,-31r0,30","w":115},"t":{"d":"101,-3v-36,17,-84,1,-78,-49r0,-46r-23,0r6,-29r17,0r0,-50r36,0r0,50r41,0r-6,29r-35,0v-2,37,-4,87,42,67r0,28","w":108,"k":{"\"":-7,"'":-7}},"u":{"d":"56,-127v-2,45,-9,129,47,89r0,-89r36,0r0,127r-33,0r-2,-8v-31,25,-84,9,-84,-42r0,-77r36,0","w":158},"v":{"d":"84,0r-36,0r-46,-127r35,0r29,86r28,-86r36,0","w":131,"k":{".":14,",":14}},"w":{"d":"64,-45r25,-82r27,0r25,82r27,-82r35,0r-45,127r-30,0r-25,-72r-26,72r-29,0r-46,-127r35,0","w":205,"k":{".":14,",":14}},"x":{"d":"82,-63r43,63r-40,0r-21,-37r-22,37r-40,0r43,-63r-43,-64r40,0r22,37r21,-37r40,0","w":127,"k":{"q":4,"o":4,"d":4,"c":4}},"y":{"d":"130,-127r-77,209r-35,0r30,-82r-46,-127r35,0r29,86r28,-86r36,0","w":131,"k":{".":14,",":14}},"z":{"d":"112,0r-103,0r0,-17r56,-82r-55,0r0,-28r100,0r0,16r-55,83r57,0r0,28","w":120},"{":{"d":"76,17v-3,22,21,26,39,30r-3,30v-39,-6,-71,-21,-73,-64v0,-22,8,-40,7,-63v0,-21,-20,-27,-37,-30r0,-20v17,-4,41,-10,37,-31v-11,-64,-5,-126,66,-126r3,29v-18,4,-41,8,-39,30v5,43,15,99,-28,108v43,7,33,65,28,107","w":122},"|":{"d":"38,68r0,-324r19,0r0,324r-19,0","w":95},"}":{"d":"113,-80v-17,3,-37,9,-37,30v0,37,17,88,-14,107v-14,9,-31,17,-51,20r-4,-30v18,-4,39,-7,39,-30v1,-23,-7,-41,-7,-63v0,-25,17,-38,35,-44v-18,-6,-35,-21,-35,-45v0,-22,8,-40,7,-63v0,-22,-21,-26,-39,-30r4,-29v38,6,72,20,72,63v1,23,-7,41,-7,63v0,22,20,27,37,31r0,20","w":122},"~":{"d":"201,-117v2,65,-80,56,-119,31v-19,-13,-42,1,-44,22r-25,0v-2,-65,80,-58,119,-32v19,12,43,1,44,-21r25,0","w":213},"!":{"d":"66,-66r-21,0r-13,-138r47,0xm55,6r-28,-28r28,-28r29,28","w":110},"\"":{"d":"101,-133r-17,0r-11,-71r38,0xm42,-133r-18,0r-10,-71r38,0","w":125,"k":{"t":-11,"q":11,"o":11,"l":-14,"k":-14,"h":-14,"g":11,"f":-7,"e":11,"d":11,"c":11,"b":-14,"A":22}},"#":{"d":"201,-124r-46,0r-10,44r46,0r-5,25r-46,0r-13,55r-26,0r13,-55r-34,0r-12,55r-26,0r12,-55r-45,0r5,-25r46,0r10,-44r-46,0r6,-25r45,0r13,-55r26,0r-12,55r33,0r12,-55r27,0r-13,55r45,0xm96,-124r-10,44r33,0r10,-44r-33,0","w":215},"$":{"d":"93,-121v26,15,57,30,57,69v0,34,-25,52,-57,57r0,34r-15,0r0,-34v-22,0,-38,-7,-55,-15r0,-40v17,8,34,18,55,20r0,-56v-23,-18,-56,-28,-56,-68v0,-36,24,-52,56,-57r0,-32r15,0r0,31v19,1,34,7,46,14r0,39v-16,-9,-27,-16,-46,-17r0,55xm78,-176v-26,5,-23,37,0,46r0,-46xm93,-30v28,-4,22,-39,0,-47r0,47","w":171},"%":{"d":"54,-211v26,0,44,15,44,42v0,26,-18,41,-44,41v-26,0,-43,-15,-43,-41v0,-27,18,-42,43,-42xm64,6r-16,0r92,-217r17,0xm150,-78v26,0,43,15,43,41v0,26,-17,41,-43,41v-26,0,-44,-16,-44,-41v0,-26,18,-41,44,-41xm54,-150v11,0,21,-9,21,-19v0,-11,-9,-19,-21,-19v-11,0,-20,8,-20,19v0,10,10,19,20,19xm150,-18v11,1,20,-8,20,-19v0,-12,-8,-19,-20,-19v-12,0,-20,7,-20,19v0,11,8,20,20,19","w":204},"\u00a0":{"w":64}}});
;
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * Copyright (C) 2003, Emigre Inc.; Designed by Jonathan Barnbrook
 * 
 * Trademark:
 * PrioriSanBold is a trademark of Emigre, Inc.
 * 
 * Manufacturer:
 * Jonathan Barnbrook
 * 
 * Designer:
 * Jonathan Barnbrook
 * 
 * Vendor URL:
 * http://www.emigre.com
 * 
 * License information:
 * http://www.emigre.com/EUL.php
 */
Cufon.registerFont({"w":90,"face":{"font-family":"PrioriSanBold","font-weight":700,"font-stretch":"normal","units-per-em":"360","panose-1":"2 0 8 6 3 0 0 2 0 3","ascent":"288","descent":"-72","x-height":"4","bbox":"-11 -257 283 95.299","underline-thickness":"14.76","underline-position":"-55.8","unicode-range":"U+0020-U+007E"},"glyphs":{" ":{"w":64},"&":{"d":"178,-40v4,13,26,23,35,5v30,17,2,41,-23,41v-18,1,-30,-9,-37,-19v-44,36,-142,19,-137,-50v2,-37,27,-56,54,-69r-43,-61r0,-11r152,0r0,33r-93,0r72,103v6,-12,10,-28,15,-41r31,0v-6,26,-13,49,-26,69xm54,-65v0,41,55,48,81,26r-48,-68v-16,8,-33,19,-33,42","w":230},"'":{"d":"42,-133r-18,0r-10,-71r38,0","w":66,"k":{"t":-11,"q":11,"o":11,"l":-14,"k":-14,"h":-14,"g":11,"f":-7,"e":11,"d":11,"c":11,"b":-14,"A":22}},"(":{"d":"60,-86v0,61,33,94,65,125r-23,23v-60,-40,-108,-144,-58,-229v14,-26,35,-47,58,-66r23,23v-33,30,-65,64,-65,124","w":132},")":{"d":"31,-233v59,40,108,144,57,228v-15,25,-35,49,-58,67r-23,-23v33,-30,65,-64,65,-125v0,-60,-32,-94,-64,-124","w":132},"*":{"d":"85,-143r44,40r-25,18r-25,-54r-25,54r-24,-18r43,-40r-59,-7r10,-29r51,29r-12,-58r31,0r-11,58r51,-29r9,29","w":157},"+":{"d":"122,-80r0,80r-25,0r0,-80r-79,0r0,-24r79,0r0,-79r25,0r0,79r79,0r0,24r-79,0","w":218},",":{"d":"42,15v0,-19,-14,-28,-25,-39r25,-26v34,13,42,79,6,98v-8,7,-21,11,-30,14r0,-7v12,-8,24,-20,24,-40","k":{"\"":22,"Y":29,"W":18,"V":14,"T":32,"Q":14,"O":14,"G":14,"C":14,"0":7,"'":22}},"-":{"d":"18,-63r0,-24r63,0r0,24r-63,0","w":99,"k":{"Z":18,"Y":18,"X":14,"W":11,"V":11,"T":22,"A":7}},".":{"d":"45,6r-28,-28r28,-28r28,28","k":{"\"":22,"Y":29,"W":18,"V":14,"T":32,"Q":14,"O":14,"G":14,"C":14,"0":7,"'":22}},"\/":{"d":"26,4r-22,0r101,-218r22,0","w":130},"0":{"d":"92,-211v98,6,98,211,0,217v-101,-4,-99,-213,0,-217xm92,-30v49,-11,47,-133,0,-145v-49,10,-50,135,0,145","w":182,"k":{"7":7,".":14,",":14}},"1":{"d":"30,0r0,-201r39,-11r0,212r-39,0","w":99},"2":{"d":"81,-211v72,-6,85,82,44,125r-49,52r76,0r0,34r-138,0r0,-17r90,-101v18,-23,8,-60,-23,-59v-21,0,-33,16,-35,37r-35,0v2,-43,28,-68,70,-71","w":169,"k":{"7":7,"6":7,"4":7}},"3":{"d":"104,-65v0,-28,-31,-38,-54,-25r-16,-21v25,-14,51,-30,63,-58r-81,0r0,-35r123,0v3,41,-17,64,-33,83v20,10,37,25,37,55v0,72,-94,92,-136,47r23,-28v17,24,74,25,74,-18","w":161},"4":{"d":"132,-50r0,50r-38,0r0,-50r-84,0r-6,-17r96,-137r32,0r0,120r29,0r0,34r-29,0xm94,-154r-47,70r47,0r0,-70","w":168,"k":{"7":7}},"5":{"d":"108,-66v0,-35,-44,-48,-68,-29r-16,-4r8,-105r110,0r0,34r-79,0r-3,34v52,-9,88,22,90,70v3,73,-99,90,-145,48r22,-28v21,25,81,24,81,-20","w":167},"6":{"d":"94,6v-95,4,-89,-131,-33,-173v27,-21,63,-38,107,-42r0,30v-41,7,-75,21,-95,49v49,-8,92,17,92,67v0,41,-28,67,-71,69xm87,-102v-22,0,-32,4,-32,26v0,27,14,50,40,49v21,-1,34,-16,34,-36v0,-24,-18,-39,-42,-39","w":186},"7":{"d":"63,0r-41,0r78,-171r-93,0r0,-33r131,0r9,13","w":153,"k":{"6":11,"4":11,"0":7,".":25,",":25}},"8":{"d":"85,-211v65,-5,85,80,32,103v59,30,37,117,-32,114v-39,-1,-67,-22,-67,-59v0,-28,16,-41,35,-54v-18,-12,-32,-25,-32,-50v0,-35,28,-51,64,-54xm85,-177v-34,0,-31,41,-7,48v15,13,30,-10,34,-25v-1,-13,-11,-23,-27,-23xm85,-28v48,-3,27,-56,-1,-66v-12,9,-28,19,-28,38v0,14,12,30,29,28","w":170},"9":{"d":"93,-211v68,-3,92,76,64,133v-23,49,-74,76,-139,83r0,-31v42,-6,75,-20,95,-48v-50,7,-92,-18,-92,-68v0,-41,30,-67,72,-69xm129,-109v7,-34,-5,-69,-38,-68v-20,1,-32,15,-34,35v-2,36,44,47,72,33","w":186,"k":{"4":7}},":":{"d":"45,-77r-28,-27r28,-28r28,28xm45,6r-28,-28r28,-28r28,28","k":{"Y":18,"W":11,"V":7,"T":25}},";":{"d":"45,-77r-28,-27r28,-28r28,28xm44,15v-1,-19,-13,-29,-25,-39r26,-26v34,14,41,78,6,98v-8,7,-22,11,-30,14r0,-7v12,-8,25,-19,23,-40","k":{"Y":18,"W":11,"V":7,"T":25}},"\u037e":{"d":"45,-77r-28,-27r28,-28r28,28xm44,15v-1,-19,-13,-29,-25,-39r26,-26v34,14,41,78,6,98v-8,7,-22,11,-30,14r0,-7v12,-8,25,-19,23,-40"},"<":{"d":"131,-15r-117,-65r0,-22r117,-66r0,35r-77,42r77,41r0,35","w":145},"=":{"d":"18,-105r0,-25r149,0r0,25r-149,0xm18,-54r0,-24r149,0r0,24r-149,0","w":185},">":{"d":"14,-15r0,-35r77,-41r-77,-42r0,-35r117,66r0,22","w":145},"?":{"d":"18,-203v57,-25,143,11,111,80v-11,24,-34,39,-62,46r-3,11r-23,0r-8,-32v30,-6,63,-18,64,-51v2,-37,-54,-33,-79,-20r0,-34xm53,6r-28,-28r28,-28r28,28","w":145},"@":{"d":"283,-26v-21,55,-61,97,-134,97v-83,0,-135,-52,-135,-135v0,-89,58,-147,146,-147v67,0,110,38,110,106v0,57,-31,103,-85,107v-18,1,-27,-14,-25,-32v-13,31,-89,49,-85,-8v4,-53,34,-100,86,-105v13,-1,20,9,27,14r4,-14r25,0r-32,117v0,7,1,13,9,12v39,-8,61,-46,61,-91v0,-55,-35,-89,-92,-89v-79,0,-124,57,-124,136v0,69,42,113,111,113v65,0,100,-35,121,-81r12,0xm118,-21v37,-9,61,-49,61,-90v0,-12,-6,-20,-17,-20v-35,8,-54,51,-59,90v-1,12,5,20,15,20","w":292},"A":{"d":"154,0r-20,-58r-70,0r-20,58r-40,0r79,-204r33,0r79,204r-41,0xm99,-156r-24,69r48,0","w":199,"k":{"\"":22,"y":4,"w":4,"v":4,"Y":18,"W":17,"V":13,"U":7,"T":18,"Q":7,"O":7,"G":7,"C":7,"-":7,"'":22}},"B":{"d":"142,-107v18,10,30,24,30,49v0,67,-77,58,-145,58r0,-204v66,-2,135,-6,136,56v0,16,-7,29,-21,41xm66,-121v28,0,56,6,56,-24v0,-28,-27,-28,-56,-27r0,51xm66,-33v32,1,65,2,65,-29v-1,-27,-33,-31,-65,-29r0,58","w":187,"k":{"Y":13,"X":4,"W":7,"V":7,"T":10}},"C":{"d":"203,-8v-78,35,-188,0,-188,-94v0,-94,107,-130,188,-95r0,39v-16,-9,-41,-18,-68,-18v-47,1,-76,29,-78,74v-4,75,93,88,146,56r0,38","w":218,"k":{"y":11,"w":11,"v":11,"t":7,"f":7,"Y":4,"T":7,"Q":5,"O":5,"G":5,"C":5,"-":22}},"D":{"d":"27,-204v100,-6,185,10,185,102v0,92,-84,109,-185,102r0,-204xm66,-35v61,5,106,-12,106,-67v0,-54,-45,-72,-106,-68r0,135","w":227,"k":{"Z":7,"Y":14,"X":7,"W":7,"V":7,"T":14,"S":4,"A":7,".":14,",":14}},"E":{"d":"27,0r0,-204r123,0r0,34r-84,0r0,50r63,0r0,34r-63,0r0,52r89,0r0,34r-128,0","w":170,"k":{"y":7,"w":7,"v":7,"t":4,"f":7,"T":11,"Q":9,"O":9,"G":9,"C":9,"-":7}},"F":{"d":"66,-170r0,50r61,0r0,34r-61,0r0,86r-39,0r0,-204r116,0r0,34r-77,0","w":155,"k":{"z":7,"y":7,"x":7,"w":7,"v":7,"u":18,"t":11,"s":18,"r":18,"q":18,"p":18,"o":18,"n":18,"m":18,"l":7,"k":7,"j":14,"i":14,"h":7,"g":18,"f":14,"e":18,"d":18,"c":18,"b":7,"a":18,"X":4,"T":11,"Q":9,"O":9,"G":9,"C":9,"A":18,".":34,",":34}},"G":{"d":"203,-8v-78,35,-188,0,-188,-94v0,-94,107,-130,188,-95r0,39v-54,-34,-148,-18,-146,56v2,56,50,83,108,70r0,-66r38,0r0,90","w":226,"k":{"Y":8,"T":8}},"H":{"d":"160,0r0,-86r-94,0r0,86r-39,0r0,-204r39,0r0,84r94,0r0,-84r39,0r0,204r-39,0","w":225},"I":{"d":"28,0r0,-204r39,0r0,204r-39,0","w":95},"J":{"d":"27,93r0,-297r39,0r0,258","w":92},"K":{"d":"150,0r-69,-90r-15,15r0,75r-39,0r0,-204r39,0r0,85r84,-85r45,0r-87,87r88,117r-46,0","w":199,"k":{"y":11,"w":11,"v":11,"u":7,"t":7,"q":7,"o":7,"f":7,"e":7,"d":7,"c":7,"Q":14,"O":14,"G":14,"C":14,"-":14}},"L":{"d":"27,0r0,-204r39,0r0,170r104,0r0,34r-143,0","w":173,"k":{"\"":29,"y":11,"w":11,"v":11,"Y":25,"W":25,"V":22,"U":7,"T":29,"Q":11,"O":11,"G":11,"C":11,"-":22,"'":29}},"M":{"d":"208,0r0,-115r-58,115r-29,0r-57,-115r0,115r-37,0r0,-204r30,0r79,157r79,-157r30,0r0,204r-37,0","w":271},"N":{"d":"164,0r0,-43r-98,-99r0,142r-39,0r0,-204r26,0r111,111r0,-111r39,0r0,204r-39,0","w":229},"O":{"d":"130,-211v99,-6,152,120,82,185v-18,18,-46,33,-82,32v-69,-2,-115,-42,-115,-108v0,-67,47,-105,115,-109xm130,-28v45,0,75,-29,75,-74v0,-44,-28,-74,-75,-74v-47,0,-75,30,-75,74v0,45,30,74,75,74","w":260,"k":{"Z":7,"Y":14,"X":7,"W":7,"V":7,"T":14,"S":4,"A":7,".":14,",":14}},"P":{"d":"27,-204v67,-2,137,-4,136,61v-1,49,-45,63,-97,62r0,81r-39,0r0,-204xm66,-114v29,1,55,-2,56,-29v2,-26,-27,-30,-56,-28r0,57","w":172,"k":{"u":7,"r":7,"q":14,"p":7,"o":14,"n":7,"m":7,"g":7,"e":14,"d":14,"c":14,"a":7,"A":14,".":38,",":38}},"Q":{"d":"130,-211v68,0,112,42,115,109v2,55,-34,82,-70,99r70,0r-6,26v-120,7,-224,-18,-224,-125v0,-67,48,-109,115,-109xm131,-23v47,0,77,-31,77,-77v0,-47,-30,-77,-77,-77v-47,0,-77,30,-77,77v0,46,30,77,77,77","w":260,"k":{"Z":7,"Y":14,"X":7,"W":7,"V":7,"T":14,"S":4,"A":7,".":14,",":14}},"R":{"d":"195,-20v-9,18,-43,33,-65,17v-22,-16,-37,-52,-54,-75r-10,0r0,78r-39,0r0,-204v66,-3,136,-2,134,60v-1,31,-22,49,-44,60v19,18,25,60,58,56v7,-11,13,3,20,8xm66,-110v30,2,54,-5,56,-31v1,-28,-26,-31,-56,-29r0,60","w":191,"k":{"y":7,"w":7,"v":7,"Y":14,"W":11,"V":11,"U":4,"T":14,"Q":7,"O":7,"G":7,"C":7}},"S":{"d":"140,-161v-20,-18,-103,-25,-77,20v30,29,86,33,89,88v3,67,-94,70,-137,41r0,-37v19,8,36,20,63,20v38,0,45,-36,14,-47v-28,-23,-72,-30,-74,-79v-2,-60,82,-67,122,-42r0,36","w":167,"k":{"Y":7,"W":7,"V":7,"T":7,"Q":4,"O":4,"G":4,"C":4}},"T":{"d":"115,-171r0,171r-39,0r0,-171r-72,0r0,-33r183,0r0,33r-72,0","w":190,"k":{"z":42,"y":42,"x":42,"w":42,"v":42,"u":42,"t":18,"s":42,"r":42,"q":42,"p":42,"o":42,"n":42,"m":42,"l":23,"k":23,"j":18,"i":18,"h":23,"g":42,"f":18,"e":42,"d":42,"c":42,"a":42,"S":7,"Q":14,"O":14,"G":14,"C":14,"A":18,";":25,":":25,".":32,"-":22,",":32}},"U":{"d":"64,-77v-6,62,78,53,94,17r0,-144r39,0r0,204r-39,0r0,-20v-14,14,-35,26,-65,24v-43,-2,-67,-29,-68,-75r0,-133r39,0r0,127","w":223},"V":{"d":"113,0r-34,0r-75,-204r41,0r51,145r50,-145r42,0","w":191,"k":{"z":7,"y":7,"x":7,"w":7,"v":7,"u":14,"s":18,"r":14,"q":18,"p":14,"o":18,"n":14,"m":14,"j":14,"i":14,"g":18,"e":18,"d":18,"c":18,"a":18,"Q":7,"O":7,"G":7,"C":7,"A":13,";":7,":":7,".":14,"-":11,",":14}},"W":{"d":"174,-56r57,-148r42,0r-83,204r-25,0r-27,-65r-26,65r-26,0r-82,-204r41,0r57,148r19,-48r-41,-100r38,0r20,55r21,-55r38,0r-41,100","w":276,"k":{"z":7,"y":7,"x":7,"w":7,"v":7,"u":14,"s":18,"r":14,"q":18,"p":14,"o":18,"n":14,"m":14,"i":14,"g":18,"e":18,"d":18,"c":18,"a":18,"Q":7,"O":7,"G":7,"C":7,"A":17,";":11,":":11,".":18,"-":11,",":18}},"X":{"d":"144,0r-45,-71r-46,71r-48,0r72,-103r-71,-101r48,0r45,69r45,-69r47,0r-71,101r72,103r-48,0","w":196,"k":{"y":11,"w":11,"v":11,"u":7,"t":7,"q":7,"o":7,"e":7,"d":7,"c":7,"Q":7,"O":7,"G":7,"C":7,"-":14}},"Y":{"d":"133,-204r43,0r-67,123r0,81r-39,0r0,-81r-67,-123r43,0r44,86","w":179,"k":{"z":18,"y":18,"x":18,"w":18,"v":18,"u":25,"s":25,"r":25,"q":29,"p":25,"o":29,"n":25,"m":25,"j":14,"i":14,"g":29,"f":7,"e":29,"d":29,"c":29,"a":29,"Q":14,"O":14,"G":14,"C":14,"A":18,";":18,":":18,".":29,"-":18,",":29}},"Z":{"d":"7,0r0,-19r122,-153r-117,0r0,-32r173,0r0,20r-121,151r124,0r0,33r-181,0","w":194,"k":{"y":11,"w":11,"v":11,"Q":7,"O":7,"G":7,"C":7,"-":18}},"[":{"d":"25,50r0,-278r70,0r0,31r-31,0r0,216r31,0r0,31r-70,0","w":109},"\\":{"d":"91,4r-102,-218r22,0r102,218r-22,0","w":101},"]":{"d":"14,50r0,-31r31,0r0,-216r-31,0r0,-31r70,0r0,278r-70,0","w":109},"^":{"d":"130,-117r-39,-75r-38,75r-39,0r67,-126r21,0r66,126r-38,0","w":182},"_":{"d":"0,19r0,-19r180,0r0,19r-180,0","w":180},"`":{"d":"63,-159r-34,-67r29,0r33,67r-28,0","w":119},"a":{"d":"13,-37v2,-37,36,-43,73,-44r0,-19r-66,0r6,-27r95,0r0,127r-31,0r-2,-9v-22,23,-78,13,-75,-28xm47,-39v0,20,30,16,39,7r0,-27v-17,2,-39,2,-39,20","w":140},"b":{"d":"154,-63v0,54,-62,86,-102,54r-2,9r-30,0r0,-204r36,0r0,83v43,-26,98,5,98,58xm56,-36v20,19,66,7,62,-27v3,-34,-39,-47,-62,-28r0,55","w":165,"k":{"\"":11,"x":4,"'":11}},"c":{"d":"128,-9v-42,29,-117,6,-117,-54v0,-61,71,-84,116,-55r0,30v-25,-18,-80,-15,-80,25v0,39,55,42,81,23r0,31","w":140},"d":{"d":"11,-68v-2,-51,59,-78,98,-53r0,-83r36,0r0,204r-35,0r-2,-10r-32,14v-33,-9,-64,-29,-65,-72xm109,-89v-29,-31,-86,10,-53,49v5,6,13,11,20,14r33,-15r0,-48","w":164,"k":{"\"":-14,"'":-14}},"e":{"d":"76,-131v41,0,59,31,56,77r-85,0v5,33,59,34,83,18r0,29v-44,24,-123,5,-119,-56v2,-40,25,-68,65,-68xm100,-77v1,-23,-28,-35,-43,-18v-5,5,-8,11,-9,18r52,0","w":149,"k":{"\"":11,"x":4,"'":11}},"f":{"d":"22,-127v-14,-70,52,-108,98,-65r-21,22v-9,-17,-41,-10,-41,15r0,28r44,0r-7,29r-37,0r0,98r-36,0r0,-98r-22,0r6,-29r16,0","w":96,"k":{"\"":-36,".":11,",":11,"'":-36}},"g":{"d":"68,95v-51,5,-81,-54,-43,-80r-19,-6r29,-37v-43,-25,-25,-103,35,-103v15,0,28,4,39,13v4,-12,23,-9,38,-9r0,28r-24,0v20,44,-13,89,-64,80r-7,11v34,12,82,13,82,57v0,32,-31,43,-66,46xm70,-48v14,0,26,-12,26,-27v0,-15,-13,-25,-26,-26v-14,0,-27,11,-27,26v0,15,13,27,27,27xm39,44v-1,30,61,32,61,5v0,-22,-31,-18,-47,-26v-5,2,-16,11,-14,21","w":146,"k":{"\"":-7,"'":-7}},"h":{"d":"56,-116v28,-28,87,-15,87,38r0,78r-36,0v-5,-36,16,-100,-22,-100v-12,0,-22,8,-29,14r0,86r-36,0r0,-204r36,0r0,88","w":162,"k":{"\"":7,"'":7}},"i":{"d":"23,0r0,-127r36,0r0,127r-36,0xm41,-152r-23,-23r23,-24r24,24","w":82},"j":{"d":"23,91r0,-218r36,0r0,182xm41,-152r-23,-23r23,-24r24,24","w":82},"k":{"d":"103,0r-36,-51v-14,6,-11,30,-11,51r-36,0r0,-204r36,0r0,125r47,-48r40,0r-52,52r54,75r-42,0","w":146,"k":{"q":4,"o":4,"e":4,"d":4,"c":4}},"l":{"d":"56,-42v-2,22,26,15,33,7r0,28v-25,21,-69,11,-69,-34r0,-163r36,0r0,162","w":91},"m":{"d":"131,-110v24,-33,88,-26,88,31r0,79r-36,0v-6,-34,16,-97,-19,-100v-10,0,-21,8,-26,13r0,87r-36,0v-5,-35,16,-97,-20,-100v-10,0,-21,8,-26,13r0,87r-36,0r0,-127r34,0r2,10v17,-18,66,-20,75,7","w":239,"k":{"\"":7,"'":7}},"n":{"d":"56,-116v29,-28,87,-14,87,39r0,77r-36,0v-5,-36,16,-100,-22,-100v-12,0,-22,8,-29,14r0,86r-36,0r0,-127r34,0","w":162,"k":{"\"":7,"'":7}},"o":{"d":"82,-131v43,0,72,26,72,68v0,42,-29,67,-72,67v-42,0,-71,-25,-71,-67v0,-43,29,-68,71,-68xm82,-26v22,0,36,-15,36,-37v0,-23,-14,-38,-36,-38v-22,0,-35,16,-35,38v0,22,14,37,35,37","w":164,"k":{"\"":11,"x":4,"'":11}},"p":{"d":"85,-131v35,9,68,27,69,72v1,50,-57,78,-98,53r0,88r-36,0r0,-209r35,0r2,10xm56,-38v25,27,78,0,58,-39v-6,-12,-16,-20,-29,-24r-29,15r0,48","w":164,"k":{"\"":11,"x":4,"'":11}},"q":{"d":"11,-64v0,-54,62,-86,102,-54r3,-9r29,0r0,209r-36,0r0,-88v-43,26,-98,-6,-98,-58xm109,-91v-21,-20,-62,-5,-62,27v0,32,39,48,62,28r0,-55","w":165},"r":{"d":"103,-97v-14,-6,-41,-2,-47,9r0,88r-36,0r0,-127r34,0r2,13v7,-12,29,-21,47,-15r0,32","w":103,"k":{"\"":-7,".":20,",":20,"'":-7}},"s":{"d":"99,-92v-10,-4,-46,-20,-53,-2v13,24,57,20,57,58v0,44,-61,46,-89,31r0,-32v12,5,24,11,40,12v22,1,17,-17,3,-21v-18,-11,-43,-17,-44,-45v-3,-44,56,-47,86,-31r0,30","w":115},"t":{"d":"101,-3v-36,17,-84,1,-78,-49r0,-46r-23,0r6,-29r17,0r0,-50r36,0r0,50r41,0r-6,29r-35,0v-2,37,-4,87,42,67r0,28","w":108,"k":{"\"":-7,"'":-7}},"u":{"d":"56,-127v-2,45,-9,129,47,89r0,-89r36,0r0,127r-33,0r-2,-8v-31,25,-84,9,-84,-42r0,-77r36,0","w":158},"v":{"d":"84,0r-36,0r-46,-127r35,0r29,86r28,-86r36,0","w":131,"k":{".":14,",":14}},"w":{"d":"64,-45r25,-82r27,0r25,82r27,-82r35,0r-45,127r-30,0r-25,-72r-26,72r-29,0r-46,-127r35,0","w":205,"k":{".":14,",":14}},"x":{"d":"82,-63r43,63r-40,0r-21,-37r-22,37r-40,0r43,-63r-43,-64r40,0r22,37r21,-37r40,0","w":127,"k":{"q":4,"o":4,"d":4,"c":4}},"y":{"d":"130,-127r-77,209r-35,0r30,-82r-46,-127r35,0r29,86r28,-86r36,0","w":131,"k":{".":14,",":14}},"z":{"d":"112,0r-103,0r0,-17r56,-82r-55,0r0,-28r100,0r0,16r-55,83r57,0r0,28","w":120},"{":{"d":"76,17v-3,22,21,26,39,30r-3,30v-39,-6,-71,-21,-73,-64v0,-22,8,-40,7,-63v0,-21,-20,-27,-37,-30r0,-20v17,-4,41,-10,37,-31v-11,-64,-5,-126,66,-126r3,29v-18,4,-41,8,-39,30v5,43,15,99,-28,108v43,7,33,65,28,107","w":122},"|":{"d":"38,68r0,-324r19,0r0,324r-19,0","w":95},"}":{"d":"113,-80v-17,3,-37,9,-37,30v0,37,17,88,-14,107v-14,9,-31,17,-51,20r-4,-30v18,-4,39,-7,39,-30v1,-23,-7,-41,-7,-63v0,-25,17,-38,35,-44v-18,-6,-35,-21,-35,-45v0,-22,8,-40,7,-63v0,-22,-21,-26,-39,-30r4,-29v38,6,72,20,72,63v1,23,-7,41,-7,63v0,22,20,27,37,31r0,20","w":122},"~":{"d":"201,-117v2,65,-80,56,-119,31v-19,-13,-42,1,-44,22r-25,0v-2,-65,80,-58,119,-32v19,12,43,1,44,-21r25,0","w":213},"!":{"d":"66,-66r-21,0r-13,-138r47,0xm55,6r-28,-28r28,-28r29,28","w":110},"\"":{"d":"101,-133r-17,0r-11,-71r38,0xm42,-133r-18,0r-10,-71r38,0","w":125,"k":{"t":-11,"q":11,"o":11,"l":-14,"k":-14,"h":-14,"g":11,"f":-7,"e":11,"d":11,"c":11,"b":-14,"A":22}},"#":{"d":"201,-124r-46,0r-10,44r46,0r-5,25r-46,0r-13,55r-26,0r13,-55r-34,0r-12,55r-26,0r12,-55r-45,0r5,-25r46,0r10,-44r-46,0r6,-25r45,0r13,-55r26,0r-12,55r33,0r12,-55r27,0r-13,55r45,0xm96,-124r-10,44r33,0r10,-44r-33,0","w":215},"$":{"d":"93,-121v26,15,57,30,57,69v0,34,-25,52,-57,57r0,34r-15,0r0,-34v-22,0,-38,-7,-55,-15r0,-40v17,8,34,18,55,20r0,-56v-23,-18,-56,-28,-56,-68v0,-36,24,-52,56,-57r0,-32r15,0r0,31v19,1,34,7,46,14r0,39v-16,-9,-27,-16,-46,-17r0,55xm78,-176v-26,5,-23,37,0,46r0,-46xm93,-30v28,-4,22,-39,0,-47r0,47","w":171},"%":{"d":"54,-211v26,0,44,15,44,42v0,26,-18,41,-44,41v-26,0,-43,-15,-43,-41v0,-27,18,-42,43,-42xm64,6r-16,0r92,-217r17,0xm150,-78v26,0,43,15,43,41v0,26,-17,41,-43,41v-26,0,-44,-16,-44,-41v0,-26,18,-41,44,-41xm54,-150v11,0,21,-9,21,-19v0,-11,-9,-19,-21,-19v-11,0,-20,8,-20,19v0,10,10,19,20,19xm150,-18v11,1,20,-8,20,-19v0,-12,-8,-19,-20,-19v-12,0,-20,7,-20,19v0,11,8,20,20,19","w":204},"\u00a0":{"w":64}}});
;
/**
 * Automatic ajax validation
 *
 * @see http://drupal.org/project/ajax
 * @see irc://freenode.net/#drupy
 * @depends Drupal 6
 * @author brendoncrawford
 * @note This file uses a 79 character width limit.
 * 
 * @note
 *   When using an Drupal.Ajax form within a Lightbox/Thickbox which is loaded via
 *   AJAX, be sure to call Drupal.attachBehaviors(LightBoxContainer) where
 *   LightBoxContainer is the DOM element containing the Lightbox/Thickbox.
 * 
 * @see http://drupal.org/node/114774#javascript-behaviors
 *
 */

/**
 * Ajax Forms plugin for thickbox
 * 
 * @param {String} hook
 * @param {Object} args
 * @return {Bool}
 */
Drupal.Ajax.plugins.thickbox = function(hook, args) {
  var tb_init_original;
  if (hook === 'scrollFind') {
    if (args.container.id === 'TB_window') {
      return false;
    }
    else {
      return true;
    }
  }
  else if (hook === 'init') {
    tb_init_original = window.tb_init;
    window.tb_init = function(domChunk){
      tb_init_original(domChunk);
      Drupal.attachBehaviors($('#TB_window'));
    }
  }
  return true;
}


;

