function getNonnull (value) { return value?value:"" ; } function isNull (value) { return !value||value===""||value==="null" ; } function callHttp (url) { var request = new XMLHttpRequest() ; request.open("GET",url,false) ; request.send() ; } function getHttp (url) { var request = new XMLHttpRequest() ; request.onreadystatechange = function() { if (request.readyState == XMLHttpRequest.DONE) { result = request.responseText ; } } ; request.open("GET",url,false) ; request.send() ; return result ; } function getHttpJson (url) { return JSON.parse(getHttp(url)) ; } function loadHttp (url, element) { var request = new XMLHttpRequest() ; request.onreadystatechange = function() { if (request.readyState == XMLHttpRequest.DONE) { element.innerHTML = request.responseText ; } } ; request.open("GET",url,true) ; request.send() ; } function postHttp (url, form, parameters) { if (!form) { document.createElement("form") ; document.body.appendChild(form) ; form.setAttribute("method","POST") ; form.setAttribute("action",url) ; } for (var key in parameters) { if (parameters.hasOwnProperty(key)) { var hiddenField = document.createElement("input") ; hiddenField.setAttribute("type","hidden") ; hiddenField.setAttribute("name",key) ; hiddenField.setAttribute("value",parameters[key]) ; form.appendChild(hiddenField) ; } } form.submit() ; } function ajaxForm (url, form) { $.ajax ( { url: url, method: "POST", data: $(form).serializeArray(), success: function(data) { } } ) ; } function ajaxScript (url) { $.ajax ( { url: url, method: "GET", dataType: "script" } ) ; } function getQueryParameters (s) { var query = document.location.search ; query = query.split('+').join(' ') ; var parameters = {} ; var tokens ; var re = /[?&]?([^=]+)=([^&]*)/g ; while (tokens = re.exec(query)) { parameters[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]) ; } return parameters ; } function getQueryParameter (name) { var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search); return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); } function setCookie (name, value, days) { if (value) { if (days) { var date = new Date() ; date.setTime(date.getTime()+(days*24*60*60*1000)) ; var expires = "; expires="+date.toGMTString() ; } else var expires = "" ; document.cookie = name+"="+value+expires+"; path=/" ; } else document.cookie = name+"=;expires=Thu, 01 Jan 1970 00:00:01 GMT;" ; } function getCookie (name) { var nameEQ = name + "=" ; var ca = document.cookie.split(';') ; for (var i = 0; i < ca.length; i++) { var c = ca[i] ; while (c.charAt(0) == ' ') c = c.substring(1, c.length) ; if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length) ; } return null ; } function deleteCookie (name) { document.cookie = name+"=;expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/" ; } function getToday () { var today = new Date() ; return (today.getMonth()+1)+'/'+today.getDate()+'/'+today.getFullYear() ; } function getDigitalRating (rating) { if (rating<0) return 0 ; rating = Math.round(rating*10) ; return rating==10?9:rating-1 ; } function signin (email, password) { $.ajax ( { url: "/app/session/signin", method: "POST", async: false, data: {"sessionEmail":email,"sessionPassword":password}, success: function (data) { session = data ; }, error: function (jqXHR, textStatus, errorThrown) { alert("/app/session/signin") ; alert(JSON.stringify(jqXHR)) ; alert(textStatus) ; alert(errorThrown) ; } } ) ; } //signin("email@domain.com","password") ; function validateFormFieldRange (field, label, min, max, message) { if (field.val().length0&&field.val().length>max) { field.addClass("ui-state-error") ; message.innerHTML += "

Length of "+label+" must be less than or equal to "+max+"." ; return false ; } else return true ; } function validateRegexp (field, label, regexp, message) { if (!(regexp.test(field.val()))) { field.addClass("ui-state-error") ; message.innerHTML += "

