/*
Color transition
*/

var initRGB;
var endRGB;

function initFader(r, g, b) {
	initRGB = new Array(r,g,b);
	fadeBGColMem(r,g,b);
}

function fadeBGColMem(r, g, b) {
	if(!initRGB) return;
	endRGB = new Array(r,g,b);
	doBGFadeMem(document.getElementById('headerWrap'),initRGB,endRGB,6,20,1);
	doBGFadeMem(document.getElementById('footer'),initRGB,endRGB,6,20,1);
}

function fadeBGColRestore() {
	if(!initRGB) return;
	var currRGB = document.getElementById('headerWrap').style.backgroundColor;
	currRGB = getRGBArray(currRGB);
	doBGFadeMem(document.getElementById('headerWrap'),currRGB,initRGB,12,20,1);
	doBGFadeMem(document.getElementById('footer'),currRGB,initRGB,12,20,1);
}

//*******************

function doBGFadeMem(elem,startRGB,endRGB,steps,intervals,powr) {
	if (elem.bgFadeMemInt) window.clearInterval(elem.bgFadeMemInt);
	var actStep = 0;
	elem.bgFadeMemInt = window.setInterval(
		function() {
			var red = easeInOut(startRGB[0],endRGB[0],steps,actStep,powr);
			var blue = easeInOut(startRGB[1],endRGB[1],steps,actStep,powr);
			var green = easeInOut(startRGB[2],endRGB[2],steps,actStep,powr);
			elem.style.backgroundColor = "rgb("+red+","+blue+","+green+")";
			actStep++;
			if (actStep > steps) window.clearInterval(elem.bgFadeMemInt);
		}
		,intervals)
}

function easeInOut(minValue,maxValue,totalSteps,actualStep,powr) {
	var delta = maxValue - minValue;
	var stepp = minValue+(Math.pow(((1 / totalSteps)*actualStep),powr)*delta);
	return Math.ceil(stepp)
}

function getRGBArray(rgbString) {
	var rgbArray = rgbString.replace(" ", "");
	rgbArray = rgbArray.slice( rgbArray.indexOf("(")+1, rgbArray.indexOf(")"));
	rgbArray = rgbArray.split(",");
	for( index=0; index<rgbArray.length; index++) {
		rgbArray[index] = parseInt(rgbArray[index]);
	}
	return rgbArray;
}