/*!
 Cufon
 * Copyright (c) 2009 Simo Kinnunen.
 * Licensed under the MIT license.
 */

var Cufon = (function() {
	
	var api = function() {	
		return api.replace.apply(null, arguments);
	};
	
	var DOM = api.DOM = {
			
		ready: (function() {
		
			var complete = false, readyStatus = { loaded: 1, complete: 1 };
		
			var queue = [], perform = function() {
				if (complete) return;
				complete = true;
				for (var fn; fn = queue.shift(); fn());
			};
			
			// Gecko, Opera, WebKit r26101+
			
			if (document.addEventListener) {
				document.addEventListener('DOMContentLoaded', perform, false);
				window.addEventListener('pageshow', perform, false); // For cached Gecko pages
			}
			
			// Old WebKit, Internet Explorer
			
			if (!window.opera && document.readyState) (function() {
				readyStatus[document.readyState] ? perform() : setTimeout(arguments.callee, 10);
			})();
			
			// Internet Explorer
			
			if (document.readyState && document.createStyleSheet) (function() {
				try {
					document.body.doScroll('left');
					perform();
				}
				catch (e) {
					setTimeout(arguments.callee, 1);
				}
			})();
			
			addEvent(window, 'load', perform); // Fallback
			
			return function(listener) {
				if (!arguments.length) perform();
				else complete ? listener() : queue.push(listener);
			};
			
		})()
		
	};

	var CSS = api.CSS = {
	
		Size: function(value, base) {
		
			this.value = parseFloat(value);
			this.unit = String(value).match(/[a-z%]*$/)[0] || 'px';
		
			this.convert = function(value) {
				return value / base * this.value;
			};
			
			this.convertFrom = function(value) {
				return value / this.value * base;
			};
			
			this.toString = function() {
				return this.value + this.unit;
			};

		},
	
		getStyle: function(el) {
			var view = document.defaultView;
			if (view && view.getComputedStyle) return new Style(view.getComputedStyle(el, null));
			if (el.currentStyle) return new Style(el.currentStyle);
			return new Style(el.style);
		},
		
		ready: (function() {
			
			var complete = false;
			
			var queue = [], perform = function() {
				complete = true;
				for (var fn; fn = queue.shift(); fn());
			};
			
			// Safari 2 does not include <style> elements in document.styleSheets.
			// Safari 2 also does not support Object.prototype.propertyIsEnumerable.
			
			var styleElements = Object.prototype.propertyIsEnumerable ? elementsByTagName('style') : { length: 0 };
			var linkElements = elementsByTagName('link');
			
			DOM.ready(function() {
				// These checks are actually only needed for WebKit-based browsers, but don't really hurt other browsers.
				var linkStyles = 0, link;
				for (var i = 0, l = linkElements.length; link = linkElements[i], i < l; ++i) {
					// WebKit does not load alternate stylesheets.
					if (!link.disabled && link.rel.toLowerCase() == 'stylesheet') ++linkStyles;
				}
				if (document.styleSheets.length >= styleElements.length + linkStyles) perform();
				else setTimeout(arguments.callee, 10);
			});
			
			return function(listener) {
				if (complete) listener();
				else queue.push(listener);
			};
			
		})(),

		supports: function(property, value) {
			var checker = document.createElement('span').style;
			if (checker[property] === undefined) return false;
			checker[property] = value;
			return checker[property] === value;
		},
		
		textAlign: function(word, style, position, wordCount) {
			if (style.get('textAlign') == 'right') {
				if (position > 0) word = ' ' + word;
			}
			else if (position < wordCount - 1) word += ' ';
			return word;
		},
		
		textDecoration: function(el, style) {
			if (!style) style = this.getStyle(el);
			var types = {
				underline: null,
				overline: null,
				'line-through': null
			};
			for (var search = el; search.parentNode && search.parentNode.nodeType == 1; ) {
				var foundAll = true;
				for (var type in types) {
					if (types[type]) continue;
					if (style.get('textDecoration').indexOf(type) != -1) types[type] = style.get('color');
					foundAll = false;
				}
				if (foundAll) break; // this is rather unlikely to happen
				style = this.getStyle(search = search.parentNode);
			}
			return types;
		},
		
		textShadow: cached(function(value) {
			if (value == 'none') return null;
			var shadows = [], currentShadow = {}, result, offCount = 0;
			var re = /(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;
			while (result = re.exec(value)) {
				if (result[0] == ',') {
					shadows.push(currentShadow);
					currentShadow = {}, offCount = 0;
				}
				else if (result[1]) {
					currentShadow.color = result[1];
				}
				else {
					currentShadow[[ 'offX', 'offY', 'blur' ][offCount++]] = result[2];
				}
			}
			shadows.push(currentShadow);
			return shadows;
		}),
		
		color: cached(function(value) {
			var parsed = {};
			parsed.color = value.replace(/^rgba\((.*?),\s*([\d.]+)\)/, function($0, $1, $2) {
				parsed.opacity = parseFloat($2);
				return 'rgb(' + $1 + ')';
			});
			return parsed;
		}),
		
		textTransform: function(text, style) {
			return text[{
				uppercase: 'toUpperCase',
				lowercase: 'toLowerCase'
			}[style.get('textTransform')] || 'toString']();
		}
		
	};
	
	api.VML = {
	
		parsePath: function(path) {
			var cmds = [], re = /([mrvxe])([^a-z]*)/g, match;
			while (match = re.exec(path)) {
				cmds.push({
					type: match[1],
					coords: match[2].split(',')
				});
			}
			return cmds;
		}
			
	};
	
	function Font(data) {
		
		var face = this.face = data.face;
		this.glyphs = data.glyphs;
		this.w = data.w;
		this.baseSize = parseInt(face['units-per-em'], 10);
		
		this.family = face['font-family'].toLowerCase();
		this.weight = face['font-weight'];
		this.style = face['font-style'] || 'normal';
		
		this.viewBox = (function () {
			var parts = face.bbox.split(/\s+/);
			return {
				minX: parseInt(parts[0], 10),
				minY: parseInt(parts[1], 10),
				width: parseInt(parts[2], 10) - parseInt(parts[0], 10),
				height: parseInt(parts[3], 10) - parseInt(parts[1], 10),
				toString: function() {
					return [ this.minX, this.minY, this.width, this.height ].join(' ');
				}
			};
		})();
		
		this.ascent = -parseInt(face.ascent, 10);
		this.descent = -parseInt(face.descent, 10);
		
		this.height = -this.ascent + this.descent;
		
	}
	
	function FontFamily() {

		var styles = {}, mapping = {
			oblique: 'italic',
			italic: 'oblique'
		};
		
		this.add = function(font) {
			(styles[font.style] || (styles[font.style] = {}))[font.weight] = font;
		};
		
		this.get = function(style, weight) {
			var weights = styles[style] || styles[mapping[style]]
				|| styles.normal || styles.italic || styles.oblique;
			if (!weights) return null;
			// we don't have to worry about "bolder" and "lighter"
			// because IE's currentStyle returns a numeric value for it,
			// and other browsers use the computed value anyway
			weight = {
				normal: 400,
				bold: 700
			}[weight] || parseInt(weight, 10);
			if (weights[weight]) return weights[weight];
			// http://www.w3.org/TR/CSS21/fonts.html#propdef-font-weight
			// Gecko uses x99/x01 for lighter/bolder
			var up = {
				1: 1,
				99: 0
			}[weight % 100], alts = [], min, max;
			if (up === undefined) up = weight > 400;
			if (weight == 500) weight = 400;
			for (var alt in weights) {
				alt = parseInt(alt, 10);
				if (!min || alt < min) min = alt;
				if (!max || alt > max) max = alt;
				alts.push(alt);
			}
			if (weight < min) weight = min;
			if (weight > max) weight = max;
			alts.sort(function(a, b) {
				return (up
					? (a > weight && b > weight) ? a < b : a > b
					: (a < weight && b < weight) ? a > b : a < b) ? -1 : 1;
			});
			return weights[alts[0]];
		};
	
	}
	
	function HoverHandler() {
		
		function contains(node, anotherNode) {
			if (node.contains) return node.contains(anotherNode);
			return node.compareDocumentPosition(anotherNode) & 16;
		}
		
		function onOverOut(e) {
			var related = e.relatedTarget;
			if (!related || contains(this, related)) return;
			trigger(this);
		}
		
		function onEnterLeave(e) {
			trigger(this);
		}

		function trigger(el) {
			// A timeout is needed so that the event can actually "happen"
			// before replace is triggered. This ensures that styles are up
			// to date.
			setTimeout(function() {
				api.replace(el, sharedStorage.get(el).options, true);
			}, 10);
		}
		
		this.attach = function(el) {
			if (el.onmouseenter === undefined) {
				addEvent(el, 'mouseover', onOverOut);
				addEvent(el, 'mouseout', onOverOut);
			}
			else {
				addEvent(el, 'mouseenter', onEnterLeave);
				addEvent(el, 'mouseleave', onEnterLeave);
			}
		};
		
	}
	
	function Storage() {
		
		var map = {}, at = 0;
		
		function identify(el) {
			return el.cufid || (el.cufid = ++at);
		}
		
		this.get = function(el) {
			var id = identify(el);
			return map[id] || (map[id] = {});
		};
		
	}
	
	function Style(style) {
		
		var custom = {}, sizes = {};
		
		this.get = function(property) {
			return custom[property] != undefined ? custom[property] : style[property];
		};
		
		this.getSize = function(property, base) {
			return sizes[property] || (sizes[property] = new CSS.Size(this.get(property), base));
		};
		
		this.extend = function(styles) {
			for (var property in styles) custom[property] = styles[property];
			return this;
		};
		
	}
	
	function addEvent(el, type, listener) {
		if (el.addEventListener) {
			el.addEventListener(type, listener, false);
		}
		else if (el.attachEvent) {
			el.attachEvent('on' + type, function() {
				return listener.call(el, window.event);
			});
		}
	}
	
	function attach(el, options) {
		var storage = sharedStorage.get(el);
		if (storage.options) return el;
		if (options.hover && options.hoverables[el.nodeName.toLowerCase()]) {
			hoverHandler.attach(el);
		}
		storage.options = options;
		return el;
	}
	
	function cached(fun) {
		var cache = {};
		return function(key) {
			if (!cache.hasOwnProperty(key)) cache[key] = fun.apply(null, arguments);
			return cache[key];
		};	
	}
	
	function getFont(el, style) {
		if (!style) style = CSS.getStyle(el);
		var families = style.get('fontFamily').split(/\s*,\s*/), family;
		for (var i = 0, l = families.length; i < l; ++i) {
			family = families[i].replace(/^(["'])(.*?)\1$/, '$2').toLowerCase();
			if (fonts[family]) return fonts[family].get(style.get('fontStyle'), style.get('fontWeight'));
		}
		return null;
	}
	
	function elementsByTagName(query) {
		return document.getElementsByTagName(query);
	}
	
	function merge() {
		var merged = {}, key;
		for (var i = 0, l = arguments.length; i < l; ++i) {
			for (key in arguments[i]) merged[key] = arguments[i][key];
		}
		return merged;
	}
	
	function process(font, text, style, options, node, el) {
		var separate = options.separate;
		if (separate == 'none') return engines[options.engine].apply(null, arguments);
		var fragment = document.createDocumentFragment(), processed;
		var parts = text.split(separators[separate]), needsAligning = (separate == 'words');
		if (needsAligning && HAS_BROKEN_REGEXP) {
			// @todo figure out a better way to do this
			if (/^\s/.test(text)) parts.unshift('');
			if (/\s$/.test(text)) parts.push('');
		}
		for (var i = 0, l = parts.length; i < l; ++i) {
			processed = engines[options.engine](font,
				needsAligning ? CSS.textAlign(parts[i], style, i, l) : parts[i],
				style, options, node, el, i < l - 1);
			if (processed) fragment.appendChild(processed);
		}
		return fragment;
	}
	
	function replaceElement(el, options) {
		var font, style, nextNode, redraw;
		for (var node = attach(el, options).firstChild; node; node = nextNode) {
			nextNode = node.nextSibling;
			redraw = false;
			if (node.nodeType == 1) {
				if (!node.firstChild) continue;
				if (!/cufon/.test(node.className)) {
					arguments.callee(node, options);
					continue;
				}
				else redraw = true;
			}
			if (!style) style = CSS.getStyle(el).extend(options);
			if (!font) font = getFont(el, style);
			if (!font) continue;
			if (redraw) {
				engines[options.engine](font, null, style, options, node, el);
				continue;
			}
			var text = node.data;
			if (text === '') continue;
			var processed = process(font, text, style, options, node, el);
			if (processed) node.parentNode.replaceChild(processed, node);
			else node.parentNode.removeChild(node);
		}
	}
	
	var HAS_BROKEN_REGEXP = ' '.split(/\s+/).length == 0;
	
	var sharedStorage = new Storage();
	var hoverHandler = new HoverHandler();
	var replaceHistory = [];
	
	var engines = {}, fonts = {}, defaultOptions = {
		enableTextDecoration: false,
		engine: null,
		//fontScale: 1,
		//fontScaling: false,
		hover: false,
		hoverables: {
			a: true
		},
		printable: true,
		//rotation: 0,
		//selectable: false,
		selector: (
				window.Sizzle
			||	window.jQuery // avoid noConflict issues
			||	(window.dojo && dojo.query)
			||	(window.$$ && function(query) { return $$(query); })
			||	(window.$ && function(query) { return $(query); })
			||	(document.querySelectorAll && function(query) { return document.querySelectorAll(query); })
			||	elementsByTagName
		),
		separate: 'words', // 'none' and 'characters' are also accepted
		textShadow: 'none'
	};
	
	var separators = {
		words: /\s+/,
		characters: ''
	};
	
	api.now = function() {
		DOM.ready();
		return api;
	};
	
	api.refresh = function() {
		var currentHistory = replaceHistory.splice(0, replaceHistory.length);
		for (var i = 0, l = currentHistory.length; i < l; ++i) {
			api.replace.apply(null, currentHistory[i]);
		}
		return api;
	};
	
	api.registerEngine = function(id, engine) {
		if (!engine) return api;
		engines[id] = engine;
		return api.set('engine', id);
	};
	
	api.registerFont = function(data) {
		var font = new Font(data), family = font.family;
		if (!fonts[family]) fonts[family] = new FontFamily();
		fonts[family].add(font);
		return api.set('fontFamily', family);
	};
	
	api.replace = function(elements, options, ignoreHistory) {
		options = merge(defaultOptions, options);
		if (!options.engine) return api; // there's no browser support so we'll just stop here
		if (typeof options.textShadow == 'string')
			options.textShadow = CSS.textShadow(options.textShadow);
		if (!ignoreHistory) replaceHistory.push(arguments);
		if (elements.nodeType || typeof elements == 'string') elements = [ elements ];
		CSS.ready(function() {
			for (var i = 0, l = elements.length; i < l; ++i) {
				var el = elements[i];
				if (typeof el == 'string') api.replace(options.selector(el), options, true);
				else replaceElement(el, options);
			}
		});
		return api;
	};
	
	api.set = function(option, value) {
		defaultOptions[option] = value;
		return api;
	};
	
	return api;
	
})();

Cufon.registerEngine('canvas', (function() {

	// Safari 2 doesn't support .apply() on native methods
	
	var check = document.createElement('canvas');
	if (!check || !check.getContext || !check.getContext.apply) return null;
	check = null;
	
	var HAS_INLINE_BLOCK = Cufon.CSS.supports('display', 'inline-block');
	
	// Firefox 2 w/ non-strict doctype (almost standards mode)
	var HAS_BROKEN_LINEHEIGHT = !HAS_INLINE_BLOCK && (document.compatMode == 'BackCompat' || /frameset|transitional/i.test(document.doctype.publicId));
	
	var styleSheet = document.createElement('style');
	styleSheet.type = 'text/css';
	styleSheet.appendChild(document.createTextNode(
		'@media screen,projection{' +
			'.cufon-canvas{display:inline;display:inline-block;position:relative;vertical-align:middle' + 
			(HAS_BROKEN_LINEHEIGHT
				? ''
				: ';font-size:1px;line-height:1px') +
			'}.cufon-canvas .cufon-alt{display:none}' +
			(HAS_INLINE_BLOCK
				? '.cufon-canvas canvas{position:relative}'
				: '.cufon-canvas canvas{position:absolute}') +
		'}' +
		'@media print{' +
			'.cufon-canvas{padding:0 !important}' +
			'.cufon-canvas canvas{display:none}' +
			'.cufon-canvas .cufon-alt{display:inline}' +
		'}'
	));
	document.getElementsByTagName('head')[0].appendChild(styleSheet);

	function generateFromVML(path, context) {
		var atX = 0, atY = 0;
		var cmds = Cufon.VML.parsePath(path);
		var code = new Array(cmds.length - 1);
		generate: for (var i = 0, l = cmds.length; i < l; ++i) {
			var c = cmds[i].coords;
			switch (cmds[i].type) {
				case 'v':
					code[i] = { m: 'bezierCurveTo', a: [ atX + Number(c[0]), atY + Number(c[1]), atX + Number(c[2]), atY + Number(c[3]), atX += Number(c[4]), atY += Number(c[5]) ] };
					break;
				case 'r':
					code[i] = { m: 'lineTo', a: [ atX += Number(c[0]), atY += Number(c[1]) ] };
					break;
				case 'm':
					code[i] = { m: 'moveTo', a: [ atX = Number(c[0]), atY = Number(c[1]) ] };
					break;
				case 'x':
					code[i] = { m: 'closePath' };
					break;
				case 'e':
					break generate;
			}
			context[code[i].m].apply(context, code[i].a);
		}
		return code;
	}
	
	function interpret(code, context) {
		for (var i = 0, l = code.length; i < l; ++i) {
			var line = code[i];
			context[line.m].apply(context, line.a);
		}
	}
	
	return function(font, text, style, options, node, el) {
		
		var redraw = (text === null);
		
		var viewBox = font.viewBox;
		
		var size = style.getSize('fontSize', font.baseSize);
		
		var letterSpacing = style.get('letterSpacing');
		letterSpacing = (letterSpacing == 'normal') ? 0 : size.convertFrom(parseInt(letterSpacing, 10));
		
		var expandTop = 0, expandRight = 0, expandBottom = 0, expandLeft = 0;
		var shadows = options.textShadow, shadowOffsets = [];
		if (shadows) {
			for (var i = 0, l = shadows.length; i < l; ++i) {
				var shadow = shadows[i];
				var x = size.convertFrom(parseFloat(shadow.offX));
				var y = size.convertFrom(parseFloat(shadow.offY));
				shadowOffsets[i] = [ x, y ];
				if (y < expandTop) expandTop = y;
				if (x > expandRight) expandRight = x;
				if (y > expandBottom) expandBottom = y;
				if (x < expandLeft) expandLeft = x;
			}
		}
		
		var chars = Cufon.CSS.textTransform(redraw ? node.alt : text, style).split('');
		
		var width = 0, lastWidth = null;
		
		for (var i = 0, l = chars.length; i < l; ++i) {
			var glyph = font.glyphs[chars[i]] || font.missingGlyph;
			if (!glyph) continue;
			width += lastWidth = Number(glyph.w || font.w) + letterSpacing;
		}
		
		if (lastWidth === null) return null; // there's nothing to render
		
		expandRight += (viewBox.width - lastWidth);
		expandLeft += viewBox.minX;
		
		var wrapper, canvas;
		
		if (redraw) {
			wrapper = node;
			canvas = node.firstChild;
		}
		else {
			wrapper = document.createElement('span');
			wrapper.className = 'cufon cufon-canvas';
			wrapper.alt = text;
			
			canvas = document.createElement('canvas');
			wrapper.appendChild(canvas);
			
			if (options.printable) {
				var print = document.createElement('span');
				print.className = 'cufon-alt';
				print.appendChild(document.createTextNode(text));
				wrapper.appendChild(print);
			}
		}
		
		var wStyle = wrapper.style;
		var cStyle = canvas.style;
		
		var height = size.convert(viewBox.height - expandTop + expandBottom);
		var roundedHeight = Math.ceil(height);
		var roundingFactor = roundedHeight / height;
		
		canvas.width = Math.ceil(size.convert(width + expandRight - expandLeft) * roundingFactor);
		canvas.height = roundedHeight;
		
		// minY has no part in canvas.height
		expandTop += viewBox.minY;
		
		cStyle.top = Math.round(size.convert(expandTop - font.ascent)) + 'px';
		cStyle.left = Math.round(size.convert(expandLeft)) + 'px';
		
		var wrapperWidth = Math.ceil(size.convert(width * roundingFactor)) + 'px';
		
		if (HAS_INLINE_BLOCK) {
			wStyle.width = wrapperWidth;
			wStyle.height = size.convert(font.height) + 'px';
		}
		else {
			wStyle.paddingLeft = wrapperWidth;
			wStyle.paddingBottom = (size.convert(font.height) - 1) + 'px';
		}
		
		var g = canvas.getContext('2d'), scale = roundedHeight / viewBox.height;
		
		g.scale(scale, scale);
		g.translate(-expandLeft, -expandTop);
		
		g.lineWidth = font.face['underline-thickness'];
		
		g.save();
		
		function line(y, color) {
			g.strokeStyle = color;
			
			g.beginPath();
			
			g.moveTo(0, y);
			g.lineTo(width, y);
			
			g.stroke();
		}
		
		var textDecoration = options.enableTextDecoration ? Cufon.CSS.textDecoration(el, style) : {};
		
		if (textDecoration.underline) line(-font.face['underline-position'], textDecoration.underline);
		if (textDecoration.overline) line(font.ascent, textDecoration.overline);
		
		g.fillStyle = style.get('color');
		
		function renderText() {
			for (var i = 0, l = chars.length; i < l; ++i) {
				var glyph = font.glyphs[chars[i]] || font.missingGlyph;
				if (!glyph) continue;
				g.beginPath();
				if (glyph.d) {
					if (glyph.code) interpret(glyph.code, g);
					else glyph.code = generateFromVML('m' + glyph.d, g);
				}
				g.fill();
				g.translate(Number(glyph.w || font.w) + letterSpacing, 0);
			}
		}
		
		if (shadows) {
			for (var i = 0, l = shadows.length; i < l; ++i) {
				var shadow = shadows[i];
				g.save();
				g.fillStyle = shadow.color;
				g.translate.apply(g, shadowOffsets[i]);
				renderText();
				g.restore();
			}
		}
		
		renderText();
		
		g.restore();
		
		if (textDecoration['line-through']) line(-font.descent, textDecoration['line-through']);
		
		return wrapper;
			
	};
	
})());

Cufon.registerEngine('vml', (function() {

	if (!document.namespaces) return;

	// isn't undocumented stuff great?
	document.write('<!--[if vml]><script type="text/javascript">Cufon.vmlEnabled=true;</script><![endif]-->');
	if (!Cufon.vmlEnabled) return;
	
	if (document.namespaces['cvml'] == null) {
		document.namespaces.add('cvml', 'urn:schemas-microsoft-com:vml');
		document.write('<style type="text/css">' +
			'@media screen{' + 
				'cvml\\:shape,cvml\\:group,cvml\\:shapetype,cvml\\:fill{behavior:url(#default#VML);display:inline-block;antialias:true;position:absolute}' +
				'.cufon-vml{display:inline-block;position:relative;vertical-align:middle}' +
				'.cufon-vml .cufon-alt{display:none}' +
				'a .cufon-vml{cursor:pointer}' +
			'}' +
			'@media print{' + 
				'.cufon-vml *{display:none}' +
				'.cufon-vml .cufon-alt{display:inline}' +
			'}' +
		'</style>');
	}

	var typeIndex = 0; // this is used to reference VML ShapeTypes

	function getFontSizeInPixels(el, value) {
		return getSizeInPixels(el, /(?:em|ex|%)$/i.test(value) ? '1em' : value);
	}
	
	// Original by Dead Edwards.
	// Combined with getFontSizeInPixels it also works with relative units.
	function getSizeInPixels(el, value) {
		if (/px$/i.test(value)) return parseFloat(value);
		var style = el.style.left, runtimeStyle = el.runtimeStyle.left;
		el.runtimeStyle.left = el.currentStyle.left;
		el.style.left = value;
		var result = el.style.pixelLeft;
		el.style.left = style;
		el.runtimeStyle.left = runtimeStyle;
		return result;
	}
	
	function createType(glyph, viewBox) {
		var shapeType = document.createElement('cvml:shapetype');
		shapeType.id = 'cufon-glyph-' + typeIndex++;
		glyph.typeRef = '#' + shapeType.id;
		shapeType.stroked = 'f';
		shapeType.coordsize = viewBox.width + ',' + viewBox.height;
		shapeType.coordorigin = viewBox.minX + ',' + viewBox.minY;
		var ensureSize = 'm' + viewBox.minX + ',' + viewBox.minY + ' r' + viewBox.width + ',' + viewBox.height;
		shapeType.path = (glyph.d ? 'm' + glyph.d + 'x' : '') + ensureSize;
		document.body.insertBefore(shapeType, document.body.firstChild);
	}
	
	return function(font, text, style, options, node, el, hasNext) {
		
		var redraw = (text === null);
		
		if (redraw) text = node.alt;
		
		// @todo word-spacing, text-decoration
	
		var viewBox = font.viewBox;
		
		var size = style.computedFontSize || (style.computedFontSize = new Cufon.CSS.Size(getFontSizeInPixels(el, style.get('fontSize')) + 'px', font.baseSize));
		
		var letterSpacing = style.computedLSpacing;
		
		if (letterSpacing == undefined) {
			letterSpacing = style.get('letterSpacing');
			style.computedLSpacing = letterSpacing = (letterSpacing == 'normal') ? 0 : size.convertFrom(getSizeInPixels(el, letterSpacing));
		}
		
		var wrapper, canvas;
		
		if (redraw) {
			wrapper = node;
			canvas = node.firstChild;
		}
		else {
			wrapper = document.createElement('span');
			wrapper.className = 'cufon cufon-vml';
			wrapper.alt = text;
			
			canvas = document.createElement('cvml:group');
			wrapper.appendChild(canvas);
			
			if (options.printable) {
				var print = document.createElement('span');
				print.className = 'cufon-alt';
				print.innerText = text;
				wrapper.appendChild(print);
			}
			
			// ie6, for some reason, has trouble rendering the last VML element in the document.
			// we can work around this by injecting a dummy element where needed.
			// @todo find a better solution
			if (!hasNext) wrapper.appendChild(document.createElement('cvml:group'));
		}
		
		var wStyle = wrapper.style;
		var cStyle = canvas.style;
		
		var height = size.convert(viewBox.height);
		
		cStyle.height = Math.ceil(height);
		cStyle.top = Math.round(size.convert(viewBox.minY - font.ascent));
		cStyle.left = Math.round(size.convert(viewBox.minX));
		
		var roundingFactor = parseInt(cStyle.height, 10) / height;
		
		wStyle.height = size.convert(-font.ascent + font.descent) + 'px';
		
		var textDecoration = options.enableTextDecoration ? Cufon.CSS.textDecoration(el, style) : {};
		
		var color = style.get('color');
		var chars = Cufon.CSS.textTransform(text, style).split('');
		
		var width = 0, offsetX = 0, advance = null;
		
		var shadows = options.textShadow;
		
		for (var i = 0, k = -1, l = chars.length; i < l; ++i) {
		
			var glyph = font.glyphs[chars[i]] || font.missingGlyph, shape;
			if (!glyph) continue;
			
			if (!glyph.typeRef) createType(glyph, viewBox);
			
			if (redraw) {
				// some glyphs may be missing so we can't use i
				shape = canvas.childNodes[++k];
			}
			else { 
				shape = document.createElement('cvml:shape');
				canvas.appendChild(shape);
			}
			
			shape.type = glyph.typeRef;
			var sStyle = shape.style;
			sStyle.width = viewBox.width;
			sStyle.height = viewBox.height;
			sStyle.top = 0;
			sStyle.left = offsetX;
			sStyle.zIndex = 1;
			shape.fillcolor = color;
			
			if (shadows) {
				// the VML shadow element is not used because it can only support
				// up to 2 shadows. and it breaks text selection.
				for (var z = 0, p = shadows.length; z < p; ++z) {
					var shadow = shadows[z];
					var shadowColor = Cufon.CSS.color(shadow.color);
					var shadowNode = shape.cloneNode(false), zStyle = shadowNode.runtimeStyle;
					zStyle.top = size.convertFrom(parseFloat(shadow.offY));
					zStyle.left = offsetX + size.convertFrom(parseFloat(shadow.offX));
					zStyle.zIndex = 0;
					shadowNode.fillcolor = shadowColor.color;
					if (shadowColor.opacity) {
						var shadowFill = document.createElement('cvml:fill');
						shadowFill.opacity = shadowColor.opacity;
						shadowNode.appendChild(shadowFill);
					}
					canvas.appendChild(shadowNode);
				}
				
				++k;
			}
			
			advance = Number(glyph.w || font.w) + letterSpacing;
			
			width += advance;
			offsetX += advance;
			
		}
		
		if (advance === null) return null;
		
		var fullWidth = -viewBox.minX + width + (viewBox.width - advance);
		
		canvas.coordsize = fullWidth + ',' + viewBox.height;
		
		cStyle.width = size.convert(fullWidth * roundingFactor);
		
		wStyle.width = Math.max(Math.ceil(size.convert(width * roundingFactor)), 0);
		
		return wrapper;
		
	};
	
})());


/* Archer Font Cufon */

Cufon.registerFont({"w":199,"face":{"font-family":"Archer Medium","font-weight":350,"font-stretch":"normal","units-per-em":"360","panose-1":"0 0 0 0 0 0 0 0 0 0","ascent":"288","descent":"-72","x-height":"3","bbox":"-18.6373 -269 350 81","underline-thickness":"18","underline-position":"-36","stemh":"21","stemv":"25","unicode-range":"U+0020-U+007E"},"glyphs":{"A":{"d":"6,0r0,-24r23,0r71,-189r-27,0r0,-24r108,0r0,24r-27,0r71,189r23,0r0,24r-80,0r0,-23r28,0r-21,-59r-97,0r-21,59r29,0r0,23r-80,0xm86,-104r81,0r-40,-111","w":254},"B":{"d":"17,0r0,-24r30,0r0,-189r-30,0r0,-24r95,0v95,-5,102,96,36,116v32,8,50,26,50,56v0,38,-30,65,-82,65r-99,0xm74,-23v47,3,98,-3,98,-43v0,-41,-50,-47,-98,-44r0,87xm74,-132v46,4,91,-5,91,-42v0,-38,-47,-42,-91,-39r0,81","w":217},"C":{"d":"141,4v-73,0,-121,-56,-121,-121v0,-73,56,-124,120,-124v50,0,89,30,89,58v2,28,-41,32,-41,4v0,-6,5,-12,9,-14v-6,-10,-27,-24,-57,-24v-54,0,-92,46,-92,99v0,51,38,98,93,98v29,0,53,-11,74,-31r16,19v-24,24,-57,36,-90,36","w":252},"D":{"d":"17,0r0,-24r30,0r0,-189r-30,0r0,-24r89,0v82,0,136,46,136,116v0,72,-50,121,-137,121r-88,0xm74,-24v86,7,144,-27,141,-97v1,-67,-59,-99,-141,-92r0,189","w":262},"E":{"d":"17,0r0,-24r30,0r0,-189r-30,0r0,-24r172,0r0,58r-26,0r0,-34r-89,0r0,81r78,0r0,23r-78,0r0,86r89,0r0,-35r26,0r0,58r-172,0","w":211},"F":{"d":"17,0r0,-24r30,0r0,-189r-30,0r0,-24r169,0r0,58r-25,0r0,-34r-87,0r0,85r76,0r0,23r-76,0r0,81r33,0r0,24r-90,0","w":204},"G":{"d":"209,-21v-72,57,-192,12,-189,-96v0,-75,57,-124,123,-124v53,0,89,29,89,55v2,27,-40,29,-40,3v0,-6,3,-11,6,-14v-9,-10,-29,-20,-56,-20v-56,0,-94,44,-94,100v-3,91,98,124,160,75r0,-51r-65,0r0,-22r92,0r0,115r-26,0r0,-21","w":265},"H":{"d":"17,0r0,-24r30,0r0,-189r-30,0r0,-24r88,0r0,24r-31,0r0,80r131,0r0,-80r-31,0r0,-24r88,0r0,24r-30,0r0,189r30,0r0,24r-88,0r0,-24r31,0r0,-85r-131,0r0,85r31,0r0,24r-88,0","w":279},"I":{"d":"17,0r0,-24r32,0r0,-189r-32,0r0,-24r91,0r0,24r-32,0r0,189r32,0r0,24r-91,0","w":125},"J":{"d":"149,-213v-4,92,25,219,-71,217v-37,0,-67,-25,-67,-58v-3,-29,37,-38,40,-9v0,8,-5,15,-12,17v1,10,14,25,39,25v72,-2,37,-123,45,-192r-37,0r0,-24r92,0r0,24r-29,0","w":190},"K":{"d":"17,0r0,-24r30,0r0,-189r-30,0r0,-24r88,0r0,24r-31,0r0,103r103,-103r-32,0r0,-24r92,0r0,24r-27,0r-77,77r75,112r30,0r0,24r-47,0r-78,-119r-39,39r0,56r31,0r0,24r-88,0","w":243},"L":{"d":"17,0r0,-24r30,0r0,-189r-30,0r0,-24r90,0r0,24r-33,0r0,190r82,0r0,-37r26,0r0,60r-165,0"},"M":{"d":"15,0r0,-24r31,0r9,-189r-32,0r0,-24r58,0r77,161r78,-161r57,0r0,24r-32,0r9,189r31,0r0,24r-88,0r0,-24r31,0r-6,-165r-77,156r-7,0r-76,-156r-6,165r30,0r0,24r-87,0","w":317},"N":{"d":"218,1r-145,-191r0,166r31,0r0,24r-87,0r0,-24r30,0r0,-189r-30,0r0,-24r54,0r136,180r0,-156r-31,0r0,-24r86,0r0,24r-29,0r0,214r-15,0","w":275},"O":{"d":"139,4v-69,0,-119,-54,-119,-122v0,-70,51,-123,121,-123v69,0,119,54,119,122v0,70,-51,123,-121,123xm140,-20v54,0,92,-43,92,-98v0,-56,-38,-99,-92,-99v-54,0,-92,43,-92,98v0,56,38,99,92,99","w":279},"P":{"d":"17,0r0,-24r30,0r0,-189r-30,0r0,-24r91,0v50,0,87,29,87,75v2,60,-55,84,-121,76r0,62r32,0r0,24r-89,0xm74,-109v51,4,96,-7,94,-53v0,-44,-44,-55,-94,-51r0,104","w":209},"Q":{"d":"172,-3v28,12,59,43,92,18r12,22v-59,41,-100,-26,-153,-34v-59,-9,-103,-56,-103,-121v0,-70,51,-123,121,-123v69,0,119,54,119,122v0,59,-36,105,-88,116xm48,-119v0,56,38,99,92,99v54,0,92,-43,92,-98v0,-56,-38,-99,-92,-99v-54,0,-92,43,-92,98","w":279},"R":{"d":"17,0r0,-24r30,0r0,-189r-30,0r0,-24r90,0v96,-9,114,113,35,134r50,79r28,0r0,24r-46,0r-59,-97v-12,2,-30,1,-41,0r0,73r31,0r0,24r-88,0xm74,-120v48,3,93,-6,92,-47v2,-40,-44,-50,-92,-46r0,93","w":222},"S":{"d":"55,-180v4,57,121,46,121,117v0,41,-33,67,-77,67v-47,0,-79,-26,-79,-49v-3,-29,38,-29,38,-5v0,6,-3,11,-6,16v21,25,106,18,98,-27v-6,-58,-131,-47,-121,-117v0,-37,29,-63,73,-63v39,0,70,22,70,47v0,13,-8,20,-18,20v-19,1,-24,-21,-14,-32v-23,-20,-90,-12,-85,26","w":197},"T":{"d":"68,0r0,-24r32,0r0,-190r-59,0r0,38r-26,0r0,-61r197,0r0,61r-26,0r0,-38r-59,0r0,190r32,0r0,24r-91,0","w":227},"U":{"d":"127,4v-54,0,-85,-30,-85,-86r0,-131r-30,0r0,-24r87,0r0,24r-31,0v5,77,-25,198,60,193v85,6,55,-116,60,-193r-31,0r0,-24r87,0r0,24r-30,0r0,130v0,56,-33,87,-87,87","w":255},"V":{"d":"118,4r-88,-217r-24,0r0,-24r80,0r0,24r-27,0r67,171r67,-171r-29,0r0,-24r80,0r0,24r-23,0r-88,217r-15,0","w":250},"W":{"d":"102,4r-67,-217r-27,0r0,-24r85,0r0,24r-30,0r50,166r59,-161r15,0r60,160r48,-165r-31,0r0,-24r86,0r0,24r-28,0r-66,217r-16,0r-61,-163r-61,163r-16,0","w":356},"X":{"d":"14,0r0,-24r25,0r75,-97r-69,-92r-26,0r0,-24r82,0r0,23r-26,0r55,77r56,-77r-27,0r0,-23r82,0r0,24r-25,0r-70,91r74,98r25,0r0,24r-82,0r0,-23r27,0r-60,-83r-62,83r28,0r0,23r-82,0","w":259},"Y":{"d":"69,0r0,-24r33,0r0,-71r-70,-118r-25,0r0,-24r79,0r0,24r-24,0r54,95r54,-95r-25,0r0,-24r80,0r0,24r-26,0r-70,118r0,71r33,0r0,24r-93,0","w":231},"Z":{"d":"16,0r0,-13r145,-202r-113,0r0,38r-24,0r0,-60r175,0r0,13r-145,202r124,0r0,-38r24,0r0,60r-186,0","w":218},"a":{"d":"82,-156v37,1,61,16,61,51r0,83r25,0r0,22r-48,0r0,-19v-25,32,-104,30,-104,-22v0,-45,68,-54,104,-39v11,-46,-30,-66,-65,-49v8,11,0,25,-14,25v-9,0,-15,-7,-15,-17v0,-17,20,-35,56,-35xm41,-43v2,38,64,28,79,4r0,-25v-26,-9,-82,-11,-79,21","w":177},"b":{"d":"180,-77v0,66,-80,105,-128,61r-7,16r-16,0r0,-242r-24,0r0,-22r49,0r0,131v39,-46,126,-17,126,56xm54,-36v33,31,104,18,100,-40v3,-61,-70,-76,-100,-36r0,76","w":196},"c":{"d":"148,-12v-54,37,-136,1,-133,-64v0,-43,34,-80,77,-80v35,0,62,23,62,46v2,23,-35,30,-36,4v0,-5,3,-10,8,-13v-26,-32,-87,-14,-85,43v-2,56,68,73,109,40","w":170},"d":{"d":"140,-22v-39,50,-124,18,-124,-54v0,-63,77,-106,123,-62r0,-104r-28,0r0,-22r53,0r0,242r25,0r0,22r-49,0r0,-22xm42,-76v0,60,69,73,97,34r0,-75v-32,-34,-97,-17,-97,41","w":198},"e":{"d":"159,-69r-118,0v3,56,74,61,113,33r-2,24v-55,35,-142,5,-137,-64v0,-43,28,-80,75,-80v51,1,75,39,69,87xm135,-89v-1,-63,-90,-59,-94,0r94,0","w":174},"f":{"d":"41,-153v-2,-57,-2,-113,51,-113v30,0,38,37,13,37v-10,0,-16,-6,-19,-15v-29,6,-18,57,-20,91r39,0r0,22r-39,0r0,109r30,0r0,22r-80,0r0,-22r25,0r0,-109r-27,0r0,-22r27,0","w":114},"g":{"d":"62,45v29,14,84,4,78,-39r0,-30v-39,47,-124,16,-124,-53v0,-63,81,-105,125,-59r0,-17r48,0r0,22r-24,0r0,136v0,44,-29,68,-73,67v-33,-2,-56,-9,-60,-34v-2,-22,34,-26,33,-3v0,3,-1,7,-3,10xm140,-117v-31,-32,-98,-16,-98,39v0,58,69,71,98,33r0,-72","w":200},"h":{"d":"141,-22v-4,-42,16,-113,-30,-111v-19,0,-37,12,-51,27r0,84r25,0r0,22r-74,0r0,-22r25,0r0,-220r-25,0r0,-22r49,0r0,138v26,-41,110,-43,106,22r0,82r25,0r0,22r-74,0r0,-22r24,0","w":200},"i":{"d":"50,-193v-10,0,-19,-9,-19,-19v0,-11,9,-21,20,-21v10,0,19,10,19,21v0,10,-9,19,-20,19xm15,0r0,-22r26,0r0,-109r-26,0r0,-22r51,0r0,131r26,0r0,22r-77,0","w":104},"j":{"d":"66,-153v-7,83,28,220,-52,225v-33,3,-45,-34,-17,-40v14,-1,14,12,18,20v20,-1,26,-28,26,-53r0,-130r-29,0r0,-22r54,0xm49,-193v-10,0,-19,-9,-19,-19v0,-11,9,-21,20,-21v10,0,19,10,19,21v0,10,-9,19,-20,19","w":93},"k":{"d":"11,0r0,-22r25,0r0,-220r-25,0r0,-22r49,0r0,187r65,-55r-30,0r0,-21r86,0r0,22r-27,0r-48,41r47,68r28,0r0,22r-42,0r-51,-76r-28,23r0,32r25,0r0,21r-74,0","w":188},"l":{"d":"12,0r0,-22r26,0r0,-220r-26,0r0,-22r51,0r0,242r26,0r0,22r-77,0","w":100},"m":{"d":"140,-22v-5,-41,17,-111,-27,-111v-19,0,-35,12,-49,27r0,84r24,0r0,22r-73,0r0,-22r24,0r0,-109r-24,0r0,-22r48,0r0,28v18,-33,89,-47,99,-1v28,-40,108,-44,103,22r0,82r25,0r0,22r-73,0r0,-22r23,0v-5,-41,18,-112,-27,-111v-18,0,-33,11,-48,26r0,85r24,0r0,22r-73,0r0,-22r24,0","w":299},"n":{"d":"144,-22v-5,-42,18,-112,-30,-111v-19,0,-36,12,-50,27r0,84r24,0r0,22r-73,0r0,-22r24,0r0,-109r-24,0r0,-22r48,0r0,28v26,-41,110,-45,106,21r0,82r24,0r0,22r-73,0r0,-22r24,0","w":202},"o":{"d":"95,3v-48,0,-79,-36,-79,-80v0,-43,31,-79,79,-79v47,0,79,36,79,79v0,44,-32,80,-79,80xm95,-19v31,0,53,-23,53,-58v0,-34,-22,-58,-53,-58v-32,0,-53,24,-53,58v0,35,21,58,53,58","w":189},"p":{"d":"11,71r0,-22r25,0r0,-180r-25,0r0,-22r49,0r0,22v38,-50,124,-19,124,54v0,63,-76,105,-124,62r0,64r30,0r0,22r-79,0xm60,-36v34,32,101,16,98,-41v2,-61,-68,-72,-98,-35r0,76"},"q":{"d":"111,71r0,-22r30,0r0,-69v-39,46,-125,17,-125,-57v0,-65,80,-104,127,-60r8,-16r15,0r0,202r25,0r0,22r-80,0xm42,-77v-3,61,69,74,99,36r0,-76v-32,-31,-103,-18,-99,40","w":191},"r":{"d":"110,-156v28,-2,30,37,6,38v-10,0,-16,-6,-19,-13v-11,4,-25,17,-33,33r0,76r29,0r0,22r-78,0r0,-22r24,0r0,-109r-24,0r0,-22r48,0r0,35v12,-22,30,-38,47,-38","w":136},"s":{"d":"79,-156v29,1,53,9,56,33v0,10,-6,17,-15,17v-12,0,-19,-12,-15,-25v-16,-11,-65,-3,-60,17v5,34,105,21,96,71v3,57,-118,63,-125,9v0,-9,7,-17,16,-17v12,0,20,13,14,25v13,13,71,13,71,-15v0,-14,-14,-19,-36,-25v-37,-9,-60,-18,-60,-46v0,-23,21,-44,58,-44","w":157},"t":{"d":"59,-40v-2,28,33,22,49,10r-3,24v-25,17,-76,10,-71,-30r0,-95r-28,0r0,-22r28,0r0,-37r25,-10r0,47r47,0r0,22r-47,0r0,91","w":119},"u":{"d":"59,-153v7,47,-21,131,29,133v19,0,36,-12,51,-27r0,-84r-26,0r0,-22r50,0r0,131r25,0r0,22r-49,0r0,-28v-25,40,-109,45,-105,-21r0,-82r-25,0r0,-22r50,0"},"v":{"d":"87,5r-64,-136r-20,0r0,-22r71,0r0,21r-25,0r46,101r45,-101r-26,0r0,-21r71,0r0,22r-20,0r-64,136r-14,0","w":187},"w":{"d":"67,6r-42,-137r-22,0r0,-22r70,0r0,21r-24,0r28,97r43,-101r13,0r42,101r28,-97r-26,0r0,-21r71,0r0,22r-23,0r-42,137r-13,0r-45,-104r-44,104r-14,0","w":250},"x":{"d":"7,0r0,-22r21,0r49,-56r-46,-53r-21,0r0,-22r67,0r0,20r-20,0r34,43r34,-43r-21,0r0,-20r67,0r0,22r-21,0r-46,53r49,56r21,0r0,22r-69,0r0,-20r22,0r-37,-47r-37,47r22,0r0,20r-68,0","w":181},"y":{"d":"89,24v-10,21,-29,49,-52,48v-27,4,-38,-34,-11,-36v8,0,14,6,16,13v18,-7,29,-38,39,-58r-58,-122r-21,0r0,-22r72,0r0,21r-24,0r43,99r44,-99r-25,0r0,-21r70,0r0,22r-21,0","w":184},"z":{"d":"13,0r0,-11r99,-122r-71,0r0,30r-22,0r0,-50r129,0r0,11r-99,121r78,0r0,-29r22,0r0,50r-136,0","w":162},"0":{"d":"100,3v-49,0,-83,-41,-83,-94v0,-55,34,-95,83,-95v48,0,83,41,83,95v0,54,-35,94,-83,94xm100,-19v34,0,57,-30,57,-72v0,-43,-23,-73,-57,-73v-34,0,-57,30,-57,73v0,42,23,72,57,72"},"1":{"d":"23,0r0,-22r43,0r0,-134r-39,9r-5,-21v24,-5,41,-15,69,-16r0,162r43,0r0,22r-111,0","w":147},"2":{"d":"152,-133v0,55,-88,69,-107,112r91,0r0,-31r22,0r0,52r-141,0r-4,-13v14,-33,43,-54,72,-73v24,-15,42,-27,42,-47v4,-35,-66,-39,-81,-15v15,7,10,33,-8,32v-11,0,-19,-9,-19,-22v4,-31,32,-46,67,-48v44,0,66,26,66,53","w":178},"3":{"d":"161,-19v7,74,-140,89,-148,16v-3,-24,36,-28,36,-5v0,6,-3,12,-9,15v22,29,102,16,96,-26v-1,-32,-35,-48,-75,-45r0,-22v36,3,71,-13,72,-43v6,-38,-72,-44,-86,-19v17,6,9,32,-7,31v-10,0,-19,-9,-19,-22v3,-32,30,-46,68,-47v41,0,69,26,69,57v0,26,-26,50,-53,53v31,5,56,27,56,57","w":177},"4":{"d":"114,43r0,-64r-103,0r-5,-11r116,-155r19,14r-97,131r70,0r0,-51r24,-10r0,61r41,0r0,21r-41,0r0,64r-24,0","w":185},"5":{"d":"159,-27v0,76,-128,100,-144,32v-3,-23,36,-29,36,-4v0,4,-2,10,-6,13v32,22,94,1,89,-41v4,-49,-64,-60,-101,-38r-11,-7r14,-111r111,0r0,24r-92,0r-7,67v54,-17,111,9,111,65","w":174},"6":{"d":"109,-230v25,1,54,11,56,37v2,26,-37,27,-36,4v0,-5,1,-9,4,-12v-50,-23,-86,16,-90,92v28,-54,140,-29,132,38v0,41,-32,74,-77,74v-54,0,-81,-42,-79,-99v0,-96,46,-134,90,-134xm46,-68v0,28,21,50,52,49v32,0,52,-22,52,-52v0,-27,-20,-47,-50,-47v-32,0,-54,24,-54,50","w":191},"7":{"d":"56,44r-22,-11r92,-195r-92,0r0,36r-23,0r0,-57r142,0r5,11","w":169},"8":{"d":"90,3v-79,5,-99,-99,-32,-120v-63,-25,-37,-117,32,-113v71,-4,98,89,32,113v25,9,44,30,44,56v0,36,-31,64,-76,64xm90,-127v25,0,45,-18,45,-40v0,-23,-19,-41,-45,-41v-25,0,-44,18,-44,41v0,22,20,40,44,40xm90,-19v28,0,49,-19,49,-43v0,-25,-21,-44,-49,-44v-27,0,-48,19,-48,44v0,24,21,43,48,43","w":181},"9":{"d":"93,-186v54,0,81,41,79,100v0,95,-48,131,-92,131v-25,0,-55,-12,-56,-38v-2,-26,37,-27,37,-4v0,5,-2,9,-5,11v49,25,89,-14,92,-87v-28,53,-140,28,-132,-38v0,-42,32,-75,77,-75xm145,-115v0,-28,-21,-50,-52,-49v-31,0,-51,23,-51,53v0,26,19,46,49,46v32,0,54,-23,54,-50","w":191},".":{"d":"37,3v-13,0,-22,-10,-22,-23v0,-12,9,-22,22,-22v13,0,22,10,22,22v0,13,-9,23,-22,23","w":74},",":{"d":"7,54r-7,-9v24,-18,32,-35,33,-45v-10,-1,-19,-10,-19,-21v0,-12,10,-21,22,-21v13,0,23,10,23,28v0,20,-13,47,-52,68","w":74},":":{"d":"41,-93v-13,0,-22,-10,-22,-22v0,-12,9,-23,22,-23v12,0,22,11,22,23v0,12,-10,22,-22,22xm41,3v-13,0,-22,-10,-22,-22v0,-13,9,-23,22,-23v12,0,22,10,22,23v0,12,-10,22,-22,22","w":81},";":{"d":"41,-93v-13,0,-22,-10,-22,-22v0,-12,9,-23,22,-23v12,0,22,11,22,23v0,12,-10,22,-22,22xm11,54r-7,-10v24,-18,32,-34,33,-44v-10,-1,-19,-10,-19,-21v0,-11,10,-20,22,-20v12,0,23,9,23,27v0,19,-13,47,-52,68","w":81},"&":{"d":"214,-96r-21,0v-7,19,-13,36,-22,50v14,13,35,31,38,34r-16,17v-3,-3,-23,-21,-37,-34v-34,50,-151,38,-146,-26v0,-29,19,-49,50,-66v-44,-45,-29,-106,33,-106v29,0,52,19,52,47v0,23,-14,40,-50,62v19,20,29,27,59,57v8,-11,13,-23,18,-35r-21,0r0,-21r63,0r0,21xm82,-19v24,0,43,-10,58,-25r-67,-63v-25,16,-36,30,-36,51v0,18,14,37,45,37xm93,-206v-37,0,-43,43,-12,74v31,-19,39,-31,39,-48v0,-15,-12,-26,-27,-26","w":222},"!":{"d":"39,-66r-9,-171r32,0r-9,171r-14,0xm46,3v-12,0,-21,-9,-21,-21v0,-12,9,-21,21,-21v11,0,21,9,21,21v0,12,-10,21,-21,21","w":91},"?":{"d":"8,-190v3,-33,32,-50,68,-51v46,0,74,28,74,64v0,32,-24,60,-66,69r-4,42r-15,0r-6,-57v43,-9,64,-29,64,-54v6,-42,-66,-53,-87,-26v-2,7,12,9,10,19v0,9,-7,17,-17,17v-11,0,-21,-9,-21,-23xm73,3v-11,0,-20,-9,-20,-21v0,-12,9,-21,20,-21v12,0,21,9,21,21v0,12,-9,21,-21,21","w":160},"-":{"d":"13,-87r0,-26r84,0r0,26r-84,0","w":109},"_":{"d":"-2,53r0,-24r196,0r0,24r-196,0","w":191},"\/":{"d":"14,75r-22,-9r148,-333r22,10","w":167},"\\":{"d":"153,75r-147,-332r22,-10r147,333","w":167},"|":{"d":"37,72r0,-336r23,0r0,336r-23,0","w":97},"(":{"d":"126,81v-57,-32,-101,-98,-101,-175v0,-77,44,-142,101,-175r13,19v-52,32,-88,88,-88,156v0,68,36,125,88,157","w":131},")":{"d":"5,81r-13,-18v52,-32,88,-89,88,-157v0,-68,-36,-124,-88,-156r13,-19v57,33,101,98,101,175v0,77,-44,143,-101,175","w":131},"[":{"d":"36,72r0,-336r83,0r0,24r-57,0r0,289r57,0r0,23r-83,0","w":127},"]":{"d":"8,72r0,-23r58,0r0,-289r-58,0r0,-24r83,0r0,336r-83,0","w":127},"{":{"d":"95,-55v2,27,-46,53,-46,77v0,17,14,34,57,36r0,20v-55,-1,-82,-24,-82,-56v0,-30,43,-49,45,-77v2,-20,-23,-31,-50,-29r0,-22v27,2,50,-9,50,-29v-4,-27,-45,-47,-45,-77v0,-32,27,-55,82,-56r0,20v-43,2,-57,19,-57,36v0,24,48,51,46,77v0,15,-11,33,-42,40v31,6,42,24,42,40","w":124},"}":{"d":"56,-55v3,27,45,47,45,77v0,32,-28,55,-82,56r0,-20v43,-2,57,-19,57,-36v0,-24,-48,-51,-46,-77v0,-16,11,-34,42,-40v-31,-7,-42,-25,-42,-40v-2,-27,46,-53,46,-77v0,-17,-14,-34,-57,-36r0,-20v54,1,82,24,82,56v0,30,-42,49,-45,77v0,20,23,31,50,29r0,22v-27,-2,-50,9,-50,29","w":124},"@":{"d":"186,47v-76,43,-176,-4,-170,-93v0,-97,71,-173,154,-173v64,0,105,42,105,103v0,57,-31,103,-70,103v-23,0,-34,-14,-33,-30v-21,43,-93,40,-92,-20v-6,-63,82,-110,105,-48r8,-28r23,0r-21,80v-5,19,0,29,13,29v28,0,50,-41,50,-86v0,-50,-33,-88,-88,-88v-75,0,-137,70,-137,158v-5,75,80,118,146,80xm133,-34v42,5,70,-83,16,-85v-24,0,-43,26,-43,54v0,18,9,31,27,31","w":289},"*":{"d":"132,-210v6,23,-33,18,-53,21v9,12,46,27,30,48v-23,12,-28,-28,-36,-43v-8,15,-14,55,-36,43v-17,-20,22,-36,30,-48v-20,-3,-59,2,-53,-21v13,-21,40,8,55,13v-3,-18,-21,-52,4,-56v24,3,6,38,4,56v15,-5,40,-34,55,-13","w":145},"^":{"d":"36,-129r-11,-13r55,-53r56,53r-12,13r-44,-32","w":160},"~":{"d":"52,-118v29,-1,55,50,67,3r19,4v-2,25,-18,42,-35,42v-28,1,-55,-50,-66,-3r-20,-4v2,-25,18,-42,35,-42","w":155},"$":{"d":"104,-207r-2,25v26,3,48,16,48,34v0,10,-7,17,-16,17v-12,0,-22,-14,-14,-26v-4,-2,-12,-4,-21,-5r-4,58v28,9,57,21,57,53v0,35,-31,50,-65,51r-3,38r-20,-2r3,-37v-27,-4,-53,-16,-53,-38v0,-9,7,-17,16,-17v14,0,22,15,14,26v4,4,14,8,26,9r5,-64v-27,-8,-53,-19,-53,-49v0,-28,26,-47,60,-49r3,-25xm127,-50v0,-16,-14,-23,-34,-30r-6,60v22,-1,40,-10,40,-30xm46,-136v0,14,13,21,32,27r4,-54v-20,1,-36,10,-36,27","w":167},"#":{"d":"18,-117r0,-22r37,0r7,-44r22,0r-7,44r46,0r7,-44r23,0r-7,44r34,0r0,22r-37,0r-8,50r33,0r0,21r-36,0r-7,46r-23,0r7,-46r-46,0r-7,46r-23,0r7,-46r-33,0r0,-21r37,0r7,-50r-33,0xm73,-118r-7,51r47,0r8,-51r-48,0","w":186},"%":{"d":"62,-99v-25,0,-44,-19,-44,-43v0,-25,19,-44,44,-44v24,0,43,19,43,44v0,24,-19,43,-43,43xm171,-85v24,0,44,20,44,44v0,24,-20,44,-44,44v-24,0,-43,-20,-43,-44v0,-24,19,-44,43,-44xm197,-175v-22,23,-130,158,-150,183r-13,-11r150,-183xm62,-116v13,0,23,-12,23,-26v0,-15,-10,-26,-23,-26v-14,0,-24,11,-24,26v0,14,10,26,24,26xm171,-67v-14,0,-23,12,-23,26v0,15,9,26,23,26v14,0,24,-11,24,-26v0,-14,-10,-26,-24,-26","w":232},"\"":{"d":"86,-151r-12,-65v-3,-15,5,-25,17,-25v36,0,6,61,5,90r-10,0xm25,-151r-12,-65v-3,-15,5,-25,17,-25v36,0,6,62,5,90r-10,0","w":121},"'":{"d":"25,-151r-12,-65v-3,-15,5,-25,17,-25v36,0,6,62,5,90r-10,0","w":60},"+":{"d":"63,-37r0,-49r-48,0r0,-22r48,0r0,-49r23,0r0,49r49,0r0,22r-49,0r0,49r-23,0","w":149},"=":{"d":"15,-113r0,-22r120,0r0,22r-120,0xm15,-55r0,-22r120,0r0,22r-120,0","w":149},"<":{"d":"105,-28r-90,-62r0,-12r90,-61r12,18r-73,50r73,49","w":140},">":{"d":"35,-28r-12,-18r73,-49r-73,-50r12,-18r91,61r0,12","w":140}," ":{"w":81},"`":{"d":"96,-181v-21,-15,-56,-23,-67,-47v1,-18,21,-19,30,-7r43,45","w":150}}});Cufon.registerFont({"w":131,"face":{"font-family":"Archer Semibold","font-weight":375,"font-stretch":"normal","units-per-em":"360","panose-1":"0 0 0 0 0 0 0 0 0 0","ascent":"288","descent":"-72","x-height":"3","bbox":"-17.6321 -269 354 82","underline-thickness":"18","underline-position":"-36","stemh":"26","stemv":"31","unicode-range":"U+0020-U+007E"},"glyphs":{"A":{"d":"6,0r0,-29r21,0r66,-179r-26,0r0,-29r119,0r0,29r-27,0r66,179r22,0r0,29r-84,0r0,-29r27,0r-18,-50r-93,0r-18,50r29,0r0,29r-84,0xm88,-106r75,0r-37,-104","w":252},"B":{"d":"15,0r0,-29r29,0r0,-179r-29,0r0,-29r95,0v95,-6,107,93,41,115v81,25,56,127,-37,122r-99,0xm77,-28v44,3,92,-3,90,-40v3,-37,-46,-42,-90,-39r0,79xm77,-134v41,3,83,-4,83,-38v0,-34,-42,-39,-83,-36r0,74","w":216},"C":{"d":"233,-34v-69,78,-223,26,-214,-84v0,-72,56,-123,122,-123v52,0,90,29,90,58v0,15,-10,25,-23,25v-21,2,-30,-23,-17,-35v-7,-8,-24,-18,-51,-18v-51,0,-88,41,-88,93v0,49,36,92,90,92v28,0,51,-11,71,-31","w":252},"D":{"d":"15,0r0,-29r29,0r0,-179r-29,0r0,-29r89,0v85,0,137,45,137,116v0,72,-49,121,-139,121r-87,0xm77,-29v80,7,132,-26,130,-92v1,-64,-54,-93,-130,-87r0,179","w":259},"E":{"d":"15,0r0,-29r29,0r0,-179r-29,0r0,-29r174,0r0,62r-31,0r0,-33r-81,0r0,73r75,0r0,28r-75,0r0,78r81,0r0,-33r32,0r0,62r-175,0","w":209},"F":{"d":"15,0r0,-29r29,0r0,-179r-29,0r0,-29r172,0r0,62r-31,0r0,-33r-79,0r0,78r73,0r0,28r-73,0r0,73r32,0r0,29r-94,0","w":203},"G":{"d":"203,-19v-72,54,-187,8,-184,-98v0,-74,56,-124,123,-124v54,0,90,29,90,56v0,15,-10,25,-22,25v-18,2,-30,-22,-18,-35v-52,-40,-149,2,-140,78v-2,83,90,116,150,73r0,-47r-63,0r0,-27r95,0r0,118r-31,0r0,-19","w":263},"H":{"d":"15,0r0,-29r29,0r0,-179r-29,0r0,-29r92,0r0,29r-30,0r0,73r122,0r0,-73r-30,0r0,-29r92,0r0,29r-29,0r0,179r29,0r0,29r-92,0r0,-29r30,0r0,-78r-122,0r0,78r30,0r0,29r-92,0","w":276},"I":{"d":"15,0r0,-29r31,0r0,-179r-31,0r0,-29r94,0r0,29r-30,0r0,179r30,0r0,29r-94,0","w":125},"J":{"d":"153,-208v-3,91,23,216,-73,212v-38,0,-70,-25,-70,-58v-3,-33,43,-41,45,-9v0,8,-4,15,-10,18v2,9,14,19,35,19v69,-2,32,-118,41,-182r-36,0r0,-29r96,0r0,29r-28,0","w":192},"K":{"d":"15,0r0,-29r29,0r0,-179r-29,0r0,-29r92,0r0,29r-30,0r0,93r93,-93r-30,0r0,-29r97,0r0,29r-26,0r-72,72r69,107r30,0r0,29r-51,0r-73,-114r-37,37r0,48r30,0r0,29r-92,0","w":243},"L":{"d":"15,0r0,-29r29,0r0,-179r-29,0r0,-29r94,0r0,29r-32,0r0,179r75,0r0,-35r31,0r0,64r-168,0","w":198},"M":{"d":"14,0r0,-29r29,0r8,-179r-30,0r0,-29r60,0r76,149r76,-149r60,0r0,29r-31,0r8,179r30,0r0,29r-92,0r0,-29r30,0r-6,-147r-73,140r-6,0r-72,-140r-6,147r29,0r0,29r-90,0","w":314},"N":{"d":"214,1r-138,-180r0,150r30,0r0,29r-91,0r0,-29r29,0r0,-179r-29,0r0,-29r57,0r129,167r0,-138r-31,0r0,-29r90,0r0,29r-28,0r0,209r-18,0","w":271},"O":{"d":"138,4v-70,0,-119,-53,-119,-122v0,-70,50,-123,121,-123v70,0,120,53,120,123v0,69,-51,122,-122,122xm139,-26v51,0,87,-39,87,-92v0,-53,-36,-93,-87,-93v-50,0,-87,39,-87,93v0,52,37,92,87,92","w":278},"P":{"d":"15,0r0,-29r29,0r0,-179r-29,0r0,-29r93,0v50,0,89,29,89,76v1,61,-54,86,-120,78r0,54r31,0r0,29r-93,0xm77,-112v41,6,92,-6,86,-49v0,-40,-40,-51,-86,-47r0,96","w":209},"Q":{"d":"176,-4v29,12,53,38,85,12r16,26v-59,47,-103,-20,-155,-31v-59,-9,-103,-54,-103,-121v0,-70,50,-123,121,-123v70,0,120,53,120,123v0,59,-36,102,-84,114xm52,-118v1,50,35,92,87,92v51,0,87,-39,87,-92v0,-53,-36,-93,-87,-93v-50,0,-87,39,-87,93","w":278},"R":{"d":"15,0r0,-29r29,0r0,-179r-29,0r0,-29v82,-2,183,-8,180,70v0,32,-20,55,-48,65r44,73r28,0r0,29r-50,0r-54,-94v-11,1,-28,1,-38,0r0,65r30,0r0,29r-92,0xm77,-122v40,6,88,-7,85,-44v1,-37,-41,-45,-85,-42r0,86","w":222},"S":{"d":"99,4v-47,0,-81,-26,-81,-52v-3,-31,43,-30,43,-5v0,7,-2,12,-5,16v22,22,91,16,91,-25v0,-22,-22,-33,-47,-42v-43,-16,-73,-30,-73,-72v0,-37,29,-65,75,-65v41,0,74,22,74,48v2,32,-44,29,-43,3v0,-6,2,-9,4,-13v-22,-18,-78,-11,-78,24v0,23,22,32,49,43v40,15,71,30,71,72v0,43,-34,68,-80,68","w":198},"T":{"d":"65,0r0,-29r31,0r0,-180r-53,0r0,38r-31,0r0,-66r201,0r0,66r-31,0r0,-38r-53,0r0,180r31,0r0,29r-95,0","w":225},"U":{"d":"126,4v-53,0,-87,-30,-87,-88r0,-124r-28,0r0,-29r91,0r0,29r-30,0v5,71,-23,186,54,182v80,5,51,-110,56,-182r-30,0r0,-29r90,0r0,29r-29,0r0,123v0,59,-34,89,-87,89","w":252},"V":{"d":"115,3r-87,-211r-22,0r0,-29r85,0r0,29r-25,0r59,154r60,-154r-27,0r0,-29r86,0r0,29r-23,0r-87,211r-19,0","w":249},"W":{"d":"100,3r-66,-211r-26,0r0,-29r92,0r0,29r-31,0r45,149r60,-152r17,0r59,152r43,-149r-31,0r0,-29r92,0r0,29r-27,0r-65,211r-18,0r-62,-156r-63,156r-19,0","w":361},"X":{"d":"12,0r0,-29r25,0r73,-93r-67,-86r-26,0r0,-29r89,0r0,29r-26,0r50,68r50,-68r-28,0r0,-29r90,0r0,29r-26,0r-68,86r72,93r26,0r0,29r-89,0r0,-28r26,0r-54,-76r-56,76r27,0r0,28r-88,0","w":257},"Y":{"d":"67,0r0,-29r32,0r0,-64r-68,-115r-25,0r0,-29r84,0r0,29r-23,0r49,87r50,-87r-24,0r0,-29r84,0r0,29r-25,0r-69,115r0,64r32,0r0,29r-97,0","w":231},"Z":{"d":"16,0r0,-17r140,-193r-104,0r0,39r-29,0r0,-66r180,0r0,17r-141,193r114,0r0,-39r29,0r0,66r-189,0","w":221},"a":{"d":"84,-158v40,0,63,19,64,55r0,77r24,0r0,26r-53,0r0,-19v-26,31,-105,31,-104,-22v-5,-44,64,-55,103,-41v9,-42,-25,-60,-59,-47v4,14,-3,27,-17,27v-10,0,-18,-8,-18,-19v0,-18,20,-37,60,-37xm46,-44v2,33,56,26,72,5r0,-25v-23,-8,-75,-9,-72,20","w":179},"b":{"d":"182,-78v5,66,-78,106,-126,63r-8,15r-20,0r0,-237r-24,0r0,-27r55,0r0,128v40,-46,128,-13,123,58xm59,-39v32,27,94,17,91,-39v3,-56,-63,-67,-91,-33r0,72","w":196},"c":{"d":"151,-12v-56,36,-141,3,-137,-66v0,-42,34,-80,78,-80v38,0,66,25,66,49v3,27,-41,31,-41,4v0,-6,3,-11,6,-13v-23,-28,-80,-13,-78,41v0,55,68,67,109,37","w":174},"d":{"d":"136,-20v-39,48,-122,14,-122,-57v0,-64,76,-106,122,-64r0,-96r-27,0r0,-27r58,0r0,238r24,0r0,26r-55,0r0,-20xm46,-77v-2,55,63,68,90,33r0,-72v-31,-29,-93,-15,-90,39","w":199},"e":{"d":"162,-68r-116,0v6,52,73,53,111,28r-2,28v-56,36,-147,5,-141,-65v0,-44,30,-81,77,-81v53,1,80,41,71,90xm133,-91v-1,-52,-83,-56,-87,0r87,0","w":176},"f":{"d":"40,-155v-3,-58,2,-111,56,-111v32,0,42,39,13,42v-11,0,-17,-7,-20,-15v-26,7,-18,51,-19,84r41,0r0,26r-41,0r0,103r30,0r0,26r-85,0r0,-26r25,0r0,-103r-27,0r0,-26r27,0","w":118},"g":{"d":"64,41v29,12,77,3,71,-38r0,-27v-39,46,-121,14,-121,-55v0,-64,78,-103,123,-61r0,-15r53,0r0,26r-24,0r0,132v1,46,-29,70,-73,69v-34,-2,-61,-9,-64,-37v0,-11,8,-20,19,-20v14,0,22,14,16,26xm135,-116v-29,-29,-93,-14,-89,37v-3,53,62,66,89,31r0,-68","w":200},"h":{"d":"139,-26v-4,-39,15,-104,-27,-104v-17,0,-34,10,-46,24r0,80r23,0r0,26r-79,0r0,-26r25,0r0,-211r-25,0r0,-27r56,0r0,135v26,-41,107,-39,104,23r0,80r24,0r0,26r-78,0r0,-26r23,0","w":201},"i":{"d":"51,-188v-12,0,-23,-10,-23,-23v0,-12,11,-22,23,-22v12,0,22,10,22,22v0,13,-10,23,-22,23xm14,0r0,-26r25,0r0,-103r-25,0r0,-26r56,0r0,129r25,0r0,26r-81,0","w":106},"j":{"d":"74,-155v-6,86,28,224,-57,227v-37,3,-47,-39,-17,-45v12,0,19,9,18,21v18,-2,26,-26,25,-49r0,-128r-30,0r0,-26r61,0xm53,-188v-12,0,-22,-10,-22,-23v0,-12,10,-22,22,-22v12,0,23,10,23,22v0,13,-11,23,-23,23","w":98},"k":{"d":"10,0r0,-26r25,0r0,-211r-25,0r0,-27r56,0r0,183r56,-49r-27,0r0,-25r90,0r0,26r-28,0r-44,38r45,64r27,0r0,27r-46,0r-48,-74r-25,21r0,27r22,0r0,26r-78,0","w":192},"l":{"d":"11,0r0,-26r25,0r0,-211r-25,0r0,-27r56,0r0,238r25,0r0,26r-81,0","w":102},"m":{"d":"137,-26v-5,-37,16,-103,-24,-104v-17,0,-32,10,-45,23r0,81r23,0r0,26r-78,0r0,-26r24,0r0,-103r-24,0r0,-26r54,0r0,27v18,-31,85,-45,97,-2v29,-39,108,-40,104,24r0,80r24,0r0,26r-78,0r0,-26r23,0v-5,-38,17,-103,-25,-104v-15,0,-30,10,-44,23r0,81r23,0r0,26r-77,0r0,-26r23,0","w":299},"n":{"d":"141,-26v-4,-39,16,-105,-27,-104v-16,0,-33,10,-46,24r0,80r23,0r0,26r-78,0r0,-26r24,0r0,-103r-24,0r0,-26r54,0r0,27v26,-40,108,-43,105,22r0,80r24,0r0,26r-78,0r0,-26r23,0","w":203},"o":{"d":"95,3v-49,0,-81,-37,-81,-80v0,-44,32,-81,81,-81v50,0,81,37,81,81v0,43,-32,80,-81,80xm95,-23v29,0,49,-23,49,-54v0,-32,-20,-55,-49,-55v-29,0,-49,23,-49,55v0,31,20,54,49,54","w":190},"p":{"d":"10,71r0,-26r25,0r0,-174r-25,0r0,-26r54,0r0,20v40,-47,122,-16,122,57v0,63,-73,106,-120,64r0,59r27,0r0,26r-83,0xm66,-39v30,29,92,15,88,-39v3,-56,-61,-68,-88,-33r0,72","w":200},"q":{"d":"108,71r0,-27r30,0r0,-63v-42,46,-128,14,-124,-58v-4,-66,79,-105,126,-63r8,-16r20,0r0,200r25,0r0,27r-85,0xm46,-77v-2,55,63,68,92,33r0,-72v-33,-28,-94,-17,-92,39","w":191},"r":{"d":"115,-158v32,-3,34,43,6,44v-10,0,-18,-7,-21,-14v-11,4,-24,17,-32,32r0,70r28,0r0,26r-83,0r0,-26r24,0r0,-103r-24,0r0,-26r54,0r0,35v12,-21,30,-38,48,-38","w":145},"s":{"d":"81,-158v29,1,56,9,59,35v0,11,-7,19,-17,19v-14,0,-23,-13,-17,-26v-17,-8,-56,-4,-56,16v0,11,12,16,37,22v34,9,58,18,58,47v4,61,-123,64,-130,10v0,-10,8,-19,18,-19v13,0,21,12,17,26v14,11,68,11,66,-14v0,-11,-12,-16,-35,-22v-39,-10,-60,-20,-60,-48v0,-23,21,-46,60,-46","w":160},"t":{"d":"65,-45v-1,29,33,20,49,11r-3,28v-29,18,-81,10,-77,-33r0,-90r-29,0r0,-26r29,0r0,-36r31,-12r0,48r47,0r0,26r-47,0r0,84","w":125},"u":{"d":"63,-56v-1,46,54,31,73,7r0,-80r-25,0r0,-26r56,0r0,129r24,0r0,26r-54,0r0,-27v-26,40,-109,44,-105,-22r0,-80r-24,0r0,-26r55,0r0,99","w":200},"v":{"d":"85,4r-63,-133r-20,0r0,-26r75,0r0,25r-23,0r42,94r42,-94r-25,0r0,-25r75,0r0,26r-19,0r-64,133r-20,0","w":190},"w":{"d":"66,6r-41,-135r-23,0r0,-26r75,0r0,26r-23,0r25,88r40,-97r19,0r41,97r25,-88r-26,0r0,-26r75,0r0,26r-23,0r-41,135r-19,0r-43,-101r-42,101r-19,0","w":254},"x":{"d":"6,0r0,-27r21,0r49,-51r-47,-51r-20,0r0,-26r72,0r0,25r-19,0r31,37r32,-37r-20,0r0,-25r71,0r0,26r-20,0r-46,49r49,53r21,0r0,27r-73,0r0,-25r20,0r-35,-41r-34,41r20,0r0,25r-72,0","w":186},"y":{"d":"92,27v-10,22,-29,45,-53,45v-30,3,-40,-37,-12,-40v9,0,14,7,17,13v17,-8,26,-36,36,-53r-58,-121r-20,0r0,-26r76,0r0,25r-24,0v0,0,41,93,40,93r41,-93r-24,0r0,-25r74,0r0,26r-20,0","w":187},"z":{"d":"12,0r0,-16r97,-114r-64,0r0,30r-27,0r0,-55r132,0r0,16r-96,114r71,0r0,-30r27,0r0,55r-140,0","w":163},"0":{"d":"102,3v-50,0,-86,-41,-86,-96v0,-55,36,-95,86,-95v50,0,86,41,86,95v0,55,-36,96,-86,96xm102,-24v32,0,54,-29,54,-69v0,-39,-22,-69,-54,-69v-32,0,-54,29,-54,69v0,40,22,69,54,69","w":203},"1":{"d":"22,0r0,-26r43,0r0,-127r-38,9r-7,-26v26,-5,45,-16,76,-16r0,160r43,0r0,26r-117,0","w":151},"2":{"d":"159,-135v2,53,-89,71,-108,109r88,0r0,-30r26,0r0,56r-148,0r-5,-15v14,-34,43,-56,74,-75v23,-15,41,-26,41,-44v4,-30,-61,-36,-75,-15v14,10,5,35,-13,34v-12,0,-21,-10,-21,-25v4,-31,34,-46,71,-48v45,0,70,26,70,53","w":183},"3":{"d":"86,45v-40,-2,-72,-15,-76,-50v-3,-27,40,-32,41,-5v0,6,-2,12,-7,15v23,25,94,16,90,-26v0,-30,-34,-46,-74,-42r0,-26v36,2,70,-10,71,-40v5,-35,-62,-41,-79,-21v15,9,7,36,-12,34v-11,0,-21,-10,-21,-24v4,-32,29,-46,71,-48v43,0,73,25,73,58v0,25,-25,49,-52,53v28,6,54,26,54,58v0,39,-34,64,-79,64","w":178},"4":{"d":"117,43r0,-62r-103,0r-7,-14r118,-158r23,18r-96,128r65,0r0,-47r30,-12r0,59r38,0r0,26r-38,0r0,62r-30,0","w":192},"5":{"d":"85,45v-39,-1,-67,-11,-71,-42v0,-13,9,-24,22,-24v17,-1,27,22,14,33v34,17,87,-2,83,-41v5,-45,-61,-55,-97,-35r-14,-8r14,-113r116,0r0,29r-93,0r-7,60v55,-17,114,10,112,67v0,43,-34,74,-79,74","w":179},"6":{"d":"112,-232v28,1,57,12,59,40v2,29,-43,29,-42,3v0,-4,1,-8,3,-10v-46,-20,-80,15,-84,86v29,-55,141,-25,133,41v0,42,-33,75,-81,75v-54,-1,-84,-42,-82,-102v0,-91,45,-133,94,-133xm51,-69v0,26,22,46,49,46v30,0,50,-22,50,-49v0,-24,-19,-44,-48,-44v-30,0,-51,21,-51,47","w":196},"7":{"d":"62,44r-26,-13r93,-191r-89,0r0,38r-28,0r0,-63r147,0r8,15","w":178},"8":{"d":"93,3v-82,5,-106,-97,-36,-120v-64,-26,-37,-118,36,-114v73,-4,102,88,37,114v24,9,42,30,42,55v0,36,-31,65,-79,65xm93,-129v23,0,42,-16,42,-37v0,-23,-17,-39,-42,-39v-24,0,-41,16,-41,39v0,21,18,37,41,37xm93,-24v28,0,47,-17,47,-40v0,-23,-19,-41,-47,-41v-27,0,-46,18,-46,41v0,23,19,40,46,40","w":186},"9":{"d":"96,-188v57,1,83,42,83,102v0,91,-47,131,-95,131v-30,-1,-58,-12,-60,-40v0,-14,10,-23,21,-23v17,-1,26,18,18,31v47,18,81,-16,86,-84v-31,52,-142,24,-134,-42v0,-42,34,-75,81,-75xm145,-116v-1,-26,-21,-47,-49,-46v-30,0,-50,21,-50,49v0,24,19,44,48,44v30,0,51,-22,51,-47","w":196},".":{"d":"41,3v-14,0,-25,-12,-25,-26v0,-14,11,-25,25,-25v14,0,25,11,25,25v0,14,-11,26,-25,26","w":81},",":{"d":"10,58r-9,-12v24,-19,34,-36,34,-46v-28,-4,-24,-49,5,-48v14,0,27,11,27,31v0,21,-15,51,-57,75","w":81},":":{"d":"45,-93v-14,0,-25,-11,-25,-25v0,-13,11,-25,25,-25v13,0,24,12,24,25v0,14,-11,25,-24,25xm45,3v-14,0,-25,-11,-25,-25v0,-14,11,-25,25,-25v13,0,24,11,24,25v0,14,-11,25,-24,25","w":88},";":{"d":"45,-93v-14,0,-25,-11,-25,-25v0,-13,11,-25,25,-25v13,0,24,12,24,25v0,14,-11,25,-24,25xm14,57r-9,-12v24,-18,34,-35,34,-45v-27,-5,-25,-47,5,-47v14,0,26,10,26,30v0,21,-14,50,-56,74","w":88},"&":{"d":"222,-97r-21,0v-6,19,-13,35,-22,49v13,12,35,30,37,32r-19,20r-35,-31v-37,48,-157,35,-151,-30v0,-29,19,-50,48,-66v-45,-44,-27,-99,36,-107v34,0,58,20,58,50v0,26,-17,44,-50,62r56,53v7,-10,12,-21,16,-33r-20,0r0,-25r67,0r0,26xm43,-59v-2,41,77,46,98,14r-65,-61v-21,12,-33,27,-33,47xm95,-204v-35,8,-38,39,-9,70v25,-14,35,-27,35,-46v0,-13,-10,-24,-26,-24","w":231},"!":{"d":"39,-68r-11,-169r39,0r-11,169r-17,0xm48,3v-13,0,-24,-11,-24,-24v0,-12,11,-23,24,-23v12,0,23,11,23,23v0,13,-11,24,-23,24","w":95},"?":{"d":"8,-188v2,-35,34,-52,71,-53v47,0,77,28,77,65v0,33,-23,60,-67,70r-3,38r-20,0r-7,-58v44,-8,63,-27,63,-49v0,-38,-63,-50,-81,-23v16,7,9,36,-9,35v-13,0,-24,-10,-24,-25xm76,3v-13,0,-23,-11,-23,-24v0,-12,10,-23,23,-23v13,0,23,11,23,23v0,13,-10,24,-23,24","w":167},"-":{"d":"14,-85r0,-32r93,0r0,32r-93,0","w":120},"_":{"d":"-3,56r0,-29r203,0r0,29r-203,0","w":197},"\/":{"d":"23,76r-27,-12r148,-332r26,12","w":174},"\\":{"d":"152,76r-148,-332r27,-12r147,332","w":174},"|":{"d":"36,72r0,-336r27,0r0,336r-27,0","w":99},"(":{"d":"131,82v-50,-28,-106,-90,-106,-176v0,-86,56,-148,106,-175r16,22v-48,30,-89,79,-89,153v0,74,41,124,89,153","w":142},")":{"d":"11,82r-15,-23v47,-29,89,-79,89,-153v0,-74,-42,-123,-89,-153r15,-22v51,27,106,89,106,175v0,86,-55,148,-106,176","w":142},"[":{"d":"35,72r0,-336r87,0r0,28r-56,0r0,280r56,0r0,28r-87,0"},"]":{"d":"9,72r0,-28r57,0r0,-280r-57,0r0,-28r87,0r0,336r-87,0"},"{":{"d":"102,-57v3,27,-47,54,-47,78v0,15,14,30,58,33r0,24v-61,-1,-88,-25,-88,-57v-4,-34,41,-48,45,-77v1,-17,-22,-28,-50,-26r0,-26v28,2,51,-9,50,-26v-4,-30,-50,-43,-45,-77v0,-32,27,-56,88,-57r0,24v-44,2,-58,18,-58,33v-1,23,50,52,47,77v0,18,-14,34,-43,39v29,5,43,21,43,38"},"}":{"d":"61,-56v4,30,50,43,45,77v0,32,-27,56,-88,57r0,-24v44,-3,58,-18,58,-33v0,-24,-50,-51,-47,-78v0,-17,14,-33,43,-38v-29,-5,-43,-21,-43,-39v-3,-26,47,-54,47,-77v0,-15,-14,-31,-58,-33r0,-24v61,1,88,25,88,57v4,34,-41,48,-45,77v-1,17,22,28,50,26r0,26v-28,-2,-51,9,-50,26"},"@":{"d":"189,47v-78,45,-179,-3,-174,-97v0,-94,69,-171,153,-171v66,0,108,44,108,105v0,57,-30,104,-72,104v-24,0,-37,-14,-37,-30v-21,43,-90,40,-89,-20v-4,-62,75,-113,103,-52r8,-26r29,0r-21,81v-4,18,0,27,14,27v25,0,47,-39,47,-83v0,-50,-34,-89,-90,-89v-75,0,-135,69,-135,155v-4,79,82,121,148,82xm134,-39v35,0,64,-73,15,-75v-21,0,-38,23,-38,48v0,16,7,27,23,27","w":291},"*":{"d":"140,-207v8,24,-33,22,-56,23v11,13,50,29,32,52v-25,12,-30,-29,-39,-46v-9,17,-14,57,-38,46v-20,-23,21,-39,31,-52v-23,-1,-64,1,-56,-23v14,-23,44,8,59,14v-3,-19,-24,-55,4,-60v28,4,7,41,4,60v16,-6,44,-37,59,-14","w":154},"^":{"d":"37,-123r-15,-17r59,-57r59,57r-14,17r-45,-31","w":162},"~":{"d":"53,-123v30,-2,56,54,69,3r23,5v-3,29,-20,47,-38,47v-32,2,-56,-52,-70,-2r-22,-6v3,-29,20,-47,38,-47","w":159},"$":{"d":"111,-208r-2,24v26,4,50,15,50,37v0,12,-7,19,-18,19v-15,0,-23,-14,-17,-28v-3,-2,-11,-3,-19,-5r-4,54v29,8,61,20,61,53v0,36,-32,53,-70,54r-3,38r-23,-2r2,-37v-26,-4,-54,-17,-54,-40v0,-12,7,-21,18,-21v16,0,24,15,18,29v4,3,13,6,23,8r4,-58v-28,-8,-55,-19,-55,-51v0,-28,25,-49,64,-51r2,-25xm131,-51v0,-14,-12,-21,-33,-27r-5,54v21,-1,38,-9,38,-27xm52,-136v0,12,10,18,29,23r4,-48v-19,1,-33,10,-33,25","w":177},"#":{"d":"21,-117r0,-26r35,0r7,-42r28,0r-7,42r42,0r7,-42r29,0r-7,42r32,0r0,26r-36,0r-7,46r32,0r0,25r-36,0r-7,46r-28,0r7,-46r-43,0r-7,46r-28,0r7,-46r-32,0r0,-25r36,0r7,-46r-31,0xm80,-118r-8,47r44,0r7,-47r-43,0","w":195},"%":{"d":"63,-98v-25,0,-45,-20,-45,-46v0,-24,20,-45,45,-45v25,0,46,21,46,45v0,26,-21,46,-46,46xm63,-119v13,0,22,-11,22,-24v0,-14,-9,-24,-22,-24v-13,0,-22,10,-22,24v0,13,9,24,22,24xm47,7r-14,-13v12,-12,52,-57,81,-90r79,-93r14,12v-38,38,-117,132,-160,184xm178,-87v25,0,45,20,45,45v0,25,-20,45,-45,45v-25,0,-46,-20,-46,-45v0,-25,21,-45,46,-45xm178,-66v-13,0,-22,11,-22,24v0,14,9,24,22,24v12,0,22,-10,22,-24v0,-13,-10,-24,-22,-24","w":240},"\"":{"d":"95,-144r-14,-68v-4,-18,6,-29,20,-29v40,5,8,67,6,97r-12,0xm27,-144r-14,-68v-4,-18,6,-29,20,-29v40,5,8,67,6,97r-12,0","w":134},"'":{"d":"27,-144r-14,-68v-4,-18,6,-29,20,-29v40,5,8,67,6,97r-12,0","w":66},"+":{"d":"65,-37r0,-49r-48,0r0,-27r48,0r0,-48r27,0r0,48r48,0r0,27r-48,0r0,49r-27,0","w":156},"=":{"d":"17,-116r0,-26r123,0r0,26r-123,0xm17,-54r0,-26r123,0r0,26r-123,0","w":156},"<":{"d":"108,-27r-92,-63r0,-16r92,-64r14,20r-73,52r73,51","w":145},">":{"d":"38,-27r-15,-20r74,-51r-74,-52r15,-20r91,64r0,16","w":145}," ":{"w":80},"`":{"d":"86,-179v-21,-17,-57,-26,-66,-52v0,-20,22,-20,33,-7r42,49","w":122}}});Cufon.registerFont({"w":190,"face":{"font-family":"Archer Medium","font-weight":350,"font-style":"italic","font-stretch":"normal","units-per-em":"360","panose-1":"0 0 0 0 0 0 0 0 0 0","ascent":"288","descent":"-72","x-height":"3","bbox":"-40.0216 -270 366 80","underline-thickness":"18","underline-position":"-36","slope":"-12","stemh":"22","stemv":"19","unicode-range":"U+0020-U+007E"},"glyphs":{"A":{"d":"-10,0r6,-24r22,0r113,-189r-28,0r5,-24r109,0r-6,24r-27,0r26,189r25,0r-6,24r-77,0r5,-23r26,0r-7,-59r-96,0r-35,59r31,0r-5,23r-81,0xm93,-105r80,0r-14,-110","w":253},"B":{"d":"195,-70v-1,83,-108,70,-194,70r6,-24r28,0r44,-189r-32,0r6,-24v70,0,159,-10,159,56v0,32,-26,55,-60,60v24,7,43,26,43,51xm184,-179v1,-32,-40,-36,-78,-34r-19,80v49,3,99,-7,97,-46xm62,-23v52,2,105,0,106,-48v4,-30,-41,-45,-86,-40","w":216},"C":{"d":"220,-37v-62,71,-195,50,-194,-63v0,-76,61,-141,134,-141v55,0,85,34,85,58v3,30,-40,35,-41,8v0,-7,4,-13,11,-17v-4,-11,-23,-25,-56,-25v-61,0,-105,58,-105,114v-4,90,103,106,150,50","w":246},"D":{"d":"248,-138v-1,88,-71,139,-162,138r-85,0r6,-24r28,0r44,-189r-32,0r6,-24v103,-6,195,5,195,99xm220,-137v-3,-59,-44,-79,-114,-76r-44,189v94,8,156,-34,158,-113","w":254},"E":{"d":"1,0r6,-24r28,0r44,-189r-32,0r6,-24r172,0r-14,58r-26,0r8,-34r-87,0r-19,81r76,0r-5,23r-76,0r-20,86r88,0r8,-35r26,0r-14,58r-169,0","w":209},"F":{"d":"1,0r6,-24r28,0r44,-189r-32,0r6,-24r169,0r-14,58r-26,0r8,-34r-84,0r-20,85r74,0r-5,23r-74,0r-19,81r35,0r-6,24r-90,0","w":202},"G":{"d":"166,-241v44,2,80,17,85,53v2,28,-40,32,-40,6v-2,-8,14,-16,4,-21v-72,-44,-161,27,-161,109v0,79,93,91,140,50r12,-49r-66,0r5,-22r93,0r-28,115r-23,0r4,-23v-59,52,-169,25,-165,-70v0,-78,61,-148,140,-148","w":258},"H":{"d":"1,0r6,-24r28,0r44,-189r-32,0r6,-24r87,0r-5,24r-29,0r-19,80r129,0r18,-80r-33,0r6,-24r88,0r-6,24r-28,0r-44,189r32,0r-6,24r-87,0r5,-24r29,0r21,-85r-129,0r-20,85r33,0r-6,24r-88,0","w":276},"I":{"d":"1,0r6,-24r32,0r43,-189r-33,0r6,-24r91,0r-6,24r-31,0r-44,189r33,0r-6,24r-91,0","w":127},"J":{"d":"134,-22v-29,42,-125,32,-125,-30v0,-30,39,-44,43,-14v0,9,-6,17,-18,17v-3,34,68,38,82,10v27,-45,32,-118,48,-174r-40,0r6,-24r94,0r-5,24r-29,0v-19,63,-22,144,-56,191","w":201},"K":{"d":"231,-213r-95,80r52,109r33,0r-6,24r-46,0r-54,-117r-39,33r-14,60r33,0r-6,24r-88,0r6,-24r28,0r44,-189r-32,0r6,-24r86,0r-5,24r-28,0r-23,99r115,-99r-31,0r5,-24r90,0r-5,24r-26,0","w":236},"L":{"d":"1,0r6,-24r28,0r44,-189r-32,0r6,-24r90,0r-6,24r-31,0r-44,190r81,0r8,-37r26,0r-14,60r-162,0","w":197},"M":{"d":"0,0r6,-24r28,0r53,-189r-33,0r5,-24r57,0r39,162r113,-162r57,0r-6,24r-29,0r-35,189r32,0r-5,24r-88,0r6,-24r28,0r33,-165r-112,158r-5,0r-40,-158r-44,165r33,0r-6,24r-87,0","w":311},"N":{"d":"197,1r-97,-193r-39,168r33,0r-5,24r-88,0r6,-24r28,0r44,-189r-32,0r6,-24r54,0r91,181r36,-157r-33,0r6,-24r86,0r-5,24r-28,0r-49,214r-14,0","w":270},"O":{"d":"126,4v-64,0,-100,-44,-100,-102v0,-70,55,-143,131,-143v64,0,100,44,100,102v0,70,-55,143,-131,143xm128,-20v58,0,102,-60,102,-119v0,-42,-24,-78,-75,-78v-58,0,-102,60,-102,119v0,42,24,78,75,78","w":263},"P":{"d":"130,-237v48,-1,83,27,81,66v3,57,-58,97,-134,85r-15,62r33,0r-6,24r-88,0r6,-24r28,0r44,-189r-32,0r6,-24r77,0xm116,-109v81,4,95,-108,11,-104r-21,0r-24,103v8,1,21,1,34,1","w":202},"Q":{"d":"257,-139v0,63,-45,129,-110,141v13,23,48,39,75,22r9,21v-47,24,-93,-3,-114,-41v-58,-4,-91,-46,-91,-102v0,-70,55,-143,131,-143v64,0,100,44,100,102xm128,-20v58,0,102,-60,102,-119v0,-42,-24,-78,-75,-78v-58,0,-102,60,-102,119v0,42,24,78,75,78","w":263},"R":{"d":"53,-237v74,-2,158,-6,158,63v0,36,-26,65,-68,74r36,76r28,0r-6,24r-41,0r-43,-96r-38,-1r-17,73r32,0r-5,24r-88,0r6,-24r28,0r44,-189r-32,0xm184,-172v-1,-36,-36,-43,-78,-41r-22,93v50,7,104,-11,100,-52","w":217},"S":{"d":"80,-179v5,48,102,57,96,116v0,39,-33,67,-80,67v-47,0,-82,-29,-82,-54v-3,-28,39,-33,40,-7v0,7,-3,13,-10,18v16,28,110,28,105,-22v-4,-49,-104,-58,-97,-116v0,-34,31,-64,77,-64v41,0,72,24,72,48v3,29,-38,33,-39,6v0,-5,3,-11,9,-16v-17,-23,-95,-16,-91,24","w":198},"T":{"d":"52,0r5,-24r31,0r43,-189r-58,0r-9,37r-25,0r14,-61r195,0r-14,61r-26,0r9,-37r-59,0r-44,189r35,0r-6,24r-91,0","w":225},"U":{"d":"120,4v-60,0,-87,-43,-72,-98r27,-119r-31,0r5,-24r87,0r-5,24r-29,0v-10,49,-25,93,-31,146v0,28,15,47,52,47v37,0,58,-24,66,-59r30,-134r-33,0r6,-24r87,0r-5,24r-28,0v-28,85,-15,217,-126,217","w":257},"V":{"d":"97,4r-36,-217r-25,0r6,-24r78,0r-5,24r-25,0r25,172r104,-172r-28,0r6,-24r79,0r-6,24r-21,0r-136,217r-16,0","w":246},"W":{"d":"77,3r-12,-216r-25,0r5,-24r81,0r-6,24r-29,0r5,167r93,-162r13,0r23,162r85,-167r-29,0r6,-24r79,0r-5,24r-23,0r-113,216r-15,0r-25,-159r-94,159r-14,0","w":340},"X":{"d":"-5,0r5,-24r27,0r97,-99r-47,-90r-29,0r5,-24r88,0r-5,24r-29,0r35,75r71,-75r-29,0r6,-24r89,0r-6,24r-27,0r-92,93r50,96r29,0r-5,24r-88,0r6,-24r29,0r-39,-81r-77,81r31,0r-6,24r-89,0","w":255},"Y":{"d":"45,0r5,-24r32,0r18,-71r-41,-118r-25,0r6,-24r79,0r-5,24r-27,0r31,97r80,-97r-27,0r6,-24r81,0r-5,24r-24,0r-104,123r-16,66r34,0r-5,24r-93,0","w":227},"Z":{"d":"5,0r-1,-13r190,-202r-114,0r-9,38r-25,0r14,-60r174,0r2,13r-191,202r120,0r9,-38r25,0r-14,60r-180,0","w":220},"a":{"d":"124,-29v-27,48,-113,41,-109,-30v0,-53,37,-97,81,-97v26,0,44,16,48,38r10,-36r24,0r-30,127v0,8,4,12,10,12v7,0,13,-7,21,-25r12,5v-8,26,-22,38,-38,38v-19,0,-30,-13,-29,-32xm78,-19v35,0,60,-39,60,-73v0,-25,-14,-42,-39,-42v-33,0,-57,36,-57,73v0,25,12,42,36,42","w":201},"b":{"d":"10,0r57,-242r-30,0r6,-22r53,0r-32,140v26,-50,116,-38,111,31v0,53,-39,96,-82,96v-25,0,-44,-15,-49,-37r-9,34r-25,0xm91,-19v54,6,85,-111,19,-115v-54,-5,-92,112,-19,115"},"c":{"d":"137,-15v-43,35,-125,16,-122,-48v0,-49,39,-93,88,-93v36,0,55,22,55,41v2,23,-34,30,-35,5v0,-4,3,-10,8,-13v-35,-31,-94,8,-91,58v-1,52,67,58,98,26","w":167},"d":{"d":"15,-59v-7,-80,100,-136,129,-60r29,-123r-29,0r5,-22r54,0r-54,237v0,8,3,12,10,12v7,0,13,-7,21,-25r12,5v-8,26,-22,38,-39,38v-18,0,-29,-13,-28,-33v-26,50,-113,42,-110,-29xm79,-19v35,0,59,-38,59,-73v0,-25,-14,-42,-39,-42v-33,0,-57,35,-57,72v0,26,13,43,37,43","w":202},"e":{"d":"152,-69r-112,0v-6,52,58,63,99,36r-5,25v-49,25,-121,9,-120,-54v0,-52,40,-94,85,-94v48,-2,71,42,53,87xm98,-134v-24,0,-45,19,-54,45r88,0v7,-25,-3,-44,-34,-45","w":171},"f":{"d":"18,0r31,-131r-28,0r6,-22r27,0v11,-51,16,-112,74,-112v32,-3,37,36,11,39v-10,0,-17,-7,-18,-17v-33,8,-33,57,-43,90r40,0r-5,22r-40,0r-30,131r-25,0","w":112},"g":{"d":"120,52v-26,30,-110,25,-116,-15v0,-11,8,-19,18,-19v15,0,21,16,14,27v39,17,82,-4,84,-46r7,-31v-28,51,-112,37,-112,-31v0,-78,106,-131,132,-56r9,-35r24,0r-37,158v-5,21,-12,36,-23,48xm82,-23v56,5,87,-109,17,-111v-55,-7,-85,110,-17,111"},"h":{"d":"10,0r57,-242r-30,0r6,-22r53,0r-33,142v18,-41,93,-49,95,8v-2,31,-16,57,-19,87v0,7,4,12,10,12v7,0,13,-7,20,-25r13,5v-8,25,-20,38,-38,38v-58,-6,-13,-73,-12,-114v0,-14,-11,-23,-25,-23v-48,-2,-61,86,-71,134r-26,0","w":189},"i":{"d":"73,-183v-10,0,-18,-8,-18,-18v0,-10,8,-19,18,-19v10,0,18,9,18,19v0,10,-8,18,-18,18xm54,3v-26,0,-37,-22,-28,-46r24,-88r-29,0r5,-22r55,0r-32,126v0,8,4,12,10,12v8,0,14,-7,21,-25r13,5v-9,26,-22,38,-39,38","w":106},"j":{"d":"23,57v-12,18,-62,22,-63,-5v-1,-22,33,-21,33,-2v20,-7,23,-22,31,-51r30,-130r-31,0r6,-22r55,0v-20,66,-24,164,-61,210xm76,-183v-10,0,-18,-8,-18,-18v0,-10,8,-19,18,-19v10,0,18,9,18,19v0,10,-8,18,-18,18","w":95},"k":{"d":"36,0r-26,0r57,-242r-30,0r6,-22r53,0r-43,186v45,-18,69,-35,75,-44v-15,-9,-9,-35,10,-34v10,0,18,8,18,20v0,22,-27,44,-63,61r24,56v16,8,17,2,26,-25r13,4v-10,58,-53,52,-68,15r-17,-42v-8,3,-15,7,-22,9","w":169},"l":{"d":"21,-42r47,-200r-29,0r5,-22r54,0r-54,237v0,8,4,12,10,12v8,0,14,-7,21,-25r13,5v-9,55,-82,47,-67,-7","w":100},"m":{"d":"16,0r33,-131r-29,0r6,-22r51,0r-9,36v18,-44,86,-57,92,0v14,-24,34,-39,53,-39v32,-1,49,34,36,66v-5,21,-13,40,-16,63v0,7,4,12,10,12v7,0,13,-7,21,-25r12,5v-8,25,-20,38,-38,38v-58,-6,-14,-75,-11,-114v0,-14,-9,-23,-22,-23v-44,-2,-61,88,-71,134r-26,0v9,-37,21,-72,27,-112v0,-13,-9,-22,-23,-22v-44,-2,-61,88,-71,134r-25,0","w":284},"n":{"d":"149,3v-59,-7,-12,-73,-11,-114v0,-14,-10,-23,-25,-23v-46,-1,-60,88,-72,134r-25,0r33,-131r-29,0r6,-22r51,0r-9,36v13,-22,32,-39,54,-39v66,3,32,83,22,129v0,7,4,12,10,12v7,0,13,-7,21,-25r12,5v-8,25,-20,38,-38,38","w":195},"o":{"d":"81,3v-42,0,-66,-31,-66,-67v0,-48,37,-92,87,-92v42,0,66,31,66,67v0,48,-37,92,-87,92xm82,-19v59,8,89,-114,18,-115v-58,-8,-88,114,-18,115","w":182},"p":{"d":"-23,71r5,-22r23,0r43,-180r-29,0r5,-22r52,0r-7,32v24,-52,116,-44,112,28v6,79,-98,134,-132,61r-18,81r31,0r-5,22r-80,0xm97,-19v33,0,57,-35,57,-71v0,-26,-13,-44,-37,-44v-55,-5,-93,112,-20,115","w":196},"q":{"d":"125,-28v-27,49,-110,38,-110,-32v0,-77,101,-135,131,-60r9,-33r24,0r-47,202r33,0r-6,22r-57,0xm80,-19v35,0,59,-39,59,-73v0,-25,-13,-42,-39,-42v-33,0,-58,35,-58,72v0,25,13,43,38,43"},"r":{"d":"16,0r33,-131r-29,0r6,-22r51,0r-10,42v19,-29,37,-45,52,-45v12,0,21,8,21,19v1,23,-34,26,-38,6v-11,5,-35,28,-44,63r-17,68r-25,0","w":137},"s":{"d":"55,-116v5,31,75,32,75,73v0,61,-121,59,-121,7v0,-11,7,-19,17,-19v15,0,19,16,11,27v14,14,67,17,67,-11v-4,-33,-78,-32,-74,-72v0,-25,21,-44,56,-44v27,0,53,10,55,35v2,22,-31,24,-32,3v0,-3,2,-7,4,-11v-13,-13,-61,-9,-58,12","w":151},"t":{"d":"121,-131r-47,0r-24,101v7,21,25,11,44,-2r10,13v-19,15,-34,22,-49,22v-61,-8,-11,-91,-7,-134r-27,0r5,-22r28,0r9,-36r27,-9r-11,45r47,0","w":121},"u":{"d":"24,-153r54,0r-27,112v0,13,9,22,24,22v47,1,61,-87,73,-134r25,0r-31,126v0,8,5,12,11,12v6,0,13,-7,20,-25r13,5v-9,26,-22,38,-39,38v-19,0,-31,-16,-27,-37v-13,21,-32,37,-54,37v-66,-4,-29,-89,-18,-134r-29,0","w":195},"v":{"d":"60,5r-24,-136r-28,0r6,-22r44,0r19,127v28,-32,51,-68,58,-92v-20,-3,-19,-40,4,-38v12,0,21,9,21,25v0,29,-38,87,-85,136r-15,0","w":169},"w":{"d":"50,5r-13,-136r-28,0r6,-22r44,0r8,120r58,-102r13,0r22,105v23,-33,41,-66,44,-89v-19,-2,-20,-39,4,-37v12,0,21,9,21,24v0,28,-25,75,-70,137r-12,0r-22,-100r-61,100r-14,0","w":240},"x":{"d":"24,3v-27,0,-28,-37,-5,-38v9,0,14,6,16,13v13,-3,37,-41,48,-56r-21,-53r-31,0r6,-22r41,0r20,56v14,-21,38,-59,62,-59v29,0,31,36,6,37v-9,0,-14,-6,-16,-12v-12,3,-32,38,-43,51v13,23,31,105,50,40r13,4v-13,48,-49,53,-65,10r-13,-36v-15,23,-41,65,-68,65"},"y":{"d":"165,-131v19,17,-136,223,-170,203v-27,3,-34,-37,-7,-39v9,0,16,7,17,16v9,0,26,-13,59,-52r-26,-128r-28,0r6,-22r44,0r22,128v27,-35,52,-70,58,-93v-19,-4,-20,-39,4,-38v12,0,21,9,21,25","w":173},"z":{"d":"12,3r-10,-13r127,-123r-73,0r-7,30r-23,0r13,-50r119,0r7,13r-122,118v37,-16,86,30,95,-27r12,3v-6,29,-14,49,-41,49v-31,-3,-72,-19,-97,0","w":169},"0":{"d":"97,3v-49,0,-77,-37,-77,-82v0,-55,40,-106,96,-106v48,0,77,37,77,82v0,54,-40,106,-96,106xm97,-19v73,7,99,-141,18,-144v-72,-7,-99,141,-18,144","w":204},"1":{"d":"2,0r5,-22r43,0r31,-134r-41,10r0,-23v24,-3,51,-22,72,-11r-37,158r43,0r-5,22r-111,0","w":140},"2":{"d":"170,-138v2,59,-127,74,-139,117r95,0r7,-31r23,0r-13,52r-140,0r-3,-14v16,-37,53,-58,90,-76v30,-14,53,-27,53,-47v4,-32,-67,-34,-80,-12v14,7,6,33,-10,31v-10,0,-19,-8,-19,-20v0,-24,29,-48,70,-48v41,0,66,22,66,48","w":179},"3":{"d":"69,45v-37,0,-72,-21,-72,-49v-3,-25,35,-29,35,-6v0,6,-4,13,-10,15v4,8,20,18,48,18v32,0,53,-19,53,-44v0,-27,-27,-45,-65,-43r5,-22v44,2,79,-16,78,-44v7,-35,-63,-42,-81,-23v16,7,8,30,-9,30v-9,0,-18,-8,-18,-20v0,-23,31,-43,65,-43v43,0,69,24,69,54v0,31,-24,52,-62,58v77,24,42,123,-36,119","w":176},"4":{"d":"151,-103r-14,61r40,0r-5,21r-40,0r-14,64r-25,0r14,-64r-103,0r-3,-11r150,-155r16,15r-125,130r70,0r12,-51","w":195},"5":{"d":"64,44v-36,0,-64,-20,-64,-40v-2,-25,35,-28,36,-4v0,4,-1,9,-5,12v32,25,103,-2,95,-47v3,-42,-58,-50,-88,-31r-13,-8r36,-109r111,0r-5,24r-92,0r-22,67v43,-17,102,5,99,55v0,43,-37,81,-88,81","w":176},"6":{"d":"91,3v-46,-1,-71,-33,-71,-80v0,-66,41,-152,117,-153v31,0,55,16,55,36v0,11,-7,20,-19,20v-13,1,-24,-18,-12,-28v-59,-26,-108,39,-115,94v11,-17,33,-36,66,-36v39,0,64,28,64,64v0,44,-37,83,-85,83xm107,-122v-67,-5,-86,103,-14,103v59,5,84,-102,14,-103","w":192},"7":{"d":"33,44r-20,-13r135,-193r-93,0r-9,36r-24,0r14,-57r141,0r6,11","w":175},"8":{"d":"85,3v-41,0,-70,-27,-70,-60v0,-32,23,-55,56,-63v-58,-32,-22,-112,45,-110v40,0,66,26,66,58v0,29,-19,50,-50,59v63,29,29,120,-47,116xm108,-127v55,4,69,-82,7,-81v-56,-4,-64,81,-7,81xm86,-19v64,5,72,-89,8,-88v-64,-4,-73,89,-8,88","w":183},"9":{"d":"179,-106v-1,73,-41,149,-116,151v-31,0,-55,-16,-55,-36v0,-11,7,-20,19,-20v14,-1,23,18,12,28v58,27,109,-41,114,-92v-10,16,-33,35,-66,35v-39,0,-64,-27,-64,-63v0,-44,37,-83,85,-83v47,1,70,33,71,80xm93,-62v66,5,85,-101,14,-101v-59,-5,-86,101,-14,101","w":192},".":{"d":"30,3v-13,0,-23,-10,-23,-23v0,-12,10,-22,23,-22v12,0,21,10,21,22v0,13,-9,23,-21,23","w":74},",":{"d":"-15,51r-6,-10v30,-15,43,-33,44,-42v-24,-7,-19,-41,6,-41v13,0,23,10,23,25v0,24,-23,53,-67,68","w":74},":":{"d":"55,-92v-12,0,-22,-10,-22,-22v0,-13,10,-22,22,-22v13,0,22,9,22,22v0,12,-9,22,-22,22xm34,3v-12,0,-22,-10,-22,-22v0,-13,10,-23,22,-23v12,0,22,10,22,23v0,12,-10,22,-22,22","w":83},";":{"d":"55,-92v-12,0,-22,-10,-22,-22v0,-13,10,-22,22,-22v13,0,22,9,22,22v0,12,-9,22,-22,22xm-11,51r-5,-10v30,-15,42,-33,43,-42v-23,-6,-18,-41,6,-41v13,0,23,10,23,25v0,23,-23,53,-67,68","w":83},"&":{"d":"4,-50v0,-38,31,-59,65,-74v-31,-43,-4,-104,48,-103v30,0,50,22,50,45v0,33,-29,51,-67,67r39,47v20,-28,35,-44,56,-44v29,-2,31,37,6,38v-8,0,-14,-4,-16,-12v-9,3,-19,17,-31,34r35,42r-17,15r-33,-40v-18,20,-42,40,-75,40v-37,0,-60,-24,-60,-55xm67,-18v25,0,42,-15,58,-33r-45,-56v-31,14,-49,29,-49,55v0,20,13,34,36,34xm115,-206v-36,1,-45,47,-25,75v33,-15,52,-29,52,-50v0,-13,-10,-25,-27,-25","w":219},"!":{"d":"38,-63r28,-174r32,0r-48,174r-12,0xm35,3v-11,0,-21,-9,-21,-21v0,-12,10,-21,21,-21v12,0,21,9,21,21v0,12,-9,21,-21,21","w":88},"?":{"d":"48,-63r10,-57v63,-3,90,-32,90,-61v0,-42,-68,-46,-80,-21v15,6,9,33,-9,32v-10,0,-19,-9,-19,-21v0,-28,34,-50,68,-50v37,0,67,22,67,58v0,39,-34,75,-97,82r-14,38r-16,0xm46,3v-11,0,-20,-9,-20,-21v0,-12,9,-21,20,-21v12,0,21,9,21,21v0,12,-9,21,-21,21","w":162},"-":{"d":"15,-87r6,-26r77,0r-6,26r-77,0","w":105},"_":{"d":"-20,53r6,-24r195,0r-6,24r-195,0","w":185},"\/":{"d":"-14,75r-21,-11r186,-331r21,12","w":135},"\\":{"d":"63,72r-23,-334r23,-2r23,334","w":111},"|":{"d":"37,72r0,-336r23,0r0,336r-23,0","w":97},"(":{"d":"100,80v-42,-34,-73,-84,-73,-147v0,-91,56,-166,133,-203r10,18v-118,56,-159,227,-56,315","w":131},")":{"d":"-12,80r-11,-19v120,-56,161,-226,57,-315r14,-16v42,33,73,84,73,147v0,91,-56,165,-133,203","w":134},"[":{"d":"2,72r78,-336r83,0r-5,23r-57,0r-68,291r57,0r-5,22r-83,0","w":122},"]":{"d":"-32,72r6,-22r57,0r68,-291r-58,0r6,-23r82,0r-78,336r-83,0","w":122},"{":{"d":"90,-62v0,33,-53,48,-54,81v0,18,12,33,44,40r-5,18v-43,-5,-63,-29,-63,-57v-3,-38,47,-54,53,-82v3,-12,-20,-25,-45,-22r6,-24v30,3,56,-11,54,-30v-1,-21,-24,-45,-23,-69v0,-32,29,-60,93,-62r-3,18v-48,3,-66,24,-66,43v0,21,24,47,23,69v0,24,-16,40,-44,44v21,4,30,18,30,33","w":121},"}":{"d":"50,-54v1,22,24,44,23,69v0,32,-29,60,-93,62r3,-19v48,-3,66,-23,66,-42v0,-23,-24,-46,-23,-70v0,-23,16,-39,44,-43v-21,-5,-30,-19,-30,-34v0,-32,54,-49,54,-80v0,-19,-12,-33,-44,-41r5,-17v43,5,63,29,63,57v3,39,-47,53,-53,81v-3,13,19,26,45,23r-6,24v-30,-3,-56,11,-54,30","w":121},"@":{"d":"186,47v-76,43,-176,-4,-170,-93v0,-97,71,-173,154,-173v64,0,105,42,105,103v0,57,-31,103,-70,103v-23,0,-34,-14,-33,-30v-21,43,-93,40,-92,-20v-6,-63,82,-110,105,-48r8,-28r23,0r-21,80v-5,19,0,29,13,29v28,0,50,-41,50,-86v0,-50,-33,-88,-88,-88v-75,0,-137,70,-137,158v-5,75,80,118,146,80xm133,-34v42,5,70,-83,16,-85v-24,0,-43,26,-43,54v0,18,9,31,27,31","w":289},"*":{"d":"129,-145v-2,16,-26,16,-27,-3r-7,-36v-10,13,-16,36,-35,39v-15,-1,-15,-21,-2,-27r32,-18v-16,-8,-46,-6,-49,-25v13,-31,41,9,53,18v0,-20,-7,-55,12,-55v28,0,2,41,-4,56v18,-2,50,-26,56,0v-2,23,-36,9,-55,8v8,14,23,24,26,43","w":145},"^":{"d":"48,-129r-11,-14r68,-53r41,55r-13,11r-34,-31","w":159},"~":{"d":"65,-118v32,2,50,52,69,2r17,7v-7,26,-24,41,-40,41v-32,-2,-50,-52,-69,-1r-16,-7v5,-24,23,-42,39,-42","w":167},"$":{"d":"63,38r-19,-5v2,-7,8,-24,11,-36v-25,-7,-45,-24,-45,-41v-3,-23,35,-26,35,-5v0,6,-3,11,-7,14v4,6,13,11,24,13r19,-63v-22,-10,-44,-22,-44,-49v0,-29,31,-52,74,-50r7,-24r19,5r-7,23v22,6,38,21,38,37v3,24,-34,26,-33,4v0,-5,1,-10,5,-14v-2,-4,-10,-6,-18,-8r-18,59v23,11,48,24,48,51v0,35,-34,55,-78,52xm125,-48v0,-14,-12,-22,-28,-30r-18,59v25,1,46,-8,46,-29xm105,-163v-45,-3,-55,42,-16,54v4,-15,11,-39,16,-54","w":173},"#":{"d":"27,-117r5,-22r37,0r12,-44r22,0r-12,44r46,0r12,-44r23,0r-12,44r33,0r-5,22r-34,0r-14,50r36,0r-5,21r-37,0r-13,46r-22,0r12,-46r-45,0r-13,46r-23,0r13,-46r-33,0r5,-21r34,0r14,-50r-36,0xm85,-118r-14,51r47,0r14,-51r-47,0","w":196},"%":{"d":"161,-13v24,4,45,-55,10,-57v-25,-4,-45,55,-10,57xm25,2r-11,-13r196,-176r11,13xm62,-113v24,3,44,-55,9,-57v-14,0,-28,16,-28,35v0,13,7,22,19,22xm61,-97v-23,0,-37,-17,-37,-38v-6,-51,85,-73,85,-13v0,26,-20,51,-48,51xm208,-48v7,52,-85,73,-85,13v-6,-51,85,-73,85,-13","w":226},"\"":{"d":"89,-151v7,-29,-3,-86,26,-90v14,-2,21,14,15,27r-31,63r-10,0xm33,-151v7,-29,-3,-86,26,-90v15,-2,23,15,15,27r-30,63r-11,0","w":118},"'":{"d":"33,-151v7,-29,-3,-86,26,-90v15,-2,23,15,15,27r-30,63r-11,0","w":63},"+":{"d":"106,-156r-11,48r48,0r-5,22r-48,0r-13,52r-22,0r12,-52r-49,0r6,-22r48,0r11,-48r23,0","w":150},"=":{"d":"32,-113r5,-22r108,0r-5,22r-108,0xm18,-55r5,-22r108,0r-5,22r-108,0","w":150},"<":{"d":"96,-28r-76,-62r3,-12r103,-60r10,18r-86,50r61,49","w":153},">":{"d":"31,-30r-11,-16r87,-51r-61,-49r14,-17r77,61r-3,12","w":147}," ":{"w":75},"`":{"d":"143,-179v-16,-16,-45,-25,-52,-48v2,-17,25,-22,32,-3r28,44","w":198}}});

/*!
 * jQuery Cycle Plugin (with Transition Definitions)
 * Examples and documentation at: http://jquery.malsup.com/cycle/
 * Copyright (c) 2007-2010 M. Alsup
 * Version: 2.86 (05-APR-2010)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * Requires: jQuery v1.2.6 or later
 */
;(function($) {

var ver = '2.86';

// if $.support is not defined (pre jQuery 1.3) add what I need
if ($.support == undefined) {
	$.support = {
		opacity: !($.browser.msie)
	};
}

function debug(s) {
	if ($.fn.cycle.debug)
		log(s);
}		
function log() {
	if (window.console && window.console.log)
		window.console.log('[cycle] ' + Array.prototype.join.call(arguments,' '));
};

// the options arg can be...
//   a number  - indicates an immediate transition should occur to the given slide index
//   a string  - 'pause', 'resume', 'toggle', 'next', 'prev', 'stop', 'destroy' or the name of a transition effect (ie, 'fade', 'zoom', etc)
//   an object - properties to control the slideshow
//
// the arg2 arg can be...
//   the name of an fx (only used in conjunction with a numeric value for 'options')
//   the value true (only used in first arg == 'resume') and indicates
//	 that the resume should occur immediately (not wait for next timeout)

$.fn.cycle = function(options, arg2) {
	var o = { s: this.selector, c: this.context };

	// in 1.3+ we can fix mistakes with the ready state
	if (this.length === 0 && options != 'stop') {
		if (!$.isReady && o.s) {
			log('DOM not ready, queuing slideshow');
			$(function() {
				$(o.s,o.c).cycle(options,arg2);
			});
			return this;
		}
		// is your DOM ready?  http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
		log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
		return this;
	}

	// iterate the matched nodeset
	return this.each(function() {
		var opts = handleArguments(this, options, arg2);
		if (opts === false)
			return;

		opts.updateActivePagerLink = opts.updateActivePagerLink || $.fn.cycle.updateActivePagerLink;
		
		// stop existing slideshow for this container (if there is one)
		if (this.cycleTimeout)
			clearTimeout(this.cycleTimeout);
		this.cycleTimeout = this.cyclePause = 0;

		var $cont = $(this);
		var $slides = opts.slideExpr ? $(opts.slideExpr, this) : $cont.children();
		var els = $slides.get();
		if (els.length < 2) {
			log('terminating; too few slides: ' + els.length);
			return;
		}

		var opts2 = buildOptions($cont, $slides, els, opts, o);
		if (opts2 === false)
			return;

		var startTime = opts2.continuous ? 10 : getTimeout(opts2.currSlide, opts2.nextSlide, opts2, !opts2.rev);

		// if it's an auto slideshow, kick it off
		if (startTime) {
			startTime += (opts2.delay || 0);
			if (startTime < 10)
				startTime = 10;
			debug('first timeout: ' + startTime);
			this.cycleTimeout = setTimeout(function(){go(els,opts2,0,!opts2.rev)}, startTime);
		}
	});
};

// process the args that were passed to the plugin fn
function handleArguments(cont, options, arg2) {
	if (cont.cycleStop == undefined)
		cont.cycleStop = 0;
	if (options === undefined || options === null)
		options = {};
	if (options.constructor == String) {
		switch(options) {
		case 'destroy':
		case 'stop':
			var opts = $(cont).data('cycle.opts');
			if (!opts)
				return false;
			cont.cycleStop++; // callbacks look for change
			if (cont.cycleTimeout)
				clearTimeout(cont.cycleTimeout);
			cont.cycleTimeout = 0;
			$(cont).removeData('cycle.opts');
			if (options == 'destroy')
				destroy(opts);
			return false;
		case 'toggle':
			cont.cyclePause = (cont.cyclePause === 1) ? 0 : 1;
			checkInstantResume(cont.cyclePause, arg2, cont);
			return false;
		case 'pause':
			cont.cyclePause = 1;
			return false;
		case 'resume':
			cont.cyclePause = 0;
			checkInstantResume(false, arg2, cont);
			return false;
		case 'prev':
		case 'next':
			var opts = $(cont).data('cycle.opts');
			if (!opts) {
				log('options not found, "prev/next" ignored');
				return false;
			}
			$.fn.cycle[options](opts);
			return false;
		default:
			options = { fx: options };
		};
		return options;
	}
	else if (options.constructor == Number) {
		// go to the requested slide
		var num = options;
		options = $(cont).data('cycle.opts');
		if (!options) {
			log('options not found, can not advance slide');
			return false;
		}
		if (num < 0 || num >= options.elements.length) {
			log('invalid slide index: ' + num);
			return false;
		}
		options.nextSlide = num;
		if (cont.cycleTimeout) {
			clearTimeout(cont.cycleTimeout);
			cont.cycleTimeout = 0;
		}
		if (typeof arg2 == 'string')
			options.oneTimeFx = arg2;
		go(options.elements, options, 1, num >= options.currSlide);
		return false;
	}
	return options;
	
	function checkInstantResume(isPaused, arg2, cont) {
		if (!isPaused && arg2 === true) { // resume now!
			var options = $(cont).data('cycle.opts');
			if (!options) {
				log('options not found, can not resume');
				return false;
			}
			if (cont.cycleTimeout) {
				clearTimeout(cont.cycleTimeout);
				cont.cycleTimeout = 0;
			}
			go(options.elements, options, 1, 1);
		}
	}
};

function removeFilter(el, opts) {
	if (!$.support.opacity && opts.cleartype && el.style.filter) {
		try { el.style.removeAttribute('filter'); }
		catch(smother) {} // handle old opera versions
	}
};

// unbind event handlers
function destroy(opts) {
	if (opts.next)
		$(opts.next).unbind(opts.prevNextEvent);
	if (opts.prev)
		$(opts.prev).unbind(opts.prevNextEvent);
	
	if (opts.pager || opts.pagerAnchorBuilder)
		$.each(opts.pagerAnchors || [], function() {
			this.unbind().remove();
		});
	opts.pagerAnchors = null;
	if (opts.destroy) // callback
		opts.destroy(opts);
};

// one-time initialization
function buildOptions($cont, $slides, els, options, o) {
	// support metadata plugin (v1.0 and v2.0)
	var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {});
	if (opts.autostop)
		opts.countdown = opts.autostopCount || els.length;

	var cont = $cont[0];
	$cont.data('cycle.opts', opts);
	opts.$cont = $cont;
	opts.stopCount = cont.cycleStop;
	opts.elements = els;
	opts.before = opts.before ? [opts.before] : [];
	opts.after = opts.after ? [opts.after] : [];
	opts.after.unshift(function(){ opts.busy=0; });

	// push some after callbacks
	if (!$.support.opacity && opts.cleartype)
		opts.after.push(function() { removeFilter(this, opts); });
	if (opts.continuous)
		opts.after.push(function() { go(els,opts,0,!opts.rev); });

	saveOriginalOpts(opts);

	// clearType corrections
	if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
		clearTypeFix($slides);

	// container requires non-static position so that slides can be position within
	if ($cont.css('position') == 'static')
		$cont.css('position', 'relative');
	if (opts.width)
		$cont.width(opts.width);
	if (opts.height && opts.height != 'auto')
		$cont.height(opts.height);

	if (opts.startingSlide)
		opts.startingSlide = parseInt(opts.startingSlide);

	// if random, mix up the slide array
	if (opts.random) {
		opts.randomMap = [];
		for (var i = 0; i < els.length; i++)
			opts.randomMap.push(i);
		opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;});
		opts.randomIndex = 1;
		opts.startingSlide = opts.randomMap[1];
	}
	else if (opts.startingSlide >= els.length)
		opts.startingSlide = 0; // catch bogus input
	opts.currSlide = opts.startingSlide || 0;
	var first = opts.startingSlide;

	// set position and zIndex on all the slides
	$slides.css({position: 'absolute', top:0, left:0}).hide().each(function(i) {
		var z = first ? i >= first ? els.length - (i-first) : first-i : els.length-i;
		$(this).css('z-index', z)
	});

	// make sure first slide is visible
	$(els[first]).css('opacity',1).show(); // opacity bit needed to handle restart use case
	removeFilter(els[first], opts);

	// stretch slides
	if (opts.fit && opts.width)
		$slides.width(opts.width);
	if (opts.fit && opts.height && opts.height != 'auto')
		$slides.height(opts.height);

	// stretch container
	var reshape = opts.containerResize && !$cont.innerHeight();
	if (reshape) { // do this only if container has no size http://tinyurl.com/da2oa9
		var maxw = 0, maxh = 0;
		for(var j=0; j < els.length; j++) {
			var $e = $(els[j]), e = $e[0], w = $e.outerWidth(), h = $e.outerHeight();
			if (!w) w = e.offsetWidth || e.width || $e.attr('width')
			if (!h) h = e.offsetHeight || e.height || $e.attr('height');
			maxw = w > maxw ? w : maxw;
			maxh = h > maxh ? h : maxh;
		}
		if (maxw > 0 && maxh > 0)
			$cont.css({width:maxw+'px',height:maxh+'px'});
	}

	if (opts.pause)
		$cont.hover(function(){this.cyclePause++;},function(){this.cyclePause--;});

	if (supportMultiTransitions(opts) === false)
		return false;

	// apparently a lot of people use image slideshows without height/width attributes on the images.
	// Cycle 2.50+ requires the sizing info for every slide; this block tries to deal with that.
	var requeue = false;
	options.requeueAttempts = options.requeueAttempts || 0;
	$slides.each(function() {
		// try to get height/width of each slide
		var $el = $(this);
		this.cycleH = (opts.fit && opts.height) ? opts.height : ($el.height() || this.offsetHeight || this.height || $el.attr('height') || 0);
		this.cycleW = (opts.fit && opts.width) ? opts.width : ($el.width() || this.offsetWidth || this.width || $el.attr('width') || 0);

		if ( $el.is('img') ) {
			// sigh..  sniffing, hacking, shrugging...  this crappy hack tries to account for what browsers do when
			// an image is being downloaded and the markup did not include sizing info (height/width attributes);
			// there seems to be some "default" sizes used in this situation
			var loadingIE	= ($.browser.msie  && this.cycleW == 28 && this.cycleH == 30 && !this.complete);
			var loadingFF	= ($.browser.mozilla && this.cycleW == 34 && this.cycleH == 19 && !this.complete);
			var loadingOp	= ($.browser.opera && ((this.cycleW == 42 && this.cycleH == 19) || (this.cycleW == 37 && this.cycleH == 17)) && !this.complete);
			var loadingOther = (this.cycleH == 0 && this.cycleW == 0 && !this.complete);
			// don't requeue for images that are still loading but have a valid size
			if (loadingIE || loadingFF || loadingOp || loadingOther) {
				if (o.s && opts.requeueOnImageNotLoaded && ++options.requeueAttempts < 100) { // track retry count so we don't loop forever
					log(options.requeueAttempts,' - img slide not loaded, requeuing slideshow: ', this.src, this.cycleW, this.cycleH);
					setTimeout(function() {$(o.s,o.c).cycle(options)}, opts.requeueTimeout);
					requeue = true;
					return false; // break each loop
				}
				else {
					log('could not determine size of image: '+this.src, this.cycleW, this.cycleH);
				}
			}
		}
		return true;
	});

	if (requeue)
		return false;

	opts.cssBefore = opts.cssBefore || {};
	opts.animIn = opts.animIn || {};
	opts.animOut = opts.animOut || {};

	$slides.not(':eq('+first+')').css(opts.cssBefore);
	if (opts.cssFirst)
		$($slides[first]).css(opts.cssFirst);

	if (opts.timeout) {
		opts.timeout = parseInt(opts.timeout);
		// ensure that timeout and speed settings are sane
		if (opts.speed.constructor == String)
			opts.speed = $.fx.speeds[opts.speed] || parseInt(opts.speed);
		if (!opts.sync)
			opts.speed = opts.speed / 2;
		
		var buffer = opts.fx == 'shuffle' ? 500 : 250;
		while((opts.timeout - opts.speed) < buffer) // sanitize timeout
			opts.timeout += opts.speed;
	}
	if (opts.easing)
		opts.easeIn = opts.easeOut = opts.easing;
	if (!opts.speedIn)
		opts.speedIn = opts.speed;
	if (!opts.speedOut)
		opts.speedOut = opts.speed;

	opts.slideCount = els.length;
	opts.currSlide = opts.lastSlide = first;
	if (opts.random) {
		if (++opts.randomIndex == els.length)
			opts.randomIndex = 0;
		opts.nextSlide = opts.randomMap[opts.randomIndex];
	}
	else
		opts.nextSlide = opts.startingSlide >= (els.length-1) ? 0 : opts.startingSlide+1;

	// run transition init fn
	if (!opts.multiFx) {
		var init = $.fn.cycle.transitions[opts.fx];
		if ($.isFunction(init))
			init($cont, $slides, opts);
		else if (opts.fx != 'custom' && !opts.multiFx) {
			log('unknown transition: ' + opts.fx,'; slideshow terminating');
			return false;
		}
	}

	// fire artificial events
	var e0 = $slides[first];
	if (opts.before.length)
		opts.before[0].apply(e0, [e0, e0, opts, true]);
	if (opts.after.length > 1)
		opts.after[1].apply(e0, [e0, e0, opts, true]);

	if (opts.next)
		$(opts.next).bind(opts.prevNextEvent,function(){return advance(opts,opts.rev?-1:1)});
	if (opts.prev)
		$(opts.prev).bind(opts.prevNextEvent,function(){return advance(opts,opts.rev?1:-1)});
	if (opts.pager || opts.pagerAnchorBuilder)
		buildPager(els,opts);

	exposeAddSlide(opts, els);

	return opts;
};

// save off original opts so we can restore after clearing state
function saveOriginalOpts(opts) {
	opts.original = { before: [], after: [] };
	opts.original.cssBefore = $.extend({}, opts.cssBefore);
	opts.original.cssAfter  = $.extend({}, opts.cssAfter);
	opts.original.animIn	= $.extend({}, opts.animIn);
	opts.original.animOut   = $.extend({}, opts.animOut);
	$.each(opts.before, function() { opts.original.before.push(this); });
	$.each(opts.after,  function() { opts.original.after.push(this); });
};

function supportMultiTransitions(opts) {
	var i, tx, txs = $.fn.cycle.transitions;
	// look for multiple effects
	if (opts.fx.indexOf(',') > 0) {
		opts.multiFx = true;
		opts.fxs = opts.fx.replace(/\s*/g,'').split(',');
		// discard any bogus effect names
		for (i=0; i < opts.fxs.length; i++) {
			var fx = opts.fxs[i];
			tx = txs[fx];
			if (!tx || !txs.hasOwnProperty(fx) || !$.isFunction(tx)) {
				log('discarding unknown transition: ',fx);
				opts.fxs.splice(i,1);
				i--;
			}
		}
		// if we have an empty list then we threw everything away!
		if (!opts.fxs.length) {
			log('No valid transitions named; slideshow terminating.');
			return false;
		}
	}
	else if (opts.fx == 'all') {  // auto-gen the list of transitions
		opts.multiFx = true;
		opts.fxs = [];
		for (p in txs) {
			tx = txs[p];
			if (txs.hasOwnProperty(p) && $.isFunction(tx))
				opts.fxs.push(p);
		}
	}
	if (opts.multiFx && opts.randomizeEffects) {
		// munge the fxs array to make effect selection random
		var r1 = Math.floor(Math.random() * 20) + 30;
		for (i = 0; i < r1; i++) {
			var r2 = Math.floor(Math.random() * opts.fxs.length);
			opts.fxs.push(opts.fxs.splice(r2,1)[0]);
		}
		debug('randomized fx sequence: ',opts.fxs);
	}
	return true;
};

// provide a mechanism for adding slides after the slideshow has started
function exposeAddSlide(opts, els) {
	opts.addSlide = function(newSlide, prepend) {
		var $s = $(newSlide), s = $s[0];
		if (!opts.autostopCount)
			opts.countdown++;
		els[prepend?'unshift':'push'](s);
		if (opts.els)
			opts.els[prepend?'unshift':'push'](s); // shuffle needs this
		opts.slideCount = els.length;

		$s.css('position','absolute');
		$s[prepend?'prependTo':'appendTo'](opts.$cont);

		if (prepend) {
			opts.currSlide++;
			opts.nextSlide++;
		}

		if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
			clearTypeFix($s);

		if (opts.fit && opts.width)
			$s.width(opts.width);
		if (opts.fit && opts.height && opts.height != 'auto')
			$slides.height(opts.height);
		s.cycleH = (opts.fit && opts.height) ? opts.height : $s.height();
		s.cycleW = (opts.fit && opts.width) ? opts.width : $s.width();

		$s.css(opts.cssBefore);

		if (opts.pager || opts.pagerAnchorBuilder)
			$.fn.cycle.createPagerAnchor(els.length-1, s, $(opts.pager), els, opts);

		if ($.isFunction(opts.onAddSlide))
			opts.onAddSlide($s);
		else
			$s.hide(); // default behavior
	};
}

// reset internal state; we do this on every pass in order to support multiple effects
$.fn.cycle.resetState = function(opts, fx) {
	fx = fx || opts.fx;
	opts.before = []; opts.after = [];
	opts.cssBefore = $.extend({}, opts.original.cssBefore);
	opts.cssAfter  = $.extend({}, opts.original.cssAfter);
	opts.animIn	= $.extend({}, opts.original.animIn);
	opts.animOut   = $.extend({}, opts.original.animOut);
	opts.fxFn = null;
	$.each(opts.original.before, function() { opts.before.push(this); });
	$.each(opts.original.after,  function() { opts.after.push(this); });

	// re-init
	var init = $.fn.cycle.transitions[fx];
	if ($.isFunction(init))
		init(opts.$cont, $(opts.elements), opts);
};

// this is the main engine fn, it handles the timeouts, callbacks and slide index mgmt
function go(els, opts, manual, fwd) {
	// opts.busy is true if we're in the middle of an animation
	if (manual && opts.busy && opts.manualTrump) {
		// let manual transitions requests trump active ones
		debug('manualTrump in go(), stopping active transition');
		$(els).stop(true,true);
		opts.busy = false;
	}
	// don't begin another timeout-based transition if there is one active
	if (opts.busy) {
		debug('transition active, ignoring new tx request');
		return;
	}

	var p = opts.$cont[0], curr = els[opts.currSlide], next = els[opts.nextSlide];

	// stop cycling if we have an outstanding stop request
	if (p.cycleStop != opts.stopCount || p.cycleTimeout === 0 && !manual)
		return;

	// check to see if we should stop cycling based on autostop options
	if (!manual && !p.cyclePause &&
		((opts.autostop && (--opts.countdown <= 0)) ||
		(opts.nowrap && !opts.random && opts.nextSlide < opts.currSlide))) {
		if (opts.end)
			opts.end(opts);
		return;
	}

	// if slideshow is paused, only transition on a manual trigger
	var changed = false;
	if ((manual || !p.cyclePause) && (opts.nextSlide != opts.currSlide)) {
		changed = true;
		var fx = opts.fx;
		// keep trying to get the slide size if we don't have it yet
		curr.cycleH = curr.cycleH || $(curr).height();
		curr.cycleW = curr.cycleW || $(curr).width();
		next.cycleH = next.cycleH || $(next).height();
		next.cycleW = next.cycleW || $(next).width();

		// support multiple transition types
		if (opts.multiFx) {
			if (opts.lastFx == undefined || ++opts.lastFx >= opts.fxs.length)
				opts.lastFx = 0;
			fx = opts.fxs[opts.lastFx];
			opts.currFx = fx;
		}

		// one-time fx overrides apply to:  $('div').cycle(3,'zoom');
		if (opts.oneTimeFx) {
			fx = opts.oneTimeFx;
			opts.oneTimeFx = null;
		}

		$.fn.cycle.resetState(opts, fx);

		// run the before callbacks
		if (opts.before.length)
			$.each(opts.before, function(i,o) {
				if (p.cycleStop != opts.stopCount) return;
				o.apply(next, [curr, next, opts, fwd]);
			});

		// stage the after callacks
		var after = function() {
			$.each(opts.after, function(i,o) {
				if (p.cycleStop != opts.stopCount) return;
				o.apply(next, [curr, next, opts, fwd]);
			});
		};

		debug('tx firing; currSlide: ' + opts.currSlide + '; nextSlide: ' + opts.nextSlide);
		
		// get ready to perform the transition
		opts.busy = 1;
		if (opts.fxFn) // fx function provided?
			opts.fxFn(curr, next, opts, after, fwd, manual && opts.fastOnEvent);
		else if ($.isFunction($.fn.cycle[opts.fx])) // fx plugin ?
			$.fn.cycle[opts.fx](curr, next, opts, after, fwd, manual && opts.fastOnEvent);
		else
			$.fn.cycle.custom(curr, next, opts, after, fwd, manual && opts.fastOnEvent);
	}

	if (changed || opts.nextSlide == opts.currSlide) {
		// calculate the next slide
		opts.lastSlide = opts.currSlide;
		if (opts.random) {
			opts.currSlide = opts.nextSlide;
			if (++opts.randomIndex == els.length)
				opts.randomIndex = 0;
			opts.nextSlide = opts.randomMap[opts.randomIndex];
			if (opts.nextSlide == opts.currSlide)
				opts.nextSlide = (opts.currSlide == opts.slideCount - 1) ? 0 : opts.currSlide + 1;
		}
		else { // sequence
			var roll = (opts.nextSlide + 1) == els.length;
			opts.nextSlide = roll ? 0 : opts.nextSlide+1;
			opts.currSlide = roll ? els.length-1 : opts.nextSlide-1;
		}
	}
	if (changed && opts.pager)
		opts.updateActivePagerLink(opts.pager, opts.currSlide, opts.activePagerClass);
	
	// stage the next transition
	var ms = 0;
	if (opts.timeout && !opts.continuous)
		ms = getTimeout(curr, next, opts, fwd);
	else if (opts.continuous && p.cyclePause) // continuous shows work off an after callback, not this timer logic
		ms = 10;
	if (ms > 0)
		p.cycleTimeout = setTimeout(function(){ go(els, opts, 0, !opts.rev) }, ms);
};

// invoked after transition
$.fn.cycle.updateActivePagerLink = function(pager, currSlide, clsName) {
   $(pager).each(function() {
       $(this).children().removeClass(clsName).eq(currSlide).addClass(clsName);
   });
};

// calculate timeout value for current transition
function getTimeout(curr, next, opts, fwd) {
	if (opts.timeoutFn) {
		// call user provided calc fn
		var t = opts.timeoutFn(curr,next,opts,fwd);
		while ((t - opts.speed) < 250) // sanitize timeout
			t += opts.speed;
		debug('calculated timeout: ' + t + '; speed: ' + opts.speed);
		if (t !== false)
			return t;
	}
	return opts.timeout;
};

// expose next/prev function, caller must pass in state
$.fn.cycle.next = function(opts) { advance(opts, opts.rev?-1:1); };
$.fn.cycle.prev = function(opts) { advance(opts, opts.rev?1:-1);};

// advance slide forward or back
function advance(opts, val) {
	var els = opts.elements;
	var p = opts.$cont[0], timeout = p.cycleTimeout;
	if (timeout) {
		clearTimeout(timeout);
		p.cycleTimeout = 0;
	}
	if (opts.random && val < 0) {
		// move back to the previously display slide
		opts.randomIndex--;
		if (--opts.randomIndex == -2)
			opts.randomIndex = els.length-2;
		else if (opts.randomIndex == -1)
			opts.randomIndex = els.length-1;
		opts.nextSlide = opts.randomMap[opts.randomIndex];
	}
	else if (opts.random) {
		opts.nextSlide = opts.randomMap[opts.randomIndex];
	}
	else {
		opts.nextSlide = opts.currSlide + val;
		if (opts.nextSlide < 0) {
			if (opts.nowrap) return false;
			opts.nextSlide = els.length - 1;
		}
		else if (opts.nextSlide >= els.length) {
			if (opts.nowrap) return false;
			opts.nextSlide = 0;
		}
	}

	var cb = opts.onPrevNextEvent || opts.prevNextClick; // prevNextClick is deprecated
	if ($.isFunction(cb))
		cb(val > 0, opts.nextSlide, els[opts.nextSlide]);
	go(els, opts, 1, val>=0);
	return false;
};

function buildPager(els, opts) {
	var $p = $(opts.pager);
	$.each(els, function(i,o) {
		$.fn.cycle.createPagerAnchor(i,o,$p,els,opts);
	});
	opts.updateActivePagerLink(opts.pager, opts.startingSlide, opts.activePagerClass);
};

$.fn.cycle.createPagerAnchor = function(i, el, $p, els, opts) {
	var a;
	if ($.isFunction(opts.pagerAnchorBuilder)) {
		a = opts.pagerAnchorBuilder(i,el);
		debug('pagerAnchorBuilder('+i+', el) returned: ' + a);
	}
	else
		a = '<a href="#">'+(i+1)+'</a>';
		
	if (!a)
		return;
	var $a = $(a);
	// don't reparent if anchor is in the dom
	if ($a.parents('body').length === 0) {
		var arr = [];
		if ($p.length > 1) {
			$p.each(function() {
				var $clone = $a.clone(true);
				$(this).append($clone);
				arr.push($clone[0]);
			});
			$a = $(arr);
		}
		else {
			$a.appendTo($p);
		}
	}

	opts.pagerAnchors =  opts.pagerAnchors || [];
	opts.pagerAnchors.push($a);
	$a.bind(opts.pagerEvent, function(e) {
		e.preventDefault();
		opts.nextSlide = i;
		var p = opts.$cont[0], timeout = p.cycleTimeout;
		if (timeout) {
			clearTimeout(timeout);
			p.cycleTimeout = 0;
		}
		var cb = opts.onPagerEvent || opts.pagerClick; // pagerClick is deprecated
		if ($.isFunction(cb))
			cb(opts.nextSlide, els[opts.nextSlide]);
		go(els,opts,1,opts.currSlide < i); // trigger the trans
//		return false; // <== allow bubble
	});
	
	if ( ! /^click/.test(opts.pagerEvent) && !opts.allowPagerClickBubble)
		$a.bind('click.cycle', function(){return false;}); // suppress click
	
	if (opts.pauseOnPagerHover)
		$a.hover(function() { opts.$cont[0].cyclePause++; }, function() { opts.$cont[0].cyclePause--; } );
};

// helper fn to calculate the number of slides between the current and the next
$.fn.cycle.hopsFromLast = function(opts, fwd) {
	var hops, l = opts.lastSlide, c = opts.currSlide;
	if (fwd)
		hops = c > l ? c - l : opts.slideCount - l;
	else
		hops = c < l ? l - c : l + opts.slideCount - c;
	return hops;
};

// fix clearType problems in ie6 by setting an explicit bg color
// (otherwise text slides look horrible during a fade transition)
function clearTypeFix($slides) {
	debug('applying clearType background-color hack');
	function hex(s) {
		s = parseInt(s).toString(16);
		return s.length < 2 ? '0'+s : s;
	};
	function getBg(e) {
		for ( ; e && e.nodeName.toLowerCase() != 'html'; e = e.parentNode) {
			var v = $.css(e,'background-color');
			if (v.indexOf('rgb') >= 0 ) {
				var rgb = v.match(/\d+/g);
				return '#'+ hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]);
			}
			if (v && v != 'transparent')
				return v;
		}
		return '#ffffff';
	};
	$slides.each(function() { $(this).css('background-color', getBg(this)); });
};

// reset common props before the next transition
$.fn.cycle.commonReset = function(curr,next,opts,w,h,rev) {
	$(opts.elements).not(curr).hide();
	opts.cssBefore.opacity = 1;
	opts.cssBefore.display = 'block';
	if (w !== false && next.cycleW > 0)
		opts.cssBefore.width = next.cycleW;
	if (h !== false && next.cycleH > 0)
		opts.cssBefore.height = next.cycleH;
	opts.cssAfter = opts.cssAfter || {};
	opts.cssAfter.display = 'none';
	$(curr).css('zIndex',opts.slideCount + (rev === true ? 1 : 0));
	$(next).css('zIndex',opts.slideCount + (rev === true ? 0 : 1));
};

// the actual fn for effecting a transition
$.fn.cycle.custom = function(curr, next, opts, cb, fwd, speedOverride) {
	var $l = $(curr), $n = $(next);
	var speedIn = opts.speedIn, speedOut = opts.speedOut, easeIn = opts.easeIn, easeOut = opts.easeOut;
	$n.css(opts.cssBefore);
	if (speedOverride) {
		if (typeof speedOverride == 'number')
			speedIn = speedOut = speedOverride;
		else
			speedIn = speedOut = 1;
		easeIn = easeOut = null;
	}
	var fn = function() {$n.animate(opts.animIn, speedIn, easeIn, cb)};
	$l.animate(opts.animOut, speedOut, easeOut, function() {
		if (opts.cssAfter) $l.css(opts.cssAfter);
		if (!opts.sync) fn();
	});
	if (opts.sync) fn();
};

// transition definitions - only fade is defined here, transition pack defines the rest
$.fn.cycle.transitions = {
	fade: function($cont, $slides, opts) {
		$slides.not(':eq('+opts.currSlide+')').css('opacity',0);
		opts.before.push(function(curr,next,opts) {
			$.fn.cycle.commonReset(curr,next,opts);
			opts.cssBefore.opacity = 0;
		});
		opts.animIn	   = { opacity: 1 };
		opts.animOut   = { opacity: 0 };
		opts.cssBefore = { top: 0, left: 0 };
	}
};

$.fn.cycle.ver = function() { return ver; };

// override these globally if you like (they are all optional)
$.fn.cycle.defaults = {
	fx:			  'fade', // name of transition effect (or comma separated names, ex: 'fade,scrollUp,shuffle')
	timeout:	   4000,  // milliseconds between slide transitions (0 to disable auto advance)
	timeoutFn:     null,  // callback for determining per-slide timeout value:  function(currSlideElement, nextSlideElement, options, forwardFlag)
	continuous:	   0,	  // true to start next transition immediately after current one completes
	speed:		   1000,  // speed of the transition (any valid fx speed value)
	speedIn:	   null,  // speed of the 'in' transition
	speedOut:	   null,  // speed of the 'out' transition
	next:		   null,  // selector for element to use as event trigger for next slide
	prev:		   null,  // selector for element to use as event trigger for previous slide
//	prevNextClick: null,  // @deprecated; please use onPrevNextEvent instead
	onPrevNextEvent: null,  // callback fn for prev/next events: function(isNext, zeroBasedSlideIndex, slideElement)
	prevNextEvent:'click.cycle',// event which drives the manual transition to the previous or next slide
	pager:		   null,  // selector for element to use as pager container
	//pagerClick   null,  // @deprecated; please use onPagerEvent instead
	onPagerEvent:  null,  // callback fn for pager events: function(zeroBasedSlideIndex, slideElement)
	pagerEvent:	  'click.cycle', // name of event which drives the pager navigation
	allowPagerClickBubble: false, // allows or prevents click event on pager anchors from bubbling
	pagerAnchorBuilder: null, // callback fn for building anchor links:  function(index, DOMelement)
	before:		   null,  // transition callback (scope set to element to be shown):	 function(currSlideElement, nextSlideElement, options, forwardFlag)
	after:		   null,  // transition callback (scope set to element that was shown):  function(currSlideElement, nextSlideElement, options, forwardFlag)
	end:		   null,  // callback invoked when the slideshow terminates (use with autostop or nowrap options): function(options)
	easing:		   null,  // easing method for both in and out transitions
	easeIn:		   null,  // easing for "in" transition
	easeOut:	   null,  // easing for "out" transition
	shuffle:	   null,  // coords for shuffle animation, ex: { top:15, left: 200 }
	animIn:		   null,  // properties that define how the slide animates in
	animOut:	   null,  // properties that define how the slide animates out
	cssBefore:	   null,  // properties that define the initial state of the slide before transitioning in
	cssAfter:	   null,  // properties that defined the state of the slide after transitioning out
	fxFn:		   null,  // function used to control the transition: function(currSlideElement, nextSlideElement, options, afterCalback, forwardFlag)
	height:		  'auto', // container height
	startingSlide: 0,	  // zero-based index of the first slide to be displayed
	sync:		   1,	  // true if in/out transitions should occur simultaneously
	random:		   0,	  // true for random, false for sequence (not applicable to shuffle fx)
	fit:		   0,	  // force slides to fit container
	containerResize: 1,	  // resize container to fit largest slide
	pause:		   0,	  // true to enable "pause on hover"
	pauseOnPagerHover: 0, // true to pause when hovering over pager link
	autostop:	   0,	  // true to end slideshow after X transitions (where X == slide count)
	autostopCount: 0,	  // number of transitions (optionally used with autostop to define X)
	delay:		   0,	  // additional delay (in ms) for first transition (hint: can be negative)
	slideExpr:	   null,  // expression for selecting slides (if something other than all children is required)
	cleartype:	   !$.support.opacity,  // true if clearType corrections should be applied (for IE)
	cleartypeNoBg: false, // set to true to disable extra cleartype fixing (leave false to force background color setting on slides)
	nowrap:		   0,	  // true to prevent slideshow from wrapping
	fastOnEvent:   0,	  // force fast transitions when triggered manually (via pager or prev/next); value == time in ms
	randomizeEffects: 1,  // valid when multiple effects are used; true to make the effect sequence random
	rev:		   0,	 // causes animations to transition in reverse
	manualTrump:   true,  // causes manual transition to stop an active transition instead of being ignored
	requeueOnImageNotLoaded: true, // requeue the slideshow if any image slides are not yet loaded
	requeueTimeout: 250,  // ms delay for requeue
	activePagerClass: 'activeSlide', // class name used for the active pager link
	updateActivePagerLink: null // callback fn invoked to update the active pager link (adds/removes activePagerClass style)
};

})(jQuery);


