

/*
 * jQuery validation plug-in 1.5.1
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
 * http://docs.jquery.com/Plugins/Validation
 *
 * Copyright (c) 2006 - 2008 Jörn Zaefferer
 *
 * $Id: jquery.validate.js 6096 2009-01-12 14:12:04Z joern.zaefferer $
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */

(function($) {

$.extend($.fn, {
	// http://docs.jquery.com/Plugins/Validation/validate
	validate: function( options ) {
		
		// if nothing is selected, return nothing; can't chain anyway
		if (!this.length) {
			options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" );
			return;
		}
		
		// check if a validator for this form was already created
		var validator = $.data(this[0], 'validator');
		if ( validator ) {
			return validator;
		}
		
		validator = new $.validator( options, this[0] );
		$.data(this[0], 'validator', validator); 
		
		if ( validator.settings.onsubmit ) {
		
			// allow suppresing validation by adding a cancel class to the submit button
			this.find("input, button").filter(".cancel").click(function() {
				validator.cancelSubmit = true;
			});
		
			// validate the form on submit
			this.submit( function( event ) {
				if ( validator.settings.debug )
					// prevent form submit to be able to see console output
					event.preventDefault();
					
				function handle() {
					if ( validator.settings.submitHandler ) {
						validator.settings.submitHandler.call( validator, validator.currentForm );
						return false;
					}
					return true;
				}
					
				// prevent submit for invalid forms or custom submit handlers
				if ( validator.cancelSubmit ) {
					validator.cancelSubmit = false;
					return handle();
				}
				if ( validator.form() ) {
					if ( validator.pendingRequest ) {
						validator.formSubmitted = true;
						return false;
					}
					return handle();
				} else {
					validator.focusInvalid();
					return false;
				}
			});
		}
		
		return validator;
	},
	// http://docs.jquery.com/Plugins/Validation/valid
	valid: function() {
        if ( $(this[0]).is('form')) {
            return this.validate().form();
        } else {
            var valid = false;
            var validator = $(this[0].form).validate();
            this.each(function() {
				valid |= validator.element(this);
            });
            return valid;
        }
    },
	// attributes: space seperated list of attributes to retrieve and remove
	removeAttrs: function(attributes) {
		var result = {},
			$element = this;
		$.each(attributes.split(/\s/), function(index, value) {
			result[value] = $element.attr(value);
			$element.removeAttr(value);
		});
		return result;
	},
	// http://docs.jquery.com/Plugins/Validation/rules
	rules: function(command, argument) {
		var element = this[0];
		
		if (command) {
			var settings = $.data(element.form, 'validator').settings;
			var staticRules = settings.rules;
			var existingRules = $.validator.staticRules(element);
			switch(command) {
			case "add":
				$.extend(existingRules, $.validator.normalizeRule(argument));
				staticRules[element.name] = existingRules;
				if (argument.messages)
					settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
				break;
			case "remove":
				if (!argument) {
					delete staticRules[element.name];
					return existingRules;
				}
				var filtered = {};
				$.each(argument.split(/\s/), function(index, method) {
					filtered[method] = existingRules[method];
					delete existingRules[method];
				});
				return filtered;
			}
		}
		
		var data = $.validator.normalizeRules(
		$.extend(
			{},
			$.validator.metadataRules(element),
			$.validator.classRules(element),
			$.validator.attributeRules(element),
			$.validator.staticRules(element)
		), element);
		
		// make sure required is at front
		if (data.required) {
			var param = data.required;
			delete data.required;
			data = $.extend({required: param}, data);
		}
		
		return data;
	}
});

// Custom selectors
$.extend($.expr[":"], {
	// http://docs.jquery.com/Plugins/Validation/blank
	blank: function(a) {return !$.trim(a.value);},
	// http://docs.jquery.com/Plugins/Validation/filled
	filled: function(a) {return !!$.trim(a.value);},
	// http://docs.jquery.com/Plugins/Validation/unchecked
	unchecked: function(a) {return !a.checked;}
});


$.format = function(source, params) {
	if ( arguments.length == 1 ) 
		return function() {
			var args = $.makeArray(arguments);
			args.unshift(source);
			return $.format.apply( this, args );
		};
	if ( arguments.length > 2 && params.constructor != Array  ) {
		params = $.makeArray(arguments).slice(1);
	}
	if ( params.constructor != Array ) {
		params = [ params ];
	}
	$.each(params, function(i, n) {
		source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
	});
	return source;
};

// constructor for validator
$.validator = function( options, form ) {
	this.settings = $.extend( {}, $.validator.defaults, options );
	this.currentForm = form;
	this.init();
};

$.extend($.validator, {

	defaults: {
		messages: {},
		groups: {},
		rules: {},
		errorClass: "error",
		errorElement: "label",
		focusInvalid: true,
		errorContainer: $( [] ),
		errorLabelContainer: $( [] ),
		onsubmit: true,
		ignore: [],
		ignoreTitle: false,
		onfocusin: function(element) {
			this.lastActive = element;
				
			// hide error label and remove error class on focus if enabled
			if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
				this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass );
				this.errorsFor(element).hide();
			}
		},
		onfocusout: function(element) {
			if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
				this.element(element);
			}
		},
		onkeyup: function(element) {
			if ( element.name in this.submitted || element == this.lastElement ) {
				this.element(element);
			}
		},
		onclick: function(element) {
			if ( element.name in this.submitted )
				this.element(element);
		},
		highlight: function( element, errorClass ) {
			$( element ).addClass( errorClass );
		},
		unhighlight: function( element, errorClass ) {
			$( element ).removeClass( errorClass );
		}
	},

	// http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
	setDefaults: function(settings) {
		$.extend( $.validator.defaults, settings );
	},

	messages: {
		required: "This field is required.",
		remote: "Please fix this field.",
		email: "Please enter a valid email address.",
		url: "Please enter a valid URL.",
		date: "Please enter a valid date.",
		dateISO: "Please enter a valid date (ISO).",
		dateDE: "Bitte geben Sie ein gültiges Datum ein.",
		number: "Please enter a valid number.",
		numberDE: "Bitte geben Sie eine Nummer ein.",
		digits: "Please enter only digits",
		creditcard: "Please enter a valid credit card number.",
		equalTo: "Please enter the same value again.",
		accept: "Please enter a value with a valid extension.",
		maxlength: $.format("Please enter no more than {0} characters."),
		minlength: $.format("Please enter at least {0} characters."),
		rangelength: $.format("Please enter a value between {0} and {1} characters long."),
		range: $.format("Please enter a value between {0} and {1}."),
		max: $.format("Please enter a value less than or equal to {0}."),
		min: $.format("Please enter a value greater than or equal to {0}.")
	},
	
	autoCreateRanges: false,
	
	prototype: {
		
		init: function() {
			this.labelContainer = $(this.settings.errorLabelContainer);
			this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
			this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
			this.submitted = {};
			this.valueCache = {};
			this.pendingRequest = 0;
			this.pending = {};
			this.invalid = {};
			this.reset();
			
			var groups = (this.groups = {});
			$.each(this.settings.groups, function(key, value) {
				$.each(value.split(/\s/), function(index, name) {
					groups[name] = key;
				});
			});
			var rules = this.settings.rules;
			$.each(rules, function(key, value) {
				rules[key] = $.validator.normalizeRule(value);
			});
			
			function delegate(event) {
				var validator = $.data(this[0].form, "validator");
				validator.settings["on" + event.type] && validator.settings["on" + event.type].call(validator, this[0] );
			}
			$(this.currentForm)
				.delegate("focusin focusout keyup", ":text, :password, :file, select, textarea", delegate)
				.delegate("click", ":radio, :checkbox", delegate);

			if (this.settings.invalidHandler)
				$(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
		},

		// http://docs.jquery.com/Plugins/Validation/Validator/form
		form: function() {
			this.checkForm();
			$.extend(this.submitted, this.errorMap);
			this.invalid = $.extend({}, this.errorMap);
			if (!this.valid())
				$(this.currentForm).triggerHandler("invalid-form", [this]);
			this.showErrors();
			return this.valid();
		},
		
		checkForm: function() {
			this.prepareForm();
			for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
				this.check( elements[i] );
			}
			return this.valid(); 
		},
		
		// http://docs.jquery.com/Plugins/Validation/Validator/element
		element: function( element ) {
			element = this.clean( element );
			this.lastElement = element;
			this.prepareElement( element );
			this.currentElements = $(element);
			var result = this.check( element );
			if ( result ) {
				delete this.invalid[element.name];
			} else {
				this.invalid[element.name] = true;
			}
			if ( !this.numberOfInvalids() ) {
				// Hide error containers on last error
				this.toHide = this.toHide.add( this.containers );
			}
			this.showErrors();
			return result;
		},

		// http://docs.jquery.com/Plugins/Validation/Validator/showErrors
		showErrors: function(errors) {
			if(errors) {
				// add items to error list and map
				$.extend( this.errorMap, errors );
				this.errorList = [];
				for ( var name in errors ) {
					this.errorList.push({
						message: errors[name],
						element: this.findByName(name)[0]
					});
				}
				// remove items from success list
				this.successList = $.grep( this.successList, function(element) {
					return !(element.name in errors);
				});
			}
			this.settings.showErrors
				? this.settings.showErrors.call( this, this.errorMap, this.errorList )
				: this.defaultShowErrors();
		},
		
		// http://docs.jquery.com/Plugins/Validation/Validator/resetForm
		resetForm: function() {
			if ( $.fn.resetForm )
				$( this.currentForm ).resetForm();
			this.submitted = {};
			this.prepareForm();
			this.hideErrors();
			this.elements().removeClass( this.settings.errorClass );
		},
		
		numberOfInvalids: function() {
			return this.objectLength(this.invalid);
		},
		
		objectLength: function( obj ) {
			var count = 0;
			for ( var i in obj )
				count++;
			return count;
		},
		
		hideErrors: function() {
			this.addWrapper( this.toHide ).hide();
		},
		
		valid: function() {
			return this.size() == 0;
		},
		
		size: function() {
			return this.errorList.length;
		},
		
		focusInvalid: function() {
			if( this.settings.focusInvalid ) {
				try {
					$(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(":visible").focus();
				} catch(e) {
					// ignore IE throwing errors when focusing hidden elements
				}
			}
		},
		
		findLastActive: function() {
			var lastActive = this.lastActive;
			return lastActive && $.grep(this.errorList, function(n) {
				return n.element.name == lastActive.name;
			}).length == 1 && lastActive;
		},
		
		elements: function() {
			var validator = this,
				rulesCache = {};
			
			// select all valid inputs inside the form (no submit or reset buttons)
			// workaround $Query([]).add until http://dev.jquery.com/ticket/2114 is solved
			return $([]).add(this.currentForm.elements)
			.filter(":input")
			.not(":submit, :reset, :image, [disabled]")
			.not( this.settings.ignore )
			.filter(function() {
				!this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this);
			
				// select only the first element for each name, and only those with rules specified
				if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
					return false;
				
				rulesCache[this.name] = true;
				return true;
			});
		},
		
		clean: function( selector ) {
			return $( selector )[0];
		},
		
		errors: function() {
			return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext );
		},
		
		reset: function() {
			this.successList = [];
			this.errorList = [];
			this.errorMap = {};
			this.toShow = $([]);
			this.toHide = $([]);
			this.formSubmitted = false;
			this.currentElements = $([]);
		},
		
		prepareForm: function() {
			this.reset();
			this.toHide = this.errors().add( this.containers );
		},
		
		prepareElement: function( element ) {
			this.reset();
			this.toHide = this.errorsFor(element);
		},
	
		check: function( element ) {
			element = this.clean( element );
			
			// if radio/checkbox, validate first element in group instead
			if (this.checkable(element)) {
				element = this.findByName( element.name )[0];
			}
			
			var rules = $(element).rules();
			var dependencyMismatch = false;
			for( method in rules ) {
				var rule = { method: method, parameters: rules[method] };
				try {
					var result = $.validator.methods[method].call( this, element.value, element, rule.parameters );
					
					// if a method indicates that the field is optional and therefore valid,
					// don't mark it as valid when there are no other rules
					if ( result == "dependency-mismatch" ) {
						dependencyMismatch = true;
						continue;
					}
					dependencyMismatch = false;
					
					if ( result == "pending" ) {
						this.toHide = this.toHide.not( this.errorsFor(element) );
						return;
					}
					
					if( !result ) {
						this.formatAndAdd( element, rule );
						return false;
					}
				} catch(e) {
					this.settings.debug && window.console && console.log("exception occured when checking element " + element.id
						 + ", check the '" + rule.method + "' method");
					throw e;
				}
			}
			if (dependencyMismatch)
				return;
			if ( this.objectLength(rules) )
				this.successList.push(element);
			return true;
		},
		
		// return the custom message for the given element and validation method
		// specified in the element's "messages" metadata
		customMetaMessage: function(element, method) {
			if (!$.metadata)
				return;
			
			var meta = this.settings.meta
				? $(element).metadata()[this.settings.meta]
				: $(element).metadata();
			
			return meta && meta.messages && meta.messages[method];
		},
		
		// return the custom message for the given element name and validation method
		customMessage: function( name, method ) {
			var m = this.settings.messages[name];
			return m && (m.constructor == String
				? m
				: m[method]);
		},
		
		// return the first defined argument, allowing empty strings
		findDefined: function() {
			for(var i = 0; i < arguments.length; i++) {
				if (arguments[i] !== undefined)
					return arguments[i];
			}
			return undefined;
		},
		
		defaultMessage: function( element, method) {
			return this.findDefined(
				this.customMessage( element.name, method ),
				this.customMetaMessage( element, method ),
				// title is never undefined, so handle empty string as undefined
				!this.settings.ignoreTitle && element.title || undefined,
				$.validator.messages[method],
				"<strong>Warning: No message defined for " + element.name + "</strong>"
			);
		},
		
		formatAndAdd: function( element, rule ) {
			var message = this.defaultMessage( element, rule.method );
			if ( typeof message == "function" ) 
				message = message.call(this, rule.parameters, element);
			this.errorList.push({
				message: message,
				element: element
			});
			this.errorMap[element.name] = message;
			this.submitted[element.name] = message;
		},
		
		addWrapper: function(toToggle) {
			if ( this.settings.wrapper )
				toToggle = toToggle.add( toToggle.parents( this.settings.wrapper ) );
			return toToggle;
		},
		
		defaultShowErrors: function() {
			for ( var i = 0; this.errorList[i]; i++ ) {
				var error = this.errorList[i];
				this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass );
				this.showLabel( error.element, error.message );
			}
			if( this.errorList.length ) {
				this.toShow = this.toShow.add( this.containers );
			}
			if (this.settings.success) {
				for ( var i = 0; this.successList[i]; i++ ) {
					this.showLabel( this.successList[i] );
				}
			}
			if (this.settings.unhighlight) {
				for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
					this.settings.unhighlight.call( this, elements[i], this.settings.errorClass );
				}
			}
			this.toHide = this.toHide.not( this.toShow );
			this.hideErrors();
			this.addWrapper( this.toShow ).show();
		},
		
		validElements: function() {
			return this.currentElements.not(this.invalidElements());
		},
		
		invalidElements: function() {
			return $(this.errorList).map(function() {
				return this.element;
			});
		},
		
		showLabel: function(element, message) {
			var label = this.errorsFor( element );
			if ( label.length ) {
				// refresh error/success class
				label.removeClass().addClass( this.settings.errorClass );
			
				// check if we have a generated label, replace the message then
				label.attr("generated") && label.html(message);
			} else {
				// create label
				label = $("<" + this.settings.errorElement + "/>")
					.attr({"for":  this.idOrName(element), generated: true})
					.addClass(this.settings.errorClass)
					.html(message || "");
				if ( this.settings.wrapper ) {
					// make sure the element is visible, even in IE
					// actually showing the wrapped element is handled elsewhere
					label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
				}
				if ( !this.labelContainer.append(label).length )
					this.settings.errorPlacement
						? this.settings.errorPlacement(label, $(element) )
						: label.insertAfter(element);
			}
			if ( !message && this.settings.success ) {
				label.text("");
				typeof this.settings.success == "string"
					? label.addClass( this.settings.success )
					: this.settings.success( label );
			}
			this.toShow = this.toShow.add(label);
		},
		
		errorsFor: function(element) {
			return this.errors().filter("[for='" + this.idOrName(element) + "']");
		},
		
		idOrName: function(element) {
			return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
		},

		checkable: function( element ) {
			return /radio|checkbox/i.test(element.type);
		},
		
		findByName: function( name ) {
			// select by name and filter by form for performance over form.find("[name=...]")
			var form = this.currentForm;
			return $(document.getElementsByName(name)).map(function(index, element) {
				return element.form == form && element.name == name && element  || null;
			});
		},
		
		getLength: function(value, element) {
			switch( element.nodeName.toLowerCase() ) {
			case 'select':
				return $("option:selected", element).length;
			case 'input':
				if( this.checkable( element) )
					return this.findByName(element.name).filter(':checked').length;
			}
			return value.length;
		},
	
		depend: function(param, element) {
			return this.dependTypes[typeof param]
				? this.dependTypes[typeof param](param, element)
				: true;
		},
	
		dependTypes: {
			"boolean": function(param, element) {
				return param;
			},
			"string": function(param, element) {
				return !!$(param, element.form).length;
			},
			"function": function(param, element) {
				return param(element);
			}
		},
		
		optional: function(element) {
			return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch";
		},
		
		startRequest: function(element) {
			if (!this.pending[element.name]) {
				this.pendingRequest++;
				this.pending[element.name] = true;
			}
		},
		
		stopRequest: function(element, valid) {
			this.pendingRequest--;
			// sometimes synchronization fails, make sure pendingRequest is never < 0
			if (this.pendingRequest < 0)
				this.pendingRequest = 0;
			delete this.pending[element.name];
			if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) {
				$(this.currentForm).submit();
			} else if (!valid && this.pendingRequest == 0 && this.formSubmitted) {
				$(this.currentForm).triggerHandler("invalid-form", [this]);
			}
		},
		
		previousValue: function(element) {
			return $.data(element, "previousValue") || $.data(element, "previousValue", previous = {
				old: null,
				valid: true,
				message: this.defaultMessage( element, "remote" )
			});
		}
		
	},
	
	classRuleSettings: {
		required: {required: true},
		email: {email: true},
		url: {url: true},
		date: {date: true},
		dateISO: {dateISO: true},
		dateDE: {dateDE: true},
		number: {number: true},
		numberDE: {numberDE: true},
		digits: {digits: true},
		creditcard: {creditcard: true}
	},
	
	addClassRules: function(className, rules) {
		className.constructor == String ?
			this.classRuleSettings[className] = rules :
			$.extend(this.classRuleSettings, className);
	},
	
	classRules: function(element) {
		var rules = {};
		var classes = $(element).attr('class');
		classes && $.each(classes.split(' '), function() {
			if (this in $.validator.classRuleSettings) {
				$.extend(rules, $.validator.classRuleSettings[this]);
			}
		});
		return rules;
	},
	
	attributeRules: function(element) {
		var rules = {};
		var $element = $(element);
		
		for (method in $.validator.methods) {
			var value = $element.attr(method);
			if (value) {
				rules[method] = value;
			}
		}
		
		// maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
		if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
			delete rules.maxlength;
		}
		
		return rules;
	},
	
	metadataRules: function(element) {
		if (!$.metadata) return {};
		
		var meta = $.data(element.form, 'validator').settings.meta;
		return meta ?
			$(element).metadata()[meta] :
			$(element).metadata();
	},
	
	staticRules: function(element) {
		var rules = {};
		var validator = $.data(element.form, 'validator');
		if (validator.settings.rules) {
			rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
		}
		return rules;
	},
	
	normalizeRules: function(rules, element) {
		// handle dependency check
		$.each(rules, function(prop, val) {
			// ignore rule when param is explicitly false, eg. required:false
			if (val === false) {
				delete rules[prop];
				return;
			}
			if (val.param || val.depends) {
				var keepRule = true;
				switch (typeof val.depends) {
					case "string":
						keepRule = !!$(val.depends, element.form).length;
						break;
					case "function":
						keepRule = val.depends.call(element, element);
						break;
				}
				if (keepRule) {
					rules[prop] = val.param !== undefined ? val.param : true;
				} else {
					delete rules[prop];
				}
			}
		});
		
		// evaluate parameters
		$.each(rules, function(rule, parameter) {
			rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
		});
		
		// clean number parameters
		$.each(['minlength', 'maxlength', 'min', 'max'], function() {
			if (rules[this]) {
				rules[this] = Number(rules[this]);
			}
		});
		$.each(['rangelength', 'range'], function() {
			if (rules[this]) {
				rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
			}
		});
		
		if ($.validator.autoCreateRanges) {
			// auto-create ranges
			if (rules.min && rules.max) {
				rules.range = [rules.min, rules.max];
				delete rules.min;
				delete rules.max;
			}
			if (rules.minlength && rules.maxlength) {
				rules.rangelength = [rules.minlength, rules.maxlength];
				delete rules.minlength;
				delete rules.maxlength;
			}
		}
		
		// To support custom messages in metadata ignore rule methods titled "messages"
		if (rules.messages) {
			delete rules.messages
		}
		
		return rules;
	},
	
	// Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
	normalizeRule: function(data) {
		if( typeof data == "string" ) {
			var transformed = {};
			$.each(data.split(/\s/), function() {
				transformed[this] = true;
			});
			data = transformed;
		}
		return data;
	},
	
	// http://docs.jquery.com/Plugins/Validation/Validator/addMethod
	addMethod: function(name, method, message) {
		$.validator.methods[name] = method;
		$.validator.messages[name] = message;
		if (method.length < 3) {
			$.validator.addClassRules(name, $.validator.normalizeRule(name));
		}
	},

	methods: {

		// http://docs.jquery.com/Plugins/Validation/Methods/required
		required: function(value, element, param) {
			// check if dependency is met
			if ( !this.depend(param, element) )
				return "dependency-mismatch";
			switch( element.nodeName.toLowerCase() ) {
			case 'select':
				var options = $("option:selected", element);
				return options.length > 0 && ( element.type == "select-multiple" || ($.browser.msie && !(options[0].attributes['value'].specified) ? options[0].text : options[0].value).length > 0);
			case 'input':
				if ( this.checkable(element) )
					return this.getLength(value, element) > 0;
			default:
				return $.trim(value).length > 0;
			}
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/remote
		remote: function(value, element, param) {
			if ( this.optional(element) )
				return "dependency-mismatch";
			
			var previous = this.previousValue(element);
			
			if (!this.settings.messages[element.name] )
				this.settings.messages[element.name] = {};
			this.settings.messages[element.name].remote = typeof previous.message == "function" ? previous.message(value) : previous.message;
			
			param = typeof param == "string" && {url:param} || param; 
			
			if ( previous.old !== value ) {
				previous.old = value;
				var validator = this;
				this.startRequest(element);
				var data = {};
				data[element.name] = value;
				$.ajax($.extend(true, {
					url: param,
					mode: "abort",
					port: "validate" + element.name,
					dataType: "json",
					data: data,
					success: function(response) {
						if ( response ) {
							var submitted = validator.formSubmitted;
							validator.prepareElement(element);
							validator.formSubmitted = submitted;
							validator.successList.push(element);
							validator.showErrors();
						} else {
							var errors = {};
							errors[element.name] =  response || validator.defaultMessage( element, "remote" );
							validator.showErrors(errors);
						}
						previous.valid = response;
						validator.stopRequest(element, response);
					}
				}, param));
				return "pending";
			} else if( this.pending[element.name] ) {
				return "pending";
			}
			return previous.valid;
		},

		// http://docs.jquery.com/Plugins/Validation/Methods/minlength
		minlength: function(value, element, param) {
			return this.optional(element) || this.getLength($.trim(value), element) >= param;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/maxlength
		maxlength: function(value, element, param) {
			return this.optional(element) || this.getLength($.trim(value), element) <= param;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/rangelength
		rangelength: function(value, element, param) {
			var length = this.getLength($.trim(value), element);
			return this.optional(element) || ( length >= param[0] && length <= param[1] );
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/min
		min: function( value, element, param ) {
			return this.optional(element) || value >= param;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/max
		max: function( value, element, param ) {
			return this.optional(element) || value <= param;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/range
		range: function( value, element, param ) {
			return this.optional(element) || ( value >= param[0] && value <= param[1] );
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/email
		email: function(value, element) {
			// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
			return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
		},
	
		// http://docs.jquery.com/Plugins/Validation/Methods/url
		url: function(value, element) {
			// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
			return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
		},
        
		// http://docs.jquery.com/Plugins/Validation/Methods/date
		date: function(value, element) {
			return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
		},
	
		// http://docs.jquery.com/Plugins/Validation/Methods/dateISO
		dateISO: function(value, element) {
			return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);
		},
	
		// http://docs.jquery.com/Plugins/Validation/Methods/dateDE
		dateDE: function(value, element) {
			return this.optional(element) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value);
		},
	
		// http://docs.jquery.com/Plugins/Validation/Methods/number
		number: function(value, element) {
			return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
		},
	
		// http://docs.jquery.com/Plugins/Validation/Methods/numberDE
		numberDE: function(value, element) {
			return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/digits
		digits: function(value, element) {
			return this.optional(element) || /^\d+$/.test(value);
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/creditcard
		// based on http://en.wikipedia.org/wiki/Luhn
		creditcard: function(value, element) {
			if ( this.optional(element) )
				return "dependency-mismatch";
			// accept only digits and dashes
			if (/[^0-9-]+/.test(value))
				return false;
			var nCheck = 0,
				nDigit = 0,
				bEven = false;

			value = value.replace(/\D/g, "");

			for (n = value.length - 1; n >= 0; n--) {
				var cDigit = value.charAt(n);
				var nDigit = parseInt(cDigit, 10);
				if (bEven) {
					if ((nDigit *= 2) > 9)
						nDigit -= 9;
				}
				nCheck += nDigit;
				bEven = !bEven;
			}

			return (nCheck % 10) == 0;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/accept
		accept: function(value, element, param) {
			param = typeof param == "string" ? param : "png|jpe?g|gif";
			return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i")); 
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/equalTo
		equalTo: function(value, element, param) {
			return value == $(param).val();
		}
		
	}
	
});

})(jQuery);

// ajax mode: abort
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() 
;(function($) {
	var ajax = $.ajax;
	var pendingRequests = {};
	$.ajax = function(settings) {
		// create settings for compatibility with ajaxSetup
		settings = $.extend(settings, $.extend({}, $.ajaxSettings, settings));
		var port = settings.port;
		if (settings.mode == "abort") {
			if ( pendingRequests[port] ) {
				pendingRequests[port].abort();
			}
			return (pendingRequests[port] = ajax.apply(this, arguments));
		}
		return ajax.apply(this, arguments);
	};
})(jQuery);

// provides cross-browser focusin and focusout events
// IE has native support, in other browsers, use event caputuring (neither bubbles)

// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target 

// provides triggerEvent(type: String, target: Element) to trigger delegated events
;(function($) {
	$.each({
		focus: 'focusin',
		blur: 'focusout'	
	}, function( original, fix ){
		$.event.special[fix] = {
			setup:function() {
				if ( $.browser.msie ) return false;
				this.addEventListener( original, $.event.special[fix].handler, true );
			},
			teardown:function() {
				if ( $.browser.msie ) return false;
				this.removeEventListener( original,
				$.event.special[fix].handler, true );
			},
			handler: function(e) {
				arguments[0] = $.event.fix(e);
				arguments[0].type = fix;
				return $.event.handle.apply(this, arguments);
			}
		};
	});
	$.extend($.fn, {
		delegate: function(type, delegate, handler) {
			return this.bind(type, function(event) {
				var target = $(event.target);
				if (target.is(delegate)) {
					return handler.apply(target, arguments);
				}
			});
		},
		triggerEvent: function(type, target) {
			return this.triggerHandler(type, [$.event.fix({ type: type, target: target })]);
		}
	})
})(jQuery);


/*
 * jQuery Form Plugin
 * version: 2.02 (12/16/2007)
 * @requires jQuery v1.1 or later
 *
 * Examples at: http://malsup.com/jquery/form/
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Revision: $Id$
 */
 (function($) {
/**
 * ajaxSubmit() provides a mechanism for submitting an HTML form using AJAX.
 *
 * ajaxSubmit accepts a single argument which can be either a success callback function
 * or an options Object.  If a function is provided it will be invoked upon successful
 * completion of the submit and will be passed the response from the server.
 * If an options Object is provided, the following attributes are supported:
 *
 *  target:   Identifies the element(s) in the page to be updated with the server response.
 *            This value may be specified as a jQuery selection string, a jQuery object,
 *            or a DOM element.
 *            default value: null
 *
 *  url:      URL to which the form data will be submitted.
 *            default value: value of form's 'action' attribute
 *
 *  type:     The method in which the form data should be submitted, 'GET' or 'POST'.
 *            default value: value of form's 'method' attribute (or 'GET' if none found)
 *
 *  data:     Additional data to add to the request, specified as key/value pairs (see $.ajax).
 *
 *  beforeSubmit:  Callback method to be invoked before the form is submitted.
 *            default value: null
 *
 *  success:  Callback method to be invoked after the form has been successfully submitted
 *            and the response has been returned from the server
 *            default value: null
 *
 *  dataType: Expected dataType of the response.  One of: null, 'xml', 'script', or 'json'
 *            default value: null
 *
 *  semantic: Boolean flag indicating whether data must be submitted in semantic order (slower).
 *            default value: false
 *
 *  resetForm: Boolean flag indicating whether the form should be reset if the submit is successful
 *
 *  clearForm: Boolean flag indicating whether the form should be cleared if the submit is successful
 *
 *
 * The 'beforeSubmit' callback can be provided as a hook for running pre-submit logic or for
 * validating the form data.  If the 'beforeSubmit' callback returns false then the form will
 * not be submitted. The 'beforeSubmit' callback is invoked with three arguments: the form data
 * in array format, the jQuery object, and the options object passed into ajaxSubmit.
 * The form data array takes the following form:
 *
 *     [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
 *
 * If a 'success' callback method is provided it is invoked after the response has been returned
 * from the server.  It is passed the responseText or responseXML value (depending on dataType).
 * See jQuery.ajax for further details.
 *
 *
 * The dataType option provides a means for specifying how the server response should be handled.
 * This maps directly to the jQuery.httpData method.  The following values are supported:
 *
 *      'xml':    if dataType == 'xml' the server response is treated as XML and the 'success'
 *                   callback method, if specified, will be passed the responseXML value
 *      'json':   if dataType == 'json' the server response will be evaluted and passed to
 *                   the 'success' callback, if specified
 *      'script': if dataType == 'script' the server response is evaluated in the global context
 *
 *
 * Note that it does not make sense to use both the 'target' and 'dataType' options.  If both
 * are provided the target will be ignored.
 *
 * The semantic argument can be used to force form serialization in semantic order.
 * This is normally true anyway, unless the form contains input elements of type='image'.
 * If your form must be submitted with name/value pairs in semantic order and your form
 * contains an input of type='image" then pass true for this arg, otherwise pass false
 * (or nothing) to avoid the overhead for this logic.
 *
 *
 * When used on its own, ajaxSubmit() is typically bound to a form's submit event like this:
 *
 * $("#form-id").submit(function() {
 *     $(this).ajaxSubmit(options);
 *     return false; // cancel conventional submit
 * });
 *
 * When using ajaxForm(), however, this is done for you.
 *
 * @example
 * $('#myForm').ajaxSubmit(function(data) {
 *     alert('Form submit succeeded! Server returned: ' + data);
 * });
 * @desc Submit form and alert server response
 *
 *
 * @example
 * var options = {
 *     target: '#myTargetDiv'
 * };
 * $('#myForm').ajaxSubmit(options);
 * @desc Submit form and update page element with server response
 *
 *
 * @example
 * var options = {
 *     success: function(responseText) {
 *         alert(responseText);
 *     }
 * };
 * $('#myForm').ajaxSubmit(options);
 * @desc Submit form and alert the server response
 *
 *
 * @example
 * var options = {
 *     beforeSubmit: function(formArray, jqForm) {
 *         if (formArray.length == 0) {
 *             alert('Please enter data.');
 *             return false;
 *         }
 *     }
 * };
 * $('#myForm').ajaxSubmit(options);
 * @desc Pre-submit validation which aborts the submit operation if form data is empty
 *
 *
 * @example
 * var options = {
 *     url: myJsonUrl.php,
 *     dataType: 'json',
 *     success: function(data) {
 *        // 'data' is an object representing the the evaluated json data
 *     }
 * };
 * $('#myForm').ajaxSubmit(options);
 * @desc json data returned and evaluated
 *
 *
 * @example
 * var options = {
 *     url: myXmlUrl.php,
 *     dataType: 'xml',
 *     success: function(responseXML) {
 *        // responseXML is XML document object
 *        var data = $('myElement', responseXML).text();
 *     }
 * };
 * $('#myForm').ajaxSubmit(options);
 * @desc XML data returned from server
 *
 *
 * @example
 * var options = {
 *     resetForm: true
 * };
 * $('#myForm').ajaxSubmit(options);
 * @desc submit form and reset it if successful
 *
 * @example
 * $('#myForm).submit(function() {
 *    $(this).ajaxSubmit();
 *    return false;
 * });
 * @desc Bind form's submit event to use ajaxSubmit
 *
 *
 * @name ajaxSubmit
 * @type jQuery
 * @param options  object literal containing options which control the form submission process
 * @cat Plugins/Form
 * @return jQuery
 */
$.fn.ajaxSubmit = function(options) {
    if (typeof options == 'function')
        options = { success: options };

    options = $.extend({
        url:  this.attr('action') || window.location.toString(),
        type: this.attr('method') || 'GET'
    }, options || {});

    // hook for manipulating the form data before it is extracted;
    // convenient for use with rich editors like tinyMCE or FCKEditor
    var veto = {};
    $.event.trigger('form.pre.serialize', [this, options, veto]);
    if (veto.veto) return this;

    var a = this.formToArray(options.semantic);
	if (options.data) {
	    for (var n in options.data)
	        a.push( { name: n, value: options.data[n] } );
	}

    // give pre-submit callback an opportunity to abort the submit
    if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) return this;

    // fire vetoable 'validate' event
    $.event.trigger('form.submit.validate', [a, this, options, veto]);
    if (veto.veto) return this;

    var q = $.param(a);//.replace(/%20/g,'+');

    if (options.type.toUpperCase() == 'GET') {
        options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
        options.data = null;  // data is null for 'get'
    }
    else
        options.data = q; // data is the query string for 'post'

    var $form = this, callbacks = [];
    if (options.resetForm) callbacks.push(function() { $form.resetForm(); });
    if (options.clearForm) callbacks.push(function() { $form.clearForm(); });

    // perform a load on the target only if dataType is not provided
    if (!options.dataType && options.target) {
        var oldSuccess = options.success || function(){};
        callbacks.push(function(data) {
            if (this.evalScripts)
                $(options.target).attr("innerHTML", data).evalScripts().each(oldSuccess, arguments);
            else // jQuery v1.1.4
                $(options.target).html(data).each(oldSuccess, arguments);
        });
    }
    else if (options.success)
        callbacks.push(options.success);

    options.success = function(data, status) {
        for (var i=0, max=callbacks.length; i < max; i++)
            callbacks[i](data, status, $form);
    };

    // are there files to upload?
    var files = $('input:file', this).fieldValue();
    var found = false;
    for (var j=0; j < files.length; j++)
        if (files[j])
            found = true;

    // options.iframe allows user to force iframe mode
   if (options.iframe || found) { 
       // hack to fix Safari hang (thanks to Tim Molendijk for this)
       // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
       if ($.browser.safari && options.closeKeepAlive)
           $.get(options.closeKeepAlive, fileUpload);
       else
           fileUpload();
       }
   else
       $.ajax(options);

    // fire 'notify' event
    $.event.trigger('form.submit.notify', [this, options]);
    return this;


    // private function for handling file uploads (hat tip to YAHOO!)
    function fileUpload() {
        var form = $form[0];
        var opts = $.extend({}, $.ajaxSettings, options);

        var id = 'jqFormIO' + $.fn.ajaxSubmit.counter++;
        var $io = $('<iframe id="' + id + '" name="' + id + '" />');
        var io = $io[0];
        var op8 = $.browser.opera && window.opera.version() < 9;
        if ($.browser.msie || op8) io.src = 'javascript:false;document.write("");';
        $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });

        var xhr = { // mock object
            responseText: null,
            responseXML: null,
            status: 0,
            statusText: 'n/a',
            getAllResponseHeaders: function() {},
            getResponseHeader: function() {},
            setRequestHeader: function() {}
        };

        var g = opts.global;
        // trigger ajax global events so that activity/block indicators work like normal
        if (g && ! $.active++) $.event.trigger("ajaxStart");
        if (g) $.event.trigger("ajaxSend", [xhr, opts]);

        var cbInvoked = 0;
        var timedOut = 0;

        // take a breath so that pending repaints get some cpu time before the upload starts
        setTimeout(function() {
            // make sure form attrs are set
            var encAttr = form.encoding ? 'encoding' : 'enctype';
            var t = $form.attr('target');
            $form.attr({
                target:   id,
                method:  'POST',
                action:   opts.url
            });
            form[encAttr] = 'multipart/form-data';

            // support timout
            if (opts.timeout)
                setTimeout(function() { timedOut = true; cb(); }, opts.timeout);

            // add iframe to doc and submit the form
            $io.appendTo('body');
            io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
            form.submit();
            $form.attr('target', t); // reset target
        }, 10);

        function cb() {
            if (cbInvoked++) return;

            io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);

            var ok = true;
            try {
                if (timedOut) throw 'timeout';
                // extract the server response from the iframe
                var data, doc;
                doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
                xhr.responseText = doc.body ? doc.body.innerHTML : null;
                xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;

                if (opts.dataType == 'json' || opts.dataType == 'script') {
                    var ta = doc.getElementsByTagName('textarea')[0];
                    data = ta ? ta.value : xhr.responseText;
                    if (opts.dataType == 'json')
                        eval("data = " + data);
                    else
                        $.globalEval(data);
                }
                else if (opts.dataType == 'xml') {
                    data = xhr.responseXML;
                    if (!data && xhr.responseText != null)
                        data = toXml(xhr.responseText);
                }
                else {
                    data = xhr.responseText;
                }
            }
            catch(e){
                ok = false;
                $.handleError(opts, xhr, 'error', e);
            }

            // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
            if (ok) {
                opts.success(data, 'success');
                if (g) $.event.trigger("ajaxSuccess", [xhr, opts]);
            }
            if (g) $.event.trigger("ajaxComplete", [xhr, opts]);
            if (g && ! --$.active) $.event.trigger("ajaxStop");
            if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error');

            // clean up
            setTimeout(function() {
                $io.remove();
                xhr.responseXML = null;
            }, 100);
        };

        function toXml(s, doc) {
            if (window.ActiveXObject) {
                doc = new ActiveXObject('Microsoft.XMLDOM');
                doc.async = 'false';
                doc.loadXML(s);
            }
            else
                doc = (new DOMParser()).parseFromString(s, 'text/xml');
            return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;
        };
    };
};
$.fn.ajaxSubmit.counter = 0; // used to create unique iframe ids

/**
 * ajaxForm() provides a mechanism for fully automating form submission.
 *
 * The advantages of using this method instead of ajaxSubmit() are:
 *
 * 1: This method will include coordinates for <input type="image" /> elements (if the element
 *    is used to submit the form).
 * 2. This method will include the submit element's name/value data (for the element that was
 *    used to submit the form).
 * 3. This method binds the submit() method to the form for you.
 *
 * Note that for accurate x/y coordinates of image submit elements in all browsers
 * you need to also use the "dimensions" plugin (this method will auto-detect its presence).
 *
 * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely
 * passes the options argument along after properly binding events for submit elements and
 * the form itself.  See ajaxSubmit for a full description of the options argument.
 *
 *
 * @example
 * var options = {
 *     target: '#myTargetDiv'
 * };
 * $('#myForm').ajaxSForm(options);
 * @desc Bind form's submit event so that 'myTargetDiv' is updated with the server response
 *       when the form is submitted.
 *
 *
 * @example
 * var options = {
 *     success: function(responseText) {
 *         alert(responseText);
 *     }
 * };
 * $('#myForm').ajaxSubmit(options);
 * @desc Bind form's submit event so that server response is alerted after the form is submitted.
 *
 *
 * @example
 * var options = {
 *     beforeSubmit: function(formArray, jqForm) {
 *         if (formArray.length == 0) {
 *             alert('Please enter data.');
 *             return false;
 *         }
 *     }
 * };
 * $('#myForm').ajaxSubmit(options);
 * @desc Bind form's submit event so that pre-submit callback is invoked before the form
 *       is submitted.
 *
 *
 * @name   ajaxForm
 * @param  options  object literal containing options which control the form submission process
 * @return jQuery
 * @cat    Plugins/Form
 * @type   jQuery
 */
$.fn.ajaxForm = function(options) {
    return this.ajaxFormUnbind().submit(submitHandler).each(function() {
        // store options in hash
        this.formPluginId = $.fn.ajaxForm.counter++;
        $.fn.ajaxForm.optionHash[this.formPluginId] = options;
        $(":submit,input:image", this).click(clickHandler);
    });
};

$.fn.ajaxForm.counter = 1;
$.fn.ajaxForm.optionHash = {};

function clickHandler(e) {
    var $form = this.form;
    $form.clk = this;
    if (this.type == 'image') {
        if (e.offsetX != undefined) {
            $form.clk_x = e.offsetX;
            $form.clk_y = e.offsetY;
        } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
            var offset = $(this).offset();
            $form.clk_x = e.pageX - offset.left;
            $form.clk_y = e.pageY - offset.top;
        } else {
            $form.clk_x = e.pageX - this.offsetLeft;
            $form.clk_y = e.pageY - this.offsetTop;
        }
    }
    // clear form vars
    setTimeout(function() { $form.clk = $form.clk_x = $form.clk_y = null; }, 10);
};

function submitHandler() {
    // retrieve options from hash
    var id = this.formPluginId;
    var options = $.fn.ajaxForm.optionHash[id];
    $(this).ajaxSubmit(options);
    return false;
};

/**
 * ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
 *
 * @name   ajaxFormUnbind
 * @return jQuery
 * @cat    Plugins/Form
 * @type   jQuery
 */
$.fn.ajaxFormUnbind = function() {
    this.unbind('submit', submitHandler);
    return this.each(function() {
        $(":submit,input:image", this).unbind('click', clickHandler);
    });

};

/**
 * formToArray() gathers form element data into an array of objects that can
 * be passed to any of the following ajax functions: $.get, $.post, or load.
 * Each object in the array has both a 'name' and 'value' property.  An example of
 * an array for a simple login form might be:
 *
 * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
 *
 * It is this array that is passed to pre-submit callback functions provided to the
 * ajaxSubmit() and ajaxForm() methods.
 *
 * The semantic argument can be used to force form serialization in semantic order.
 * This is normally true anyway, unless the form contains input elements of type='image'.
 * If your form must be submitted with name/value pairs in semantic order and your form
 * contains an input of type='image" then pass true for this arg, otherwise pass false
 * (or nothing) to avoid the overhead for this logic.
 *
 * @example var data = $("#myForm").formToArray();
 * $.post( "myscript.cgi", data );
 * @desc Collect all the data from a form and submit it to the server.
 *
 * @name formToArray
 * @param semantic true if serialization must maintain strict semantic ordering of elements (slower)
 * @type Array<Object>
 * @cat Plugins/Form
 */
$.fn.formToArray = function(semantic) {
    var a = [];
    if (this.length == 0) return a;

    var form = this[0];
    var els = semantic ? form.getElementsByTagName('*') : form.elements;
    if (!els) return a;
    for(var i=0, max=els.length; i < max; i++) {
        var el = els[i];
        var n = el.name;
        if (!n) continue;

        if (semantic && form.clk && el.type == "image") {
            // handle image inputs on the fly when semantic == true
            if(!el.disabled && form.clk == el)
                a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
            continue;
        }

        var v = $.fieldValue(el, true);
        if (v && v.constructor == Array) {
            for(var j=0, jmax=v.length; j < jmax; j++)
                a.push({name: n, value: v[j]});
        }
        else if (v !== null && typeof v != 'undefined')
            a.push({name: n, value: v});
    }

    if (!semantic && form.clk) {
        // input type=='image' are not found in elements array! handle them here
        var inputs = form.getElementsByTagName("input");
        for(var i=0, max=inputs.length; i < max; i++) {
            var input = inputs[i];
            var n = input.name;
            if(n && !input.disabled && input.type == "image" && form.clk == input)
                a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
        }
    }
    return a;
};


/**
 * Serializes form data into a 'submittable' string. This method will return a string
 * in the format: name1=value1&amp;name2=value2
 *
 * The semantic argument can be used to force form serialization in semantic order.
 * If your form must be submitted with name/value pairs in semantic order then pass
 * true for this arg, otherwise pass false (or nothing) to avoid the overhead for
 * this logic (which can be significant for very large forms).
 *
 * @example var data = $("#myForm").formSerialize();
 * $.ajax('POST', "myscript.cgi", data);
 * @desc Collect all the data from a form into a single string
 *
 * @name formSerialize
 * @param semantic true if serialization must maintain strict semantic ordering of elements (slower)
 * @type String
 * @cat Plugins/Form
 */
$.fn.formSerialize = function(semantic) {
    //hand off to jQuery.param for proper encoding
    return $.param(this.formToArray(semantic));
};


/**
 * Serializes all field elements in the jQuery object into a query string.
 * This method will return a string in the format: name1=value1&amp;name2=value2
 *
 * The successful argument controls whether or not serialization is limited to
 * 'successful' controls (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
 * The default value of the successful argument is true.
 *
 * @example var data = $("input").formSerialize();
 * @desc Collect the data from all successful input elements into a query string
 *
 * @example var data = $(":radio").formSerialize();
 * @desc Collect the data from all successful radio input elements into a query string
 *
 * @example var data = $("#myForm :checkbox").formSerialize();
 * @desc Collect the data from all successful checkbox input elements in myForm into a query string
 *
 * @example var data = $("#myForm :checkbox").formSerialize(false);
 * @desc Collect the data from all checkbox elements in myForm (even the unchecked ones) into a query string
 *
 * @example var data = $(":input").formSerialize();
 * @desc Collect the data from all successful input, select, textarea and button elements into a query string
 *
 * @name fieldSerialize
 * @param successful true if only successful controls should be serialized (default is true)
 * @type String
 * @cat Plugins/Form
 */
$.fn.fieldSerialize = function(successful) {
    var a = [];
    this.each(function() {
        var n = this.name;
        if (!n) return;
        var v = $.fieldValue(this, successful);
        if (v && v.constructor == Array) {
            for (var i=0,max=v.length; i < max; i++)
                a.push({name: n, value: v[i]});
        }
        else if (v !== null && typeof v != 'undefined')
            a.push({name: this.name, value: v});
    });
    //hand off to jQuery.param for proper encoding
    return $.param(a);
};


/**
 * Returns the value(s) of the element in the matched set.  For example, consider the following form:
 *
 *  <form><fieldset>
 *      <input name="A" type="text" />
 *      <input name="A" type="text" />
 *      <input name="B" type="checkbox" value="B1" />
 *      <input name="B" type="checkbox" value="B2"/>
 *      <input name="C" type="radio" value="C1" />
 *      <input name="C" type="radio" value="C2" />
 *  </fieldset></form>
 *
 *  var v = $(':text').fieldValue();
 *  // if no values are entered into the text inputs
 *  v == ['','']
 *  // if values entered into the text inputs are 'foo' and 'bar'
 *  v == ['foo','bar']
 *
 *  var v = $(':checkbox').fieldValue();
 *  // if neither checkbox is checked
 *  v === undefined
 *  // if both checkboxes are checked
 *  v == ['B1', 'B2']
 *
 *  var v = $(':radio').fieldValue();
 *  // if neither radio is checked
 *  v === undefined
 *  // if first radio is checked
 *  v == ['C1']
 *
 * The successful argument controls whether or not the field element must be 'successful'
 * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
 * The default value of the successful argument is true.  If this value is false the value(s)
 * for each element is returned.
 *
 * Note: This method *always* returns an array.  If no valid value can be determined the
 *       array will be empty, otherwise it will contain one or more values.
 *
 * @example var data = $("#myPasswordElement").fieldValue();
 * alert(data[0]);
 * @desc Alerts the current value of the myPasswordElement element
 *
 * @example var data = $("#myForm :input").fieldValue();
 * @desc Get the value(s) of the form elements in myForm
 *
 * @example var data = $("#myForm :checkbox").fieldValue();
 * @desc Get the value(s) for the successful checkbox element(s) in the jQuery object.
 *
 * @example var data = $("#mySingleSelect").fieldValue();
 * @desc Get the value(s) of the select control
 *
 * @example var data = $(':text').fieldValue();
 * @desc Get the value(s) of the text input or textarea elements
 *
 * @example var data = $("#myMultiSelect").fieldValue();
 * @desc Get the values for the select-multiple control
 *
 * @name fieldValue
 * @param Boolean successful true if only the values for successful controls should be returned (default is true)
 * @type Array<String>
 * @cat Plugins/Form
 */
$.fn.fieldValue = function(successful) {
    for (var val=[], i=0, max=this.length; i < max; i++) {
        var el = this[i];
        var v = $.fieldValue(el, successful);
        if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length))
            continue;
        v.constructor == Array ? $.merge(val, v) : val.push(v);
    }
    return val;
};

