/*
 * jQuery history plugin
 * 
 * sample page: http://www.mikage.to/jquery/jquery_history.html
 *
 * Copyright (c) 2006-2009 Taku Sano (Mikage Sawatari)
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Modified by Lincoln Cooper to add Safari support and only call the callback once during initialization
 * for msie when no initial hash supplied.
 */


jQuery.extend({
	historyCurrentHash: undefined,
	historyCallback: undefined,
	historyIframeSrc: undefined,
	
	historyInit: function(callback, src){
		jQuery.historyCallback = callback;
		if (src) jQuery.historyIframeSrc = src;
		var current_hash = location.hash.replace(/\?.*$/, '');
		
		jQuery.historyCurrentHash = current_hash;
		// if ((jQuery.browser.msie) && (jQuery.browser.version < 8)) {
		if (jQuery.browser.msie) {
			// To stop the callback firing twice during initilization if no hash present
			if (jQuery.historyCurrentHash == '') {
			jQuery.historyCurrentHash = '#';
		}
		
			// add hidden iframe for IE
			jQuery("body").prepend('<iframe id="jQuery_history" style="display: none;"'+
				(jQuery.historyIframeSrc ? ' src="'+jQuery.historyIframeSrc+'"' : '')
				+'></iframe>'
			);
			var ihistory = jQuery("#jQuery_history")[0];
			var iframe = ihistory.contentWindow.document;
			iframe.open();
			iframe.close();
			iframe.location.hash = current_hash;
		}
		else if (jQuery.browser.safari) {
			// etablish back/forward stacks
			jQuery.historyBackStack = [];
			jQuery.historyBackStack.length = history.length;
			jQuery.historyForwardStack = [];
			jQuery.lastHistoryLength = history.length;
			
			jQuery.isFirst = true;
		}
		if(current_hash)
			jQuery.historyCallback(current_hash.replace(/^#/, ''));
		setInterval(jQuery.historyCheck, 100);
	},
	
	historyAddHistory: function(hash) {
		// This makes the looping function do something
		jQuery.historyBackStack.push(hash);
		
		jQuery.historyForwardStack.length = 0; // clear forwardStack (true click occured)
		this.isFirst = true;
	},
	
	historyCheck: function(){
		// if ((jQuery.browser.msie) && (jQuery.browser.version < 8)) {
		if (jQuery.browser.msie) {
			// On IE, check for location.hash of iframe
			var ihistory = jQuery("#jQuery_history")[0];
			var iframe = ihistory.contentDocument || ihistory.contentWindow.document;
			var current_hash = iframe.location.hash.replace(/\?.*$/, '');
			if(current_hash != jQuery.historyCurrentHash) {
			
				location.hash = current_hash;
				jQuery.historyCurrentHash = current_hash;
				jQuery.historyCallback(current_hash.replace(/^#/, ''));
				
			}
		} else if (jQuery.browser.safari) {
			if(jQuery.lastHistoryLength == history.length && jQuery.historyBackStack.length > jQuery.lastHistoryLength) {
				jQuery.historyBackStack.shift();
			}
			if (!jQuery.dontCheck) {
				var historyDelta = history.length - jQuery.historyBackStack.length;
				jQuery.lastHistoryLength = history.length;
				
				if (historyDelta) { // back or forward button has been pushed
					jQuery.isFirst = false;
					if (historyDelta < 0) { // back button has been pushed
						// move items to forward stack
						for (var i = 0; i < Math.abs(historyDelta); i++) jQuery.historyForwardStack.unshift(jQuery.historyBackStack.pop());
					} else { // forward button has been pushed
						// move items to back stack
						for (var i = 0; i < historyDelta; i++) jQuery.historyBackStack.push(jQuery.historyForwardStack.shift());
					}
					var cachedHash = jQuery.historyBackStack[jQuery.historyBackStack.length - 1];
					if (cachedHash != undefined) {
						jQuery.historyCurrentHash = location.hash.replace(/\?.*$/, '');
						jQuery.historyCallback(cachedHash);
					}
				} else if (jQuery.historyBackStack[jQuery.historyBackStack.length - 1] == undefined && !jQuery.isFirst) {
					// back button has been pushed to beginning and URL already pointed to hash (e.g. a bookmark)
					// document.URL doesn't change in Safari
					if (location.hash) {
						var current_hash = location.hash;
						jQuery.historyCallback(location.hash.replace(/^#/, ''));
					} else {
						var current_hash = '';
						jQuery.historyCallback('');
					}
					jQuery.isFirst = true;
				}
			}
		} else {
			// otherwise, check for location.hash
			var current_hash = location.hash.replace(/\?.*$/, '');
			if(current_hash != jQuery.historyCurrentHash) {
				jQuery.historyCurrentHash = current_hash;
				jQuery.historyCallback(current_hash.replace(/^#/, ''));
			}
		}
	},
	historyLoad: function(hash){
		var newhash;
		hash = decodeURIComponent(hash.replace(/\?.*$/, ''));
		
		if (jQuery.browser.safari) {
			newhash = hash;
		}
		else {
			newhash = '#' + hash;
			location.hash = newhash;
		}
		jQuery.historyCurrentHash = newhash;
		
		// if ((jQuery.browser.msie) && (jQuery.browser.version < 8)) {
		if (jQuery.browser.msie) {
			var ihistory = jQuery("#jQuery_history")[0];
			var iframe = ihistory.contentWindow.document;
			iframe.open();
			iframe.close();
			iframe.location.hash = newhash;
			jQuery.lastHistoryLength = history.length;
			jQuery.historyCallback(hash);
		}
		else if (jQuery.browser.safari) {
			jQuery.dontCheck = true;
			// Manually keep track of the history values for Safari
			this.historyAddHistory(hash);
			
			// Wait a while before allowing checking so that Safari has time to update the "history" object
			// correctly (otherwise the check loop would detect a false change in hash).
			var fn = function() {jQuery.dontCheck = false;};
			window.setTimeout(fn, 200);
			jQuery.historyCallback(hash);
			// N.B. "location.hash=" must be the last line of code for Safari as execution stops afterwards.
			//      By explicitly using the "location.hash" command (instead of using a variable set to "location.hash") the
			//      URL in the browser and the "history" object are both updated correctly.
			location.hash = newhash;
		}
		else {
		  jQuery.historyCallback(hash);
		}
	}
});


;
/**
 * jQuery Galleriffic plugin
 *
 * Copyright (c) 2008 Trent Foley (http://trentacular.com)
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Much thanks to primary contributer Ponticlaro (http://www.ponticlaro.com)
 */
;(function($) {
	// Globally keep track of all images by their unique hash.  Each item is an image data object.
	var allImages = {};
	var imageCounter = 0;

	// Galleriffic static class
	$.galleriffic = {
		version: '2.0.1',

		// Strips invalid characters and any leading # characters
		normalizeHash: function(hash) {
			return hash.replace(/^.*#/, '').replace(/\?.*$/, '');
		},

		getImage: function(hash) {
			if (!hash)
				return undefined;

			hash = $.galleriffic.normalizeHash(hash);
			return allImages[hash];
		},

		// Global function that looks up an image by its hash and displays the image.
		// Returns false when an image is not found for the specified hash.
		// @param {String} hash This is the unique hash value assigned to an image.
		gotoImage: function(hash) {
			var imageData = $.galleriffic.getImage(hash);
			if (!imageData)
				return false;

			var gallery = imageData.gallery;
			gallery.gotoImage(imageData);
			
			return true;
		},

		// Removes an image from its respective gallery by its hash.
		// Returns false when an image is not found for the specified hash or the
		// specified owner gallery does match the located images gallery.
		// @param {String} hash This is the unique hash value assigned to an image.
		// @param {Object} ownerGallery (Optional) When supplied, the located images
		// gallery is verified to be the same as the specified owning gallery before
		// performing the remove operation.
		removeImageByHash: function(hash, ownerGallery) {
			var imageData = $.galleriffic.getImage(hash);
			if (!imageData)
				return false;

			var gallery = imageData.gallery;
			if (ownerGallery && ownerGallery != gallery)
				return false;

			return gallery.removeImageByIndex(imageData.index);
		}
	};

	var defaults = {
		delay:                     3000,
		numThumbs:                 20,
		preloadAhead:              40, // Set to -1 to preload all images
		enableTopPager:            false,
		enableBottomPager:         true,
		maxPagesToShow:            7,
		imageContainerSel:         '',
		captionContainerSel:       '',
		controlsContainerSel:      '',
		loadingContainerSel:       '',
		renderSSControls:          true,
		renderNavControls:         true,
		playLinkText:              'Play',
		pauseLinkText:             'Pause',
		prevLinkText:              'Previous',
		nextLinkText:              'Next',
		nextPageLinkText:          'Next &rsaquo;',
		prevPageLinkText:          '&lsaquo; Prev',
		enableHistory:             false,
		enableKeyboardNavigation:  true,
		autoStart:                 false,
		syncTransitions:           false,
		defaultTransitionDuration: 1000,
		onSlideChange:             undefined, // accepts a delegate like such: function(prevIndex, nextIndex) { ... }
		onTransitionOut:           undefined, // accepts a delegate like such: function(slide, caption, isSync, callback) { ... }
		onTransitionIn:            undefined, // accepts a delegate like such: function(slide, caption, isSync) { ... }
		onPageTransitionOut:       undefined, // accepts a delegate like such: function(callback) { ... }
		onPageTransitionIn:        undefined, // accepts a delegate like such: function() { ... }
		onImageAdded:              undefined, // accepts a delegate like such: function(imageData, $li) { ... }
		onImageRemoved:            undefined  // accepts a delegate like such: function(imageData, $li) { ... }
	};

	// Primary Galleriffic initialization function that should be called on the thumbnail container.
	$.fn.galleriffic = function(settings) {
		//  Extend Gallery Object
		$.extend(this, {
			// Returns the version of the script
			version: $.galleriffic.version,

			// Current state of the slideshow
			isSlideshowRunning: false,
			slideshowTimeout: undefined,

			// This function is attached to the click event of generated hyperlinks within the gallery
			clickHandler: function(e, link) {
				this.pause();

				if (!this.enableHistory) {
					// The href attribute holds the unique hash for an image
					var hash = $.galleriffic.normalizeHash($(link).attr('href'));
					$.galleriffic.gotoImage(hash);
					e.preventDefault();
				}
			},

			// Appends an image to the end of the set of images.  Argument listItem can be either a jQuery DOM element or arbitrary html.
			// @param listItem Either a jQuery object or a string of html of the list item that is to be added to the gallery.
			appendImage: function(listItem) {
				this.addImage(listItem, false, false);
				return this;
			},

			// Inserts an image into the set of images.  Argument listItem can be either a jQuery DOM element or arbitrary html.
			// @param listItem Either a jQuery object or a string of html of the list item that is to be added to the gallery.
			// @param {Integer} position The index within the gallery where the item shouold be added.
			insertImage: function(listItem, position) {
				this.addImage(listItem, false, true, position);
				return this;
			},

			// Adds an image to the gallery and optionally inserts/appends it to the DOM (thumbExists)
			// @param listItem Either a jQuery object or a string of html of the list item that is to be added to the gallery.
			// @param {Boolean} thumbExists Specifies whether the thumbnail already exists in the DOM or if it needs to be added.
			// @param {Boolean} insert Specifies whether the the image is appended to the end or inserted into the gallery.
			// @param {Integer} position The index within the gallery where the item shouold be added.
			addImage: function(listItem, thumbExists, insert, position) {
				var $li = ( typeof listItem === "string" ) ? $(listItem) : listItem;				
				var $aThumb = $li.find('a.thumb');
				var slideUrl = $aThumb.attr('href');
				var title = $aThumb.attr('title');
				var $caption = $li.find('.caption').remove();
				var hash = $aThumb.attr('name');

				// Increment the image counter
				imageCounter++;

				// Autogenerate a hash value if none is present or if it is a duplicate
				if (!hash || allImages[''+hash]) {
					hash = imageCounter;
				}

				// Set position to end when not specified
				if (!insert)
					position = this.data.length;
				
				var imageData = {
					title:title,
					slideUrl:slideUrl,
					caption:$caption,
					hash:hash,
					gallery:this,
					index:position
				};

				// Add the imageData to this gallery's array of images
				if (insert) {
					this.data.splice(position, 0, imageData);

					// Reset index value on all imageData objects
					this.updateIndices(position);
				}
				else {
					this.data.push(imageData);
				}

				var gallery = this;

				// Add the element to the DOM
				if (!thumbExists) {
					// Update thumbs passing in addition post transition out handler
					this.updateThumbs(function() {
						var $thumbsUl = gallery.find('ul.thumbs');
						if (insert)
							$thumbsUl.children(':eq('+position+')').before($li);
						else
							$thumbsUl.append($li);
						
						if (gallery.onImageAdded)
							gallery.onImageAdded(imageData, $li);
					});
				}

				// Register the image globally
				allImages[''+hash] = imageData;

				// Setup attributes and click handler
				$aThumb.attr('rel', 'history')
					.attr('href', '#'+hash)
					.removeAttr('name')
					.click(function(e) {
						gallery.clickHandler(e, this);
					});

				return this;
			},

			// Removes an image from the gallery based on its index.
			// Returns false when the index is out of range.
			removeImageByIndex: function(index) {
				if (index < 0 || index >= this.data.length)
					return false;
				
				var imageData = this.data[index];
				if (!imageData)
					return false;
				
				this.removeImage(imageData);
				
				return true;
			},

			// Convenience method that simply calls the global removeImageByHash method.
			removeImageByHash: function(hash) {
				return $.galleriffic.removeImageByHash(hash, this);
			},

			// Removes an image from the gallery.
			removeImage: function(imageData) {
				var index = imageData.index;
				
				// Remove the image from the gallery data array
				this.data.splice(index, 1);
				
				// Remove the global registration
				delete allImages[''+imageData.hash];
				
				// Remove the image's list item from the DOM
				this.updateThumbs(function() {
					var $li = gallery.find('ul.thumbs')
						.children(':eq('+index+')')
						.remove();

					if (gallery.onImageRemoved)
						gallery.onImageRemoved(imageData, $li);
				});

				// Update each image objects index value
				this.updateIndices(index);

				return this;
			},

			// Updates the index values of the each of the images in the gallery after the specified index
			updateIndices: function(startIndex) {
				for (i = startIndex; i < this.data.length; i++) {
					this.data[i].index = i;
				}
				
				return this;
			},

			// Scraped the thumbnail container for thumbs and adds each to the gallery
			initializeThumbs: function() {
				this.data = [];
				var gallery = this;

				this.find('ul.thumbs > li').each(function(i) {
					gallery.addImage($(this), true, false);
				});

				return this;
			},

			isPreloadComplete: false,

			// Initalizes the image preloader
			preloadInit: function() {
				if (this.preloadAhead == 0) return this;
				
				this.preloadStartIndex = this.currentImage.index;
				var nextIndex = this.getNextIndex(this.preloadStartIndex);
				return this.preloadRecursive(this.preloadStartIndex, nextIndex);
			},

			// Changes the location in the gallery the preloader should work
			// @param {Integer} index The index of the image where the preloader should restart at.
			preloadRelocate: function(index) {
				// By changing this startIndex, the current preload script will restart
				this.preloadStartIndex = index;
				return this;
			},

			// Recursive function that performs the image preloading
			// @param {Integer} startIndex The index of the first image the current preloader started on.
			// @param {Integer} currentIndex The index of the current image to preload.
			preloadRecursive: function(startIndex, currentIndex) {
				// Check if startIndex has been relocated
				if (startIndex != this.preloadStartIndex) {
					var nextIndex = this.getNextIndex(this.preloadStartIndex);
					return this.preloadRecursive(this.preloadStartIndex, nextIndex);
				}

				var gallery = this;

				// Now check for preloadAhead count
				var preloadCount = currentIndex - startIndex;
				if (preloadCount < 0)
					preloadCount = this.data.length-1-startIndex+currentIndex;
				if (this.preloadAhead >= 0 && preloadCount > this.preloadAhead) {
					// Do this in order to keep checking for relocated start index
					setTimeout(function() { gallery.preloadRecursive(startIndex, currentIndex); }, 500);
					return this;
				}

				var imageData = this.data[currentIndex];
				if (!imageData)
					return this;

				// If already loaded, continue
				if (imageData.image)
					return this.preloadNext(startIndex, currentIndex); 
				
				// Preload the image
				var image = new Image();
				
				image.onload = function() {
					imageData.image = this;
					gallery.preloadNext(startIndex, currentIndex);
				};

				image.alt = imageData.title;
				image.src = imageData.slideUrl;

				return this;
			},
			
			// Called by preloadRecursive in order to preload the next image after the previous has loaded.
			// @param {Integer} startIndex The index of the first image the current preloader started on.
			// @param {Integer} currentIndex The index of the current image to preload.
			preloadNext: function(startIndex, currentIndex) {
				var nextIndex = this.getNextIndex(currentIndex);
				if (nextIndex == startIndex) {
					this.isPreloadComplete = true;
				} else {
					// Use setTimeout to free up thread
					var gallery = this;
					setTimeout(function() { gallery.preloadRecursive(startIndex, nextIndex); }, 100);
				}

				return this;
			},

			// Safe way to get the next image index relative to the current image.
			// If the current image is the last, returns 0
			getNextIndex: function(index) {
				var nextIndex = index+1;
				if (nextIndex >= this.data.length)
					nextIndex = 0;
				return nextIndex;
			},

			// Safe way to get the previous image index relative to the current image.
			// If the current image is the first, return the index of the last image in the gallery.
			getPrevIndex: function(index) {
				var prevIndex = index-1;
				if (prevIndex < 0)
					prevIndex = this.data.length-1;
				return prevIndex;
			},

			// Pauses the slideshow
			pause: function() {
				this.isSlideshowRunning = false;
				if (this.slideshowTimeout) {
					clearTimeout(this.slideshowTimeout);
					this.slideshowTimeout = undefined;
				}

				if (this.$controlsContainer) {
					this.$controlsContainer
						.find('div.ss-controls a').removeClass().addClass('play')
						.attr('title', this.playLinkText)
						.attr('href', '#play')
						.html(this.playLinkText);
				}
				
				return this;
			},

			// Plays the slideshow
			play: function() {
				this.isSlideshowRunning = true;

				if (this.$controlsContainer) {
					this.$controlsContainer
						.find('div.ss-controls a').removeClass().addClass('pause')
						.attr('title', this.pauseLinkText)
						.attr('href', '#pause')
						.html(this.pauseLinkText);
				}

				if (!this.slideshowTimeout) {
					var gallery = this;
					this.slideshowTimeout = setTimeout(function() { gallery.ssAdvance(); }, this.delay);
				}

				return this;
			},

			// Toggles the state of the slideshow (playing/paused)
			toggleSlideshow: function() {
				if (this.isSlideshowRunning)
					this.pause();
				else
					this.play();

				return this;
			},

			// Advances the slideshow to the next image and delegates navigation to the
			// history plugin when history is enabled
			// enableHistory is true
			ssAdvance: function() {
				if (this.isSlideshowRunning)
					this.next(true);

				return this;
			},

			// Advances the gallery to the next image.
			// @param {Boolean} dontPause Specifies whether to pause the slideshow.
			// @param {Boolean} bypassHistory Specifies whether to delegate navigation to the history plugin when history is enabled.  
			next: function(dontPause, bypassHistory) {
				/*if (this.getNextIndex(this.currentImage.index)<this.currentImage.index)
					return this;
				else*/
					this.gotoIndex(this.getNextIndex(this.currentImage.index), dontPause, bypassHistory);
				return this;
			},

			// Navigates to the previous image in the gallery.
			// @param {Boolean} dontPause Specifies whether to pause the slideshow.
			// @param {Boolean} bypassHistory Specifies whether to delegate navigation to the history plugin when history is enabled.
			previous: function(dontPause, bypassHistory) {
				//alert(this.getNextIndex(this.currentImage.index)+""+this.currentImage.index);
				/*if (this.getNextIndex(this.currentImage.index)>this.currentImage.index)
					return this;
				else*/
					this.gotoIndex(this.getPrevIndex(this.currentImage.index), dontPause, bypassHistory);
				return this;
			},

			// Navigates to the next page in the gallery.
			// @param {Boolean} dontPause Specifies whether to pause the slideshow.
			// @param {Boolean} bypassHistory Specifies whether to delegate navigation to the history plugin when history is enabled.
			nextPage: function(dontPause, bypassHistory) {
				var page = this.getCurrentPage();
				var lastPage = this.getNumPages() - 1;
				if (page < lastPage) {
					var startIndex = page * this.numThumbs;
					var nextPage = startIndex + this.numThumbs;
					this.gotoIndex(nextPage, dontPause, bypassHistory);
				}

				return this;
			},

			// Navigates to the previous page in the gallery.
			// @param {Boolean} dontPause Specifies whether to pause the slideshow.
			// @param {Boolean} bypassHistory Specifies whether to delegate navigation to the history plugin when history is enabled.
			previousPage: function(dontPause, bypassHistory) {
				var page = this.getCurrentPage();
				if (page > 0) {
					var startIndex = page * this.numThumbs;
					var prevPage = startIndex - this.numThumbs;				
					this.gotoIndex(prevPage, dontPause, bypassHistory);
				}
				
				return this;
			},

			// Navigates to the image at the specified index in the gallery
			// @param {Integer} index The index of the image in the gallery to display.
			// @param {Boolean} dontPause Specifies whether to pause the slideshow.
			// @param {Boolean} bypassHistory Specifies whether to delegate navigation to the history plugin when history is enabled.
			gotoIndex: function(index, dontPause, bypassHistory) {
				if (!dontPause)
					this.pause();
				
				if (index < 0) index = 0;
				else if (index >= this.data.length) index = this.data.length-1;
				
				var imageData = this.data[index];
				
				if (!bypassHistory && this.enableHistory)
					$.historyLoad(String(imageData.hash));  // At the moment, historyLoad only accepts string arguments
				else
					this.gotoImage(imageData);

				return this;
			},

			// This function is garaunteed to be called anytime a gallery slide changes.
			// @param {Object} imageData An object holding the image metadata of the image to navigate to.
			gotoImage: function(imageData) {
				var index = imageData.index;

				if (this.onSlideChange)
					this.onSlideChange(this.currentImage.index, index);
				
				this.currentImage = imageData;
				this.preloadRelocate(index);
				
				this.refresh();
				
				return this;
			},

			// Returns the default transition duration value.  The value is halved when not
			// performing a synchronized transition.
			// @param {Boolean} isSync Specifies whether the transitions are synchronized.
			getDefaultTransitionDuration: function(isSync) {
				if (isSync)
					return this.defaultTransitionDuration;
				return this.defaultTransitionDuration / 2;
			},

			// Rebuilds the slideshow image and controls and performs transitions
			refresh: function() {
				var imageData = this.currentImage;
				if (!imageData)
					return this;

				var index = imageData.index;

				// Update Controls
				if (this.$controlsContainer) {
					this.$controlsContainer
						.find('div.nav-controls a.prev').attr('href', '#'+this.data[this.getPrevIndex(index)].hash).end()
						.find('div.nav-controls a.next').attr('href', '#'+this.data[this.getNextIndex(index)].hash);
				}

				var previousSlide = this.$imageContainer.find('span.current').addClass('previous').removeClass('current');
				var previousCaption = 0;

				if (this.$captionContainer) {
					previousCaption = this.$captionContainer.find('span.current').addClass('previous').removeClass('current');
				}

				// Perform transitions simultaneously if syncTransitions is true and the next image is already preloaded
				var isSync = this.syncTransitions && imageData.image;

				// Flag we are transitioning
				var isTransitioning = true;
				var gallery = this;

				var transitionOutCallback = function() {
					// Flag that the transition has completed
					isTransitioning = false;

					// Remove the old slide
					previousSlide.remove();

					// Remove old caption
					if (previousCaption)
						previousCaption.remove();

					if (!isSync) {
						if (imageData.image && imageData.hash == gallery.data[gallery.currentImage.index].hash) {
							gallery.buildImage(imageData, isSync);
						} else {
							// Show loading container
							if (gallery.$loadingContainer) {
								gallery.$loadingContainer.show();
							}
						}
					}
				};

				if (previousSlide.length == 0) {
					// For the first slide, the previous slide will be empty, so we will call the callback immediately
					transitionOutCallback();
				} else {
					if (this.onTransitionOut) {
						this.onTransitionOut(previousSlide, previousCaption, isSync, transitionOutCallback);
					} else {
						previousSlide.fadeTo(this.getDefaultTransitionDuration(isSync), 0.0, transitionOutCallback);
						if (previousCaption)
							previousCaption.fadeTo(this.getDefaultTransitionDuration(isSync), 0.0);
					}
				}

				// Go ahead and begin transitioning in of next image
				if (isSync)
					this.buildImage(imageData, isSync);

				if (!imageData.image) {
					var image = new Image();
					
					// Wire up mainImage onload event
					image.onload = function() {
						imageData.image = this;

						// Only build image if the out transition has completed and we are still on the same image hash
						if (!isTransitioning && imageData.hash == gallery.data[gallery.currentImage.index].hash) {
							gallery.buildImage(imageData, isSync);
						}
					};

					// set alt and src
					image.alt = imageData.title;
					image.src = imageData.slideUrl;
				}

				// This causes the preloader (if still running) to relocate out from the currentIndex
				this.relocatePreload = true;

				return this.syncThumbs();
			},

			// Called by the refresh method after the previous image has been transitioned out or at the same time
			// as the out transition when performing a synchronous transition.
			// @param {Object} imageData An object holding the image metadata of the image to build.
			// @param {Boolean} isSync Specifies whether the transitions are synchronized.
			buildImage: function(imageData, isSync) {
				var gallery = this;
				var nextIndex = this.getNextIndex(imageData.index);

				// Construct new hidden span for the image
				var newSlide = this.$imageContainer
					.append('<span class="image-wrapper current"><a class="advance-link" rel="history" href="#'+this.data[nextIndex].hash+'" title="'+imageData.title+'">&nbsp;</a></span>')
					.find('span.current').css('opacity', '0');
				
				newSlide.find('a')
					.append(imageData.image)
					.click(function(e) {
						gallery.clickHandler(e, this);
					});
				
				var newCaption = 0;
				if (this.$captionContainer) {
					// Construct new hidden caption for the image
					newCaption = this.$captionContainer
						.append('<span class="image-caption current"></span>')
						.find('span.current').css('opacity', '0')
						.append(imageData.caption);
				}

				// Hide the loading conatiner
				if (this.$loadingContainer) {
					this.$loadingContainer.hide();
				}

				// Transition in the new image
				if (this.onTransitionIn) {
					this.onTransitionIn(newSlide, newCaption, isSync);
				} else {
					newSlide.fadeTo(this.getDefaultTransitionDuration(isSync), 1.0);
					if (newCaption)
						newCaption.fadeTo(this.getDefaultTransitionDuration(isSync), 1.0);
				}
				
				if (this.isSlideshowRunning) {
					if (this.slideshowTimeout)
						clearTimeout(this.slideshowTimeout);

					this.slideshowTimeout = setTimeout(function() { gallery.ssAdvance(); }, this.delay);
				}

				return this;
			},

			// Returns the current page index that should be shown for the currentImage
			getCurrentPage: function() {
				return Math.floor(this.currentImage.index / this.numThumbs);
			},

			// Applies the selected class to the current image's corresponding thumbnail.
			// Also checks if the current page has changed and updates the displayed page of thumbnails if necessary.
			syncThumbs: function() {
				var page = this.getCurrentPage();
				if (page != this.displayedPage)
					this.updateThumbs();

				// Remove existing selected class and add selected class to new thumb
				var $thumbs = this.find('ul.thumbs').children();
				$thumbs.filter('.selected').removeClass('selected');
				$thumbs.eq(this.currentImage.index).addClass('selected');

				return this;
			},

			// Performs transitions on the thumbnails container and updates the set of
			// thumbnails that are to be displayed and the navigation controls.
			// @param {Delegate} postTransitionOutHandler An optional delegate that is called after
			// the thumbnails container has transitioned out and before the thumbnails are rebuilt.
			updateThumbs: function(postTransitionOutHandler) {
				var gallery = this;
				var transitionOutCallback = function() {
					// Call the Post-transition Out Handler
					if (postTransitionOutHandler)
						postTransitionOutHandler();
					
					gallery.rebuildThumbs();

					// Transition In the thumbsContainer
					if (gallery.onPageTransitionIn)
						gallery.onPageTransitionIn();
					else
						gallery.show();
				};

				// Transition Out the thumbsContainer
				if (this.onPageTransitionOut) {
					this.onPageTransitionOut(transitionOutCallback);
				} else {
					this.hide();
					transitionOutCallback();
				}

				return this;
			},

			// Updates the set of thumbnails that are to be displayed and the navigation controls.
			rebuildThumbs: function() {
				var needsPagination = this.data.length > this.numThumbs;

				// Rebuild top pager
				if (this.enableTopPager) {
					var $topPager = this.find('div.top');
					if ($topPager.length == 0)
						$topPager = this.prepend('<div class="top pagination"></div>').find('div.top');
					else
						$topPager.empty();

					if (needsPagination)
						this.buildPager($topPager);
				}

				// Rebuild bottom pager
				if (this.enableBottomPager) {
					var $bottomPager = this.find('div.bottom');
					if ($bottomPager.length == 0)
						$bottomPager = this.append('<div class="bottom pagination"></div>').find('div.bottom');
					else
						$bottomPager.empty();

					if (needsPagination)
						this.buildPager($bottomPager);
				}

				var page = this.getCurrentPage();
				var startIndex = page*this.numThumbs;
				var stopIndex = startIndex+this.numThumbs-1;
				if (stopIndex >= this.data.length)
					stopIndex = this.data.length-1;

				// Show/Hide thumbs
				var $thumbsUl = this.find('ul.thumbs');
				$thumbsUl.find('li').each(function(i) {
					var $li = $(this);
					if (i >= startIndex && i <= stopIndex) {
						$li.show();
					} else {
						$li.hide();
					}
				});

				this.displayedPage = page;

				// Remove the noscript class from the thumbs container ul
				$thumbsUl.removeClass('noscript');
				
				return this;
			},

			// Returns the total number of pages required to display all the thumbnails.
			getNumPages: function() {
				return Math.ceil(this.data.length/this.numThumbs);
			},

			// Rebuilds the pager control in the specified matched element.
			// @param {jQuery} pager A jQuery element set matching the particular pager to be rebuilt.
			buildPager: function(pager) {
				var gallery = this;
				var numPages = this.getNumPages();
				var page = this.getCurrentPage();
				var startIndex = page * this.numThumbs;
				var pagesRemaining = this.maxPagesToShow - 1;
				
				var pageNum = page - Math.floor((this.maxPagesToShow - 1) / 2) + 1;
				if (pageNum > 0) {
					var remainingPageCount = numPages - pageNum;
					if (remainingPageCount < pagesRemaining) {
						pageNum = pageNum - (pagesRemaining - remainingPageCount);
					}
				}

				if (pageNum < 0) {
					pageNum = 0;
				}

				// Prev Page Link
				if (page > 0) {
					var prevPage = startIndex - this.numThumbs;
					pager.append('<a rel="history" href="#'+this.data[prevPage].hash+'" title="'+this.prevPageLinkText+'">'+this.prevPageLinkText+'</a>');
				}

				// Create First Page link if needed
				if (pageNum > 0) {
					this.buildPageLink(pager, 0, numPages);
					if (pageNum > 1)
						pager.append('<span class="ellipsis">&hellip;</span>');
					
					pagesRemaining--;
				}

				// Page Index Links
				while (pagesRemaining > 0) {
					this.buildPageLink(pager, pageNum, numPages);
					pagesRemaining--;
					pageNum++;
				}

				// Create Last Page link if needed
				if (pageNum < numPages) {
					var lastPageNum = numPages - 1;
					if (pageNum < lastPageNum)
						pager.append('<span class="ellipsis">&hellip;</span>');

					this.buildPageLink(pager, lastPageNum, numPages);
				}

				// Next Page Link
				var nextPage = startIndex + this.numThumbs;
				if (nextPage < this.data.length) {
					pager.append('<a rel="history" href="#'+this.data[nextPage].hash+'" title="'+this.nextPageLinkText+'">'+this.nextPageLinkText+'</a>');
				}

				pager.find('a').click(function(e) {
					gallery.clickHandler(e, this);
				});

				return this;
			},

			// Builds a single page link within a pager.  This function is called by buildPager
			// @param {jQuery} pager A jQuery element set matching the particular pager to be rebuilt.
			// @param {Integer} pageNum The page number of the page link to build.
			// @param {Integer} numPages The total number of pages required to display all thumbnails.
			buildPageLink: function(pager, pageNum, numPages) {
				var pageLabel = pageNum + 1;
				var currentPage = this.getCurrentPage();
				if (pageNum == currentPage)
					pager.append('<span class="current">'+pageLabel+'</span>');
				else if (pageNum < numPages) {
					var imageIndex = pageNum*this.numThumbs;
					pager.append('<a rel="history" href="#'+this.data[imageIndex].hash+'" title="'+pageLabel+'">'+pageLabel+'</a>');
				}
				
				return this;
			}
		});

		// Now initialize the gallery
		$.extend(this, defaults, settings);
		
		// Verify the history plugin is available
		if (this.enableHistory && !$.historyInit)
			this.enableHistory = false;
		
		// Select containers
		if (this.imageContainerSel) this.$imageContainer = $(this.imageContainerSel);
		if (this.captionContainerSel) this.$captionContainer = $(this.captionContainerSel);
		if (this.loadingContainerSel) this.$loadingContainer = $(this.loadingContainerSel);

		// Initialize the thumbails
		this.initializeThumbs();
		
		if (this.maxPagesToShow < 3)
			this.maxPagesToShow = 3;

		this.displayedPage = -1;
		this.currentImage = this.data[0];
		var gallery = this;

		// Hide the loadingContainer
		if (this.$loadingContainer)
			this.$loadingContainer.hide();

		// Setup controls
		if (this.controlsContainerSel) {
			this.$controlsContainer = $(this.controlsContainerSel).empty();
			
			if (this.renderSSControls) {
				if (this.autoStart) {
					this.$controlsContainer
						.append('<div class="ss-controls"><a href="#pause" class="pause" title="'+this.pauseLinkText+'">'+this.pauseLinkText+'</a></div>');
				} else {
					this.$controlsContainer
						.append('<div class="ss-controls"><a href="#play" class="play" title="'+this.playLinkText+'">'+this.playLinkText+'</a></div>');
				}

				this.$controlsContainer.find('div.ss-controls a')
					.click(function(e) {
						gallery.toggleSlideshow();
						e.preventDefault();
						return false;
					});
			}
		
			if (this.renderNavControls) {
				this.$controlsContainer
					.append('<div class="nav-controls"><a class="prev" rel="history" title="'+this.prevLinkText+'">'+this.prevLinkText+'</a><a class="next" rel="history" title="'+this.nextLinkText+'">'+this.nextLinkText+'</a></div>')
					.find('div.nav-controls a')
					.click(function(e) {
						gallery.clickHandler(e, this);
					});
			}
		}

		var initFirstImage = !this.enableHistory || !location.hash;
		if (this.enableHistory && location.hash) {
			var hash = $.galleriffic.normalizeHash(location.hash);
			var imageData = allImages[hash];
			if (!imageData)
				initFirstImage = true;
		}

		// Setup gallery to show the first image
		if (initFirstImage)
			this.gotoIndex(0, false, true);

		// Setup Keyboard Navigation
		if (this.enableKeyboardNavigation) {
			$(document).keydown(function(e) {
				var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
				switch(key) {
					case 32: // space
						gallery.next();
						e.preventDefault();
						break;
					case 33: // Page Up
						gallery.previousPage();
						e.preventDefault();
						break;
					case 34: // Page Down
						gallery.nextPage();
						e.preventDefault();
						break;
					case 35: // End
						gallery.gotoIndex(gallery.data.length-1);
						e.preventDefault();
						break;
					case 36: // Home
						gallery.gotoIndex(0);
						e.preventDefault();
						break;
					case 37: // left arrow
						gallery.previous();
						e.preventDefault();
						break;
					case 39: // right arrow
						gallery.next();
						e.preventDefault();
						break;
				}
			});
		}

		// Auto start the slideshow
		if (this.autoStart)
			this.play();

		// Kickoff Image Preloader after 1 second
		setTimeout(function() { gallery.preloadInit(); }, 1000);

		return this;
	};
})(jQuery);
;
/**
 * jQuery Opacity Rollover plugin
 *
 * Copyright (c) 2009 Trent Foley (http://trentacular.com)
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 */
;(function($) {
	var defaults = {
		mouseOutOpacity:   0.67,
		mouseOverOpacity:  1.0,
		fadeSpeed:         'fast',
		exemptionSelector: '.selected'
	};

	$.fn.opacityrollover = function(settings) {
		// Initialize the effect
		$.extend(this, defaults, settings);

		var config = this;

		function fadeTo(element, opacity) {
			var $target = $(element);
			
			if (config.exemptionSelector)
				$target = $target.not(config.exemptionSelector);	
			
			$target.fadeTo(config.fadeSpeed, opacity);
		}

		this.css('opacity', this.mouseOutOpacity)
			.hover(
				function () {
					fadeTo(this, config.mouseOverOpacity);
				},
				function () {
					fadeTo(this, config.mouseOutOpacity);
				});

		return this;
	};
})(jQuery);
;
/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
 * Licensed under the MIT License (LICENSE.txt).
 *
 * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
 * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
 * Thanks to: Seamus Leahy for adding deltaX and deltaY
 *
 * Version: 3.0.4
 * 
 * Requires: 1.2.2+
 */

(function($) {

var types = ['DOMMouseScroll', 'mousewheel'];

$.event.special.mousewheel = {
    setup: function() {
        if ( this.addEventListener ) {
            for ( var i=types.length; i; ) {
                this.addEventListener( types[--i], handler, false );
            }
        } else {
            this.onmousewheel = handler;
        }
    },
    
    teardown: function() {
        if ( this.removeEventListener ) {
            for ( var i=types.length; i; ) {
                this.removeEventListener( types[--i], handler, false );
            }
        } else {
            this.onmousewheel = null;
        }
    }
};

$.fn.extend({
    mousewheel: function(fn) {
        return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
    },
    
    unmousewheel: function(fn) {
        return this.unbind("mousewheel", fn);
    }
});


function handler(event) {
    var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
    event = $.event.fix(orgEvent);
    event.type = "mousewheel";
    
    // Old school scrollwheel delta
    if ( event.wheelDelta ) { delta = event.wheelDelta/120; }
    if ( event.detail     ) { delta = -event.detail/3; }
    
    // New school multidimensional scroll (touchpads) deltas
    deltaY = delta;
    
    // Gecko
    if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
        deltaY = 0;
        deltaX = -1*delta;
    }
    
    // Webkit
    if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
    if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
    
    // Add event and delta to the front of the arguments
    args.unshift(event, delta, deltaX, deltaY);
    
    return $.event.handle.apply(this, args);
}

})(jQuery);;
/*
 * jScrollPane - v2.0.0beta9 - 2011-02-04
 * http://jscrollpane.kelvinluck.com/
 *
 * Copyright (c) 2010 Kelvin Luck
 * Dual licensed under the MIT and GPL licenses.
 */
(function(b,a,c){b.fn.jScrollPane=function(f){function d(D,N){var ay,P=this,X,aj,w,al,S,Y,z,r,az,aE,au,j,I,i,k,Z,T,ap,W,u,B,aq,ae,am,G,m,at,ax,y,av,aH,g,K,ai=true,O=true,aG=false,l=false,ao=D.clone(false,false).empty(),ab=b.fn.mwheelIntent?"mwheelIntent.jsp":"mousewheel.jsp";aH=D.css("paddingTop")+" "+D.css("paddingRight")+" "+D.css("paddingBottom")+" "+D.css("paddingLeft");g=(parseInt(D.css("paddingLeft"),10)||0)+(parseInt(D.css("paddingRight"),10)||0);function ar(aQ){var aO,aP,aK,aM,aL,aJ,aI,aN;ay=aQ;if(X===c){aI=D.scrollTop();aN=D.scrollLeft();D.css({overflow:"hidden",padding:0});aj=D.innerWidth()+g;w=D.innerHeight();D.width(aj);X=b('<div class="jspPane" />').css("padding",aH).append(D.children());al=b('<div class="jspContainer" />').css({width:aj+"px",height:w+"px"}).append(X).appendTo(D)}else{D.css("width","");aJ=D.innerWidth()+g!=aj||D.outerHeight()!=w;if(aJ){aj=D.innerWidth()+g;w=D.innerHeight();al.css({width:aj+"px",height:w+"px"})}if(!aJ&&K==S&&X.outerHeight()==Y){D.width(aj);return}K=S;X.css("width","");D.width(aj);al.find(">.jspVerticalBar,>.jspHorizontalBar").remove().end()}aO=X.clone(false,false).css("position","absolute");aP=b('<div style="width:1px; position: relative;" />').append(aO);b("body").append(aP);S=Math.max(X.outerWidth(),aO.outerWidth());aP.remove();Y=X.outerHeight();z=S/aj;r=Y/w;az=r>1;aE=z>1;if(!(aE||az)){D.removeClass("jspScrollable");X.css({top:0,width:al.width()-g});o();E();Q();x();ah()}else{D.addClass("jspScrollable");aK=ay.maintainPosition&&(I||Z);if(aK){aM=aC();aL=aA()}aF();A();F();if(aK){M(aM,false);L(aL,false)}J();af();an();if(ay.enableKeyboardNavigation){R()}if(ay.clickOnTrack){q()}C();if(ay.hijackInternalLinks){n()}}if(ay.autoReinitialise&&!av){av=setInterval(function(){ar(ay)},ay.autoReinitialiseDelay)}else{if(!ay.autoReinitialise&&av){clearInterval(av)}}aI&&D.scrollTop(0)&&L(aI,false);aN&&D.scrollLeft(0)&&M(aN,false);D.trigger("jsp-initialised",[aE||az])}function aF(){if(az){al.append(b('<div class="jspVerticalBar" />').append(b('<div class="jspCap jspCapTop" />'),b('<div class="jspTrack" />').append(b('<div class="jspDrag" />').append(b('<div class="jspDragTop" />'),b('<div class="jspDragBottom" />'))),b('<div class="jspCap jspCapBottom" />')));T=al.find(">.jspVerticalBar");ap=T.find(">.jspTrack");au=ap.find(">.jspDrag");if(ay.showArrows){aq=b('<a class="jspArrow jspArrowUp" />').bind("mousedown.jsp",aD(0,-1)).bind("click.jsp",aB);ae=b('<a class="jspArrow jspArrowDown" />').bind("mousedown.jsp",aD(0,1)).bind("click.jsp",aB);if(ay.arrowScrollOnHover){aq.bind("mouseover.jsp",aD(0,-1,aq));ae.bind("mouseover.jsp",aD(0,1,ae))}ak(ap,ay.verticalArrowPositions,aq,ae)}u=w;al.find(">.jspVerticalBar>.jspCap:visible,>.jspVerticalBar>.jspArrow").each(function(){u-=b(this).outerHeight()});au.hover(function(){au.addClass("jspHover")},function(){au.removeClass("jspHover")}).bind("mousedown.jsp",function(aI){b("html").bind("dragstart.jsp selectstart.jsp",aB);au.addClass("jspActive");var s=aI.pageY-au.position().top;b("html").bind("mousemove.jsp",function(aJ){U(aJ.pageY-s,false)}).bind("mouseup.jsp mouseleave.jsp",aw);return false});p()}}function p(){ap.height(u+"px");I=0;W=ay.verticalGutter+ap.outerWidth();X.width(aj-W-g);if(T.position().left===0){X.css("margin-left",W+"px")}}function A(){if(aE){al.append(b('<div class="jspHorizontalBar" />').append(b('<div class="jspCap jspCapLeft" />'),b('<div class="jspTrack" />').append(b('<div class="jspDrag" />').append(b('<div class="jspDragLeft" />'),b('<div class="jspDragRight" />'))),b('<div class="jspCap jspCapRight" />')));am=al.find(">.jspHorizontalBar");G=am.find(">.jspTrack");i=G.find(">.jspDrag");if(ay.showArrows){ax=b('<a class="jspArrow jspArrowLeft" />').bind("mousedown.jsp",aD(-1,0)).bind("click.jsp",aB);y=b('<a class="jspArrow jspArrowRight" />').bind("mousedown.jsp",aD(1,0)).bind("click.jsp",aB);
if(ay.arrowScrollOnHover){ax.bind("mouseover.jsp",aD(-1,0,ax));y.bind("mouseover.jsp",aD(1,0,y))}ak(G,ay.horizontalArrowPositions,ax,y)}i.hover(function(){i.addClass("jspHover")},function(){i.removeClass("jspHover")}).bind("mousedown.jsp",function(aI){b("html").bind("dragstart.jsp selectstart.jsp",aB);i.addClass("jspActive");var s=aI.pageX-i.position().left;b("html").bind("mousemove.jsp",function(aJ){V(aJ.pageX-s,false)}).bind("mouseup.jsp mouseleave.jsp",aw);return false});m=al.innerWidth();ag()}}function ag(){al.find(">.jspHorizontalBar>.jspCap:visible,>.jspHorizontalBar>.jspArrow").each(function(){m-=b(this).outerWidth()});G.width(m+"px");Z=0}function F(){if(aE&&az){var aI=G.outerHeight(),s=ap.outerWidth();u-=aI;b(am).find(">.jspCap:visible,>.jspArrow").each(function(){m+=b(this).outerWidth()});m-=s;w-=s;aj-=aI;G.parent().append(b('<div class="jspCorner" />').css("width",aI+"px"));p();ag()}if(aE){X.width((al.outerWidth()-g)+"px")}Y=X.outerHeight();r=Y/w;if(aE){at=Math.ceil(1/z*m);if(at>ay.horizontalDragMaxWidth){at=ay.horizontalDragMaxWidth}else{if(at<ay.horizontalDragMinWidth){at=ay.horizontalDragMinWidth}}i.width(at+"px");k=m-at;ad(Z)}if(az){B=Math.ceil(1/r*u);if(B>ay.verticalDragMaxHeight){B=ay.verticalDragMaxHeight}else{if(B<ay.verticalDragMinHeight){B=ay.verticalDragMinHeight}}au.height(B+"px");j=u-B;ac(I)}}function ak(aJ,aL,aI,s){var aN="before",aK="after",aM;if(aL=="os"){aL=/Mac/.test(navigator.platform)?"after":"split"}if(aL==aN){aK=aL}else{if(aL==aK){aN=aL;aM=aI;aI=s;s=aM}}aJ[aN](aI)[aK](s)}function aD(aI,s,aJ){return function(){H(aI,s,this,aJ);this.blur();return false}}function H(aL,aK,aO,aN){aO=b(aO).addClass("jspActive");var aM,aJ,aI=true,s=function(){if(aL!==0){P.scrollByX(aL*ay.arrowButtonSpeed)}if(aK!==0){P.scrollByY(aK*ay.arrowButtonSpeed)}aJ=setTimeout(s,aI?ay.initialDelay:ay.arrowRepeatFreq);aI=false};s();aM=aN?"mouseout.jsp":"mouseup.jsp";aN=aN||b("html");aN.bind(aM,function(){aO.removeClass("jspActive");aJ&&clearTimeout(aJ);aJ=null;aN.unbind(aM)})}function q(){x();if(az){ap.bind("mousedown.jsp",function(aN){if(aN.originalTarget===c||aN.originalTarget==aN.currentTarget){var aL=b(this),aO=aL.offset(),aM=aN.pageY-aO.top-I,aJ,aI=true,s=function(){var aR=aL.offset(),aS=aN.pageY-aR.top-B/2,aP=w*ay.scrollPagePercent,aQ=j*aP/(Y-w);if(aM<0){if(I-aQ>aS){P.scrollByY(-aP)}else{U(aS)}}else{if(aM>0){if(I+aQ<aS){P.scrollByY(aP)}else{U(aS)}}else{aK();return}}aJ=setTimeout(s,aI?ay.initialDelay:ay.trackClickRepeatFreq);aI=false},aK=function(){aJ&&clearTimeout(aJ);aJ=null;b(document).unbind("mouseup.jsp",aK)};s();b(document).bind("mouseup.jsp",aK);return false}})}if(aE){G.bind("mousedown.jsp",function(aN){if(aN.originalTarget===c||aN.originalTarget==aN.currentTarget){var aL=b(this),aO=aL.offset(),aM=aN.pageX-aO.left-Z,aJ,aI=true,s=function(){var aR=aL.offset(),aS=aN.pageX-aR.left-at/2,aP=aj*ay.scrollPagePercent,aQ=k*aP/(S-aj);if(aM<0){if(Z-aQ>aS){P.scrollByX(-aP)}else{V(aS)}}else{if(aM>0){if(Z+aQ<aS){P.scrollByX(aP)}else{V(aS)}}else{aK();return}}aJ=setTimeout(s,aI?ay.initialDelay:ay.trackClickRepeatFreq);aI=false},aK=function(){aJ&&clearTimeout(aJ);aJ=null;b(document).unbind("mouseup.jsp",aK)};s();b(document).bind("mouseup.jsp",aK);return false}})}}function x(){if(G){G.unbind("mousedown.jsp")}if(ap){ap.unbind("mousedown.jsp")}}function aw(){b("html").unbind("dragstart.jsp selectstart.jsp mousemove.jsp mouseup.jsp mouseleave.jsp");if(au){au.removeClass("jspActive")}if(i){i.removeClass("jspActive")}}function U(s,aI){if(!az){return}if(s<0){s=0}else{if(s>j){s=j}}if(aI===c){aI=ay.animateScroll}if(aI){P.animate(au,"top",s,ac)}else{au.css("top",s);ac(s)}}function ac(aI){if(aI===c){aI=au.position().top}al.scrollTop(0);I=aI;var aL=I===0,aJ=I==j,aK=aI/j,s=-aK*(Y-w);if(ai!=aL||aG!=aJ){ai=aL;aG=aJ;D.trigger("jsp-arrow-change",[ai,aG,O,l])}v(aL,aJ);X.css("top",s);D.trigger("jsp-scroll-y",[-s,aL,aJ]).trigger("scroll")}function V(aI,s){if(!aE){return}if(aI<0){aI=0}else{if(aI>k){aI=k}}if(s===c){s=ay.animateScroll}if(s){P.animate(i,"left",aI,ad)
}else{i.css("left",aI);ad(aI)}}function ad(aI){if(aI===c){aI=i.position().left}al.scrollTop(0);Z=aI;var aL=Z===0,aK=Z==k,aJ=aI/k,s=-aJ*(S-aj);if(O!=aL||l!=aK){O=aL;l=aK;D.trigger("jsp-arrow-change",[ai,aG,O,l])}t(aL,aK);X.css("left",s);D.trigger("jsp-scroll-x",[-s,aL,aK]).trigger("scroll")}function v(aI,s){if(ay.showArrows){aq[aI?"addClass":"removeClass"]("jspDisabled");ae[s?"addClass":"removeClass"]("jspDisabled")}}function t(aI,s){if(ay.showArrows){ax[aI?"addClass":"removeClass"]("jspDisabled");y[s?"addClass":"removeClass"]("jspDisabled")}}function L(s,aI){var aJ=s/(Y-w);U(aJ*j,aI)}function M(aI,s){var aJ=aI/(S-aj);V(aJ*k,s)}function aa(aU,aP,aJ){var aN,aK,aL,s=0,aT=0,aI,aO,aR,aQ,aS;try{aN=b(aU)}catch(aM){return}aK=aN.outerHeight();aL=aN.outerWidth();al.scrollTop(0);al.scrollLeft(0);while(!aN.is(".jspPane")){s+=aN.position().top;aT+=aN.position().left;aN=aN.offsetParent();if(/^body|html$/i.test(aN[0].nodeName)){return}}aI=aA();aO=aI+w;if(s<aI||aP){aQ=s-ay.verticalGutter}else{if(s+aK>aO){aQ=s-w+aK+ay.verticalGutter}}if(aQ){L(aQ,aJ)}viewportLeft=aC();aR=viewportLeft+aj;if(aT<viewportLeft||aP){aS=aT-ay.horizontalGutter}else{if(aT+aL>aR){aS=aT-aj+aL+ay.horizontalGutter}}if(aS){M(aS,aJ)}}function aC(){return -X.position().left}function aA(){return -X.position().top}function af(){al.unbind(ab).bind(ab,function(aL,aM,aK,aI){var aJ=Z,s=I;P.scrollBy(aK*ay.mouseWheelSpeed,-aI*ay.mouseWheelSpeed,false);return aJ==Z&&s==I})}function o(){al.unbind(ab)}function aB(){return false}function J(){X.find(":input,a").unbind("focus.jsp").bind("focus.jsp",function(s){aa(s.target,false)})}function E(){X.find(":input,a").unbind("focus.jsp")}function R(){var s,aI;X.focus(function(){D.focus()});D.attr("tabindex",0).unbind("keydown.jsp keypress.jsp").bind("keydown.jsp",function(aM){if(aM.target!==this){return}var aL=Z,aK=I;switch(aM.keyCode){case 40:case 38:case 34:case 32:case 33:case 39:case 37:s=aM.keyCode;aJ();break;case 35:L(Y-w);s=null;break;case 36:L(0);s=null;break}aI=aM.keyCode==s&&aL!=Z||aK!=I;return !aI}).bind("keypress.jsp",function(aK){if(aK.keyCode==s){aJ()}return !aI});if(ay.hideFocus){D.css("outline","none");if("hideFocus" in al[0]){D.attr("hideFocus",true)}}else{D.css("outline","");if("hideFocus" in al[0]){D.attr("hideFocus",false)}}function aJ(){var aL=Z,aK=I;switch(s){case 40:P.scrollByY(ay.keyboardSpeed,false);break;case 38:P.scrollByY(-ay.keyboardSpeed,false);break;case 34:case 32:P.scrollByY(w*ay.scrollPagePercent,false);break;case 33:P.scrollByY(-w*ay.scrollPagePercent,false);break;case 39:P.scrollByX(ay.keyboardSpeed,false);break;case 37:P.scrollByX(-ay.keyboardSpeed,false);break}aI=aL!=Z||aK!=I;return aI}}function Q(){D.attr("tabindex","-1").removeAttr("tabindex").unbind("keydown.jsp keypress.jsp")}function C(){if(location.hash&&location.hash.length>1){var aJ,aI;try{aJ=b(location.hash)}catch(s){return}if(aJ.length&&X.find(location.hash)){if(al.scrollTop()===0){aI=setInterval(function(){if(al.scrollTop()>0){aa(location.hash,true);b(document).scrollTop(al.position().top);clearInterval(aI)}},50)}else{aa(location.hash,true);b(document).scrollTop(al.position().top)}}}}function ah(){b("a.jspHijack").unbind("click.jsp-hijack").removeClass("jspHijack")}function n(){ah();b("a[href^=#]").addClass("jspHijack").bind("click.jsp-hijack",function(){var s=this.href.split("#"),aI;if(s.length>1){aI=s[1];if(aI.length>0&&X.find("#"+aI).length>0){aa("#"+aI,true);return false}}})}function an(){var aJ,aI,aL,aK,aM,s=false;al.unbind("touchstart.jsp touchmove.jsp touchend.jsp click.jsp-touchclick").bind("touchstart.jsp",function(aN){var aO=aN.originalEvent.touches[0];aJ=aC();aI=aA();aL=aO.pageX;aK=aO.pageY;aM=false;s=true}).bind("touchmove.jsp",function(aQ){if(!s){return}var aP=aQ.originalEvent.touches[0],aO=Z,aN=I;P.scrollTo(aJ+aL-aP.pageX,aI+aK-aP.pageY);aM=aM||Math.abs(aL-aP.pageX)>5||Math.abs(aK-aP.pageY)>5;return aO==Z&&aN==I}).bind("touchend.jsp",function(aN){s=false}).bind("click.jsp-touchclick",function(aN){if(aM){aM=false;return false}})}function h(){var s=aA(),aI=aC();
D.removeClass("jspScrollable").unbind(".jsp");D.replaceWith(ao.append(X.children()));ao.scrollTop(s);ao.scrollLeft(aI)}b.extend(P,{reinitialise:function(aI){aI=b.extend({},ay,aI);ar(aI)},scrollToElement:function(aJ,aI,s){aa(aJ,aI,s)},scrollTo:function(aJ,s,aI){M(aJ,aI);L(s,aI)},scrollToX:function(aI,s){M(aI,s)},scrollToY:function(s,aI){L(s,aI)},scrollToPercentX:function(aI,s){M(aI*(S-aj),s)},scrollToPercentY:function(aI,s){L(aI*(Y-w),s)},scrollBy:function(aI,s,aJ){P.scrollByX(aI,aJ);P.scrollByY(s,aJ)},scrollByX:function(s,aJ){var aI=aC()+s,aK=aI/(S-aj);V(aK*k,aJ)},scrollByY:function(s,aJ){var aI=aA()+s,aK=aI/(Y-w);U(aK*j,aJ)},positionDragX:function(s,aI){V(s,aI)},positionDragY:function(aI,s){V(aI,s)},animate:function(aI,aL,s,aK){var aJ={};aJ[aL]=s;aI.animate(aJ,{duration:ay.animateDuration,ease:ay.animateEase,queue:false,step:aK})},getContentPositionX:function(){return aC()},getContentPositionY:function(){return aA()},getContentWidth:function(){return S()},getContentHeight:function(){return Y()},getPercentScrolledX:function(){return aC()/(S-aj)},getPercentScrolledY:function(){return aA()/(Y-w)},getIsScrollableH:function(){return aE},getIsScrollableV:function(){return az},getContentPane:function(){return X},scrollToBottom:function(s){U(j,s)},hijackInternalLinks:function(){n()},destroy:function(){h()}});ar(N)}f=b.extend({},b.fn.jScrollPane.defaults,f);b.each(["mouseWheelSpeed","arrowButtonSpeed","trackClickSpeed","keyboardSpeed"],function(){f[this]=f[this]||f.speed});var e;this.each(function(){var g=b(this),h=g.data("jsp");if(h){h.reinitialise(f)}else{h=new d(g,f);g.data("jsp",h)}e=e?e.add(g):g});return e};b.fn.jScrollPane.defaults={showArrows:false,maintainPosition:true,clickOnTrack:true,autoReinitialise:false,autoReinitialiseDelay:500,verticalDragMinHeight:0,verticalDragMaxHeight:99999,horizontalDragMinWidth:0,horizontalDragMaxWidth:99999,animateScroll:false,animateDuration:300,animateEase:"linear",hijackInternalLinks:false,verticalGutter:4,horizontalGutter:4,mouseWheelSpeed:0,arrowButtonSpeed:0,arrowRepeatFreq:50,arrowScrollOnHover:false,trackClickSpeed:0,trackClickRepeatFreq:70,verticalArrowPositions:"split",horizontalArrowPositions:"split",enableKeyboardNavigation:true,hideFocus:false,keyboardSpeed:0,initialDelay:300,speed:30,scrollPagePercent:0.8}})(jQuery,this);;
/*
 * Copyright (c) 2009 Simo Kinnunen.
 * Licensed under the MIT license.
 *
 * @version 1.09
 */
var Cufon=(function(){var m=function(){return m.replace.apply(null,arguments)};var x=m.DOM={ready:(function(){var C=false,E={loaded:1,complete:1};var B=[],D=function(){if(C){return}C=true;for(var F;F=B.shift();F()){}};if(document.addEventListener){document.addEventListener("DOMContentLoaded",D,false);window.addEventListener("pageshow",D,false)}if(!window.opera&&document.readyState){(function(){E[document.readyState]?D():setTimeout(arguments.callee,10)})()}if(document.readyState&&document.createStyleSheet){(function(){try{document.body.doScroll("left");D()}catch(F){setTimeout(arguments.callee,1)}})()}q(window,"load",D);return function(F){if(!arguments.length){D()}else{C?F():B.push(F)}}})(),root:function(){return document.documentElement||document.body}};var n=m.CSS={Size:function(C,B){this.value=parseFloat(C);this.unit=String(C).match(/[a-z%]*$/)[0]||"px";this.convert=function(D){return D/B*this.value};this.convertFrom=function(D){return D/this.value*B};this.toString=function(){return this.value+this.unit}},addClass:function(C,B){var D=C.className;C.className=D+(D&&" ")+B;return C},color:j(function(C){var B={};B.color=C.replace(/^rgba\((.*?),\s*([\d.]+)\)/,function(E,D,F){B.opacity=parseFloat(F);return"rgb("+D+")"});return B}),fontStretch:j(function(B){if(typeof B=="number"){return B}if(/%$/.test(B)){return parseFloat(B)/100}return{"ultra-condensed":0.5,"extra-condensed":0.625,condensed:0.75,"semi-condensed":0.875,"semi-expanded":1.125,expanded:1.25,"extra-expanded":1.5,"ultra-expanded":2}[B]||1}),getStyle:function(C){var B=document.defaultView;if(B&&B.getComputedStyle){return new a(B.getComputedStyle(C,null))}if(C.currentStyle){return new a(C.currentStyle)}return new a(C.style)},gradient:j(function(F){var G={id:F,type:F.match(/^-([a-z]+)-gradient\(/)[1],stops:[]},C=F.substr(F.indexOf("(")).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);for(var E=0,B=C.length,D;E<B;++E){D=C[E].split("=",2).reverse();G.stops.push([D[1]||E/(B-1),D[0]])}return G}),quotedList:j(function(E){var D=[],C=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,B;while(B=C.exec(E)){D.push(B[3]||B[1])}return D}),recognizesMedia:j(function(G){var E=document.createElement("style"),D,C,B;E.type="text/css";E.media=G;try{E.appendChild(document.createTextNode("/**/"))}catch(F){}C=g("head")[0];C.insertBefore(E,C.firstChild);D=(E.sheet||E.styleSheet);B=D&&!D.disabled;C.removeChild(E);return B}),removeClass:function(D,C){var B=RegExp("(?:^|\\s+)"+C+"(?=\\s|$)","g");D.className=D.className.replace(B,"");return D},supports:function(D,C){var B=document.createElement("span").style;if(B[D]===undefined){return false}B[D]=C;return B[D]===C},textAlign:function(E,D,B,C){if(D.get("textAlign")=="right"){if(B>0){E=" "+E}}else{if(B<C-1){E+=" "}}return E},textShadow:j(function(F){if(F=="none"){return null}var E=[],G={},B,C=0;var D=/(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;while(B=D.exec(F)){if(B[0]==","){E.push(G);G={};C=0}else{if(B[1]){G.color=B[1]}else{G[["offX","offY","blur"][C++]]=B[2]}}}E.push(G);return E}),textTransform:(function(){var B={uppercase:function(C){return C.toUpperCase()},lowercase:function(C){return C.toLowerCase()},capitalize:function(C){return C.replace(/\b./g,function(D){return D.toUpperCase()})}};return function(E,D){var C=B[D.get("textTransform")];return C?C(E):E}})(),whiteSpace:(function(){var D={inline:1,"inline-block":1,"run-in":1};var C=/^\s+/,B=/\s+$/;return function(H,F,G,E){if(E){if(E.nodeName.toLowerCase()=="br"){H=H.replace(C,"")}}if(D[F.get("display")]){return H}if(!G.previousSibling){H=H.replace(C,"")}if(!G.nextSibling){H=H.replace(B,"")}return H}})()};n.ready=(function(){var B=!n.recognizesMedia("all"),E=false;var D=[],H=function(){B=true;for(var K;K=D.shift();K()){}};var I=g("link"),J=g("style");function C(K){return K.disabled||G(K.sheet,K.media||"screen")}function G(M,P){if(!n.recognizesMedia(P||"all")){return true}if(!M||M.disabled){return false}try{var Q=M.cssRules,O;if(Q){search:for(var L=0,K=Q.length;O=Q[L],L<K;++L){switch(O.type){case 2:break;case 3:if(!G(O.styleSheet,O.media.mediaText)){return false}break;default:break search}}}}catch(N){}return true}function F(){if(document.createStyleSheet){return true}var L,K;for(K=0;L=I[K];++K){if(L.rel.toLowerCase()=="stylesheet"&&!C(L)){return false}}for(K=0;L=J[K];++K){if(!C(L)){return false}}return true}x.ready(function(){if(!E){E=n.getStyle(document.body).isUsable()}if(B||(E&&F())){H()}else{setTimeout(arguments.callee,10)}});return function(K){if(B){K()}else{D.push(K)}}})();function s(D){var C=this.face=D.face,B={"\u0020":1,"\u00a0":1,"\u3000":1};this.glyphs=D.glyphs;this.w=D.w;this.baseSize=parseInt(C["units-per-em"],10);this.family=C["font-family"].toLowerCase();this.weight=C["font-weight"];this.style=C["font-style"]||"normal";this.viewBox=(function(){var F=C.bbox.split(/\s+/);var E={minX:parseInt(F[0],10),minY:parseInt(F[1],10),maxX:parseInt(F[2],10),maxY:parseInt(F[3],10)};E.width=E.maxX-E.minX;E.height=E.maxY-E.minY;E.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")};return E})();this.ascent=-parseInt(C.ascent,10);this.descent=-parseInt(C.descent,10);this.height=-this.ascent+this.descent;this.spacing=function(L,N,E){var O=this.glyphs,M,K,G,P=[],F=0,J=-1,I=-1,H;while(H=L[++J]){M=O[H]||this.missingGlyph;if(!M){continue}if(K){F-=G=K[H]||0;P[I]-=G}F+=P[++I]=~~(M.w||this.w)+N+(B[H]?E:0);K=M.k}P.total=F;return P}}function f(){var C={},B={oblique:"italic",italic:"oblique"};this.add=function(D){(C[D.style]||(C[D.style]={}))[D.weight]=D};this.get=function(H,I){var G=C[H]||C[B[H]]||C.normal||C.italic||C.oblique;if(!G){return null}I={normal:400,bold:700}[I]||parseInt(I,10);if(G[I]){return G[I]}var E={1:1,99:0}[I%100],K=[],F,D;if(E===undefined){E=I>400}if(I==500){I=400}for(var J in G){if(!k(G,J)){continue}J=parseInt(J,10);if(!F||J<F){F=J}if(!D||J>D){D=J}K.push(J)}if(I<F){I=F}if(I>D){I=D}K.sort(function(M,L){return(E?(M>=I&&L>=I)?M<L:M>L:(M<=I&&L<=I)?M>L:M<L)?-1:1});return G[K[0]]}}function r(){function D(F,G){if(F.contains){return F.contains(G)}return F.compareDocumentPosition(G)&16}function B(G){var F=G.relatedTarget;if(!F||D(this,F)){return}C(this,G.type=="mouseover")}function E(F){C(this,F.type=="mouseenter")}function C(F,G){setTimeout(function(){var H=d.get(F).options;m.replace(F,G?h(H,H.hover):H,true)},10)}this.attach=function(F){if(F.onmouseenter===undefined){q(F,"mouseover",B);q(F,"mouseout",B)}else{q(F,"mouseenter",E);q(F,"mouseleave",E)}}}function u(){var C=[],D={};function B(H){var E=[],G;for(var F=0;G=H[F];++F){E[F]=C[D[G]]}return E}this.add=function(F,E){D[F]=C.push(E)-1};this.repeat=function(){var E=arguments.length?B(arguments):C,F;for(var G=0;F=E[G++];){m.replace(F[0],F[1],true)}}}function A(){var D={},B=0;function C(E){return E.cufid||(E.cufid=++B)}this.get=function(E){var F=C(E);return D[F]||(D[F]={})}}function a(B){var D={},C={};this.extend=function(E){for(var F in E){if(k(E,F)){D[F]=E[F]}}return this};this.get=function(E){return D[E]!=undefined?D[E]:B[E]};this.getSize=function(F,E){return C[F]||(C[F]=new n.Size(this.get(F),E))};this.isUsable=function(){return !!B}}function q(C,B,D){if(C.addEventListener){C.addEventListener(B,D,false)}else{if(C.attachEvent){C.attachEvent("on"+B,function(){return D.call(C,window.event)})}}}function v(C,B){var D=d.get(C);if(D.options){return C}if(B.hover&&B.hoverables[C.nodeName.toLowerCase()]){b.attach(C)}D.options=B;return C}function j(B){var C={};return function(D){if(!k(C,D)){C[D]=B.apply(null,arguments)}return C[D]}}function c(F,E){var B=n.quotedList(E.get("fontFamily").toLowerCase()),D;for(var C=0;D=B[C];++C){if(i[D]){return i[D].get(E.get("fontStyle"),E.get("fontWeight"))}}return null}function g(B){return document.getElementsByTagName(B)}function k(C,B){return C.hasOwnProperty(B)}function h(){var C={},B,F;for(var E=0,D=arguments.length;B=arguments[E],E<D;++E){for(F in B){if(k(B,F)){C[F]=B[F]}}}return C}function o(E,M,C,N,F,D){var K=document.createDocumentFragment(),H;if(M===""){return K}var L=N.separate;var I=M.split(p[L]),B=(L=="words");if(B&&t){if(/^\s/.test(M)){I.unshift("")}if(/\s$/.test(M)){I.push("")}}for(var J=0,G=I.length;J<G;++J){H=z[N.engine](E,B?n.textAlign(I[J],C,J,G):I[J],C,N,F,D,J<G-1);if(H){K.appendChild(H)}}return K}function l(D,M){var C=D.nodeName.toLowerCase();if(M.ignore[C]){return}var E=!M.textless[C];var B=n.getStyle(v(D,M)).extend(M);var F=c(D,B),G,K,I,H,L,J;if(!F){return}for(G=D.firstChild;G;G=I){K=G.nodeType;I=G.nextSibling;if(E&&K==3){if(H){H.appendData(G.data);D.removeChild(G)}else{H=G}if(I){continue}}if(H){D.replaceChild(o(F,n.whiteSpace(H.data,B,H,J),B,M,G,D),H);H=null}if(K==1){if(G.firstChild){if(G.nodeName.toLowerCase()=="cufon"){z[M.engine](F,null,B,M,G,D)}else{arguments.callee(G,M)}}J=G}}}var t=" ".split(/\s+/).length==0;var d=new A();var b=new r();var y=new u();var e=false;var z={},i={},w={autoDetect:false,engine:null,forceHitArea:false,hover:false,hoverables:{a:true},ignore:{applet:1,canvas:1,col:1,colgroup:1,head:1,iframe:1,map:1,optgroup:1,option:1,script:1,select:1,style:1,textarea:1,title:1,pre:1},printable:true,selector:(window.Sizzle||(window.jQuery&&function(B){return jQuery(B)})||(window.dojo&&dojo.query)||(window.Ext&&Ext.query)||(window.YAHOO&&YAHOO.util&&YAHOO.util.Selector&&YAHOO.util.Selector.query)||(window.$$&&function(B){return $$(B)})||(window.$&&function(B){return $(B)})||(document.querySelectorAll&&function(B){return document.querySelectorAll(B)})||g),separate:"words",textless:{dl:1,html:1,ol:1,table:1,tbody:1,thead:1,tfoot:1,tr:1,ul:1},textShadow:"none"};var p={words:/\s/.test("\u00a0")?/[^\S\u00a0]+/:/\s+/,characters:"",none:/^/};m.now=function(){x.ready();return m};m.refresh=function(){y.repeat.apply(y,arguments);return m};m.registerEngine=function(C,B){if(!B){return m}z[C]=B;return m.set("engine",C)};m.registerFont=function(D){if(!D){return m}var B=new s(D),C=B.family;if(!i[C]){i[C]=new f()}i[C].add(B);return m.set("fontFamily",'"'+C+'"')};m.replace=function(D,C,B){C=h(w,C);if(!C.engine){return m}if(!e){n.addClass(x.root(),"cufon-active cufon-loading");n.ready(function(){n.addClass(n.removeClass(x.root(),"cufon-loading"),"cufon-ready")});e=true}if(C.hover){C.forceHitArea=true}if(C.autoDetect){delete C.fontFamily}if(typeof C.textShadow=="string"){C.textShadow=n.textShadow(C.textShadow)}if(typeof C.color=="string"&&/^-/.test(C.color)){C.textGradient=n.gradient(C.color)}else{delete C.textGradient}if(!B){y.add(D,arguments)}if(D.nodeType||typeof D=="string"){D=[D]}n.ready(function(){for(var F=0,E=D.length;F<E;++F){var G=D[F];if(typeof G=="string"){m.replace(C.selector(G),C,true)}else{l(G,C)}}});return m};m.set=function(B,C){w[B]=C;return m};return m})();Cufon.registerEngine("canvas",(function(){var b=document.createElement("canvas");if(!b||!b.getContext||!b.getContext.apply){return}b=null;var a=Cufon.CSS.supports("display","inline-block");var e=!a&&(document.compatMode=="BackCompat"||/frameset|transitional/i.test(document.doctype.publicId));var f=document.createElement("style");f.type="text/css";f.appendChild(document.createTextNode(("cufon{text-indent:0;}@media screen,projection{cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;"+(e?"":"font-size:1px;line-height:1px;")+"}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;text-indent:-10000in;}"+(a?"cufon canvas{position:relative;}":"cufon canvas{position:absolute;}")+"}@media print{cufon{padding:0;}cufon canvas{display:none;}}").replace(/;/g,"!important;")));document.getElementsByTagName("head")[0].appendChild(f);function d(p,h){var n=0,m=0;var g=[],o=/([mrvxe])([^a-z]*)/g,k;generate:for(var j=0;k=o.exec(p);++j){var l=k[2].split(",");switch(k[1]){case"v":g[j]={m:"bezierCurveTo",a:[n+~~l[0],m+~~l[1],n+~~l[2],m+~~l[3],n+=~~l[4],m+=~~l[5]]};break;case"r":g[j]={m:"lineTo",a:[n+=~~l[0],m+=~~l[1]]};break;case"m":g[j]={m:"moveTo",a:[n=~~l[0],m=~~l[1]]};break;case"x":g[j]={m:"closePath"};break;case"e":break generate}h[g[j].m].apply(h,g[j].a)}return g}function c(m,k){for(var j=0,h=m.length;j<h;++j){var g=m[j];k[g.m].apply(k,g.a)}}return function(V,w,P,t,C,W){var k=(w===null);if(k){w=C.getAttribute("alt")}var A=V.viewBox;var m=P.getSize("fontSize",V.baseSize);var B=0,O=0,N=0,u=0;var z=t.textShadow,L=[];if(z){for(var U=z.length;U--;){var F=z[U];var K=m.convertFrom(parseFloat(F.offX));var I=m.convertFrom(parseFloat(F.offY));L[U]=[K,I];if(I<B){B=I}if(K>O){O=K}if(I>N){N=I}if(K<u){u=K}}}var Z=Cufon.CSS.textTransform(w,P).split("");var E=V.spacing(Z,~~m.convertFrom(parseFloat(P.get("letterSpacing"))||0),~~m.convertFrom(parseFloat(P.get("wordSpacing"))||0));if(!E.length){return null}var h=E.total;O+=A.width-E[E.length-1];u+=A.minX;var s,n;if(k){s=C;n=C.firstChild}else{s=document.createElement("cufon");s.className="cufon cufon-canvas";s.setAttribute("alt",w);n=document.createElement("canvas");s.appendChild(n);if(t.printable){var S=document.createElement("cufontext");S.appendChild(document.createTextNode(w));s.appendChild(S)}}var aa=s.style;var H=n.style;var j=m.convert(A.height);var Y=Math.ceil(j);var M=Y/j;var G=M*Cufon.CSS.fontStretch(P.get("fontStretch"));var J=h*G;var Q=Math.ceil(m.convert(J+O-u));var o=Math.ceil(m.convert(A.height-B+N));n.width=Q;n.height=o;H.width=Q+"px";H.height=o+"px";B+=A.minY;H.top=Math.round(m.convert(B-V.ascent))+"px";H.left=Math.round(m.convert(u))+"px";var r=Math.max(Math.ceil(m.convert(J)),0)+"px";if(a){aa.width=r;aa.height=m.convert(V.height)+"px"}else{aa.paddingLeft=r;aa.paddingBottom=(m.convert(V.height)-1)+"px"}var X=n.getContext("2d"),D=j/A.height;X.scale(D,D*M);X.translate(-u,-B);X.save();function T(){var x=V.glyphs,ab,l=-1,g=-1,y;X.scale(G,1);while(y=Z[++l]){var ab=x[Z[l]]||V.missingGlyph;if(!ab){continue}if(ab.d){X.beginPath();if(ab.code){c(ab.code,X)}else{ab.code=d("m"+ab.d,X)}X.fill()}X.translate(E[++g],0)}X.restore()}if(z){for(var U=z.length;U--;){var F=z[U];X.save();X.fillStyle=F.color;X.translate.apply(X,L[U]);T()}}var q=t.textGradient;if(q){var v=q.stops,p=X.createLinearGradient(0,A.minY,0,A.maxY);for(var U=0,R=v.length;U<R;++U){p.addColorStop.apply(p,v[U])}X.fillStyle=p}else{X.fillStyle=P.get("color")}T();return s}})());Cufon.registerEngine("vml",(function(){var e=document.namespaces;if(!e){return}e.add("cvml","urn:schemas-microsoft-com:vml");e=null;var b=document.createElement("cvml:shape");b.style.behavior="url(#default#VML)";if(!b.coordsize){return}b=null;var h=(document.documentMode||0)<8;document.write(('<style type="text/css">cufoncanvas{text-indent:0;}@media screen{cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}cufoncanvas{position:absolute;text-align:left;}cufon{display:inline-block;position:relative;vertical-align:'+(h?"middle":"text-bottom")+";}cufon cufontext{position:absolute;left:-10000in;font-size:1px;}a cufon{cursor:pointer}}@media print{cufon cufoncanvas{display:none;}}</style>").replace(/;/g,"!important;"));function c(i,j){return a(i,/(?:em|ex|%)$|^[a-z-]+$/i.test(j)?"1em":j)}function a(l,m){if(m==="0"){return 0}if(/px$/i.test(m)){return parseFloat(m)}var k=l.style.left,j=l.runtimeStyle.left;l.runtimeStyle.left=l.currentStyle.left;l.style.left=m.replace("%","em");var i=l.style.pixelLeft;l.style.left=k;l.runtimeStyle.left=j;return i}function f(l,k,j,n){var i="computed"+n,m=k[i];if(isNaN(m)){m=k.get(n);k[i]=m=(m=="normal")?0:~~j.convertFrom(a(l,m))}return m}var g={};function d(p){var q=p.id;if(!g[q]){var n=p.stops,o=document.createElement("cvml:fill"),i=[];o.type="gradient";o.angle=180;o.focus="0";o.method="sigma";o.color=n[0][1];for(var m=1,l=n.length-1;m<l;++m){i.push(n[m][0]*100+"% "+n[m][1])}o.colors=i.join(",");o.color2=n[l][1];g[q]=o}return g[q]}return function(ac,G,Y,C,K,ad,W){var n=(G===null);if(n){G=K.alt}var I=ac.viewBox;var p=Y.computedFontSize||(Y.computedFontSize=new Cufon.CSS.Size(c(ad,Y.get("fontSize"))+"px",ac.baseSize));var y,q;if(n){y=K;q=K.firstChild}else{y=document.createElement("cufon");y.className="cufon cufon-vml";y.alt=G;q=document.createElement("cufoncanvas");y.appendChild(q);if(C.printable){var Z=document.createElement("cufontext");Z.appendChild(document.createTextNode(G));y.appendChild(Z)}if(!W){y.appendChild(document.createElement("cvml:shape"))}}var ai=y.style;var R=q.style;var l=p.convert(I.height),af=Math.ceil(l);var V=af/l;var P=V*Cufon.CSS.fontStretch(Y.get("fontStretch"));var U=I.minX,T=I.minY;R.height=af;R.top=Math.round(p.convert(T-ac.ascent));R.left=Math.round(p.convert(U));ai.height=p.convert(ac.height)+"px";var F=Y.get("color");var ag=Cufon.CSS.textTransform(G,Y).split("");var L=ac.spacing(ag,f(ad,Y,p,"letterSpacing"),f(ad,Y,p,"wordSpacing"));if(!L.length){return null}var k=L.total;var x=-U+k+(I.width-L[L.length-1]);var ah=p.convert(x*P),X=Math.round(ah);var O=x+","+I.height,m;var J="r"+O+"ns";var u=C.textGradient&&d(C.textGradient);var o=ac.glyphs,S=0;var H=C.textShadow;var ab=-1,aa=0,w;while(w=ag[++ab]){var D=o[ag[ab]]||ac.missingGlyph,v;if(!D){continue}if(n){v=q.childNodes[aa];while(v.firstChild){v.removeChild(v.firstChild)}}else{v=document.createElement("cvml:shape");q.appendChild(v)}v.stroked="f";v.coordsize=O;v.coordorigin=m=(U-S)+","+T;v.path=(D.d?"m"+D.d+"xe":"")+"m"+m+J;v.fillcolor=F;if(u){v.appendChild(u.cloneNode(false))}var ae=v.style;ae.width=X;ae.height=af;if(H){var s=H[0],r=H[1];var B=Cufon.CSS.color(s.color),z;var N=document.createElement("cvml:shadow");N.on="t";N.color=B.color;N.offset=s.offX+","+s.offY;if(r){z=Cufon.CSS.color(r.color);N.type="double";N.color2=z.color;N.offset2=r.offX+","+r.offY}N.opacity=B.opacity||(z&&z.opacity)||1;v.appendChild(N)}S+=L[aa++]}var M=v.nextSibling,t,A;if(C.forceHitArea){if(!M){M=document.createElement("cvml:rect");M.stroked="f";M.className="cufon-vml-cover";t=document.createElement("cvml:fill");t.opacity=0;M.appendChild(t);q.appendChild(M)}A=M.style;A.width=X;A.height=af}else{if(M){q.removeChild(M)}}ai.width=Math.max(Math.ceil(p.convert(k*P)),0);if(h){var Q=Y.computedYAdjust;if(Q===undefined){var E=Y.get("lineHeight");if(E=="normal"){E="1em"}else{if(!isNaN(E)){E+="em"}}Y.computedYAdjust=Q=0.5*(a(ad,E)-parseFloat(ai.height))}if(Q){ai.marginTop=Math.ceil(Q)+"px";ai.marginBottom=Q+"px"}}return y}})());;
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * Digitized data © 2007 Ascender Corporation. All rights reserved.
 * 
 * Trademark:
 * Liberation is a trademark of Red Hat, Inc. registered in U.S. Patent and
 * Trademark Office and certain other jurisdictions.
 * 
 * Manufacturer:
 * Ascender Corporation
 * 
 * Designer:
 * Steve Matteson
 * 
 * Vendor URL:
 * http://www.ascendercorp.com/
 * 
 * License information:
 * http://www.ascendercorp.com/liberation.html
 */
Cufon.registerFont({"w":200,"face":{"font-family":"Liberation Sans","font-weight":400,"font-stretch":"normal","units-per-em":"360","panose-1":"2 11 6 4 2 2 2 2 2 4","ascent":"288","descent":"-72","x-height":"4","bbox":"-9 -266 339 76.6956","underline-thickness":"26.3672","underline-position":"-24.9609","unicode-range":"U+0020-U+007E"},"glyphs":{" ":{"w":100,"k":{"Y":7,"T":7,"A":20}},"\u00a0":{"w":100},"!":{"d":"63,-70r-26,0r-4,-178r34,0xm33,0r0,-35r34,0r0,35r-34,0","w":100},"\"":{"d":"109,-170r-25,0r-4,-78r32,0xm44,-170r-25,0r-4,-78r33,0","w":127},"#":{"d":"158,-156r-14,65r45,0r0,19r-49,0r-16,72r-19,0r15,-72r-64,0r-15,72r-19,0r15,-72r-35,0r0,-19r39,0r14,-65r-44,0r0,-19r48,0r15,-71r20,0r-16,71r64,0r16,-71r19,0r-16,71r37,0r0,19r-40,0xm75,-156r-14,65r63,0r14,-65r-63,0"},"$":{"d":"194,-70v0,46,-34,64,-81,66r0,29r-22,0r0,-29v-49,-1,-79,-23,-87,-63r30,-6v5,28,25,41,57,43r0,-87v-38,-9,-76,-20,-76,-67v1,-42,33,-58,76,-59r0,-23r22,0r0,23v45,0,67,20,76,56r-31,6v-5,-23,-18,-35,-45,-37r0,78v41,10,81,20,81,70xm113,-29v51,7,71,-66,19,-77v-6,-2,-12,-4,-19,-6r0,83xm91,-219v-47,-6,-63,57,-18,69v6,2,12,3,18,5r0,-74"},"%":{"d":"252,-156v43,0,55,33,55,80v0,46,-13,78,-56,78v-42,0,-55,-33,-55,-78v0,-48,12,-80,56,-80xm93,0r-28,0r162,-248r28,0xm13,-171v-1,-47,13,-79,56,-79v43,0,55,33,55,79v0,46,-13,79,-55,79v-43,0,-56,-33,-56,-79xm251,-17v28,0,30,-29,30,-59v0,-31,-1,-60,-29,-60v-29,0,-31,29,-31,60v0,29,2,59,30,59xm69,-112v27,0,28,-30,29,-59v0,-31,-1,-60,-29,-60v-29,0,-30,30,-30,60v0,30,2,59,30,59","w":320},"&":{"d":"234,-2v-28,10,-62,0,-77,-18v-40,39,-149,32,-144,-45v3,-43,29,-61,60,-76v-25,-40,-17,-114,47,-108v35,3,59,15,59,50v0,44,-40,53,-71,69v14,26,32,50,51,72v14,-21,24,-43,30,-72r26,8v-9,33,-21,57,-38,82v13,13,33,22,57,15r0,23xm97,-151v25,-10,52,-18,56,-48v-1,-18,-13,-29,-33,-29v-42,0,-39,50,-23,77xm42,-66v-3,51,71,58,98,28v-20,-24,-41,-51,-56,-80v-23,10,-40,24,-42,52","w":240},"'":{"d":"47,-170r-25,0r-4,-78r33,0","w":68},"(":{"d":"87,75v-38,-42,-65,-92,-65,-169v0,-76,28,-126,65,-167r31,0v-38,41,-64,92,-64,168v0,76,26,127,64,168r-31,0","w":119},")":{"d":"33,-261v38,41,65,92,65,168v0,76,-27,127,-65,168r-31,0v37,-41,64,-92,64,-168v0,-76,-27,-127,-64,-168r31,0","w":119},"*":{"d":"80,-196r47,-18r7,23r-49,13r32,44r-20,13r-27,-46r-27,45r-21,-12r33,-44r-49,-13r8,-23r47,19r-2,-53r23,0","w":140},"+":{"d":"118,-107r0,75r-26,0r0,-75r-74,0r0,-26r74,0r0,-75r26,0r0,75r74,0r0,26r-74,0","w":210},",":{"d":"68,-38v1,34,0,65,-14,84r-22,0v9,-13,17,-26,17,-46r-16,0r0,-38r35,0","w":100},"-":{"d":"16,-82r0,-28r88,0r0,28r-88,0","w":119},"\u00ad":{"d":"16,-82r0,-28r88,0r0,28r-88,0","w":119},".":{"d":"33,0r0,-38r34,0r0,38r-34,0","w":100},"\/":{"d":"0,4r72,-265r28,0r-72,265r-28,0","w":100},"0":{"d":"101,-251v68,0,85,55,85,127v0,72,-20,128,-86,128v-67,0,-86,-56,-86,-128v0,-73,17,-127,87,-127xm100,-22v47,0,54,-49,54,-102v0,-53,-4,-102,-53,-102v-51,0,-55,48,-55,102v0,53,5,102,54,102"},"1":{"d":"27,0r0,-27r64,0r0,-190r-56,39r0,-29r58,-41r29,0r0,221r61,0r0,27r-156,0","k":{"1":27}},"2":{"d":"101,-251v82,-7,93,87,43,132r-62,55v-11,11,-23,22,-29,37r129,0r0,27r-164,0v2,-99,128,-94,128,-182v0,-28,-16,-43,-45,-43v-29,0,-46,15,-49,41r-32,-3v6,-41,34,-60,81,-64"},"3":{"d":"126,-127v33,6,58,20,58,59v0,88,-139,92,-164,29v-3,-8,-5,-16,-6,-25r32,-3v6,27,21,44,54,44v32,0,53,-15,52,-46v-1,-38,-36,-46,-79,-43r0,-28v39,1,72,-4,72,-42v0,-27,-17,-43,-46,-43v-28,0,-47,15,-49,41r-32,-3v6,-42,35,-63,81,-64v48,-1,79,21,79,65v0,36,-21,52,-52,59"},"4":{"d":"155,-56r0,56r-30,0r0,-56r-117,0r0,-25r114,-167r33,0r0,167r35,0r0,25r-35,0xm125,-212v-27,46,-58,90,-88,131r88,0r0,-131"},"5":{"d":"54,-142v48,-35,137,-8,131,61v11,99,-154,114,-171,26r32,-4v7,23,22,37,52,37v35,-1,51,-22,54,-58v4,-55,-73,-65,-99,-34r-31,0r8,-134r141,0r0,27r-112,0"},"6":{"d":"110,-160v48,1,74,30,74,79v0,53,-28,85,-80,85v-65,0,-83,-55,-86,-122v-5,-90,50,-162,133,-122v14,7,22,21,27,39r-31,6v-5,-40,-67,-38,-82,-6v-9,19,-15,44,-15,74v11,-20,30,-34,60,-33xm103,-22v34,0,49,-23,49,-58v0,-35,-16,-56,-50,-56v-29,0,-50,16,-49,49v1,36,15,65,50,65"},"7":{"d":"64,0v3,-98,48,-159,88,-221r-134,0r0,-27r164,0r0,26v-39,65,-84,121,-85,222r-33,0"},"8":{"d":"134,-131v28,9,52,24,51,62v-1,50,-34,73,-85,73v-51,0,-83,-23,-84,-73v0,-36,21,-54,49,-61v-75,-25,-45,-126,34,-121v46,3,78,18,79,63v0,33,-17,51,-44,57xm100,-142v31,1,46,-15,46,-44v0,-28,-17,-43,-47,-42v-29,0,-46,13,-45,42v1,28,16,44,46,44xm101,-20v35,0,51,-18,51,-52v0,-30,-18,-46,-53,-46v-33,0,-51,17,-51,47v0,34,19,51,53,51"},"9":{"d":"99,-251v64,0,84,50,84,122v0,92,-53,162,-136,121v-14,-7,-20,-23,-25,-40r30,-5v6,39,69,39,84,7v9,-19,16,-44,16,-74v-10,22,-31,35,-62,35v-49,0,-73,-33,-73,-83v0,-54,28,-83,82,-83xm98,-110v31,-1,51,-18,51,-49v0,-36,-14,-67,-51,-67v-34,0,-49,23,-49,58v0,34,15,58,49,58"},":":{"d":"33,-154r0,-36r34,0r0,36r-34,0xm33,0r0,-36r34,0r0,36r-34,0","w":100},";":{"d":"68,-36v1,33,-1,63,-14,82r-22,0v9,-13,17,-26,17,-46r-16,0r0,-36r35,0xm33,-154r0,-36r35,0r0,36r-35,0","w":100},"\u037e":{"d":"68,-36v1,33,-1,63,-14,82r-22,0v9,-13,17,-26,17,-46r-16,0r0,-36r35,0xm33,-154r0,-36r35,0r0,36r-35,0","w":100},"<":{"d":"18,-100r0,-36r175,-74r0,27r-151,65r151,64r0,27","w":210},"=":{"d":"18,-150r0,-26r174,0r0,26r-174,0xm18,-60r0,-26r174,0r0,26r-174,0","w":210},">":{"d":"18,-27r0,-27r151,-64r-151,-65r0,-27r175,74r0,36","w":210},"?":{"d":"103,-251v84,0,111,97,45,133v-19,10,-37,24,-39,52r-31,0v0,-63,77,-55,77,-114v0,-30,-21,-42,-52,-43v-32,0,-53,17,-56,46r-32,-2v7,-45,34,-72,88,-72xm77,0r0,-35r34,0r0,35r-34,0"},"@":{"d":"198,-261v85,0,136,45,136,128v0,61,-22,111,-78,115v-29,2,-39,-18,-37,-44v-12,23,-32,44,-66,44v-41,0,-58,-28,-58,-68v0,-60,30,-105,88,-108v29,-1,43,15,54,32r7,-28r28,0v-9,45,-23,84,-27,134v-1,11,6,17,14,16v39,-4,51,-48,51,-92v0,-69,-42,-107,-112,-107v-93,0,-145,59,-145,153v0,71,41,112,115,113v43,0,78,-13,106,-28r9,19v-30,18,-67,32,-115,32v-89,0,-140,-51,-140,-136v0,-107,62,-175,170,-175xm158,-41v46,0,70,-43,70,-90v0,-26,-17,-40,-43,-40v-44,0,-59,41,-61,85v-1,26,9,45,34,45","w":365},"A":{"d":"205,0r-28,-72r-113,0r-28,72r-35,0r101,-248r38,0r99,248r-34,0xm167,-99r-47,-123v-12,45,-31,82,-46,123r93,0","w":240,"k":{"y":7,"w":7,"v":7,"Y":27,"W":13,"V":27,"T":27," ":20}},"B":{"d":"160,-131v35,5,61,23,61,61v0,87,-106,68,-191,70r0,-248v76,3,177,-17,177,60v0,33,-19,50,-47,57xm63,-142v50,-1,110,9,110,-42v0,-47,-63,-36,-110,-37r0,79xm63,-27v55,-2,124,14,124,-45v0,-56,-70,-42,-124,-44r0,89","w":240},"C":{"d":"212,-179v-10,-28,-35,-45,-73,-45v-59,0,-87,40,-87,99v0,60,29,101,89,101v43,0,62,-24,78,-52r27,14v-18,38,-51,66,-107,66v-80,0,-117,-50,-121,-129v-6,-104,99,-153,187,-111v19,9,31,26,39,46","w":259},"D":{"d":"30,-248v118,-7,216,8,213,122v-3,78,-43,126,-121,126r-92,0r0,-248xm63,-27v89,8,146,-16,146,-99v0,-83,-60,-101,-146,-95r0,194","w":259},"E":{"d":"30,0r0,-248r187,0r0,28r-154,0r0,79r144,0r0,27r-144,0r0,87r162,0r0,27r-195,0","w":240},"F":{"d":"63,-220r0,92r138,0r0,28r-138,0r0,100r-33,0r0,-248r175,0r0,28r-142,0","w":219,"k":{"A":20,".":40,",":40}},"G":{"d":"143,4v-82,0,-121,-48,-125,-129v-5,-107,100,-154,193,-111v17,8,29,25,37,43r-32,9v-13,-25,-37,-40,-76,-40v-61,0,-88,39,-88,99v0,61,29,100,91,101v35,0,62,-11,79,-27r0,-45r-74,0r0,-28r105,0r0,86v-25,25,-61,42,-110,42","w":280},"H":{"d":"197,0r0,-115r-134,0r0,115r-33,0r0,-248r33,0r0,105r134,0r0,-105r34,0r0,248r-34,0","w":259},"I":{"d":"33,0r0,-248r34,0r0,248r-34,0","w":100},"J":{"d":"153,-248v-8,100,35,252,-73,252v-44,-1,-67,-25,-74,-66r32,-5v4,25,16,42,43,43v27,0,39,-20,39,-49r0,-147r-48,0r0,-28r81,0","w":180},"K":{"d":"194,0r-99,-120r-32,25r0,95r-33,0r0,-248r33,0r0,124r119,-124r40,0r-105,108r119,140r-42,0","w":240},"L":{"d":"30,0r0,-248r33,0r0,221r125,0r0,27r-158,0","k":{"y":13,"Y":27,"W":27,"V":27,"T":27," ":13}},"M":{"d":"240,0r2,-218v-23,76,-54,145,-80,218r-23,0r-81,-218r1,218r-29,0r0,-248r44,0r77,211v21,-75,51,-140,76,-211r43,0r0,248r-30,0","w":299},"N":{"d":"190,0r-132,-211r1,211r-29,0r0,-248r39,0r133,213r-2,-213r31,0r0,248r-41,0","w":259},"O":{"d":"140,-251v81,0,123,46,123,126v0,79,-44,129,-123,129v-81,0,-123,-49,-123,-129v0,-80,42,-126,123,-126xm140,-24v63,0,89,-41,89,-101v0,-60,-29,-99,-89,-99v-61,0,-89,39,-89,99v0,60,28,100,89,101","w":280},"P":{"d":"30,-248v87,1,191,-15,191,75v0,78,-77,80,-158,76r0,97r-33,0r0,-248xm63,-123v57,0,124,11,124,-50v0,-59,-68,-47,-124,-48r0,98","w":240,"k":{"A":27,".":46,",":46," ":7}},"Q":{"d":"140,-251v81,0,123,46,123,126v0,72,-35,117,-100,126v7,30,30,48,69,40r0,23v-55,16,-95,-15,-103,-61v-73,-6,-112,-51,-112,-128v0,-80,42,-126,123,-126xm140,-24v63,0,89,-41,89,-101v0,-60,-29,-99,-89,-99v-61,0,-89,39,-89,99v0,60,28,100,89,101","w":280},"R":{"d":"233,-177v-1,41,-23,64,-60,70r70,107r-38,0r-65,-103r-77,0r0,103r-33,0r0,-248v88,3,205,-21,203,71xm63,-129v60,-2,137,13,137,-47v0,-61,-80,-42,-137,-45r0,92","w":259,"k":{"Y":7,"W":7,"V":7,"T":7}},"S":{"d":"185,-189v-5,-48,-123,-54,-124,2v14,75,158,14,163,119v3,78,-121,87,-175,55v-17,-10,-28,-26,-33,-46r33,-7v5,56,141,63,141,-1v0,-78,-155,-14,-162,-118v-5,-82,145,-84,179,-34v5,7,8,16,11,25","w":240},"T":{"d":"127,-220r0,220r-34,0r0,-220r-85,0r0,-28r204,0r0,28r-85,0","w":219,"k":{"y":20,"w":20,"u":13,"s":40,"r":13,"o":40,"i":13,"e":40,"c":40,"a":40,"O":7,"A":27,";":40,":":40,".":40,"-":20,",":40," ":7}},"U":{"d":"232,-93v-1,65,-40,97,-104,97v-61,0,-100,-32,-100,-94r0,-158r33,0v8,89,-33,224,67,224v102,0,64,-133,71,-224r33,0r0,155","w":259},"V":{"d":"137,0r-34,0r-101,-248r35,0r83,218r83,-218r36,0","w":240,"k":{"y":13,"u":13,"r":13,"o":20,"i":7,"e":20,"a":27,"A":27,";":13,":":13,".":33,"-":20,",":33}},"W":{"d":"266,0r-40,0r-56,-210r-55,210r-40,0r-73,-248r35,0r59,218r15,-64r43,-154r32,0r59,218r59,-218r35,0","w":339,"k":{"y":3,"u":7,"r":7,"o":7,"e":7,"a":13,"A":13,";":7,":":7,".":20,"-":7,",":20}},"X":{"d":"195,0r-74,-108r-76,108r-37,0r94,-129r-87,-119r37,0r69,98r67,-98r37,0r-84,118r92,130r-38,0","w":240},"Y":{"d":"137,-103r0,103r-34,0r0,-103r-95,-145r37,0r75,118r75,-118r37,0","w":240,"k":{"v":20,"u":20,"q":33,"p":27,"o":33,"i":13,"e":33,"a":27,"A":27,";":23,":":20,".":46,"-":33,",":46," ":7}},"Z":{"d":"209,0r-198,0r0,-25r151,-195r-138,0r0,-28r176,0r0,25r-150,196r159,0r0,27","w":219},"[":{"d":"26,75r0,-336r71,0r0,23r-41,0r0,290r41,0r0,23r-71,0","w":100},"\\":{"d":"72,4r-72,-265r28,0r72,265r-28,0","w":100},"]":{"d":"3,75r0,-23r41,0r0,-290r-41,0r0,-23r71,0r0,336r-71,0","w":100},"^":{"d":"138,-118r-54,-112r-54,112r-28,0r64,-130r36,0r65,130r-29,0","w":168},"_":{"d":"-5,72r0,-23r209,0r0,23r-209,0"},"`":{"d":"77,-211r-58,-49r0,-5r36,0v12,19,30,32,38,54r-16,0","w":119},"a":{"d":"141,-36v-15,21,-31,41,-68,40v-36,-1,-58,-21,-58,-57v-1,-64,63,-63,125,-63v3,-35,-9,-54,-41,-54v-24,1,-41,7,-42,31r-33,-3v5,-37,33,-52,76,-52v45,0,72,20,72,64r0,82v-1,20,7,32,28,27r0,20v-31,9,-61,-2,-59,-35xm48,-53v0,20,12,33,32,33v41,-3,63,-29,60,-74v-43,2,-92,-5,-92,41"},"b":{"d":"115,-194v53,0,69,39,70,98v0,66,-23,100,-70,100v-31,-1,-49,-11,-59,-34r-2,30r-31,0r1,-261r32,0r0,101v10,-23,28,-34,59,-34xm107,-20v40,0,45,-34,45,-75v0,-40,-5,-75,-45,-74v-42,0,-51,32,-51,76v0,43,10,73,51,73"},"c":{"d":"96,-169v-40,0,-48,33,-48,73v0,40,9,75,48,75v24,0,41,-14,43,-38r32,2v-6,37,-31,61,-74,61v-59,0,-76,-41,-82,-99v-10,-93,101,-131,147,-64v4,7,5,14,7,22r-32,3v-4,-21,-16,-35,-41,-35","w":180},"d":{"d":"85,-194v31,0,48,13,60,33r-1,-100r32,0r1,261r-30,0v-2,-10,0,-23,-3,-31v-10,23,-28,35,-59,35v-53,0,-69,-39,-70,-98v0,-66,23,-100,70,-100xm94,-170v-40,0,-46,34,-46,75v0,40,6,74,45,74v42,0,51,-32,51,-76v0,-42,-9,-74,-50,-73"},"e":{"d":"100,-194v63,0,86,42,84,106r-135,0v0,40,14,67,53,68v26,1,43,-12,49,-29r28,8v-11,28,-37,45,-77,45v-58,0,-88,-37,-87,-100v1,-61,26,-98,85,-98xm152,-113v6,-60,-76,-77,-97,-28v-3,7,-6,17,-6,28r103,0"},"f":{"d":"101,-234v-31,-9,-42,10,-38,44r38,0r0,23r-38,0r0,167r-31,0r0,-167r-27,0r0,-23r27,0v-7,-52,17,-82,69,-68r0,24","w":100,"k":{"f":7}},"g":{"d":"177,-190v-10,125,41,293,-110,261v-23,-6,-38,-20,-44,-43r32,-5v15,47,100,32,89,-28r0,-30v-11,21,-29,36,-61,36v-54,0,-68,-41,-68,-96v0,-56,16,-97,71,-98v29,-1,48,16,59,35v1,-10,0,-23,2,-32r30,0xm94,-22v36,0,50,-32,50,-73v0,-42,-14,-75,-50,-75v-39,0,-46,34,-46,75v0,41,6,73,46,73"},"h":{"d":"106,-169v-72,0,-44,102,-49,169r-32,0r0,-261r32,0r-1,103v12,-21,28,-36,61,-36v89,0,53,116,60,194r-32,0r0,-121v2,-32,-8,-49,-39,-48"},"i":{"d":"24,-231r0,-30r32,0r0,30r-32,0xm24,0r0,-190r32,0r0,190r-32,0","w":79},"j":{"d":"24,-231r0,-30r32,0r0,30r-32,0xm-9,49v24,4,33,-6,33,-30r0,-209r32,0r0,214v2,40,-23,58,-65,49r0,-24","w":79},"k":{"d":"143,0r-64,-87r-23,19r0,68r-32,0r0,-261r32,0r0,163r83,-92r37,0r-77,82r82,108r-38,0","w":180},"l":{"d":"24,0r0,-261r32,0r0,261r-32,0","w":79},"m":{"d":"210,-169v-67,3,-38,105,-44,169r-31,0r0,-121v0,-29,-5,-50,-35,-48v-66,4,-38,104,-44,169r-31,0r-1,-190r30,0v1,10,-1,24,2,32v10,-44,99,-50,107,0v11,-21,27,-35,58,-36v85,-2,47,119,55,194r-31,0r0,-121v0,-29,-5,-49,-35,-48","w":299},"n":{"d":"117,-194v89,-4,53,116,60,194r-32,0r0,-121v0,-31,-8,-49,-39,-48v-72,2,-44,102,-49,169r-32,0r-1,-190r30,0v1,10,-1,24,2,32v11,-22,29,-35,61,-36"},"o":{"d":"100,-194v62,-1,85,37,85,99v1,63,-27,99,-86,99v-59,0,-83,-39,-84,-99v0,-66,28,-99,85,-99xm99,-20v44,1,53,-31,53,-75v0,-43,-8,-75,-51,-75v-43,0,-53,32,-53,75v0,43,10,74,51,75"},"p":{"d":"115,-194v55,1,70,41,70,98v0,57,-16,98,-70,100v-31,0,-49,-13,-60,-34r1,105r-32,0r-1,-265r31,0r2,30v10,-21,28,-34,59,-34xm107,-20v40,0,45,-34,45,-75v0,-41,-6,-73,-45,-74v-42,0,-51,32,-51,76v0,43,10,73,51,73"},"q":{"d":"145,-31v-11,22,-29,35,-60,35v-53,0,-69,-39,-70,-98v0,-59,17,-99,70,-100v32,-1,48,14,60,33v0,-11,-1,-24,2,-32r30,0r-1,268r-32,0xm93,-21v41,0,51,-33,51,-76v0,-43,-8,-73,-50,-73v-40,0,-46,35,-46,75v0,40,5,74,45,74"},"r":{"d":"114,-163v-78,-16,-53,91,-57,163r-32,0r-1,-190r30,0v1,12,-1,29,2,39v6,-27,23,-49,58,-41r0,29","w":119,"k":{".":20,",":20}},"s":{"d":"135,-143v-3,-34,-86,-38,-87,0v15,53,115,12,119,90v4,78,-150,74,-157,8r28,-5v4,36,97,45,98,0v-10,-56,-113,-15,-118,-90v-4,-57,82,-63,122,-42v12,7,21,19,24,35","w":180},"t":{"d":"59,-47v-2,24,18,29,38,22r0,24v-33,10,-70,5,-70,-39r0,-127r-22,0r0,-23r24,0r9,-43r21,0r0,43r35,0r0,23r-35,0r0,120","w":100},"u":{"d":"84,4v-89,4,-54,-116,-61,-194r32,0r0,120v0,31,7,50,39,49v72,-2,45,-101,50,-169r31,0r1,190r-30,0v-1,-10,1,-25,-2,-33v-11,22,-28,36,-60,37"},"v":{"d":"108,0r-38,0r-69,-190r34,0r54,165r56,-165r34,0","w":180,"k":{".":27,",":27}},"w":{"d":"206,0r-36,0r-40,-164r-41,164r-36,0r-54,-190r32,0r39,164r43,-164r34,0r41,164r42,-164r31,0","w":259,"k":{".":20,",":20}},"x":{"d":"141,0r-51,-78r-52,78r-34,0r68,-98r-65,-92r35,0r48,74r47,-74r35,0r-64,92r68,98r-35,0","w":180},"y":{"d":"179,-190r-86,221v-14,28,-37,51,-81,42r0,-24v39,6,53,-20,64,-50r-75,-189r34,0r57,156r54,-156r33,0","w":180,"k":{".":27,",":27}},"z":{"d":"9,0r0,-24r116,-142r-109,0r0,-24r144,0r0,24r-116,142r123,0r0,24r-158,0","w":180},"{":{"d":"39,-94v74,12,-11,154,75,146r0,23v-44,4,-70,-10,-70,-52v0,-46,11,-107,-38,-105r0,-22v81,4,-7,-162,84,-157r24,0r0,23v-82,-15,-2,131,-75,144","w":120},"|":{"d":"32,76r0,-337r29,0r0,337r-29,0","w":93},"}":{"d":"76,-40v2,64,8,128,-70,115r0,-23v80,12,3,-131,74,-146v-40,-6,-34,-59,-34,-106v1,-29,-11,-41,-40,-38r0,-23v44,-4,70,10,70,52v0,47,-12,108,38,105r0,22v-26,1,-39,14,-38,42","w":120},"~":{"d":"16,-127v37,-31,93,-2,135,6v18,-1,32,-8,43,-16r0,26v-50,42,-130,-35,-178,9r0,-25","w":210}}});
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * Digitized data © 2007 Ascender Corporation. All rights reserved.
 * 
 * Trademark:
 * Liberation is a trademark of Red Hat, Inc. registered in U.S. Patent and
 * Trademark Office and certain other jurisdictions.
 * 
 * Manufacturer:
 * Ascender Corporation
 * 
 * Designer:
 * Steve Matteson
 * 
 * Vendor URL:
 * http://www.ascendercorp.com/
 * 
 * License information:
 * http://www.ascendercorp.com/liberation.html
 */
Cufon.registerFont({"w":200,"face":{"font-family":"Liberation Sans","font-weight":700,"font-stretch":"normal","units-per-em":"360","panose-1":"2 11 7 4 2 2 2 2 2 4","ascent":"288","descent":"-72","x-height":"4","bbox":"-6 -267 339 80","underline-thickness":"37.793","underline-position":"-19.3359","unicode-range":"U+0020-U+007E"},"glyphs":{" ":{"w":100,"k":{"Y":7,"A":13}},"\u00a0":{"w":100},"!":{"d":"80,-75r-40,0r-6,-173r52,0xm34,0r0,-47r51,0r0,47r-51,0","w":119},"\"":{"d":"142,-158r-39,0r-4,-90r48,0xm67,-158r-39,0r-4,-90r48,0","w":170},"#":{"d":"160,-152r-12,59r37,0r0,26r-43,0r-14,67r-28,0r14,-67r-54,0r-14,67r-26,0r13,-67r-27,0r0,-26r33,0r13,-59r-37,0r0,-26r42,0r15,-67r27,0r-15,67r54,0r15,-67r27,0r-14,67r28,0r0,26r-34,0xm79,-152r-13,59r55,0r12,-59r-54,0"},"$":{"d":"111,-147v44,9,85,22,84,75v-1,49,-35,65,-84,68r0,31r-20,0r0,-31v-51,-1,-79,-23,-86,-68r45,-8v4,24,15,38,41,40v-2,-22,4,-51,-2,-69v-39,-10,-76,-22,-76,-72v0,-47,35,-60,78,-63r0,-23r20,0r0,23v47,1,70,23,78,62r-46,7v-4,-18,-12,-32,-32,-34r0,62xm91,-210v-33,-4,-45,46,-13,54v4,1,8,2,13,4r0,-58xm111,-40v39,5,53,-51,15,-60v-7,-2,-7,-2,-15,-4r0,64"},"%":{"d":"249,-155v45,1,62,31,62,79v-1,48,-18,79,-63,79v-45,0,-61,-32,-62,-79v0,-48,16,-79,63,-79xm97,0r-36,0r162,-248r36,0xm9,-172v0,-48,16,-79,63,-78v46,0,62,31,62,78v0,48,-18,79,-63,79v-45,0,-62,-31,-62,-79xm249,-25v24,0,24,-26,24,-51v0,-26,-1,-52,-24,-52v-24,0,-25,26,-25,52v0,25,0,51,25,51xm71,-120v23,0,24,-25,24,-52v0,-26,0,-51,-23,-51v-25,0,-25,25,-25,51v0,27,1,52,24,52","w":320},"&":{"d":"168,-19v-44,38,-157,30,-152,-49v3,-43,29,-60,59,-75v-25,-44,-12,-111,53,-106v37,3,64,15,64,52v0,43,-40,52,-69,68v12,22,27,41,43,59v14,-19,21,-38,28,-64r37,13v-8,29,-19,52,-34,74v12,10,32,16,52,10r0,35v-28,11,-65,-2,-81,-17xm110,-158v19,-9,43,-14,43,-39v0,-14,-10,-22,-25,-22v-34,0,-33,41,-18,61xm60,-68v-3,40,55,47,79,25v-18,-20,-34,-42,-48,-67v-18,8,-30,20,-31,42","w":259},"'":{"d":"62,-158r-38,0r-5,-90r48,0","w":85},"(":{"d":"67,-93v0,74,22,123,53,168r-50,0v-30,-45,-52,-93,-52,-168v0,-75,22,-123,52,-168r50,0v-32,44,-53,94,-53,168","w":119},")":{"d":"102,-93v0,74,-22,123,-52,168r-50,0v30,-46,54,-93,53,-168v0,-74,-22,-123,-53,-168r50,0v30,45,52,94,52,168","w":119},"*":{"d":"86,-200r42,-18r12,35r-44,11r32,37r-32,21r-26,-44r-26,44r-32,-21r33,-37r-44,-11r12,-35r42,18r-3,-48r38,0","w":140},"+":{"d":"125,-100r0,72r-40,0r0,-72r-70,0r0,-39r70,0r0,-72r40,0r0,72r71,0r0,39r-71,0","w":210},",":{"d":"76,-54v-1,42,2,86,-19,110r-33,0v12,-14,22,-32,24,-56r-23,0r0,-54r51,0","w":100},"-":{"d":"14,-72r0,-43r91,0r0,43r-91,0","w":119},"\u00ad":{"d":"14,-72r0,-43r91,0r0,43r-91,0","w":119},".":{"d":"24,0r0,-54r51,0r0,54r-51,0","w":100},"\/":{"d":"4,7r51,-268r42,0r-51,268r-42,0","w":100},"0":{"d":"101,-251v68,0,84,54,84,127v0,74,-19,128,-86,128v-67,0,-84,-56,-85,-128v-1,-75,17,-127,87,-127xm100,-35v37,-5,36,-46,36,-89v0,-43,4,-89,-36,-89v-39,0,-36,45,-36,89v0,43,-3,85,36,89"},"1":{"d":"23,0r0,-37r61,0r0,-169r-59,37r0,-38r62,-41r46,0r0,211r57,0r0,37r-167,0","k":{"1":20}},"2":{"d":"182,-182v0,78,-84,86,-111,141r115,0r0,41r-174,0v-6,-101,99,-100,120,-180v1,-22,-12,-31,-33,-32v-23,0,-32,14,-35,34r-49,-3v5,-45,32,-70,84,-70v51,0,83,22,83,69"},"3":{"d":"128,-127v34,4,56,21,59,58v7,91,-148,94,-172,28v-4,-9,-6,-17,-7,-26r51,-5v1,24,16,35,40,36v23,0,39,-12,38,-36v-1,-31,-31,-36,-65,-34r0,-40v32,2,59,-3,59,-33v0,-20,-13,-33,-34,-33v-21,0,-33,13,-35,32r-50,-3v6,-44,37,-68,86,-68v50,0,83,20,83,66v0,35,-22,52,-53,58"},"4":{"d":"165,-50r0,50r-47,0r0,-50r-113,0r0,-38r105,-160r55,0r0,161r33,0r0,37r-33,0xm118,-87r2,-116r-74,116r72,0"},"5":{"d":"139,-81v0,-46,-55,-55,-73,-27r-48,0r9,-140r149,0r0,37r-104,0r-4,63v44,-38,133,-4,122,66v11,103,-169,117,-179,20r49,-4v5,18,15,30,39,30v26,0,40,-18,40,-45"},"6":{"d":"115,-159v48,0,72,30,72,78v0,54,-30,85,-83,85v-64,0,-91,-50,-91,-122v0,-98,58,-163,141,-120v15,8,21,24,27,44r-47,6v-5,-31,-48,-31,-61,-4v-7,14,-11,33,-11,60v9,-17,28,-27,53,-27xm102,-35v24,0,36,-20,36,-45v0,-25,-11,-43,-37,-43v-23,0,-36,14,-36,38v0,27,11,50,37,50"},"7":{"d":"52,0v1,-96,47,-148,87,-207r-124,0r0,-41r169,0r0,40v-36,62,-79,113,-81,208r-51,0"},"8":{"d":"138,-131v27,9,52,24,51,61v0,53,-36,74,-89,74v-53,0,-89,-23,-89,-73v0,-35,22,-54,51,-61v-78,-25,-46,-121,38,-121v51,0,83,19,83,66v0,30,-18,49,-45,54xm100,-147v24,0,32,-13,32,-36v1,-23,-11,-34,-32,-34v-22,0,-33,12,-32,34v0,22,9,36,32,36xm101,-31v27,0,37,-17,37,-43v0,-25,-13,-39,-39,-39v-24,0,-37,15,-37,40v0,27,11,42,39,42"},"9":{"d":"99,-251v69,0,84,53,88,123v5,99,-61,162,-144,118v-15,-8,-21,-25,-26,-45r46,-6v4,31,50,33,63,7v7,-15,12,-36,12,-60v-9,18,-29,28,-54,28v-48,0,-72,-32,-72,-82v0,-55,31,-83,87,-83xm98,-123v24,0,37,-16,37,-39v0,-27,-10,-51,-37,-51v-25,0,-35,19,-35,45v0,25,10,45,35,45"},":":{"d":"35,-132r0,-50r50,0r0,50r-50,0xm35,0r0,-49r50,0r0,49r-50,0","w":119},";":{"d":"35,-132r0,-50r51,0r0,50r-51,0xm86,-49v1,42,0,83,-19,105r-33,0v12,-14,22,-32,24,-56r-23,0r0,-49r51,0","w":119},"\u037e":{"d":"35,-132r0,-50r51,0r0,50r-51,0xm86,-49v1,42,0,83,-19,105r-33,0v12,-14,22,-32,24,-56r-23,0r0,-49r51,0","w":119},"<":{"d":"15,-91r0,-56r181,-69r0,40r-147,57r147,57r0,40","w":210},"=":{"d":"15,-148r0,-39r180,0r0,39r-180,0xm15,-51r0,-39r180,0r0,39r-180,0","w":210},">":{"d":"15,-22r0,-40r146,-57r-146,-57r0,-40r181,69r0,56","w":210},"?":{"d":"110,-251v83,-7,118,89,53,130v-17,10,-36,21,-38,46r-47,0v2,-56,65,-53,71,-103v2,-21,-15,-35,-38,-34v-25,1,-41,14,-44,38r-50,-2v6,-48,39,-70,93,-75xm77,0r0,-47r51,0r0,47r-51,0","w":219},"@":{"d":"192,-256v86,0,138,45,138,129v0,61,-26,109,-84,114v-27,2,-36,-18,-34,-42v-11,22,-31,42,-62,42v-41,0,-58,-28,-58,-68v0,-58,29,-104,88,-107v26,-1,39,14,48,30r7,-26r27,0r-27,131v-1,11,6,15,14,16v38,-7,54,-45,54,-90v0,-68,-42,-104,-111,-104v-92,0,-143,58,-143,150v0,72,40,113,113,113v43,0,75,-12,103,-28r11,22v-32,17,-67,31,-116,31v-89,0,-139,-50,-139,-138v0,-109,65,-175,171,-175xm156,-38v42,-5,58,-44,60,-89v1,-24,-14,-38,-37,-38v-41,0,-55,40,-57,84v-1,25,9,46,34,43","w":351},"A":{"d":"199,0r-22,-63r-94,0r-22,63r-52,0r90,-248r61,0r90,248r-51,0xm166,-102r-36,-108v-10,38,-24,72,-36,108r72,0","w":259,"k":{"y":13,"w":7,"v":13,"Y":33,"W":20,"V":27,"T":27," ":13}},"B":{"d":"182,-130v37,4,62,22,62,59v0,94,-128,67,-220,71r0,-248v84,5,203,-23,205,63v0,31,-19,50,-47,55xm76,-148v40,-3,101,13,101,-30v0,-44,-60,-28,-101,-31r0,61xm76,-38v48,-3,116,14,116,-37v0,-48,-69,-32,-116,-35r0,72","w":259},"C":{"d":"67,-125v0,53,21,87,73,88v37,1,54,-22,65,-47r45,17v-17,42,-51,71,-110,71v-82,0,-120,-46,-125,-129v-7,-110,109,-156,196,-107v18,10,29,29,36,50r-46,12v-8,-25,-30,-41,-62,-41v-52,0,-71,34,-72,86","w":259},"D":{"d":"24,-248v120,-7,223,5,221,122v-1,80,-44,126,-121,126r-100,0r0,-248xm76,-40v74,7,117,-18,117,-86v0,-67,-45,-88,-117,-82r0,168","w":259},"E":{"d":"24,0r0,-248r195,0r0,40r-143,0r0,63r132,0r0,40r-132,0r0,65r150,0r0,40r-202,0","w":240},"F":{"d":"76,-208r0,77r127,0r0,40r-127,0r0,91r-52,0r0,-248r183,0r0,40r-131,0","w":219,"k":{"A":20,".":40,",":40}},"G":{"d":"67,-125v0,54,23,88,75,88v28,0,53,-7,68,-21r0,-34r-60,0r0,-39r108,0r0,91v-26,26,-66,44,-118,44v-82,0,-120,-46,-125,-129v-7,-111,111,-155,200,-109v19,10,29,26,37,47r-47,15v-11,-23,-29,-39,-63,-39v-53,1,-75,33,-75,86","w":280},"H":{"d":"186,0r0,-106r-110,0r0,106r-52,0r0,-248r52,0r0,99r110,0r0,-99r50,0r0,248r-50,0","w":259},"I":{"d":"24,0r0,-248r52,0r0,248r-52,0","w":100},"J":{"d":"176,-78v10,88,-125,109,-160,43v-5,-9,-9,-19,-11,-32r52,-8v4,21,12,37,35,38v23,0,32,-16,32,-40r0,-130r-49,0r0,-41r101,0r0,170"},"K":{"d":"195,0r-88,-114r-31,24r0,90r-52,0r0,-248r52,0r0,113r112,-113r60,0r-106,105r115,143r-62,0","w":259},"L":{"d":"24,0r0,-248r52,0r0,208r133,0r0,40r-185,0","w":219,"k":{"y":13,"Y":33,"W":20,"V":27,"T":27," ":7}},"M":{"d":"230,0r2,-204r-64,204r-37,0r-63,-204r2,204r-46,0r0,-248r70,0r56,185r57,-185r69,0r0,248r-46,0","w":299},"N":{"d":"175,0r-108,-191v6,58,2,128,3,191r-46,0r0,-248r59,0r110,193v-6,-58,-2,-129,-3,-193r46,0r0,248r-61,0","w":259},"O":{"d":"140,-251v80,0,125,45,125,126v0,81,-46,129,-126,129v-81,0,-124,-48,-124,-129v0,-81,44,-126,125,-126xm139,-37v52,0,73,-35,73,-88v0,-50,-21,-86,-72,-86v-52,0,-73,35,-73,86v0,51,22,88,72,88","w":280},"P":{"d":"24,-248v93,1,206,-16,204,79v-1,75,-69,88,-152,82r0,87r-52,0r0,-248xm76,-127v47,0,100,7,100,-41v0,-47,-54,-39,-100,-39r0,80","w":240,"k":{"A":27,".":46,",":46," ":7}},"Q":{"d":"140,-251v80,0,125,45,125,126v0,70,-33,111,-92,124v6,28,34,38,68,31r-1,36v-63,17,-111,-11,-120,-64v-69,-8,-105,-52,-105,-127v0,-81,44,-126,125,-126xm139,-37v52,0,73,-35,73,-88v0,-50,-21,-86,-72,-86v-52,0,-73,35,-73,86v0,51,22,88,72,88","w":280},"R":{"d":"240,-174v0,40,-23,61,-54,70r67,104r-59,0r-57,-94r-61,0r0,94r-52,0r0,-248v93,4,217,-23,216,74xm76,-134v48,-2,112,12,112,-38v0,-48,-66,-32,-112,-35r0,73","w":259,"k":{"Y":13,"W":7,"V":7}},"S":{"d":"169,-182v-1,-43,-94,-46,-97,-3v18,66,151,10,154,114v3,95,-165,93,-204,36v-6,-8,-10,-19,-12,-30r50,-8v3,46,112,56,116,5v-17,-69,-150,-10,-154,-114v-4,-87,153,-88,188,-35v5,8,8,18,10,28","w":240},"T":{"d":"136,-208r0,208r-52,0r0,-208r-80,0r0,-40r212,0r0,40r-80,0","w":219,"k":{"y":27,"w":27,"u":27,"s":27,"r":20,"o":27,"i":7,"e":27,"c":27,"a":27,"O":7,"A":27,";":40,":":40,".":40,"-":20,",":40}},"U":{"d":"238,-95v0,69,-44,99,-111,99v-64,0,-105,-29,-105,-97r0,-155r51,0r0,151v-1,38,19,59,55,60v90,1,49,-130,58,-211r52,0r0,153","w":259},"V":{"d":"147,0r-53,0r-92,-248r55,0r64,206v17,-72,42,-137,63,-206r54,0","w":240,"k":{"y":13,"u":13,"r":20,"o":27,"i":7,"e":20,"a":20,"A":27,";":20,":":20,".":33,"-":20,",":33}},"W":{"d":"275,0r-61,0r-44,-196r-44,196r-62,0r-64,-248r53,0r44,199r45,-199r58,0r43,199r44,-199r52,0","w":339,"k":{"y":7,"u":7,"r":7,"o":7,"i":3,"e":7,"a":13,"A":20,";":7,":":7,".":20,"-":7,",":20}},"X":{"d":"182,0r-62,-99r-62,99r-55,0r86,-130r-79,-118r55,0r55,88r55,-88r55,0r-75,118r82,130r-55,0","w":240},"Y":{"d":"146,-102r0,102r-52,0r0,-102r-88,-146r54,0r60,105r60,-105r54,0","w":240,"k":{"v":20,"u":20,"q":27,"p":20,"o":27,"i":13,"e":20,"a":20,"A":33,";":27,":":27,".":40,"-":20,",":40," ":7}},"Z":{"d":"210,0r-199,0r0,-37r134,-170r-121,0r0,-41r178,0r0,36r-134,171r142,0r0,41","w":219},"[":{"d":"20,75r0,-336r95,0r0,34r-48,0r0,268r48,0r0,34r-95,0","w":119},"\\":{"d":"54,7r-50,-268r42,0r51,268r-43,0","w":100},"]":{"d":"4,75r0,-34r49,0r0,-268r-49,0r0,-34r96,0r0,336r-96,0","w":119},"^":{"d":"162,-90r-57,-133r-57,133r-40,0r69,-158r56,0r69,158r-40,0","w":210},"_":{"d":"-4,44r0,-14r207,0r0,14r-207,0"},"`":{"d":"71,-208r-59,-48r0,-8r45,0r44,51r0,5r-30,0","w":119},"a":{"d":"133,-34v-16,19,-30,39,-64,38v-37,-1,-58,-20,-58,-58v-1,-60,55,-63,116,-61v1,-26,-3,-47,-28,-47v-18,1,-26,9,-28,27r-52,-2v7,-38,36,-58,82,-57v46,1,74,22,75,68r1,82v-1,14,12,18,25,15r0,27v-30,8,-71,5,-69,-32xm85,-31v29,0,43,-24,42,-57v-32,0,-66,-3,-65,30v0,17,8,27,23,27"},"b":{"d":"135,-194v52,0,70,43,70,98v0,56,-19,99,-73,100v-30,1,-46,-15,-58,-35r-2,31r-48,0r1,-261r50,0r0,104v11,-23,29,-37,60,-37xm114,-30v31,0,40,-27,40,-66v0,-37,-7,-63,-39,-63v-32,0,-41,28,-41,65v0,36,8,64,40,64","w":219},"c":{"d":"190,-63v-7,42,-38,67,-86,67v-59,0,-84,-38,-90,-98v-12,-110,154,-137,174,-36r-49,2v-2,-19,-15,-32,-35,-32v-30,0,-35,28,-38,64v-6,74,65,87,74,30"},"d":{"d":"88,-194v31,-1,46,15,58,34r-1,-101r50,0r1,261r-48,0v-2,-10,0,-23,-3,-31v-11,23,-29,35,-61,35v-52,0,-68,-45,-69,-99v0,-56,19,-97,73,-99xm105,-30v33,0,40,-30,41,-66v1,-37,-9,-64,-41,-64v-32,0,-38,30,-39,65v0,43,13,65,39,65","w":219},"e":{"d":"185,-48v-13,30,-37,53,-82,52v-60,-2,-89,-37,-89,-100v0,-63,30,-98,90,-98v62,0,83,45,84,108r-122,0v0,31,8,55,39,56v18,0,30,-7,34,-22xm140,-117v5,-46,-57,-63,-70,-21v-2,6,-4,13,-4,21r74,0"},"f":{"d":"121,-226v-27,-7,-43,5,-38,36r38,0r0,33r-38,0r0,157r-49,0r0,-157r-28,0r0,-33r28,0v-9,-59,32,-81,87,-68r0,32","w":119},"g":{"d":"195,-6v11,88,-120,106,-164,52v-4,-6,-6,-13,-8,-21r49,-6v3,16,16,24,34,25v40,0,42,-37,40,-79v-11,22,-30,35,-61,35v-53,0,-70,-43,-70,-97v0,-56,18,-96,73,-97v30,0,46,14,59,34r2,-30r47,0xm105,-35v32,0,41,-27,41,-63v0,-35,-9,-62,-40,-62v-32,0,-39,29,-40,63v0,36,9,62,39,62","w":219},"h":{"d":"114,-157v-59,0,-34,97,-39,157r-50,0r0,-261r50,0r-1,109v12,-26,28,-41,61,-42v86,-1,58,113,63,194r-50,0v-7,-57,23,-157,-34,-157","w":219},"i":{"d":"25,-224r0,-37r50,0r0,37r-50,0xm25,0r0,-190r50,0r0,190r-50,0","w":100},"j":{"d":"25,-224r0,-37r50,0r0,37r-50,0xm75,22v2,45,-34,59,-81,51r0,-35v22,5,31,-5,31,-27r0,-201r50,0r0,212","w":100},"k":{"d":"147,0r-51,-86r-21,15r0,71r-50,0r0,-261r50,0r0,150r67,-79r53,0r-66,74r72,116r-54,0"},"l":{"d":"25,0r0,-261r50,0r0,261r-50,0","w":100},"m":{"d":"220,-157v-53,9,-28,100,-34,157r-49,0r0,-107v1,-27,-5,-49,-29,-50v-53,10,-27,100,-33,157r-50,0r-1,-190r47,0v2,12,-1,28,3,38v10,-53,101,-56,108,0v13,-22,24,-43,59,-42v82,1,51,116,57,194r-49,0r0,-107v-1,-25,-5,-48,-29,-50","w":320},"n":{"d":"135,-194v87,-1,58,113,63,194r-50,0v-7,-57,23,-157,-34,-157v-59,0,-34,97,-39,157r-50,0r-1,-190r47,0v2,12,-1,28,3,38v12,-26,28,-41,61,-42","w":219},"o":{"d":"110,-194v64,0,96,36,96,99v0,64,-35,99,-97,99v-61,0,-95,-36,-95,-99v0,-62,34,-99,96,-99xm109,-30v35,0,45,-28,45,-65v0,-40,-10,-65,-43,-65v-34,0,-45,26,-45,65v0,36,10,65,43,65","w":219},"p":{"d":"135,-194v53,0,70,44,70,98v0,56,-19,98,-73,100v-31,1,-45,-17,-59,-34v3,33,2,69,2,105r-50,0r-1,-265r48,0v2,10,0,23,3,31v11,-24,29,-35,60,-35xm114,-30v33,0,39,-31,40,-66v0,-38,-9,-64,-40,-64v-56,0,-55,130,0,130","w":219},"q":{"d":"84,4v-52,0,-69,-45,-69,-99v0,-55,18,-99,73,-99v29,0,47,12,58,34r2,-30r48,0r-1,265r-49,0r0,-107v-10,23,-32,36,-62,36xm105,-30v32,0,41,-29,41,-66v0,-36,-9,-64,-40,-64v-33,0,-39,30,-40,65v0,43,13,65,39,65","w":219},"r":{"d":"135,-150v-39,-12,-60,13,-60,57r0,93r-50,0r-1,-190r47,0v2,13,-1,29,3,40v6,-28,27,-53,61,-41r0,41","w":140,"k":{".":20,",":20}},"s":{"d":"137,-138v1,-29,-70,-34,-71,-4v15,46,118,7,119,86v1,83,-164,76,-172,9r43,-7v4,19,20,25,44,25v33,8,57,-30,24,-41v-43,-14,-102,-11,-104,-66v-2,-80,154,-74,161,-7"},"t":{"d":"115,-3v-36,14,-87,7,-87,-42r0,-112r-24,0r0,-33r27,0r15,-45r31,0r0,45r36,0r0,33r-36,0r0,99v-1,23,16,31,38,25r0,30","w":119},"u":{"d":"85,4v-87,1,-58,-113,-63,-194r50,0v7,57,-23,150,33,157v60,-5,35,-97,40,-157r50,0r1,190r-47,0v-2,-12,1,-28,-3,-38v-12,25,-28,42,-61,42","w":219},"v":{"d":"128,0r-59,0r-68,-190r53,0r45,150r48,-150r52,0","k":{".":27,",":27}},"w":{"d":"231,0r-52,0r-39,-155r-40,155r-52,0r-49,-190r46,0r32,145v9,-52,24,-97,36,-145r53,0r37,145r32,-145r46,0","w":280,"k":{".":13,",":13}},"x":{"d":"144,0r-44,-69r-45,69r-53,0r70,-98r-66,-92r53,0r41,62r40,-62r54,0r-67,91r71,99r-54,0"},"y":{"d":"123,10v-15,43,-43,76,-104,62r0,-35v35,8,53,-11,59,-39r-75,-188r52,0r48,148v12,-52,28,-100,44,-148r51,0","k":{".":27,",":27}},"z":{"d":"12,0r0,-35r95,-120r-88,0r0,-35r142,0r0,35r-94,119r103,0r0,36r-158,0","w":180},"{":{"d":"133,41r0,34v-50,4,-88,-6,-87,-53v0,-46,9,-101,-40,-98r0,-34v48,2,40,-52,40,-98v-1,-47,37,-57,87,-53r0,34v-79,-14,-6,124,-77,134v73,11,-4,147,77,134","w":140},"|":{"d":"27,80r0,-341r46,0r0,341r-46,0","w":100},"}":{"d":"94,-36v2,56,4,113,-52,111r-34,0r0,-34v77,13,5,-124,76,-135v-39,-5,-38,-51,-36,-97v1,-27,-12,-38,-40,-36r0,-34v49,-4,87,6,86,53v-1,47,-8,101,41,98r0,34v-26,1,-42,13,-41,40","w":140},"~":{"d":"197,-105v-54,44,-136,-36,-183,10r0,-38v53,-45,135,36,183,-10r0,38","w":210}}});
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * Digitized data © 2007 Ascender Corporation. All rights reserved.
 * 
 * Trademark:
 * Liberation is a trademark of Red Hat, Inc. registered in U.S. Patent and
 * Trademark Office and certain other jurisdictions.
 * 
 * Manufacturer:
 * Ascender Corporation
 * 
 * Designer:
 * Steve Matteson
 * 
 * Vendor URL:
 * http://www.ascendercorp.com/
 * 
 * License information:
 * http://www.ascendercorp.com/liberation.html
 */
Cufon.registerFont({"w":200,"face":{"font-family":"Liberation Sans","font-weight":400,"font-style":"italic","font-stretch":"normal","units-per-em":"360","panose-1":"2 11 6 4 2 2 2 9 2 4","ascent":"288","descent":"-72","x-height":"4","bbox":"-40 -266 368 80","underline-thickness":"26.3672","underline-position":"-24.9609","slope":"-12","unicode-range":"U+0020-U+007E"},"glyphs":{" ":{"w":100,"k":{"Y":7,"A":13}},"\u00a0":{"w":100},"!":{"d":"58,-70r-26,0r30,-178r35,0xm14,0r7,-35r34,0r-7,35r-34,0","w":100},"\"":{"d":"123,-170r-25,0r11,-78r32,0xm58,-170r-25,0r11,-78r32,0","w":127},"#":{"d":"163,-156r-14,65r46,0r0,19r-50,0r-15,72r-20,0r15,-72r-63,0r-15,72r-20,0r15,-72r-35,0r0,-19r39,0r14,-65r-44,0r0,-19r48,0r16,-71r19,0r-16,71r64,0r16,-71r19,0r-15,71r37,0r0,19r-41,0xm80,-156r-14,65r64,0r13,-65r-63,0"},"$":{"d":"121,-140v32,11,67,22,67,65v0,52,-40,70,-93,71v-4,15,0,35,-26,29r6,-29v-46,-3,-70,-23,-77,-62r29,-7v4,27,23,41,53,43r17,-87v-33,-9,-65,-20,-65,-62v0,-47,42,-62,89,-64r5,-23r20,0r-5,24v35,4,58,20,65,51r-28,8v-6,-19,-19,-31,-42,-34xm100,-30v50,8,78,-55,32,-75v-5,-2,-10,-4,-16,-6xm117,-218v-44,-7,-75,49,-31,67v5,2,10,4,16,6"},"%":{"d":"75,0r-29,0r208,-248r30,0xm26,-148v1,-56,18,-102,70,-102v31,0,46,20,45,54v-2,54,-18,104,-70,104v-32,0,-46,-22,-45,-56xm117,-199v0,-19,-6,-32,-21,-32v-40,0,-44,48,-46,86v-1,19,6,33,22,33v38,0,45,-51,45,-87xm189,-54v2,-54,18,-102,70,-102v32,0,46,22,46,55v0,53,-18,103,-70,103v-32,0,-47,-21,-46,-56xm280,-105v1,-20,-5,-32,-21,-32v-39,0,-43,50,-46,86v-2,19,6,33,22,33v39,0,42,-49,45,-87","w":320},"&":{"d":"76,-182v-8,-73,125,-95,125,-21v0,51,-54,56,-87,74v9,28,22,52,38,74v18,-21,33,-48,44,-75r23,10v-14,30,-29,60,-51,83v10,12,32,18,53,12r-3,23v-25,10,-55,0,-69,-17v-42,35,-147,33,-143,-43v3,-51,38,-63,75,-80v-2,-12,-3,-27,-5,-40xm36,-62v0,51,68,50,96,25v-18,-23,-33,-52,-44,-82v-24,12,-52,20,-52,57xm145,-228v-39,-2,-46,38,-38,76v28,-11,67,-14,67,-50v0,-17,-12,-25,-29,-26","w":240},"'":{"d":"60,-170r-24,0r11,-78r32,0","w":68},"(":{"d":"17,-49v1,-102,45,-165,103,-212r30,0v-58,51,-101,116,-101,215v0,50,14,89,36,121r-31,0v-24,-32,-36,-73,-37,-124","w":119},")":{"d":"98,-137v-1,102,-44,166,-102,212r-31,0v58,-52,102,-116,102,-215v0,-50,-15,-89,-37,-121r31,0v24,32,36,73,37,124","w":119},"*":{"d":"95,-196r47,-18r8,23r-50,13r33,44r-21,13r-27,-46r-27,45r-21,-12r33,-44r-49,-13r8,-23r47,19r-2,-53r24,0","w":140},"+":{"d":"123,-107r0,75r-26,0r0,-75r-74,0r0,-26r74,0r0,-75r26,0r0,75r75,0r0,26r-75,0","w":210},",":{"d":"58,-38v-5,33,-12,64,-30,84r-21,0v12,-14,20,-28,25,-46r-15,0r7,-38r34,0","w":100},"-":{"d":"18,-82r6,-28r88,0r-6,28r-88,0","w":119},"\u00ad":{"d":"18,-82r6,-28r88,0r-6,28r-88,0","w":119},".":{"d":"14,0r8,-38r34,0r-8,38r-34,0","w":100},"\/":{"d":"-20,4r123,-265r28,0r-123,265r-28,0","w":100},"0":{"d":"16,-82v0,-90,25,-169,113,-169v48,0,68,33,68,82v0,90,-27,173,-113,173v-47,0,-68,-35,-68,-86xm46,-77v0,32,11,55,40,55v69,0,76,-79,80,-149v2,-32,-10,-55,-39,-55v-69,0,-81,81,-81,149"},"1":{"d":"9,0r6,-27r63,0r36,-188r-63,39r6,-31r66,-41r29,0r-42,221r60,0r-5,27r-156,0","k":{"1":27}},"2":{"d":"123,-251v66,0,92,69,53,113v-38,44,-103,63,-137,111r128,0r-5,27r-164,0v17,-92,123,-93,159,-163v14,-28,-1,-64,-36,-62v-29,2,-46,17,-54,41r-30,-6v13,-36,37,-61,86,-61"},"3":{"d":"148,-71v0,-36,-31,-44,-71,-41r5,-28v46,3,81,-6,81,-50v0,-23,-15,-35,-39,-35v-30,0,-49,17,-56,41r-32,-3v12,-39,42,-63,90,-64v43,0,69,19,71,60v1,43,-30,58,-65,66v27,5,49,22,49,53v0,85,-133,99,-164,35v-4,-7,-7,-15,-9,-22r29,-9v8,25,25,45,58,45v34,1,53,-17,53,-48"},"4":{"d":"149,-56r-11,56r-32,0r11,-56r-115,0r5,-25r144,-167r35,0r-32,167r33,0r-5,25r-33,0xm145,-203r-105,122r82,0"},"5":{"d":"151,-85v6,-55,-69,-56,-94,-29r-31,0r34,-134r141,0r-5,27r-112,0r-20,79v41,-34,127,-11,121,53v14,102,-155,127,-177,35r29,-8v15,62,122,49,114,-23"},"6":{"d":"184,-94v-4,58,-33,98,-90,98v-50,0,-74,-35,-74,-86v0,-94,36,-181,136,-167v24,3,39,21,44,47r-29,6v-8,-40,-68,-34,-87,-5v-13,20,-24,43,-30,73v28,-51,135,-39,130,34xm111,-136v-35,2,-61,22,-60,62v1,30,14,52,44,52v38,0,55,-31,56,-70v1,-26,-14,-46,-40,-44"},"7":{"d":"206,-222r-58,71v-33,43,-59,89,-72,151r-33,0v20,-96,77,-159,130,-221r-136,0r5,-27r169,0"},"8":{"d":"39,-185v1,-48,36,-66,85,-66v42,0,74,18,74,59v0,38,-25,57,-56,64v23,7,40,22,40,52v0,55,-39,80,-94,80v-48,0,-78,-21,-79,-67v-1,-44,31,-60,63,-71v-20,-7,-33,-25,-33,-51xm70,-182v0,26,17,39,46,39v34,0,48,-18,49,-48v0,-25,-18,-36,-45,-36v-32,0,-50,15,-50,45xm149,-77v0,-29,-19,-41,-50,-41v-37,0,-57,20,-57,55v0,29,19,42,49,42v36,0,58,-19,58,-56"},"9":{"d":"40,-53v7,41,73,38,88,5v14,-18,25,-43,30,-72v-13,20,-31,35,-60,35v-44,0,-69,-27,-69,-70v0,-57,32,-96,91,-96v58,0,76,44,72,106v-6,89,-67,182,-157,136v-12,-6,-19,-20,-23,-36xm102,-110v67,0,87,-116,17,-116v-39,0,-58,29,-58,71v1,27,12,45,41,45"},":":{"d":"44,-154r7,-36r35,0r-8,36r-34,0xm14,0r7,-36r35,0r-7,36r-35,0","w":100},";":{"d":"58,-36v-5,32,-11,63,-30,82r-21,0v12,-14,20,-28,25,-46r-15,0r7,-36r34,0xm47,-154r7,-36r34,0r-7,36r-34,0","w":100},"\u037e":{"d":"58,-36v-5,32,-11,63,-30,82r-21,0v12,-14,20,-28,25,-46r-15,0r7,-36r34,0xm47,-154r7,-36r34,0r-7,36r-34,0","w":100},"<":{"d":"23,-100r0,-36r175,-74r0,27r-151,65r151,64r0,27","w":210},"=":{"d":"23,-150r0,-26r175,0r0,26r-175,0xm23,-60r0,-26r175,0r0,26r-175,0","w":210},">":{"d":"23,-27r0,-27r151,-64r-151,-65r0,-27r175,74r0,36","w":210},"?":{"d":"28,-184v13,-41,42,-62,95,-67v81,-7,97,95,38,128v-25,14,-56,24,-63,57r-31,0v6,-67,99,-52,99,-119v0,-27,-20,-37,-46,-38v-33,0,-55,19,-63,46xm53,0r6,-35r35,0r-7,35r-34,0"},"@":{"d":"204,-261v85,0,136,45,136,128v0,61,-22,110,-78,115v-28,2,-39,-18,-37,-44v-13,22,-31,44,-66,44v-40,0,-58,-27,-58,-68v0,-60,30,-105,88,-108v29,-1,43,15,54,32r7,-28r27,0r-27,134v-1,11,6,16,15,16v39,0,51,-48,51,-92v0,-69,-42,-107,-112,-107v-94,0,-145,59,-145,153v0,72,41,113,114,113v43,0,78,-13,106,-28r10,19v-30,18,-68,32,-116,32v-88,0,-139,-50,-139,-136v0,-107,62,-175,170,-175xm164,-41v46,0,70,-44,70,-90v0,-26,-17,-40,-43,-40v-44,0,-59,41,-61,85v-1,26,9,45,34,45","w":365},"A":{"d":"187,0r-14,-72r-112,0r-42,72r-37,0r149,-248r38,0r52,248r-34,0xm168,-99r-22,-123r-70,123r92,0","w":240,"k":{"y":3,"w":7,"v":7,"Y":27,"W":7,"V":20,"T":27," ":13}},"B":{"d":"219,-77v0,94,-115,75,-208,77r48,-248v73,2,169,-15,169,57v0,38,-24,54,-60,60v29,5,51,21,51,54xm193,-188v0,-44,-62,-31,-105,-33r-16,79v55,0,121,9,121,-46xm186,-78v-1,-49,-69,-36,-119,-38r-17,89v61,-1,137,12,136,-51","w":240},"C":{"d":"125,-24v46,0,70,-25,89,-51r25,16v-25,35,-56,63,-116,63v-115,0,-128,-150,-63,-212v32,-50,158,-61,191,-5v5,7,9,14,11,22r-32,10v-9,-28,-33,-43,-69,-43v-74,0,-108,51,-108,125v0,46,24,75,72,75","w":259},"D":{"d":"248,-139v-1,125,-104,148,-237,139r48,-248v105,-6,190,8,189,109xm214,-139v1,-70,-52,-87,-126,-82r-38,194v98,7,163,-21,164,-112","w":259},"E":{"d":"11,0r48,-248r184,0r-5,28r-151,0r-15,79r140,0r-5,27r-140,0r-17,87r158,0r-5,27r-192,0","w":240},"F":{"d":"87,-220r-18,92r140,0r-5,28r-140,0r-19,100r-34,0r48,-248r178,0r-5,28r-145,0","w":219,"k":{"A":27,".":46,",":46," ":7}},"G":{"d":"52,-101v-6,87,114,94,164,50r9,-45r-74,0r6,-28r105,0r-18,87v-27,25,-63,41,-114,41v-70,0,-112,-35,-112,-105v0,-106,78,-167,188,-146v30,6,48,27,59,54r-34,9v-10,-26,-31,-41,-67,-40v-75,1,-107,50,-112,123","w":280},"H":{"d":"179,0r23,-115r-135,0r-22,115r-34,0r48,-248r34,0r-21,105r135,0r21,-105r32,0r-48,248r-33,0","w":259},"I":{"d":"14,0r48,-248r34,0r-48,248r-34,0","w":100},"J":{"d":"29,-66v0,49,71,55,82,11v13,-52,22,-111,33,-165r-51,0r5,-28r85,0r-34,174v2,85,-142,111,-150,14","w":180},"K":{"d":"180,0r-83,-118r-34,22r-18,96r-34,0r48,-248r34,0r-24,122v44,-43,94,-81,141,-122r43,0r-132,111r98,137r-39,0","w":240},"L":{"d":"11,0r48,-248r34,0r-43,221r125,0r-5,27r-159,0","k":{"y":7,"Y":33,"W":13,"V":20,"T":27," ":7}},"M":{"d":"222,0r43,-216v-8,16,-17,34,-26,49r-96,167r-22,0r-40,-216r-40,216r-30,0r48,-248r42,0r38,208r116,-208r45,0r-48,248r-30,0","w":299},"N":{"d":"173,0r-93,-213r-39,213r-30,0r48,-248r37,0r94,214r40,-214r30,0r-48,248r-39,0","w":259},"O":{"d":"20,-101v0,-91,52,-143,145,-150v126,-9,127,168,53,223v-23,17,-55,32,-93,32v-68,0,-105,-37,-105,-105xm236,-134v5,-57,-18,-91,-73,-90v-77,1,-110,51,-110,125v0,49,23,75,73,75v72,-1,104,-45,110,-110","w":280},"P":{"d":"238,-179v0,84,-86,86,-175,82r-18,97r-34,0r48,-248v82,0,179,-12,179,69xm204,-178v0,-53,-64,-42,-116,-43r-19,98v63,0,135,9,135,-55","w":240,"k":{"A":27,".":46,",":46," ":13}},"Q":{"d":"24,-61v-25,-104,35,-190,139,-190v67,1,105,36,105,101v0,88,-46,140,-124,152v2,33,24,47,60,39r-3,23v-50,15,-89,-11,-89,-61v-46,-3,-79,-26,-88,-64xm234,-134v6,-55,-18,-91,-72,-90v-77,1,-111,51,-111,125v0,49,24,75,73,75v72,0,103,-45,110,-110","w":280},"R":{"d":"249,-183v0,48,-29,72,-75,77r47,106r-36,0r-43,-103r-77,0r-20,103r-34,0r48,-248v83,2,190,-17,190,65xm215,-180v0,-55,-74,-39,-127,-41r-18,92v63,-1,145,13,145,-51","w":259,"k":{"Y":13,"W":7,"V":7,"T":7}},"S":{"d":"194,-120v59,52,2,134,-86,124v-53,-6,-90,-18,-98,-63r31,-7v8,30,29,43,70,43v46,0,84,-17,71,-62v-32,-43,-135,-20,-137,-98v-3,-89,178,-90,191,-16r-30,9v-8,-48,-127,-53,-127,5v0,53,81,35,115,65","w":240},"T":{"d":"151,-220r-43,220r-33,0r42,-220r-85,0r6,-28r203,0r-5,28r-85,0","w":219,"k":{"y":27,"w":27,"u":27,"s":33,"r":27,"o":33,"i":3,"e":33,"c":33,"a":33,"O":7,"A":27,";":27,":":27,".":33,"-":33,",":33}},"U":{"d":"62,-99v-23,68,61,99,108,59v47,-40,38,-139,58,-208r34,0v-28,104,-9,252,-147,252v-66,0,-97,-47,-84,-116r26,-136r34,0","w":259},"V":{"d":"119,0r-35,0r-53,-248r34,0r41,218r126,-218r36,0","w":240,"k":{"y":7,"u":7,"r":7,"o":13,"i":7,"e":13,"a":13,"A":20,";":7,":":7,".":27,"-":13,",":27}},"W":{"d":"247,0r-39,0r-15,-214r-24,57r-74,157r-39,0r-25,-248r35,0r16,218r101,-218r33,0r16,218r101,-218r35,0","w":339,"k":{"i":3,"e":7,"a":7,"A":7,".":13,"-":7,",":13}},"X":{"d":"176,0r-54,-107r-92,107r-37,0r115,-131r-60,-117r35,0r48,97r83,-97r37,0r-105,119r65,129r-35,0","w":240},"Y":{"d":"138,-103r-20,103r-33,0r20,-103r-68,-145r35,0r54,119r98,-119r38,0","w":240,"k":{"v":13,"u":13,"q":20,"p":20,"o":20,"i":7,"e":20,"a":27,"A":20,";":13,":":13,".":33,"-":27,",":33," ":7}},"Z":{"d":"190,0r-197,0r5,-25r185,-195r-134,0r5,-28r176,0r-5,25r-185,196r155,0","w":219},"[":{"d":"-7,75r65,-336r72,0r-5,23r-41,0r-56,290r41,0r-4,23r-72,0","w":100},"\\":{"d":"56,4r-30,-265r26,0r31,265r-27,0","w":100},"]":{"d":"-30,75r5,-23r40,0r57,-290r-41,0r4,-23r72,0r-65,336r-72,0","w":100},"^":{"d":"144,-118r-55,-112r-53,112r-29,0r65,-130r35,0r65,130r-28,0","w":168},"_":{"d":"-28,44r0,-13r207,0r0,13r-207,0"},"`":{"d":"72,-211r-49,-49r1,-5r36,0v9,19,22,33,28,54r-16,0","w":119},"a":{"d":"165,-48v-4,18,1,34,23,27r-3,20v-29,8,-62,0,-52,-35r-2,0v-15,22,-32,40,-68,40v-33,0,-55,-20,-55,-53v0,-68,71,-67,138,-67v10,-26,0,-56,-31,-54v-26,1,-42,9,-47,31r-32,-5v8,-67,160,-71,144,15v-5,28,-9,54,-15,81xm42,-50v3,52,80,24,89,-6v7,-12,7,-24,11,-38v-47,1,-103,-4,-100,44"},"b":{"d":"68,-162v25,-46,127,-43,121,31v-6,71,-20,132,-91,135v-29,1,-45,-15,-55,-35r-7,31r-31,0r52,-261r31,0xm156,-126v2,-27,-9,-43,-34,-43v-55,0,-70,51,-70,103v0,29,15,45,43,46v52,0,58,-58,61,-106"},"c":{"d":"44,-68v0,29,11,47,38,47v30,0,42,-19,51,-41r28,9v-13,32,-35,57,-79,57v-51,0,-72,-33,-70,-89v3,-77,74,-140,146,-93v12,8,15,23,18,40r-31,5v-1,-22,-13,-36,-36,-36v-52,0,-65,49,-65,101","w":180},"d":{"d":"133,-28v-30,54,-138,36,-120,-49v13,-62,24,-115,90,-117v29,-1,46,15,56,35r19,-102r32,0r-50,261r-30,0xm45,-64v-2,27,10,43,35,43v54,-1,69,-50,69,-103v0,-29,-15,-46,-42,-46v-53,-1,-58,58,-62,106"},"e":{"d":"111,-194v62,-3,86,47,72,106r-138,0v-7,38,6,69,45,68v27,-1,43,-14,53,-32r24,11v-15,26,-38,45,-80,45v-49,-1,-75,-27,-75,-75v0,-70,32,-119,99,-123xm155,-113v14,-66,-71,-72,-95,-28v-4,8,-8,17,-11,28r106,0"},"f":{"d":"76,-167r-32,167r-32,0r33,-167r-27,0r4,-23r27,0v3,-47,25,-81,82,-69r-4,24v-35,-8,-44,15,-46,45r37,0r-5,23r-37,0","w":100},"g":{"d":"103,-194v29,0,47,14,56,36v2,-11,5,-23,8,-32r30,0r-37,185v-3,66,-78,102,-139,67v-12,-7,-17,-17,-20,-32r28,-7v7,42,83,31,92,-3v4,-16,9,-38,13,-55v-13,20,-29,36,-62,36v-40,0,-60,-25,-60,-64v0,-71,23,-131,91,-131xm107,-170v-53,0,-58,54,-61,104v-2,27,10,44,36,44v49,0,65,-50,67,-102v1,-29,-15,-46,-42,-46"},"h":{"d":"67,-158v15,-20,31,-36,64,-36v94,0,33,127,27,194r-32,0r25,-140v3,-38,-53,-32,-70,-12v-29,35,-30,101,-44,152r-31,0r51,-261r31,0"},"i":{"d":"50,-231r6,-30r32,0r-6,30r-32,0xm6,0r37,-190r31,0r-37,190r-31,0","w":79},"j":{"d":"51,-231r6,-30r31,0r-6,30r-31,0xm33,24v-5,36,-31,60,-73,48v3,-12,-1,-29,18,-22v17,-1,21,-13,24,-31r41,-209r32,0","w":79},"k":{"d":"127,0r-47,-88r-30,22r-13,66r-31,0r51,-261r31,0r-31,161r99,-90r39,0r-93,82r59,108r-34,0","w":180},"l":{"d":"6,0r50,-261r32,0r-51,261r-31,0","w":79},"m":{"d":"248,-111v6,-24,9,-61,-24,-58v-72,9,-57,108,-77,169r-31,0r26,-142v3,-37,-50,-30,-64,-10v-26,37,-28,101,-41,152r-31,0r36,-190r30,0v-1,10,-6,24,-4,32v13,-43,101,-52,105,5v13,-22,29,-41,61,-41v90,0,28,129,23,194r-31,0","w":299},"n":{"d":"67,-158v22,-48,132,-52,116,29r-25,129r-32,0r25,-140v3,-38,-53,-32,-70,-12v-29,35,-30,100,-43,152r-32,0r36,-190r30,0"},"o":{"d":"30,-147v31,-64,166,-65,159,27v-6,71,-31,121,-103,124v-77,4,-85,-92,-56,-151xm88,-20v53,0,68,-48,68,-100v0,-31,-11,-51,-44,-50v-52,1,-68,46,-68,97v0,32,13,53,44,53"},"p":{"d":"67,-162v32,-53,139,-36,121,50v-13,61,-25,114,-91,116v-29,0,-45,-15,-55,-35v-4,37,-14,70,-20,106r-31,0r50,-265r29,0v-1,10,0,20,-3,28xm156,-126v0,-26,-10,-43,-35,-43v-54,0,-67,50,-69,103v-1,29,14,45,42,46v53,0,62,-58,62,-106"},"q":{"d":"133,-28v-30,54,-138,36,-120,-49v13,-62,24,-115,90,-117v29,-1,46,15,56,35v2,-12,6,-24,8,-34r31,0r-54,268r-31,0xm45,-64v-2,27,10,43,35,43v54,-1,69,-50,69,-103v0,-29,-15,-46,-42,-46v-53,-1,-58,58,-62,106"},"r":{"d":"66,-151v12,-25,30,-51,66,-40r-6,26v-81,-11,-68,100,-88,165r-32,0r36,-190r30,0","w":119,"k":{".":13,"-":7,",":20}},"s":{"d":"55,-144v13,50,104,24,104,88v0,77,-144,79,-158,17r26,-10v6,40,102,42,102,-4v-13,-50,-104,-23,-104,-87v0,-71,143,-71,148,-8r-29,4v-5,-35,-85,-37,-89,0","w":180},"t":{"d":"51,-54v-9,22,5,41,31,30r-3,23v-36,15,-69,-3,-60,-51r22,-115r-22,0r5,-23r22,0r19,-43r21,0r-9,43r35,0r-4,23r-35,0","w":100},"u":{"d":"67,3v-93,-2,-31,-127,-26,-193r32,0r-25,140v-3,39,53,32,70,12v30,-34,30,-101,43,-152r32,0r-36,190r-30,0v1,-10,6,-24,4,-33v-14,20,-29,37,-64,36"},"v":{"d":"89,0r-37,0r-32,-190r33,0r21,165r89,-165r34,0","w":180,"k":{".":27,",":27}},"w":{"d":"188,0r-37,0r-8,-164r-72,164r-37,0r-16,-190r31,0r8,164r75,-164r34,0r8,164r74,-164r31,0","w":259,"k":{".":20,",":20}},"x":{"d":"124,0r-37,-78r-66,78r-35,0r86,-98r-46,-92r33,0r34,74r61,-74r37,0r-83,92r50,98r-34,0","w":180},"y":{"d":"198,-190r-129,220v-16,28,-44,53,-89,42v4,-11,-1,-27,19,-22v33,-1,43,-29,59,-52r-38,-188r32,0r27,156r84,-156r35,0","w":180,"k":{".":27,",":27}},"z":{"d":"-8,0r5,-24r140,-142r-106,0r5,-24r145,0r-5,24r-140,142r119,0r-5,24r-158,0","w":180},"{":{"d":"54,8v-6,25,-1,50,32,44r-5,23v-77,11,-58,-72,-46,-129v0,-20,-11,-27,-31,-28r4,-22v93,-3,3,-173,138,-157r-4,23v-85,-8,-22,124,-103,145v41,9,23,65,15,101","w":120},"|":{"d":"37,80r0,-341r30,0r0,341r-30,0","w":93},"}":{"d":"65,-194v6,-26,0,-49,-32,-44r4,-23v79,-12,59,72,46,129v1,20,12,27,32,28r-5,22v-92,5,-4,173,-138,157r4,-23v86,9,21,-124,103,-145v-41,-8,-21,-66,-14,-101","w":120},"~":{"d":"199,-111v-49,42,-130,-35,-178,9r0,-25v53,-44,130,35,178,-10r0,26","w":210}}});
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * Digitized data © 2007 Ascender Corporation. All rights reserved.
 * 
 * Trademark:
 * Liberation is a trademark of Red Hat, Inc. registered in U.S. Patent and
 * Trademark Office and certain other jurisdictions.
 * 
 * Manufacturer:
 * Ascender Corporation
 * 
 * Designer:
 * Steve Matteson
 * 
 * Vendor URL:
 * http://www.ascendercorp.com/
 * 
 * License information:
 * http://www.ascendercorp.com/liberation.html
 */
Cufon.registerFont({"w":200,"face":{"font-family":"Liberation Sans","font-weight":700,"font-style":"italic","font-stretch":"normal","units-per-em":"360","panose-1":"2 11 7 4 2 2 2 9 2 4","ascent":"288","descent":"-72","x-height":"4","bbox":"-39 -267 365 77.1055","underline-thickness":"37.793","underline-position":"-19.3359","slope":"-12","unicode-range":"U+0020-U+007E"},"glyphs":{" ":{"w":100,"k":{"Y":7,"A":13}},"\u00a0":{"w":100},"!":{"d":"74,-75r-40,0r28,-173r52,0xm14,0r9,-47r51,0r-9,47r-51,0","w":119},"\"":{"d":"152,-158r-39,0r13,-90r48,0xm77,-158r-39,0r13,-90r48,0","w":170},"#":{"d":"165,-152r-12,59r38,0r0,26r-44,0r-14,67r-27,0r14,-67r-54,0r-14,67r-27,0r14,-67r-28,0r0,-26r33,0r13,-59r-37,0r0,-26r42,0r15,-67r27,0r-15,67r54,0r15,-67r28,0r-15,67r29,0r0,26r-35,0xm84,-152r-12,59r54,0r12,-59r-54,0"},"$":{"d":"118,-147v83,-2,96,123,15,137v-12,3,-26,5,-42,6r-6,31r-20,0r6,-31v-41,-1,-69,-21,-73,-60r46,-8v2,20,12,32,34,31r13,-68v-33,-10,-66,-24,-66,-65v0,-52,42,-68,93,-71r4,-22r20,1r-5,22v38,0,63,18,66,53r-45,10v-4,-15,-10,-28,-28,-28xm97,-41v33,4,58,-26,38,-52v-5,-5,-14,-8,-25,-11xm111,-210v-32,-4,-55,40,-23,54v3,1,7,3,11,4"},"%":{"d":"20,-148v0,-55,21,-102,76,-102v34,0,55,18,54,54v-2,57,-24,104,-78,104v-35,0,-52,-21,-52,-56xm113,-199v0,-15,-4,-24,-17,-24v-35,0,-36,44,-39,78v-1,15,3,25,15,25v34,0,41,-48,41,-79xm179,-53v0,-54,21,-102,77,-102v34,0,56,18,54,54v-2,57,-24,104,-79,104v-33,0,-52,-22,-52,-56xm272,-104v0,-15,-3,-24,-16,-24v-35,1,-36,44,-39,77v-1,15,3,25,15,25v34,0,37,-46,40,-78xm85,0r-34,0r191,-248r35,0","w":320},"&":{"d":"152,-18v-39,36,-149,32,-143,-44v4,-49,39,-65,74,-81v-18,-56,8,-109,70,-106v34,2,59,13,59,45v0,48,-46,60,-83,76v9,21,16,43,31,59v17,-18,29,-41,41,-65r33,15v-12,28,-30,52,-49,73v11,11,33,14,52,9r-7,35v-28,9,-62,1,-78,-16xm92,-111v-44,5,-56,92,6,80v12,-2,21,-7,29,-13v-15,-19,-27,-43,-35,-67xm150,-219v-31,-2,-39,34,-29,61v22,-10,49,-14,51,-43v0,-12,-10,-18,-22,-18","w":259},"'":{"d":"73,-158r-38,0r13,-90r47,0","w":85},"(":{"d":"13,-52v0,-97,37,-163,91,-209r50,0v-53,52,-92,115,-92,212v0,48,8,90,25,124r-48,0v-17,-35,-26,-77,-26,-127","w":119},")":{"d":"109,-139v0,100,-38,166,-91,214r-50,0v54,-54,93,-119,93,-217v0,-46,-11,-87,-27,-119r47,0v17,31,28,75,28,122","w":119},"*":{"d":"101,-200r41,-18r12,35r-44,11r33,37r-32,21r-26,-44r-26,44r-33,-21r33,-37r-44,-11r12,-35r42,18r-3,-48r38,0","w":140},"+":{"d":"132,-100r0,72r-40,0r0,-72r-70,0r0,-39r70,0r0,-72r40,0r0,72r70,0r0,39r-70,0","w":210},",":{"d":"69,-54v-8,42,-15,86,-40,110r-33,0v15,-15,29,-33,35,-56r-23,0r10,-54r51,0","w":100},"-":{"d":"10,-72r8,-43r92,0r-9,43r-91,0","w":119},"\u00ad":{"d":"10,-72r8,-43r92,0r-9,43r-91,0","w":119},".":{"d":"8,0r10,-54r51,0r-10,54r-51,0","w":100},"\/":{"d":"-13,7r103,-268r42,0r-103,268r-42,0","w":100},"0":{"d":"15,-80v0,-86,24,-171,112,-171v50,0,70,31,70,82v0,85,-26,173,-113,173v-50,0,-69,-33,-69,-84xm149,-172v6,-42,-44,-55,-60,-23v-17,35,-34,101,-21,149v4,6,9,12,19,11v56,-6,53,-82,62,-137"},"1":{"d":"6,0r7,-41r62,0r31,-161r-67,37r8,-42r70,-41r48,0r-41,207r57,0r-8,41r-167,0","k":{"1":27}},"2":{"d":"121,-251v83,0,93,87,42,126v-35,27,-77,48,-103,84r115,0r-7,41r-174,0v12,-94,108,-103,147,-168v11,-20,3,-46,-24,-44v-23,2,-33,13,-39,32r-47,-10v12,-38,39,-61,90,-61"},"3":{"d":"131,-73v0,-31,-25,-35,-58,-33r8,-40v36,2,64,-5,65,-39v0,-17,-10,-28,-28,-27v-23,1,-35,12,-41,32r-47,-9v11,-39,39,-63,90,-62v44,1,76,17,76,60v0,42,-26,59,-63,64v28,5,48,20,48,54v0,95,-172,105,-178,13r49,-7v3,21,16,31,40,31v24,0,39,-13,39,-37"},"4":{"d":"154,-50r-10,50r-47,0r10,-50r-113,0r7,-37r126,-161r65,0r-31,161r33,0r-7,37r-33,0xm114,-87r27,-125v-29,45,-64,83,-95,125r68,0"},"5":{"d":"137,-85v4,-43,-51,-49,-69,-23r-48,0r36,-140r148,0r-7,41r-105,0r-15,59v40,-35,118,-7,110,57v10,93,-131,128,-176,58v-5,-8,-6,-16,-7,-25r49,-8v4,19,14,30,37,30v30,-1,44,-19,47,-49"},"6":{"d":"189,-94v-5,59,-36,98,-95,98v-53,0,-78,-35,-77,-90v1,-95,38,-177,138,-163v27,4,44,25,47,55r-47,7v-4,-34,-45,-30,-62,-5v-9,14,-17,34,-22,61v26,-45,125,-35,118,37xm108,-123v-49,-6,-61,88,-10,88v46,5,60,-88,10,-88"},"7":{"d":"33,-248r181,0r-7,40v-48,63,-107,114,-124,208r-52,0v18,-93,73,-148,126,-207r-132,0"},"8":{"d":"35,-185v2,-48,38,-66,89,-66v44,1,76,17,76,59v0,37,-25,55,-56,62v24,7,40,24,40,54v0,56,-41,80,-97,80v-50,0,-82,-20,-82,-67v0,-41,29,-59,63,-67v-20,-10,-33,-26,-33,-55xm84,-179v0,20,9,31,30,31v25,0,36,-17,36,-39v0,-19,-11,-31,-31,-30v-22,1,-36,13,-35,38xm134,-78v0,-21,-11,-34,-35,-34v-29,0,-42,18,-43,46v0,23,13,35,35,35v28,0,43,-19,43,-47"},"9":{"d":"57,-63v1,32,46,34,62,12v12,-16,20,-37,25,-64v-30,46,-125,30,-118,-42v6,-58,37,-94,96,-94v58,0,82,45,75,106v-10,86,-46,165,-141,145v-27,-6,-43,-26,-48,-55xm107,-125v29,0,44,-20,43,-52v0,-21,-11,-35,-31,-36v-46,-5,-63,88,-12,88"},":":{"d":"41,-132r10,-50r51,0r-10,50r-51,0xm16,0r9,-49r51,0r-10,49r-50,0","w":119},";":{"d":"41,-132r10,-50r51,0r-10,50r-51,0xm76,-49v-9,39,-14,83,-40,105r-32,0v15,-15,29,-32,34,-56r-22,0r9,-49r51,0","w":119},"\u037e":{"d":"41,-132r10,-50r51,0r-10,50r-51,0xm76,-49v-9,39,-14,83,-40,105r-32,0v15,-15,29,-32,34,-56r-22,0r9,-49r51,0","w":119},"<":{"d":"22,-91r0,-56r180,-69r0,40r-146,57r146,57r0,40","w":210},"=":{"d":"22,-148r0,-39r180,0r0,39r-180,0xm22,-51r0,-39r180,0r0,39r-180,0","w":210},">":{"d":"22,-22r0,-40r146,-57r-146,-57r0,-40r180,69r0,56","w":210},"?":{"d":"163,-185v-5,-40,-82,-31,-84,8r-47,-7v13,-42,43,-68,99,-67v46,1,82,17,82,62v0,69,-80,60,-96,114r-47,0v8,-55,68,-59,91,-98v1,-4,2,-7,2,-12xm54,0r9,-47r51,0r-9,47r-51,0","w":219},"@":{"d":"198,-261v86,0,138,44,138,128v0,63,-27,110,-85,115v-25,2,-35,-18,-33,-42v-12,21,-31,42,-62,42v-41,0,-58,-29,-58,-68v0,-60,30,-105,88,-108v25,-1,39,15,48,31r6,-27r28,0r-27,131v-1,11,5,16,14,17v38,-7,54,-45,54,-90v0,-68,-42,-104,-111,-104v-94,0,-143,58,-143,150v0,71,39,112,113,112v42,0,75,-12,103,-27r11,22v-32,17,-67,31,-116,31v-89,0,-140,-50,-140,-138v0,-107,63,-175,172,-175xm162,-43v43,-4,60,-45,60,-89v0,-23,-14,-38,-37,-38v-42,0,-58,41,-58,84v0,24,11,45,35,43","w":351},"A":{"d":"183,0r-10,-63r-94,0r-35,63r-51,0r138,-248r61,0r42,248r-51,0xm169,-102r-15,-108v-16,38,-36,73,-55,108r70,0","w":259,"k":{"Y":27,"W":20,"V":27,"T":27," ":13}},"B":{"d":"240,-76v-1,102,-136,71,-234,76r48,-248v79,4,193,-21,193,58v0,38,-25,53,-57,60v29,5,49,21,50,54xm195,-182v0,-40,-58,-24,-96,-27r-12,61v45,-3,108,12,108,-34xm188,-77v0,-44,-65,-31,-109,-33r-13,72v51,-3,122,14,122,-39","w":259},"C":{"d":"161,-211v-63,0,-91,46,-91,110v0,39,17,65,58,64v38,-1,60,-20,74,-45r40,20v-22,39,-58,62,-117,66v-116,9,-135,-148,-68,-212v33,-50,166,-62,196,-1v4,8,9,18,11,27r-48,12v-6,-24,-25,-41,-55,-41","w":259},"D":{"d":"250,-142v-3,89,-53,142,-142,142r-102,0r48,-248v105,-5,200,3,196,106xm201,-140v1,-57,-42,-72,-103,-68r-32,168v84,6,135,-22,135,-100","w":259},"E":{"d":"6,0r48,-248r195,0r-8,40r-143,0r-12,63r132,0r-7,40r-132,0r-13,65r150,0r-8,40r-202,0","w":240},"F":{"d":"98,-208r-15,77r118,0r-8,40r-117,0r-18,91r-52,0r48,-248r174,0r-8,40r-122,0","w":219,"k":{"A":20,".":40,",":40}},"G":{"d":"70,-104v-4,71,81,81,132,50r8,-40r-60,0r7,-37r108,0r-19,100v-30,21,-65,34,-116,34v-70,-1,-112,-35,-112,-105v-1,-106,79,-169,188,-144v33,8,53,31,63,63r-50,14v-6,-26,-25,-42,-56,-42v-62,0,-89,43,-93,107","w":280},"H":{"d":"168,0r21,-106r-110,0r-21,106r-52,0r48,-248r52,0r-19,99r110,0r19,-99r50,0r-48,248r-50,0","w":259},"I":{"d":"6,0r48,-248r52,0r-48,248r-52,0","w":100},"J":{"d":"51,-77v-1,38,59,57,67,15r29,-145r-49,0r7,-41r101,0r-34,174v3,81,-127,106,-159,37v-4,-9,-7,-19,-9,-30"},"K":{"d":"175,0r-63,-112r-37,21r-17,91r-52,0r48,-248r52,0r-23,113r134,-113r65,0r-132,109r82,139r-57,0","w":259},"L":{"d":"6,0r48,-248r52,0r-40,208r133,0r-8,40r-185,0","w":219,"k":{"Y":27,"W":20,"V":20,"T":27," ":7}},"M":{"d":"212,0r43,-212r-104,212r-37,0r-24,-212v-8,75,-25,142,-38,212r-46,0r48,-248r70,0r20,187r93,-187r69,0r-48,248r-46,0","w":299},"N":{"d":"155,0r-65,-199r-38,199r-46,0r48,-248r62,0r66,201r38,-201r46,0r-48,248r-63,0","w":259},"O":{"d":"18,-101v0,-91,52,-150,145,-150v68,0,111,34,111,101v0,96,-53,154,-146,154v-69,0,-110,-37,-110,-105xm220,-133v4,-46,-15,-77,-59,-77v-65,0,-88,46,-91,108v-2,41,22,65,60,65v60,0,84,-40,90,-96","w":280},"P":{"d":"241,-173v-1,82,-78,91,-166,86r-17,87r-52,0r48,-248v87,0,188,-12,187,75xm188,-171v0,-43,-48,-36,-90,-36r-15,80v50,0,105,7,105,-44","w":240,"k":{"A":27,".":46,",":46," ":13}},"Q":{"d":"23,-63v-24,-104,36,-188,140,-188v68,0,111,34,111,101v0,87,-44,137,-119,151v2,31,28,37,61,31r-8,34v-54,13,-105,-9,-105,-64v-40,-7,-72,-29,-80,-65xm220,-133v4,-46,-15,-77,-59,-77v-65,0,-88,46,-91,108v-2,41,22,65,60,65v60,0,84,-40,90,-96","w":280},"R":{"d":"258,-177v0,46,-32,67,-71,75r48,102r-57,0r-41,-94r-61,0r-18,94r-52,0r48,-248v89,2,204,-19,204,71xm205,-174v0,-46,-63,-30,-107,-33r-14,73v51,-2,120,13,121,-40","w":259,"k":{"Y":7,"W":7,"T":7}},"S":{"d":"178,-136v88,48,22,151,-73,140v-56,-7,-93,-19,-101,-68r51,-9v1,50,111,53,115,3v-16,-63,-132,-20,-133,-112v0,-93,190,-91,199,-10r-50,12v-4,-41,-93,-50,-97,-4v7,38,59,32,89,48","w":240},"T":{"d":"157,-208r-40,208r-52,0r40,-208r-80,0r8,-40r212,0r-8,40r-80,0","w":219,"k":{"y":13,"w":13,"u":7,"s":13,"r":7,"o":13,"i":7,"e":13,"c":13,"a":13,"O":7,"A":27,";":27,":":27,".":27,"-":20,",":27}},"U":{"d":"76,-105v-23,59,45,89,88,55v12,-10,18,-24,22,-45r30,-153r51,0v-29,105,-8,252,-149,252v-70,0,-107,-43,-93,-116r26,-136r52,0","w":259},"V":{"d":"130,0r-60,0r-40,-248r54,0r24,206v31,-72,69,-137,103,-206r54,0","w":240,"k":{"y":7,"u":7,"r":7,"o":13,"i":13,"e":13,"a":13,"A":27,";":13,":":13,".":33,"-":13,",":33}},"W":{"d":"253,0r-61,0r-6,-196v-25,68,-54,131,-82,196r-62,0r-16,-248r50,0r7,204r86,-204r55,0r8,204r82,-204r51,0","w":339,"k":{"y":7,"u":7,"r":7,"o":7,"i":3,"e":7,"a":7,"A":20,";":13,":":13,".":27,"-":13,",":27}},"X":{"d":"39,-248r54,0r39,83r71,-83r55,0r-105,119r64,129r-54,0r-44,-94r-80,94r-56,0r115,-129","w":240},"Y":{"d":"147,-102r-20,102r-51,0r19,-102r-65,-146r52,0r45,107r83,-107r57,0","w":240,"k":{"v":13,"u":13,"q":13,"p":13,"o":13,"i":13,"e":13,"a":13,"A":27,";":20,":":20,".":33,"-":27,",":33," ":7}},"Z":{"d":"190,0r-198,0r7,-37r163,-170r-117,0r8,-41r178,0r-7,36r-163,171r137,0","w":219},"[":{"d":"-9,75r65,-336r95,0r-7,34r-48,0r-52,268r48,0r-6,34r-95,0","w":119},"\\":{"d":"51,7r-31,-268r41,0r33,268r-43,0","w":100},"]":{"d":"-31,75r7,-34r49,0r52,-268r-49,0r6,-34r96,0r-65,336r-96,0","w":119},"^":{"d":"169,-90r-57,-133r-57,133r-40,0r69,-158r56,0r69,158r-40,0","w":210},"_":{"d":"-21,44r0,-14r207,0r0,14r-207,0"},"`":{"d":"105,-208r-54,-48r1,-8r46,0r34,51v-1,10,-18,3,-27,5","w":119},"a":{"d":"166,-52v-4,17,5,29,24,23r-3,27v-30,11,-74,1,-67,-34v-15,21,-29,40,-64,40v-33,0,-53,-19,-54,-53v0,-64,63,-67,128,-67v10,-22,3,-53,-29,-45v-13,3,-22,10,-25,24r-46,-5v5,-64,156,-77,153,0v-1,33,-11,60,-17,90xm97,-88v-44,-9,-64,57,-19,57v31,0,42,-28,47,-57r-28,0"},"b":{"d":"87,-160v15,-17,32,-34,63,-34v99,1,59,172,-1,192v-36,12,-78,0,-87,-29r-8,31r-48,0r52,-261r49,0xm158,-122v0,-24,-5,-37,-29,-37v-46,0,-55,46,-57,89v-1,25,12,40,35,40v44,0,51,-50,51,-92","w":219},"c":{"d":"67,-101v-8,29,-7,73,27,71v23,-2,32,-16,39,-37r48,9v-11,39,-40,62,-90,62v-55,0,-84,-32,-79,-90v6,-75,61,-124,140,-103v26,7,40,29,43,59r-50,4v-1,-20,-9,-34,-29,-34v-35,0,-41,29,-49,59"},"d":{"d":"132,-28v-14,19,-31,32,-63,32v-39,0,-59,-27,-59,-66v0,-70,24,-129,92,-132v31,-1,47,14,56,35r19,-102r49,0r-47,261r-49,0xm62,-69v0,22,7,39,29,39v45,-2,54,-45,57,-90v2,-27,-10,-40,-33,-40v-44,0,-53,48,-53,91","w":219},"e":{"d":"114,-194v63,-2,87,48,72,110r-123,0v-3,28,1,55,31,54v21,-1,32,-13,37,-29r44,13v-15,32,-38,50,-84,50v-50,0,-80,-26,-80,-77v0,-71,33,-119,103,-121xm144,-117v14,-47,-50,-61,-67,-22v-3,6,-6,13,-8,22r75,0"},"f":{"d":"93,-157r-31,157r-49,0r31,-157r-28,0r6,-33r28,0v2,-54,40,-81,100,-68r-6,32v-29,-8,-44,9,-45,36r38,0r-7,33r-37,0","w":119,"k":{"f":7}},"g":{"d":"45,-171v29,-32,103,-29,114,14v2,-11,5,-23,8,-33r47,0r-38,188v-3,70,-92,96,-155,64v-12,-6,-20,-20,-22,-37r50,-5v2,28,48,27,63,11v13,-13,20,-45,21,-66v-13,20,-30,35,-62,36v-87,3,-60,-134,-26,-172xm94,-35v41,-3,55,-43,55,-86v0,-24,-12,-39,-35,-39v-43,0,-51,48,-51,90v0,22,9,37,31,35","w":219},"h":{"d":"150,-105v8,-23,8,-54,-22,-51v-68,7,-54,98,-72,156r-50,0r50,-261r50,0r-21,103v15,-20,33,-36,66,-36v95,0,34,128,28,194r-49,0","w":219},"i":{"d":"50,-224r7,-37r49,0r-7,37r-49,0xm6,0r37,-190r49,0r-37,190r-49,0","w":100},"j":{"d":"50,-224r7,-37r49,0r-7,37r-49,0xm51,22v-6,42,-44,63,-90,49r7,-33v23,5,33,-8,36,-27r39,-201r49,0","w":100},"k":{"d":"128,0r-33,-87r-25,13r-15,74r-49,0r51,-261r49,0r-29,150r82,-79r56,0r-83,74r48,116r-52,0"},"l":{"d":"6,0r51,-261r49,0r-51,261r-49,0","w":100},"m":{"d":"255,-194v90,0,29,129,24,194r-49,0r25,-136v-7,-39,-53,-14,-60,9v-12,38,-18,85,-28,127r-49,0r25,-136v2,-29,-39,-23,-50,-7v-24,35,-25,96,-37,143r-50,0r36,-190r48,0v-1,10,-6,24,-4,32v12,-20,27,-36,57,-36v30,0,46,15,50,41v14,-21,29,-41,62,-41","w":320},"n":{"d":"151,-194v95,0,34,128,28,194r-49,0r25,-134v0,-29,-45,-25,-59,-9v-29,32,-27,95,-40,143r-50,0r36,-190r47,0r-4,32v15,-20,33,-36,66,-36","w":219},"o":{"d":"124,-194v51,0,84,22,84,74v-1,76,-41,124,-114,124v-51,0,-83,-27,-83,-78v0,-74,41,-120,113,-120xm99,-30v46,0,58,-42,58,-86v0,-27,-11,-44,-37,-44v-44,0,-55,40,-57,84v-1,27,10,45,36,46","w":219},"p":{"d":"156,-122v2,-23,-7,-37,-28,-37v-47,0,-58,44,-58,89v0,24,12,40,36,40v43,0,47,-49,50,-92xm-8,75r50,-265r48,0v0,10,-3,24,-3,30v22,-50,127,-45,121,29v-6,73,-21,135,-92,135v-29,0,-46,-14,-55,-35r-20,106r-49,0","w":219},"q":{"d":"102,-194v32,-2,46,14,56,35v2,-10,4,-23,8,-31r48,0r-53,265r-49,0r21,-104v-14,20,-32,33,-64,33v-38,0,-59,-26,-59,-65v0,-70,24,-129,92,-133xm63,-82v-3,28,2,52,28,52v46,-1,55,-45,57,-90v1,-24,-7,-40,-30,-40v-43,0,-50,40,-55,78","w":219},"r":{"d":"84,-151v13,-25,34,-51,72,-40r-8,41v-81,-20,-77,86,-92,150r-50,0r36,-190r47,0","w":140,"k":{".":20,",":20}},"s":{"d":"144,-137v-1,-29,-70,-35,-71,-2v16,41,103,10,103,80v0,68,-97,75,-144,50v-14,-8,-23,-22,-28,-39r44,-6v3,32,80,36,82,1v-15,-42,-103,-11,-103,-82v0,-77,157,-79,161,-8"},"t":{"d":"72,-63v-8,23,5,39,32,30r-6,32v-44,15,-86,-5,-75,-63r18,-93r-26,0r7,-33r28,0r24,-45r31,0r-8,45r35,0r-6,33r-36,0","w":119},"u":{"d":"69,3v-96,0,-34,-126,-28,-193r49,0r-25,133v6,42,62,18,71,-6v14,-38,17,-86,28,-127r50,0r-36,190r-47,0v0,-11,4,-26,3,-33v-14,20,-30,37,-65,36","w":219},"v":{"d":"109,0r-59,0r-31,-190r51,0r16,153r77,-153r54,0","k":{".":20,",":20}},"w":{"d":"212,0r-52,0r-8,-156r-70,156r-52,0r-13,-190r46,0r2,145r66,-145r53,0r8,145r60,-145r47,0","w":280,"k":{".":13,",":13}},"x":{"d":"127,0r-32,-67r-58,67r-53,0r89,-99r-49,-91r52,0r30,61r52,-61r54,0r-85,92r52,98r-52,0"},"y":{"d":"100,10v-23,37,-50,77,-115,62r7,-35v37,9,51,-18,65,-41r-37,-186r51,0r18,146r73,-146r53,0","k":{".":13,",":13}},"z":{"d":"-6,0r7,-35r114,-120r-84,0r7,-35r142,0r-7,35r-114,119r100,0r-7,36r-158,0","w":180},"{":{"d":"73,9v-6,25,6,36,34,32r-7,34v-48,4,-86,-7,-75,-57v7,-33,31,-97,-22,-94r7,-34v90,1,16,-151,121,-151r35,0r-7,34v-82,-9,-21,116,-102,134v42,8,25,65,16,102","w":140},"|":{"d":"34,75r0,-336r46,0r0,336r-46,0","w":100},"}":{"d":"65,-195v6,-24,-6,-36,-34,-32r7,-34v47,-5,85,7,75,57v-7,34,-31,95,22,94r-7,34v-97,1,-2,174,-155,151r6,-34v83,10,20,-118,103,-134v-43,-7,-26,-65,-17,-102","w":140},"~":{"d":"203,-105v-54,44,-135,-36,-182,10r0,-38v51,-45,135,36,182,-10r0,38","w":210}}});
;
/*!
 * jScrollPane - v2.0.0beta9 - 2011-01-31
 * http://jscrollpane.kelvinluck.com/
 *
 * Copyright (c) 2010 Kelvin Luck
 * Dual licensed under the MIT and GPL licenses.
 */

// Script: jScrollPane - cross browser customisable scrollbars
//
// *Version: 2.0.0beta9, Last updated: 2011-01-31*
//
// Project Home - http://jscrollpane.kelvinluck.com/
// GitHub       - http://github.com/vitch/jScrollPane
// Source       - http://github.com/vitch/jScrollPane/raw/master/script/jquery.jscrollpane.js
// (Minified)   - http://github.com/vitch/jScrollPane/raw/master/script/jquery.jscrollpane.min.js
//
// About: License
//
// Copyright (c) 2010 Kelvin Luck
// Dual licensed under the MIT or GPL Version 2 licenses.
// http://jscrollpane.kelvinluck.com/MIT-LICENSE.txt
// http://jscrollpane.kelvinluck.com/GPL-LICENSE.txt
//
// About: Examples
//
// All examples and demos are available through the jScrollPane example site at:
// http://jscrollpane.kelvinluck.com/
//
// About: Support and Testing
//
// This plugin is tested on the browsers below and has been found to work reliably on them. If you run
// into a problem on one of the supported browsers then please visit the support section on the jScrollPane
// website (http://jscrollpane.kelvinluck.com/) for more information on getting support. You are also
// welcome to fork the project on GitHub if you can contribute a fix for a given issue. 
//
// jQuery Versions - tested in 1.4.2+ - reported to work in 1.3.x
// Browsers Tested - Firefox 3.6.8, Safari 5, Opera 10.6, Chrome 5.0, IE 6, 7, 8
//
// About: Release History
//
// 2.0.0beta9 - (2011-01-31) new API methods, bug fixes and correct keyboard support for FF/OSX
// 2.0.0beta8 - (2011-01-29) touchscreen support, improved keyboard support
// 2.0.0beta7 - (2011-01-23) scroll speed consistent (thanks Aivo Paas)
// 2.0.0beta6 - (2010-12-07) scrollToElement horizontal support
// 2.0.0beta5 - (2010-10-18) jQuery 1.4.3 support, various bug fixes
// 2.0.0beta4 - (2010-09-17) clickOnTrack support, bug fixes
// 2.0.0beta3 - (2010-08-27) Horizontal mousewheel, mwheelIntent, keyboard support, bug fixes
// 2.0.0beta2 - (2010-08-21) Bug fixes
// 2.0.0beta1 - (2010-08-17) Rewrite to follow modern best practices and enable horizontal scrolling, initially hidden
//							 elements and dynamically sized elements.
// 1.x - (2006-12-31 - 2010-07-31) Initial version, hosted at googlecode, deprecated

(function($,window,undefined){

	$.fn.jScrollPane = function(settings)
	{
		// JScrollPane "class" - public methods are available through $('selector').data('jsp')
		function JScrollPane(elem, s)
		{
			var settings, jsp = this, pane, paneWidth, paneHeight, container, contentWidth, contentHeight,
				percentInViewH, percentInViewV, isScrollableV, isScrollableH, verticalDrag, dragMaxY,
				verticalDragPosition, horizontalDrag, dragMaxX, horizontalDragPosition,
				verticalBar, verticalTrack, scrollbarWidth, verticalTrackHeight, verticalDragHeight, arrowUp, arrowDown,
				horizontalBar, horizontalTrack, horizontalTrackWidth, horizontalDragWidth, arrowLeft, arrowRight,
				reinitialiseInterval, originalPadding, originalPaddingTotalWidth, previousContentWidth,
				wasAtTop = true, wasAtLeft = true, wasAtBottom = false, wasAtRight = false,
				originalElement = elem.clone().empty(),
				mwEvent = $.fn.mwheelIntent ? 'mwheelIntent.jsp' : 'mousewheel.jsp';

			originalPadding = elem.css('paddingTop') + ' ' +
								elem.css('paddingRight') + ' ' +
								elem.css('paddingBottom') + ' ' +
								elem.css('paddingLeft');
			originalPaddingTotalWidth = (parseInt(elem.css('paddingLeft'), 10) || 0) +
										(parseInt(elem.css('paddingRight'), 10) || 0);

			function initialise(s)
			{

				var clonedElem, tempWrapper, /*firstChild, lastChild, */isMaintainingPositon, lastContentX, lastContentY,
						hasContainingSpaceChanged, originalScrollTop, originalScrollLeft;

				settings = s;

				if (pane === undefined) {
					originalScrollTop = elem.scrollTop();
					originalScrollLeft = elem.scrollLeft();
					elem.css(
						{
							overflow: 'hidden',
							padding: 0
						}
					);
					// TODO: Deal with where width/ height is 0 as it probably means the element is hidden and we should
					// come back to it later and check once it is unhidden...
					paneWidth = elem.innerWidth() + originalPaddingTotalWidth;
					paneHeight = elem.innerHeight();

					elem.width(paneWidth);
					
					pane = $('<div class="jspPane" />').css('padding', originalPadding).append(elem.children());
					container = $('<div class="jspContainer" />')
						.css({
							'width': paneWidth + 'px',
							'height': paneHeight + 'px'
						}
					).append(pane).appendTo(elem);

					/*
					// Move any margins from the first and last children up to the container so they can still
					// collapse with neighbouring elements as they would before jScrollPane 
					firstChild = pane.find(':first-child');
					lastChild = pane.find(':last-child');
					elem.css(
						{
							'margin-top': firstChild.css('margin-top'),
							'margin-bottom': lastChild.css('margin-bottom')
						}
					);
					firstChild.css('margin-top', 0);
					lastChild.css('margin-bottom', 0);
					*/
				} else {
					elem.css('width', '');

					hasContainingSpaceChanged = elem.innerWidth() + originalPaddingTotalWidth != paneWidth || elem.outerHeight() != paneHeight;

					if (hasContainingSpaceChanged) {
						paneWidth = elem.innerWidth() + originalPaddingTotalWidth;
						paneHeight = elem.innerHeight();
						container.css({
							width: paneWidth + 'px',
							height: paneHeight + 'px'
						});
					}

					// If nothing changed since last check...
					if (!hasContainingSpaceChanged && previousContentWidth == contentWidth && pane.outerHeight() == contentHeight) {
						elem.width(paneWidth);
						return;
					}
					previousContentWidth = contentWidth;
					
					pane.css('width', '');
					elem.width(paneWidth);

					container.find('>.jspVerticalBar,>.jspHorizontalBar').remove().end();
				}

				// Unfortunately it isn't that easy to find out the width of the element as it will always report the
				// width as allowed by its container, regardless of overflow settings.
				// A cunning workaround is to clone the element, set its position to absolute and place it in a narrow
				// container. Now it will push outwards to its maxium real width...
				clonedElem = pane.clone().css('position', 'absolute');
				tempWrapper = $('<div style="width:1px; position: relative;" />').append(clonedElem);
				$('body').append(tempWrapper);
				contentWidth = Math.max(pane.outerWidth(), clonedElem.outerWidth());
				tempWrapper.remove();
				
				contentHeight = pane.outerHeight();
				percentInViewH = contentWidth / paneWidth;
				percentInViewV = contentHeight / paneHeight;
				isScrollableV = percentInViewV > 1;

				isScrollableH = percentInViewH > 1;

				//console.log(paneWidth, paneHeight, contentWidth, contentHeight, percentInViewH, percentInViewV, isScrollableH, isScrollableV);

				if (!(isScrollableH || isScrollableV)) {
					elem.removeClass('jspScrollable');
					pane.css({
						top: 0,
						width: container.width() - originalPaddingTotalWidth
					});
					removeMousewheel();
					removeFocusHandler();
					removeKeyboardNav();
					removeClickOnTrack();
					unhijackInternalLinks();
				} else {
					elem.addClass('jspScrollable');

					isMaintainingPositon = settings.maintainPosition && (verticalDragPosition || horizontalDragPosition);
					if (isMaintainingPositon) {
						lastContentX = contentPositionX();
						lastContentY = contentPositionY();
					}

					initialiseVerticalScroll();
					initialiseHorizontalScroll();
					resizeScrollbars();

					if (isMaintainingPositon) {
						scrollToX(lastContentX, false);
						scrollToY(lastContentY, false);
					}

					initFocusHandler();
					initMousewheel();
					initTouch();
					
					if (settings.enableKeyboardNavigation) {
						initKeyboardNav();
					}
					if (settings.clickOnTrack) {
						initClickOnTrack();
					}
					
					observeHash();
					if (settings.hijackInternalLinks) {
						hijackInternalLinks();
					}
				}

				if (settings.autoReinitialise && !reinitialiseInterval) {
					reinitialiseInterval = setInterval(
						function()
						{
							initialise(settings);
						},
						settings.autoReinitialiseDelay
					);
				} else if (!settings.autoReinitialise && reinitialiseInterval) {
					clearInterval(reinitialiseInterval);
				}

				originalScrollTop && elem.scrollTop(0) && scrollToY(originalScrollTop, false);
				originalScrollLeft && elem.scrollLeft(0) && scrollToX(originalScrollLeft, false);

				elem.trigger('jsp-initialised', [isScrollableH || isScrollableV]);
			}

			function initialiseVerticalScroll()
			{
				if (isScrollableV) {

					container.append(
						$('<div class="jspVerticalBar" />').append(
							$('<div class="jspCap jspCapTop" />'),
							$('<div class="jspTrack" />').append(
								$('<div class="jspDrag" />').append(
									$('<div class="jspDragTop" />'),
									$('<div class="jspDragBottom" />')
								)
							),
							$('<div class="jspCap jspCapBottom" />')
						)
					);

					verticalBar = container.find('>.jspVerticalBar');
					verticalTrack = verticalBar.find('>.jspTrack');
					verticalDrag = verticalTrack.find('>.jspDrag');

					if (settings.showArrows) {
						arrowUp = $('<a class="jspArrow jspArrowUp" />').bind(
							'mousedown.jsp', getArrowScroll(0, -1)
						).bind('click.jsp', nil);
						arrowDown = $('<a class="jspArrow jspArrowDown" />').bind(
							'mousedown.jsp', getArrowScroll(0, 1)
						).bind('click.jsp', nil);
						if (settings.arrowScrollOnHover) {
							arrowUp.bind('mouseover.jsp', getArrowScroll(0, -1, arrowUp));
							arrowDown.bind('mouseover.jsp', getArrowScroll(0, 1, arrowDown));
						}

						appendArrows(verticalTrack, settings.verticalArrowPositions, arrowUp, arrowDown);
					}

					verticalTrackHeight = paneHeight;
					container.find('>.jspVerticalBar>.jspCap:visible,>.jspVerticalBar>.jspArrow').each(
						function()
						{
							verticalTrackHeight -= $(this).outerHeight();
						}
					);


					verticalDrag.hover(
						function()
						{
							verticalDrag.addClass('jspHover');
						},
						function()
						{
							verticalDrag.removeClass('jspHover');
						}
					).bind(
						'mousedown.jsp',
						function(e)
						{
							// Stop IE from allowing text selection
							$('html').bind('dragstart.jsp selectstart.jsp', nil);

							verticalDrag.addClass('jspActive');

							var startY = e.pageY - verticalDrag.position().top;

							$('html').bind(
								'mousemove.jsp',
								function(e)
								{
									positionDragY(e.pageY - startY, false);
								}
							).bind('mouseup.jsp mouseleave.jsp', cancelDrag);
							return false;
						}
					);
					sizeVerticalScrollbar();
				}
			}

			function sizeVerticalScrollbar()
			{
				verticalTrack.height(verticalTrackHeight + 'px');
				verticalDragPosition = 0;
				scrollbarWidth = settings.verticalGutter + verticalTrack.outerWidth();

				// Make the pane thinner to allow for the vertical scrollbar
				pane.width(paneWidth - scrollbarWidth - originalPaddingTotalWidth);

				// Add margin to the left of the pane if scrollbars are on that side (to position
				// the scrollbar on the left or right set it's left or right property in CSS)
				if (verticalBar.position().left === 0) {
					pane.css('margin-left', scrollbarWidth + 'px');
				}
			}

			function initialiseHorizontalScroll()
			{
				if (isScrollableH) {

					container.append(
						$('<div class="jspHorizontalBar" />').append(
							$('<div class="jspCap jspCapLeft" />'),
							$('<div class="jspTrack" />').append(
								$('<div class="jspDrag" />').append(
									$('<div class="jspDragLeft" />'),
									$('<div class="jspDragRight" />')
								)
							),
							$('<div class="jspCap jspCapRight" />')
						)
					);

					horizontalBar = container.find('>.jspHorizontalBar');
					horizontalTrack = horizontalBar.find('>.jspTrack');
					horizontalDrag = horizontalTrack.find('>.jspDrag');

					if (settings.showArrows) {
						arrowLeft = $('<a class="jspArrow jspArrowLeft" />').bind(
							'mousedown.jsp', getArrowScroll(-1, 0)
						).bind('click.jsp', nil);
						arrowRight = $('<a class="jspArrow jspArrowRight" />').bind(
							'mousedown.jsp', getArrowScroll(1, 0)
						).bind('click.jsp', nil);
						if (settings.arrowScrollOnHover) {
							arrowLeft.bind('mouseover.jsp', getArrowScroll(-1, 0, arrowLeft));
							arrowRight.bind('mouseover.jsp', getArrowScroll(1, 0, arrowRight));
						}
						appendArrows(horizontalTrack, settings.horizontalArrowPositions, arrowLeft, arrowRight);
					}

					horizontalDrag.hover(
						function()
						{
							horizontalDrag.addClass('jspHover');
						},
						function()
						{
							horizontalDrag.removeClass('jspHover');
						}
					).bind(
						'mousedown.jsp',
						function(e)
						{
							// Stop IE from allowing text selection
							$('html').bind('dragstart.jsp selectstart.jsp', nil);

							horizontalDrag.addClass('jspActive');

							var startX = e.pageX - horizontalDrag.position().left;

							$('html').bind(
								'mousemove.jsp',
								function(e)
								{
									positionDragX(e.pageX - startX, false);
								}
							).bind('mouseup.jsp mouseleave.jsp', cancelDrag);
							return false;
						}
					);
					horizontalTrackWidth = container.innerWidth();
					sizeHorizontalScrollbar();
				}
			}

			function sizeHorizontalScrollbar()
			{
				container.find('>.jspHorizontalBar>.jspCap:visible,>.jspHorizontalBar>.jspArrow').each(
					function()
					{
						horizontalTrackWidth -= $(this).outerWidth();
					}
				);

				horizontalTrack.width(horizontalTrackWidth + 'px');
				horizontalDragPosition = 0;
			}

			function resizeScrollbars()
			{
				if (isScrollableH && isScrollableV) {
					var horizontalTrackHeight = horizontalTrack.outerHeight(),
						verticalTrackWidth = verticalTrack.outerWidth();
					verticalTrackHeight -= horizontalTrackHeight;
					$(horizontalBar).find('>.jspCap:visible,>.jspArrow').each(
						function()
						{
							horizontalTrackWidth += $(this).outerWidth();
						}
					);
					horizontalTrackWidth -= verticalTrackWidth;
					paneHeight -= verticalTrackWidth;
					paneWidth -= horizontalTrackHeight;
					horizontalTrack.parent().append(
						$('<div class="jspCorner" />').css('width', horizontalTrackHeight + 'px')
					);
					sizeVerticalScrollbar();
					sizeHorizontalScrollbar();
				}
				// reflow content
				if (isScrollableH) {
					pane.width((container.outerWidth() - originalPaddingTotalWidth) + 'px');
				}
				contentHeight = pane.outerHeight();
				percentInViewV = contentHeight / paneHeight;

				if (isScrollableH) {
					horizontalDragWidth = Math.ceil(1 / percentInViewH * horizontalTrackWidth);
					if (horizontalDragWidth > settings.horizontalDragMaxWidth) {
						horizontalDragWidth = settings.horizontalDragMaxWidth;
					} else if (horizontalDragWidth < settings.horizontalDragMinWidth) {
						horizontalDragWidth = settings.horizontalDragMinWidth;
					}
					horizontalDrag.width(horizontalDragWidth + 'px');
					dragMaxX = horizontalTrackWidth - horizontalDragWidth;
					_positionDragX(horizontalDragPosition); // To update the state for the arrow buttons
				}
				if (isScrollableV) {
					verticalDragHeight = Math.ceil(1 / percentInViewV * verticalTrackHeight);
					if (verticalDragHeight > settings.verticalDragMaxHeight) {
						verticalDragHeight = settings.verticalDragMaxHeight;
					} else if (verticalDragHeight < settings.verticalDragMinHeight) {
						verticalDragHeight = settings.verticalDragMinHeight;
					}
					verticalDrag.height(verticalDragHeight + 'px');
					dragMaxY = verticalTrackHeight - verticalDragHeight;
					_positionDragY(verticalDragPosition); // To update the state for the arrow buttons
				}
			}

			function appendArrows(ele, p, a1, a2)
			{
				var p1 = "before", p2 = "after", aTemp;
				
				// Sniff for mac... Is there a better way to determine whether the arrows would naturally appear
				// at the top or the bottom of the bar?
				if (p == "os") {
					p = /Mac/.test(navigator.platform) ? "after" : "split";
				}
				if (p == p1) {
					p2 = p;
				} else if (p == p2) {
					p1 = p;
					aTemp = a1;
					a1 = a2;
					a2 = aTemp;
				}

				ele[p1](a1)[p2](a2);
			}

			function getArrowScroll(dirX, dirY, ele)
			{
				return function()
				{
					arrowScroll(dirX, dirY, this, ele);
					this.blur();
					return false;
				};
			}

			function arrowScroll(dirX, dirY, arrow, ele)
			{
				arrow = $(arrow).addClass('jspActive');

				var eve,
					scrollTimeout,
					isFirst = true,
					doScroll = function()
					{
						if (dirX !== 0) {
							jsp.scrollByX(dirX * settings.arrowButtonSpeed);
						}
						if (dirY !== 0) {
							jsp.scrollByY(dirY * settings.arrowButtonSpeed);
						}
						scrollTimeout = setTimeout(doScroll, isFirst ? settings.initialDelay : settings.arrowRepeatFreq);
						isFirst = false;
					};

				doScroll();

				eve = ele ? 'mouseout.jsp' : 'mouseup.jsp';
				ele = ele || $('html');
				ele.bind(
					eve,
					function()
					{
						arrow.removeClass('jspActive');
						scrollTimeout && clearTimeout(scrollTimeout);
						scrollTimeout = null;
						ele.unbind(eve);
						focusElem();
					}
				);
			}

			function initClickOnTrack()
			{
				removeClickOnTrack();
				if (isScrollableV) {
					verticalTrack.bind(
						'mousedown.jsp',
						function(e)
						{
							if (e.originalTarget === undefined || e.originalTarget == e.currentTarget) {
								var clickedTrack = $(this),
									offset = clickedTrack.offset(),
									direction = e.pageY - offset.top - verticalDragPosition,
									scrollTimeout,
									isFirst = true,
									doScroll = function()
									{
										var offset = clickedTrack.offset(),
											pos = e.pageY - offset.top - verticalDragHeight / 2,
											contentDragY = paneHeight * settings.scrollPagePercent,
											dragY = dragMaxY * contentDragY / (contentHeight - paneHeight);
										if (direction < 0) {
											if (verticalDragPosition - dragY > pos) {
												jsp.scrollByY(-contentDragY);
											} else {
												positionDragY(pos);
											}
										} else if (direction > 0) {
											if (verticalDragPosition + dragY < pos) {
												jsp.scrollByY(contentDragY);
											} else {
												positionDragY(pos);
											}
										} else {
											cancelClick();
											return;
										}
										scrollTimeout = setTimeout(doScroll, isFirst ? settings.initialDelay : settings.trackClickRepeatFreq);
										isFirst = false;
									},
									cancelClick = function()
									{
										scrollTimeout && clearTimeout(scrollTimeout);
										scrollTimeout = null;
										$(document).unbind('mouseup.jsp', cancelClick);
										focusElem();
									};
								doScroll();
								$(document).bind('mouseup.jsp', cancelClick);
								return false;
							}
						}
					);
				}
				
				if (isScrollableH) {
					horizontalTrack.bind(
						'mousedown.jsp',
						function(e)
						{
							if (e.originalTarget === undefined || e.originalTarget == e.currentTarget) {
								var clickedTrack = $(this),
									offset = clickedTrack.offset(),
									direction = e.pageX - offset.left - horizontalDragPosition,
									scrollTimeout,
									isFirst = true,
									doScroll = function()
									{
										var offset = clickedTrack.offset(),
											pos = e.pageX - offset.left - horizontalDragWidth / 2,
											contentDragX = paneWidth * settings.scrollPagePercent,
											dragX = dragMaxX * contentDragX / (contentWidth - paneWidth);
										if (direction < 0) {
											if (horizontalDragPosition - dragX > pos) {
												jsp.scrollByX(-contentDragX);
											} else {
												positionDragX(pos);
											}
										} else if (direction > 0) {
											if (horizontalDragPosition + dragX < pos) {
												jsp.scrollByX(contentDragX);
											} else {
												positionDragX(pos);
											}
										} else {
											cancelClick();
											return;
										}
										scrollTimeout = setTimeout(doScroll, isFirst ? settings.initialDelay : settings.trackClickRepeatFreq);
										isFirst = false;
									},
									cancelClick = function()
									{
										scrollTimeout && clearTimeout(scrollTimeout);
										scrollTimeout = null;
										$(document).unbind('mouseup.jsp', cancelClick);
										focusElem();
									};
								doScroll();
								$(document).bind('mouseup.jsp', cancelClick);
								return false;
							}
						}
					);
				}
			}

			function removeClickOnTrack()
			{
				if (horizontalTrack) {
					horizontalTrack.unbind('mousedown.jsp');
				}
				if (verticalTrack) {
					verticalTrack.unbind('mousedown.jsp');
				}
			}

			function cancelDrag()
			{
				$('html').unbind('dragstart.jsp selectstart.jsp mousemove.jsp mouseup.jsp mouseleave.jsp');

				if (verticalDrag) {
					verticalDrag.removeClass('jspActive');
				}
				if (horizontalDrag) {
					horizontalDrag.removeClass('jspActive');
				}
				focusElem();
			}

			function positionDragY(destY, animate)
			{
				if (!isScrollableV) {
					return;
				}
				if (destY < 0) {
					destY = 0;
				} else if (destY > dragMaxY) {
					destY = dragMaxY;
				}

				// can't just check if(animate) because false is a valid value that could be passed in...
				if (animate === undefined) {
					animate = settings.animateScroll;
				}
				if (animate) {
					jsp.animate(verticalDrag, 'top', destY,	_positionDragY);
				} else {
					verticalDrag.css('top', destY);
					_positionDragY(destY);
				}

			}

			function _positionDragY(destY)
			{
				if (destY === undefined) {
					destY = verticalDrag.position().top;
				}

				container.scrollTop(0);
				verticalDragPosition = destY;

				var isAtTop = verticalDragPosition === 0,
					isAtBottom = verticalDragPosition == dragMaxY,
					percentScrolled = destY/ dragMaxY,
					destTop = -percentScrolled * (contentHeight - paneHeight);

				if (wasAtTop != isAtTop || wasAtBottom != isAtBottom) {
					wasAtTop = isAtTop;
					wasAtBottom = isAtBottom;
					elem.trigger('jsp-arrow-change', [wasAtTop, wasAtBottom, wasAtLeft, wasAtRight]);
				}
				
				updateVerticalArrows(isAtTop, isAtBottom);
				pane.css('top', destTop);
				elem.trigger('jsp-scroll-y', [-destTop, isAtTop, isAtBottom]).trigger('scroll');
			}

			function positionDragX(destX, animate)
			{
				if (!isScrollableH) {
					return;
				}
				if (destX < 0) {
					destX = 0;
				} else if (destX > dragMaxX) {
					destX = dragMaxX;
				}

				if (animate === undefined) {
					animate = settings.animateScroll;
				}
				if (animate) {
					jsp.animate(horizontalDrag, 'left', destX,	_positionDragX);
				} else {
					horizontalDrag.css('left', destX);
					_positionDragX(destX);
				}
			}

			function _positionDragX(destX)
			{
				if (destX === undefined) {
					destX = horizontalDrag.position().left;
				}

				container.scrollTop(0);
				horizontalDragPosition = destX;

				var isAtLeft = horizontalDragPosition === 0,
					isAtRight = horizontalDragPosition == dragMaxX,
					percentScrolled = destX / dragMaxX,
					destLeft = -percentScrolled * (contentWidth - paneWidth);

				if (wasAtLeft != isAtLeft || wasAtRight != isAtRight) {
					wasAtLeft = isAtLeft;
					wasAtRight = isAtRight;
					elem.trigger('jsp-arrow-change', [wasAtTop, wasAtBottom, wasAtLeft, wasAtRight]);
				}
				
				updateHorizontalArrows(isAtLeft, isAtRight);
				pane.css('left', destLeft);
				elem.trigger('jsp-scroll-x', [-destLeft, isAtLeft, isAtRight]).trigger('scroll');
			}

			function updateVerticalArrows(isAtTop, isAtBottom)
			{
				if (settings.showArrows) {
					arrowUp[isAtTop ? 'addClass' : 'removeClass']('jspDisabled');
					arrowDown[isAtBottom ? 'addClass' : 'removeClass']('jspDisabled');
				}
			}

			function updateHorizontalArrows(isAtLeft, isAtRight)
			{
				if (settings.showArrows) {
					arrowLeft[isAtLeft ? 'addClass' : 'removeClass']('jspDisabled');
					arrowRight[isAtRight ? 'addClass' : 'removeClass']('jspDisabled');
				}
			}

			function scrollToY(destY, animate)
			{
				var percentScrolled = destY / (contentHeight - paneHeight);
				positionDragY(percentScrolled * dragMaxY, animate);
			}

			function scrollToX(destX, animate)
			{
				var percentScrolled = destX / (contentWidth - paneWidth);
				positionDragX(percentScrolled * dragMaxX, animate);
			}

			function scrollToElement(ele, stickToTop, animate)
			{
				var e, eleHeight, eleWidth, eleTop = 0, eleLeft = 0, viewportTop, maxVisibleEleTop, maxVisibleEleLeft, destY, destX;

				// Legal hash values aren't necessarily legal jQuery selectors so we need to catch any
				// errors from the lookup...
				try {
					e = $(ele);
				} catch (err) {
					return;
				}
				eleHeight = e.outerHeight();
				eleWidth= e.outerWidth();

				container.scrollTop(0);
				container.scrollLeft(0);
				
				// loop through parents adding the offset top of any elements that are relatively positioned between
				// the focused element and the jspPane so we can get the true distance from the top
				// of the focused element to the top of the scrollpane...
				while (!e.is('.jspPane')) {
					eleTop += e.position().top;
					eleLeft += e.position().left;
					e = e.offsetParent();
					if (/^body|html$/i.test(e[0].nodeName)) {
						// we ended up too high in the document structure. Quit!
						return;
					}
				}

				viewportTop = contentPositionY();
				maxVisibleEleTop = viewportTop + paneHeight;
				if (eleTop < viewportTop || stickToTop) { // element is above viewport
					destY = eleTop - settings.verticalGutter;
				} else if (eleTop + eleHeight > maxVisibleEleTop) { // element is below viewport
					destY = eleTop - paneHeight + eleHeight + settings.verticalGutter;
				}
				if (destY) {
					scrollToY(destY, animate);
				}
				
				viewportLeft = contentPositionX();
	            maxVisibleEleLeft = viewportLeft + paneWidth;
	            if (eleLeft < viewportLeft || stickToTop) { // element is to the left of viewport
	                destX = eleLeft - settings.horizontalGutter;
	            } else if (eleLeft + eleWidth > maxVisibleEleLeft) { // element is to the right viewport
	                destX = eleLeft - paneWidth + eleWidth + settings.horizontalGutter;
	            }
	            if (destX) {
	                scrollToX(destX, animate);
	            }

			}

			function contentPositionX()
			{
				return -pane.position().left;
			}

			function contentPositionY()
			{
				return -pane.position().top;
			}

			function initMousewheel()
			{
				container.unbind(mwEvent).bind(
					mwEvent,
					function (event, delta, deltaX, deltaY) {
						var dX = horizontalDragPosition, dY = verticalDragPosition;
						jsp.scrollBy(deltaX * settings.mouseWheelSpeed, -deltaY * settings.mouseWheelSpeed, false);
						// return true if there was no movement so rest of screen can scroll
						return dX == horizontalDragPosition && dY == verticalDragPosition;
					}
				);
			}

			function removeMousewheel()
			{
				container.unbind(mwEvent);
			}

			function nil()
			{
				return false;
			}

			function initFocusHandler()
			{
				pane.find(':input,a').unbind('focus.jsp').bind(
					'focus.jsp',
					function(e)
					{
						scrollToElement(e.target, false);
					}
				);
			}

			function removeFocusHandler()
			{
				pane.find(':input,a').unbind('focus.jsp');
			}
			
			function initKeyboardNav()
			{
				var keyDown, elementHasScrolled;
				// IE also focuses elements that don't have tabindex set.
				pane.focus(
					function()
					{
						elem.focus();
					}
				);
				
				elem.attr('tabindex', 0)
					.unbind('keydown.jsp keypress.jsp')
					.bind(
						'keydown.jsp',
						function(e)
						{
							if (e.target !== this){
								return;
							}
							var dX = horizontalDragPosition, dY = verticalDragPosition;
							switch(e.keyCode) {
								case 40: // down
								case 38: // up
								case 34: // page down
								case 32: // space
								case 33: // page up
								case 39: // right
								case 37: // left
									keyDown = e.keyCode;
									keyDownHandler();
									break;
								case 35: // end
									scrollToY(contentHeight - paneHeight);
									keyDown = null;
									break;
								case 36: // home
									scrollToY(0);
									keyDown = null;
									break;
							}

							elementHasScrolled = e.keyCode == keyDown && dX != horizontalDragPosition || dY != verticalDragPosition;
							return !elementHasScrolled;
						}
					).bind(
						'keypress.jsp', // For FF/ OSX so that we can cancel the repeat key presses if the JSP scrolls...
						function(e)
						{
							if (e.keyCode == keyDown) {
								keyDownHandler();
							}
							return !elementHasScrolled;
						}
					);
				
				if (settings.hideFocus) {
					elem.css('outline', 'none');
					if ('hideFocus' in container[0]){
						elem.attr('hideFocus', true);
					}
				} else {
					elem.css('outline', '');
					if ('hideFocus' in container[0]){
						elem.attr('hideFocus', false);
					}
				}
				
				function keyDownHandler()
				{
					var dX = horizontalDragPosition, dY = verticalDragPosition;
					switch(keyDown) {
						case 40: // down
							jsp.scrollByY(settings.keyboardSpeed, false);
							break;
						case 38: // up
							jsp.scrollByY(-settings.keyboardSpeed, false);
							break;
						case 34: // page down
						case 32: // space
							jsp.scrollByY(paneHeight * settings.scrollPagePercent, false);
							break;
						case 33: // page up
							jsp.scrollByY(-paneHeight * settings.scrollPagePercent, false);
							break;
						case 39: // right
							jsp.scrollByX(settings.keyboardSpeed, false);
							break;
						case 37: // left
							jsp.scrollByX(-settings.keyboardSpeed, false);
							break;
					}

					elementHasScrolled = dX != horizontalDragPosition || dY != verticalDragPosition;
					return elementHasScrolled;
				}
			}
			
			function removeKeyboardNav()
			{
				elem.attr('tabindex', '-1')
					.removeAttr('tabindex')
					.unbind('keydown.jsp keypress.jsp');
			}

			function observeHash()
			{
				if (location.hash && location.hash.length > 1) {
					var e, retryInt;
					try {
						e = $(location.hash);
					} catch (err) {
						return;
					}

					if (e.length && pane.find(location.hash)) {
						// nasty workaround but it appears to take a little while before the hash has done its thing
						// to the rendered page so we just wait until the container's scrollTop has been messed up.
						if (container.scrollTop() === 0) {
							retryInt = setInterval(
								function()
								{
									if (container.scrollTop() > 0) {
										scrollToElement(location.hash, true);
										$(document).scrollTop(container.position().top);
										clearInterval(retryInt);
									}
								},
								50
							);
						} else {
							scrollToElement(location.hash, true);
							$(document).scrollTop(container.position().top);
						}
					}
				}
			}

			function unhijackInternalLinks()
			{
				$('a.jspHijack').unbind('click.jsp-hijack').removeClass('jspHijack');
			}

			function hijackInternalLinks()
			{
				unhijackInternalLinks();
				$('a[href^=#]').addClass('jspHijack').bind(
					'click.jsp-hijack',
					function()
					{
						var uriParts = this.href.split('#'), hash;
						if (uriParts.length > 1) {
							hash = uriParts[1];
							if (hash.length > 0 && pane.find('#' + hash).length > 0) {
								scrollToElement('#' + hash, true);
								// Need to return false otherwise things mess up... Would be nice to maybe also scroll
								// the window to the top of the scrollpane?
								return false;
							}
						}
					}
				);
			}
			
			// If no element has focus, focus elem to support keyboard navigation
			function focusElem()
			{
				if (!$(':focus').length) {
					elem.focus();
				}
			}
			
			// Init touch on iPad, iPhone, iPod, Android
			function initTouch()
			{
				var startX,
					startY,
					touchStartX,
					touchStartY,
					moved,
					moving = false;
  
				container.unbind('touchstart.jsp touchmove.jsp touchend.jsp click.jsp-touchclick').bind(
					'touchstart.jsp',
					function(e)
					{
						var touch = e.originalEvent.touches[0];
						startX = contentPositionX();
						startY = contentPositionY();
						touchStartX = touch.pageX;
						touchStartY = touch.pageY;
						moved = false;
						moving = true;
					}
				).bind(
					'touchmove.jsp',
					function(ev)
					{
						if(!moving) {
							return;
						}
						
						var touchPos = ev.originalEvent.touches[0],
							dX = horizontalDragPosition, dY = verticalDragPosition;
						
						jsp.scrollTo(startX + touchStartX - touchPos.pageX, startY + touchStartY - touchPos.pageY);
						
						moved = moved || Math.abs(touchStartX - touchPos.pageX) > 5 || Math.abs(touchStartY - touchPos.pageY) > 5;
						
						// return true if there was no movement so rest of screen can scroll
						return dX == horizontalDragPosition && dY == verticalDragPosition;
					}
				).bind(
					'touchend.jsp',
					function(e)
					{
						moving = false;
						/*if(moved) {
							return false;
						}*/
					}
				).bind(
					'click.jsp-touchclick',
					function(e)
					{
						if(moved) {
							moved = false;
							return false;
						}
					}
				);
			}
			
			function destroy(){
				var currentY = contentPositionY(),
					currentX = contentPositionX();
				elem.removeClass('jspScrollable').unbind('.jsp');
				elem.replaceWith(originalElement.append(pane.children()));
				originalElement.scrollTop(currentY);
				originalElement.scrollLeft(currentX);
			}

			// Public API
			$.extend(
				jsp,
				{
					// Reinitialises the scroll pane (if it's internal dimensions have changed since the last time it
					// was initialised). The settings object which is passed in will override any settings from the
					// previous time it was initialised - if you don't pass any settings then the ones from the previous
					// initialisation will be used.
					reinitialise: function(s)
					{
						s = $.extend({}, settings, s);
						initialise(s);
					},
					// Scrolls the specified element (a jQuery object, DOM node or jQuery selector string) into view so
					// that it can be seen within the viewport. If stickToTop is true then the element will appear at
					// the top of the viewport, if it is false then the viewport will scroll as little as possible to
					// show the element. You can also specify if you want animation to occur. If you don't provide this
					// argument then the animateScroll value from the settings object is used instead.
					scrollToElement: function(ele, stickToTop, animate)
					{
						scrollToElement(ele, stickToTop, animate);
					},
					// Scrolls the pane so that the specified co-ordinates within the content are at the top left
					// of the viewport. animate is optional and if not passed then the value of animateScroll from
					// the settings object this jScrollPane was initialised with is used.
					scrollTo: function(destX, destY, animate)
					{
						scrollToX(destX, animate);
						scrollToY(destY, animate);
					},
					// Scrolls the pane so that the specified co-ordinate within the content is at the left of the
					// viewport. animate is optional and if not passed then the value of animateScroll from the settings
					// object this jScrollPane was initialised with is used.
					scrollToX: function(destX, animate)
					{
						scrollToX(destX, animate);
					},
					// Scrolls the pane so that the specified co-ordinate within the content is at the top of the
					// viewport. animate is optional and if not passed then the value of animateScroll from the settings
					// object this jScrollPane was initialised with is used.
					scrollToY: function(destY, animate)
					{
						scrollToY(destY, animate);
					},
					// Scrolls the pane to the specified percentage of its maximum horizontal scroll position. animate
					// is optional and if not passed then the value of animateScroll from the settings object this
					// jScrollPane was initialised with is used.
					scrollToPercentX: function(destPercentX, animate)
					{
						scrollToX(destPercentX * (contentWidth - paneWidth), animate);
					},
					// Scrolls the pane to the specified percentage of its maximum vertical scroll position. animate
					// is optional and if not passed then the value of animateScroll from the settings object this
					// jScrollPane was initialised with is used.
					scrollToPercentY: function(destPercentY, animate)
					{
						scrollToY(destPercentY * (contentHeight - paneHeight), animate);
					},
					// Scrolls the pane by the specified amount of pixels. animate is optional and if not passed then
					// the value of animateScroll from the settings object this jScrollPane was initialised with is used.
					scrollBy: function(deltaX, deltaY, animate)
					{
						jsp.scrollByX(deltaX, animate);
						jsp.scrollByY(deltaY, animate);
					},
					// Scrolls the pane by the specified amount of pixels. animate is optional and if not passed then
					// the value of animateScroll from the settings object this jScrollPane was initialised with is used.
					scrollByX: function(deltaX, animate)
					{
						var destX = contentPositionX() + deltaX,
							percentScrolled = destX / (contentWidth - paneWidth);
						positionDragX(percentScrolled * dragMaxX, animate);
					},
					// Scrolls the pane by the specified amount of pixels. animate is optional and if not passed then
					// the value of animateScroll from the settings object this jScrollPane was initialised with is used.
					scrollByY: function(deltaY, animate)
					{
						var destY = contentPositionY() + deltaY,
							percentScrolled = destY / (contentHeight - paneHeight);
						positionDragY(percentScrolled * dragMaxY, animate);
					},
					// Positions the horizontal drag at the specified x position (and updates the viewport to reflect
					// this). animate is optional and if not passed then the value of animateScroll from the settings
					// object this jScrollPane was initialised with is used.
					positionDragX: function(x, animate)
					{
						positionDragX(x, animate);
					},
					// Positions the vertical drag at the specified y position (and updates the viewport to reflect
					// this). animate is optional and if not passed then the value of animateScroll from the settings
					// object this jScrollPane was initialised with is used.
					positionDragY: function(y, animate)
					{
						positionDragX(y, animate);
					},
					// This method is called when jScrollPane is trying to animate to a new position. You can override
					// it if you want to provide advanced animation functionality. It is passed the following arguments:
					//  * ele          - the element whose position is being animated
					//  * prop         - the property that is being animated
					//  * value        - the value it's being animated to
					//  * stepCallback - a function that you must execute each time you update the value of the property
					// You can use the default implementation (below) as a starting point for your own implementation.
					animate: function(ele, prop, value, stepCallback)
					{
						var params = {};
						params[prop] = value;
						ele.animate(
							params,
							{
								'duration'	: settings.animateDuration,
								'ease'		: settings.animateEase,
								'queue'		: false,
								'step'		: stepCallback
							}
						);
					},
					// Returns the current x position of the viewport with regards to the content pane.
					getContentPositionX: function()
					{
						return contentPositionX();
					},
					// Returns the current y position of the viewport with regards to the content pane.
					getContentPositionY: function()
					{
						return contentPositionY();
					},
					// Returns the width of the content within the scroll pane.
					getContentWidth: function()
					{
						return contentWidth();
					},
					// Returns the height of the content within the scroll pane.
					getContentHeight: function()
					{
						return contentHeight();
					},
					// Returns the horizontal position of the viewport within the pane content.
					getPercentScrolledX: function()
					{
						return contentPositionX() / (contentWidth - paneWidth);
					},
					// Returns the vertical position of the viewport within the pane content.
					getPercentScrolledY: function()
					{
						return contentPositionY() / (contentHeight - paneHeight);
					},
					// Returns whether or not this scrollpane has a horizontal scrollbar.
					getIsScrollableH: function()
					{
						return isScrollableH;
					},
					// Returns whether or not this scrollpane has a vertical scrollbar.
					getIsScrollableV: function()
					{
						return isScrollableV;
					},
					// Gets a reference to the content pane. It is important that you use this method if you want to
					// edit the content of your jScrollPane as if you access the element directly then you may have some
					// problems (as your original element has had additional elements for the scrollbars etc added into
					// it).
					getContentPane: function()
					{
						return pane;
					},
					// Scrolls this jScrollPane down as far as it can currently scroll. If animate isn't passed then the
					// animateScroll value from settings is used instead.
					scrollToBottom: function(animate)
					{
						positionDragY(dragMaxY, animate);
					},
					// Hijacks the links on the page which link to content inside the scrollpane. If you have changed
					// the content of your page (e.g. via AJAX) and want to make sure any new anchor links to the
					// contents of your scroll pane will work then call this function.
					hijackInternalLinks: function()
					{
						hijackInternalLinks();
					},
					// Removes the jScrollPane and returns the page to the state it was in before jScrollPane was
					// initialised.
					destroy: function()
					{
							destroy();
					}
				}
			);
			
			initialise(s);
		}

		// Pluginifying code...
		settings = $.extend({}, $.fn.jScrollPane.defaults, settings);
		
		// Apply default speed
		$.each(['mouseWheelSpeed', 'arrowButtonSpeed', 'trackClickSpeed', 'keyboardSpeed'], function() {
			settings[this] = settings[this] || settings.speed;
		});

		var ret;
		this.each(
			function()
			{
				var elem = $(this), jspApi = elem.data('jsp');
				if (jspApi) {
					jspApi.reinitialise(settings);
				} else {
					jspApi = new JScrollPane(elem, settings);
					elem.data('jsp', jspApi);
				}
				ret = ret ? ret.add(elem) : elem;
			}
		);
		return ret;
	};

	$.fn.jScrollPane.defaults = {
		showArrows					: false,
		maintainPosition			: true,
		clickOnTrack				: true,
		autoReinitialise			: false,
		autoReinitialiseDelay		: 500,
		verticalDragMinHeight		: 0,
		verticalDragMaxHeight		: 99999,
		horizontalDragMinWidth		: 0,
		horizontalDragMaxWidth		: 99999,
		animateScroll				: false,
		animateDuration				: 300,
		animateEase					: 'linear',
		hijackInternalLinks			: false,
		verticalGutter				: 4,
		horizontalGutter			: 4,
		mouseWheelSpeed				: 0,
		arrowButtonSpeed			: 0,
		arrowRepeatFreq				: 50,
		arrowScrollOnHover			: false,
		trackClickSpeed				: 0,
		trackClickRepeatFreq		: 70,
		verticalArrowPositions		: 'split',
		horizontalArrowPositions	: 'split',
		enableKeyboardNavigation	: true,
		hideFocus					: false,
		keyboardSpeed				: 0,
		initialDelay                : 300,        // Delay before starting repeating
		speed						: 30,		// Default speed when others falsey
		scrollPagePercent			: .8		// Percent of visible area scrolled when pageUp/Down or track area pressed
	};

})(jQuery,this);

;
document.write('<style>.noscript { display: none; }</style>');


var $ = jQuery.noConflict();

	jQuery(document).ready(function($) {
	
		var gallery;
		// We only want these styles applied when javascript is enabled
		$('div.content').css('display', 'block');
		
		
		$(".gallery").each(function(i){
					// Initially set opacity on thumbs and add
					// additional styling for hover effect on thumbs
					var onMouseOutOpacity = 0.67;
					$('#thumbs + i + ul.thumbs li').opacityrollover({
						mouseOutOpacity:   onMouseOutOpacity,
						mouseOverOpacity:  1.0,
						fadeSpeed:         'fast',
						exemptionSelector: '.selected'
					});
					
					// Initialize Advanced Galleriffic Gallery
					gallery = $('#thumbs'+i).galleriffic({
						delay:                     2500,
						numThumbs:                 6,
						preloadAhead:              6,
						enableTopPager:            false,
						enableBottomPager:         false,
						imageContainerSel:         '#slideshow' + i,
						controlsContainerSel:      '#controls' + i,
						captionContainerSel:       '#caption' + i,
						loadingContainerSel:       '#loading' + i,
						renderSSControls:          false,
						renderNavControls:         true,
						playLinkText:              'Play Slideshow',
						pauseLinkText:             'Pause Slideshow',
						prevLinkText:              '&lsaquo; Previous Photo',
						nextLinkText:              'Next Photo &rsaquo;',
						nextPageLinkText:          'Next &rsaquo;',
						prevPageLinkText:          '&lsaquo; Prev',
						enableHistory:             true,
						autoStart:                 false,
						syncTransitions:           true,
						defaultTransitionDuration: 900,
						onSlideChange:             function(prevIndex, nextIndex) {
							// 'this' refers to the gallery, which is an extension of $('#thumbs')
							this.find('ul.thumbs').children()
							.eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end()
							.eq(nextIndex).fadeTo('fast', 1.0);

							// Update the photo index display
							this.$captionContainer.find('div.photo-index')
							.html('Photo '+ (nextIndex+1) +' of '+ this.data.length);
							
							var prevPageLink = this.find('a.prev').css('visibility', 'hidden');
							var nextPageLink = this.find('a.next').css('visibility', 'hidden');
							
							//alert(prevIndex+" "+nextIndex);
							// Show appropriate next / prev page links
							if (nextIndex == 0)
								prevPageLink.css('visibility', 'hidden');
							else
								prevPageLink.css('visibility', 'visible');
							
							var lastPage = this.data.length-1;
							//alert(nextIndex+" "+lastPage);
							if (nextIndex == lastPage)
								nextPageLink.css('visibility', 'hidden');
							else
								nextPageLink.css('visibility', 'visible');
							/*
							this.fadeTo('fast', 1.0);*/
							
						},
						onPageTransitionOut:       function(callback) {
							this.fadeTo('fast', 0.0, callback);
						},
						onPageTransitionIn:        function() {
							/*var prevPageLink = this.find('a.prev').css('visibility', 'hidden');
							var nextPageLink = this.find('a.next').css('visibility', 'hidden');
				
							// Show appropriate next / prev page links
							if (this.displayedPage > 0)
								prevPageLink.css('visibility', 'visible');

							var lastPage = this.getNumPages() - 1;
							if (this.displayedPage < lastPage)
								nextPageLink.css('visibility', 'visible');
							*/
							this.fadeTo('fast', 1.0);
						}
						
					
					});
					
		});

		/**************** Event handlers for custom next / prev page links **********************/
/*
		gallery.find('a.prev').click(function(e) {
			gallery.previousPage();
			e.preventDefault();
		});

		gallery.find('a.next').click(function(e) {
			gallery.nextPage();
			e.preventDefault();
		});*/

		/****************************************************************************************/

		/**** Functions to support integration of galleriffic with the jquery.history plugin ****/

		// PageLoad function
		// This function is called when:
		// 1. after calling $.historyInit();
		// 2. after calling $.historyLoad();
		// 3. after pushing "Go Back" button of a browser
		
		function pageload(hash) {
			// alert("pageload: " + hash);
			// hash doesn't contain the first # character.
			if(hash) {
				$.galleriffic.gotoImage(hash);
			} else {
				gallery.gotoIndex(0);
			}
		}

		// Initialize history plugin.
		// The callback is called at once by present location.hash. 
		$.historyInit(pageload, "advanced.html");

		// set onlick event for buttons using the jQuery 1.3 live method
		$("a[rel='history']").live('click', function(e) {
			if (e.button != 0) return true;

			var hash = this.href;
			hash = hash.replace(/^.*#/, '');

			// moves to a new page. 
			// pageload is called at once. 
			// hash don't contain "#", "?"
			$.historyLoad(hash);

			return false;
		});
		/****************************************************************************************/
	});
    
$(function() {
    $('a[href^="http://"]').attr("target", "_blank");





    //all the menu items
    var $items 		= $('#cc_menu .cc_item');
    //number of menu items
    var cnt_items	= $items.length;
    //if menu is expanded then folded is true
    var folded		= false;
    //timeout to trigger the mouseenter event on the menu items
    var menu_time;
    /**
    bind the mouseenter, mouseleave to each item:
    - shows / hides image and submenu
    bind the click event to the list elements (submenu):
    - hides all items except the clicked one,
    and shows the content for that item
    */
    $items.unbind('mouseenter')
          .bind('mouseenter',m_enter)
          .unbind('mouseleave')
          .bind('mouseleave',m_leave)
          .find('.cc_submenu > ul > li')
          .bind('click',function(){
        var $li_e = $(this);
              //if the menu is already folded,
              //just replace the content
        if(folded){
            hideContent();
            showContent($li_e.attr('class'));
        }
              else //fold and show the content
            fold($li_e);
    });

    /**
    mouseenter function for the items
    the timeout is used to prevent this event
    to trigger if the user moves the mouse with
    a considerable speed through the menu items
    */
    
    function m_enter(){
   
        var $this 	= $(this);
        clearTimeout(menu_time);
        menu_time 	= setTimeout(function(){
        //img
        $this.find('img').stop().animate({'top':'0px'},400);
        //cc_submenu ul
        $this.find('.cc_submenu > ul').stop().animate({'height':'345px'},400);
        },200);
    }

    //mouseleave function for the items
    function m_leave(){
        var $this = $(this);
        clearTimeout(menu_time);
        //img
        $this.find('img').stop().animate({'top':'-606px'},400);
        //cc_submenu ul
        $this.find('.cc_submenu > ul').stop().animate({'height':'0px'},400);
    }

    //back to menu button - unfolds the menu
    $('#cc_back').bind('click',unfold);

    /**
    hides all the menu items except the clicked one
    after that, the content is shown
    */
    function fold($li_e){
        var $item		= $li_e.closest('.cc_item');

        var d = 100;
        var step = 0;
        $items.unbind('mouseenter mouseleave');
        $items.not($item).each(function(){
            var $item = $(this);
            $item.stop().animate({
                'marginLeft':'-159px'
            },d += 200,function(){
                ++step;
                if(step == cnt_items-1){
                    folded = true;
                    showContent($li_e.attr('class'));
                }
            });
        });
    }

    /**
    shows all the menu items
    also hides any item's image / submenu
    that might be displayed
    */
    function unfold(){
        $('#cc_content').stop().animate({'left':'-700px'},606,function(){
            var d = 100;
            var step = 0;
        $items.each(function(){
                var $item = $(this);

                $item.find('img')
                     .stop()
                     .animate({'top':'-795px'},200)
                     .andSelf()
                     .find('.cc_submenu > ul')
                     .stop()
                     .animate({'height':'0px'},200);

                $item.stop().animate({
                'marginLeft':'0px'
                },d += 200,function(){
                    ++step;
                    if(step == cnt_items-1){
                        folded = false;
                        $items.unbind('mouseenter')
                              .bind('mouseenter',m_enter)
                              .unbind('mouseleave')
                              .bind('mouseleave',m_leave);

                        hideContent();
                    }
                });
            });
        });
    }

    //function to show the content
    function showContent(idx){
        $('#cc_content').stop().animate({'left':'159px'},200,function(){
            $(this).find('.'+idx).fadeIn();
        });
    }

    //function to hide the content
    function hideContent(){
        $('.cc_content_item').hide();
    }


	//$('.cc_content .cc_content_item .cc_content_item_scrool').jScrollPane();

	



});;

