/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk
9.3.2 by Erik Wikström
Updated slider library and created a new demo
1
/* 
2
3
Widget Code!
4
5
*/
6
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
7
// Fixes css3 for IE
8
function attachPIE() {
9
	$('*').each(function() {
10
		PIE.attach(this);
11
	});
12
}
13
14
// Creates a demo
15
function createDemoSliders() {
16
	str = "";
17
	str += makePanel(250, 200);
18
	str += makeLabel("Slider");
19
	str += makeSlider("slider", 1, 2, 7, 4.5, 160, 5);
20
	str += makeLabel("Binary");
21
	str += makeBinary("binary", 0);
22
	str += makePanelEnd();
23
	document.getElementById("container").innerHTML = str;
24
	attachPIE();
25
26
}
27
9.3.2 by Erik Wikström
Updated slider library and created a new demo
28
// Recursive Pos of div in document - should work in most browsers
29
function findPos(obj) {
30
	var curLeft = curTop = 0;
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
31
	if (obj.offsetParent) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
32
		curLeft = obj.offsetLeft
33
		curTop = obj.offsetTop
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
34
		while (obj = obj.offsetParent) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
35
			curLeft += obj.offsetLeft
36
			curTop += obj.offsetTop
37
		}
38
	}
39
	return {
40
		x:curLeft,
41
		y:curTop
42
	}
43
}
44
45
/*
46
47
ui read widget functions
48
49
*/
50
51
function readSlider(sliderId) {
52
	var value = parseFloat(document.getElementById(sliderId + "box").value);
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
53
	if (isNaN(value)) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
54
		value = 0.0;
55
	}
56
	return value;
57
}
58
59
function readBinary(binaryId) {
60
	lf = document.getElementById(binaryId + "marker").style.left;
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
61
	if (lf == "2px") {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
62
		return 0;
63
	} else {
64
		return 1;
65
	}
66
}
67
68
/*
69
70
ui change widget functions
71
72
*/
73
74
// The idea is to have a few functions like this one and minimum javascript intervention		
75
function updateBinary(event, binaryId) {
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
76
	if (mb) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
77
		coords = findPos(event.currentTarget);
78
		coords.x = event.clientX - coords.x;
79
		coords.y = event.clientY - coords.y;
80
		if(coords.x > 24) {
81
			document.getElementById(binaryId + "marker").style.left = 20 + "px";										
82
			document.getElementById(binaryId).style.backgroundColor = "#ddd";										
83
		}else if(coords.x < 16) {
84
			document.getElementById(binaryId + "marker").style.left = 2 + "px";																		
85
			document.getElementById(binaryId).style.backgroundColor = "#777";										
86
		}
87
	}
88
}
89
90
// The idea is to have a few functions like this one and minimum javascript intervention		
91
function updateSlider(event, kind, min, max, length, sliderId, boxId) {
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
92
	if (mb) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
93
		coords = findPos(event.currentTarget);
94
		coords.x = event.clientX - coords.x;
95
		coords.y = event.clientY - coords.y;
96
		cx = coords.x / length;
97
		sd = max - min;
98
		value = min + (sd * cx);	
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
99
		if (value > max) value = max;
100
		if (kind == 0) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
101
			value = Math.round(value);
102
		}
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
103
		if (kind == 1) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
104
			value = Math.round(value * 10.0) / 10.0;
105
		}
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
106
		if (kind == 2) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
107
			value = Math.round(value * 100.0) / 100.0;
108
		}
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
109
		if (kind == 3) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
110
			value = Math.round(value * 1000.0) / 1000.0;
111
		}
112
		document.getElementById(boxId).value = value;				
113
		document.getElementById(sliderId).style.left = Math.ceil((length) * ((value - min) / sd)) + "px";
114
	}
115
}
116
		
117
function sliderPosition(value, min, max, length) {
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
118
		if (value < min) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
119
			value = min;
120
		}
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
121
		if (value > max) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
122
			value = max;
123
		}
124
		pos = Math.round(((value - min) / (max - min)) * length);
125
		return pos;
