/**
 * @author ReneRose
 */
var arrImages = new Array();
var arrThumbs = new Array();
var strOverColor = "#ff650a";
var strOutColor = "#485142";

var arrDom = new Array();
arrDom[0] = new Array( "Main_Screen", "Right", "Right_Top", "Right_Bot", "Right_Mid" );

/**
 * @classdescription
 * Der Navmanager ist für das Pre Loading aller Navigationsschaltflächen
 * zuständig. Das Objekt erzeugt ein Array mit Imageobjekten. Grundlage für die
 * Verwaltung der Webseiten Images, ist der präfix "Navigation", der in den id's der Bilder
 * vorhanden sein muss.
 */
function NavManager( )
	{
		
		this.Init = function( )
			{ 
				GenerateNavImages();
				GenerateBackgroundImages();
			}
		
		/*
			Die Methode durchsucht die Liste aller "img" Tags der Seite und erzeugt
			aus denjenigen, die im Namen ein "Roll" als Präfix haben, Intanzen der Klasse
			RollImage(). Diese Klasse liest die Quelldaten der
			Dom Elemente und erzeugt daraus zwei Image Objecte für den Roll Effekt.
			Außerdem wird das erste Kind Element, als Text in den Rollover Effekt mit einbezogen.
		*/
		function GenerateNavImages()
			{
				for( var numCounter = 0; numCounter < document.images.length; numCounter ++ )
					{
						var objImage, strName;
						objImage = document.images[numCounter];
						strName = objImage.id;
						
						if( strName.search(/Roll/) > -1 )
							{
								var objRollImage = new RollImage( objImage );
								arrImages.Append( objRollImage );
							}
					}
			}
		
		/*
			Die Methode durchsucht die Liste aller "div" und "a" Tags der Seite und erzeugt
			aus denjenigen, die im Namen ein "Roll" als Präfix haben, Intanzen dr Klasse
			RollBackgroundImage(). Diese Klasse liest die BackgroundImage Eigenschaft der
			Dom Elemente und erzeugt daraus zwei Image Objecte für den Roll Effekt.
			Außerdem wird das erste Kind Element, als Text in den Rollover Effekt mit einbezogen.
		*/
		function GenerateBackgroundImages()
			{
				for( var numCounter = 0; numCounter < document.getElementsByTagName("div").length; numCounter ++ )
					{
						var objElement, strName;
						objElement = document.getElementsByTagName("div")[numCounter];
						strName = objElement.id;
						
						if( strName.search(/Roll/) > -1 )
							{
								var objRollImage = new RollBackgroundImage( objElement );
								arrImages.Append( objRollImage );
							}
					}
				
				for( var numCounter = 0; numCounter < document.getElementsByTagName("a").length; numCounter ++ )
					{
						var objElement, strName;
						objElement = document.getElementsByTagName("a")[numCounter];
						strName = objElement.id;
						
						if( strName.search(/Roll/) > -1 )
							{
								var objRollImage = new RollBackgroundImage( objElement );
								arrImages.Append( objRollImage );
							}
					}
			}
		
	}

