var TimeSettings = new Array();
var MainnavigationTime = 300;
var ProductCinemaObjects = new Array();

$(document).ready( function() {

	/************ Product Cinema Start ************/
	$('div.ProductCinema').each( function() {
		GeneralJS.appendButtonFeats($(this));
	});
	/************ Product Cinema End ************/

	$('#ShadowboxFooter').each( function()
	{
		var FooterHTML = $(this).html();
		parent.Shadowbox.setFooter(FooterHTML);
	});
});

$(function() {

	$('a#ServiceSelectLink').hover(
		function() {
			TimeSettings['ServiceBox'] = window.setTimeout("GeneralJS.ShowServiceLayer()", MainnavigationTime);
		},
		function() {
			TimeSettings['ServiceBox'] = window.setTimeout("GeneralJS.HideServiceLayer()", MainnavigationTime);
		}
	);

	$('#ServiceSelectBox').hover(
		function() {
			window.clearTimeout(TimeSettings['ServiceBox']);
		},
		function() {
			TimeSettings['ServiceBox'] = window.setTimeout("GeneralJS.HideServiceLayer()", MainnavigationTime);
		}
	);

	$('.MainNavigationLink').hover(
		function() {
			var category = $(this).attr('category');
			var position = $(this).position();
			TimeSettings[category] = window.setTimeout("GeneralJS.ShowMainnavigationLayer('"+category+"','"+(position.top+26)+"')", MainnavigationTime);
		},
		function() {
			var category = $(this).attr('category');
			window.clearTimeout(TimeSettings[category]);
			TimeSettings[category] = window.setTimeout("GeneralJS.HideMainnavigationLayer('"+category+"')", MainnavigationTime);
		}
	)

	$('.MainNavigationLayer').hover(
		function() {
			var category = $(this).attr('category');
			window.clearTimeout(TimeSettings[category]);
		},
		function() {
			var category = $(this).attr('category');
			TimeSettings[category] = window.setTimeout("GeneralJS.HideMainnavigationLayer('"+category+"')", MainnavigationTime);
		}
	)

	$('li.pullUp > h4').click(
		function() {
			var thisPullUp = $(this).parent();
			if (thisPullUp.hasClass('pullDown'))
			{
				thisPullUp.removeClass('pullDown');
			} else {
				thisPullUp.addClass('pullDown');
			} 
		}
	)

	$('div.FilterLink').hover(
		function() {
			var FilterCategory = $(this).attr('id');
			window.clearTimeout(TimeSettings[FilterCategory]);
			TimeSettings[FilterCategory] = window.setTimeout("$('#"+FilterCategory+"').addClass('FilterOver');", (MainnavigationTime));
		},
		function() {
			var FilterCategory = $(this).attr('id');
			window.clearTimeout(TimeSettings[FilterCategory]);
			TimeSettings[FilterCategory] = window.setTimeout("$('#"+FilterCategory+"').removeClass('FilterOver');", (MainnavigationTime));
		}
	)
	
	$('select#SelectCountry').change(
		function() {
			$('.addresses').hide();
			$('.'+$(this).attr('value')).show();
		}
	)

	$('.goToProductInformations').click( function(){
		$.scrollTo($('div.ArticleBox'),1000);
		return false;
	})

	$('.ArticleBoxLink').click( function() {
		targetId = $(this).attr('OpenId');
		$('.ArticleNavi').children('div.TabActiv').attr('class','TabInActiv');
		$('.ArticleNavi').children('div.TabActivGelb').attr('class','TabInActivGelb');
		var thisobj = $(this).parent();
		if (thisobj.hasClass('TabInActiv'))
		{
			thisobj.attr('class','TabActiv');
		}
		else if (thisobj.hasClass('TabInActivGelb'))
		{
			thisobj.attr('class','TabActivGelb');
		}

		$('.ArticleBoxWrapper').hide();
		$('#'+targetId).show();
		
		return false;
	})

	$('.toggleAllSlider').click( function() {
		var action = $(this).attr('action');
		var thisId = $(this).attr('toogleSliderId');
		
		switch (action) {
			case 'open':	$('ul#'+thisId).children('li').each( function()
							{
								$(this).addClass('pullDown');
							});
							$(this).attr('action','close');
							$(this).children('span').html('<b>&raquo; ' + closeAll + '</b>');
							break;
			case 'close':	$('ul#'+thisId).children('li').each( function()
							{
								$(this).removeClass('pullDown');
							});
							$(this).attr('action','open');
							$(this).children('span').html('<b>&raquo; ' + expandAll + '</b>');
							break;
		}
	})

	$('.CheckboxSwitch').click( function() {
		var thisName = $(this).attr('name');
		$(".CheckboxSwitch[name='"+thisName+"']").attr('checked',false);
		$(this).attr('checked',true);
	})
});

