"use strict"; var player = { anim: 1, animating: function () { if (window.proj.still) { return false; } if (base.isMobile()) { return false; } return (player.anim == 1 || player.anim == 2); }, audioCheck: function () { if (base.audio && !base.audio.paused && !player.unmuted) { player.vidUnmute(); } }, control: true, fadetime: 600, imgindex: 0, imgload: function () { $(this).show().parent().animate({ opacity: 1 }, player.fadetime); if (base.media.holdtime !== undefined) { var n = (new Date()).getTime(); base.media.starttime = n - (base.media.holdtime * 1000); base.media.holdtime = undefined; } }, init: function () { base.subscribe('keydown', player.keydown); base.subscribe('mediaSet', player.mediaSet); base.subscribe('mediaSetTime', player.mediaSetTime); base.subscribe('play', player.play); base.subscribe('resize', player.resize); base.subscribe('stop', player.stop); if (player.parallax) { base.subscribe('scroll', player.scroll); $('.player .content').css({ position: 'relative', height: '100%' }); } if (player.control) { if (!base.isMobile()) { $('.player .player-inner').bind('mousemove', player.mouseMove).bind('mousedown', player.mouseDown).bind('mouseup', player.mouseUp).bind('mouseout', player.mouseOut); $('.player .content').bind('mousedown', function (e) { player.pos.down = { x: e.pageX, y: e.pageY }; }).bind(base.clickevent, function (e) { var d = player.pos.down; if (d) { var l = Math.abs(d.x - e.pageX) + Math.abs(d.y - e.pageY); if (l > 20) { return false; } } base.mediaPlayToggle(); }); } else { $('.player .player-inner').bind('touchmove', player.touchMove).bind('touchstart touchend', player.touchCount); } $('.player .player-unmute').bind(base.clickevent, player.vidUnmute); } $('.player .img img').load(player.imgload); var hasvid = false; $(window.proj.media).each(function (i, o) { if (o.t == 6) { hasvid = true; } }); $(function () { if (window.proj.still) { player.fadetime = 0; player.control = false; } else { if (player.preload) { player.preloadNext(); } } player.mediaUpdate(); }); if (base.isMobile()) { player.touchMode = true; $(window).bind('touchMove', function (e) { var ad = $(e.originalEvent.target).closest('.allowdrag').length; if (ad == 0) { return base.nope(e); } }); } if (!player.muteall) { $(window).bind('click', player.vidUnmute); } window.setTimeout(player.audioCheck, 100); window.setTimeout(player.audioCheck, 250); window.setTimeout(player.audioCheck, 500); window.setTimeout(player.audioCheck, 1000); }, keydown: function (k) { if (player.control) { if (k == 32) { base.mediaPlayToggle(); } if (k == 37) { base.mediaPrev(); } if (k == 39) { base.mediaNext(); } } }, keyframes: {}, media: {}, mediaSet: function (o) { if (player.media == o) { return false; } player.media = o; player.size.is360 = (o.t == 3); $(player.img_alt).hide(); player.img_alt = $(player.img_main).css({ zIndex: 1 })[0]; if (o.playerimg == undefined || $('img,video', o.playerimg)[0].loaded !== true) { if (o.t == 6) { var i = base.getVideoUrl(o, player.size.w, player.size.h); player.img_main = $('.player .img' + player.imgindex).css({ background: '#111', zIndex: 2 })[0]; player.img_main.ratio = (i.w / i.h); player.img_main.media = o; player.img_main.isVideo = true; player.img_main.isFit = false; $('video', player.img_main).remove(); $('.psv-container', player.img_main).hide(); vid = $('').appendTo(player.img_main); player.vidEvents(vid.addClass('mid' + o.id)[0]); if (base.isHlsNative(vid[0])) { vid.attr('src', i.u); } else { var h = vid[0].hls = new Hls(); h.loadSource(i.u); h.attachMedia(vid[0]); } $(vid).show().parent().css({ opacity: 0 }).animate({ opacity: 1 }, player.fadetime); $('img', player.img_main).hide(); } else if (o.t == 5) { base.sphere_init(); var i = base.getMediaUrl(o.s, player.size.w * 3, player.size.h * 3) player.img_main = $('.player .img' + player.imgindex).css({ zIndex: 2 })[0]; player.img_main.ratio = (i.w / i.h); player.img_main.media = o; player.img_main.isVideo = false; player.img_main.isFit = false; $('video', player.img_main).remove(); $('img', player.img_main).hide(); $('.psv-container', player.img_main).show(); $(player.img_main).stop(true, false).css({ opacity: 0.004 }); if (player.img_main.player) { if (player.img_main.playerUrl == i.u) { $(player.img_main).animate({ opacity: 1 }, player.fadetime); } else { player.img_main.playerUrl = i.u; player.img_main.player.setPanorama(i.u); } player.img_main.player.rotate({ longitude: 0, latitude: 0 }); } else { var il = false; player.img_main.playerUrl = i.u; var p = player.img_main.player = new PhotoSphereViewer({ container: player.img_main, panorama: i.u, navbar: false, min_fov: 50, default_lat: 0, default_long: 1, default_fov: 80, move_speed: 1.3, time_anim: false, size: { width: player.size.w, height: player.size.h }, mousemove: player.control, mousewheel: !il && player.control, touchmove_two_fingers: il && player.control }); p.on('panorama-loaded', function () { this.resize({ width: player.size.w + 'px', height: player.size.h + 'px' }); $(player.img_main).animate({ opacity: 1 }, player.fadetime); }); } } else { base.media.holdtime = o.lb; var i = base.getMediaUrl(o.s, player.size.w, player.size.h, o.e, (o.f ? true : ''), player.animating()); player.img_main = $('.player .img' + player.imgindex).css({ zIndex: 2 })[0]; player.img_main.ratio = (i.w / i.h); player.img_main.media = o; player.img_main.isVideo = false; player.img_main.isFit = (parseInt(i.w) < parseInt(i.h)) || (o.f); $('video', player.img_main).remove(); $('.psv-container', player.img_main).hide(); $('img', player.img_alt).stop(true, false); if (player.size.is360) { if ($('img', player.img_main).length == 1) { $('').load(player.imgload).appendTo(player.img_main); } player.img_main.ratioFull = player.img_main.ratio * 2; } else { if ($('img', player.img_main).length > 1) { $('img', player.img_main)[1].remove(); } player.img_main.ratioFull = player.img_main.ratio; } $(player.img_main).stop(true, false).css({ display: 'inline-block', opacity: 0 }); $('img', player.img_main).css({ transform: 'none' }).show().removeAttr('src').attr('src', i.u); player.img_main.iw = -1; } player.imgindex = 1 - player.imgindex; } else { var i = base.getMediaUrl(o.s, player.size.w, player.size.h, o.e, (o.f ? true : ''), player.animating()); player.img_main = $(o.playerimg).css({ zIndex: 2 })[0]; $(player.img_main).css({ display: 'inline-block', opacity: 0 }).animate({ opacity: 1 }, player.fadetime); player.img_main.isVideo = (o.t == 6); player.img_main.isFit = (parseInt(i.w) < parseInt(i.h)) || (o.f); if (player.img_main.isVideo) { var vid = $('video', player.img_main)[0]; if (vid) { vid.currentTime = 0; } } } if (player.img_main.isVideo) { if ((o.a == 0) && (!player.unmuted) && (!player.muteall)) { $('.player .player-unmute').show(); } else { $('.player .player-unmute').hide(); } } else { $('.player .player-unmute').hide(); } $(player.img_main).attr({ 'role': 'img', 'aria-label': (player.img_main.media.n || 'Photo ' + String(o.i + 1) + ' in media set. Contact the agent for more details.') }).show(); player.speed(); window.setTimeout('$(\'.player .player-name\').html(player.img_main.media.n)', player.fadetime / 4); window.setTimeout('$(\'.player .player-description\').html(player.img_main.media.d)', player.fadetime / 4); player.pos.x = player.pos.y = 0.5; player.mediaSize(player.img_main); }, mediaSetTime: function () { if (base.playing) { if (player.img_main && player.img_main.isVideo) { var vid = $('video', player.img_main)[0]; if (vid) { var n = (new Date()).getTime(); var d = vid.duration; if (d) { var ct = vid.currentTime; var st = n - ((player.img_main.media.lb + ct) * 1000); if (ct < d - 0.1) { base.media.starttime = st; } } else { base.media.starttime = n - (player.img_main.media.lb * 1000); } } } } else { var m = window.proj.media; var vid = $('video', m[base.media.index].playerimg)[0]; if (vid) { vid.currentTime = 0; } } }, mediaSize: function (o) { if (o) { var anim = window.proj.still ? false : player.anim; var x = (player.size.r > o.ratio); var is360 = (o.media.t == 3); if ((base.playing && anim == 4) || (o.isFit)) { x = !x; } //if (is360) { x = false; } var iw = ((x) ? player.size.w : player.size.h * o.ratio) + 2; var ih = ((x) ? player.size.w / o.ratio : player.size.h) + 2; if (o.player) { o.player.resize({ width: player.size.w + 'px', height: player.size.h + 'px' }); } if (o.isVideo) { $(o).css({ left: 0, top: 0, right: 0, bottom: 0, transform: 'translate3d(0,0,1px)' }); if (base.playing) { var vid = $('video', o)[0]; if (vid && !vid.playing) { vid.play(); } } } else if (o.isFit) { var l = (player.size.w - iw) * 0.5; var t = (player.size.h - ih) * 0.5; $(o).css({ left: 0, top: 0, right: 0, bottom: 0, transform: 'translate3d(0,0,1px)' }); $('img', o).stop(true, false).css({ position: 'absolute', width: iw, height: ih, left: l, top: t, opacity: 1 }); } else if (base.playing) { $(o).css({ left: 0, top: 0, right: 0, bottom: 0, transform: 'translate3d(0,0,1px)' }); if (anim == 1) { if (o.media.t == 5) { if ($('.psv-container', o).is(':visible')) { $('.psv-container', o).stop(true, false).css({ opacity: 1 }).animate({ opacity: 100 }, { duration: (o.media.l * 1000) + (player.fadetime * 2), step: function (d) { if (base.playing) { var p = o.player.getPosition(); p.longitude += 0.001; p.latitude = p.latitude * 0.99; o.player.rotate(p); } else { $(this).stop(true, false); } } }); } } else { var m = 1.07; iw *= m; ih *= m; var a = o.media.a; var x = (a == 1 || a == 4) ? 1 : 0; var y = (a == 1 || a == 3) ? 1 : 0; var l = (player.size.w - iw) * x; var t = (player.size.h - ih) * y; var le = Number((player.size.w - iw) * (1 - (x * 2))).toFixed(0); var te = Number((player.size.h - ih) * (1 - (y * 2))).toFixed(0); var pt = (base.media.time - o.media.lb); var pp = (pt / o.media.l); if (true) { var kfn = 'hdanim' + le + 'x' + te; if (!player.keyframes[kfn]) { player.keyframes[kfn] = $('').appendTo($('head')); } $('img', o).css({ position: 'absolute', width: iw, height: ih, left: l, top: t, animation: kfn + ' ' + Number((((o.media.l - pt) * 1000) + player.fadetime) / 1000).toFixed(3) + 's linear ' + (pp).toFixed(3) + 's 1 both' }); } else { $('img', o).stop(true, false).css({ position: 'absolute', width: iw, height: ih, left: l, top: t, opacity: 1 }).animate({ opacity: 100 }, { step: function (now, fx) { var p = (pp + ((1 - pp) * (now / 100))); $(this).css({ transform: 'scale(' + (1 + ((m - 1) * p)) + ') translate(' + (le * p) + 'px,' + (te * p) + 'px)' }); }, duration: ((o.media.l - pt) * 1000) + player.fadetime, easing: 'linear' }); } } } else { if (anim == 4) { var m = (1 - (player.shrink / 100)); iw *= m; ih *= m; } var sl = (player.size.w - iw) * 0.5; var st = (player.size.h - ih) * 0.5; var io = $('img', o).css({ position: 'absolute', width: iw, height: ih, left: sl, top: st }); if (anim == 2) { var m = 1.07; var pt = (base.media.time - o.media.lb); var pp = (pt / o.media.l); if (true) { if (!player.keyframes[0]) { player.keyframes[0] = $('').appendTo($('head')); } var pd = ((((o.media.l - pt) * 1000) + player.fadetime) * 1.1); $(io).css('animation', 'hdzoom107 ' + Number(pd / 1000).toFixed(3) + 's linear ' + (pp).toFixed(3) + 's 1 both'); window.setTimeout(function () { $(io).css('animation', 'none'); }, pd + 500); } else { $(io).stop(true, false).css({ opacity: 1 }).animate({ opacity: 100 }, { step: function (now, fx) { var p = (pp + ((1 - pp) * (now / 100))); $(this).css({ transform: 'scale(' + (1 + ((m - 1) * p)) + ')' }); }, duration: ((o.media.l - pt) * 1000) + player.fadetime, easing: 'linear' }); } } } o.iw = o.ih = 0; } else if (o.media.t == 5) { $(o).css({ left: 0, top: 0 }); } else { $(o).css({ left: ((player.size.w - (iw * (is360 ? 2 : 1))) * player.pos.x), top: ((player.size.h - ih) * player.pos.y) }); if (o.iw != iw || o.ih != ih) { $('img', o).css({ position: 'relative', left: 0, top: 0, width: iw, height: ih, transform: '' }); o.iw = iw; o.ih = ih; } } } }, mediaUpdate: function () { if (base.fullstop) { return false; } var x, y; if (player.size.isVideo) { player.mediaSize(player.img_main); return false; } if (player.touchMode) { x = player.pos.x; y = player.pos.y; } else { if (player.pos.o) { player.pos.xx = player.pos.xxx; player.pos.yy = player.pos.yyy; } else { player.pos.xx = (player.pos.xx * 0.99) + (player.pos.xxx * 0.01); player.pos.yy = (player.pos.yy * 0.99) + (player.pos.yyy * 0.01); } x = player.pos.x + player.pos.xx; y = player.pos.y + player.pos.yy; } if (player.media.t == 5) { if (player.pos.xx != 0) { if (player.pos.buttons == 0) { var p = player.img_main.player.getPosition(); p.longitude += player.pos.xx; if (!player.pos.o) { p.latitude *= 0.99; } player.img_main.player.rotate(p); } } } else if (!player.size.is360) { if (!player.pos.o) { if (x < 0.2) { player.pos.xxx = Math.abs(player.pos.xxx); } if (x > 0.8) { player.pos.xxx = -Math.abs(player.pos.xxx); } if (y < 0.2) { player.pos.yyy = Math.abs(player.pos.yyy); } if (y > 0.8) { player.pos.yyy = -Math.abs(player.pos.yyy); } } player.pos.x = (x < 0) ? 0 : (x > 1) ? 1 : x; } else { var m = player.size.max360; if (m > 0) { x = (x + m) % m; } else { } player.pos.x = x; } player.pos.y = (y < 0) ? 0 : (y > 1) ? 1 : y; player.mediaSize(player.img_main); window.clearTimeout(player.updatetmr); if (!base.playing && !player.touchMode && player.control) { //window.requestAnimationFrame(player.mediaUpdate) player.updatetmr = window.setTimeout(player.mediaUpdate, 10); } }, mouseDown: function (o) { player.pos.buttons = o.buttons; }, mouseMove: function (o) { if (o.buttons && base.playing) { base.mediaStop(); } var x = (o.clientX - player.size.l) / player.size.w; var y = (o.clientY - player.size.t) / player.size.h; player.pos.o = true; player.pos.xxx = (x < 0.3) ? Math.pow(1 - (x / 0.3), 3) * -player.size.s : (x > 0.7) ? Math.pow(1 - ((1 - x) / 0.3), 3) * player.size.s : 0; player.pos.yyy = (y < 0.3) ? Math.pow(1 - (y / 0.3), 3) * -player.size.s : (y > 0.7) ? Math.pow(1 - ((1 - y) / 0.3), 3) * player.size.s : 0; player.pos.buttons = o.buttons; }, mouseOut: function () { player.pos.o = false; if (player.media.t == 5) { player.pos.xxx = (player.pos.xxx > 0) ? 0.001 : -0.001; } else { player.pos.xxx = (player.pos.xxx > 0) ? 0.001 : (player.pos.xxx < 0) ? -0.001 : 0; player.pos.yyy = (player.pos.yyy > 0) ? 0.001 : (player.pos.yyy < 0) ? -0.001 : 0; } }, mouseUp: function () { player.pos.buttons = 0; }, muteall: false, play: function () { if (base.autoplay && !player.size.ap) { player.size.ap = true; } else { $('.player .player-play').css({ opacity: 0.8, fontSize: '1em', transform: 'translate3d(0,0,1px)' }).show().animate({ opacity: 0, fontSize: '1.3em' }, 500, function () { $(this).hide() }); } if (player.img_main && player.img_main.isVideo) { $('video', player.img_main)[0].play(); } player.mediaUpdate(); }, preload: !base.isMobile(), preloadNext: function () { if (!base.preload) { return false; } this.loaded = true; var m = window.proj.media; for (var a = 0; a < m.length; a++) { if (m[a].playerimg == undefined) { var i; if (m[a].t != 5) { if (m[a].t == 6) { i = base.getVideoUrl(m[a], player.size.w, player.size.h); m[a].playerimg = $('
').appendTo($('.player .content')).hide()[0]; var vid = $('video', m[a].playerimg).addClass('mid' + m[a].id).show()[0]; vid.loaded = true; player.vidEvents(vid); if (base.isHlsNative(vid)) { vid.attr('src', i.u); } else { var h = vid.hls = new Hls(); h.loadSource(i.u); h.attachMedia(vid); } player.preloadNext(); } else { i = base.getMediaUrl(m[a].s, player.size.w, player.size.h, m[a].e, (m[a].f ? true : ''), player.animating()); m[a].playerimg = $('