Scrutinizer GitHub App not installed

We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.

Install GitHub App

Issues (412)

src/htdocs/js/colorpicker.js (27 issues)

1
/**
2
 *
3
 * Color picker
4
 * Author: Stefan Petre www.eyecon.ro
5
 * 
6
 * Dual licensed under the MIT and GPL licenses
7
 * 
8
 */
9
(function ($) {
10
	var ColorPicker = function () {
11
		var
12
			ids = {},
0 ignored issues
show
The variable ids seems to be never used. Consider removing it.
Loading history...
13
			inAction,
0 ignored issues
show
The variable inAction seems to be never used. Consider removing it.
Loading history...
14
			charMin = 65,
15
			visible,
0 ignored issues
show
The variable visible seems to be never used. Consider removing it.
Loading history...
16
			tpl = '<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',
17
			defaults = {
18
				eventName: 'click',
19
				onShow: function () {},
20
				onBeforeShow: function(){},
21
				onHide: function () {},
22
				onChange: function () {},
23
				onSubmit: function () {},
24
				color: 'ff0000',
25
				livePreview: true,
26
				flat: false
27
			},
28
			fillRGBFields = function  (hsb, cal) {
29
				var rgb = HSBToRGB(hsb);
30
				$(cal).data('colorpicker').fields
31
					.eq(1).val(rgb.r).end()
32
					.eq(2).val(rgb.g).end()
33
					.eq(3).val(rgb.b).end();
34
			},
35
			fillHSBFields = function  (hsb, cal) {
36
				$(cal).data('colorpicker').fields
37
					.eq(4).val(hsb.h).end()
38
					.eq(5).val(hsb.s).end()
39
					.eq(6).val(hsb.b).end();
40
			},
41
			fillHexFields = function (hsb, cal) {
42
				$(cal).data('colorpicker').fields
43
					.eq(0).val(HSBToHex(hsb)).end();
44
			},
45
			setSelector = function (hsb, cal) {
46
				$(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
47
				$(cal).data('colorpicker').selectorIndic.css({
48
					left: parseInt(150 * hsb.s/100, 10),
49
					top: parseInt(150 * (100-hsb.b)/100, 10)
50
				});
51
			},
52
			setHue = function (hsb, cal) {
53
				$(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
54
			},
55
			setCurrentColor = function (hsb, cal) {
56
				$(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
57
			},
58
			setNewColor = function (hsb, cal) {
59
				$(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
60
			},
61
			keyDown = function (ev) {
62
				var pressedKey = ev.charCode || ev.keyCode || -1;
63
				if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
64
					return false;
65
				}
66
				var cal = $(this).parent().parent();
67
				if (cal.data('colorpicker').livePreview === true) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if cal.data("colorpicker").livePreview === true is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
68
					change.apply(this);
0 ignored issues
show
There is no return statement in this branch, but you do return something in other branches. Did you maybe miss it? If you do not want to return anything, consider adding return undefined; explicitly.
Loading history...
69
				}
70
			},
71
			change = function (ev) {
72
				var cal = $(this).parent().parent(), col;
73
				if (this.parentNode.className.indexOf('_hex') > 0) {
74
					cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
75
				} else if (this.parentNode.className.indexOf('_hsb') > 0) {
76
					cal.data('colorpicker').color = col = fixHSB({
77
						h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
78
						s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
79
						b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
80
					});
81
				} else {
82
					cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
83
						r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
84
						g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
85
						b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
86
					}));
87
				}
88
				if (ev) {
89
					fillRGBFields(col, cal.get(0));
90
					fillHexFields(col, cal.get(0));
91
					fillHSBFields(col, cal.get(0));
92
				}
93
				setSelector(col, cal.get(0));
94
				setHue(col, cal.get(0));
95
				setNewColor(col, cal.get(0));
96
				cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
97
			},
98
			blur = function (ev) {
0 ignored issues
show
The parameter ev is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
99
				var cal = $(this).parent().parent();
100
				cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus');
101
			},
102
			focus = function () {
103
				charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
104
				$(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
105
				$(this).parent().addClass('colorpicker_focus');
106
			},
107
			downIncrement = function (ev) {
108
				var field = $(this).parent().find('input').focus();
109
				var current = {
110
					el: $(this).parent().addClass('colorpicker_slider'),
111
					max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
112
					y: ev.pageY,
113
					field: field,
114
					val: parseInt(field.val(), 10),
115
					preview: $(this).parent().parent().data('colorpicker').livePreview					
116
				};
117
				$(document).bind('mouseup', current, upIncrement);
118
				$(document).bind('mousemove', current, moveIncrement);
119
			},
120
			moveIncrement = function (ev) {
121
				ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));
122
				if (ev.data.preview) {
123
					change.apply(ev.data.field.get(0), [true]);
124
				}
125
				return false;
126
			},
127
			upIncrement = function (ev) {
128
				change.apply(ev.data.field.get(0), [true]);
129
				ev.data.el.removeClass('colorpicker_slider').find('input').focus();
130
				$(document).unbind('mouseup', upIncrement);
131
				$(document).unbind('mousemove', moveIncrement);
132
				return false;
133
			},
134
			downHue = function (ev) {
0 ignored issues
show
The parameter ev is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
135
				var current = {
136
					cal: $(this).parent(),
137
					y: $(this).offset().top
138
				};
139
				current.preview = current.cal.data('colorpicker').livePreview;
140
				$(document).bind('mouseup', current, upHue);
141
				$(document).bind('mousemove', current, moveHue);
142
			},
143
			moveHue = function (ev) {
144
				change.apply(
145
					ev.data.cal.data('colorpicker')
146
						.fields
147
						.eq(4)
148
						.val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
149
						.get(0),
150
					[ev.data.preview]
151
				);
152
				return false;
153
			},
154
			upHue = function (ev) {
155
				fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
156
				fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
157
				$(document).unbind('mouseup', upHue);
158
				$(document).unbind('mousemove', moveHue);
159
				return false;
160
			},
161
			downSelector = function (ev) {
0 ignored issues
show
The parameter ev is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
162
				var current = {
163
					cal: $(this).parent(),
164
					pos: $(this).offset()
165
				};
166
				current.preview = current.cal.data('colorpicker').livePreview;
167
				$(document).bind('mouseup', current, upSelector);
168
				$(document).bind('mousemove', current, moveSelector);
169
			},
170
			moveSelector = function (ev) {
171
				change.apply(
172
					ev.data.cal.data('colorpicker')
173
						.fields
174
						.eq(6)
175
						.val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
176
						.end()
177
						.eq(5)
178
						.val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
179
						.get(0),
180
					[ev.data.preview]
181
				);
182
				return false;
183
			},
184
			upSelector = function (ev) {
185
				fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
186
				fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
187
				$(document).unbind('mouseup', upSelector);
188
				$(document).unbind('mousemove', moveSelector);
189
				return false;
190
			},
191
			enterSubmit = function (ev) {
0 ignored issues
show
The parameter ev is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
192
				$(this).addClass('colorpicker_focus');
193
			},
194
			leaveSubmit = function (ev) {
0 ignored issues
show
The parameter ev is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
195
				$(this).removeClass('colorpicker_focus');
196
			},
197
			clickSubmit = function (ev) {
0 ignored issues
show
The parameter ev is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
198
				var cal = $(this).parent();
199
				var col = cal.data('colorpicker').color;
200
				cal.data('colorpicker').origColor = col;
201
				setCurrentColor(col, cal.get(0));
202
				cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);
203
			},