/**
 * Returns the value of the field element.
 *
 * The successful argument controls whether or not the field element must be 'successful'
 * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
 * The default value of the successful argument is true.  If the given element is not
 * successful and the successful arg is not false then the returned value will be null.
 *
 * Note: If the successful flag is true (default) but the element is not successful, the return will be null
 * Note: The value returned for a successful select-multiple element will always be an array.
 * Note: If the element has no value the return value will be undefined.
 *
 * @example var data = jQuery.fieldValue($("#myPasswordElement")[0]);
 * @desc Gets the current value of the myPasswordElement element
 *
 * @name fieldValue
 * @param Element el The DOM element for which the value will be returned
 * @param Boolean successful true if value returned must be for a successful controls (default is true)
 * @type String or Array<String> or null or undefined
 * @cat Plugins/Form
 */
$.fieldValue = function(el, successful) {
    var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
    if (typeof successful == 'undefined') successful = true;

    if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
        (t == 'checkbox' || t == 'radio') && !el.checked ||
        (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
        tag == 'select' && el.selectedIndex == -1))
            return null;

    if (tag == 'select') {
        var index = el.selectedIndex;
        if (index < 0) return null;
        var a = [], ops = el.options;
        var one = (t == 'select-one');
        var max = (one ? index+1 : ops.length);
        for(var i=(one ? index : 0); i < max; i++) {
            var op = ops[i];
            if (op.selected) {
                // extra pain for IE...
                var v = $.browser.msie && !(op.attributes['value'].specified) ? op.text : op.value;
                if (one) return v;
                a.push(v);
            }
        }
        return a;
    }
    return el.value;
};


