if ( jQuery.browser.msie && jQuery.browser.version >= 9 )
	jQuery.support.noCloneEvent = !!window.addEventListener;

var artikelarten 	= new Object();
var merkmalfelder   = new Object();
var merkmalwerte	= new Object();

var variantentypen  = new Object();

function getArtikelArten() {
	arttable = requestTable("org.auctores.schoedlbauer.shop", "getArtikelArtenForSuche").getDatas();
	jQuery.each(arttable,
		function() {
		   // Artikelart ablegen
		   var artID      = this.getID();
		   artikelArtID   = artID;
		   artikelArtName = this.getData("m_arv_artikelart.arv_arta_name");
		   artikelarten[artikelArtID] = artikelArtName;
		   // Merkmalfelder für Artikelart holen
		   merkmalfelder[artID] = new Object();
		   mermaltable = requestTable("org.auctores.schoedlbauer.shop","getAllMerkmalTypenByArtikelArt(\""+artID+"\")").getDatas();
		   jQuery.each(mermaltable,
		       function() {
			   	   merkmalfelder[artID][this.getID()] = new Object();
			       merkmalfelder[artID][this.getID()]['name'] = this.getData("fdName");
			       merkmalfelder[artID][this.getID()]['help'] = this.getData("fdHilfe");
		   	   }
		   );
		}
	);
}

function fillArtikelArten() {
	// changelistener registrieren
	$("#fdArtikelArt").change(
			function() {
				$('#fdGroesse').selectOptions(""); // größe resetten
				createInputVariantentypen(this.value);
			}
	);
	
	if (window.fdKat_Search && fdKat_Search != null) {
		$("#fdArtikelArt").selectOptions(fdKat_Search);
		createInputVariantentypen(fdKat_Search);
		suchForm_fdArtikelArtOnChange(document.getElementById('fdArtikelArt'));
	}
	if (window.fdKat_Hersteller && fdKat_Hersteller !=null)
		$('#fdHersteller').selectOptions(fdKat_Hersteller);
	
	if (window.fdKat_Preis && fdKat_Preis !=null)
		$('#fdPreis').selectOptions(fdKat_Preis);
	
	if (window.fdKat_Groesse && fdKat_Groesse !=null) {
		$('#fdGroesse').selectOptions(fdKat_Groesse);
	}
}

function createInputVariantentypen(artikelart) {
	$('#variantensuche').empty();
	if (artikelart!=0) {
		var counter = 1;
		var row;
		var rowCounter = 1;
		jQuery.each(getMerkmalTypenByArtikelArt(artikelart),
			function(id, content) {
				    text     = content['name'];
				    helptext = content['help'];
					// div Tag anlegen
					div = $.create('div',{'class':counter%2==0 ? 'rightcontainer' : 'leftcontainer'});
					
					// label anlegen
					span = $.create('span',{},[text]);
					// gibt es einen hilfetext?
					if (helptext!=null && helptext.length>0) {
						// hilfebild aufbauen
						img = $.create('img',{'class':'tiptip','src':sHelpImgPath,'text':helptext});
						// tiptip ans bild hängen
						$(img).tipTip({attribute: 'text'});
						// label zusammenbauen - text + bild
						label = jQuery($.create('label',{'for':id},'')).append(span,img);
					} else {
						label = jQuery($.create('label',{'for':id},'')).append(span);
					}
					// input anlegen
					input = $.create('select',{'id':id,'name':'fdVarTyp_'+id});
					
					optionDEF = $.create('option',{'value':'---'},["---"]);
					$(input).append($(optionDEF));
					
					jQuery.each(getMerkmalWertyByTyp(id),
					    function(idOption, textOption) {
							var bSelected = false;
							if (window.fdKat_SearchVars && fdKat_SearchVars!=null && fdKat_SearchVars[id]!=null)
								option = $.create('option',{'value':idOption,'selected':'selected'},[textOption]);
							else 
								option = $.create('option',{'value':idOption},[textOption]);
							$(input).append($(option));
					    }
					);
					$(div).append($(input));
					$(div).append($(label));
				
				if (window.fdKat_SearchVars && fdKat_SearchVars!=null && fdKat_SearchVars[id]!=null)
					input.value=fdKat_SearchVars[id];

				// an das div hängen
				if (counter%2==0) {
					$(row).append($(div));
					rowCounter++;
				} else {
					row = $.create('div',{'id':'row_'+rowCounter,'class':'searchrow'});
					$(row).append($(div));
					$('#variantensuche').append($(row));
				}
				counter++;
			}
		);
	} else {
		
	}
}

function getMerkmalWertyByTyp(merkmaltyp) {
    if (merkmalwerte==null)
    	merkmalwerte = new Object();
    if (merkmalwerte[merkmaltyp]==null) {
	    merkmalwerte[merkmaltyp] = new Object();
		mermaltable = requestTable("org.auctores.schoedlbauer.shop","getMerkmalWerteByTyp(\""+merkmaltyp+"\")").getDatas();
	    jQuery.each(mermaltable,
	        function() {
	    		merkmalwerte[merkmaltyp][this.getID()] = this.getData("m_arv_merkmal.arv_mer_name");
	   	    }
	    );
	}
    return merkmalwerte[merkmaltyp];
}

function getMerkmalTypenByArtikelArt(artikelart) {
	return merkmalfelder[artikelart];
}

function resetSuche() {
	$('#fdArtikelArt').val("0"); // artikelart resetten
	$('#fdHersteller').val("");  // hersteller resetten
	$('#fdPreis').val(""); 		 // preis resetten
	$('#fdGroesse').val("");     // größe resetten
	$('form[name="suchForm"]').submit();
}

function init() {
	$('#frmReset').click(resetSuche);
	getArtikelArten();
	fillArtikelArten();
}

/***************************/
/******** 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)
}
