/****************************************************************************************************************************************************
** This is the master JavaScript file for the site. It is a combination of all the various JavaScript files required for Spry menuing, Highslide,	**
** Spry Accordion and whatever other elements are in the site that I've forgotten. The formatting and comments have been left in, as the site auto-**
** matically compresses this file on transfer and thus the payload size isn't going to be too much affected by whitespace, comments and other		**
** items in the file.																																										**
*****************************************************************************************************************************************************
**	2011-06-23 Added comments, started cleaning up file.																															**
****************************************************************************************************************************************************/


/****************************************************************************************************************************************************
** Highslide JS, Version 4.1.9 (2010-07-05) by Thomas Hansi at www.highslide.com																							**
*****************************************************************************************************************************************************
**	The Highslide system is used to display and expand images throughout the site.																						**
****************************************************************************************************************************************************/
if (!hs)
{
	var hs = {
		lang : {
cssDirection: 'ltr',
			loadingText : 'Loading...',
			loadingTitle : 'Click to cancel',
			focusTitle : 'Click to bring to front',
			fullExpandTitle : 'Expand to actual size (f)',
			creditsText : 'Powered by <i>Highslide JS</i>',
			creditsTitle : 'Go to the Highslide JS homepage',
			restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.'
		},
dimmingOpacity: 0.5,
		graphicsDir : '/images/gif/',
		OutlinesDir : 'outlines/',
		expandCursor : 'zoomin.cur', // null disables
		restoreCursor : 'zoomout.cur', // null disables
		expandDuration : 250, // milliseconds
		restoreDuration : 250,
		marginLeft : 15,
		marginRight : 15,
		marginTop : 15,
		marginBottom : 15,
		zIndexCounter : 1001, // adjust to other absolutely positioned elements
		loadingOpacity : 0.75,
allowMultipleInstances: false,
		numberOfImagesToPreload : 1,
		outlineWhileAnimating : 0, // 0 = never, 1 = always, 2 = HTML only
		outlineStartOffset : 3, // ends at 10
		padToMinWidth : false, // pad the popup width to make room for wide caption
		fullExpandPosition : 'bottom right',
		fullExpandOpacity : 1,
		showCredits : false, // you can set this to false if you want
		creditsHref : 'http://highslide.com/',
		creditsTarget : '_blank',
		enableKeyListener : true,
		openerTagNames : ['a'], // Add more to allow slideshow indexing
dragByHeading: true,
minWidth: 200,
minHeight: 200,
allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight
		outlineType : 'drop-shadow', // set null to disable outlines
		//////////////////////////////////////
		// END OF PRIVATE, LOCAL SETTINGS	//
		//////////////////////////////////////
		preloadTheseImages : [],
continuePreloading: true,
		expanders : [],
		overrides : [
		'allowSizeReduction',
		'useBox',
		'outlineType',
		'outlineWhileAnimating',
		'captionId',
		'captionText',
		'captionEval',
		'captionOverlay',
		'headingId',
		'headingText',
		'headingEval',
		'headingOverlay',
		'creditsPosition',
		'dragByHeading',
		'width',
		'height',
		'wrapperClassName',
		'minWidth',
		'minHeight',
		'maxWidth',
		'maxHeight',
		'pageOrigin',
		'slideshowGroup',
		'easing',
		'easingClose',
		'fadeInOut',
		'src'
		],
		overlays : [],
		idCounter : 0,
		oPos : {
x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'],
y: ['above', 'top', 'middle', 'bottom', 'below']
		},
mouse: {},
headingOverlay: {},
captionOverlay: {},
		timers : [],
		pendingOutlines : {},
		clones : {},
onReady: [],
uaVersion: /Trident\/4\.0/.test(navigator.userAgent) ? 8 :
		parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]),
		ie : (document.all && !window.opera),
		safari : /Safari/.test(navigator.userAgent),
		geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),

		$ : function (id) {
			if (id) return document.getElementById(id);
		},

		push : function (arr, val) {
			arr[arr.length] = val;
		},

		createElement : function (tag, attribs, styles, parent, nopad) {
			var el = document.createElement(tag);
			if (attribs) hs.extend(el, attribs);
			if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0});
			if (styles) hs.setStyles(el, styles);
			if (parent) parent.appendChild(el);
			return el;
		},

		extend : function (el, attribs) {
			for (var x in attribs) el[x] = attribs[x];
			return el;
		},

		setStyles : function (el, styles) {
			for (var x in styles) {
				if (hs.ie && x == 'opacity') {
					if (styles[x] > 0.99) el.style.removeAttribute('filter');
					else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')';
				}
				else el.style[x] = styles[x];
			}
		},
animate: function(el, prop, opt) {
			var start,
			end,
			unit;
			if (typeof opt != 'object' || opt === null) {
				var args = arguments;
				opt = {
duration: args[2],
easing: args[3],
complete: args[4]
				};
			}
			if (typeof opt.duration != 'number') opt.duration = 250;
			opt.easing = Math[opt.easing] || Math.easeInQuad;
			opt.curAnim = hs.extend({}, prop);
			for (var name in prop) {
				var e = new hs.fx(el, opt , name );

				start = parseFloat(hs.css(el, name)) || 0;
				end = parseFloat(prop[name]);
				unit = name != 'opacity' ? 'px' : '';

				e.custom( start, end, unit );
			}
		},
