/* Instantiating an AjaxManager */
var someManagedAjax = $.manageAjax.create('quickSearchAjax', {
	queue: true,
	cacheResponse: false 
	}); 

/** Listen on changes in first level select box */
function level1selectionChanged(){
	$("option.dynamic2").remove();
	var selVal = $("select[name='CatLevel1ID']")[0].value;
	if (selVal != -2) {
		var dataString = "CatLevel1ID=" + selVal;
		getContent("dynamic2", "CatLevel2ID", dataString);
		selectboxDisabler("MenuJumpID", true);
	} else {
		selectboxDisabler("CatLevel2ID", true);
		selectboxDisabler("MenuJumpID", true);
	}
}

/** Listen on changes in second level select box */
function level2selectionChanged(){
	$("option.dynamic3").remove();
	var selVal = $("select[name='CatLevel2ID']")[0].value;
	if (selVal != -2) {
		var dataString = "CatLevel2ID=" + selVal;
		getContent("dynamic3", "MenuJumpID", dataString);
	} else {
		selectboxDisabler("MenuJumpID", true);
	}
}

/** Does the AJAX call and fills the page
 * @param clazz the css class to give to created elements
 * @param target where the options should be dropped
 * @param params request parameters for server-side output generation */
function getContent(clazz, target, params){
	$.manageAjax.add('quickSearchAjax', {
		url: $("input[name=quickSearchAjaxURL]")[0].value,
		dataType: 'json',
		data: params,
		cache: false,
		success: function(data, textStatus){
			$.each(data, function(){
				$("select[name=" + target + "]").
					append($("<option></option>").
					attr("value",this['path']).
					addClass(clazz).
					text(this['name'])
				);
			});
			selectboxDisabler(target, false);
		},
		error: function(XMLHttpRequest, textStatus, errorThrown){
			alert("Service temporary disabled");
		}
	});
}

/** Listen on changes in third level select box and redirect to selected entry */
function level3selectionChanged(){
	var selVal = $("select[name='MenuJumpID']")[0].value;
	if (selVal != -2) {
		self.location.href=selVal;
	}
}
/** Enables (status=false) or disables (status=true) checkboxes */ 
function selectboxDisabler(name, status) {
	if (status) {
		$("select[name=" + name + "]").attr('disabled', 'disabled');
	} else {
		$("select[name=" + name + "]").removeAttr('disabled');
	}
}
