// Globale Variablen deklarieren
var sortList;

// Funktionen nach dem Laden des Dokuments initialisieren
window.addEvent('domready', function(){

	// Mootools Fx.Sort für die Motorenliste initialisieren
	sortList = new Fx.Sort($$('.list li.listdata'), {transition: Fx.Transitions.Back.easeInOut, duration: 1000});	

	// Slider für die Details der Motoren initialisieren
	$$('.list li.listdata').each( function( item, index ) {
		// DIV-Kontainer für die Details des Motors ermitteln
		var myElement	= item.getElement('div.datasheet');

		if ( myElement ) {
			// Alle a-Tags des Motors zum "toggeln" des DIV-Kontainers initialisieren
			item.getElements('a').each( function( item, index ) {
				if ( item.get('name') != 'reiter' ) {
					item.addEvent('click', function(e){
						e.stop();

						// Slider beim ersten Klick initialisieren
						if ( !myElement.slidefx ) {
							myElement.slidefx = new Fx.Slide(myElement);
							myElement.slidefx.hide();
							myElement.setStyle('display', 'block');
							//myElement.setStyle('min-height', '500px');
							
							//myElement.getParent().setStyle('min-height', '500px');
							
							// Reiter-Navigation initialisieren
							var tabs = new BWSO.AsyncTabs( myElement.getElement('.tabs'), myElement.getElement('.boxholder'), {
								autoplay:false,
								transitionDuration:500,
								slideInterval:6000,
								keepContent: false
							});
						}
						item.getParent().getParent().toggleClass('active'); // übergeordnetes Listen-Element aktivieren/deaktivieren
						myElement.slidefx.toggle(); // Details zum Motor ein- /ausblenden
					});
				}
			});
		}
	});
	
	// Das DOM neu aufbauen (wird für den IE benötigt)
	
	sortList.rearrangeDOM();
});

/*
 * Dient als Comparator für die Methode Array.sort und
 * definiert, wie Characters verglichen werden sollen.
 * Ignoriert Groß- Kleinschreibung und sortiert Umlaute
 * zu den entsprtechenden Selbstlauten.
 * (ä == a, ß == s, usw.)
 * @param a erstes Argument
 * @param b zweites Argument
 * @return  0, wenn beide Argumente gleich sind
 *  	-1, wenn a größer als b ist
 *  	 1, sonst
 */
function stringComparison(a, b)	{
	a['value'] = a['value'].toLowerCase();
	a['value'] = a['value'].replace(/&auml;/g,"a");
	a['value'] = a['value'].replace(/&ouml;/g,"o");
	a['value'] = a['value'].replace(/&uuml;/g,"u");
	a['value'] = a['value'].replace(/&szlig;/g,"s");

	b['value'] = b['value'].toLowerCase();
	b['value'] = b['value'].replace(/&auml;/g,"a");
	b['value'] = b['value'].replace(/&ouml;/g,"o");
	b['value'] = b['value'].replace(/&uuml;/g,"u");
	b['value'] = b['value'].replace(/&szlig;/g,"s");

	return( a['value'] == b['value'] ) ? 0 : ( a['value'] > b['value'] ) ? 1 : -1;
}





/*
 * Dient als Comparator für die Methode Array.sort und
 * definiert eine absteigende Sortierung
 * @return 0, wenn beide Argumente gleich sind
 *  	Zahl größer 0, wenn b größer als a ist
 *  	Zahl kleiner 0, sonst
 */
function numComparison(a, b)	{
	return a['value'] - b['value'];
}

// Motorenliste neu sortieren
function sortTable( sortParam ) {
	// Übergebenen Parameter der Motorenliste in einem Array ablegen
	var orderElements = new Array;
	$$('.list li.listdata').each( function( item, index ) {
		orderElements[index] = new Object();
		orderElements[index]['id'] = index;
		orderElements[index]['value'] = item.getElement('div.'+sortParam).title;
	});

	// Motorenliste neu sortieren
	var newOrder = new Array;
	//( typeof orderElements[0]['value'] == 'string' ) ? orderElements.sort(stringComparison) : orderElements.sort(numComparison); Sortieränderung von Helmut
	( isNaN(orderElements[0]['value']) ) ? orderElements.sort(stringComparison) : orderElements.sort(numComparison);
	orderElements.each( function( item, index ) {
		newOrder.push( orderElements[index]['id'] );
	});

	// Neue Sortierung auf die Motorenliste anwenden
	sortList.sort( newOrder ).chain( sortList.rearrangeDOM.bind(sortList) );
}