
  /**
	 * Javascript für Beispiele
	 * @author			Michael Rack <m.rack@seminar-shop.com>
	 * @copyright		Seminar-Shop GmbH
	 */
	
	/**
	 * Erstellt die Links und übernimmt das Fragment-Handling
	 * @return void
	 */
	function observe_list()
	{
		var list  = $('beispiele');
		var immutableList = new Array();
		
		// Auslesen, welche Beispiele nicht ausgeblendet werden sollen
		if( document.location.href.indexOf('#') > 0 )
		{
			var fragment = document.location.href.substr( document.location.href.indexOf('#') + 1 );
			if( fragment.search( /^\d+(|(,\d+)+)$/ ) > -1 )
			{
				immutableList = fragment.split(',');
			}
		}
		
		// Liste durchlaufen
		var immutable = false;
		var item  = list.firstChild;
		var index = 0;
		do
		{
			if( item.tagName )
			{
				switch( item.tagName.toLowerCase() )
				{
					case 'dt':
						index ++;
						var strIndex = index.toString();
						
						// Prüfen, ob das aktuelle Element eingeklappt werden soll, oder nicht
						immutable = $A(immutableList).find
						(
							function( n )
							{
								return( n == index );
							}
						);
						
						// Link erstellen
						var a = new Element('a', { href: '#'+ strIndex });
						a.update( item.innerHTML );
						a.onclick = function()
						{
							toggleVisibility( this.parentNode );
							update_fragment();
							return( false );
						}
						item.update('');
						item.appendChild( a );
						
						// Daten hinzufügen
						if( typeof immutable == 'undefined' )
						{
							item.addClassName('hidden');
						}
						item.addClassName('beispiel_'+ strIndex);
						item.setAttribute('id', strIndex);
						delete a;
						break;
					
					case 'dd':
						if( typeof immutable == 'undefined' )
						{
							item.hide();
						}
						item.addClassName('beispiel_'+ strIndex);
						break;
				}
			}
			item = item.nextSibling;
		}
		while( item );
	}
	
	/**
	 * Ändert die Darstellung eines Eintrags
	 * @param		item			HTML-DT-Object
	 * @return  void
	 */
	function toggleVisibility( item )
	{
		var nextItem = item.nextSibling;
		var hasClassName = item.hasClassName( 'hidden' );
		do
		{
			if( nextItem.tagName && nextItem.tagName.toLowerCase() == 'dd' )
			{
				if( hasClassName )
				{
					nextItem.show();
				}
				else
				{
					nextItem.hide();
				}
			}
			nextItem = nextItem.nextSibling;
		}
		while( nextItem && ((typeof nextItem.tagName) == 'undefined' || (nextItem.tagName && nextItem.tagName.toLowerCase() != 'dt')) )
		
		// Klassennamen entfernen
		if( hasClassName )
		{
			item.removeClassName( 'hidden' );
		}
		else
		{
			item.addClassName( 'hidden' );
		}
	}
	
	/**
	 * Updaten des Fragments
	 * @return void
	 */
	function update_fragment()
	{
		var dt = $('beispiele').select('dt');
		var fragment = '';
		var length = dt.length;
		for( var x = 0; x < length; x++ )
		{
			if( dt[x].hasClassName('hidden') == false )
			{
				fragment = fragment + ',' + dt[x].getAttribute('id');
			}
		}
		
		// Fragmentation Handling
		var baseURL = document.location.href;
		if( baseURL.indexOf('#') > 0 )
		{
			baseURL = baseURL.substr( 0, baseURL.indexOf('#') );
		}
		baseURL = baseURL + '#';
		
		// Fragments hinzufügen
		if( fragment.length > 1 )
		{
			baseURL = baseURL + fragment.substr( 1 );
		}
		document.location.href = baseURL;
	}
	
	// Wenn das Dokument geladen wurde, dann die Videos entfernen und eine Suchergebnis-Liste ausgeben
  Event.observe
  (
    window,
    'load', 
    function()
    {
      observe_list();
    },
    false
  );