css: function(el, prop) {
			if (el.style[prop]) {
				return el.style[prop];
			} else if (document.defaultView) {
				return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop);

			} else {
				if (prop == 'opacity') prop = 'filter';
				var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })];
				if (prop == 'filter')
				val = val.replace(/alpha\(opacity=([0-9]+)\)/,
				function (a, b) { return b / 100 });
				return val === '' ? 1 : val;
			}
		},

		getPageSize : function () {
			var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat'
			? d.documentElement : d.body;

			var width = hs.ie ? iebody.clientWidth :
			(d.documentElement.clientWidth || self.innerWidth),
			height = hs.ie ? iebody.clientHeight : self.innerHeight;

			hs.page = {
width: width,
height: height,
scrollLeft: hs.ie ? iebody.scrollLeft : pageXOffset,
scrollTop: hs.ie ? iebody.scrollTop : pageYOffset
			};
			return hs.page;
		},

		getPosition : function(el)	{
			var p = { x: el.offsetLeft, y: el.offsetTop };
			while (el.offsetParent)	{
				el = el.offsetParent;
				p.x += el.offsetLeft;
				p.y += el.offsetTop;
				if (el != document.body && el != document.documentElement) {
					p.x -= el.scrollLeft;
					p.y -= el.scrollTop;
				}
			}
			return p;
		},

		expand : function(a, params, custom, type) {
			if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container);
			if (typeof a.getParams == 'function') return params;
			try {
				new hs.Expander(a, params, custom);
				return false;
			} catch (e) { return true; }
		},


		focusTopmost : function() {
			var topZ = 0,
			topmostKey = -1,
			expanders = hs.expanders,
			exp,
			zIndex;
			for (var i = 0; i < expanders.length; i++) {
				exp = expanders[i];
				if (exp) {
					zIndex = exp.wrapper.style.zIndex;
					if (zIndex && zIndex > topZ) {
						topZ = zIndex;
						topmostKey = i;
					}
				}
			}
			if (topmostKey == -1) hs.focusKey = -1;
			else expanders[topmostKey].focus();
		},

		getParam : function (a, param) {
			a.getParams = a.onclick;
			var p = a.getParams ? a.getParams() : null;
			a.getParams = null;

			return (p && typeof p[param] != 'undefined') ? p[param] :
			(typeof hs[param] != 'undefined' ? hs[param] : null);
		},

		getSrc : function (a) {
			var src = hs.getParam(a, 'src');
			if (src) return src;
			return a.href;
		},

		getNode : function (id) {
			var node = hs.$(id), clone = hs.clones[id], a = {};
			if (!node && !clone) return null;
			if (!clone) {
				clone = node.cloneNode(true);
				clone.id = '';
				hs.clones[id] = clone;
				return node;
			} else {
				return clone.cloneNode(true);
			}
		},

		discardElement : function(d) {
			if (d) hs.garbageBin.appendChild(d);
			hs.garbageBin.innerHTML = '';
		},
		transit : function (adj, exp) {
			var last = exp || hs.getExpander();
			exp = last;

			if (hs.upcoming) return false;
			else hs.last = last;
			hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
			try {
				hs.upcoming = adj;
				adj.onclick();
			} catch (e){
				hs.last = hs.upcoming = null;
			}
			try {
				exp.close();
			} catch (e) {}
			return false;
		},

		previousOrNext : function (el, op) {
			var exp = hs.getExpander(el);
			if (exp) return hs.transit(exp.getAdjacentAnchor(op), exp);
			else return false;
		},

		previous : function (el) {
			return hs.previousOrNext(el, -1);
		},

		next : function (el) {
			return hs.previousOrNext(el, 1);
		},

		keyHandler : function(e) {
			if (!e) e = window.event;
			if (!e.target) e.target = e.srcElement; // ie
			if (typeof e.target.form != 'undefined') return true; // form element has focus
			var exp = hs.getExpander();

			var op = null;
			switch (e.keyCode) {
			case 70: // f
				if (exp) exp.doFullExpand();
				return true;
			case 32: // Space
			case 34: // Page Down
			case 39: // Arrow right
			case 40: // Arrow down
				op = 1;
				break;
			case 8:  // Backspace
			case 33: // Page Up
			case 37: // Arrow left
			case 38: // Arrow up
				op = -1;
				break;
			case 27: // Escape
			case 13: // Enter
				op = 0;
			}
			if (op !== null) {
				hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
				if (!hs.enableKeyListener) return true;

				if (e.preventDefault) e.preventDefault();
				else e.returnValue = false;
				if (exp) {
					if (op == 0) {
						exp.close();
					} else {
						hs.previousOrNext(exp.key, op);
					}
					return false;
				}
			}
			return true;
		},


		registerOverlay : function (overlay) {
			hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } ));
		},


		getWrapperKey : function (element, expOnly) {
			var el, re = /^highslide-wrapper-([0-9]+)$/;
			// 1. look in open expanders
			el = element;
			while (el.parentNode)	{
				if (el.id && re.test(el.id)) return el.id.replace(re, "$1");
				el = el.parentNode;
			}
			// 2. look in thumbnail
			if (!expOnly) {
				el = element;
				while (el.parentNode)	{
					if (el.tagName && hs.isHsAnchor(el)) {
						for (var key = 0; key < hs.expanders.length; key++) {
							var exp = hs.expanders[key];
							if (exp && exp.a == el) return key;
						}
					}
					el = el.parentNode;
				}
			}
			return null;
		},

		getExpander : function (el, expOnly) {
			if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null;
			if (typeof el == 'number') return hs.expanders[el] || null;
			if (typeof el == 'string') el = hs.$(el);
			return hs.expanders[hs.getWrapperKey(el, expOnly)] || null;
		},

		isHsAnchor : function (a) {
			return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/));
		},

		reOrder : function () {
			for (var i = 0; i < hs.expanders.length; i++)
			if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost();
		},

		mouseClickHandler : function(e)
		{
			if (!e) e = window.event;
			if (e.button > 1) return true;
			if (!e.target) e.target = e.srcElement;

			var el = e.target;
			while (el.parentNode
			&& !(/highslide-(image|move|html|resize)/.test(el.className)))
			{
				el = el.parentNode;
			}
			var exp = hs.getExpander(el);
			if (exp && (exp.isClosing || !exp.isExpanded)) return true;

			if (exp && e.type == 'mousedown') {
				if (e.target.form) return true;
				var match = el.className.match(/highslide-(image|move|resize)/);
				if (match) {
					hs.dragArgs = {
exp: exp ,
type: match[1],
left: exp.x.pos,
width: exp.x.size,
top: exp.y.pos,
height: exp.y.size,
clickX: e.clientX,
clickY: e.clientY
					};


					hs.addEventListener(document, 'mousemove', hs.dragHandler);
					if (e.preventDefault) e.preventDefault(); // FF

					if (/highslide-(image|html)-blur/.test(exp.content.className)) {
						exp.focus();
						hs.hasFocused = true;
					}
					return false;
				}
			} else if (e.type == 'mouseup') {

				hs.removeEventListener(document, 'mousemove', hs.dragHandler);

				if (hs.dragArgs) {
					if (hs.styleRestoreCursor && hs.dragArgs.type == 'image')
					hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor;
					var hasDragged = hs.dragArgs.hasDragged;

					if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) {
						exp.close();
					}
					else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) {
						hs.dragArgs.exp.doShowHide('hidden');
					}
					hs.hasFocused = false;
					hs.dragArgs = null;

				} else if (/highslide-image-blur/.test(el.className)) {
					el.style.cursor = hs.styleRestoreCursor;
				}
			}
			return false;
		},

		dragHandler : function(e)
		{
			if (!hs.dragArgs) return true;
			if (!e) e = window.event;
			var a = hs.dragArgs, exp = a.exp;

			a.dX = e.clientX - a.clickX;
			a.dY = e.clientY - a.clickY;

			var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2));
			if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0)
			|| (distance > (hs.dragSensitivity || 5));

			if (a.hasDragged && e.clientX > 5 && e.clientY > 5) {

				if (a.type == 'resize') exp.resize(a);
				else {
					exp.moveTo(a.left + a.dX, a.top + a.dY);
					if (a.type == 'image') exp.content.style.cursor = 'move';
				}
			}
			return false;
		},

		wrapperMouseHandler : function (e) {
			try {
				if (!e) e = window.event;
				var over = /mouseover/i.test(e.type);
				if (!e.target) e.target = e.srcElement; // ie
				if (hs.ie) e.relatedTarget =
				over ? e.fromElement : e.toElement; // ie
				var exp = hs.getExpander(e.target);
				if (!exp.isExpanded) return;
				if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp
						|| hs.dragArgs) return;
				for (var i = 0; i < exp.overlays.length; i++) (function() {
					var o = hs.$('hsId'+ exp.overlays[i]);
					if (o && o.hideOnMouseOut) {
						if (over) hs.setStyles(o, { visibility: 'visible', display: '' });
						hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur);
					}
				})();
			} catch (e) {}
		},
		addEventListener : function (el, event, func) {
			if (el == document && event == 'ready') {
				hs.push(hs.onReady, func);
			}
			try {
				el.addEventListener(event, func, false);
			} catch (e) {
				try {
					el.detachEvent('on'+ event, func);
					el.attachEvent('on'+ event, func);
				} catch (e) {
					el['on'+ event] = func;
				}
			}
		},

		removeEventListener : function (el, event, func) {
			try {
				el.removeEventListener(event, func, false);
			} catch (e) {
				try {
					el.detachEvent('on'+ event, func);
				} catch (e) {
					el['on'+ event] = null;
				}
			}
		},

		preloadFullImage : function (i) {
			if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') {
				var img = document.createElement('img');
				img.onload = function() {
					img = null;
					hs.preloadFullImage(i + 1);
				};
				img.src = hs.preloadTheseImages[i];
			}
		},
		preloadImages : function (number) {
			if (number && typeof number != 'object') hs.numberOfImagesToPreload = number;

			var arr = hs.getAnchors();
			for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) {
				hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i]));
			}

			// preload outlines
			if (hs.outlineType)	new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} );
			else

			hs.preloadFullImage(0);

			// preload cursor
			if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor });
		},


		init : function () {
			if (!hs.container) {

				hs.getPageSize();
				hs.ieLt7 = hs.ie && hs.uaVersion < 7;
				for (var x in hs.langDefaults) {
					if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x];
					else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined')
					hs.lang[x] = hs.langDefaults[x];
				}

				hs.container = hs.createElement('div', {
className: 'highslide-container'
				}, {
position: 'absolute',
left: 0,
top: 0,
width: '100%',
zIndex: hs.zIndexCounter,
direction: 'ltr'
				},
				document.body,
				true
				);
				hs.loading = hs.createElement('a', {
className: 'highslide-loading',
title: hs.lang.loadingTitle,
innerHTML: hs.lang.loadingText,
href: 'javascript:;'
				}, {
position: 'absolute',
top: '-9999px',
opacity: hs.loadingOpacity,
zIndex: 1
				}, hs.container
				);
				hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container);

				// http://www.robertpenner.com/easing/
				Math.linearTween = function (t, b, c, d) {
					return c*t/d + b;
				};
				Math.easeInQuad = function (t, b, c, d) {
					return c*(t/=d)*t + b;
				};

				hs.hideSelects = hs.ieLt7;
				hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE'
				|| (hs.ie && hs.uaVersion < 5.5));
			}
		},
		ready : function() {
			if (hs.isReady) return;
			hs.isReady = true;
			for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i]();
		},

		updateAnchors : function() {
			var el, els, all = [], images = [],groups = {}, re;

			for (var i = 0; i < hs.openerTagNames.length; i++) {
				els = document.getElementsByTagName(hs.openerTagNames[i]);
				for (var j = 0; j < els.length; j++) {
					el = els[j];
					re = hs.isHsAnchor(el);
					if (re) {
						hs.push(all, el);
						if (re[0] == 'hs.expand') hs.push(images, el);
						var g = hs.getParam(el, 'slideshowGroup') || 'none';
						if (!groups[g]) groups[g] = [];
						hs.push(groups[g], el);
					}
				}
			}
			hs.anchors = { all: all, groups: groups, images: images };
			return hs.anchors;

		},

		getAnchors : function() {
			return hs.anchors || hs.updateAnchors();
		},


		close : function(el) {
			var exp = hs.getExpander(el);
			if (exp) exp.close();
			return false;
		}
	}; // end hs object
	hs.fx = function( elem, options, prop ){
		this.options = options;
		this.elem = elem;
		this.prop = prop;

		if (!options.orig) options.orig = {};
	};
	hs.fx.prototype = {
update: function(){
			(hs.fx.step[this.prop] || hs.fx.step._default)(this);

			if (this.options.step)
			this.options.step.call(this.elem, this.now, this);

		},
custom: function(from, to, unit){
			this.startTime = (new Date()).getTime();
			this.start = from;
			this.end = to;
			this.unit = unit;// || this.unit || "px";
			this.now = this.start;
			this.pos = this.state = 0;

			var self = this;
			function t(gotoEnd){
				return self.step(gotoEnd);
			}

			t.elem = this.elem;

			if ( t() && hs.timers.push(t) == 1 ) {
				hs.timerId = setInterval(function(){
					var timers = hs.timers;

					for ( var i = 0; i < timers.length; i++ )
					if ( !timers[i]() )
					timers.splice(i--, 1);

					if ( !timers.length ) {
						clearInterval(hs.timerId);
					}
				}, 13);
			}
		},
step: function(gotoEnd){
			var t = (new Date()).getTime();
			if ( gotoEnd || t >= this.options.duration + this.startTime ) {
				this.now = this.end;
				this.pos = this.state = 1;
				this.update();

				this.options.curAnim[ this.prop ] = true;

				var done = true;
				for ( var i in this.options.curAnim )
				if ( this.options.curAnim[i] !== true )
				done = false;

				if ( done ) {
					if (this.options.complete) this.options.complete.call(this.elem);
				}
				return false;
			} else {
				var n = t - this.startTime;
				this.state = n / this.options.duration;
				this.pos = this.options.easing(n, 0, 1, this.options.duration);
				this.now = this.start + ((this.end - this.start) * this.pos);
				this.update();
			}
			return true;
		}

	};
	hs.extend( hs.fx, {
step: {

opacity: function(fx){
				hs.setStyles(fx.elem, { opacity: fx.now });
			},

			_default: function(fx){
				try {
					if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
					fx.elem.style[ fx.prop ] = fx.now + fx.unit;
					else
					fx.elem[ fx.prop ] = fx.now;
				} catch (e) {}
			}
		}
	});

	hs.Outline =  function (outlineType, onLoad) {
		this.onLoad = onLoad;
		this.outlineType = outlineType;
		var v = hs.uaVersion, tr;

		this.hasAlphaImageLoader = hs.ie && v >= 5.5 && v < 7;
		if (!outlineType) {
			if (onLoad) onLoad();
			return;
		}

		hs.init();
		this.table = hs.createElement(
		'table', {
cellSpacing: 0
		}, {
visibility: 'hidden',
position: 'absolute',
borderCollapse: 'collapse',
width: 0
		},
		hs.container,
		true
		);
		var tbody = hs.createElement('tbody', null, null, this.table, 1);

		this.td = [];
		for (var i = 0; i <= 8; i++) {
			if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true);
			this.td[i] = hs.createElement('td', null, null, tr, true);
			var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' };
			hs.setStyles(this.td[i], style);
		}
		this.td[4].className = outlineType +' highslide-outline';

		this.preloadGraphic();
	};

	hs.Outline.prototype = {
		preloadGraphic : function () {
			var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png";

			var appendTo = hs.safari && hs.uaVersion < 525 ? hs.container : null;
			this.graphic = hs.createElement('img', null, { position: 'absolute',
top: '-9999px' }, appendTo, true); // for onload trigger

			var pThis = this;
			this.graphic.onload = function() { pThis.onGraphicLoad(); };

			this.graphic.src = src;
		},

		onGraphicLoad : function () {
			var o = this.offset = this.graphic.width / 4,
			pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],
			dim = { height: (2*o) +'px', width: (2*o) +'px' };
			for (var i = 0; i <= 8; i++) {
				if (pos[i]) {
					if (this.hasAlphaImageLoader) {
						var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px';
						var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true);
						hs.createElement ('div', null, {
filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')",
position: 'absolute',
width: w,
height: this.graphic.height +'px',
left: (pos[i][0]*o)+'px',
top: (pos[i][1]*o)+'px'
						},
						div,
						true);
					} else {
						hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'});
					}

					if (window.opera && (i == 3 || i ==5))
					hs.createElement('div', null, dim, this.td[i], true);

					hs.setStyles (this.td[i], dim);
				}
			}
			this.graphic = null;
			if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy();
			hs.pendingOutlines[this.outlineType] = this;
			if (this.onLoad) this.onLoad();
		},

		setPosition : function (pos, offset, vis, dur, easing) {
			var exp = this.exp,
			stl = exp.wrapper.style,
			offset = offset || 0,
			pos = pos || {
x: exp.x.pos + offset,
y: exp.y.pos + offset,
w: exp.x.get('wsize') - 2 * offset,
h: exp.y.get('wsize') - 2 * offset
			};
			if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset)
			? 'visible' : 'hidden';
			hs.setStyles(this.table, {
left: (pos.x - this.offset) +'px',
top: (pos.y - this.offset) +'px',
width: (pos.w + 2 * this.offset) +'px'
			});

			pos.w -= 2 * this.offset;
			pos.h -= 2 * this.offset;
			hs.setStyles (this.td[4], {
width: pos.w >= 0 ? pos.w +'px' : 0,
height: pos.h >= 0 ? pos.h +'px' : 0
			});
			if (this.hasAlphaImageLoader) this.td[3].style.height
			= this.td[5].style.height = this.td[4].style.height;

		},

		destroy : function(hide) {
			if (hide) this.table.style.visibility = 'hidden';
			else hs.discardElement(this.table);
		}
	};

	hs.Dimension = function(exp, dim) {
		this.exp = exp;
		this.dim = dim;
		this.ucwh = dim == 'x' ? 'Width' : 'Height';
		this.wh = this.ucwh.toLowerCase();
		this.uclt = dim == 'x' ? 'Left' : 'Top';
		this.lt = this.uclt.toLowerCase();
		this.ucrb = dim == 'x' ? 'Right' : 'Bottom';
		this.rb = this.ucrb.toLowerCase();
		this.p1 = this.p2 = 0;
	};
	hs.Dimension.prototype = {
		get : function(key) {
			switch (key) {
			case 'loadingPos':
				return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2;
			case 'wsize':
				return this.size + 2 * this.cb + this.p1 + this.p2;
			case 'fitsize':
				return this.clientSize - this.marginMin - this.marginMax;
			case 'maxsize':
				return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ;
			case 'opos':
				return this.pos - (this.exp.outline ? this.exp.outline.offset : 0);
			case 'osize':
				return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0);
			case 'imgPad':
				return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0;

			}
		},
