﻿
function debug(text) { ((window.console && console.log) || (window.opera && opera.postError) || window.alert).call(this, text); }; (function ($) {
    $.fn.wstAlbumPopup = function (uri, options) {
        var defaults = { frameWidth: 15, autoShow: false, showClose: true, popupVideoHeight: 400, popupVideoWidth: 535 }; var picsToLoad = null; if (options != null) { picsToLoad = options.picsToLoad; options.picsToLoad = null; }
        var settings = $.extend(true, defaults, options); if (options != null) { options.picsToLoad = picsToLoad; }
        settings.picsToLoad = picsToLoad; var root = $(this); var links = []; var viewWidth; var viewHeight; var overlayDom = $('#wst_album_popup_overlay', document); if (overlayDom.length == 0) { overlayDom = $(document.createElement('div')).attr('id', 'wst_album_popup_overlay').hide().css({ 'height': screen.height + 'px' }); $('body', document).append(overlayDom); }
        var slideShowDom = $('#wst_album_popup', document); if (slideShowDom.length == 0) { slideShowDom = $(document.createElement('div')).attr('id', 'wst_album_popup').css({ 'margin': settings.frameWidth + 'px' }).hide(); $('body', document).append(slideShowDom); }
        if ($.browser.msie == true && $.browser.version <= 6) { overlayDom.css('position', 'absolute'); slideShowDom.css('position', 'absolute'); }
        function hidePopup() { slideShowDom.hide(); }
        function showPopup(idx) {
            slideShowDom.show(); overlayDom.show(); var picsToLoad = null; picsToLoad = settings.picsToLoad; settings.picsToLoad = null; var revisedSettings = $.extend(true, {}, settings, { imageHeight: null, uiFadeEnabled: true, uiFadeDelay: 2000, loadFullImages: true, columns: 1, moveFx: null, shuffle: false, slideShowContinuous: false, imageClickBehavior: 'next', imagePadding: 0, overlayMode: true, thumbnails: settings.thumbnails, thumbnailsSize: 65, sliderBar: settings.sliderBar, menuPosition: 'below', menuCompact: true, menuOffset: '0', bindKeys: true, menuVisible: true, menuActivateFromAnywhere: true, zoomToFit: false }); revisedSettings.picsToLoad = settings.picsToLoad = picsToLoad; if (settings.picIndexToSelect == null)
                revisedSettings.picIndexToSelect = idx; slideShowDom.wstAlbum(uri, revisedSettings); slideShowDom.focus();
        }
        if (settings.autoShow == true) { showPopup(); }
        else {
            root.each(function () {
                var me = $(this); me.data('idx', links.length); links.push(links.length); var a = me.filter('a'); if (a.length > 0)
                    a.attr('href', '#'); me.unbind('.wst_album_popup').bind('click.wst_album_popup', function (evt) { showPopup(me.data('idx')); evt.stopPropagation(); return false; });
            });
        } 
    }
    var runningAlbums = {}; $.fn.wstAlbum = function (uri, options) {
        var allFx = 'blind, bounce, clip, drop, fold, puff, pulsate, scale, shake'; var fxOptions = { 'blind': { direction: 'vertical' }, 'bounce': { direction: 'up', distance: 50, times: 2 }, 'clip': { direction: 'vertical' }, 'drop': { direction: 'up' }, 'explode': { number: 9 }, 'fold': {}, 'puff': { percent: 200 }, 'pulsate': { times: 1 }, 'scale': { percent: 100 }, 'shake': { direction: 'left', distance: 50, times: 1 }, 'slide': {} }
        var defaults = { dataType: 'xml', uiFadeEnabled: true, uiFadeDelay: 2000, menuPosition: 'top', menuCompact: false, menuOffset: '0', menuActivateFromAnywhere: false, fx: 'puff', fxShuffle: false, fxTime: 800, moveTime: 500, moveFx: null, columns: 2, imageHeight: 300, wrap: true, shuffle: false, preload: 3, loadFullImages: false, showStatus: false, titleShow: false, titlePosition: 'bottom', notesShow: false, notesPosition: 'bottom', slideShowStart: false, slideShowDelay: 4000, slideShowContinuous: true, slideShowSpeeds: [{ text: 'Slow', speed: 6000 }, { text: 'Medium', speed: 4000 }, { text: 'Fast', speed: 2000}], thumbnails: true, thumbnailsPosition: 'bottom', thumbnailsSize: 90, thumbnailNav: true, thumbnailIndex: 1, thumbnailBorder: 3, thumbnailSpacing: 5, thumbnailTooltip: true, sliderBar: false, sliderPosition: 'bottom', sliderSize: 14, borderWidth: 2, xPadding: 3, moduleSpacing: 10, resources: [{ height: 90 }, { height: 300 }, { height: 1200}], imagePadding: 2, imageClickBehavior: 'popup', overlayMode: false, picsToLoad: null, picIndexToSelect: 0, bindKeys: false, menuExtension: null, menuExtensionPosition: null, emptyAlbumHtml: 'Album Empty', aspect: { x: 4, y: 3 }, aspectThumbs: { x: 4, y: 3 }, zoomToFit: false, zoomToFitThumbs: false, onClose: null, afterClose: null, onClick: null, onPlay: null, onPause: null, onChange: null, onLoad: null, menuVisible: true, originalAlbumId: null, videoClick: '', videoPlay: '', videoPause: '', videoEnd: '', disableRightClick: false }; var picsToLoad = null; if (options != null) { picsToLoad = options.picsToLoad; options.picsToLoad = null; }
        var settings = $.extend(true, defaults, options); if (options != null) { options.picsToLoad = picsToLoad; }
        settings.picsToLoad = picsToLoad; if (typeof settings.fxTime == "string")
            settings.fxTime *= 1; if (typeof settings.moveTime == "string")
            settings.moveTime *= 1; if (typeof settings.columns == "string") {
            if (settings.columns.length == 0)
                settings.columns = null; else
                settings.columns *= 1;
        }
        if (typeof settings.imageHeight == "string")
            settings.imageHeight *= 1; if (typeof settings.preload == "string")
            settings.preload *= 1; if (typeof settings.slideShowDelay == "string")
            settings.slideShowDelay *= 1; if (typeof settings.thumbnailsSize == "string")
            settings.thumbnailsSize *= 1; if (typeof settings.borderWidth == "string")
            settings.borderWidth *= 1; if (typeof settings.xPadding == "string")
            settings.xPadding *= 1; if (typeof settings.imagePadding == "string")
            settings.imagePadding *= 1; if (typeof settings.menuFadeEnabled != "undefined" && settings.menuFadeEnabled !== null)
            settings.uiFadeEnabled = settings.menuFadeEnabled; if (typeof settings.hideMenusDelay != "undefined" && settings.hideMenusDelay !== null)
            settings.uiFadeDelay = settings.hideMenusDelay; if (settings.fx == null)
            settings.fx = allFx; var me = $(this); var meId = me.attr('id'); if (meId == null || meId.length == 0) { meId = 'wstAlbum' + Math.round(Math.random() * 65535); me.attr('id', meId); }
        var locals = runningAlbums[meId]; if (locals != null) { return locals.fn(locals, uri, settings); }
        locals = runningAlbums[meId] = { me_this: this, destroyed: true, fn: function (locals, uri, settings) {
            locals.me = $(locals.me_this); locals.meId = locals.me.attr('id'); switch (uri.toLowerCase()) {
                case 'play': slideShowStart(); return locals.me; case 'pause': slideShowStop(); return locals.me; case 'isplaying': return locals.slideShowPlaying; case 'getspeed': return locals.settings.slideShowDelay; case 'piccount': return locals.pics.length; case 'getpics': return locals.pics; case 'getsettings': return locals.settings; case 'picindex': return locals.picIndex; case 'render': render(); return locals.me; case 'goto': if (settings.picIndexToSelect < 0 || settings.picIndexToSelect >= locals.pics.length)
                        return locals.me; locals.picIndex = settings.picIndexToSelect; render(); return locals.me; case 'dump': return locals; case 'next': navNext(); return locals.me; case 'prev': navPrev(); return locals.me; case 'start': slideShowStart(); return locals.me; case 'imageclick': if (settings.picIndex < locals.pics.length)
                        imageClick(locals.pics[settings.picIndex], null); return locals.me;
            }; destroy(locals); if (uri.toLowerCase() == 'destroy') { delete runningAlbums[locals.meId]; return locals.me; }
            locals.destroyed = false; locals.animation = null; locals.me = $('#' + locals.meId); locals.meBody = locals.me.parent('body'); locals.meParent = locals.me.parent(); locals.uri = uri; settings.aspect.xRatio = settings.aspect.x / settings.aspect.y; settings.aspect.yRatio = settings.aspect.y / settings.aspect.x; settings.aspectThumbs.xRatio = settings.aspectThumbs.x / settings.aspectThumbs.y; settings.aspectThumbs.yRatio = settings.aspectThumbs.y / settings.aspectThumbs.x; settings.thumbnailsHeight = settings.thumbnailsSize; settings.thumbnailsWidth = settings.thumbnailsHeight * settings.aspectThumbs.xRatio; locals.settings = settings; if (locals.settings.thumbnails == true) { locals.settings.sliderBar = true; locals.settings.sliderPosition = locals.settings.thumbnailsPosition; }
            locals.pics = []; locals.resources = []; locals.picsXml = null; locals.picIndex = 0; locals.lastPic = null; locals.fxSpeed = locals.settings.fxTime; locals.slideSpeed = locals.settings.moveTime; locals.slideShowPlaying = false; locals.slideShowTimer = null; locals.imageWidth = 1800; locals.imageHeight = (locals.settings.imageHeight != null ? locals.settings.imageHeight : 100); locals.imagesInView = 3; locals.thumbsInView = 10; locals.fxIndex = 0; locals.fxList = locals.settings.fx.split(','); locals.useFullSize = false; locals.loadIndex = 0; locals.maxWidth; locals.innerHeight = 100; locals.innerWidth = locals.me.innerWidth(); locals.thumbsWidth; locals.SIG = Math.round(Math.random() * 100); locals.isLoaded = false; locals.loadCalled = false; locals.resumeSlideshow = false; locals.picsLoading = 0; locals.picsLoaded = 0; locals.isReady = false; locals.sliderWidth = 1; locals.sliderViewWidth = 1; locals.sliderPxPerPic = 1; locals.sliderPos = 0; locals.sliderMoving = false; locals.imagePadding = locals.settings.imagePadding * 2; locals.hideMenusTimer = null; locals.menusVisible = false; locals.thumbs = null; locals.thumbnails = null; locals.thumbsTooltip = null; locals.originalOverflow = locals.meBody.css('overflow'); locals.originalOverflowX = locals.meBody.css('overflow-x'); locals.originalOverflowY = locals.meBody.css('overflow-y'); if (locals.settings.overlayMode == true) { locals.meBody.css({ 'overflow': 'hidden', 'overflow-x': 'hidden', 'overflow-y': 'hidden' }); locals.meBody.parent('html').css({ 'height': '100%' }); }
            locals.container = $(document.createElement('div')).addClass('container'); locals.menu_left = $(document.createElement('div')).css({ 'height': (locals.imageHeight + locals.settings.borderWidth) + 'px' }).addClass('menu_left'); locals.menu_right = $(document.createElement('div')).css({ 'height': (locals.imageHeight + locals.settings.borderWidth) + 'px' }).addClass('menu_right'); locals.menu_width = 0; locals.ui_active = false; locals.menu = $(document.createElement('div')).css('visibility', 'hidden').addClass(locals.settings.menuCompact ? 'menu_sm' : 'menu').mouseover(function () { locals.ui_active = true; }).mouseout(function () { locals.ui_active = false; }); locals.menu_overlay = $(document.createElement('div')).css('visibility', 'hidden').addClass(locals.settings.menuCompact ? 'menu_overlay_sm' : 'menu_overlay'); locals.menu_placeholder = null; switch (locals.settings.menuPosition)
            { case 'above': locals.menu_placeholder = $(document.createElement('div')).css('height', (locals.settings.menuCompact ? 40 : 70) + 'px'); case 'top': locals.menu.css('top', locals.settings.menuOffset); locals.menu_overlay.css('top', locals.settings.menuOffset); break; case 'below': locals.menu_placeholder = $(document.createElement('div')).css('height', (locals.settings.menuCompact ? 40 : 70) + 'px'); default: locals.menu.css('bottom', locals.settings.menuOffset); locals.menu_overlay.css('bottom', locals.settings.menuOffset); break; }
            locals.container_parent = $(document.createElement('div')).addClass('container_parent').append(locals.container); locals.main = $(document.createElement('div')).addClass('main'); locals.statusBar = $(document.createElement('div')).addClass('status'); locals.slideShowBar = $(document.createElement('span')); locals.sliderMouseDown = false; locals.sliderMovePos = null; locals.sliderMovePicIndex = 0; locals.sliderView = (locals.settings.sliderBar == true ? $(document.createElement('div')).addClass('slider_view').css({ 'height': (locals.settings.sliderSize - 6) + 'px', 'top': '3px' }).mouseover(function () { locals.ui_active = true; }).mouseout(function () { locals.ui_active = false; }) : null); if (locals.sliderView != null)
                locals.sliderView.append('<div class="slider_handle"></div>'); function sliderMovingCallback() { preload(true); }
            locals.sliderMovingTimer = null; locals.sliderBar = (locals.settings.sliderBar == true ? $(document.createElement('div')).css('height', locals.settings.sliderSize + 'px').append(locals.sliderView).addClass('slider').mouseover(function () { $(this).addClass('slider_hover'); locals.ui_active = true; }).mouseout(function () { $(this).removeClass('slider_hover'); locals.ui_active = false; }).mousedown(function (e) {
                locals.sliderMouseDown = true; locals.sliderMovePos = e.clientX; locals.sliderMoving = true; var oleft = $(this).offset().left
                locals.sliderMovePicIndex = Math.round((e.clientX - oleft) / locals.sliderPxPerPic); if (locals.sliderMovePicIndex < 0)
                    locals.sliderMovePicIndex = 0; else if (locals.sliderMovePicIndex >= (locals.pics.length - 1))
                    locals.sliderMovePicIndex = locals.pics.length - 1; if (locals.sliderMovePicIndex != locals.picIndex) { locals.picIndex = locals.sliderMovePicIndex; thumbnailTooltipShow(locals.pics[locals.picIndex]); render(); } else { thumbnailTooltipShow(locals.pics[locals.picIndex]); }
                if (locals.sliderMovingTimer != null) { clearInterval(locals.sliderMovingTimer); }
                locals.sliderMovingTimer = setInterval(sliderMovingCallback, 800); function me_mouse_move(e) {
                    if (locals.sliderMouseDown == false)
                        return; if (Math.abs(e.clientX - locals.sliderMovePos) < 2)
                        return; var picOffset = Math.floor((e.pageX - locals.sliderMovePos) / locals.sliderPxPerPic); var newPicIndex = locals.sliderMovePicIndex + picOffset; if (newPicIndex < 0)
                        newPicIndex = 0; else if (newPicIndex >= (locals.pics.length - 1))
                        newPicIndex = locals.pics.length - 1; if (newPicIndex == locals.picIndex)
                        return; if (locals.sliderMovingTimer != null) { clearInterval(locals.sliderMovingTimer); }
                    locals.sliderMovingTimer = setInterval(sliderMovingCallback, 500); locals.picIndex = newPicIndex; thumbnailTooltipShow(locals.pics[locals.picIndex]); render();
                }
                locals.me.mouseup(function () {
                    locals.sliderMouseDown = false; locals.sliderMovePos = null; locals.sliderMoving = false; locals.me.unbind('mouseup').unbind('mousemove', me_mouse_move); if (locals.sliderMovingTimer != null) { clearInterval(locals.sliderMovingTimer); locals.sliderMovingTimer = null; }
                    preload(); thumbnailTooltipHide();
                }).mousemove(me_mouse_move);
            }) : null); locals.loadingPanel = $(document.createElement('div')).addClass('loading').html('Loading...'); if (locals.settings.thumbnails == true) {
                locals.thumbsHeight = (locals.settings.thumbnailsHeight + locals.settings.borderWidth + locals.settings.thumbnailBorder + locals.settings.thumbnailBorder); locals.thumbs = $(document.createElement('div')).addClass('thumbs_container').css({ left: '0px', top: '0px', 'height': locals.thumbsHeight + 'px' }); locals.thumbsTooltipImg = $('<div class="thumbs_tooltip_img" />').css('border-width', locals.settings.thumbnailBorder); if (locals.settings.thumbnailsPosition == 'top')
                    locals.thumbsTooltip = $('<div />').addClass('thumbs_tooltip').hide().append('<div class="thumbs_tooltip_arrow_up" />').append(locals.thumbsTooltipImg); else
                    locals.thumbsTooltip = $('<div />').addClass('thumbs_tooltip').hide().append(locals.thumbsTooltipImg).append('<div class="thumbs_tooltip_arrow_down" />'); locals.thumbsParent = $(document.createElement('div')).addClass('thumbs_container_parent').css({ 'height': locals.thumbsHeight + 'px' }).append(locals.thumbs).mouseover(function () { locals.ui_active = true; }).mouseout(function () { locals.ui_active = false; }); locals.thumbsSection = $('<div />').addClass('thumbs_section').css({ 'height': locals.thumbsHeight + 'px' }).append(locals.thumbsParent).append(locals.thumbsTooltip); if (locals.settings.overlayMode == true)
                    locals.thumbsSection.css('background-color', '#000'); if (locals.settings.thumbnailNav == true) {
                    locals.thumbsNavLeft = $('<div />').addClass('thumbs_nav').css({ 'left': locals.settings.thumbnailSpacing + 'px', 'height': locals.thumbsHeight + 'px' }).append($('<div />').addClass('thumbs_nav_left_btn').css({ 'margin-top': ((locals.thumbsHeight / 2) - 12) + 'px' })).mouseover(function () { locals.ui_active = true; $(this).addClass('thumbs_nav_hover'); }).mouseout(function () { locals.ui_active = false; $(this).removeClass('thumbs_nav_hover'); }).click(function () {
                        stopVideo(locals.pics[locals.picIndex]); if (locals.picIndex == 0)
                            locals.picIndex = locals.pics.length - 1; else {
                            locals.picIndex -= parseInt(Math.floor(locals.thumbsParent.width() / (locals.settings.thumbnailsSize + locals.settings.thumbnailSpacing + locals.settings.thumbnailBorder + locals.settings.thumbnailBorder))); if (locals.picIndex < 0)
                                locals.picIndex = 0;
                        }
                        render();
                    }); locals.thumbsNavRight = $('<div />').addClass('thumbs_nav').css({ 'right': locals.settings.thumbnailSpacing + 'px', 'height': locals.thumbsHeight + 'px' }).append($('<div />').addClass('thumbs_nav_right_btn').css({ 'margin-top': ((locals.thumbsHeight / 2) - 12) + 'px' })).mouseover(function () { locals.ui_active = true; $(this).addClass('thumbs_nav_hover'); }).mouseout(function () { locals.ui_active = false; $(this).removeClass('thumbs_nav_hover'); }).click(function () {
                        stopVideo(locals.pics[locals.picIndex]); if (locals.picIndex >= (locals.pics.length - 1))
                            locals.picIndex = 0; else {
                            locals.picIndex += parseInt(Math.floor(locals.thumbsParent.width() / (locals.settings.thumbnailsSize + locals.settings.thumbnailSpacing + locals.settings.thumbnailBorder + locals.settings.thumbnailBorder))); if (locals.picIndex > (locals.pics.length - 1))
                                locals.picIndex = (locals.pics.length - 1);
                        }
                        render();
                    }); locals.thumbsSection.append(locals.thumbsNavLeft).append(locals.thumbsNavRight);
                } 
            }
            locals.titleBar = (locals.settings.titleShow == true ? $('<div class="title_bar">&nbsp;</div>') : null); if (locals.menu_placeholder != null && locals.settings.menuPosition == 'above')
                locals.main.append(locals.menu_placeholder.css('margin-top', ((locals.main.children().length > 0) ? locals.settings.moduleSpacing : '0') + 'px')); if (locals.sliderBar != null && locals.settings.sliderPosition == 'top')
                locals.main.append(locals.sliderBar.css('margin-top', ((locals.main.children().length > 0) ? locals.settings.moduleSpacing : '0') + 'px')); if (locals.thumbs != null && locals.settings.thumbnailsPosition == 'top')
                locals.main.append(locals.thumbsSection.css('margin-top', ((locals.main.children().length > 0) ? locals.settings.moduleSpacing : '0') + 'px')); if (locals.titleBar != null && locals.settings.titlePosition == 'top')
                locals.main.append(locals.titleBar.css('margin-top', ((locals.main.children().length > 0) ? locals.settings.moduleSpacing : '0') + 'px')); locals.notes = (locals.settings.notesShow == true ? $('<div class="notes">&nbsp;</div>') : null); if (locals.notes != null && locals.settings.notesPosition == 'top')
                locals.main.append(locals.notes.css('margin-top', ((locals.main.children().length > 0) ? locals.settings.moduleSpacing : '0') + 'px')); locals.container_parent.css('margin-top', ((locals.main.children().length > 0) ? locals.settings.moduleSpacing : '0') + 'px'); locals.main.append(locals.loadingPanel).append(locals.menu).append(locals.menu_overlay).append(locals.container_parent); if (locals.titleBar != null && locals.settings.titlePosition != 'top')
                locals.main.append(locals.titleBar.css('margin-top', locals.settings.moduleSpacing + 'px')); if (locals.notes != null && locals.settings.notesPosition != 'top')
                locals.main.append(locals.notes.css('margin-top', locals.settings.moduleSpacing + 'px')); if (locals.thumbs != null && locals.settings.thumbnailsPosition != 'top')
                locals.main.append(locals.thumbsSection.css('margin-top', locals.settings.moduleSpacing + 'px')); if (locals.sliderBar != null && locals.settings.sliderPosition != 'top')
                locals.main.append(locals.sliderBar.css('margin-top', locals.settings.moduleSpacing + 'px')); if (locals.menu_placeholder != null && locals.settings.menuPosition != 'above')
                locals.main.append(locals.menu_placeholder.css('margin-top', locals.settings.moduleSpacing + 'px')); locals.me.empty().show().addClass('wst_album').append(locals.main); function stopVideo(pic) {
                    if (typeof (locals.pics) == 'undefined')
                        return; resetInterval(); if (typeof (pic) == 'undefined')
                    { pic = locals.pics[locals.picIndex]; }
                    if (pic != null) { if (pic.mediaType == 'video' && pic.frameDom != null) { pic.frameDom.empty(); loadPrimaryImage(pic); } } 
                }
            function hideBlockingNodes() {
                try {
                    $('.fullscreen-hide').each(function (index, node) {
                        if ($(node).is("iframe")) {
                            if (node.style) { var visibility = jQuery.css(node, "visibility"); if (visibility !== "hidden" && !jQuery.data(node, "prevvisibility")) { jQuery.data(node, "prevvisibility", visibility); } }
                            $(node).css("visibility", "hidden");
                        }
                        else { $(node).hide(); } 
                    });
                } catch (e) { } 
            }
            function showBlockingNodes() {
                try {
                    $('.fullscreen-hide').each(function (index, node) {
                        if ($(node).is("iframe")) { var visibility = jQuery.data(node, "prevvisibility"); if (visibility) { $(node).css("visibility", visibility); } }
                        else { $(node).show(); } 
                    });
                } catch (e) { } 
            }
            function navPrev(forceWrap, preventWrap) {
                var pic = locals.pics[locals.picIndex]; if (locals.picIndex > 0)
                    locals.picIndex--; else if (preventWrap != true && (locals.settings.wrap == true || forceWrap == true))
                    locals.picIndex = (locals.pics.length - 1); stopVideo(pic); render();
            }
            function navNext(forceWrap, preventWrap) {
                var pic = locals.pics[locals.picIndex]; if (locals.picIndex < (locals.pics.length - 1))
                    locals.picIndex++; else if (preventWrap != true && (locals.settings.wrap == true || forceWrap == true))
                    locals.picIndex = 0; stopVideo(pic); render();
            }
            function navFirst() { var pic = locals.pics[locals.picIndex]; locals.picIndex = 0; stopVideo(pic); render(); }
            function navLast() { var pic = locals.pics[locals.picIndex]; locals.picIndex = locals.pics.length - 1; stopVideo(pic); render(); }
            function closePopup() {
                if ($.isFunction(locals.settings.onClose) == true) {
                    if (locals.settings.onClose(locals.me) == false)
                        return;
                }
                destroy(locals); showBlockingNodes(); $('#wst_album_popup', document).hide(); $('#wst_album_popup_overlay', document).hide(); if ($.isFunction(locals.settings.afterClose) == true)
                    locals.settings.afterClose(locals.me);
            }
            locals.menu.append($(document.createElement('div')).addClass(locals.settings.menuCompact ? 'nav_prev_sm' : 'nav_prev').addClass('nav_opac').hide().mouseover(function () { $(this).removeClass('nav_opac'); }).mouseout(function () { $(this).addClass('nav_opac'); }).click(function () { slideShowStop(); navPrev(); })).append($(document.createElement('div')).addClass(locals.settings.menuCompact ? 'nav_play_sm' : 'nav_play').addClass('nav_opac').hide().mouseover(function () { $(this).removeClass('nav_opac'); }).mouseout(function () { $(this).addClass('nav_opac'); }).click(function () {
                var pic = locals.pics[locals.picIndex]; if (pic != null && pic.mediaType == 'video') {
                    if (locals.slideShowPlaying != true)
                    { $('.nav_play,.nav_play_sm', locals.menu).hide(); $('.nav_pause,.nav_pause_sm', locals.menu).show(); locals.slideShowPlaying = true; navNext(); } 
                }
                else
                { slideShowStart(); } 
            })).append($(document.createElement('div')).addClass(locals.settings.menuCompact ? 'nav_pause_sm' : 'nav_pause').addClass('nav_opac').hide().mouseover(function () { $(this).removeClass('nav_opac'); }).mouseout(function () { $(this).addClass('nav_opac'); }).click(function () { slideShowStop(); })).append($(document.createElement('div')).addClass(locals.settings.menuCompact ? 'nav_next_sm' : 'nav_next').addClass('nav_opac').hide().mouseover(function () { $(this).removeClass('nav_opac'); }).mouseout(function () { $(this).addClass('nav_opac'); }).click(function () { slideShowStop(); navNext(); })); locals.menu.append(locals.statusBar); if (locals.menu_left.children().length == 0) { locals.menu_left.remove(); locals.menu_left = null; locals.menu_right.remove(); locals.menu_right = null; }
            function resGet(heightReq, minIndex) {
                if (minIndex == null)
                    minIndex = 0; var resI; for (resI = minIndex; resI < locals.resources.length; resI++) {
                    var res = locals.resources[resI]; if (res.height == null || res.height >= heightReq) {
                        if (minIndex > 0 && resI == minIndex) {
                            var prevRes = locals.resources[minIndex - 1]; if (prevRes.height != null && prevRes.height >= heightReq)
                                return null;
                        }
                        return res;
                    } 
                }
                return locals.resources[locals.resources.length - 1];
            }
            function resGetPicUrl(pic, heightReq, minIndex) {
                var res = resGet(heightReq, minIndex); if (res == null)
                    return null; if (pic.mediaType == 'video') { if (pic.res.length > 2) { return pic.res[1].url; } }
                if (res.index > (pic.res.length - 1))
                    return pic.res[pic.res.length - 1].url; return pic.res[res.index].url;
            }
            function resPicFindIndex(pic, url) {
                var resI; for (resI = 0; resI < pic.res.length; resI++) {
                    if (pic.res[resI].url == url)
                        return resI;
                } 
            }
            function resUpdateCache(resIndex, heightFetched) {
                var res = locals.resources[resIndex]; if (res == null)
                    return; if (res.height == null || res.height < heightFetched) { res.height = heightFetched; } 
            }
            function slideShowStop(doNotTriggerEvent) {
                if (locals.slideShowPlaying == true && doNotTriggerEvent != true && $.isFunction(locals.settings.onPause) == true) { locals.settings.onPause(locals.me); }
                if (locals.slideShowTimer != null) { clearInterval(locals.slideShowTimer); locals.slideShowTimer = null; }
                locals.fxSpeed = locals.settings.fxTime; locals.slideSpeed = locals.settings.moveTime; var pic = locals.pics[locals.picIndex]; if (pic != null) { $('.nav_pause,.nav_pause_sm', locals.menu).hide(); $('.nav_play,.nav_play_sm', locals.menu).show(); }
                locals.container.stop(true, false); if (locals.thumbs != null)
                    locals.thumbs.stop(true, false); if (locals.sliderView != null)
                    locals.sliderView.stop(true, false); locals.slideShowPlaying = false;
            }
            function resetInterval() { if (locals.slideShowTimer == null && locals.slideShowPlaying == true) { locals.slideSpeed = locals.settings.slideShowDelay; locals.slideShowTimer = setInterval(slideShowCallback, locals.slideSpeed); } }
            function slideShowCallback() {
                try {
                    var nextPic = 0; if (locals.picIndex < (locals.pics.length - 1))
                        nextPic = locals.picIndex + 1; else if (locals.settings.wrap == true)
                        nextPic = 0; var pic = locals.pics[nextPic]; if (pic == null)
                        return; var oldPic = locals.pics[locals.picIndex]; if (oldPic != null) { if (oldPic.mediaType == 'video' && locals.slideShowTimer != null) { clearInterval(locals.slideShowTimer); locals.slideShowTimer = null; return; } }
                    if (pic.imgDomLoad != null) {
                        if (locals.slideShowPlaying == true && locals.slideShowTimer != null) { clearInterval(locals.slideShowTimer); locals.slideShowTimer = null; }
                        locals.loadingPanel.show(); return;
                    }
                    navNext();
                } catch (e) { slideShowStop(); } 
            }
            function embedVideo(pic) {
                var fullScreenState = ($('#wst_album_popup:visible').length != 0); var viewEndCallbackFunction = "function(){}"; if (locals.slideShowPlaying == true) { viewEndCallbackFunction = "function() { $('#" + locals.meId + "').wstAlbum('Next'); }"; }
                var videoClickCallbackFunction = "function() { $('#" + locals.meId + "').wstAlbum('ImageClick', { picIndex: " + pic.index + "}); }"; var videoPauseCallbackFunction = "function(){}"; var videoPlayCallbackFunction = locals.settings.videoPlay
                var videoHeight = locals.settings.popupVideoHeight && fullScreenState ? locals.settings.popupVideoHeight : locals.imageHeight; var videoWidth = locals.settings.popupVideoWidth && fullScreenState ? locals.settings.popupVideoWidth : locals.imageWidth; if (pic.res.length < 3)
                    return; var flashvars = { theVid: pic.res[2].url, doPlay: 1, doLogo: 0, Width: videoWidth - 2, Height: videoHeight - 2, viewEndCallback: viewEndCallbackFunction, videoClickCallback: videoClickCallbackFunction, videoPauseCallback: videoPauseCallbackFunction, videoPlayCallback: videoPlayCallbackFunction }; var params = { quality: "high", allowfullscreen: "true", allowscriptaccess: "samedomain", id: "movie_" + pic.id, wmode: "opaque" }; var attributes = { id: "paplayer_" + pic.id, name: "paplayer_" + pic.id }; var videoContainerID = pic.id + 'containerVideo'; var newVideoDiv = $(document.createElement('div')).attr('id', videoContainerID).addClass('full_img').css({ 'left': '0px', 'width': videoWidth + 'px', 'height': videoHeight + 'px' }); if (pic.frameDom != null) {
                    pic.frameDom.empty(); if (!fullScreenState) { pic.frameDom.css({ left: 0, top: 0 }) }
                    else { var left = Math.floor((locals.imageWidth - (videoWidth + locals.imagePadding)) / 2); var top = Math.floor((locals.imageHeight - (videoHeight + locals.imagePadding)) / 2); pic.frameDom.css({ left: left, top: top }); } 
                }
                newVideoDiv.appendTo(pic.frameDom); var videoElementSupport = false; try
{ var agent = navigator.userAgent.toLowerCase(); videoElementSupport = (agent.indexOf('iphone') != -1 || agent.indexOf('ipad') != -1) }
                catch (e)
{ }
                if (videoElementSupport) {
                    var html5Video = $(document.createElement('video')).attr('controls', 'controls').attr('autoplay', 'true').attr('width', locals.imageWidth).attr('height', locals.imageHeight).attr('id', 'paplayer_' + pic.id)
                    var source = $(document.createElement('source')).attr('src', pic.res[2].url).attr('type', 'video/mp4')
                    source.appendTo(html5Video); html5Video.appendTo($("#" + pic.id).find(".full_img_frame"));
                }
                else
                { swfobject.embedSWF(locals.settings.paplayer_path, videoContainerID, videoWidth - 2, videoHeight - 2, "9.0.115", "expressInstall.swf", flashvars, params, attributes); } 
            }
            function slideShowStart(delayMove, doNotTriggerEvent) {
                if (locals.slideShowPlaying == false && doNotTriggerEvent != true && $.isFunction(locals.settings.onPlay) == true) { locals.settings.onPlay(locals.me); }
                slideShowStop((locals.slideShowPlaying == true)); locals.slideShowPlaying = true; locals.slideSpeed = locals.settings.slideShowDelay; locals.slideShowTimer = setInterval(slideShowCallback, locals.slideSpeed); if (delayMove == true) { render(); }
                else { slideShowCallback(); }
                $('.nav_play,.nav_play_sm', locals.menu).hide(); $('.nav_pause,.nav_pause_sm', locals.menu).show();
            }
            locals.speedController = $(document.createElement('div')).addClass(locals.settings.menuCompact ? 'nav_speed_ctrl_sm' : 'nav_speed_ctrl'); locals.speedControllerParent = $(document.createElement('div')).addClass(locals.settings.menuCompact ? 'nav_speed_ctrl_parent_sm' : 'nav_speed_ctrl_parent').append($(document.createElement('div')).addClass(locals.settings.menuCompact ? 'nav_speed_ctrl_left_sm' : 'nav_speed_ctrl_left')).append(locals.speedController).append($(document.createElement('div')).addClass(locals.settings.menuCompact ? 'nav_speed_ctrl_right_sm' : 'nav_speed_ctrl_right')).hide(); locals.menu.append(locals.speedControllerParent); locals.menu_extension = null; if (locals.settings.menuExtension != null) { locals.menu_extension = $(document.createElement('div')).addClass(locals.settings.menuCompact ? 'nav_extension_sm' : 'nav_extension').append(locals.settings.menuExtension); switch (locals.settings.menuExtensionPosition) { case "topleft": locals.menu_extension.css({ 'position': 'absolute', 'float': 'none', 'left': '0px', 'top': '0px' }); locals.main.append(locals.menu_extension); break; case "topright": locals.menu_extension.css({ 'position': 'absolute', 'float': 'none', 'right': '0px', 'top': '0px' }); locals.main.append(locals.menu_extension); break; case "bottomleft": locals.menu_extension.css({ 'position': 'absolute', 'top': 'auto', 'float': 'none', 'left': '0px', 'bottom': '0px' }); locals.main.append(locals.menu_extension); break; case "bottomright": locals.menu_extension.css({ 'position': 'absolute', 'top': 'auto', 'float': 'none', 'right': '0px', 'bottom': '0px' }); locals.main.append(locals.menu_extension); break; default: locals.menu.append(locals.menu_extension); break; } }
            if (locals.settings.showClose == true) { locals.menu.append($(document.createElement('div')).addClass(locals.settings.menuCompact ? 'nav_close_sm' : 'nav_close').addClass('nav_opac').mouseover(function () { $(this).removeClass('nav_opac'); }).mouseout(function () { $(this).addClass('nav_opac'); }).click(function (evt) { evt.stopPropagation(); closePopup(); return false; })); }
            var first = true; for (i = 0; i < locals.settings.slideShowSpeeds.length; i++) {
                locals.speed = locals.settings.slideShowSpeeds[i]; if (first == true) { first = false; }
                else { locals.speedController.append($(document.createElement('div')).text(' ').addClass(locals.settings.menuCompact ? 'nav_speed_seperator_sm' : 'nav_speed_seperator')); }
                var ss_item = $(document.createElement('span')).data('speed', locals.speed).html(locals.speed.text).click(function () {
                    if (!$(this).hasClass('disabled'))
                    { var new_speed = $(this).data('speed'); locals.settings.slideShowDelay = new_speed.speed; slideShowStart(); $('.nav_speed_active_setting,.nav_speed_active_setting_sm', locals.speedController).removeClass(locals.settings.menuCompact ? 'nav_speed_active_setting_sm' : 'nav_speed_active_setting').addClass(locals.settings.menuCompact ? 'nav_speed_setting_sm' : 'nav_speed_setting'); $(this).addClass(locals.settings.menuCompact ? 'nav_speed_active_setting_sm' : 'nav_speed_active_setting'); }
                    return false;
                }); if (locals.speed.speed == locals.settings.slideShowDelay) { ss_item.addClass(locals.settings.menuCompact ? 'nav_speed_active_setting_sm' : 'nav_speed_active_setting'); }
                else { ss_item.addClass(locals.settings.menuCompact ? 'nav_speed_setting_sm' : 'nav_speed_setting'); }
                locals.speedController.append(ss_item);
            }
            function updatePicImage(data) {
                var pic = data; if (pic.imgDom == null)
                    return; if (pic.origW == null) { pic.origW = pic.imgDom.width(); pic.origH = pic.imgDom.height(); }
                var w = pic.origW; var h = pic.origH; var ar = w / h; var arH = h / w; if (h > (locals.imageHeight - locals.imagePadding)) { h = (locals.imageHeight - locals.imagePadding); w = Math.round(h * ar); }
                if (w > (locals.imageWidth - locals.imagePadding)) { w = (locals.imageWidth - locals.imagePadding); h = Math.round(w * arH); }
                if (locals.settings.zoomToFit == true) {
                    var wDiff = (locals.imageWidth - w); var hDiff = (locals.imageHeight - h); if (wDiff > hDiff) {
                        w = (locals.imageWidth); if (w > pic.origW)
                            w = pic.origW; h = Math.round(w * arH);
                    } else if (hDiff > wDiff) {
                        h = (locals.imageHeight); if (h > pic.origH)
                            h = pic.origH; w = Math.round(h * ar);
                    }
                    if (w > pic.origW) { w = pic.origW; h = Math.round(w * arH); }
                    if (h > pic.origH) { h = pic.origH; w = Math.round(h * ar); } 
                }
                pic.width = w; pic.height = h; pic.left = Math.floor((locals.imageWidth - (pic.width + locals.imagePadding)) / 2); pic.top = Math.floor((locals.imageHeight - (pic.height + locals.imagePadding)) / 2); pic.imgDom.attr({ 'width': pic.width, 'height': pic.height }); pic.frameDom.css({ 'width': (pic.width + 0) + 'px', 'height': (pic.height + 0) + 'px' }); if (pic.mediaType != 'video' || pic.index != locals.picIndex) { pic.frameDom.css({ 'left': pic.left + 'px', 'top': pic.top + 'px' }); }
                else
                { pic.frameDom.css({ 'left': '0', 'top': '0' }); } 
            }
            function updateMenu(force_update) { var newMenuWidth = locals.menu.outerWidth(true); if (force_update == true || (locals.innerWidth > 0 && newMenuWidth > 0 && locals.menu_width != newMenuWidth)) { locals.menu_width = newMenuWidth; locals.menu.css('left', Math.round((locals.innerWidth - locals.menu_width) / 2) + 'px'); locals.menu_overlay.css({ 'left': Math.round((locals.innerWidth - locals.menu_width) / 2) + 'px', 'width': locals.menu_width + 'px' }); if (locals.menu_extension != null && $.browser.msie == true && $.browser.version == 6) { locals.menu_extension.attr('style', locals.menu_extension.attr('style')); } } }
            function isInBackground() { return ($('#wst_album_popup:visible').length != 0) && locals.meId != "wst_album_popup"; }
            locals.lastImageWidth = 0; locals.lastResize = new Date().getTime() - 5000; function resize() {
                var newInnerWidth = locals.me.innerWidth(); if (newInnerWidth <= 0 || locals.pics.length == 0) { return; }
                var lastResize = new Date().getTime(); var lastResizeDiff = lastResize - locals.lastResize; if (lastResizeDiff < 2000 && isInBackground() == true) { resizeAsync(lastResizeDiff + 50); return; }
                locals.lastResize = lastResize; if (locals.resizeAsyncTimer != null) {
                    try { clearTimeout(locals.resizeAsyncTimer); } catch (e) { }
                    locals.resizeAsyncTimer = null;
                }
                var heightChanged = false; if (locals.settings.imageHeight == null) {
                    var newImageHeight = (window.innerHeight != undefined ? window.innerHeight : document.documentElement.clientHeight != undefined ? document.documentElement.clientHeight : document.body.clientHeight) - locals.settings.frameWidth; if (locals.thumbs != null) { newImageHeight -= locals.thumbsSection.outerHeight(true); }
                    if (locals.sliderBar != null) { newImageHeight -= locals.sliderBar.outerHeight(true); }
                    if (locals.titleBar != null) { newImageHeight -= locals.titleBar.outerHeight(true); }
                    if (locals.notes != null) { newImageHeight -= locals.notes.outerHeight(true); }
                    if (locals.menu_placeholder != null) { newImageHeight -= locals.menu_placeholder.outerHeight(true); }
                    if (newImageHeight != locals.imageHeight) {
                        locals.imageHeight = newImageHeight; for (i = 0; i < locals.pics.length; i++) { var pic = locals.pics[i]; pic.dom.css('height', locals.imageHeight + 'px'); }
                        heightChanged = true; reload();
                    } 
                }
                if (heightChanged == false && newInnerWidth == locals.innerWidth && locals.lastImageWidth == locals.imageWidth) { updateMenu(); return; }
                locals.lastImageWidth = locals.imageWidth; locals.innerWidth = newInnerWidth; locals.innerHeight = locals.me.innerHeight(); locals.thumbsWidth = newInnerWidth; updateMenu(true); if (locals.settings.columns != null) { locals.imageWidth = Math.floor(((newInnerWidth - ((locals.settings.columns - 1) * locals.settings.xPadding))) / locals.settings.columns); } else { locals.imageWidth = Math.ceil(locals.imageHeight * locals.settings.aspect.xRatio); }
                for (i = 0; i < locals.pics.length; i++) { var pic = locals.pics[i]; pic.dom.css({ 'left': (i * (locals.imageWidth + locals.settings.xPadding + locals.settings.borderWidth)) + 'px', 'width': locals.imageWidth + 'px' }); updatePicImage(pic); }
                locals.container_parent.css({ 'height': (locals.imageHeight + locals.settings.borderWidth) + 'px' }); locals.maxWidth = (locals.pics.length * (locals.imageWidth + locals.settings.xPadding + locals.settings.borderWidth)); locals.container.css('width', locals.maxWidth + 'px'); if (locals.thumbs != null) {
                    locals.maxThumbWidth = (locals.pics.length * (locals.settings.thumbnailsWidth + locals.settings.thumbnailSpacing + locals.settings.thumbnailBorder + locals.settings.thumbnailBorder)); if (locals.settings.thumbnailNav == true) { if (locals.maxThumbWidth <= locals.thumbsWidth) { locals.thumbsNavLeft.hide(); locals.thumbsNavRight.hide(); } else { locals.thumbsWidth -= ((locals.settings.thumbnailSpacing * 4) + (locals.thumbsNavLeft.width() * 2)); locals.thumbsNavLeft.show(); locals.thumbsNavRight.show(); } }
                    locals.thumbsParent.css('width', locals.thumbsWidth + 'px'); locals.thumbs.css('width', locals.maxThumbWidth + 'px');
                }
                if (locals.sliderBar != null) {
                    locals.sliderWidth = locals.sliderBar.width(); if (locals.thumbs != null && locals.settings.thumbnailNav == true)
                        locals.sliderWidth = locals.thumbsWidth; if (locals.maxWidth > 0)
                        locals.sliderViewWidth = Math.ceil((newInnerWidth / locals.maxWidth) * locals.sliderWidth); else
                        locals.sliderViewWidth = 15; if (locals.sliderViewWidth < 15)
                        locals.sliderViewWidth = 15; locals.sliderBar.css('width', locals.sliderWidth + 'px'); locals.sliderView.css('width', locals.sliderViewWidth + 'px'); if (locals.pics.length > 0) { locals.sliderPxPerPic = locals.sliderWidth / locals.pics.length; }
                    else { locals.sliderPxPerPic = locals.sliderWidth; } 
                }
                if (locals.isReady == false) { locals.isReady = true; locals.loadingPanel.css({ 'margin-left': (Math.round(locals.loadingPanel.outerWidth() / 2) * -1) + 'px', 'margin-top': (Math.round(locals.loadingPanel.outerHeight() / 2) * -1) + 'px' }); }
                render();
            }
            locals.resizeAsyncTimer = null; function resizeAsync(timeout) {
                if (locals.resizeAsyncTimer != null) { clearTimeout(locals.resizeAsyncTimer); }
                locals.resizeAsyncTimer = setTimeout(resize, typeof timeout != 'undefined' ? timeout : 100);
            }
            function updateStatus(explicitStatus) {
                var pic = locals.pics[locals.picIndex]; if (locals.loadCalled == true) {
                    if (locals.pics.length == 0) {
                        if (locals.settings.emptyAlbumHtml)
                            locals.loadingPanel.show().html(locals.settings.emptyAlbumHtml); else
                            locals.me.hide(); return;
                    } 
                }
                if (pic != null && pic.imgDom == null) { locals.loadingPanel.show(); }
                else if (locals.loadCalled == true) { locals.loadingPanel.hide(); }
                if (explicitStatus != null) { locals.statusBar.html(explicitStatus); updateMenu(); return; }
                if (locals.isLoaded == false || locals.pics.length == 0) { updateMenu(); return; }
                if (locals.settings.showStatus == false)
                    return; locals.statusBar.html('Photo ' + (locals.picIndex + 1) + ' of ' + locals.pics.length); updateMenu();
            }
            function preloadCallback(evt) {
                var o = null; if (evt.target == null)
                    o = evt; else
                    o = $(evt.target); idx = o.data('pic'); var pic = locals.pics[idx]; if (pic == null || pic.imgDomLoad == null) { return; }
                locals.picsLoaded++; locals.picsLoading--; if (locals.isLoaded == false && locals.picsLoading == 0) {
                    locals.isLoaded = true; $('.nav_prev,.nav_play,.nav_next,.nav_speed_ctrl_parent,.nav_prev_sm,.nav_play_sm,.nav_next_sm,.nav_speed_ctrl_parent_sm', locals.menu).show(); if (locals.settings.showStatus == false) { locals.statusBar.remove(); }
                    if (locals.settings.slideShowStart == true) { slideShowStart(true); }
                    if ($.isFunction(locals.settings.onLoad) == true) { locals.settings.onLoad(locals.me); }
                    updateMenu(true); showMenu(); resizeAsync();
                }
                pic.imgDom = pic.imgDomLoad; pic.imgDomLoad = null; pic.imgDom.show(); pic.frameDom.show(); updatePicImage(pic); var resI = resPicFindIndex(pic, pic.imgDom.attr('src')); resUpdateCache(resI, pic.origH); var new_url = resGetPicUrl(pic, locals.imageHeight); if (new_url != pic.imgDom.attr('src')) { pic.origW = null; pic.origH = null; loadPrimaryImage(pic); return; }
                updateStatus(); if (locals.picsLoading == 0 && pic.mediaType == 'image') {
                    if (locals.slideShowPlaying == true && locals.slideShowTimer == null) { locals.slideShowTimer = setInterval(slideShowCallback, locals.slideSpeed); navNext(); }
                    if (idx == locals.picIndex) { render(true); }
                    else { preload(); } 
                }
                if (idx == locals.picIndex) { locals.loadingPanel.hide(); } 
            }
            function preloadErrorCallback(evt) {
                var idx = $(this).data('pic'); var pic = locals.pics[idx]; if (pic == null || pic.imgDomLoad == null)
                    return; pic.imgDomLoad = null; locals.picsLoading--; if (locals.picsLoading == 0) { locals.loadingPanel.hide(); } 
            }
            function preloadThumbCallback(evt) {
                var o = null; if (evt.target == null)
                    o = evt; else
                    o = $(evt.target); var pic = locals.pics[o.data('pic')]; if (pic == null || pic.thumbLoaded == true)
                    return; pic.thumbLoaded = true; var w = o.width(); var h = o.height(); var origW = w; var origH = h; pic.origThumbW = origW; pic.origThumbH = origH; var ar = w / h; var arH = h / w; if (h > locals.settings.thumbnailsHeight) { h = locals.settings.thumbnailsHeight; w = Math.round(h * ar); }
                if (w > locals.settings.thumbnailsWidth) { w = locals.settings.thumbnailsWidth; h = Math.round(w * arH); }
                if (locals.settings.zoomToFitThumbs == true) {
                    var wDiff = (locals.settings.thumbnailsWidth - w); var hDiff = (locals.settings.thumbnailsHeight - h); if (wDiff > hDiff) {
                        w = (locals.settings.thumbnailsWidth); if (w > origW)
                            w = origW; h = Math.round(w * arH);
                    } else if (hDiff > wDiff) {
                        h = (locals.settings.thumbnailsHeight); if (h > origH)
                            h = origH; w = Math.round(h * ar);
                    }
                    if (w > origW) { w = origW; h = Math.round(w * arH); }
                    if (h > origH) { h = origH; w = Math.round(h * ar); } 
                }
                var l = Math.floor((locals.settings.thumbnailsWidth - w) / 2); var t = Math.floor((locals.settings.thumbnailsHeight - h) / 2); o.css({ 'left': l + 'px', 'top': t + 'px' }).attr({ 'width': w, 'height': h, 'alt': '' }).show();
            }
            function reload() {
                for (i = 0; i < locals.pics.length; i++) {
                    var pic = locals.pics[i]; if (pic.thumbImgDom != null) { pic.thumbImgDom.attr('src', ''); pic.thumbImgDom.remove(); pic.thumbImgDom = null; }
                    if (pic.imgDomLoad != null) { pic.imgDomLoad.remove(); pic.imgDomLoad.attr('src', ''); pic.imgDomLoad = null; locals.picsLoading--; }
                    if (pic.imgDom != null) { pic.imgDom.remove(); pic.imgDom.attr('src', ''); pic.imgDom = null; }
                    if (pic.frameDom != null) { pic.frameDom.remove(); pic.frameDom = null; } 
                }
                render();
            }
            function loadPrimaryImage(pic) {
                var resUrl = resGetPicUrl(pic, locals.imageHeight); if (resUrl == null)
                    return; if (pic.imgDomLoad != null) { pic.imgDomLoad.remove(); pic.imgDomLoad.attr('src', ''); pic.imgDomLoad = null; locals.picsLoading--; }
                if (pic.imgDom != null) { pic.imgDom.remove(); pic.imgDom.attr('src', ''); pic.imgDom = null; }
                if (pic.frameDom != null) { pic.frameDom.remove(); pic.frameDom = null; }
                if (pic.mediaType != 'video' || pic.index != locals.picIndex) { locals.picsLoading++; pic.imgDomLoad = $(document.createElement('img')).data('pic', pic.index).load(preloadCallback).error(preloadErrorCallback).hide(); }
                pic.frameDom = $(document.createElement('div')).addClass('full_img_frame').css({ 'padding': locals.settings.imagePadding + 'px', 'width': locals.imageWidth + 'px', 'height': locals.imageHeight + 'px' }); if (pic.mediaType != 'video' || pic.index != locals.picIndex) { pic.frameDom.hide().append(pic.imgDomLoad); }
                else { pic.imgDom = pic.frameDom; }
                pic.dom.empty().append(pic.frameDom); if (pic.mediaType != 'video' || pic.index != locals.picIndex) { pic.imgDomLoad.attr('src', resUrl); if (pic.imgDomLoad == null); else if (pic.imgDomLoad[0].complete) { preloadCallback(pic.imgDomLoad); } } 
            }
            function preload(forceLoad) {
                var playClassSuffix = { '50': 'small', '65': 'med', '75': 'med', '100': 'large' }; if (locals.isReady == false)
                    return; if (locals.settings.columns != null) { locals.imagesInView = locals.settings.columns; }
                else { locals.imagesInView = Math.ceil(locals.innerWidth / locals.imageWidth); }
                locals.thumbsInView = Math.ceil(locals.thumbsWidth / locals.settings.thumbnailsWidth); if (locals.pics.length == 0)
                    return; locals.loadIndex++; locals.preloads = locals.imagesInView + locals.settings.preload; if (locals.sliderMoving == false || forceLoad == true) {
                    var pic = locals.pics[locals.picIndex]; if (pic != null) {
                        pic.loadIndex = locals.loadIndex; if (pic.imgDom == null && pic.imgDomLoad == null) { loadPrimaryImage(pic); return; }
                        else if (pic.imgDomLoad != null)
                            return;
                    } 
                }
                if (locals.thumbs != null) {
                    locals.preloads = locals.thumbsInView + locals.settings.preload; for (i = (locals.preloads * -1); i < locals.preloads; i++) {
                        idx = (locals.picIndex + i); if (idx < 0)
                            idx += locals.pics.length; idx %= locals.pics.length; var pic = locals.pics[idx]; if (pic == null)
                            continue; pic.loadThumbIndex = locals.loadIndex; if (pic.thumbImgDom != null)
                            continue; pic.thumbLoaded = false; pic.thumbImgDom = $(document.createElement('img')).data('pic', pic.index).hide().load(preloadThumbCallback); pic.thumbDom.append(pic.thumbImgDom); pic.thumbImgDom.attr({ 'alt': 'Loading', 'src': pic.res[locals.settings.thumbnailIndex < pic.res.length ? locals.settings.thumbnailIndex : (pic.res.length - 1)].url }); if (pic.mediaType == "video") { var playImg = $(document.createElement("span")); playImg.addClass('play_img_' + playClassSuffix[locals.settings.thumbnailsHeight]); pic.thumbDom.append(playImg); }
                        if (pic.thumbLoaded == false && pic.thumbImgDom[0].complete) { preloadThumbCallback(pic.thumbImgDom); } 
                    } 
                }
                if (locals.sliderMoving == false || forceLoad == true) {
                    for (i = 1; i < locals.preloads; i++) {
                        idx = (locals.picIndex + i); if (idx < 0)
                            idx += locals.pics.length; idx %= locals.pics.length; var pic = locals.pics[idx]; if (pic == null)
                            continue; pic.loadIndex = locals.loadIndex; if (pic.imgDom == null && pic.imgDomLoad == null) { loadPrimaryImage(pic); return; }
                        else if (pic.imgDomLoad != null)
                            return; idx = (locals.picIndex + (i * -1)); if (idx < 0)
                            idx += locals.pics.length; idx %= locals.pics.length; pic = locals.pics[idx]; if (pic == null)
                            continue; pic.loadIndex = locals.loadIndex; if (pic.imgDom == null && pic.imgDomLoad == null) { loadPrimaryImage(pic); return; }
                        else if (pic.imgDomLoad != null)
                            return;
                    } 
                }
                for (i = 0; i < locals.pics.length; i++) {
                    var pic = locals.pics[i]; if (pic.thumbImgDom != null && pic.loadThumbIndex != locals.loadIndex) { pic.thumbLoaded = false; pic.thumbImgDom.remove(); pic.thumbImgDom.attr('src', ''); pic.thumbImgDom = null; }
                    if (pic.loadIndex == locals.loadIndex)
                        continue; if (pic.imgDomLoad != null) { pic.imgDomLoad.remove(); pic.imgDomLoad.attr('src', ''); pic.imgDomLoad = null; locals.picsLoading--; }
                    if (pic.imgDom != null) { pic.imgDom.remove(); pic.imgDom.attr('src', ''); pic.imgDom = null; }
                    if (pic.frameDom != null) { pic.frameDom.remove(); pic.frameDom = null; } 
                } 
            }
            function render(forceLoad) {
                if (locals.isReady == false)
                    return; preload(forceLoad); if (locals.picsLoaded == 0)
                    return; var pic = locals.pics[locals.picIndex]; if (pic == null)
                    return; updateStatus(); if (locals.animation != null)
                    locals.animation.stop(true, true); var ui_fx = $('.ui-effects-wrapper', pic.dom); if (ui_fx.length > 0) { var children = ui_fx.children(); children.remove(); pic.frameDom.append(children); ui_fx.remove(); }
                var lastPicIndex = -1; if (locals.lastPic != null) {
                    lastPicIndex = locals.lastPic.index; if (locals.lastPic.index != pic.index) {
                        locals.lastPic.dom.removeClass('full_selected'); if (locals.lastPic.thumbDom != null)
                            locals.lastPic.thumbDom.removeClass('thumb_selected');
                    } 
                }
                locals.lastPic = pic; pic.dom.addClass('full_selected'); if (locals.lastPic.thumbDom != null)
                    locals.lastPic.thumbDom.addClass('thumb_selected'); var new_left = ((locals.imageWidth + locals.settings.xPadding + locals.settings.borderWidth) * locals.picIndex * -1) + Math.round(locals.innerWidth / 2) - Math.round(locals.imageWidth / 2); if (locals.settings.columns != null && (locals.settings.columns % 2) == 0) { new_left -= Math.round(locals.imageWidth / 2); }
                if (new_left > 0)
                    new_left = 0; else if (new_left < ((locals.maxWidth - locals.innerWidth) * -1))
                    new_left = ((locals.maxWidth - locals.innerWidth) * -1); easeType = 'swing'; var do_not_slide = (lastPicIndex == locals.picIndex) || (lastPicIndex == (locals.pics.length - 1) && pic.index == 0) || (lastPicIndex == 0 && pic.index == (locals.pics.length - 1)); if (locals.thumbs != null) {
                    var oldLeft = 0; if (typeof locals.thumbLeft != 'undefined')
                        oldLeft = locals.thumbLeft; locals.thumbLeft = ((locals.settings.thumbnailsWidth + locals.settings.xPadding + locals.settings.borderWidth) * locals.picIndex * -1) + Math.round(locals.thumbsWidth / 2) - Math.round(locals.settings.thumbnailsWidth / 2); if (locals.maxThumbWidth <= locals.thumbsWidth)
                        locals.thumbLeft = Math.round(locals.thumbsWidth / 2) - Math.round(locals.maxThumbWidth / 2); else if (locals.thumbLeft > 0)
                        locals.thumbLeft = 0; else if (locals.thumbLeft < ((locals.maxThumbWidth - locals.thumbsWidth) * -1))
                        locals.thumbLeft = ((locals.maxThumbWidth - locals.thumbsWidth) * -1); if (do_not_slide == false && ((locals.slideShowTimer == null && locals.settings.moveFx == 'slide') || (locals.slideShowTimer != null && locals.settings.slideShowContinuous == true))) { locals.thumbs.stop(true, false).animate({ 'left': locals.thumbLeft + 'px' }, locals.slideSpeed, easeType); if (locals.settings.thumbnailTooltip == true && locals.thumbsTooltip.is(':visible') == true) { var tipleft = (locals.thumbsTooltip.position().left + (locals.thumbLeft - oldLeft)); locals.thumbsTooltip.stop(true, true).animate({ 'left': tipleft + 'px' }, locals.slideSpeed, easeType); } }
                    else { locals.thumbs.stop(true, false).css('left', locals.thumbLeft + 'px'); if (locals.settings.thumbnailTooltip == true && locals.thumbsTooltip.is(':visible') == true) { var tipleft = (locals.thumbsTooltip.position().left + (locals.thumbLeft - oldLeft)); locals.thumbsTooltip.stop(true, false).css({ 'left': tipleft + 'px' }); } } 
                }
                locals.sliderPos = Math.round((locals.sliderWidth / locals.maxWidth) * Math.abs(new_left)); if (do_not_slide == false && ((locals.slideShowPlaying == false && locals.settings.moveFx == 'slide') || (locals.slideShowTimer != null && locals.settings.slideShowContinuous == true))) { locals.container.stop(true, false).animate({ 'left': new_left + 'px' }, locals.slideSpeed, easeType); if (locals.sliderBar != null) { locals.sliderView.stop(true, false).animate({ 'left': locals.sliderPos + 'px' }, locals.slideSpeed, easeType); } }
                else { locals.container.stop(true, false).css('left', new_left + 'px'); if (locals.sliderBar != null) { locals.sliderView.stop(true, false).css('left', locals.sliderPos + 'px'); } }
                if (pic.mediaType == 'video') { embedVideo(pic); }
                if (lastPicIndex == locals.picIndex)
                    return; if ($.isFunction(locals.settings.onChange) == true) { locals.settings.onChange(pic, locals.me); }
                if (locals.titleBar != null) { locals.titleBar.html(pic.title).attr('title', pic.title); }
                if (locals.notes != null) { locals.notes.html(pic.notes).attr('title', pic.notes); }
                var fx = 'slide'; if (locals.settings.fxShuffle == true) { i = Math.floor(Math.random() * locals.fxList.length); fx = locals.fxList[i]; }
                else { locals.fxIndex = (locals.fxIndex + 1) % locals.fxList.length; fx = locals.fxList[locals.fxIndex]; }
                fx = fx.replace(' ', ''); if (fx != 'slide' && fx.length > 0) {
                    if (pic.mediaType != 'video' && pic.width != null && pic.frameDom != null && pic.imgDom != null) {
                        pic.frameDom.removeAttr('style').css({ 'background-color': 'transparent', 'padding': locals.settings.imagePadding + 'px', 'left': pic.left + 'px', 'top': pic.top + 'px', 'width': pic.width + 'px', 'height': pic.height + 'px' }); if (pic.imgDom.parent().attr('class') != 'full_img_frame') { pic.imgDom.remove(); pic.frameDom.append(pic.imgDom); }
                        locals.animation = pic.imgDom; var fxOption = fxOptions[fx]; pic.imgDom.show(fx, fxOption, locals.fxSpeed, function () {
                            if (locals.destroyed == true)
                                return; if (pic != null && pic.width != null && pic.frameDom != null) {
                                var ui_fx = $('.ui-effects-wrapper', pic.dom); if (ui_fx.length > 0) { var children = ui_fx.children(); children.remove(); pic.frameDom.append(children); ui_fx.remove(); }
                                pic.imgDom.removeAttr('style'); pic.frameDom.removeAttr('style').css({ 'padding': locals.settings.imagePadding + 'px', 'left': pic.left + 'px', 'top': pic.top + 'px', 'width': pic.width + 'px', 'height': pic.height + 'px' }); if (pic.imgDom.parent().attr('class') != 'full_img_frame') { pic.imgDom.remove(); pic.frameDom.append(pic.imgDom); } 
                            } 
                        });
                    } 
                }
                switch (pic.mediaType)
                { case "video": me.find(".nav_speed_setting, .nav_speed_setting_sm, .nav_speed_active_setting, .nav_speed_active_setting_sm").addClass('disabled'); break; default: me.find(".nav_speed_setting, .nav_speed_setting_sm, .nav_speed_active_setting, .nav_speed_active_setting_sm").removeClass('disabled'); break; } 
            }
            function imageClick(pic, e) {
                stopVideo(); if ($.isFunction(locals.settings.onClick) == true) { if (locals.settings.onClick(pic, locals.me) == false) { if (e) e.stopPropagation(); return false; } }
                switch (locals.settings.imageClickBehavior) { case 'fancybox': break; case 'popup': var originalAlbumId = '#' + locals.meId; if (e) e.stopPropagation(); var popupSettings = $.extend(true, {}, locals.settings, { autoShow: true, frameWidth: 0, imageClickBehavior: 'next', preload: 1, picIndexToSelect: pic.index, originalAlbumId: originalAlbumId, afterClose: function () { render(); } }); popupSettings.picsToLoad = locals.pics; locals.me.wstAlbumPopup(locals.uri, popupSettings); hideBlockingNodes(); return false; case 'goto': locals.picIndex = pic.index; render(); break; case 'next': navNext(); break; case 'hide': if (e) e.stopPropagation(); closePopup(); return false; }
                return true;
            }
            function thumbnailTooltipShow(pic) {
                if (locals.settings.thumbnails == false || locals.settings.thumbnailTooltip == false || typeof pic.origThumbW == 'undefined')
                    return; var w = pic.origThumbW; var h = pic.origThumbH; var ar = w / h; var arH = h / w; if (w > 160) { w = 160; h = Math.round(w * arH); }
                if (h > 120) { h = 120; w = Math.round(h * ar); }
                var pl = (locals.settings.thumbnailNav == true && locals.thumbsNavLeft.is(':visible') == true) ? ((locals.settings.thumbnailSpacing * 2) + 20) : 0; var l = pl + pic.thumbDom.position().left + locals.thumbs.position().left + locals.settings.thumbnailSpacing + Math.round((locals.settings.thumbnailsSize / 2) - (w / 2)) - locals.settings.thumbnailSpacing; if (l < 0)
                    l = 0; if (l > (locals.innerWidth - w))
                    l = (locals.innerWidth - w); var t = 0 - h - locals.settings.thumbnailSpacing - locals.settings.thumbnailSpacing - 7; if (locals.settings.thumbnailsPosition == 'top')
                    t = locals.thumbsHeight; var img = $('<img border="0" />').attr('src', pic.thumbDom.children('img').attr('src')).css({ 'width': w + 'px', 'height': h + 'px' }); locals.thumbsTooltipImg.empty().append(img); locals.thumbsTooltip.stop(true, false).css({ 'left': l + 'px', 'top': t + 'px' }).show(); if ($.browser.msie && $.browser.version <= 7)
                    locals.thumbsTooltip.css('width', (w + locals.settings.thumbnailSpacing + 1) + 'px');
            }
            function thumbnailTooltipHide() {
                if (locals.settings.thumbnails == false || locals.settings.thumbnailTooltip == false)
                    return; locals.thumbsTooltip.hide();
            }
            locals.loadPicsTmp = null; function loadPicsAsync(tmpPics) { locals.loadPicsTmp = tmpPics; setTimeout(function () { loadPics(tmpPics); }, 100); }
            function loadPics(tmpPics) {
                locals.loadCalled = true; if (locals.settings.shuffle == true) {
                    while (locals.pics.length < tmpPics.length) {
                        var pic = null; while (pic == null) { i = Math.floor(Math.random() * tmpPics.length); pic = tmpPics[i]; }
                        locals.pics.push(pic); tmpPics[i] = null;
                    } 
                }
                else { locals.pics = tmpPics; }
                var loc = window.location.href.toLowerCase(); var isSecure = (loc.indexOf('https') == 0); if (locals.pics.length > 0) {
                    pic = locals.pics[0]; for (i = 0; i < pic.res.length; i++) {
                        var res = { index: locals.resources.length, height: null }; if (settings.resources != null && settings.resources.length > locals.resources.length)
                            res.height = settings.resources[locals.resources.length].height; locals.resources.push(res);
                    } 
                }
                for (i = 0; i < locals.pics.length; i++) {
                    pic = locals.pics[i]; pic.index = i * 1; pic.id = locals.meId + '_' + i; if (isSecure == true) { for (r = 0; r < pic.res.length; r++) { pic.res[r].url = pic.res[r].url.replace('http:', 'https:'); } }
                    pic.dom = $(document.createElement('div')).attr('id', pic.id).addClass('full_img').css({ 'left': (i * (locals.imageWidth + locals.settings.xPadding + locals.settings.borderWidth)) + 'px', 'width': locals.imageWidth + 'px', 'height': locals.imageHeight + 'px' }); pic.dom.data('pic', pic.index); locals.container.append(pic.dom); if (locals.thumbs != null) { pic.thumbDom = $(document.createElement('div')).data('pic', pic.index).attr('id', pic.id + 'thumb').addClass('thumb_img').css({ 'border-width': locals.settings.thumbnailBorder + 'px', 'left': (i * (locals.settings.thumbnailsWidth + locals.settings.thumbnailBorder + locals.settings.thumbnailBorder + locals.settings.thumbnailSpacing)) + 'px', 'width': locals.settings.thumbnailsWidth + 'px', 'height': locals.settings.thumbnailsHeight + 'px' }); locals.thumbs.append(pic.thumbDom); } 
                }
                $('#' + locals.meId + ' .full_img_frame img').live('click.' + locals.meId, function (evt) {
                    if (evt.button != 0 || evt.ctrlKey || evt.shiftKey || evt.altKey)
                        return true; var pic_idx = $(this).closest('.full_img').data('pic'); var pic = locals.pics[pic_idx]; return imageClick(pic, evt);
                }).live('mouseover.' + locals.meId, function () {
                    var pic = locals.pics[$(this).closest('.full_img').data('pic')]; if (pic == null || pic.dom == null)
                        return; if (locals.settings.columns != 1) { pic.dom.addClass('full_active'); }
                    if (pic.thumbDom != null) { pic.thumbDom.addClass('thumb_active'); } 
                }).live('mouseout.' + locals.meId, function () {
                    var pic = locals.pics[$(this).closest('.full_img').data('pic')]; if (pic == null || pic.dom == null)
                        return; pic.dom.removeClass('full_active'); if (pic.thumbDom != null) { pic.thumbDom.removeClass('thumb_active'); } 
                }); $('#' + locals.meId + ' .thumb_img').live('click.' + locals.meId, function (evt) {
                    if (evt.button != 0 || evt.ctrlKey || evt.shiftKey || evt.altKey)
                        return true; slideShowStop(); var pic = locals.pics[$(this).data('pic')]; if (pic == null || pic.dom == null)
                        return; var oldPic = locals.pics[locals.picIndex]; locals.picIndex = pic.index; stopVideo(oldPic); slideShowStop(); render();
                }).live('mouseover.' + locals.meId, function () {
                    var pic = locals.pics[$(this).data('pic')]; if (pic == null || pic.dom == null)
                        return; if (locals.settings.columns != 1) { pic.dom.addClass('full_active'); }
                    if (pic.thumbDom != null) { pic.thumbDom.addClass('thumb_active'); thumbnailTooltipShow(pic); } 
                }).live('mouseout.' + locals.meId, function () {
                    var pic = locals.pics[$(this).data('pic')]; if (pic == null || pic.dom == null)
                        return; pic.dom.removeClass('full_active'); if (pic.thumbDom != null) { pic.thumbDom.removeClass('thumb_active'); thumbnailTooltipHide(); } 
                }); if (locals.settings != null) {
                    if (locals.settings.disableRightClick == true)
                    { $('#' + locals.meId + ' .thumb_img, #' + locals.meId + ' .full_img_frame').live("contextmenu." + locals.meId, function (e) { return false; }); } 
                }
                if (locals.settings.bindKeys == true) {
                    $(document).bind('keydown.' + locals.meId, function (e) {
                        switch (e.keyCode) {
                            case 27: if (settings.showClose == true) { closePopup(); return false; }
                                break; case 32: e.stopPropagation(); imageClick(locals.pics[locals.picIndex]); return false; case 37: navPrev(); break; case 39: navNext(); break;
                        }
                        return true;
                    });
                }
                locals.picIndex = locals.settings.picIndexToSelect; if (locals.picIndex < 0)
                    locals.picIndex = 0; else if (locals.picIndex >= (locals.pics.length - 1))
                    locals.picIndex = locals.pics.length - 1; updateStatus(); resize();
            }
            if (locals.settings.picsToLoad != null) {
                var tmpPics = []; for (i = 0; i < locals.settings.picsToLoad.length; i++) {
                    var pic = locals.settings.picsToLoad[i]; var newPic = { res: pic.res, title: pic.title, notes: pic.notes, width: null, origW: null, imgDom: null, mediaType: pic.mediaType }; if (pic.res.length > 0)
                        tmpPics.push(newPic);
                }
                loadPicsAsync(tmpPics);
            }
            else if (settings.dataType == 'json') {
                $.ajax({ type: 'GET', url: uri, cache: false, success: function (data, dataStatus) {
                    var json; if (typeof data == 'string') { json = eval('(' + data + ')'); } else { json = data; }
                    var tmpPics = []; for (i = 0; i < json.media.length; i++) {
                        var tmp = json.media[i]; var pic = { res: [], title: (tmp.title != null ? tmp.title : ''), notes: (tmp.notes != null ? tmp.notes : ''), width: null, origW: null, imgDom: null, mediaType: (tmp.mediaType != null ? tmp.mediaType : 'image') }; var prev_url = ''; if (tmp.res != null && tmp.res.length > 0) { for (i2 = 0; i2 < tmp.res.length; i2++) { var tmp2 = tmp.res[i2]; prev_url = tmp2.url; var res = { url: tmp2.url }; pic.res.push(res); } }
                        if (pic.res.length == 0) {
                            if (tmp.smallUrl != null) { prev_url = tmp.smallUrl; pic.res.push({ url: tmp.smallUrl }); }
                            if (tmp.largeUrl != null) { prev_url = tmp.largeUrl; pic.res.push({ url: tmp.largeUrl }); }
                            if (tmp.url != null) { prev_url = tmp.url; pic.res.push({ url: tmp.url }); } 
                        }
                        if (pic.res.length > 0)
                            tmpPics.push(pic);
                    }
                    loadPics(tmpPics);
                }, error: function (req, textStatus, err) { updateStatus('Failed to retrieve photo feed, please try again in a few moments.'); } 
                });
            }
            else {
                $.ajax({ type: 'GET', url: uri, dataType: ($.browser.msie) ? 'text' : 'xml', cache: false, success: function (data, dataStatus) {
                    var xml; if (typeof data == 'string') { xml = new ActiveXObject('Microsoft.XMLDOM'); xml.async = false; xml.loadXML(data); } else { xml = data; }
                    var tmpPics = []; var picsRoot = $('pics', xml); if (picsRoot.attr('allowDownload') == 'false')
                        locals.settings.disableRightClick = true; var picsXml = $('pic', xml); picsXml.each(function () {
                            var picElement = $(this); var pic = { res: [], title: picElement.children('title').text(), notes: picElement.children('notes').text(), width: null, origW: null, imgDom: null, mediaType: picElement.children('mediaType').text() }; if (pic.title == null)
                                pic.title = ''; if (pic.notes == null)
                                pic.notes = ''; if (!pic.mediaType)
                                pic.mediaType = 'image'; var prev_url = ''; picElement.children('res').each(function () {
                                    var res = { url: $(this).children('url').text() }; prev_url = res.url; if (res.url != null)
                                        pic.res.push(res);
                                }); if (pic.res.length == 0) {
                                var tmp = { url: picElement.children('url').text(), smallUrl: picElement.children('smallUrl').text(), largeUrl: picElement.children('largeUrl').text() }; if (tmp.smallUrl != null) { prev_url = tmp.smallUrl; pic.res.push({ url: tmp.smallUrl }); }
                                if (tmp.largeUrl != null) { prev_url = tmp.largeUrl; pic.res.push({ url: tmp.largeUrl }); }
                                if (tmp.url != null) { prev_url = tmp.url; pic.res.push({ url: tmp.url }); } 
                            }
                            if (pic.res.length > 0)
                                tmpPics.push(pic);
                        }); loadPics(tmpPics);
                }, error: function (req, textStatus, err) { updateStatus('Failed to retrieve photo feed, please try again in a few moments.'); } 
                });
            }
            function attachWindowResize() { $(window).unbind('resize.' + locals.meId).bind('resize.' + locals.meId, resize); }
            function destroy(locals) {
                if (locals.destroyed == true)
                    return; locals.destroyed = true; stopVideo(); if (locals.slideShowTimer != null) { clearInterval(locals.slideShowTimer); locals.slideShowTimer = null; }
                if (locals.resizeCheckTimer != null) { clearInterval(locals.resizeCheckTimer); locals.resizeCheckTimer = null; }
                if (locals.isReadyTimer != null) { clearInterval(locals.isReadyTimer); locals.isReadyTimer = null; }
                if (locals.hideMenusTimer != null) { clearInterval(locals.hideMenusTimer); locals.hideMenusTimer = null; }
                if (locals.sliderMovingTimer != null) { clearInterval(locals.sliderMovingTimer); locals.sliderMovingTimer = null; }
                if (locals.animation != null)
                    locals.animation.stop(true, true); if (locals.thumbs != null)
                    locals.thumbs.stop(true, false); if (locals.container != null)
                    locals.container.stop(true, false); if (locals.sliderBar != null)
                    locals.sliderView.stop(true, false); $('object', locals.me).hide().remove(); $(document).unbind('.' + locals.meId); $(window).unbind('.' + locals.meId); $('*', locals.me).unbind(); locals.me.die('.' + locals.meId); $('.full_img_frame img').die('click.' + locals.meId).die('mouseover.' + locals.meId).die('mouseout.' + locals.meId).die("contextmenu." + locals.meId); $('.thumb_img').die('click.' + locals.meId).die('mouseover.' + locals.meId).die('mouseout.' + locals.meId).die("contextmenu." + locals.meId); if (locals.settings && locals.settings.overlayMode == true) {
                    locals.meBody.parent('html').css({ 'height': '' }); if (locals.originalOverflow != null && locals.originalOverflow != undefined)
                        locals.meBody.css('overflow', locals.originalOverflow); else
                        locals.meBody.css('overflow', 'visible'); if (locals.originalOverflowX != null && locals.originalOverflowX != undefined)
                        locals.meBody.css('overflow-x', locals.originalOverflowX); else
                        locals.meBody.css('overflow-x', 'visible'); if (locals.originalOverflowY != null && locals.originalOverflowY != undefined)
                        locals.meBody.css('overflow-y', locals.originalOverflowY); else
                        locals.meBody.css('overflow-y', 'visible');
                }
                locals.me.empty().hide();
            }
            updateStatus(); attachWindowResize(); locals.resizeCheckTimer; locals.isReadyTimer = null; function isReadyCheck() {
                if (locals.isReady == true && locals.picsLoaded > 0) { clearInterval(locals.isReadyTimer); locals.isReadyTimer = null; locals.resizeCheckTimer = setInterval(resize, 1000); lastImageWidth = 0; }
                resize();
            }
            if (locals.isReady == false) { locals.isReadyTimer = setInterval(isReadyCheck, 500); }
            function hideMenusCallback() {
                if (locals.ui_active == true || locals.picsLoaded == 0)
                    return; if (locals.hideMenusTimer != null) { clearInterval(locals.hideMenusTimer); locals.hideMenusTimer = null; }
                if (locals.menusVisible == true) {
                    locals.menusVisible = false; if (locals.thumbs != null)
                        locals.thumbsSection.css('visibility', 'hidden'); if (locals.sliderBar != null)
                        locals.sliderBar.css('visibility', 'hidden'); locals.menu.css('visibility', 'hidden'); ; locals.menu_overlay.css('visibility', 'hidden'); ;
                } 
            }
            function showMenu() {
                if (locals.hideMenusTimer != null) { clearInterval(locals.hideMenusTimer); }
                if (locals.loadCalled == true && locals.pics.length == 0) {
                    locals.menu.css('visibility', 'hidden'); if (locals.sliderBar != null)
                        locals.sliderBar.css('visibility', 'hidden'); return;
                }
                if (locals.settings.uiFadeDelay != null) { locals.hideMenusTimer = setInterval(hideMenusCallback, locals.settings.uiFadeDelay); }
                if (locals.menusVisible == true) { return; }
                locals.menusVisible = true; if (locals.thumbs != null)
                    locals.thumbsSection.css('visibility', 'visible'); if (locals.sliderBar != null)
                    locals.sliderBar.css('visibility', 'visible'); locals.menu.css('visibility', 'visible'); locals.menu_overlay.css('visibility', 'visible');
            }
            if (locals.settings.uiFadeDelay != null) {
                var lastMouseMove = null; locals.hideMenusTimer = setInterval(hideMenusCallback, locals.settings.uiFadeDelay); var activator_context = locals.settings.menuActivateFromAnywhere ? $(document) : locals.me; activator_context.bind('mousemove.' + locals.meId, function (e) {
                    if (lastMouseMove != null) {
                        if (Math.abs(e.clientX - lastMouseMove.clientX) <= 3 && Math.abs(e.clientY - lastMouseMove.clientY) <= 3)
                            return;
                    }
                    lastMouseMove = e; if (locals.settings.menuVisible || locals.settings.thumbnails)
                    { showMenu(); } 
                });
            }
            updateMenu(true); if (!(locals.settings.menuVisible))
            { locals.menu.empty(); locals.menu.removeClass(); locals.menu_overlay.empty(); locals.menu_overlay.removeClass(); }
            var myEl = $(locals.me_this).get(0); if (typeof myEl.onselectstart != "undefined")
                myEl.onselectstart = function () { return false; }; else if (typeof myEl.style.MozUserSelect != "undefined")
                myEl.style.MozUserSelect = "none"; else
                myEl.onmousedown = function () { return false; }; myEl.style.cursor = "default"; return locals.me;
        } 
        }; return locals.fn(locals, uri, settings);
    };
})(jQuery); (function ($) {
    jQuery.fn.pngFix = function (settings) {
        settings = jQuery.extend({ blankgif: 'blank.gif' }, settings); var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1); var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1); if (jQuery.browser.msie && (ie55 || ie6)) {
            jQuery(this).find("img[src$=.png]").each(function () {
                jQuery(this).attr('width', jQuery(this).width()); jQuery(this).attr('height', jQuery(this).height()); var prevStyle = ''; var strNewHTML = ''; var imgId = (jQuery(this).attr('id')) ? 'id="' + jQuery(this).attr('id') + '" ' : ''; var imgClass = (jQuery(this).attr('class')) ? 'class="' + jQuery(this).attr('class') + '" ' : ''; var imgTitle = (jQuery(this).attr('title')) ? 'title="' + jQuery(this).attr('title') + '" ' : ''; var imgAlt = (jQuery(this).attr('alt')) ? 'alt="' + jQuery(this).attr('alt') + '" ' : ''; var imgAlign = (jQuery(this).attr('align')) ? 'float:' + jQuery(this).attr('align') + ';' : ''; var imgHand = (jQuery(this).parent().attr('href')) ? 'cursor:hand;' : ''; if (this.style.border) { prevStyle += 'border:' + this.style.border + ';'; this.style.border = ''; }
                if (this.style.padding) { prevStyle += 'padding:' + this.style.padding + ';'; this.style.padding = ''; }
                if (this.style.margin) { prevStyle += 'margin:' + this.style.margin + ';'; this.style.margin = ''; }
                var imgStyle = (this.style.cssText); strNewHTML += '<span ' + imgId + imgClass + imgTitle + imgAlt; strNewHTML += 'style="position:relative;white-space:pre-line;display:inline-block;background:transparent;' + imgAlign + imgHand; strNewHTML += 'width:' + jQuery(this).width() + 'px;' + 'height:' + jQuery(this).height() + 'px;'; strNewHTML += 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + jQuery(this).attr('src') + '\', sizingMethod=\'scale\');'; strNewHTML += imgStyle + '"></span>'; if (prevStyle != '') { strNewHTML = '<span style="position:relative;display:inline-block;' + prevStyle + imgHand + 'width:' + jQuery(this).width() + 'px;' + 'height:' + jQuery(this).height() + 'px;' + '">' + strNewHTML + '</span>'; }
                jQuery(this).hide(); jQuery(this).after(strNewHTML);
            }); jQuery(this).find("*").each(function () { var bgIMG = jQuery(this).css('background-image'); if (bgIMG.indexOf(".png") != -1) { var iebg = bgIMG.split('url("')[1].split('")')[0]; jQuery(this).css('background-image', 'none'); jQuery(this).get(0).runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + iebg + "',sizingMethod='scale')"; } }); jQuery(this).find("input[src$=.png]").each(function () { var bgIMG = jQuery(this).attr('src'); jQuery(this).get(0).runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + bgIMG + '\', sizingMethod=\'scale\');'; jQuery(this).attr('src', settings.blankgif) });
        }
        return jQuery;
    };
})(jQuery); ; (function ($) {
    $.fn.PhotoViewer = function (uri, options) {
        var defaults = { dataType: 'xml', imageSize: { width: 260, height: 200 }, rows: null, columns: null, shuffle: false, show: { filename: false, title: false, dimensions: false, notes: false }, navigation: { flow: 'auto', pagesToShow: 5 }, resourceIndex: 1, resourceLoadCount: 2, resources: [{ height: 90 }, { height: 300 }, { height: 1200}], prefetchRows: 1, imagePadding: 2, imageClickBehavior: 'popup', picsToLoad: null, picIndexToSelect: 0, menu: { height: 27 }, emptyAlbumHtml: 'Album Empty', popupSettings: {}, aspect: { x: 4, y: 3 }, zoomToFit: false, onClick: null, onLoad: null, disableRightClick: false }; var picsToLoad = null; if (options != null) { picsToLoad = options.picsToLoad; options.picsToLoad = null; }
        var settings = $.extend(true, defaults, options); if (options != null) { options.picsToLoad = picsToLoad; }
        settings.picsToLoad = picsToLoad; var me = $(this); var meId = me.attr('id'); if (meId == null || meId.length == 0) { meId = 'pv' + Math.round(Math.random() * 65535); me.attr('id', meId); }
        var locals = $.fn.PhotoViewer.instances[meId]; if (locals != null) { return locals.fn(locals, uri, settings); }
        locals = $.fn.PhotoViewer.instances[meId] = { me_this: this, fn: function (locals, uri, settings) {
            locals.me = $(locals.me_this); locals.meId = locals.me.attr('id'); switch (uri.toLowerCase()) { case 'piccount': return locals.pics.length; case 'getpics': return locals.pics; case 'dump': return locals; case 'destroy': destroy(locals); delete $.fn.PhotoViewer.instances[locals.meId]; return locals.me; }; if (locals.me.is('.pviewer') == true) { destroy(locals); }
            locals.me = $('#' + locals.meId); locals.meBody = $('body:first'); locals.meParent = locals.me.parent(); settings.aspect.xRatio = settings.aspect.x / settings.aspect.y; settings.aspect.yRatio = settings.aspect.y / settings.aspect.x; locals.settings = settings; locals.SIG = Math.round(Math.random() * 100); locals.pics = []; locals.resources = []; locals.picsXml = null; locals.picIndex = 0; locals.lastPic = null; locals.loadIndex = 0; locals.isLoaded = false; locals.picsLoading = 0; locals.picsLoaded = 0; locals.isReady = false; locals.imagePadding = locals.settings.imagePadding * 2; locals.show = (locals.settings.show && (locals.settings.show.filename || locals.settings.show.title || locals.settings.show.dimensions || locals.settings.show.notes)) ? true : false; locals.pageWidth = locals.pageHeight = 0; $(window).bind('scroll.' + locals.meId, function () { smartLoader(); updateMenu(); }); locals.container = $(document.createElement('div')).addClass('pv-container'); locals.container_parent = $(document.createElement('div')).addClass('pv-containerp').append(locals.container).bind('scroll.' + locals.meId, function () { smartLoader(); updateMenu(); }); locals.main = $(document.createElement('div')).addClass('pv-main'); locals.menuContent = $(document.createElement('div')).addClass('pv-menu-content').css('height', locals.settings.menu.height + 'px').append('<span class="pv-loading">Loading...</span>'); locals.menu = $(document.createElement('div')).addClass('pv-menu').css('height', locals.settings.menu.height + 'px').append(locals.menuContent).append($('<div class="pv-menu-overlay">&nbsp;</div>').css('height', locals.settings.menu.height + 'px')); locals.main.append(locals.container_parent).append(locals.menu); locals.me.empty().show().addClass('pviewer').append(locals.main); $('.pv-menu-page').live('click.' + locals.meId, function (e) {
                var me = $(this); if (me.closest('.pviewer').attr('id') != locals.meId)
                    return; var pg_clicked = parseInt(me.text()); var newTop = ((pg_clicked - 1) * ((locals.imageSize.height + locals.imagePadding) * locals.rows)); locals.container_parent[0].scrollTop = newTop; updateMenu(); smartLoader();
            }); function resGet(pic) {
                var i = pic.res.length - 1 - locals.settings.resourceIndex; if (i < 0)
                    i = 0; else if (i >= pic.res.length)
                    i = pic.res.length - 1; return pic.res[i];
            }
            function resGetUrl(pic) {
                var res = resGet(pic); if (res == null || res.url == null)
                    return ''; return res.url;
            }
            function resPicFindIndex(pic, url) {
                var resI; for (resI = 0; resI < pic.res.length; resI++) {
                    if (pic.res[resI].url == url)
                        return resI;
                } 
            }
            function updatePicImage(data) {
                var pic = data; if (pic.imgDom == null)
                    return; if (pic.origW == null) { pic.origW = pic.imgDom.width(); pic.origH = pic.imgDom.height(); }
                var w = pic.origW; var h = pic.origH; var ar = w / h; var arH = h / w; if (h > (locals.imageSize.height)) { h = (locals.imageSize.height); w = Math.round(h * ar); }
                if (w > (locals.imageSize.width)) { w = (locals.imageSize.width); h = Math.round(w * arH); }
                if (locals.settings.zoomToFit == true) {
                    var wDiff = (locals.imageSize.width - w); var hDiff = (locals.imageSize.height - h); if (wDiff > hDiff) {
                        w = (locals.imageSize.width); if (w > pic.origW)
                            w = pic.origW; h = Math.round(w * arH);
                    } else if (hDiff > wDiff) {
                        h = (locals.imageSize.height); if (h > pic.origH)
                            h = pic.origH; w = Math.round(h * ar);
                    }
                    if (w > pic.origW) { w = pic.origW; h = Math.round(w * arH); }
                    if (h > pic.origH) { h = pic.origH; w = Math.round(h * ar); } 
                }
                pic.width = w; pic.height = h; pic.left = Math.floor((locals.imageSize.width - (pic.width)) / 2); pic.top = Math.floor((locals.imageSize.height - (pic.height)) / 2); pic.imgDom.attr({ 'width': pic.width, 'height': pic.height }); pic.frameDom.css({ 'left': pic.left + 'px', 'top': pic.top + 'px', 'width': (pic.width + 0) + 'px', 'height': (pic.height + 0) + 'px' });
            }
            function updateMenu() {
                if (locals.isReady == false || locals.isLoaded == false)
                    return; if (locals.pics.length == 0) {
                    if (locals.settings.emptyAlbumHtml == null)
                        locals.menu.hide(); else
                        locals.menuContent.children('.pv-loading').html(locals.settings.emptyAlbumHtml); return;
                }
                if (locals.settings.navigation.flow == 'auto') { locals.menu.hide(); return; }
                try { var pg = Math.ceil((Math.abs(locals.container.position().top) - 10) / ((locals.imageSize.height + locals.imagePadding) * locals.rows)) + 1; var pg_count = Math.ceil(locals.container.height() / ((locals.imageSize.height + locals.imagePadding) * locals.rows)); } catch (e) { return; }
                if (pg_count <= 1) { locals.menu.hide(); return; }
                else
                { locals.menu.show(); }
                var pagesShown = 0; locals.menuContent.empty(); var low_pg = pg - Math.floor((locals.settings.navigation.pagesToShow - 1) / 2); var high_pg = 1; for (var i = low_pg; pagesShown < locals.settings.navigation.pagesToShow && i <= pg_count; i++) {
                    if (i < 1)
                        continue; var el = locals.menuContent.find('a:eq(' + pagesShown + ')'); if (el.length == 0) { el = $('<a href="#" onclick="return false;"></a>'); locals.menuContent.append(el); }
                    if (i == pg) { el.attr('class', 'pv-menu-page-cur').text(i); }
                    else { el.attr('class', 'pv-menu-page').text(i); }
                    pagesShown++; high_pg = i;
                }
                for (var i = pagesShown; i < locals.settings.navigation.pagesToShow; i++) { locals.menuContent.find('a:eq(' + pagesShown + ')').remove(); }
                if (low_pg > 1) {
                    if (low_pg > 2)
                        locals.menuContent.prepend('...'); locals.menuContent.prepend('<a href="#" onclick="return false;" class="pv-menu-page">1</a>');
                }
                if (high_pg < pg_count) {
                    if (high_pg < (pg_count - 1))
                        locals.menuContent.append('...'); locals.menuContent.append('<a href="#" onclick="return false;" class="pv-menu-page">' + pg_count + '</a>');
                } 
            }
            function resizeWindow() { if (typeof (window.innerHeight) == 'number') { locals.pageWidth = window.innerWidth; locals.pageHeight = window.innerHeight; } else if (document.documentElement && (document.documentElement.clientHeight)) { locals.pageWidth = document.documentElement.clientWidth; locals.pageHeight = document.documentElement.clientHeight; } else if (document.body && (document.body.clientHeight)) { locals.pageWidth = document.body.clientWidth; locals.pageHeight = document.body.clientHeight; } }
            function resize() {
                if (locals.isLoaded == false)
                    return; if (locals.pics.length == 0) { locals.main.css('height', ''); locals.container_parent.css('height', ''); locals.isReady = true; updateMenu(); return; }
                var popup = $('body > #wst_album_popup:first'); if ((popup.length > 0 && popup.css('display') != 'none'))
                    return; var newInnerWidth = locals.me.innerWidth(); var newInnerHeight = locals.me.innerHeight(); if (newInnerWidth <= 0) { return; }
                if (locals.settings.imageSize == null && newInnerHeight < 200) { locals.settings.imageSize = { width: 260, height: 200 }; }
                if (newInnerWidth == locals.innerWidth && locals.innerHeight != null && newInnerHeight == locals.innerHeight) { return; }
                locals.innerWidth = newInnerWidth; locals.innerHeight = newInnerHeight; for (var i = 0; i < locals.pics.length; i++) {
                    var pic = locals.pics[i]; if (pic == null)
                        continue; pic.position = null;
                }
                if (locals.isReady == true) {
                    if (locals.settings.columns == null)
                        return; reload(); locals.container_parent[0].scrollTop = 0;
                }
                locals.imageSize = locals.settings.imageSize; locals.columns = null; locals.rows = null; if (locals.imageSize == null) {
                    if (locals.settings.columns == null && locals.settings.rows == null)
                        locals.settings.columns = locals.settings.rows = 3; else if (locals.settings.columns == null)
                        locals.settings.columns = locals.settings.rows; else if (locals.settings.rows == null)
                        locals.settings.rows = locals.settings.columns;
                }
                if (locals.settings.columns != null) { locals.columns = locals.settings.columns; if (locals.imageSize == null) locals.imageSize = { width: 0, height: 0 }; locals.imageSize.width = Math.floor((locals.innerWidth - 1 - (locals.columns * locals.imagePadding) - (locals.settings.navigation.flow == 'scroll' ? 25 : 0)) / locals.columns); locals.imageSize.height = Math.round(locals.imageSize.width * locals.settings.aspect.yRatio); }
                if (locals.settings.rows != null) { locals.rows = locals.settings.rows; if (locals.imageSize == null) locals.imageSize = { width: 0, height: 0 }; else locals.innerHeight = (locals.rows * (locals.imageSize.height + locals.imagePadding)) + locals.settings.menu.height; locals.imageSize.height = Math.floor((locals.innerHeight - (locals.rows * locals.imagePadding) - locals.settings.menu.height) / locals.rows); }
                if (locals.imageSize == null) { return; }
                if (locals.columns == null) { locals.columns = 0; var x = (locals.settings.navigation.flow == 'scroll' ? 25 : 0); while (x < locals.innerWidth - (locals.imageSize.width + locals.imagePadding)) { locals.columns++; x += (locals.imageSize.width + locals.imagePadding); } }
                if (locals.rows == null) {
                    locals.rows = 0; var y = locals.settings.menu.height; while (y < locals.innerHeight - (locals.imageSize.height + locals.imagePadding)) { locals.rows++; y += (locals.imageSize.height + locals.imagePadding); }
                    if (locals.rows < 1)
                        locals.rows = 1;
                }
                if (locals.settings.navigation.flow != 'scroll') { locals.menu.css('margin-right', (locals.innerWidth - (locals.columns * locals.imageSize.width) - ((locals.columns - 1) * locals.imagePadding)) + 'px'); }
                render(); if (locals.isReady == false) {
                    locals.isReady = true; locals.imgInfo = $('body > .pv-img_info:first'); if (locals.imgInfo.length == 0) { locals.imgInfo = $('<div class="pv-img_info">&nbsp;</div>'); locals.meBody.append(locals.imgInfo); }
                    locals.imgInfoOverlay = $('body > .pv-img_info_overlay:first'); if (locals.imgInfoOverlay.length == 0) { locals.imgInfoOverlay = $('<div class="pv-img_info_overlay">&nbsp;</div>'); locals.meBody.append(locals.imgInfoOverlay); }
                    updateMenu();
                }
                smartLoader(true);
            }
            function resizeAsync() {
                if (locals.resizeAsyncTimer != null) { clearTimeout(locals.resizeAsyncTimer); }
                locals.resizeAsyncTimer = setTimeout(resize, 30);
            }
            function preloadCallback(evt) {
                var o = null; if (evt.target == null)
                    o = evt; else
                    o = $(evt.target); idx = o.data('pic'); var pic = locals.pics[idx]; if (pic == null || pic.imgDomLoad == null) { return; }
                locals.picsLoaded++; locals.picsLoading--; pic.dom.children('.pv-full_img_loading').remove(); pic.imgDom = pic.imgDomLoad; pic.imgDomLoad = null; pic.imgDom.show(); pic.frameDom.show(); updatePicImage(pic); smartLoader(true);
            }
            function preloadErrorCallback(evt) {
                var idx = $(this).data('pic'); var pic = locals.pics[idx]; if (pic == null || pic.imgDomLoad == null)
                    return; pic.imgDomLoad.remove(); pic.imgDomLoad = null; locals.picsLoading--; pic.dom.children('.pv-full_img_loading').text('Load failed'); smartLoader(true);
            }
            function reload() {
                for (i = 0; i < locals.pics.length; i++) {
                    var pic = locals.pics[i]; pic.loading = false; if (pic.imgDomLoad != null) { pic.imgDomLoad.remove(); pic.imgDomLoad.attr('src', ''); pic.imgDomLoad = null; locals.picsLoading--; }
                    if (pic.imgDom != null) { pic.imgDom.remove(); pic.imgDom.attr('src', ''); pic.imgDom = null; }
                    if (pic.frameDom != null) { pic.frameDom.remove(); pic.frameDom = null; } 
                } 
            }
            function loadPrimaryImageAsync(pic) { setTimeout(function () { loadPrimaryImage(pic); }, 30); }
            function loadPrimaryImage(pic) {
                var resUrl = resGetUrl(pic); if (pic.imgDomLoad != null) { pic.imgDomLoad.remove(); pic.imgDomLoad.attr('src', ''); pic.imgDomLoad = null; locals.picsLoading--; }
                if (pic.imgDom != null) { pic.imgDom.remove(); pic.imgDom.attr('src', ''); pic.imgDom = null; }
                if (pic.frameDom != null) { pic.frameDom.remove(); pic.frameDom = null; }
                locals.picsLoading++; pic.imgDomLoad = $(document.createElement('img')).data('pic', pic.index).load(preloadCallback).error(preloadErrorCallback).hide().bind('click.' + locals.meId, function (evt) {
                    if (evt.button != 0 || evt.ctrlKey || evt.shiftKey || evt.altKey)
                        return true; var pic_idx = $(evt.target).data('pic'); var pic = locals.pics[pic_idx]; return imageClick(pic, evt);
                }); pic.frameDom = $(document.createElement('div')).addClass('pv-full_img_frame').css({ 'width': locals.imageSize.width + 'px', 'height': locals.imageSize.height + 'px' }).hide().append(pic.imgDomLoad).bind('mouseover.' + locals.meId, function (e) {
                    var div = $(e.target).closest('img'); if (div.length == 0)
                        return; div.addClass('pv-img_over'); if (locals.show != true)
                        return; var pic = locals.pics[div.data('pic')]; if (pic == null)
                        return; var info = ''; if (locals.settings.show.filename == true) {
                        var url = resGetUrl(pic); var i = url.lastIndexOf('/'); if (i > 0)
                            url = url.substr(i + 1); info += '&nbsp;<font style="text-decoration:underline">' + url + '</font><br />';
                    }
                    if (locals.settings.show.title == true && pic.title != null && pic.title.length > 0) { info += '&nbsp;<font style="">' + pic.title + '</font><br />'; }
                    if (locals.settings.show.dimensions == true) { info += '&nbsp;<font style="">' + pic.origW + 'x' + pic.origH + '</font><br />'; }
                    if (locals.settings.show.notes == true && pic.notes != null && pic.notes.length > 0) { info += pic.notes; }
                    if (info.length == 0) { locals.imgInfo.css('display', 'none'); locals.imgInfoOverlay.css('display', 'none'); locals.imgInfoSize = { Width: 0, Height: 0 }; }
                    else {
                        var left = locals.imgInfo.css('left'); locals.imgInfo.css({ 'display': 'block', 'left': '0', 'width': '' }).html(info); locals.imgInfoOverlay.css({ 'display': 'block' }); locals.imgInfoSize = { Width: parseInt(locals.imgInfo.outerWidth()), Height: parseInt(locals.imgInfo.outerHeight()) }; if (locals.imgInfoSize.Width > (locals.pageWidth - 100)) { locals.imgInfo.css('width', (locals.pageWidth - 100) + 'px'); locals.imgInfoSize = { Width: parseInt(locals.imgInfo.outerWidth()), Height: parseInt(locals.imgInfo.outerHeight()) }; }
                        showTooltip(e);
                    } 
                }).bind('mouseout.' + locals.meId, function (e) {
                    var div = $(e.target).closest('img'); if (div.length == 0)
                        return; div.removeClass('pv-img_over'); if (locals.show != true)
                        return; locals.imgInfo.css('display', 'none'); locals.imgInfoOverlay.css('display', 'none');
                }); if (options != null) {
                    if (options.disableRightClick == true)
                    { $('#' + locals.meId + ' .pv-full_img_frame').live("contextmenu." + locals.meId, function (e) { return false; }); } 
                }
                if (locals.show == true) { pic.frameDom.bind('mousemove.' + locals.meId, function (e) { showTooltip(e); }); }
                pic.dom.append(pic.frameDom); pic.imgDomLoad.attr('src', resUrl); if (pic.imgDomLoad == null); else if (pic.imgDomLoad[0].complete) { preloadCallback(pic.imgDomLoad); } 
            }
            function showTooltip(e) {
                if (locals.imgInfo == null || locals.imgInfoSize == null)
                    return; var x = e.pageX + 15; if ((x + locals.imgInfoSize.Width) > (locals.pageWidth - 50))
                    x = locals.pageWidth - 50 - locals.imgInfoSize.Width; locals.imgInfo.css({ left: x + 'px', top: (e.pageY + 15) + 'px' }); locals.imgInfoOverlay.css({ width: locals.imgInfoSize.Width + 'px', height: locals.imgInfoSize.Height + 'px', left: x + 'px', top: (e.pageY + 15) + 'px' });
            }
            function firstTimeRenderCallback() {
                if (locals.innerWidth == locals.me.innerWidth())
                { render(true); updateMenu(); }
                else { resize(); } 
            }
            var firstRender = true; function render(forceLoad) {
                locals.container.empty(); switch (locals.settings.navigation.flow) { case 'scroll': locals.innerHeight = (locals.rows * (locals.imageSize.height + locals.imagePadding)) + locals.settings.menu.height; locals.container_parent.css({ overflow: 'auto', height: (locals.innerHeight - locals.settings.menu.height) + 'px' }); locals.main.css({ height: locals.innerHeight + 'px' }); break; case 'page': locals.innerHeight = (locals.rows * (locals.imageSize.height + locals.imagePadding)) + locals.settings.menu.height; locals.container_parent.css({ overflow: 'hidden', height: (locals.innerHeight - locals.settings.menu.height) + 'px' }); locals.main.css({ height: locals.innerHeight + 'px' }); break; default: locals.container_parent.css({ overflow: 'visible', height: 'auto' }); locals.main.css({ height: '100%' }); break; }
                if (firstRender)
                { setTimeout(firstTimeRenderCallback, 30); firstRender = false; return; }
                for (var i = 0; i < locals.pics.length; i++) {
                    var pic = locals.pics[i]; if (pic == null)
                        continue; pic.loadIndex = i; var loading = $('<span class="pv-full_img_loading">Loading</span>'); pic.dom = $('<div class="pv-full_img"></div>').append(loading).css({ width: locals.imageSize.width + 'px', height: locals.imageSize.height + 'px', 'margin-right': locals.imagePadding + 'px', 'margin-bottom': locals.imagePadding + 'px' }).data('pic', pic.index); locals.container.append(pic.dom); var loadingWidth = loading.width(); loading.css('left', Math.round((locals.imageSize.width / 2) - (loadingWidth / 2)) + 'px');
                }
                locals.innerWidth = locals.me.innerWidth(); locals.innerHeight = locals.me.innerHeight(); if (locals.settings.navigation.flow == 'scroll' || locals.settings.navigation.flow == 'page') { locals.container.css('height', 'auto'); pg_size = ((locals.imageSize.height + locals.imagePadding) * locals.rows); pg_count = locals.container.height() / pg_size; new_height = parseInt(Math.ceil(pg_count) * pg_size); locals.container.css('height', new_height + 'px'); } 
            }
            function hideBlockingNodes() {
                try {
                    $('.fullscreen-hide').each(function (index, node) {
                        if ($(node).is("iframe")) {
                            if (node.style) { var visibility = jQuery.css(node, "visibility"); if (visibility !== "hidden" && !jQuery.data(node, "prevvisibility")) { jQuery.data(node, "prevvisibility", visibility); } }
                            $(node).css("visibility", "hidden");
                        }
                        else { $(node).hide(); } 
                    });
                } catch (e) { } 
            }
            function imageClick(pic, e) {
                if ($.isFunction(locals.settings.onClick) == true) { if (locals.settings.onClick(pic, locals.me) == false) { if (e) e.stopPropagation(); return false; } }
                switch (locals.settings.imageClickBehavior) { case 'popup': if (e) e.stopPropagation(); var originalAlbumId = '#' + locals.meId; var popupSettings = $.extend(true, {}, locals.settings.popupSettings, { autoShow: true, frameWidth: 0, imageClickBehavior: 'next', preload: 1, picIndexToSelect: pic.index, paplayer_path: locals.settings.paplayer_path }); popupSettings.picsToLoad = locals.pics; $(this).wstAlbumPopup(uri, popupSettings); hideBlockingNodes(); return false; }
                return true;
            }
            locals.loadPicsTmp = null; function loadPicsAsync(tmpPics) { locals.loadPicsTmp = tmpPics; setTimeout(function () { loadPics(tmpPics); }, 100); }
            function loadPics(tmpPics) {
                if (locals.settings.shuffle == true) {
                    while (locals.pics.length < tmpPics.length) {
                        var pic = null; while (pic == null) { i = Math.floor(Math.random() * tmpPics.length); pic = tmpPics[i]; }
                        locals.pics.push(pic); tmpPics[i] = null;
                    } 
                }
                else { locals.pics = tmpPics; }
                var loc = window.location.href.toLowerCase(); var isSecure = (loc.indexOf('https') == 0); if (locals.pics.length > 0) { pic = locals.pics[0]; for (i = 0; i < pic.res.length; i++) { var res = { index: locals.resources.length, height: null }; locals.resources.push(res); } }
                for (i = 0; i < locals.pics.length; i++) { pic = locals.pics[i]; pic.index = i * 1; pic.id = locals.meId + '_' + i; if (isSecure == true) { for (r = 0; r < pic.res.length; r++) { pic.res[r].url = pic.res[r].url.replace('http:', 'https:'); } } }
                locals.picIndex = locals.settings.picIndexToSelect; if (locals.picIndex < 0)
                    locals.picIndex = 0; else if (locals.picIndex >= (locals.pics.length - 1))
                    locals.picIndex = locals.pics.length - 1; locals.isLoaded = true; if (locals.pics.length > 0)
                    locals.menuContent.empty(); resize();
            }
            if (locals.settings.picsToLoad != null) {
                var tmpPics = []; for (i = 0; i < locals.settings.picsToLoad.length; i++) {
                    var pic = locals.settings.picsToLoad[i]; var newPic = { res: pic.res, title: pic.title, notes: pic.notes, width: null, origW: null, imgDom: null }; if (pic.res.length > 0)
                        tmpPics.push(newPic);
                }
                loadPicsAsync(tmpPics);
            }
            else if (settings.dataType == 'json') {
                $.ajax({ type: 'GET', url: uri, cache: false, success: function (data, dataStatus) {
                    var json; if (typeof data == 'string') { json = eval('(' + data + ')'); } else { json = data; }
                    var tmpPics = []; for (i = 0; i < json.pics.length; i++) {
                        var tmp = json.pics[i]; var pic = { res: [], title: (tmp.title != null ? tmp.title : ''), notes: (tmp.notes != null ? tmp.notes : ''), width: null, origW: null, imgDom: null, mediaType: (tmp.mediaType != null ? tmp.mediaType : 'image') }; var prev_url = ''; if (tmp.res != null && tmp.res.length > 0) { for (i2 = 0; i2 < tmp.res.length; i2++) { var tmp2 = tmp.res[i2]; prev_url = tmp2.url; var res = { url: tmp2.url }; pic.res.push(res); } }
                        if (pic.res.length == 0) {
                            if (tmp.smallUrl != null) { prev_url = tmp.smallUrl; pic.res.push({ url: tmp.smallUrl }); }
                            if (tmp.largeUrl != null) { prev_url = tmp.largeUrl; pic.res.push({ url: tmp.largeUrl }); }
                            if (tmp.url != null) { prev_url = tmp.url; pic.res.push({ url: tmp.url }); } 
                        }
                        if (pic.res.length > 0)
                            tmpPics.push(pic);
                    }
                    loadPics(tmpPics);
                }, error: function (req, textStatus, err) { locals.menuContent.children('.pv-loading').html('Error loading image collection...'); } 
                });
            }
            else {
                $.ajax({ type: 'GET', url: uri, dataType: ($.browser.msie) ? 'text' : 'xml', cache: false, success: function (data, dataStatus) {
                    var xml; if (typeof data == 'string') { xml = new ActiveXObject('Microsoft.XMLDOM'); xml.async = false; xml.loadXML(data); } else { xml = data; }
                    var tmpPics = []; var picsRoot = $('pics', xml); if (picsRoot.attr('allowDownload') == 'false')
                        locals.settings.popupSettings.disableRightClick = true; picsXml = $('pic', xml); picsXml.each(function () {
                            var picElement = $(this); var pic = { res: [], title: picElement.children('title').text(), notes: picElement.children('notes').text(), width: null, origW: null, imgDom: null, mediaType: picElement.children('mediaType').text() }; if (pic.title == null)
                                pic.title = ''; if (pic.notes == null)
                                pic.notes = ''; if (!pic.mediaType)
                                pic.mediaType = 'image'; var prev_url = ''; picElement.children('res').each(function () {
                                    var res = { url: $(this).children('url').text() }; prev_url = res.url; if (res.url != null)
                                        pic.res.push(res);
                                }); if (pic.res.length == 0) {
                                var tmp = { url: picElement.children('url').text(), smallUrl: picElement.children('smallUrl').text(), largeUrl: picElement.children('largeUrl').text() }; if (tmp.smallUrl != null) { prev_url = tmp.smallUrl; pic.res.push({ url: tmp.smallUrl }); }
                                if (tmp.largeUrl != null) { prev_url = tmp.largeUrl; pic.res.push({ url: tmp.largeUrl }); }
                                if (tmp.url != null) { prev_url = tmp.url; pic.res.push({ url: tmp.url }); } 
                            }
                            if (pic.res.length > 0)
                                tmpPics.push(pic);
                        }); loadPics(tmpPics);
                }, error: function (req, textStatus, err) { locals.menuContent.children('.pv-loading').html('Error loading image collection...'); } 
                });
            }
            function attachResize() { resizeWindow(); $(window).unbind('resize.' + locals.meId).bind('resize.' + locals.meId, resizeWindow); locals.resizeCheckTimer = setInterval(resize, 1000); }
            function destroy(locals) {
                if (locals.resizeAsyncTimer != null) { clearTimeout(locals.resizeAsyncTimer); locals.resizeAsyncTimer = null; }
                if (locals.resizeCheckTimer != null) { clearInterval(locals.resizeCheckTimer); locals.resizeCheckTimer = null; }
                if (locals.isReadyTimer != null) { clearInterval(locals.isReadyTimer); locals.isReadyTimer = null; }
                if (locals.imgInfo != null)
                    locals.imgInfo.remove(); $(window).unbind('.' + locals.meId); locals.me.unbind('.' + locals.meId); $('.pv-containerp:first', locals.me).unbind('.' + locals.meId); $('.pv-full_img img', locals.me).unbind('.' + locals.meId); $('.pv-full_img_frame', locals.me).unbind('.' + locals.meId).die("contextmenu." + locals.meId); $('.pv-menu-page').die('click.' + locals.meId); locals.me.stop(true, false); locals.me.removeClass('pviewer').empty().hide();
            }
            locals.smartLoaderTimer = null; locals.smartLoaderTime = new Date().getTime(); function smartLoader(fast) {
                if (locals.isReady == false || locals.isLoaded == false || locals.pics.length == 0 || locals.smartLoaderTimer != null)
                    return; var delay = 500; var now = new Date().getTime(); if (fast == true || ((now - locals.smartLoaderTime) > 5000)) { delay = 30; locals.smartLoaderTime = now; }
                locals.smartLoaderTimer = window.setTimeout(smartLoaderCallback, delay);
            }
            function smartLoaderCallback() {
                locals.smartLoaderTimer = null; if (locals.picsLoading >= locals.settings.resourceLoadCount) { return; }
                var pageTop = 0; if (typeof (window.pageYOffset) == 'number') { pageTop = window.pageYOffset; } else if (document.body && (document.body.scrollTop)) { pageTop = document.body.scrollTop; } else if (document.documentElement && (document.documentElement.scrollTop)) { pageTop = document.documentElement.scrollTop; }
                var pageBottom = pageTop + locals.pageHeight; var meOffset = locals.me.offset(); var meHeight = locals.me.height(); var meBottom = meOffset.top + meHeight; if (pageBottom < meOffset.top || pageTop > meBottom) { return; }
                var containerPos; try { containerPos = locals.container.position(); } catch (e) { return; }
                var visibleTop = Math.abs(containerPos.top); var visibleBottom = visibleTop + meHeight; if (pageTop > meOffset.top)
                    visibleTop += (pageTop - meOffset.top); if (locals.pageHeight < meHeight)
                    visibleBottom = visibleTop + locals.pageHeight; var prefetchSize = ((locals.imageSize.height + locals.imagePadding) * locals.settings.prefetchRows); visibleTop -= prefetchSize; visibleBottom += prefetchSize; for (var i = 0; i < locals.pics.length; i++) {
                    var pic = locals.pics[i]; if (pic == null || pic.loading == true)
                        continue; if (pic.position == null)
                        pic.position = pic.dom.position(); var top = pic.position.top; var bottom = top + locals.imageSize.height; if (bottom >= visibleTop && top <= visibleBottom) { pic.loading = true; loadPrimaryImage(pic); smartLoader(true); return; } 
                } 
            }
            attachResize(); var myEl = $(locals.me_this).get(0); if (typeof myEl.onselectstart != "undefined")
                myEl.onselectstart = function () { return false; }; else if (typeof myEl.style.MozUserSelect != "undefined")
                myEl.style.MozUserSelect = "none"; else
                myEl.onmousedown = function () { return false; }; myEl.style.cursor = "default"; return locals.me;
        } 
        }; return locals.fn(locals, uri, settings);
    }; $.fn.PhotoViewer.instances = {};
})(jQuery);