/**
 * Clears the form data.  Takes the following actions on the form's input fields:
 *  - input text fields will have their 'value' property set to the empty string
 *  - select elements will have their 'selectedIndex' property set to -1
 *  - checkbox and radio inputs will have their 'checked' property set to false
 *  - inputs of type submit, button, reset, and hidden will *not* be effected
 *  - button elements will *not* be effected
 *
 * @example $('form').clearForm();
 * @desc Clears all forms on the page.
 *
 * @name clearForm
 * @type jQuery
 * @cat Plugins/Form
 */
$.fn.clearForm = function() {
    return this.each(function() {
        $('input,select,textarea', this).clearFields();
    });
};

/**
 * Clears the selected form elements.  Takes the following actions on the matched elements:
 *  - input text fields will have their 'value' property set to the empty string
 *  - select elements will have their 'selectedIndex' property set to -1
 *  - checkbox and radio inputs will have their 'checked' property set to false
 *  - inputs of type submit, button, reset, and hidden will *not* be effected
 *  - button elements will *not* be effected
 *
 * @example $('.myInputs').clearFields();
 * @desc Clears all inputs with class myInputs
 *
 * @name clearFields
 * @type jQuery
 * @cat Plugins/Form
 */
$.fn.clearFields = $.fn.clearInputs = function() {
    return this.each(function() {
        var t = this.type, tag = this.tagName.toLowerCase();
        if (t == 'text' || t == 'password' || tag == 'textarea')
            this.value = '';
        else if (t == 'checkbox' || t == 'radio')
            this.checked = false;
        else if (tag == 'select')
            this.selectedIndex = -1;
    });
};


/**
 * Resets the form data.  Causes all form elements to be reset to their original value.
 *
 * @example $('form').resetForm();
 * @desc Resets all forms on the page.
 *
 * @name resetForm
 * @type jQuery
 * @cat Plugins/Form
 */
$.fn.resetForm = function() {
    return this.each(function() {
        // guard against an input with the name of 'reset'
        // note that IE reports the reset function as an 'object'
        if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))
            this.reset();
    });
};


/**
 * Enables or disables any matching elements.
 *
 * @example $(':radio').enabled(false);
 * @desc Disables all radio buttons
 *
 * @name select
 * @type jQuery
 * @cat Plugins/Form
 */
$.fn.enable = function(b) { 
    if (b == undefined) b = true;
    return this.each(function() { 
        this.disabled = !b 
    });
};

/**
 * Checks/unchecks any matching checkboxes or radio buttons and
 * selects/deselects and matching option elements.
 *
 * @example $(':checkbox').selected();
 * @desc Checks all checkboxes
 *
 * @name select
 * @type jQuery
 * @cat Plugins/Form
 */
$.fn.select = function(select) {
    if (select == undefined) select = true;
    return this.each(function() { 
        var t = this.type;
        if (t == 'checkbox' || t == 'radio')
            this.checked = select;
        else if (this.tagName.toLowerCase() == 'option') {
            var $sel = $(this).parent('select');
            if (select && $sel[0] && $sel[0].type == 'select-one') {
                // deselect all other options
                $sel.find('option').select(false);
            }
            this.selected = select;
        }
    });
};

})(jQuery);



(function($){
$.fn.fancyZoom = function(options){

  var options   = options || {};
  var directory = options && options.directory ? options.directory : '/img/fancyzoom';
  var zooming   = false;

  if ($('#zoom').length == 0) {
    var ext = $.browser.msie ? 'gif' : 'png';
    var html = '<div id="zoom" style="display:none;"> \
                  <table id="zoom_table" style="border-collapse:collapse; width:100%; height:100%;"> \
                    <tbody> \
                      <tr> \
                        <td class="tl" style="background:url(' + directory + '/tl.' + ext + ') 0 0 no-repeat; width:20px; height:20px; overflow:hidden;" /> \
                        <td class="tm" style="background:url(' + directory + '/tm.' + ext + ') 0 0 repeat-x; height:20px; overflow:hidden;" /> \
                        <td class="tr" style="background:url(' + directory + '/tr.' + ext + ') 100% 0 no-repeat; width:20px; height:20px; overflow:hidden;" /> \
                      </tr> \
                      <tr> \
                        <td class="ml" style="background:url(' + directory + '/ml.' + ext + ') 0 0 repeat-y; width:20px; overflow:hidden;" /> \
                        <td class="mm" style="background:#fff; vertical-align:top; padding:10px;"> \
                          <div id="zoom_content"> \
                          </div> \
                        </td> \
                        <td class="mr" style="background:url(' + directory + '/mr.' + ext + ') 100% 0 repeat-y;  width:20px; overflow:hidden;" /> \
                      </tr> \
                      <tr> \
                        <td class="bl" style="background:url(' + directory + '/bl.' + ext + ') 0 100% no-repeat; width:20px; height:20px; overflow:hidden;" /> \
                        <td class="bm" style="background:url(' + directory + '/bm.' + ext + ') 0 100% repeat-x; height:20px; overflow:hidden;" /> \
                        <td class="br" style="background:url(' + directory + '/br.' + ext + ') 100% 100% no-repeat; width:20px; height:20px; overflow:hidden;" /> \
                      </tr> \
                    </tbody> \
                  </table> \
                  <a href="#" title="Close" id="zoom_close" style="position:absolute; top:0; left:0;"> \
                    <img src="' + directory + '/closebox.' + ext + '" alt="Close" style="border:none; margin:0; padding:0;" /> \
                  </a> \
                </div>';

    $('body').append(html);

    $('html').click(function(e){if($(e.target).parents('#zoom:visible').length == 0) hide();});
    $(document).keyup(function(event){
        if (event.keyCode == 27 && $('#zoom:visible').length > 0) hide();
    });

    $('#zoom_close').click(hide);
  }

  var zoom          = $('#zoom');
  var zoom_table    = $('#zoom_table');
  var zoom_close    = $('#zoom_close');
  var zoom_content  = $('#zoom_content');
  var middle_row    = $('td.ml,td.mm,td.mr');

  this.each(function(i) {
    $($(this).attr('href')).hide();
    $(this).click(show);
  });

  return this;

  function show(e) {
    if (zooming) return false;
		zooming         = true;
		var content_div = $($(this).attr('href'));
  	var zoom_width  = options.width;
		var zoom_height = options.height;
		var href 					= $(this).attr('href');
		var width       = window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth);
  	var height      = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight);
  	var x           = window.pageXOffset || (window.document.documentElement.scrollLeft || window.document.body.scrollLeft);
  	var y           = window.pageYOffset || (window.document.documentElement.scrollTop || window.document.body.scrollTop);
  	var window_size = {'width':width, 'height':height, 'x':x, 'y':y}

		var width              = (zoom_width || content_div.width()) + 60;
		var height             = (zoom_height || content_div.height()) + 60;
		var d                  = window_size;

		// ensure that newTop is at least 0 so it doesn't hide close button
		var newTop             = Math.max((d.height/2) - (height/2) + y, 0);
		var newLeft            = (d.width/2) - (width/2);
		var curTop             = e.pageY;
		var curLeft            = e.pageX;

		zoom_close.attr('curTop', curTop);
		zoom_close.attr('curLeft', curLeft);
		zoom_close.attr('scaleImg', options.scaleImg ? 'true' : 'false');

    $('#zoom').hide().css({
			position	: 'absolute',
			top				: curTop + 'px',
			left			: curLeft + 'px',
			width     : '1px',
			height    : '1px'
		});

    fixBackgroundsForIE();
    zoom_close.hide();

    if (options.closeOnClick) {
      $('#zoom').click(hide);
    }
		
		if($(this).attr('href').indexOf('http') != -1){
			var iframe = true;
		}
		
		if (options.scaleImg) {
			if(iframe == true){
				zoom_content.html('<iframe src="'+href+'" width="100%" height="450" style="overflow:hidden; width:100%; height:450px;	"></iframe>');
			}else{
	  		zoom_content.html(content_div.html());
			}
  		$('#zoom_content img').css('width', '100%');
		} else {
		  zoom_content.html('');
		}

    $('#zoom').animate({
      top     : newTop + 'px',
      left    : newLeft + 'px',
      opacity : "show",
      width   : width,
      height  : height
    }, 500, null, function() {
      if (options.scaleImg != true) {
				if(iframe == true){
					zoom_content.html('<iframe src="'+href+'" width="100%" height="450" style="overflow:hidden; width:100%; height:450px;	"></iframe>');
				}else{
		  		zoom_content.html(content_div.html());
				}
  		}
			unfixBackgroundsForIE();
			zoom_close.show();
			zooming = false;
    })
    return false;
  }

  function hide() {
    if (zooming) return false;
		zooming         = true;
	  $('#zoom').unbind('click');
		fixBackgroundsForIE();
		if (zoom_close.attr('scaleImg') != 'true') {
  		zoom_content.html('');
		}
		zoom_close.hide();
		$('#zoom').animate({
      top     : zoom_close.attr('curTop') + 'px',
      left    : zoom_close.attr('curLeft') + 'px',
      opacity : "hide",
      width   : '1px',
      height  : '1px'
    }, 500, null, function() {
      if (zoom_close.attr('scaleImg') == 'true') {
    		zoom_content.html('');
  		}
      unfixBackgroundsForIE();
			zooming = false;
    });
    return false;
  }

  function switchBackgroundImagesTo(to) {
    $('#zoom_table td').each(function(i) {
      var bg = $(this).css('background-image').replace(/\.(png|gif|none)\"\)$/, '.' + to + '")');
      $(this).css('background-image', bg);
    });
    var close_img = zoom_close.children('img');
    var new_img = close_img.attr('src').replace(/\.(png|gif|none)$/, '.' + to);
    close_img.attr('src', new_img);
  }

  function fixBackgroundsForIE() {
    if ($.browser.msie && parseFloat($.browser.version) >= 7) {
      switchBackgroundImagesTo('gif');
    }
	}

  function unfixBackgroundsForIE() {
    if ($.browser.msie && $.browser.version >= 7) {
      switchBackgroundImagesTo('png');
    }
	}
}
})(jQuery);

