var oberkategorien 	= new Object();
var kategorien 		= new Object();
var variantentypen  = new Object();

function getKategorien() {
	kattable = requestTable("org.auctores.schaller.hp", "getOberkategorien").getDatas();
	jQuery.each(kattable,
		function() {
		   oberkatID   = this.getID();
		   oberkatName = this.getData("m_arv_kategorie.arv_kat_name");
		   //alert(oberkatID);
		   oberkategorien[oberkatID] = oberkatName;
		   unterkatTable = requestTable("org.auctores.schaller.hp", "getUnterkategorienByOberkategorie(\""+oberkatID+"\")");
		   kategorien[oberkatID] = new Object();
		   if (unterkatTable.getTableCount()==0)
			   kategorien[oberkatID][oberkatID] = oberkatName;
		   jQuery.each(unterkatTable.getDatas(),
		      function() {
			     kategorien[oberkatID][this.getID()] = this.getData("m_arv_kategorie.arv_kat_name");
		      }
		   );
		}
	);
}

function fill_kategorien() {
	jQuery.each(oberkategorien,
		function(id,text) {
			optGroup = $.create('optgroup',{'label':[text]});
			jQuery.each(kategorien[id],
				function(id,text) {
					o = $.create('option',{'value':id},[text]);
					$(optGroup).append($(o));
				}
			);
			$("#kat_sel").append($(optGroup));
		}
	);
	
	// changelistener registrieren
	$("#kat_sel").change(
			function() {
				createInputVariantentypen(this.value);
			}
	);
	//$("#kat_sel").sortOptions();
	if (window.fdKat_Search && fdKat_Search != null) {
		$("#kat_sel").selectOptions(fdKat_Search);
		createInputVariantentypen(fdKat_Search);
	}
}

function createInputVariantentypen(kategorie) {
	if (kategorie!=0) {
		// Variantentypen auslesen
		getVariantenTypenByKategorie(kategorie);
		
		$('#variantensuche').empty();
		jQuery.each(variantentypen,
					function(id,text) {
						// p Tag anlegen
						p = $.create('p',{});
						// label anlegen
						label = $.create('label',{'for':id},[text])
						// input anlegen
						input = $.create('input',{'id':id,'name':'fdVarTyp_'+id});
						
						if (window.fdKat_SearchVars && fdKat_SearchVars!=null && fdKat_SearchVars[id]!=null)
							input.value=fdKat_SearchVars[id];

						// beide felder an das p anhängen
						$(p).append($(label));
						$(p).append($(input));
						
						//$(p).append($.create('div',{'style':'clear:left'}));
						
						// p an das div hängen
						$('#variantensuche').append($(p));
						
						$(input).autocomplete(
								"/moxanos/json?cmp=org.auctores.schaller.hp&msg=getVariantenWerte&sid="+AC_IT_SERV+"&varID="+id+"&katID="+kategorie,
								{
									dataType:"json",
									parse: 
										function(response) 
										{ 
											var rows = new Array();
											data = response["response"]["data"];
											for (var i=0; i<data.length;i++) {
												rows[i] = { data:data[i], value:data[i].vorschlag, result:data[i].vorschlag};
											}
											return rows; 
										},
									formatItem: 
										function(row,i,n) {
											return row.vorschlag;
										},
									width: 300,
									max: 15,
									selectFirst: true
								}
						);
					}
		);
	} else {
		// wenn "bitte wählen" ausgewählt ist, werden alle zusätzlichen Suchfelder eliminiert
		$('#variantensuche').empty();
		/*if (fdKat_SearchVars!=null)
			fdKat_SearchVars = new Object();*/
	}
}

function getVariantenTypenByKategorie(kategorie) {
	vttable = requestTable("org.auctores.schaller.hp", "getVariantenTypenByKategorie(\""+kategorie+"\")").getDatas();
	variantentypen = new Object();
	jQuery.each(vttable,
		function() {
			variantentypen[this.getID()] = this.getData("m_arv_variantetyp.arv_vartyp_name");
		}
	);
}
function init() {
	getKategorien();
	fill_kategorien();
}

/***************************/
/******** HELPER ***********/
/***************************/
// Daten per Ajax holen, Rückgabe von MoxData
function requestData(package, method) {
	var moxMessage = new MoxMessage(package,method);
	return MoxServer.executeData(moxMessage)
}
//Daten per Ajax holen, Rückgabe von MoxTable
function requestTable(package, method) {
	var moxMessage = new MoxMessage(package,method);
	return MoxServer.executeTable(moxMessage)
}
