var user = new function(){} user.init = function(){ user.load() user.bind() user.shaders.init() } user.bind = function(){ $("#username").on("input", user.save) } user.load = function(){ user.username = user.getCookie() $("#username").val(user.username) } user.sanitize = function(){ return $("#username").val().replace(/[^-_ a-zA-Z0-9]/g,"") } user.getCookie = function () { var username = localStorage.getItem("im.name") || ""; if (document.cookie && ! username.length) { var cookies = document.cookie.split(";") for (i in cookies) { var cookie = cookies[i].split("=") if (cookie[0].indexOf("imname") !== -1) { if (cookie[1] !== 'false' && cookie[1] !== 'undefined' && cookie[1].length) { return cookie[1] } } } } return username } user.save = function(){ var username = user.sanitize() if (username != user.username) user.setCookie(username); } user.setCookie = function(username){ console.log("setting to " + username) document.cookie = "imname="+username+";path=/;domain=.asdf.us;max-age=1086400" localStorage.setItem("im.name", username); } user.shaders = new function(){} user.shaders.init = function(){ user.shaders.bind() } user.shaders.bind = function(){ var shaders = JSON.parse( localStorage.getItem("im.shaders") ) || [] for (var i = 0; i < shaders.length; i++){ user.shaders.bindButton(shaders[i]) } document.getElementById("add-shader").addEventListener("click", user.shaders.save, false) } user.shaders.bindButton = function(name){ var button = document.createElement("button") button.innerHTML = name button.addEventListener("click", user.shaders.load.bind(this, name), false) document.getElementById("shaders").appendChild(button) } user.shaders.load = function(name){ var shader = localStorage.getItem("im.shaders." + name) console.log(name,shader) if (shader && shader.length > 0) { $("#shader").val(shader) shader_build() } } user.shaders.save = function(){ var name = prompt("enter shader name") var shader = $("#shader").val() console.log(name,shader) if (! name) return; if (shade !== shade_no_error_handling) return; localStorage.setItem("im.shaders." + name, shader) var shaders = JSON.parse( localStorage.getItem("im.shaders") ) || [] shaders.push(name) localStorage.setItem("im.shaders", JSON.stringify(shaders)) user.shaders.bindButton(name) }