/*!
 * jQuery Cycle Plugin Transition Definitions
 * This script is a plugin for the jQuery Cycle Plugin
 * Examples and documentation at: http://malsup.com/jquery/cycle/
 * Copyright (c) 2007-2008 M. Alsup
 * Version:	 2.72
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 */
(function($) {

//
// These functions define one-time slide initialization for the named
// transitions. To save file size feel free to remove any of these that you
// don't need.
//
$.fn.cycle.transitions.none = function($cont, $slides, opts) {
	opts.fxFn = function(curr,next,opts,after){
		$(next).show();
		$(curr).hide();
		after();
	};
}

// scrollUp/Down/Left/Right
$.fn.cycle.transitions.scrollUp = function($cont, $slides, opts) {
	$cont.css('overflow','hidden');
	opts.before.push($.fn.cycle.commonReset);
	var h = $cont.height();
	opts.cssBefore ={ top: h, left: 0 };
	opts.cssFirst = { top: 0 };
	opts.animIn	  = { top: 0 };
	opts.animOut  = { top: -h };
};
$.fn.cycle.transitions.scrollDown = function($cont, $slides, opts) {
	$cont.css('overflow','hidden');
	opts.before.push($.fn.cycle.commonReset);
	var h = $cont.height();
	opts.cssFirst = { top: 0 };
	opts.cssBefore= { top: -h, left: 0 };
	opts.animIn	  = { top: 0 };
	opts.animOut  = { top: h };
};
$.fn.cycle.transitions.scrollLeft = function($cont, $slides, opts) {
	$cont.css('overflow','hidden');
	opts.before.push($.fn.cycle.commonReset);
	var w = $cont.width();
	opts.cssFirst = { left: 0 };
	opts.cssBefore= { left: w, top: 0 };
	opts.animIn	  = { left: 0 };
	opts.animOut  = { left: 0-w };
};
$.fn.cycle.transitions.scrollRight = function($cont, $slides, opts) {
	$cont.css('overflow','hidden');
	opts.before.push($.fn.cycle.commonReset);
	var w = $cont.width();
	opts.cssFirst = { left: 0 };
	opts.cssBefore= { left: -w, top: 0 };
	opts.animIn	  = { left: 0 };
	opts.animOut  = { left: w };
};
$.fn.cycle.transitions.scrollHorz = function($cont, $slides, opts) {
	$cont.css('overflow','hidden').width();
	opts.before.push(function(curr, next, opts, fwd) {
		$.fn.cycle.commonReset(curr,next,opts);
		opts.cssBefore.left = fwd ? (next.cycleW-1) : (1-next.cycleW);
		opts.animOut.left = fwd ? -curr.cycleW : curr.cycleW;
	});
	opts.cssFirst = { left: 0 };
	opts.cssBefore= { top: 0 };
	opts.animIn   = { left: 0 };
	opts.animOut  = { top: 0 };
};
$.fn.cycle.transitions.scrollVert = function($cont, $slides, opts) {
	$cont.css('overflow','hidden');
	opts.before.push(function(curr, next, opts, fwd) {
		$.fn.cycle.commonReset(curr,next,opts);
		opts.cssBefore.top = fwd ? (1-next.cycleH) : (next.cycleH-1);
		opts.animOut.top = fwd ? curr.cycleH : -curr.cycleH;
	});
	opts.cssFirst = { top: 0 };
	opts.cssBefore= { left: 0 };
	opts.animIn   = { top: 0 };
	opts.animOut  = { left: 0 };
};

// slideX/slideY
$.fn.cycle.transitions.slideX = function($cont, $slides, opts) {
	opts.before.push(function(curr, next, opts) {
		$(opts.elements).not(curr).hide();
		$.fn.cycle.commonReset(curr,next,opts,false,true);
		opts.animIn.width = next.cycleW;
	});
	opts.cssBefore = { left: 0, top: 0, width: 0 };
	opts.animIn	 = { width: 'show' };
	opts.animOut = { width: 0 };
};
$.fn.cycle.transitions.slideY = function($cont, $slides, opts) {
	opts.before.push(function(curr, next, opts) {
		$(opts.elements).not(curr).hide();
		$.fn.cycle.commonReset(curr,next,opts,true,false);
		opts.animIn.height = next.cycleH;
	});
	opts.cssBefore = { left: 0, top: 0, height: 0 };
	opts.animIn	 = { height: 'show' };
	opts.animOut = { height: 0 };
};

// shuffle
$.fn.cycle.transitions.shuffle = function($cont, $slides, opts) {
	var i, w = $cont.css('overflow', 'visible').width();
	$slides.css({left: 0, top: 0});
	opts.before.push(function(curr,next,opts) {
		$.fn.cycle.commonReset(curr,next,opts,true,true,true);
	});
	// only adjust speed once!
	if (!opts.speedAdjusted) {
		opts.speed = opts.speed / 2; // shuffle has 2 transitions
		opts.speedAdjusted = true;
	}
	opts.random = 0;
	opts.shuffle = opts.shuffle || {left:-w, top:15};
	opts.els = [];
	for (i=0; i < $slides.length; i++)
		opts.els.push($slides[i]);

	for (i=0; i < opts.currSlide; i++)
		opts.els.push(opts.els.shift());

	// custom transition fn (hat tip to Benjamin Sterling for this bit of sweetness!)
	opts.fxFn = function(curr, next, opts, cb, fwd) {
		var $el = fwd ? $(curr) : $(next);
		$(next).css(opts.cssBefore);
		var count = opts.slideCount;
		$el.animate(opts.shuffle, opts.speedIn, opts.easeIn, function() {
			var hops = $.fn.cycle.hopsFromLast(opts, fwd);
			for (var k=0; k < hops; k++)
				fwd ? opts.els.push(opts.els.shift()) : opts.els.unshift(opts.els.pop());
			if (fwd) {
				for (var i=0, len=opts.els.length; i < len; i++)
					$(opts.els[i]).css('z-index', len-i+count);
			}
			else {
				var z = $(curr).css('z-index');
				$el.css('z-index', parseInt(z)+1+count);
			}
			$el.animate({left:0, top:0}, opts.speedOut, opts.easeOut, function() {
				$(fwd ? this : curr).hide();
				if (cb) cb();
			});
		});
	};
	opts.cssBefore = { display: 'block', opacity: 1, top: 0, left: 0 };
};

// turnUp/Down/Left/Right
$.fn.cycle.transitions.turnUp = function($cont, $slides, opts) {
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts,true,false);
		opts.cssBefore.top = next.cycleH;
		opts.animIn.height = next.cycleH;
	});
	opts.cssFirst  = { top: 0 };
	opts.cssBefore = { left: 0, height: 0 };
	opts.animIn	   = { top: 0 };
	opts.animOut   = { height: 0 };
};
$.fn.cycle.transitions.turnDown = function($cont, $slides, opts) {
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts,true,false);
		opts.animIn.height = next.cycleH;
		opts.animOut.top   = curr.cycleH;
	});
	opts.cssFirst  = { top: 0 };
	opts.cssBefore = { left: 0, top: 0, height: 0 };
	opts.animOut   = { height: 0 };
};
$.fn.cycle.transitions.turnLeft = function($cont, $slides, opts) {
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts,false,true);
		opts.cssBefore.left = next.cycleW;
		opts.animIn.width = next.cycleW;
	});
	opts.cssBefore = { top: 0, width: 0  };
	opts.animIn	   = { left: 0 };
	opts.animOut   = { width: 0 };
};
$.fn.cycle.transitions.turnRight = function($cont, $slides, opts) {
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts,false,true);
		opts.animIn.width = next.cycleW;
		opts.animOut.left = curr.cycleW;
	});
	opts.cssBefore = { top: 0, left: 0, width: 0 };
	opts.animIn	   = { left: 0 };
	opts.animOut   = { width: 0 };
};