204
			show = function (ev) {
0 ignored issues
show
The parameter ev is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
205
				var cal = $('#' + $(this).data('colorpickerId'));
206
				cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
207
				var pos = $(this).offset();
208
				var viewPort = getViewport();
209
				var top = pos.top + this.offsetHeight;
210
				var left = pos.left;
211
				if (top + 176 > viewPort.t + viewPort.h) {
212
					top -= this.offsetHeight + 176;
213
				}
214
				if (left + 356 > viewPort.l + viewPort.w) {
215
					left -= 356;
216
				}
217
				cal.css({left: left + 'px', top: top + 'px'});
218
				if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
0 ignored issues
show
Comparing cal.data("colorpicker")....ply(this, [cal.get(0)]) to false using the != operator is not safe. Consider using !== instead.
Loading history...
219
					cal.show();
220
				}
221
				$(document).bind('mousedown', {cal: cal}, hide);
222
				return false;
223
			},
224
			hide = function (ev) {
225
				if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
226
					if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
0 ignored issues
show
Comparing ev.data.cal.data("colorp..., [ev.data.cal.get(0)]) to false using the != operator is not safe. Consider using !== instead.
Loading history...
227
						ev.data.cal.hide();
228
					}
229
					$(document).unbind('mousedown', hide);
230
				}
231
			},