Format of "+label+" must match "+regexp+"." ; return false ; } else return true ; } function validSession (session) {return session&&!session["error"] ;} function validSessionEditor (session) {return session&&!session["error"]&&(session["editor"]||session["administrator"]) ;} function validSessionAdministrator (session) {return session&&!session["error"]&&session["administrator"] ;} var systemEmail ; var action = getQueryParameter("action") ; var pathname = window.location.pathname ; var sessionTokenName ; var sessionEmailName ; var sessionPasscodeName ; var session ; function signout () { deleteCookie(sessionTokenName) ; deleteCookie(sessionEmailName) ; deleteCookie(sessionPasscodeName) ; window.location.reload() ; } function getSession () { if (getCookie(sessionTokenName)) { $.ajax ( { url: "/app/session/view", method: "POST", async: false, data: {"sessionToken":getCookie(sessionTokenName)}, success: function (data) { if (data["userEntityId"]) session = data ; else deleteCookie(sessionTokenName) ; } } ) ; } if (!validSession(session)) { $.ajax ( { url: "/app/session/signin", method: "POST", async: false, data: {"sessionEmail":getCookie(sessionEmailName),"sessionPasscode":getCookie(sessionPasscodeName)}, success: function (data) { session = data ; if (data["sessionToken"]) setCookie(sessionTokenName,data["sessionToken"],365) ; else { deleteCookie(sessionEmailName) ; deleteCookie(sessionPasscodeName) ; } } } ) ; } } function errorPage () { document.write(getHttp("/scripts?name=bandung&sct=0&v=1600351040000")) ; } function signinPage () { document.write(getHttp("/scripts?name=bandung&sct=1&v=1600351040000")) ;document.write(getNonnull(getCookie(sessionEmailName))) ;document.write(getHttp("/scripts?name=bandung&sct=2&v=1600351040000")) ; $("#signinEmailFormCancel").click ( function() { window.location = "/" ; } ) ; $("#signinEmailForm").on ( "submit", function (event) { event.preventDefault() ; setCookie(sessionEmailName,$("#signinEmailFormSessionEmail").val(),365) ; $.ajax ( { url: "/app/session/confirm", method: "POST", async: false, data: $("#signinEmailForm").serializeArray(), success: function (data) { if (data["error"]) $("#signinEmailFormMessage").html("

"+data["error"]) ; else if (data["confirm"]) { $("#signinEmailDiv").css("display","none") ; $("#signinPasswordDiv").css("display","block") ; $("#signinPasswordFormSessionEmail").val($("#signinEmailFormSessionEmail").val()) ; } else { $("#signinEmailDiv").css("display","none") ; $("#joinDiv").css("display","block") ; $("#joinFormSessionEmail").val($("#signinEmailFormSessionEmail").val()) ; } }, error: function (jqXHR, textStatus, errorThrown) { $("#signinEmailFormMessage").html("

Failure: "+textStatus+" / "+errorThrown) ; } } ) ; } ) ; document.write(getHttp("/scripts?name=bandung&sct=3&v=1600351040000")) ;document.write(getNonnull(getCookie(sessionEmailName))) ;document.write(getHttp("/scripts?name=bandung&sct=4&v=1600351040000")) ; $("#signinPasswordFormCancel").click ( function() { window.location = "/" ; } ) ; $("#signinPasswordForm").on ( "submit", function (event) { event.preventDefault() ; setCookie(sessionEmailName,$("#signinPasswordFormSessionEmail").val(),365) ; $.ajax ( { url: "/app/session/signin", method: "POST", async: false, data: $("#signinPasswordForm").serializeArray(), success: function (data) { if (data["error"]) $("#signinPasswordFormMessage").html("

"+data["error"]) ; else { session = data ; setCookie(sessionTokenName,session["sessionToken"],365) ; setCookie(sessionPasscodeName,session["passcode"],365) ; $("#signinPasswordDiv").hide() ; window.location.reload() ; } }, error: function (jqXHR, textStatus, errorThrown) { $("#signinPasswordFormMessage").html("

Failure: "+textStatus+" / "+errorThrown) ; } } ) ; } ) ; document.write(getHttp("/scripts?name=bandung&sct=5&v=1600351040000")) ;document.write(getNonnull(getCookie(sessionEmailName))) ;document.write(getHttp("/scripts?name=bandung&sct=6&v=1600351040000")) ;document.write(systemEmail) ;document.write(getHttp("/scripts?name=bandung&sct=7&v=1600351040000")) ;document.write(systemEmail) ;document.write(getHttp("/scripts?name=bandung&sct=8&v=1600351040000")) ; $("#joinFormCancel").click ( function() { window.location = "/" ; } ) ; $("#joinForm").on ( "submit", function (event) { event.preventDefault() ; setCookie(sessionEmailName,$("#joinFormSessionEmail").val(),365) ; $.ajax ( { url: "/app/session/join", method: "POST", async: false, data: $("#joinForm").serializeArray(), success: function (data) { if (data["error"]) $("#joinFormMessage").html("

"+data["error"]) ; else { session = data ; setCookie(sessionTokenName,session["sessionToken"],365) ; setCookie(sessionPasscodeName,session["passcode"],365) ; $("#joinDiv").hide() ; window.location.reload() ; } }, error: function (jqXHR, textStatus, errorThrown) { $("#joinFormMessage").html("

Failure: "+textStatus+" / "+errorThrown) ; } } ) ; } ) ; }