1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
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(){
user.shaders.buttons = {}
user.shaders.bindButtons( user.shaders.getShaders() )
if ('SHADERS' in window) {
user.shaders.bindButtons( window.SHADERS )
}
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){
console.log(data.name)
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.getShaderIndex = function(){
return JSON.parse( localStorage.getItem("im.shaders") ) || []
}
user.shaders.getShader = 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.getShader(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)
}
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 = ""
}
}
|