232
			isChildOf = function(parentEl, el, container) {
233
				if (parentEl == el) {
234
					return true;
235
				}
236
				if (parentEl.contains) {
237
					return parentEl.contains(el);
238
				}
239
				if ( parentEl.compareDocumentPosition ) {
240
					return !!(parentEl.compareDocumentPosition(el) & 16);
241
				}
242
				var prEl = el.parentNode;
243
				while(prEl && prEl != container) {
244
					if (prEl == parentEl)
245
						return true;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
246
					prEl = prEl.parentNode;
247
				}
248
				return false;
249
			},
250
			getViewport = function () {
251
				var m = document.compatMode == 'CSS1Compat';
252
				return {
253
					l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
254
					t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
255
					w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
256
					h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
257
				};
258
			},
259
			fixHSB = function (hsb) {
260
				return {
261
					h: Math.min(360, Math.max(0, hsb.h)),
262
					s: Math.min(100, Math.max(0, hsb.s)),
263
					b: Math.min(100, Math.max(0, hsb.b))
264
				};
265
			}, 
266
			fixRGB = function (rgb) {
267
				return {
268
					r: Math.min(255, Math.max(0, rgb.r)),
269
					g: Math.min(255, Math.max(0, rgb.g)),
270
					b: Math.min(255, Math.max(0, rgb.b))
271
				};
272
			},
273
			fixHex = function (hex) {
274
				var len = 6 - hex.length;
275
				if (len > 0) {
276
					var o = [];
277
					for (var i=0; i<len; i++) {
278
						o.push('0');
279
					}
280
					o.push(hex);
281
					hex = o.join('');
282
				}
283
				return hex;
284
			}, 
285
			HexToRGB = function (hex) {
286
				var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
287
				return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
288
			},
289
			HexToHSB = function (hex) {
290
				return RGBToHSB(HexToRGB(hex));
291
			},
292
			RGBToHSB = function (rgb) {
293
				var hsb = {
294
					h: 0,
295
					s: 0,
296
					b: 0
297
				};
298
				var min = Math.min(rgb.r, rgb.g, rgb.b);
299
				var max = Math.max(rgb.r, rgb.g, rgb.b);
300
				var delta = max - min;
301
				hsb.b = max;
302
				if (max != 0) {
0 ignored issues
show
Comparing max to 0 using the != operator is not safe. Consider using !== instead.
Loading history...
Comprehensibility Documentation Best Practice introduced by
This code block is empty. Consider removing it or adding a comment to explain.
Loading history...
303
					
304
				}
305
				hsb.s = max != 0 ? 255 * delta / max : 0;
306
				if (hsb.s != 0) {
0 ignored issues
show
Comparing hsb.s to 0 using the != operator is not safe. Consider using !== instead.
Loading history...
307
					if (rgb.r == max) {
308
						hsb.h = (rgb.g - rgb.b) / delta;
309
					} else if (rgb.g == max) {
310
						hsb.h = 2 + (rgb.b - rgb.r) / delta;
311
					} else {
312
						hsb.h = 4 + (rgb.r - rgb.g) / delta;
313
					}
314
				} else {
315
					hsb.h = -1;
316
				}
317
				hsb.h *= 60;
318
				if (hsb.h < 0) {
319
					hsb.h += 360;
320
				}
321
				hsb.s *= 100/255;
322
				hsb.b *= 100/255;
323
				return hsb;
324
			},
325
			HSBToRGB = function (hsb) {
326
				var rgb = {};
327
				var h = Math.round(hsb.h);
328
				var s = Math.round(hsb.s*255/100);
329
				var v = Math.round(hsb.b*255/100);
330
				if(s == 0) {
0 ignored issues
show
Comparing s to 0 using the == operator is not safe. Consider using === instead.
Loading history...
331
					rgb.r = rgb.g = rgb.b = v;
332
				} else {
333
					var t1 = v;
334
					var t2 = (255-s)*v/255;
335
					var t3 = (t1-t2)*(h%60)/60;
336
					if(h==360) h = 0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
337
					if(h<60) {rgb.r=t1;	rgb.b=t2; rgb.g=t2+t3}
338
					else if(h<120) {rgb.g=t1; rgb.b=t2;	rgb.r=t1-t3}
339
					else if(h<180) {rgb.g=t1; rgb.r=t2;	rgb.b=t2+t3}
340
					else if(h<240) {rgb.b=t1; rgb.r=t2;	rgb.g=t1-t3}
341
					else if(h<300) {rgb.b=t1; rgb.g=t2;	rgb.r=t2+t3}
342
					else if(h<360) {rgb.r=t1; rgb.g=t2;	rgb.b=t1-t3}
343
					else {rgb.r=0; rgb.g=0;	rgb.b=0}
344
				}
345
				return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
346
			},
