function _shade ( space ) {
	xajax.$( space ).style.backgroundColor = "#EADBBF";
}

function _clear ( space ) {
	xajax.$( space ).style.backgroundColor = "#FFF";
}

function _submitSearch () {
	xajax.$('searchButton').disabled = true;
	xajax.$('searchButton').value = "Please wait...";
	xajax_search( xajax.getFormValues( "menuForm" ));
}

var CourseFrID, IngredientFrID, CourseEnID, IngredientEnID;
var childSource = Object ();
var idSource = Object ();

function _toggleDropDown ( source ) {
	var	u = document.getElementById( "drop" + source ).style;
	var	d = document.getElementById( source ).getElementsByTagName( 'LI' );
	if ( u.display == "none" || u.display == "" ) {
		var newValue = "block";
		var newImage = "url( images/recipes_dropup_arrow.gif )";
		idSource[ source ] = true;
	} else {
		var newValue = "none";
		var newImage = "url( images/recipes_dropdown_arrow.gif )";
	}
	u.display = newValue;
	d[0].style.backgroundImage = newImage;
}

function _setSelection ( id, label, source, nextSource ) {
	_toggleDropDown ( source );
	if ( source == "Language" ) {
		idSource["Course" + id] = true;
		document.getElementById( "Course" + id ).style.display = "block";
		idSource["Ingredient" + id] = true;
		document.getElementById( "Ingredient" + id ).style.display = "block";
	}
	document.getElementById( source ).style.display = "none";
	document.getElementById( "select" + source ).innerHTML = label;

	if ( source == "Language" ) {
		document.forms['menuForm'].elements["id" + source].value = id;
	} else {
		level = stackLevel[ _findIndexByName ( source ) ];
		levels = level.split ( "." );
		if ( levels[1] ) {
			oldSource = stackName[ _findIndexByLevel ( levels[0] ) ];
			v = document.forms['menuForm'].elements["id" + oldSource];
			v.value = v.value + id + "|";
		} else {
			document.forms['menuForm'].elements["id" + source].value = "|" + id + "|";
		}
	}

	document.getElementById( "selection" + source ).style.display = "block";
	if ( nextSource ) {
		document.getElementById( nextSource ).style.display = "block";
		childSource[source] = nextSource;
		_toggleDropDown ( nextSource );
	}
	_submitSearch ();
}

function _clearSelection ( source ) {
	if ( source == "Language" ) {
		if ( CourseEnID ) _clearOneDiv ( "CourseEn" );
		if ( IngredientEnID ) _clearOneDiv ( "IngredientEn" );
		if ( CourseFrID ) _clearOneDiv ( "CourseFr" );
		if ( IngredientFrID ) _clearOneDiv ( "IngredientFr" );
		document.forms['menuForm'].elements["idLanguage"].value = "";
		var selectionId = "selection" + source;
		document.getElementById( "selectionLanguage" ).style.display = "none";
		document.getElementById( "Language" ).style.display = "block";
		for ( i = 0; i < length; i++ ) {
			if ( idSource[stackName[i]] ) _clearOneDiv ( stackName[i] );
		}
	} else {
		var level = stackLevel[_findIndexByName ( source )];
		levels = level.split ( "." );
		if ( levels[1] ) {
			_resetOneDiv ( source );
			
		} else {
			if ( childSource[source] ) _clearOneDiv ( childSource[source] );
			_resetOneDiv ( source );
		}
	}
	_submitSearch ();
}

function _resetOneDiv ( source ) {
	document.getElementById( source ).style.display = "block";
	document.getElementById( 'drop' + source ).style.display = "none";
	document.getElementById( 'selection' + source ).style.display = "none";
	_clearIdSource ( source );
}

function _clearOneDiv ( source ) {
	document.getElementById( source ).style.display = "none";
	document.getElementById( 'drop' + source ).style.display = "none";
	document.getElementById( 'selection' + source ).style.display = "none";
	_clearIdSource ( source );
	idSource[ source ] = false;
}

function _findIndexByName ( name ) {
	for ( i = 0; i < length; i++ ) {
		if ( stackName[i] == name ) return i;
	}
}

function _findIndexByLevel ( level ) {
	for ( i = 0; i < length; i++ ) {
		if ( stackLevel[i] == level ) return i;
	}
}

function _clearIdSource ( source ) {
	levels = stackLevel[ _findIndexByName ( source ) ].split ( "." );
	oldSource = ( levels[1] ) ? stackName[ _findIndexByLevel ( levels[0] ) ] : source ;
	v = document.forms['menuForm'].elements["id" + oldSource];
	values = v.value.split ( "|" );
	v.value = ( values[2] ) ? "|" + values[1] + "|" : v.value = "";
}

scrollUp_off = new Image ( 130, 16 );
scrollUp_off.src = "images/recipes_scrollup_arrow_off.gif";
scrollUp_on = new Image ( 130, 16 );
scrollUp_on.src = "images/recipes_scrollup_arrow_on.gif";
scrollUp_dim = new Image ( 130, 16 );
scrollUp_dim.src = "images/recipes_scrollup_arrow_dim.gif";

