var access_code = null; function memset(mkey, mvalue) {localStorage.setItem(mkey, mvalue);} function memget(mkey, dvalue) {return localStorage.getItem(mkey) === null ? (typeof dvalue !== "undefined" ? dvalue : null) : localStorage.getItem(mkey);} function getUrlVars() { var vars = {}; var parts = window.location.href.replace( /[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { vars[key] = value; } ); return vars; } function QS(element) { return document.querySelector(element); } function QSA(element) { return document.querySelectorAll(element); } function fireEvent(domElement, etype) { if(domElement.fireEvent) { domElement.fireEvent('on' + etype); } else { var evObj = document.createEvent('MouseEvent'); evObj.initEvent(etype, true, false); domElement.dispatchEvent(evObj); } } function replace(strsrc, strold, strnew) {return(String(strsrc).split(strold).join(strnew))} function createUniqueId() { var c0 = 'O', c1 = 'O', c2, c3, c4 = 'O'; while(c0 == 'O' || c0 == 'I') c0 = String.fromCharCode(~~(Math.random() * 24) + 65); while(c1 == 'O' || c1 == 'I') c1 = String.fromCharCode(~~(Math.random() * 24) + 65); var c2 = String.fromCharCode(~~(Math.random() * 8) + 50); var c3 = String.fromCharCode(~~(Math.random() * 8) + 50); while(c4 == 'O' || c4 == 'I') c4 = String.fromCharCode(~~(Math.random() * 24) + 65); return(c0 + c1 + c2 + c3 + c4); } function x_post(sObject, sQueryCallback, forceTextResponse = false, bypassQueue = false) { x_query(true, sObject, sQueryCallback, forceTextResponse, bypassQueue); } function x_get(sObject, sQueryCallback, forceTextResponse = false, bypassQueue = false) { x_query(false, sObject, sQueryCallback, forceTextResponse, bypassQueue); } function x_query(isPost, get_object, get_callback = null, forceTextResponse = false, bypassQueue = false) { if(userid === void 0) var userid = top.userid; if(userid !== '') { if(top.currentToken === null) { return true; } else { var http = new XMLHttpRequest(); http.onreadystatechange = function() { if(http.readyState == XMLHttpRequest.DONE) { if(http.status == 500) { console.error('Error 500 on _query', http.statusText, get_object); x_query(isPost, get_object, function(status, text) { console.log(text) }, true, true); } else { if(http.status === 401) { top.token_needed(); } else { if(typeof get_callback === 'function') { if(forceTextResponse) { get_callback(http.status == 200, http.responseText); } else { if(http.response === null) { console.error('Query returned NULL', get_object, http.statusText, QUERY_URL); x_query(isPost, get_object, function(status, text) { console.log(text) }, true, true); } else { if(http.response.lastError !== void 0 && http.response.lastError !== null) { console.error(http.response.lastError); } console.log(http.response); get_callback(http.status == 200, http.response); } } } } } } } http.open(isPost ? 'POST' : 'GET', QUERY_URL); http.timeout = isPost? 10000 : 2000; http.responseType = forceTextResponse ? 'text' : 'json'; http.setRequestHeader("responseType", forceTextResponse ? 'text' : 'json'); http.setRequestHeader("Cache-Control", "no-cache"); http.setRequestHeader("Content-Type", isPost ? "application/x-www-form-urlencoded" : "Content-Type: application/json"); if(!isPost) http.setRequestHeader("args", window.btoa(JSON.stringify(get_object))); http.setRequestHeader("token", top.activeToken); http.setRequestHeader("access_code", top.access_code); http.send(isPost ? 'args=' + JSON.stringify(get_object) : ''); return true; } } else { if(typeof get_callback === 'function') { get_callback(0, forceTextResponse ? '' : {}); } } }