function move_in(which_image,img_src) {
	which_image.src = img_src;
}

function move_out(which_image,img_src) {
	which_image.src = img_src;
}

//the array below defines the items in the REPORTS dropdown
//each nested array has two values:
// 1) the text to display in the menu
// 2) the URL to link to if that value is selected
window.dropValues = {
	products: [
		[cx()+"/img/navs/flyout_products_1_on.gif", cx()+"/img/navs/flyout_products_1_off.gif", "/products/cooking.do"],
		[cx()+"/img/navs/flyout_products_2_on.gif", cx()+"/img/navs/flyout_products_2_off.gif", "/products/dipping.do"],
		[cx()+"/img/navs/flyout_products_3_on.gif", cx()+"/img/navs/flyout_products_3_off.gif", "/products/stirfry.do"],
		[cx()+"/img/navs/flyout_products_4_on.gif", cx()+"/img/navs/flyout_products_4_off.gif", "/products/soya.do"],
		[cx()+"/img/navs/flyout_products_5_on.gif", cx()+"/img/navs/flyout_products_5_off.gif", "/products/specialty.do"]
	],
	chefsnotes: [
		[cx()+"/img/navs/flyout_chefs_1_on.gif", cx()+"/img/navs/flyout_chefs_1_off.gif", "/conversions/index.do"],
		[cx()+"/img/navs/flyout_chefs_2_on.gif", cx()+"/img/navs/flyout_chefs_2_off.gif", "/gadgets/index.do"],
		[cx()+"/img/navs/flyout_chefs_3_on.gif", cx()+"/img/navs/flyout_chefs_3_off.gif", "/spiceOfLife/index.do"],
		[cx()+"/img/navs/flyout_chefs_4_on.gif", cx()+"/img/navs/flyout_chefs_4_off.gif", "/substitution/index.do"]
	],
	creativerecipes: [
		[cx()+"/img/navs/flyout_recipes_1_on.gif", cx()+"/img/navs/flyout_recipes_1_off.gif", "/recipeSearch/results.do?1addrelated22=1&kwds="],
		[cx()+"/img/navs/flyout_recipes_2_on.gif", cx()+"/img/navs/flyout_recipes_2_off.gif", "/recipeSearch/results.do?1addrelated21=1&kwds="],
		[cx()+"/img/navs/flyout_recipes_3_on.gif", cx()+"/img/navs/flyout_recipes_3_off.gif", "/recipeSearch/results.do?1addrelated26=1&kwds="],
		[cx()+"/img/navs/flyout_recipes_4_on.gif", cx()+"/img/navs/flyout_recipes_4_off.gif", "/recipeSearch/results.do?1addrelated23=1&kwds="],
		[cx()+"/img/navs/flyout_recipes_5_on.gif", cx()+"/img/navs/flyout_recipes_5_off.gif", "/recipeSearch/results.do?1addrelated25=1&kwds="],
		[cx()+"/img/navs/flyout_recipes_6_on.gif", cx()+"/img/navs/flyout_recipes_6_off.gif", "/recipeSearch/results.do?1addrelated28=1&kwds="],
		[cx()+"/img/navs/flyout_recipes_7_on.gif", cx()+"/img/navs/flyout_recipes_7_off.gif", "/recipeSearch/results.do?2addrelated8=1&kwds="],
		[cx()+"/img/navs/flyout_recipes_8_on.gif", cx()+"/img/navs/flyout_recipes_8_off.gif", "/recipeSearch/results.do?0addrelated8=1&kwds="],
		[cx()+"/img/navs/flyout_recipes_9_on.gif", cx()+"/img/navs/flyout_recipes_9_off.gif", "/recipeSearch/results.do?0addrelated5=1&kwds="]
	],
	asian: [],
	myrecipes: [],
	eNewsletter: [],
	myprofile: [],
	advancedsearch: []};

//DropDown functions
var isIE = document.all ? true : false;
var isSafari = navigator.userAgent.indexOf("Safari") != -1;

function doDropDownMouseOver(e, whichImg, whichSrc) {
	
var srcDiv;
	if (isIE) {
		srcDiv = e.srcElement;
	} else {
		srcDiv = e.target;
	}
	
	move_in(whichImg, whichSrc);
	
	var curDropDownList = dropValues[srcDiv.id];
	initDropDown(curDropDownList, srcDiv);

}

function doDropDownMouseOut(whichImg, whichSrc) {
	move_out(whichImg, whichSrc);
	
	initKillDropDown();
}

function loadReport(e) {
	removeDropDown();
	
	var srcDiv = e ? e.target : event.srcElement;
	if (srcDiv.nodeName != "DIV") { //safari DOM exception
		srcDiv = srcDiv.parentNode;
	}
	
	var selectedRep = srcDiv.innerHTML;
	var targetURL;
	for (var i=0; i<dropValues.length; i++) {
		var curRep = dropValues[i];
		if (curRep[0] == selectedRep) {
			targetURL = curRep[1];
			break;
		}
	}
	window.location.href = targetURL;
}

