var Hexa = "0123456789abcdef";

function decahex(n) {
	return Hexa.charAt(n / 16) + Hexa.charAt(n % 16);
}

function colorHexa(c) {
	return "#" + decahex(c[0]) + decahex(c[1]) + decahex(c[2]);
}

function fondoGradiente(elemento, orientacion, color1, color2)	{
	var url = "url(http://caricatos.net/script/gradiente" + orientacion + ".php?";
	url += (orientacion == "H") ? "anchura=" : "altura=";
	url += (orientacion == "H") ? elemento.clientWidth : elemento.clientHeight;
	url += "&color1=" + color1;
	url += "&color2=" + color2;
	url += ")";
	elemento.style.backgroundColor = url;
	elemento.style.backgroundPosition = "0 0";
	elemento.style.backgroundAttachment = "fixed";
}

function transitar(ini, fin, pasos) {
	var dato = desglose(ini);
	var rIni = dato[0];
	var gIni = dato[1];
	var bIni = dato[2];

	var intermedios = new Array(pasos);
	intermedios[0] = dato;

	var dato = desglose(fin);

	intermedios[pasos - 1] = dato;

	var rFin = dato[0];
	var gFin = dato[1];
	var bFin = dato[2];

	var rMed = (rFin - rIni) / (pasos - 1);
	var gMed = (gFin - gIni) / (pasos - 1);
	var bMed = (bFin - bIni) / (pasos - 1);

	for (var i = 1; i < pasos - 1; i ++)	{
		var rgb = new Array(3);
		rgb[0] = parseInt(rIni + (rMed * i));
		rgb[1] = parseInt(gIni + (gMed * i));
		rgb[2] = parseInt(bIni + (bMed * i));
		intermedios[i] = rgb;
	}
	for (i = 0; i < intermedios.length; i ++)
		intermedios[i] = colorHexa(intermedios[i]);

	return intermedios;
}

function desglose(color) {
	if (color.length != 6)
		return "poblema";
	else	{
		devolver = new Array(3);
		devolver[0] = hexadec(color.substr(0, 2));
		devolver[1] = hexadec(color.substr(2, 2));
		devolver[2] = hexadec(color.substr(4, 2));
	}
	return devolver;
}

function hexadec(x) {
	x = x.toLowerCase();
	return parseInt(Hexa.indexOf(x.charAt(0))) * 16 + parseInt(Hexa.indexOf(x.charAt(1)))
}