function TabManager( )
	{	
		//Variablen
		var arrTabs = new Array();
		var arrLeadTabs = new Array();
		var objSelectedTab;

		myObject = this;
		
		/*
			Die Methode durchläuft alle "div" Elemente der Seite und erzeugt die 
			Tabs der Tab Navigation 
		*/
		this.Init = function( )
			{
				GenerateTabs();
				InitSelect();
			}
		
		/*
			Die Methode setzt alle Tabs der Seite auf "out". Tabs die den Index 1 haben, werden davon 
			ausgenommen, solange kein Tab durch einen Mausklick selektiert wurde.
		*/
		this.ClearAll = function()
			{
				var objTab;
				
				for( var numTabCounter = 0; numTabCounter < arrTabs.length; numTabCounter ++ )
					{
						objTab = arrTabs[numTabCounter]
						var boolLeadTab = SearchLeadTab( objTab.Tab.Name );
						
						if( boolLeadTab == false ) 
							{ 
								//objTab.Tab.ClearAllwaysSelected();
								objTab.Tab.Clear();
							}
					}
			}
		
		function SearchLeadTab( strName )
			{
				var boolFound = false;

				for( var numTabCounter = 0; numTabCounter < arrLeadTabs.length; numTabCounter ++ )
					{ 
						objTab = arrLeadTabs[numTabCounter]
						if( objTab.Tab.Name == strName ) { boolFound = true; }
					}
				
				return boolFound;
			}
		
		function GenerateTabs()
			{
				for( var numCounter = 0; numCounter < document.getElementsByTagName("div").length; numCounter ++ )
					{
						var objElement, strName, objTab;
						objElement = document.getElementsByTagName("div")[numCounter];
						strName = objElement.id;
						objTab = null;
						
						if( strName.search(/Tab_Filled/) > -1 )
							{ objTab = new TabFilled( objElement );	}
						else if( strName.search(/Tab_Border/) > -1 )
							{ objTab = new TabBorder( objElement );	}
						
						if( objTab != null )
							{
								arrTabs.Append( objTab );
								
								if ( objTab.Tab.Index == 1 ) 
									{ arrLeadTabs.Append( objTab ); }
							}
					}
			}
	
		function InitSelect()
			{
				for( var numTabCounter = 0; numTabCounter < arrTabs.length; numTabCounter ++ )
					{
						var objTab = arrTabs[numTabCounter];
						if ( objTab.Tab.Index == 1 ) 
							{ objTab.Tab.Select(); }
					}
			}
	
		this.Shift = function( objTab )
			{
				var numStyleIndex = objTab.Name.GetIndexFromID();

				var objScreen;
				
				var arrLeft = new Array( "", "Left_Level1", "Left_Level2", "Left_Level3", "Left_Level4" );
				var arrSide = new Array( "", "Side_Level1", "Side_Level2", "Side_Level3", "Side_Level4" );
				var arrBottom = new Array( "", "Bottom_Level1", "Bottom_Level2", "Bottom_Level3", "Bottom_Level4" );
				
				//Kategorienavigation, rechte Seite Quick View
				var arrCategory = new Array( "", "Category_Level1", "Category_Level2", "Category_Level3", "Category_Level4", "Category_Level5",
										"Category_Level6", "Category_Level7", "Category_Level8", "Category_Level9", "Category_Level10",
										"Category_Level11", "Category_Level12", "Category_Level13", "Category_Level14", "Category_Level15");
				
				//Kategorie Auswahl linke Seite vertikal
				var arrVNav = new Array( "", "VNav_Level1", "VNav_Level2", "VNav_Level3", "VNav_Level4" );
				
				if( objTab.Name.Contains( "Left" ) )
					{ 
						objScreen = document.getElementById( "Left_Screen" );
						if( objScreen != null ) { objScreen.className = arrLeft[numStyleIndex]; }
						
						objScreen = document.getElementById( "Bottom_Screen" );
						if( objScreen != null ) { objScreen.className = arrBottom[numStyleIndex]; }
					}
				else if( objTab.Name.Contains( "LeftKombi" ) )
					{ 
						objScreen = document.getElementById( "Left_Screen" );
						if( objScreen != null ) { objScreen.className = arrLeft[numStyleIndex]; }
					}
				else if ( objTab.Name.Contains( "Side" ) )
					{ 
						objScreen = document.getElementById( "Side_Screen" );
						if( objScreen != null ) { objScreen.className = arrSide[numStyleIndex]; }
					}
				else if( objTab.Name.Contains( "Bottom" ) )
					{ 
						objScreen = document.getElementById( "Bottom_Screen" );
						if( objScreen != null ) { objScreen.className = arrBottom[numStyleIndex]; }
					 }
				else if( objTab.Name.Contains( "Quick" ) )
					{
						objScreen = document.getElementById( "Right_Screen" );
						if( objScreen != null ) { objScreen.className = arrCategory[numStyleIndex]; }
					 }
				else if( objTab.Name.Contains( "Category" ) )
					{ 
						objScreen = document.getElementById( "Side_Screen" );
						if( objScreen != null ) { objScreen.className = arrVNav[numStyleIndex]; }
					 }
			}
	
		this.Click = function( objTab )
			{
				var strTabName = objTab.Element.id;
				var arrStrings = new Array();
				arrStrings = strTabName.split("_");
				var strTabGroupName = arrStrings[0];
				
				if( objSelectedTab != null ) { objSelectedTab.ClearAllwaysSelected(); }
				
				objSelectedTab = objTab;
				
				RemoveLeadTab( strTabGroupName );
				myObject.Shift( objTab );
			}
		
		function RemoveLeadTab( strTabGroupName )
			{
				var numTabIndex = -1;

				for( var numTabCounter = 0; numTabCounter < arrLeadTabs.length; numTabCounter ++ )
					{ 
						objTab = arrLeadTabs[numTabCounter]
						if( objTab.Tab.Name.Contains( strTabGroupName ) ) 
							{ 
								numTabIndex = numTabCounter;
								objTab.Tab.ClearAllwaysSelected();
								objTab.Tab.Clear();
							}
					}
								
				if( numTabIndex > -1 ) 
					{ arrLeadTabs.splice( numTabIndex, 1 ); }
			}
	}

function ThumbManager()
	{
		this.Init = function()
			{ GenerateThumbs(); }
		
		function GenerateThumbs()
			{
				for( var numCounter = 0; numCounter < document.images.length; numCounter ++ )
					{
						var objImage, strName;
						objImage = document.images[numCounter];
						strName = objImage.id;
						
						if( strName.search(/Thumb/) > -1 )
							{
								var objThumb = new ThumbNail( objImage );
								arrThumbs.Append( objThumb );
							}
					}
			}
	
		
		this.Zoom = function( objThumb )
			{
				var objZoom = new ZoomImage( objThumb );
				document.getElementById("Border").appendChild( objZoom );
			}
		
		this.CloseZoom = function( strName )
			{ document.getElementById("Border").removeChild( document.getElementById(strName) ); }
	}
	
function StyleManager()
	{
		this.Init = function()
			{
			
			}
		
		
		this.ShiftStyle = function( numIndex )
			{
			
				var arrElements = new Array();
				arrElements = arrDom[numIndex];
				
				for( var numCounter = 0; numCounter < arrElements.length; numCounter ++ )
					{
						var strName = arrElements[numCounter];
						var objElement = document.getElementById( strName );

						if( objElement != null )
							{
								strClassName = objElement.className;
								
								if( strClassName.Contains( "_Shift" ) )
									{ strClassName = strClassName.replace( "_Shift", "" ); }
								else { strClassName = strClassName + "_Shift"; }
								
								objElement.className = strClassName;
							}
					
					}
			}
	}
	