Open-Source PHP Framework - Designed for rapid development of performance-oriented scalable applications

/webroot/js/tinymce/themes/advanced/js/color_picker.js

[return to app]
1 tinyMCEPopup.requireLangPack();
2
3 var 
detail 50strhex "0123456789abcdef"iisMouseDown falseisMouseOver false;
4
5 var 
colors = [
6     
"#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
7     
"#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",
8     
"#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",
9     
"#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",
10     
"#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",
11     
"#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",
12     
"#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",
13     
"#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",
14     
"#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",
15     
"#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",
16     
"#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",
17     
"#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",
18     
"#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",
19     
"#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",
20     
"#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",
21     
"#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",
22     
"#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",
23     
"#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",
24     
"#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",
25     
"#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",
26     
"#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",
27     
"#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",
28     
"#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",
29     
"#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",
30     
"#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",
31     
"#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",
32     
"#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"
33
];
34
35 var 
named = {
36     
'#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC
 '
:'Beige',
37     
'#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A'
 
:'Brown',
38     
'#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495
 ED'
:'CornflowerBlue',
39     
'#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'Da
 rkGoldenRod'
,
40     
'#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#5
 56B2F'
:'DarkOliveGreen',
41     
'#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen'
 
,'#483D8B':'DarkSlateBlue',
42     
'#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'D
 eepPink'
,'#00BFFF':'DeepSkyBlue',
43     
'#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#22
 8B22'
:'ForestGreen',
44     
'#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080'
 
:'Gray','#808080':'Grey',
45     
'#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082
 '
:'Indigo','#FFFFF0':'Ivory',
46     
'#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','
 #ADD8E6'
:'LightBlue',
47     
'#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'Li
 ghtGrey'
,'#90EE90':'LightGreen',
48     
'#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'Light
 SlateGray'
,'#778899':'LightSlateGrey',
49     
'#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF0
 0FF'
:'Magenta','#800000':'Maroon',
50     
'#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'
 MediumSeaGreen'
,'#7B68EE':'MediumSlateBlue',
51     
'#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#
 F5FFFA'
:'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin',
52     
'#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'O
 range'
,'#FF4500':'OrangeRed','#DA70D6':'Orchid',
53     
'#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'Pa
 payaWhip'
,'#FFDAB9':'PeachPuff',
54     
'#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC
 8F8F'
:'RosyBrown','#4169E1':'RoyalBlue',
55     
'#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A05
 22D'
:'Sienna','#C0C0C0':'Silver',
56     
'#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':
 
'SpringGreen',
57     
'#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquois
 e'
,'#EE82EE':'Violet',
58     
'#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen'
59
};
60
61 function 
init() {
62     var 
inputColor convertRGBToHex(tinyMCEPopup.getWindowArg('input_color'));
63
64     
tinyMCEPopup.resizeToInnerSize();
65
66     
generatePicker();
67
68     if (
inputColor) {
69         
changeFinalColor(inputColor);
70
71         
col convertHexToRGB(inputColor);
72
73         if (
col)
74             
updateLight(col.rcol.gcol.b);
75     }
76 }
77
78 function 
insertAction() {
79     var 
color document.getElementById("color").valuetinyMCEPopup.getWindowArg('func');
80
81     
tinyMCEPopup.restoreSelection();
82
83     if (
f)
84         
f(color);
85
86     
tinyMCEPopup.close();
87 }
88
89 function 
showColor(colorname) {
90     if (
name)
91         
document.getElementById("colorname").innerHTML name;
92
93     
document.getElementById("preview").style.backgroundColor color;
94     
document.getElementById("color").value color.toLowerCase();
95 }
96
97 function 
convertRGBToHex(col) {
98     var 
re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)""gi");
99
100     if (!
col)
101         return 
col;
102
103     var 
rgb col.replace(re"$1,$2,$3").split(',');
104     if (
rgb.length == 3) {
105         
parseInt(rgb[0]).toString(16);
106         
parseInt(rgb[1]).toString(16);
107         
parseInt(rgb[2]).toString(16);
108
109         
r.length == '0' r;
110         
g.length == '0' g;
111         
b.length == '0' b;
112
113         return 
"#" b;
114     }
115
116     return 
col;
117 }
118
119 function 
convertHexToRGB(col) {
120     if (
col.indexOf('#') != -1) {
121         
col col.replace(new RegExp('[^0-9A-F]''gi'), '');
122
123         
parseInt(col.substring(02), 16);
124         
parseInt(col.substring(24), 16);
125         
parseInt(col.substring(46), 16);
126
127         return {
rgb};
128     }
129
130     return 
null;
131 }
132
133 function 
generatePicker() {
134     var 
el document.getElementById('light'), ''i;
135
136     for (
0detaili++){
137         
+= '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none;
 border-width:0px;"'
138         
' onclick="changeFinalColor(this.style.backgroundColor)"'
139         
' onmousedown="isMouseDown = true; return false;"'
140         
' onmouseup="isMouseDown = false;"'
141         
' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'
142         
' onmouseover="isMouseOver = true;"'
143         
' onmouseout="isMouseOver = false;"'
144         
'></div>';
145     }
146
147     
el.innerHTML h;
148 }
149
150 function 
generateWebColors() {
151     var 
el document.getElementById('webcolors'), ''i;
152
153     if (
el.className == 'generated')
154         return;
155
156     
+= '<table border="0" cellspacing="1" cellpadding="0">'
157         
'<tr>';
158
159     for (
i=0i<colors.lengthi++) {
160         
+= '<td bgcolor="' colors[i] + '" width="10" height="10">'
161             
'<a href="javascript:insertAction();" onfocus="showColor(\'' colors[i] +  '\');" onmouseover="showColor(\''
 
colors[i] +  '\');" style="display:block;width:10px;height:10px;overflow:hidden;">'
162             
'</a></td>';
163         if ((
i+1) % 18 == 0)
164             
+= '</tr><tr>';
165     }
166
167     
+= '</table>';
168
169     
el.innerHTML h;
170     
el.className 'generated';
171 }
172
173 function 
generateNamedColors() {
174     var 
el document.getElementById('namedcolors'), ''nv0;
175
176     if (
el.className == 'generated')
177         return;
178
179     for (
n in named) {
180         
named[n];
181         
+= '<a href="javascript:insertAction();" onmouseover="showColor(\'' +  '\',\'' '\');"
 style="background-color: ' 
'"><!-- IE --></a>'
182     
}
183
184     
el.innerHTML h;
185     
el.className 'generated';
186 }
187
188 function 
dechex(n) {
189     return 
strhex.charAt(Math.floor(16)) + strhex.charAt(16);
190 }
191
192 function 
computeColor(e) {
193     var 
xypartWidthpartDetailimHeightrgbcoefifinalCoeffinalRfinalGfinalB;
194
195     
e.offsetX e.offsetX : (e.target e.clientX e.target.0);
196     
e.offsetY e.offsetY : (e.target e.clientY e.target.0);
197
198     
partWidth document.getElementById('colors').width 6;
199     
partDetail detail 2;
200     
imHeight document.getElementById('colors').height;
201
202     
= (>= 0)*(partWidth)*255 + (>= partWidth)*(2*partWidth)*(2*255 255 partWidth) + (>=
 
4*partWidth)*(5*partWidth)*(-4*255 255 partWidth) + (>= 5*partWidth)*(6*partWidth)*255;
203     
= (>= 0)*(partWidth)*(255 partWidth) + (>= partWidth)*(3*partWidth)*255    + (>=
 
3*partWidth)*(4*partWidth)*(4*255 255 partWidth);
204     
= (>= 2*partWidth)*(3*partWidth)*(-2*255 255 partWidth) + (>= 3*partWidth)*(<
 
5*partWidth)*255 + (>= 5*partWidth)*(6*partWidth)*(6*255 255 partWidth);
205
206     
coef = (imHeight y) / imHeight;
207     
128 + (128) * coef;
208     
128 + (128) * coef;
209     
128 + (128) * coef;
210
211     
changeFinalColor('#' dechex(r) + dechex(g) + dechex(b));
212     
updateLight(rgb);
213 }
214
215 function 
updateLight(rgb) {
216     var 
ipartDetail detail 2finalCoeffinalRfinalGfinalBcolor;
217
218     for (
i=0i<detaili++) {
219         if ((
i>=0) && (i<partDetail)) {
220             
finalCoef partDetail;
221             
finalR dechex(255 - (255 r) * finalCoef);
222             
finalG dechex(255 - (255 g) * finalCoef);
223             
finalB dechex(255 - (255 b) * finalCoef);
224         } else {
225             
finalCoef partDetail;
226             
finalR dechex(finalCoef);
227             
finalG dechex(finalCoef);
228             
finalB dechex(finalCoef);
229         }
230
231         
color finalR finalG finalB;
232
233         
setCol('gs' i'#'+color);
234     }
235 }
236
237 function 
changeFinalColor(color) {
238     if (
color.indexOf('#') == -1)
239         
color convertRGBToHex(color);
240
241     
setCol('preview'color);
242     
document.getElementById('color').value color;
243 }
244
245 function 
setCol(ec) {
246     try {
247         
document.getElementById(e).style.backgroundColor c;
248     } catch (
ex) {
249         
// Ignore IE warning
250     
}
251 }
252
253
tinyMCEPopup.onInit.add(init);
254