calcBorders: function() {
			// correct for borders
			this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2;

			this.marginMax = hs['margin'+ this.ucrb];
		},
calcThumb: function() {
			this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) :
			this.exp.el['offset'+ this.ucwh];
			this.tpos = this.exp.tpos[this.dim];
			this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2;
			if (this.tpos == 0 || this.tpos == -1) {
				this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt];
			};
		},
calcExpanded: function() {
			var exp = this.exp;
			this.justify = 'auto';


			// size and position
			this.pos = this.tpos - this.cb + this.tb;

			if (this.maxHeight && this.dim == 'x')
			exp.maxWidth = Math.min(exp.maxWidth || this.full, exp.maxHeight * this.full / exp.y.full);

			this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full);
			this.minSize = exp.allowSizeReduction ?
			Math.min(exp['min'+ this.ucwh], this.full) :this.full;
			if (exp.isImage && exp.useBox)	{
				this.size = exp[this.wh];
				this.imgSize = this.full;
			}
			if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth;
			this.marginMin = hs['margin'+ this.uclt];
			this.scroll = hs.page['scroll'+ this.uclt];
			this.clientSize = hs.page[this.wh];
		},
setSize: function(i) {
			var exp = this.exp;
			if (exp.isImage && (exp.useBox || hs.padToMinWidth)) {
				this.imgSize = i;
				this.size = Math.max(this.size, this.imgSize);
				exp.content.style[this.lt] = this.get('imgPad')+'px';
			} else
			this.size = i;

			exp.content.style[this.wh] = i +'px';
			exp.wrapper.style[this.wh] = this.get('wsize') +'px';
			if (exp.outline) exp.outline.setPosition();
			if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true);
		},