scrollDown_off = new Image ( 130, 16 );
scrollDown_off.src = "images/recipes_scrolldown_arrow_off.gif";
scrollDown_on = new Image ( 130, 16 );
scrollDown_on.src = "images/recipes_scrolldown_arrow_on.gif";
scrollDown_dim = new Image ( 130, 16 );
scrollDown_dim.src = "images/recipes_scrolldown_arrow_dim.gif";

function _scrollUpOn( object, otherObject ) {
	if ( object['start'] > 0 ) {
		document.getElementById('up' + object['name'] ).src = scrollUp_on.src;
		document.getElementById('down' + otherObject['name'] ).src = scrollDown_off.src;
		object['start']--;
		object['end']--;
		document.getElementById( object['name'] + "_" + object['start'] ).style.display = "block";
		document.getElementById( object['name'] + "_" + object['end'] ).style.display = "none";
		otherObject['start'] = eval ( object['start'] );
		otherObject['end'] = eval ( object['end'] );
		if ( object['flag'] ) {
			interval = 250;
			object['flag'] = false;
		} else {
			if ( interval > 75 ) interval = interval - 12;
		}
		object['timeID'] = setTimeout ( function() { _scrollUpOn( object, otherObject ); }, interval );
	} else {
		document.getElementById('up' + object['name'] ).src = scrollUp_dim.src;
	}
}

function _scrollUpOff( object ) {
	clearTimeout( object['timeID'] );
	object['flag'] = true;
	if ( object['start'] > 0 ) {
		document.getElementById('up' + object['name'] ).src = scrollUp_off.src;
	} else {
		document.getElementById('up' + object['name'] ).src = scrollUp_dim.src;
	}
}

function _scrollDownOn( object, otherObject ) {
	if ( object['end'] < object['max'] ) {
		document.getElementById('down' + object['name'] ).src = scrollDown_on.src;
		document.getElementById('up' + otherObject['name'] ).src = scrollUp_off.src;
		document.getElementById( object['name'] + "_" + object['start'] ).style.display = "none";
		document.getElementById( object['name'] + "_" + object['end'] ).style.display = "block";
		object['start']++;
		object['end']++;
		otherObject['start'] = eval ( object['start'] );
		otherObject['end'] = eval ( object['end'] );
		if ( object['flag'] ) {
			interval = 250;
			object['flag'] = false;
		} else {
			if ( interval > 75 ) interval = interval - 12;
		}
		object['timeID'] = setTimeout ( function() { _scrollDownOn( object, otherObject ); }, interval );
	} else {
		document.getElementById('down' + object['name'] ).src = scrollDown_dim.src;
	}
}

function _scrollDownOff( object ) {
	clearTimeout( object['timeID'] );
	object['flag'] = true;
	if ( object['end'] <= object['max'] ) {
		document.getElementById('down' + object['name'] ).src = scrollDown_off.src;
	} else {
		document.getElementById('down' + object['name'] ).src = scrollDown_dim.src;
	}
}

function _showRecipe ( url ) {
	nWide = 750;
	xPosition = ( screen.width - nWide ) / 2 - 10;
	if ( screen.width <= ( nWide + 20 ) ) {
		nWide = screen.width - 40;
		xPosition = 0;
	}
	nHigh = screen.height - 40;
	yPosition = 0;

	args = "width=" + nWide + "," 
	+ "height=" + nHigh + "," 
	+ "location=no," 
	+ "menubar=no,"
	+ "resizable=yes,"
	+ "scrollbars=yes,"
	+ "status=yes," 
	+ "titlebar=no,"
	+ "toolbar=no,"
	+ "hotkeys=no,"
	+ "screenx=" + xPosition + ","  //NN Only
	+ "screeny=" + yPosition + ","  //NN Only
	+ "left=" + xPosition + ","     //IE Only
	+ "top=" + yPosition;           //IE Only
	
	recipeWindow = window.open( url, 'recipe', args );
	recipeWindow.focus();
}

function _openRecipe ( ID ) {
	nWide = 750;
	xPosition = ( screen.width - nWide ) / 2 - 10;
	if ( screen.width <= ( nWide + 20 ) ) {
		nWide = screen.width - 40;
		xPosition = 0;
	}
	nHigh = screen.height - 40;
	yPosition = 0;

	args = "width=" + nWide + "," 
	+ "height=" + nHigh + "," 
	+ "location=no," 
	+ "menubar=no,"
	+ "resizable=yes,"
	+ "scrollbars=yes,"
	+ "status=yes," 
	+ "titlebar=no,"
	+ "toolbar=no,"
	+ "hotkeys=no,"
	+ "screenx=" + xPosition + ","  //NN Only
	+ "screeny=" + yPosition + ","  //NN Only
	+ "left=" + xPosition + ","     //IE Only
	+ "top=" + yPosition;           //IE Only
	
	recipeWindow = window.open( "recipe.php?" + ID, ID, args );
	recipeWindow.focus();
}
