var site='';
var bgColorHex='';
var bgColorRGB = '';
var bgColorRGB2 = '';

function RGBToHex(rgb) {
	var chars = "0123456789ABCDEF";
	return String(chars.charAt(Math.floor(rgb / 16))) + String(chars.charAt(rgb - (Math.floor(rgb / 16) * 16)));
}
function HexToRGB(hex) {
	hex = hex.toLowerCase();
	var hexChars = "0123456789abcdef";
	return String(hexChars.indexOf(hex.substring(0,1)) * 16 + hexChars.indexOf(hex.substring(1,2)));
}

function getHexFromRGB(rgb){
	var hex = "#";
	var start = rgb.indexOf("(");
	var end = rgb.indexOf(")", start);
	if (start > -1 && end > -1){
		var rgbs = rgb.substring(start + 1, end).split(", ");
		for(i = 0; i < rgbs.length; i++){
			hex += RGBToHex(rgbs[i]);
		}
	}
	return hex;
}

function getRGBFromHex(hex){
	return "rgb(" + HexToRGB(hex.substring(1, 3)) + ", " + HexToRGB(hex.substring(3, 5)) + ", " + HexToRGB(hex.substring(5, 7)) + ")";
}

function modifiedColor(color, oldHex, oldRGB){
	var newBgColor = color.style.backgroundColor;
	var newBgColorHex = '';
	var newBgColorRGB = '';
	if (newBgColor.indexOf('rgb') == 0){
		newBgColorRGB = newBgColor;
		newBgColorHex = getHexFromRGB(newBgColorRGB);
	}else{
		newBgColorHex = newBgColor;
		newBgColorRGB = getRGBFromHex(newBgColorHex);
	}
	if (oldRGB && oldHex){
		bgColorRGB = oldRGB;
		bgColorHex = oldHex;
	}
	if (newBgColorHex != bgColorHex){
		var bgColorPrefix = 'background-color:';
		var bgColorPrefixInUrl = 'color=';
		var bgColorPrefixWithSpace = 'background-color: ';

		var text = document.getElementById('content').innerHTML;
		var colorText = bgColorPrefix.toLowerCase() + bgColorHex.toLowerCase();
		var newColorText = bgColorPrefix + newBgColorHex;
		text = replaceColor(text, colorText, newColorText);

		colorText = bgColorPrefixWithSpace.toLowerCase() + bgColorHex.toLowerCase();
		newColorText = bgColorPrefixWithSpace + newBgColorHex;
		text = replaceColor(text, colorText, newColorText);

		colorText = bgColorPrefixInUrl.toLowerCase() + bgColorHex.toLowerCase().substring(1);
		newColorText = bgColorPrefixInUrl  + newBgColorHex.substring(1);
		text = replaceColor(text, colorText, newColorText);

		colorText = bgColorPrefix.toLowerCase() + bgColorRGB.toLowerCase();
		newColorText = bgColorPrefix + newBgColorRGB;
		text = replaceColor(text, colorText, newColorText);
		
		colorText = bgColorPrefixWithSpace.toLowerCase() + bgColorRGB.toLowerCase();
		newColorText = bgColorPrefixWithSpace + newBgColorRGB;
		text = replaceColor(text, colorText, newColorText);

		colorText = bgColorPrefixInUrl.toLowerCase() + bgColorRGB.toLowerCase();
		newColorText = bgColorPrefixInUrl + newBgColorRGB;
		text = replaceColor(text, colorText, newColorText);
		
		bgColorHex = newBgColorHex;
		bgColorRGB = newBgColorRGB;
		document.getElementById('color').value = newBgColorHex.substring(1);
		document.getElementById('content').innerHTML = text;
	}
}

function replaceColor(text, colorText, newColorText){
	var textLowerCase = text.toLowerCase();
	var start = textLowerCase.indexOf(colorText);
	var count = 0;
	var end = start + colorText.length;
	while (count < 10000 && start > -1){
		text = text.substring(0, start) + newColorText + text.substring(end);
		textLowerCase = textLowerCase.substring(0, start) + newColorText + textLowerCase.substring(end);
		start = textLowerCase.indexOf(colorText);
		end = start + colorText.length;
		count++;
	}
	return text;
}

function init(paramSite, paramColor){
	site = paramSite;
	color = paramColor;
	bgColorRGB = getRGBFromHex(bgColorHex);
	bgColorRGB2 = getRGBFromHex(bgColorHex, true);
	var colorObj = document.getElementById('colorize');
	var myPicker = new jscolor.color(colorObj, {});
	myPicker.fromString(bgColorHex.substring(1));
	modifiedColor(colorObj, "#9CC345", getRGBFromHex("#9CC345"));
}