/* Packed
 *
 * libs/mochikit/Color.js
 *
 */
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Color");
dojo.require("MochiKit.Base");
dojo.require("MochiKit.DOM");
dojo.require("MochiKit.Style");
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit.Base",[]);
JSAN.use("MochiKit.DOM",[]);
JSAN.use("MochiKit.Style",[]);
}
try{
if(typeof (MochiKit.Base)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Color depends on MochiKit.Base";
}
try{
if(typeof (MochiKit.DOM)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Color depends on MochiKit.DOM";
}
try{
if(typeof (MochiKit.Style)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Color depends on MochiKit.Style";
}
if(typeof (MochiKit.Color)=="undefined"){
MochiKit.Color={};
}
MochiKit.Color.NAME="MochiKit.Color";
MochiKit.Color.VERSION="1.4";
MochiKit.Color.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.Color.toString=function(){
return this.__repr__();
};
MochiKit.Color.Color=function(_1,_2,_3,_4){
if(typeof (_4)=="undefined"||_4===null){
_4=1;
}
this.rgb={r:_1,g:_2,b:_3,a:_4};
};
MochiKit.Color.Color.prototype={__class__:MochiKit.Color.Color,colorWithAlpha:function(_5){
var _6=this.rgb;
var m=MochiKit.Color;
return m.Color.fromRGB(_6.r,_6.g,_6.b,_5);
},colorWithHue:function(_8){
var _9=this.asHSL();
_9.h=_8;
var m=MochiKit.Color;
return m.Color.fromHSL(_9);
},colorWithSaturation:function(_b){
var _c=this.asHSL();
_c.s=_b;
var m=MochiKit.Color;
return m.Color.fromHSL(_c);
},colorWithLightness:function(_e){
var _f=this.asHSL();
_f.l=_e;
var m=MochiKit.Color;
return m.Color.fromHSL(_f);
},darkerColorWithLevel:function(_11){
var hsl=this.asHSL();
hsl.l=Math.max(hsl.l-_11,0);
var m=MochiKit.Color;
return m.Color.fromHSL(hsl);
},lighterColorWithLevel:function(_14){
var hsl=this.asHSL();
hsl.l=Math.min(hsl.l+_14,1);
var m=MochiKit.Color;
return m.Color.fromHSL(hsl);
},blendedColor:function(_17,_18){
if(typeof (_18)=="undefined"||_18===null){
_18=0.5;
}
var sf=1-_18;
var s=this.rgb;
var d=_17.rgb;
var df=_18;
return MochiKit.Color.Color.fromRGB((s.r*sf)+(d.r*df),(s.g*sf)+(d.g*df),(s.b*sf)+(d.b*df),(s.a*sf)+(d.a*df));
},compareRGB:function(_1d){
var a=this.asRGB();
var b=_1d.asRGB();
return MochiKit.Base.compare([a.r,a.g,a.b,a.a],[b.r,b.g,b.b,b.a]);
},isLight:function(){
return this.asHSL().b>0.5;
},isDark:function(){
return (!this.isLight());
},toHSLString:function(){
var c=this.asHSL();
var ccc=MochiKit.Color.clampColorComponent;
var _22=this._hslString;
if(!_22){
var mid=(ccc(c.h,360).toFixed(0)+","+ccc(c.s,100).toPrecision(4)+"%"+","+ccc(c.l,100).toPrecision(4)+"%");
var a=c.a;
if(a>=1){
a=1;
_22="hsl("+mid+")";
}else{
if(a<=0){
a=0;
}
_22="hsla("+mid+","+a+")";
}
this._hslString=_22;
}
return _22;
},toRGBString:function(){
var c=this.rgb;
var ccc=MochiKit.Color.clampColorComponent;
var _27=this._rgbString;
if(!_27){
var mid=(ccc(c.r,255).toFixed(0)+","+ccc(c.g,255).toFixed(0)+","+ccc(c.b,255).toFixed(0));
if(c.a!=1){
_27="rgba("+mid+","+c.a+")";
}else{
_27="rgb("+mid+")";
}
this._rgbString=_27;
}
return _27;
},asRGB:function(){
return MochiKit.Base.clone(this.rgb);
},toHexString:function(){
var m=MochiKit.Color;
var c=this.rgb;
var ccc=MochiKit.Color.clampColorComponent;
var _2c=this._hexString;
if(!_2c){
_2c=("#"+m.toColorPart(ccc(c.r,255))+m.toColorPart(ccc(c.g,255))+m.toColorPart(ccc(c.b,255)));
this._hexString=_2c;
}
return _2c;
},asHSV:function(){
var hsv=this.hsv;
var c=this.rgb;
if(typeof (hsv)=="undefined"||hsv===null){
hsv=MochiKit.Color.rgbToHSV(this.rgb);
this.hsv=hsv;
}
return MochiKit.Base.clone(hsv);
},asHSL:function(){
var hsl=this.hsl;
var c=this.rgb;
if(typeof (hsl)=="undefined"||hsl===null){
hsl=MochiKit.Color.rgbToHSL(this.rgb);
this.hsl=hsl;
}
return MochiKit.Base.clone(hsl);
},toString:function(){
return this.toRGBString();
},repr:function(){
var c=this.rgb;
var col=[c.r,c.g,c.b,c.a];
return this.__class__.NAME+"("+col.join(", ")+")";
}};
MochiKit.Base.update(MochiKit.Color.Color,{fromRGB:function(red,_34,_35,_36){
var _37=MochiKit.Color.Color;
if(arguments.length==1){
var rgb=red;
red=rgb.r;
_34=rgb.g;
_35=rgb.b;
if(typeof (rgb.a)=="undefined"){
_36=undefined;
}else{
_36=rgb.a;
}
}
return new _37(red,_34,_35,_36);
},fromHSL:function(hue,_3a,_3b,_3c){
var m=MochiKit.Color;
return m.Color.fromRGB(m.hslToRGB.apply(m,arguments));
},fromHSV:function(hue,_3f,_40,_41){
var m=MochiKit.Color;
return m.Color.fromRGB(m.hsvToRGB.apply(m,arguments));
},fromName:function(_43){
var _44=MochiKit.Color.Color;
if(_43.charAt(0)=="\""){
_43=_43.substr(1,_43.length-2);
}
var _45=_44._namedColors[_43.toLowerCase()];
if(typeof (_45)=="string"){
return _44.fromHexString(_45);
}else{
if(_43=="transparent"){
return _44.transparentColor();
}
}
return null;
},fromString:function(_46){
var _47=MochiKit.Color.Color;
var _48=_46.substr(0,3);
if(_48=="rgb"){
return _47.fromRGBString(_46);
}else{
if(_48=="hsl"){
return _47.fromHSLString(_46);
}else{
if(_46.charAt(0)=="#"){
return _47.fromHexString(_46);
}
}
}
return _47.fromName(_46);
},fromHexString:function(_49){
if(_49.charAt(0)=="#"){
_49=_49.substring(1);
}
var _4a=[];
var i,hex;
if(_49.length==3){
for(i=0;i<3;i++){
hex=_49.substr(i,1);
_4a.push(parseInt(hex+hex,16)/255);
}
}else{
for(i=0;i<6;i+=2){
hex=_49.substr(i,2);
_4a.push(parseInt(hex,16)/255);
}
}
var _4d=MochiKit.Color.Color;
return _4d.fromRGB.apply(_4d,_4a);
},_fromColorString:function(pre,_4f,_50,_51){
if(_51.indexOf(pre)===0){
_51=_51.substring(_51.indexOf("(",3)+1,_51.length-1);
}
var _52=_51.split(/\s*,\s*/);
var _53=[];
for(var i=0;i<_52.length;i++){
var c=_52[i];
var val;
var _57=c.substring(c.length-3);
if(c.charAt(c.length-1)=="%"){
val=0.01*parseFloat(c.substring(0,c.length-1));
}else{
if(_57=="deg"){
val=parseFloat(c)/360;
}else{
if(_57=="rad"){
val=parseFloat(c)/(Math.PI*2);
}else{
val=_50[i]*parseFloat(c);
}
}
}
_53.push(val);
}
return this[_4f].apply(this,_53);
},fromComputedStyle:function(_58,_59){
var d=MochiKit.DOM;
var cls=MochiKit.Color.Color;
for(_58=d.getElement(_58);_58;_58=_58.parentNode){
var _5c=MochiKit.Style.getStyle.apply(d,arguments);
if(!_5c){
continue;
}
var _5d=cls.fromString(_5c);
if(!_5d){
break;
}
if(_5d.asRGB().a>0){
return _5d;
}
}
return null;
},fromBackground:function(_5e){
var cls=MochiKit.Color.Color;
return cls.fromComputedStyle(_5e,"backgroundColor","background-color")||cls.whiteColor();
},fromText:function(_60){
var cls=MochiKit.Color.Color;
return cls.fromComputedStyle(_60,"color","color")||cls.blackColor();
},namedColors:function(){
return MochiKit.Base.clone(MochiKit.Color.Color._namedColors);
}});
MochiKit.Base.update(MochiKit.Color,{clampColorComponent:function(v,_63){
v*=_63;
if(v<0){
return 0;
}else{
if(v>_63){
return _63;
}else{
return v;
}
}
},_hslValue:function(n1,n2,hue){
if(hue>6){
hue-=6;
}else{
if(hue<0){
hue+=6;
}
}
var val;
if(hue<1){
val=n1+(n2-n1)*hue;
}else{
if(hue<3){
val=n2;
}else{
if(hue<4){
val=n1+(n2-n1)*(4-hue);
}else{
val=n1;
}
}
}
return val;
},hsvToRGB:function(hue,_69,_6a,_6b){
if(arguments.length==1){
var hsv=hue;
hue=hsv.h;
_69=hsv.s;
_6a=hsv.v;
_6b=hsv.a;
}
var red;
var _6e;
var _6f;
if(_69===0){
red=0;
_6e=0;
_6f=0;
}else{
var i=Math.floor(hue*6);
var f=(hue*6)-i;
var p=_6a*(1-_69);
var q=_6a*(1-(_69*f));
var t=_6a*(1-(_69*(1-f)));
switch(i){
case 1:
red=q;
_6e=_6a;
_6f=p;
break;
case 2:
red=p;
_6e=_6a;
_6f=t;
break;
case 3:
red=p;
_6e=q;
_6f=_6a;
break;
case 4:
red=t;
_6e=p;
_6f=_6a;
break;
case 5:
red=_6a;
_6e=p;
_6f=q;
break;
case 6:
case 0:
red=_6a;
_6e=t;
_6f=p;
break;
}
}
return {r:red,g:_6e,b:_6f,a:_6b};
},hslToRGB:function(hue,_76,_77,_78){
if(arguments.length==1){
var hsl=hue;
hue=hsl.h;
_76=hsl.s;
_77=hsl.l;
_78=hsl.a;
}
var red;
var _7b;
var _7c;
if(_76===0){
red=_77;
_7b=_77;
_7c=_77;
}else{
var m2;
if(_77<=0.5){
m2=_77*(1+_76);
}else{
m2=_77+_76-(_77*_76);
}
var m1=(2*_77)-m2;
var f=MochiKit.Color._hslValue;
var h6=hue*6;
red=f(m1,m2,h6+2);
_7b=f(m1,m2,h6);
_7c=f(m1,m2,h6-2);
}
return {r:red,g:_7b,b:_7c,a:_78};
},rgbToHSV:function(red,_82,_83,_84){
if(arguments.length==1){
var rgb=red;
red=rgb.r;
_82=rgb.g;
_83=rgb.b;
_84=rgb.a;
}
var max=Math.max(Math.max(red,_82),_83);
var min=Math.min(Math.min(red,_82),_83);
var hue;
var _89;
var _8a=max;
if(min==max){
hue=0;
_89=0;
}else{
var _8b=(max-min);
_89=_8b/max;
if(red==max){
hue=(_82-_83)/_8b;
}else{
if(_82==max){
hue=2+((_83-red)/_8b);
}else{
hue=4+((red-_82)/_8b);
}
}
hue/=6;
if(hue<0){
hue+=1;
}
if(hue>1){
hue-=1;
}
}
return {h:hue,s:_89,v:_8a,a:_84};
},rgbToHSL:function(red,_8d,_8e,_8f){
if(arguments.length==1){
var rgb=red;
red=rgb.r;
_8d=rgb.g;
_8e=rgb.b;
_8f=rgb.a;
}
var max=Math.max(red,Math.max(_8d,_8e));
var min=Math.min(red,Math.min(_8d,_8e));
var hue;
var _94;
var _95=(max+min)/2;
var _96=max-min;
if(_96===0){
hue=0;
_94=0;
}else{
if(_95<=0.5){
_94=_96/(max+min);
}else{
_94=_96/(2-max-min);
}
if(red==max){
hue=(_8d-_8e)/_96;
}else{
if(_8d==max){
hue=2+((_8e-red)/_96);
}else{
hue=4+((red-_8d)/_96);
}
}
hue/=6;
if(hue<0){
hue+=1;
}
if(hue>1){
hue-=1;
}
}
return {h:hue,s:_94,l:_95,a:_8f};
},toColorPart:function(num){
num=Math.round(num);
var _98=num.toString(16);
if(num<16){
return "0"+_98;
}
return _98;
},__new__:function(){
var m=MochiKit.Base;
this.Color.fromRGBString=m.bind(this.Color._fromColorString,this.Color,"rgb","fromRGB",[1/255,1/255,1/255,1]);
this.Color.fromHSLString=m.bind(this.Color._fromColorString,this.Color,"hsl","fromHSL",[1/360,0.01,0.01,1]);
var _9a=1/3;
var _9b={black:[0,0,0],blue:[0,0,1],brown:[0.6,0.4,0.2],cyan:[0,1,1],darkGray:[_9a,_9a,_9a],gray:[0.5,0.5,0.5],green:[0,1,0],lightGray:[2*_9a,2*_9a,2*_9a],magenta:[1,0,1],orange:[1,0.5,0],purple:[0.5,0,0.5],red:[1,0,0],transparent:[0,0,0,0],white:[1,1,1],yellow:[1,1,0]};
var _9c=function(_9d,r,g,b,a){
var _a2=this.fromRGB(r,g,b,a);
this[_9d]=function(){
return _a2;
};
return _a2;
};
for(var k in _9b){
var _a4=k+"Color";
var _a5=m.concat([_9c,this.Color,_a4],_9b[k]);
this.Color[_a4]=m.bind.apply(null,_a5);
}
var _a6=function(){
for(var i=0;i<arguments.length;i++){
if(!(arguments[i] instanceof Color)){
return false;
}
}
return true;
};
var _a8=function(a,b){
return a.compareRGB(b);
};
m.nameFunctions(this);
m.registerComparator(this.Color.NAME,_a6,_a8);
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
}});
MochiKit.Color.EXPORT=["Color"];
MochiKit.Color.EXPORT_OK=["clampColorComponent","rgbToHSL","hslToRGB","rgbToHSV","hsvToRGB","toColorPart"];
MochiKit.Color.__new__();
MochiKit.Base._exportSymbols(this,MochiKit.Color);
MochiKit.Color.Color._namedColors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};



