var Behavior_Category = {
	// Defaultmeldungen (werden aus display:none-DIVs befuellt), falls die Ajax-Verbindung fehlschaegt
	innerHTML_if_no_data : new Array(),
	
	// Defaultmeldungen (werden aus display:none-DIVs befuellt), falls in der uebergeordneten Select-Box [alle *] ausgewaehlt ist
	innerHTML_disabled : new Array(),

	// sammelt die Ausgaben des Controllers wieder ein
	prefill : new Array(),

	// allgemeine Ajax-Anfrage-Funktion, soll von speziellen Anfrage-Funktionen ge-wrapp-ed werden
	getList : function(actionName,parentId,selectedId,onCompleteCallbackFunction) {
		var parent_param = ('' != parentId) ? '&parent='+parentId : '&parent=0';
		var selected_param = ('' != selectedId) ? '&selected='+selectedId : '&selected=0';
		var language_param = '&LANGUAGE='+LANGUAGE;
		var request_url = AJAX_URL+'ajax.php?controller=category&action='+actionName+parent_param+selected_param+language_param;
		new Ajax.Request(  request_url, {onComplete: onCompleteCallbackFunction.bind(this)}  );
	},

	// spezielle Ajax-Anfrage-Funktionen, das sind alles Wrapper fuer die allgemeine Ajax-Anfrage-Funktion
	getCategoryList : function(categoryId) {
		this.getList('getcategory',	categoryId,	0,	this.displayCategoryList	);
	},

	// allgemeine Callback-Funktion fuer die Verarbeitung der Ajax-Antworten, soll von speziellen Callbacks ge-wrapp-ed werden
	ajaxCallback : function(response,elementIdToBeFilled,elementIdSelectBox,followUpFunction) {
		if (response.readyState == 4 && response.responseText) {
			if (/disabled/.test(response.responseText)) {
				$(elementIdToBeFilled).innerHTML = this.innerHTML_disabled[elementIdToBeFilled];
			} else {
				$(elementIdToBeFilled).innerHTML = response.responseText;
				if (null != followUpFunction) {
					followUpFunction.call(Behavior_GroupType,$(elementIdSelectBox).value);
				}
			}
		} else {
			$(elementIdToBeFilled).innerHTML = this.innerHTML_if_no_data[elementIdToBeFilled];
		}
		Attitude.start();
	},

	// spezielle Callback-Funktionen fuer die Verarbeitung der Ajax-Antworten, das sind alles Wrapper fuer die allgemeine Ajax-Callback-Funktion
	displayCategoryList	: function(response) {  this.ajaxCallback(response,	'Select_CategoryId',	'CategoryId',	null	);  },

	init : function() {  
		if ($('Select_CategoryId_if_no_data')!=undefined) {
			// Defaultmeldungen (werden aus display:none-DIVs befuellt), falls die Ajax-Verbindung fehlschaegt
			this.innerHTML_if_no_data['Select_CategoryId'	] = $('Select_CategoryId_if_no_data'	).innerHTML;
	
			// Defaultmeldungen (werden aus display:none-DIVs befuellt), falls in der uebergeordneten Select-Box "[alle *]" ausgewaehlt ist
			this.innerHTML_disabled['Select_CategoryId'		] = $('Select_CategoryId_disabled'		).innerHTML;
	
			// sammelt die Ausgaben des Controllers wieder ein
			this.prefill['CategoryId'	] = Category_Prefill_CategoryId;
	
			this.getCategoryList(this.prefill['CategoryId']);
		}
	}
};

var behavior_sheet = {	
	'#CategoryId' :	function(element) {
		element.onchange = function(){
			Behavior_Category.getCategoryList.call(Behavior_Category,this.value);
		}		
	}
};
Attitude.append(behavior_sheet);

