//------------------------Hex to RGB---------------------------------------
function HexToR(h) {return parseInt((cutHex(h)).substring(0,2),16)}
function HexToG(h) {return parseInt((cutHex(h)).substring(2,4),16)}
function HexToB(h) {return parseInt((cutHex(h)).substring(4,6),16)}
function cutHex(h) {
 if (h.length != 6) {
  alert ('Invalid length of the input hex value!');   
  return; 
 }
 if (/[0-9a-f]{6}/i.test(h) != true) {
  alert ('Invalid digits in the input hex value!');
  return; 
 }
	
	return (h.charAt(0)=="#") ? h.substring(1,7):h;
}


//------------------------Hex To CMYK--------------------------------------
function HexToCMYK (hex) {
 computedC = 0;
 computedM = 0;
 computedY = 0;
 computedK = 0;

 hex = (hex.charAt(0)=="#") ? hex.substring(1,7) : hex;

 if (hex.length != 6) {
  alert ('Invalid length of the input hex value!');   
  return; 
 }
 if (/[0-9a-f]{6}/i.test(hex) != true) {
  alert ('Invalid digits in the input hex value!');
  return; 
 }

 var r = parseInt(hex.substring(0,2),16); 
 var g = parseInt(hex.substring(2,4),16); 
 var b = parseInt(hex.substring(4,6),16); 

 // BLACK
 if (r==0 && g==0 && b==0) {
  computedK = 1;
  return [0,0,0,1];
 }

 computedC = 1 - (r/255);
 computedM = 1 - (g/255);
 computedY = 1 - (b/255);

 var minCMY = Math.min(computedC,Math.min(computedM,computedY));

 computedC = (computedC - minCMY) / (1 - minCMY) ;
 computedM = (computedM - minCMY) / (1 - minCMY) ;
 computedY = (computedY - minCMY) / (1 - minCMY) ;
 computedK = minCMY;

 return [computedC,computedM,computedY,computedK];
}


//------------------------RGB To Hex--------------------------------------
function RGBtoHex(R,G,B) {return toHex(R)+toHex(G)+toHex(B)}
function toHex(N) {
	


if (N==null || isNaN(N)) {
   alert ('Please enter numeric RGB values!');
   return;
 }
 if (N<0 || N>255) {
   alert ('RGB values must be in the range 0 to 255.');
   return;
 }

 if (N==null) return "00";
 N=parseInt(N); if (N==0 || isNaN(N)) return "00";
 N=Math.max(0,N); N=Math.min(N,255); N=Math.round(N);
 return "0123456789ABCDEF".charAt((N-N%16)/16)
      + "0123456789ABCDEF".charAt(N%16);
}

//------------------------RGB To CMYK--------------------------------------
function rgb2cmyk (r,g,b) {
 computedC = 0;
 computedM = 0;
 computedY = 0;
 computedK = 0;

 // trim leading/trailing spaces from input RGB values
 var r = parseInt( (''+r).replace(/^\s|\s$/g,'') ); 
 var g = parseInt( (''+g).replace(/^\s|\s$/g,'') ); 
 var b = parseInt( (''+b).replace(/^\s|\s$/g,'') ); 

 if (r==null || isNaN(r) || g==null || isNaN(g) || b==null || isNaN(b)) {
   alert ('Please enter numeric RGB values!');
   return;
 }
 if (r<0 || g<0 || b<0 || r>255 || g>255 || b>255) {
   alert ('RGB values must be in the range 0 to 255.');
   return;
 }

 // BLACK
 if (r==0 && g==0 && b==0) {
  computedK = 1;
  return [0,0,0,1];
 }

 computedC = 1 - (r/255);
 computedM = 1 - (g/255);
 computedY = 1 - (b/255);

 var minCMY = Math.min(computedC,Math.min(computedM,computedY));

 computedC = (computedC - minCMY) / (1 - minCMY) ;
 computedM = (computedM - minCMY) / (1 - minCMY) ;
 computedY = (computedY - minCMY) / (1 - minCMY) ;
 computedK = minCMY;

 return [computedC,computedM,computedY,computedK];
}


