1 /* Plugin for jQuery for working with colors.
5 * Inspiration from jQuery color animation plugin by John Resig.
7 * Released under the MIT license by Ole Laursen, October 2009.
11 * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString()
12 * var c = $.color.extract($("#mydiv"), 'background-color');
13 * console.log(c.r, c.g, c.b, c.a);
14 * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)"
16 * Note that .scale() and .add() return the same modified object
17 * instead of making a new one.
19 * V. 1.1: Fix error handling so e.g. parsing an empty string does
20 * produce a color rather than just crashing.
21 */(function(e
){e
.color
={},e
.color
.make=function(t
,n
,r
,i
){var s
={};return s
.r
=t
||0,s
.g
=n
||0,s
.b
=r
||0,s
.a
=i
!=null?i
:1,s
.add=function(e
,t
){for(var n
=0;n
<e
.length
;++n
)s
[e
.charAt(n
)]+=t
;return s
.normalize()},s
.scale=function(e
,t
){for(var n
=0;n
<e
.length
;++n
)s
[e
.charAt(n
)]*=t
;return s
.normalize()},s
.toString=function(){return s
.a
>=1?"rgb("+[s
.r
,s
.g
,s
.b
].join(",")+")":"rgba("+[s
.r
,s
.g
,s
.b
,s
.a
].join(",")+")"},s
.normalize=function(){function e(e
,t
,n
){return t
<e
?e
:t
>n
?n
:t
}return s
.r
=e(0,parseInt(s
.r
),255),s
.g
=e(0,parseInt(s
.g
),255),s
.b
=e(0,parseInt(s
.b
),255),s
.a
=e(0,s
.a
,1),s
},s
.clone=function(){return e
.color
.make(s
.r
,s
.b
,s
.g
,s
.a
)},s
.normalize()},e
.color
.extract=function(t
,n
){var r
;do{r
=t
.css(n
).toLowerCase();if(r
!=""&&r
!="transparent")break;t
=t
.parent()}while(!e
.nodeName(t
.get(0),"body"));return r
=="rgba(0, 0, 0, 0)"&&(r
="transparent"),e
.color
.parse(r
)},e
.color
.parse=function(n
){var r
,i
=e
.color
.make
;if(r
=/rgb
\(\s
*([0-9]{1,3})\s
*,\s
*([0-9]{1,3})\s
*,\s
*([0-9]{1,3})\s
*\)/.exec(n))return i(parseInt(r[1],10),parseInt(r[2],10),parseInt(r[3],10));if(r=/rgba
\(\s
*([0-9]{1,3})\s
*,\s
*([0-9]{1,3})\s
*,\s
*([0-9]{1,3})\s
*,\s
*([0-9]+(?:\.[0-9]+)?)\s
*\)/.exec(n))return i(parseInt(r[1],10),parseInt(r[2],10),parseInt(r[3],10),parseFloat(r[4]));if(r=/rgb
\(\s
*([0-9]+(?:\.[0-9]+)?)\%\s
*,\s
*([0-9]+(?:\.[0-9]+)?)\%\s
*,\s
*([0-9]+(?:\.[0-9]+)?)\%\s
*\)/.exec(n))return i(parseFloat(r[1])*2.55,parseFloat(r[2])*2.55,parseFloat(r[3])*2.55);if(r=/rgba
\(\s
*([0-9]+(?:\.[0-9]+)?)\%\s
*,\s
*([0-9]+(?:\.[0-9]+)?)\%\s
*,\s
*([0-9]+(?:\.[0-9]+)?)\%\s
*,\s
*([0-9]+(?:\.[0-9]+)?)\s
*\)/.exec(n))return i(parseFloat(r[1])*2.55,parseFloat(r[2])*2.55,parseFloat(r[3])*2.55,parseFloat(r[4]));if(r=/#([a
-fA
-F0
-9]{2})([a
-fA
-F0
-9]{2})([a
-fA
-F0
-9]{2})/.exec(n))return i(parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16));if(r=/#([a
-fA
-F0
-9])([a
-fA
-F0
-9])([a
-fA
-F0
-9])/.exec(n
))return i(parseInt(r
[1]+r
[1],16),parseInt(r
[2]+r
[2],16),parseInt(r
[3]+r
[3],16));var s
=e
.trim(n
).toLowerCase();return s
=="transparent"?i(255,255,255,0):(r
=t
[s
]||[0,0,0],i(r
[0],r
[1],r
[2]))};var t
={aqua
:[0,255,255],azure
:[240,255,255],beige
:[245,245,220],black
:[0,0,0],blue
:[0,0,255],brown
:[165,42,42],cyan
:[0,255,255],darkblue
:[0,0,139],darkcyan
:[0,139,139],darkgrey
:[169,169,169],darkgreen
:[0,100,0],darkkhaki
:[189,183,107],darkmagenta
:[139,0,139],darkolivegreen
:[85,107,47],darkorange
:[255,140,0],darkorchid
:[153,50,204],darkred
:[139,0,0],darksalmon
:[233,150,122],darkviolet
:[148,0,211],fuchsia
:[255,0,255],gold
:[255,215,0],green
:[0,128,0],indigo
:[75,0,130],khaki
:[240,230,140],lightblue
:[173,216,230],lightcyan
:[224,255,255],lightgreen
:[144,238,144],lightgrey
:[211,211,211],lightpink
:[255,182,193],lightyellow
:[255,255,224],lime
:[0,255,0],magenta
:[255,0,255],maroon
:[128,0,0],navy
:[0,0,128],olive
:[128,128,0],orange
:[255,165,0],pink
:[255,192,203],purple
:[128,0,128],violet
:[128,0,128],red
:[255,0,0],silver
:[192,192,192],white
:[255,255,255],yellow
:[255,255,0]}})(jQuery
);