function cambiarFondo(sColorHex){
	var nRGB = parseInt(sColorHex,16);
	var nR = nRGB >> 16 & 0xFF;
	var nG = nRGB >> 8 & 0xFF;
	var nB = nRGB & 0xFF;	
	this.oColorFinal = {r:nR , g:nG , b:nB};
	this.nParametro = 0.1;
	if (this.oColorActual == undefined) this.oColorActual = {r:250 , g:250 , b:235};
	this.intervalo = setInterval(testearCambioColor,50);
}


function setearFondo(sColorHex){
	document.body.style.backgroundColor = "#" + sColorHex;
}


function testearCambioColor(){
	
	var nDeltaR = this.oColorFinal.r - this.oColorActual.r ;
	var nDeltaG = this.oColorFinal.g - this.oColorActual.g ;
	var nDeltaB = this.oColorFinal.b - this.oColorActual.b ;
	
	this.oColorActual.r += (nDeltaR>0)?Math.ceil(nDeltaR * this.nParametro):Math.floor(nDeltaR * this.nParametro);
	this.oColorActual.g += (nDeltaG>0)?Math.ceil(nDeltaG * this.nParametro):Math.floor(nDeltaG * this.nParametro);
	this.oColorActual.b += (nDeltaB>0)?Math.ceil(nDeltaB * this.nParametro):Math.floor(nDeltaB * this.nParametro);
	
	if (this.oColorActual.r == this.oColorFinal.r && this.oColorActual.g == this.oColorFinal.g && this.oColorActual.b == this.oColorFinal.b){
		clearInterval(this.intervalo);
	}
	
	var nRGB = this.oColorActual.r<<16 | this.oColorActual.g<<8 | this.oColorActual.b;
	
	var sColorHexa = this.decimalToHexa(nRGB);
	this.setearFondo(sColorHexa);
}


function decimalToHexa (decimal) { //toma un decimal y devuelve los caracteres hexa en pares
	var stringHexa = decimal.toString(16);
	
	if (stringHexa.length == 1) stringHexa = "00000" + stringHexa;
	if (stringHexa.length == 2) stringHexa = "0000" + stringHexa;
	if (stringHexa.length == 3) stringHexa = "000" + stringHexa;
	if (stringHexa.length == 4) stringHexa = "00" + stringHexa;
	if (stringHexa.length == 5) stringHexa = "0" + stringHexa;
	
	return(stringHexa);
}