setPos: function(i) {
			this.pos = i;
			this.exp.wrapper.style[this.lt] = i +'px';

			if (this.exp.outline) this.exp.outline.setPosition();

		}
	};

	hs.Expander = function(a, params, custom, contentType) {
		if (document.readyState && hs.ie && !hs.isReady) {
			hs.addEventListener(document, 'ready', function() {
				new hs.Expander(a, params, custom, contentType);
			});
			return;
		}
		this.a = a;
		this.custom = custom;
		this.contentType = contentType || 'image';
		this.isImage = !this.isHtml;

		hs.continuePreloading = false;
		this.overlays = [];
		hs.init();
		var key = this.key = hs.expanders.length;
		// override inline parameters
		for (var i = 0; i < hs.overrides.length; i++) {
			var name = hs.overrides[i];
			this[name] = params && typeof params[name] != 'undefined' ?
			params[name] : hs[name];
		}
		if (!this.src) this.src = a.href;

		// get thumb
		var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a;
		el = this.thumb = el.getElementsByTagName('img')[0] || el;
		this.thumbsUserSetId = el.id || a.id;

		// check if already open
		for (var i = 0; i < hs.expanders.length; i++) {
			if (hs.expanders[i] && hs.expanders[i].a == a) {
				hs.expanders[i].focus();
				return false;
			}
		}

		// cancel other
		if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) {
			if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) {
				hs.expanders[i].cancelLoading();
			}
		}
		hs.expanders[key] = this;
		if (!hs.allowMultipleInstances && !hs.upcoming) {
			if (hs.expanders[key-1]) hs.expanders[key-1].close();
			if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey])
			hs.expanders[hs.focusKey].close();
		}

		// initiate metrics
		this.el = el;
		this.tpos = this.pageOrigin || hs.getPosition(el);
		hs.getPageSize();
		var x = this.x = new hs.Dimension(this, 'x');
		x.calcThumb();
		var y = this.y = new hs.Dimension(this, 'y');
		y.calcThumb();
		this.wrapper = hs.createElement(
		'div', {
id: 'highslide-wrapper-'+ this.key,
className: 'highslide-wrapper '+ this.wrapperClassName
		}, {
visibility: 'hidden',
position: 'absolute',
zIndex: hs.zIndexCounter += 2
		}, null, true );

		this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler;
		if (this.contentType == 'image' && this.outlineWhileAnimating == 2)
		this.outlineWhileAnimating = 0;

		// get the outline
		if (!this.outlineType) {
			this[this.contentType +'Create']();

		} else if (hs.pendingOutlines[this.outlineType]) {
			this.connectOutline();
			this[this.contentType +'Create']();

		} else {
			this.showLoading();
			var exp = this;
			new hs.Outline(this.outlineType,
			function () {
				exp.connectOutline();
				exp[exp.contentType +'Create']();
			}
			);
		}
		return true;
	};

	hs.Expander.prototype = {
		error : function(e) {
			if (hs.debug) alert ('Line '+ e.lineNumber +': '+ e.message);
			else window.location.href = this.src;
		},
		connectOutline : function() {
			var outline = this.outline = hs.pendingOutlines[this.outlineType];
			outline.exp = this;
			outline.table.style.zIndex = this.wrapper.style.zIndex - 1;
			hs.pendingOutlines[this.outlineType] = null;
		},
		showLoading : function() {
			if (this.onLoadStarted || this.loading) return;

			this.loading = hs.loading;
			var exp = this;
			this.loading.onclick = function() {
				exp.cancelLoading();
			};
			var exp = this,
			l = this.x.get('loadingPos') +'px',
			t = this.y.get('loadingPos') +'px';
			setTimeout(function () {
				if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })}
			, 100);
		},
		imageCreate : function() {
			var exp = this;

			var img = document.createElement('img');
			this.content = img;
			img.onload = function () {
				if (hs.expanders[exp.key]) exp.contentLoaded();
			};
			if (hs.blockRightClick) img.oncontextmenu = function() { return false; };
			img.className = 'highslide-image';
			hs.setStyles(img, {
visibility: 'hidden',
display: 'block',
position: 'absolute',
maxWidth: '9999px',
zIndex: 3
			});
			img.title = hs.lang.restoreTitle;
			if (hs.safari && hs.uaVersion < 525) hs.container.appendChild(img);
			if (hs.ie && hs.flushImgSize) img.src = null;
			img.src = this.src;

			this.showLoading();
		},
		contentLoaded : function() {
			try {
				if (!this.content) return;
				this.content.onload = null;
				if (this.onLoadStarted) return;
				else this.onLoadStarted = true;

				var x = this.x, y = this.y;

				if (this.loading) {
					hs.setStyles(this.loading, { top: '-9999px' });
					this.loading = null;
				}
				x.full = this.content.width;
				y.full = this.content.height;

				hs.setStyles(this.content, {
width: x.t +'px',
height: y.t +'px'
				});
				this.wrapper.appendChild(this.content);
				hs.container.appendChild(this.wrapper);

				x.calcBorders();
				y.calcBorders();

				hs.setStyles (this.wrapper, {
left: (x.tpos + x.tb - x.cb) +'px',
top: (y.tpos + x.tb - y.cb) +'px'
				});
				this.getOverlays();

				var ratio = x.full / y.full;
				x.calcExpanded();
				this.justify(x);

				y.calcExpanded();
				this.justify(y);
				if (this.overlayBox) this.sizeOverlayBox(0, 1);


				if (this.allowSizeReduction) {
					this.correctRatio(ratio);
					if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) {
						this.createFullExpand();
						if (this.overlays.length == 1) this.sizeOverlayBox();
					}
				}
				this.show();

			} catch (e) {
				this.error(e);
			}
		},
		justify : function (p, moveOnly) {
			var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y';

			var hasMovedMin = false;

			var allowReduce = p.exp.allowSizeReduction;
			p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2));
			if (p.pos < p.scroll + p.marginMin) {
				p.pos = p.scroll + p.marginMin;
				hasMovedMin = true;
			}
			if (!moveOnly && p.size < p.minSize) {
				p.size = p.minSize;
				allowReduce = false;
			}
			if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) {
				if (!moveOnly && hasMovedMin && allowReduce) {
					p.size = Math.min(p.size, p.get(dim == 'y' ? 'fitsize' : 'maxsize'));
				} else if (p.get('wsize') < p.get('fitsize')) {
					p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize');
				} else { // image larger than viewport
					p.pos = p.scroll + p.marginMin;
					if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize');
				}
			}

			if (!moveOnly && p.size < p.minSize) {
				p.size = p.minSize;
				allowReduce = false;
			}



			if (p.pos < p.marginMin) {
				var tmpMin = p.pos;
				p.pos = p.marginMin;

				if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin);

			}
		},
		correctRatio : function(ratio) {
			var x = this.x,
			y = this.y,
			changed = false,
			xSize = Math.min(x.full, x.size),
			ySize = Math.min(y.full, y.size),
			useBox = (this.useBox || hs.padToMinWidth);

			if (xSize / ySize > ratio) { // width greater
				xSize = ySize * ratio;
				if (xSize < x.minSize) { // below minWidth
					xSize = x.minSize;
					ySize = xSize / ratio;
				}
				changed = true;

			} else if (xSize / ySize < ratio) { // height greater
				ySize = xSize / ratio;
				changed = true;
			}

			if (hs.padToMinWidth && x.full < x.minSize) {
				x.imgSize = x.full;
				y.size = y.imgSize = y.full;
			} else if (this.useBox) {
				x.imgSize = xSize;
				y.imgSize = ySize;
			} else {
				x.size = xSize;
				y.size = ySize;
			}
			changed = this.fitOverlayBox(this.useBox ? null : ratio, changed);
			if (useBox && y.size < y.imgSize) {
				y.imgSize = y.size;
				x.imgSize = y.size * ratio;
			}
			if (changed || useBox) {
				x.pos = x.tpos - x.cb + x.tb;
				x.minSize = x.size;
				this.justify(x, true);

				y.pos = y.tpos - y.cb + y.tb;
				y.minSize = y.size;
				this.justify(y, true);
				if (this.overlayBox) this.sizeOverlayBox();
			}


		},
		fitOverlayBox : function(ratio, changed) {
			var x = this.x, y = this.y;
			if (this.overlayBox) {
				while (y.size > this.minHeight && x.size > this.minWidth
				&&  y.get('wsize') > y.get('fitsize')) {
					y.size -= 10;
					if (ratio) x.size = y.size * ratio;
					this.sizeOverlayBox(0, 1);
					changed = true;
				}
			}
			return changed;
		},
		show : function () {
			var x = this.x, y = this.y;
			this.doShowHide('hidden');

			// Apply size change
			this.changeSize(
			1, {
wrapper: {
					width : x.get('wsize'),
					height : y.get('wsize'),
left: x.pos,
top: y.pos
				},
content: {
left: x.p1 + x.get('imgPad'),
top: y.p1 + y.get('imgPad'),
width:x.imgSize ||x.size,
height:y.imgSize ||y.size
				}
			},
			hs.expandDuration
			);
		},
		changeSize : function(up, to, dur) {

			if (this.outline && !this.outlineWhileAnimating) {
				if (up) this.outline.setPosition();
				else this.outline.destroy();
			}


			if (!up) this.destroyOverlays();

			var exp = this,
			x = exp.x,
			y = exp.y,
			easing = this.easing;
			if (!up) easing = this.easingClose || easing;
			var after = up ?
			function() {

				if (exp.outline) exp.outline.table.style.visibility = "visible";
				setTimeout(function() {
					exp.afterExpand();
				}, 50);
			} :
			function() {
				exp.afterClose();
			};
			if (up) hs.setStyles( this.wrapper, {
width: x.t +'px',
height: y.t +'px'
			});
			if (this.fadeInOut) {
				hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 });
				hs.extend(to.wrapper, { opacity: up });
			}
			hs.animate( this.wrapper, to.wrapper, {
duration: dur,
easing: easing,
step: function(val, args) {
					if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') {
						var fac = up ? args.pos : 1 - args.pos;
						var pos = {
w: x.t + (x.get('wsize') - x.t) * fac,
h: y.t + (y.get('wsize') - y.t) * fac,
x: x.tpos + (x.pos - x.tpos) * fac,
y: y.tpos + (y.pos - y.tpos) * fac
						};
						exp.outline.setPosition(pos, 0, 1);
					}
				}
			});
			hs.animate( this.content, to.content, dur, easing, after);
			if (up) {
				this.wrapper.style.visibility = 'visible';
				this.content.style.visibility = 'visible';
				this.a.className += ' highslide-active-anchor';
			}
		},


		afterExpand : function() {
			this.isExpanded = true;
			this.focus();
			if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null;
			this.prepareNextOutline();
			var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop;
			this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize')
			&& this.y.pos < mY && mY < this.y.pos + this.y.get('wsize');
			if (this.overlayBox) this.showOverlays();

		},


		prepareNextOutline : function() {
			var key = this.key;
			var outlineType = this.outlineType;
			new hs.Outline(outlineType,
			function () { try { hs.expanders[key].preloadNext(); } catch (e) {} });
		},


		preloadNext : function() {
			var next = this.getAdjacentAnchor(1);
			if (next && next.onclick.toString().match(/hs\.expand/))
			var img = hs.createElement('img', { src: hs.getSrc(next) });
		},


		getAdjacentAnchor : function(op) {
			var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none'];
			return (as && as[current + op]) || null;
		},

		getAnchorIndex : function() {
			var arr = hs.getAnchors().groups[this.slideshowGroup || 'none'];
			if (arr) for (var i = 0; i < arr.length; i++) {
				if (arr[i] == this.a) return i;
			}
			return null;
		},


		cancelLoading : function() {
			hs.discardElement (this.wrapper);
			hs.expanders[this.key] = null;
			if (this.loading) hs.loading.style.left = '-9999px';
		},

		writeCredits : function () {
			this.credits = hs.createElement('a', {
href: hs.creditsHref,
target: hs.creditsTarget,
className: 'highslide-credits',
innerHTML: hs.lang.creditsText,
title: hs.lang.creditsTitle
			});
			this.createOverlay({
overlayId: this.credits,
position: this.creditsPosition || 'top left'
			});
		},

		getInline : function(types, addOverlay) {
			for (var i = 0; i < types.length; i++) {
				var type = types[i], s = null;
				if (!this[type +'Id'] && this.thumbsUserSetId)
				this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId;
				if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']);
				if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try {
					s = eval(this[type +'Eval']);
				} catch (e) {}
				if (!this[type] && this[type +'Text']) {
					s = this[type +'Text'];
				}
				if (!this[type] && !s) {
					this[type] = hs.getNode(this.a['_'+ type + 'Id']);
					if (!this[type]) {
						var next = this.a.nextSibling;
						while (next && !hs.isHsAnchor(next)) {
							if ((new RegExp('highslide-'+ type)).test(next.className || null)) {
								if (!next.id) this.a['_'+ type + 'Id'] = next.id = 'hsId'+ hs.idCounter++;
								this[type] = hs.getNode(next.id);
								break;
							}
							next = next.nextSibling;
						}
					}
				}

				if (!this[type] && s) this[type] = hs.createElement('div',
				{ className: 'highslide-'+ type, innerHTML: s } );

				if (addOverlay && this[type]) {
					var o = { position: (type == 'heading') ? 'above' : 'below' };
					for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x];
					o.overlayId = this[type];
					this.createOverlay(o);
				}
			}
		},


		// on end move and resize
		doShowHide : function(visibility) {
			if (hs.hideSelects) this.showHideElements('SELECT', visibility);
			if (hs.hideIframes) this.showHideElements('IFRAME', visibility);
			if (hs.geckoMac) this.showHideElements('*', visibility);
		},
		showHideElements : function (tagName, visibility) {
			var els = document.getElementsByTagName(tagName);
			var prop = tagName == '*' ? 'overflow' : 'visibility';
			for (var i = 0; i < els.length; i++) {
				if (prop == 'visibility' || (document.defaultView.getComputedStyle(
								els[i], "").getPropertyValue('overflow') == 'auto'
							|| els[i].getAttribute('hidden-by') != null)) {
					var hiddenBy = els[i].getAttribute('hidden-by');
					if (visibility == 'visible' && hiddenBy) {
						hiddenBy = hiddenBy.replace('['+ this.key +']', '');
						els[i].setAttribute('hidden-by', hiddenBy);
						if (!hiddenBy) els[i].style[prop] = els[i].origProp;
					} else if (visibility == 'hidden') { // hide if behind
						var elPos = hs.getPosition(els[i]);
						elPos.w = els[i].offsetWidth;
						elPos.h = els[i].offsetHeight;


						var clearsX = (elPos.x + elPos.w < this.x.get('opos')
						|| elPos.x > this.x.get('opos') + this.x.get('osize'));
						var clearsY = (elPos.y + elPos.h < this.y.get('opos')
						|| elPos.y > this.y.get('opos') + this.y.get('osize'));
						var wrapperKey = hs.getWrapperKey(els[i]);
						if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image
							if (!hiddenBy) {
								els[i].setAttribute('hidden-by', '['+ this.key +']');
								els[i].origProp = els[i].style[prop];
								els[i].style[prop] = 'hidden';

							} else if (hiddenBy.indexOf('['+ this.key +']') == -1) {
								els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']');
							}
						} else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey)
								&& wrapperKey != this.key) { // on move
							els[i].setAttribute('hidden-by', '');
							els[i].style[prop] = els[i].origProp || '';
						} else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) {
							els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', ''));
						}

					}
				}
			}
		},

		focus : function() {
			this.wrapper.style.zIndex = hs.zIndexCounter += 2;
			// blur others
			for (var i = 0; i < hs.expanders.length; i++) {
				if (hs.expanders[i] && i == hs.focusKey) {
					var blurExp = hs.expanders[i];
					blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur';
					blurExp.content.style.cursor = hs.ie ? 'hand' : 'pointer';
					blurExp.content.title = hs.lang.focusTitle;
				}
			}

			// focus this
			if (this.outline) this.outline.table.style.zIndex
			= this.wrapper.style.zIndex - 1;
			this.content.className = 'highslide-'+ this.contentType;
			this.content.title = hs.lang.restoreTitle;

			if (hs.restoreCursor) {
				hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer';
				if (hs.ie && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand';
				this.content.style.cursor = hs.styleRestoreCursor;
			}

			hs.focusKey = this.key;
			hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);
		},
