(function($){
	
	$.color = function(str) {
		
		var rgb, hex, keyword;
		
		str = str.replace(/\s+/g, '').toLowerCase();
			
		if(keyword = keywords[str])
			return $.extend({}, keyword);
			
		if(rgb = str.match(/^rgb\((\d{1,3}\%),(\d{1,3}\%),(\d{1,3}\%)\)$/i))
			return {
				r: Math.round((parseFloat(rgb[1], 10) / 100) * 255),
				g: Math.round((parseFloat(rgb[2], 10) / 100) * 255),
				b: Math.round((parseFloat(rgb[3], 10) / 100) * 255)
			};
		
		if(rgb = str.match(/rgba?\((\d+),(\d+),(\d+)(,\d+)?\)/)) 
			return {
				r: parseFloat(rgb[1], 10),
				g: parseFloat(rgb[2], 10),
				b: parseFloat(rgb[3], 10)
			};
				
		if(hex = str.replace(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i,'#$1$1$2$2$3$3').match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i)) 
			return {
				r: parseInt(hex[1], 16),
				g: parseInt(hex[2], 16),
				b: parseInt(hex[3], 16)
			};
		
	};
	
	$.color.rgb = function(str) {
		var c = $.color(str);
		return c && to_rgb.apply(c);
	};
	
	$.color.hex = function(str) {
		var c = $.color(str);
		return c && to_hex.apply(c);
	};
	
	function to_rgb() {
		var r = this.r || 0,
			g = this.g || 0,
			b = this.b || 0;
		return 'rgb(' + r + ',' + g + ',' + b + ')';		
	};
	
	function to_hex() {
		var rr = (this.r ? this.r.toString(16) : '00'),
			gg = (this.g ? this.g.toString(16) : '00'),
			bb = (this.b ? this.b.toString(16) : '00');
		return '#' + rr + gg + bb;	
	};
	
	var keywords = {
		aqua:    { r:   0, g: 255, b: 255 }, //  (#00ffff)
		black:   { r:   0, g:   0, b:   0 }, //  (#000000)
		blue:    { r:   0, g:   0, b: 255 }, //  (#0000ff)
		fuchsia: { r: 255, g:   0, b: 255 }, //  (#ff00ff)
		gray:    { r: 127, g: 127, b: 127 }, //  (#808080)
		green:   { r:   0, g: 127, b:   0 }, //  (#008000)
		lime:    { r:   0, g: 255, b:   0 }, //  (#00ff00)
		maroon:  { r: 127, g:   0, b:   0 }, //  (#800000)
		navy:    { r:   0, g:   0, b: 127 }, //  (#000080)
		olive:   { r: 127, g: 127, b:   0 }, //  (#808000)		
		purple:  { r: 127, g:   0, b: 127 }, //  (#800080)
		red:     { r: 255, g:   0, b:   0 }, //  (#ff0000)
		silver:  { r: 192, g: 192, b: 192 }, //  (#c0c0c0)
		orange:  { r: 255, g: 165, b:   0 }, //  (#ffa500)
		teal:    { r:   0, g: 127, b: 127 }, //  (#008080)
		white:   { r: 255, g: 255, b: 255 }, //  (#ffffff)
		yellow:  { r: 255, g: 255, b:   0 }  //  (#ffff00) 
	};	
	
})(jQuery);


















