﻿easyUI.color = {
	hsb2rgb:function(h,s,b){//HSB转RGB
		var nH,nS,nV,nR,nG,nB,hi,f,p,q,t;
		nH = h/360,nS = s/100,nV = b/100;
		if(!s){
			nR = nV*255|0,nG = nV*255|0,nB = nV*255|0;
			nR = (nR<0)?0:nR,nG = (nG<0)?0:nG,nB = (nB<0)?0:nB;
			return [nR,nG,nB];
		}
		hi = nH*6;
		if(hi == 6){hi = 0;}
		f = hi|0,p = nV * (1 - nS),q = nV * (1 - nS * (hi - f)),t = nV * (1 - nS * (1 - (hi - f)));
		switch(f){
			case 0:nR = nV,nG = t,nB = p;break;
			case 1:nR = q,nG = nV,nB = p;break;
			case 2:nR = p,nG = nV,nB = t;break;
			case 3:nR = p,nG = q,nB = nV;break;
			case 4:nR = t,nG = p,nB = nV;break;
			default:nR = nV,nG = p,nB = q;break;
		}
		nR = nR*255|0,nG = nG*255|0,nB = nB*255|0;
		nR = (nR<0)?0:nR,nG = (nG<0)?0:nG,nB = (nB<0)?0:nB;
		return [nR,nG,nB];
	},
	rgb2hsb:function(r,g,b){//RGB转HSB
		var nH,nS,nV,nR,nG,nB,ndelR,ndelG,ndelB,nmax,nmin,ndelMax;
		nR = r/255,nG = g/255,nB = b/255;
		nmax = Math.max(Math.max(nR,nG),nB),nmin = Math.min(Math.min(nR,nG),nB),ndelMax = nmax-nmin,nV = nmax;
		if(!ndelMax){
			nH = 0,nS = 0,nV = nV*100|0;
			return [nH,nS,nV];
		}
		nS = ndelMax/nmax;
		ndelR = (((nmax - nR) / 6) + (ndelMax / 2)) / ndelMax;
		ndelG = (((nmax - nG) / 6) + (ndelMax / 2)) / ndelMax;
		ndelB = (((nmax - nB) / 6) + (ndelMax / 2)) / ndelMax;
		if(nR == nmax){
			nH = ndelB - ndelG;
		}else if(nG == nmax){
			nH = (1 / 3) + ndelR - ndelB;
		}else if(nB == nmax){
			nH = (2 / 3) + ndelG - ndelR;
		}
		if(nH < 0){nH = nH + 1;}
		if(nH > 1){nH = nH - 1;}
		nH = nH*360|0,nS = nS*100|0,nV = nV*100|0;
		return [nH,nS,nV];
	},
	rgb2hex:function(r,g,b){//RGB转HEX
		r = (r|0).toString(16),g = (g|0).toString(16),b = (b|0).toString(16);
		r = r.length<2?'0'+r:r.length>2?r.substr(0,2):r;
		g = g.length<2?'0'+g:g.length>2?g.substr(0,2):g;
		b = b.length<2?'0'+b:b.length>2?b.substr(0,2):b;
		return '#'+r+''+g+''+b;
	},
	hex2rgb:function(shex){//HEX转RGB
		shex = shex||'#FF0000';
		shex = shex.replace(/\#/g,'');
		var r,g,b,l = shex.length;
		if(l<6){
			r = shex.substr(0,1);
			r = parseInt((r+''+r),16);
			g = shex.substr(1,1);
			g = parseInt((g+''+g),16);
			b = shex.substr(2,1);
			b = parseInt((b+''+b),16);
		}else{
			r = parseInt(shex.substr(0,2),16);
			g = parseInt(shex.substr(2,2),16);
			b = parseInt(shex.substr(4,2),16);
		}
		return [r,g,b];
	},
	isLightColor:function(r,g,b){
		return ((r*0.299+g*0.587+b*0.114) >= 192);
	}
};