// zoom
$.fn.cycle.transitions.zoom = function($cont, $slides, opts) {
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts,false,false,true);
		opts.cssBefore.top = next.cycleH/2;
		opts.cssBefore.left = next.cycleW/2;
		opts.animIn	   = { top: 0, left: 0, width: next.cycleW, height: next.cycleH };
		opts.animOut   = { width: 0, height: 0, top: curr.cycleH/2, left: curr.cycleW/2 };
	});
	opts.cssFirst = { top:0, left: 0 };
	opts.cssBefore = { width: 0, height: 0 };
};

// fadeZoom
$.fn.cycle.transitions.fadeZoom = function($cont, $slides, opts) {
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts,false,false);
		opts.cssBefore.left = next.cycleW/2;
		opts.cssBefore.top = next.cycleH/2;
		opts.animIn	= { top: 0, left: 0, width: next.cycleW, height: next.cycleH };
	});
	opts.cssBefore = { width: 0, height: 0 };
	opts.animOut  = { opacity: 0 };
};

// blindX
$.fn.cycle.transitions.blindX = function($cont, $slides, opts) {
	var w = $cont.css('overflow','hidden').width();
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts);
		opts.animIn.width = next.cycleW;
		opts.animOut.left   = curr.cycleW;
	});
	opts.cssBefore = { left: w, top: 0 };
	opts.animIn = { left: 0 };
	opts.animOut  = { left: w };
};
// blindY
$.fn.cycle.transitions.blindY = function($cont, $slides, opts) {
	var h = $cont.css('overflow','hidden').height();
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts);
		opts.animIn.height = next.cycleH;
		opts.animOut.top   = curr.cycleH;
	});
	opts.cssBefore = { top: h, left: 0 };
	opts.animIn = { top: 0 };
	opts.animOut  = { top: h };
};
// blindZ
$.fn.cycle.transitions.blindZ = function($cont, $slides, opts) {
	var h = $cont.css('overflow','hidden').height();
	var w = $cont.width();
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts);
		opts.animIn.height = next.cycleH;
		opts.animOut.top   = curr.cycleH;
	});
	opts.cssBefore = { top: h, left: w };
	opts.animIn = { top: 0, left: 0 };
	opts.animOut  = { top: h, left: w };
};

