﻿var fade = { i: 0, di: 20, dr: 0, dg: 0, db: 0, fr: 0, fg: 0, fb: 0, tr: 0, tg: 0, tb: 0, fading: false, fadeStack: 0 };

function bodyFadeTo(color) {
	if (fade.fading) return;
	//if (fade.fading) { if (fade.fadeStack < 2) { fade.fadeStack++; window.setTimeout(function () { bodyFadeTo(color); }, 1000) } }
	fade.fading = true;
	
	var f = $(document.body).css("backgroundColor");
	if (f.substr(0, 3) == "rgb") {
		f = f.substr(4).replace(")", "");
		fs = f.split(",");
		fade.fr = parseInt(fs[0]);
		fade.fg = parseInt(fs[1]);
		fade.fb = parseInt(fs[2]);
	} else if (f.substr(0, 1) == "#") {
		f = f.substr(1);
		fade.fr = parseInt(f.substr(0, 2), 16);
		fade.fg = parseInt(f.substr(2, 2), 16);
		fade.fb = parseInt(f.substr(4, 2), 16);
	} else {
		f = null;
	}
	
	if (f != null) {
		fade.i = 0;

		fade.tr = parseInt(color.substr(0, 2), 16);
		fade.tg = parseInt(color.substr(2, 2), 16);
		fade.tb = parseInt(color.substr(4, 2), 16);

		fade.dr = fade.tr - fade.fr;
		fade.dg = fade.tg - fade.fg;
		fade.db = fade.tb - fade.fb;

		window.setTimeout(fadeStep, 50);
	}
}

function fadeStep() {
	var mr = fade.fr + Math.round((fade.dr / 100 * (fade.i)));
	var mg = fade.fg + Math.round((fade.dg / 100 * (fade.i)));
	var mb = fade.fb + Math.round((fade.db / 100 * (fade.i)));
	var c = (mr < 16 ? "0" : "") + mr.toString(16)
					+ (mg < 16 ? "0" : "") + mg.toString(16)
					+ (mb < 16 ? "0" : "") + mb.toString(16);

	$(document.body).css("backgroundColor", "#" + c);

	fade.i += fade.di;
	if (fade.i <= 100) window.setTimeout(fadeStep, 50);
	else { fade.fadeStack = Math.max(fade.fadeStack - 1, 0); fade.fading = false; }
}

