Вход Регистрация
Файл: apwa/gallery/plugins/highslide/highslide-full.js
Строк: 3308
<?php

/** 
 * Name:    Highslide JS
 * Version: 4.1.13 (2011-10-06)
 * Config:  default +events +unobtrusive +imagemap +slideshow +positioning +transitions +viewport +thumbstrip +inline +ajax +iframe +flash
 * 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 '',
    
creditsTitle '',
    
previousText 'Предыдущая',
    
nextText 'Следующая'
    
moveText 'Вперёд',
    
closeText 'Закрыть'
    
closeTitle 'Закрыть'
    
resizeTitle 'Изменить размер',
    
playText 'Слайдшой',
    
playTitle 'Запустить слайдшоу',
    
pauseText 'Пауза',
    
pauseTitle 'Приостановить',
    
previousTitle 'Предыдущая',
    
nextTitle 'Следующая',
    
moveTitle 'Вперёд',
    
fullExpandText '1:1',
    
restoreTitle 'Щелкните, чтобы закрыть изображение, нажмите и перетащите для перемещения. Используйте клавиши со стрелками для следующей и предыдущей.'
},
// See http://highslide.com/ref for examples of settings  
graphicsDir 'highslide/graphics/',
expandCursor 'zoomin.cur'// null disables
restoreCursor 'zoomout.cur'// null disables
expandDuration 250// milliseconds
restoreDuration 250,
marginLeft 15,
marginRight 15,
marginTop 15,
marginBottom 15,
zIndexCounter 1001// adjust to other absolutely positioned elements
loadingOpacity 0.75,
allowMultipleInstancestrue,
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 true// you can set this to false if you want
creditsHref 'http://highslide.com/',
creditsTarget '_self',
enableKeyListener true,
openerTagNames : ['a''area'], // Add more to allow slideshow indexing
transitions : [],
transitionDuration250,
dimmingOpacity0// Lightbox style dimming background
dimmingDuration50// 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 'auto'// position in the client (overrides anchor)
targetXnull// the id of a target element
targetYnull,
dragByHeadingtrue,
minWidth200,
minHeight200,
allowSizeReductiontrue// allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight
outlineType 'drop-shadow'// 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"><ul>'+
            
'<li class="highslide-previous">'+
                
'<a href="#" title="{hs.lang.previousTitle}" onclick="return hs.previous(this)">'+
                
'<span>{hs.lang.previousText}</span></a>'+
            
'</li>'+
            
'<li class="highslide-next">'+
                
'<a href="#" title="{hs.lang.nextTitle}" onclick="return hs.next(this)">'+
                
'<span>{hs.lang.nextText}</span></a>'+
            
'</li>'+
            
'<li class="highslide-move">'+
                
'<a href="#" title="{hs.lang.moveTitle}" onclick="return false">'+
                
'<span>{hs.lang.moveText}</span></a>'+
            
'</li>'+
            
'<li class="highslide-close">'+
                
'<a href="#" title="{hs.lang.closeTitle}" onclick="return hs.close(this)">'+
                
'<span>{hs.lang.closeText}</span></a>'+
            
'</li>'+
        
'</ul></div>'+
        
'<div class="highslide-body"></div>'+
        
'<div class="highslide-footer"><div>'+
            
'<span class="highslide-resize" title="{hs.lang.resizeTitle}"><span></span></span>'+
        
'</div></div>'
},
// END OF YOUR SETTINGS


// declare internal properties
preloadTheseImages : [],
continuePreloadingtrue,
expanders : [],
overrides : [
    
'allowSizeReduction',
    
'useBox',
    
'anchor',
    
'align',
    
'targetX',
    
'targetY',
    
'outlineType',
    
'outlineWhileAnimating',
    
'captionId',
    
'captionText',
    
'captionEval',
    
'captionOverlay',
    
'headingId',
    
'headingText',
    
'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) ? :
    
parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[/: ]([d.]+)/ ) || [0,'0'])[1]),
ie : (document.all && !window.opera),
//ie : navigator && /MSIE [678]/.test(navigator.userAgent), // ie9 compliant?
safari : /Safari/.test(navigator.userAgent),
geckoMac : /Macintosh.+rv:1.[0-8].+Gecko/.test(navigator.userAgent),

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

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

createElement : function (tagattribsstylesparentnopad) {
    var 
el document.createElement(tag);
    if (
attribshs.extend(elattribs);
    if (
nopadhs.setStyles(el, {padding0border'none'margin0});
    if (
styleshs.setStyles(elstyles);
    if (
parentparent.appendChild(el);    
    return 
el;
},

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

setStyles : function (elstyles) {
    for (var 
x in styles) {
        if (
hs.ieLt9 && == 'opacity') {
            if (
styles[x] > 0.99el.style.removeAttribute('filter');
            else 
el.style.filter 'alpha(opacity='+ (styles[x] * 100) +')';
        }
        else 
el.style[x] = styles[x];        
    }
},
animate: function(elpropopt) {
    var 
start,
        
end,
        
unit;
    if (
typeof opt != 'object' || opt === null) {
        var 
args arguments;
        
opt = {
            
durationargs[2],
            
easingargs[3],
            
completeargs[4]
        };
    }
    if (
typeof opt.duration != 'number'opt.duration 250;
    
opt.easing Math[opt.easing] || Math.easeInQuad;
    
opt.curAnim hs.extend({}, prop);
    for (var 
name in prop) {
        var 
= new hs.fx(elopt name );
        
        
start parseFloat(hs.css(elname)) || 0;
        
end parseFloat(prop[name]);
        
unit name != 'opacity' 'px' '';
        
        
e.customstartendunit );
    }    
},
css: function(elprop) {
    if (
el.style[prop]) {
        return 
el.style[prop];
    } else if (
document.defaultView) {
        return 
document.defaultView.getComputedStyle(elnull).getPropertyValue(prop);

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

getPageSize : function () {
    var 
documentwindowiebody d.compatMode && d.compatMode != 'BackCompat' 
        
d.documentElement d.body,
        
ieLt9 hs.ie && (hs.uaVersion || typeof pageXOffset == 'undefined');
    
    var 
width ieLt9 iebody.clientWidth 
            (
d.documentElement.clientWidth || self.innerWidth),
        
height ieLt9 iebody.clientHeight self.innerHeight;
    
hs.page = {
        
widthwidth,
        
heightheight,        
        
scrollLeftieLt9 iebody.scrollLeft pageXOffset,
        
scrollTopieLt9 iebody.scrollTop pageYOffset
    
};
    return 
hs.page;
},

getPosition : function(el)    {
    if (/
area/i.test(el.tagName)) {
        var 
imgs document.getElementsByTagName('img');
        for (var 
0imgs.lengthi++) {
            var 
imgs[i].useMap;
            if (
&& u.replace(/^.*?#/, '') == el.parentNode.name) {
                
el imgs[i];
                break;
            }
        }
    }
    var 
= { xel.offsetLeftyel.offsetTop };
    while (
el.offsetParent)    {
        
el el.offsetParent;
        
p.+= el.offsetLeft;
        
p.+= el.offsetTop;
        if (
el != document.body && el != document.documentElement) {
            
p.-= el.scrollLeft;
            
p.-= el.scrollTop;
        }
    }
    return 
p;
},

expand : function(aparamscustomtype) {
    if (!
ahs.createElement('a'null, { display'none' }, hs.container);
    if (
typeof a.getParams == 'function') return params;
    if (
type == 'html') {
        for (var 
0hs.sleeping.lengthi++) {
            if (
hs.sleeping[i] && hs.sleeping[i].== a) {
                
hs.sleeping[i].awake();
                
hs.sleeping[i] = null;
                return 
false;
            }
        }
        
hs.hasHtmlExpanders true;
    }    
    try {    
        new 
hs.Expander(aparamscustomtype);
        return 
false;
    } catch (
e) { return true; }
},

htmlExpand : function(aparamscustom) {
    return 
hs.expand(aparamscustom'html');
},

getSelfRendered : function() {
    return 
hs.createElement('div', { 
        
className'highslide-html-content'
        
innerHTMLhs.replaceLang(hs.skin.contentWrapper
    });
},
getElementByClass : function (eltagNameclassName) {
    var 
els el.getElementsByTagName(tagName);
    for (var 
0els.lengthi++) {
        if ((new 
RegExp(className)).test(els[i].className)) {
            return 
els[i];
        }
    }
    return 
null;
},
replaceLang : function(s) {
    
s.replace(/s/g' ');
    var 
re = /{hs.lang.([^}]+)}/g,
        
matches s.match(re),
        
lang;
    if (
matches) for (var 0matches.lengthi++) {
        
lang matches[i].replace(re"$1");
        if (
typeof hs.lang[lang] != 'undefined's.replace(matches[i], hs.lang[lang]);
    }
    return 
s;
},


setClickEvents : function () {
    var 
els document.getElementsByTagName('a');
    for (var 
0els.lengthi++) {
        var 
type hs.isUnobtrusiveAnchor(els[i]);
        if (
type && !els[i].hsHasSetClick) {
            (function(){
                var 
type;
                if (
hs.fireEvent(hs'onSetClickEvent', { elementels[i], type})) {
                    
els[i].onclick =(type == 'image') ?function() { return hs.expand(this) }:
                        function() { return 
hs.htmlExpand(this, { objectType} );};
                }
            })();
            
els[i].hsHasSetClick true;    
        }
    }
    
hs.getAnchors();
},
isUnobtrusiveAnchor: function(el) {
    if (
el.rel == 'highslide') return 'image';
    else if (
el.rel == 'highslide-ajax') return 'ajax';
    else if (
el.rel == 'highslide-iframe') return 'iframe';
    else if (
el.rel == 'highslide-swf') return 'swf';
},

getCacheBinding : function (a) {
    for (var 
0hs.cacheBindings.lengthi++) {
        if (
hs.cacheBindings[i][0] == a) {
            var 
hs.cacheBindings[i][1];
            
hs.cacheBindings[i][1] = c.cloneNode(1);
            return 
c;
        }
    }
    return 
null;
},

preloadAjax : function (e) {
    var 
arr hs.getAnchors();
    for (var 
0arr.htmls.lengthi++) {
        var 
arr.htmls[i];
        if (
hs.getParam(a'objectType') == 'ajax' && hs.getParam(a'cacheAjax'))
            
hs.push(hs.preloadTheseAjaxa);
    }
    
    
hs.preloadAjaxElement(0);
},

preloadAjaxElement : function (i) {
    if (!
hs.preloadTheseAjax[i]) return;
    var 
hs.preloadTheseAjax[i];
    var 
cache hs.getNode(hs.getParam(a'contentId'));
    if (!
cachecache hs.getSelfRendered();
    var 
ajax = new hs.Ajax(acache1);    
       
ajax.onError = function () { };
       
ajax.onLoad = function () {
           
hs.push(hs.cacheBindings, [acache]);
           
hs.preloadAjaxElement(1);
       };
       
ajax.run();
},

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

getParam : function (aparam) {
    
a.getParams a.onclick;
    var 
a.getParams a.getParams() : null;
    
a.getParams null;
    
    return (
&& typeof p[param] != 'undefined') ? p[param] : 
        (
typeof hs[param] != 'undefined' hs[param] : null);
},

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

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

discardElement : function(d) {
    if (
dhs.garbageBin.appendChild(d);
    
hs.garbageBin.innerHTML '';
},
dim : function(exp) {
    if (!
hs.dimmer) {
        
isNew true;
        
hs.dimmer hs.createElement ('div', {
                
className'highslide-dimming highslide-viewport-size',
                
owner'',
                
onclick: function() {
                    if (
hs.fireEvent(hs'onDimmerClick'))
                    
                        
hs.close();
                }
            }, {
                
visibility'visible',
                
opacity0
            
}, hs.containertrue);
            
        if (/(
Android|iPad|iPhone|iPod)/.test(navigator.userAgent)) {
            var 
body document.body;
            function 
pixDimmerSize() {
                
hs.setStyles(hs.dimmer, {
                    
widthbody.scrollWidth +'px',
                    
heightbody.scrollHeight +'px'
                
});
            }
            
pixDimmerSize();
            
hs.addEventListener(window'resize'pixDimmerSize);
        }
    }
    
hs.dimmer.style.display '';

    var 
isNew hs.dimmer.owner == '';
    
hs.dimmer.owner += '|'exp.key;
    
    if (
isNew) {
        if (
hs.geckoMac && hs.dimmingGeckoFix)
            
hs.setStyles(hs.dimmer, {
                
background'url('hs.graphicsDir 'geckodimmer.png)',
                
opacity1
            
});
        else
            
hs.animate(hs.dimmer, { opacityexp.dimmingOpacity }, hs.dimmingDuration);
    }
},
undim : function(key) {
    if (!
hs.dimmer) return;
    if (
typeof key != 'undefined'hs.dimmer.owner hs.dimmer.owner.replace('|'key'');

    if (
        (
typeof key != 'undefined' && hs.dimmer.owner != '')
        || (
hs.upcoming && hs.getParam(hs.upcoming'dimmingOpacity'))
    ) return;

    if (
hs.geckoMac && hs.dimmingGeckoFixhs.dimmer.style.display 'none';
    else 
hs.animate(hs.dimmer, { opacity}, hs.dimmingDurationnull, function() {
        
hs.dimmer.style.display 'none';
    });
},
transit : function (adjexp) {
    var 
last exp || hs.getExpander();
    
exp last;
    if (
hs.upcoming) return false;
    else 
hs.last last;
    
hs.removeEventListener(documentwindow.opera 'keypress' 'keydown'hs.keyHandler);
    try {
        
hs.upcoming adj;
        
adj.onclick();         
    } catch (
e){
        
hs.last hs.upcoming null;
    }
    try {
        if (!
adj || exp.transitions[1] != 'crossfade')
        
exp.close();
    } catch (
e) {}
    return 
false;
},

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

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

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

keyHandler : function(e) {
    if (!
ewindow.event;
    if (!
e.targete.target e.srcElement// ie
    
if (typeof e.target.form != 'undefined') return true// form element has focus
    
if (!hs.fireEvent(hs'onKeyDown'e)) return true;
    var 
exp hs.getExpander();
    
    var 
op null;
    switch (
e.keyCode) {
        case 
70// f
            
if (expexp.doFullExpand();
            return 
true;
        case 
32// Space
            
op 2;
            break;
        case 
34// Page Down
        
case 39// Arrow right
        
case 40// Arrow down
            
op 1;
            break;
        case 
8:  // Backspace
        
case 33// Page Up
        
case 37// Arrow left
        
case 38// Arrow up
            
op = -1;
            break;
        case 
27// Escape
        
case 13// Enter
            
op 0;
    }
    if (
op !== null) {if (op != 2)hs.removeEventListener(documentwindow.opera 'keypress' 'keydown'hs.keyHandler);
        if (!
hs.enableKeyListener) return true;
        
        if (
e.preventDefaulte.preventDefault();
        else 
e.returnValue false;
        if (
exp) {
            if (
op == 0) {
                
exp.close();
            } else if (
op == 2) {
                if (
exp.slideshowexp.slideshow.hitSpace();
            } else {
                if (
exp.slideshowexp.slideshow.pause();
                
hs.previousOrNext(exp.keyop);
            }
            return 
false;
        }
    }
    return 
true;
},


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


addSlideshow : function (options) {
    var 
sg options.slideshowGroup;
    if (
typeof sg == 'object') {
        for (var 
0sg.lengthi++) {
            var 
= {};
            for (var 
x in optionso[x] = options[x];
            
o.slideshowGroup sg[i];
            
hs.push(hs.slideshowso);
        }
    } else {
        
hs.push(hs.slideshowsoptions);
    }
},

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

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

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

reOrder : function () {
    for (var 
0hs.expanders.lengthi++)
        if (
hs.expanders[i] && hs.expanders[i].isExpandedhs.focusTopmost();
},
fireEvent : function (objevtargs) {
    return 
obj && obj[evt] ? (obj[evt](objargs) !== false) : true;
},

mouseClickHandler : function(e
{    
    if (!
ewindow.event;
    if (
e.button 1) return true;
    if (!
e.targete.target e.srcElement;
    
    var 
el e.target;
    while (
el.parentNode
        
&& !(/highslide-(image|move|html|resize)/.test(el.className)))
    {
        
el el.parentNode;
    }
    var 
exp hs.getExpander(el);
    if (
exp && (exp.isClosing || !exp.isExpanded)) return true;
        
    if (
exp && e.type == 'mousedown') {
        if (
e.target.form) return true;
        var 
match el.className.match(/highslide-(image|move|resize)/);
        if (
match) {
            
hs.dragArgs = { 
                
expexp 
                
typematch[1], 
                
leftexp.x.pos
                
widthexp.x.size
                
topexp.y.pos
                
heightexp.y.size
                
clickXe.clientX
                
clickYe.clientY
            
};
            
            
            
hs.addEventListener(document'mousemove'hs.dragHandler);
            if (
e.preventDefaulte.preventDefault(); // FF
            
            
if (/highslide-(image|html)-blur/.test(exp.content.className)) {
                
exp.focus();
                
hs.hasFocused true;
            }
            return 
false;
        }
        else if (/
highslide-html/.test(el.className) && hs.focusKey != exp.key) {
            
exp.focus();
            
exp.doShowHide('hidden');
        }
    } else if (
e.type == 'mouseup') {
        
        
hs.removeEventListener(document'mousemove'hs.dragHandler);
        
        if (
hs.dragArgs) {
            if (
hs.styleRestoreCursor && hs.dragArgs.type == 'image'
                
hs.dragArgs.exp.content.style.cursor hs.styleRestoreCursor;
            var 
hasDragged hs.dragArgs.hasDragged;
            
            if (!
hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) {
                if (
hs.fireEvent(exp'onImageClick'))
                
exp.close();
            } 
            else if (
hasDragged || (!hasDragged && hs.hasHtmlExpanders)) {
                
hs.dragArgs.exp.doShowHide('hidden');
            }
            
            if (
hs.dragArgs.exp.releaseMask
                
hs.dragArgs.exp.releaseMask.style.display 'none';
            
            if (
hasDraggedhs.fireEvent(hs.dragArgs.exp'onDrop'hs.dragArgs);
            
hs.hasFocused false;
            
hs.dragArgs null;
        
        } else if (/
highslide-image-blur/.test(el.className)) {
            
el.style.cursor hs.styleRestoreCursor;        
        }
    }
    return 
false;
},

dragHandler : function(e)
{
    if (!
hs.dragArgs) return true;
    if (!
ewindow.event;
    var 
hs.dragArgsexp a.exp;
    if (
exp.iframe) {        
        if (!
exp.releaseMaskexp.releaseMask hs.createElement('div'null
            { 
position'absolute'widthexp.x.size+'px'heightexp.y.size+'px'
                
leftexp.x.cb+'px'topexp.y.cb+'px'zIndex4,    background: (hs.ieLt9 'white' 'none'), 
                
opacity0.01 }, 
            
exp.wrappertrue);
        if (
exp.releaseMask.style.display == 'none')
            
exp.releaseMask.style.display '';
    }
    
    
a.dX e.clientX a.clickX;
    
a.dY e.clientY a.clickY;    
    
    var 
distance Math.sqrt(Math.pow(a.dX2) + Math.pow(a.dY2));
    if (!
a.hasDraggeda.hasDragged = (a.type != 'image' && distance 0)
        || (
distance > (hs.dragSensitivity || 5));
    
    if (
a.hasDragged && e.clientX && e.clientY 5) {
        if (!
hs.fireEvent(exp'onDrag'a)) return false;
        
        if (
a.type == 'resize'exp.resize(a);
        else {
            
exp.moveTo(a.left a.dXa.top a.dY);
            if (
a.type == 'image'exp.content.style.cursor 'move';
        }
    }
    return 
false;
},

wrapperMouseHandler : function (e) {
    try {
        if (!
ewindow.event;
        var 
over = /mouseover/i.test(e.type); 
        if (!
e.targete.target e.srcElement// ie
        
if (!e.relatedTargete.relatedTarget 
            
over e.fromElement e.toElement// ie
        
var exp hs.getExpander(e.target);
        if (!
exp.isExpanded) return;
        if (!
exp || !e.relatedTarget || hs.getExpander(e.relatedTargettrue) == exp 
            
|| hs.dragArgs) return;
        
hs.fireEvent(expover 'onMouseOver' 'onMouseOut'e);
        for (var 
0exp.overlays.lengthi++) (function() {
            var 
hs.$('hsId'exp.overlays[i]);
            if (
&& o.hideOnMouseOut) {
                if (
overhs.setStyles(o, { visibility'visible'display'' });
                
hs.animate(o, { opacityover o.opacity }, o.dur);
            }
        })();    
    } catch (
e) {}
},
addEventListener : function (eleventfunc) {
    if (
el == document && event == 'ready') {
        
hs.push(hs.onReadyfunc);
    }
    try {
        
el.addEventListener(eventfuncfalse);
    } catch (
e) {
        try {
            
el.detachEvent('on'eventfunc);
            
el.attachEvent('on'eventfunc);
        } catch (
e) {
            
el['on'event] = func;
        }
    } 
},

removeEventListener : function (eleventfunc) {
    try {
        
el.removeEventListener(eventfuncfalse);
    } catch (
e) {
        try {
            
el.detachEvent('on'eventfunc);
        } catch (
e) {
            
el['on'event] = null;
        }
    }
},

preloadFullImage : function (i) {
    if (
hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') {
        var 
img document.createElement('img');
        
img.onload = function() { 
            
img null;
            
hs.preloadFullImage(1);
        };
        
img.src hs.preloadTheseImages[i];
    }
},
preloadImages : function (number) {
    if (
number && typeof number != 'object'hs.numberOfImagesToPreload number;
    
    var 
arr hs.getAnchors();
    for (var 
0arr.images.length && hs.numberOfImagesToPreloadi++) {
        
hs.push(hs.preloadTheseImageshs.getSrc(arr.images[i]));
    }
    
    
// preload outlines
    
if (hs.outlineType)    new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} );
    else
    
    
hs.preloadFullImage(0);
    
    
// preload cursor
    
if (hs.restoreCursor) var cur hs.createElement('img', { srchs.graphicsDir hs.restoreCursor });
},


init : function () {
    if (!
hs.container) {
    
        
hs.ieLt7 hs.ie && hs.uaVersion 7;
        
hs.ieLt9 hs.ie && hs.uaVersion 9;
        
        
hs.getPageSize();
        
hs.ie6SSL hs.ieLt7 && location.protocol == 'https:';
        for (var 
x in hs.langDefaults) {
            if (
typeof hs[x] != 'undefined'hs.lang[x] = hs[x];
            else if (
typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined'
                
hs.lang[x] = hs.langDefaults[x];
        }
        
        
hs.container hs.createElement('div', {
                
className'highslide-container'
            
}, {
                
position'absolute',
                
left0
                
top0
                
width'100%'
                
zIndexhs.zIndexCounter,
                
direction'ltr'
            
}, 
            
document.body,
            
true
        
);
        
hs.loading hs.createElement('a', {
                
className'highslide-loading',
                
titlehs.lang.loadingTitle,
                
innerHTMLhs.lang.loadingText,
                
href'javascript:;'
            
}, {
                
position'absolute',
                
top'-9999px',
                
opacityhs.loadingOpacity,
                
zIndex1
            
}, 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.container1
        
);
        
hs.clearing hs.createElement('div'null
            { 
clear'both'paddingTop'1px' }, nulltrue);
        
        
// http://www.robertpenner.com/easing/ 
        
Math.linearTween = function (tbcd) {
            return 
c*t/b;
        };
        
Math.easeInQuad = function (tbcd) {
            return 
c*(t/=d)*b;
        };
        
Math.easeOutQuad = function (tbcd) {
            return -
*(t/=d)*(t-2) + b;
        };
        
        
hs.hideSelects hs.ieLt7;
        
hs.hideIframes = ((window.opera && hs.uaVersion 9) || navigator.vendor == 'KDE' 
            
|| (hs.ieLt7 && hs.uaVersion 5.5));
        
hs.fireEvent(this'onActivate');
    }
},
ready : function() {
    if (
hs.isReady) return;
    
hs.isReady true;
    for (var 
0hs.onReady.lengthi++) hs.onReady[i]();
},

updateAnchors : function() {
    var 
elelsall = [], images = [], htmls = [],groups = {}, re;
        
    for (var 
0hs.openerTagNames.lengthi++) {
        
els document.getElementsByTagName(hs.openerTagNames[i]);
        for (var 
0els.lengthj++) {
            
el els[j];
            
re hs.isHsAnchor(el);
            if (
re) {
                
hs.push(allel);
                if (
re[0] == 'hs.expand'hs.push(imagesel);
                else if (
re[0] == 'hs.htmlExpand'hs.push(htmlsel);
                var 
hs.getParam(el'slideshowGroup') || 'none';
                if (!
groups[g]) groups[g] = [];
                
hs.push(groups[g], el);
            }
        }
    }
    
hs.anchors = { allallgroupsgroupsimagesimageshtmlshtmls };
    return 
hs.anchors;
    
},

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


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

    if (!
options.origoptions.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.elemthis.nowthis);

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

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

        
t.elem this.elem;

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

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

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

            
this.options.curAnimthis.prop ] = true;

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

            if ( 
done ) {
                if (
this.options.completethis.options.complete.call(this.elem);
            }
            return 
false;
        } else {
            var 
this.startTime;
            
this.state this.options.duration;
            
this.pos this.options.easing(n01this.options.duration);
            
this.now this.start + ((this.end this.start) * this.pos);
            
this.update();
        }
        return 
true;
    }

};

hs.extendhs.fx, {
    
step: {

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

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

hs.Outline =  function (outlineTypeonLoad) {
    
this.onLoad onLoad;
    
this.outlineType outlineType;
    var 
hs.uaVersiontr;
    
    
this.hasAlphaImageLoader hs.ie && hs.uaVersion 7;
    if (!
outlineType) {
        if (
onLoadonLoad();
        return;
    }
    
    
hs.init();
    
this.table hs.createElement(
        
'table', { 
            
cellSpacing
        
}, {
            
visibility'hidden',
            
position'absolute',
            
borderCollapse'collapse',
            
width0
        
},
        
hs.container,
        
true
    
);
    var 
tbody hs.createElement('tbody'nullnullthis.table1);
    
    
this.td = [];
    for (var 
0<= 8i++) {
        if (
== 0tr hs.createElement('tr'null, { height'auto' }, tbodytrue);
        
this.td[i] = hs.createElement('td'nullnulltrtrue);
        var 
style != ? { lineHeight0fontSize0} : { position 'relative' };
        
hs.setStyles(this.td[i], style);
    }
    
this.td[4].className outlineType +' highslide-outline';
    
    
this.preloadGraphic(); 
};

hs.Outline.prototype = {
preloadGraphic : function () {
    var 
src hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png";
                
    var 
appendTo hs.safari && hs.uaVersion 525 hs.container null;
    
this.graphic hs.createElement('img'null, { position'absolute'
        
top'-9999px' }, appendTotrue); // for onload trigger
    
    
var pThis this;
    
this.graphic.onload = function() { pThis.onGraphicLoad(); };
    
    
this.graphic.src src;
},

onGraphicLoad : function () {
    var 
this.offset this.graphic.width 4,
        
pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],
        
dim = { height: (2*o) +'px'width: (2*o) +'px' };
    for (var 
0<= 8i++) {
        if (
pos[i]) {
            if (
this.hasAlphaImageLoader) {
                var 
= (== || == 7) ? '100%' this.graphic.width +'px';
                var 
div hs.createElement('div'null, { width'100%'height'100%'position'relative'overflow'hidden'}, this.td[i], true);
                
hs.createElement ('div'null, { 
                        
filter"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"this.graphic.src "')"
                        
position'absolute',
                        
widthw
                        
heightthis.graphic.height +'px',
                        
left: (pos[i][0]*o)+'px',
                        
top: (pos[i][1]*o)+'px'
                    
}, 
                
div,
                
true);
            } else {
                
hs.setStyles(this.td[i], { background'url('this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'});
            }
            
            if (
window.opera && (== || ==5)) 
                
hs.createElement('div'nulldimthis.td[i], true);
            
            
hs.setStyles (this.td[i], dim);
        }
    }
    
this.graphic null;
    if (
hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy();
    
hs.pendingOutlines[this.outlineType] = this;
    if (
this.onLoadthis.onLoad();
},
    
setPosition : function (posoffsetvisdureasing) {
    var 
exp this.exp,
        
stl exp.wrapper.style,
        
offset offset || 0,
        
pos pos || {
            
xexp.x.pos offset,
            
yexp.y.pos offset,
            
wexp.x.get('wsize') - offset,
            
hexp.y.get('wsize') - offset
        
};
    if (
visthis.table.style.visibility = (pos.>= this.offset
        ? 
'visible' 'hidden';
    
hs.setStyles(this.table, {
        
left: (pos.this.offset) +'px',
        
top: (pos.this.offset) +'px',
        
width: (pos.this.offset) +'px'
    
});
    
    
pos.-= this.offset;
    
pos.-= this.offset;
    
hs.setStyles (this.td[4], {
        
widthpos.>= pos.+'px' 0,
        
heightpos.>= pos.+'px' 0
    
});
    if (
this.hasAlphaImageLoaderthis.td[3].style.height 
        
this.td[5].style.height this.td[4].style.height;    
    
},
    
destroy : function(hide) {
    if (
hidethis.table.style.visibility 'hidden';
    else 
hs.discardElement(this.table);
}
};

hs.Dimension = function(expdim) {
    
this.exp exp;
    
this.dim dim;
    
this.ucwh dim == 'x' 'Width' 'Height';
    
this.wh this.ucwh.toLowerCase();
    
this.uclt dim == 'x' 'Left' 'Top';
    
this.lt this.uclt.toLowerCase();
    
this.ucrb dim == 'x' 'Right' 'Bottom';
    
this.rb this.ucrb.toLowerCase();
    
this.p1 this.p2 0;
};
hs.Dimension.prototype = {
get : function(key) {
    switch (
key) {
        case 
'loadingPos':
            return 
this.tpos this.tb + (this.hs.loading['offset'this.ucwh]) / 2;
        case 
'loadingPosXfade':
            return 
this.pos this.cbthis.p1 + (this.size hs.loading['offset'this.ucwh]) / 2;
        case 
'wsize':
            return 
this.size this.cb this.p1 this.p2;
        case 
'fitsize':
            return 
this.clientSize this.marginMin this.marginMax;
        case 
'maxsize':
            return 
this.get('fitsize') - this.cb this.p1 this.p2 ;
        case 
'opos':
            return 
this.pos - (this.exp.outline this.exp.outline.offset 0);
        case 
'osize':
            return 
this.get('wsize') + (this.exp.outline 2*this.exp.outline.offset 0);
        case 
'imgPad':
            return 
this.imgSize Math.round((this.size this.imgSize) / 2) : 0;
        
    }
},
calcBorders: function() {
    
// correct for borders
    
this.cb = (this.exp.content['offset'this.ucwh] - this.t) / 2;
    
    
this.marginMax hs['margin'this.ucrb];
},
calcThumb: function() {
    
this.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 == || this.tpos == -1) {
        
this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'this.uclt];        
    };
},
calcExpanded: function() {
    var 
exp this.exp;
    
this.justify 'auto';
    
    
// get alignment
    
if (exp.align == 'center'this.justify 'center';
    else if (new 
RegExp(this.lt).test(exp.anchor)) this.justify null;
    else if (new 
RegExp(this.rb).test(exp.anchor)) this.justify 'max';
    
    
    
// size and position
    
this.pos this.tpos this.cb this.tb;
    
    if (
this.maxHeight && this.dim == 'x')
        
exp.maxWidth Math.min(exp.maxWidth || this.fullexp.maxHeight this.full exp.y.full); 
        
    
this.size Math.min(this.fullexp['max'this.ucwh] || this.full);
    
this.minSize exp.allowSizeReduction 
        
Math.min(exp['min'this.ucwh], this.full) :this.full;
    if (
exp.isImage && exp.useBox)    {
        
this.size exp[this.wh];
        
this.imgSize this.full;
    }
    if (
this.dim == 'x' && hs.padToMinWidththis.minSize exp.minWidth;
    
this.target exp['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(i) {
    var 
exp this.exp;
    if (
exp.isImage && (exp.useBox || hs.padToMinWidth)) {
        
this.imgSize i;
        
this.size Math.max(this.sizethis.imgSize);
        
exp.content.style[this.lt] = this.get('imgPad')+'px';
    } else
    
this.size i;
    
    
exp.content.style[this.wh] = +'px';
    
exp.wrapper.style[this.wh] = this.get('wsize') +'px';
    if (
exp.outlineexp.outline.setPosition();
    if (
exp.releaseMaskexp.releaseMask.style[this.wh] = +'px';
    if (
this.dim == 'y' && exp.iDoc && exp.body.style.height != 'auto') try {
        
exp.iDoc.body.style.overflow 'auto';
    } catch (
e) {}
    if (
exp.isHtml) {
        var 
exp.scrollerDiv;
        if (
this.sizeDiff === undefined)
            
this.sizeDiff exp.innerContent['offset'this.ucwh] - d['offset'this.ucwh];
        
d.style[this.wh] = (this.size this.sizeDiff) +'px';
            
        if (
this.dim == 'x'exp.mediumContent.style.width 'auto';
        if (
exp.bodyexp.body.style[this.wh] = 'auto';
    }
    if (
this.dim == 'x' && exp.overlayBoxexp.sizeOverlayBox(true);
    if (
this.dim == 'x' && exp.slideshow && exp.isImage) {
        if (
== this.fullexp.slideshow.disable('full-expand');
        else 
exp.slideshow.enable('full-expand');
    }
},
setPos: function(i) {
    
this.pos i;
    
this.exp.wrapper.style[this.lt] = +'px';    
    
    if (
this.exp.outlinethis.exp.outline.setPosition();
    
}
};

hs.Expander = function(aparamscustomcontentType) {
    if (
document.readyState && hs.ie && !hs.isReady) {
        
hs.addEventListener(document'ready', function() {
            new 
hs.Expander(aparamscustomcontentType);
        });
        return;
    } 
    
this.a;
    
this.custom custom;
    
this.contentType contentType || 'image';
    
this.isHtml = (contentType == 'html');
    
this.isImage = !this.isHtml;
    
    
hs.continuePreloading false;
    
this.overlays = [];
    
this.last hs.last;
    
hs.last null;
    
hs.init();
    var 
key this.key hs.expanders.length;
    
// override inline parameters
    
for (var 0hs.overrides.lengthi++) {
        var 
name hs.overrides[i];
        
this[name] = params && typeof params[name] != 'undefined' ?
            
params[name] : hs[name];
    }
    if (!
this.srcthis.src a.href;
    
    
// get thumb
    
var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a;
    
el this.thumb el.getElementsByTagName('img')[0] || el;
    
this.thumbsUserSetId el.id || a.id;
    if (!
hs.fireEvent(this'onInit')) return true;
    
    
// check if already open
    
for (var 0hs.expanders.lengthi++) {
        if (
hs.expanders[i] && hs.expanders[i].== 
            
&& !(this.last && this.transitions[1] == 'crossfade')) {
            
hs.expanders[i].focus();
            return 
false;
        }
    }    

    
// cancel other
    
if (!hs.allowSimultaneousLoading) for (var 0hs.expanders.lengthi++) {
        if (
hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) {
            
hs.expanders[i].cancelLoading();
        }
    }
    
hs.expanders[key] = this;
    if (!
hs.allowMultipleInstances && !hs.upcoming) {
        if (
hs.expanders[key-1]) hs.expanders[key-1].close();
        if (
typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey])
            
hs.expanders[hs.focusKey].close();
    }
    
    
// initiate metrics
    
this.el el;
    
this.tpos this.pageOrigin || hs.getPosition(el);
    
hs.getPageSize();
    var 
this.= new hs.Dimension(this'x');
    
x.calcThumb();
    var 
this.= new hs.Dimension(this'y');
    
y.calcThumb();
    if (/
area/i.test(el.tagName)) this.getImageMapAreaCorrection(el);
    
this.wrapper hs.createElement(
        
'div', {
            
id'highslide-wrapper-'this.key,
            
className'highslide-wrapper 'this.wrapperClassName
        
}, {
            
visibility'hidden',
            
position'absolute',
            
zIndexhs.zIndexCounter += 2
        
}, nulltrue );
    
    
this.wrapper.onmouseover this.wrapper.onmouseout hs.wrapperMouseHandler;
    if (
this.contentType == 'image' && this.outlineWhileAnimating == 2)
        
this.outlineWhileAnimating 0;
    
    
// get the outline
    
if (!this.outlineType 
        
|| (this.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 
exp this;
        new 
hs.Outline(this.outlineType
            function () {
                
exp.connectOutline();
                
exp[exp.contentType +'Create']();
            } 
        );
    }
    return 
true;
};

hs.Expander.prototype = {
error : function(e) {
    if (
hs.debugalert ('Line 'e.lineNumber +': 'e.message);
    else 
window.location.href this.src;
},

connectOutline : function() {
    var 
outline this.outline hs.pendingOutlines[this.outlineType];
    
outline.exp this;
    
outline.table.style.zIndex this.wrapper.style.zIndex 1;
    
hs.pendingOutlines[this.outlineType] = null;
},

showLoading : function() {
    if (
this.onLoadStarted || this.loading) return;
    
    
this.loading hs.loading;
    var 
exp this;
    
this.loading.onclick = function() {
        
exp.cancelLoading();
    };
    
    
    if (!
hs.fireEvent(this'onShowLoading')) return;
    var 
exp this
        
this.x.get('loadingPos') +'px',
        
this.y.get('loadingPos') +'px';
    if (!
tgt && this.last && this.transitions[1] == 'crossfade'
        var 
tgt this.last
    if (
tgt) {
        
tgt.x.get('loadingPosXfade') +'px';
        
tgt.y.get('loadingPosXfade') +'px';
        
this.loading.style.zIndex hs.zIndexCounter++;
    }
    
setTimeout(function () { 
        if (
exp.loadinghs.setStyles(exp.loading, { leftltoptzIndexhs.zIndexCounter++ })}
    , 
100);
},

imageCreate : function() {
    var 
exp this;
    
    var 
img document.createElement('img');
    
this.content img;
    
img.onload = function () {
        if (
hs.expanders[exp.key]) exp.contentLoaded(); 
    };
    if (
hs.blockRightClickimg.oncontextmenu = function() { return false; };
    
img.className 'highslide-image';
    
hs.setStyles(img, {
        
visibility'hidden',
        
display'block',
        
position'absolute',
        
maxWidth'9999px',
        
zIndex3
    
});
    
img.title hs.lang.restoreTitle;
    if (
hs.safari && hs.uaVersion 525hs.container.appendChild(img);
    if (
hs.ie && hs.flushImgSizeimg.src null;
    
img.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 
body hs.getElementByClass(this.content'div''highslide-body');
        if (
bodybody.appendChild(this.maincontent);
        
this.maincontent.style.display 'block';
    }
    
hs.fireEvent(this'onAfterGetContent');
    
    var 
innerContent this.innerContent this.content;
    
    if (/(
swf|iframe)/.test(this.objectType)) this.setObjContainerSize(innerContent);
    
    
// the content tree
    
hs.container.appendChild(this.wrapper);
    
hs.setStylesthis.wrapper, { 
        
position'static',
        
padding'0 'hs.marginRight +'px 0 'hs.marginLeft +'px'
    
});
    
this.content hs.createElement(
        
'div', {
            
className'highslide-html' 
        
}, {
            
position'relative',
            
zIndex3,
            
height0,
            
overflow'hidden'
        
},
        
this.wrapper
    
);
    
this.mediumContent hs.createElement('div'nullnullthis.content1);
    
this.mediumContent.appendChild(innerContent);
    
    
hs.setStyles (innerContent, { 
        
position'relative',
        
display'block',
        
directionhs.lang.cssDirection || ''
    
});
    if (
this.widthinnerContent.style.width this.width +'px';
    if (
this.heighths.setStyles(innerContent, {
        
heightthis.height +'px',
        
overflow'hidden'
    
});
    if (
innerContent.offsetWidth this.minWidth)
        
innerContent.style.width this.minWidth +'px';
        
    
    
    if (
this.objectType == 'ajax' && !hs.getCacheBinding(this.a)) {
        
this.showLoading();
        var 
exp this;
        var 
ajax = new hs.Ajax(this.ainnerContent);
        
ajax.src this.src;
        
ajax.onLoad = function () {    if (hs.expanders[exp.key]) exp.contentLoaded(); };
        
ajax.onError = function () { location.href exp.src; };
        
ajax.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 
this.xthis.y;
        
        if (
this.loading) {
            
hs.setStyles(this.loading, { top'-9999px' });
            
this.loading null;
            
hs.fireEvent(this'onHideLoading');
        }
        if (
this.isImage) {    
            
x.full this.content.width;
            
y.full this.content.height;
            
            
hs.setStyles(this.content, {
                
widthx.+'px',
                
heighty.+'px'
            
});
            
this.wrapper.appendChild(this.content);
            
hs.container.appendChild(this.wrapper);
        } else if (
this.htmlGetSizethis.htmlGetSize();
        
        
x.calcBorders();
        
y.calcBorders();
        
        
hs.setStyles (this.wrapper, {
            
left: (x.tpos x.tb x.cb) +'px',
            
top: (y.tpos x.tb y.cb) +'px'
        
});
        
        
        
this.initSlideshow();
        
this.getOverlays();
        
        var 
ratio x.full y.full;
        
x.calcExpanded();
        
this.justify(x);
        
        
y.calcExpanded();
        
this.justify(y);
        if (
this.isHtmlthis.htmlSizeOperations();
        if (
this.overlayBoxthis.sizeOverlayBox(01);

        
        if (
this.allowSizeReduction) {
            if (
this.isImage)
                
this.correctRatio(ratio);
            else 
this.fitOverlayBox();
            var 
ss this.slideshow;            
            if (
ss && this.last && ss.controls && ss.fixedControls) {
                var 
pos ss.overlayOptions.position || ''p;
                for (var 
dim in hs.oPos) for (var 05i++) {
                    
this[dim];
                    if (
pos.match(hs.oPos[dim][i])) {
                        
p.pos this.last[dim].pos 
                            
+ (this.last[dim].p1 p.p1)
                            + (
this.last[dim].size p.size) * [00.511][i];
                        if (
ss.fixedControls == 'fit') {
                            if (
p.pos p.size p.p1 p.p2 p.scroll p.clientSize p.marginMax)
                                
p.pos p.scroll p.clientSize p.size p.marginMin p.marginMax p.p1 p.p2;
                            if (
p.pos p.scroll p.marginMinp.pos p.scroll p.marginMin
                        } 
                    }
                }
            }
            if (
this.isImage && this.x.full > (this.x.imgSize || this.x.size)) {
                
this.createFullExpand();
                if (
this.overlays.length == 1this.sizeOverlayBox();
            }
        }
        
this.show();
        
    } catch (
e) {
        
this.error(e);
    }
},


setObjContainerSize : function(parentauto) {
    var 
hs.getElementByClass(parent'DIV''highslide-body');
    if (/(
iframe|swf)/.test(this.objectType)) {
        if (
this.objectWidthc.style.width this.objectWidth +'px';
        if (
this.objectHeightc.style.height this.objectHeight +'px';
    }
},

writeExtendedContent : function () {
    if (
this.hasExtendedContent) return;
    var 
exp this;
    
this.body hs.getElementByClass(this.innerContent'DIV''highslide-body');
    if (
this.objectType == 'iframe') {
        
this.showLoading();
        var 
ruler hs.clearing.cloneNode(1);
        
this.body.appendChild(ruler);
        
this.newWidth this.innerContent.offsetWidth;
        if (!
this.objectWidththis.objectWidth ruler.offsetWidth;
        var 
hDiff this.innerContent.offsetHeight this.body.offsetHeight,
            
this.objectHeight || hs.page.height hDiff hs.marginTop hs.marginBottom,
            
onload 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:'+'px" '
            
onload +' 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 
this.swfOptions;
        if (!
a.paramsa.params = {};
        if (
typeof a.params.wmode == 'undefined'a.params.wmode 'transparent';
        if (
swfobjectswfobject.embedSWF(this.srcthis.body.idthis.objectWidththis.objectHeight
            
a.version || '7'a.expressInstallSwfurla.flashvarsa.paramsa.attributes);
    }
    
this.hasExtendedContent true;
},
htmlGetSize : function() {
    if (
this.iframe && !this.objectHeight) { // loadtime before
        
this.iframe.style.height this.body.style.height this.getIframePageHeight() +'px';
    }
    
this.innerContent.appendChild(hs.clearing);
    if (!
this.x.fullthis.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)) { // ie css bug
        
this.newHeight parseInt(this.innerContent.currentStyle.height);
    }
    
hs.setStylesthis.wrapper, { position'absolute',    padding'0'});
    
hs.setStylesthis.content, { widththis.x.+'px'heightthis.y.+'px'});
    
},

getIframePageHeight : function() {
    var 
h;
    try {
        var 
doc this.iDoc this.iframe.contentDocument || this.iframe.contentWindow.document;
        var 
clearing doc.createElement('div');
        
clearing.style.clear 'both';
        
doc.body.appendChild(clearing);
        
clearing.offsetTop;
        if (
hs.ie+= parseInt(doc.body.currentStyle.marginTop
            + 
parseInt(doc.body.currentStyle.marginBottom) - 1;
    } catch (
e) { // other domain
        
300;
    }
    return 
h;
},
correctIframeSize : function () {
    var 
wDiff this.innerContent.offsetWidth this.ruler.offsetWidth;
    
hs.discardElement(this.ruler);
    if (
wDiff 0wDiff 0;
    
    var 
hDiff 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 (
e) {}
    
hs.setStyles(this.iframe, { 
        
widthMath.abs(this.x.size wDiff) +'px'
        
heightMath.abs(this.y.size hDiff) +'px'
    
});
    
hs.setStyles(this.body, { 
        
widththis.iframe.style.width
        
heightthis.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();    
    
    
// handle minimum size
    
if (this.x.size this.x.full && !this.allowWidthReductionthis.x.size this.x.full;
    if (
this.y.size this.y.full && !this.allowHeightReductionthis.y.size this.y.full;
    
this.scrollerDiv this.innerContent;
    
hs.setStyles(this.mediumContent, { 
        
position'relative',
        
widththis.x.size +'px'
    
});
    
hs.setStyles(this.innerContent, { 
        
border'none',
        
width'auto',
        
height'auto'
    
});
    var 
node hs.getElementByClass(this.innerContent'DIV''highslide-body');
    if (
node && !/(iframe|swf)/.test(this.objectType)) {
        var 
cNode node// wrap to get true size
        
node hs.createElement(cNode.nodeNamenull, {overflow'hidden'}, nulltrue);
        
cNode.parentNode.insertBefore(nodecNode);
        
node.appendChild(hs.clearing); // IE6
        
node.appendChild(cNode);
        
        var 
wDiff this.innerContent.offsetWidth node.offsetWidth;
        var 
hDiff this.innerContent.offsetHeight node.offsetHeight;
        
node.removeChild(hs.clearing);
        
        var 
kdeBugCorr hs.safari || navigator.vendor == 'KDE' 0// KDE repainting bug
        
hs.setStyles(node, { 
                
width: (this.x.size wDiff kdeBugCorr) +'px'
                
height: (this.y.size hDiff) +'px',
                
overflow'auto'
                
position'relative' 
            

        );
        if (
kdeBugCorr && cNode.offsetHeight node.offsetHeight)    {
            
node.style.width = (parseInt(node.style.width) + kdeBugCorr) + 'px';
        }
        
this.scrollingContent node;
        
this.scrollerDiv this.scrollingContent;
    }
    if (
this.iframe && this.objectLoadTime == 'before'this.correctIframeSize();
    if (!
this.scrollingContent && this.y.size this.mediumContent.offsetHeightthis.scrollerDiv this.content;
    
    if (
this.scrollerDiv == this.content && !this.allowWidthReduction && !/(iframe|swf)/.test(this.objectType)) {
        
this.x.size += 17// room for scrollbars
    
}
    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(area) {
    var 
area.coords.split(',');
    for (var 
0c.lengthi++) c[i] = parseInt(c[i]);
    
    if (
area.shape.toLowerCase() == 'circle') {
        
this.x.tpos += c[0] - c[2];
        
this.y.tpos += c[1] - c[2];
        
this.x.this.y.c[2];
    } else {
        var 
maxXmaxYminX maxX c[0], minY maxY c[1];
        for (var 
0c.lengthi++) {
            if (
== 0) {
                
minX Math.min(minXc[i]);
                
maxX Math.max(maxXc[i]);
            } else {
                
minY Math.min(minYc[i]);
                
maxY Math.max(maxYc[i]);
            }
        }
        
this.x.tpos += minX;
        
this.x.maxX minX;
        
this.y.tpos += minY;
        
this.y.maxY minY;
    }
},
justify : function (pmoveOnly) {
    var 
tgtArrtgt p.targetdim == this.'x' 'y';
    
    if (
tgt && tgt.match(/ /)) {
        
tgtArr tgt.split(' ');
        
tgt tgtArr[0];
    }
    if (
tgt && hs.$(tgt)) {
        
p.pos hs.getPosition(hs.$(tgt))[dim];
        if (
tgtArr && tgtArr[1] && tgtArr[1].match(/^[-]?[0-9]+px$/)) 
            
p.pos += parseInt(tgtArr[1]);
        if (
p.size p.minSizep.size p.minSize;
        
    } else if (
p.justify == 'auto' || p.justify == 'center') {
    
        var 
hasMovedMin false;
        
        var 
allowReduce p.exp.allowSizeReduction;
        if (
p.justify == 'center')
            
p.pos Math.round(p.scroll + (p.clientSize p.marginMin p.marginMax p.get('wsize')) / 2);
        else
            
p.pos Math.round(p.pos - ((p.get('wsize') - p.t) / 2));
        if (
p.pos p.scroll p.marginMin) {
            
p.pos p.scroll p.marginMin;
            
hasMovedMin true;        
        }
        if (!
moveOnly && p.size p.minSize) {
            
p.size p.minSize;
            
allowReduce false;
        }
        if (
p.pos p.get('wsize') > p.scroll p.clientSize p.marginMax) {
            if (!
moveOnly && hasMovedMin && allowReduce) {
                
p.size Math.min(p.sizep.get(dim == 'y' 'fitsize' 'maxsize'));
            } else if (
p.get('wsize') < p.get('fitsize')) {
                
p.pos p.scroll p.clientSize p.marginMax p.get('wsize');
            } else { 
// image larger than viewport
                
p.pos p.scroll p.marginMin;
                if (!
moveOnly && allowReducep.size p.get(dim == 'y' 'fitsize' 'maxsize');
            }            
        }
        
        if (!
moveOnly && p.size p.minSize) {
            
p.size p.minSize;
            
allowReduce false;
        }
        
    
    } else if (
p.justify == 'max') {
        
p.pos Math.floor(p.pos p.size p.t);
    }
    
        
    if (
p.pos p.marginMin) {
        var 
tmpMin p.pos;
        
p.pos p.marginMin
        
        if (
allowReduce && !moveOnlyp.size p.size - (p.pos tmpMin);
        
    }
},

correctRatio : function(ratio) {
    var 
this.x
        
this.y,
        
changed false,
        
xSize Math.min(x.fullx.size),
        
ySize Math.min(y.fully.size),
        
useBox = (this.useBox || hs.padToMinWidth);
    
    if (
xSize ySize ratio) { // width greater
        
xSize ySize ratio;
        if (
xSize x.minSize) { // below minWidth
            
xSize x.minSize;
            
ySize xSize ratio;
        }
        
changed true;
    
    } else if (
xSize ySize ratio) { // height greater
        
ySize xSize ratio;
        
changed true;
    }
    
    if (
hs.padToMinWidth && x.full x.minSize) {
        
x.imgSize x.full;
        
y.size y.imgSize y.full;
    } else if (
this.useBox) {
        
x.imgSize xSize;
        
y.imgSize ySize;
    } else {
        
x.size xSize;
        
y.size ySize;
    }
    
changed this.fitOverlayBox(this.useBox null ratiochanged);
    if (
useBox && y.size y.imgSize) {
        
y.imgSize y.size;
        
x.imgSize y.size ratio;
    }
    if (
changed || useBox) {
        
x.pos x.tpos x.cb x.tb;
        
x.minSize x.size;
        
this.justify(xtrue);
    
        
y.pos y.tpos y.cb y.tb;
        
y.minSize y.size;
        
this.justify(ytrue);
        if (
this.overlayBoxthis.sizeOverlayBox();
    }
    
    
},
fitOverlayBox : function(ratiochanged) {
    var 
this.xthis.y;
    if (
this.overlayBox && (this.isImage || this.allowHeightReduction)) {
        while (
y.size this.minHeight && x.size this.minWidth 
                
&&  y.get('wsize') > y.get('fitsize')) {
            
y.size -= 10;
            if (
ratiox.size y.size ratio;
            
this.sizeOverlayBox(01);
            
changed true;
        }
    }
    return 
changed;
},

reflow : function () {
    if (
this.scrollerDiv) {
        var 
= /iframe/i.test(this.scrollerDiv.tagName) ? (this.getIframePageHeight() + 1) +'px' 'auto';
        if (
this.bodythis.body.style.height h;
        
this.scrollerDiv.style.height h;
        
this.y.setSize(this.innerContent.offsetHeight);
    }
},

show : function () {
    var 
this.xthis.y;
    
this.doShowHide('hidden');
    
hs.fireEvent(this'onBeforeExpand');
    if (
this.slideshow && this.slideshow.thumbstripthis.slideshow.thumbstrip.selectThumb();
    
    
// Apply size change
    
this.changeSize(
        
1, {
            
wrapper: {
                
width x.get('wsize'),
                
height y.get('wsize'),
                
leftx.pos,
                
topy.pos
            
},
            
content: {
                
leftx.p1 x.get('imgPad'),
                
topy.p1 y.get('imgPad'),
                
width:x.imgSize ||x.size,
                
height:y.imgSize ||y.size
            
}
        },
        
hs.expandDuration
    
);
},

changeSize : function(uptodur) {
    
// transition
    
var trans this.transitions,
    
other up ? (this.last this.last.null) : hs.upcoming,
    
= (trans[1] && other 
            
&& hs.getParam(other'transitions')[1] == trans[1]) ?
        
trans[1] : trans[0];
        
    if (
this[t] && != 'expand') {
        
this[t](upto);
        return;
    }
    
    if (
this.outline && !this.outlineWhileAnimating) {
        if (
upthis.outline.setPosition();
        else 
this.outline.destroy(
                (
this.isHtml && this.preserveContent));
    }
    
    
    if (!
upthis.destroyOverlays();
    
    var 
exp this,
        
exp.x,
        
exp.y,
        
easing this.easing;
    if (!
upeasing this.easingClose || easing;
    var 
after up ?
        function() {
                
            if (
exp.outlineexp.outline.table.style.visibility "visible";
            
setTimeout(function() {
                
exp.afterExpand();
            }, 
50);
        } :
        function() {
            
exp.afterClose();
        };
    if (
uphs.setStylesthis.wrapper, {
        
widthx.+'px',
        
heighty.+'px'
    
});
    if (
up && this.isHtml) {
        
hs.setStyles(this.wrapper, {
            
left: (x.tpos x.cb x.tb) +'px',
            
top: (y.tpos y.cb y.tb) +'px'
        
});
    }
    if (
this.fadeInOut) {
        
hs.setStyles(this.wrapper, { opacityup });
        
hs.extend(to.wrapper, { opacityup });
    }
    
hs.animatethis.wrapperto.wrapper, {
        
durationdur,
        
easingeasing,
        
step: function(valargs) {
            if (
exp.outline && exp.outlineWhileAnimating && args.prop == 'top') {
                var 
fac up args.pos args.pos;
                var 
pos = {
                    
wx.+ (x.get('wsize') - x.t) * fac,
                    
hy.+ (y.get('wsize') - y.t) * fac,
                    
xx.tpos + (x.pos x.tpos) * fac,
                    
yy.tpos + (y.pos y.tpos) * fac
                
};
                
exp.outline.setPosition(pos01);                
            }
            if (
exp.isHtml) {    
                if (
args.prop == 'left'
                    
exp.mediumContent.style.left = (x.pos val) +'px';
                if (
args.prop == 'top'
                    
exp.mediumContent.style.top = (y.pos val) +'px';
            }
        }
    });
    
hs.animatethis.contentto.contentdureasingafter);
    if (
up) {
        
this.wrapper.style.visibility 'visible';
        
this.content.style.visibility 'visible';
        if (
this.isHtmlthis.innerContent.style.visibility 'visible';
        
this.a.className += ' highslide-active-anchor';
    }
},



fade : function(upto) {
    
this.outlineWhileAnimating false;
    var 
exp this,    up hs.expandDuration 0;
    
    if (
up) {
        
hs.animate(this.wrapperto.wrapper0);
        
hs.setStyles(this.wrapper, { opacity0visibility'visible' });
        
hs.animate(this.contentto.content0);
        
this.content.style.visibility 'visible';

        
hs.animate(this.wrapper, { opacity}, tnull
            function() { 
exp.afterExpand(); });
    }
    
    if (
this.outline) {
        
this.outline.table.style.zIndex this.wrapper.style.zIndex;
        var 
dir up || -1
            
offset this.outline.offset,
            
startOff up offset,
            
endOff upoffset 3;
        for (var 
startOffdir <= dir endOff+= dir+= 25) {
            (function() {
                var 
up endOff startOff i;
                
setTimeout(function() {
                    
exp.outline.setPosition(0o1);
                }, 
t);
            })();
        }
    }
    
    
    if (
up) {}//setTimeout(function() { exp.afterExpand(); }, t+50);
    
else {
        
setTimeout( function() {
            if (
exp.outlineexp.outline.destroy(exp.preserveContent);
            
            
exp.destroyOverlays();
    
            
hs.animateexp.wrapper, { opacity}, hs.restoreDurationnull, function(){
                
exp.afterClose();
            });
        }, 
t);        
    }
},
crossfade : function (uptofrom) {
    if (!
up) return;
    var 
exp this
        
last this.last,
        
this.x,
        
this.y,
        
lastX last.x,
        
lastY last.y,
        
wrapper this.wrapper,
        
content this.content,
        
overlayBox this.overlayBox;
    
hs.removeEventListener(document'mousemove'hs.dragHandler);
    
    
hs.setStyles(content, { 
        
width: (x.imgSize || x.size) +'px'
        
height: (y.imgSize || y.size) +'px'        
    
});
    if (
overlayBoxoverlayBox.style.overflow 'visible';
    
this.outline last.outline;
    if (
this.outlinethis.outline.exp exp;
    
last.outline null;
    var 
fadeBox hs.createElement('div', {
            
className'highslide-'this.contentType
        
}, { 
            
position'absolute'
            
zIndex4,
            
overflow'hidden',
            
display'none'
        
}
    );
    var 
names = { oldImglastnewImgthis };
    for (var 
n in names) {     
        
this[n] = names[n].content.cloneNode(1);
        
hs.setStyles(this[n], {
            
position'absolute',
            
border0,
            
visibility'visible'
        
});
        
fadeBox.appendChild(this[n]);
    }
    
wrapper.appendChild(fadeBox);
    if (
this.isHtmlhs.setStyles(this.mediumContent, { 
        
left0,
        
top0
    
});
    if (
overlayBox) {
        
overlayBox.className '';
        
wrapper.appendChild(overlayBox);
    }
    
fadeBox.style.display '';
    
last.content.style.display 'none';
    
    
    if (
hs.safari && hs.uaVersion 525) {
        
this.wrapper.style.visibility 'visible';
    }
    
hs.animate(wrapper, {
        
widthx.size
    
}, {
        
durationhs.transitionDuration
        
step: function(valargs) {
            var 
pos args.pos,
                
invPos pos;
            var 
prop,
                
size = {}, 
                
props = ['pos''size''p1''p2'];
            for (var 
n in props) {
                
prop props[n];
                
size['x'prop] = Math.round(invPos lastX[prop] + pos x[prop]);
                
size['y'prop] = Math.round(invPos lastY[prop] + pos y[prop]);
                
size.ximgSize Math.round(
                    
invPos * (lastX.imgSize || lastX.size) + pos * (x.imgSize || x.size));
                
size.ximgPad Math.round(invPos lastX.get('imgPad') + pos x.get('imgPad'));
                
size.yimgSize Math.round(
                    
invPos * (lastY.imgSize || lastY.size) + pos * (y.imgSize || y.size));
                
size.yimgPad Math.round(invPos lastY.get('imgPad') + pos y.get('imgPad'));
            }
            if (
exp.outlineexp.outline.setPosition({ 
                
xsize.xpos
                
ysize.ypos
                
wsize.xsize size.xp1 size.xp2 x.cb
                
hsize.ysize size.yp1 size.yp2 y.cb
            
});
            
last.wrapper.style.clip 'rect('
                
+ (size.ypos lastY.pos)+'px, '
                
+ (size.xsize size.xp1 size.xp2 size.xpos lastX.cb lastX.pos) +'px, '
                
+ (size.ysize size.yp1 size.yp2 size.ypos lastY.cb lastY.pos) +'px, '
                
+ (size.xpos lastX.pos)+'px)';
                
            
hs.setStyles(content, {
                
top: (size.yp1 y.get('imgPad')) +'px',
                
left: (size.xp1 x.get('imgPad')) +'px',
                
marginTop: (y.pos size.ypos) +'px',
                
marginLeft: (x.pos size.xpos) +'px'
            
});
            
hs.setStyles(wrapper, {
                
topsize.ypos +'px',
                
leftsize.xpos +'px',
                
width: (size.xp1 size.xp2 size.xsize x.cb)+ 'px',
                
height: (size.yp1 size.yp2 size.ysize y.cb) + 'px'
            
});
            
hs.setStyles(fadeBox, {
                
width: (size.ximgSize || size.xsize) + 'px',
                
height: (size.yimgSize || size.ysize) +'px',
                
left: (size.xp1 size.ximgPad)  +'px',
                
top: (size.yp1 size.yimgPad) +'px',
                
visibility'visible'
            
});
            
            
hs.setStyles(exp.oldImg, {
                
top: (lastY.pos size.ypos lastY.p1 size.yp1 lastY.get('imgPad') - size.yimgPad)+'px',
                
left: (lastX.pos size.xpos lastX.p1 size.xp1 lastX.get('imgPad') - size.ximgPad)+'px'
            
});        
            
            
hs.setStyles(exp.newImg, {
                
opacitypos,
                
top: (y.pos size.ypos y.p1 size.yp1 y.get('imgPad') - size.yimgPad) +'px',
                
left: (x.pos size.xpos x.p1 size.xp1 x.get('imgPad') - size.ximgPad) +'px'
            
});
            if (
overlayBoxhs.setStyles(overlayBox, {
                
widthsize.xsize 'px',
                
heightsize.ysize +'px',
                
left: (size.xp1 x.cb)  +'px',
                
top: (size.yp1 y.cb) +'px'
            
});
        },
        
complete: function () {
            
wrapper.style.visibility content.style.visibility 'visible';
            
content.style.display 'block';
            
hs.discardElement(fadeBox);
            
exp.afterExpand();
            
last.afterClose();
            
exp.last null;
        }
        
    });
},
reuseOverlay : function(oel) {
    if (!
this.last) return false;
    for (var 
0this.last.overlays.lengthi++) {
        var 
oDiv hs.$('hsId'this.last.overlays[i]);
        if (
oDiv && oDiv.hsId == o.hsId) {
            
this.genOverlayBox();
            
oDiv.reuse this.key;
            
hs.push(this.overlaysthis.last.overlays[i]);
            return 
true;
        }
    }
    return 
false;
},


afterExpand : function() {
    
this.isExpanded true;    
    
this.focus();
    
    if (
this.isHtml && this.objectLoadTime == 'after'this.writeExtendedContent();
    if (
this.iframe) {
        try {
            var 
exp this,
                
doc this.iframe.contentDocument || this.iframe.contentWindow.document;
            
hs.addEventListener(doc'mousedown', function () {
                if (
hs.focusKey != exp.keyexp.focus();
            });
        } catch(
e) {}
        if (
hs.ie && typeof this.isClosing != 'boolean'// first open 
            
this.iframe.style.width = (this.objectWidth 1) +'px'// hasLayout
    
}
    if (
this.dimmingOpacityhs.dim(this);
    if (
hs.upcoming && hs.upcoming == this.ahs.upcoming null;
    
this.prepareNextOutline();
    var 
hs.pagemX hs.mouse.p.scrollLeftmY hs.mouse.p.scrollTop;
    
this.mouseIsOver this.x.pos mX && mX this.x.pos this.x.get('wsize')
        && 
this.y.pos mY && mY this.y.pos this.y.get('wsize');    
    if (
this.overlayBoxthis.showOverlays();
    
hs.fireEvent(this'onAfterExpand');
    
},


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


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


getAdjacentAnchor : function(op) {
    var 
current this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none'];
    if (as && !as[
current op] && this.slideshow && this.slideshow.repeat) {
        if (
op == 1) return as[0];
        else if (
op == -1) return as[as.length-1];
    }
    return (as && as[
current op]) || null;
},

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


getNumber : function() {
    if (
this[this.numberPosition]) {
        var 
arr hs.anchors.groups[this.slideshowGroup || 'none'];
        if (
arr) {
            var 
hs.lang.number.replace('%1'this.getAnchorIndex() + 1).replace('%2'arr.length);
            
this[this.numberPosition].innerHTML 
                
'<div class="highslide-number">'+'</div>'this[this.numberPosition].innerHTML;
        }
    }
},
initSlideshow : function() {
    if (!
this.last) {
        for (var 
0hs.slideshows.lengthi++) {
            var 
ss hs.slideshows[i], sg ss.slideshowGroup;
            if (
typeof sg == 'undefined' || sg === null || sg === this.slideshowGroup
                
this.slideshow = new hs.Slideshow(this.keyss);
        } 
    } else {
        
this.slideshow this.last.slideshow;
    }
    var 
ss this.slideshow;
    if (!
ss) return;
    var 
key ss.expKey this.key;
    
    
ss.checkFirstAndLast();
    
ss.disable('full-expand');
    if (
ss.controls) {
        
this.createOverlay(hs.extend(ss.overlayOptions || {}, {
            
overlayIdss.controls,
            
hsId'controls',
            
zIndex5
        
}));
    }
    if (
ss.thumbstripss.thumbstrip.add(this);
    if (!
this.last && this.autoplayss.play(true);
    if (
ss.autoplay) {
        
ss.autoplay setTimeout(function() {
            
hs.next(key);
        }, (
ss.interval || 500));
    }
},

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

writeCredits : function () {
    if (
this.credits) return;
    
this.credits hs.createElement('a', {
        
hrefhs.creditsHref,
        
targeths.creditsTarget,
        
className'highslide-credits',
        
innerHTMLhs.lang.creditsText,
        
titlehs.lang.creditsTitle
    
});
    
this.createOverlay({ 
        
overlayIdthis.credits
        
positionthis.creditsPosition || 'top left'
        
hsId'credits' 
    
});
},

getInline : function(typesaddOverlay) {
    for (var 
0types.lengthi++) {
        var 
type types[i], 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 {
            
= eval(this[type +'Eval']);
        } catch (
e) {}
        if (!
this[type] && this[type +'Text']) {
            
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.idthis.a['_'type 'Id'] = next.id 'hsId'hs.idCounter++;
                        
this[type] = hs.getNode(next.id);
                        break;
                    }
                    
next next.nextSibling;
                }
            }
        }
        if (!
this[type] && !&& this.numberPosition == type'n';
        
        if (!
this[type] && sthis[type] = hs.createElement('div'
                { 
className'highslide-'typeinnerHTML} );
        
        if (
addOverlay && this[type]) {
            var 
= { position: (type == 'heading') ? 'above' 'below' };
            for (var 
x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x];
            
o.overlayId this[type];
            
this.createOverlay(o);
        }
    }
},


// on end move and resize
doShowHide : function(visibility) {
    if (
hs.hideSelectsthis.showHideElements('SELECT'visibility);
    if (
hs.hideIframesthis.showHideElements('IFRAME'visibility);
    if (
hs.geckoMacthis.showHideElements('*'visibility);
},
showHideElements : function (tagNamevisibility) {
    var 
els document.getElementsByTagName(tagName);
    var 
prop tagName == '*' 'overflow' 'visibility';
    for (var 
0els.lengthi++) {
        if (
prop == 'visibility' || (document.defaultView.getComputedStyle(
                
els[i], "").getPropertyValue('overflow') == 'auto'
                
|| els[i].getAttribute('hidden-by') != null)) {
            var 
hiddenBy els[i].getAttribute('hidden-by');
            if (
visibility == 'visible' && hiddenBy) {
                
hiddenBy hiddenBy.replace('['this.key +']''');
                
els[i].setAttribute('hidden-by'hiddenBy);
                if (!
hiddenByels[i].style[prop] = els[i].origProp;
            } else if (
visibility == 'hidden') { // hide if behind
                
var elPos hs.getPosition(els[i]);
                
elPos.els[i].offsetWidth;
                
elPos.els[i].offsetHeight;
                if (!
this.dimmingOpacity) { // hide all if dimming
                
                    
var clearsX = (elPos.elPos.this.x.get('opos'
                        || 
elPos.this.x.get('opos') + this.x.get('osize'));
                    var 
clearsY = (elPos.elPos.this.y.get('opos'
                        || 
elPos.this.y.get('opos') + this.y.get('osize'));
                }
                var 
wrapperKey hs.getWrapperKey(els[i]);
                if (!
clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image
                    
if (!hiddenBy) {
                        
els[i].setAttribute('hidden-by''['this.key +']');
                        
els[i].origProp els[i].style[prop];
                        
els[i].style[prop] = 'hidden';
                        
                    } else if (
hiddenBy.indexOf('['this.key +']') == -1) {
                        
els[i].setAttribute('hidden-by'hiddenBy '['this.key +']');
                    }
                } else if ((
hiddenBy == '['this.key +']' || hs.focusKey == wrapperKey)
                        && 
wrapperKey != this.key) { // on move
                    
els[i].setAttribute('hidden-by''');
                    
els[i].style[prop] = els[i].origProp || '';
                } else if (
hiddenBy && hiddenBy.indexOf('['this.key +']') > -1) {
                    
els[i].setAttribute('hidden-by'hiddenBy.replace('['this.key +']'''));
                }
                        
            }
        }
    }
},

focus : function() {
    
this.wrapper.style.zIndex hs.zIndexCounter += 2;
    
// blur others
    
for (var 0hs.expanders.lengthi++) {
        if (
hs.expanders[i] && == hs.focusKey) {
            var 
blurExp hs.expanders[i];
            
blurExp.content.className += ' highslide-'blurExp.contentType +'-blur';
            if (
blurExp.isImage) {
                
blurExp.content.style.cursor hs.ieLt7 'hand' 'pointer';
                
blurExp.content.title hs.lang.focusTitle;    
            }    
            
hs.fireEvent(blurExp'onBlur');
        }
    }
    
    
// focus this
    
if (this.outlinethis.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.ieLt7 && hs.uaVersion 6hs.styleRestoreCursor 'hand';
            
this.content.style.cursor hs.styleRestoreCursor;
        }
    }
    
hs.focusKey this.key;    
    
hs.addEventListener(documentwindow.opera 'keypress' 'keydown'hs.keyHandler);    
    
hs.fireEvent(this'onFocus');    
},
moveTo: function(xy) {
    
this.x.setPos(x);
    
this.y.setPos(y);
},
resize : function (e) {
    var 
whe.width e.height;
    
Math.max(e.width e.dXMath.min(this.minWidththis.x.full));
    if (
this.isImage && Math.abs(this.x.full) < 12this.x.full;
    
this.isHtml e.height e.dY r;
    if (
Math.min(this.minHeightthis.y.full)) {
        
Math.min(this.minHeightthis.y.full);
        if (
this.isImager;
    }
    
this.resizeTo(wh);
},
resizeTo: function(wh) {
    
this.y.setSize(h);
    
this.x.setSize(w);
    
this.wrapper.style.height this.y.get('wsize') +'px';
},

close : function() {
    if (
this.isClosing || !this.isExpanded) return;
    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.upcomingthis.slideshow.pause();
    
    
hs.removeEventListener(documentwindow.opera 'keypress' 'keydown'hs.keyHandler);
    
    try {
        if (
this.isHtmlthis.htmlPrepareClose();
        
this.content.style.cursor 'default';
        
this.changeSize(
            
0, {
                
wrapper: {
                    
width this.x.t,
                    
height this.y.t,
                    
leftthis.x.tpos this.x.cb this.x.tb,
                    
topthis.y.tpos this.y.cb this.y.tb
                
},
                
content: {
                    
left0,
                    
top0,
                    
widththis.x.t,
                    
heightthis.y.t
                
}
            }, 
hs.restoreDuration
        
);
    } catch (
e) { this.afterClose(); }
},

htmlPrepareClose : function() {
    if (
hs.geckoMac) { // bad redraws
        
if (!hs.maskhs.mask hs.createElement('div'null
            { 
position'absolute' }, hs.container);
        
hs.setStyles(hs.mask, { widththis.x.size +'px'heightthis.y.size +'px'
            
leftthis.x.pos +'px'topthis.y.pos +'px'display'block' });            
    }
    if (
this.objectType == 'swf') try { hs.$(this.body.id).StopPlay(); } catch (e) {}
    
    if (
this.objectLoadTime == 'after' && !this.preserveContentthis.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 (e) {}
    if (
this.objectType == 'swf'swfobject.removeSWF(this.body.id);
    
this.body.innerHTML '';
},

sleep : function() {
    if (
this.outlinethis.outline.table.style.display 'none';
    
this.releaseMask null;
    
this.wrapper.style.display 'none';
    
this.isExpanded false;
    
hs.push(hs.sleepingthis);
},

awake : function() {try {
    
    
hs.expanders[this.key] = this;
    
    if (!
hs.allowMultipleInstances &&hs.focusKey != this.key) {    
        try { 
hs.expanders[hs.focusKey].close(); } catch (e){}
    }
    
    var 
hs.zIndexCounter++, stl = { display''zIndex};
    
hs.setStyles (this.wrapperstl);
    
this.isClosing false;
    
    var 
this.outline || 0;
    if (
o) {
        if (!
this.outlineWhileAnimatingstl.visibility 'hidden';
        
hs.setStyles (o.tablestl);        
    }
    if (
this.slideshow) {
        
this.initSlideshow();
    }
        
    
this.show();
} catch (
e) {}


},

createOverlay : function (o) {
    var 
el o.overlayId
        
relToVP = (o.relativeTo == 'viewport' && !/panel$/.test(o.position));
    if (
typeof el == 'string'el hs.getNode(el);
    if (
o.htmlel hs.createElement('div', { innerHTMLo.html });
    if (!
el || typeof el == 'string') return;
    if (!
hs.fireEvent(this'onCreateOverlay', { overlayel })) return;
    
el.style.display 'block';
    
o.hsId o.hsId || o.overlayId
    if (
this.transitions[1] == 'crossfade' && this.reuseOverlay(oel)) return;
    
this.genOverlayBox();
    var 
width o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width 'auto';
    if (/^(
left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width '200px';
    var 
overlay hs.createElement(
        
'div', {
            
id'hsId'hs.idCounter++,
            
hsIdo.hsId
        
}, {
            
position'absolute',
            
visibility'hidden',
            
widthwidth,
            
directionhs.lang.cssDirection || '',
            
opacity0
        
},
        
relToVP hs.viewport :this.overlayBox,
        
true
    
);
    if (
relToVPoverlay.hsKey this.key;
    
    
overlay.appendChild(el);
    
hs.extend(overlay, {
        
opacity1,
        
offsetX0,
        
offsetY0,
        
dur: (o.fade === || o.fade === false || (o.fade == && hs.ie)) ? 250
    
});
    
hs.extend(overlayo);
    
        
    if (
this.gotOverlays) {
        
this.positionOverlay(overlay);
        if (!
overlay.hideOnMouseOut || this.mouseIsOver
            
hs.animate(overlay, { opacityoverlay.opacity }, overlay.dur);
    }
    
hs.push(this.overlayshs.idCounter 1);
},
positionOverlay : function(overlay) {
    var 
overlay.position || 'middle center',
        
relToVP = (overlay.relativeTo == 'viewport'),
        
offX overlay.offsetX,
        
offY overlay.offsetY;
    if (
relToVP) {
        
hs.viewport.style.display 'block';
        
overlay.hsKey this.key;
        if (
overlay.offsetWidth overlay.parentNode.offsetWidth)
            
overlay.style.width '100%';
    } else
    if (
overlay.parentNode != this.overlayBoxthis.overlayBox.appendChild(overlay);
    if (/
left$/.test(p)) overlay.style.left offX +'px'
    
    if (/
center$/.test(p))    hs.setStyles (overlay, { 
        
left'50%',
        
marginLeft: (offX Math.round(overlay.offsetWidth 2)) +'px'
    
});    
    
    if (/
right$/.test(p)) overlay.style.right = - offX +'px';
        
    if (/^
leftpanel$/.test(p)) { 
        
hs.setStyles(overlay, {
            
right'100%',
            
marginRightthis.x.cb +'px',
            
top: - this.y.cb +'px',
            
bottom: - this.y.cb +'px',
            
overflow'auto'
        
});         
        
this.x.p1 overlay.offsetWidth;
    
    } else if (/^
rightpanel$/.test(p)) {
        
hs.setStyles(overlay, {
            
left'100%',
            
marginLeftthis.x.cb +'px',
            
top: - this.y.cb +'px',
            
bottom: - this.y.cb +'px',
            
overflow'auto'
        
});
        
this.x.p2 overlay.offsetWidth;
    }
    var 
parOff overlay.parentNode.offsetHeight;
    
overlay.style.height 'auto';
    if (
relToVP && overlay.offsetHeight parOff)
        
overlay.style.height hs.ieLt7 parOff +'px' '100%';

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

getOverlays : function() {    
    
this.getInline(['heading''caption'], true);
    
this.getNumber();
    if (
this.captionhs.fireEvent(this'onAfterGetCaption');
    if (
this.headinghs.fireEvent(this'onAfterGetHeading');
    if (
this.heading && this.dragByHeadingthis.heading.className += ' highslide-move';
    if (
hs.showCreditsthis.writeCredits();
    for (var 
0hs.overlays.lengthi++) {
        var 
hs.overlays[i], tId o.thumbnailIdsg o.slideshowGroup;
        if ((!
tId && !sg) || (tId && tId == this.thumbsUserSetId)
                || (
sg && sg === this.slideshowGroup)) {
            if (
this.isImage || (this.isHtml && o.useOnHtml))
            
this.createOverlay(o);
        }
    }
    var 
os = [];
    for (var 
0this.overlays.lengthi++) {
        var 
hs.$('hsId'this.overlays[i]);
        if (/
panel$/.test(o.position)) this.positionOverlay(o);
        else 
hs.push(oso);
    }
    for (var 
0os.lengthi++) this.positionOverlay(os[i]);
    
this.gotOverlays true;
},
genOverlayBox : function() {
    if (!
this.overlayBoxthis.overlayBox hs.createElement (
        
'div', {
            
classNamethis.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 'auto'
        
},
        
hs.container,
        
true
    
);
},
sizeOverlayBox : function(doWrapperdoPanels) {
    var 
overlayBox this.overlayBox
        
this.x,
        
this.y;
    
hs.setStylesoverlayBox, {
        
widthx.size +'px'
        
heighty.size +'px'
    
});
    if (
doWrapper || doPanels) {
        for (var 
0this.overlays.lengthi++) {
            var 
hs.$('hsId'this.overlays[i]);
            var 
ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat');
            if (
&& /^(above|below)$/.test(o.position)) {
                if (
ie6) {
                    
o.style.width = (overlayBox.offsetWidth x.cb
                        
x.p1 x.p2) +'px';
                }
                
y[o.position == 'above' 'p1' 'p2'] = o.offsetHeight;
            }
            if (
&& ie6 && /^(left|right)panel$/.test(o.position)) {
                
o.style.height = (overlayBox.offsetHeight 2y.cb) +'px';
            }
        }
    }
    if (
doWrapper) {
        
hs.setStyles(this.content, {
            
topy.p1 +'px'
        
});
        
hs.setStyles(overlayBox, {
            
top: (y.p1 y.cb) +'px'
        
});
    }
},

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

destroyOverlays : function() {
    if (!
this.overlays.length) return;
    if (
this.slideshow) {
        var 
this.slideshow.controls;
        if (
&& hs.getExpander(c) == thisc.parentNode.removeChild(c);
    }
    for (var 
0this.overlays.lengthi++) {
        var 
hs.$('hsId'this.overlays[i]);
        if (
&& o.parentNode == hs.viewport && hs.getExpander(o) == thishs.discardElement(o);
    }
    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();',
            
titlehs.lang.fullExpandTitle,
            
className'highslide-full-expand'
        
}
    );
    if (!
hs.fireEvent(this'onCreateFullExpand')) return;
    
    
this.createOverlay({ 
        
overlayIdthis.fullExpandLabel
        
positionhs.fullExpandPosition
        
hideOnMouseOuttrue
        
opacityhs.fullExpandOpacity
    
});
},

doFullExpand : function () {
    try {
        if (!
hs.fireEvent(this'onDoFullExpand')) return;
        if (
this.fullExpandLabelhs.discardElement(this.fullExpandLabel);
        
        
this.focus();
        var 
xSize this.x.size,
            
ySize this.y.size;
        
this.resizeTo(this.x.fullthis.y.full);
       
        var 
xpos this.x.pos - (this.x.size xSize) / 2;
        if (
xpos hs.marginLeftxpos hs.marginLeft;
       
        var 
ypos this.y.pos - (this.y.size ySize) / 2;
        if (
ypos hs.marginTopypos hs.marginTop;
       
        
this.moveTo(xposypos);
        
this.doShowHide('hidden');
    
    } catch (
e) {
        
this.error(e);
    }
},


afterClose : function () {
    
this.a.className this.a.className.replace('highslide-active-anchor''');
    
    
this.doShowHide('visible');    
    
    if (
this.isHtml && this.preserveContent
             
&& this.transitions[1] != 'crossfade') {
        
this.sleep();
    } else {
        if (
this.outline && this.outlineWhileAnimatingthis.outline.destroy();
    
        
hs.discardElement(this.wrapper);
    }
    if (
hs.maskhs.mask.style.display 'none';
    
this.destroyOverlays();
    if (!
hs.viewport.childNodes.lengthhs.viewport.style.display 'none';
    
    if (
this.dimmingOpacityhs.undim(this.key);
    
hs.fireEvent(this'onAfterClose');
    
hs.expanders[this.key] = null;        
    
hs.reOrder();
}

};


// hs.Ajax object prototype
hs.Ajax = function (acontentpre) {
    
this.a;
    
this.content content;
    
this.pre pre;
};

hs.Ajax.prototype = {
run : function () {
    var 
xhr;
    if (!
this.srcthis.src hs.getSrc(this.a);
    if (
this.src.match('#')) {
        var 
arr this.src.split('#');
        
this.src arr[0];
        
this.id arr[1];
    }
    if (
hs.cachedGets[this.src]) {
        
this.cachedGet hs.cachedGets[this.src];
        if (
this.idthis.getElementContent();
        else 
this.loadHTML();
        return;
    }
    try { 
xhr = new XMLHttpRequest(); }
    catch (
e) {
        try { 
xhr = new ActiveXObject("Msxml2.XMLHTTP"); }
        catch (
e) {
            try { 
xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
            catch (
e) { this.onError(); }
        }
    }
    var 
pThis this
    
xhr.onreadystatechange = function() {
        if(
pThis.xhr.readyState == 4) {
            if (
pThis.idpThis.getElementContent();
            else 
pThis.loadHTML();
        }
    };
    var 
src this.src;
    
this.xhr xhr;
    if (
hs.forceAjaxReload
        
src src.replace(/$/, (/?/.test(src) ? '&' '?') +'dummy='+ (new Date()).getTime());
    
xhr.open('GET'srctrue);
    
xhr.setRequestHeader('X-Requested-With''XMLHttpRequest');
    
xhr.setRequestHeader('Content-Type''application/x-www-form-urlencoded');
    
xhr.send(null);
},

getElementContent : function() {
    
hs.init();
    var 
attribs window.opera || hs.ie6SSL ? { src'about:blank' } : null;
    
    
this.iframe hs.createElement('iframe'attribs
        { 
position'absolute'top'-9999px' }, hs.container);
        
    
this.loadHTML();
},

loadHTML : function() {
    var 
this.cachedGet || this.xhr.responseText,
        
regBody;
    if (
this.prehs.cachedGets[this.src] = s;
    if (!
hs.ie || hs.uaVersion >= 5.5) {
        
s.replace(new RegExp('<link[^>]*>''gi'), '')
            .
replace(new RegExp('<script[^>]*>.*?</script>''gi'), '');
        if (
this.iframe) {
            var 
doc this.iframe.contentDocument;
            if (!
doc && this.iframe.contentWindowdoc this.iframe.contentWindow.document;
            if (!
doc) { // Opera
                
var pThis this;
                
setTimeout(function() {    pThis.loadHTML(); }, 25);
                return;
            }
            
doc.open();
            
doc.write(s);
            
doc.close();
            try { 
doc.getElementById(this.id).innerHTML; } catch (e) {
                try { 
this.iframe.document.getElementById(this.id).innerHTML; } catch (e) {} // opera
            
}
            
hs.discardElement(this.iframe);
        } else {
            
regBody = /(<body[^>]*>|</body>)/ig;
            if (
regBody.test(s)) s.split(regBody)[hs.ieLt9 2];
            
        }
    }
    
hs.getElementByClass(this.content'DIV''highslide-body').innerHTML s;
    
this.onLoad();
    for (var 
x in thisthis[x] = null;
}
};


hs.Slideshow = function (expKeyoptions) {
    if (
hs.dynamicallyUpdateAnchors !== falsehs.updateAnchors();
    
this.expKey expKey;
    for (var 
x in optionsthis[x] = options[x];
    if (
this.useControlsthis.getControls();
    if (
this.thumbstripthis.thumbstrip hs.Thumbstrip(this);
};
hs.Slideshow.prototype = {
getControls: function() {
    
this.controls hs.createElement('div', { innerHTMLhs.replaceLang(hs.skin.controls) }, 
        
nullhs.container);
    
    var 
buttons = ['play''pause''previous''next''move''full-expand''close'];
    
this.btn = {};
    var 
pThis this;
    for (var 
0buttons.lengthi++) {
        
this.btn[buttons[i]] = hs.getElementByClass(this.controls'li''highslide-'buttons[i]);
        
this.enable(buttons[i]);
    }
    
this.btn.pause.style.display 'none';
    
//this.disable('full-expand');
},
checkFirstAndLast: function() {
    if (
this.repeat || !this.controls) return;
    var 
exp hs.expanders[this.expKey],
        
cur exp.getAnchorIndex(), 
        
re = /disabled$/;
    if (
cur == 0
        
this.disable('previous');
    else if (
re.test(this.btn.previous.getElementsByTagName('a')[0].className))
        
this.enable('previous');
    if (
cur == hs.anchors.groups[exp.slideshowGroup || 'none'].length) {
        
this.disable('next');
        
this.disable('play');
    } else if (
re.test(this.btn.next.getElementsByTagName('a')[0].className)) {
        
this.enable('next');
        
this.enable('play');
    }
},
enable: function(btn) {
    if (!
this.btn) return;
    var 
sls thisthis.btn[btn].getElementsByTagName('a')[0], re = /disabled$/;
    
a.onclick = function() {
        
sls[btn]();
        return 
false;
    };
    if (
re.test(a.className)) a.className a.className.replace(re'');
},
disable: function(btn) {
    if (!
this.btn) return;
    var 
this.btn[btn].getElementsByTagName('a')[0];
    
a.onclick = function() { return false; };
    if (!/
disabled$/.test(a.className)) a.className += ' disabled';
},
hitSpace: function() {
    if (
this.autoplaythis.pause();
    else 
this.play();
},
play: function(wait) {
    if (
this.btn) {
        
this.btn.play.style.display 'none';
        
this.btn.pause.style.display '';
    }
    
    
this.autoplay true;    
    if (!
waiths.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(slideshow) {
    function 
add (exp) {
        
hs.extend(options || {}, {
            
overlayIddom,
            
hsId'thumbstrip',
            
className'highslide-thumbstrip-'mode +'-overlay ' + (options.className || '')
        });
        if (
hs.ieLt7options.fade 0;
        
exp.createOverlay(options);
        
hs.setStyles(dom.parentNode, { overflow'hidden' });
    };
    
    function 
scroll (delta) {    
        
selectThumb(undefinedMath.round(delta dom[isX 'offsetWidth' 'offsetHeight'] * 0.7));
    };
    
    function 
selectThumb (iscrollBy) {
        if (
=== undefined) for (var 0group.lengthj++) {
            if (
group[j] == hs.expanders[slideshow.expKey].a) {
                
j;
                break;
            }
        }
        if (
=== undefined) return;
        var as = 
dom.getElementsByTagName('a'),
            
active = as[i],
            
cell active.parentNode,
            
left isX 'Left' 'Top',
            
right isX 'Right' 'Bottom',
            
width isX 'Width' 'Height',
            
offsetLeft 'offset' left,
            
offsetWidth 'offset' width,
            
overlayWidth div.parentNode.parentNode[offsetWidth],
            
minTblPos overlayWidth table[offsetWidth],
            
curTblPos parseInt(table.style[isX 'left' 'top']) || 0,
            
tblPos curTblPos,
            
mgnRight 20;
        if (
scrollBy !== undefined) {
            
tblPos curTblPos scrollBy;
            
            if (
minTblPos 0minTblPos 0;
            if (
tblPos 0tblPos 0;
            if (
tblPos minTblPostblPos minTblPos;
            
    
        } else {
            for (var 
0< as.lengthj++) as[j].className '';
            
active.className 'highslide-active-anchor';
            var 
activeLeft ? as[1].parentNode[offsetLeft] : cell[offsetLeft],
                
activeRight cell[offsetLeft] + cell[offsetWidth] + 
                    (as[
1] ? as[1].parentNode[offsetWidth] : 0);
            if (
activeRight overlayWidth curTblPostblPos overlayWidth activeRight;
            else if (
activeLeft < -curTblPostblPos = -activeLeft;
        }
        var 
markerPos cell[offsetLeft] + (cell[offsetWidth] - marker[offsetWidth]) / tblPos;
        
hs.animate(tableisX ? { lefttblPos } : { toptblPos }, null'easeOutQuad');
        
hs.animate(markerisX ? { leftmarkerPos } : { topmarkerPos }, null'easeOutQuad');
        
scrollUp.style.display tblPos 'block' 'none';
        
scrollDown.style.display = (tblPos minTblPos)  ? 'block' 'none';
        
    };
    

    
// initialize
    
var group hs.anchors.groups[hs.expanders[slideshow.expKey].slideshowGroup || 'none'],
        
options slideshow.thumbstrip,
        
mode options.mode || 'horizontal',
        
floatMode = (mode == 'float'),
        
tree floatMode ? ['div''ul''li''span'] : ['table''tbody''tr''td'],
        
isX = (mode == 'horizontal'),
        
dom hs.createElement('div', {
                
className'highslide-thumbstrip highslide-thumbstrip-'mode,
                
innerHTML:
                    
'<div class="highslide-thumbstrip-inner">'+
                    
'<'tree[0] +'><'tree[1] +'></'tree[1] +'></'tree[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),
        
domCh dom.childNodes,
        
div domCh[0],
        
scrollUp domCh[1],
        
scrollDown domCh[2],
        
marker domCh[3],
        
table div.firstChild,
        
tbody dom.getElementsByTagName(tree[1])[0],
        
tr;
    for (var 
0group.lengthi++) {
        if (
== || !isXtr hs.createElement(tree[2], nullnulltbody);
        (function(){
            var 
group[i],
                
cell hs.createElement(tree[3], nullnulltr),
                
pI i;
            
hs.createElement('a', {
                
hrefa.href,
                
titlea.title,
                
onclick: function() {
                    if (/
highslide-active-anchor/.test(this.className)) return false;
                    
hs.getExpander(this).focus();
                    return 
hs.transit(a);
                },
                
innerHTMLhs.stripItemFormatter hs.stripItemFormatter(a) : a.innerHTML
            
}, nullcell);
        })();
    }
    if (!
floatMode) {
        
scrollUp.onclick = function () { scroll(-1); };
        
scrollDown.onclick = function() { scroll(1); };
        
hs.addEventListener(tbodydocument.onmousewheel !== undefined 
                
'mousewheel' 'DOMMouseScroll', function(e) {        
            var 
delta 0;
            
|| window.event;
            if (
e.wheelDelta) {
                
delta e.wheelDelta/120;
                if (
hs.operadelta = -delta;
            } else if (
e.detail) {
                
delta = -e.detail/3;
            }
            if (
deltascroll(-delta 0.2);
            if (
e.preventDefaulte.preventDefault();
            
e.returnValue false;
        });
    }
    
    return {
        
addadd,
        
selectThumbselectThumb
    
}
};
hs.langDefaults hs.lang;
// history
var HsExpander hs.Expander;
if (
hs.ie && window == window.top) {
    (function () {
        try {
            
document.documentElement.doScroll('left');
        } catch (
e) {
            
setTimeout(arguments.callee50);
            return;
        }
        
hs.ready();
    })();
}
hs.addEventListener(document'DOMContentLoaded'hs.ready);
hs.addEventListener(window'load'hs.ready);

// set handlers
hs.addEventListener(document'ready', function() {
    if (
hs.expandCursor || hs.dimmingOpacity) {
        var 
style hs.createElement('style', { type'text/css' }, null
            
document.getElementsByTagName('HEAD')[0]), 
            
backCompat document.compatMode == 'BackCompat';
            
        
        function 
addRule(seldec) {
            if (
hs.ie && (hs.uaVersion || backCompat)) {
                var 
last document.styleSheets[document.styleSheets.length 1];
                if (
typeof(last.addRule) == "object"last.addRule(seldec);
            } else {
                
style.appendChild(document.createTextNode(sel " {" dec "}"));
            }
        }
        function 
fix(prop) {
            return 
'expression( ( ( ignoreMe = document.documentElement.'prop +
                
' ? document.documentElement.'prop +' : document.body.'prop +' ) ) + 'px' );';
        }
        if (
hs.expandCursoraddRule ('.highslide img'
            
'cursor: url('hs.graphicsDir hs.expandCursor +'), pointer !important;');
        
addRule ('.highslide-viewport-size',
            
hs.ie && (hs.uaVersion || backCompat) ?
                
'position: absolute; '+
                
'left:'fix('scrollLeft') +
                
'top:'fix('scrollTop') +
                
'width:'fix('clientWidth') +
                
'height:'fix('clientHeight') :
                
'position: fixed; width: 100%; height: 100%; left: 0; top: 0');
    }
});
hs.addEventListener(window'resize', function() {
    
hs.getPageSize();
    if (
hs.viewport) for (var 0hs.viewport.childNodes.lengthi++) {
        var 
node hs.viewport.childNodes[i],
            
exp hs.getExpander(node);
        
exp.positionOverlay(node);
        if (
node.hsId == 'thumbstrip'exp.slideshow.thumbstrip.selectThumb();
    }
});
hs.addEventListener(document'mousemove', function(e) {
    
hs.mouse = { xe.clientXye.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);
}
?>
Онлайн: 0
Реклама