// growX - grow horizontally from centered 0 width
$.fn.cycle.transitions.growX = function($cont, $slides, opts) {
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts,false,true);
		opts.cssBefore.left = this.cycleW/2;
		opts.animIn = { left: 0, width: this.cycleW };
		opts.animOut = { left: 0 };
	});
	opts.cssBefore = { width: 0, top: 0 };
};
// growY - grow vertically from centered 0 height
$.fn.cycle.transitions.growY = function($cont, $slides, opts) {
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts,true,false);
		opts.cssBefore.top = this.cycleH/2;
		opts.animIn = { top: 0, height: this.cycleH };
		opts.animOut = { top: 0 };
	});
	opts.cssBefore = { height: 0, left: 0 };
};

// curtainX - squeeze in both edges horizontally
$.fn.cycle.transitions.curtainX = function($cont, $slides, opts) {
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts,false,true,true);
		opts.cssBefore.left = next.cycleW/2;
		opts.animIn = { left: 0, width: this.cycleW };
		opts.animOut = { left: curr.cycleW/2, width: 0 };
	});
	opts.cssBefore = { top: 0, width: 0 };
};
// curtainY - squeeze in both edges vertically
$.fn.cycle.transitions.curtainY = function($cont, $slides, opts) {
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts,true,false,true);
		opts.cssBefore.top = next.cycleH/2;
		opts.animIn = { top: 0, height: next.cycleH };
		opts.animOut = { top: curr.cycleH/2, height: 0 };
	});
	opts.cssBefore = { left: 0, height: 0 };
};

