-if(typeof (dojo)!="undefined"){
-dojo.provide("MochiKit.Color");
-dojo.require("MochiKit.Base");
-}
-if(typeof (JSAN)!="undefined"){
-JSAN.use("MochiKit.Base",[]);
-}
-try{
-if(typeof (MochiKit.Base)=="undefined"){
-throw "";
-}
-}
-catch(e){
-throw "MochiKit.Color depends on MochiKit.Base";
-}
-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(red,_14e,blue,_150){
-if(typeof (_150)=="undefined"||_150===null){
-_150=1;
-}
-this.rgb={r:red,g:_14e,b:blue,a:_150};
-};
-MochiKit.Color.Color.prototype={__class__:MochiKit.Color.Color,colorWithAlpha:function(_151){
-var rgb=this.rgb;
-var m=MochiKit.Color;
-return m.Color.fromRGB(rgb.r,rgb.g,rgb.b,_151);
-},colorWithHue:function(hue){
-var hsl=this.asHSL();
-hsl.h=hue;
-var m=MochiKit.Color;
-return m.Color.fromHSL(hsl);
-},colorWithSaturation:function(_157){
-var hsl=this.asHSL();
-hsl.s=_157;
-var m=MochiKit.Color;
-return m.Color.fromHSL(hsl);
-},colorWithLightness:function(_15a){
-var hsl=this.asHSL();
-hsl.l=_15a;
-var m=MochiKit.Color;
-return m.Color.fromHSL(hsl);
-},darkerColorWithLevel:function(_15d){
-var hsl=this.asHSL();
-hsl.l=Math.max(hsl.l-_15d,0);
-var m=MochiKit.Color;
-return m.Color.fromHSL(hsl);
-},lighterColorWithLevel:function(_160){
-var hsl=this.asHSL();
-hsl.l=Math.min(hsl.l+_160,1);
-var m=MochiKit.Color;
-return m.Color.fromHSL(hsl);
-},blendedColor:function(_163,_164){
-if(typeof (_164)=="undefined"||_164===null){
-_164=0.5;
-}
-var sf=1-_164;
-var s=this.rgb;
-var d=_163.rgb;
-var df=_164;
-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(_169){
-var a=this.asRGB();
-var b=_169.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 rval=this._hslString;
-if(!rval){
-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;
-rval="hsl("+mid+")";
-}else{
-if(a<=0){
-a=0;
-}
-rval="hsla("+mid+","+a+")";
-}
-this._hslString=rval;
-}
-return rval;
-},toRGBString:function(){
-var c=this.rgb;
-var ccc=MochiKit.Color.clampColorComponent;
-var rval=this._rgbString;
-if(!rval){
-var mid=(ccc(c.r,255).toFixed(0)+","+ccc(c.g,255).toFixed(0)+","+ccc(c.b,255).toFixed(0));
-if(c.a!=1){
-rval="rgba("+mid+","+c.a+")";
-}else{
-rval="rgb("+mid+")";
-}
-this._rgbString=rval;
-}
-return rval;
-},asRGB:function(){
-return MochiKit.Base.clone(this.rgb);
-},toHexString:function(){
-var m=MochiKit.Color;
-var c=this.rgb;
-var ccc=MochiKit.Color.clampColorComponent;
-var rval=this._hexString;
-if(!rval){
-rval=("#"+m.toColorPart(ccc(c.r,255))+m.toColorPart(ccc(c.g,255))+m.toColorPart(ccc(c.b,255)));
-this._hexString=rval;
-}
-return rval;
-},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,_180,blue,_182){
-var _183=MochiKit.Color.Color;
-if(arguments.length==1){
-var rgb=red;
-red=rgb.r;
-_180=rgb.g;
-blue=rgb.b;
-if(typeof (rgb.a)=="undefined"){
-_182=undefined;
-}else{
-_182=rgb.a;
-}
-}
-return new _183(red,_180,blue,_182);
-},fromHSL:function(hue,_186,_187,_188){
-var m=MochiKit.Color;
-return m.Color.fromRGB(m.hslToRGB.apply(m,arguments));
-},fromHSV:function(hue,_18b,_18c,_18d){
-var m=MochiKit.Color;
-return m.Color.fromRGB(m.hsvToRGB.apply(m,arguments));
-},fromName:function(name){
-var _190=MochiKit.Color.Color;
-if(name.charAt(0)=="\""){
-name=name.substr(1,name.length-2);
-}
-var _191=_190._namedColors[name.toLowerCase()];
-if(typeof (_191)=="string"){
-return _190.fromHexString(_191);
-}else{
-if(name=="transparent"){
-return _190.transparentColor();
-}
-}
-return null;
-},fromString:function(_192){
-var self=MochiKit.Color.Color;
-var _194=_192.substr(0,3);
-if(_194=="rgb"){
-return self.fromRGBString(_192);
-}else{
-if(_194=="hsl"){
-return self.fromHSLString(_192);
-}else{
-if(_192.charAt(0)=="#"){
-return self.fromHexString(_192);
-}
-}
-}
-return self.fromName(_192);
-},fromHexString:function(_195){
-if(_195.charAt(0)=="#"){
-_195=_195.substring(1);
-}
-var _196=[];
-var i,hex;
-if(_195.length==3){
-for(i=0;i<3;i++){
-hex=_195.substr(i,1);
-_196.push(parseInt(hex+hex,16)/255);
-}
-}else{
-for(i=0;i<6;i+=2){
-hex=_195.substr(i,2);
-_196.push(parseInt(hex,16)/255);
-}
-}
-var _199=MochiKit.Color.Color;
-return _199.fromRGB.apply(_199,_196);
-},_fromColorString:function(pre,_19b,_19c,_19d){
-if(_19d.indexOf(pre)===0){
-_19d=_19d.substring(_19d.indexOf("(",3)+1,_19d.length-1);
-}
-var _19e=_19d.split(/\s*,\s*/);
-var _19f=[];
-for(var i=0;i<_19e.length;i++){
-var c=_19e[i];
-var val;
-var _1a3=c.substring(c.length-3);
-if(c.charAt(c.length-1)=="%"){
-val=0.01*parseFloat(c.substring(0,c.length-1));
-}else{
-if(_1a3=="deg"){
-val=parseFloat(c)/360;
-}else{
-if(_1a3=="rad"){
-val=parseFloat(c)/(Math.PI*2);
-}else{
-val=_19c[i]*parseFloat(c);
-}
-}
-}
-_19f.push(val);
-}
-return this[_19b].apply(this,_19f);
-},fromBackground:function(elem){
-var cls=MochiKit.Color.Color;
-return cls.fromComputedStyle(elem,"backgroundColor","background-color")||cls.whiteColor();
-},fromText:function(elem){
-var cls=MochiKit.Color.Color;
-return cls.fromComputedStyle(elem,"color","color")||cls.blackColor();
-},namedColors:function(){
-return MochiKit.Base.clone(MochiKit.Color.Color._namedColors);
-}});
-MochiKit.Base.update(MochiKit.Color,{clampColorComponent:function(v,_1a9){
-v*=_1a9;
-if(v<0){
-return 0;
-}else{
-if(v>_1a9){
-return _1a9;
-}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,_1af,_1b0,_1b1){
-if(arguments.length==1){
-var hsv=hue;
-hue=hsv.h;
-_1af=hsv.s;
-_1b0=hsv.v;
-_1b1=hsv.a;
-}
-var red;
-var _1b4;
-var blue;
-if(_1af===0){
-red=_1b0;
-_1b4=_1b0;
-blue=_1b0;
-}else{
-var i=Math.floor(hue*6);
-var f=(hue*6)-i;
-var p=_1b0*(1-_1af);
-var q=_1b0*(1-(_1af*f));
-var t=_1b0*(1-(_1af*(1-f)));
-switch(i){
-case 1:
-red=q;
-_1b4=_1b0;
-blue=p;
-break;
-case 2:
-red=p;
-_1b4=_1b0;
-blue=t;
-break;
-case 3:
-red=p;
-_1b4=q;
-blue=_1b0;
-break;
-case 4:
-red=t;
-_1b4=p;
-blue=_1b0;
-break;
-case 5:
-red=_1b0;
-_1b4=p;
-blue=q;
-break;
-case 6:
-case 0:
-red=_1b0;
-_1b4=t;
-blue=p;
-break;
-}
-}
-return {r:red,g:_1b4,b:blue,a:_1b1};
-},hslToRGB:function(hue,_1bc,_1bd,_1be){
-if(arguments.length==1){
-var hsl=hue;
-hue=hsl.h;
-_1bc=hsl.s;
-_1bd=hsl.l;
-_1be=hsl.a;
-}
-var red;
-var _1c1;
-var blue;
-if(_1bc===0){
-red=_1bd;
-_1c1=_1bd;
-blue=_1bd;
-}else{
-var m2;
-if(_1bd<=0.5){
-m2=_1bd*(1+_1bc);
-}else{
-m2=_1bd+_1bc-(_1bd*_1bc);
-}
-var m1=(2*_1bd)-m2;
-var f=MochiKit.Color._hslValue;
-var h6=hue*6;
-red=f(m1,m2,h6+2);
-_1c1=f(m1,m2,h6);
-blue=f(m1,m2,h6-2);
-}
-return {r:red,g:_1c1,b:blue,a:_1be};
-},rgbToHSV:function(red,_1c8,blue,_1ca){
-if(arguments.length==1){
-var rgb=red;
-red=rgb.r;
-_1c8=rgb.g;
-blue=rgb.b;
-_1ca=rgb.a;
-}
-var max=Math.max(Math.max(red,_1c8),blue);
-var min=Math.min(Math.min(red,_1c8),blue);
-var hue;
-var _1cf;
-var _1d0=max;
-if(min==max){
-hue=0;
-_1cf=0;
-}else{
-var _1d1=(max-min);
-_1cf=_1d1/max;
-if(red==max){
-hue=(_1c8-blue)/_1d1;
-}else{
-if(_1c8==max){
-hue=2+((blue-red)/_1d1);
-}else{
-hue=4+((red-_1c8)/_1d1);
-}
-}
-hue/=6;
-if(hue<0){
-hue+=1;
-}
-if(hue>1){
-hue-=1;
-}
-}
-return {h:hue,s:_1cf,v:_1d0,a:_1ca};
-},rgbToHSL:function(red,_1d3,blue,_1d5){
-if(arguments.length==1){
-var rgb=red;
-red=rgb.r;
-_1d3=rgb.g;
-blue=rgb.b;
-_1d5=rgb.a;
-}
-var max=Math.max(red,Math.max(_1d3,blue));
-var min=Math.min(red,Math.min(_1d3,blue));
-var hue;
-var _1da;
-var _1db=(max+min)/2;
-var _1dc=max-min;
-if(_1dc===0){
-hue=0;
-_1da=0;
-}else{
-if(_1db<=0.5){
-_1da=_1dc/(max+min);
-}else{
-_1da=_1dc/(2-max-min);
-}
-if(red==max){
-hue=(_1d3-blue)/_1dc;
-}else{
-if(_1d3==max){
-hue=2+((blue-red)/_1dc);
-}else{
-hue=4+((red-_1d3)/_1dc);
-}
-}
-hue/=6;
-if(hue<0){
-hue+=1;
-}
-if(hue>1){
-hue-=1;
-}
-}
-return {h:hue,s:_1da,l:_1db,a:_1d5};
-},toColorPart:function(num){
-num=Math.round(num);
-var _1de=num.toString(16);
-if(num<16){
-return "0"+_1de;
-}
-return _1de;
-},__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 _1e0=1/3;
-var _1e1={black:[0,0,0],blue:[0,0,1],brown:[0.6,0.4,0.2],cyan:[0,1,1],darkGray:[_1e0,_1e0,_1e0],gray:[0.5,0.5,0.5],green:[0,1,0],lightGray:[2*_1e0,2*_1e0,2*_1e0],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 _1e2=function(name,r,g,b,a){
-var rval=this.fromRGB(r,g,b,a);
-this[name]=function(){
-return rval;
-};
-return rval;
-};
-for(var k in _1e1){
-var name=k+"Color";
-var _1eb=m.concat([_1e2,this.Color,name],_1e1[k]);
-this.Color[name]=m.bind.apply(null,_1eb);
-}
-var _1ec=function(){
-for(var i=0;i<arguments.length;i++){
-if(!(arguments[i] instanceof Color)){
-return false;
-}
-}
-return true;
-};
-var _1ee=function(a,b){
-return a.compareRGB(b);
-};
-m.nameFunctions(this);
-m.registerComparator(this.Color.NAME,_1ec,_1ee);
-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"};