4d844b0583d8a6f3d71c6360ce1b2529ad82d978
2 var twoPI
= Math
.PI
* 2;
3 var amplification
= 10;
5 var calcAlpha
= function (target
, lightness
) {
6 return Math
.max(1.0 - (Math
.abs(lightness
- target
) * amplification
), 0);
9 var makeColorDiv
= function (name
) {
10 var c
= Color
.fromName(name
);
12 var r
= hsl
.s
* radius
;
13 var e
= DIV({"style": {
14 "color": Color
.fromHSL(hsl
).toString(),
17 "position": "absolute",
18 "verticalAlign": "middle",
19 "textAlign": "center",
20 "left": Math
.floor((Math
.cos(hsl
.h
* twoPI
) * r
) - 50) + "px",
21 "top": Math
.floor((Math
.sin(hsl
.h
* twoPI
) * r
)) + "px"
29 var colorWheelOnLoad
= function () {
31 var colors
= Color
.namedColors();
33 for (var k
in colors
) {
35 if (val
in seenColors
) {
38 colorDivs
.push(makeColorDiv(k
));
42 DIV(null, map(itemgetter(1), colorDivs
))
44 var colorCanary
= DIV({"style":{"color": "blue"}}, "");
46 colorCanary
.style
.color
= "rgba(100,100,100,0.5)";
51 // Check for CSS3 HSL support
52 if (colorCanary
.style
.color
== "blue") {
53 var bgColor
= Color
.fromBackground();
54 colorFunc
= function (color
, alpha
) {
55 return bgColor
.blendedColor(color
, alpha
).toHexString();
58 colorFunc
= function (color
, alpha
) {
59 return color
.colorWithAlpha(alpha
).toRGBString();
62 // Per-frame animation
63 var intervalFunc
= function (cycle
, timeout
) {
64 var target
= 0.5 + (0.5 * Math
.sin(Math
.PI
* (cycle
/ 180)));
65 for (var i
= 0; i
< colorDivs
.length
; i
++) {
66 var cd
= colorDivs
[i
];
68 var alpha
= calcAlpha(target
, color
.asHSL().l
);
69 var style
= cd
[1].style
;
71 style
.display
= "none";
74 style
.color
= colorFunc(color
, alpha
);
77 callLater(timeout
, arguments
.callee
, cycle
+ 2, timeout
);
83 addLoadEvent(colorWheelOnLoad
);
85 // rewrite the view-source links
86 addLoadEvent(function () {
87 var elems
= getElementsByTagAndClassName("A", "view-source");
88 var page
= "color_wheel/";
89 for (var i
= 0; i
< elems
.length
; i
++) {
91 var href
= elem
.href
.split(/\//).pop();
92 elem
.target
= "_blank";
93 elem
.href
= "../view-source/view-source.html#" + page
+ href
;