var user = new function(){} user.init = function(){ user.load() user.bind() } 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(){ user.shaders.buttons = {} if ('SHADERS' in window) { user.shaders.bindButtons( window.SHADERS ) } user.shaders.bindButtons( user.shaders.getShaders() ) document.getElementById("add-shader").addEventListener("click", user.shaders.save, false) document.getElementById("remove-shader").addEventListener("click", user.shaders.remove, false) } user.shaders.bindButtons = function(shaders){ for (var i = 0; i < shaders.length; i++){ user.shaders.bindButton(shaders[i]) } } user.shaders.bindButton = function(data){ // console.log("button >> " + data.name) var button = document.createElement("button") button.innerHTML = data.name button.addEventListener("click", user.shaders.load.bind(this, data), false) document.getElementById("shaders").appendChild(button) user.shaders.buttons[data.name] = button } user.shaders.load = function(data){ var shader = data.shader if (shader && shader.length > 0) { user.shaders.name = data.name $("#shader").val(shader) // pause here? shader_build() $(".active").removeClass("active") $(user.shaders.buttons[data.name]).addClass("active") user.shaders.setLastAccessed(data.name) } } user.shaders.loadLastAccessed = function(){ var name = localStorage.getItem("im.lastShader") || "colorcycle" if (name in user.shaders.buttons) { $(user.shaders.buttons[name]).trigger("click") } } user.shaders.setLastAccessed = function(name){ localStorage.setItem("im.lastShader", name) } user.shaders.getShaderByName = function(name){ return { name: name, shader: user.shaders.getShaderBody(name) } } user.shaders.getShaderIndex = function(){ return JSON.parse( localStorage.getItem("im.shaders") ) || [] } user.shaders.getShaderBody = function(name){ return localStorage.getItem("im.shaders."+name) || null } user.shaders.getShaders = function(){ var shaders = user.shaders.getShaderIndex() return shaders.map(function(name){ return { name: name, shader: user.shaders.getShaderBody(name) } }) } user.shaders.setShaderIndex = function(shaders){ localStorage.setItem("im.shaders", JSON.stringify(shaders)) } user.shaders.setShader = function(name, shader){ if (! name.length || ! shader.length || !name.length || !shader.length) return localStorage.setItem("im.shaders." + name, shader) } user.shaders.removeShader = function(name){ localStorage.removeItem("im.shaders." + name) } user.shaders.save = function(){ var name = prompt("enter shader name") var shader = $("#shader").val() if (! name) return; if (shade !== shade_no_error_handling) return; user.shaders.setShader(name, shader) var shaders = user.shaders.getShaderIndex() shaders.push(name) user.shaders.setShaderIndex(shaders) user.shaders.name = name user.shaders.bindButton({ name: name, shader: shader }) $(".active").removeClass("active") $(user.shaders.buttons[name]).addClass("active") } user.shaders.remove = function(){ var name = user.shaders.name if (! name || ! name.length) return var shaders = user.shaders.getShaderIndex() if (shaders.splice( shaders.indexOf(name), 1 )) { user.shaders.setShaderIndex(shaders) user.shaders.removeShader(name) $(user.shaders.buttons[name]).remove() user.shaders.name = "" } }