347
			RGBToHex = function (rgb) {
348
				var hex = [
349
					rgb.r.toString(16),
350
					rgb.g.toString(16),
351
					rgb.b.toString(16)
352
				];
353
				$.each(hex, function (nr, val) {
354
					if (val.length == 1) {
0 ignored issues
show
Comparing val.length to 1 using the == operator is not safe. Consider using === instead.
Loading history...
355
						hex[nr] = '0' + val;
356
					}
357
				});
358
				return hex.join('');
359
			},
360
			HSBToHex = function (hsb) {
361
				return RGBToHex(HSBToRGB(hsb));
362
			},
363
			restoreOriginal = function () {
364
				var cal = $(this).parent();
365
				var col = cal.data('colorpicker').origColor;
366
				cal.data('colorpicker').color = col;
367
				fillRGBFields(col, cal.get(0));
368
				fillHexFields(col, cal.get(0));
369
				fillHSBFields(col, cal.get(0));
370
				setSelector(col, cal.get(0));
371
				setHue(col, cal.get(0));
372
				setNewColor(col, cal.get(0));
373
			};
374
		return {
375
			init: function (opt) {
376
				opt = $.extend({}, defaults, opt||{});
377
				if (typeof opt.color == 'string') {
378
					opt.color = HexToHSB(opt.color);
379
				} else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined) {
0 ignored issues
show
Comparing opt.color.r to undefined using the != operator is not safe. Consider using !== instead.
Loading history...
380
					opt.color = RGBToHSB(opt.color);
381
				} else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined) {
382
					opt.color = fixHSB(opt.color);
383
				} else {
384
					return this;
385
				}
386
				return this.each(function () {
387
					if (!$(this).data('colorpickerId')) {
388
						var options = $.extend({}, opt);
389
						options.origColor = opt.color;
390
						var id = 'collorpicker_' + parseInt(Math.random() * 1000);
391
						$(this).data('colorpickerId', id);
392
						var cal = $(tpl).attr('id', id);
393
						if (options.flat) {
394
							cal.appendTo(this).show();
395
						} else {
396
							cal.appendTo(document.body);
397
						}
398
						options.fields = cal
399
											.find('input')
400
												.bind('keyup', keyDown)
401
												.bind('change', change)
402
												.bind('blur', blur)
403
												.bind('focus', focus);
404
						cal
405
							.find('span').bind('mousedown', downIncrement).end()
406
							.find('>div.colorpicker_current_color').bind('click', restoreOriginal);
407
						options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
408
						options.selectorIndic = options.selector.find('div div');
409
						options.el = this;
410
						options.hue = cal.find('div.colorpicker_hue div');
411
						cal.find('div.colorpicker_hue').bind('mousedown', downHue);
412
						options.newColor = cal.find('div.colorpicker_new_color');
413
						options.currentColor = cal.find('div.colorpicker_current_color');
414
						cal.data('colorpicker', options);
415
						cal.find('div.colorpicker_submit')
416
							.bind('mouseenter', enterSubmit)
417
							.bind('mouseleave', leaveSubmit)
418
							.bind('click', clickSubmit);
419
						fillRGBFields(options.color, cal.get(0));
420
						fillHSBFields(options.color, cal.get(0));
421
						fillHexFields(options.color, cal.get(0));
422
						setHue(options.color, cal.get(0));
423
						setSelector(options.color, cal.get(0));
424
						setCurrentColor(options.color, cal.get(0));
425
						setNewColor(options.color, cal.get(0));
426
						if (options.flat) {
427
							cal.css({
428
								position: 'relative',
429
								display: 'block'
430
							});
431
						} else {
432
							$(this).bind(options.eventName, show);
433
						}
434
					}
435
				});
436
			},
437
			showPicker: function() {
438
				return this.each( function () {
439
					if ($(this).data('colorpickerId')) {
440
						show.apply(this);
441
					}
442
				});
443
			},
444
			hidePicker: function() {
445
				return this.each( function () {
446
					if ($(this).data('colorpickerId')) {
447
						$('#' + $(this).data('colorpickerId')).hide();
448
					}
449
				});
450
			},