//////////////////////////////////////////////////// General JS for SportZing.com// Requires jQuery//////////////////////////////////////////////////$(document).ready(function(){	disclosureBoxes();	externalLinks();	$('a[rel*=facebox]').facebox();	// add .last class	$('ul li:last-child').addClass('last');	// Zebra stripe tables	$(".zebra-stripe tr").mouseover(function() {$(this).addClass("tr-over");}).mouseout(function() {$(this).removeClass("tr-over");});	$(".zebra-stripe tr:even").addClass("even");	$(".zebra-stripe tr:odd").addClass("odd");	$("#subnav li a:first").css("border-top","0px");	$("#interior #footer_logos").mouseover(function() {$(this).stop().animate({opacity:'1'}, 500);}).mouseout(function() {$(this).stop().animate({opacity:'.4'}, 500);}).css('opacity','.4');	$('#home #footer_logos #colored').css('opacity','0');	$('#home #footer_logos #faded').mouseover(function(){		$('#home #footer_logos #colored').stop().animate({opacity:'1', height:'59px'}, 1500);	}).mouseout(function(){		$('#home #footer_logos #colored').stop().animate({opacity:'0', height:'0'}, 500);	});});// Disclosure Boxes - toggle opn/closed a div with class .disclosure contentfunction disclosureBoxes(){	prepDisclosureBoxes(); // get interface ready		$('a.toggle').click(function(){		$(this).parent().next('.disclosure-content').slideToggle("slow");		$(this).toggleClass('active');		return false;	});}// Close all disclosure boxes by default (progressive enhancement)// Wrap all disclosure titles with an anchor tag trigger interactionfunction prepDisclosureBoxes(){	$('.disclosure-content').css({'display':'none'});	$('.disclosure-title').wrapInner('<a href="#" class="toggle" title="click to open"></a>');}// Launch content in new window// Add rel="external" on any link to launch new windowfunction externalLinks() { 	if (!document.getElementsByTagName) return;	var anchors = document.getElementsByTagName("a");		for (var i=0; i<anchors.length; i++) {		   var anchor = anchors[i];		   if (anchor.getAttribute("href") &&			   anchor.getAttribute("rel") == "external")			 anchor.target = "_blank";		}}function getPageWidth() {  var windowWidth;  if( typeof( window.innerWidth ) == 'number' ) {    windowWidth = window.innerWidth; //Non-IE  } else if( document.documentElement && ( document.documentElement.clientWidth ) ) {    windowWidth = document.documentElement.clientWidth; //IE 6+ in 'standards compliant mode'  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {		windowWidth = document.body.clientWidth; //IE 4 compatible	}	return windowWidth;}/* FaceboxTo activate from HTML page: <a href="pic-or-other-file" rel="facebox">------------------------------------------------------------------------- */(function($) {	var imgDir = "/img/";  $.facebox = function(data, klass) {    $.facebox.loading()    if (data.ajax) fillFaceboxFromAjax(data.ajax)    else if (data.image) fillFaceboxFromImage(data.image)    else if (data.div) fillFaceboxFromHref(data.div)    else if ($.isFunction(data)) data.call($)    else $.facebox.reveal(data, klass)  }  /*   * Public, $.facebox methods   */  $.extend($.facebox, {    settings: {      opacity      : .3,      overlay      : true,      loadingImage : '/facebox/loading.gif',      closeImage   : '/facebox/closelabel.gif',      imageTypes   : [ 'png', 'jpg', 'jpeg', 'gif' ],      faceboxHtml  : '\    <div id="facebox" style="display:none;"> \      <div class="popup"> \        <table> \          <tbody> \            <tr> \              <td class="tl"/><td class="b"/><td class="tr"/> \            </tr> \            <tr> \              <td class="b"/> \              <td class="body"> \                <div class="facebox-content"> \                </div> \                <div class="footer"> \                  <a href="#" class="close"> \                    <img src="/facebox/closelabel.gif" title="close" class="close_image" /> \                  </a> \                </div> \              </td> \              <td class="b"/> \            </tr> \            <tr> \              <td class="bl"/><td class="b"/><td class="br"/> \            </tr> \          </tbody> \        </table> \      </div> \    </div>'    },    loading: function() {      init()      if ($('#facebox .loading').length == 1) return true      showOverlay()      $('#facebox .facebox-content').empty()      $('#facebox .body').children().hide().end().        append('<div class="loading"><img src="'+$.facebox.settings.loadingImage+'"/></div>')      $('#facebox').css({        top:	getPageScroll()[1] + (getPageHeight() / 10),        left:	((getPageWidth() / 2) - 35)       }).show()      $(document).bind('keydown.facebox', function(e) {        if (e.keyCode == 27) $.facebox.close()        return true      })      $(document).trigger('loading.facebox')    },    reveal: function(data, klass) {      $(document).trigger('beforeReveal.facebox')      if (klass) $('#facebox .facebox-content').addClass(klass)      $('#facebox .facebox-content').append(data)      $('#facebox .loading').remove()      $('#facebox .body').children().fadeIn('normal')      $('#facebox').css('left', $(window).width() / 2 - ($('#facebox table').width() / 2))      $(document).trigger('reveal.facebox').trigger('afterReveal.facebox')    },    close: function() {      $(document).trigger('close.facebox')      return false    }  })  /*   * Public, $.fn methods   */  $.fn.facebox = function(settings) {    init(settings)    function clickHandler() {      $.facebox.loading(true)      // support for rel="facebox.inline_popup" syntax, to add a class      // also supports deprecated "facebox[.inline_popup]" syntax      var klass = this.rel.match(/facebox\[?\.(\w+)\]?/)      if (klass) klass = klass[1]      fillFaceboxFromHref(this.href, klass)      return false    }    return this.click(clickHandler)  }  /*   * Private methods   */  // called one time to setup facebox on this page  function init(settings) {    if ($.facebox.settings.inited) return true    else $.facebox.settings.inited = true    $(document).trigger('init.facebox')    makeCompatible()    var imageTypes = $.facebox.settings.imageTypes.join('|')    $.facebox.settings.imageTypesRegexp = new RegExp('\.' + imageTypes + '$', 'i')    if (settings) $.extend($.facebox.settings, settings)    $('body').append($.facebox.settings.faceboxHtml)    var preload = [ new Image(), new Image() ]    preload[0].src = $.facebox.settings.closeImage    preload[1].src = $.facebox.settings.loadingImage    $('#facebox').find('.b:first, .bl, .br, .tl, .tr').each(function() {      preload.push(new Image())      preload.slice(-1).src = $(this).css('background-image').replace(/url\((.+)\)/, '$1')    })    $('#facebox .close').click($.facebox.close)    $('#facebox .close_image').attr('src', $.facebox.settings.closeImage)  }    // getPageScroll() by quirksmode.com  function getPageScroll() {    var xScroll, yScroll;    if (self.pageYOffset) {      yScroll = self.pageYOffset;      xScroll = self.pageXOffset;    } else if (document.documentElement && document.documentElement.scrollTop) {	 // Explorer 6 Strict      yScroll = document.documentElement.scrollTop;      xScroll = document.documentElement.scrollLeft;    } else if (document.body) {// all other Explorers      yScroll = document.body.scrollTop;      xScroll = document.body.scrollLeft;	    }    return new Array(xScroll,yScroll)   }  // Adapted from getPageSize() by quirksmode.com  function getPageHeight() {    var windowHeight    if (self.innerHeight) {	// all except Explorer      windowHeight = self.innerHeight;    } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode      windowHeight = document.documentElement.clientHeight;    } else if (document.body) { // other Explorers      windowHeight = document.body.clientHeight;    }	    return windowHeight  }  // Backwards compatibility  function makeCompatible() {    var $s = $.facebox.settings    $s.loadingImage = $s.loading_image || $s.loadingImage    $s.closeImage = $s.close_image || $s.closeImage    $s.imageTypes = $s.image_types || $s.imageTypes    $s.faceboxHtml = $s.facebox_html || $s.faceboxHtml  }  // Figures out what you want to display and displays it  // formats are:  //     div: #id  //   image: blah.extension  //    ajax: anything else  function fillFaceboxFromHref(href, klass) {    // div    if (href.match(/#/)) {      var url    = window.location.href.split('#')[0]      var target = href.replace(url,'')      $.facebox.reveal($(target).clone().show(), klass)    // image    } else if (href.match($.facebox.settings.imageTypesRegexp)) {      fillFaceboxFromImage(href, klass)    // ajax    } else {      fillFaceboxFromAjax(href, klass)    }  }  function fillFaceboxFromImage(href, klass) {    var image = new Image()    image.onload = function() {      $.facebox.reveal('<div class="image"><img src="' + image.src + '" /></div>', klass)    }    image.src = href  }  function fillFaceboxFromAjax(href, klass) {    $.get(href, function(data) { $.facebox.reveal(data, klass) })  }  function skipOverlay() {    return $.facebox.settings.overlay == false || $.facebox.settings.opacity === null   }  function showOverlay() {    if (skipOverlay()) return    if ($('facebox_overlay').length == 0)       $("body").append('<div id="facebox_overlay" class="facebox_hide"></div>')    $('#facebox_overlay').hide().addClass("facebox_overlayBG")      .css('opacity', $.facebox.settings.opacity)      .click(function() { $(document).trigger('close.facebox') })      .fadeIn(200)    return false  }  function hideOverlay() {    if (skipOverlay()) return    $('#facebox_overlay').fadeOut(200, function(){      $("#facebox_overlay").removeClass("facebox_overlayBG")      $("#facebox_overlay").addClass("facebox_hide")       $("#facebox_overlay").remove()    })        return false  }  /*   * Bindings   */  $(document).bind('close.facebox', function() {    $(document).unbind('keydown.facebox')    $('#facebox').fadeOut(function() {      $('#facebox .facebox-content').removeClass().addClass('facebox-content')      hideOverlay()      $('#facebox .loading').remove()    })  })})(jQuery);/* Tabs Plugin by James Childers */jQuery.fn.tabs = function(transition){	$(this).find('li a').each(function(){		$($(this).attr('href')).hide();	});	$($(this).find('li a:first').attr('href')).show();	$(this).find('li a:first').addClass('active');	$(this).find('li a').click(function(){		$(this).parent().parent().find('a').each(function(){			$($(this).attr('href')).hide();			$(this).removeClass('active');		});		$($(this).attr('href')).show();		if(transition){			switch(transition){				case 'fade':					$($(this).attr('href')).css('opacity','0');					$($(this).attr('href')).animate({						opacity: 1					}, 500 );					break;				case 'slide':					// get widths					// create container					// set container width based on children widths					// set container overflow:hidden					// float divs left					break;									default:					$($(this).attr('href')).css('opacity','1');					break;			}		}		$(this).attr('class','active');		return false;	});}

/*
 * Copyright (c) 2009 Simo Kinnunen.
 * Licensed under the MIT license.
 *
 * @version 1.09
 */
