/****************************************************************************** Name: Highslide JS Version: 4.1.4 (April 17 2009) Config: default +inline +ajax +iframe +flash Author: Torstein Hnsi Support: http://highslide.com/support Licence: Highslide JS is licensed under a Creative Commons Attribution-NonCommercial 2.5 License (http://creativecommons.org/licenses/by-nc/2.5/). You are free: * to copy, distribute, display, and perform the work * to make derivative works Under the following conditions: * Attribution. You must attribute the work in the manner specified by the author or licensor. * Noncommercial. You may not use this work for commercial purposes. * For any reuse or distribution, you must make clear to others the license terms of this work. * Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. ******************************************************************************/ var hs = { // Language strings lang : { cssDirection: 'ltr', loadingText : 'Çàãðóçêà...', loadingTitle : 'Click to cancel', focusTitle : 'Click to bring to front', fullExpandTitle : 'Expand to actual size (f)', creditsText : '', creditsTitle : '', previousText : 'Previous', nextText : 'Next', moveText : 'Ïåðåìåñòèòü', closeText : 'Çàêðûòü', closeTitle : 'Close (esc)', resizeTitle : 'Resize', playText : 'Play', playTitle : 'Play slideshow (spacebar)', pauseText : 'Pause', pauseTitle : 'Pause slideshow (spacebar)', previousTitle : 'Previous (arrow left)', nextTitle : 'Next (arrow right)', moveTitle : 'Ïåðåìåñòèòü', fullExpandText : '1:1', restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.' }, // See http://highslide.com/ref for examples of settings graphicsDir : 'highslide/graphics/', expandCursor : 'zoomin.cur', // null disables restoreCursor : 'zoomout.cur', // null disables expandDuration : 250, // milliseconds restoreDuration : 250, marginLeft : 15, marginRight : 15, marginTop : 15, marginBottom : 15, zIndexCounter : 1001, // adjust to other absolutely positioned elements loadingOpacity : 0.75, allowMultipleInstances: true, numberOfImagesToPreload : 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/', enableKeyListener : true, openerTagNames : ['a'], // Add more to allow slideshow indexing 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. dragByHeading: true, minWidth: 200, minHeight: 200, allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight outlineType : 'drop-shadow', // set null to disable outlines wrapperClassName : 'highslide-wrapper', // for enhanced css-control skin : { contentWrapper: '
'+ ''+ '' }, // END OF YOUR SETTINGS // declare internal properties preloadTheseImages : [], continuePreloading: true, expanders : [], overrides : [ 'allowSizeReduction', 'useBox', 'outlineType', 'outlineWhileAnimating', 'captionId', 'captionText', 'captionEval', 'captionOverlay', 'headingId', 'headingText', 'headingEval', 'headingOverlay', 'creditsPosition', 'dragByHeading', 'width', 'height', 'contentId', 'allowWidthReduction', 'allowHeightReduction', 'preserveContent', 'maincontentId', 'maincontentText', 'maincontentEval', 'objectType', 'cacheAjax', 'objectWidth', 'objectHeight', 'objectLoadTime', 'swfOptions', 'wrapperClassName', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight', 'slideshowGroup', 'easing', 'easingClose', 'fadeInOut', 'src' ], overlays : [], idCounter : 0, oPos : { x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'], y: ['above', 'top', 'middle', 'bottom', 'below'] }, mouse: {}, headingOverlay: {}, captionOverlay: {}, swfOptions: { flashvars: {}, params: {}, attributes: {} }, timers : [], pendingOutlines : {}, sleeping : [], preloadTheseAjax : [], cacheBindings : [], cachedGets : {}, clones : {}, onReady: [], uaVersion: parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]), ie : (document.all && !window.opera), safari : /Safari/.test(navigator.userAgent), geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent), $ : function (id) { if (id) return document.getElementById(id); }, push : function (arr, val) { arr[arr.length] = val; }, createElement : function (tag, attribs, styles, parent, nopad) { var el = document.createElement(tag); if (attribs) hs.extend(el, attribs); if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0}); if (styles) hs.setStyles(el, styles); if (parent) parent.appendChild(el); return el; }, extend : function (el, attribs) { for (var x in attribs) el[x] = attribs[x]; return el; }, setStyles : function (el, styles) { for (var x in styles) { if (hs.ie && x == 'opacity') { if (styles[x] > 0.99) el.style.removeAttribute('filter'); else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')'; } else el.style[x] = styles[x]; } }, animate: function(el, prop, opt) { var start, end, unit; if (typeof opt != 'object' || opt === null) { var args = arguments; opt = { duration: args[2], easing: args[3], complete: args[4] }; } if (typeof opt.duration != 'number') opt.duration = 250; opt.easing = Math[opt.easing] || Math.easeInQuad; opt.curAnim = hs.extend({}, prop); for (var name in prop) { var e = new hs.fx(el, opt , name ); start = parseFloat(hs.css(el, name)) || 0; end = parseFloat(prop[name]); unit = name != 'opacity' ? 'px' : ''; e.custom( start, end, unit ); } }, css: function(el, prop) { if (document.defaultView) { return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop); } else { if (prop == 'opacity') prop = 'filter'; var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })]; if (prop == 'filter') val = val.replace(/alpha\(opacity=([0-9]+)\)/, function (a, b) { return b / 100 }); return val === '' ? 1 : val; } }, getPageSize : function () { var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat' ? d.documentElement : d.body; var width = hs.ie ? iebody.clientWidth : (d.documentElement.clientWidth || self.innerWidth), height = hs.ie ? iebody.clientHeight : self.innerHeight; return { width: width, height: height, scrollLeft: hs.ie ? iebody.scrollLeft : pageXOffset, scrollTop: hs.ie ? iebody.scrollTop : pageYOffset } }, getPosition : function(el) { var p = { x: el.offsetLeft, y: el.offsetTop }; while (el.offsetParent) { el = el.offsetParent; p.x += el.offsetLeft; p.y += el.offsetTop; if (el != document.body && el != document.documentElement) { p.x -= el.scrollLeft; p.y -= el.scrollTop; } } return p; }, expand : function(a, params, custom, type) { if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container); if (typeof a.getParams == 'function') return params; if (type == 'html') { for (var i = 0; i topZ) { topZ = zIndex; topmostKey = i; } } } if (topmostKey == -1) hs.focusKey = -1; else expanders[topmostKey].focus(); }, getParam : function (a, param) { a.getParams = a.onclick; var p = a.getParams ? a.getParams() : null; a.getParams = null; return (p && typeof p[param] != 'undefined') ? p[param] : (typeof 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], a = {}; 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) { hs.garbageBin.appendChild(d); hs.garbageBin.innerHTML = ''; }, transit : function (adj, exp) { var last = exp = exp || hs.getExpander(); if (hs.upcoming) return false; else hs.last = last; try { hs.upcoming = adj; adj.onclick(); } catch (e){ hs.last = hs.upcoming = null; } try { exp.close(); } catch (e) {} return false; }, previousOrNext : function (el, op) { var exp = hs.getExpander(el); if (exp) { adj = exp.getAdjacentAnchor(op); return hs.transit(adj, exp); } else return false; }, previous : function (el) { return hs.previousOrNext(el, -1); }, next : function (el) { return hs.previousOrNext(el, 1); }, keyHandler : function(e) { if (!e) e = window.event; if (!e.target) e.target = e.srcElement; // ie if (typeof e.target.form != 'undefined') return true; // form element has focus var exp = hs.getExpander(); var op = null; switch (e.keyCode) { case 70: // f if (exp) exp.doFullExpand(); return true; case 32: // Space case 34: // Page Down case 39: // Arrow right case 40: // Arrow down op = 1; break; case 8: // Backspace case 33: // Page Up case 37: // Arrow left case 38: // Arrow up op = -1; break; case 27: // Escape case 13: // Enter op = 0; } if (op !== null) {hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); if (!hs.enableKeyListener) return true; if (e.preventDefault) e.preventDefault(); else e.returnValue = false; if (exp) { if (op == 0) { exp.close(); } else { hs.previousOrNext(exp.key, op); } return false; } } return true; }, registerOverlay : function (overlay) { hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } )); }, getWrapperKey : function (element, expOnly) { var el, re = /^highslide-wrapper-([0-9]+)$/; // 1. look in open expanders el = element; while (el.parentNode) { if (el.id && re.test(el.id)) return el.id.replace(re, "$1"); el = el.parentNode; } // 2. look in thumbnail if (!expOnly) { el = element; while (el.parentNode) { if (el.tagName && hs.isHsAnchor(el)) { for (var key = 0; key 1) return true; if (!e.target) e.target = e.srcElement; var el = e.target; while (el.parentNode && !(/highslide-(image|move|html|resize)/.test(el.className))) { el = el.parentNode; } var exp = 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 = { exp: exp , type: match[1], left: exp.x.pos, width: exp.x.size, top: exp.y.pos, height: exp.y.size, clickX: e.clientX, clickY: e.clientY }; hs.addEventListener(document, 'mousemove', hs.dragHandler); if (e.preventDefault) e.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)) { 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'; 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 (!e) e = window.event; var a = hs.dragArgs, exp = a.exp; if (exp.iframe) { if (!exp.releaseMask) exp.releaseMask = hs.createElement('div', null, { position: 'absolute', width: exp.x.size+'px', height: exp.y.size+'px', left: exp.x.cb+'px', top: exp.y.cb+'px', zIndex: 4, background: (hs.ie ? 'white' : 'none'), opacity: .01 }, exp.wrapper, true); if (exp.releaseMask.style.display == 'none') exp.releaseMask.style.display = ''; } a.dX = e.clientX - a.clickX; a.dY = e.clientY - a.clickY; var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2)); if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0) || (distance > (hs.dragSensitivity || 5)); if (a.hasDragged && e.clientX > 5 && e.clientY > 5) { if (a.type == 'resize') exp.resize(a); else { exp.moveTo(a.left + a.dX, a.top + a.dY); if (a.type == 'image') exp.content.style.cursor = 'move'; } } return false; }, wrapperMouseHandler : function (e) { try { if (!e) e = window.event; var over = /mouseover/i.test(e.type); if (!e.target) e.target = e.srcElement; // ie if (hs.ie) e.relatedTarget = over ? e.fromElement : e.toElement; // ie var exp = hs.getExpander(e.target); if (!exp.isExpanded) return; if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp || hs.dragArgs) return; for (var i = 0; i = this.options.duration + this.startTime ) { this.now = this.end; this.pos = this.state = 1; this.update(); this.options.curAnim[ this.prop ] = true; var done = true; for ( var i in this.options.curAnim ) if ( this.options.curAnim[i] !== true ) done = false; if ( done ) { if (this.options.complete) this.options.complete.call(this.elem); } return false; } else { var n = t - this.startTime; this.state = n / this.options.duration; this.pos = this.options.easing(n, 0, 1, this.options.duration); this.now = this.start + ((this.end - this.start) * this.pos); this.update(); } return true; } }; hs.extend( hs.fx, { step: { opacity: function(fx){ hs.setStyles(fx.elem, { opacity: fx.now }); }, _default: function(fx){ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) fx.elem.style[ fx.prop ] = fx.now + fx.unit; else fx.elem[ fx.prop ] = fx.now; } } }); hs.Outline = function (outlineType, onLoad) { this.onLoad = onLoad; this.outlineType = outlineType; var v = hs.uaVersion, tr; this.hasAlphaImageLoader = hs.ie && v >= 5.5 && v = 4 * this.offset) ? 'visible' : 'hidden'; hs.setStyles(this.table, { left: (pos.x - this.offset) +'px', top: (pos.y - this.offset) +'px', width: (pos.w + 2 * this.offset) +'px' }); pos.w -= 2 * this.offset; pos.h -= 2 * this.offset; hs.setStyles (this.td[4], { width: pos.w >= 0 ? pos.w +'px' : 0, height: pos.h >= 0 ? pos.h +'px' : 0 }); if (this.hasAlphaImageLoader) this.td[3].style.height = this.td[5].style.height = this.td[4].style.height; }, destroy : function(hide) { if (hide) this.table.style.visibility = 'hidden'; else hs.discardElement(this.table); } }; hs.Dimension = function(exp, dim) { this.exp = exp; this.dim = dim; this.ucwh = dim == 'x' ? 'Width' : 'Height'; this.wh = this.ucwh.toLowerCase(); this.uclt = dim == 'x' ? 'Left' : 'Top'; this.lt = this.uclt.toLowerCase(); this.ucrb = dim == 'x' ? 'Right' : 'Bottom'; this.rb = this.ucrb.toLowerCase(); this.p1 = this.p2 = 0; }; hs.Dimension.prototype = { get : function(key) { switch (key) { case 'loadingPos': return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2; case 'wsize': return this.size + 2 * this.cb + this.p1 + this.p2; case 'fitsize': return this.clientSize - this.marginMin - this.marginMax; case 'maxsize': return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ; case 'opos': return this.pos - (this.exp.outline ? this.exp.outline.offset : 0); case 'osize': return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0); case 'imgPad': return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0; } }, calcBorders: function() { // correct for borders this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2; this.marginMax = hs['margin'+ this.ucrb] + 2 * this.cb; }, calcThumb: function() { this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) : this.exp.el['offset'+ this.ucwh]; this.tpos = this.exp.tpos[this.dim]; this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2; if (this.tpos == 0) { this.tpos = (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; this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full); this.minSize = exp.allowSizeReduction ? Math.min(exp['min'+ this.ucwh], this.full) :this.full; if (exp.isImage && exp.useBox) { this.size = exp[this.wh]; this.imgSize = this.full; } if (this.dim == 'x' && hs.padToMinWidth) this.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.size, this.imgSize); exp.content.style[this.lt] = this.get('imgPad')+'px'; } else this.size = i; exp.content.style[this.wh] = i +'px'; exp.wrapper.style[this.wh] = this.get('wsize') +'px'; if (exp.outline) exp.outline.setPosition(); if (exp.releaseMask) exp.releaseMask.style[this.wh] = i +'px'; if (exp.isHtml) { var d = 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.body) exp.body.style[this.wh] = 'auto'; } if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true); }, setPos: function(i) { this.pos = i; this.exp.wrapper.style[this.lt] = i +'px'; if (this.exp.outline) this.exp.outline.setPosition(); } }; hs.Expander = function(a, params, custom, contentType) { if (document.readyState && hs.ie && !hs.isReady) { hs.addEventListener(document, 'ready', function() { new hs.Expander(a, params, custom, contentType); }); return; } this.a = a; this.custom = custom; this.contentType = contentType || 'image'; this.isHtml = (contentType == 'html'); this.isImage = !this.isHtml; hs.continuePreloading = false; this.overlays = []; hs.init(); var key = this.key = hs.expanders.length; // override inline parameters for (var i = 0; i (this.x.imgSize || this.x.size)) { this.createFullExpand(); if (this.overlays.length == 1) this.sizeOverlayBox(); } } this.show(); } catch (e) { this.error(e); } }, setObjContainerSize : function(parent, auto) { var c = hs.getElementByClass(parent, 'DIV', 'highslide-body'); if (/(iframe|swf)/.test(this.objectType)) { if (this.objectWidth) c.style.width = this.objectWidth +'px'; if (this.objectHeight) c.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.objectWidth) this.objectWidth = ruler.offsetWidth; var hDiff = this.innerContent.offsetHeight - this.body.offsetHeight, h = 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 += ''; 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 a = this.swfOptions; if (typeof a.params.wmode == 'undefined') a.params.wmode = 'transparent'; if (swfobject) swfobject.embedSWF(this.src, this.body.id, this.objectWidth, this.objectHeight, a.version || '7', a.expressInstallSwfurl, a.flashvars, a.params, a.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.full) this.x.full = this.innerContent.offsetWidth; this.y.full = this.innerContent.offsetHeight; this.innerContent.removeChild(hs.clearing); if (hs.ie && this.newHeight > parseInt(this.innerContent.currentStyle.height)) { // ie css bug this.newHeight = parseInt(this.innerContent.currentStyle.height); } hs.setStyles( this.wrapper, { position: 'absolute', padding: '0'}); hs.setStyles( this.content, { width: this.x.t +'px', height: this.y.t +'px'}); }, getIframePageHeight : function() { var h; try { var doc = this.iframe.contentDocument || this.iframe.contentWindow.document; var clearing = doc.createElement('div'); clearing.style.clear = 'both'; doc.body.appendChild(clearing); h = clearing.offsetTop; if (hs.ie) h += parseInt(doc.body.currentStyle.marginTop) + parseInt(doc.body.currentStyle.marginBottom) - 1; } catch (e) { // other domain h = 300; } return h; }, correctIframeSize : function () { var wDiff = this.innerContent.offsetWidth - this.ruler.offsetWidth; if (wDiff 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.scrollerDiv.parentNode.offsetHeight) { setTimeout("try { hs.expanders["+ this.key +"].scrollerDiv.style.overflow = 'auto'; } catch(e) {}", hs.expandDuration); } }, justify : function (p, moveOnly) { var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y'; var hasMovedMin = false; var allowReduce = p.exp.allowSizeReduction; p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2)); if (p.pos p.scroll + p.clientSize - p.marginMax) { if (!moveOnly && hasMovedMin && allowReduce) { p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize'); } else if (p.get('wsize') ratio) { // width greater xSize = ySize * ratio; if (xSize this.minHeight && x.size > this.minWidth && y.get('wsize') > y.get('fitsize')) { y.size -= 10; if (ratio) x.size = y.size * ratio; this.sizeOverlayBox(0, 1); } } }, show : function () { var x = this.x, y = this.y; this.doShowHide('hidden'); // Apply size change this.changeSize( 1, { wrapper: { width : x.get('wsize'), height : y.get('wsize'), left: x.pos, top: y.pos }, content: { left: x.p1 + x.get('imgPad'), top: y.p1 + y.get('imgPad'), width:x.imgSize ||x.size, height:y.imgSize ||y.size } }, hs.expandDuration ); }, changeSize : function(up, to, dur) { if (this.outline && !this.outlineWhileAnimating) { if (up) this.outline.setPosition(); else this.outline.destroy( (this.isHtml && this.preserveContent)); } if (!up) this.destroyOverlays(); var exp = this, x = exp.x, y = exp.y, easing = this.easing; if (!up) easing = this.easingClose || easing; var after = up ? function() { if (exp.outline) exp.outline.table.style.visibility = "visible"; setTimeout(function() { exp.afterExpand(); }, 50); } : function() { exp.afterClose(); }; if (up) hs.setStyles( this.wrapper, { width: x.t +'px', height: y.t +'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, { opacity: up ? 0 : 1 }); hs.extend(to.wrapper, { opacity: up }); } hs.animate( this.wrapper, to.wrapper, { duration: dur, easing: easing, step: function(val, args) { if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') { var fac = up ? args.pos : 1 - args.pos; var pos = { w: x.t + (x.get('wsize') - x.t) * fac, h: y.t + (y.get('wsize') - y.t) * fac, x: x.tpos + (x.pos - x.tpos) * fac, y: y.tpos + (y.pos - y.tpos) * fac }; exp.outline.setPosition(pos, 0, 1); } 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.animate( this.content, to.content, dur, easing, after); if (up) { this.wrapper.style.visibility = 'visible'; this.content.style.visibility = 'visible'; if (this.isHtml) this.innerContent.style.visibility = 'visible'; this.a.className += ' highslide-active-anchor'; } }, 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.key) exp.focus(); }); } catch(e) {} if (hs.ie && typeof this.isClosing != 'boolean') // first open this.iframe.style.width = (this.objectWidth - 1) +'px'; // hasLayout } if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null; this.prepareNextOutline(); var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop; this.mouseIsOver = this.x.pos slideshow) : ?>s*/ if (!as[current + op] && this.slideshow && this.slideshow.repeat) { if (op == 1) return as[0]; else if (op == -1) return as[as.length-1]; } /*s*/ return as[current + op] || null; }, getAnchorIndex : function() { var arr = hs.getAnchors().groups[this.slideshowGroup || 'none']; if (arr) for (var i = 0; i this.x.get('opos') + this.x.get('osize')); var clearsY = (elPos.y + elPos.h 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++; // blur others for (var i = 0; i = 5.5) { s = s.replace(/\s/g, ' ').replace( new RegExp(']*>', 'gi'), '').replace( new RegExp('', 'gi'), ''); if (this.iframe) { var doc = this.iframe.contentDocument; if (!doc && this.iframe.contentWindow) doc = this.iframe.contentWindow.document; if (!doc) { // Opera var pThis = this; setTimeout(function() { pThis.loadHTML(); }, 25); return; } doc.open(); doc.write(s); doc.close(); try { s = doc.getElementById(this.id).innerHTML; } catch (e) { try { s = this.iframe.document.getElementById(this.id).innerHTML; } catch (e) {} // opera } } else { s = s.replace(new RegExp('^.*?]*>(.*?).*?$', 'i'), '$1'); } } hs.getElementByClass(this.content, 'DIV', 'highslide-body').innerHTML = s; this.onLoad(); for (var x in this) this[x] = null; } }; if (hs.ie) { (function () { try { document.documentElement.doScroll('left'); } catch (e) { setTimeout(arguments.callee, 50); return; } hs.ready(); })(); } hs.addEventListener(document, 'DOMContentLoaded', hs.ready); hs.addEventListener(window, 'load', hs.ready); hs.langDefaults = hs.lang; // history var HsExpander = hs.Expander; // set handlers hs.addEventListener(window, 'load', function() { if (hs.expandCursor) { var sel = '.highslide img', dec = 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;'; var style = hs.createElement('style', { type: 'text/css' }, null, document.getElementsByTagName('HEAD')[0]); if (!hs.ie) { style.appendChild(document.createTextNode(sel + " {" + dec + "}")); } else { var last = document.styleSheets[document.styleSheets.length - 1]; if (typeof(last.addRule) == "object") last.addRule(sel, dec); } } }); hs.addEventListener(window, 'resize', function() { hs.page = hs.getPageSize(); }); hs.addEventListener(document, 'mousemove', function(e) { hs.mouse = { x: e.clientX, y: e.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); hs.addEventListener(window, 'load', hs.preloadAjax);