function DropDown (whichProps) {
	this.targetParentElement = document.body;

	this.listItems = whichProps.list;
	this.dropAnchor = whichProps.elem;
	
	//default fonts, and exceptions
	this._fontWeight = "normal";
	this._fontSize = "12px";
	this.forceWidth = false;
	this.listItemFunc = loadReport;
	
	this.xOffset = -50; //padding between target element and dropdown
	this.yOffset = 1; //padding between target element and dropdown
	this.dropDownWidth = this.dropAnchor.offsetWidth + 10;
	
	this.listPadding = 0; //space around text
	
	this.listItemXPadding = 0; //space on left/right of text
	//see if the dropAnchor div has an image inside it. if so, we assume it's an arrow and offset text from the edges by that much
	var imgColl = this.dropAnchor.getElementsByTagName('img');
	if (imgColl.length > 0) {
		this.listItemXPadding = imgColl[0].offsetWidth;
	}
	
	this.listItemYPadding = 3; //space above/below text
	this.dropDownTextWidth = this.dropDownWidth - (this.listItemXPadding * 2) - (this.listPadding * 2);
	
	this.drawList();
	this.placeDropDown();
	
	return this;
}

DropDown.prototype.drawList = function() {
	var container = document.createElement('div');
	container.id = "dropDown";
	container.onmouseover = function () {
		clearTimeout(dropDownTimer);
	}
	container.onmouseout = function () {
		initKillDropDown();
	}
	with (container.style) {
		position = "absolute";
		top = "-300px";
		zIndex = "5000";
		display = "none";
	}
	this.dropDownDiv = container;
	
	this.listHolder = document.createElement('div');
	this.listHolder.id = "dropDownListHolder";
	with (this.listHolder.style) {
		position = "relative";
		zIndex = "100";
	}
	
	for (var i=0; i<this.listItems.length; i++) {
		var curData = this.listItems[i];
		var curItem = document.createElement('div');
		var curZIndex = 100 + i;
		with (curItem) {
			id = "indexItem" + curData;
			innerHTML = '<a href="' + curData[2] + '"><img src="' + curData[1] + '" onMouseOver="move_in(this, \'' + curData[0] + '\')" onMouseOut="move_out(this, \'' + curData[1] + '\')" /></a>';
			with (style) {
				position = "relative";
				zIndex = curZIndex;
			}
		}
		this.listHolder.appendChild(curItem);
	}
	
	container.appendChild(this.listHolder);
	this.targetParentElement.appendChild(container);
	
	container.style.display = "block";
}

DropDown.prototype.placeDropDown = function() {
	var anchorTop = getPageOffsetTop(this.dropAnchor);
	var anchorRight = getPageOffsetLeft(this.dropAnchor) + this.dropAnchor.offsetWidth;
	var targetTop = anchorTop + this.yOffset;
	var targetLeft = anchorRight + this.xOffset;	
	this.dropDownDiv.style.top = targetTop + "px";
	this.dropDownDiv.style.left = targetLeft + "px";
}

DropDown.prototype.remove = function() {
	this.targetParentElement.removeChild(this.dropDownDiv);
}

window.dropDownWait = 0; //milliseconds to wait before showing
window.dropDownKillWait = 500; //milliseconds to wait before closing on mouseout
window.dropDownTimer = null;

function initKillDropDown() {
	clearTimeout(dropDownTimer);
	dropDownTimer = setTimeout(removeDropDown, dropDownKillWait);
}

function initDropDown(whichItems, whichElem) {
	clearTimeout(dropDownTimer);

	window.dropDownProps = {list: whichItems, elem: whichElem};
	dropDownTimer = setTimeout(showDropDown, dropDownWait);
}

function showDropDown() {
	removeDropDown();
	window.dropDown = new DropDown(dropDownProps);
}

function removeDropDown() {
	clearTimeout(dropDownTimer);
	if (window.dropDown != undefined) {
		window.dropDown.remove();
		window.dropDown = undefined;
	}
}

function getPageOffsetTop (whichElem) {
	var tOffsetTop = 0;
	var curCount = 0;
	var curElem = whichElem;
	//we cap the while loop to avoid any possible infinite loops
	while (curElem.offsetParent && curCount < 99) {
		tOffsetTop += curElem.offsetTop;
		curElem = curElem.offsetParent;
		curCount++;
	}
	return tOffsetTop;
}

function getPageOffsetLeft (whichElem) {
	var tOffsetTop = 0;
	var curCount = 0;
	var curElem = whichElem;
	//we cap the while loop to avoid any possible infinite loops
	while (curElem.offsetParent && curCount < 99) {
		tOffsetTop += curElem.offsetLeft;
		curElem = curElem.offsetParent;
		curCount++;
	}
	return tOffsetTop;
}