// cover - curr slide covered by next slide
$.fn.cycle.transitions.cover = function($cont, $slides, opts) {
	var d = opts.direction || 'left';
	var w = $cont.css('overflow','hidden').width();
	var h = $cont.height();
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts);
		if (d == 'right')
			opts.cssBefore.left = -w;
		else if (d == 'up')
			opts.cssBefore.top = h;
		else if (d == 'down')
			opts.cssBefore.top = -h;
		else
			opts.cssBefore.left = w;
	});
	opts.animIn = { left: 0, top: 0};
	opts.animOut = { opacity: 1 };
	opts.cssBefore = { top: 0, left: 0 };
};

// uncover - curr slide moves off next slide
$.fn.cycle.transitions.uncover = function($cont, $slides, opts) {
	var d = opts.direction || 'left';
	var w = $cont.css('overflow','hidden').width();
	var h = $cont.height();
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts,true,true,true);
		if (d == 'right')
			opts.animOut.left = w;
		else if (d == 'up')
			opts.animOut.top = -h;
		else if (d == 'down')
			opts.animOut.top = h;
		else
			opts.animOut.left = -w;
	});
	opts.animIn = { left: 0, top: 0 };
	opts.animOut = { opacity: 1 };
	opts.cssBefore = { top: 0, left: 0 };
};