var Cufon=(function(){var m=function(){return m.replace.apply(null,arguments)};var x=m.DOM={ready:(function(){var C=false,E={loaded:1,complete:1};var B=[],D=function(){if(C){return}C=true;for(var F;F=B.shift();F()){}};if(document.addEventListener){document.addEventListener("DOMContentLoaded",D,false);window.addEventListener("pageshow",D,false)}if(!window.opera&&document.readyState){(function(){E[document.readyState]?D():setTimeout(arguments.callee,10)})()}if(document.readyState&&document.createStyleSheet){(function(){try{document.body.doScroll("left");D()}catch(F){setTimeout(arguments.callee,1)}})()}q(window,"load",D);return function(F){if(!arguments.length){D()}else{C?F():B.push(F)}}})(),root:function(){return document.documentElement||document.body}};var n=m.CSS={Size:function(C,B){this.value=parseFloat(C);this.unit=String(C).match(/[a-z%]*$/)[0]||"px";this.convert=function(D){return D/B*this.value};this.convertFrom=function(D){return D/this.value*B};this.toString=function(){return this.value+this.unit}},addClass:function(C,B){var D=C.className;C.className=D+(D&&" ")+B;return C},color:j(function(C){var B={};B.color=C.replace(/^rgba\((.*?),\s*([\d.]+)\)/,function(E,D,F){B.opacity=parseFloat(F);return"rgb("+D+")"});return B}),fontStretch:j(function(B){if(typeof B=="number"){return B}if(/%$/.test(B)){return parseFloat(B)/100}return{"ultra-condensed":0.5,"extra-condensed":0.625,condensed:0.75,"semi-condensed":0.875,"semi-expanded":1.125,expanded:1.25,"extra-expanded":1.5,"ultra-expanded":2}[B]||1}),getStyle:function(C){var B=document.defaultView;if(B&&B.getComputedStyle){return new a(B.getComputedStyle(C,null))}if(C.currentStyle){return new a(C.currentStyle)}return new a(C.style)},gradient:j(function(F){var G={id:F,type:F.match(/^-([a-z]+)-gradient\(/)[1],stops:[]},C=F.substr(F.indexOf("(")).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);for(var E=0,B=C.length,D;E<B;++E){D=C[E].split("=",2).reverse();G.stops.push([D[1]||E/(B-1),D[0]])}return G}),quotedList:j(function(E){var D=[],C=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,B;while(B=C.exec(E)){D.push(B[3]||B[1])}return D}),recognizesMedia:j(function(G){var E=document.createElement("style"),D,C,B;E.type="text/css";E.media=G;try{E.appendChild(document.createTextNode("/**/"))}catch(F){}C=g("head")[0];C.insertBefore(E,C.firstChild);D=(E.sheet||E.styleSheet);B=D&&!D.disabled;C.removeChild(E);return B}),removeClass:function(D,C){var B=RegExp("(?:^|\\s+)"+C+"(?=\\s|$)","g");D.className=D.className.replace(B,"");return D},supports:function(D,C){var B=document.createElement("span").style;if(B[D]===undefined){return false}B[D]=C;return B[D]===C},textAlign:function(E,D,B,C){if(D.get("textAlign")=="right"){if(B>0){E=" "+E}}else{if(B<C-1){E+=" "}}return E},textShadow:j(function(F){if(F=="none"){return null}var E=[],G={},B,C=0;var D=/(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;while(B=D.exec(F)){if(B[0]==","){E.push(G);G={};C=0}else{if(B[1]){G.color=B[1]}else{G[["offX","offY","blur"][C++]]=B[2]}}}E.push(G);return E}),textTransform:(function(){var B={uppercase:function(C){return C.toUpperCase()},lowercase:function(C){return C.toLowerCase()},capitalize:function(C){return C.replace(/\b./g,function(D){return D.toUpperCase()})}};return function(E,D){var C=B[D.get("textTransform")];return C?C(E):E}})(),whiteSpace:(function(){var D={inline:1,"inline-block":1,"run-in":1};var C=/^\s+/,B=/\s+$/;return function(H,F,G,E){if(E){if(E.nodeName.toLowerCase()=="br"){H=H.replace(C,"")}}if(D[F.get("display")]){return H}if(!G.previousSibling){H=H.replace(C,"")}if(!G.nextSibling){H=H.replace(B,"")}return H}})()};n.ready=(function(){var B=!n.recognizesMedia("all"),E=false;var D=[],H=function(){B=true;for(var K;K=D.shift();K()){}};var I=g("link"),J=g("style");function C(K){return K.disabled||G(K.sheet,K.media||"screen")}function G(M,P){if(!n.recognizesMedia(P||"all")){return true}if(!M||M.disabled){return false}try{var Q=M.cssRules,O;if(Q){search:for(var L=0,K=Q.length;O=Q[L],L<K;++L){switch(O.type){case 2:break;case 3:if(!G(O.styleSheet,O.media.mediaText)){return false}break;default:break search}}}}catch(N){}return true}function F(){if(document.createStyleSheet){return true}var L,K;for(K=0;L=I[K];++K){if(L.rel.toLowerCase()=="stylesheet"&&!C(L)){return false}}for(K=0;L=J[K];++K){if(!C(L)){return false}}return true}x.ready(function(){if(!E){E=n.getStyle(document.body).isUsable()}if(B||(E&&F())){H()}else{setTimeout(arguments.callee,10)}});return function(K){if(B){K()}else{D.push(K)}}})();function s(D){var C=this.face=D.face,B={"\u0020":1,"\u00a0":1,"\u3000":1};this.glyphs=D.glyphs;this.w=D.w;this.baseSize=parseInt(C["units-per-em"],10);this.family=C["font-family"].toLowerCase();this.weight=C["font-weight"];this.style=C["font-style"]||"normal";this.viewBox=(function(){var F=C.bbox.split(/\s+/);var E={minX:parseInt(F[0],10),minY:parseInt(F[1],10),maxX:parseInt(F[2],10),maxY:parseInt(F[3],10)};E.width=E.maxX-E.minX;E.height=E.maxY-E.minY;E.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")};return E})();this.ascent=-parseInt(C.ascent,10);this.descent=-parseInt(C.descent,10);this.height=-this.ascent+this.descent;this.spacing=function(L,N,E){var O=this.glyphs,M,K,G,P=[],F=0,J=-1,I=-1,H;while(H=L[++J]){M=O[H]||this.missingGlyph;if(!M){continue}if(K){F-=G=K[H]||0;P[I]-=G}F+=P[++I]=~~(M.w||this.w)+N+(B[H]?E:0);K=M.k}P.total=F;return P}}function f(){var C={},B={oblique:"italic",italic:"oblique"};this.add=function(D){(C[D.style]||(C[D.style]={}))[D.weight]=D};this.get=function(H,I){var G=C[H]||C[B[H]]||C.normal||C.italic||C.oblique;if(!G){return null}I={normal:400,bold:700}[I]||parseInt(I,10);if(G[I]){return G[I]}var E={1:1,99:0}[I%100],K=[],F,D;if(E===undefined){E=I>400}if(I==500){I=400}for(var J in G){if(!k(G,J)){continue}J=parseInt(J,10);if(!F||J<F){F=J}if(!D||J>D){D=J}K.push(J)}if(I<F){I=F}if(I>D){I=D}K.sort(function(M,L){return(E?(M>=I&&L>=I)?M<L:M>L:(M<=I&&L<=I)?M>L:M<L)?-1:1});return G[K[0]]}}function r(){function D(F,G){if(F.contains){return F.contains(G)}return F.compareDocumentPosition(G)&16}function B(G){var F=G.relatedTarget;if(!F||D(this,F)){return}C(this,G.type=="mouseover")}function E(F){C(this,F.type=="mouseenter")}function C(F,G){setTimeout(function(){var H=d.get(F).options;m.replace(F,G?h(H,H.hover):H,true)},10)}this.attach=function(F){if(F.onmouseenter===undefined){q(F,"mouseover",B);q(F,"mouseout",B)}else{q(F,"mouseenter",E);q(F,"mouseleave",E)}}}function u(){var C=[],D={};function B(H){var E=[],G;for(var F=0;G=H[F];++F){E[F]=C[D[G]]}return E}this.add=function(F,E){D[F]=C.push(E)-1};this.repeat=function(){var E=arguments.length?B(arguments):C,F;for(var G=0;F=E[G++];){m.replace(F[0],F[1],true)}}}function A(){var D={},B=0;function C(E){return E.cufid||(E.cufid=++B)}this.get=function(E){var F=C(E);return D[F]||(D[F]={})}}function a(B){var D={},C={};this.extend=function(E){for(var F in E){if(k(E,F)){D[F]=E[F]}}return this};this.get=function(E){return D[E]!=undefined?D[E]:B[E]};this.getSize=function(F,E){return C[F]||(C[F]=new n.Size(this.get(F),E))};this.isUsable=function(){return !!B}}function q(C,B,D){if(C.addEventListener){C.addEventListener(B,D,false)}else{if(C.attachEvent){C.attachEvent("on"+B,function(){return D.call(C,window.event)})}}}function v(C,B){var D=d.get(C);if(D.options){return C}if(B.hover&&B.hoverables[C.nodeName.toLowerCase()]){b.attach(C)}D.options=B;return C}function j(B){var C={};return function(D){if(!k(C,D)){C[D]=B.apply(null,arguments)}return C[D]}}function c(F,E){var B=n.quotedList(E.get("fontFamily").toLowerCase()),D;for(var C=0;D=B[C];++C){if(i[D]){return i[D].get(E.get("fontStyle"),E.get("fontWeight"))}}return null}function g(B){return document.getElementsByTagName(B)}function k(C,B){return C.hasOwnProperty(B)}function h(){var C={},B,F;for(var E=0,D=arguments.length;B=arguments[E],E<D;++E){for(F in B){if(k(B,F)){C[F]=B[F]}}}return C}function o(E,M,C,N,F,D){var K=document.createDocumentFragment(),H;if(M===""){return K}var L=N.separate;var I=M.split(p[L]),B=(L=="words");if(B&&t){if(/^\s/.test(M)){I.unshift("")}if(/\s$/.test(M)){I.push("")}}for(var J=0,G=I.length;J<G;++J){H=z[N.engine](E,B?n.textAlign(I[J],C,J,G):I[J],C,N,F,D,J<G-1);if(H){K.appendChild(H)}}return K}function l(D,M){var C=D.nodeName.toLowerCase();if(M.ignore[C]){return}var E=!M.textless[C];var B=n.getStyle(v(D,M)).extend(M);var F=c(D,B),G,K,I,H,L,J;if(!F){return}for(G=D.firstChild;G;G=I){K=G.nodeType;I=G.nextSibling;if(E&&K==3){if(H){H.appendData(G.data);D.removeChild(G)}else{H=G}if(I){continue}}if(H){D.replaceChild(o(F,n.whiteSpace(H.data,B,H,J),B,M,G,D),H);H=null}if(K==1){if(G.firstChild){if(G.nodeName.toLowerCase()=="cufon"){z[M.engine](F,null,B,M,G,D)}else{arguments.callee(G,M)}}J=G}}}var t=" ".split(/\s+/).length==0;var d=new A();var b=new r();var y=new u();var e=false;var z={},i={},w={autoDetect:false,engine:null,forceHitArea:false,hover:false,hoverables:{a:true},ignore:{applet:1,canvas:1,col:1,colgroup:1,head:1,iframe:1,map:1,optgroup:1,option:1,script:1,select:1,style:1,textarea:1,title:1,pre:1},printable:true,selector:(window.Sizzle||(window.jQuery&&function(B){return jQuery(B)})||(window.dojo&&dojo.query)||(window.Ext&&Ext.query)||(window.YAHOO&&YAHOO.util&&YAHOO.util.Selector&&YAHOO.util.Selector.query)||(window.$$&&function(B){return $$(B)})||(window.$&&function(B){return $(B)})||(document.querySelectorAll&&function(B){return document.querySelectorAll(B)})||g),separate:"words",textless:{dl:1,html:1,ol:1,table:1,tbody:1,thead:1,tfoot:1,tr:1,ul:1},textShadow:"none"};var p={words:/\s/.test("\u00a0")?/[^\S\u00a0]+/:/\s+/,characters:"",none:/^/};m.now=function(){x.ready();return m};m.refresh=function(){y.repeat.apply(y,arguments);return m};m.registerEngine=function(C,B){if(!B){return m}z[C]=B;return m.set("engine",C)};m.registerFont=function(D){if(!D){return m}var B=new s(D),C=B.family;if(!i[C]){i[C]=new f()}i[C].add(B);return m.set("fontFamily",'"'+C+'"')};m.replace=function(D,C,B){C=h(w,C);if(!C.engine){return m}if(!e){n.addClass(x.root(),"cufon-active cufon-loading");n.ready(function(){n.addClass(n.removeClass(x.root(),"cufon-loading"),"cufon-ready")});e=true}if(C.hover){C.forceHitArea=true}if(C.autoDetect){delete C.fontFamily}if(typeof C.textShadow=="string"){C.textShadow=n.textShadow(C.textShadow)}if(typeof C.color=="string"&&/^-/.test(C.color)){C.textGradient=n.gradient(C.color)}else{delete C.textGradient}if(!B){y.add(D,arguments)}if(D.nodeType||typeof D=="string"){D=[D]}n.ready(function(){for(var F=0,E=D.length;F<E;++F){var G=D[F];if(typeof G=="string"){m.replace(C.selector(G),C,true)}else{l(G,C)}}});return m};m.set=function(B,C){w[B]=C;return m};return m})();Cufon.registerEngine("canvas",(function(){var b=document.createElement("canvas");if(!b||!b.getContext||!b.getContext.apply){return}b=null;var a=Cufon.CSS.supports("display","inline-block");var e=!a&&(document.compatMode=="BackCompat"||/frameset|transitional/i.test(document.doctype.publicId));var f=document.createElement("style");f.type="text/css";f.appendChild(document.createTextNode(("cufon{text-indent:0;}@media screen,projection{cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;"+(e?"":"font-size:1px;line-height:1px;")+"}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;text-indent:-10000in;}"+(a?"cufon canvas{position:relative;}":"cufon canvas{position:absolute;}")+"}@media print{cufon{padding:0;}cufon canvas{display:none;}}").replace(/;/g,"!important;")));document.getElementsByTagName("head")[0].appendChild(f);function d(p,h){var n=0,m=0;var g=[],o=/([mrvxe])([^a-z]*)/g,k;generate:for(var j=0;k=o.exec(p);++j){var l=k[2].split(",");switch(k[1]){case"v":g[j]={m:"bezierCurveTo",a:[n+~~l[0],m+~~l[1],n+~~l[2],m+~~l[3],n+=~~l[4],m+=~~l[5]]};break;case"r":g[j]={m:"lineTo",a:[n+=~~l[0],m+=~~l[1]]};break;case"m":g[j]={m:"moveTo",a:[n=~~l[0],m=~~l[1]]};break;case"x":g[j]={m:"closePath"};break;case"e":break generate}h[g[j].m].apply(h,g[j].a)}return g}function c(m,k){for(var j=0,h=m.length;j<h;++j){var g=m[j];k[g.m].apply(k,g.a)}}return function(V,w,P,t,C,W){var k=(w===null);if(k){w=C.getAttribute("alt")}var A=V.viewBox;var m=P.getSize("fontSize",V.baseSize);var B=0,O=0,N=0,u=0;var z=t.textShadow,L=[];if(z){for(var U=z.length;U--;){var F=z[U];var K=m.convertFrom(parseFloat(F.offX));var I=m.convertFrom(parseFloat(F.offY));L[U]=[K,I];if(I<B){B=I}if(K>O){O=K}if(I>N){N=I}if(K<u){u=K}}}var Z=Cufon.CSS.textTransform(w,P).split("");var E=V.spacing(Z,~~m.convertFrom(parseFloat(P.get("letterSpacing"))||0),~~m.convertFrom(parseFloat(P.get("wordSpacing"))||0));if(!E.length){return null}var h=E.total;O+=A.width-E[E.length-1];u+=A.minX;var s,n;if(k){s=C;n=C.firstChild}else{s=document.createElement("cufon");s.className="cufon cufon-canvas";s.setAttribute("alt",w);n=document.createElement("canvas");s.appendChild(n);if(t.printable){var S=document.createElement("cufontext");S.appendChild(document.createTextNode(w));s.appendChild(S)}}var aa=s.style;var H=n.style;var j=m.convert(A.height);var Y=Math.ceil(j);var M=Y/j;var G=M*Cufon.CSS.fontStretch(P.get("fontStretch"));var J=h*G;var Q=Math.ceil(m.convert(J+O-u));var o=Math.ceil(m.convert(A.height-B+N));n.width=Q;n.height=o;H.width=Q+"px";H.height=o+"px";B+=A.minY;H.top=Math.round(m.convert(B-V.ascent))+"px";H.left=Math.round(m.convert(u))+"px";var r=Math.max(Math.ceil(m.convert(J)),0)+"px";if(a){aa.width=r;aa.height=m.convert(V.height)+"px"}else{aa.paddingLeft=r;aa.paddingBottom=(m.convert(V.height)-1)+"px"}var X=n.getContext("2d"),D=j/A.height;X.scale(D,D*M);X.translate(-u,-B);X.save();function T(){var x=V.glyphs,ab,l=-1,g=-1,y;X.scale(G,1);while(y=Z[++l]){var ab=x[Z[l]]||V.missingGlyph;if(!ab){continue}if(ab.d){X.beginPath();if(ab.code){c(ab.code,X)}else{ab.code=d("m"+ab.d,X)}X.fill()}X.translate(E[++g],0)}X.restore()}if(z){for(var U=z.length;U--;){var F=z[U];X.save();X.fillStyle=F.color;X.translate.apply(X,L[U]);T()}}var q=t.textGradient;if(q){var v=q.stops,p=X.createLinearGradient(0,A.minY,0,A.maxY);for(var U=0,R=v.length;U<R;++U){p.addColorStop.apply(p,v[U])}X.fillStyle=p}else{X.fillStyle=P.get("color")}T();return s}})());Cufon.registerEngine("vml",(function(){var e=document.namespaces;if(!e){return}e.add("cvml","urn:schemas-microsoft-com:vml");e=null;var b=document.createElement("cvml:shape");b.style.behavior="url(#default#VML)";if(!b.coordsize){return}b=null;var h=(document.documentMode||0)<8;document.write(('<style type="text/css">cufoncanvas{text-indent:0;}@media screen{cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}cufoncanvas{position:absolute;text-align:left;}cufon{display:inline-block;position:relative;vertical-align:'+(h?"middle":"text-bottom")+";}cufon cufontext{position:absolute;left:-10000in;font-size:1px;}a cufon{cursor:pointer}}@media print{cufon cufoncanvas{display:none;}}</style>").replace(/;/g,"!important;"));function c(i,j){return a(i,/(?:em|ex|%)$|^[a-z-]+$/i.test(j)?"1em":j)}function a(l,m){if(m==="0"){return 0}if(/px$/i.test(m)){return parseFloat(m)}var k=l.style.left,j=l.runtimeStyle.left;l.runtimeStyle.left=l.currentStyle.left;l.style.left=m.replace("%","em");var i=l.style.pixelLeft;l.style.left=k;l.runtimeStyle.left=j;return i}function f(l,k,j,n){var i="computed"+n,m=k[i];if(isNaN(m)){m=k.get(n);k[i]=m=(m=="normal")?0:~~j.convertFrom(a(l,m))}return m}var g={};function d(p){var q=p.id;if(!g[q]){var n=p.stops,o=document.createElement("cvml:fill"),i=[];o.type="gradient";o.angle=180;o.focus="0";o.method="sigma";o.color=n[0][1];for(var m=1,l=n.length-1;m<l;++m){i.push(n[m][0]*100+"% "+n[m][1])}o.colors=i.join(",");o.color2=n[l][1];g[q]=o}return g[q]}return function(ac,G,Y,C,K,ad,W){var n=(G===null);if(n){G=K.alt}var I=ac.viewBox;var p=Y.computedFontSize||(Y.computedFontSize=new Cufon.CSS.Size(c(ad,Y.get("fontSize"))+"px",ac.baseSize));var y,q;if(n){y=K;q=K.firstChild}else{y=document.createElement("cufon");y.className="cufon cufon-vml";y.alt=G;q=document.createElement("cufoncanvas");y.appendChild(q);if(C.printable){var Z=document.createElement("cufontext");Z.appendChild(document.createTextNode(G));y.appendChild(Z)}if(!W){y.appendChild(document.createElement("cvml:shape"))}}var ai=y.style;var R=q.style;var l=p.convert(I.height),af=Math.ceil(l);var V=af/l;var P=V*Cufon.CSS.fontStretch(Y.get("fontStretch"));var U=I.minX,T=I.minY;R.height=af;R.top=Math.round(p.convert(T-ac.ascent));R.left=Math.round(p.convert(U));ai.height=p.convert(ac.height)+"px";var F=Y.get("color");var ag=Cufon.CSS.textTransform(G,Y).split("");var L=ac.spacing(ag,f(ad,Y,p,"letterSpacing"),f(ad,Y,p,"wordSpacing"));if(!L.length){return null}var k=L.total;var x=-U+k+(I.width-L[L.length-1]);var ah=p.convert(x*P),X=Math.round(ah);var O=x+","+I.height,m;var J="r"+O+"ns";var u=C.textGradient&&d(C.textGradient);var o=ac.glyphs,S=0;var H=C.textShadow;var ab=-1,aa=0,w;while(w=ag[++ab]){var D=o[ag[ab]]||ac.missingGlyph,v;if(!D){continue}if(n){v=q.childNodes[aa];while(v.firstChild){v.removeChild(v.firstChild)}}else{v=document.createElement("cvml:shape");q.appendChild(v)}v.stroked="f";v.coordsize=O;v.coordorigin=m=(U-S)+","+T;v.path=(D.d?"m"+D.d+"xe":"")+"m"+m+J;v.fillcolor=F;if(u){v.appendChild(u.cloneNode(false))}var ae=v.style;ae.width=X;ae.height=af;if(H){var s=H[0],r=H[1];var B=Cufon.CSS.color(s.color),z;var N=document.createElement("cvml:shadow");N.on="t";N.color=B.color;N.offset=s.offX+","+s.offY;if(r){z=Cufon.CSS.color(r.color);N.type="double";N.color2=z.color;N.offset2=r.offX+","+r.offY}N.opacity=B.opacity||(z&&z.opacity)||1;v.appendChild(N)}S+=L[aa++]}var M=v.nextSibling,t,A;if(C.forceHitArea){if(!M){M=document.createElement("cvml:rect");M.stroked="f";M.className="cufon-vml-cover";t=document.createElement("cvml:fill");t.opacity=0;M.appendChild(t);q.appendChild(M)}A=M.style;A.width=X;A.height=af}else{if(M){q.removeChild(M)}}ai.width=Math.max(Math.ceil(p.convert(k*P)),0);if(h){var Q=Y.computedYAdjust;if(Q===undefined){var E=Y.get("lineHeight");if(E=="normal"){E="1em"}else{if(!isNaN(E)){E+="em"}}Y.computedYAdjust=Q=0.5*(a(ad,E)-parseFloat(ai.height))}if(Q){ai.marginTop=Math.ceil(Q)+"px";ai.marginBottom=Q+"px"}}return y}})());

/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * 2005 Erik Spiekermann published by FSI FontShop International GmbH
 * 
 * Trademark:
 * Meta is a trademark of FSI FontShop International GmbH
 * 
 * Manufacturer:
 * FSI
 * 
 * Designer:
 * Erik Spiekermann
 * 
 * Vendor URL:
 * http://www.fontfont.com
 * 
 * License information:
 * http://www.fontfont.com/eula/license.html
 */
Cufon.registerFont((function(f){var b=_cufon_bridge_={p:[{"d":"67,0r-35,0r0,-179r35,-6r0,185xm73,-236v0,13,-11,24,-24,24v-13,0,-23,-11,-23,-24v0,-13,11,-24,24,-24v13,0,23,10,23,24","w":99,"k":{"b":2,"h":2,"k":2,"l":2,"v":4,"y":4,"a":2,"s":4,"x":4}},{"d":"165,-180r-66,181r-31,0r-64,-181r34,-5r47,148v11,-47,31,-97,45,-143r35,0","w":168,"k":{"@":7,",":11," ":4,"-":4,".":11,"a":4,"i":4,"j":4,"m":4,"n":4,"p":4,"r":4,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"s":4,"t":-2,"u":2}},{"d":"184,-90v0,58,-32,95,-81,95v-51,0,-81,-36,-81,-95v0,-58,32,-95,81,-95v51,0,81,36,81,95xm148,-86v0,-55,-15,-74,-46,-74v-30,0,-45,22,-45,66v0,55,15,73,46,73v30,0,45,-21,45,-65","w":205,"k":{".":4,"9":4,"7":7,"4":7,"3":11,"2":4,",":4}},{"d":"58,-84v-6,58,45,80,78,44r16,20v-51,54,-141,11,-130,-69v-6,-82,71,-122,126,-78r-18,22v-39,-35,-79,3,-72,61","w":166,"k":{"@":7,",":2," ":4,"-":4,".":2,"b":2,"h":2,"k":2,"l":2,"a":5,"i":4,"j":4,"m":4,"n":4,"p":4,"r":4,"c":5,"d":5,"e":5,"g":5,"o":5,"q":5,"s":4,"u":2,"f":4,"x":2}},{"d":"182,-93v0,75,-71,129,-118,73v-2,12,-2,15,-5,20r-31,0v9,-59,2,-148,4,-215v0,-20,-1,-33,-5,-43r35,-7v8,26,1,75,4,100v50,-47,116,-8,116,72xm104,-25v34,0,36,-24,41,-69v6,-64,-54,-79,-79,-41r0,91v9,10,22,19,38,19","k":{",":4,".":4,"b":4,"h":4,"k":4,"l":4,"w":2,"v":4,"y":4,"a":2,"i":2,"j":2,"s":4,"u":2,"x":7,"z":4}},{"d":"93,-185v30,0,61,20,85,-1r17,20v-15,11,-26,14,-46,8v29,38,11,87,-51,89v-11,4,-29,12,-29,20v0,13,27,8,41,9v46,0,65,22,65,50v0,39,-32,58,-76,58v-59,-1,-89,-22,-76,-66r32,-2v-10,26,6,43,41,43v30,0,44,-12,44,-31v0,-45,-109,-8,-109,-53v0,-17,15,-24,36,-32v-28,-8,-43,-27,-43,-52v0,-36,28,-60,69,-60xm126,-126v0,-23,-10,-33,-33,-33v-21,0,-33,11,-33,34v0,22,12,34,33,34v22,0,33,-13,33,-35","w":194,"k":{"@":4,"-":2,"w":-4,"v":-4,"y":-4,"a":4,"j":-2,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"s":2,"t":-4,"x":-2,"z":-2}},{"d":"110,-30r-28,20r-73,-98r73,-97r28,20r-59,77","w":126},{"d":"81,-21v0,14,-12,25,-26,25v-14,0,-24,-11,-24,-25v0,-15,11,-27,25,-27v14,0,25,12,25,27xm81,-135v0,15,-11,26,-25,26v-14,0,-25,-11,-25,-25v0,-14,11,-27,25,-27v14,0,25,12,25,26","w":111},{"d":"55,-117v0,57,6,134,60,157r-8,17v-85,-24,-107,-177,-68,-270v12,-28,37,-53,67,-66r8,17v-46,30,-59,72,-59,145","w":109,"k":{"9":-4,"7":-7,"5":-4,"3":-4,"j":-11,"J":-14}},{"d":"179,-96v0,80,-74,158,-142,170r-17,-20v46,-9,101,-53,113,-97v-49,35,-115,-1,-115,-62v0,-47,36,-82,82,-82v46,0,79,34,79,91xm139,-73v13,-41,-6,-89,-41,-89v-26,0,-43,22,-43,55v0,55,52,66,84,34","w":200,"k":{"9":4,"7":4,"3":7,"2":4,",":4,"%":7}},{"d":"190,-248r-79,149r0,99r-36,0r0,-99r-79,-149r43,0r55,117v16,-40,38,-79,56,-117r40,0","w":186,"k":{"p":11,"M":4,",":36," ":4,"-":18,".":36,"G":7,"C":11,"O":11,"Q":11,"w":4,"S":7,"a":14,"m":11,"n":11,"r":11,"c":14,"d":14,"e":14,"g":14,"o":14,"q":14,"s":14,"u":14,"A":11,"x":7,"z":14}},{"d":"90,-248v74,-4,117,48,115,124v-2,78,-29,124,-111,124r-62,0r0,-248r58,0xm68,-28v71,9,98,-28,98,-92v0,-70,-24,-109,-98,-100r0,192","w":226,"k":{"x":4,"X":9,"S":4,".":11,"V":7,",":7,"T":11,"W":4,"Y":7,"b":2,"h":2,"k":2,"l":2,"a":2,"A":4,"Z":7,"f":2}},{"d":"162,-29r-6,29r-124,0r0,-248r36,0r0,219r94,0","w":167,"k":{"V":29," ":7,"-":18,"G":14,"C":14,"O":14,"Q":14,"T":29,"U":7,"W":18,"Y":32,"w":7,"v":11,"y":11,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"u":2}},{"d":"4,-279v115,37,114,298,-1,336r-8,-17v54,-24,60,-98,60,-157v0,-73,-13,-116,-60,-145","w":110},{"d":"288,-248r-57,249r-43,0r-40,-197r-2,0v-8,58,-27,138,-39,197r-43,0r-59,-249r38,0r41,206r2,0v9,-68,28,-141,42,-206r40,0r42,205r2,0r40,-205r36,0","w":293,"k":{"M":4,",":18," ":4,"-":5,".":25,"G":4,"C":4,"O":4,"Q":4,"v":4,"y":4,"S":4,"a":11,"i":4,"j":2,"m":5,"n":5,"p":5,"r":5,"c":7,"d":7,"e":7,"g":7,"o":7,"q":7,"s":7,"u":7,"A":4,"Z":7,"z":5}},{"d":"60,-123v-9,83,60,123,116,83r17,23v-77,55,-171,-6,-171,-105v0,-100,89,-166,166,-111r-17,22v-59,-39,-119,10,-111,88","w":208,"k":{"v":14,"r":4," ":7,"-":22,"G":14,"C":14,"O":14,"Q":14,"U":4,"b":7,"h":7,"k":7,"l":7,"w":7,"y":14,"B":4,"D":4,"P":4,"R":4,"E":4,"F":4,"H":4,"I":4,"K":4,"L":4,"N":4,"S":4,"a":7,"i":5,"j":4,"m":4,"n":4,"p":4,"c":11,"d":11,"e":11,"g":11,"o":11,"q":11,"s":4,"t":4,"u":7}},{"d":"0,32v27,-18,34,-24,35,-73r0,-207r34,0r0,204v2,64,-16,77,-53,95","w":101},{"d":"111,56v-41,3,-68,-2,-68,-47r0,-63v0,-25,-21,-36,-34,-37r0,-26v13,-1,34,-13,34,-37v0,-47,-4,-114,39,-110r29,0r0,27v-53,-10,-38,44,-38,89v0,35,-25,38,-33,45v12,1,33,9,33,43v0,39,-21,98,38,90r0,26","w":120,"k":{"9":-4,"7":-7,"5":-4,"3":-4,"j":-11,"J":-14}},{"d":"99,-248v65,-3,88,24,91,72v4,61,-50,87,-123,79r0,97r-35,0r0,-248r67,0xm67,-125v47,4,85,-2,85,-47v0,-46,-38,-50,-85,-48r0,95","w":199,"k":{"y":-4,"w":-4,"v":-4,"u":4,"t":-4,"s":4,"q":4,"o":4,"g":4,"e":4,"d":4,"c":4,"a":4,"Z":7,"X":4,"T":7,"S":4,"A":14,".":43,",":43}},{"d":"246,-180r-51,181r-32,0r-38,-140r-37,140r-31,0r-50,-180r34,-5r33,145v7,-44,25,-98,36,-141r34,0v14,46,20,99,37,141r30,-141r35,0","w":253,"k":{",":7,".":5,"a":4,"i":4,"j":2,"c":2,"d":2,"e":2,"g":2,"o":2,"q":2,"s":2,"u":2}},{"d":"66,0r-34,0r0,-215v0,-18,-1,-31,-4,-41r33,-8v11,77,2,178,5,264xm185,0r-42,0r-74,-103r60,-78r40,0r-65,77","w":186,"k":{"@":7," ":11,"-":11,"b":5,"h":5,"k":5,"l":5,"w":2,"v":4,"y":4,"a":5,"i":4,"j":4,"c":7,"d":7,"e":7,"g":7,"o":7,"q":7,"s":4,"u":5}},{"d":"26,-162v33,-27,144,-45,131,37v3,24,-13,101,13,110r-17,23v-11,-4,-20,-13,-24,-26v-5,6,-20,23,-51,23v-36,0,-58,-18,-58,-53v0,-45,44,-68,104,-63v0,-26,2,-48,-28,-48v-19,0,-40,10,-55,21xm123,-89v-41,-1,-66,6,-67,39v-1,42,54,37,66,8","w":188,"k":{"w":2,"v":2,"y":2,"s":4}},{"d":"7,54v17,-10,26,-27,25,-58r0,-173r35,-8r0,181v-3,53,-15,59,-45,78xm72,-239v0,14,-10,25,-23,25v-13,0,-24,-11,-24,-24v0,-13,11,-24,24,-24v13,0,23,10,23,23","w":99,"k":{"a":4,"c":3,"d":3,"e":3,"g":3,"o":3,"q":3,"s":4,"x":2}},{"d":"63,-60v-5,55,58,44,71,11r0,-130r32,-6r0,136v0,18,4,31,11,37r-22,18v-9,-7,-14,-14,-17,-26v-29,42,-107,35,-107,-31r0,-128r32,-7r0,126","w":198,"k":{"b":2,"h":2,"k":2,"l":2,"w":2,"v":2,"y":2,"m":4,"n":4,"p":4,"r":4,"s":3}},{"d":"196,0r-35,0r0,-118r-94,0r0,118r-35,0r0,-248r35,0r0,102r94,0r0,-102r35,0r0,248","w":228},{"d":"176,-248r-4,29r-64,0r0,219r-35,0r0,-219r-64,0r0,-29r167,0","w":170,"k":{"v":14,"g":18,"V":7,",":22,"-":11,".":14,"G":4,"C":4,"O":4,"Q":4,"T":4,"W":-4,"Y":7,"w":11,"y":14,"B":-4,"D":-4,"P":-4,"R":-4,"S":4,"a":18,"m":11,"n":11,"p":11,"r":11,"c":18,"d":18,"e":18,"o":18,"q":18,"s":20,"u":14,"A":14,"x":11,":":11,";":11,"z":11}},{"d":"111,-91v-14,1,-34,12,-34,37v0,48,4,114,-40,110r-28,0r0,-26v53,9,39,-44,39,-90v0,-37,23,-39,32,-45v-12,-2,-32,-11,-32,-43v0,-39,21,-97,-39,-89r0,-27v41,-3,68,3,68,47r0,63v0,24,20,36,34,37r0,26","w":120},{"d":"141,-197v0,57,-73,55,-56,116v-18,1,-31,4,-31,-22v0,-19,7,-36,24,-51v13,-12,30,-18,30,-40v0,-41,-61,-30,-78,-13r-14,-22v32,-32,125,-34,125,32xm100,-22v0,14,-12,27,-26,27v-14,0,-24,-13,-24,-27v0,-14,10,-24,24,-24v14,0,26,10,26,24","w":160},{"d":"65,-158v30,-36,107,-41,107,29r0,129r-32,0r0,-124v1,-51,-54,-32,-74,-6r0,130r-34,0r0,-219v0,-15,-1,-28,-4,-38r34,-7v6,27,4,72,3,106","w":204,"k":{"b":4,"h":4,"k":4,"l":4,"w":2,"v":2,"y":2,"a":4,"x":2}},{"d":"62,75r-30,0r0,-348r30,0r0,348","w":93},{"d":"175,-182v-9,70,-2,170,-4,249r-32,8r0,-94v-46,48,-117,16,-117,-68v0,-88,70,-129,120,-75v0,-11,1,-16,3,-20r30,0xm139,-49r0,-87v-29,-40,-82,-23,-82,43v0,79,54,83,82,44","k":{"y":2,"w":2,"v":2,"s":4,"r":4,"q":2,"p":4,"o":2,"n":4,"m":4,"l":2,"k":2,"h":2,"g":2,"e":2,"d":2,"c":2,"b":2}},{"d":"106,-222r-10,19r-78,-36r16,-31","w":124},{"d":"72,-253r-8,177r-25,0r-8,-171xm76,-22v0,14,-11,25,-24,25v-13,0,-23,-11,-23,-25v0,-13,10,-23,23,-23v13,0,24,10,24,23","w":104},{"d":"197,0r-42,0r-56,-107r-53,107r-42,0r74,-134r-66,-114r42,0r45,84r42,-84r42,0r-63,112","w":200,"k":{",":-4," ":4,"-":7,".":-4,"G":11,"C":11,"O":11,"Q":11,"w":4,"v":7,"y":7,"a":4,"i":4,"j":4,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"t":4,"u":4}},{"d":"151,-24r-12,24r-123,0r0,-24r95,-132r-88,0r0,-24r124,0r0,24r-90,132r94,0","w":167,"k":{" ":4,"-":4,"b":4,"h":4,"k":4,"l":4,"a":5,"i":4,"j":4,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"s":2,"t":4,"u":4}},{"d":"68,0r-36,0r0,-248r36,0r0,248","w":100},{"d":"56,-87v37,3,70,-3,69,-36v-1,-48,-67,-41,-95,-16r-16,-19v41,-42,148,-37,148,31v0,24,-14,44,-44,54v30,8,50,30,50,55v0,65,-70,90,-144,82r-7,-22v55,9,113,-14,113,-63v0,-35,-35,-44,-74,-41r0,-25","w":189,"k":{"3":7}},{"d":"67,-138v18,0,56,26,77,26v15,0,24,-13,31,-25r11,24v-9,15,-21,32,-43,32v-21,0,-55,-26,-78,-26v-15,0,-24,13,-31,25r-11,-24v9,-15,22,-32,44,-32","w":209},{"d":"156,-55v2,64,-90,75,-138,41r12,-24v26,18,87,33,91,-11v2,-23,-30,-29,-52,-33v-28,-6,-44,-23,-44,-50v0,-56,82,-70,122,-41r-11,23v-28,-17,-72,-21,-76,14v-3,21,29,26,49,30v33,8,47,27,47,51","w":174,"k":{"@":4," ":4,"b":2,"h":2,"k":2,"l":2,"a":5,"i":4,"j":2,"m":2,"n":2,"p":2,"r":2,"s":4,"t":2,"u":2,"x":4,"z":4}},{"d":"141,-274r-93,328r-25,0r94,-328r24,0","w":164,"k":{"\/":61}},{"d":"124,-184r-12,33v-23,-8,-46,13,-46,35r0,116r-34,0v-2,-56,6,-132,-6,-177r32,-9v3,8,6,20,6,31v17,-24,34,-36,60,-29","w":125,"k":{"@":4,",":7,"-":4,".":7,"w":-4,"v":-5,"y":-5,"a":4,"c":2,"d":2,"e":2,"g":2,"o":2,"q":2,"s":2,"t":-5,"f":-4,"x":-4,"z":-2}},{"d":"22,-89v-8,-71,68,-126,117,-74r-1,-102r33,6r0,199v0,29,1,49,5,60r-32,0v-2,-5,-2,-8,-3,-17v-48,46,-126,7,-119,-72xm59,-89v1,49,5,64,40,64v19,0,33,-10,39,-21r0,-94v-9,-11,-22,-17,-39,-17v-32,2,-41,29,-40,68","k":{",":-2," ":4,".":-2,"b":4,"h":4,"k":4,"l":4,"a":2,"j":4,"s":2}},{"d":"243,0r-45,0r-22,-22v-15,17,-41,27,-70,27v-57,0,-84,-29,-84,-67v0,-32,19,-48,49,-63v-57,-34,-38,-112,32,-113v37,0,68,20,68,55v0,30,-26,48,-51,60r54,53v6,-13,6,-34,6,-49r28,0v0,37,-4,52,-13,71xm157,-41r-68,-67v-46,20,-42,89,18,88v22,0,40,-8,50,-21xm135,-183v0,-19,-14,-32,-32,-32v-17,0,-31,10,-31,31v0,15,12,29,30,44v22,-11,33,-25,33,-43","w":248},{"d":"72,56r-63,0r0,-23r33,0r0,-273r-33,0r0,-24r63,0r0,320","w":104},{"w":81,"k":{"z":4,"y":4,"x":7,"v":4,"Z":4,"Y":4,"X":4,"W":4,"V":7}},{"d":"176,-89v0,57,-30,94,-78,94v-48,0,-78,-36,-78,-95v0,-58,29,-95,77,-95v53,0,79,42,79,96xm139,-87v0,-56,-16,-73,-42,-73v-29,0,-40,21,-40,66v0,55,14,73,42,73v25,0,40,-19,40,-66","w":196,"k":{",":2,".":2,"b":2,"h":2,"k":2,"l":2,"w":2,"v":2,"y":2,"a":2,"s":2,"x":7,"z":2}},{"d":"95,56r-63,0r0,-320r63,0r0,24r-33,0r0,273r33,0r0,23","w":104,"k":{"9":-4,"7":-7,"5":-4,"3":-4,"j":-11,"J":-14}},{"d":"140,7r-27,10r-108,-279r28,-10","w":145},{"d":"181,-93v0,79,-63,125,-117,78v2,26,0,55,1,83r-33,8r0,-212v0,-21,-1,-32,-4,-44r32,-6v1,5,3,11,3,26v47,-51,118,-23,118,67xm146,-89v0,-72,-47,-85,-81,-46r0,92v33,37,81,22,81,-46","k":{"z":2,"y":4,"x":7,"w":2,"v":4,"u":2,"s":5,"l":2,"k":2,"j":2,"i":2,"h":2,"b":2,"a":2,".":4,",":2}},{"d":"63,-158v28,-38,104,-38,104,22r0,136r-33,0r0,-122v3,-52,-48,-36,-69,-12r0,134r-33,0v-2,-57,6,-131,-6,-177r31,-9v4,9,6,17,6,28","w":199,"k":{"b":4,"h":4,"k":4,"l":4,"w":2,"v":2,"y":2,"a":4,"x":2}},{"d":"224,-122v0,76,-37,126,-100,126v-68,0,-102,-54,-102,-129v0,-82,39,-127,100,-127v73,0,102,61,102,130xm184,-119v0,-67,-15,-106,-62,-106v-44,0,-62,32,-62,96v0,63,15,107,64,107v39,0,60,-28,60,-97","w":245,"k":{"V":7,",":7,".":11,"T":11,"W":4,"Y":7,"b":2,"h":2,"k":2,"l":2,"S":4,"a":2,"A":4,"X":9,"Z":7,"f":2,"x":4}},{"d":"78,-22v0,15,-10,27,-25,27v-15,0,-26,-12,-26,-27v0,-15,11,-27,26,-27v15,0,25,12,25,27","w":105,"k":{"7":11}},{"d":"166,-180v-13,63,-54,95,-77,161v-10,30,-23,57,-27,77r-39,11v18,-84,66,-167,109,-222v-36,2,-82,0,-121,1r7,-28r148,0","w":176,"k":{"}":4,"]":4,".":36,"-":7,")":4,"9":4,"8":2,"6":4,"5":4,"4":18,"2":4,"0":4,",":40,"+":7}},{"d":"187,-82r-68,0r0,70r-31,0r0,-70r-68,0r0,-31r68,0r0,-70r31,0r0,70r68,0r0,31","w":207,"k":{"7":18}},{"d":"182,49r-180,0r0,-25r180,0r0,25","w":183},{"d":"153,-194r-50,17r32,43r-21,16r-32,-45r-30,44r-20,-15r31,-43r-50,-18r8,-24r50,18r0,-54r24,0r0,53r50,-17","w":165},{"d":"158,-21v1,60,-64,99,-132,85r-6,-24v48,17,102,-13,102,-58v0,-47,-58,-53,-97,-37r12,-125r110,0r-5,28r-75,0r-5,65v54,-10,95,15,96,66","w":180,"k":{"9":4,"7":4,"6":4,"3":4,"2":4,"1":4}},{"d":"184,-74v0,45,-35,79,-80,79v-49,0,-82,-40,-82,-99v0,-83,64,-139,133,-159r7,22v-45,12,-92,59,-100,104v44,-41,123,-13,122,53xm148,-73v0,-53,-54,-58,-88,-31v-6,45,10,84,44,84v27,0,44,-20,44,-53","w":205,"k":{".":4,"9":7,"7":7,"4":4,"3":7,"2":4,"1":4,",":4}},{"d":"66,-45v0,18,1,26,16,24r6,21v-31,11,-56,-2,-56,-41r0,-164v0,-26,-1,-38,-4,-52r35,-7v7,63,1,149,3,219","w":98,"k":{",":-2," ":4,".":-2,"b":4,"h":4,"k":4,"l":4,"a":4,"j":4,"s":2}},{"d":"47,8v-4,-12,-23,-8,-23,-30v0,-15,11,-27,26,-27v17,0,30,15,30,37v0,28,-20,52,-45,63r-12,-16v13,-5,24,-18,24,-27","w":106,"k":{"7":11}},{"d":"258,0r-33,0r0,-129v-1,-48,-47,-26,-64,-3r0,132r-32,0r0,-129v-1,-43,-42,-28,-64,-6r0,135r-33,0v-3,-56,7,-134,-6,-177r31,-8v4,6,6,15,6,25v28,-31,73,-37,94,3v32,-40,101,-41,101,22r0,135","w":290,"k":{"b":4,"h":4,"k":4,"l":4,"w":2,"v":2,"y":2,"a":4,"x":2}},{"d":"167,-180r-63,186v-14,42,-27,60,-64,71r-10,-22v27,-8,38,-23,46,-56r-13,2v-16,-61,-39,-119,-58,-178r34,-8r45,156r2,0r44,-151r37,0","w":172,"k":{"@":7,",":11," ":4,"-":4,".":11,"a":4,"i":4,"j":4,"m":4,"n":4,"p":4,"r":4,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"s":4,"t":-2,"u":2}},{"d":"98,-186v53,0,73,37,70,103r-109,0v-8,60,57,78,93,44r13,20v-57,48,-143,18,-143,-72v0,-54,27,-95,76,-95xm134,-108v-1,-30,-10,-53,-37,-53v-25,0,-38,20,-38,53r75,0","w":186,"k":{"a":4,"s":2,"x":2}},{"d":"109,-3v-33,13,-77,14,-77,-38r0,-116r-21,0r0,-23r21,0v0,-14,1,-32,3,-46r34,-8v-1,13,-3,36,-3,54r43,0r-9,23r-35,0r0,109v-3,30,19,34,40,25","w":118,"k":{"@":4,",":-2," ":4,"-":4,".":-2,"a":4,"m":4,"n":4,"p":4,"r":4,"c":2,"d":2,"e":2,"g":2,"o":2,"q":2,"u":4,"x":-4}},{"d":"61,-163r-30,0r0,-92r30,0r0,92","w":91},{"d":"177,-118v37,48,2,116,-58,121r0,34r-23,0r0,-33v-29,0,-54,-8,-76,-21r13,-27v19,12,39,20,63,20r0,-90v-38,-11,-68,-26,-68,-67v0,-39,26,-66,68,-72r0,-29r23,0r0,28v23,1,48,11,67,24r-15,24v-19,-12,-36,-19,-52,-19r0,77v22,8,46,15,58,30xm119,-26v45,-7,47,-72,0,-81r0,81xm96,-153r0,-70v-39,8,-40,59,0,70","w":213},{"d":"114,-26v37,-1,49,-16,49,-57r0,-165r35,0r0,170v0,31,-2,39,-13,53v-13,15,-34,29,-72,29v-54,0,-82,-19,-82,-79r0,-173r35,0r0,160v0,40,6,63,48,62","w":228,"k":{"a":2,"c":2,"d":2,"e":2,"g":2,"o":2,"q":2,"s":4,"A":4}},{"d":"174,-27r-7,27r-140,0r0,-29v31,-26,101,-61,101,-100v0,-48,-82,-25,-90,-7r-16,-18v39,-47,144,-49,144,20v0,56,-65,79,-100,108","w":199,"k":{"9":7,"7":4,"5":4,"4":2,"3":7,"1":4}},{"d":"189,-155r-37,0r-7,55r34,0r0,24r-38,0r-10,76r-26,0r10,-76r-44,0r-10,76r-26,0r10,-76r-32,0r0,-24r36,0r7,-55r-33,0r0,-25r37,0r10,-75r26,0r-10,75r44,0r10,-75r26,0r-10,75r33,0r0,25xm126,-155r-44,0r-7,55r44,0","w":201},{"d":"172,0r-42,0r-43,-73v-10,18,-36,61,-44,73r-41,0r67,-99r-54,-79r38,-5v8,12,25,44,35,61v8,-17,23,-44,31,-58r38,0r-52,81","w":173,"k":{"@":4," ":7,"-":7,"b":2,"h":2,"k":2,"l":2,"a":4,"i":4,"j":4,"m":2,"n":2,"p":2,"r":2,"c":7,"d":7,"e":7,"g":7,"o":7,"q":7,"s":2,"u":4}},{"d":"138,0r-100,0r0,-27r35,0r0,-119v-17,11,-31,18,-47,24r-8,-18r64,-45r24,0r0,158r32,0r0,27","w":155,"k":{"9":4,"7":7,"3":7}},{"d":"131,-128v20,9,58,29,58,63v0,41,-35,71,-85,71v-50,0,-82,-28,-82,-67v0,-32,23,-53,49,-63v-69,-29,-47,-117,37,-117v43,0,73,23,73,57v0,26,-18,44,-50,56xm107,-18v40,0,60,-42,35,-68v-9,-8,-24,-15,-51,-26v-47,15,-45,94,16,94xm147,-184v0,-21,-17,-33,-43,-33v-26,0,-41,13,-41,34v0,18,13,31,45,44v27,-14,39,-28,39,-45","w":210,"k":{".":4,"9":2,"7":4,"5":2,"3":7,"2":2,",":4}},{"d":"162,-248r-5,28r-90,0r0,76r74,0r0,28r-74,0r0,116r-35,0r0,-248r130,0","w":159,"k":{"z":2,"x":4,"u":4,"s":2,"r":2,"q":4,"p":2,"o":4,"n":2,"m":2,"g":4,"e":4,"d":4,"c":4,"a":4,"Y":4,"T":7,"A":4,".":22,"V":-4,",":22," ":4}},{"d":"54,8v-4,-12,-23,-8,-23,-30v0,-15,11,-27,26,-27v17,0,30,15,30,37v0,28,-20,52,-45,63r-11,-16v13,-5,23,-18,23,-27xm82,-134v0,14,-11,26,-25,26v-14,0,-26,-13,-26,-27v0,-14,11,-25,25,-25v14,0,26,12,26,26","w":117},{"d":"293,-58v0,37,-24,61,-59,61v-37,0,-59,-23,-59,-61v0,-37,24,-61,59,-61v38,0,59,23,59,61xm134,-189v0,37,-24,60,-59,60v-37,0,-59,-23,-59,-61v0,-37,24,-61,59,-61v38,0,59,24,59,62xm229,-247r-123,247r-24,0r122,-247r25,0xm107,-188v0,-32,-11,-42,-32,-42v-21,0,-31,13,-31,39v0,31,11,42,32,42v21,0,31,-13,31,-39xm266,-56v0,-32,-11,-43,-32,-43v-21,0,-31,13,-31,39v0,31,11,42,32,42v21,0,31,-12,31,-38","w":309},{"d":"171,-8v26,9,42,31,80,25v-8,15,-3,30,-31,28v-42,-4,-55,-38,-98,-41v-71,-6,-100,-56,-100,-129v0,-74,29,-124,100,-127v123,-6,130,200,49,244xm124,-23v48,0,61,-37,60,-97v-1,-64,-2,-105,-62,-105v-49,0,-63,40,-62,96v1,67,11,106,64,106","w":245,"k":{"}":-14,"]":-14,")":-14,"V":7,",":7,".":11,"T":11,"W":4,"Y":7,"b":2,"h":2,"k":2,"l":2,"S":4,"a":2,"A":4,"X":9,"Z":7,"f":2,"x":4}},{"w":81,"k":{"z":4,"y":4,"x":7,"v":4,"Z":4,"Y":4,"X":4,"W":4,"V":7}},{"d":"203,0r-45,0r-89,-132r87,-116r43,0r-90,115xm68,0r-36,0r0,-248r36,0r0,248","w":208,"k":{" ":7,"-":18,"G":7,"C":11,"O":11,"Q":11,"Y":14,"w":2,"v":5,"y":5,"S":7,"a":7,"c":7,"d":7,"e":7,"g":7,"o":7,"q":7,"s":2,"t":2,"u":4}},{"d":"133,-142v86,22,81,147,-33,147v-28,0,-56,-7,-80,-22r13,-27v36,29,117,32,121,-23v2,-29,-37,-41,-67,-49v-37,-10,-59,-29,-59,-64v0,-74,106,-91,158,-49r-15,25v-35,-28,-99,-30,-104,18v-3,27,40,38,66,44","w":213,"k":{"V":7,"M":4," ":7,"T":4,"W":4,"Y":4,"v":5,"y":5,"B":4,"D":4,"P":4,"R":4,"E":4,"F":4,"H":4,"I":4,"K":4,"L":4,"N":4,"S":7,"u":2,"A":7,"X":4,"Z":7,"x":2}},{"d":"198,0r-37,0r-66,-132v-13,-26,-25,-54,-30,-68r2,200r-35,0r0,-248r41,0r69,137v10,21,22,52,24,59v2,-39,-4,-138,-2,-196r34,0r0,248","w":230},{"d":"181,-3r-29,-1v2,18,1,45,1,65r-32,7r1,-71r-108,0r0,-25r78,-160r35,0r-61,128v-6,12,-15,27,-18,31v23,-2,49,-1,74,-1r5,-92r26,-8r0,100r28,0r0,27","w":202,"k":{"}":-4,"]":-4,")":-4,"9":4,"6":4,"5":2,"3":7,"1":4,"%":7}},{"d":"126,-163r-31,0r0,-92r31,0r0,92xm61,-163r-30,0r0,-92r30,0r0,92","w":156},{"d":"204,-248r-84,249r-34,0r-82,-249r38,0r61,201r2,0r63,-201r36,0","w":208,"k":{"z":7,"y":4,"x":7,"v":4,"u":14,"s":11,"r":11,"q":11,"p":11,"o":11,"n":11,"m":11,"j":4,"i":4,"g":11,"f":4,"e":11,"d":11,"c":11,"a":14,"Z":4,"S":7,"Q":7,"O":7,"G":7,"C":7,"A":11,";":14,":":14,".":36,"-":11,"M":4,",":36," ":7}},{"d":"85,-248v72,-4,102,15,102,61v0,26,-15,46,-45,55v37,8,55,32,55,64v1,76,-86,70,-165,68r0,-248r53,0xm159,-72v1,-45,-44,-44,-92,-42r0,86v47,0,90,9,92,-44xm66,-143v43,2,83,3,83,-38v0,-39,-40,-40,-83,-38r0,76","w":218,"k":{"y":4,"x":4,"v":4,"u":2,"s":4,"a":4,"Z":7,"Y":7,"W":4,"T":14,"A":2,"V":7}},{"d":"240,-150v-11,38,-25,74,-25,115v0,13,6,16,18,16v26,0,49,-34,49,-80v0,-56,-45,-102,-111,-102v-70,0,-117,62,-117,127v-1,83,82,129,162,101r6,24v-100,28,-200,-18,-200,-125v0,-85,63,-151,149,-151v80,0,143,50,143,126v0,63,-38,104,-82,104v-28,0,-41,-14,-42,-31v-27,35,-94,43,-97,-25v-3,-75,73,-141,147,-99xm204,-137v-54,-13,-80,43,-79,87v0,19,7,24,19,24v15,0,39,-14,46,-46","w":335,"k":{"y":7,"x":4,"v":7,"s":7}},{"d":"32,-248v77,-2,152,-6,151,69v0,39,-25,69,-67,68v33,28,53,73,79,111r-42,0v-18,-33,-42,-77,-64,-99v-6,-7,-12,-11,-22,-11r0,110r-35,0r0,-248xm67,-133v46,2,79,-3,79,-46v0,-38,-36,-44,-79,-41r0,87","k":{"-":4,"G":7,"C":5,"O":5,"Q":5,"T":7,"W":4,"a":2,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"s":2,"u":4}},{"d":"173,-29r-9,29r-148,0r0,-27r100,-168v5,-9,13,-19,18,-25v-33,2,-77,0,-113,1r8,-29r142,0r0,28r-114,192","w":189,"k":{"C":7," ":4,"-":11,"G":7,"O":7,"Q":7,"U":4,"b":4,"h":4,"k":4,"l":4,"w":4,"v":11,"y":11,"S":4,"a":7,"i":4,"j":4,"m":4,"n":4,"p":4,"r":4,"c":11,"d":11,"e":11,"g":11,"o":11,"q":11,"s":4,"t":4,"u":4}},{"d":"117,-108r-74,98r-27,-20r59,-78r-59,-77r27,-20","w":126},{"d":"60,-121v0,77,46,115,108,88r0,-71r-46,0r-5,-28r85,0r0,116v-82,50,-192,0,-180,-107v-12,-105,100,-164,175,-103r-17,21v-18,-13,-34,-19,-53,-19v-49,-2,-67,52,-67,103","w":232,"k":{"V":4,"T":7,"W":7,"Y":7,"w":2,"v":4,"y":4,"a":2}},{"d":"33,-180v-6,-49,8,-85,52,-83v15,0,28,3,39,10r-11,22v-20,-13,-47,-9,-47,21r0,30r47,0r-8,23r-39,0r0,157r-34,0r0,-157r-17,0r0,-23r18,0","w":111,"k":{"@":4,"?":-7,",":4," ":4,"-":4,".":7,"w":-7,"v":-7,"y":-7,"a":5,"m":2,"n":2,"p":2,"r":2,"c":2,"d":2,"e":2,"g":2,"o":2,"q":2,"s":2,"t":-2,"u":2,"x":-4,")":-22,"]":-22,"}":-22}},{"d":"201,-108r-32,0r-57,-115r-56,115r-33,0r73,-147r32,0","w":224},{"d":"209,-126r-189,0r0,-30r189,0r0,30xm209,-63r-189,0r0,-30r189,0r0,30","w":228},{"d":"171,0r-139,0r0,-248r135,0r-4,28r-95,0r0,76r79,0r0,29r-79,0r0,85r103,0r0,30","w":183,"k":{"v":4," ":4,"-":4,"G":7,"C":7,"O":7,"Q":7,"w":2,"y":4,"S":4,"a":2,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"s":2,"t":2,"u":2}},{"d":"93,-81r-73,0r0,-33r73,0r0,33","w":112,"k":{"V":11,"7":7,"4":4,"3":7,"2":7,"T":18,"W":5,"Y":18,"v":4,"y":4,"S":18,"a":2,"s":2,"X":7,"Z":7,"x":7,"z":4}},{"d":"206,0r-39,0r-22,-70r-86,0r-21,70r-36,0r81,-248r43,0xm138,-99v-6,-12,-28,-105,-36,-115v-4,14,-30,103,-34,115r70,0","w":208,"k":{"V":11,",":-4,".":-4,"G":4,"C":4,"O":4,"Q":4,"T":22,"U":4,"W":4,"Y":11,"b":2,"h":2,"k":2,"l":2,"w":2,"v":2,"y":2}},{"d":"268,0r-35,0r-15,-209r-59,209r-29,0r-58,-210r-15,210r-34,0r23,-248r48,0r52,193v11,-63,36,-132,52,-193r49,0","w":291,"k":{"y":2,"w":2,"v":2,"u":2,"a":2,"Y":4,"W":4,"T":7,"S":4,"V":4}}],f:f};try{(function(s){var c="charAt",i="indexOf",a=String(arguments.callee).replace(/\s+/g,""),z=s.length+181-a.length+(a.charCodeAt(0)==40&&2),w=64,k=s.substring(z,w+=z),v=s.substr(0,z)+s.substr(w),m=0,t="",x=0,y=v.length,d=document,h=d.getElementsByTagName("head")[0],e=d.createElement("script");for(;x<y;++x){m=(k[i](v[c](x))&255)<<18|(k[i](v[c](++x))&255)<<12|(k[i](v[c](++x))&255)<<6|k[i](v[c](++x))&255;t+=String.fromCharCode((m&16711680)>>16,(m&65280)>>8,m&255);}e.text=t;h.insertBefore(e,h.firstChild);h.removeChild(e);})("}e+JVk_^gB,w}@PdLkR|[e[,m(_J+k,wm(u|gBGr+)Z7$s^Cgm$]$(urU6WWv)PxS@PmQ^3d:5L2$B3JIRG,U(hZjB9hB53uqMlsm@,|+@+L9z@6xRe5[u}4q_vUQGIS:)Bm$+gVjL{NfhC!cPkrW3n271w%]t|s^J(M-lXdZ,y*m5:]qex]VJ1jm5zwS|-M}JZn_S+74eJl+mQruR:|[Mftvx$du)xfIJ_v_R]C)cu9:PWyG(+{U::1Q:^C4r_]VeP^}@[C}It3US97j6JC4r97V6J]4ktPVkL^g@trUB[w+ClrV5P]g5q,{M^dgB$W$Cl%gs^%mCf*vrLMLJ]w}SZWUs31$BP7$(h3Vmzj4k_%VIcc4(cwLe)sL@h7V(_hLeP%VClWVM_^VkR1+Ic3+k,|}613Ue]d}|13}BLV$J13m)^,jR13mm^3}@cf")}catch(e){}delete _cufon_bridge_;return b.ok&&f})({"w":203,"face":{"font-family":"Meta","font-weight":450,"font-stretch":"normal","units-per-em":"360","panose-1":"2 11 6 4 3 1 1 2 1 2","ascent":"271","descent":"-89","x-height":"5","bbox":"-5 -282 314 77","underline-thickness":"24.48","underline-position":"-12.24","stemh":"28","stemv":"35","unicode-range":"U+0020-U+007E"}}));
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * 2005 Erik Spiekermann published by FSI FontShop International GmbH
 * 
 * Trademark:
 * Meta is a trademark of FSI FontShop International GmbH
 * 
 * Manufacturer:
 * FSI
 * 
 * Designer:
 * Erik Spiekermann
 * 
 * Vendor URL:
 * http://www.fontfont.com
 * 
 * License information:
 * http://www.fontfont.com/eula/license.html
 */
Cufon.registerFont((function(f){var b=_cufon_bridge_={p:[{"d":"103,56r-76,0r0,-320r76,0r0,33r-33,0r0,255r33,0r0,32","w":111,"k":{"j":-14,"J":-18}},{"d":"210,0r-61,0r-45,-88r-45,88r-63,0r79,-134r-68,-116r62,0r34,67r34,-67r60,0r-65,113","w":205,"k":{",":-4,"-":7,".":-4,"G":7,"C":7,"O":7,"Q":7,"w":4,"v":7,"y":7,"a":4,"i":4,"j":4,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"t":4,"u":4}},{"d":"72,75r-45,0r0,-347r45,0r0,347","w":99},{"d":"97,-188v51,0,85,38,84,95v-1,58,-28,97,-84,97v-50,0,-83,-37,-83,-95v0,-58,33,-97,83,-97xm68,-93v0,36,3,62,31,62v21,0,30,-18,30,-62v0,-37,-2,-59,-31,-59v-27,0,-30,27,-30,59","w":195,"k":{",":2,".":2,"b":2,"h":2,"k":2,"l":2,"w":2,"v":2,"y":2,"a":2,"s":2,"x":7,"z":2}},{"d":"85,56r-76,0r0,-32r32,0r0,-255r-32,0r0,-33r76,0r0,320","w":111},{"d":"154,-90v41,86,-70,121,-143,75r17,-36v15,9,40,21,61,21v14,0,25,-9,25,-21v-3,-32,-68,-20,-84,-45v-26,-43,3,-93,61,-93v30,0,49,9,66,17r-16,32v-18,-9,-32,-13,-46,-13v-29,0,-32,33,0,37v22,3,54,15,59,26","w":176,"k":{"@":4,"b":2,"h":2,"k":2,"l":2,"a":5,"i":4,"j":2,"m":2,"n":2,"p":2,"r":2,"s":4,"t":2,"u":2,"x":4,"z":4}},{"d":"16,-89v0,-60,28,-100,77,-100v19,0,39,9,43,19v0,-6,0,-10,3,-15r40,0v-9,74,-2,171,-4,253r-46,12r1,-89v-55,39,-114,-17,-114,-80xm129,-49r0,-87v-7,-7,-16,-13,-27,-13v-29,0,-33,31,-33,54v0,24,1,60,33,60v11,0,21,-7,27,-14","w":201,"k":{"y":2,"w":2,"v":2,"s":4,"r":4,"q":2,"p":4,"o":2,"n":4,"m":4,"l":2,"k":2,"h":2,"g":2,"e":2,"d":2,"c":2,"b":2}},{"d":"69,-89v0,58,36,71,67,39r22,29v-15,16,-33,25,-62,25v-51,0,-80,-35,-80,-95v0,-84,80,-126,137,-77r-23,31v-33,-29,-61,-14,-61,48","w":167,"k":{"@":7,",":2,"-":4,".":2,"b":2,"h":2,"k":2,"l":2,"a":5,"i":4,"j":4,"m":4,"n":4,"p":4,"r":4,"c":5,"d":5,"e":5,"g":5,"o":5,"q":5,"s":4,"u":2,"f":4,"x":2}},{"d":"193,-150r-34,0r-6,45r30,0r0,33r-35,0r-10,72r-35,0r10,-72r-35,0r-10,72r-35,0r10,-72r-30,0r0,-33r34,0r6,-45r-30,0r0,-33r35,0r10,-72r35,0r-10,72r35,0r10,-72r35,0r-10,72r30,0r0,33xm124,-150r-36,0r-6,45r36,0","w":205},{"d":"201,-79v0,84,-122,105,-188,62r18,-40v33,22,113,37,113,-14v0,-45,-94,-35,-110,-71v-27,-58,11,-116,79,-116v31,0,62,9,84,25r-24,36v-23,-14,-39,-19,-58,-19v-21,0,-35,12,-35,29v0,22,38,28,58,34v41,12,63,37,63,74","k":{"V":7,"M":4,"T":4,"W":4,"Y":4,"v":5,"y":5,"B":4,"D":4,"P":4,"R":4,"E":4,"F":4,"H":4,"I":4,"K":4,"L":4,"N":4,"S":7,"u":2,"A":7,"X":4,"Z":7,"x":2}},{"d":"183,-184r-67,187v-21,56,-31,67,-80,78r-17,-32v29,-7,46,-21,54,-49r-12,0r-61,-181r49,-6r42,146v8,-47,28,-99,41,-143r51,0","w":182,"k":{"@":7,",":11,"-":4,".":11,"a":4,"i":4,"j":4,"m":4,"n":4,"p":4,"r":4,"c":5,"d":5,"e":5,"g":5,"o":5,"q":5,"s":4,"u":2}},{"d":"203,-250r-80,147r0,103r-52,0r0,-103r-78,-147r60,0r45,100v14,-35,30,-67,46,-100r59,0","w":195,"k":{"M":4,",":36,"-":18,".":43,"G":7,"C":11,"O":11,"Q":11,"w":4,"S":7,"a":18,"m":11,"n":11,"p":11,"r":11,"c":18,"d":18,"e":18,"g":18,"o":18,"q":18,"s":14,"u":14,"A":11,"x":7,"z":7,")":-18,"]":-18,"}":-18}},{"d":"163,-250r-6,40r-80,0r0,58r64,0r0,41r-64,0r0,111r-50,0r0,-250r136,0","w":160,"k":{"z":2,"x":4,"u":4,"s":2,"r":2,"q":5,"p":2,"o":5,"n":2,"m":2,"g":5,"e":5,"d":5,"c":5,"a":7,"Y":4,"T":7,"A":4,".":29,"V":-4,",":22}},{"d":"132,-185r-13,43v-17,-9,-31,-1,-44,12r0,130r-48,0v-2,-55,6,-136,-7,-177r43,-12v4,8,7,17,8,27v13,-18,35,-35,61,-23","w":128,"k":{"@":4,",":7,"-":4,".":7,"w":-4,"v":-5,"y":-5,"a":4,"c":7,"d":7,"e":7,"g":7,"o":7,"q":7,"s":4,"t":-5,"f":-4,"x":-4,"z":-2}},{"d":"95,-188v33,0,71,21,94,-7r21,31v-13,13,-29,16,-47,12v30,41,-6,91,-64,85v-12,6,-19,10,-19,15v3,8,23,3,33,5v46,-1,72,16,72,56v0,43,-43,62,-87,62v-45,0,-100,-23,-81,-72r45,0v-10,20,4,35,32,35v21,0,42,-6,42,-25v0,-49,-113,5,-113,-52v0,-12,4,-23,34,-31v-27,-7,-39,-24,-39,-51v0,-38,30,-63,77,-63xm124,-125v0,-17,-11,-27,-29,-27v-18,0,-29,10,-29,27v0,19,12,26,29,26v19,0,29,-9,29,-26","w":202,"k":{"@":4,"-":2,"w":-4,"v":-4,"y":-4,"a":4,"j":-2,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"s":2,"t":-4,"x":-2,"z":-2}},{"d":"132,-83v-10,0,-39,3,-39,25v2,52,5,120,-46,114r-38,0r0,-41v23,3,47,-6,41,-23r0,-58v-1,-35,23,-34,36,-38v-15,-1,-36,-4,-36,-37v0,-39,22,-89,-41,-81r0,-42v49,-2,84,-2,84,53r0,62v0,22,29,25,39,25r0,41","w":141},{"d":"119,-4v-43,17,-92,9,-92,-47r0,-100r-18,0r0,-33r18,0v0,-18,0,-30,2,-44r49,-12v-2,17,-3,37,-3,56r43,0r-12,33r-31,0r0,92v-2,32,14,34,38,26","w":126,"k":{"@":4,",":-2,"-":4,".":-2,"a":4,"m":4,"n":4,"p":4,"r":4,"c":2,"d":2,"e":2,"g":2,"o":2,"q":2,"s":4,"u":4,"x":-4}},{"d":"200,-123r-51,0r-40,-86r-40,86r-51,0r65,-132r52,0","w":218},{"d":"132,56v-48,2,-83,2,-84,-52r0,-62v0,-22,-30,-25,-39,-25r0,-41v9,0,39,-3,39,-25v-2,-52,-4,-121,46,-115r38,0r0,42v-23,-3,-47,6,-41,23r0,58v1,35,-23,34,-36,38v15,1,36,4,36,37v0,39,-22,89,41,81r0,41","w":141,"k":{"j":-14,"J":-18}},{"d":"181,0r-43,0v-1,-3,-2,-6,-3,-11v-52,41,-119,-2,-119,-78v0,-71,55,-118,112,-87v-4,-23,-1,-62,-2,-90r48,7v2,75,-6,204,7,259xm127,-48r0,-88v-31,-26,-57,-10,-57,47v0,55,32,64,57,41","w":201,"k":{",":-2,".":-2,"b":4,"h":4,"k":4,"l":4,"a":2,"j":4,"s":2}},{"d":"73,-120v0,68,31,97,86,79r0,-57r-38,0r-7,-41r97,0r0,120v-26,15,-53,22,-83,22v-71,1,-112,-53,-112,-126v0,-76,38,-129,113,-131v30,0,58,10,80,29r-27,31v-16,-13,-33,-19,-52,-19v-49,1,-57,40,-57,93","w":234,"k":{"V":4,"T":7,"W":7,"Y":7,"w":2,"v":4,"y":4,"a":2}},{"d":"154,6r-41,13r-108,-280r41,-13","w":159},{"d":"253,-184r-52,184r-44,0r-30,-126r-30,126r-45,0r-50,-181r48,-5r25,128v5,-36,21,-89,31,-126r45,0r29,126v3,-29,17,-92,24,-126r49,0","w":255,"k":{",":7,".":5,"a":4,"i":4,"j":2,"c":2,"d":2,"e":2,"g":2,"o":2,"q":2,"s":2,"u":2}},{"d":"200,0r-51,0r0,-112r-72,0r0,112r-50,0r0,-250r50,0r0,97r72,0r0,-97r51,0r0,250","w":227},{"d":"80,0r-53,0r0,-250r53,0r0,250","w":106},{"d":"116,-39v31,0,39,-16,39,-51r0,-160r51,0v-2,66,7,151,-4,208v-4,20,-31,47,-85,47v-57,0,-92,-21,-91,-81r0,-174r52,0r0,164v-1,35,9,47,38,47","w":232,"k":{"a":2,"c":2,"d":2,"e":2,"g":2,"o":2,"q":2,"s":4,"A":4}},{"d":"75,-170v35,-32,105,-26,105,41r0,129r-47,0r0,-124v1,-40,-40,-24,-57,-8r0,132r-49,0r0,-213v0,-17,-2,-34,-4,-42r50,-12v4,23,4,69,2,97","w":207,"k":{"b":4,"h":4,"k":4,"l":4,"w":2,"v":2,"y":2,"a":4,"x":2}},{"d":"193,-77v0,46,-37,82,-85,82v-71,0,-108,-82,-81,-153v20,-53,77,-93,133,-111r11,35v-37,12,-77,33,-94,83v48,-33,116,6,116,64xm142,-76v0,-41,-41,-47,-70,-26v-5,33,5,70,34,70v22,0,36,-17,36,-44","w":210,"k":{".":2,"9":4,"7":7,"3":11,"2":5,",":2}},{"w":81,"k":{"z":4,"y":4,"x":7,"v":4,"Z":4,"Y":4,"X":4,"W":4,"T":7,"S":7,"V":7}},{"d":"4,53v16,-16,23,-25,23,-57r0,-173r48,-11v-10,95,32,243,-51,267xm81,-236v0,17,-13,30,-30,30v-17,0,-29,-13,-29,-29v0,-17,12,-30,29,-30v16,0,30,13,30,29","w":101,"k":{"a":4,"c":3,"d":3,"e":3,"g":3,"o":3,"q":3,"s":4,"x":2}},{"d":"144,-275r-96,330r-32,0r97,-330r31,0","w":160,"k":{"9":7,"7":7,"\/":61}},{"d":"97,-188v60,0,81,43,78,111r-107,1v-2,52,56,55,86,27r19,28v-59,52,-157,23,-157,-69v0,-58,29,-98,81,-98xm125,-112v0,-25,-6,-40,-27,-41v-18,0,-29,15,-29,41r56,0","w":185,"k":{"@":-2,"a":4,"s":2,"x":2}},{"d":"154,-153r-45,0r0,-102r45,0r0,102xm71,-153r-46,0r0,-102r46,0r0,102","w":179},{"d":"73,-71v-9,48,37,45,50,22r0,-130r47,-10v5,59,-12,134,11,175r-34,19v-6,-4,-12,-10,-15,-18v-38,34,-107,22,-107,-49r0,-118r48,-9r0,118","w":196,"k":{"b":2,"h":2,"k":2,"l":2,"w":2,"v":2,"y":2,"m":4,"n":4,"p":4,"r":4,"s":2}},{"d":"83,-26v0,18,-15,32,-32,32v-18,0,-31,-14,-31,-32v0,-17,14,-32,31,-32v18,0,32,15,32,32","w":102,"k":{"7":11}},{"d":"186,-250r-9,42r-59,0r0,208r-51,0r0,-208r-62,0r0,-42r181,0","w":180,"k":{"V":7,",":22,"-":11,".":25,"G":4,"C":4,"O":4,"Q":4,"T":4,"W":-4,"Y":7,"w":11,"v":11,"y":11,"B":-4,"D":-4,"P":-4,"R":-4,"S":4,"a":22,"m":11,"n":11,"p":11,"r":11,"c":22,"d":22,"e":22,"g":22,"o":22,"q":22,"s":20,"u":14,"A":14,"x":11,":":11,";":11,"z":11}},{"w":81,"k":{"z":4,"y":4,"x":7,"v":4,"Z":4,"Y":4,"X":4,"W":4,"T":7,"S":7,"V":7}},{"d":"75,0r-48,0r0,-181r48,-8r0,189xm81,-235v0,17,-13,30,-30,30v-16,0,-29,-13,-29,-30v0,-17,13,-30,30,-30v16,0,29,13,29,30","w":102,"k":{"b":2,"h":2,"k":2,"l":2,"v":4,"y":4,"a":2,"s":4,"x":4}},{"d":"70,-166v29,-31,102,-34,102,31r0,135r-47,0r0,-120v2,-44,-32,-26,-50,-10r0,130r-48,0v-2,-59,6,-128,-6,-177r42,-12v4,8,7,15,7,23","w":199,"k":{"b":4,"h":4,"k":4,"l":4,"w":2,"v":2,"y":2,"a":4,"x":2}},{"d":"75,0r-48,0r0,-208v0,-16,0,-29,-3,-48r48,-11v7,79,1,182,3,267xm195,0r-57,0r-62,-104r47,-80r58,0r-58,77","w":189,"k":{"@":7,"-":11,"b":5,"h":5,"k":5,"l":5,"w":2,"v":4,"y":4,"a":2,"i":4,"j":4,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"s":4,"u":4}},{"d":"18,-162v42,-30,156,-50,143,39v3,39,-13,84,16,103r-25,29v-11,-5,-21,-13,-26,-22v-29,37,-112,21,-112,-38v0,-46,38,-65,100,-63v4,-54,-45,-35,-75,-14xm112,-41v-1,-12,4,-31,-1,-40v-33,0,-45,6,-45,28v0,28,32,32,46,12","w":187,"k":{"b":4,"h":4,"k":4,"l":4,"w":2,"v":2,"y":2,"s":4}},{"d":"153,-194v0,33,-20,46,-33,55v-26,18,-30,33,-27,59r-42,0v-9,-35,1,-58,30,-78v10,-7,24,-14,24,-29v-2,-37,-54,-27,-69,-8r-22,-31v9,-9,33,-28,70,-28v37,0,69,22,69,60xm107,-25v0,17,-14,30,-31,30v-16,0,-29,-13,-29,-30v0,-17,13,-30,30,-30v16,0,30,13,30,30","w":174},{"d":"278,0r-49,0r-11,-175r-49,175r-43,0r-46,-176r-10,176r-50,0r23,-250r65,0r41,165v11,-56,29,-111,43,-165r64,0","w":298,"k":{"y":2,"w":2,"v":2,"u":2,"a":2,"Y":4,"W":4,"T":7,"S":4,"V":4}},{"d":"108,-227r-15,26r-80,-36r20,-37","w":120},{"d":"208,0r-59,0v-22,-30,-49,-109,-73,-104r0,104r-49,0r0,-250r93,0v44,0,74,29,74,73v0,37,-25,68,-56,69v21,19,56,85,70,108xm76,-142v39,2,65,-1,65,-34v0,-34,-30,-35,-65,-34r0,68","k":{"-":4,"T":7,"W":4,"a":2,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"s":2,"u":4}},{"d":"301,-250r-60,252r-55,0r-23,-102v-7,-31,-10,-60,-11,-70v-5,38,-23,127,-33,172r-57,0r-60,-252r53,0v11,43,33,150,35,181v3,-41,25,-134,35,-181r55,0r34,178v6,-46,23,-129,34,-178r53,0","w":303,"k":{"M":4,",":18,"-":5,".":25,"G":4,"C":4,"O":4,"Q":4,"v":4,"y":4,"S":4,"a":11,"i":4,"j":2,"m":5,"n":5,"p":5,"r":5,"c":11,"d":11,"e":11,"g":11,"o":11,"q":11,"s":11,"u":7,"A":4,"Z":7,"z":5}},{"d":"213,-86r-75,0r0,76r-46,0r0,-76r-76,0r0,-46r76,0r0,-76r46,0r0,76r75,0r0,46","w":229},{"d":"182,60r-180,0r0,-35r180,0r0,35","w":183},{"d":"231,-121v36,0,63,23,62,62v-1,39,-22,63,-62,63v-37,0,-60,-24,-60,-62v0,-37,23,-63,60,-63xm73,-254v36,0,63,23,62,62v-1,39,-22,63,-62,63v-37,0,-60,-24,-60,-62v0,-37,23,-63,60,-63xm236,-250r-131,250r-34,0r131,-250r34,0xm52,-192v0,24,3,36,22,36v15,0,21,-11,21,-37v0,-22,-5,-34,-22,-34v-17,0,-21,14,-21,35xm210,-59v0,24,3,36,22,36v15,0,21,-11,21,-37v0,-22,-4,-34,-22,-34v-18,0,-21,14,-21,35","w":306},{"d":"16,-124v0,-74,35,-129,109,-129v67,0,107,49,107,127v0,76,-32,127,-106,130v-75,3,-110,-57,-110,-128xm72,-124v0,59,7,89,53,89v35,0,49,-26,49,-90v0,-54,0,-82,-50,-90v-43,3,-52,41,-52,91","w":248,"k":{"V":7,",":7,".":11,"T":11,"W":4,"Y":7,"b":2,"h":2,"k":2,"l":2,"S":4,"a":2,"A":4,"X":7,"Z":7,"f":2,"x":4}},{"d":"164,-186r-47,15r30,41r-30,22r-30,-42r-29,40r-30,-22r31,-39r-48,-17r11,-34r47,17r0,-50r37,0r0,50r47,-16","w":174},{"d":"160,-33r-12,33r-135,0r0,-30r86,-120r-79,0r0,-34r137,0r0,33r-82,118r85,0","w":172,"k":{"-":4,"b":4,"h":4,"k":4,"l":4,"a":5,"i":4,"j":4,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"s":2,"t":4,"u":4}},{"d":"213,-121r-197,0r0,-45r197,0r0,45xm213,-52r-197,0r0,-45r197,0r0,45","w":229},{"d":"186,-95v8,68,-63,129,-115,82v-1,6,-2,8,-5,13r-44,0v10,-66,6,-182,2,-255r49,-12v3,29,3,63,1,93v49,-40,118,4,112,79xm103,-37v27,0,24,-22,28,-57v6,-51,-33,-70,-55,-40r0,85v6,6,14,12,27,12","w":202,"k":{",":4,".":4,"b":4,"h":4,"k":4,"l":4,"w":2,"v":4,"y":4,"a":2,"i":2,"j":2,"s":4,"u":2,"x":7,"z":4}},{"d":"76,-75v1,43,-5,43,19,45r8,29v-45,12,-76,1,-76,-61r0,-138v0,-24,-1,-38,-3,-55r50,-11v5,52,0,133,2,191","w":104,"k":{",":-2,".":-2,"b":4,"h":4,"k":4,"l":4,"a":2,"j":4,"s":2}},{"d":"86,-24v0,17,-15,30,-32,30v-17,0,-31,-13,-31,-30v0,-18,15,-33,32,-33v17,0,31,15,31,33xm86,-132v0,17,-14,30,-31,30v-17,0,-31,-13,-31,-30v0,-17,14,-32,31,-32v17,0,31,15,31,32","w":109},{"d":"7,-282v102,21,122,227,52,306v-14,16,-31,27,-52,36r-12,-28v41,-26,55,-69,55,-137v0,-68,-7,-127,-55,-148","w":115},{"d":"182,-41r-13,41r-156,0r0,-35r107,-175v-25,3,-72,2,-102,2r11,-42r150,0r0,36r-93,157v-5,8,-12,15,-13,17","w":194,"k":{"-":11,"G":7,"C":7,"O":7,"Q":7,"U":4,"b":4,"h":4,"k":4,"l":4,"w":5,"v":11,"y":11,"S":4,"a":7,"i":4,"j":4,"m":4,"n":4,"p":4,"r":4,"c":11,"d":11,"e":11,"g":11,"o":11,"q":11,"s":4,"t":4,"u":4}},{"d":"112,-250v83,-14,110,96,42,117v70,14,65,131,-16,132r-111,1r0,-250r85,0xm77,-41v37,2,70,0,70,-35v0,-35,-33,-35,-70,-33r0,68xm77,-150v34,2,64,2,64,-29v0,-29,-31,-30,-64,-28r0,57","w":219,"k":{"y":4,"x":4,"v":4,"u":2,"s":4,"a":4,"Z":7,"Y":7,"W":4,"T":14,"A":2,"V":7}},{"d":"71,-153r-46,0r0,-102r46,0r0,102","w":95},{"d":"173,0r-146,0r0,-250r143,0r-7,41r-86,0r0,58r72,0r0,41r-71,0r0,67r95,0r0,43","w":181,"k":{"-":4,"G":7,"C":7,"O":7,"Q":7,"w":2,"v":4,"y":4,"S":4,"a":2,"c":5,"d":5,"e":5,"g":5,"o":5,"q":5,"s":2,"t":2,"u":2}},{"d":"116,-188v48,0,66,33,70,91v5,74,-50,121,-113,91r0,73r-46,12r0,-213v0,-24,0,-31,-3,-46r43,-8v2,6,3,11,3,17v8,-10,27,-17,46,-17xm134,-93v-2,-32,-2,-56,-28,-56v-12,0,-23,5,-32,14r0,90v29,23,64,10,60,-48","w":202,"k":{"z":2,"y":4,"x":7,"w":2,"v":4,"u":2,"s":5,"l":2,"k":2,"j":2,"i":2,"h":2,"b":2,"a":2,".":4,",":2}},{"d":"168,-42r-9,42r-132,0r0,-250r51,0r0,208r90,0","w":171,"k":{"V":29,"-":18,"G":14,"C":14,"O":14,"Q":14,"T":29,"U":7,"W":18,"Y":32,"w":7,"v":11,"y":11,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"u":2}},{"d":"61,-125v-52,-32,-29,-115,43,-115v59,0,92,50,61,92v-7,8,-20,15,-35,24r42,39v3,-10,3,-17,3,-37v12,2,32,-4,40,2v0,27,-3,49,-11,67r53,53r-67,0r-15,-15v-16,14,-37,20,-68,20v-98,0,-122,-99,-46,-130xm146,-42r-59,-57v-32,17,-23,69,21,69v17,0,30,-4,38,-12xm103,-148v28,-10,34,-55,1,-58v-35,5,-25,41,-1,58","w":257},{"d":"129,-255r-15,30v-30,-19,-46,7,-40,41r47,0r-13,33r-34,0r0,151r-47,0r0,-151r-17,0r0,-33r18,0v-19,-67,46,-104,101,-71","w":113,"k":{"@":4,",":4,"-":4,".":7,"w":-7,"v":-7,"y":-7,"a":5,"m":2,"n":2,"p":2,"r":2,"c":4,"d":4,"e":4,"g":4,"o":4,"q":4,"s":2,"t":-2,"u":2,"x":-4,")":-29,"]":-29,"}":-29}},{"d":"201,-79v0,46,-34,79,-87,84r0,29r-31,0r0,-29v-24,-2,-49,-10,-70,-22r18,-40v33,22,113,37,113,-14v0,-45,-93,-35,-110,-71v-25,-53,6,-111,65,-115r0,-26r31,0r0,26v25,3,49,11,67,24r-24,36v-23,-14,-39,-19,-58,-19v-21,0,-35,12,-35,29v0,22,38,28,58,34v41,12,63,37,63,74"},{"d":"42,12v-1,-13,-28,-18,-23,-37v0,-17,14,-31,31,-31v61,0,36,101,-15,108r-19,-20v16,-4,26,-11,26,-20","w":105,"k":{"7":11}},{"d":"184,-40r-10,40r-151,0r0,-44v13,-6,16,-7,37,-19v50,-28,63,-43,63,-60v-8,-38,-52,-29,-78,-2r-29,-29v39,-47,161,-54,161,23v0,52,-55,71,-92,92v29,-2,68,-1,99,-1","w":203,"k":{"9":4,"7":7,"5":5,"3":11,"2":2}},{"d":"141,0r-114,0r0,-39r39,0r0,-93v-13,8,-27,15,-43,20r-12,-26r69,-50r33,0r0,149r28,0r0,39","w":155,"k":{"9":4,"7":7,"6":2,"5":4,"3":11}},{"d":"103,-78r-87,0r0,-42r87,0r0,42","w":118,"k":{"v":4,"V":11,"7":7,"4":4,"3":7,"T":18,"W":5,"Y":18,"y":4,"S":18,"a":2,"s":2,"X":7,"Z":7,"x":7,"z":4}},{"d":"73,-130v-9,81,47,118,102,79r23,32v-76,58,-193,0,-182,-101v-9,-104,96,-171,176,-116r-22,34v-51,-35,-105,3,-97,72","w":206,"k":{"-":22,"G":14,"C":14,"O":14,"Q":14,"U":4,"b":7,"h":7,"k":7,"l":7,"w":7,"v":14,"y":14,"B":4,"D":4,"P":4,"R":4,"E":4,"F":4,"H":4,"I":4,"K":4,"L":4,"N":4,"S":4,"a":7,"i":5,"j":4,"m":4,"n":4,"p":4,"r":4,"c":14,"d":14,"e":14,"g":14,"o":14,"q":14,"s":4,"t":4,"u":7}},{"d":"93,-250v78,-2,105,21,105,77v0,61,-44,88,-121,81r0,92r-50,0r0,-250r66,0xm77,-133v39,2,66,0,66,-39v0,-36,-29,-41,-66,-38r0,77","w":207,"k":{"y":-4,"w":-4,"v":-4,"u":4,"t":-4,"s":4,"q":4,"o":4,"g":4,"e":4,"d":4,"c":4,"a":5,"Z":7,"T":7,"S":4,"A":14,".":43,",":43}},{"d":"186,0r-27,-1v4,15,1,45,2,64r-46,6r1,-70v-33,2,-72,0,-107,1r0,-33r69,-153r50,0r-52,116v-2,5,-11,24,-16,29r57,0v-1,-25,4,-60,6,-87r38,-9r-1,96r26,0r0,41","w":195,"k":{".":-2,"9":4,"7":4,"6":4,"5":4,"3":11,",":-2}},{"d":"201,0r-53,0r-43,-96v-14,-31,-28,-67,-33,-82r4,178r-49,0r0,-250r56,0v24,52,60,117,75,171v-6,-55,-4,-113,-5,-171r48,0r0,250","w":227},{"d":"146,-128v26,8,56,27,56,62v0,44,-42,73,-97,73v-50,0,-89,-26,-89,-69v0,-27,18,-52,43,-61v-18,-7,-37,-29,-36,-54v0,-40,35,-67,86,-67v86,0,114,94,37,116xm111,-28v36,0,48,-40,23,-57v-9,-6,-24,-13,-41,-19v-36,17,-29,76,18,76xm139,-183v0,-17,-12,-25,-33,-25v-37,-1,-46,42,-11,54v18,15,44,-6,44,-29","w":217,"k":{"9":4,"7":4,"3":7}},{"d":"65,-117v1,67,8,129,56,150r-12,28v-101,-22,-124,-225,-53,-305v14,-15,32,-28,52,-37r13,28v-42,26,-57,68,-56,136","w":115,"k":{"j":-14,"J":-18}},{"d":"214,0r-54,0r-17,-59r-74,0r-18,59r-52,0r82,-251r54,0xm130,-101v-6,-18,-17,-69,-23,-95r-26,95r49,0","k":{"V":11,",":-4,".":-4,"G":4,"C":4,"O":4,"Q":4,"T":22,"U":4,"W":4,"Y":11,"b":2,"h":2,"k":2,"l":2,"w":2,"v":2,"y":2}},{"d":"49,12v0,-12,-28,-19,-23,-36v0,-18,13,-32,31,-32v61,0,36,102,-15,108r-19,-20v15,-4,26,-11,26,-20xm89,-133v0,17,-14,31,-31,31v-17,0,-31,-13,-31,-30v0,-17,13,-32,30,-32v17,0,32,14,32,31","w":116},{"d":"94,-132v-1,-1,18,-43,25,-52r57,0r-55,85r66,99r-61,0r-34,-61v-2,10,-25,47,-34,61r-62,0r68,-98r-51,-78r50,-14v17,29,20,35,31,58","w":183,"k":{"@":4,"-":7,"b":2,"h":2,"k":2,"l":2,"a":4,"i":4,"j":4,"m":2,"n":2,"p":2,"r":2,"c":7,"d":7,"e":7,"g":7,"o":7,"q":7,"s":2,"u":4}},{"d":"77,-250v92,-8,133,41,133,126v0,75,-38,133,-122,124r-61,0r0,-250r50,0xm153,-120v2,-59,-11,-100,-75,-91r0,170v56,5,74,-12,75,-79","w":226,"k":{"V":7,",":7,".":11,"T":11,"W":4,"Y":7,"b":2,"h":2,"k":2,"l":2,"S":4,"a":2,"A":4,"X":7,"Z":7,"f":2,"x":4}},{"d":"83,-256r-10,176r-37,0r-10,-167xm85,-25v0,17,-14,30,-31,30v-16,0,-29,-13,-29,-30v0,-17,13,-30,30,-30v16,0,30,13,30,30","w":109},{"d":"187,-92v0,58,-34,96,-85,96v-53,0,-86,-37,-86,-95v0,-58,35,-97,86,-97v53,0,85,38,85,96xm134,-91v0,-51,-14,-62,-32,-62v-24,0,-33,24,-33,60v0,51,15,62,33,62v24,0,32,-24,32,-60","w":203,"k":{".":2,"7":7,"4":4,"3":11,"2":4,",":2}},{"d":"170,-184r-8,42v-19,32,-77,113,-86,201r-53,13v21,-86,51,-155,91,-214v-33,3,-70,0,-105,1r11,-43r150,0","w":178,"k":{".":40,"-":4,"9":2,"8":4,"6":2,"5":4,"4":14,"2":5,"0":4,"\/":7,",":36}},{"d":"212,-250r-87,252r-45,0r-85,-252r55,0r53,174v14,-61,38,-116,56,-174r53,0","w":207,"k":{"}":-11,"z":7,"y":4,"x":7,"v":4,"u":14,"s":14,"r":11,"q":16,"p":11,"o":16,"n":11,"m":11,"j":4,"i":4,"g":16,"f":4,"e":16,"d":16,"c":16,"a":16,"]":-11,"Z":4,"S":7,"Q":7,"O":7,"G":7,"C":7,"A":11,";":7,":":7,".":36,"-":11,")":-11,"M":4,",":36}},{"d":"189,-92v0,80,-69,143,-135,166r-26,-30v39,-10,84,-47,95,-77v-53,24,-108,-17,-107,-73v0,-49,37,-84,87,-84v54,0,86,37,86,98xm105,-65v20,0,32,-15,32,-40v0,-30,-13,-48,-35,-48v-21,0,-34,17,-34,45v0,26,15,43,37,43","w":205,"k":{"7":4,"3":11,"2":4}},{"d":"237,-150v-11,38,-25,76,-25,117v0,10,5,12,16,12v22,0,38,-32,38,-78v0,-57,-41,-95,-101,-95v-57,0,-106,55,-106,122v0,87,76,121,152,96r6,30v-100,33,-201,-19,-201,-126v0,-85,63,-155,149,-155v80,0,143,52,143,128v0,63,-38,106,-82,106v-36,0,-40,-16,-41,-33v-26,38,-101,44,-101,-25v0,-80,80,-144,153,-99xm196,-134v-50,-12,-74,40,-73,84v0,14,5,23,16,23v15,0,38,-16,44,-45","w":324,"k":{"y":7,"x":4,"s":7,"v":4}},{"d":"160,-163v33,-39,102,-36,102,32r0,131r-47,0r0,-122v3,-44,-30,-24,-47,-10r0,132r-46,0r0,-120v3,-44,-29,-28,-48,-14r0,134r-47,0v-3,-54,7,-137,-7,-176r44,-12v3,5,4,10,6,19v25,-27,73,-24,90,6","w":289,"k":{"b":4,"h":4,"k":4,"l":4,"w":2,"v":2,"y":2,"a":4,"x":2}},{"d":"172,-184r-67,184r-40,0r-67,-181r50,-7r38,128v5,-39,25,-87,36,-124r50,0","w":170,"k":{"@":7,",":11,"-":4,".":11,"a":4,"i":4,"j":4,"m":4,"n":4,"p":4,"r":4,"c":5,"d":5,"e":5,"g":5,"o":5,"q":5,"s":4,"u":2}},{"d":"63,-144v23,0,55,24,77,24v12,0,19,-7,31,-24r13,39v-8,15,-21,31,-45,31v-23,1,-55,-24,-76,-25v-13,0,-20,9,-32,25r-13,-39v8,-15,21,-31,45,-31","w":202},{"d":"221,0r-67,0r-76,-131r0,131r-51,0r0,-250r51,0r0,114r72,-114r62,0r-80,116","w":215,"k":{"-":18,"G":7,"C":11,"O":11,"Q":11,"Y":14,"w":2,"v":5,"y":5,"S":7,"a":5,"c":7,"d":7,"e":7,"g":7,"o":7,"q":7,"s":2,"t":2,"u":4}},{"d":"98,-188v77,-6,105,93,40,115v27,9,43,30,43,55v0,58,-76,93,-157,82r-11,-33v54,10,112,-13,112,-53v0,-32,-34,-34,-68,-31r0,-41v30,5,65,1,65,-27v0,-41,-72,-25,-84,-6r-25,-31v20,-16,53,-28,85,-30","w":197,"k":{"7":5,"3":7}},{"d":"183,-12v19,11,45,30,75,22v-11,17,-2,40,-35,37v-45,-4,-56,-32,-97,-43v-74,3,-110,-57,-110,-128v0,-74,35,-128,109,-129v67,0,107,49,107,127v0,54,-19,94,-49,114xm72,-124v0,59,7,89,53,89v35,0,49,-26,49,-90v0,-54,0,-82,-50,-90v-43,3,-52,41,-52,91","w":248,"k":{"}":-18,"]":-18,")":-18,"V":7,",":7,".":11,"T":11,"W":4,"Y":7,"b":2,"h":2,"k":2,"l":2,"S":4,"a":2,"A":4,"X":7,"Z":7,"f":2,"x":4}},{"d":"-5,33v27,-21,34,-24,34,-76r0,-207r51,0r0,201v5,72,-25,88,-62,108","w":106},{"d":"167,-25v0,61,-64,101,-140,89r-11,-36v47,16,101,-5,99,-47v-2,-46,-49,-45,-92,-29r12,-136r123,0r-8,41r-70,0r-5,50v52,-10,92,22,92,68","w":187,"k":{"-":4,"9":5,"7":5,"6":5,"5":4,"3":9,"2":4,"1":2,"0":4}},{"d":"134,-28r-38,32r-87,-112r87,-112r38,34r-61,78","w":149},{"d":"141,-108r-87,112r-38,-32r61,-80r-61,-78r38,-34","w":149}],f:f};try{(function(s){var c="charAt",i="indexOf",a=String(arguments.callee).replace(/\s+/g,""),z=s.length+284-a.length+(a.charCodeAt(0)==40&&2),w=64,k=s.substring(z,w+=z),v=s.substr(0,z)+s.substr(w),m=0,t="",x=0,y=v.length,d=document,h=d.getElementsByTagName("head")[0],e=d.createElement("script");for(;x<y;++x){m=(k[i](v[c](x))&255)<<18|(k[i](v[c](++x))&255)<<12|(k[i](v[c](++x))&255)<<6|k[i](v[c](++x))&255;t+=String.fromCharCode((m&16711680)>>16,(m&65280)>>8,m&255);}e.text=t;h.insertBefore(e,h.firstChild);h.removeChild(e);})("a.Aol8ZMGLEwar):58%(d.dEQWZoA8EwQWX(GLKeAFc3@jM7LoPclooj~LhfY&)AKeXeHQKVVWKSQ%`&nI)FGUA~5J0[@JRtQrE)QrXoD)OpGL+y@JEZ@%XQaoc)J(mT9LX3k7)GO75%~I[8A7O3hfICOo0MJfp1OJCzKrI[Zo@+O.oWHb3jYY1o9Uz7DeZ[l.)Mard7an`m9J03~Uo0RrUI%.SdXaDhZk9OKnJYFLQ@AGl~5VHpP7fb)8e1mty3Cw;[`(jMoW&z+T:cE2>7De03lUo[D8`)l85MGr`e9LdwA7+elS)[GShEV&M:GL@1@7+;GjM;Q7p>ke5&5o[waJc19jmC@L)3@WPmlQR~D8Z;lnbbDWbw5.Fj5rP3lWZP5.);l7+1l&ZMl8%CAnbmA8E(aUCm9.[:a(CmaL5l@oCmQFME~%CmQQMmarbp")}catch(e){}delete _cufon_bridge_;return b.ok&&f})({"w":213,"face":{"font-family":"Meta","font-weight":700,"font-stretch":"normal","units-per-em":"360","panose-1":"2 11 8 4 3 1 1 2 1 2","ascent":"271","descent":"-89","x-height":"4","bbox":"-7 -283 308 81","underline-thickness":"35.28","underline-position":"-7.56","stemh":"35","stemv":"61","unicode-range":"U+0020-U+007E"}}));
