var iframe = document.getElementById("showcase_iframe"); iframe.addEventListener('load', showcaseLoader, true); var initialVar = 0; var moveTo; var hrExists; function showcaseLoader() { try { var showcase = window.MP_SDK.connect( iframe, // Obtained earlier 'bc2c9f62713a42acba1d0a00d5b8c81c', // Your API key '3.4' // SDK version you are using // Use the latest version you can for your app ) .then(function(mpSdk) { // Model.Event.MODEL_LOADED console.log("MATTERPORT SDK CONNECTED, YIPEEKAIEY"); loadedShowcaseHandler(mpSdk); }) .catch(function(error) { }); } catch (e) { console.error(e); } } var userAgent = window.navigator.userAgent, platform = window.navigator.platform, macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'], windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'], iosPlatforms = ['iPhone', 'iPad', 'iPod'], os = null; if (macosPlatforms.indexOf(platform) !== -1) { os = 'Mac OS'; } else if (iosPlatforms.indexOf(platform) !== -1) { os = 'iOS'; } else if (windowsPlatforms.indexOf(platform) !== -1) { os = 'Windows'; } else if (/Android/.test(userAgent)) { os = 'Android'; } else if (!os && /Linux/.test(platform)) { os = 'Linux'; } var sPath= document.getElementById('postname').value; if (document.getElementById('editmodel')){ var editmodel = document.getElementById('editmodel').value; } if (document.getElementById('version')){ var version = document.getElementById('version').value; } var noSign = false; var listened = []; var medialistened = []; var videolistened = []; var aVideolistened = []; var gtlistened = []; var initialPose = 0; window.addEventListener('DOMContentLoaded', (event) => { console.log("BUTTONS" + rb); var startButton = document.getElementById('loader-cont'); if (typeof cssFg !== 'undefined') { let root = document.documentElement; root.style.setProperty('--cssForeground', "#" + cssFg); root.style.setProperty('--cssBackground', "#" + cssBg); root.style.setProperty('--cssTextColor', "#" + cssTxt); } modelExists = document.getElementById("model"); if (modelExists) { var model = document.getElementById('model').value; } if (startButton) { startButton.addEventListener('click', event => { $('#loading-gui').addClass('collapsed'); $('#loading-background').addClass('collapsed'); $('#framecontainer').addClass('showing'); if($(document).height() <= 700) { iframe.src = 'https://my.matterport.com/show/?m=' + model + '&play=1&' + newQuery + '&vr=0&mt=' + tagsdisable; } else { iframe.src = 'https://my.matterport.com/show/?m=' + model + '&play=1&' + newQuery + '&vr=0&mt=' + tagsdisable; } audio = new Audio(); audio.id = "audio"; audio.controls = true; audio.src="https://boost3d.net/media/1sec.mp3"; audio.volume = 1; audio.load(); audio.play(); if (os != "iOS" && os != "Mac OS"){ if('webkitAudioContext' in window) { bgcontext = new webkitAudioContext(); } else { bgcontext = new AudioContext(); } source2 = bgcontext.createMediaElementSource(audio); gainNode2 = bgcontext.createGain(); gainNode2.gain.setValueAtTime(0.001, bgcontext.currentTime); source2.connect(gainNode2); gainNode2.connect(bgcontext.destination); if (typeof bgAudio !== 'undefined') { if (!bgAudio == "") { audioBG = new Audio("https://cors-anywhere.herokuapp.com/" + bgAudio); audioBG.crossOrigin = "anonymous"; audioBG.play(); source = bgcontext.createMediaElementSource(audioBG); gainNode = bgcontext.createGain(); gainNode.gain.setValueAtTime(0.3, bgcontext.currentTime); source.connect(gainNode); gainNode.connect(bgcontext.destination); console.error("SOURCE CONNECTED"); audioBG.addEventListener('ended', function() { this.currentTime = 0; this.play(); }, false); } } } else { $("#bgButtonHolder").css("display", "none"); } }); } else { var audioenable = document.getElementById('enableaudio'); if (audioenable) { console.log("AUDIO PRIMED"); audioenable.addEventListener('click', event => { audio= new Audio(); audio.id = "audio"; audio.controls = false; audio.src="https://boost3d.net/media/1sec.mp3"; audio.load(); audio.play(); audioenable.setAttribute("hidden", true); console.log("AUDIO ENABLED"); if (os != "iOS" && os != "Mac OS"){ if('webkitAudioContext' in window) { bgcontext = new webkitAudioContext(); } else { bgcontext = new AudioContext(); } source2 = bgcontext.createMediaElementSource(audio); gainNode2 = bgcontext.createGain(); gainNode2.gain.setValueAtTime(0.001, bgcontext.currentTime); source2.connect(gainNode2); gainNode2.connect(bgcontext.destination); } }); } } }); function loadedShowcaseHandler(mpSdk) { mpSdk.Settings.get("highlight_reel") .then(function(data) { hrExists = data; }) .catch(function(error) { // Setting retrieval error. }); mpSdk.on(mpSdk.Mode.Event.CHANGE_END, function(from, to){ moveTo = to; }); if(initialVar == 0) { if (moveTo == "function moveTo() { [native code] }") { console.log("BUTTONS" + rb); initialVar = 1; if (rb != "0") { $('#audiotoggle').addClass('showing').removeClass('collapsed'); $('#navHeader').addClass('showing').removeClass('collapsed'); $('#navdivider').addClass('showing').removeClass('collapsed'); $('#navDiv').addClass('showing').removeClass('collapsed'); $('#icon-right').removeAttr('hidden'); $('#icon-left').attr('hidden',true); mpSdk.Camera.pose.subscribe(function (pose) { from = "undefined"; to = pose.sweep; audioplay(from, to); mediaplay(from, to); videoplay(from, to); avideoplay(from, to); }); } } } var sPath= document.getElementById('postname').value; if(sPath == "view"){ var voiceControl = document.getElementById('voiceControl').value; if (annyang) { if (os != "Mac OS" && os != "iOS" && os != "Android" && voiceControl =="1"){ console.log("Voice Control Requested"); console.log("Voice Control Starting"); // Let's define our first command. First the text we expect, and then the function it should call commands = { 'forward': function() { var dir = 'FORWARD'; mpSdk.Camera.moveInDirection(dir); }, 'left': function() { var directions = { 'LEFT' : [-45, 0], 'RIGHT' : [ 45, 0], 'UP' : [0,20], 'DOWN' : [0,-20] }; var dir = 'LEFT'; mpSdk.Camera.rotate(directions[dir][0], directions[dir][1]); }, 'right': function() { var directions = { 'LEFT' : [-45, 0], 'RIGHT' : [ 45, 0], 'UP' : [0,20], 'DOWN' : [0,-20] }; var dir = 'RIGHT'; mpSdk.Camera.rotate(directions[dir][0], directions[dir][1]); }, 'up': function() { var directions = { 'LEFT' : [-45, 0], 'RIGHT' : [ 45, 0], 'UP' : [0,20], 'DOWN' : [0,-20] }; var dir = 'UP'; mpSdk.Camera.rotate(directions[dir][0], directions[dir][1]); }, 'down': function() { var directions = { 'LEFT' : [-45, 0], 'RIGHT' : [ 45, 0], 'UP' : [0,20], 'DOWN' : [0,-20] }; var dir = 'DOWN'; mpSdk.Camera.rotate(directions[dir][0], directions[dir][1]); }, 'upstairs' : function(floor) { mpSdk.Floor.getData() .then(function(floors) { mpSdk.Floor.moveTo(floors.currentFloor +1) }) }, 'downstairs' : function(floor) { mpSdk.Floor.getData() .then(function(floors) { mpSdk.Floor.moveTo(floors.currentFloor -1) }) }, 'make me dizzy': function() { var directions = { 'LEFT' : [-1800, 0], 'RIGHT' : [ 45, 0], 'UP' : [0,20], 'DOWN' : [0,-20] }; var dir = 'LEFT'; mpSdk.Camera.rotate(directions[dir][0], directions[dir][1]); }, 'close media': function() { closeFrame(); }, 'music off' : function() { document.getElementById("myonoffswitch").click(); }, 'dollhouse' : function() { mpSdk.Mode.moveTo("mode.dollhouse"); }, 'floor plan' : function() { mpSdk.Mode.moveTo("mode.floorplan"); }, 'walkthrough' : function() { mpSdk.Mode.moveTo("mode.inside"); }, '*buttonvalue' : function(buttonvalue) { var jupper = buttonvalue.replace(/^\w/, c => c.toUpperCase()); var testbutton = jArray.indexOf(buttonvalue); if( testbutton != -1) { var sweepId = jArray[testbutton -2]; } else { var testbutton = jArray.indexOf(jupper); if( testbutton != -1) { var sweepId = jArray[testbutton -2]; } else { var testbutton = vArray.indexOf(buttonvalue); if( testbutton != -1) { var sweepId = vArray[testbutton -5]; } else { var testbutton = vArray.indexOf(jupper); if( testbutton != -1) { var sweepId = vArray[testbutton -5]; } else { var testbutton = mArray.indexOf(buttonvalue); if( testbutton != -1) { var sweepId = mArray[testbutton -4]; } else { var testbutton = mArray.indexOf(jupper); if( testbutton != -1) { var sweepId = jArray[testbutton -4]; } } } } } } mpSdk.Sweep.moveTo(sweepId, { rotation: 0, transition: mpSdk.Sweep.Transition.INSTANT }); } } annyang.addCommands(commands); //Start listening. You can call this here, or attach this call to an event, button, etc. annyang.start(); }; } } if(sPath == "tourbuilddev"){ } mpSdk.Model.getDetails() .then(function(model) { modelData = model; modelId = model.sid; }); mpSdk.on(mpSdk.Camera.Event.MOVE, function(pose){ if(mpSdk.Camera.pose){ mpSdk.Camera.pose.subscribe(function (pose) { // Changes to the Camera pose have occurred. window.rotation = pose.rotation; window.sweep = pose.sweep; }); } }); mpSdk.on(mpSdk.Sweep.Event.ENTER, function(from, to){ if(initialVar == 0) { console.log("BUTTONS" + rb); if (rb != "0") { $('#audiotoggle').addClass('showing').removeClass('collapsed'); $('#navHeader').addClass('showing').removeClass('collapsed'); $('#navdivider').addClass('showing').removeClass('collapsed'); $('#navDiv').addClass('showing').removeClass('collapsed'); $('#icon-right').removeAttr('hidden'); $('#icon-left').attr('hidden',true); initialVar = 1; } } if (typeof ga !== 'undefined') { ga('send', 'event', '' + "TIME ON SWEEP", from, window.totalSeconds); } window.totalSeconds = 0; setInterval(setTime, 1000); function setTime() { ++window.totalSeconds; } audioplay(from, to); mediaplay(from, to); videoplay(from, to); avideoplay(from, to); if (typeof ga !== 'undefined') { ga('send', 'event', "SWEEP ENTERED", to, from ); // console.log(collect); } }); const transition = mpSdk.Sweep.Transition.INSTANT; $('#audiotoggle').on('click', function() { if ($('#navHeader').hasClass('showing')) { $('#navHeader').addClass('collapsed').removeClass('showing'); $('#navdivider').addClass('collapsed').removeClass('showing'); $('#icon-left').removeAttr('hidden', true); $('#icon-right').attr('hidden',true); $('#navDiv').addClass('collapsed').removeClass('showing'); } else { $('#navHeader').addClass('showing').removeClass('collapsed'); $('#navdivider').addClass('showing').removeClass('collapsed'); $('#navDiv').addClass('showing').removeClass('collapsed'); $('#icon-right').removeAttr('hidden'); $('#icon-left').attr('hidden',true); } }); $(document).on('click', ".movetoSweep", function () { audio.pause(); var sweepId = ($(this).attr('data-val')); var rotationId = JSON.parse(($(this).attr('data-rot'))); var isaVideoListened = aVideolistened.includes(sweepId); if (isaVideoListened) { var sweepPos = avArray.indexOf(sweepId); var avideofile = avArray[sweepPos + 1]; aVideolistened.splice(avideofile, 1 ); aVideolistened.splice(sweepPos, 1 ); } var isListened = listened.includes(sweepId); if (isListened) { var sweepPos = jArray.indexOf(sweepId); var audiofile = jArray[sweepPos + 1]; listened.splice(sweepPos, 1 ); listened.splice(audiofile, 1 ); } mpSdk.Sweep.moveTo(sweepId, { rotation: rotationId, transition: transition }); }); $(document).on('click', ".movetoMediaSweep", function () { audio.pause(); var sweepId = ($(this).attr('data-val')); var rotationId = JSON.parse(($(this).attr('data-rot'))); var ismediaListened = medialistened.includes(sweepId); if (ismediaListened) { var sweepPos = mArray.indexOf(sweepId); var mediafile = mArray[sweepPos + 1]; var mediatype = mArray[sweepPos + 2]; medialistened.splice(mediatype, 1 ); medialistened.splice(mediafile, 1 ); medialistened.splice(sweepPos, 1 ); } var isaVideoListened = aVideolistened.includes(sweepId); if (isaVideoListened) { var sweepPos = avArray.indexOf(sweepId); var avideofile = avArray[sweepPos + 1]; aVideolistened.splice(avideofile, 1 ); aVideolistened.splice(sweepPos, 1 ); } var isListened = listened.includes(sweepId); if (isListened) { var sweepPos = jArray.indexOf(sweepId); var audiofile = jArray[sweepPos + 1]; listened.splice(sweepPos, 1 ); listened.splice(audiofile, 1 ); } mpSdk.Sweep.moveTo(sweepId, { rotation: rotationId, transition: transition }); }); $(document).on('click', ".movetoVideoSweep", function () { audio.pause(); var sweepId = ($(this).attr('data-val')); var rotationId = JSON.parse(($(this).attr('data-rot'))); var isvideoListened = videolistened.includes(sweepId); if (isvideoListened) { var sweepPos = vArray.indexOf(sweepId); var videofile = vArray[sweepPos + 1]; videolistened.splice(videofile, 1 ); videolistened.splice(sweepPos, 1 ); } var isaVideoListened = aVideolistened.includes(sweepId); if (isaVideoListened) { var sweepPos = avArray.indexOf(sweepId); var avideofile = avArray[sweepPos + 1]; aVideolistened.splice(avideofile, 1 ); aVideolistened.splice(sweepPos, 1 ); } var isListened = listened.includes(sweepId); if (isListened) { var sweepPos = jArray.indexOf(sweepId); var audiofile = jArray[sweepPos + 1]; listened.splice(sweepPos, 1 ); listened.splice(audiofile, 1 ); } mpSdk.Sweep.moveTo(sweepId, { rotation: rotationId, transition: transition }); }); var guidedTour = 0; var sweepNumber = 0; var rotNumber = 1; $("#guidedTour").on('click', function() { if (guidedTour == 0) { guidedtour = 1; if (typeof vtArray !== 'undefined') { var vtsweeps = vtArray; var vtsweepsLength = vtsweeps.length; $("#audio").on('ended', function() { if (sweepNumber < vtsweepsLength) { sweepNumber = sweepNumber + 2; rotNumber = rotNumber + 2; var sweepId = vtsweeps[sweepNumber]; var rotId = JSON.parse(vtsweeps[rotNumber]); mpSdk.Sweep.moveTo(sweepId, { rotation: rotId, transition: mpSdk.Sweep.Transition.FADE }); } }) } } else { guidedTour = 0; } }); function audioplay(from, to){ if (typeof audio !== 'undefined') { var audiogen = 0; var audio1 = 0; var firstaudio=0; if (typeof jArray !== 'undefined') { var sweeps = jArray; } var isListened = listened.includes(to); if (!isListened) { var isPresent = jArray.includes(to); if (isPresent) { if (document.getElementById("mediaframe")) { closeFrame(); } var sweepPos = jArray.indexOf(to); var audiofile = jArray[sweepPos + 1]; if (audio1 ==0){ document.getElementById('audioplayer').appendChild(audio); } if (audiogen ==0){ audio.crossOrigin = "anonymous"; audio.src = audiofile; audio.type='audio/mpeg'; audio.controls = false; audio.load(); document.getElementById("audio-play").setAttribute("hidden", true); document.getElementById("audio-pause").removeAttribute("hidden"); $(document).on('click', "#audio-pause", function () { audio.pause(); document.getElementById("audio-play").removeAttribute("hidden"); document.getElementById("audio-pause").setAttribute("hidden", true); }); $(document).on('click', "#audio-play", function () { audio.play(); document.getElementById("audio-pause").removeAttribute("hidden"); document.getElementById("audio-play").setAttribute("hidden", true); }); if(annyang) { if (os != "Mac OS" && os != "iOS" && os != "Android" && voiceControl == "1"){ annyang.pause(); } } if (os != "iOS" && os != "Mac OS"){ if (typeof gainNode !== 'undefined') { gainNode.gain.setTargetAtTime(0.1, bgcontext.currentTime, 1); } gainNode2.gain.setTargetAtTime(0.8, bgcontext.currentTime, 0.5); console.log("volume up"); } var playPromise = audio.play(); if (playPromise !== undefined) { playPromise.then(_ => { // Automatic playback started! // Show playing UI. }) .catch(error => { // Auto-play was prevented // Show paused UI. console.log(error); }); } if (modelExists){ if (window.audioOverride ==1) { audio1 = 0; audiogen = 0; } else { audio1 = 1; audiogen = 1; } window.audioOverride = 0; listened.push(to); } audio.onended = function(){ document.getElementById("audio-play").setAttribute("hidden", true); document.getElementById("audio-pause").setAttribute("hidden", true); if (os != "iOS" && os != "Mac OS"){ if (typeof gainNode !== 'undefined') { gainNode.gain.setTargetAtTime(0.3, bgcontext.currentTime, 2); } gainNode2.gain.setValueAtTime(0.01, bgcontext.currentTime); console.log("volume up"); } audio.controls=false; audiogen = 0; if(annyang){ if (os != "Mac OS" && os != "iOS" && os != "Android" && voiceControl == "1"){ annyang.start(); } }; } } } } goAnnyang = "go"; } } function mediaplay (from, to) { if (typeof mArray !== 'undefined') { var mediasweeps = mArray; } var isMediaListened = medialistened.includes(to); if (!isMediaListened) { var isMediaPresent = mArray.includes(to); if (isMediaPresent) { if(annyang) { if (os != "Mac OS" && os != "iOS" && os != "Android" && voiceControl == "1"){ annyang.pause(); } } console.log("Media Started"); var sweepPos = mArray.indexOf(to); var mediafile = mArray[sweepPos + 1]; var mediatype = mArray[sweepPos + 2]; var mediatitle = mArray[sweepPos + 4]; var eid = mArray[sweepPos + 3]; if (!document.getElementById("mediaframe")) { mediaframe = document.createElement('iframe'); mediaframe.setAttribute('id', 'mediaframe'); mediaframe.setAttribute('width', '100%'); mediaframe.setAttribute('height', '100%'); mediaframe.setAttribute("scrolling", "yes"); mediaframe.setAttribute("allow", "autoplay"); mediaframe.setAttribute("playsinline", true); } else { mediaframe = document.getElementById("mediaframe"); } if (mediatype == "stmedia") { embedlink = "https://boost3d.net/frameembed?eid=" + eid; } if (mediatype == "360 IMAGE") { embedlink = "https://boost3d.net/360imageembed?eid=" + mediafile; } mediaframe.setAttribute('src', embedlink); document.getElementById('mediaholder').appendChild(mediaframe); document.getElementById('mediaTitle').innerHTML = mediatitle; if (typeof gainNode !== 'undefined') { if (os != "iOS" && os != "Mac OS"){ gainNode.gain.setTargetAtTime(0.1, bgcontext.currentTime, 1); gainNode2.gain.setTargetAtTime(0.8, bgcontext.currentTime, 0.5); } } $('#popupframe').addClass('showing').removeClass('hidden'); $('#mediaholder').addClass('showing').removeClass('hidden'); medialistened.push(to); // Move successful. } } } function videoplay (from, to) { if (typeof vArray !== 'undefined') { var videosweeps = vArray; } var isVideoListened = videolistened.includes(to); if (!isVideoListened) { var isVideoPresent = vArray.includes(to); if (isVideoPresent) { console.log("Video Started"); var sweepPos = vArray.indexOf(to); var videofile = vArray[sweepPos + 1]; embedlink = videofile; var videotitle = vArray[sweepPos + 2]; var videomute = vArray[sweepPos + 3]; var tsovid = vArray[sweepPos + 4]; if (annyang) { if (os != "Mac OS" && os != "iOS" && os != 'Android' && voiceControl == "1"){ annyang.pause(); } } if (!document.getElementById("mediaframe")) { mediaframe = document.createElement('iframe'); mediaframe.setAttribute('id', 'mediaframe'); mediaframe.setAttribute('width', '100%'); mediaframe.setAttribute('height', '100%'); mediaframe.setAttribute("scrolling", "yes"); mediaframe.setAttribute("allow", "autoplay"); mediaframe.setAttribute("playsinline", true); } else { mediaframe = document.getElementById("mediaframe"); } if (tsovid == "yes"){ if (videomute == "yes"){ mediaframe.setAttribute('src', "https://boost3d.net/360videoembed?eid=" + embedlink + "&muted=true"); mediaframe.muted = true; } else { mediaframe.setAttribute('src', "https://boost3d.net/360videoembed?eid=" + embedlink); } } else { if (videomute == "yes"){ mediaframe.setAttribute('src', "https://boost3d.net/videoembed?embedurl=" + embedlink + "&muted=true"); mediaframe.muted = true; if (os != "iOS" && os != "Mac OS"){ gainNode2.gain.setValueAtTime(0.8, bgcontext.currentTime, 0.6); } } else { mediaframe.setAttribute('src', "https://boost3d.net/videoembed?embedurl=" + embedlink); //if (os != "iOS" && os != "Mac OS"){ //gainNode3.gain.setValueAtTime(0.8, bgcontext.currentTime, 0.6); //} } } if (typeof gainNode !== 'undefined') { if (os != "iOS" && os != "Mac OS"){ gainNode.gain.setTargetAtTime(0.1, bgcontext.currentTime, 1); } } document.getElementById('mediaholder').appendChild(mediaframe); document.getElementById('mediaTitle').innerHTML = videotitle; $('#popupframe').addClass('showing').removeClass('hidden'); $('#mediaholder').addClass('showing').removeClass('hidden'); videolistened.push(to); // Move successful. } } } function avideoplay (from, to) { if (typeof noSign !== 'undefined') { if (noSign == false){ if (typeof avArray !== 'undefined') { var avideosweeps = avArray; var isaVideoListened = aVideolistened.includes(to); if (!isaVideoListened) { var isaVideoPresent = avArray.includes(to); if (isaVideoPresent) { console.log("Video Started"); var sweepPos = avArray.indexOf(to); var avideofile = avArray[sweepPos + 1]; embedlink = avideofile; var avideotitle = avArray[sweepPos + 2]; var avideomute = avArray[sweepPos + 3]; accessvideoframe = document.createElement('video'); accessvideoframe.setAttribute('id', 'accessvideoframe'); accessvideoframe.setAttribute('width', '100%'); accessvideoframe.setAttribute('height', '100%'); accessvideoframe.setAttribute("controls", false); accessvideoframe.crossOrigin = "anonymous" accessvideoframe.setAttribute('src', embedlink); accessvideoframe.setAttribute("type", "video/mp4"); accessvideoframe.setAttribute("playsinline", ""); accessvideoframe.muted = true; accessvideoframe.play(); document.getElementById('accessmediaholder').appendChild(accessvideoframe); document.getElementById('accessmediaTitle').innerHTML = avideotitle; $('#accesspopupframe').addClass('showing').removeClass('hidden'); $('#accessmediaholder').addClass('showing').removeClass('hidden'); aVideolistened.push(to); // Move successful. } } } } } } } window.addEventListener('DOMContentLoaded', (event) => { recordButton = document.getElementById('record'); linkButton = document.getElementById("linkAudio"); hPara = document.getElementById("hPara"); list = document.getElementById('recordings'); //webkitURL is deprecated but nevertheless URL = window.URL || window.webkitURL; var gumStream; //stream from getUserMedia() var recorder; //WebAudioRecorder object var input; //MediaStreamAudioSourceNode we'll be recording var encodingType; //holds selected encoding for resulting audio (file) encodeAfterRecord = true; // when to encode // shim for AudioContext when it's not avb. var encodingTypeSelect = "mp3"; if(recordButton) { linkButton.getAttribute('hidden'); linkButton.removeAttribute('hidden'); linkButton.addEventListener("click", insertAudioLink); recordButton.getAttribute('hidden'); recordButton.removeAttribute('hidden'); recordButton.addEventListener("click", startRecording); } }); function insertAudioLink() { document.getElementById("audioLinkHolder").removeAttribute('hidden'); linkButton.setAttribute('hidden', true); recordButton.setAttribute('hidden', true); hPara.setAttribute("hidden", true); document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("audioLinkSubmit").addEventListener("click", linkUpload); } function linkUpload() { files = document.getElementById('audioLink').files; for (let i = 0; i < files.length; i++) { let file = files[i] fetch(`https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/blobhandle.php`, {method:"POST", body:file}) .then(response => { if (response.ok) return response; console.log("Audio Handled in Memory"); }) .then(response => { var blobData = new FormData(); blobData.append('dirpath', document.getElementById('directoryName').value); blobData.append('editmodel', document.getElementById('editmodel').value); blobData.append('version', document.getElementById('version').value); var blobrequest = new XMLHttpRequest(); blobrequest.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/upload.php'); blobrequest.send(blobData); console.log("Audio Uploaded"); blobrequest.onreadystatechange = function(){ if (blobrequest.readyState === 4){ if (blobrequest.status === 200){ var formData = new FormData(); formData.append('dirpath', document.getElementById('directoryName').value); formData.append('editmodel', document.getElementById('editmodel').value); formData.append('version', document.getElementById('version').value); formData.append('title', document.getElementById('title').value); formData.append('subSelect', document.getElementById('subSelect').value); formData.append('audioSelect', document.getElementById('audioSelect').value); formData.append('voiceControl', document.getElementById('voiceControl').value); formData.append('sweep', window.sweep); formData.append('rotation', JSON.stringify(rotation)); var checkBox = document.getElementById('requirebutton'); formData.append('button', document.getElementById('buttonValue').value); formData.append('note', ""); var request = new XMLHttpRequest(); request.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/dbupdate.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function(){ if (request.readyState === 4){ if (request.status === 200){ console.log("Database Updated"); $(".ssMsg").load("https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); document.getElementById('audioLink').value = ''; linkButton.removeAttribute('hidden'); recordButton.removeAttribute('hidden'); hPara.removeAttribute('hidden'); document.getElementById("audioLinkHolder").setAttribute('hidden', true); var refreshpoints = "https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/currentpoints.php?model=" + editmodel + "&version=" + version; setTimeout(function(){ $(".existingRow").load(refreshpoints); }, 2000); console.log("Links Refreshed"); } } }; } } }; }); } } function startRecording() { linkButton.setAttribute("hidden", true); hPara.setAttribute("hidden", true); document.getElementById("ssMsg").setAttribute("hidden", true); recordButton.innerText = 'Stop'; recordButton.removeEventListener("click", startRecording); recordButton.addEventListener("click", stopRecording); var constraints = { audio: {echoCancellation: true, noiseSurpression:true}, video:false }; navigator.mediaDevices.getUserMedia(constraints).then(function(stream) { var AudioContext = window.AudioContext || window.webkitAudioContext; var audioContext; //new audio context to help us record if (os === "iOS" || os === "Mac OS"){ context = new AudioContext({sampleRate: 48000}); } else { context = new AudioContext({sampleRate: 44100}); } var timeLeft = 90; //assign to gumStream for later use gumStream = stream; /* use the stream */ input = context.createMediaStreamSource(gumStream); //stop the input from playing back through the speakers //input.connect(audioContext.destination) //get the encoding encodingType = encodingTypeSelect.value; //disable the encoding selector encodingTypeSelect.disabled = true; recorder = new WebAudioRecorder(input, { workerDir: "js/", // must end with slash encoding: encodingType, numChannels:2, //2 is the default, mp3 encoding supports only 2 onEncoderLoading: function(recorder, encoding) { //show "loading encoder..." display console.log("Loading "+encoding+" encoder..."); }, onEncoderLoaded: function(recorder, encoding) { // hide "loading encoder..." display console.log("encoder loaded"); } }); if (os === "iOS" || os === "Mac OS"){ var br = 96; } else { var br = 192; } recorder.setOptions({ timeLimit: 90, encodeAfterRecord: encodeAfterRecord, ogg: { quality: 0.5 }, mp3: { bitRate: br } }); recorder.startRecording(); console.error("Recording started"); var timeLeft = 90; clockelem = document.getElementById('countdown'); timerId = setInterval(countdown, 1000); clockelem.getAttribute("hidden"); clockelem.removeAttribute("hidden"); function countdown() { if (timeLeft == -1) { clearTimeout(timerId); timerId = null; recordButton.click(); clockelem.setAttribute("hidden", true); } else { if (recorder.state === 'inactive'){ clearTimeout(timerId); clockelem.setAttribute("hidden", true); timerId=null; } else { clockelem.innerHTML = timeLeft + ' seconds remaining'; timeLeft--; } } } recorder.onComplete = function(recorder, blob) { console.log("encoding complete"); const blobUrl = URL.createObjectURL(blob); const li = document.createElement('li'); li.className = "inputListItem"; const audio1 = document.createElement('audio'); const upload = document.createElement('BUTTON'); upload.className = "inputListButton"; const deleteButton = document.createElement('BUTTON'); deleteButton.className = "inputListButton"; upload.innerHTML = "UPLOAD"; deleteButton.innerHTML = "DISCARD"; audio1.setAttribute('src', blobUrl); audio1.setAttribute('controls', 'controls'); li.appendChild(audio1); li.appendChild(upload); li.appendChild(deleteButton); list.appendChild(li); deleteButton.addEventListener('click', async () => { tbnavDiv.setAttribute('hidden', true); upload.setAttribute('hidden', true); deleteButton.setAttribute('hidden', true); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); document.getElementById('audioLink').value = ''; linkButton.removeAttribute('hidden'); recordButton.removeAttribute('hidden'); hPara.removeAttribute('hidden'); document.getElementById("audioLinkHolder").setAttribute('hidden', true); audio1.setAttribute('hidden', true); clearTimeout(timerId); timerId = null; }); upload.addEventListener('click', async () => { tbnavDiv.setAttribute('hidden', true); upload.setAttribute('hidden', true); deleteButton.setAttribute('hidden', true); recordButton.getAttribute('hidden'); recordButton.removeAttribute('hidden'); audio1.setAttribute('hidden', true); fetch(`https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/blobhandle.php`, {method:"POST", body:blob}) .then(response => { if (response.ok) return response; console.log("Audio Handled in Memory"); }) .then(response => { var blobData = new FormData(); blobData.append('dirpath', document.getElementById('directoryName').value); blobData.append('editmodel', document.getElementById('editmodel').value); blobData.append('version', document.getElementById('version').value); var blobrequest = new XMLHttpRequest(); blobrequest.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/upload.php'); blobrequest.send(blobData); console.log("Audio Uploaded"); blobrequest.onreadystatechange = function(){ if (blobrequest.readyState === 4){ if (blobrequest.status === 200){ var formData = new FormData(); formData.append('dirpath', document.getElementById('directoryName').value); formData.append('editmodel', document.getElementById('editmodel').value); formData.append('version', document.getElementById('version').value); formData.append('title', document.getElementById('title').value); formData.append('subSelect', document.getElementById('subSelect').value); formData.append('audioSelect', document.getElementById('audioSelect').value); formData.append('voiceControl', document.getElementById('voiceControl').value); formData.append('sweep', window.sweep); formData.append('rotation', JSON.stringify(rotation)); var checkBox = document.getElementById('requirebutton'); formData.append('button', document.getElementById('buttonValue').value); formData.append('note', ""); var request = new XMLHttpRequest(); request.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/dbupdate.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function(){ if (request.readyState === 4){ if (request.status === 200){ console.log("Database Updated"); $(".ssMsg").load("https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); document.getElementsByTagName("li").innerHTML = ""; document.getElementById("buttonValue").value = ''; linkButton.removeAttribute('hidden'); hPara.removeAttribute('hidden'); gumStream.getTracks().forEach(function(track) { track.stop(); }); var refreshpoints = "https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/currentpoints.php?model=" + editmodel + "&version=" + version; setTimeout(function(){ $(".existingRow").load(refreshpoints); }, 2000); console.log("Links Refreshed"); clearTimeout(timerId); timerId=null; } } }; } } }; }); }); }; console.log("Encoding complete"); }); } function renderError(message) { const main = document.querySelector('main'); main.innerHTML = `

${message}

`; } function renderError(message) { const main = document.querySelector('main'); main.innerHTML = `

${message}

`; } function stopRecording() { recordButton.removeEventListener("click", stopRecording); recordButton.addEventListener("click", startRecording); recordButton.innerText = 'Record'; recordButton.setAttribute("hidden", true); clockelem.setAttribute("hidden", true); tbnavDiv.getAttribute('hidden'); tbnavDiv.removeAttribute('hidden'); console.log("Stop Recording Request Detected"); //stop microphone access gumStream.getAudioTracks()[0].stop(); //disable the stop button //stopButton.disabled = true; //recordButton.disabled = false; //tell the recorder to finish the recording (stop recording + encode the recorded audio) recorder.finishRecording(); console.log('Recording stopped'); } $(document).on('click', "#shareLink", function () { var model = $(this).attr('data-mod'); var version = $(this).attr('data-ver'); bPopup = $('#linkPopup').bPopup({ contentContainer:'.linkContent', loadUrl: "https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/sharelink.php?model=" + model + "&version=" + version //Uses jQuery.load() }); $(document).on('click', "#linkPopup .close", function () { bPopup.close(); }); }); $(document).on('click', "#shareEmbed", function () { var model = $(this).attr('data-mod'); var version = $(this).attr('data-ver'); bPopup2 = $('#embedPopup').bPopup({ contentContainer:'.embedContent', loadUrl: "https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/shareembed.php?model=" + model + "&version=" + version //Uses jQuery.load() }); $(document).on('click', "#embedPopup .close", function () { bPopup2.close(); }); }); $(document).on('click', "#linkVideo", function () { document.getElementById("linkVideo").setAttribute("hidden", true); document.getElementById("vhPara").setAttribute("hidden", true); vidtbnavDiv.removeAttribute('hidden'); $('#vidtbnavDiv').addClass("linkclass"); document.getElementById("vidLinkHolder").removeAttribute("hidden"); document.getElementById("linkVideoSubmit").removeAttribute("hidden"); document.getElementById("360VideoHolder").removeAttribute("hidden"); document.getElementById("vidLinkSubmit").removeAttribute("hidden"); document.getElementById("vrecord").setAttribute("hidden", true); document.getElementById("linkVideoSubmit").addEventListener('click', async () => { var vulformData = new FormData(); vulformData.append('editmodel', document.getElementById('editmodel').value); vulformData.append('version', document.getElementById('version').value); vulformData.append('title', document.getElementById('title').value); vulformData.append('video_title', document.getElementById('vidtitle').value); vulformData.append('video', "https://cors-anywhere.herokuapp.com/" + document.getElementById('vidLink').value); var checkMute = document.getElementById("muteVideo").checked; if (checkMute == true){ vulformData.append('mutevid', "yes"); } else { vulformData.append('mutevid', "no"); } var is360 = document.getElementById("360Video").checked; if (is360 == true){ vulformData.append('360vid', "yes"); } else { vulformData.append('360vid', "no"); } var accessVid = document.getElementById("accessVideo").checked; if (accessVid == true){ vulformData.append('accessvid', "yes"); } else { vulformData.append('accessvid', "no"); } vulformData.append('sweep', window.sweep); vulformData.append('rotation', JSON.stringify(rotation)); vulformData.append('button', document.getElementById('vidbuttonValue').value); var vulrequest = new XMLHttpRequest(); vulrequest.upload.addEventListener("progress", function(evt){ if (evt.lengthComputable) { var percentComplete = evt.loaded / evt.total; //Do something with upload progress console.log(percentComplete); } }, false); vulrequest.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/vidlinkupload.php'); vulrequest.setRequestHeader("Cache-Control", "no-cache"); vulrequest.send(vulformData); vulrequest.onreadystatechange = function(){ if (vulrequest.readyState === 4){ if (vulrequest.status === 200){ console.log("Database Updated"); $(".vidssMsg").load("https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/smessage.php"); document.getElementById("vidssMsg").getAttribute("hidden"); document.getElementById("vidssMsg").removeAttribute("hidden"); document.getElementsByTagName("li").innerHTML = ""; document.getElementById("vidbuttonValue").value = ''; document.getElementById('vidLink').value = ''; document.getElementById('vidtitle').value = ''; document.getElementById('muteVideo').checked = false; document.getElementById('360Video').checked = false; document.getElementById("vrecord").removeAttribute("hidden"); document.getElementById("vhPara").removeAttribute("hidden"); document.getElementById("linkVideo").removeAttribute("hidden"); document.getElementById("vidtbnavDiv").setAttribute("hidden", true); document.getElementById("linkVideoSubmit").setAttribute("hidden", true); var editmodel = document.getElementById('editmodel').value; var version = document.getElementById('version').value; var refreshvidpoints = "https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/currentvidpoints.php?model=" + editmodel + "&version=" + version; var refreshavidpoints = "https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/currentavidpoints.php?model=" + editmodel + "&version=" + version; setTimeout(function(){ $("#existingVidRow").load(refreshvidpoints); $("#existingaVidRow").load(refreshavidpoints); }, 2000); console.log("Links Refreshed"); document.getElementById("vidssMsg").setAttribute("hidden", true); } } }; }); }); $(document).on('click', "#copyShare", function () { var copyText = document.getElementById("myShareLink"); copyText.select(); copyText.setSelectionRange(0, 99999); document.execCommand("copy"); alert("Link Copied"); bPopup.close(); }); $(document).on('click', "#embedCopyShare", function () { var copyText = document.getElementById("myShareEmbed"); copyText.select(); copyText.setSelectionRange(0, 99999); document.execCommand("copy"); alert("Embed Code Copied"); bPopup2.close(); }); $(document).on('click', ".deleteExisting", function () { var delSweepId = ($(this).attr('data-swe')); var delModelId = ($(this).attr('data-mod')); var delVersionId = ($(this).attr('data-ver')); var delData = new FormData(); delData.append('sweep', delSweepId); delData.append('model', delModelId); delData.append('version', delVersionId); var delrequest = new XMLHttpRequest(); delrequest.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/audiosweepdelete.php'); delrequest.send(delData); delrequest.onreadystatechange = function(){ if (delrequest.readyState === 4){ if (delrequest.status === 200){ $(".ssMsg").load("https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/smessage.php"); var refreshpoints = "https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/currentpoints.php?model=" + delModelId + "&version=" + delVersionId; setTimeout(function(){ $(".existingRow").load(refreshpoints); }, 2000); } } }; }); $(document).on('click', ".deleteExistingMedia", function () { var delSweepId = ($(this).attr('data-swe')); var delModelId = ($(this).attr('data-mod')); var delVersionId = ($(this).attr('data-ver')); var delData = new FormData(); delData.append('sweep', delSweepId); delData.append('model', delModelId); delData.append('version', delVersionId); var delrequest = new XMLHttpRequest(); delrequest.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/mediasweepdelete.php'); delrequest.send(delData); delrequest.onreadystatechange = function(){ if (delrequest.readyState === 4){ if (delrequest.status === 200){ $(".ssMsg").load("https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/smessage.php"); var refreshpoints = "https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/currentmediapoints.php?model=" + delModelId + "&version=" + delVersionId; setTimeout(function(){ $("#existingMediaRow").load(refreshpoints); }, 2000); } } }; }); $(document).on('click', ".deleteExistingVid", function () { var delSweepId = ($(this).attr('data-swe')); var delModelId = ($(this).attr('data-mod')); var delVersionId = ($(this).attr('data-ver')); var delData = new FormData(); delData.append('sweep', delSweepId); delData.append('model', delModelId); delData.append('version', delVersionId); var delrequest = new XMLHttpRequest(); delrequest.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/videosweepdelete.php'); delrequest.send(delData); delrequest.onreadystatechange = function(){ if (delrequest.readyState === 4){ if (delrequest.status === 200){ $(".ssMsg").load("https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/smessage.php"); var refreshpoints = "https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/currentvidpoints.php?model=" + delModelId + "&version=" + delVersionId; setTimeout(function(){ $("#existingVidRow").load(refreshpoints); }, 2000); } } }; }); $(document).on('click', ".deleteExistingaVid", function () { var delSweepId = ($(this).attr('data-swe')); var delModelId = ($(this).attr('data-mod')); var delVersionId = ($(this).attr('data-ver')); var delData = new FormData(); delData.append('sweep', delSweepId); delData.append('model', delModelId); delData.append('version', delVersionId); var delrequest = new XMLHttpRequest(); delrequest.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/avideosweepdelete.php'); delrequest.send(delData); delrequest.onreadystatechange = function(){ if (delrequest.readyState === 4){ if (delrequest.status === 200){ $(".ssMsg").load("https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/smessage.php"); var refreshpoints = "https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/currentavidpoints.php?model=" + delModelId + "&version=" + delVersionId; setTimeout(function(){ $("#existingVidRow").load(refreshpoints); }, 2000); } } }; }); $(document).on('click', "#bgMusicSubmit", function () { var bgformData = new FormData(); bgformData.append('audio', document.getElementById('bgMusicLink').value); bgformData.append('model', document.getElementById('editmodel').value); bgformData.append('version', document.getElementById('version').value); var bgrequest = new XMLHttpRequest(); bgrequest.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/bginsert.php'); bgrequest.setRequestHeader("Cache-Control", "no-cache"); bgrequest.send(bgformData); bgrequest.onreadystatechange = function(){ if (bgrequest.readyState === 4){ if (bgrequest.status === 200){ console.log("Database Updated"); $(".bgssMsg").load("https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/smessage.php"); document.getElementById("bgssMsg").getAttribute("hidden"); document.getElementById("bgssMsg").removeAttribute("hidden"); document.getElementById('bgMusicLink').value = ''; var refreshpoints = "https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/currentbgmusic.php?model=" + editmodel + "&version=" + version; setTimeout(function(){ $("#existingBgRow").load(refreshpoints); }, 2000); } } }; }); $(document).on('click', "#mmSubmit", function () { var mmformData = new FormData(); mmformData.append('mmLink', document.getElementById('mmLink').value); mmformData.append('mmTitle', document.getElementById('mmTitle').value); var tsoimg = document.getElementById("360Image").checked; if (tsoimg == true){ mmformData.append('mmType', "360 IMAGE"); } else { mmformData.append('mmType', "stmedia"); } mmformData.append('mmButton', document.getElementById('mmButton').value); mmformData.append('model', document.getElementById('editmodel').value); mmformData.append('version', document.getElementById('version').value); mmformData.append('title', document.getElementById('title').value); mmformData.append('sweep', window.sweep); mmformData.append('rotation', JSON.stringify(rotation)); var mmrequest = new XMLHttpRequest(); mmrequest.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/eminsert.php'); mmrequest.setRequestHeader("Cache-Control", "no-cache"); mmrequest.send(mmformData); mmrequest.onreadystatechange = function(){ if (mmrequest.readyState === 4){ if (mmrequest.status === 200){ console.log("Database Updated"); $(".mmssMsg").load("https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/smessage.php"); document.getElementById("mmssMsg").getAttribute("hidden"); document.getElementById("mmssMsg").removeAttribute("hidden"); document.getElementById('mmTitle').value = ''; document.getElementById('mmButton').value = ''; var refreshpoints = "https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/currentmediapoints.php?model=" + editmodel + "&version=" + version; setTimeout(function(){ $("#existingMediaRow").load(refreshpoints); }, 2000); } } }; }); $(document).on('click', "#themeSubmit", function () { var themeformData = new FormData(); themeformData.append('model', document.getElementById('editmodel').value); themeformData.append('version', document.getElementById('version').value); themeformData.append('title', document.getElementById('mytitle').value); themeformData.append('logo', document.getElementById("logo").value); themeformData.append('embedWhiteList', document.getElementById("embedWhiteList").value); var vcInput = document.getElementById("voiceControl").checked; if (vcInput == true){ themeformData.append('voiceControl', "1"); } else { themeformData.append('voiceControl', "0"); } var tdInput = document.getElementById("tagsdisable").checked; if (tdInput == true){ themeformData.append('tagsdisable', "1"); } else { themeformData.append('tagsdisable', "0"); } var slInput = document.getElementById("selflimit").checked; if (slInput == true){ themeformData.append('selflimit', "1"); } else { themeformData.append('selflimit', "0"); } themeformData.append('cssb', document.getElementById("cssBackground").value); themeformData.append('cssf', document.getElementById("cssForeground").value); themeformData.append('csst', document.getElementById("cssTxt").value); var themerequest = new XMLHttpRequest(); themerequest.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/dbupdatelogo.php'); themerequest.setRequestHeader("Cache-Control", "no-cache"); themerequest.send(themeformData); themerequest.onreadystatechange = function(){ if (themerequest.readyState === 4){ if (themerequest.status === 200){ console.log("Database Updated"); $(".themessMsg").load("https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/smessage.php"); document.getElementById("themessMsg").getAttribute("hidden"); document.getElementById("themessMsg").removeAttribute("hidden"); } } }; }); function closeaccessFrame () { $($("#accessvideoframe").parent()).empty(); $('#accesspopupframe').addClass('hidden').removeClass('showing'); } function closeFrame () { if (typeof gainNode2 !== 'undefined') { gainNode2.gain.setTargetAtTime(0.001, bgcontext.currentTime, 0.6); } if (typeof gainNode3 !== 'undefined') { gainNode3.gain.setTargetAtTime(0.001, bgcontext.currentTime, 0.6); } if ($($("#mediaframe"))) { document.getElementById("mediaframe").src = ""; } if ($($("#accessvideoframe"))) { $($("#accessvideoframe").parent()).empty(); $('#accesspopupframe').addClass('hidden').removeClass('showing'); } $('#mediaholder').addClass('hidden').removeClass('showing'); $('#popupframe').addClass('hidden').removeClass('showing'); if (typeof gainNode !== 'undefined') { gainNode.gain.setTargetAtTime(0.3, bgcontext.currentTime, 1); } if ($('#popupframe').hasClass('hidden')) { audio.pause(); } if (annyang) { if (os != "Mac OS" && os != "iOS" && os != "Android" && document.getElementById('voiceControl').value == "1"){ annyang.start(); } } } const vidRecordButton = document.querySelector('button#vidrecord'); if(vidRecordButton){ const mediaSource = new MediaSource(); mediaSource.addEventListener('sourceopen', handleSourceOpen, false); } let videoRecorder; let recordedBlobs; let sourceBuffer; const errorMsgElement = document.querySelector('span#errorMsg'); const recordedVideo = document.querySelector('video#recorded'); if(vidRecordButton){ vidRecordButton.addEventListener('click', () => { if (vidRecordButton.innerText === 'RECORD') { startVidRecording(); } else { if (vidRecordButton.innerText === 'STOP') { stopVidRecording(); } } }); } function buildBlob(recordedBlobs) { var blob = new Blob(recordedBlobs, {type: 'video/webm'}); var blobUrl = URL.createObjectURL(blob); const vidlist = document.getElementById('vidrecordings'); const li = document.createElement('li'); vidRecordButton.setAttribute('hidden', true); const vidUpload = document.createElement('BUTTON'); vidUpload.className = "inputListButton"; vidUpload.innerHTML = "UPLOAD"; const vidDeleteButton = document.createElement('BUTTON'); vidDeleteButton.className = "inputListButton"; vidDeleteButton.innerHTML = "DISCARD"; li.appendChild(vidUpload); li.appendChild(vidDeleteButton); vidlist.appendChild(li); vidDeleteButton.addEventListener('click', async () => { blob = null; vidtbnavDiv.setAttribute('hidden', true); vidUpload.setAttribute('hidden', true); vidDeleteButton.setAttribute('hidden', true); document.getElementById("getCam").getAttribute('hidden'); document.getElementById("getCam").removeAttribute('hidden'); document.getElementById("getScreen").getAttribute('hidden'); document.getElementById("getScreen").removeAttribute('hidden'); clearTimeout(vidtimerId); vidtimerId = null; }); vidUpload.addEventListener('click', async () => {; vidtbnavDiv.setAttribute('hidden', true); vidDeleteButton.setAttribute('hidden', true); vidUpload.innerText = 'UPLOADING'; fetch(`https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/blobhandle.php`, {method:"POST", body:blob}) .then(response => { if (response.ok) return response; console.log("Audio Handled in Memory"); }) .then(response => { var blobData = new FormData(); blobData.append('dirpath', document.getElementById('directoryName').value); blobData.append('editmodel', document.getElementById('editmodel').value); blobData.append('version', document.getElementById('version').value); blobData.append('blobUrl', blobUrl); var blobrequest = new XMLHttpRequest(); blobrequest.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/vidupload.php'); blobrequest.send(blobData); console.log("Video Uploaded"); blobrequest.onreadystatechange = function(){ if (blobrequest.readyState === 4){ if (blobrequest.status === 200){ vidUpload.setAttribute('hidden', true); vidRecordButton.getAttribute('hidden'); vidRecordButton.removeAttribute('hidden'); var formData = new FormData(); formData.append('dirpath', document.getElementById('directoryName').value); formData.append('editmodel', document.getElementById('editmodel').value); formData.append('version', document.getElementById('version').value); formData.append('title', document.getElementById('title').value); formData.append('video_title', document.getElementById('vidtitle').value); formData.append('subSelect', document.getElementById('subSelect').value); formData.append('videoSelect', document.getElementById('audioSelect').value); formData.append('voiceControl', document.getElementById('voiceControl').value); var checkMute = document.getElementById("muteVideo").checked; if (checkMute == true){ formData.append('mutevid', "yes"); } else { formData.append('mutevid', "no"); } var accessVid = document.getElementById("accessVideo").checked; if (accessVid == true){ formData.append('accessvid', "yes"); } else { formData.append('accessvid', "no"); } formData.append('sweep', window.sweep); formData.append('rotation', JSON.stringify(rotation)); var checkBox = document.getElementById('requirebutton'); formData.append('button', document.getElementById('vidbuttonValue').value); formData.append('note', ""); var request = new XMLHttpRequest(); request.upload.addEventListener("progress", function(evt){ if (evt.lengthComputable) { var percentComplete = evt.loaded / evt.total; console.log(percentComplete); } }, false); request.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/viddbupdate.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function(){ if (request.readyState === 4){ if (request.status === 200){ console.log("Database Updated"); $(".vidssMsg").load("https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/smessage.php"); document.getElementById("vidssMsg").getAttribute("hidden"); document.getElementById("vidssMsg").removeAttribute("hidden"); document.getElementsByTagName("li").innerHTML = ""; document.getElementById("vidbuttonValue").value = ''; document.getElementById('vidtitle').value = ''; document.getElementById("vrecord").removeAttribute("hidden"); document.getElementById("vhPara").removeAttribute("hidden"); document.getElementById("linkVideo").removeAttribute("hidden"); document.getElementById("gum").setAttribute("hidden", true); document.getElementById("getCam").setAttribute("hidden", true); document.getElementById("getScreen").setAttribute("hidden", true); document.getElementById("vidrecord").setAttribute("hidden", true); var editmodel = document.getElementById('editmodel').value; var version = document.getElementById('version').value; stream.getTracks().forEach(function(track) { track.stop(); }); var refreshvidpoints = "https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/currentvidpoints.php?model=" + editmodel + "&version=" + version; var refreshavidpoints = "https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/currentavidpoints.php?model=" + editmodel + "&version=" + version; setTimeout(function(){ $("#existingaVidRow").load(refreshavidpoints); $("#existingVidRow").load(refreshvidpoints); }, 2000); console.log("Links Refreshed"); vidRecordButton. disabled = false; vidRecordButton.innerText = "RECORD"; setTimeout(() => { }, 100); } } }; } } }; }); }); console.log("Encoding complete"); } function handleSourceOpen(event) { sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vp9"'); } function handleDataAvailable(event) { if (event.data && event.data.size > 0) { recordedBlobs.push(event.data); } } function startVidRecording() { vidRecordButton.innerText='STOP'; console.log("recording"); recordedBlobs = []; let options = {mimeType: 'video/webm; codecs=vp9'}; try { videoRecorder = new MediaRecorder(window.stream, options); } catch (e) { console.error('Exception while creating MediaRecorder:', e); errorMsgElement.innerHTML = `Exception while creating MediaRecorder: ${JSON.stringify(e)}`; return; } videoRecorder.onstop = (event) => { vidRecordButton.disabled = true; vidtbnavDiv.removeAttribute("hidden"); console.log('Recorder stopped: ', event); buildBlob(recordedBlobs); }; videoRecorder.ondataavailable = handleDataAvailable; videoRecorder.start(10); // collect 10ms of data var vidtimeLeft = 90; clockelem = document.getElementById('vidcountdown'); vidtimerId = setInterval(countdown, 1000); clockelem.getAttribute("hidden"); clockelem.removeAttribute("hidden"); function countdown() { if (vidtimeLeft == -1) { clearTimeout(vidtimerId); vidtimerId = null; vidRecordButton.click(); clockelem.setAttribute("hidden", true);; } else { if (videoRecorder.state === 'inactive'){ clearTimeout(vidtimerId); clockelem.setAttribute("hidden", true); vidtimerId=null; } else { clockelem.innerHTML = vidtimeLeft + ' seconds remaining'; vidtimeLeft--; } } } console.log('MediaRecorder started', videoRecorder); } function stopVidRecording() { videoRecorder.stop(); } function handleSuccess(stream) { vidRecordButton.disabled = false; window.stream = stream; const gumVideo = document.querySelector('video#gum'); gumVideo.srcObject = stream; gumVideo.muted = true; gumVideo.play(); } async function init(constraints) { try { vidRecordButton.textContext='RECORD'; vidRecordButton.innerText='RECORD'; if (recType === "camera") { stream = await navigator.mediaDevices.getUserMedia(constraints); } if (recType === "screen") { stream = await navigator.mediaDevices.getDisplayMedia(screenconstraints); } handleSuccess(stream); } catch (e) { console.error('navigator.getUserMedia error:', e); errorMsgElement.innerHTML = `navigator.getUserMedia error:${e.toString()}`; } } if (document.querySelector('#getCam')) { document.querySelector('#getCam').addEventListener('click', async () => { document.getElementById('getCam').setAttribute ("hidden", true); document.getElementById('getScreen').setAttribute ("hidden", true); recType = "camera"; vidRecordButton.removeAttribute("hidden"); constraints = { audio: { echoCancellation: true, noiseSurpression:true }, video: { width: 1280, height: 720 } }; await init(constraints); }); document.querySelector('#getScreen').addEventListener('click', async () => { document.getElementById('getCam').setAttribute ("hidden", true); document.getElementById('getScreen').setAttribute ("hidden", true); recType = "screen"; vidRecordButton.removeAttribute("hidden"); screenconstraints = { cursor: { exact: "none" }, video: true, audio: { echoCancellation: true, noiseSurpression:true } }; await init(screenconstraints); }); } $('.fullscreenreplace').on('click', function(e) { var doc = window.document; var docEl = doc.documentElement; var requestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen || docEl.webkitRequestFullScreen || docEl.msRequestFullscreen; var cancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen || doc.msExitFullscreen; if (!doc.fullscreenElement && !doc.mozFullScreenElement && !doc.webkitFullscreenElement && !doc.msFullscreenElement) { requestFullScreen.call(docEl); } else { cancelFullScreen.call(doc); } }); $('.fullscreenreplacebottom').on('click', function(e) { var doc = window.document; var docEl = doc.documentElement; var requestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen || docEl.webkitRequestFullScreen || docEl.msRequestFullscreen; var cancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen || doc.msExitFullscreen; if (!doc.fullscreenElement && !doc.mozFullScreenElement && !doc.webkitFullscreenElement && !doc.msFullscreenElement) { requestFullScreen.call(docEl); } else { cancelFullScreen.call(doc); } }); $('i.fas.fa-envelope').click(function() { var title = document.title; location.href = 'mailto:?subject=' + encodeURIComponent(title) + '&body=' + encodeURIComponent(title + '\n\n') + encodeURIComponent(window.location.href) + '%26utm_source%3D3'; }); $('i.fab.fa-pinterest-p').click(function() { var title = document.title; var vars = {}; window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) { vars[key] = value; }); var thumb = 'https://my.matterport.com/api/v1/player/models/' + vars.m + '/thumb'; window.open('https://www.pinterest.com/pin/create/link/?url=' + encodeURIComponent(window.location.href) + '%26utm_source%3D5' + '&description=' + encodeURIComponent(title) + '&media=' + encodeURIComponent(thumb), 'sharer', 'toolbar=0,status=0,width=640,height=480'); }); $('i.fab.fa-linkedin-in').click(function() { window.open('https://www.linkedin.com/sharing/share-offsite/?url=' + encodeURIComponent(window.location.href) + '%26utm_source%3D6', 'sharer', 'toolbar=0,status=0,width=640,height=480'); }); $('i.fab.fa-twitter').click(function() { var title = document.title; window.open('https://twitter.com/intent/tweet?text=Explore%20' + encodeURIComponent(title) + ' at ' + encodeURIComponent(window.location.href) + '%26utm_source%3D2', 'sharer', 'toolbar=0,status=0,width=640,height=480'); }); $('i.fab.fa-facebook-f').click(function() { window.open('https://www.facebook.com/sharer.php?u=' + encodeURIComponent(window.location.href) + '%26utm_source%3D1', 'sharer', 'toolbar=0,status=0,width=640,height=480'); }); $('i.fas.fa-link').click(function() { var el = document.createElement('textarea'); el.value = window.location.href; el.setAttribute('readonly', ''); el.style.position = 'absolute'; el.style.left = '-9999px'; document.body.appendChild(el); el.select(); document.execCommand('copy'); document.body.removeChild(el); $('#share-slider div').attr('data-balloon', 'Copied!'); setTimeout(function() { $('#share-slider div').attr('data-balloon', 'Copy URL'); }, 3000); }); $('#vrecord').click(function() { $('#getCam').removeAttr("hidden"); $('#getScreen').removeAttr("hidden"); document.getElementById("linkVideo").setAttribute("hidden", true); document.getElementById("vrecord").setAttribute("hidden", true); document.getElementById("vhPara").setAttribute("hidden", true); $('#gum').removeAttr("hidden"); }); $('.sharereplace').click(function() { if ($('#share-slider').hasClass('isOpen')) { $('#share-slider').removeClass('isOpen'); $('#share-button').removeClass('hidetooltip'); } else { $('#share-slider').addClass('isOpen'); $('#share-button').addClass('hidetooltip'); } }); $('.sharereplacebottom').click(function() { if ($('#share-slider').hasClass('isOpen')) { $('#share-slider').removeClass('isOpen'); $('#share-button').removeClass('hidetooltip'); } else { $('#share-slider').addClass('isOpen'); $('#share-button').addClass('hidetooltip'); } }); $('#menutitlecurrent').click(function() { }); $('#bgControlPage').click(function() { $(".controlWrapper").removeAttr("hidden"); document.getElementById("audiocontrols").setAttribute("hidden", true); document.getElementById("mmControls").setAttribute("hidden", true); document.getElementById("videocontrols").setAttribute("hidden", true); document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("mmssMsg").setAttribute("hidden", true); document.getElementById("vidssMsg").setAttribute("hidden", true); $("#bgMusic").removeAttr("hidden"); }); $('#currentmediapages').click(function() { $("#tbvflex").removeAttr("hidden"); }); $('#audioControlPage').click(function() { $(".controlWrapper").removeAttr("hidden"); document.getElementById("bgMusic").setAttribute("hidden", true); document.getElementById("mmControls").setAttribute("hidden", true); document.getElementById("videocontrols").setAttribute("hidden", true); document.getElementById("mytheme").setAttribute("hidden", true); document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("mmssMsg").setAttribute("hidden", true); document.getElementById("vidssMsg").setAttribute("hidden", true); $("#audiocontrols").removeAttr("hidden"); activeControl = $("#audiocontrols"); }); $('#mediaControlPage').click(function() { $(".controlWrapper").removeAttr("hidden"); document.getElementById("bgMusic").setAttribute("hidden", true); document.getElementById("audiocontrols").setAttribute("hidden", true); document.getElementById("videocontrols").setAttribute("hidden", true); document.getElementById("mytheme").setAttribute("hidden", true); document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("mmssMsg").setAttribute("hidden", true); document.getElementById("vidssMsg").setAttribute("hidden", true); $("#mmControls").removeAttr("hidden") activeControl = $("#mmControls"); }); $('#themeControlPage').click(function() { $(".controlWrapper").removeAttr("hidden"); document.getElementById("bgMusic").setAttribute("hidden", true); document.getElementById("audiocontrols").setAttribute("hidden", true); document.getElementById("videocontrols").setAttribute("hidden", true); document.getElementById("mmControls").setAttribute("hidden", true); document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("mmssMsg").setAttribute("hidden", true); document.getElementById("vidssMsg").setAttribute("hidden", true); $("#mytheme").removeAttr("hidden") activeControl = $("#mytheme"); }); $('#videoControlPage').click(function() { $(".controlWrapper").removeAttr("hidden"); document.getElementById("bgMusic").setAttribute("hidden", true); document.getElementById("audiocontrols").setAttribute("hidden", true); document.getElementById("mytheme").setAttribute("hidden", true); document.getElementById("mmControls").setAttribute("hidden", true); document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("mmssMsg").setAttribute("hidden", true); document.getElementById("vidssMsg").setAttribute("hidden", true); $("#videocontrols").removeAttr("hidden") activeControl = $("#videocontrols"); }); $('#controlsClose').click(function() { document.getElementById("bgMusic").setAttribute("hidden", true); document.getElementById("audiocontrols").setAttribute("hidden", true); document.getElementById("mmControls").setAttribute("hidden", true); document.getElementById("mytheme").setAttribute("hidden", true); document.getElementById("videocontrols").setAttribute("hidden", true); document.getElementById("controlWrapper").setAttribute("hidden", true); document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("mmssMsg").setAttribute("hidden", true); document.getElementById("vidssMsg").setAttribute("hidden", true); }); $('#existingClose').click(function() { document.getElementById("tbvflex").setAttribute("hidden", true); }); $(".accessonoffswitch").on('change', function() { if ($('.accessonoffswitch-checkbox').is(':checked')) { noSign = false; document.getElementById("accesspopupframe").removeAttribute("hidden"); } else { noSign = "true"; document.getElementById("accesspopupframe").setAttribute("hidden", true); } }) window.bgSeconds = 0; setInterval(setTime, 1000); function setTime() { ++window.bgSeconds; } $(".onoffswitch").on('change', function() { if ($('.onoffswitch-checkbox').is(':checked')) { audioBG.play(); console.log("BG Playing"); } else { if (typeof ga !== 'undefined') { ga('send', 'event', '' + "BG MUSIC", "STOP", window.bgSeconds); } window.totalSeconds = 0; setInterval(setTime, 1000); function setTime() { ++window.totalSeconds; } audioBG.pause(); console.log("BG Paused"); } }) window.onload = function exit( status ) { if (typeof limitSelf !== 'undefined') { if (user === 'null') { if ( window.location === window.parent.location && limitSelf === "1") { alert("THIS VIRTUAL TOUR CANNOT BE VIEWED DIRECTLY"); var i; if (typeof status === 'string') { alert(status); } window.addEventListener('error', function (e) {e.preventDefault();e.stopPropagation();}, false); var handlers = [ 'copy', 'cut', 'paste', 'beforeunload', 'blur', 'change', 'click', 'contextmenu', 'dblclick', 'focus', 'keydown', 'keypress', 'keyup', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'resize', 'scroll', 'DOMNodeInserted', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument', 'DOMNodeInsertedIntoDocument', 'DOMAttrModified', 'DOMCharacterDataModified', 'DOMElementNameChanged', 'DOMAttributeNameChanged', 'DOMActivate', 'DOMFocusIn', 'DOMFocusOut', 'online', 'offline', 'textInput', 'abort', 'close', 'dragdrop', 'load', 'paint', 'reset', 'select', 'submit', 'unload' ]; function stopPropagation (e) { e.stopPropagation(); // e.preventDefault(); // Stop for the form controls, etc., too? } for (i=0; i < handlers.length; i++) { window.addEventListener(handlers[i], function (e) {stopPropagation(e);}, true); } if (window.stop) { window.stop(); } throw ''; } } } } $('#videoframe').hover(function toggleControls() { if (this.hasAttribute("controls")) { this.removeAttribute("controls") } else { this.setAttribute("controls", "controls") } }) $('#accessvideoframe').hover(function toggleControls() { if (this.hasAttribute("controls")) { this.removeAttribute("controls") } else { this.setAttribute("controls", "controls") } }) $('#accesspopupframe') .draggable() .resizable(); $('#popupframe') .draggable() .resizable(); $( ".circmenu-toggle" ).click(function() { $(".circmenu-toggle").toggleClass('open'); $(".circmenu-round").toggleClass('open'); $(".circmenu-line").toggleClass('open'); }); $(".gtp").on('change', function() { var toursweep = ($(this).attr('data-sweep')); var model = ($(this).attr('data-model')); var version = ($(this).attr('data-version')); var rotation = ($(this).attr('data-rotation')); var position = ($(this).val()); var formData = new FormData(); formData.append('sweep_id', toursweep); formData.append('model', model); formData.append('version', version); formData.append('position', position); formData.append('rotation', rotation); var gtprequest = new XMLHttpRequest(); gtprequest.open('POST', 'https://boost3d.net/wp-content/themes/x-child-theme/mpaudio/gtupdatedb.php'); gtprequest.setRequestHeader("Cache-Control", "no-cache"); gtprequest.send(formData); gtprequest.onreadystatechange = function(){ if (gtprequest.readyState === 4){ if (gtprequest.status === 200){ console.log("Database Updated"); } } } });