// toss - move top slide and fade away
$.fn.cycle.transitions.toss = function($cont, $slides, opts) {
	var w = $cont.css('overflow','visible').width();
	var h = $cont.height();
	opts.before.push(function(curr, next, opts) {
		$.fn.cycle.commonReset(curr,next,opts,true,true,true);
		// provide default toss settings if animOut not provided
		if (!opts.animOut.left && !opts.animOut.top)
			opts.animOut = { left: w*2, top: -h/2, opacity: 0 };
		else
			opts.animOut.opacity = 0;
	});
	opts.cssBefore = { left: 0, top: 0 };
	opts.animIn = { left: 0 };
};

// wipe - clip animation
$.fn.cycle.transitions.wipe = function($cont, $slides, opts) {
	var w = $cont.css('overflow','hidden').width();
	var h = $cont.height();
	opts.cssBefore = opts.cssBefore || {};
	var clip;
	if (opts.clip) {
		if (/l2r/.test(opts.clip))
			clip = 'rect(0px 0px '+h+'px 0px)';
		else if (/r2l/.test(opts.clip))
			clip = 'rect(0px '+w+'px '+h+'px '+w+'px)';
		else if (/t2b/.test(opts.clip))
			clip = 'rect(0px '+w+'px 0px 0px)';
		else if (/b2t/.test(opts.clip))
			clip = 'rect('+h+'px '+w+'px '+h+'px 0px)';
		else if (/zoom/.test(opts.clip)) {
			var top = parseInt(h/2);
			var left = parseInt(w/2);
			clip = 'rect('+top+'px '+left+'px '+top+'px '+left+'px)';
		}
	}

	opts.cssBefore.clip = opts.cssBefore.clip || clip || 'rect(0px 0px 0px 0px)';

	var d = opts.cssBefore.clip.match(/(\d+)/g);
	var t = parseInt(d[0]), r = parseInt(d[1]), b = parseInt(d[2]), l = parseInt(d[3]);

	opts.before.push(function(curr, next, opts) {
		if (curr == next) return;
		var $curr = $(curr), $next = $(next);
		$.fn.cycle.commonReset(curr,next,opts,true,true,false);
		opts.cssAfter.display = 'block';

		var step = 1, count = parseInt((opts.speedIn / 13)) - 1;
		(function f() {
			var tt = t ? t - parseInt(step * (t/count)) : 0;
			var ll = l ? l - parseInt(step * (l/count)) : 0;
			var bb = b < h ? b + parseInt(step * ((h-b)/count || 1)) : h;
			var rr = r < w ? r + parseInt(step * ((w-r)/count || 1)) : w;
			$next.css({ clip: 'rect('+tt+'px '+rr+'px '+bb+'px '+ll+'px)' });
			(step++ <= count) ? setTimeout(f, 13) : $curr.css('display', 'none');
		})();
	});
	opts.cssBefore = { display: 'block', opacity: 1, top: 0, left: 0 };
	opts.animIn	   = { left: 0 };
	opts.animOut   = { left: 0 };
};

})(jQuery);


/* Custom Scripts */

            Cufon.replace('h1');
            Cufon.replace('h2');
            Cufon.replace('h3');
            Cufon.replace('#hmenu ul li a');

//<!-- Begin
function formHandler(form){
var URL = document.form.site.options[document.form.site.selectedIndex].value;
window.location.href = URL;
}
// End -->

function mouseover()
{
document.getElementById("thediv").style.backgroundcolor='black';
}
function mouseout()
{
document.getElementById("thediv").style.backgroundcolor='red';
}
						
						
$(document).ready(function() {
		$('#rotator').cycle({ 
		    fx: 'scrollDown', 
    		timeout: 10000
		});
});
