function RGB(a_szRGB)
{ var m_szRGB = a_szRGB; this.m_szRGB = m_szRGB; var m_szHex = "0123456789abcdef"; if(m_szRGB)
{ if(0 == m_szRGB.search(/#[0-9a-fA-F]{6}/))
{ m_szRGB = m_szRGB.match(/#[0-9a-fA-F]{6}/).toString();}
else
{ var szTemp = m_szRGB.replace(/\s/g,''); if(0 == szTemp.search(/[rR][gG][bB][(]\d{1,3},\d{1,3},\d{1,3}[)]/) )
{ var red10 = szTemp.match(/[(]\d{1,3},/).toString().replace(/[(]/,'').replace(/,/,''); var green10 = szTemp.match(/,\d{1,3},/).toString().replace(/,/g,''); var blue10 = szTemp.match(/,\d{1,3}[)]/).toString().replace(/,/,'').replace(/[)]/,''); var redHexHi = Math.floor(red10 / 16); var redHexLow = red10 % 16; var greenHexHi = Math.floor(green10 / 16); var greenHexLow = red10 % 16; var blueHexHi = Math.floor(blue10 / 16); var blueHexLow = blue10 % 16; m_szRGB = "#" + m_szHex.charAt(redHexHi) + m_szHex.charAt(redHexLow) + m_szHex.charAt(greenHexHi)+ m_szHex.charAt(greenHexLow) + m_szHex.charAt(blueHexHi) + m_szHex.charAt(blueHexLow);}
else
{ m_szRGB = "#ffffff";}
}
}
else
{ m_szRGB = "#ffffff";}
function toString()
{ return m_szRGB;}
this.toString = toString; function darkenBy(a_iInterval)
{ m_szRGB = deltaRGB(-1 * a_iInterval); return m_szRGB;}
this.darkenBy = darkenBy; function lightenBy(a_iInterval)
{ m_szRGB = deltaRGB(a_iInterval); return m_szRGB;}
this.lightenBy = lightenBy; function isDarker(a_szRGB)
{ var red = "0x" + a_szRGB.substr(1,2); var green = "0x" + a_szRGB.substr(3,2); var blue = "0x" + a_szRGB.substr(5,2); var thisRed = "0x" + m_szRGB.substr(1,2); var thisGreen = "0x" + m_szRGB.substr(3,2); var thisBlue = "0x" + m_szRGB.substr(5,2); if((thisRed >= red) && (thisGreen >= green) && (thisBlue >= blue) )
{ return true;}
return false;}
this.isDarker = isDarker; function isLighter(a_szRGB)
{ var red = "0x" + a_szRGB.substr(1,2); var green = "0x" + a_szRGB.substr(3,2); var blue = "0x" + a_szRGB.substr(5,2); var thisRed = "0x" + m_szRGB.substr(1,2); var thisGreen = "0x" + m_szRGB.substr(3,2); var thisBlue = "0x" + m_szRGB.substr(5,2); if((thisRed <= red) && (thisGreen <= green) && (thisBlue <= blue) )
{ return true;}
return false;}
this.isLighter = isLighter; function deltaRGB(a_iInterval)
{ var newRed=null,newGreen=null,newBlue=null;
 var red = "0x" + m_szRGB.substr(1,2); var green = "0x" + m_szRGB.substr(3,2); var blue = "0x" + m_szRGB.substr(5,2); if(red-0+a_iInterval > 255)
{ newRed = 255/16;}
else if(red-0+a_iInterval < 0)
{ newRed = 0;}
else
{ newRed = (red-0+a_iInterval)/16;}
if(green -0+a_iInterval > 255)
{ newGreen = 255/16;}
else if(green-0+a_iInterval < 0)
{ newGreen = 0;}
else
{ newGreen = (green -0+a_iInterval)/16;}
if(blue -0+a_iInterval > 255)
{ newBlue = 255/16;}
else if(blue-0+a_iInterval < 0)
{ newBlue = 0;}
else
{ newBlue = (blue -0+a_iInterval)/16;}
var newRedHi = Math.floor(newRed); var newRedLow = (newRed - newRedHi)*16; var newGreenHi = Math.floor(newGreen); var newGreenLow = (newGreen - newGreenHi)*16; var newBlueHi = Math.floor(newBlue); var newBlueLow = (newBlue - newBlueHi)*16; return "#" + m_szHex.charAt(newRedHi) + m_szHex.charAt(newRedLow) + m_szHex.charAt(newGreenHi)+ m_szHex.charAt(newGreenLow) + m_szHex.charAt(newBlueHi) + m_szHex.charAt(newBlueLow);}
}