moveTo: function(x, y) {
			this.x.setPos(x);
			this.y.setPos(y);
		},
		resize : function (e) {
			var w, h, r = e.width / e.height;
			w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full));
			if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full;
			h = w / r;
			if (h < Math.min(this.minHeight, this.y.full)) {
				h = Math.min(this.minHeight, this.y.full);
				if (this.isImage) w = h * r;
			}
			this.resizeTo(w, h);
		},
resizeTo: function(w, h) {
			this.y.setSize(h);
			this.x.setSize(w);
			this.wrapper.style.height = this.y.get('wsize') +'px';
		},

		close : function() {
			if (this.isClosing || !this.isExpanded) return;
			this.isClosing = true;

			hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler);

			try {
				this.content.style.cursor = 'default';
				this.changeSize(
				0, {
wrapper: {
						width : this.x.t,
						height : this.y.t,
left: this.x.tpos - this.x.cb + this.x.tb,
top: this.y.tpos - this.y.cb + this.y.tb
					},
content: {
left: 0,
top: 0,
width: this.x.t,
height: this.y.t
					}
				}, hs.restoreDuration
				);
			} catch (e) { this.afterClose(); }
		},

		createOverlay : function (o) {
			var el = o.overlayId;
			if (typeof el == 'string') el = hs.getNode(el);
			if (o.html) el = hs.createElement('div', { innerHTML: o.html });
			if (!el || typeof el == 'string') return;
			el.style.display = 'block';
			this.genOverlayBox();
			var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto';
			if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px';
			var overlay = hs.createElement(
			'div', {
id: 'hsId'+ hs.idCounter++,
hsId: o.hsId
			}, {
position: 'absolute',
visibility: 'hidden',
width: width,
direction: hs.lang.cssDirection || '',
opacity: 0
			},this.overlayBox,
			true
			);

			overlay.appendChild(el);
			hs.extend(overlay, {
opacity: 1,
offsetX: 0,
offsetY: 0,
dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250
			});
			hs.extend(overlay, o);


			if (this.gotOverlays) {
				this.positionOverlay(overlay);
				if (!overlay.hideOnMouseOut || this.mouseIsOver)
				hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur);
			}
			hs.push(this.overlays, hs.idCounter - 1);
		},
		positionOverlay : function(overlay) {
			var p = overlay.position || 'middle center',
			offX = overlay.offsetX,
			offY = overlay.offsetY;
			if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay);
			if (/left$/.test(p)) overlay.style.left = offX +'px';

			if (/center$/.test(p))	hs.setStyles (overlay, {
left: '50%',
marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px'
			});

			if (/right$/.test(p)) overlay.style.right = - offX +'px';

			if (/^leftpanel$/.test(p)) {
				hs.setStyles(overlay, {
right: '100%',
marginRight: this.x.cb +'px',
top: - this.y.cb +'px',
bottom: - this.y.cb +'px',
overflow: 'auto'
				});
				this.x.p1 = overlay.offsetWidth;

			} else if (/^rightpanel$/.test(p)) {
				hs.setStyles(overlay, {
left: '100%',
marginLeft: this.x.cb +'px',
top: - this.y.cb +'px',
bottom: - this.y.cb +'px',
overflow: 'auto'
				});
				this.x.p2 = overlay.offsetWidth;
			}

			if (/^top/.test(p)) overlay.style.top = offY +'px';
			if (/^middle/.test(p))	hs.setStyles (overlay, {
top: '50%',
marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px'
			});
			if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px';
			if (/^above$/.test(p)) {
				hs.setStyles(overlay, {
left: (- this.x.p1 - this.x.cb) +'px',
right: (- this.x.p2 - this.x.cb) +'px',
bottom: '100%',
marginBottom: this.y.cb +'px',
width: 'auto'
				});
				this.y.p1 = overlay.offsetHeight;

			} else if (/^below$/.test(p)) {
				hs.setStyles(overlay, {
position: 'relative',
left: (- this.x.p1 - this.x.cb) +'px',
right: (- this.x.p2 - this.x.cb) +'px',
top: '100%',
marginTop: this.y.cb +'px',
width: 'auto'
				});
				this.y.p2 = overlay.offsetHeight;
				overlay.style.position = 'absolute';
			}
		},

		getOverlays : function() {
			this.getInline(['heading', 'caption'], true);
			if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move';
			if (hs.showCredits) this.writeCredits();
			for (var i = 0; i < hs.overlays.length; i++) {
				var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup;
				if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId)
						|| (sg && sg === this.slideshowGroup)) {
					this.createOverlay(o);
				}
			}
			var os = [];
			for (var i = 0; i < this.overlays.length; i++) {
				var o = hs.$('hsId'+ this.overlays[i]);
				if (/panel$/.test(o.position)) this.positionOverlay(o);
				else hs.push(os, o);
			}
			for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]);
			this.gotOverlays = true;
		},
		genOverlayBox : function() {
			if (!this.overlayBox) this.overlayBox = hs.createElement (
			'div', {
className: this.wrapperClassName
			}, {
				position : 'absolute',
width: (this.x.size || (this.useBox ? this.width : null)
				|| this.x.full) +'px',
height: (this.y.size || this.y.full) +'px',
				visibility : 'hidden',
				overflow : 'hidden',
				zIndex : hs.ie ? 4 : 'auto'
			},
			hs.container,
			true
			);
		},
		sizeOverlayBox : function(doWrapper, doPanels) {
			var overlayBox = this.overlayBox,
			x = this.x,
			y = this.y;
			hs.setStyles( overlayBox, {
width: x.size +'px',
height: y.size +'px'
			});
			if (doWrapper || doPanels) {
				for (var i = 0; i < this.overlays.length; i++) {
					var o = hs.$('hsId'+ this.overlays[i]);
					var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat');
					if (o && /^(above|below)$/.test(o.position)) {
						if (ie6) {
							o.style.width = (overlayBox.offsetWidth + 2 * x.cb
							+ x.p1 + x.p2) +'px';
						}
						y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight;
					}
					if (o && ie6 && /^(left|right)panel$/.test(o.position)) {
						o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px';
					}
				}
			}
			if (doWrapper) {
				hs.setStyles(this.content, {
top: y.p1 +'px'
				});
				hs.setStyles(overlayBox, {
top: (y.p1 + y.cb) +'px'
				});
			}
		},

		showOverlays : function() {
			var b = this.overlayBox;
			b.className = '';
			hs.setStyles(b, {
top: (this.y.p1 + this.y.cb) +'px',
left: (this.x.p1 + this.x.cb) +'px',
				overflow : 'visible'
			});
			if (hs.safari) b.style.visibility = 'visible';
			this.wrapper.appendChild (b);
			for (var i = 0; i < this.overlays.length; i++) {
				var o = hs.$('hsId'+ this.overlays[i]);
				o.style.zIndex = o.zIndex || 4;
				if (!o.hideOnMouseOut || this.mouseIsOver) {
					o.style.visibility = 'visible';
					hs.setStyles(o, { visibility: 'visible', display: '' });
					hs.animate(o, { opacity: o.opacity }, o.dur);
				}
			}
		},

		destroyOverlays : function() {
			if (!this.overlays.length) return;
			hs.discardElement(this.overlayBox);
		},



		createFullExpand : function () {
			this.fullExpandLabel = hs.createElement(
			'a', {
href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();',
title: hs.lang.fullExpandTitle,
className: 'highslide-full-expand'
			}
			);

			this.createOverlay({
overlayId: this.fullExpandLabel,
position: hs.fullExpandPosition,
hideOnMouseOut: true,
opacity: hs.fullExpandOpacity
			});
		},

		doFullExpand : function () {
			try {
				if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel);

				this.focus();
				var xSize = this.x.size;
				this.resizeTo(this.x.full, this.y.full);

				var xpos = this.x.pos - (this.x.size - xSize) / 2;
				if (xpos < hs.marginLeft) xpos = hs.marginLeft;

				this.moveTo(xpos, this.y.pos);
				this.doShowHide('hidden');

			} catch (e) {
				this.error(e);
			}
		},


		afterClose : function () {
			this.a.className = this.a.className.replace('highslide-active-anchor', '');

			this.doShowHide('visible');
			if (this.outline && this.outlineWhileAnimating) this.outline.destroy();

			hs.discardElement(this.wrapper);

			hs.expanders[this.key] = null;
			hs.reOrder();
		}

	};
	hs.langDefaults = hs.lang;
	// history
	var HsExpander = hs.Expander;
	if (hs.ie && window == window.top) {
		(function () {
			try {
				document.documentElement.doScroll('left');
			} catch (e) {
				setTimeout(arguments.callee, 50);
				return;
			}
			hs.ready();
		})();
	}
	hs.addEventListener(document, 'DOMContentLoaded', hs.ready);
	hs.addEventListener(window, 'load', hs.ready);

	// set handlers
	hs.addEventListener(document, 'ready', function() {
		if (hs.expandCursor) {
			var style = hs.createElement('style', { type: 'text/css' }, null,
			document.getElementsByTagName('HEAD')[0]);

			function addRule(sel, dec) {
				if (!hs.ie) {
					style.appendChild(document.createTextNode(sel + " {" + dec + "}"));
				} else {
					var last = document.styleSheets[document.styleSheets.length - 1];
					if (typeof(last.addRule) == "object") last.addRule(sel, dec);
				}
			}
			function fix(prop) {
				return 'expression( ( ( ignoreMe = document.documentElement.'+ prop +
				' ? document.documentElement.'+ prop +' : document.body.'+ prop +' ) ) + \'px\' );';
			}
			if (hs.expandCursor) addRule ('.highslide img',
			'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;');
		}
	});
	hs.addEventListener(window, 'resize', function() {
		hs.getPageSize();
	});
	hs.addEventListener(document, 'mousemove', function(e) {
		hs.mouse = { x: e.clientX, y: e.clientY	};
	});
	hs.addEventListener(document, 'mousedown', hs.mouseClickHandler);
	hs.addEventListener(document, 'mouseup', hs.mouseClickHandler);
	hs.addEventListener(document, 'ready', hs.getAnchors);
	hs.addEventListener(window, 'load', hs.preloadImages);
}
/****************************************************************************************************************************************************
** SpryAccordion.js - version 0.15 - Spry Pre-Release 1.6.1. Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved							**
*****************************************************************************************************************************************************
**	This code is used for the accordion menus on the site.																														**
****************************************************************************************************************************************************/
var Spry;if(!Spry)Spry={};if(!Spry.Widget)Spry.Widget={};Spry.Widget.Accordion=function(element,opts){this.element=this.getElement(element);this.defaultPanel=0;this.hoverClass="AccordionPanelTabHover";this.openClass="AccordionPanelOpen";this.closedClass="AccordionPanelClosed";this.focusedClass="AccordionFocused";this.enableAnimation=true;this.enableKeyboardNavigation=true;this.currentPanel=null;this.animator=null;this.hasFocus=null;this.previousPanelKeyCode=Spry.Widget.Accordion.KEY_UP;this.nextPanelKeyCode=Spry.Widget.Accordion.KEY_DOWN;this.useFixedPanelHeights=true;this.fixedPanelHeight=0;Spry.Widget.Accordion.setOptions(this,opts,true);this.attachBehaviors()};Spry.Widget.Accordion.prototype.getElement=function(ele){if(ele&&typeof ele=="string")return document.getElementById(ele);return ele};Spry.Widget.Accordion.prototype.addClassName=function(ele,className){if(!ele||!className||(ele.className&&ele.className.search(new RegExp("\\b"+className+"\\b"))!=-1))return;ele.className+=(ele.className?" ":"")+className};Spry.Widget.Accordion.prototype.removeClassName=function(ele,className){if(!ele||!className||(ele.className&&ele.className.search(new RegExp("\\b"+className+"\\b"))==-1))return;ele.className=ele.className.replace(new RegExp("\\s*\\b"+className+"\\b","g"),"")};Spry.Widget.Accordion.setOptions=function(obj,optionsObj,ignoreUndefinedProps){if(!optionsObj)return;for(var optionName in optionsObj){if(ignoreUndefinedProps&&optionsObj[optionName]==undefined)continue;obj[optionName]=optionsObj[optionName]}};Spry.Widget.Accordion.prototype.onPanelTabMouseOver=function(e,panel){if(panel)this.addClassName(this.getPanelTab(panel),this.hoverClass);return false};Spry.Widget.Accordion.prototype.onPanelTabMouseOut=function(e,panel){if(panel)this.removeClassName(this.getPanelTab(panel),this.hoverClass);return false};Spry.Widget.Accordion.prototype.openPanel=function(elementOrIndex){var panelA=this.currentPanel;var panelB;if(typeof elementOrIndex=="number")panelB=this.getPanels()[elementOrIndex];else panelB=this.getElement(elementOrIndex);if(!panelB||panelA==panelB)return null;var contentA=panelA?this.getPanelContent(panelA):null;var contentB=this.getPanelContent(panelB);if(!contentB)return null;if(this.useFixedPanelHeights&&!this.fixedPanelHeight)this.fixedPanelHeight=(contentA.offsetHeight)?contentA.offsetHeight:contentA.scrollHeight;if(this.enableAnimation){if(this.animator)this.animator.stop();this.animator=new Spry.Widget.Accordion.PanelAnimator(this,panelB,{duration:this.duration,fps:this.fps,transition:this.transition});this.animator.start()}else{if(contentA){contentA.style.display="none";contentA.style.height="0px"}contentB.style.display="block";contentB.style.height=this.useFixedPanelHeights?this.fixedPanelHeight+"px":"auto"}if(panelA){this.removeClassName(panelA,this.openClass);this.addClassName(panelA,this.closedClass)}this.removeClassName(panelB,this.closedClass);this.addClassName(panelB,this.openClass);this.currentPanel=panelB;return panelB};Spry.Widget.Accordion.prototype.closePanel=function(){if(!this.useFixedPanelHeights&&this.currentPanel){var panel=this.currentPanel;var content=this.getPanelContent(panel);if(content){if(this.enableAnimation){if(this.animator)this.animator.stop();this.animator=new Spry.Widget.Accordion.PanelAnimator(this,null,{duration:this.duration,fps:this.fps,transition:this.transition});this.animator.start()}else{content.style.display="none";content.style.height="0px"}}this.removeClassName(panel,this.openClass);this.addClassName(panel,this.closedClass);this.currentPanel=null}};Spry.Widget.Accordion.prototype.openNextPanel=function(){return this.openPanel(this.getCurrentPanelIndex()+1)};Spry.Widget.Accordion.prototype.openPreviousPanel=function(){return this.openPanel(this.getCurrentPanelIndex()-1)};Spry.Widget.Accordion.prototype.openFirstPanel=function(){return this.openPanel(0)};Spry.Widget.Accordion.prototype.openLastPanel=function(){var panels=this.getPanels();return this.openPanel(panels[panels.length-1])};Spry.Widget.Accordion.prototype.onPanelTabClick=function(e,panel){if(panel!=this.currentPanel)this.openPanel(panel);else this.closePanel();if(this.enableKeyboardNavigation)this.focus();if(e.preventDefault)e.preventDefault();else e.returnValue=false;if(e.stopPropagation)e.stopPropagation();else e.cancelBubble=true;return false};Spry.Widget.Accordion.prototype.onFocus=function(e){this.hasFocus=true;this.addClassName(this.element,this.focusedClass);return false};Spry.Widget.Accordion.prototype.onBlur=function(e){this.hasFocus=false;this.removeClassName(this.element,this.focusedClass);return false};Spry.Widget.Accordion.KEY_UP=38;Spry.Widget.Accordion.KEY_DOWN=40;Spry.Widget.Accordion.prototype.onKeyDown=function(e){var key=e.keyCode;if(!this.hasFocus||(key!=this.previousPanelKeyCode&&key!=this.nextPanelKeyCode))return true;var panels=this.getPanels();if(!panels||panels.length<1)return false;var currentPanel=this.currentPanel?this.currentPanel:panels[0];var nextPanel=(key==this.nextPanelKeyCode)?currentPanel.nextSibling:currentPanel.previousSibling;while(nextPanel){if(nextPanel.nodeType==1)break;nextPanel=(key==this.nextPanelKeyCode)?nextPanel.nextSibling:nextPanel.previousSibling}if(nextPanel&&currentPanel!=nextPanel)this.openPanel(nextPanel);if(e.preventDefault)e.preventDefault();else e.returnValue=false;if(e.stopPropagation)e.stopPropagation();else e.cancelBubble=true;return false};Spry.Widget.Accordion.prototype.attachPanelHandlers=function(panel){if(!panel)return;var tab=this.getPanelTab(panel);if(tab){var self=this;Spry.Widget.Accordion.addEventListener(tab,"click",function(e){return self.onPanelTabClick(e,panel)},false);Spry.Widget.Accordion.addEventListener(tab,"mouseover",function(e){return self.onPanelTabMouseOver(e,panel)},false);Spry.Widget.Accordion.addEventListener(tab,"mouseout",function(e){return self.onPanelTabMouseOut(e,panel)},false)}};Spry.Widget.Accordion.addEventListener=function(element,eventType,handler,capture){try{if(element.addEventListener)element.addEventListener(eventType,handler,capture);else if(element.attachEvent)element.attachEvent("on"+eventType,handler)}catch(e){}};Spry.Widget.Accordion.prototype.initPanel=function(panel,isDefault){var content=this.getPanelContent(panel);if(isDefault){this.currentPanel=panel;this.removeClassName(panel,this.closedClass);this.addClassName(panel,this.openClass);if(content){if(this.useFixedPanelHeights){if(this.fixedPanelHeight)content.style.height=this.fixedPanelHeight+"px"}else{content.style.height="auto"}}}else{this.removeClassName(panel,this.openClass);this.addClassName(panel,this.closedClass);if(content){content.style.height="0px";content.style.display="none"}}this.attachPanelHandlers(panel)};Spry.Widget.Accordion.prototype.attachBehaviors=function(){var panels=this.getPanels();for(var i=0;i<panels.length;i++)this.initPanel(panels[i],i==this.defaultPanel);this.enableKeyboardNavigation=(this.enableKeyboardNavigation&&this.element.attributes.getNamedItem("tabindex"));if(this.enableKeyboardNavigation){var self=this;Spry.Widget.Accordion.addEventListener(this.element,"focus",function(e){return self.onFocus(e)},false);Spry.Widget.Accordion.addEventListener(this.element,"blur",function(e){return self.onBlur(e)},false);Spry.Widget.Accordion.addEventListener(this.element,"keydown",function(e){return self.onKeyDown(e)},false)}};Spry.Widget.Accordion.prototype.getPanels=function(){return this.getElementChildren(this.element)};Spry.Widget.Accordion.prototype.getCurrentPanel=function(){return this.currentPanel};Spry.Widget.Accordion.prototype.getPanelIndex=function(panel){var panels=this.getPanels();for(var i=0;i<panels.length;i++){if(panel==panels[i])return i}return-1};Spry.Widget.Accordion.prototype.getCurrentPanelIndex=function(){return this.getPanelIndex(this.currentPanel)};Spry.Widget.Accordion.prototype.getPanelTab=function(panel){if(!panel)return null;return this.getElementChildren(panel)[0]};Spry.Widget.Accordion.prototype.getPanelContent=function(panel){if(!panel)return null;return this.getElementChildren(panel)[1]};Spry.Widget.Accordion.prototype.getElementChildren=function(element){var children=[];var child=element.firstChild;while(child){if(child.nodeType==1)children.push(child);child=child.nextSibling}return children};Spry.Widget.Accordion.prototype.focus=function(){if(this.element&&this.element.focus)this.element.focus()};Spry.Widget.Accordion.prototype.blur=function(){if(this.element&&this.element.blur)this.element.blur()};Spry.Widget.Accordion.PanelAnimator=function(accordion,panel,opts){this.timer=null;this.interval=0;this.fps=60;this.duration=500;this.startTime=0;this.transition=Spry.Widget.Accordion.PanelAnimator.defaultTransition;this.onComplete=null;this.panel=panel;this.panelToOpen=accordion.getElement(panel);this.panelData=[];this.useFixedPanelHeights=accordion.useFixedPanelHeights;Spry.Widget.Accordion.setOptions(this,opts,true);this.interval=Math.floor(1000/this.fps);var panels=accordion.getPanels();for(var i=0;i<panels.length;i++){var p=panels[i];var c=accordion.getPanelContent(p);if(c){var h=c.offsetHeight;if(h==undefined)h=0;if(p==panel&&h==0)c.style.display="block";if(p==panel||h>0){var obj=new Object;obj.panel=p;obj.content=c;obj.fromHeight=h;obj.toHeight=(p==panel)?(accordion.useFixedPanelHeights?accordion.fixedPanelHeight:c.scrollHeight):0;obj.distance=obj.toHeight-obj.fromHeight;obj.overflow=c.style.overflow;this.panelData.push(obj);c.style.overflow="hidden";c.style.height=h+"px"}}}};Spry.Widget.Accordion.PanelAnimator.defaultTransition=function(time,begin,finish,duration){time/=duration;return begin+((2-time)*time*finish)};Spry.Widget.Accordion.PanelAnimator.prototype.start=function(){var self=this;this.startTime=(new Date).getTime();this.timer=setTimeout(function(){self.stepAnimation()},this.interval)};Spry.Widget.Accordion.PanelAnimator.prototype.stop=function(){if(this.timer){clearTimeout(this.timer);for(i=0;i<this.panelData.length;i++){obj=this.panelData[i];obj.content.style.overflow=obj.overflow}}this.timer=null};Spry.Widget.Accordion.PanelAnimator.prototype.stepAnimation=function(){var curTime=(new Date).getTime();var elapsedTime=curTime-this.startTime;var i,obj;if(elapsedTime>=this.duration){for(i=0;i<this.panelData.length;i++){obj=this.panelData[i];if(obj.panel!=this.panel){obj.content.style.display="none";obj.content.style.height="0px"}obj.content.style.overflow=obj.overflow;obj.content.style.height=(this.useFixedPanelHeights||obj.toHeight==0)?obj.toHeight+"px":"auto"}if(this.onComplete)this.onComplete();return}for(i=0;i<this.panelData.length;i++){obj=this.panelData[i];var ht=this.transition(elapsedTime,obj.fromHeight,obj.distance,this.duration);obj.content.style.height=((ht<0)?0:ht)+"px"}var self=this;this.timer=setTimeout(function(){self.stepAnimation()},this.interval)};
/****************************************************************************************************************************************************
** Google SWFObject v2.1 <http://code.google.com/p/swfobject/>																													**
*****************************************************************************************************************************************************
**	This code is used for Google analytics.																																			**
****************************************************************************************************************************************************/
var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);/*@cc_on q=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return }f(H);if(h.ie&&h.win){try{K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");J=C("__ie_ondomload");if(J){I(J,"onreadystatechange",S)}}catch(q){}}if(h.webkit&&typeof K.readyState!=b){Z=setInterval(function(){if(/loaded|complete/.test(K.readyState)){E()}},10)}if(typeof K.addEventListener!=b){K.addEventListener("DOMContentLoaded",E,null)}R(E)}();function S(){if(J.readyState=="complete"){J.parentNode.removeChild(J);E()}}function E(){if(e){return }if(h.ie&&h.win){var v=a("span");try{var u=K.getElementsByTagName("body")[0].appendChild(v);u.parentNode.removeChild(u)}catch(w){return }}e=true;if(Z){clearInterval(Z);Z=null}var q=o.length;for(var r=0;r<q;r++){o[r]()}}function f(q){if(e){q()}else{o[o.length]=q}}function R(r){if(typeof j.addEventListener!=b){j.addEventListener("load",r,false)}else{if(typeof K.addEventListener!=b){K.addEventListener("load",r,false)}else{if(typeof j.attachEvent!=b){I(j,"onload",r)}else{if(typeof j.onload=="function"){var q=j.onload;j.onload=function(){q();r()}}else{j.onload=r}}}}}function H(){var t=N.length;for(var q=0;q<t;q++){var u=N[q].id;if(h.pv[0]>0){var r=C(u);if(r){N[q].width=r.getAttribute("width")?r.getAttribute("width"):"0";N[q].height=r.getAttribute("height")?r.getAttribute("height"):"0";if(c(N[q].swfVersion)){if(h.webkit&&h.webkit<312){Y(r)}W(u,true)}else{if(N[q].expressInstall&&!A&&c("6.0.65")&&(h.win||h.mac)){k(N[q])}else{O(r)}}}}else{W(u,true)}}}function Y(t){var q=t.getElementsByTagName(Q)[0];if(q){var w=a("embed"),y=q.attributes;if(y){var v=y.length;for(var u=0;u<v;u++){if(y[u].nodeName=="DATA"){w.setAttribute("src",y[u].nodeValue)}else{w.setAttribute(y[u].nodeName,y[u].nodeValue)}}}var x=q.childNodes;if(x){var z=x.length;for(var r=0;r<z;r++){if(x[r].nodeType==1&&x[r].nodeName=="PARAM"){w.setAttribute(x[r].getAttribute("name"),x[r].getAttribute("value"))}}}t.parentNode.replaceChild(w,t)}}function k(w){A=true;var u=C(w.id);if(u){if(w.altContentId){var y=C(w.altContentId);if(y){M=y;l=w.altContentId}}else{M=G(u)}if(!(/%$/.test(w.width))&&parseInt(w.width,10)<310){w.width="310"}if(!(/%$/.test(w.height))&&parseInt(w.height,10)<137){w.height="137"}K.title=K.title.slice(0,47)+" - Flash Player Installation";var z=h.ie&&h.win?"ActiveX":"PlugIn",q=K.title,r="MMredirectURL="+j.location+"&MMplayerType="+z+"&MMdoctitle="+q,x=w.id;if(h.ie&&h.win&&u.readyState!=4){var t=a("div");x+="SWFObjectNew";t.setAttribute("id",x);u.parentNode.insertBefore(t,u);u.style.display="none";var v=function(){u.parentNode.removeChild(u)};I(j,"onload",v)}U({data:w.expressInstall,id:m,width:w.width,height:w.height},{flashvars:r},x)}}function O(t){if(h.ie&&h.win&&t.readyState!=4){var r=a("div");t.parentNode.insertBefore(r,t);r.parentNode.replaceChild(G(t),r);t.style.display="none";var q=function(){t.parentNode.removeChild(t)};I(j,"onload",q)}else{t.parentNode.replaceChild(G(t),t)}}function G(v){var u=a("div");if(h.win&&h.ie){u.innerHTML=v.innerHTML}else{var r=v.getElementsByTagName(Q)[0];if(r){var w=r.childNodes;if(w){var q=w.length;for(var t=0;t<q;t++){if(!(w[t].nodeType==1&&w[t].nodeName=="PARAM")&&!(w[t].nodeType==8)){u.appendChild(w[t].cloneNode(true))}}}}}return u}function U(AG,AE,t){var q,v=C(t);if(v){if(typeof AG.id==b){AG.id=t}if(h.ie&&h.win){var AF="";for(var AB in AG){if(AG[AB]!=Object.prototype[AB]){if(AB.toLowerCase()=="data"){AE.movie=AG[AB]}else{if(AB.toLowerCase()=="styleclass"){AF+=' class="'+AG[AB]+'"'}else{if(AB.toLowerCase()!="classid"){AF+=" "+AB+'="'+AG[AB]+'"'}}}}}var AD="";for(var AA in AE){if(AE[AA]!=Object.prototype[AA]){AD+='<param name="'+AA+'" value="'+AE[AA]+'" />'}}v.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AF+">"+AD+"</object>";i[i.length]=AG.id;q=C(AG.id)}else{if(h.webkit&&h.webkit<312){var AC=a("embed");AC.setAttribute("type",P);for(var z in AG){if(AG[z]!=Object.prototype[z]){if(z.toLowerCase()=="data"){AC.setAttribute("src",AG[z])}else{if(z.toLowerCase()=="styleclass"){AC.setAttribute("class",AG[z])}else{if(z.toLowerCase()!="classid"){AC.setAttribute(z,AG[z])}}}}}for(var y in AE){if(AE[y]!=Object.prototype[y]){if(y.toLowerCase()!="movie"){AC.setAttribute(y,AE[y])}}}v.parentNode.replaceChild(AC,v);q=AC}else{var u=a(Q);u.setAttribute("type",P);for(var x in AG){if(AG[x]!=Object.prototype[x]){if(x.toLowerCase()=="styleclass"){u.setAttribute("class",AG[x])}else{if(x.toLowerCase()!="classid"){u.setAttribute(x,AG[x])}}}}for(var w in AE){if(AE[w]!=Object.prototype[w]&&w.toLowerCase()!="movie"){F(u,w,AE[w])}}v.parentNode.replaceChild(u,v);q=u}}}return q}function F(t,q,r){var u=a("param");u.setAttribute("name",q);u.setAttribute("value",r);t.appendChild(u)}function X(r){var q=C(r);if(q&&(q.nodeName=="OBJECT"||q.nodeName=="EMBED")){if(h.ie&&h.win){if(q.readyState==4){B(r)}else{j.attachEvent("onload",function(){B(r)})}}else{q.parentNode.removeChild(q)}}}function B(t){var r=C(t);if(r){for(var q in r){if(typeof r[q]=="function"){r[q]=null}}r.parentNode.removeChild(r)}}function C(t){var q=null;try{q=K.getElementById(t)}catch(r){}return q}function a(q){return K.createElement(q)}function I(t,q,r){t.attachEvent(q,r);d[d.length]=[t,q,r]}function c(t){var r=h.pv,q=t.split(".");q[0]=parseInt(q[0],10);q[1]=parseInt(q[1],10)||0;q[2]=parseInt(q[2],10)||0;return(r[0]>q[0]||(r[0]==q[0]&&r[1]>q[1])||(r[0]==q[0]&&r[1]==q[1]&&r[2]>=q[2]))?true:false}function V(v,r){if(h.ie&&h.mac){return }var u=K.getElementsByTagName("head")[0],t=a("style");t.setAttribute("type","text/css");t.setAttribute("media","screen");if(!(h.ie&&h.win)&&typeof K.createTextNode!=b){t.appendChild(K.createTextNode(v+" {"+r+"}"))}u.appendChild(t);if(h.ie&&h.win&&typeof K.styleSheets!=b&&K.styleSheets.length>0){var q=K.styleSheets[K.styleSheets.length-1];if(typeof q.addRule==Q){q.addRule(v,r)}}}function W(t,q){var r=q?"visible":"hidden";if(e&&C(t)){C(t).style.visibility=r}else{V("#"+t,"visibility:"+r)}}function g(s){var r=/[\\\"<>\.;]/;var q=r.exec(s)!=null;return q?encodeURIComponent(s):s}var D=function(){if(h.ie&&h.win){window.attachEvent("onunload",function(){var w=d.length;for(var v=0;v<w;v++){d[v][0].detachEvent(d[v][1],d[v][2])}var t=i.length;for(var u=0;u<t;u++){X(i[u])}for(var r in h){h[r]=null}h=null;for(var q in swfobject){swfobject[q]=null}swfobject=null})}}();return{registerObject:function(u,q,t){if(!h.w3cdom||!u||!q){return }var r={};r.id=u;r.swfVersion=q;r.expressInstall=t?t:false;N[N.length]=r;W(u,false)},getObjectById:function(v){var q=null;if(h.w3cdom){var t=C(v);if(t){var u=t.getElementsByTagName(Q)[0];if(!u||(u&&typeof t.SetVariable!=b)){q=t}else{if(typeof u.SetVariable!=b){q=u}}}}return q},embedSWF:function(x,AE,AB,AD,q,w,r,z,AC){if(!h.w3cdom||!x||!AE||!AB||!AD||!q){return }AB+="";AD+="";if(c(q)){W(AE,false);var AA={};if(AC&&typeof AC===Q){for(var v in AC){if(AC[v]!=Object.prototype[v]){AA[v]=AC[v]}}}AA.data=x;AA.width=AB;AA.height=AD;var y={};if(z&&typeof z===Q){for(var u in z){if(z[u]!=Object.prototype[u]){y[u]=z[u]}}}if(r&&typeof r===Q){for(var t in r){if(r[t]!=Object.prototype[t]){if(typeof y.flashvars!=b){y.flashvars+="&"+t+"="+r[t]}else{y.flashvars=t+"="+r[t]}}}}f(function(){U(AA,y,AE);if(AA.id==AE){W(AE,true)}})}else{if(w&&!A&&c("6.0.65")&&(h.win||h.mac)){A=true;W(AE,false);f(function(){var AF={};AF.id=AF.altContentId=AE;AF.width=AB;AF.height=AD;AF.expressInstall=w;k(AF)})}}},getFlashPlayerVersion:function(){return{major:h.pv[0],minor:h.pv[1],release:h.pv[2]}},hasFlashPlayerVersion:c,createSWF:function(t,r,q){if(h.w3cdom){return U(t,r,q)}else{return undefined}},removeSWF:function(q){if(h.w3cdom){X(q)}},createCSS:function(r,q){if(h.w3cdom){V(r,q)}},addDomLoadEvent:f,addLoadEvent:R,getQueryParamValue:function(v){var u=K.location.search||K.location.hash;if(v==null){return g(u)}if(u){var t=u.substring(1).split("&");for(var r=0;r<t.length;r++){if(t[r].substring(0,t[r].indexOf("="))==v){return g(t[r].substring((t[r].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(A&&M){var q=C(m);if(q){q.parentNode.replaceChild(M,q);if(l){W(l,true);if(h.ie&&h.win){M.style.display="block"}}M=null;l=null;A=false}}}}}();var _gaq = _gaq || [];   _gaq.push(['_setAccount', 'UA-12620829-1']);   _gaq.push(['_trackPageview']);    (function() {     var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);   })();