var GeneralJS = {

	/*Language:					GeneralLanguage.setLanguage(),*/

	/**
		Einblenden der Mainnavigation Layers.
		Wegen der Zeitsteuerung muss hier eine function verwendet werden.
		Aufruf GeneralJS.ShowMainnavigationLayer();
	**/
	ShowMainnavigationLayer:	function (category,LayerPosition) {
									$('div#MainNavigation > a.'+category).addClass(category+'Over');
									$('div#MainNavigation > span.'+category).addClass(category+'BgColor');
									$('#MainNavigationLayer'+category).css('top',LayerPosition+'px');
									$('#MainNavigationLayer'+category).css('left','0');
								},

	/**
		Ausblenden der Mainnavigation Layers.
		Wegen der Zeitsteuerung muss hier eine function verwendet werden.
		Aufruf GeneralJS.HideMainnavigationLayer();
	**/
	HideMainnavigationLayer:	function (category) {
									$('div#MainNavigation > a.'+category).removeClass(category+'Over');
									$('div#MainNavigation > span.'+category).removeClass(category+'BgColor');
									$('#MainNavigationLayer'+category).css('left','-1000px');
								},

	/**
		Einblenden des Service Layers.
		Wegen der Zeitsteuerung muss hier eine function verwendet werden.
		Aufruf GeneralJS.ShowServiceLayer();
	**/
	ShowServiceLayer:			function() {
									$('a#ServiceSelectLink').addClass('ServiceSelectLinkOver');
									$('div#ServiceSelectBox').css('left','786px');
								},

	/**
		Ausblenden des Service Layers.
		Wegen der Zeitsteuerung muss hier eine function verwendet werden.
		Aufruf GeneralJS.HideServiceLayer();
	**/
	HideServiceLayer:			function() {
									$('a#ServiceSelectLink').removeClass('ServiceSelectLinkOver');
									$('div#ServiceSelectBox').css('left','-1000px');
								},

	/**
		1 oder mehrere Objects einblenden.
		Auch in Verbindung mit iframe mit dem Zusatz parent oder framename möglich.
		params:		ids : str
		Aufruf onclick="GeneralJS.ShowId('id1','id2','id3');"
	**/
	ShowId:						function() {
									var args = GeneralJS.ShowId.arguments;
									for(y=0;y<args.length;y++) {
										$('#'+args[y]).show();
									}
								},

	/**
		1 oder mehrere Objects ausblenden.
		Auch in Verbindung mit iframe mit dem Zusatz parent oder framename möglich.
		params:		ids : str
		Aufruf onclick="GeneralJS.HideId('id1','id2','id3');"
	**/
	HideId:						function() {
									var args = GeneralJS.HideId.arguments;
									for(y=0;y<args.length;y++) {
										$('#'+args[y]).hide();
									}
									
								},

	/**
		1 oder mehrere Objects ein- oder ausblenden.
		Auch in Verbindung mit iframe mit dem Zusatz parent oder framename möglich.
		params:		ids : str
		Aufruf onclick="GeneralJS.ToggleId('id1','id2','id3');"
	**/
	ToggleId:					function() {
									var args = GeneralJS.ToggleId.arguments;
									for(y=0;y<args.length;y++) {
										$('#'+args[y]).toggle();
									}
								},

	/**
		Aufruf einer neuen Seite.
		Wird z.B. benötigt um von einem iframe das parent Element auf
		eine neue Seite zu leiten.
		params:		url : str
		Aufruf onclick="parent.GeneralJS.GoTo('/service.html');"
	**/
	GoTo:						function(url) {
									location.href = url;
								},

	/**
		Auf- und Zuklappen eines PullUps
		Wird auf den h4 Tag im li.PullUp angewendet
		params:		thisElement : object
		Aufruf onclick="GeneralJS.switchPullUp(this);"
	**/
	switchPullUp:				function(thisElement) {
									var thisPullUp = $(this).parent();
									if (thisPullUp.hasClass('pullDown'))
									{
										thisPullUp.removeClass('pullDown');
									} else {
										thisPullUp.addClass('pullDown');
									} 
								},

	/**
		Aufklappen eines Filters
		params:		thisElement : object
		Aufruf onmouseover="GeneralJS.FilterLinkOver(this);"
	**/
	FilterLinkOver:				function(thisElement) {
									var FilterCategory = $(thisElement).attr('id');
									window.clearTimeout(TimeSettings[FilterCategory]);
									TimeSettings[FilterCategory] = window.setTimeout("$('#"+FilterCategory+"').addClass('FilterOver');", (MainnavigationTime));
								},

	/**
		Zuklappen eines Filters
		params:		thisElement : object
		Aufruf onmouseout="GeneralJS.FilterLinkOut(this);"
	**/
	FilterLinkOut:				function(thisElement) {
									var FilterCategory = $(thisElement).attr('id');
									window.clearTimeout(TimeSettings[FilterCategory]);
									TimeSettings[FilterCategory] = window.setTimeout("$('#"+FilterCategory+"').removeClass('FilterOver');", (MainnavigationTime));
								},

	/**
		Umschalten von Adressfeldern
		params:		thisElement : object
		Aufruf onchange="GeneralJS.SelectCountry(this);"
	**/
	SelectCountry:				function(thisElement) {
									$('.addresses').hide();
									$('.'+$(thisElement).attr('value')).show();
								},

	/**
		Zu einem Object Smart Scrollen.
		params:		objId : str
		Beispile Article Box:
		Aufruf onclick="GeneralJS.scrollToObj('div.ArticleBox');"
	**/
	scrollToObj:				function(objId){
									$.scrollTo($(objId),1000);
									return false;
								},

	/**
		Umschalten der verschiedenen Article Boxen
		params:		thisElement : object
		Aufruf onclick="GeneralJS.ArticleBoxLink(this);"
	**/
	ArticleBoxLink:				function(thisElement) {
									targetId = $(thisElement).attr('OpenId');
									$('.ArticleNavi').children('div.TabActiv').attr('class','TabInActiv');
									$('.ArticleNavi').children('div.TabActivGelb').attr('class','TabInActivGelb');
									var thisobj = $(thisElement).parent();
									if (thisobj.hasClass('TabInActiv'))
									{
										thisobj.attr('class','TabActiv');
									}
									else if (thisobj.hasClass('TabInActivGelb'))
									{
										thisobj.attr('class','TabActivGelb');
									}
							
									$('.ArticleBoxWrapper').hide();
									$('#'+targetId).show();
									
									return false;
								},

	/**
		Öffnet einen Tab in der ADS
		params:		thisElementID : str
		Aufruf GeneralJS.openAdsTab('element_id');
	**/
	openAdsTab:					function(thisElementID)
								{
									$('.ArticleNavi').children('div.TabActiv').attr('class','TabInActiv');
									$('.ArticleNavi').children('div.TabActivGelb').attr('class','TabInActivGelb');
									var thisobj = $('#ArtikelboxLink_'+thisElementID);
									if (thisobj.hasClass('TabInActiv'))
									{
										thisobj.attr('class','TabActiv');
									}
									else if (thisobj.hasClass('TabInActivGelb'))
									{
										thisobj.attr('class','TabActivGelb');
									}
							
									$('.ArticleBoxWrapper').hide();
									$('#'+thisElementID).show();
									
									return false;
								},

	/**
		Alle PullUps öffnen bzw. schließen
		params:		thisElement : object
		Aufruf onclick="GeneralJS.toggleAllSlider(this);"
	**/
	toggleAllSlider:			function(thisElement) {
									var action = $(thisElement).attr('action');
									var thisId = $(thisElement).attr('toogleSliderId');
									switch (action) {
										case 'open':	$('ul#'+thisId).children('li').each( function()
														{
															$(this).addClass('pullDown');
														});
														$(thisElement).attr('action','close');
														$(thisElement).children('span').html('<b>&raquo; ' + closeAll + '</b>');
														break;
										case 'close':	$('ul#'+thisId).children('li').each( function()
														{
															$(this).removeClass('pullDown');
														});
														$(thisElement).attr('action','open');
														$(thisElement).children('span').html('<b>&raquo; ' + expandAll + '</b>');
														break;
									}
									return false;
								},

	/**
		Checkboxen Verwendung wie Radios
		params:		thisElement : object
		Aufruf onclick="GeneralJS.CheckboxSwitch(this);"
	**/
	CheckboxSwitch:				function(thisElement) {
									var thisName = $(thisElement).attr('name');
									$("input[name='"+thisName+"']").attr('checked',false);
									$(thisElement).attr('checked',true);
									return false;
								},

	/**
		Checkboxen Verwendung wie Radios
		params:		thisElementID : string
		Aufruf onclick="GeneralJS.InitProductCinema('element_id');"
	**/
	InitProductCinema:			function(thisElementID) {
									var objProductCinema = $('#'+thisElementID).children('div').children('div.Wrapper');

									var objProductCinemaStageWrapper = objProductCinema.children('.ProductCinemaStage').children('.Wrapper');
									var objProductCinemaContent = objProductCinemaStageWrapper.children('.ProductCinemaWrapper');
									var objProductCinemaArrowLeft = objProductCinema.children('div.ProductCinemaArrowLeft').children('a');
									var objProductCinemaArrowRight = objProductCinema.children('div.ProductCinemaArrowRight').children('a');

									var ProductCinemaStageWidth = parseInt(objProductCinema.children('.ProductCinemaStage').css('width'));
									var ProductCinemaCount = objProductCinemaContent.length;

									var ProductCinemaWrapperWidth = parseInt(objProductCinemaContent.css('width')) + parseInt(objProductCinemaContent.css('margin-right'));
									var ProductCinemaMaxWidth = ProductCinemaWrapperWidth * ProductCinemaCount;

									objProductCinemaStageWrapper.animate(
											{
												left: '0px'
											}, 500
										);

									objProductCinemaArrowLeft.css('display','none');
									if (ProductCinemaMaxWidth > ProductCinemaStageWidth)
									{
										objProductCinemaArrowRight.css('display','block');
									}

									ProductCinemaMaxWidth = ProductCinemaMaxWidth - ProductCinemaStageWidth;

									objProductCinema.children('input.ProductCinemaStageWidth').attr('value',ProductCinemaStageWidth);
									objProductCinema.children('input.ProductCinemaWrapperWidth').attr('value',ProductCinemaWrapperWidth);
									objProductCinema.children('input.ProductCinemaMaxWidth').attr('value',ProductCinemaMaxWidth);
									objProductCinema.children('input.ProductCinemaPosition').attr('value','0');

									var ProductCinemaPosition = parseInt(objProductCinemaStageWrapper.css('left'));
								},

	/**
		Initialisiert ein ProductCinema incl. click Events anhand der Object.id
		params:		thisElementID : str
		Aufruf GeneralJS.appendButtonFeatsId('element_id');
	**/
	appendButtonFeatsId:		function(thisElementID) {
									GeneralJS.appendButtonFeats($('#'+thisElementID));
								},
	/**
		Initialisiert ein ProductCinema incl. click Events
		params:		thisElement : object ('div.ProductCinema')
		Aufruf GeneralJS.appendButtonFeats(this);
	**/
	appendButtonFeats:			function(thisElement) {
									var objProductCinema = thisElement.children('div').children('div.Wrapper');
								
									var objProductCinemaStageWrapper = objProductCinema.children('.ProductCinemaStage').children('.Wrapper');
									var objProductCinemaContent = objProductCinemaStageWrapper.children('.ProductCinemaWrapper');
									var objProductCinemaArrowLeft = objProductCinema.children('div.ProductCinemaArrowLeft').children('a');
									var objProductCinemaArrowRight = objProductCinema.children('div.ProductCinemaArrowRight').children('a');

									var ProductCinemaStageWidth = parseInt(objProductCinema.children('.ProductCinemaStage').css('width'));
									var ProductCinemaCount = objProductCinemaContent.length;
									var ProductCinemaWrapperWidth = parseInt(objProductCinemaContent.css('width')) + parseInt(objProductCinemaContent.css('margin-right'));
									var ProductCinemaMaxWidth = ProductCinemaWrapperWidth * ProductCinemaCount;

									if (ProductCinemaMaxWidth > ProductCinemaStageWidth)
									{
										objProductCinemaArrowRight.css('display','block');
									}

									ProductCinemaMaxWidth = ProductCinemaMaxWidth - ProductCinemaStageWidth;

									objProductCinema.children('input.ProductCinemaStageWidth').attr('value',ProductCinemaStageWidth);
									objProductCinema.children('input.ProductCinemaWrapperWidth').attr('value',ProductCinemaWrapperWidth);
									objProductCinema.children('input.ProductCinemaMaxWidth').attr('value',ProductCinemaMaxWidth);

									var ProductCinemaPosition = parseInt(objProductCinemaStageWrapper.css('left'));
							
									objProductCinemaArrowRight.click(
										function() {
											var objProductCinema = $(this).parent().parent();
							
											var objProductCinemaStageWrapper = objProductCinema.children('.ProductCinemaStage').children('.Wrapper');
											var objProductCinemaContent = objProductCinemaStageWrapper.children('.ProductCinemaWrapper');
											var objProductCinemaContent = objProductCinemaStageWrapper.children('.ProductCinemaWrapper');
											var objProductCinemaArrowLeft = objProductCinema.children('div.ProductCinemaArrowLeft').children('a');
											var objProductCinemaArrowRight = objProductCinema.children('div.ProductCinemaArrowRight').children('a');
											var objProductCinemaPosition = objProductCinema.children('input.ProductCinemaPosition');
							
											var ProductCinemaStageWidth = parseInt(objProductCinema.children('input.ProductCinemaStageWidth').attr('value'));
											var ProductCinemaWrapperWidth = parseInt(objProductCinema.children('input.ProductCinemaWrapperWidth').attr('value'));
											var ProductCinemaMaxWidth = parseInt(objProductCinema.children('input.ProductCinemaMaxWidth').attr('value'));
											var ProductCinemaPosition = parseInt(objProductCinemaPosition.attr('value'));
							
											var NewProductCinemaPosition = ProductCinemaPosition - ProductCinemaWrapperWidth;
							
											var CheckProductCinemaPosition = NewProductCinemaPosition + ProductCinemaMaxWidth;
							
											if (CheckProductCinemaPosition >= 0) {
												objProductCinemaPosition.attr('value',NewProductCinemaPosition);
												objProductCinemaStageWrapper.animate(
													{
														left: NewProductCinemaPosition+'px'
													}, 500
												);
							
												var CheckProductCinemaPosition = CheckProductCinemaPosition - ProductCinemaWrapperWidth;
											}
							
											if (CheckProductCinemaPosition < 0)
											{
												$(this).css('display','none');
											}
							
											if (NewProductCinemaPosition < 0)
											{
												objProductCinemaArrowLeft.css('display','block');
											}
							
											return false;
										}
									);
							
									objProductCinemaArrowLeft.click(
										function() {
											var objProductCinema = $(this).parent().parent();
							
											var objProductCinemaStageWrapper = objProductCinema.children('.ProductCinemaStage').children('.Wrapper');
											var objProductCinemaContent = objProductCinemaStageWrapper.children('.ProductCinemaWrapper');
											var objProductCinemaContent = objProductCinemaStageWrapper.children('.ProductCinemaWrapper');
											var objProductCinemaArrowLeft = objProductCinema.children('div.ProductCinemaArrowLeft').children('a');
											var objProductCinemaArrowRight = objProductCinema.children('div.ProductCinemaArrowRight').children('a');
											var objProductCinemaPosition = objProductCinema.children('input.ProductCinemaPosition');
							
											var ProductCinemaStageWidth = parseInt(objProductCinema.children('input.ProductCinemaStageWidth').attr('value'));
											var ProductCinemaWrapperWidth = parseInt(objProductCinema.children('input.ProductCinemaWrapperWidth').attr('value'));
											var ProductCinemaMaxWidth = parseInt(objProductCinema.children('input.ProductCinemaMaxWidth').attr('value'));
											var ProductCinemaPosition = parseInt(objProductCinemaPosition.attr('value'));
							
											var NewProductCinemaPosition = ProductCinemaPosition + ProductCinemaWrapperWidth;
							
											if (NewProductCinemaPosition <= 0) {
												objProductCinemaPosition.attr('value',NewProductCinemaPosition);
												objProductCinemaStageWrapper.animate(
													{
														left: NewProductCinemaPosition+'px'
													}, 500
												);
											}
							
											var CheckProductCinemaPosition = NewProductCinemaPosition + ProductCinemaMaxWidth;
							
											if (CheckProductCinemaPosition > 0)
											{
												objProductCinemaArrowRight.css('display','block');
											}
							
											if (NewProductCinemaPosition < 0)
											{
												$(this).css('display','block');
											} else {
												$(this).css('display','none');
											}
							
											return false;
										}
									);
								},

	/**
		Over Funktion für Bewertungssterne
		params:		thisElement : object
		Aufruf onmouseover="GeneralJS.StarsOver(this);"
	**/
	StarsOver:					function(thisElement)
								{
									$('#StarsImage').attr('src',$(thisElement).attr('image'));
									$('#StarsText').html($(thisElement).attr('text'));
								},

	/**
		Out Funktion für Bewertungssterne
		params:		thisElement : object
		Aufruf onmouseout="GeneralJS.StarsOut(this);"
	**/
	StarsOut:					function(thisElement)
								{
									$('#StarsImage').attr('src',$('#StarsInput').attr('image'));
									$('#StarsText').html($('#StarsInput').attr('text'));
								},

	/**
		Set Funktion für Bewertungssterne
		params:		thisElement : object
		Aufruf href="javascript:GeneralJS.StarsSet(this);"
	**/
	StarsSet:					function(thisElement)
								{
									$('#StarsInput').attr('image',$(thisElement).attr('image'));
									$('#StarsInput').attr('text',$(thisElement).attr('text'));
									$('#StarsInput').attr('value',$(thisElement).attr('value'));
									$('#StarsImage').attr('src',$(thisElement).attr('image'));
									$('#StarsText').html($(thisElement).attr('text'));
								}
};

Shadowbox.init({
	players: ["html", "iframe"]
});

/**
Shadowbox hat eigene Funktionen, welche den Title als auch den Footer verändern kann.
Der Aufruf hierzu muss nach der Initialisierung der Shadowbox, also auf der aufgerufenen
Seite im iframe erfolgen. Bei der Initialisierung wird alles wieder auf den normalen
Zustand zurück gesetzt.

Title ändern (der Title wird überschrieben.):
params text : str
parent.Shadowbox.setTitle(text)

Footer ändern (der komplette Footer Bereich der Shadowbox wird dabei neu erstellt.):
params text : str
Der Inhalt sollte HTML sein.
parent.Shadowbox.setFooter(text)
**/