PageSourceSearch

http://www.tceb.gos.pk/wp-content/themes/sindhcoal/js/colorpicker.js?ver=1.1

js tceb.gos.pk collected 2026-10-03 18:56:17 UTC 17,658 bytes, 484 lines download raw bytes

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 = {},�
13			inAction,�
14			charMin = 65,�
15			visible,�
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) {�
68					change.apply(this);�
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) {�
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) {�
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) {�
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) {�
192				$(this).addClass('colorpicker_focus');�
193			},�
194			leaveSubmit = function (ev) {�
195				$(this).removeClass('colorpicker_focus');�
196			},�
197			clickSubmit = function (ev) {�
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) {�
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) {�
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) {�
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;�
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) {�
303					�
304				}�
305				hsb.s = max != 0 ? 255 * delta / max : 0;�
306				if (hsb.s != 0) {�
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) {�
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;�
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) {�
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) {�
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) {�
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})(jQuery)

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.