Вход Регистрация
Файл: apwa/gallery/plugins/highslide/highslide.js
Строк: 1708
<?php
/** 
 * Name:    Highslide JS
 * Version: 4.1.13 (2011-10-06)
 * Config:  default
 * 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'], // Add more to allow slideshow indexing

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
// END OF YOUR SETTINGS


// declare internal properties
preloadTheseImages : [],
continuePreloadingtrue,
expanders : [],
overrides : [
    
'allowSizeReduction',
    
'useBox',
    
'outlineType',
    
'outlineWhileAnimating',
    
'captionId',
    
'captionText',
    
'captionEval',
    
'captionOverlay',
    
'headingId',
    
'headingText',
    
'headingEval',
    
'headingOverlay',
    
'creditsPosition',
    
'dragByHeading',
    
    
'width',
    
'height',
    
    
'wrapperClassName',
    
'minWidth',
    
'minHeight',
    
'maxWidth',
    
'maxHeight',
    
'pageOrigin',
    
'slideshowGroup',
    
'easing',
    
'easingClose',
    
'fadeInOut',
    
'src'
],
overlays : [],
idCounter 0,
oPos : {
    
x: ['leftpanel''left''center''right''rightpanel'],
    
y: ['above''top''middle''bottom''below']
},
mouse: {},
headingOverlay: {},
captionOverlay: {},
timers : [],

pendingOutlines : {},
clones : {},
onReady: [],
uaVersion: /Trident/4.0/.test(navigator.userAgent) ? :
    
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)    {
    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;    
    try {    
        new 
hs.Expander(aparamscustom);
        return 
false;
    } catch (
e) { return true; }
},


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 '';
},
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 {
        
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
    
var exp hs.getExpander();
    
    var 
op null;
    switch (
e.keyCode) {
        case 
70// f
            
if (expexp.doFullExpand();
            return 
true;
        case 
32// Space
        
case 34// Page Down
        
case 39// Arrow right
        
case 40// Arrow down
            
op 1;
            break;
        case 
8:  // Backspace
        
case 33// Page Up
        
case 37// Arrow left
        
case 38// Arrow up
            
op = -1;
            break;
        case 
27// Escape
        
case 13// Enter
            
op 0;
    }
    if (
op !== null) {hs.removeEventListener(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 {
                
hs.previousOrNext(exp.keyop);
            }
            return 
false;
        }
    }
    return 
true;
},


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


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

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 (
e.type == 'mouseup') {
        
        
hs.removeEventListener(document'mousemove'hs.dragHandler);
        
        if (
hs.dragArgs) {
            if (
hs.styleRestoreCursor && hs.dragArgs.type == 'image'
                
hs.dragArgs.exp.content.style.cursor hs.styleRestoreCursor;
            var 
hasDragged hs.dragArgs.hasDragged;
            
            if (!
hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) {
                
exp.close();
            } 
            else if (
hasDragged || (!hasDragged && hs.hasHtmlExpanders)) {
                
hs.dragArgs.exp.doShowHide('hidden');
            }
            
hs.hasFocused false;
            
hs.dragArgs null;
        
        } else if (/
highslide-image-blur/.test(el.className)) {
            
el.style.cursor hs.styleRestoreCursor;        
        }
    }
    return 
false;
},

dragHandler : function(e)
{
    if (!
hs.dragArgs) return true;
    if (!
ewindow.event;
    var 
hs.dragArgsexp a.exp;
    
    
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 (
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;
        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();
        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);
        
        
// http://www.robertpenner.com/easing/ 
        
Math.linearTween = function (tbcd) {
            return 
c*t/b;
        };
        
Math.easeInQuad = function (tbcd) {
            return 
c*(t/=d)*b;
        };
        
        
hs.hideSelects hs.ieLt7;
        
hs.hideIframes = ((window.opera && hs.uaVersion 9) || navigator.vendor == 'KDE' 
            
|| (hs.ieLt7 && hs.uaVersion 5.5));
    }
},
ready : function() {
    if (
hs.isReady) return;
    
hs.isReady true;
    for (var 
0hs.onReady.lengthi++) hs.onReady[i]();
},

updateAnchors : function() {
    var 
elelsall = [], images = [],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);
                var 
hs.getParam(el'slideshowGroup') || 'none';
                if (!
groups[g]) groups[g] = [];
                
hs.push(groups[g], el);
            }
        }
    }
    
hs.anchors = { allallgroupsgroupsimagesimages };
    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 
'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';
    
    
    
// 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.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 (
this.dim == 'x' && exp.overlayBoxexp.sizeOverlayBox(true);
},
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.isImage = !this.isHtml;
    
    
hs.continuePreloading false;
    
this.overlays = [];
    
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;
    
    
// check if already open
    
for (var 0hs.expanders.lengthi++) {
        if (
hs.expanders[i] && hs.expanders[i].== a) {
            
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();
    
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[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();
    };
    var 
exp this
        
this.x.get('loadingPos') +'px',
        
this.y.get('loadingPos') +'px';
    
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();
},

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;
        }    
            
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);
        
        
x.calcBorders();
        
y.calcBorders();
        
        
hs.setStyles (this.wrapper, {
            
left: (x.tpos x.tb x.cb) +'px',
            
top: (y.tpos x.tb y.cb) +'px'
        
});
        
this.getOverlays();
        
        var 
ratio x.full y.full;
        
x.calcExpanded();
        
this.justify(x);
        
        
y.calcExpanded();
        
this.justify(y);
        if (
this.overlayBoxthis.sizeOverlayBox(01);

        
        if (
this.allowSizeReduction) {
                
this.correctRatio(ratio);
            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);
    }
},

justify : function (pmoveOnly) {
    var 
tgtArrtgt p.targetdim == this.'x' 'y';
    
        var 
hasMovedMin false;
        
        var 
allowReduce p.exp.allowSizeReduction;
            
p.pos Math.round(p.pos - ((p.get('wsize') - p.t) / 2));
        if (
p.pos p.scroll p.marginMin) {
            
p.pos p.scroll p.marginMin;
            
hasMovedMin true;        
        }
        if (!
moveOnly && p.size p.minSize) {
            
p.size p.minSize;
            
allowReduce false;
        }
        if (
p.pos p.get('wsize') > p.scroll p.clientSize p.marginMax) {
            if (!
moveOnly && hasMovedMin && allowReduce) {
                
p.size Math.min(p.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;
        }
        
    
        
    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) {
        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;
},

show : function () {
    var 
this.xthis.y;
    
this.doShowHide('hidden');
    
    
// 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) {
    
    if (
this.outline && !this.outlineWhileAnimating) {
        if (
upthis.outline.setPosition();
        else 
this.outline.destroy();
    }
    
    
    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 (
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);                
            }
        }
    });
    
hs.animatethis.contentto.contentdureasingafter);
    if (
up) {
        
this.wrapper.style.visibility 'visible';
        
this.content.style.visibility 'visible';
        
this.a.className += ' highslide-active-anchor';
    }
},




afterExpand : function() {
    
this.isExpanded true;    
    
this.focus();
    if (
hs.upcoming && hs.upcoming == this.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();
    
},


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'];
    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;
},


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

writeCredits : function () {
    
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' 
    
});
},

getInline : function(typesaddOverlay) {
    for (var 
0types.lengthi++) {
        var 
type types[i], null;
        if (!
this[type +'Id'] && this.thumbsUserSetId)  
            
this[type +'Id'] = type +'-for-'this.thumbsUserSetId;
        if (
this[type +'Id']) this[type] = hs.getNode(this[type +'Id']);
        if (!
this[type] && !this[type +'Text'] && this[type +'Eval']) try {
            
= 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] && 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;
            
                
                    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';
                
blurExp.content.style.cursor hs.ieLt7 'hand' 'pointer';
                
blurExp.content.title hs.lang.focusTitle;
        }
    }
    
    
// focus this
    
if (this.outlinethis.outline.table.style.zIndex 
        
this.wrapper.style.zIndex 1;
    
this.content.className 'highslide-'this.contentType;
        
this.content.title hs.lang.restoreTitle;
        
        if (
hs.restoreCursor) {
            
hs.styleRestoreCursor window.opera 'pointer' 'url('hs.graphicsDir hs.restoreCursor +'), pointer';
            if (
hs.ieLt7 && hs.uaVersion 6hs.styleRestoreCursor 'hand';
            
this.content.style.cursor hs.styleRestoreCursor;
        }
        
    
hs.focusKey this.key;    
    
hs.addEventListener(documentwindow.opera 'keypress' 'keydown'hs.keyHandler);    
},
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;
    
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;
    
this.isClosing true;
    
    
hs.removeEventListener(documentwindow.opera 'keypress' 'keydown'hs.keyHandler);
    
    try {
        
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(); }
},

createOverlay : function (o) {
    var 
el o.overlayId;
    if (
typeof el == 'string'el hs.getNode(el);
    if (
o.htmlel hs.createElement('div', { innerHTMLo.html });
    if (!
el || typeof el == 'string') return;
    
el.style.display 'block';
    
this.genOverlayBox();
    var 
width o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width 'auto';
    if (/^(
left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width '200px';
    var 
overlay hs.createElement(
        
'div', {
            
id'hsId'hs.idCounter++,
            
hsIdo.hsId
        
}, {
            
position'absolute',
            
visibility'hidden',
            
widthwidth,
            
directionhs.lang.cssDirection || '',
            
opacity0
        
},this.overlayBox,
        
true
    
);
    
    
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',
        
offX overlay.offsetX,
        
offY overlay.offsetY;
    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;
    }

    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);
    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)) {
            
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;
    
hs.discardElement(this.overlayBox);
},



createFullExpand : function () {
    
this.fullExpandLabel hs.createElement(
        
'a', {
            
href'javascript:hs.expanders['this.key +'].doFullExpand();',
            
titlehs.lang.fullExpandTitle,
            
className'highslide-full-expand'
        
}
    );
    
    
this.createOverlay({ 
        
overlayIdthis.fullExpandLabel
        
positionhs.fullExpandPosition
        
hideOnMouseOuttrue
        
opacityhs.fullExpandOpacity
    
});
},

doFullExpand : function () {
    try {
        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.outline && this.outlineWhileAnimatingthis.outline.destroy();
    
        
hs.discardElement(this.wrapper);
    
    
hs.expanders[this.key] = null;        
    
hs.reOrder();
}

};
hs.langDefaults hs.lang;
// history
var HsExpander hs.Expander;
if (
hs.ie && window == window.top) {
    (function () {
        try {
            
document.documentElement.doScroll('left');
        } catch (
e) {
            
setTimeout(arguments.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) {
        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;');
    }
});
hs.addEventListener(window'resize', function() {
    
hs.getPageSize();
});
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.getAnchors);
hs.addEventListener(window'load'hs.preloadImages);
}
?>
Онлайн: 0
Реклама