451
			setColor: function(col) {
452
				if (typeof col == 'string') {
453
					col = HexToHSB(col);
454
				} else if (col.r != undefined && col.g != undefined && col.b != undefined) {
0 ignored issues
show
Comparing col.r to undefined using the != operator is not safe. Consider using !== instead.
Loading history...
455
					col = RGBToHSB(col);
456
				} else if (col.h != undefined && col.s != undefined && col.b != undefined) {
457
					col = fixHSB(col);
458
				} else {
459
					return this;
460
				}
461
				return this.each(function(){
462
					if ($(this).data('colorpickerId')) {
463
						var cal = $('#' + $(this).data('colorpickerId'));
464
						cal.data('colorpicker').color = col;
465
						cal.data('colorpicker').origColor = col;
466
						fillRGBFields(col, cal.get(0));
467
						fillHSBFields(col, cal.get(0));
468
						fillHexFields(col, cal.get(0));
469
						setHue(col, cal.get(0));
470
						setSelector(col, cal.get(0));
471
						setCurrentColor(col, cal.get(0));
472
						setNewColor(col, cal.get(0));
473
					}
474
				});
475
			}
476
		};
477
	}();
478
	$.fn.extend({
479
		ColorPicker: ColorPicker.init,
480
		ColorPickerHide: ColorPicker.hidePicker,
481
		ColorPickerShow: ColorPicker.showPicker,
482
		ColorPickerSetColor: ColorPicker.setColor
483
	});
484
	//Added by Astax
485
	function rgb2hex(rgb) {
486
		rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
487
		function hex(x) {
488
			return ("0" + parseInt(x).toString(16)).slice(-2);
489
		}
490
		return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
491
	}
492
	$( document ).ready(function() {
493
		$('#friendlyColorSelector').ColorPicker({
494
			color: $('#friendlyColorSelector .preview').attr('backgroundColor'),
495
			onBeforeShow: function () {
496
				var col = rgb2hex($('#friendlyColorSelector .preview').css('backgroundColor'));
497
				$(this).ColorPickerSetColor(col);
498
			},
499
			onShow: function (colpkr) {
500
				color: $('#friendlyColorSelector .preview').attr('backgroundColor');
0 ignored issues
show
There is no code referencing the label color. It can be removed without consequences.
Loading history...
501
				$(colpkr).fadeIn(500);
502
			},
503
			onHide: function (colpkr) {
504
				$(colpkr).fadeOut(500);
505
			},
506
			onChange: function (hsb, hex, rgb) {
0 ignored issues
show
The parameter rgb is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
507
				$('#friendlyColorSelector .preview').css('backgroundColor', '#' + hex);
508
				$('#friendlyColorSelector input')[0].value=hex;
509
			}
510
		});
511
		$('#neutralColorSelector').ColorPicker({
512
			color: $('#neutralColorSelector .preview').css('backgroundColor'),
513
			onBeforeShow: function () {
514
				var col = rgb2hex($('#neutralColorSelector .preview').css('backgroundColor'));
515
				$(this).ColorPickerSetColor(col);
516
			},
517
			onShow: function (colpkr) {
518
				$(colpkr).fadeIn(500);
519
			},
520
			onHide: function (colpkr) {
521
				$(colpkr).fadeOut(500);
522
			},
523
			onChange: function (hsb, hex, rgb) {
0 ignored issues
show
The parameter rgb is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
524
				$('#neutralColorSelector .preview').css('backgroundColor', '#' + hex);
525
				$('#neutralColorSelector input')[0].value=hex;
526
			}
527
		});
528
		$('#enemyColorSelector').ColorPicker({
529
			color: $('#enemyColorSelector .preview').attr('backgroundColor'),
530
			onBeforeShow: function () {
531
				var col = rgb2hex($('#enemyColorSelector .preview').css('backgroundColor'));
532
				$(this).ColorPickerSetColor(col);
533
			},
534
			onShow: function (colpkr) {
535
				$(colpkr).fadeIn(500);
536
			},
537
			onHide: function (colpkr) {
538
				$(colpkr).fadeOut(500);
539
			},
540
			onChange: function (hsb, hex, rgb) {
0 ignored issues
show
The parameter rgb is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
541
				$('#enemyColorSelector .preview').css('backgroundColor', '#' + hex);
542
				$('#enemyColorSelector input')[0].value=hex;
543
			}
544
		});
545
	});
546
})(jQuery)