var qPageTimer = 40; var queueNumber = 594; var usersAhead = 118; var start = new Date(); var startTS = start.getTime(); var endTS = start.setSeconds(start.getSeconds() + qPageTimer); function getTimeProcentage() { var currentTime = new Date(); var currentTimeTS = currentTime.getTime(); var procentage = ((currentTimeTS - startTS) / ((endTS - startTS) * 100)) * 10000; return procentage; } function setProgressWidth(progressWidth) { if (progressWidth < 100) { } } function updateRelativeTime() { cfViewModel.whichIsIn("less than a minute"); } function updateQueueNumber(p) { var u = Math.round(usersAhead - ((usersAhead * p) / 100)); if (u < 0) { u = 0; } cfViewModel.usersInLineAheadOfYou(u); } function updateLastUpdatedTime() { cfViewModel.lastUpdated(getAMPMTime(true)); } function updateDynamicMessage() { cfViewModel.messageTimestampFormatted(getAMPMTime(false)); cfViewModel.messageText("Front row seats booked"); } function redirect() { // var url = getParameterByName("t"); // if (url == null) { // //alert("no t parameter"); // return; // } // if (!ValidURL(url)) { // //alert("url is not valid"); // return; // } // if (!pageExists(url)) { // //alert("the web page doesn't exist"); // return; // } // window.location = url; window.clearInterval(id); document.documentElement.style.display = "none"; } function getAMPMTime(showSeconds, date) { showSeconds = showSeconds || false; date = date || new Date(); var hours = date.getHours(); var minutes = date.getMinutes(); var ampm = hours >= 12 ? 'PM' : 'AM'; hours = hours % 12; hours = hours ? hours : 12; minutes = minutes < 10 ? '0' + minutes : minutes; var strTime = hours + ':' + minutes; if (showSeconds) { var seconds = date.getSeconds(); seconds = seconds < 10 ? '0' + seconds : seconds; strTime = strTime + ':' + seconds; } var strTimeAMPM = strTime + ' ' + ampm; return strTimeAMPM; } function getParameterByName(name, url) { if (!url) { url = window.location.href; } name = name.replace(/[\[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); } function ValidURL(str) { var regex = /(http|https):\/\/(\w+:{0,1}\w*)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%!\-\/]))?/; if (!regex.test(str)) { return false; } else { return true; } } function pageExists() { return true; } var relativeTimeUpdated = false; var messageUpdated = false; var toggleDot = false; var redirected = false; var counter = 0; function intervalTrigger() { return window.setInterval(function () { var percent = getTimeProcentage(); if (counter % 10 == 0) { updateQueueNumber(percent); updateLastUpdatedTime(); if (toggleDot) { //$("#defaultViewPb1").toggleClass("active"); var dot = document.getElementById("defaultViewPb1"); dot.classList.toggle('active'); } toggleDot = !toggleDot; if (percent > 15) { updateRelativeTime(); } if (!messageUpdated && percent > 50) { updateDynamicMessage(); } if (!redirected && percent > 99) { redirect(); redirected = true; return true; } } if (percent < 100) { //setProgressWidth(percent); document.getElementById("MainPart_divProgressbar_Progress").style.width = percent + "%"; } counter++; }, 100); }; var id = intervalTrigger(); var currentTime = getAMPMTime(true); var cfViewModel = { queueNumberVisible: ko.observable(true), queueNumber: ko.observable(queueNumber), usersInLineAheadOfYou: ko.observable(usersAhead), firstInLineVisible: ko.observable(false), expectedServiceTimeVisible: ko.observable(true), expectedServiceTime: ko.observable(getAMPMTime()), timeZonePostfix: ko.observable(""), servicedSoonVisible: ko.observable(false), whichIsInVisible: ko.observable(true), whichIsIn: ko.observable("1 minute"), lastUpdated: ko.observable(getAMPMTime(true)), dynamicMessageVisible: ko.observable(true), messageHeader: ko.observable("Message last updated:"), messageTimestampFormatted: ko.observable(getAMPMTime(false)), messageText: ko.observable("All seats available"), reminderEmailVisible: ko.observable(false), }; ko.applyBindings(cfViewModel);