var menus=['menuhome', 'menuabout', 'menulinks', 'menucontact', 'menuawards', 'menusubscribe'];
var changeFlags = [false, false, false, false, false, false];

var menuElem = function (index) {
	return document.getElementById(menus[index]);
}
var getIndexById = function (id) {
	for(var i=0;i<menus.length ; i+=1 ) {
		if ( menus[i]==id) {
			return i;
		}
	}
	return -1;
}
var menuset = function(doSomething) {
	for(var i=0;i<menus.length ; i+=1 ) {
		var aMenu = menuElem(i);
		if ( aMenu != null)	{
			doSomething (aMenu, i);
		}
	}
}

var prepareMenu = function() {
	menuset(replaceBackground);
}
var clearBg = function () {
	menuset( function (aMenu, i ) { changeElem(aMenu, 'efefef'); } );
}

var changeElem = function (elem, color) {
	elem.style.backgroundColor = '#' + color;
}

var replaceBackground = function (aMenu, i) {
	var overSrc = 'http://bakingobsession.com/wordpress/wp-content/themes/bakobs/images/bo_tm_' + menus[i].substring(4) + '_over.gif';
	var regSrc = 'http://bakingobsession.com/wordpress/wp-content/themes/bakobs/images/bo_tm_' + menus[i].substring(4) + '.gif';
	aMenu.onmouseover =  function () { change(this, 'efefef', 'cCf0b9',4); }; 
	aMenu.onmouseout =  function () { setChangeFlag(this.id); clearBg(); };
}
var setChangeFlag = function (id) {
	var idx = getIndexById(id);
	if ( idx > -1)	{
		changeFlags[idx] = true;
	}
}

var clearChangeFlag = function (id) {
	var idx = getIndexById(id);
	if ( idx > -1)	{
		changeFlags[idx] = false;
	}
}
var isElemStopChangeFlagRaised = function (id) {
	var idx = getIndexById(id);
	if ( idx > -1)	{
		return changeFlags[idx];
	}
	return true;
}
var change = function (elem, from, to, incSize) {
	clearChangeFlag ( elem.id );
	changeElem(elem, from)

	var color = parseInt(from,16);
	var toColor = parseInt(to,16);
	var inc = (color < toColor) ? incSize : -1*incSize;
	var r = parseInt((''+from).substring(0,2),16);
	var g = parseInt((''+from).substring(2,4),16);
	var b = parseInt((''+from).substring(4),16);


	var step = function () {

		changeElem(elem, color.toString(16));
		if ( (inc > 0 && color < toColor || inc<0 && color > toColor) && !isElemStopChangeFlagRaised(elem.id) ) {
			r += inc;
			g += inc;
			b += inc;
			color = parseInt(r.toString(16) + g.toString(16) + b.toString(16), 16);
			setTimeout ( step, 3);
		}
		else {
			clearBg();
			if (!isElemStopChangeFlagRaised(elem.id)) {
				changeElem(elem, color.toString(16));
				
			}

//			elem.style.opacity = 1;;
//			elem.style.filter = 'alpha(opacity=100)';
//			elem.style.display = 'none';		
		}
	}
	setTimeout ( step, 1);
}