var vz = {
graphicsDir: 'graphics/',
restoreCursor: 'zoomout.cur',
expandSteps: 10,
expandDuration: 250,
restoreSteps: 10,
restoreDuration: 250,
marginLeft: 15,
marginRight: 15,
marginTop: 15,
marginBottom: 15,
zIndexCounter: 1001,
restoreTitle: 'Click to close image, click and drag to move. Use arrow keys for next and previous.',
loadingText: 'Loading...',
loadingTitle: 'Click to cancel',
loadingOpacity: 0.75,
focusTitle: 'Click to bring to front',
allowMultipleInstances: true,
numberOfImagesToPreload: 5,
captionSlideSpeed: 1,
padToMinWidth: false,
outlineWhileAnimating: 2,
outlineStartOffset: 3,
fullExpandTitle: 'Expand to actual size',
fullExpandPosition: 'bottom right',
fullExpandOpacity: 1,
showCredits: true,
creditsText: 'Powered by <i>Viva Zoom</i>',
creditsHref: 'http://www.Mediatricks.biz',
creditsTitle: 'Go to the Viva Plugins Homepage',
enableKeyListener: true,
previousText: 'Previous',
nextText: 'Next',
moveText: 'Move',
closeText: 'Close',
closeTitle: 'Click to close',
resizeTitle: 'Resize',
allowWidthReduction: false,
allowHeightReduction: true,
preserveContent: true,
objectLoadTime: 'before',
cacheAjax: true,
captionId: null,
spaceForCaption: 30,
slideshowGroup: null,
minWidth: 200,
minHeight: 200,
allowSizeReduction: true,
outlineType: 'drop-shadow',
wrapperClassName: 'highslide-wrapper',
preloadTheseImages: [],
continuePreloading: true,
expanders: [],
overrides: ['allowSizeReduction', 'outlineType', 'outlineWhileAnimating', 'spaceForCaption', 'captionId', 'captionText', 'captionEval', 'contentId', 'width', 'height', 'allowWidthReduction', 'allowHeightReduction', 'preserveContent', 'objectType', 'cacheAjax', 'objectWidth', 'objectHeight', 'objectLoadTime', 'swfObject', 'wrapperClassName', 'minWidth', 'minHeight', 'slideshowGroup', 'easing', 'easingClose', 'fadeInOut'],
overlays: [],
idCounter: 0,
faders: [],
pendingOutlines: {},
sleeping: [],
preloadTheseAjax: [],
cacheBindings: [],
cachedGets: {},
clones: {},
ie: (document.all && !window.opera),
safari: /Safari/.test(navigator.userAgent),
geckoMac: /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),
$: function (a) {
return document.getElementById(a)
},
push: function (a, b) {
a[a.length] = b
},
createElement: function (a, b, c, d, e) {
var f = document.createElement(a);
if (b) vz.setAttribs(f, b);
if (e) vz.setStyles(f, {
padding: 0,
border: 'none',
margin: 0
});
if (c) vz.setStyles(f, c);
if (d) d.appendChild(f);
return f
},
setAttribs: function (a, b) {
for (var x in b) a[x] = b[x]
},
setStyles: function (a, b) {
for (var x in b) {
try {
if (vz.ie && x == 'opacity') {
if (b[x] > 0.99) a.style.removeAttribute('filter');
else a.style.filter = 'alpha(opacity=' + (b[x] * 100) + ')'
} else a.style[x] = b[x]
} catch (e) {}
}
},
ieVersion: function () {
var a = navigator.appVersion.split("MSIE");
return a[1] ? parseFloat(a[1]) : null
},
getPageSize: function () {
var a = document.compatMode && document.compatMode != "BackCompat" ? document.documentElement : document.body;
var b = vz.ie ? a.clientWidth : (document.documentElement.clientWidth || self.innerWidth),
height = vz.ie ? a.clientHeight : self.innerHeight;
return {
width: b,
height: height,
scrollLeft: vz.ie ? a.scrollLeft : pageXOffset,
scrollTop: vz.ie ? a.scrollTop : pageYOffset
}
},
position: function (a) {
var p = {
x: a.offsetLeft,
y: a.offsetTop
};
while (a.offsetParent) {
a = a.offsetParent;
p.x += a.offsetLeft;
p.y += a.offsetTop;
if (a != document.body && a != document.documentElement) {
p.x -= a.scrollLeft;
p.y -= a.scrollTop
}
}
return p
},
expand: function (a, b, c) {
if (a.getParams) return b;
try {
new vz.Expander(a, b, c);
return false
} catch (e) {
return true
}
},
htmlExpand: function (a, b, c) {
if (a.getParams) return b;
for (var i = 0; i < vz.sleeping.length; i++) {
if (vz.sleeping[i] && vz.sleeping[i].a == a) {
vz.sleeping[i].awake();
vz.sleeping[i] = null;
return false
}
}
try {
vz.hasHtmlexpanders = true;
new vz.Expander(a, b, c, 'html');
return false
} catch (e) {
return true
}
},
getElementByClass: function (a, b, c) {
var d = a.getElementsByTagName(b);
for (var i = 0; i < d.length; i++) {
if ((new RegExp(c)).test(d[i].className)) {
return d[i]
}
}
return null
},
getSelfRendered: function () {
var s = '<div class="highslide-header"><ul>' + '<li class="highslide-previous"><a onclick="return vz.previous(this)" href="#">' + vz.previousText + '</a></li>' + '<li class="highslide-next"><a onclick="return vz.next(this)" href="#">' + vz.nextText + '</a></li>' + '<li class="highslide-move"><a href="#" onclick="return false">' + vz.moveText + '</a></li>' + '<li class="highslide-close"><a onclick="return vz.close(this)" title="' + vz.closeTitle + '" href="#">' + vz.closeText + '</a></li>' + '</ul></div>' + '<div class="highslide-body"></div>' + '<div class="highslide-footer"><div>' + '<span class="highslide-resize" title="' + vz.resizeTitle + '"><span></span></span>' + '</div></div>';
return vz.createElement('div', {
className: 'highslide-html-content',
innerHTML: s
})
},
getCacheBinding: function (a) {
for (var i = 0; i < vz.cacheBindings.length; i++) {
if (vz.cacheBindings[i][0] == a) {
var c = vz.cacheBindings[i][1];
vz.cacheBindings[i][1] = c.cloneNode(1);
return c
}
}
return null
},
preloadAjax: function (e) {
var b = document.getElementsByTagName('A');
var a, re;
for (var i = 0; i < b.length; i++) {
a = b[i];
re = vz.isvzAnchor(a);
if (re && re[0] == 'vz.htmlExpand' && vz.getParam(a, 'objectType') == 'ajax' && vz.getParam(a, 'cacheAjax')) {
vz.push(vz.preloadTheseAjax, a)
}
}
vz.preloadAjaxElement(0)
},
preloadAjaxElement: function (i) {
if (!vz.preloadTheseAjax[i]) return;
var a = vz.preloadTheseAjax[i];
var b = vz.getNode(vz.getParam(a, 'contentId'));
if (!b) b = vz.getSelfRendered();
var c = new vz.Ajax(a, b, 1);
c.onError = function () {};
c.onLoad = function () {
vz.push(vz.cacheBindings, [a, b]);
vz.preloadAjaxElement(i + 1)
};
c.run()
},
focusTopmost: function () {
var a = 0,
topmostKey = -1;
for (var i = 0; i < vz.expanders.length; i++) {
if (vz.expanders[i]) {
if (vz.expanders[i].wrapper.style.zIndex && vz.expanders[i].wrapper.style.zIndex > a) {
a = vz.expanders[i].wrapper.style.zIndex;
topmostKey = i
}
}
}
if (topmostKey == -1) vz.focusKey = -1;
else vz.expanders[topmostKey].focus()
},
getAdjacentAnchor: function (a, b) {
var c = document.getElementsByTagName('A'),
vzAr = {},
activeI = -1,
j = 0;
for (var i = 0; i < c.length; i++) {
if (vz.isvzAnchor(c[i]) && ((vz.expanders[a].slideshowGroup == vz.getParam(c[i], 'slideshowGroup')))) {
vzAr[j] = c[i];
if (vz.expanders[a] && c[i] == vz.expanders[a].a) {
activeI = j
}
j++
}
}
return vzAr[activeI + b] || null
},
getParam: function (a, b) {
a.getParams = a.onclick;
var p = a.getParams ? a.getParams() : null;
a.getParams = null;
return (p && typeof p[b] != 'undefined') ? p[b] : (typeof vz[b] != 'undefined' ? vz[b] : null)
},
getSrc: function (a) {
var b = vz.getParam(a, 'src');
if (b) return b;
return a.href
},
getNode: function (b) {
var c = vz.$(b),
clone = vz.clones[b],
a = {};
if (!c && !clone) return null;
if (!clone) {
clone = c.cloneNode(true);
clone.id = '';
vz.clones[b] = clone;
return c
} else {
return clone.cloneNode(true)
}
},
purge: function (d) {
var a = d.attributes,
i, l, n;
if (a) {
l = a.length;
for (var i = 0; i < l; i += 1) {
n = a[i].name;
if (typeof d[n] === 'function') {
d[n] = null
}
}
}
a = d.childNodes;
if (a) {
l = a.length;
for (var i = 0; i < l; i += 1) vz.purge(d.childNodes[i])
}
},
discardElement: function (d) {
if (vz.ie) vz.purge(d);
vz.garbageBin.appendChild(d);
vz.garbageBin.innerHTML = ''
},
previousOrNext: function (a, b) {
var c = vz.last = vz.getExpander(a);
try {
var d = vz.upcoming = vz.getAdjacentAnchor(c.key, b);
d.onclick()
} catch (e) {}
try {
c.close()
} catch (e) {}
return false
},
previous: function (a) {
return vz.previousOrNext(a, -1)
},
next: function (a) {
return vz.previousOrNext(a, 1)
},
keyHandler: function (e) {
if (!e) e = window.event;
if (!e.target) e.target = e.srcElement;
if (e.target.form) return true;
var a = null;
switch (e.keyCode) {
case 32:
case 34:
case 39:
case 40:
a = 1;
break;
case 8:
case 33:
case 37:
case 38:
a = -1;
break;
case 27:
case 13:
a = 0
}
if (a !== null) {
vz.removeEventListener(document, 'keydown', vz.keyHandler);
if (!vz.enableKeyListener) return true;
if (e.preventDefault) e.preventDefault();
else e.returnValue = false;
if (a == 0) {
try {
vz.getExpander().close()
} catch (e) {}
return false
} else {
return vz.previousOrNext(vz.focusKey, a)
}
}
return true
},
registerOverlay: function (a) {
vz.push(vz.overlays, a)
},
getWrapperKey: function (a) {
var b, re = /^highslide-wrapper-([0-9]+)$/;
b = a;
while (b.parentNode) {
if (b.id && re.test(b.id)) return b.id.replace(re, "$1");
b = b.parentNode
}
b = a;
while (b.parentNode) {
if (b.tagName && vz.isvzAnchor(b)) {
for (var c = 0; c < vz.expanders.length; c++) {
var d = vz.expanders[c];
if (d && d.a == b) return c
}
}
b = b.parentNode
}
return null
},
getExpander: function (a) {
if (typeof a == 'undefined') return vz.expanders[vz.focusKey] || null;
if (typeof a == 'number') return vz.expanders[a] || null;
if (typeof a == 'string') a = vz.$(a);
return vz.expanders[vz.getWrapperKey(a)] || 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 a = e.target;
while (a.parentNode && !(/highslide-(image|move|html|resize)/.test(a.className))) {
a = a.parentNode
}
var b = vz.getExpander(a);
if (b && (b.isClosing || !b.isExpanded)) return true;
if (b && e.type == 'mousedown') {
if (e.target.form) return true;
var c = a.className.match(/highslide-(image|move|resize)/);
if (c) {
vz.dragArgs = {
exp: b,
type: c[1],
left: b.x.min,
width: b.x.span,
top: b.y.min,
height: b.y.span,
clickX: e.clientX,
clickY: e.clientY
};
vz.addEventListener(document, 'mousemove', vz.dragHandler);
if (e.preventDefault) e.preventDefault();
if (/highslide-(image|html)-blur/.test(b.content.className)) {
b.focus();
vz.hasFocused = true
}
return false
} else if (/highslide-html/.test(a.className) && vz.focusKey != b.key) {
b.focus();
b.redoShowHide()
}
} else if (e.type == 'mouseup') {
vz.removeEventListener(document, 'mousemove', vz.dragHandler);
if (vz.dragArgs) {
if (vz.dragArgs.type == 'image') vz.dragArgs.exp.content.style.cursor = vz.styleRestoreCursor;
var d = vz.dragArgs.hasDragged;
if (!d && !vz.hasFocused && !/(move|resize)/.test(vz.dragArgs.type)) {
b.close()
} else if (d || (!d && vz.hasHtmlexpanders)) {
vz.dragArgs.exp.redoShowHide()
}
if (vz.dragArgs.exp.releaseMask) vz.dragArgs.exp.releaseMask.style.display = 'none';
vz.hasFocused = false;
vz.dragArgs = null
} else if (/highslide-image-blur/.test(a.className)) {
a.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;
if (exp.iframe) {
if (!exp.releaseMask) exp.releaseMask = vz.createElement('div', null, {
position: 'absolute',
width: exp.x.span + 'px',
height: exp.y.span + 'px',
left: 0,
top: 0,
zIndex: 4,
background: (vz.ie ? 'white' : 'none'),
opacity: 0.01
}, exp.wrapper, true);
if (exp.releaseMask.style.display == 'none') exp.releaseMask.style.display = ''
}
a.dX = e.clientX - a.clickX;
a.dY = e.clientY - a.clickY;
var b = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2));
if (!a.hasDragged) a.hasDragged = (a.type != 'image' && b > 0) || (b > (vz.dragSensitivity || 5));
if (a.hasDragged && e.clientX > 5 && e.clientY > 5) {
if (a.type == 'resize') exp.resize(a);
else exp.move(a)
}
return false
},
wrapperMouseHandler: function (e) {
try {
if (!e) e = window.event;
var a = /mouseover/i.test(e.type);
if (!e.target) e.target = e.srcElement;
if (vz.ie) e.relatedTarget = a ? e.fromElement : e.toElement;
var b = vz.getExpander(e.target);
if (!b || !e.relatedTarget || vz.getExpander(e.relatedTarget) == b || vz.dragArgs) return;
for (var i = 0; i < b.overlays.length; i++) {
var o = vz.$('vzId' + b.overlays[i]);
if (o && o.getAttribute('hideOnMouseOut')) {
var c = a ? 0 : o.getAttribute('opacity'),
to = a ? o.getAttribute('opacity') : 0;
vz.fade(o, c, to)
}
}
} catch (e) {}
},
addEventListener: function (a, b, c) {
try {
a.addEventListener(b, c, false)
} catch (e) {
try {
a.detachEvent('on' + b, c);
a.attachEvent('on' + b, c)
} catch (e) {
a['on' + b] = c
}
}
},
removeEventListener: function (a, b, c) {
try {
a.removeEventListener(b, c, false)
} catch (e) {
try {
a.detachEvent('on' + b, c)
} catch (e) {
a['on' + b] = null
}
}
},
preloadFullImage: function (i) {
if (vz.continuePreloading && vz.preloadTheseImages[i] && vz.preloadTheseImages[i] != 'undefined') {
var a = document.createElement('img');
a.onload = function () {
a = null;
vz.preloadFullImage(i + 1)
};
a.src = vz.preloadTheseImages[i]
}
},
preloadImages: function (b) {
if (b && typeof b != 'object') vz.numberOfImagesToPreload = b;
var a, re, j = 0;
var c = document.getElementsByTagName('A');
for (var i = 0; i < c.length; i++) {
a = c[i];
re = vz.isvzAnchor(a);
if (re && re[0] == 'vz.expand') {
if (j < vz.numberOfImagesToPreload) {
vz.preloadTheseImages[j] = vz.getSrc(a);
j++
}
}
}
new vz.Outline(vz.outlineType, function () {
vz.preloadFullImage(0)
});
var d = vz.createElement('img', {
src: vz.graphicsDir + vz.restoreCursor
})
},
genContainer: function () {
if (!vz.container) {
vz.container = vz.createElement('div', null, {
position: 'absolute',
left: 0,
top: 0,
width: '100%',
zIndex: vz.zIndexCounter
}, document.body, true);
vz.loading = vz.createElement('a', {
className: 'highslide-loading',
title: vz.loadingTitle,
innerHTML: vz.loadingText,
href: 'javascript:void(0)'
}, {
position: 'absolute',
opacity: vz.loadingOpacity,
left: '-9999px',
zIndex: 1
}, vz.container);
vz.garbageBin = vz.createElement('div', null, {
display: 'none'
}, vz.container);
vz.clearing = vz.createElement('div', null, {
clear: 'both',
paddingTop: '1px'
}, null, true);
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.ie6SSL = (vz.ie && vz.ieVersion() <= 6 && location.protocol == 'https:')
}
},
fade: function (a, o, b, c, i, d) {
if (typeof i == 'undefined') {
if (typeof c != 'number') c = 250;
if (c < 25) {
vz.setStyles(a, {
opacity: b
});
return
}
i = vz.faders.length;
d = b > o ? 1 : -1;
var e = (25 / (c - c % 25)) * Math.abs(o - b)
}
o = parseFloat(o);
a.style.visibility = (o <= 0) ? 'hidden' : 'visible';
if (o < 0 || (d == 1 && o > b)) return;
if (a.fading && a.fading.i != i) {
clearTimeout(vz.faders[a.fading.i]);
o = a.fading.o
}
a.fading = {
i: i,
o: o,
step: (e || a.fading.step)
};
a.style.visibility = (o <= 0) ? 'hidden' : 'visible';
vz.setStyles(a, {
opacity: o
});
vz.faders[i] = setTimeout(function () {
vz.fade(a, o + a.fading.step * d, b, null, i, d)
}, 25)
},
close: function (a) {
var b = vz.getExpander(a);
if (b) b.close();
return false
}
};
vz.Outline = function (a, b) {
this.onLoad = b;
this.outlineType = a;
var v = vz.ieVersion(),
tr;
this.hasAlphaImageLoader = vz.ie && v >= 5.5 && v < 7;
if (!a) {
if (b) b();
return
}
vz.genContainer();
this.table = vz.createElement('table', {
cellSpacing: 0
}, {
visibility: 'hidden',
position: 'absolute',
borderCollapse: 'collapse'
}, vz.container, true);
var c = 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'
}, c, true);
this.td[i] = vz.createElement('td', null, null, tr, true);
var d = i != 4 ? {
lineHeight: 0,
fontSize: 0
} : {
position: 'relative'
};
vz.setStyles(this.td[i], d)
}
this.td[4].className = a;
this.preloadGraphic()
};
vz.Outline.prototype = {
preloadGraphic: function () {
var a = vz.graphicsDir + (vz.outlinesDir || "outlines/") + this.outlineType + ".png";
var b = vz.safari ? vz.container : null;
this.graphic = vz.createElement('img', null, {
position: 'absolute',
left: '-9999px',
top: '-9999px'
}, b, true);
var c = this;
this.graphic.onload = function () {
c.onGraphicLoad()
};
this.graphic.src = a
},
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 a = 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'
}, a, 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 (a, x, y, w, h, b) {
if (b) this.table.style.visibility = (h >= 4 * this.offset) ? 'visible' : 'hidden';
this.table.style.left = (x - this.offset) + 'px';
this.table.style.top = (y - this.offset) + 'px';
this.table.style.width = (w + 2 * (a.offsetBorderW + this.offset)) + 'px';
w += 2 * (a.offsetBorderW - this.offset);
h += +2 * (a.offsetBorderH - this.offset);
this.td[4].style.width = w >= 0 ? w + 'px' : 0;
this.td[4].style.height = h >= 0 ? h + 'px' : 0;
if (this.hasAlphaImageLoader) this.td[3].style.height = this.td[5].style.height = this.td[4].style.height
},
destroy: function (a) {
if (a) this.table.style.visibility = 'hidden';
else vz.discardElement(this.table)
}
};
vz.Expander = function (a, b, c, d) {
this.a = a;
this.custom = c;
this.contentType = d || 'image';
this.isHtml = (d == 'html');
this.isImage = !this.isHtml;
vz.continuePreloading = false;
vz.genContainer();
var e = this.key = vz.expanders.length;
for (var i = 0; i < vz.overrides.length; i++) {
var f = vz.overrides[i];
this[f] = b && typeof b[f] != 'undefined' ? b[f] : vz[f]
}
var g = this.thumb = ((b && b.thumbnailId) ? vz.$(b.thumbnailId) : null) || a.getElementsByTagName('img')[0] || a;
this.thumbsUserSetId = g.id || a.id;
for (var i = 0; i < vz.expanders.length; i++) {
if (vz.expanders[i] && vz.expanders[i].a == a) {
vz.expanders[i].focus();
return false
}
}
for (var i = 0; i < vz.expanders.length; i++) {
if (vz.expanders[i] && vz.expanders[i].thumb != g && !vz.expanders[i].onLoadStarted) {
vz.expanders[i].cancelLoading()
}
}
vz.expanders[this.key] = this;
if (!vz.allowMultipleInstances) {
if (vz.expanders[e - 1]) vz.expanders[e - 1].close();
if (typeof vz.focusKey != 'undefined' && vz.expanders[vz.focusKey]) vz.expanders[vz.focusKey].close()
}
var h = vz.position(g);
this.thumbWidth = g.width ? g.width : g.offsetWidth;
this.thumbHeight = g.height ? g.height : g.offsetHeight;
this.thumbLeft = h.x;
this.thumbTop = h.y;
this.thumbOffsetBorderW = (this.thumb.offsetWidth - this.thumbWidth) / 2;
this.thumbOffsetBorderH = (this.thumb.offsetHeight - this.thumbHeight) / 2;
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;
if (vz.pendingOutlines[this.outlineType]) {
this.connectOutline();
this[this.contentType + 'Create']()
} else if (!this.outlineType) {
this[this.contentType + 'Create']()
} else {
this.displayLoading();
var j = this;
new vz.Outline(this.outlineType, function () {
j.connectOutline();
j[j.contentType + 'Create']()
})
}
return true
};
vz.Expander.prototype = {
connectOutline: function (x, y) {
var w = vz.pendingOutlines[this.outlineType];
this.objOutline = w;
w.table.style.zIndex = this.wrapper.style.zIndex;
vz.pendingOutlines[this.outlineType] = null
},
displayLoading: function () {
if (this.onLoadStarted || this.loading) return;
this.originalCursor = this.a.style.cursor;
this.a.style.cursor = 'wait';
this.loading = vz.loading;
var a = this;
this.loading.onclick = function () {
a.cancelLoading()
};
this.loading.style.top = (this.thumbTop + (this.thumbHeight - this.loading.offsetHeight) / 2) + 'px';
var a = this,
left = (this.thumbLeft + this.thumbOffsetBorderW + (this.thumbWidth - this.loading.offsetWidth) / 2) + 'px';
setTimeout(function () {
if (a.loading) a.loading.style.left = left
}, 100)
},
imageCreate: function () {
var a = this;
var b = document.createElement('img');
this.content = b;
b.onload = function () {
if (vz.expanders[a.key]) a.contentLoaded()
};
if (vz.blockRightClick) b.oncontextmenu = function () {
return false
};
b.className = 'highslide-image';
b.style.visibility = 'hidden';
b.style.display = 'block';
b.style.position = 'absolute';
b.style.maxWidth = 'none';
b.style.zIndex = 3;
b.title = vz.restoreTitle;
if (vz.safari) vz.container.appendChild(b);
if (vz.ie && vz.flushImgSize) b.src = null;
b.src = vz.getSrc(this.a);
this.displayLoading()
},
htmlCreate: function () {
this.content = vz.getCacheBinding(this.a);
if (!this.content) this.content = vz.getNode(this.contentId);
if (!this.content) this.content = vz.getSelfRendered();
this.innerContent = this.content;
if (this.swfObject || this.objectType == 'iframe') this.setObjContainerSize(this.innerContent);
vz.container.appendChild(this.wrapper);
vz.setStyles(this.wrapper, {
position: 'static',
padding: '0 ' + vz.marginRight + 'px 0 ' + vz.marginLeft + 'px'
});
this.content = vz.createElement('div', {
className: 'highslide-html'
}, {
position: 'relative',
zIndex: 3,
overflow: 'hidden'
}, this.wrapper);
this.mediumContent = vz.createElement('div', null, null, this.content, 1);
this.mediumContent.appendChild(this.innerContent);
vz.setStyles(this.innerContent, {
position: 'relative'
});
this.innerContent.className += ' highslide-display-block';
if (this.width) this.innerContent.style.width = this.width + 'px';
if (this.height) this.innerContent.style.height = this.height + 'px';
if (this.innerContent.offsetWidth < this.minWidth) this.innerContent.style.width = this.minWidth + 'px';
if (this.objectType == 'ajax' && !vz.getCacheBinding(this.a)) {
this.displayLoading();
var a = new vz.Ajax(this.a, this.innerContent);
var b = this;
a.onLoad = function () {
if (vz.expanders[b.key]) b.contentLoaded()
};
a.onError = function () {
location.href = vz.getSrc(this.a)
};
a.run()
} else if (this.objectType == 'iframe' && this.objectLoadTime == 'before') {
this.writeExtendedContent()
} else this.contentLoaded()
},
contentLoaded: function () {
try {
if (!this.content) return;
this.content.onload = null;
if (this.onLoadStarted) return;
else this.onLoadStarted = true;
if (this.loading) {
vz.setStyles(this.loading, {
left: '-9999px',
top: '-9999px'
});
this.loading = null;
this.a.style.cursor = this.originalCursor || ''
}
this.marginBottom = vz.marginBottom;
if (this.isImage) {
this.newWidth = this.content.width;
this.newHeight = this.content.height;
this.fullExpandWidth = this.newWidth;
this.fullExpandHeight = this.newHeight;
this.content.style.width = this.thumbWidth + 'px';
this.content.style.height = this.thumbHeight + 'px';
this.getCaption()
} else if (this.htmlGetSize) this.htmlGetSize();
this.wrapper.appendChild(this.content);
this.content.style.position = 'relative';
if (this.caption) this.wrapper.appendChild(this.caption);
this.wrapper.style.left = this.thumbLeft + 'px';
this.wrapper.style.top = this.thumbTop + 'px';
vz.container.appendChild(this.wrapper);
this.offsetBorderW = (this.content.offsetWidth - this.thumbWidth) / 2;
this.offsetBorderH = (this.content.offsetHeight - this.thumbHeight) / 2;
var a = vz.marginRight + 2 * this.offsetBorderW;
this.marginBottom += 2 * this.offsetBorderH;
var b = this.newWidth / this.newHeight;
var c = this.allowSizeReduction ? this.minWidth : this.newWidth;
var d = this.allowSizeReduction ? this.minHeight : this.newHeight;
var f = {
x: 'auto',
y: 'auto'
};
var g = vz.getPageSize();
this.x = {
min: parseInt(this.thumbLeft) - this.offsetBorderW + this.thumbOffsetBorderW,
span: this.newWidth,
minSpan: (this.newWidth < c && !vz.padToMinWidth) ? this.newWidth : c,
marginMin: vz.marginLeft,
marginMax: a,
scroll: g.scrollLeft,
clientSpan: g.width,
thumbSpan: this.thumbWidth
};
var h = this.x.min + parseInt(this.thumbWidth);
this.x = this.justify(this.x);
this.y = {
min: parseInt(this.thumbTop) - this.offsetBorderH + this.thumbOffsetBorderH,
span: this.newHeight,
minSpan: this.newHeight < d ? this.newHeight : d,
marginMin: vz.marginTop,
marginMax: this.marginBottom,
scroll: g.scrollTop,
clientSpan: g.height,
thumbSpan: this.thumbHeight
};
var i = this.y.min + parseInt(this.thumbHeight);
this.y = this.justify(this.y);
if (this.isHtml) this.htmlSizeOperations();
if (this.isImage) this.correctRatio(b);
var x = this.x;
var y = this.y;
this.show()
} catch (e) {
window.location.href = vz.getSrc(this.a)
}
},
setObjContainerSize: function (a, b) {
var c = vz.getElementByClass(a, 'DIV', 'highslide-body');
if (this.objectType == 'iframe') {
if (this.objectWidth) c.style.width = this.objectWidth + 'px';
if (this.objectHeight) c.style.height = this.objectHeight + 'px'
}
if (this.swfObject) {
c.style.width = this.swfObject.attributes.width + 'px';
c.style.height = this.swfObject.attributes.height + 'px'
}
},
writeExtendedContent: function () {
if (this.hasExtendedContent) return;
var a = this;
this.body = vz.getElementByClass(this.innerContent, 'DIV', 'highslide-body');
if (this.objectType == 'iframe') {
this.displayLoading();
this.ruler = vz.clearing.cloneNode(1);
this.body.appendChild(this.ruler);
this.newWidth = this.innerContent.offsetWidth;
if (!this.objectWidth) this.objectWidth = this.ruler.offsetWidth;
var b = this.innerContent.offsetHeight - this.body.offsetHeight;
var h = this.objectHeight || (vz.getPageSize()).height - b - vz.marginTop - vz.marginBottom;
var c = vz.ie6SSL ? ' src="blank.htm" ' : '';
var d = vz.ie ? '<iframe name="vzIframe' + this.key + '" ' + c + '/>' : 'iframe';
this.iframe = vz.createElement(d, {
name: 'vzIframe' + this.key,
frameBorder: 0,
allowTransparency: true,
key: this.key
}, {
width: this.objectWidth + 'px',
height: h + 'px'
}, this.body);
if (this.objectLoadTime == 'before') vz.addEventListener(this.iframe, 'load', function () {
if (vz.expanders[a.key]) vz.expanders[a.key].contentLoaded()
});
if (vz.safari) this.iframe.src = null;
this.iframe.src = vz.getSrc(this.a);
if (this.objectLoadTime == 'after') this.correctIframeSize()
} else if (this.swfObject) {
this.body.id = this.body.id || 'vz-flash-id-' + this.key;
this.swfObject.write(this.body.id)
}
this.hasExtendedContent = true
},
htmlGetSize: function () {
if (this.iframe && !this.objectHeight) {
try {
var a = this.iframe.contentDocument || this.iframe.contentWindow.document;
var b = a.createElement('div');
b.style.clear = 'both';
a.body.appendChild(b);
var h = b.offsetTop;
if (vz.ie) h += parseInt(a.body.currentStyle.marginTop) + parseInt(a.body.currentStyle.marginBottom) - 1;
this.iframe.style.height = this.body.style.height = h + 'px'
} catch (e) {
this.iframe.style.height = '300px'
}
}
this.innerContent.appendChild(vz.clearing);
if (!this.newWidth) this.newWidth = this.innerContent.offsetWidth;
this.newHeight = this.innerContent.offsetHeight;
this.innerContent.removeChild(vz.clearing);
if (vz.ie && this.newHeight > parseInt(this.innerContent.currentStyle.height)) {
this.newHeight = parseInt(this.innerContent.currentStyle.height)
}
vz.setStyles(this.wrapper, {
position: 'absolute',
padding: '0'
});
vz.setStyles(this.content, {
width: this.thumbWidth + 'px',
height: this.thumbHeight + 'px'
})
},
correctIframeSize: function () {
var a = this.innerContent.offsetWidth - this.ruler.offsetWidth;
if (a < 0) a = 0;
var b = this.innerContent.offsetHeight - this.body.offsetHeight;
vz.setStyles(this.iframe, {
width: (this.x.span - a) + 'px',
height: (this.y.span - b) + 'px'
});
vz.setStyles(this.body, {
width: this.iframe.style.width,
height: this.iframe.style.height
});
this.scrollingContent = this.iframe;
this.scrollerDiv = this.scrollingContent
},
htmlSizeOperations: function () {
this.setObjContainerSize(this.innerContent);
if (this.swfObject && this.objectLoadTime == 'before') this.writeExtendedContent();
if (this.x.span < this.newWidth && !this.allowWidthReduction) this.x.span = this.newWidth;
if (this.y.span < this.newHeight && !this.allowHeightReduction) this.y.span = this.newHeight;
this.scrollerDiv = this.innerContent;
vz.setStyles(this.mediumContent, {
width: this.x.span + 'px',
position: 'relative',
left: (this.x.min - this.thumbLeft) + 'px',
top: (this.y.min - this.thumbTop) + 'px'
});
vz.setStyles(this.innerContent, {
border: 'none',
width: 'auto',
height: 'auto'
});
var a = vz.getElementByClass(this.innerContent, 'DIV', 'highslide-body');
if (a && !this.swfObject && this.objectType != 'iframe') {
var b = a;
a = vz.createElement(b.nodeName, null, {
overflow: 'hidden'
}, null, true);
b.parentNode.insertBefore(a, b);
a.appendChild(vz.clearing);
a.appendChild(b);
var c = this.innerContent.offsetWidth - a.offsetWidth;
var d = this.innerContent.offsetHeight - a.offsetHeight;
a.removeChild(vz.clearing);
var e = vz.safari || navigator.vendor == 'KDE' ? 1 : 0;
vz.setStyles(a, {
width: (this.x.span - c - e) + 'px',
height: (this.y.span - d) + 'px',
overflow: 'auto',
position: 'relative'
});
if (e && b.offsetHeight > a.offsetHeight) {
a.style.width = (parseInt(a.style.width) + e) + 'px'
}
this.scrollingContent = a;
this.scrollerDiv = this.scrollingContent
}
if (this.iframe && this.objectLoadTime == 'before') this.correctIframeSize();
if (!this.scrollingContent && this.y.span < this.mediumContent.offsetHeight) this.scrollerDiv = this.content;
if (this.scrollerDiv == this.content && !this.allowWidthReduction && this.objectType != 'iframe') {
this.x.span += 17
}
if (this.scrollerDiv && this.scrollerDiv.offsetHeight > this.scrollerDiv.parentNode.offsetHeight) {
setTimeout("try { vz.expanders[" + this.key + "].scrollerDiv.style.overflow = 'auto'; } catch(e) {}", vz.expandDuration)
}
},
justify: function (p) {
var a, dim = p == this.x ? 'x' : 'y';
var b = false;
var c = true;
p.min = Math.round(p.min - ((p.span - p.thumbSpan) / 2));
if (p.min < p.scroll + p.marginMin) {
p.min = p.scroll + p.marginMin;
b = true
}
if (p.span < p.minSpan) {
p.span = p.minSpan;
c = false
}
if (p.min + p.span > p.scroll + p.clientSpan - p.marginMax) {
if (b && c) {
p.span = p.clientSpan - p.marginMin - p.marginMax
} else if (p.span < p.clientSpan - p.marginMin - p.marginMax) {
p.min = p.scroll + p.clientSpan - p.span - p.marginMin - p.marginMax
} else {
p.min = p.scroll + p.marginMin;
if (c) p.span = p.clientSpan - p.marginMin - p.marginMax
}
}
if (p.span < p.minSpan) {
p.span = p.minSpan;
c = false
}
if (p.min < p.marginMin) {
tmpMin = p.min;
p.min = p.marginMin;
if (c) p.span = p.span - (p.min - tmpMin)
}
return p
},
correctRatio: function (a) {
var x = this.x;
var y = this.y;
var b = false;
if (x.span / y.span > a) {
var c = x.span;
x.span = y.span * a;
if (x.span < x.minSpan) {
if (vz.padToMinWidth) x.imgSpan = x.span;
x.span = x.minSpan;
if (!x.imgSpan) y.span = x.span / a
}
b = true
} else if (x.span / y.span < a) {
var d = y.span;
y.span = x.span / a;
b = true
}
if (b) {
x.min = parseInt(this.thumbLeft) - this.offsetBorderW + this.thumbOffsetBorderW;
x.minSpan = x.span;
this.x = this.justify(x);
y.min = parseInt(this.thumbTop) - this.offsetBorderH + this.thumbOffsetBorderH;
y.minSpan = y.span;
this.y = this.justify(y)
}
},
show: function () {
var a = {
x: this.x.min - 20,
y: this.y.min - 20,
w: this.x.span + 40,
h: this.y.span + 40 + this.spaceForCaption
};
vz.hideSelects = (vz.ie && vz.ieVersion() < 7);
if (vz.hideSelects) this.showHideElements('SELECT', 'hidden', a);
vz.hideIframes = ((window.opera && navigator.appVersion < 9) || navigator.vendor == 'KDE' || (vz.ie && vz.ieVersion() < 5.5));
if (vz.hideIframes) this.showHideElements('IFRAME', 'hidden', a);
if (vz.geckoMac) this.showHideElements('*', 'hidden', a);
if (this.x.imgSpan) this.content.style.margin = '0 auto';
this.overlays = [];
this.changeSize(1, {
x: this.thumbLeft + this.thumbOffsetBorderW - this.offsetBorderW,
y: this.thumbTop + this.thumbOffsetBorderH - this.offsetBorderH,
w: this.thumbWidth,
h: this.thumbHeight,
imgW: this.thumbWidth,
o: vz.outlineStartOffset
}, {
x: this.x.min,
y: this.y.min,
w: this.x.span,
h: this.y.span,
imgW: this.x.imgSpan,
o: this.objOutline ? this.objOutline.offset : 0
}, vz.expandDuration, vz.expandSteps)
},
changeSize: function (b, c, d, e, f) {
if (b && this.objOutline && !this.outlineWhileAnimating) this.objOutline.setPosition(this, this.x.min, this.y.min, this.x.span, this.y.span);
else if (!b && this.objOutline) {
if (this.outlineWhileAnimating) this.objOutline.setPosition(this, c.x, c.y, c.w, c.h);
else this.objOutline.destroy((this.isHtml && this.preserveContent))
}
if (!b) {
var n = this.wrapper.childNodes.length;
for (var i = n - 1; i >= 0; i--) {
var g = this.wrapper.childNodes[i];
if (g != this.content) vz.discardElement(g)
}
}
if (this.fadeInOut) {
c.op = b ? 0 : 1;
d.op = b
}
var t, exp = this,
easing = Math[this.easing] || Math.easeInQuad;
if (!b) easing = Math[this.easingClose] || easing;
for (var i = 1; i <= f; i++) {
t = Math.round(i * (e / f));
(function () {
var a = i,
size = {};
for (var x in c) {
size[x] = easing(t, c[x], d[x] - c[x], e);
if (/[xywh]/.test(x)) size[x] = Math.round(size[x])
}
setTimeout(function () {
if (b && a == 1) {
exp.content.style.visibility = 'visible';
exp.a.className += ' highslide-active-anchor'
}
exp.setSize(size)
}, t)
})()
}
if (b) {
setTimeout(function () {
if (exp.objOutline) exp.objOutline.table.style.visibility = "visible"
}, t);
setTimeout(function () {
if (exp.caption) exp.writeCaption();
exp.afterExpand()
}, t + 50)
} else setTimeout(function () {
exp.afterClose()
}, t)
},
setSize: function (a) {
try {
if (this.isHtml) {
vz.setStyles(this.content, {
width: a.w + 'px',
height: a.h + 'px'
});
vz.setStyles(this.mediumContent, {
left: (this.x.min - a.x) + 'px',
top: (this.y.min - a.y) + 'px'
});
this.innerContent.style.visibility = 'visible'
} else {
this.wrapper.style.width = (a.w + 2 * this.offsetBorderW) + 'px';
this.content.style.width = ((a.imgW && !isNaN(a.imgW)) ? a.imgW : a.w) + 'px';
if (vz.safari) this.content.style.maxWidth = this.content.style.width;
this.content.style.height = a.h + 'px'
}
if (a.op) vz.setStyles(this.wrapper, {
opacity: a.op
});
if (this.objOutline && this.outlineWhileAnimating) {
var o = this.objOutline.offset - a.o;
this.objOutline.setPosition(this, a.x + o, a.y + o, a.w - 2 * o, a.h - 2 * o, 1)
}
vz.setStyles(this.wrapper, {
'visibility': 'visible',
'left': a.x + 'px',
'top': a.y + 'px'
})
} catch (e) {
window.location.href = vz.getSrc(this.a)
}
},
afterExpand: function () {
this.isExpanded = true;
this.focus();
if (this.isHtml && this.objectLoadTime == 'after') this.writeExtendedContent();
if (this.isHtml) {
if (this.iframe) {
try {
var a = this,
doc = this.iframe.contentDocument || this.iframe.contentWindow.document;
vz.addEventListener(doc, 'mousedown', function () {
if (vz.focusKey != a.key) a.focus()
})
} catch (e) {}
if (vz.ie && typeof this.isClosing != 'boolean') this.iframe.style.width = (this.objectWidth - 1) + 'px'
}
}
this.createOverlays();
if (vz.showCredits) this.writeCredits();
if (this.isImage && this.fullExpandWidth > this.x.span) this.createFullExpand();
if (!this.caption) this.prepareNextOutline()
},
prepareNextOutline: function () {
var a = this.key;
var b = this.outlineType;
new vz.Outline(b, function () {
try {
vz.expanders[a].preloadNext()
} catch (e) {}
})
},
preloadNext: function () {
var a = vz.getAdjacentAnchor(this.key, 1);
if (a.onclick.toString().match(/vz\.expand/)) var b = vz.createElement('img', {
src: vz.getSrc(a)
})
},
cancelLoading: function () {
vz.expanders[this.key] = null;
this.a.style.cursor = this.originalCursor;
if (this.loading) vz.loading.style.left = '-9999px'
},
writeCredits: function () {
this.credits = vz.createElement('a', {
href: vz.creditsHref,
className: 'highslide-credits',
innerHTML: vz.creditsText,
title: vz.creditsTitle
});
this.createOverlay({
overlayId: this.credits,
position: 'top left'
})
},
getCaption: function () {
if (!this.captionId && this.thumbsUserSetId) this.captionId = 'caption-for-' + this.thumbsUserSetId;
if (this.captionId) this.caption = vz.getNode(this.captionId);
if (!this.caption && !this.captionText && this.captionEval) try {
this.captionText = eval(this.captionEval)
} catch (e) {}
if (!this.caption && this.captionText) this.caption = vz.createElement('div', {
className: 'highslide-caption',
innerHTML: this.captionText
});
if (!this.caption) {
var a = this.a.nextSibling;
while (a && !vz.isvzAnchor(a)) {
if (/highslide-caption/.test(a.className || null)) {
this.caption = a.cloneNode(1);
break
}
a = a.nextSibling
}
}
if (this.caption) {
this.marginBottom += this.spaceForCaption
}
},
writeCaption: function () {
try {
vz.setStyles(this.wrapper, {
width: this.wrapper.offsetWidth + 'px',
height: this.wrapper.offsetHeight + 'px'
});
vz.setStyles(this.caption, {
visibility: 'hidden',
marginTop: vz.safari ? 0 : '-' + this.y.span + 'px'
});
this.caption.className += ' highslide-display-block';
var b, exp = this;
if (vz.ie && (vz.ieVersion() < 6 || document.compatMode == 'BackCompat')) {
b = this.caption.offsetHeight
} else {
var c = vz.createElement('div', {
innerHTML: this.caption.innerHTML
}, null, null, true);
this.caption.innerHTML = '';
this.caption.appendChild(c);
b = this.caption.childNodes[0].offsetHeight;
this.caption.innerHTML = this.caption.childNodes[0].innerHTML
}
vz.setStyles(this.caption, {
overflow: 'hidden',
height: 0,
zIndex: 2,
marginTop: 0
});
this.wrapper.style.height = 'auto';
if (vz.captionSlideSpeed) {
var d = (Math.round(b / 50) || 1) * vz.captionSlideSpeed
} else {
this.placeCaption(b, 1);
return
}
for (var h = b % d, t = 0; h <= b; h += d, t += 10) {
(function () {
var a = h,
end = (h == b) ? 1 : 0;
setTimeout(function () {
exp.placeCaption(a, end)
}, t)
})()
}
} catch (e) {}
},
placeCaption: function (a, b) {
if (!this.caption) return;
this.caption.style.height = a + 'px';
this.caption.style.visibility = 'visible';
this.y.span = this.wrapper.offsetHeight - 2 * this.offsetBorderH;
var o = this.objOutline;
if (o) {
var h = this.wrapper.offsetHeight - 2 * this.objOutline.offset;
if (h >= 0) o.td[4].style.height = h + 'px';
if (o.hasAlphaImageLoader) o.td[3].style.height = o.td[5].style.height = o.td[4].style.height
}
if (b) this.prepareNextOutline()
},
showHideElements: function (a, b, c) {
var d = document.getElementsByTagName(a);
var e = a == '*' ? 'overflow' : 'visibility';
for (var i = 0; i < d.length; i++) {
if (e == 'visibility' || (document.defaultView.getComputedStyle(d[i], "").getPropertyValue('overflow') == 'auto' || d[i].getAttribute('hidden-by') != null)) {
var f = d[i].getAttribute('hidden-by');
if (b == 'visible' && f) {
f = f.replace('[' + this.key + ']', '');
d[i].setAttribute('hidden-by', f);
if (!f) d[i].style[e] = d[i].origProp
} else if (b == 'hidden') {
var g = vz.position(d[i]);
g.w = d[i].offsetWidth;
g.h = d[i].offsetHeight;
var h = (g.x + g.w < c.x || g.x > c.x + c.w);
var j = (g.y + g.h < c.y || g.y > c.y + c.h);
var k = vz.getWrapperKey(d[i]);
if (!h && !j && k != this.key) {
if (!f) {
d[i].setAttribute('hidden-by', '[' + this.key + ']');
d[i].origProp = d[i].style[e];
d[i].style[e] = 'hidden'
} else if (!f.match('[' + this.key + ']')) {
d[i].setAttribute('hidden-by', f + '[' + this.key + ']')
}
} else if (f == '[' + this.key + ']' || vz.focusKey == k) {
d[i].setAttribute('hidden-by', '');
d[i].style[e] = d[i].origProp || ''
} else if (f && f.match('[' + this.key + ']')) {
d[i].setAttribute('hidden-by', f.replace('[' + this.key + ']', ''))
}
}
}
}
},
focus: function () {
this.wrapper.style.zIndex = vz.zIndexCounter++;
for (var i = 0; i < vz.expanders.length; i++) {
if (vz.expanders[i] && i == vz.focusKey) {
var a = vz.expanders[i];
a.content.className += ' highslide-' + a.contentType + '-blur';
if (a.caption) {
a.caption.className += ' highslide-caption-blur'
}
if (a.isImage) {
a.content.style.cursor = vz.ie ? 'hand' : 'pointer';
a.content.title = vz.focusTitle
}
}
}
if (this.objOutline) this.objOutline.table.style.zIndex = this.wrapper.style.zIndex;
this.content.className = 'highslide-' + this.contentType;
if (this.caption) {
this.caption.className = this.caption.className.replace(' highslide-caption-blur', '')
}
if (this.isImage) {
this.content.title = vz.restoreTitle;
vz.styleRestoreCursor = window.opera ? 'pointer' : 'url(' + vz.graphicsDir + vz.restoreCursor + '), pointer';
if (vz.ie && vz.ieVersion() < 6) vz.styleRestoreCursor = 'hand';
this.content.style.cursor = vz.styleRestoreCursor
}
vz.focusKey = this.key;
vz.addEventListener(document, 'keydown', vz.keyHandler)
},
move: function (e) {
this.x.min = e.left + e.dX;
this.y.min = e.top + e.dY;
if (e.type == 'image') this.content.style.cursor = 'move';
vz.setStyles(this.wrapper, {
left: this.x.min + 'px',
top: this.y.min + 'px'
});
if (this.objOutline) this.objOutline.setPosition(this, this.x.min, this.y.min, this.x.span, this.y.span)
},
resize: function (e) {
this.x.span = e.width + e.dX;
this.y.span = e.height + e.dY;
if (this.x.span < this.minWidth) this.x.span = this.minWidth;
if (this.y.span < this.minHeight) this.y.span = this.minHeight;
var d = this.scrollerDiv;
if (typeof this.wDiff == 'undefined') {
this.wDiff = this.innerContent.offsetWidth - d.offsetWidth;
this.hDiff = this.innerContent.offsetHeight - d.offsetHeight
}
vz.setStyles(d, {
width: (this.x.span - this.wDiff) + 'px',
height: (this.y.span - this.hDiff) + 'px'
});
var a = {
width: this.x.span + 'px',
height: this.y.span + 'px'
};
vz.setStyles(this.content, a);
if (this.releaseMask) vz.setStyles(this.releaseMask, a);
this.mediumContent.style.width = 'auto';
vz.setStyles(this.body, {
width: 'auto',
height: 'auto'
});
for (var i = 0; i < this.overlays.length; i++) {
this.positionOverlay(vz.$('vzId' + this.overlays[i]))
}
if (this.objOutline) this.objOutline.setPosition(this, this.x.min, this.y.min, this.x.span, this.y.span)
},
close: function () {
if (this.isClosing || !this.isExpanded) return;
this.isClosing = true;
vz.removeEventListener(document, 'keydown', vz.keyHandler);
try {
if (this.isHtml) this.htmlPrepareClose();
this.content.style.cursor = 'default';
this.changeSize(0, {
x: this.x.min,
y: this.y.min,
w: this.x.span,
h: parseInt(this.content.style.height),
imgW: this.x.imgSpan,
o: this.objOutline ? this.objOutline.offset : 0
}, {
x: this.thumbLeft - this.offsetBorderW + this.thumbOffsetBorderW,
y: this.thumbTop - this.offsetBorderH + this.thumbOffsetBorderH,
w: this.thumbWidth,
h: this.thumbHeight,
imgW: this.thumbWidth,
o: vz.outlineStartOffset
}, vz.restoreDuration, vz.restoreSteps)
} catch (e) {
this.afterClose()
}
},
htmlPrepareClose: function () {
if (vz.geckoMac) {
if (!vz.mask) vz.mask = vz.createElement('div', null, {
position: 'absolute'
}, vz.container);
vz.setStyles(vz.mask, {
width: this.x.span + 'px',
height: this.y.span + 'px',
left: this.x.min + 'px',
top: this.y.min + 'px',
display: 'block'
})
}
if (this.swfObject) try {
vz.$(this.swfObject.getAttribute('id')).StopPlay()
} catch (e) {}
if (this.objectLoadTime == 'after' && !this.preserveContent) this.destroyObject();
if (this.scrollerDiv && this.scrollerDiv != this.scrollingContent) this.scrollerDiv.style.overflow = 'hidden'
},
destroyObject: function () {
if (vz.ie && this.iframe) try {
this.iframe.contentWindow.document.body.innerHTML = ''
} catch (e) {}
this.body.innerHTML = ''
},
sleep: function () {
if (this.objOutline) this.objOutline.table.className = 'highslide-display-none';
this.releaseMask = null;
this.wrapper.className += ' highslide-display-none';
vz.push(vz.sleeping, this)
},
awake: function () {
vz.expanders[this.key] = this;
if (!vz.allowMultipleInstances && vz.focusKey != this.key) {
try {
vz.expanders[vz.focusKey].close()
} catch (e) {}
}
this.wrapper.className = this.wrapper.className.replace(/highslide-display-none/, '');
var z = vz.zIndexCounter++;
this.wrapper.style.zIndex = z;
this.isClosing = false;
var o = this.objOutline || 0;
if (o) {
if (!this.outlineWhileAnimating) o.table.style.visibility = 'hidden';
o.table.className = null;
o.table.style.zIndex = z
}
this.show()
},
createOverlay: function (o) {
var a = o.overlayId;
if (typeof a == 'string') a = vz.getNode(a);
if (!a || typeof a == 'string') return;
var b = vz.createElement('div', {
id: 'vzId' + vz.idCounter++
}, {
'left': 0,
'top': 0,
'position': 'absolute',
'zIndex': 3,
'visibility': 'hidden'
}, this.wrapper, true);
if (o.opacity) vz.setStyles(a, {
opacity: o.opacity
});
a.style.styleFloat = 'none';
a.className += ' highslide-display-block';
b.appendChild(a);
b.vzPos = o.position;
this.positionOverlay(b);
if (o.hideOnMouseOut) b.setAttribute('hideOnMouseOut', true);
if (!o.opacity) o.opacity = 1;
b.setAttribute('opacity', o.opacity);
vz.fade(b, 0, o.opacity);
vz.push(this.overlays, vz.idCounter - 1)
},
positionOverlay: function (a, b) {
var c = this.offsetBorderW,
dLeft = this.x.span - a.offsetWidth,
top = this.offsetBorderH,
dTop = (b || parseInt(this.content.style.height)) - a.offsetHeight,
p = a.vzPos || 'center center';
if (/^bottom/.test(p)) top += dTop;
if (/^center/.test(p)) top += dTop / 2;
if (/right$/.test(p)) c += dLeft;
if (/center$/.test(p)) c += dLeft / 2;
a.style.left = c + 'px';
a.style.top = top + 'px'
},
createOverlays: function () {
for (var i = 0; i < vz.overlays.length; i++) {
var o = vz.overlays[i],
tId = o.thumbnailId,
sg = o.slideshowGroup;
if ((!tId && !sg) || tId == this.thumbsUserSetId || sg === this.slideshowGroup) {
if (this.isImage || (this.isHtml && o.useOnHtml)) this.createOverlay(o)
}
}
},
createFullExpand: function () {
this.fullExpandLabel = vz.createElement('a', {
href: 'javascript:vz.expanders[' + this.key + '].doFullExpand();',
title: vz.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();
this.x.min = parseInt(this.wrapper.style.left) - (this.fullExpandWidth - this.content.width) / 2;
if (this.x.min < vz.marginLeft) this.x.min = vz.marginLeft;
this.wrapper.style.left = this.x.min + 'px';
vz.setStyles(this.content, {
width: this.fullExpandWidth + 'px',
maxWidth: this.fullExpandWidth + 'px',
height: this.fullExpandHeight + 'px'
});
this.x.span = this.fullExpandWidth;
this.wrapper.style.width = (this.x.span + 2 * this.offsetBorderW) + 'px';
this.y.span = this.wrapper.offsetHeight - 2 * this.offsetBorderH;
if (this.objOutline) this.objOutline.setPosition(this, this.x.min, this.y.min, this.x.span, this.y.span);
for (var i = 0; i < this.overlays.length; i++) this.positionOverlay(vz.$('vzId' + this.overlays[i]));
this.redoShowHide()
} catch (e) {
window.location.href = this.content.src
}
},
redoShowHide: function () {
var a = {
x: parseInt(this.wrapper.style.left) - 20,
y: parseInt(this.wrapper.style.top) - 20,
w: this.content.offsetWidth + 40,
h: this.content.offsetHeight + 40 + this.spaceForCaption
};
if (vz.hideSelects) this.showHideElements('SELECT', 'hidden', a);
if (vz.hideIframes) this.showHideElements('IFRAME', 'hidden', a);
if (vz.geckoMac) this.showHideElements('*', 'hidden', a)
},
afterClose: function () {
this.a.className = this.a.className.replace('highslide-active-anchor', '');
if (vz.hideSelects) this.showHideElements('SELECT', 'visible');
if (vz.hideIframes) this.showHideElements('IFRAME', 'visible');
if (vz.geckoMac) this.showHideElements('*', 'visible');
if (this.isHtml && this.preserveContent) this.sleep();
else {
if (this.objOutline && this.outlineWhileAnimating) this.objOutline.destroy();
vz.discardElement(this.wrapper)
}
if (vz.mask) vz.mask.style.display = 'none';
vz.expanders[this.key] = null;
vz.reOrder()
}
};
vz.Ajax = function (a, b, c) {
this.a = a;
this.content = b;
this.pre = c
};
vz.Ajax.prototype = {
run: function () {
this.src = vz.getSrc(this.a);
if (this.src.match('#')) {
var a = this.src.split('#');
this.src = a[0];
this.id = a[1]
}
if (vz.cachedGets[this.src]) {
this.cachedGet = vz.cachedGets[this.src];
if (this.id) this.getElementContent();
else this.loadHTML();
return
}
try {
this.xmlHttp = new XMLHttpRequest()
} catch (e) {
try {
this.xmlHttp = new ActiveXObject("Msxml2.XMLHTTP")
} catch (e) {
try {
this.xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
} catch (e) {
this.onError()
}
}
}
var b = this;
this.xmlHttp.onreadystatechange = function () {
if (b.xmlHttp.readyState == 4) {
if (b.id) b.getElementContent();
else b.loadHTML()
}
};
this.xmlHttp.open("GET", this.src, true);
this.xmlHttp.send(null)
},
getElementContent: function () {
vz.genContainer();
var a = window.opera || vz.ie6SSL ? {
src: 'blank.htm'
} : null;
this.iframe = vz.createElement('iframe', a, {
position: 'absolute',
left: '-9999px'
}, vz.container);
try {
this.loadHTML()
} catch (e) {
var b = this;
setTimeout(function () {
b.loadHTML()
}, 1)
}
},
loadHTML: function () {
var s = this.cachedGet || this.xmlHttp.responseText;
if (this.pre) vz.cachedGets[this.src] = s;
if (!vz.ie || vz.ieVersion() >= 5.5) {
s = s.replace(/\s/g, ' ');
s = s.replace(new RegExp('<link[^>]*>', 'gi'), '');
s = s.replace(new RegExp('<script[^>]*>.*?</script>', 'gi'), '');
if (this.iframe) {
var a = this.iframe.contentDocument || this.iframe.contentWindow.document;
a.open();
a.write(s);
a.close();
try {
s = a.getElementById(this.id).innerHTML
} catch (e) {
try {
s = this.iframe.document.getElementById(this.id).innerHTML
} catch (e) {}
}
vz.container.removeChild(this.iframe)
} else {
s = s.replace(new RegExp('^.*?<body[^>]*>(.*?)</body>.*?$', 'i'), '$1')
}
}
vz.getElementByClass(this.content, 'DIV', 'highslide-body').innerHTML = s;
this.onLoad();
for (var x in this) this[x] = null
}
};
var vzExpander = vz.Expander;
vz.addEventListener(document, 'mousedown', vz.mouseClickHandler);
vz.addEventListener(document, 'mouseup', vz.mouseClickHandler);
vz.addEventListener(window, 'load', vz.preloadImages);
vz.addEventListener(window, 'load', vz.preloadAjax);