126
}
127
128
function changeSlider(value, sliderId, kind, min, max, length) {
129
		value = parseFloat(value);		
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
130
		if (isNaN(value)) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
131
			value = 0.0;
132
		}
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
133
		if (value < min) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
134
			value = min;
135
		}
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
136
		if (value > max) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
137
			value = max;
138
		}
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
139
		if (kind == 0) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
140
			value = Math.round(value);
141
		}
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
142
		if (kind == 1) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
143
			value = Math.round(value * 10.0) / 10.0;
144
		}
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
145
		if (kind == 2) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
146
			value = Math.round(value * 100.0) / 100.0;
147
		}
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
148
		if (kind == 3) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
149
			value = Math.round(value * 1000.0) / 1000.0;
150
		}
151
		pos = sliderPosition(value, min, max, length);
152
		document.getElementById(sliderId + "box").value = value;
153
		document.getElementById(sliderId + "marker").style.left = pos + "px";										
154
}
155
156
/*
157
158
ui make widget functions
159
160
*/
161
162
function makeLabel(name) {
163
	s = "";
164
	s += "<div class='label'>" + name + "</div>";
165
	return s;		
166
}
167
168
function makePanel(width, height) {
169
	s = "";		
170
	s += "<div class='panel' style='height: " + height + "px; width: " + width + "px;'>";
171
	return s;
172
}
173
174
function makePanelEnd() {
175
	s = "</div>";
176
	return s;		
177
}
178
179
function makeSlider(sliderId, kind, minValue, maxValue, midValue, sliderWidth, defaultValue) {
180
	s = "";
181
	defaultPosition = sliderPosition(defaultValue, minValue, maxValue, sliderWidth);
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
182
	if (defaultValue < minValue) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
183
		defaultValue = minValue;
184
	}
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
185
	if (defaultValue > maxValue) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
186
		defaultValue = maxValue;
187
	}					
188
	s += "<input id='" + sliderId + "box' value='" + defaultValue + "' type='text' class='sliderBox' onBlur='changeSlider(this.value,\"" + sliderId + "\"," + kind + "," + minValue + "," + maxValue + "," + sliderWidth + ");'>";
189
	s += "<div id='" + sliderId + "' class='sliderLine' style='width:" + sliderWidth + "px;'";
190
	s += " onmousemove='updateSlider(event," + kind + "," + minValue + "," + maxValue + "," + sliderWidth + ",\"" + sliderId + "marker\",\"" + sliderId + "box\");'";
191
	s += " onmouseup='updateSlider(event," + kind + "," + minValue + "," + maxValue + "," + sliderWidth + ",\"" + sliderId + "marker\",\"" + sliderId + "box\");'>";
192
	s += " <div id='" + sliderId + "marker' class='sliderMarker' style='left:" + defaultPosition + "px;'></div>";
193
	s += "</div>";
194
	s += "<div class='slidermidValue' style='width:" + sliderWidth + "px;'>" + midValue;
195
	s += "<div class='sliderminValue'>" + minValue + "</div>";
196
	s += "<div class='slidermaxValue'>" + maxValue + "</div></div>";
197
	return s;
198
}
199
200
function makeBinary(binaryId, defaultValue) {
201
	s = "";
22.1.1 by Adam Ringhede
Fixes CSS3 for IE
202
	if (defaultValue == 1) {
9.3.2 by Erik Wikström
Updated slider library and created a new demo
203
		defaultPosition = 20;
204
		defaultColor = "#ddd";
205
	} else {
206
		defaultPosition = 2;
207
		defaultColor = "#777";
208
	}
209
	s += "<div id='" + binaryId + "' class='binaryLine' style='background-color:" + defaultColor + ";' onmousemove='updateBinary(event,\"" + binaryId + "\");' onmouseup='updateBinary(event,\"" + binaryId + "\");'>";
210
	s += "<div id='" + binaryId + "marker' class='binaryMarker' style='left:" + defaultPosition + "px;'></div>";
211
	s += "</div>";
212
	return s;
213
}
214
215
var mb = 0;
216
217
function mbPress(event) {
218
	mb = 1;
219
}
220
221
function mbRelease(event) {
222
	mb = 0;
223
}