var home = function() {

	var defitem = {};
	var deftransitionactive = false;
	var defcolors = { empower: '#000000', enlighten: '#5B2875', engage: '#7C98CA', exchange: '#B9CFE8' };

	function init() {

		var welcome = $('welcomedefinitions');

		if ((!welcome) || (!welcome.parentNode.nextSibling)) {
			// reset timeout to try again later
			window.setTimeout(init,10);
			return;
		}

		// attach event handlers and setup defitem lookup object
		var divlist = welcome.getElementsByTagName('div');
		for (var i = 0,j = divlist.length;i < j;i++) {
			var item = divlist[i];

			if (!item.className) {
				var divelement = global.dom.previoussibling(item,'div');

				if ((divelement) && (divelement.className)) {
					defitem[divelement.className] = { level: 0, dir: false, el: item };

					global.event.add(item.parentNode,'mouseover',function() { defhoveraction(this,true); });
					global.event.add(item.parentNode,'mouseout',function() { defhoveraction(this,false); });
				}
			}
		}
	}

	function defhoveraction(el,dir) {

		var deftype = el.getElementsByTagName('div')[0].className;

		if (defitem[deftype]) {
			defitem[deftype].dir = dir;
			if (!deftransitionactive) dodeftransition();
		}
	}

	function dodeftransition() {

		var maxstep = 16;
		deftransitionactive = false;

		for (var name in defitem) {
			var item = defitem[name];
			var transition = false;

			// minus 6 since we don't want the full background colour
			if ((item.dir) && (item.level < (maxstep - 10))) {
				defitem[name].level++;
				transition = true;
			}

			if ((!item.dir) && (item.level > 0)) {
				defitem[name].level--;
				transition = true;
			}

			if (transition) {
				deftransitionactive = true;
				item.el.style.backgroundColor = global.dom.colortransitionstep(
					'#FFFFFF',defcolors[name],
					(defitem[name].level == 0) ? 0 : (defitem[name].level / maxstep)
				);
			}
		}

		// more transition work to go
		if (deftransitionactive) window.setTimeout(dodeftransition,50);
	}

	window.setTimeout(init,10);
}();