
/*
	Name : getBackgroundColor
	Param : obj
	Return: la couleur en hexa du fond de l'objet sélectionné
*/
function getBackgroundColor(obj) {
	//Je prends la couleur de fond
	var bgcolor = getStyleInfo(obj,"backgroundColor");
	//S'il n'en a pas je continue de prendre la couleur du parent, et ainsi de suite
	if (bgcolor=="transparent") {
		while (!(obj.nodeName=="HTML" || (bgcolor!="transparent"))) {
			bgcolor = getStyleInfo(obj,"backgroundColor");
			obj = obj.parentNode;
		}
		//Si toujours rien, on prends du blanc
		if (bgcolor=="transparent") bgcolor = "#FFFFFF";
	}
	var rgb = convert2RGB(bgcolor);
	return "#"+deci2hexa(rgb["r"])+deci2hexa(rgb["g"])+deci2hexa(rgb["b"]);
}


/*
	Name : convert2RGB
	Param : couleur
	Return: On retourne un tableau[r][g][b] avec les valeur dans les cases
	Mozzila me donnant la valeur sous forme rgb(255,47,14), IE sous forme #14FE23 on remets tout bien en tableau
*/
function convert2RGB(couleur) {
	var ret = Array(3);
	if (couleur.find("#")) {
		ret["r"] = hexa2deci(couleur.substring(1,3).toUpperCase());
		ret["g"] = hexa2deci(couleur.substring(3,5).toUpperCase());
		ret["b"] = hexa2deci(couleur.substring(5,7).toUpperCase());		
	}
	//trouve rgb( et rgba(
	if (couleur.find("rgb")) {
		var tmp = couleur.substring(4,couleur.length-1).split(", ");
		ret["r"] = tmp[0];
		ret["g"] = tmp[1];
		ret["b"] = tmp[2];
	}
	return ret;
}

/*
	Name : hexa2deci
	Param : hexa
	Retourne : valeur décimale
	La fonction prends une valeur hexadecimale (00->FF à priori) et retourne la valeur décimale
*/
function hexa2deci(hexa) {
	var deci = 0, pos;
	var arr = Array();
	arr["0"]=0;arr["1"]=1;arr["2"]=2;arr["3"]=3;arr["4"]=4;arr["5"]=5;arr["6"]=6;arr["7"]=7;arr["8"]=8;arr["9"]=9;
	arr["A"]=10;arr["B"]=11;arr["C"]=12;arr["D"]=13;arr["E"]=14;arr["F"]=15;
	//On lit le chiffre hexa lettre par lettre depuis la fin et on calcule la valeur en décimal
	for (var i=0;i!=hexa.length;i++) {
		pos = hexa.charAt(-i+1);
		deci+= Math.pow(16,i) * arr[pos];
	}
	return deci;
}

/*
	Name : deci2hexa
	Param : deci
	Retourne : valeur hexadécimale
	La fonction prends une valeur décimale (à priori entre 0 et 255) et retourne son équivalent en hexa
*/
function deci2hexa(deci) {
	var arr = Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
	return arr[(Math.floor(deci/16))]+arr[(deci%16)];
}

/*
	Name : rgb2cmjn
	Param : couleur
	Retourne un tableau CMJN des couleurs converties
	On normalize les couleurs (comprises entre 0 et 1)
	 Black   = minimum(1-Red,1-Green,1-Blue)
    Cyan    = (1-Red-Black)/(1-Black)
    Magenta = (1-Green-Black)/(1-Black)
    Yellow  = (1-Blue-Black)/(1-Black) 
*/