/** 
 * Name:    Highslide JS
 * Version: 4.1.9 (2010-07-05)
 * Author:  Torstein Hønsi
 * Support: www.highslide.com/support
 * License: www.highslide.com/#license
 */
if (!hs) { var hs = {
// Language strings
lang : {
	cssDirection: 'ltr',
	loadingText: 'Загружается...',
	loadingTitle: 'Нажмите для отмены',
	focusTitle: 'Нажмите чтобы поместить на передний план',
	fullExpandTitle: 'Развернуть до оригинального размера',
	creditsText: 'CookMan.ru',
	creditsTitle: 'Перейти на домашнюю страницу CookMan.ru',
	previousText: 'Предыдущее',
	nextText: 'Следующее',
	moveText: 'Переместить',
	closeText: 'x',
	closeTitle: 'Закрыть (esc)',
	resizeTitle: 'Изменить размер',
	playText: 'Слайдшоу',
	playTitle: 'Начать слайдшоу (пробел)',
	pauseText: 'Пауза',
	pauseTitle: 'Приостановить слайдшоу (пробел)',
	previousTitle: 'Предыдущее (стрелка влево)',
	nextTitle: 'Следующее (стрелка вправо)',
	moveTitle: 'Переместить',
	fullExpandText: 'Оригинальный размер',
	number: 'Изображение %1 из %2',
	restoreTitle: 'Нажмите чтобы закрыть изображение, нажмите и перетащите для изменения местоположения. Для просмотра изображений используйте стрелки.',
	productLinkRecipesText: 'Рецепты с этим ингредиентом',
	productLinkDetailText: 'Подробное описание',
	productContentLinkDetailText: 'Читать далее >',
	badFlashPlayerText: 'Вам необходимо обновить Flash Player'
},
// See http://highslide.com/ref for examples of settings  
graphicsDir : '/img/highslide/',
expandCursor : 'zoomin.cur', // null disables
restoreCursor : 'zoomout.cur', // null disables
expandDuration : 0, // milliseconds
restoreDuration : 0,
marginLeft : 15,
marginRight : 15,
marginTop : 15,
marginBottom : 15,
zIndexCounter : 1001, // adjust to other absolutely positioned elements
loadingOpacity : 0.75,
allowMultipleInstances: true,
numberOfImagesToPreload : 5,
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 : false, // you can set this to false if you want
creditsHref : 'http://www.cookman.ru/',
creditsTarget : '_self',
enableKeyListener : true,
openerTagNames : ['a', 'area'], // Add more to allow slideshow indexing
transitions: ['fade'],
transitionDuration: 250,
dimmingOpacity: 0.5, // Lightbox style dimming background
dimmingDuration: 50, // 0 for instant dimming

allowWidthReduction : false,
allowHeightReduction : true,
preserveContent : true, // Preserve changes made to the content and position of HTML popups.
objectLoadTime : 'before', // Load iframes 'before' or 'after' expansion.
cacheAjax : true, // Cache ajax popups for instant display. Can be overridden for each popup.
anchor : 'auto', // where the image expands from
align : 'center', // position in the client (overrides anchor)
targetX: null, // the id of a target element
targetY: null,
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 : 'rounded-white', // set null to disable outlines
skin : {
	controls:
		'<div class="highslide-controls"><ul>'+
			'<li class="highslide-previous">'+
				'<a href="#" title="{hs.lang.previousTitle}">'+
				'<span>{hs.lang.previousText}</span></a>'+
			'</li>'+
			'<li class="highslide-play">'+
				'<a href="#" title="{hs.lang.playTitle}">'+
				'<span>{hs.lang.playText}</span></a>'+
			'</li>'+
			'<li class="highslide-pause">'+
				'<a href="#" title="{hs.lang.pauseTitle}">'+
				'<span>{hs.lang.pauseText}</span></a>'+
			'</li>'+
			'<li class="highslide-next">'+
				'<a href="#" title="{hs.lang.nextTitle}">'+
				'<span>{hs.lang.nextText}</span></a>'+
			'</li>'+
			'<li class="highslide-move">'+
				'<a href="#" title="{hs.lang.moveTitle}">'+
				'<span>{hs.lang.moveText}</span></a>'+
			'</li>'+
			'<li class="highslide-full-expand">'+
				'<a href="#" title="{hs.lang.fullExpandTitle}">'+
				'<span>{hs.lang.fullExpandText}</span></a>'+
			'</li>'+
			'<li class="highslide-close">'+
				'<a href="#" title="{hs.lang.closeTitle}" >'+
				'<span>{hs.lang.closeText}</span></a>'+
			'</li>'+
		'</ul></div>'
	,
	contentWrapper:
		'<div class="highslide-header"></div>'+
		'<div class="highslide-body"></div>'+
		'<div class="highslide-footer"></div>'
},
headingCloseHTML: '<a href="#" title="Закрыть (esc)" onclick="return hs.close(this)">[<b>x</b>]</a>',
// END OF YOUR SETTINGS


// declare internal properties
preloadTheseImages: [],
continuePreloading: true,
expanders: [],
overrides: ["allowSizeReduction", "useBox", 'anchor', 'align', 'targetX', 'targetY', "outlineType", "outlineWhileAnimating", "captionId", "captionText", "captionEval", "captionOverlay", "headingId", "headingText", "headingClose", "productLinkDetail", "productLinkRecipes", "headingEval", "headingOverlay", "creditsPosition", "dragByHeading", 'autoplay', 'numberPosition', 'transitions', 'dimmingOpacity', "width", "height", "contentId", "allowWidthReduction", "allowHeightReduction", "preserveContent", "maincontentId", "maincontentText", "maincontentEval", "objectType", "cacheAjax", "objectWidth", "objectHeight", "objectLoadTime", "swfOptions", "wrapperClassName", "minWidth", "minHeight", "maxWidth", "maxHeight", "pageOrigin", "slideshowGroup", "easing", "easingClose", "fadeInOut", "src"],
overlays: [],
idCounter: 0,
oPos: {
    x: ["leftpanel", "left", "center", "right", "rightpanel"],
    y: ["above", "top", "middle", "bottom", "below"]
},
mouse: {},
headingOverlay: {},
captionOverlay: {},
swfOptions: {
    flashvars: {},
    params: {},
    attributes: {}
},
timers: [],
slideshows: [],
pendingOutlines: {},
sleeping: [],
preloadTheseAjax: [],
cacheBindings: [],
cachedGets: {},
clones: {},
onReady: [],
uaVersion: /Trident\/4\.0/.test(navigator.userAgent) ? 8 : parseFloat((navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [0, "0"])[1]),
ie: (document.all && !window.opera),
safari: /Safari/.test(navigator.userAgent),
geckoMac: /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),
$: function (a) {
    if (a) {
        return document.getElementById(a)
    }
},
push: function (a, b) {
    a[a.length] = b
},
createElement: function (a, f, e, d, c) {
    var b = document.createElement(a);
    if (f) {
        hs.extend(b, f)
    }
    if (c) {
        hs.setStyles(b, {
            padding: 0,
            border: "none",
            margin: 0
        })
    }
    if (e) {
        hs.setStyles(b, e)
    }
    if (d) {
        d.appendChild(b)
    }
    return b
},
extend: function (b, c) {
    for (var a in c) {
        b[a] = c[a]
    }
    return b
},
setStyles: function (b, c) {
    for (var a in c) {
        if (hs.ie && a == "opacity") {
            if (c[a] > 0.99) {
                b.style.removeAttribute("filter")
            } else {
                b.style.filter = "alpha(opacity=" + (c[a] * 100) + ")"
            }
        } else {
            b.style[a] = c[a]
        }
    }
},
animate: function (f, a, d) {
    var c, g, j;
    if (typeof d != "object" || d === null) {
        var i = arguments;
        d = {
            duration: i[2],
            easing: i[3],
            complete: i[4]
        }
    }
    if (typeof d.duration != "number") {
        d.duration = 250
    }
    d.easing = Math[d.easing] || Math.easeInQuad;
    d.curAnim = hs.extend({}, a);
    for (var b in a) {
        var h = new hs.fx(f, d, b);
        c = parseFloat(hs.css(f, b)) || 0;
        g = parseFloat(a[b]);
        j = b != "opacity" ? "px" : "";
        h.custom(c, g, j)
    }
},
css: function (a, c) {
    if (a.style[c]) {
        return a.style[c]
    } else {
        if (document.defaultView) {
            return document.defaultView.getComputedStyle(a, null).getPropertyValue(c)
        } else {
            if (c == "opacity") {
                c = "filter"
            }
            var b = a.currentStyle[c.replace(/\-(\w)/g, function (e, d) {
                return d.toUpperCase()
            })];
            if (c == "filter") {
                b = b.replace(/alpha\(opacity=([0-9]+)\)/, function (e, d) {
                    return d / 100
                })
            }
            return b === "" ? 1 : b
        }
    }
},
getPageSize: function () {
    var f = document,
        b = window,
        e = f.compatMode && f.compatMode != "BackCompat" ? f.documentElement : f.body;
    var c = hs.ie ? e.clientWidth : (f.documentElement.clientWidth || self.innerWidth),
        a = hs.ie ? e.clientHeight : self.innerHeight;
    hs.page = {
        width: c,
        height: a,
        scrollLeft: hs.ie ? e.scrollLeft : pageXOffset,
        scrollTop: hs.ie ? e.scrollTop : pageYOffset
    };
    return hs.page
},
getPosition: function (c) {
    if (/area/i.test(c.tagName)) {
        var e = document.getElementsByTagName("img");
        for (var b = 0; b < e.length; b++) {
            var a = e[b].useMap;
            if (a && a.replace(/^.*?#/, "") == c.parentNode.name) {
                c = e[b];
                break
            }
        }
    }
    var d = {
        x: c.offsetLeft,
        y: c.offsetTop
    };
    while (c.offsetParent) {
        c = c.offsetParent;
        d.x += c.offsetLeft;
        d.y += c.offsetTop;
        if (c != document.body && c != document.documentElement) {
            d.x -= c.scrollLeft;
            d.y -= c.scrollTop
        }
    }
    return d
},
openYouTube: function (opener) {
    if (/(iPhone|iPod|iPad)/.test(navigator.userAgent)) return true;
    else return hs.htmlExpand(opener, {
        headingText: ' ',
        headingClose: true,
        objectType: 'swf',
        objectWidth: 480,
        objectHeight: 385,
        width: 480,
        preserveContent: false,
        swfOptions: {
            params: {
                allowfullscreen: 'true'
            }
        },
        maincontentText: hs.lang.badFlashPlayerText
    });
},
expand: function (b, h, f, d) {
    if (!b) {
        b = hs.createElement("a", null, {
            display: "none"
        }, hs.container)
    }
    if (typeof b.getParams == "function") {
        return h
    }
    if (d == "html") {
        for (var c = 0; c < hs.sleeping.length; c++) {
            if (hs.sleeping[c] && hs.sleeping[c].a == b) {
                hs.sleeping[c].awake();
                hs.sleeping[c] = null;
                return false
            }
        }
        hs.hasHtmlExpanders = true
    }
    try {
		
		// регистрируем ga-событие если есть нужный атрибут
		if ($(b).get(0) && $(b).attr("ga_track") ) {
			var image = $(b).attr("href");
			image = image.replace("http://", "");
			image = image.substr(image.indexOf("/"));
			_gaq_photo_tracker(image);
		}
	
        new hs.Expander(b, h, f, d);
        return false
    } catch (g) {
        return true
    }
},
htmlExpand: function (b, d, c) {
    return hs.expand(b, d, c, "html")
},
getSelfRendered: function () {
    return hs.createElement("div", {
        className: "highslide-html-content",
        innerHTML: hs.replaceLang(hs.skin.contentWrapper)
    })
},
getElementByClass: function (e, c, d) {
    var b = e.getElementsByTagName(c);
    for (var a = 0; a < b.length; a++) {
        if ((new RegExp(d)).test(b[a].className)) {
            return b[a]
        }
    }
    return null
},
replaceLang: function (c) {
    c = c.replace(/\s/g, " ");
    var b = /{hs\.lang\.([^}]+)\}/g,
        d = c.match(b),
        e;
    if (d) {
        for (var a = 0; a < d.length; a++) {
            e = d[a].replace(b, "$1");
            if (typeof hs.lang[e] != "undefined") {
                c = c.replace(d[a], hs.lang[e])
            }
        }
    }
    return c
},
setClickEvents: function () {
    var b = document.getElementsByTagName("a");
    for (var a = 0; a < b.length; a++) {
        var c = hs.isUnobtrusiveAnchor(b[a]);
        if (c && !b[a].hsHasSetClick) {
            (function () {
                var d = c;
                if (hs.fireEvent(hs, "onSetClickEvent", {
                    element: b[a],
                    type: d
                })) {
                    b[a].onclick = (c == "image") ?
                    function () {
                        return hs.expand(this)
                    } : function () {
                        return hs.htmlExpand(this, {
                            objectType: d
                        })
                    }
                }
            })();
            b[a].hsHasSetClick = true
        }
    }
    hs.getAnchors()
},
isUnobtrusiveAnchor: function (a) {
    if (a.rel == "highslide") {
        return "image"
    } else {
        if (a.rel == "highslide-ajax") {
            return "ajax"
        } else {
            if (a.rel == "highslide-iframe") {
                return "iframe"
            } else {
                if (a.rel == "highslide-swf") {
                    return "swf"
                }
            }
        }
    }
},
getCacheBinding: function (b) {
    for (var d = 0; d < hs.cacheBindings.length; d++) {
        if (hs.cacheBindings[d][0] == b) {
            var e = hs.cacheBindings[d][1];
            hs.cacheBindings[d][1] = e.cloneNode(1);
            return e
        }
    }
    return null
},
preloadAjax: function (f) {
    var b = hs.getAnchors();
    for (var d = 0; d < b.htmls.length; d++) {
        var c = b.htmls[d];
        if (hs.getParam(c, "objectType") == "ajax" && hs.getParam(c, "cacheAjax")) {
            hs.push(hs.preloadTheseAjax, c)
        }
    }
    hs.preloadAjaxElement(0)
},
preloadAjaxElement: function (d) {
    if (!hs.preloadTheseAjax[d]) {
        return
    }
    var b = hs.preloadTheseAjax[d];
    var c = hs.getNode(hs.getParam(b, "contentId"));
    if (!c) {
        c = hs.getSelfRendered()
    }
    var e = new hs.Ajax(b, c, 1);
    e.onError = function () {};
    e.onLoad = function () {
        hs.push(hs.cacheBindings, [b, c]);
        hs.preloadAjaxElement(d + 1)
    };
    e.run()
},
focusTopmost: function () {
    var c = 0,
        b = -1,
        a = hs.expanders,
        e, f;
    for (var d = 0; d < a.length; d++) {
        e = a[d];
        if (e) {
            f = e.wrapper.style.zIndex;
            if (f && f > c) {
                c = f;
                b = d
            }
        }
    }
    if (b == -1) {
        hs.focusKey = -1
    } else {
        a[b].focus()
    }
},
getParam: function (b, d) {
    b.getParams = b.onclick;
    var c = b.getParams ? b.getParams() : null;
    b.getParams = null;
    return (c && typeof c[d] != "undefined") ? c[d] : (typeof hs[d] != "undefined" ? hs[d] : null)
},
getSrc: function (b) {
    var c = hs.getParam(b, "src");
    if (c) {
        return c
    }
    return b.href
},
getNode: function (e) {
    var c = hs.$(e),
        d = hs.clones[e],
        b = {};
    if (!c && !d) {
        return null
    }
    if (!d) {
        d = c.cloneNode(true);
        d.id = "";
        hs.clones[e] = d;
        return c
    } else {
        return d.cloneNode(true)
    }
},
discardElement: function (a) {
    if (a) {
        hs.garbageBin.appendChild(a)
    }
    hs.garbageBin.innerHTML = ""
},
dim: function (a) {
    if (!hs.dimmer) {
        hs.dimmer = hs.createElement("div", {
            className: "highslide-dimming highslide-viewport-size",
            owner: "",
            onclick: function () {
                if (hs.fireEvent(hs, "onDimmerClick")) {
                    hs.close()
                }
            }
        }, {
            visibility: "visible",
            opacity: 0
        }, hs.container, true)
    }
    hs.dimmer.style.display = "";
    hs.dimmer.owner += "|" + a.key;
    if (hs.geckoMac && hs.dimmingGeckoFix) {
        hs.setStyles(hs.dimmer, {
            background: "url(" + hs.graphicsDir + "geckodimmer.png)",
            opacity: 1
        })
    } else {
        hs.animate(hs.dimmer, {
            opacity: a.dimmingOpacity
        }, hs.dimmingDuration)
    }
},
undim: function (a) {
    if (!hs.dimmer) {
        return
    }
    if (typeof a != "undefined") {
        hs.dimmer.owner = hs.dimmer.owner.replace("|" + a, "")
    }
    if ((typeof a != "undefined" && hs.dimmer.owner != "") || (hs.upcoming && hs.getParam(hs.upcoming, "dimmingOpacity"))) {
        return
    }
    if (hs.geckoMac && hs.dimmingGeckoFix) {
        hs.dimmer.style.display = "none"
    } else {
        hs.animate(hs.dimmer, {
            opacity: 0
        }, hs.dimmingDuration, null, function () {
            hs.dimmer.style.display = "none"
        })
    }
},
transit: function (a, d) {
    var b = d || hs.getExpander();
    d = b;
    if (hs.upcoming) {
        return false
    } else {
        hs.last = b
    }
    hs.removeEventListener(document, window.opera ? "keypress" : "keydown", hs.keyHandler);
    try {
        hs.upcoming = a;
        a.onclick()
    } catch (c) {
        hs.last = hs.upcoming = null
    }
    try {
        if (!a || d.transitions[1] != "crossfade") {
            d.close()
        }
    } catch (c) {}
    return false
},
previousOrNext: function (a, c) {
    var b = hs.getExpander(a);
    if (b) {
        return hs.transit(b.getAdjacentAnchor(c), b)
    } else {
        return false
    }
},
previous: function (a) {
    return hs.previousOrNext(a, -1)
},
next: function (a) {
    return hs.previousOrNext(a, 1)
},
keyHandler: function (a) {
    if (!a) {
        a = window.event
    }
    if (!a.target) {
        a.target = a.srcElement
    }
    if (typeof a.target.form != "undefined") {
        return true
    }
    if (!hs.fireEvent(hs, "onKeyDown", a)) {
        return true
    }
    var b = hs.getExpander();
    var c = null;
    switch (a.keyCode) {
    case 70:
        if (b) {
            b.doFullExpand()
        }
        return true;
    case 32:
        c = 2;
        break;
    case 34:
    case 39:
    case 40:
        c = 1;
        break;
    case 8:
    case 33:
    case 37:
    case 38:
        c = -1;
        break;
    case 27:
    case 13:
        c = 0
    }
    if (c !== null) {
        hs.removeEventListener(document, window.opera ? "keypress" : "keydown", hs.keyHandler);
        if (!hs.enableKeyListener) {
            return true
        }
        if (a.preventDefault) {
            a.preventDefault()
        } else {
            a.returnValue = false
        }
        if (b) {
            if (c == 0) {
                b.close()
            } else {
                if (c == 2) {
                    if (b.slideshow) {
                        b.slideshow.hitSpace()
                    }
                } else {
                    if (b.slideshow) {
                        b.slideshow.pause()
                    }
                    hs.previousOrNext(b.key, c)
                }
            }
            return false
        }
    }
    return true
},
registerOverlay: function (a) {
    hs.push(hs.overlays, hs.extend(a, {
        hsId: "hsId" + hs.idCounter++
    }))
},
addSlideshow: function (b) {
    var d = b.slideshowGroup;
    if (typeof d == "object") {
        for (var c = 0; c < d.length; c++) {
            var e = {};
            for (var a in b) {
                e[a] = b[a]
            }
            e.slideshowGroup = d[c];
            hs.push(hs.slideshows, e)
        }
    } else {
        hs.push(hs.slideshows, b)
    }
},
getWrapperKey: function (c, b) {
    var e, d = /^highslide-wrapper-([0-9]+)$/;
    e = c;
    while (e.parentNode) {
        if (e.hsKey !== undefined) {
            return e.hsKey
        }
        if (e.id && d.test(e.id)) {
            return e.id.replace(d, "$1")
        }
        e = e.parentNode
    }
    if (!b) {
        e = c;
        while (e.parentNode) {
            if (e.tagName && hs.isHsAnchor(e)) {
                for (var a = 0; a < hs.expanders.length; a++) {
                    var f = hs.expanders[a];
                    if (f && f.a == e) {
                        return a
                    }
                }
            }
            e = e.parentNode
        }
    }
    return null
},
getExpander: function (b, a) {
    if (typeof b == "undefined") {
        return hs.expanders[hs.focusKey] || null
    }
    if (typeof b == "number") {
        return hs.expanders[b] || null
    }
    if (typeof b == "string") {
        b = hs.$(b)
    }
    return hs.expanders[hs.getWrapperKey(b, a)] || null
},
isHsAnchor: function (b) {
    return (b.onclick && b.onclick.toString().replace(/\s/g, " ").match(/hs.(htmlE|e)xpand/))
},
reOrder: function () {
    for (var a = 0; a < hs.expanders.length; a++) {
        if (hs.expanders[a] && hs.expanders[a].isExpanded) {
            hs.focusTopmost()
        }
    }
},
fireEvent: function (c, a, b) {
    return c && c[a] ? (c[a](c, b) !== false) : true
},
mouseClickHandler: function (d) {
    if (!d) {
        d = window.event
    }
    if (d.button > 1) {
        return true
    }
    if (!d.target) {
        d.target = d.srcElement
    }
    var b = d.target;
    while (b.parentNode && !(/highslide-(image|move|html|resize)/.test(b.className))) {
        b = b.parentNode
    }
    var f = hs.getExpander(b);
    if (f && (f.isClosing || !f.isExpanded)) {
        return true
    }
    if (f && d.type == "mousedown") {
        if (d.target.form) {
            return true
        }
        var a = b.className.match(/highslide-(image|move|resize)/);
        if (a) {
            hs.dragArgs = {
                exp: f,
                type: a[1],
                left: f.x.pos,
                width: f.x.size,
                top: f.y.pos,
                height: f.y.size,
                clickX: d.clientX,
                clickY: d.clientY
            };
            hs.addEventListener(document, "mousemove", hs.dragHandler);
            if (d.preventDefault) {
                d.preventDefault()
            }
            if (/highslide-(image|html)-blur/.test(f.content.className)) {
                f.focus();
                hs.hasFocused = true
            }
            return false
        } else {
            if (/highslide-html/.test(b.className) && hs.focusKey != f.key) {
                f.focus();
                f.doShowHide("hidden")
            }
        }
    } else {
        if (d.type == "mouseup") {
            hs.removeEventListener(document, "mousemove", hs.dragHandler);
            if (hs.dragArgs) {
                if (hs.styleRestoreCursor && hs.dragArgs.type == "image") {
                    hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor
                }
                var c = hs.dragArgs.hasDragged;
                if (!c && !hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) {
                    if (hs.fireEvent(f, "onImageClick")) {
                        f.close()
                    }
                } else {
                    if (c || (!c && hs.hasHtmlExpanders)) {
                        hs.dragArgs.exp.doShowHide("hidden")
                    }
                }
                if (hs.dragArgs.exp.releaseMask) {
                    hs.dragArgs.exp.releaseMask.style.display = "none"
                }
                if (c) {
                    hs.fireEvent(hs.dragArgs.exp, "onDrop", hs.dragArgs)
                }
                hs.hasFocused = false;
                hs.dragArgs = null
            } else {
                if (/highslide-image-blur/.test(b.className)) {
                    b.style.cursor = hs.styleRestoreCursor
                }
            }
        }
    }
    return false
},
dragHandler: function (c) {
    if (!hs.dragArgs) {
        return true
    }
    if (!c) {
        c = window.event
    }
    var b = hs.dragArgs,
        d = b.exp;
    if (d.iframe) {
        if (!d.releaseMask) {
            d.releaseMask = hs.createElement("div", null, {
                position: "absolute",
                width: d.x.size + "px",
                height: d.y.size + "px",
                left: d.x.cb + "px",
                top: d.y.cb + "px",
                zIndex: 4,
                background: (hs.ie ? "white" : "none"),
                opacity: 0.01
            }, d.wrapper, true)
        }
        if (d.releaseMask.style.display == "none") {
            d.releaseMask.style.display = ""
        }
    }
    b.dX = c.clientX - b.clickX;
    b.dY = c.clientY - b.clickY;
    var f = Math.sqrt(Math.pow(b.dX, 2) + Math.pow(b.dY, 2));
    if (!b.hasDragged) {
        b.hasDragged = (b.type != "image" && f > 0) || (f > (hs.dragSensitivity || 5))
    }
    if (b.hasDragged && c.clientX > 5 && c.clientY > 5) {
        if (!hs.fireEvent(d, "onDrag", b)) {
            return false
        }
        if (b.type == "resize") {
            d.resize(b)
        } else {
            d.moveTo(b.left + b.dX, b.top + b.dY);
            if (b.type == "image") {
                d.content.style.cursor = "move"
            }
        }
    }
    return false
},
wrapperMouseHandler: function (c) {
    try {
        if (!c) {
            c = window.event
        }
        var b = /mouseover/i.test(c.type);
        if (!c.target) {
            c.target = c.srcElement
        }
        if (hs.ie) {
            c.relatedTarget = b ? c.fromElement : c.toElement
        }
        var d = hs.getExpander(c.target);
        if (!d.isExpanded) {
            return
        }
        if (!d || !c.relatedTarget || hs.getExpander(c.relatedTarget, true) == d || hs.dragArgs) {
            return
        }
        hs.fireEvent(d, b ? "onMouseOver" : "onMouseOut", c);
        for (var a = 0; a < d.overlays.length; a++) {
            (function () {
                var e = hs.$("hsId" + d.overlays[a]);
                if (e && e.hideOnMouseOut) {
                    if (b) {
                        hs.setStyles(e, {
                            visibility: "visible",
                            display: ""
                        })
                    }
                    hs.animate(e, {
                        opacity: b ? e.opacity : 0
                    }, e.dur)
                }
            })()
        }
    } catch (c) {}
},
addEventListener: function (a, c, b) {
    if (a == document && c == "ready") {
        hs.push(hs.onReady, b)
    }
    try {
        a.addEventListener(c, b, false)
    } catch (d) {
        try {
            a.detachEvent("on" + c, b);
            a.attachEvent("on" + c, b)
        } catch (d) {
            a["on" + c] = b
        }
    }
},
removeEventListener: function (a, c, b) {
    try {
        a.removeEventListener(c, b, false)
    } catch (d) {
        try {
            a.detachEvent("on" + c, b)
        } catch (d) {
            a["on" + c] = null
        }
    }
},
preloadFullImage: function (b) {
    if (hs.continuePreloading && hs.preloadTheseImages[b] && hs.preloadTheseImages[b] != "undefined") {
        var a = document.createElement("img");
        a.onload = function () {
            a = null;
            hs.preloadFullImage(b + 1)
        };
        a.src = hs.preloadTheseImages[b]
    }
},
preloadImages: function (c) {
    if (c && typeof c != "object") {
        hs.numberOfImagesToPreload = c
    }
    var a = hs.getAnchors();
    for (var b = 0; b < a.images.length && b < hs.numberOfImagesToPreload; b++) {
        hs.push(hs.preloadTheseImages, hs.getSrc(a.images[b]))
    }
    if (hs.outlineType) {
        new hs.Outline(hs.outlineType, function () {
            hs.preloadFullImage(0)
        })
    } else {
        hs.preloadFullImage(0)
    }
    if (hs.restoreCursor) {
        var d = hs.createElement("img", {
            src: hs.graphicsDir + hs.restoreCursor
        })
    }
},
init: function () {
    if (!hs.container) {
        hs.getPageSize();
        hs.ieLt7 = hs.ie && hs.uaVersion < 7;
        hs.ie6SSL = hs.ieLt7 && location.protocol == "https:";
        for (var a in hs.langDefaults) {
            if (typeof hs[a] != "undefined") {
                hs.lang[a] = hs[a]
            } else {
                if (typeof hs.lang[a] == "undefined" && typeof hs.langDefaults[a] != "undefined") {
                    hs.lang[a] = hs.langDefaults[a]
                }
            }
        }
        hs.container = hs.createElement("div", {
            className: "highslide-container"
        }, {
            position: "absolute",
            left: 0,
            top: 0,
            width: "100%",
            zIndex: hs.zIndexCounter,
            direction: "ltr"
        }, document.body, true);
        hs.loading = hs.createElement("a", {
            className: "highslide-loading",
            title: hs.lang.loadingTitle,
            innerHTML: hs.lang.loadingText,
            href: "javascript:;"
        }, {
            position: "absolute",
            top: "-9999px",
            opacity: hs.loadingOpacity,
            zIndex: 1
        }, hs.container);
        hs.garbageBin = hs.createElement("div", null, {
            display: "none"
        }, hs.container);
        hs.viewport = hs.createElement("div", {
            className: "highslide-viewport highslide-viewport-size"
        }, {
            visibility: (hs.safari && hs.uaVersion < 525) ? "visible" : "hidden"
        }, hs.container, 1);
        hs.clearing = hs.createElement("div", null, {
            clear: "both",
            paddingTop: "1px"
        }, null, true);
        Math.linearTween = function (f, e, h, g) {
            return h * f / g + e
        };
        Math.easeInQuad = function (f, e, h, g) {
            return h * (f /= g) * f + e
        };
        Math.easeOutQuad = function (f, e, h, g) {
            return -h * (f /= g) * (f - 2) + e
        };
        hs.hideSelects = hs.ieLt7;
        hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == "KDE" || (hs.ie && hs.uaVersion < 5.5));
        hs.fireEvent(this, "onActivate")
    }
},
ready: function () {
    if (hs.isReady) {
        return
    }
    hs.isReady = true;
    for (var a = 0; a < hs.onReady.length; a++) {
        hs.onReady[a]()
    }
},
updateAnchors: function () {
    var a, d, l = [],
        h = [],
        k = [],
        b = {},
        m;
    for (var e = 0; e < hs.openerTagNames.length; e++) {
        d = document.getElementsByTagName(hs.openerTagNames[e]);
        for (var c = 0; c < d.length; c++) {
            a = d[c];
            m = hs.isHsAnchor(a);
            if (m) {
                hs.push(l, a);
                if (m[0] == "hs.expand") {
                    hs.push(h, a)
                } else {
                    if (m[0] == "hs.htmlExpand") {
                        hs.push(k, a)
                    }
                }
                var f = hs.getParam(a, "slideshowGroup") || "none";
                if (!b[f]) {
                    b[f] = []
                }
                hs.push(b[f], a)
            }
        }
    }
    hs.anchors = {
        all: l,
        groups: b,
        images: h,
        htmls: k
    };
    return hs.anchors
},
getAnchors: function () {
    return hs.anchors || hs.updateAnchors()
},
close: function (a) {
    var b = hs.getExpander(a);
    if (b) {
        b.close()
    }
    return false
}
};
hs.fx = function (b, a, c) {
    this.options = a;
    this.elem = b;
    this.prop = c;
    if (!a.orig) {
        a.orig = {}
    }
};
hs.fx.prototype = {
    update: function () {
        (hs.fx.step[this.prop] || hs.fx.step._default)(this);
        if (this.options.step) {
            this.options.step.call(this.elem, this.now, this)
        }
    },
    custom: function (e, d, c) {
        this.startTime = (new Date()).getTime();
        this.start = e;
        this.end = d;
        this.unit = c;
        this.now = this.start;
        this.pos = this.state = 0;
        var a = this;

        function b(f) {
            return a.step(f)
        }
        b.elem = this.elem;
        if (b() && hs.timers.push(b) == 1) {
            hs.timerId = setInterval(function () {
                var g = hs.timers;
                for (var f = 0; f < g.length; f++) {
                    if (!g[f]()) {
                        g.splice(f--, 1)
                    }
                }
                if (!g.length) {
                    clearInterval(hs.timerId)
                }
            }, 13)
        }
    },
    step: function (d) {
        var c = (new Date()).getTime();
        if (d || c >= this.options.duration + this.startTime) {
            this.now = this.end;
            this.pos = this.state = 1;
            this.update();
            this.options.curAnim[this.prop] = true;
            var a = true;
            for (var b in this.options.curAnim) {
                if (this.options.curAnim[b] !== true) {
                    a = false
                }
            }
            if (a) {
                if (this.options.complete) {
                    this.options.complete.call(this.elem)
                }
            }
            return false
        } else {
            var e = c - this.startTime;
            this.state = e / this.options.duration;
            this.pos = this.options.easing(e, 0, 1, this.options.duration);
            this.now = this.start + ((this.end - this.start) * this.pos);
            this.update()
        }
        return true
    }
};
hs.extend(hs.fx, {
    step: {
        opacity: function (a) {
            hs.setStyles(a.elem, {
                opacity: a.now
            })
        },
        _default: function (a) {
            try {
                if (a.elem.style && a.elem.style[a.prop] != null) {
                    a.elem.style[a.prop] = a.now + a.unit
                } else {
                    a.elem[a.prop] = a.now
                }
            } catch (b) {}
        }
    }
});
hs.Outline = function (g, e) {
    this.onLoad = e;
    this.outlineType = g;
    var a = hs.uaVersion,
        f;
    this.hasAlphaImageLoader = hs.ie && a >= 5.5 && a < 7;
    if (!g) {
        if (e) {
            e()
        }
        return
    }
    hs.init();
    this.table = hs.createElement("table", {
        cellSpacing: 0
    }, {
        visibility: "hidden",
        position: "absolute",
        borderCollapse: "collapse",
        width: 0
    }, hs.container, true);
    var b = hs.createElement("tbody", null, null, this.table, 1);
    this.td = [];
    for (var c = 0; c <= 8; c++) {
        if (c % 3 == 0) {
            f = hs.createElement("tr", null, {
                height: "auto"
            }, b, true)
        }
        this.td[c] = hs.createElement("td", null, null, f, true);
        var d = c != 4 ? {
            lineHeight: 0,
            fontSize: 0
        } : {
            position: "relative"
        };
        hs.setStyles(this.td[c], d)
    }
    this.td[4].className = g + " highslide-outline";
    this.preloadGraphic()
};
hs.Outline.prototype = {
    preloadGraphic: function () {
        var b = hs.graphicsDir + (hs.outlinesDir || "outlines/") + this.outlineType + ".png";
        var a = hs.safari && hs.uaVersion < 525 ? hs.container : null;
        this.graphic = hs.createElement("img", null, {
            position: "absolute",
            top: "-9999px"
        }, a, true);
        var c = this;
        this.graphic.onload = function () {
            c.onGraphicLoad()
        };
        this.graphic.src = b
    },
    onGraphicLoad: function () {
        var d = this.offset = this.graphic.width / 4,
            f = [
                [0, 0],
                [0, -4],
                [-2, 0],
                [0, -8], 0, [-2, -8],
                [0, -2],
                [0, -6],
                [-2, -2]
            ],
            c = {
                height: (2 * d) + "px",
                width: (2 * d) + "px"
            };
        for (var b = 0; b <= 8; b++) {
            if (f[b]) {
                if (this.hasAlphaImageLoader) {
                    var a = (b == 1 || b == 7) ? "100%" : this.graphic.width + "px";
                    var e = hs.createElement("div", null, {
                        width: "100%",
                        height: "100%",
                        position: "relative",
                        overflow: "hidden"
                    }, this.td[b], true);
                    hs.createElement("div", null, {
                        filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='" + this.graphic.src + "')",
                        position: "absolute",
                        width: a,
                        height: this.graphic.height + "px",
                        left: (f[b][0] * d) + "px",
                        top: (f[b][1] * d) + "px"
                    }, e, true)
                } else {
                    hs.setStyles(this.td[b], {
                        background: "url(" + this.graphic.src + ") " + (f[b][0] * d) + "px " + (f[b][1] * d) + "px"
                    })
                }
                if (window.opera && (b == 3 || b == 5)) {
                    hs.createElement("div", null, c, this.td[b], true)
                }
                hs.setStyles(this.td[b], c)
            }
        }
        this.graphic = null;
        if (hs.pendingOutlines[this.outlineType]) {
            hs.pendingOutlines[this.outlineType].destroy()
        }
        hs.pendingOutlines[this.outlineType] = this;
        if (this.onLoad) {
            this.onLoad()
        }
    },
    setPosition: function (g, e, c, b, f) {
        var d = this.exp,
            a = d.wrapper.style,
            e = e || 0,
            g = g || {
                x: d.x.pos + e,
                y: d.y.pos + e,
                w: d.x.get("wsize") - 2 * e,
                h: d.y.get("wsize") - 2 * e
            };
        if (c) {
            this.table.style.visibility = (g.h >= 4 * this.offset) ? "visible" : "hidden"
        }
        hs.setStyles(this.table, {
            left: (g.x - this.offset) + "px",
            top: (g.y - this.offset) + "px",
            width: (g.w + 2 * this.offset) + "px"
        });
        g.w -= 2 * this.offset;
        g.h -= 2 * this.offset;
        hs.setStyles(this.td[4], {
            width: g.w >= 0 ? g.w + "px" : 0,
            height: g.h >= 0 ? g.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 {
            hs.discardElement(this.table)
        }
    }
};
hs.Dimension = function (b, a) {
    this.exp = b;
    this.dim = a;
    this.ucwh = a == "x" ? "Width" : "Height";
    this.wh = this.ucwh.toLowerCase();
    this.uclt = a == "x" ? "Left" : "Top";
    this.lt = this.uclt.toLowerCase();
    this.ucrb = a == "x" ? "Right" : "Bottom";
    this.rb = this.ucrb.toLowerCase();
    this.p1 = this.p2 = 0
};
hs.Dimension.prototype = {
    get: function (a) {
        switch (a) {
        case "loadingPos":
            return this.tpos + this.tb + (this.t - hs.loading["offset" + this.ucwh]) / 2;
        case "loadingPosXfade":
            return this.pos + this.cb + this.p1 + (this.size - hs.loading["offset" + this.ucwh]) / 2;
        case "wsize":
            return this.size + 2 * this.cb + this.p1 + this.p2;
        case "fitsize":
            return this.clientSize - this.marginMin - this.marginMax;
        case "maxsize":
            return this.get("fitsize") - 2 * this.cb - this.p1 - this.p2;
        case "opos":
            return this.pos - (this.exp.outline ? this.exp.outline.offset : 0);
        case "osize":
            return this.get("wsize") + (this.exp.outline ? 2 * this.exp.outline.offset : 0);
        case "imgPad":
            return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0
        }
    },
    calcBorders: function () {
        this.cb = (this.exp.content["offset" + this.ucwh] - this.t) / 2;
        this.marginMax = hs["margin" + this.ucrb]
    },
    calcThumb: function () {
        this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) : this.exp.el["offset" + this.ucwh];
        this.tpos = this.exp.tpos[this.dim];
        this.tb = (this.exp.el["offset" + this.ucwh] - this.t) / 2;
        if (this.tpos == 0 || this.tpos == -1) {
            this.tpos = (hs.page[this.wh] / 2) + hs.page["scroll" + this.uclt]
        }
    },
    calcExpanded: function () {
        var a = this.exp;
        this.justify = "auto";
        if (a.align == "center") {
            this.justify = "center"
        } else {
            if (new RegExp(this.lt).test(a.anchor)) {
                this.justify = null
            } else {
                if (new RegExp(this.rb).test(a.anchor)) {
                    this.justify = "max"
                }
            }
        }
        this.pos = this.tpos - this.cb + this.tb;
        if (this.maxHeight && this.dim == "x") {
            a.maxWidth = Math.min(a.maxWidth || this.full, a.maxHeight * this.full / a.y.full)
        }
        this.size = Math.min(this.full, a["max" + this.ucwh] || this.full);
        this.minSize = a.allowSizeReduction ? Math.min(a["min" + this.ucwh], this.full) : this.full;
        if (a.isImage && a.useBox) {
            this.size = a[this.wh];
            this.imgSize = this.full
        }
        if (this.dim == "x" && hs.padToMinWidth) {
            this.minSize = a.minWidth
        }
        this.target = a["target" + this.dim.toUpperCase()];
        this.marginMin = hs["margin" + this.uclt];
        this.scroll = hs.page["scroll" + this.uclt];
        this.clientSize = hs.page[this.wh]
    },
    setSize: function (a) {
        var f = this.exp;
        if (f.isImage && (f.useBox || hs.padToMinWidth)) {
            this.imgSize = a;
            this.size = Math.max(this.size, this.imgSize);
            f.content.style[this.lt] = this.get("imgPad") + "px"
        } else {
            this.size = a
        }
        f.content.style[this.wh] = a + "px";
        f.wrapper.style[this.wh] = this.get("wsize") + "px";
        if (f.outline) {
            f.outline.setPosition()
        }
        if (f.releaseMask) {
            f.releaseMask.style[this.wh] = a + "px"
        }
        if (this.dim == "y" && f.iDoc && f.body.style.height != "auto") {
            try {
                f.iDoc.body.style.overflow = "auto"
            } catch (b) {}
        }
        if (f.isHtml) {
            var c = f.scrollerDiv;
            if (this.sizeDiff === undefined) {
                this.sizeDiff = f.innerContent["offset" + this.ucwh] - c["offset" + this.ucwh]
            }
            c.style[this.wh] = (this.size - this.sizeDiff) + "px";
            if (this.dim == "x") {
                f.mediumContent.style.width = "auto"
            }
            if (f.body) {
                f.body.style[this.wh] = "auto"
            }
        }
        if (this.dim == "x" && f.overlayBox) {
            f.sizeOverlayBox(true)
        }
        if (this.dim == "x" && f.slideshow && f.isImage) {
            if (a == this.full) {
                f.slideshow.disable("full-expand")
            } else {
                f.slideshow.enable("full-expand")
            }
        }
    },
    setPos: function (a) {
        this.pos = a;
        this.exp.wrapper.style[this.lt] = a + "px";
        if (this.exp.outline) {
            this.exp.outline.setPosition()
        }
    }
};
hs.Expander = function (k, f, b, l) {
    if (document.readyState && hs.ie && !hs.isReady) {
        hs.addEventListener(document, "ready", function () {
            new hs.Expander(k, f, b, l)
        });
        return
    }
    this.a = k;
    this.custom = b;
    this.contentType = l || "image";
    this.isHtml = (l == "html");
    this.isImage = !this.isHtml;
    hs.continuePreloading = false;
    this.overlays = [];
    this.last = hs.last;
    hs.last = null;
    hs.init();
    var m = this.key = hs.expanders.length;
    for (var g = 0; g < hs.overrides.length; g++) {
        var c = hs.overrides[g];
        this[c] = f && typeof f[c] != "undefined" ? f[c] : hs[c]
    }
    if (!this.src) {
        this.src = k.href
    }
    var d = (f && f.thumbnailId) ? hs.$(f.thumbnailId) : k;
    d = this.thumb = d.getElementsByTagName("img")[0] || d;
    this.thumbsUserSetId = d.id || k.id;
    if (!hs.fireEvent(this, "onInit")) {
        return true
    }
    for (var g = 0; g < hs.expanders.length; g++) {
        if (hs.expanders[g] && hs.expanders[g].a == k && !(this.last && this.transitions[1] == "crossfade")) {
            hs.expanders[g].focus();
            return false
        }
    }
    if (!hs.allowSimultaneousLoading) {
        for (var g = 0; g < hs.expanders.length; g++) {
            if (hs.expanders[g] && hs.expanders[g].thumb != d && !hs.expanders[g].onLoadStarted) {
                hs.expanders[g].cancelLoading()
            }
        }
    }
    hs.expanders[m] = this;
    if (!hs.allowMultipleInstances && !hs.upcoming) {
        if (hs.expanders[m - 1]) {
            hs.expanders[m - 1].close()
        }
        if (typeof hs.focusKey != "undefined" && hs.expanders[hs.focusKey]) {
            hs.expanders[hs.focusKey].close()
        }
    }
    this.el = d;
    this.tpos = this.pageOrigin || hs.getPosition(d);
    hs.getPageSize();
    var j = this.x = new hs.Dimension(this, "x");
    j.calcThumb();
    var h = this.y = new hs.Dimension(this, "y");
    h.calcThumb();
    if (/area/i.test(d.tagName)) {
        this.getImageMapAreaCorrection(d)
    }
    this.wrapper = hs.createElement("div", {
        id: "highslide-wrapper-" + this.key,
        className: "highslide-wrapper " + this.wrapperClassName
    }, {
        visibility: "hidden",
        position: "absolute",
        zIndex: hs.zIndexCounter += 2
    }, null, true);
    this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler;
    if (this.contentType == "image" && this.outlineWhileAnimating == 2) {
        this.outlineWhileAnimating = 0
    }
    if (!this.outlineType || (this.last && this.isImage && this.transitions[1] == "crossfade")) {
        this[this.contentType + "Create"]()
    } else {
        if (hs.pendingOutlines[this.outlineType]) {
            this.connectOutline();
            this[this.contentType + "Create"]()
        } else {
            this.showLoading();
            var e = this;
            new hs.Outline(this.outlineType, function () {
                e.connectOutline();
                e[e.contentType + "Create"]()
            })
        }
    }
    return true
};
hs.Expander.prototype = {
    error: function (a) {
        if (hs.debug) {
            alert("Line " + a.lineNumber + ": " + a.message)
        } else {
            window.location.href = this.src
        }
    },
    connectOutline: function () {
        var a = this.outline = hs.pendingOutlines[this.outlineType];
        a.exp = this;
        a.table.style.zIndex = this.wrapper.style.zIndex - 1;
        hs.pendingOutlines[this.outlineType] = null
    },
    showLoading: function () {
        if (this.onLoadStarted || this.loading) {
            return
        }
        this.loading = hs.loading;
        var c = this;
        this.loading.onclick = function () {
            c.cancelLoading()
        };
        if (!hs.fireEvent(this, "onShowLoading")) {
            return
        }
        var c = this,
            a = this.x.get("loadingPos") + "px",
            b = this.y.get("loadingPos") + "px";
        if (!d && this.last && this.transitions[1] == "crossfade") {
            var d = this.last
        }
        if (d) {
            a = d.x.get("loadingPosXfade") + "px";
            b = d.y.get("loadingPosXfade") + "px";
            this.loading.style.zIndex = hs.zIndexCounter++
        }
        setTimeout(function () {
            if (c.loading) {
                hs.setStyles(c.loading, {
                    left: a,
                    top: b,
                    zIndex: hs.zIndexCounter++
                })
            }
        }, 100)
    },
    imageCreate: function () {
        var b = this;
        var a = document.createElement("img");
        this.content = a;
        a.onload = function () {
            if (hs.expanders[b.key]) {
                b.contentLoaded()
            }
        };
        if (hs.blockRightClick) {
            a.oncontextmenu = function () {
                return false
            }
        }
        a.className = "highslide-image";
        hs.setStyles(a, {
            visibility: "hidden",
            display: "block",
            position: "absolute",
            maxWidth: "9999px",
            zIndex: 3
        });
        a.title = hs.lang.restoreTitle;
        if (hs.safari && hs.uaVersion < 525) {
            hs.container.appendChild(a)
        }
        if (hs.ie && hs.flushImgSize) {
            a.src = null
        }
        a.src = this.src;
        this.showLoading()
    },
    htmlCreate: function () {
        if (!hs.fireEvent(this, "onBeforeGetContent")) {
            return
        }
        this.content = hs.getCacheBinding(this.a);
        if (!this.content) {
            this.content = hs.getNode(this.contentId)
        }
        if (!this.content) {
            this.content = hs.getSelfRendered()
        }
        this.getInline(["maincontent"]);
        if (this.maincontent) {
            var a = hs.getElementByClass(this.content, "div", "highslide-body");
            if (a) {
                a.appendChild(this.maincontent)
            }
            this.maincontent.style.display = "block"
        }
        var footer = hs.getElementByClass(this.content, 'div', 'highslide-footer');
        if (typeof this.productLinkRecipes != 'undefined' || typeof this.productLinkDetail != 'undefined') {
            var newUL = document.createElement('ul');
            newUL.className = 'product-links';
            newUL.innerHTML = '<li><a class="filter-link" href="' + this.productLinkRecipes + '">' + hs.lang.productLinkRecipesText + '</a></li><li><a class="doc-link" href="' + this.productLinkDetail + '">' + hs.lang.productLinkDetailText + '</a></li>';
            if (footer) footer.appendChild(newUL);
        } else if (footer) footer.style.height = "30px";
        hs.fireEvent(this, "onAfterGetContent");
        var d = this.innerContent = this.content;
        if (/(swf|iframe)/.test(this.objectType)) {
            this.setObjContainerSize(d)
        }
        hs.container.appendChild(this.wrapper);
        hs.setStyles(this.wrapper, {
            position: "static",
            padding: "0 " + hs.marginRight + "px 0 " + hs.marginLeft + "px"
        });
        this.content = hs.createElement("div", {
            className: "highslide-html"
        }, {
            position: "relative",
            zIndex: 3,
            height: 0,
            overflow: "hidden"
        }, this.wrapper);
        this.mediumContent = hs.createElement("div", null, null, this.content, 1);
        this.mediumContent.appendChild(d);
        hs.setStyles(d, {
            position: "relative",
            display: "block",
            direction: hs.lang.cssDirection || ""
        });
        if (this.width) {
            d.style.width = this.width + "px"
        }
        if (this.height) {
            hs.setStyles(d, {
                height: this.height + "px",
                overflow: "hidden"
            })
        }
        if (d.offsetWidth < this.minWidth) {
            d.style.width = this.minWidth + "px"
        }
        if (this.objectType == "ajax" && !hs.getCacheBinding(this.a)) {
            this.showLoading();
            var c = this;
            var b = new hs.Ajax(this.a, d);
            b.src = this.src;
            b.onLoad = function () {
                if (hs.expanders[c.key]) {
                    c.contentLoaded()
                }
            };
            b.onError = function () {
                location.href = c.src
            };
            b.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
            }
            var j = this.x,
                g = this.y;
            if (this.loading) {
                hs.setStyles(this.loading, {
                    top: "-9999px"
                });
                this.loading = null;
                hs.fireEvent(this, "onHideLoading")
            }
            if (this.isImage) {
                j.full = this.content.width;
                g.full = this.content.height;
                hs.setStyles(this.content, {
                    width: j.t + "px",
                    height: g.t + "px"
                });
                this.wrapper.appendChild(this.content);
                hs.container.appendChild(this.wrapper)
            } else {
                if (this.htmlGetSize) {
                    this.htmlGetSize()
                }
            }
            j.calcBorders();
            g.calcBorders();
            hs.setStyles(this.wrapper, {
                left: (j.tpos + j.tb - j.cb) + "px",
                top: (g.tpos + j.tb - g.cb) + "px"
            });
            this.initSlideshow();
            this.getOverlays();
            var f = j.full / g.full;
            j.calcExpanded();
            this.justify(j);
            g.calcExpanded();
            this.justify(g);
            if (this.isHtml) {
                this.htmlSizeOperations()
            }
            if (this.overlayBox) {
                this.sizeOverlayBox(0, 1)
            }
            if (this.allowSizeReduction) {
                if (this.isImage) {
                    this.correctRatio(f)
                } else {
                    this.fitOverlayBox()
                }
                var k = this.slideshow;
                if (k && this.last && k.controls && k.fixedControls) {
                    var h = k.overlayOptions.position || "",
                        a;
                    for (var c in hs.oPos) {
                        for (var b = 0; b < 5; b++) {
                            a = this[c];
                            if (h.match(hs.oPos[c][b])) {
                                a.pos = this.last[c].pos + (this.last[c].p1 - a.p1) + (this.last[c].size - a.size) * [0, 0, 0.5, 1, 1][b];
                                if (k.fixedControls == "fit") {
                                    if (a.pos + a.size + a.p1 + a.p2 > a.scroll + a.clientSize - a.marginMax) {
                                        a.pos = a.scroll + a.clientSize - a.size - a.marginMin - a.marginMax - a.p1 - a.p2
                                    }
                                    if (a.pos < a.scroll + a.marginMin) {
                                        a.pos = a.scroll + a.marginMin
                                    }
                                }
                            }
                        }
                    }
                }
                if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) {
                    this.createFullExpand();
                    if (this.overlays.length == 1) {
                        this.sizeOverlayBox()
                    }
                }
            }
            this.show()
        } catch (d) {
            this.error(d)
        }
    },
    setObjContainerSize: function (a, d) {
        var b = hs.getElementByClass(a, "DIV", "highslide-body");
        if (/(iframe|swf)/.test(this.objectType)) {
            if (this.objectWidth) {
                b.style.width = this.objectWidth + "px"
            }
            if (this.objectHeight) {
                b.style.height = this.objectHeight + "px"
            }
        }
    },
    writeExtendedContent: function () {
        if (this.hasExtendedContent) {
            return
        }
        var f = this;
        this.body = hs.getElementByClass(this.innerContent, "DIV", "highslide-body");
        if (this.objectType == "iframe") {
            this.showLoading();
            var g = hs.clearing.cloneNode(1);
            this.body.appendChild(g);
            this.newWidth = this.innerContent.offsetWidth;
            if (!this.objectWidth) {
                this.objectWidth = g.offsetWidth
            }
            var c = this.innerContent.offsetHeight - this.body.offsetHeight,
                d = this.objectHeight || hs.page.height - c - hs.marginTop - hs.marginBottom,
                e = this.objectLoadTime == "before" ? ' onload="if (hs.expanders[' + this.key + "]) hs.expanders[" + this.key + '].contentLoaded()" ' : "";
            this.body.innerHTML += '<iframe name="hs' + (new Date()).getTime() + '" frameborder="0" key="' + this.key + '"  style="width:' + this.objectWidth + "px; height:" + d + 'px" ' + e + ' src="' + this.src + '" ></iframe>';
            this.ruler = this.body.getElementsByTagName("div")[0];
            this.iframe = this.body.getElementsByTagName("iframe")[0];
            if (this.objectLoadTime == "after") {
                this.correctIframeSize()
            }
        }
        if (this.objectType == "swf") {
            this.body.id = this.body.id || "hs-flash-id-" + this.key;
            var b = this.swfOptions;
            if (!b.params) {
                b.params = {}
            }
            if (typeof b.params.wmode == "undefined") {
                b.params.wmode = "transparent"
            }
            if (swfobject) {
                swfobject.embedSWF(this.src, this.body.id, this.objectWidth, this.objectHeight, b.version || "7", b.expressInstallSwfurl, b.flashvars, b.params, b.attributes)
            }
        }
        this.hasExtendedContent = true
    },
    htmlGetSize: function () {
        if (this.iframe && !this.objectHeight) {
            this.iframe.style.height = this.body.style.height = this.getIframePageHeight() + "px"
        }
        this.innerContent.appendChild(hs.clearing);
        if (!this.x.full) {
            this.x.full = this.innerContent.offsetWidth
        }
        this.y.full = this.innerContent.offsetHeight;
        this.innerContent.removeChild(hs.clearing);
        if (hs.ie && this.newHeight > parseInt(this.innerContent.currentStyle.height)) {
            this.newHeight = parseInt(this.innerContent.currentStyle.height)
        }
        hs.setStyles(this.wrapper, {
            position: "absolute",
            padding: "0"
        });
        hs.setStyles(this.content, {
            width: this.x.t + "px",
            height: this.y.t + "px"
        })
    },
    getIframePageHeight: function () {
        var a;
        try {
            var d = this.iDoc = this.iframe.contentDocument || this.iframe.contentWindow.document;
            var b = d.createElement("div");
            b.style.clear = "both";
            d.body.appendChild(b);
            a = b.offsetTop;
            if (hs.ie) {
                a += parseInt(d.body.currentStyle.marginTop) + parseInt(d.body.currentStyle.marginBottom) - 1
            }
        } catch (c) {
            a = 300
        }
        return a
    },
    correctIframeSize: function () {
        var b = this.innerContent.offsetWidth - this.ruler.offsetWidth;
        hs.discardElement(this.ruler);
        if (b < 0) {
            b = 0
        }
        var a = this.innerContent.offsetHeight - this.iframe.offsetHeight;
        if (this.iDoc && !this.objectHeight && !this.height && this.y.size == this.y.full) {
            try {
                this.iDoc.body.style.overflow = "hidden"
            } catch (c) {}
        }
        hs.setStyles(this.iframe, {
            width: Math.abs(this.x.size - b) + "px",
            height: Math.abs(this.y.size - a) + "px"
        });
        hs.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.objectType == "swf" && this.objectLoadTime == "before") {
            this.writeExtendedContent()
        }
        if (this.x.size < this.x.full && !this.allowWidthReduction) {
            this.x.size = this.x.full
        }
        if (this.y.size < this.y.full && !this.allowHeightReduction) {
            this.y.size = this.y.full
        }
        this.scrollerDiv = this.innerContent;
        hs.setStyles(this.mediumContent, {
            position: "relative",
            width: this.x.size + "px"
        });
        hs.setStyles(this.innerContent, {
            border: "none",
            width: "auto",
            height: "auto"
        });
        var e = hs.getElementByClass(this.innerContent, "DIV", "highslide-body");
        if (e && !/(iframe|swf)/.test(this.objectType)) {
            var b = e;
            e = hs.createElement(b.nodeName, null, {
                overflow: "hidden"
            }, null, true);
            b.parentNode.insertBefore(e, b);
            e.appendChild(hs.clearing);
            e.appendChild(b);
            var c = this.innerContent.offsetWidth - e.offsetWidth;
            var a = this.innerContent.offsetHeight - e.offsetHeight;
            e.removeChild(hs.clearing);
            var d = hs.safari || navigator.vendor == "KDE" ? 1 : 0;
            hs.setStyles(e, {
                width: (this.x.size - c - d) + "px",
                height: (this.y.size - a) + "px",
                overflow: "auto",
                position: "relative"
            });
            if (d && b.offsetHeight > e.offsetHeight) {
                e.style.width = (parseInt(e.style.width) + d) + "px"
            }
            this.scrollingContent = e;
            this.scrollerDiv = this.scrollingContent
        }
        if (this.iframe && this.objectLoadTime == "before") {
            this.correctIframeSize()
        }
        if (!this.scrollingContent && this.y.size < this.mediumContent.offsetHeight) {
            this.scrollerDiv = this.content
        }
        if (this.scrollerDiv == this.content && !this.allowWidthReduction && !/(iframe|swf)/.test(this.objectType)) {
            this.x.size += 17
        }
        if (this.scrollerDiv && this.scrollerDiv.offsetHeight > this.scrollerDiv.parentNode.offsetHeight) {
            setTimeout("try { hs.expanders[" + this.key + "].scrollerDiv.style.overflow = 'auto'; } catch(e) {}", hs.expandDuration)
        }
    },
    getImageMapAreaCorrection: function (d) {
        var h = d.coords.split(",");
        for (var b = 0; b < h.length; b++) {
            h[b] = parseInt(h[b])
        }
        if (d.shape.toLowerCase() == "circle") {
            this.x.tpos += h[0] - h[2];
            this.y.tpos += h[1] - h[2];
            this.x.t = this.y.t = 2 * h[2]
        } else {
            var f, e, a = f = h[0],
                g = e = h[1];
            for (var b = 0; b < h.length; b++) {
                if (b % 2 == 0) {
                    a = Math.min(a, h[b]);
                    f = Math.max(f, h[b])
                } else {
                    g = Math.min(g, h[b]);
                    e = Math.max(e, h[b])
                }
            }
            this.x.tpos += a;
            this.x.t = f - a;
            this.y.tpos += g;
            this.y.t = e - g
        }
    },
    justify: function (f, b) {
        var g, h = f.target,
            e = f == this.x ? "x" : "y";
        if (h && h.match(/ /)) {
            g = h.split(" ");
            h = g[0]
        }
        if (h && hs.$(h)) {
            f.pos = hs.getPosition(hs.$(h))[e];
            if (g && g[1] && g[1].match(/^[-]?[0-9]+px$/)) {
                f.pos += parseInt(g[1])
            }
            if (f.size < f.minSize) {
                f.size = f.minSize
            }
        } else {
            if (f.justify == "auto" || f.justify == "center") {
                var d = false;
                var a = f.exp.allowSizeReduction;
                if (f.justify == "center") {
                    f.pos = Math.round(f.scroll + (f.clientSize + f.marginMin - f.marginMax - f.get("wsize")) / 2)
                } else {
                    f.pos = Math.round(f.pos - ((f.get("wsize") - f.t) / 2))
                }
                if (f.pos < f.scroll + f.marginMin) {
                    f.pos = f.scroll + f.marginMin;
                    d = true
                }
                if (!b && f.size < f.minSize) {
                    f.size = f.minSize;
                    a = false
                }
                if (f.pos + f.get("wsize") > f.scroll + f.clientSize - f.marginMax) {
                    if (!b && d && a) {
                        f.size = Math.min(f.size, f.get(e == "y" ? "fitsize" : "maxsize"))
                    } else {
                        if (f.get("wsize") < f.get("fitsize")) {
                            f.pos = f.scroll + f.clientSize - f.marginMax - f.get("wsize")
                        } else {
                            f.pos = f.scroll + f.marginMin;
                            if (!b && a) {
                                f.size = f.get(e == "y" ? "fitsize" : "maxsize")
                            }
                        }
                    }
                }
                if (!b && f.size < f.minSize) {
                    f.size = f.minSize;
                    a = false
                }
            } else {
                if (f.justify == "max") {
                    f.pos = Math.floor(f.pos - f.size + f.t)
                }
            }
        }
        if (f.pos < f.marginMin) {
            var c = f.pos;
            f.pos = f.marginMin;
            if (a && !b) {
                f.size = f.size - (f.pos - c)
            }
        }
    },
    correctRatio: function (c) {
        var a = this.x,
            g = this.y,
            e = false,
            d = Math.min(a.full, a.size),
            b = Math.min(g.full, g.size),
            f = (this.useBox || hs.padToMinWidth);
        if (d / b > c) {
            d = b * c;
            if (d < a.minSize) {
                d = a.minSize;
                b = d / c
            }
            e = true
        } else {
            if (d / b < c) {
                b = d / c;
                e = true
            }
        }
        if (hs.padToMinWidth && a.full < a.minSize) {
            a.imgSize = a.full;
            g.size = g.imgSize = g.full
        } else {
            if (this.useBox) {
                a.imgSize = d;
                g.imgSize = b
            } else {
                a.size = d;
                g.size = b
            }
        }
        e = this.fitOverlayBox(this.useBox ? null : c, e);
        if (f && g.size < g.imgSize) {
            g.imgSize = g.size;
            a.imgSize = g.size * c
        }
        if (e || f) {
            a.pos = a.tpos - a.cb + a.tb;
            a.minSize = a.size;
            this.justify(a, true);
            g.pos = g.tpos - g.cb + g.tb;
            g.minSize = g.size;
            this.justify(g, true);
            if (this.overlayBox) {
                this.sizeOverlayBox()
            }
        }
    },
    fitOverlayBox: function (b, c) {
        var a = this.x,
            d = this.y;
        if (this.overlayBox && (this.isImage || this.allowHeightReduction)) {
            while (d.size > this.minHeight && a.size > this.minWidth && d.get("wsize") > d.get("fitsize")) {
                d.size -= 10;
                if (b) {
                    a.size = d.size * b
                }
                this.sizeOverlayBox(0, 1);
                c = true
            }
        }
        return c
    },
    reflow: function () {
        if (this.scrollerDiv) {
            var a = /iframe/i.test(this.scrollerDiv.tagName) ? (this.getIframePageHeight() + 1) + "px" : "auto";
            if (this.body) {
                this.body.style.height = a
            }
            this.scrollerDiv.style.height = a;
            this.y.setSize(this.innerContent.offsetHeight)
        }
    },
    show: function () {
        var a = this.x,
            b = this.y;
        this.doShowHide("hidden");
        hs.fireEvent(this, "onBeforeExpand");
        if (this.slideshow && this.slideshow.thumbstrip) {
            this.slideshow.thumbstrip.selectThumb()
        }
        this.changeSize(1, {
            wrapper: {
                width: a.get("wsize"),
                height: b.get("wsize"),
                left: a.pos,
                top: b.pos
            },
            content: {
                left: a.p1 + a.get("imgPad"),
                top: b.p1 + b.get("imgPad"),
                width: a.imgSize || a.size,
                height: b.imgSize || b.size
            }
        }, hs.expandDuration)
    },
    changeSize: function (d, i, b) {
        var k = this.transitions,
            e = d ? (this.last ? this.last.a : null) : hs.upcoming,
            j = (k[1] && e && hs.getParam(e, "transitions")[1] == k[1]) ? k[1] : k[0];
        if (this[j] && j != "expand") {
            this[j](d, i);
            return
        }
        if (this.outline && !this.outlineWhileAnimating) {
            if (d) {
                this.outline.setPosition()
            } else {
                this.outline.destroy((this.isHtml && this.preserveContent))
            }
        }
        if (!d) {
            this.destroyOverlays()
        }
        var c = this,
            h = c.x,
            g = c.y,
            f = this.easing;
        if (!d) {
            f = this.easingClose || f
        }
        var a = d ?
        function () {
            if (c.outline) {
                c.outline.table.style.visibility = "visible"
            }
            setTimeout(function () {
                c.afterExpand()
            }, 50)
        } : function () {
            c.afterClose()
        };
        if (d) {
            hs.setStyles(this.wrapper, {
                width: h.t + "px",
                height: g.t + "px"
            })
        }
        if (d && this.isHtml) {
            hs.setStyles(this.wrapper, {
                left: (h.tpos - h.cb + h.tb) + "px",
                top: (g.tpos - g.cb + g.tb) + "px"
            })
        }
        if (this.fadeInOut) {
            hs.setStyles(this.wrapper, {
                opacity: d ? 0 : 1
            });
            hs.extend(i.wrapper, {
                opacity: d
            })
        }
        hs.animate(this.wrapper, i.wrapper, {
            duration: b,
            easing: f,
            step: function (n, l) {
                if (c.outline && c.outlineWhileAnimating && l.prop == "top") {
                    var m = d ? l.pos : 1 - l.pos;
                    var o = {
                        w: h.t + (h.get("wsize") - h.t) * m,
                        h: g.t + (g.get("wsize") - g.t) * m,
                        x: h.tpos + (h.pos - h.tpos) * m,
                        y: g.tpos + (g.pos - g.tpos) * m
                    };
                    c.outline.setPosition(o, 0, 1)
                }
                if (c.isHtml) {
                    if (l.prop == "left") {
                        c.mediumContent.style.left = (h.pos - n) + "px"
                    }
                    if (l.prop == "top") {
                        c.mediumContent.style.top = (g.pos - n) + "px"
                    }
                }
            }
        });
        hs.animate(this.content, i.content, b, f, a);
        if (d) {
            this.wrapper.style.visibility = "visible";
            this.content.style.visibility = "visible";
            if (this.isHtml) {
                this.innerContent.style.visibility = "visible"
            }
            this.a.className += " highslide-active-anchor"
        }
    },
    fade: function (f, h) {
        this.outlineWhileAnimating = false;
        var c = this,
            j = f ? hs.expandDuration : 0;
        if (f) {
            hs.animate(this.wrapper, h.wrapper, 0);
            hs.setStyles(this.wrapper, {
                opacity: 0,
                visibility: "visible"
            });
            hs.animate(this.content, h.content, 0);
            this.content.style.visibility = "visible";
            hs.animate(this.wrapper, {
                opacity: 1
            }, j, null, function () {
                c.afterExpand()
            })
        }
        if (this.outline) {
            this.outline.table.style.zIndex = this.wrapper.style.zIndex;
            var b = f || -1,
                d = this.outline.offset,
                a = f ? 3 : d,
                g = f ? d : 3;
            for (var e = a; b * e <= b * g; e += b, j += 25) {
                (function () {
                    var i = f ? g - e : a - e;
                    setTimeout(function () {
                        c.outline.setPosition(0, i, 1)
                    }, j)
                })()
            }
        }
        if (f) {} else {
            setTimeout(function () {
                if (c.outline) {
                    c.outline.destroy(c.preserveContent)
                }
                c.destroyOverlays();
                hs.animate(c.wrapper, {
                    opacity: 0
                }, hs.restoreDuration, null, function () {
                    c.afterClose()
                })
            }, j)
        }
    },
    crossfade: function (g, m, o) {
        if (!g) {
            return
        }
        var f = this,
            p = this.last,
            l = this.x,
            k = this.y,
            d = p.x,
            b = p.y,
            a = this.wrapper,
            i = this.content,
            c = this.overlayBox;
        hs.removeEventListener(document, "mousemove", hs.dragHandler);
        hs.setStyles(i, {
            width: (l.imgSize || l.size) + "px",
            height: (k.imgSize || k.size) + "px"
        });
        if (c) {
            c.style.overflow = "visible"
        }
        this.outline = p.outline;
        if (this.outline) {
            this.outline.exp = f
        }
        p.outline = null;
        var h = hs.createElement("div", {
            className: "highslide-" + this.contentType
        }, {
            position: "absolute",
            zIndex: 4,
            overflow: "hidden",
            display: "none"
        });
        var j = {
            oldImg: p,
            newImg: this
        };
        for (var e in j) {
            this[e] = j[e].content.cloneNode(1);
            hs.setStyles(this[e], {
                position: "absolute",
                border: 0,
                visibility: "visible"
            });
            h.appendChild(this[e])
        }
        a.appendChild(h);
        if (this.isHtml) {
            hs.setStyles(this.mediumContent, {
                left: 0,
                top: 0
            })
        }
        if (c) {
            c.className = "";
            a.appendChild(c)
        }
        h.style.display = "";
        p.content.style.display = "none";
        if (hs.safari && hs.uaVersion < 525) {
            this.wrapper.style.visibility = "visible"
        }
        hs.animate(a, {
            width: l.size
        }, {
            duration: hs.transitionDuration,
            step: function (u, r) {
                var x = r.pos,
                    q = 1 - x;
                var w, s = {},
                    t = ["pos", "size", "p1", "p2"];
                for (var v in t) {
                    w = t[v];
                    s["x" + w] = Math.round(q * d[w] + x * l[w]);
                    s["y" + w] = Math.round(q * b[w] + x * k[w]);
                    s.ximgSize = Math.round(q * (d.imgSize || d.size) + x * (l.imgSize || l.size));
                    s.ximgPad = Math.round(q * d.get("imgPad") + x * l.get("imgPad"));
                    s.yimgSize = Math.round(q * (b.imgSize || b.size) + x * (k.imgSize || k.size));
                    s.yimgPad = Math.round(q * b.get("imgPad") + x * k.get("imgPad"))
                }
                if (f.outline) {
                    f.outline.setPosition({
                        x: s.xpos,
                        y: s.ypos,
                        w: s.xsize + s.xp1 + s.xp2 + 2 * l.cb,
                        h: s.ysize + s.yp1 + s.yp2 + 2 * k.cb
                    })
                }
                p.wrapper.style.clip = "rect(" + (s.ypos - b.pos) + "px, " + (s.xsize + s.xp1 + s.xp2 + s.xpos + 2 * d.cb - d.pos) + "px, " + (s.ysize + s.yp1 + s.yp2 + s.ypos + 2 * b.cb - b.pos) + "px, " + (s.xpos - d.pos) + "px)";
                hs.setStyles(i, {
                    top: (s.yp1 + k.get("imgPad")) + "px",
                    left: (s.xp1 + l.get("imgPad")) + "px",
                    marginTop: (k.pos - s.ypos) + "px",
                    marginLeft: (l.pos - s.xpos) + "px"
                });
                hs.setStyles(a, {
                    top: s.ypos + "px",
                    left: s.xpos + "px",
                    width: (s.xp1 + s.xp2 + s.xsize + 2 * l.cb) + "px",
                    height: (s.yp1 + s.yp2 + s.ysize + 2 * k.cb) + "px"
                });
                hs.setStyles(h, {
                    width: (s.ximgSize || s.xsize) + "px",
                    height: (s.yimgSize || s.ysize) + "px",
                    left: (s.xp1 + s.ximgPad) + "px",
                    top: (s.yp1 + s.yimgPad) + "px",
                    visibility: "visible"
                });
                hs.setStyles(f.oldImg, {
                    top: (b.pos - s.ypos + b.p1 - s.yp1 + b.get("imgPad") - s.yimgPad) + "px",
                    left: (d.pos - s.xpos + d.p1 - s.xp1 + d.get("imgPad") - s.ximgPad) + "px"
                });
                hs.setStyles(f.newImg, {
                    opacity: x,
                    top: (k.pos - s.ypos + k.p1 - s.yp1 + k.get("imgPad") - s.yimgPad) + "px",
                    left: (l.pos - s.xpos + l.p1 - s.xp1 + l.get("imgPad") - s.ximgPad) + "px"
                });
                if (c) {
                    hs.setStyles(c, {
                        width: s.xsize + "px",
                        height: s.ysize + "px",
                        left: (s.xp1 + l.cb) + "px",
                        top: (s.yp1 + k.cb) + "px"
                    })
                }
            },
            complete: function () {
                a.style.visibility = i.style.visibility = "visible";
                i.style.display = "block";
                hs.discardElement(h);
                f.afterExpand();
                p.afterClose();
                f.last = null
            }
        })
    },
    reuseOverlay: function (d, c) {
        if (!this.last) {
            return false
        }
        for (var b = 0; b < this.last.overlays.length; b++) {
            var a = hs.$("hsId" + this.last.overlays[b]);
            if (a && a.hsId == d.hsId) {
                this.genOverlayBox();
                a.reuse = this.key;
                hs.push(this.overlays, this.last.overlays[b]);
                return true
            }
        }
        return false
    },
    afterExpand: function () {
        this.isExpanded = true;
        this.focus();
        if (this.isHtml && this.objectLoadTime == "after") {
            this.writeExtendedContent()
        }
        if (this.iframe) {
            try {
                var g = this,
                    f = this.iframe.contentDocument || this.iframe.contentWindow.document;
                hs.addEventListener(f, "mousedown", function () {
                    if (hs.focusKey != g.key) {
                        g.focus()
                    }
                })
            } catch (d) {}
            if (hs.ie && typeof this.isClosing != "boolean") {
                this.iframe.style.width = (this.objectWidth - 1) + "px"
            }
        }
        if (this.dimmingOpacity) {
            hs.dim(this)
        }
        if (hs.upcoming && hs.upcoming == this.a) {
            hs.upcoming = null
        }
        this.prepareNextOutline();
        var c = hs.page,
            b = hs.mouse.x + c.scrollLeft,
            a = hs.mouse.y + c.scrollTop;
        this.mouseIsOver = this.x.pos < b && b < this.x.pos + this.x.get("wsize") && this.y.pos < a && a < this.y.pos + this.y.get("wsize");
        if (this.overlayBox) {
            this.showOverlays()
        }
        hs.fireEvent(this, "onAfterExpand")
    },
    prepareNextOutline: function () {
        var a = this.key;
        var b = this.outlineType;
        new hs.Outline(b, function () {
            try {
                hs.expanders[a].preloadNext()
            } catch (c) {}
        })
    },
    preloadNext: function () {
        var b = this.getAdjacentAnchor(1);
        if (b && b.onclick.toString().match(/hs\.expand/)) {
            var a = hs.createElement("img", {
                src: hs.getSrc(b)
            })
        }
    },
    getAdjacentAnchor: function (c) {
        var b = this.getAnchorIndex(),
            a = hs.anchors.groups[this.slideshowGroup || "none"];
        if (a && !a[b + c] && this.slideshow && this.slideshow.repeat) {
            if (c == 1) {
                return a[0]
            } else {
                if (c == -1) {
                    return a[a.length - 1]
                }
            }
        }
        return (a && a[b + c]) || null
    },
    getAnchorIndex: function () {
        var a = hs.getAnchors().groups[this.slideshowGroup || "none"];
        if (a) {
            for (var b = 0; b < a.length; b++) {
                if (a[b] == this.a) {
                    return b
                }
            }
        }
        return null
    },
    getNumber: function () {
        if (this[this.numberPosition]) {
            var a = hs.anchors.groups[this.slideshowGroup || "none"];
            if (a) {
                var b = hs.lang.number.replace("%1", this.getAnchorIndex() + 1).replace("%2", a.length);
                this[this.numberPosition].innerHTML = '<div class="highslide-number">' + b + "</div>" + this[this.numberPosition].innerHTML
            }
        }
    },
    initSlideshow: function () {
        if (!this.last) {
            for (var c = 0; c < hs.slideshows.length; c++) {
                var b = hs.slideshows[c],
                    d = b.slideshowGroup;
                if (typeof d == "undefined" || d === null || d === this.slideshowGroup) {
                    this.slideshow = new hs.Slideshow(this.key, b)
                }
            }
        } else {
            this.slideshow = this.last.slideshow
        }
        var b = this.slideshow;
        if (!b) {
            return
        }
        var a = b.expKey = this.key;
        b.checkFirstAndLast();
        b.disable("full-expand");
        if (b.controls) {
            this.createOverlay(hs.extend(b.overlayOptions || {}, {
                overlayId: b.controls,
                hsId: "controls",
                zIndex: 5
            }))
        }
        if (b.thumbstrip) {
            b.thumbstrip.add(this)
        }
        if (!this.last && this.autoplay) {
            b.play(true)
        }
        if (b.autoplay) {
            b.autoplay = setTimeout(function () {
                hs.next(a)
            }, (b.interval || 500))
        }
    },
    cancelLoading: function () {
        hs.discardElement(this.wrapper);
        hs.expanders[this.key] = null;
        if (hs.upcoming == this.a) {
            hs.upcoming = null
        }
        hs.undim(this.key);
        if (this.loading) {
            hs.loading.style.left = "-9999px"
        }
        hs.fireEvent(this, "onHideLoading")
    },
    writeCredits: function () {
        if (this.credits) {
            return
        }
        this.credits = hs.createElement("a", {
            href: hs.creditsHref,
            target: hs.creditsTarget,
            className: "highslide-credits",
            innerHTML: hs.lang.creditsText,
            title: hs.lang.creditsTitle
        });
        this.createOverlay({
            overlayId: this.credits,
            position: this.creditsPosition || "top left",
            hsId: "credits"
        })
    },
    getInline: function (types, addOverlay) {
        for (var i = 0; i < types.length; i++) {
            var type = types[i],
                s = null;
            if (type == "caption" && !hs.fireEvent(this, "onBeforeGetCaption")) {
                return
            } else {
                if (type == "heading" && !hs.fireEvent(this, "onBeforeGetHeading")) {
                    return
                }
            }
            if (!this[type + "Id"] && this.thumbsUserSetId) {
                this[type + "Id"] = type + "-for-" + this.thumbsUserSetId
            }
            if (this[type + "Id"]) {
                this[type] = hs.getNode(this[type + "Id"])
            }
            if (!this[type] && !this[type + "Text"] && this[type + "Eval"]) {
                try {
                    s = eval(this[type + "Eval"])
                } catch (e) {}
            }
            if (!this[type] && this[type + "Text"]) {
                s = this[type + "Text"]
            }
            if (!this[type] && !s) {
                this[type] = hs.getNode(this.a["_" + type + "Id"]);
                if (!this[type]) {
                    var next = this.a.nextSibling;
                    while (next && !hs.isHsAnchor(next)) {
                        if ((new RegExp("highslide-" + type)).test(next.className || null)) {
                            if (!next.id) {
                                this.a["_" + type + "Id"] = next.id = "hsId" + hs.idCounter++
                            }
                            this[type] = hs.getNode(next.id);
                            break
                        }
                        next = next.nextSibling
                    }
                }
            }
            if (!this[type] && !s && this.numberPosition == type) {
                s = "\n"
            }
            if (!this[type] && s) {
                this[type] = hs.createElement("div", {
                    className: "highslide-" + type,
                    innerHTML: s
                })
            }
            if (addOverlay && this[type]) {
                var o = {
                    position: (type == "heading") ? "above" : "below"
                };
                for (var x in this[type + "Overlay"]) {
                    o[x] = this[type + "Overlay"][x]
                }
                o.overlayId = this[type];
                this.createOverlay(o)
            }
        }
    },
    doShowHide: function (a) {
        if (hs.hideSelects) {
            this.showHideElements("SELECT", a)
        }
        if (hs.hideIframes) {
            this.showHideElements("IFRAME", a)
        }
        if (hs.geckoMac) {
            this.showHideElements("*", a)
        }
    },
    showHideElements: function (c, b) {
        var e = document.getElementsByTagName(c);
        var a = c == "*" ? "overflow" : "visibility";
        for (var f = 0; f < e.length; f++) {
            if (a == "visibility" || (document.defaultView.getComputedStyle(e[f], "").getPropertyValue("overflow") == "auto" || e[f].getAttribute("hidden-by") != null)) {
                var h = e[f].getAttribute("hidden-by");
                if (b == "visible" && h) {
                    h = h.replace("[" + this.key + "]", "");
                    e[f].setAttribute("hidden-by", h);
                    if (!h) {
                        e[f].style[a] = e[f].origProp
                    }
                } else {
                    if (b == "hidden") {
                        var k = hs.getPosition(e[f]);
                        k.w = e[f].offsetWidth;
                        k.h = e[f].offsetHeight;
                        if (!this.dimmingOpacity) {
                            var j = (k.x + k.w < this.x.get("opos") || k.x > this.x.get("opos") + this.x.get("osize"));
                            var g = (k.y + k.h < this.y.get("opos") || k.y > this.y.get("opos") + this.y.get("osize"))
                        }
                        var d = hs.getWrapperKey(e[f]);
                        if (!j && !g && d != this.key) {
                            if (!h) {
                                e[f].setAttribute("hidden-by", "[" + this.key + "]");
                                e[f].origProp = e[f].style[a];
                                e[f].style[a] = "hidden"
                            } else {
                                if (h.indexOf("[" + this.key + "]") == -1) {
                                    e[f].setAttribute("hidden-by", h + "[" + this.key + "]")
                                }
                            }
                        } else {
                            if ((h == "[" + this.key + "]" || hs.focusKey == d) && d != this.key) {
                                e[f].setAttribute("hidden-by", "");
                                e[f].style[a] = e[f].origProp || ""
                            } else {
                                if (h && h.indexOf("[" + this.key + "]") > -1) {
                                    e[f].setAttribute("hidden-by", h.replace("[" + this.key + "]", ""))
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    focus: function () {
        this.wrapper.style.zIndex = hs.zIndexCounter += 2;
        for (var a = 0; a < hs.expanders.length; a++) {
            if (hs.expanders[a] && a == hs.focusKey) {
                var b = hs.expanders[a];
                b.content.className += " highslide-" + b.contentType + "-blur";
                if (b.isImage) {
                    b.content.style.cursor = hs.ie ? "hand" : "pointer";
                    b.content.title = hs.lang.focusTitle
                }
                hs.fireEvent(b, "onBlur")
            }
        }
        if (this.outline) {
            this.outline.table.style.zIndex = this.wrapper.style.zIndex - 1
        }
        this.content.className = "highslide-" + this.contentType;
        if (this.isImage) {
            this.content.title = hs.lang.restoreTitle;
            if (hs.restoreCursor) {
                hs.styleRestoreCursor = window.opera ? "pointer" : "url(" + hs.graphicsDir + hs.restoreCursor + "), pointer";
                if (hs.ie && hs.uaVersion < 6) {
                    hs.styleRestoreCursor = "hand"
                }
                this.content.style.cursor = hs.styleRestoreCursor
            }
        }
        hs.focusKey = this.key;
        hs.addEventListener(document, window.opera ? "keypress" : "keydown", hs.keyHandler);
        hs.fireEvent(this, "onFocus")
    },
    moveTo: function (a, b) {
        this.x.setPos(a);
        this.y.setPos(b)
    },
    resize: function (d) {
        var a, b, c = d.width / d.height;
        a = Math.max(d.width + d.dX, Math.min(this.minWidth, this.x.full));
        if (this.isImage && Math.abs(a - this.x.full) < 12) {
            a = this.x.full
        }
        b = this.isHtml ? d.height + d.dY : a / c;
        if (b < Math.min(this.minHeight, this.y.full)) {
            b = Math.min(this.minHeight, this.y.full);
            if (this.isImage) {
                a = b * c
            }
        }
        this.resizeTo(a, b)
    },
    resizeTo: function (a, b) {
        this.y.setSize(b);
        this.x.setSize(a);
        this.wrapper.style.height = this.y.get("wsize") + "px"
    },
    close: function () {
        if (this.isClosing || !this.isExpanded) {
            return
        }
        if (this.transitions[1] == "crossfade" && hs.upcoming) {
            hs.getExpander(hs.upcoming).cancelLoading();
            hs.upcoming = null
        }
        if (!hs.fireEvent(this, "onBeforeClose")) {
            return
        }
        this.isClosing = true;
        if (this.slideshow && !hs.upcoming) {
            this.slideshow.pause()
        }
        hs.removeEventListener(document, window.opera ? "keypress" : "keydown", hs.keyHandler);
        try {
            if (this.isHtml) {
                this.htmlPrepareClose()
            }
            this.content.style.cursor = "default";
            this.changeSize(0, {
                wrapper: {
                    width: this.x.t,
                    height: this.y.t,
                    left: this.x.tpos - this.x.cb + this.x.tb,
                    top: this.y.tpos - this.y.cb + this.y.tb
                },
                content: {
                    left: 0,
                    top: 0,
                    width: this.x.t,
                    height: this.y.t
                }
            }, hs.restoreDuration)
        } catch (a) {
            this.afterClose()
        }
    },
    htmlPrepareClose: function () {
        if (hs.geckoMac) {
            if (!hs.mask) {
                hs.mask = hs.createElement("div", null, {
                    position: "absolute"
                }, hs.container)
            }
            hs.setStyles(hs.mask, {
                width: this.x.size + "px",
                height: this.y.size + "px",
                left: this.x.pos + "px",
                top: this.y.pos + "px",
                display: "block"
            })
        }
        if (this.objectType == "swf") {
            try {
                hs.$(this.body.id).StopPlay()
            } catch (a) {}
        }
        if (this.objectLoadTime == "after" && !this.preserveContent) {
            this.destroyObject()
        }
        if (this.scrollerDiv && this.scrollerDiv != this.scrollingContent) {
            this.scrollerDiv.style.overflow = "hidden"
        }
    },
    destroyObject: function () {
        if (hs.ie && this.iframe) {
            try {
                this.iframe.contentWindow.document.body.innerHTML = ""
            } catch (a) {}
        }
        if (this.objectType == "swf") {
            swfobject.removeSWF(this.body.id)
        }
        this.body.innerHTML = ""
    },
    sleep: function () {
        if (this.outline) {
            this.outline.table.style.display = "none"
        }
        this.releaseMask = null;
        this.wrapper.style.display = "none";
        this.isExpanded = false;
        hs.push(hs.sleeping, this)
    },
    awake: function () {
        try {
            hs.expanders[this.key] = this;
            if (!hs.allowMultipleInstances && hs.focusKey != this.key) {
                try {
                    hs.expanders[hs.focusKey].close()
                } catch (b) {}
            }
            var d = hs.zIndexCounter++,
                a = {
                    display: "",
                    zIndex: d
                };
            hs.setStyles(this.wrapper, a);
            this.isClosing = false;
            var c = this.outline || 0;
            if (c) {
                if (!this.outlineWhileAnimating) {
                    a.visibility = "hidden"
                }
                hs.setStyles(c.table, a)
            }
            if (this.slideshow) {
                this.initSlideshow()
            }
            this.show()
        } catch (b) {}
    },
    createOverlay: function (e) {
        var d = e.overlayId,
            a = (e.relativeTo == "viewport" && !/panel$/.test(e.position));
        if (typeof d == "string") {
            d = hs.getNode(d)
        }
        if (e.html) {
            d = hs.createElement("div", {
                innerHTML: e.html
            })
        }
        if (!d || typeof d == "string") {
            return
        }
        if (!hs.fireEvent(this, "onCreateOverlay", {
            overlay: d
        })) {
            return
        }
        d.style.display = "block";
        e.hsId = e.hsId || e.overlayId;
        if (this.transitions[1] == "crossfade" && this.reuseOverlay(e, d)) {
            return
        }
        this.genOverlayBox();
        var c = e.width && /^[0-9]+(px|%)$/.test(e.width) ? e.width : "auto";
        if (/^(left|right)panel$/.test(e.position) && !/^[0-9]+px$/.test(e.width)) {
            c = "200px"
        }
        var b = hs.createElement("div", {
            id: "hsId" + hs.idCounter++,
            hsId: e.hsId
        }, {
            position: "absolute",
            visibility: "hidden",
            width: c,
            direction: hs.lang.cssDirection || "",
            opacity: 0
        }, a ? hs.viewport : this.overlayBox, true);
        if (a) {
            b.hsKey = this.key
        }
        b.appendChild(d);
        hs.extend(b, {
            opacity: 1,
            offsetX: 0,
            offsetY: 0,
            dur: (e.fade === 0 || e.fade === false || (e.fade == 2 && hs.ie)) ? 0 : 250
        });
        hs.extend(b, e);
        if (this.gotOverlays) {
            this.positionOverlay(b);
            if (!b.hideOnMouseOut || this.mouseIsOver) {
                hs.animate(b, {
                    opacity: b.opacity
                }, b.dur)
            }
        }
        hs.push(this.overlays, hs.idCounter - 1)
    },
    positionOverlay: function (e) {
        var f = e.position || "middle center",
            c = (e.relativeTo == "viewport"),
            b = e.offsetX,
            a = e.offsetY;
        if (c) {
            hs.viewport.style.display = "block";
            e.hsKey = this.key;
            if (e.offsetWidth > e.parentNode.offsetWidth) {
                e.style.width = "100%"
            }
        } else {
            if (e.parentNode != this.overlayBox) {
                this.overlayBox.appendChild(e)
            }
        }
        if (/left$/.test(f)) {
            e.style.left = b + "px"
        }
        if (/center$/.test(f)) {
            hs.setStyles(e, {
                left: "50%",
                marginLeft: (b - Math.round(e.offsetWidth / 2)) + "px"
            })
        }
        if (/right$/.test(f)) {
            e.style.right = -b + "px"
        }
        if (/^leftpanel$/.test(f)) {
            hs.setStyles(e, {
                right: "100%",
                marginRight: this.x.cb + "px",
                top: -this.y.cb + "px",
                bottom: -this.y.cb + "px",
                overflow: "auto"
            });
            this.x.p1 = e.offsetWidth
        } else {
            if (/^rightpanel$/.test(f)) {
                hs.setStyles(e, {
                    left: "100%",
                    marginLeft: this.x.cb + "px",
                    top: -this.y.cb + "px",
                    bottom: -this.y.cb + "px",
                    overflow: "auto"
                });
                this.x.p2 = e.offsetWidth
            }
        }
        var d = e.parentNode.offsetHeight;
        e.style.height = "auto";
        if (c && e.offsetHeight > d) {
            e.style.height = hs.ieLt7 ? d + "px" : "100%"
        }
        if (/^top/.test(f)) {
            e.style.top = a + "px"
        }
        if (/^middle/.test(f)) {
            hs.setStyles(e, {
                top: "50%",
                marginTop: (a - Math.round(e.offsetHeight / 2)) + "px"
            })
        }
        if (/^bottom/.test(f)) {
            e.style.bottom = -a + "px"
        }
        if (/^above$/.test(f)) {
            hs.setStyles(e, {
                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 = e.offsetHeight
        } else {
            if (/^below$/.test(f)) {
                hs.setStyles(e, {
                    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 = e.offsetHeight;
                e.style.position = "absolute"
            }
        }
    },
    getOverlays: function () {
        this.getInline(["heading", "caption"], true);
        this.getNumber();
        if (this.caption) {
            hs.fireEvent(this, "onAfterGetCaption")
        }
        if (this.heading) {
            hs.fireEvent(this, "onAfterGetHeading")
        }
        if (this.heading && this.dragByHeading) {
            this.heading.innerHTML = '<div class="highslide-move">' + this.heading.innerHTML + '</div>';
            if (this.headingClose == true) {
                var newdiv = document.createElement('span');
                newdiv.className = 'highslide-close';
                newdiv.innerHTML = hs.headingCloseHTML;
                this.heading.appendChild(newdiv);
            }
        }
        if (hs.showCredits) {
            this.writeCredits()
        }
        for (var a = 0; a < hs.overlays.length; a++) {
            var d = hs.overlays[a],
                e = d.thumbnailId,
                b = d.slideshowGroup;
            if ((!e && !b) || (e && e == this.thumbsUserSetId) || (b && b === this.slideshowGroup)) {
                if (this.isImage || (this.isHtml && d.useOnHtml)) {
                    this.createOverlay(d)
                }
            }
        }
        var c = [];
        for (var a = 0; a < this.overlays.length; a++) {
            var d = hs.$("hsId" + this.overlays[a]);
            if (/panel$/.test(d.position)) {
                this.positionOverlay(d)
            } else {
                hs.push(c, d)
            }
        }
        for (var a = 0; a < c.length; a++) {
            this.positionOverlay(c[a])
        }
        this.gotOverlays = true
    },
    genOverlayBox: function () {
        if (!this.overlayBox) {
            this.overlayBox = hs.createElement("div", {
                className: this.wrapperClassName
            }, {
                position: "absolute",
                width: (this.x.size || (this.useBox ? this.width : null) || this.x.full) + "px",
                height: (this.y.size || this.y.full) + "px",
                visibility: "hidden",
                overflow: "hidden",
                zIndex: hs.ie ? 4 : "auto"
            }, hs.container, true)
        }
    },
    sizeOverlayBox: function (f, d) {
        var c = this.overlayBox,
            a = this.x,
            h = this.y;
        hs.setStyles(c, {
            width: a.size + "px",
            height: h.size + "px"
        });
        if (f || d) {
            for (var e = 0; e < this.overlays.length; e++) {
                var g = hs.$("hsId" + this.overlays[e]);
                var b = (hs.ieLt7 || document.compatMode == "BackCompat");
                if (g && /^(above|below)$/.test(g.position)) {
                    if (b) {
                        g.style.width = (c.offsetWidth + 2 * a.cb + a.p1 + a.p2) + "px"
                    }
                    h[g.position == "above" ? "p1" : "p2"] = g.offsetHeight
                }
                if (g && b && /^(left|right)panel$/.test(g.position)) {
                    g.style.height = (c.offsetHeight + 2 * h.cb) + "px"
                }
            }
        }
        if (f) {
            hs.setStyles(this.content, {
                top: h.p1 + "px"
            });
            hs.setStyles(c, {
                top: (h.p1 + h.cb) + "px"
            })
        }
    },
    showOverlays: function () {
        var a = this.overlayBox;
        a.className = "";
        hs.setStyles(a, {
            top: (this.y.p1 + this.y.cb) + "px",
            left: (this.x.p1 + this.x.cb) + "px",
            overflow: "visible"
        });
        if (hs.safari) {
            a.style.visibility = "visible"
        }
        this.wrapper.appendChild(a);
        for (var c = 0; c < this.overlays.length; c++) {
            var d = hs.$("hsId" + this.overlays[c]);
            d.style.zIndex = d.zIndex || 4;
            if (!d.hideOnMouseOut || this.mouseIsOver) {
                d.style.visibility = "visible";
                hs.setStyles(d, {
                    visibility: "visible",
                    display: ""
                });
                hs.animate(d, {
                    opacity: d.opacity
                }, d.dur)
            }
        }
    },
    destroyOverlays: function () {
        if (!this.overlays.length) {
            return
        }
        if (this.slideshow) {
            var d = this.slideshow.controls;
            if (d && hs.getExpander(d) == this) {
                d.parentNode.removeChild(d)
            }
        }
        for (var a = 0; a < this.overlays.length; a++) {
            var b = hs.$("hsId" + this.overlays[a]);
            if (b && b.parentNode == hs.viewport && hs.getExpander(b) == this) {
                hs.discardElement(b)
            }
        }
        if (this.isHtml && this.preserveContent) {
            this.overlayBox.style.top = "-9999px";
            hs.container.appendChild(this.overlayBox)
        } else {
            hs.discardElement(this.overlayBox)
        }
    },
    createFullExpand: function () {
        if (this.slideshow && this.slideshow.controls) {
            this.slideshow.enable("full-expand");
            return
        }
        this.fullExpandLabel = hs.createElement("a", {
            href: "javascript:hs.expanders[" + this.key + "].doFullExpand();",
            title: hs.lang.fullExpandTitle,
            className: "highslide-full-expand"
        });
        if (!hs.fireEvent(this, "onCreateFullExpand")) {
            return
        }
        this.createOverlay({
            overlayId: this.fullExpandLabel,
            position: hs.fullExpandPosition,
            hideOnMouseOut: true,
            opacity: hs.fullExpandOpacity
        })
    },
    doFullExpand: function () {
        try {
            if (!hs.fireEvent(this, "onDoFullExpand")) {
                return
            }
            if (this.fullExpandLabel) {
                hs.discardElement(this.fullExpandLabel)
            }
            this.focus();
            var b = this.x.size;
            this.resizeTo(this.x.full, this.y.full);
            var a = this.x.pos - (this.x.size - b) / 2;
            if (a < hs.marginLeft) {
                a = hs.marginLeft
            }
            this.moveTo(a, this.y.pos);
            this.doShowHide("hidden")
        } catch (c) {
            this.error(c)
        }
    },
    afterClose: function () {
        this.a.className = this.a.className.replace("highslide-active-anchor", "");
        this.doShowHide("visible");
        if (this.isHtml && this.preserveContent && this.transitions[1] != "crossfade") {
            this.sleep()
        } else {
            if (this.outline && this.outlineWhileAnimating) {
                this.outline.destroy()
            }
            hs.discardElement(this.wrapper)
        }
        if (hs.mask) {
            hs.mask.style.display = "none"
        }
        this.destroyOverlays();
        if (!hs.viewport.childNodes.length) {
            hs.viewport.style.display = "none"
        }
        if (this.dimmingOpacity) {
            hs.undim(this.key)
        }
        hs.fireEvent(this, "onAfterClose");
        hs.expanders[this.key] = null;
        hs.reOrder()
    }
};
hs.Ajax = function (b, c, d) {
    this.a = b;
    this.content = c;
    this.pre = d
};
hs.Ajax.prototype = {
    run: function () {
        var d;
        if (!this.src) {
            this.src = hs.getSrc(this.a)
        }
        if (this.src.match("#")) {
            var a = this.src.split("#");
            this.src = a[0];
            this.id = a[1]
        }
        if (hs.cachedGets[this.src]) {
            this.cachedGet = hs.cachedGets[this.src];
            if (this.id) {
                this.getElementContent()
            } else {
                this.loadHTML()
            }
            return
        }
        try {
            d = new XMLHttpRequest()
        } catch (b) {
            try {
                d = new ActiveXObject("Msxml2.XMLHTTP")
            } catch (b) {
                try {
                    d = new ActiveXObject("Microsoft.XMLHTTP")
                } catch (b) {
                    this.onError()
                }
            }
        }
        var f = this;
        d.onreadystatechange = function () {
            if (f.xhr.readyState == 4) {
                if (f.id) {
                    f.getElementContent()
                } else {
                    f.loadHTML()
                }
            }
        };
        var c = this.src;
        this.xhr = d;
        if (hs.forceAjaxReload) {
            c = c.replace(/$/, (/\?/.test(c) ? "&" : "?") + "dummy=" + (new Date()).getTime())
        }
        d.open("GET", c, false);
        d.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        d.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        d.send(null)
    },
    getElementContent: function () {
        hs.init();
        var a = window.opera || hs.ie6SSL ? {
            src: "about:blank"
        } : null;
        this.iframe = hs.createElement("iframe", a, {
            position: "absolute",
            top: "-9999px"
        }, hs.container);
        this.loadHTML()
    },
    loadHTML: function () {
        var c = this.cachedGet || this.xhr.responseText,
            b;
        if (this.pre) {
            hs.cachedGets[this.src] = c
        }
        if (!hs.ie || hs.uaVersion >= 5.5 && hs.uaVersion < 7) {
            c = c.replace(new RegExp("<link[^>]*>", "gi"), "").replace(new RegExp("<script[^>]*>.*?<\/script>", "gi"), "");
            if (this.iframe) {
                var f = this.iframe.contentDocument;
                if (!f && this.iframe.contentWindow) {
                    f = this.iframe.contentWindow.document
                }
                if (!f) {
                    var g = this;
                    setTimeout(function () {
                        g.loadHTML()
                    }, 25);
                    return
                }
                f.open();
                f.write(c);
                f.close();
                try {
                    c = f.getElementById(this.id).innerHTML
                } catch (d) {
                    try {
                        c = this.iframe.document.getElementById(this.id).innerHTML
                    } catch (d) {}
                }
                hs.discardElement(this.iframe)
            } else {
                b = /(<body[^>]*>|<\/body>)/ig;
                if (b.test(c)) {
                    c = c.split(b)[hs.ie ? 1 : 2]
                }
            }
        }
        hs.getElementByClass(this.content, "DIV", "highslide-body").innerHTML = c;
        this.onLoad();
        for (var a in this) {
            this[a] = null
        }
    }
};
hs.Slideshow = function (c, b) {
    if (hs.dynamicallyUpdateAnchors !== false) {
        hs.updateAnchors()
    }
    this.expKey = c;
    for (var a in b) {
        this[a] = b[a]
    }
    if (this.useControls) {
        this.getControls()
    }
    if (this.thumbstrip) {
        this.thumbstrip = hs.Thumbstrip(this)
    }
};
hs.Slideshow.prototype = {
    getControls: function () {
        this.controls = hs.createElement("div", {
            innerHTML: hs.replaceLang(hs.skin.controls)
        }, null, hs.container);
        var b = ["play", "pause", "previous", "next", "move", "full-expand", "close"];
        this.btn = {};
        var c = this;
        for (var a = 0; a < b.length; a++) {
            this.btn[b[a]] = hs.getElementByClass(this.controls, "li", "highslide-" + b[a]);
            this.enable(b[a])
        }
        this.btn.pause.style.display = "none"
    },
    checkFirstAndLast: function () {
        if (this.repeat || !this.controls) {
            return
        }
        var c = hs.expanders[this.expKey],
            b = c.getAnchorIndex(),
            a = /disabled$/;
        if (b == 0) {
            this.disable("previous")
        } else {
            if (a.test(this.btn.previous.getElementsByTagName("a")[0].className)) {
                this.enable("previous")
            }
        }
        if (b + 1 == hs.anchors.groups[c.slideshowGroup || "none"].length) {
            this.disable("next");
            this.disable("play")
        } else {
            if (a.test(this.btn.next.getElementsByTagName("a")[0].className)) {
                this.enable("next");
                this.enable("play")
            }
        }
    },
    enable: function (d) {
        if (!this.btn) {
            return
        }
        var c = this,
            b = this.btn[d].getElementsByTagName("a")[0],
            e = /disabled$/;
        b.onclick = function () {
            c[d]();
            return false
        };
        if (e.test(b.className)) {
            b.className = b.className.replace(e, "")
        }
    },
    disable: function (c) {
        if (!this.btn) {
            return
        }
        var b = this.btn[c].getElementsByTagName("a")[0];
        b.onclick = function () {
            return false
        };
        if (!/disabled$/.test(b.className)) {
            b.className += " disabled"
        }
    },
    hitSpace: function () {
        if (this.autoplay) {
            this.pause()
        } else {
            this.play()
        }
    },
    play: function (a) {
        if (this.btn) {
            this.btn.play.style.display = "none";
            this.btn.pause.style.display = ""
        }
        this.autoplay = true;
        if (!a) {
            hs.next(this.expKey)
        }
    },
    pause: function () {
        if (this.btn) {
            this.btn.pause.style.display = "none";
            this.btn.play.style.display = ""
        }
        clearTimeout(this.autoplay);
        this.autoplay = null
    },
    previous: function () {
        this.pause();
        hs.previous(this.btn.previous)
    },
    next: function () {
        this.pause();
        hs.next(this.btn.next)
    },
    move: function () {},
    "full-expand": function () {
        hs.getExpander().doFullExpand()
    },
    close: function () {
        hs.close(this.btn.close)
    }
};
hs.Thumbstrip = function (k) {
    function p(i) {
        hs.extend(f || {}, {
            overlayId: r,
            hsId: "thumbstrip",
            className: "highslide-thumbstrip-" + m + "-overlay " + (f.className || "")
        });
        if (hs.ieLt7) {
            f.fade = 0
        }
        i.createOverlay(f);
        hs.setStyles(r.parentNode, {
            overflow: "hidden"
        })
    }
    function c(i) {
        d(undefined, Math.round(i * r[h ? "offsetWidth" : "offsetHeight"] * 0.7))
    }
    function d(L, M) {
        if (L === undefined) {
            for (var K = 0; K < j.length; K++) {
                if (j[K] == hs.expanders[k.expKey].a) {
                    L = K;
                    break
                }
            }
        }
        if (L === undefined) {
            return
        }
        var G = r.getElementsByTagName("a"),
            z = G[L],
            w = z.parentNode,
            y = h ? "Left" : "Top",
            N = h ? "Right" : "Bottom",
            I = h ? "Width" : "Height",
            B = "offset" + y,
            H = "offset" + I,
            x = n.parentNode.parentNode[H],
            F = x - s[H],
            v = parseInt(s.style[h ? "left" : "top"]) || 0,
            C = v,
            D = 20;
        if (M !== undefined) {
            C = v - M;
            if (F > 0) {
                F = 0
            }
            if (C > 0) {
                C = 0
            }
            if (C < F) {
                C = F
            }
        } else {
            for (var K = 0; K < G.length; K++) {
                G[K].className = ""
            }
            z.className = "highslide-active-anchor";
            var J = L > 0 ? G[L - 1].parentNode[B] : w[B],
                A = w[B] + w[H] + (G[L + 1] ? G[L + 1].parentNode[H] : 0);
            if (A > x - v) {
                C = x - A
            } else {
                if (J < -v) {
                    C = -J
                }
            }
        }
        var E = w[B] + (w[H] - g[H]) / 2 + C;
        hs.animate(s, h ? {
            left: C
        } : {
            top: C
        }, null, "easeOutQuad");
        hs.animate(g, h ? {
            left: E
        } : {
            top: E
        }, null, "easeOutQuad");
        l.style.display = C < 0 ? "block" : "none";
        t.style.display = (C > F) ? "block" : "none"
    }
    var j = hs.anchors.groups[hs.expanders[k.expKey].slideshowGroup || "none"],
        f = k.thumbstrip,
        m = f.mode || "horizontal",
        u = (m == "float"),
        o = u ? ["div", "ul", "li", "span"] : ["table", "tbody", "tr", "td"],
        h = (m == "horizontal"),
        r = hs.createElement("div", {
            className: "highslide-thumbstrip highslide-thumbstrip-" + m,
            innerHTML: '<div class="highslide-thumbstrip-inner"><' + o[0] + "><" + o[1] + "></" + o[1] + "></" + o[0] + '></div><div class="highslide-scroll-up"><div></div></div><div class="highslide-scroll-down"><div></div></div><div class="highslide-marker"><div></div></div>'
        }, {
            display: "none"
        }, hs.container),
        e = r.childNodes,
        n = e[0],
        l = e[1],
        t = e[2],
        g = e[3],
        s = n.firstChild,
        a = r.getElementsByTagName(o[1])[0],
        b;
    for (var q = 0; q < j.length; q++) {
        if (q == 0 || !h) {
            b = hs.createElement(o[2], null, null, a)
        }(function () {
            var v = j[q],
                i = hs.createElement(o[3], null, null, b),
                w = q;
            hs.createElement("a", {
                href: v.href,
                onclick: function () {
                    hs.getExpander(this).focus();
                    return hs.transit(v)
                },
                innerHTML: hs.stripItemFormatter ? hs.stripItemFormatter(v) : v.innerHTML
            }, null, i)
        })()
    }
    if (!u) {
        l.onclick = function () {
            c(-1)
        };
        t.onclick = function () {
            c(1)
        };
        hs.addEventListener(a, document.onmousewheel !== undefined ? "mousewheel" : "DOMMouseScroll", function (i) {
            var v = 0;
            i = i || window.event;
            if (i.wheelDelta) {
                v = i.wheelDelta / 120;
                if (hs.opera) {
                    v = -v
                }
            } else {
                if (i.detail) {
                    v = -i.detail / 3
                }
            }
            if (v) {
                c(-v * 0.2)
            }
            if (i.preventDefault) {
                i.preventDefault()
            }
            i.returnValue = false
        })
    }
    return {
        add: p,
        selectThumb: d
    }
};
hs.langDefaults = hs.lang;
var HsExpander = hs.Expander;
if (hs.ie && window == window.top) {
    (function () {
        try {
            document.documentElement.doScroll("left")
        } catch (a) {
            setTimeout(arguments.callee, 50);
            return
        }
        hs.ready()
    })()
}
hs.addEventListener(document, "DOMContentLoaded", hs.ready);
hs.addEventListener(window, "load", hs.ready);
hs.addEventListener(document, "ready", function () {
    if (hs.expandCursor || hs.dimmingOpacity) {
        var c = hs.createElement("style", {
            type: "text/css"
        }, null, document.getElementsByTagName("HEAD")[0]);

        function b(e, f) {
            if (!hs.ie) {
                c.appendChild(document.createTextNode(e + " {" + f + "}"))
            } else {
                var d = document.styleSheets[document.styleSheets.length - 1];
                if (typeof (d.addRule) == "object") {
                    d.addRule(e, f)
                }
            }
        }
        function a(d) {
            return "expression( ( ( ignoreMe = document.documentElement." + d + " ? document.documentElement." + d + " : document.body." + d + " ) ) + 'px' );"
        }
        if (hs.expandCursor) {
            b(".highslide img", "cursor: url(" + hs.graphicsDir + hs.expandCursor + "), pointer !important;")
        }
        b(".highslide-viewport-size", hs.ie && (hs.uaVersion < 7 || document.compatMode == "BackCompat") ? "position: absolute; left:" + a("scrollLeft") + "top:" + a("scrollTop") + "width:" + a("clientWidth") + "height:" + a("clientHeight") : "position: fixed; width: 100%; height: 100%; left: 0; top: 0")
    }
});
hs.addEventListener(window, "resize", function () {
    hs.getPageSize();
    if (hs.viewport) {
        for (var a = 0; a < hs.viewport.childNodes.length; a++) {
            var b = hs.viewport.childNodes[a],
                c = hs.getExpander(b);
            c.positionOverlay(b);
            if (b.hsId == "thumbstrip") {
                c.slideshow.thumbstrip.selectThumb()
            }
        }
    }
});
hs.addEventListener(document, "mousemove", function (a) {
    hs.mouse = {
        x: a.clientX,
        y: a.clientY
    }
});
hs.addEventListener(document, "mousedown", hs.mouseClickHandler);
hs.addEventListener(document, "mouseup", hs.mouseClickHandler);
hs.addEventListener(document, "ready", hs.setClickEvents);
hs.addEventListener(window, "load", hs.preloadImages);
hs.addEventListener(window, "load", hs.preloadAjax)
};
