		// Funktion zum Raussuchen der Formelemente
		function findFormElement( name )
		{
			for ( var i=0; i<document.forms.length; i++ )
				if ( document.forms[i].elements[name] != null ) return document.forms[i].elements[name];
			return null;
		}
		
		// Funktion zum Loeschen des Selektors
		function clearSelector( name )
		{
			var selector = findFormElement( name );
			while ( selector.options.length )
				selector.options[0] = null;
		}
	
	
		// Hauptobjekt
		// ------------------------------------------------------------------------------------------
		function selectorControl( selectOne , selectTwo  )
		{
			this.selectA	= null;
			this.selectB	= null;
			this.selectNameA	= selectOne;
			this.selectNameB	= selectTwo;
			this.entries	= new Array();
			this.defaultA	= 0;
			this.defaultB	= 0;
			
			this.getSubEntryList 	= selectorControlGetSubEntryList;
			this.addObjectList		= selectorControlAddList;
			this.addEntry			= selectorControlAddEntry;
			this.recalc				= selectorControlRefresh;
			this.setValueA			= selectorControlSetValueA;
			this.setValueB			= selectorControlSetValueB;
			this.init				= selectorControlInit;
		}
		
		function selectorControlSetValueA( defValue )
		{
			for ( var i=0; i<this.entries.length; i++ )
				if ( this.entries[i].value ==  defValue )
					this.defaultA = i;			

		}
		
		function selectorControlSetValueB( defValue )
		{
			var subs = this.getSubEntryList( this.entries[this.defaultA].value );
			for ( var i=0; i<subs.length; i++ )
				if ( subs[i].value ==  defValue )
					this.defaultB = i;			
		}
		
		function selectorControlInit()
		{
			this.selectA	= findFormElement( this.selectNameA );
			this.selectB	= findFormElement( this.selectNameB );
		
			clearSelector( this.selectNameA );
			for ( var i=0; i<this.entries.length; i++ )
				this.selectA.options[this.selectA.options.length] = new Option( this.entries[i].text, this.entries[i].value, false, false );
			this.selectA.selectedIndex = this.defaultA;
			this.recalc( true );			
		}
		
		function selectorControlGetSubEntryList( entryValue )
		{
			for ( var i=0; i<this.entries.length; i++ )
			{
				if ( this.entries[i].value == entryValue )
				{
					return this.entries[i].subentries;
				}
			}
			return null;
		}
		
		function selectorControlAddEntry( mainText, mainValue, subEntryArray )
		{
			this.entries[this.entries.length] = new selectorEntry( mainText, mainValue, subEntryArray );
		}
		
		function selectorControlAddList(list)
		{
			for (var i=0; i<list.entries.length; i++)
			{
				//alert("87:" + list.getItem(list.keys[i]));
				//item = list.getItem(list.keys[i]);
				temp = new selectorObjectEntry(list.entries[i]);
				this.entries[this.entries.length] = temp;
			}
		}
		
		function selectorControlRefresh()
		{
			var curValue	= this.selectA.options[this.selectA.selectedIndex].value;
			var subEntries	= this.getSubEntryList( curValue );

			clearSelector( this.selectB.name );
			for ( var i=0; i<subEntries.length; i++ )
			{
				this.selectB.options[this.selectB.options.length] = new Option( subEntries[i].text, subEntries[i].value, false, false );
			}
			if ( arguments[0] )
			{
				this.selectB.selectedIndex = this.defaultB;
			}
			else
				this.selectB.selectedIndex = 0;
		}
		
		/**
		 * selectorEntry
		 * Creates a selectorEntry from given values
		 */
		function selectorEntry( mainText, mainValue, subEntryArray )
		{
			this.text		= mainText;
			this.value		= mainValue;
			this.subentries	= new Array();
			for ( var i=0; i<subEntryArray.length; i++ )
			{
				this.subentries[i]			= new Object();
				this.subentries[i].text		= subEntryArray[i][0];
				this.subentries[i].value	= subEntryArray[i][1];
			}
		}
		
		/**
		 * selectorObjectEntry
		 * Creates a selectorEntry-Object from a given Object-Item
		 * The ObjectItem must implement the following interface:
		 *   - String getPrimkey()
		 *   - String getname()
		 *   - objectList getShips()
		 */
		function selectorObjectEntry(objectItem)
		{	
			this.text		= objectItem.getName();
			this.value		= objectItem.getPrimkey();
			this.subentries	= new Array();
			
			var temp = objectItem.getShips();
			for (var i=0; i<temp.entries.length; i++)
			{
				var item = temp.entries[i];
				this.subentries[i] = new Object();
				this.subentries[i].text = item.getName();
				this.subentries[i].value	= item.getPrimkey();
			}
		}
		// Ende des Objekt-Zeugs
		// ------------------------------------------------------------------------------------------