(function() {
    var ua = navigator.userAgent.toLowerCase(), S = { version: "3.0b", adapter: null, cache: [], client: { isIE: ua.indexOf('msie') > -1, isIE6: ua.indexOf('msie 6') > -1, isIE7: ua.indexOf('msie 7') > -1, isGecko: ua.indexOf('gecko') > -1 && ua.indexOf('safari') == -1, isWebkit: ua.indexOf('applewebkit/') > -1, isWindows: ua.indexOf('windows') > -1 || ua.indexOf('win32') > -1, isMac: ua.indexOf('macintosh') > -1 || ua.indexOf('mac os x') > -1, isLinux: ua.indexOf('linux') > -1 }, content: null, current: -1, dimensions: null, gallery: [], expando: 'shadowboxCacheKey', libraries: { Prototype: 'prototype', jQuery: 'jquery', MooTools: 'mootools', YAHOO: 'yui', dojo: 'dojo', Ext: 'ext' }, options: { adapter: null, animate: true, animateFade: true, autoplayMovies: true, continuous: false, ease: function(x) { return 1 + Math.pow(x - 1, 3); }, enableKeys: true, errors: { fla: { name: 'Flash', url: 'http://www.adobe.com/products/flashplayer/' }, qt: { name: 'QuickTime', url: 'http://www.apple.com/quicktime/download/' }, wmp: { name: 'Windows Media Player', url: 'http://www.microsoft.com/windows/windowsmedia/' }, f4m: { name: 'Flip4Mac', url: 'http://www.flip4mac.com/wmv_download.htm'} }, ext: { img: ['png', 'jpg', 'jpeg', 'gif', 'bmp'], swf: ['swf'], flv: ['flv', 'm4v'], qt: ['dv', 'mov', 'moov', 'movie', 'mp4'], wmp: ['asf', 'wm', 'wmv'], qtwmp: ['avi', 'mpg', 'mpeg'] }, flashParams: { bgcolor: '#000000', allowfullscreen: true }, flashVars: {}, flashVersion: '9.0.115', handleOversize: 'resize', handleUnsupported: 'link', language: 'en', onChange: null, onClose: null, onFinish: null, onOpen: null, players: ['img'], showMovieControls: true, skipSetup: false, slideshowDelay: 0, useSizzle: true, viewportPadding: 20 }, path: '', plugins: null, ready: false, regex: { domain: /:\/\/(.*?)[:\/]/, inline: /#(.+)$/, rel: /^(light|shadow)box/i, gallery: /^(light|shadow)box\[(.*?)\]/i, unsupported: /^unsupported-(\w+)/, param: /\s*([a-z_]*?)\s*=\s*(.+)\s*/ }, applyOptions: function(opts) { if (opts) { default_options = apply({}, S.options); apply(S.options, opts); } }, revertOptions: function() { apply(S.options, default_options); }, change: function(index) {
        if (!S.gallery) return; if (!S.gallery[index]) {
            if (!S.options.continuous)
                return; else
                index = index < 0 ? S.gallery.length - 1 : 0;
        }
        S.current = index; if (typeof slide_timer == 'number') { clearTimeout(slide_timer); slide_timer = null; slide_delay = slide_start = 0; }
        if (S.options.onChange)
            S.options.onChange(); loadContent();
    }, close: function() {
        if (!active) return; active = false; listenKeys(false); if (S.content) { S.content.remove(); S.content = null; }
        if (typeof slide_timer == 'number')
            clearTimeout(slide_timer); slide_timer = null; slide_delay = 0; if (S.options.onClose)
            S.options.onClose(); S.skin.onClose(); S.revertOptions();
    }, contentId: function() { return content_id; }, error: function(msg) {
        if (!S.debug) return; if (typeof window['console'] != 'undefined' && typeof console.log == 'function')
            console.log(msg); else
            alert(msg);
    }, getCurrent: function() { return S.current > -1 ? S.gallery[S.current] : null; }, hasNext: function() { return S.gallery.length > 1 && (S.current != S.gallery.length - 1 || S.options.continuous); }, init: function(opts) {
        if (initialized) return; initialized = true; opts = opts || {}; init_options = opts; if (opts)
            apply(S.options, opts); for (var e in S.options.ext)
            S.regex[e] = new RegExp('\.(' + S.options.ext[e].join('|') + ')\s*$', 'i'); if (!S.path) { var pathre = /(.+\/)shadowbox\.js/i, path; each(document.getElementsByTagName('script'), function(s) { path = pathre.exec(s.src); if (path) { S.path = path[1]; return false; } }); }
        if (S.options.adapter)
            S.adapter = S.options.adapter.toLowerCase(); else {
            for (var lib in S.libraries) { if (typeof window[lib] != 'undefined') { S.adapter = S.libraries[lib]; break; } }
            if (!S.adapter)
                S.adapter = 'base';
        }
        if (S.options.useSizzle && !window['Sizzle'])
            if (window['jQuery'])
            window['Sizzle'] = jQuery.find; else
            U.include(S.path + 'libraries/sizzle/sizzle.js'); if (!S.lang)
            U.include(S.path + 'languages/shadowbox-' + S.options.language + '.js'); each(S.options.players, function(p) {
                if ((p == 'swf' || p == 'flv') && !window['swfobject'])
                    U.include(S.path + 'libraries/swfobject/swfobject.js'); if (!S[p])
                    U.include(S.path + 'players/shadowbox-' + p + '.js');
            }); if (!S.lib)
            U.include(S.path + 'adapters/shadowbox-' + S.adapter + '.js'); waitDom(waitLibs);
    }, isActive: function() { return active; }, isPaused: function() { return slide_timer == 'paused'; }, load: function() {
        if (S.ready) return; S.ready = true; if (S.skin.options) { apply(S.options, S.skin.options); apply(S.options, init_options); }
        S.skin.init(); if (!S.options.skipSetup)
            S.setup();
    }, next: function() { S.change(S.current + 1); }, open: function(obj) {
        if (U.isLink(obj)) {
            if (S.inCache(obj))
                obj = S.cache[obj[S.expando]]; else
                obj = S.buildCacheObj(obj);
        }
        if (obj.constructor == Array) { S.gallery = obj; S.current = 0; } else {
            if (!obj.gallery) { S.gallery = [obj]; S.current = 0; } else {
                S.current = null; S.gallery = []; each(S.cache, function(c) {
                    if (c.gallery && c.gallery == obj.gallery) {
                        if (S.current == null && c.content == obj.content && c.title == obj.title)
                            S.current = S.gallery.length; S.gallery.push(c);
                    } 
                }); if (S.current == null) { S.gallery.unshift(obj); S.current = 0; } 
            } 
        }
        obj = S.getCurrent(); if (obj.options) { S.revertOptions(); S.applyOptions(obj.options); }
        var item, remove, m, format, replace, oe = S.options.errors, msg, el; for (var i = 0; i < S.gallery.length; ++i) {
            item = S.gallery[i] = apply({}, S.gallery[i]); remove = false; if (m = S.regex.unsupported.exec(item.player)) {
                if (S.options.handleUnsupported == 'link') {
                    item.player = 'html'; switch (m[1]) { case 'qtwmp': format = 'either'; replace = [oe.qt.url, oe.qt.name, oe.wmp.url, oe.wmp.name]; break; case 'qtf4m': format = 'shared'; replace = [oe.qt.url, oe.qt.name, oe.f4m.url, oe.f4m.name]; break; default: format = 'single'; if (m[1] == 'swf' || m[1] == 'flv') m[1] = 'fla'; replace = [oe[m[1]].url, oe[m[1]].name]; }
                    msg = S.lang.errors[format].replace(/\{(\d+)\}/g, function(m, n) { return replace[n]; }); item.content = '<div class="sb-message">' + msg + '</div>';
                } else
                    remove = true;
            } else if (item.player == 'inline') {
                m = S.regex.inline.exec(item.content); if (m) {
                    var el = U.get(m[1]); if (el)
                        item.content = el.innerHTML; else
                        S.error('Cannot find element with id ' + m[1]);
                } else
                    S.error('Cannot find element id for inline content');
            } else if (item.player == 'swf' || item.player == 'flv') { var version = (item.options && item.options.flashVersion) || S.options.flashVersion; if (!swfobject.hasFlashPlayerVersion(version)) { item.width = 310; item.height = 177; } }
            if (remove) {
                S.gallery.splice(i, 1); if (i < S.current)
                    --S.current; else if (i == S.current)
                    S.current = i > 0 ? i - 1 : i; --i;
            } 
        }
        if (S.gallery.length) {
            if (!active) {
                if (typeof S.options.onOpen == 'function' && S.options.onOpen(obj) === false)
                    return; S.skin.onOpen(obj, loadContent);
            } else
                loadContent(); active = true;
        } 
    }, pause: function() {
        if (typeof slide_timer != 'number') return; var time = new Date().getTime(); slide_delay = Math.max(0, slide_delay - (time - slide_start)); if (slide_delay) {
            clearTimeout(slide_timer); slide_timer = 'paused'; if (S.skin.onPause)
                S.skin.onPause();
        } 
    }, play: function() {
        if (!S.hasNext()) return; if (!slide_delay) slide_delay = S.options.slideshowDelay * 1000; if (slide_delay) {
            slide_start = new Date().getTime(); slide_timer = setTimeout(function() { slide_delay = slide_start = 0; S.next(); }, slide_delay); if (S.skin.onPlay)
                S.skin.onPlay();
        } 
    }, previous: function() { S.change(S.current - 1); }, setDimensions: function(height, width, max_h, max_w, tb, lr, resizable) {
        var h = height = parseInt(height), w = width = parseInt(width), pad = parseInt(S.options.viewportPadding) || 0; var extra_h = 2 * pad + tb; if (h + extra_h >= max_h) h = max_h - extra_h; var extra_w = 2 * pad + lr; if (w + extra_w >= max_w) w = max_w - extra_w; var resize_h = height, resize_w = width, change_h = (height - h) / height, change_w = (width - w) / width, oversized = (change_h > 0 || change_w > 0); if (resizable && oversized && S.options.handleOversize == 'resize') {
            if (change_h > change_w)
                w = Math.round((width / height) * h); else if (change_w > change_h)
                h = Math.round((height / width) * w); resize_w = w; resize_h = h;
        }
        S.dimensions = { height: h + tb, width: w + lr, inner_h: h, inner_w: w, top: (max_h - (h + extra_h)) / 2 + pad, left: (max_w - (w + extra_w)) / 2 + pad, oversized: oversized, resize_h: resize_h, resize_w: resize_w };
    }, setup: function(links, opts) { each(S.findLinks(links), function(link) { S.addCache(link, opts); }); }, teardown: function(links) { each(S.findLinks(links), S.removeCache); }, findLinks: function(links) {
        if (!links) {
            var links = [], rel; each(document.getElementsByTagName('a'), function(a) {
                rel = a.getAttribute('rel'); if (rel && S.regex.rel.test(rel))
                    links.push(a);
            });
        } else {
            var len = links.length; if (len) {
                if (window['Sizzle']) {
                    if (typeof links == 'string')
                        links = Sizzle(links); else if (len == 2 && links.push && typeof links[0] == 'string' && links[1].nodeType)
                        links = Sizzle(links[0], links[1]);
                } 
            } else
                links = [links];
        }
        return links;
    }, inCache: function(link) { return typeof link[S.expando] == 'number' && S.cache[link[S.expando]]; }, addCache: function(link, opts) {
        if (!S.inCache(link)) { link[S.expando] = S.cache.length; S.lib.addEvent(link, 'click', handleClick); }
        S.cache[link[S.expando]] = S.buildCacheObj(link, opts);
    }, removeCache: function(link) { S.lib.removeEvent(link, 'click', handleClick); S.cache[link[S.expando]] = null; delete link[S.expando]; }, clearCache: function() { each(S.cache, function(obj) { S.removeCache(obj.link); }); S.cache = []; }, buildCacheObj: function(link, opts) {
        var obj = { link: link, title: link.getAttribute('title'), options: apply({}, opts || {}), content: link.href }; if (opts) each(['player', 'title', 'height', 'width', 'gallery'], function(option) { if (typeof obj.options[option] != 'undefined') { obj[option] = obj.options[option]; delete obj.options[option]; } }); if (!obj.player)
            obj.player = S.getPlayer(obj.content); var rel = link.getAttribute('rel'); if (rel) {
            var match = rel.match(S.regex.gallery); if (match)
                obj.gallery = escape(match[2]); each(rel.split(';'), function(parameter) {
                    match = parameter.match(S.regex.param); if (match) {
                        if (match[1] == 'options')
                            eval('apply(obj.options,' + match[2] + ')'); else
                            obj[match[1]] = match[2];
                    } 
                });
        }
        return obj;
    }, getPlayer: function(content) {
        var r = S.regex, p = S.plugins, m = content.match(r.domain), same_domain = m && document.domain == m[1]; if (content.indexOf('#') > -1 && same_domain) return 'inline'; var q = content.indexOf('?'); if (q > -1) content = content.substring(0, q); if (r.img.test(content)) return 'img'; if (r.swf.test(content)) return p.fla ? 'swf' : 'unsupported-swf'; if (r.flv.test(content)) return p.fla ? 'flv' : 'unsupported-flv'; if (r.qt.test(content)) return p.qt ? 'qt' : 'unsupported-qt'; if (r.wmp.test(content)) { if (p.wmp) return 'wmp'; if (p.f4m) return 'qt'; if (S.client.isMac) return p.qt ? 'unsupported-f4m' : 'unsupported-qtf4m'; return 'unsupported-wmp'; }
        if (r.qtwmp.test(content)) { if (p.qt) return 'qt'; if (p.wmp) return 'wmp'; return S.client.isMac ? 'unsupported-qt' : 'unsupported-qtwmp'; }
        return 'iframe';
    } 
    }, U = S.util = { animate: function(el, p, to, d, cb) {
        var from = parseFloat(S.lib.getStyle(el, p)); if (isNaN(from)) from = 0; var delta = to - from; if (delta == 0) { if (cb) cb(); return; }
        var op = p == 'opacity'; function fn(ease) {
            var to = from + ease * delta; if (op)
                U.setOpacity(el, to); else
                el.style[p] = to + 'px';
        }
        if (!d || (!op && !S.options.animate) || (op && !S.options.animateFade)) { fn(1); if (cb) cb(); return; }
        d *= 1000; var begin = new Date().getTime(), ease = S.options.ease, end = begin + d, time, timer = setInterval(function() {
            time = new Date().getTime(); if (time >= end) { clearInterval(timer); fn(1); if (cb) cb(); } else
                fn(ease((time - begin) / d));
        }, 10);
    }, apply: function(o, e) {
        for (var p in e)
            o[p] = e[p]; return o;
    }, clearOpacity: function(el) {
        var s = el.style; if (window.ActiveXObject) {
            if (typeof s.filter == 'string' && (/alpha/i).test(s.filter))
                s.filter = s.filter.replace(/[\w\.]*alpha\(.*?\);?/i, '');
        } else
            s.opacity = '';
    }, each: function(obj, fn, scope) {
        for (var i = 0, len = obj.length; i < len; ++i)
            if (fn.call(scope || obj[i], obj[i], i, obj) === false) return;
    }, get: function(id) { return document.getElementById(id); }, include: function() { var includes = {}; return function(file) { if (includes[file]) return; includes[file] = true; var head = document.getElementsByTagName('head')[0], script = document.createElement('script'); script.src = file; head.appendChild(script); } } (), isLink: function(obj) { if (!obj || !obj.tagName) return false; var up = obj.tagName.toUpperCase(); return up == 'A' || up == 'AREA'; }, removeChildren: function(el) {
        while (el.firstChild)
            el.removeChild(el.firstChild);
    }, setOpacity: function(el, o) {
        var s = el.style; if (window.ActiveXObject) {
            s.zoom = 1; s.filter = (s.filter || '').replace(/\s*alpha\([^\)]*\)/gi, '') +
(o == 1 ? '' : ' alpha(opacity=' + (o * 100) + ')');
        } else
            s.opacity = o;
    } 
    }, apply = U.apply, each = U.each, init_options, initialized = false, default_options = {}, content_id = 'sb-content', active = false, slide_timer, slide_start, slide_delay = 0; if (navigator.plugins && navigator.plugins.length) { var names = []; each(navigator.plugins, function(p) { names.push(p.name); }); names = names.join(); var f4m = names.indexOf('Flip4Mac') > -1; S.plugins = { fla: names.indexOf('Shockwave Flash') > -1, qt: names.indexOf('QuickTime') > -1, wmp: !f4m && names.indexOf('Windows Media') > -1, f4m: f4m} } else {
        function detectPlugin(n) {
            try { var axo = new ActiveXObject(n); } catch (e) { }
            return !!axo;
        }
        S.plugins = { fla: detectPlugin('ShockwaveFlash.ShockwaveFlash'), qt: detectPlugin('QuickTime.QuickTime'), wmp: detectPlugin('wmplayer.ocx'), f4m: false}
    }
    function waitDom(cb) {
        if (document.addEventListener) { document.addEventListener("DOMContentLoaded", function() { document.removeEventListener("DOMContentLoaded", arguments.callee, false); cb(); }, false); } else if (document.attachEvent) {
            document.attachEvent("onreadystatechange", function() { if (document.readyState === "complete") { document.detachEvent("onreadystatechange", arguments.callee); cb(); } }); if (document.documentElement.doScroll && window == window.top) (function() {
                if (S.ready) return; try { document.documentElement.doScroll("left"); } catch (error) { setTimeout(arguments.callee, 0); return; }
                cb();
            })();
        }
        if (typeof window.onload == 'function') { var oldonload = window.onload; window.onload = function() { oldonload(); cb(); } } else
            window.onload = cb;
    }
    function waitLibs() {
        if (S.lib && S.lang)
            S.load(); else
            setTimeout(waitLibs, 0);
    }
    function handleClick(e) {
        var link; if (U.isLink(this)) { link = this; } else {
            link = S.lib.getTarget(e); while (!U.isLink(link) && link.parentNode)
                link = link.parentNode;
        }
        S.lib.preventDefault(e); if (link) {
            S.open(link); if (S.gallery.length)
                S.lib.preventDefault(e);
        } 
    }
    function listenKeys(on) { if (!S.options.enableKeys) return; S.lib[(on ? 'add' : 'remove') + 'Event'](document, 'keydown', handleKey); }
    function handleKey(e) {
        var code = S.lib.keyCode(e), handler; switch (code) { case 81: case 88: case 27: handler = S.close; break; case 37: handler = S.previous; break; case 39: handler = S.next; break; case 32: handler = typeof slide_timer == 'number' ? S.pause : S.play; }
        if (handler) { S.lib.preventDefault(e); handler(); } 
    }
    function loadContent() {
        var obj = S.getCurrent(); if (!obj) return; var p = obj.player == 'inline' ? 'html' : obj.player; if (typeof S[p] != 'function')
            S.error('Unknown player: ' + p); var change = false; if (S.content) {
            S.content.remove(); change = true; S.revertOptions(); if (obj.options)
                S.applyOptions(obj.options);
        }
        U.removeChildren(S.skin.bodyEl()); S.content = new S[p](obj); listenKeys(false); S.skin.onLoad(S.content, change, function() {
            if (!S.content) return; if (typeof S.content.ready != 'undefined') { var id = setInterval(function() { if (S.content) { if (S.content.ready) { clearInterval(id); id = null; S.skin.onReady(contentReady); } } else { clearInterval(id); id = null; } }, 100); } else
                S.skin.onReady(contentReady);
        }); if (S.gallery.length > 1) {
            var next = S.gallery[S.current + 1] || S.gallery[0]; if (next.player == 'img') { var a = new Image(); a.src = next.content; }
            var prev = S.gallery[S.current - 1] || S.gallery[S.gallery.length - 1]; if (prev.player == 'img') { var b = new Image(); b.src = prev.content; } 
        } 
    }
    function contentReady() { if (!S.content) return; S.content.append(S.skin.bodyEl(), content_id, S.dimensions); S.skin.onFinish(finishContent); }
    function finishContent() {
        if (!S.content) return; if (S.content.onLoad)
            S.content.onLoad(); if (S.options.onFinish)
            S.options.onFinish(); if (!S.isPaused())
            S.play(); listenKeys(true);
    }
    window['Shadowbox'] = S;
})(); (function() {
    var S = Shadowbox, U = S.util, overlay_on = false, visibility_cache = [], png = ['sb-nav-close', 'sb-nav-next', 'sb-nav-play', 'sb-nav-pause', 'sb-nav-previous'], K = { markup: '<div id="sb-container">' + '<div id="sb-overlay"></div>' + '<div id="sb-wrapper">' + '<div id="sb-info">' + '<div id="sb-info-inner">' + '<div id="sb-counter"></div>' + '<div id="sb-nav">' + '<a id="sb-nav-close" title="{close}" onclick="Shadowbox.close()">esc | close&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>' + '<a id="sb-nav-next" title="{next}" onclick="Shadowbox.next()"></a>' + '<a id="sb-nav-play" title="{play}" onclick="Shadowbox.play()"></a>' + '<a id="sb-nav-pause" title="{pause}" onclick="Shadowbox.pause()"></a>' + '<a id="sb-nav-previous" title="{previous}" onclick="Shadowbox.previous()"></a>' + '</div>' + '<div style="clear:both"></div>' + '</div>' + '</div>' + '<div id="sb-title">' + '<div id="sb-title-inner"></div>' + '</div>' + '<div id="sb-body">' + '<div id="sb-body-inner"></div>' + '<div id="sb-loading">' + '<a onclick="Shadowbox.close()">{cancel}</a>' + '</div>' + '</div>' + '</div>' + '</div>', options: { animSequence: 'sync', autoDimensions: false, counterLimit: 10, counterType: 'default', displayCounter: true, displayNav: true, fadeDuration: 0.35, initialHeight: 160, initialWidth: 320, modal: false, overlayColor: '#000', overlayOpacity: 0.8, resizeDuration: 0.35, showOverlay: true, troubleElements: ['select', 'object', 'embed', 'canvas'] }, init: function() {
        var markup = K.markup.replace(/\{(\w+)\}/g, function(m, p) { return S.lang[p]; }); S.lib.append(document.body, markup); if (S.client.isIE6) {
            U.get('sb-body').style.zoom = 1; var el, m, re = /url\("(.*\.png)"\)/; U.each(png, function(id) {
                el = U.get(id); if (el) {
                    m = S.lib.getStyle(el, 'backgroundImage').match(re); if (m) {
                        el.style.backgroundImage = 'none'; el.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src=' +
m[1] + ',sizingMethod=scale);';
                    } 
                } 
            });
        }
        var id; S.lib.addEvent(window, 'resize', function() {
            if (id) { clearTimeout(id); id = null; }
            if (S.isActive()) {
                id = setTimeout(function() {
                    K.onWindowResize(); var c = S.content; if (c && c.onWindowResize)
                        c.onWindowResize();
                }, 50);
            } 
        });
    }, bodyEl: function() { return U.get('sb-body-inner'); }, onOpen: function(obj, cb) { toggleTroubleElements(false); var h = S.options.autoDimensions && 'height' in obj ? obj.height : S.options.initialHeight, w = S.options.autoDimensions && 'width' in obj ? obj.width : S.options.initialWidth; U.get('sb-container').style.display = 'block'; var d = setDimensions(h, w); adjustHeight(d.inner_h, d.top, false); adjustWidth(d.width, d.left, false); toggleVisible(cb); }, onLoad: function(content, change, cb) { toggleLoading(true); hideBars(change, function() { if (!content) return; if (!change) U.get('sb-wrapper').style.display = ''; cb(); }); }, onReady: function(cb) { var c = S.content; if (!c) return; var d = setDimensions(c.height, c.width, c.resizable); K.resizeContent(d.inner_h, d.width, d.top, d.left, true, function() { showBars(cb); }); }, onFinish: function(cb) { toggleLoading(false, cb); }, onClose: function() { toggleVisible(); toggleTroubleElements(true); }, onPlay: function() { toggleNav('play', false); toggleNav('pause', true); }, onPause: function() { toggleNav('pause', false); toggleNav('play', true); }, onWindowResize: function() { var c = S.content; if (!c) return; var d = setDimensions(c.height, c.width, c.resizable); adjustWidth(d.width, d.left, false); adjustHeight(d.inner_h, d.top, false); var el = U.get(S.contentId()); if (el) { if (c.resizable && S.options.handleOversize == 'resize') { el.height = d.resize_h; el.width = d.resize_w; } } }, resizeContent: function(height, width, top, left, anim, cb) { var c = S.content; if (!c) return; var d = setDimensions(c.height, c.width, c.resizable); switch (S.options.animSequence) { case 'hw': adjustHeight(d.inner_h, d.top, anim, function() { adjustWidth(d.width, d.left, anim, cb); }); break; case 'wh': adjustWidth(d.width, d.left, anim, function() { adjustHeight(d.inner_h, d.top, anim, cb); }); break; default: adjustWidth(d.width, d.left, anim); adjustHeight(d.inner_h, d.top, anim, cb); } } 
    }; function fixTop() { U.get('sb-container').style.top = document.documentElement.scrollTop + 'px'; }
    function toggleTroubleElements(on) { if (on) { U.each(visibility_cache, function(c) { c[0].style.visibility = c[1] || ''; }); } else { visibility_cache = []; U.each(S.options.troubleElements, function(tag) { U.each(document.getElementsByTagName(tag), function(el) { visibility_cache.push([el, el.style.visibility]); el.style.visibility = 'hidden'; }); }); } }
    function toggleVisible(cb) {
        var so = U.get('sb-overlay'), sc = U.get('sb-container'), sb = U.get('sb-wrapper'); if (cb) {
            if (S.client.isIE6) { fixTop(); S.lib.addEvent(window, 'scroll', fixTop); }
            if (S.options.showOverlay) { overlay_on = true; so.style.backgroundColor = S.options.overlayColor; U.setOpacity(so, 0); if (!S.options.modal) S.lib.addEvent(so, 'click', S.close); sb.style.display = 'none'; }
            sc.style.visibility = 'visible'; if (overlay_on) { var op = parseFloat(S.options.overlayOpacity); U.animate(so, 'opacity', op, S.options.fadeDuration, cb); } else
                cb();
        } else {
            if (S.client.isIE6)
                S.lib.removeEvent(window, 'scroll', fixTop); S.lib.removeEvent(so, 'click', S.close); if (overlay_on) { sb.style.display = 'none'; U.animate(so, 'opacity', 0, S.options.fadeDuration, function() { sc.style.display = ''; sb.style.display = ''; U.clearOpacity(so); }); } else
                sc.style.visibility = 'hidden';
        } 
    }
    function toggleNav(id, on) { var el = U.get('sb-nav-' + id); if (el) el.style.display = on ? '' : 'none'; }
    function toggleLoading(on, cb) {
        var ld = U.get('sb-loading'), p = S.getCurrent().player, anim = (p == 'img' || p == 'html'); if (on) {
            function fn() { U.clearOpacity(ld); if (cb) cb(); }
            U.setOpacity(ld, 0); ld.style.display = ''; if (anim)
                U.animate(ld, 'opacity', 1, S.options.fadeDuration, fn); else
                fn();
        } else {
            function fn() { ld.style.display = 'none'; U.clearOpacity(ld); if (cb) cb(); }
            if (anim)
                U.animate(ld, 'opacity', 0, S.options.fadeDuration, fn); else
                fn();
        } 
    }
    function buildBars(cb) {
        var obj = S.getCurrent(); U.get('sb-title-inner').innerHTML = obj.title || ''; var c, n, pl, pa, p; if (S.options.displayNav) {
            c = true; var len = S.gallery.length; if (len > 1) {
                if (S.options.continuous)
                    n = p = true; else { n = (len - 1) > S.current; p = S.current > 0; } 
            }
            if (S.options.slideshowDelay > 0 && S.hasNext()) { pa = !S.isPaused(); pl = !pa; } 
        } else { c = n = pl = pa = p = false; }
        toggleNav('close', c); toggleNav('next', n); toggleNav('play', pl); toggleNav('pause', pa); toggleNav('previous', p); var counter = ''; if (S.options.displayCounter && S.gallery.length > 1) {
            var len = S.gallery.length; if (S.options.counterType == 'skip') {
                var i = 0, end = len, limit = parseInt(S.options.counterLimit) || 0; if (limit < len && limit > 2) { var h = Math.floor(limit / 2); i = S.current - h; if (i < 0) i += len; end = S.current + (limit - h); if (end > len) end -= len; }
                while (i != end) {
                    if (i == len) i = 0; counter += '<a onclick="Shadowbox.change(' + i + ');"'
                    if (i == S.current) counter += ' class="sb-counter-current"'; counter += '>' + (i++) + '</a>';
                } 
            } else
                var counter = (S.current + 1) + ' ' + S.lang.of + ' ' + len;
        }
        U.get('sb-counter').innerHTML = counter; cb();
    }
    function hideBars(anim, cb) {
        var sw = U.get('sb-wrapper'), st = U.get('sb-title'), si = U.get('sb-info'), ti = U.get('sb-title-inner'), ii = U.get('sb-info-inner'), t = parseInt(S.lib.getStyle(ti, 'height')) || 0, b = parseInt(S.lib.getStyle(ii, 'height')) || 0; var fn = function() { ti.style.visibility = ii.style.visibility = 'hidden'; buildBars(cb); }
        if (anim) { U.animate(st, 'height', 0, 0.35); U.animate(si, 'height', 0, 0.35); U.animate(sw, 'paddingTop', t, 0.35); U.animate(sw, 'paddingBottom', b, 0.35, fn); } else { st.style.height = si.style.height = '0px'; sw.style.paddingTop = t + 'px'; sw.style.paddingBottom = b + 'px'; fn(); } 
    }
    function showBars(cb) {
        var sw = U.get('sb-wrapper'), st = U.get('sb-title'), si = U.get('sb-info'), ti = U.get('sb-title-inner'), ii = U.get('sb-info-inner'), t = parseInt(S.lib.getStyle(ti, 'height')) || 0, b = parseInt(S.lib.getStyle(ii, 'height')) || 0; ti.style.visibility = ii.style.visibility = ''; if (ti.innerHTML != '') { U.animate(st, 'height', t, 0.35); U.animate(sw, 'paddingTop', 0, 0.35); }
        U.animate(si, 'height', b, 0.35); U.animate(sw, 'paddingBottom', 0, 0.35, cb);
    }
    function adjustHeight(height, top, anim, cb) { var sb = U.get('sb-body'), s = U.get('sb-wrapper'), h = parseInt(height), t = parseInt(top); if (anim) { U.animate(sb, 'height', h, S.options.resizeDuration); U.animate(s, 'top', t, S.options.resizeDuration, cb); } else { sb.style.height = h + 'px'; s.style.top = t + 'px'; if (cb) cb(); } }
    function adjustWidth(width, left, anim, cb) { var s = U.get('sb-wrapper'), w = parseInt(width), l = parseInt(left); if (anim) { U.animate(s, 'width', w, S.options.resizeDuration); U.animate(s, 'left', l, S.options.resizeDuration, cb); } else { s.style.width = w + 'px'; s.style.left = l + 'px'; if (cb) cb(); } }
    function setDimensions(height, width, resizable) {
        var sbi = U.get('sb-body-inner')
        sw = U.get('sb-wrapper'), so = U.get('sb-overlay'), tb = sw.offsetHeight - sbi.offsetHeight, lr = sw.offsetWidth - sbi.offsetWidth, max_h = so.offsetHeight, max_w = so.offsetWidth; S.setDimensions(height, width, max_h, max_w, tb, lr, resizable); return S.dimensions;
    }
    S.skin = K;
})();