/**
 * JavaScript for FEHBA Homepage
 *
 * @author Christian Wania <christian.wania@gmx.de>
 */



/**
 * FehbaTools
 *
 * @author Christian Wania <christian.wania@gmx.de>
 */
var FehbaTools = {

	addEvent: function(elem, type, eventHandle) {
    	if (elem == null || elem == undefined) return;
    	if ( elem.addEventListener ) {
	        elem.addEventListener( type, eventHandle, false );
	    } else if ( elem.attachEvent ) {
	        elem.attachEvent( "on" + type, eventHandle );
	    }
	}
}


/**
 * FehbaTopNavigation
 *
 * @author Christian Wania <christian.wania@gmx.de>
 */
var FehbaTopNavigation = {

	activeTopNavEntry	:	null,
	topNavTimeoutID		:	null,
	topNavDelayTime		:	250,


	showTopmenuFlyout: function(index) {
		if (index != FehbaTopNavigation.activeTopNavEntry) {
			FehbaTopNavigation.hideTopmenuFlyout(FehbaTopNavigation.activeTopNavEntry);
			FehbaTopNavigation.activeTopNavEntry = index;
			$('#topNavistEntry'+index+' .navHeader').addClass('navHeaderActive');
			$('#topNavistEntry'+index+' .subNavContainer').addClass('subNavContainerActive');
		}
		if ( (FehbaTopNavigation.topNavTimeoutID != null) && (FehbaTopNavigation.topNavTimeoutID != 'undefined') ) {
			window.clearTimeout(FehbaTopNavigation.topNavTimeoutID);
		}
	},

	hideTopmenuFlyout: function(index) {
		FehbaTopNavigation.activeTopNavEntry = null;
		$('.topNavigation .navHeader').removeClass('navHeaderActive');
		$('.topNavigation .subNavContainer').removeClass('subNavContainerActive');
	},

	init: function() {
		$('.topNavigation ul li.l1').each(function(index) {
			$(this).attr('id', 'topNavistEntry'+index);
			$(this).find('.navHeader, ul.subNavigation').bind('mouseover', {NavpointNr: index}, function (event) {
				FehbaTopNavigation.showTopmenuFlyout(event.data.NavpointNr);
			});
			$(this).find('.navHeader, ul.subNavigation').bind('mouseout', {NavpointNr: index}, function (event) {
				FehbaTopNavigation.topNavTimeoutID = window.setTimeout('FehbaTopNavigation.hideTopmenuFlyout('+event.data.NavpointNr+')', FehbaTopNavigation.topNavDelayTime);
			});
		});

	}
}



/**
 * FehbaSlider
 *
 * @author Christian Wania <christian.wania@gmx.de>
 */
var FehbaSlider = {

	initialized		:	false,
	nViewportWidth	: 0,
	nSlideCount		: 0,
	nActiveSlide	: 0,
	bMouseHovered	: false,
	bLayerAnimation	: false,
	bLayerOpen		: false,
	bShowLayer		: false,
	nDelayTime		: 500,
	scrollBarWidth	: 0,

	init: function() {

		if (this.initialized){
			this.update();
			return;
		}

		this.nSlideCount = $('.stageAnimated .slider .slide').length;

		$('.navArrowLeft').bind('click.slide', function(){
			FehbaSlider.slideLeft();
			return false;
		});
		$('.navArrowRight').bind('click.slide', function(){
			FehbaSlider.slideRight();
			return false;
		});


		$('.stageAnimated .slider .slide').each(function(index) {
			$(this).addClass('slide'+index);
		});
		$('.stageAnimated .slider, .header .logo').bind('mouseenter', function (event) {
			FehbaSlider.bShowLayer = true;
			if (!FehbaSlider.bLayerAnimation) {
				FehbaSlider.showHoverText(FehbaSlider.nActiveSlide);
			}
		});
		$('.stageAnimated .slider, .header .logo').bind('mouseleave', function (event) {
			FehbaSlider.bShowLayer = false;
			window.setTimeout('FehbaSlider.hideHoverText(FehbaSlider.nActiveSlide)', FehbaSlider.nDelayTime);
		});

		this.initialized = true;
		this.update();
	},

	update: function() {
		this.nViewportWidth = $(document).width();
		$('.stageAnimated .slider .slide').css('width', this.nViewportWidth + 'px');
		$('.stageAnimated .slider').css('width', (this.nViewportWidth * this.nSlideCount) + 'px');
		$('.stageAnimated .slider').css('marginLeft', '-'+(this.nActiveSlide * this.nViewportWidth)+'px');
	},

	updateContent: function(currentSlide) {
		$('.slider .slide'+currentSlide+' .hoverContent').slideUp(500, function(){
			$('.stageAnimated .slider').animate({marginLeft: '-'+((FehbaSlider.nActiveSlide) * FehbaSlider.nViewportWidth)+'px' }, function(){
				$('.slider .slide'+FehbaSlider.nActiveSlide+' .hoverContent').slideDown(500);
			});
		});
	},

	slideLeft: function() {
		var nCurrentSlide = FehbaSlider.nActiveSlide;
		this.nActiveSlide--;
		if (this.nActiveSlide < 0) this.nActiveSlide = this.nSlideCount -1;
		this.updateContent(nCurrentSlide);
	},

	slideRight: function() {
		var nCurrentSlide = this.nActiveSlide;
		this.nActiveSlide++;
		if (this.nActiveSlide >= this.nSlideCount) this.nActiveSlide = 0;
		this.updateContent(nCurrentSlide);
	},

	showHoverText: function(currentSlide) {
		FehbaSlider.bLayerAnimation = true;
		FehbaSlider.bLayerOpen = true;
		$('.slider .slide'+currentSlide+' .hoverContent').slideDown(500, function(){
			FehbaSlider.bLayerAnimation = false;
		});
	},
	hideHoverText: function(currentSlide) {
		if (FehbaSlider.bShowLayer == false) {
			FehbaSlider.bLayerAnimation = true;
			$('.slider .slide'+currentSlide+' .hoverContent').slideUp(500, function() {
				FehbaSlider.bLayerAnimation = false;
				FehbaSlider.bLayerOpen = false;
			});
		}
	},

	jumpToRandomPage: function() {
		var max = FehbaSlider.nSlideCount;
		var randomSlide = Math.floor(Math.random()*max)
		FehbaSlider.nActiveSlide = randomSlide;
		$('.stageAnimated .slider').css({marginLeft: '-'+((FehbaSlider.nActiveSlide) * FehbaSlider.nViewportWidth)+'px' });
	}

}



var FehbaProductTeaser = {

	init: function() {
		$('.productTeaser').bind('mouseenter', function () {
			if ($(this).hasClass('refinementTeaser')) {
				$(this).addClass('refinementTeaserActive');
			} else {
				$(this).addClass('productTeaserActive');
			}
		});
		$('.productTeaser').bind('mouseleave', function () {
			if ($(this).hasClass('refinementTeaser')) {
				$(this).removeClass('refinementTeaserActive');
			} else {
				$(this).removeClass('productTeaserActive');
			}

		});
		$('.productTeaser').bind('click.translocate', function(event){
			var url = $(this).find('a:first').attr('href');
			document.location.href = url;
			return false;
		});
		$('.productTeaser').css('cursor', 'pointer');
	}

}



var FehbaGenericTeaser = {

	init: function() {
		$('.genericTeaser').bind('mouseenter', function () {
			$(this).addClass('genericTeaserActive');
		});
		$('.genericTeaser').bind('mouseleave', function () {
			$(this).removeClass('genericTeaserActive');
		});
	}

}



var FehbaEmployeeTeaser = {

	init: function() {
		$('.ce_text_teaser_employee').bind('mouseenter', function () {
			$(this).addClass('employeeTeaserActive');
		});
		$('.ce_text_teaser_employee').bind('mouseleave', function () {
			$(this).removeClass('employeeTeaserActive');
		});
	}

}



var FehbaRandomStage = {

	init: function() {
		$('div.stage img.stageBackground').hide();

		var randomnumber = Math.floor(Math.random()*4);
		var key = (randomnumber <10) ? '0' + randomnumber : randomnumber;
		var file = 'fileadmin/templates/fehba/img/bg-buehne-small-'+key+'.jpg';

		var preloader = new Image();
		preloader.src = file;

		$('div.stage div.stageBackground').attr('style', 'background-image: url(fileadmin/templates/fehba/img/bg-buehne-small-'+key+'.jpg); display:none;');

		if (preloader.complete || preloader.readyState === 4) {
		    $('div.stage div.stageBackground').fadeIn(750);
		} else {
			$(preloader).bind('load', function(){
    			$('div.stage div.stageBackground').fadeIn(750);
			});
		}
	}

}





/**
 * FehbaTopNavigation
 *
 * @author Christian Wania <christian.wania@gmx.de>
 */
var FehbaProductFilter = {

	activeFilterEntry	:	null,
	filterTimeoutID		:	null,
	filterDelayTime		:	250,


	showFilterFlyout: function(index) {
		if (index != FehbaProductFilter.activeFilterEntry) {
			FehbaProductFilter.hideFilterFlyout(FehbaProductFilter.activeFilterEntry);
			FehbaProductFilter.activeFilterEntry = index;
			$('#productFilterEntry'+index+' .header').addClass('headerActive');
			$('#productFilterEntry'+index+' .details').addClass('detailsActive');
		}
		if ( (FehbaProductFilter.filterTimeoutID != null) && (FehbaProductFilter.filterTimeoutID != 'undefined') ) {
			window.clearTimeout(FehbaProductFilter.filterTimeoutID);
		}
	},

	hideFilterFlyout: function(index) {
		FehbaProductFilter.activeFilterEntry = null;
		$('.filter .header').removeClass('headerActive');
		$('.filter .details').removeClass('detailsActive');
	},

	init: function() {
		$('div.filter').each(function(index) {
			$(this).attr('id', 'productFilterEntry'+index);
			$(this).find('.header, .details').bind('mouseover', {FilterNr: index}, function (event) {
				FehbaProductFilter.showFilterFlyout(event.data.FilterNr);
			});
			$(this).find('.header, .details').bind('mouseout', {FilterNr: index}, function (event) {
				FehbaProductFilter.filterTimeoutID = window.setTimeout('FehbaProductFilter.hideFilterFlyout('+event.data.FilterNr+')', FehbaProductFilter.filterDelayTime);
			});
		});

	}
}


var FehbaLoader = {

	init: function() {
		$('.content p.showAllProducts a').bind('click', function(){
			$(this).find('#loader').show();
			window.setTimeout('FehbaLoader.redirect("'+this.href+'");', 250);

			return false;
		});
		$('.content p.showAllProducts a').append('<dfn id="loader" style="display:none;">&nbsp;</dfn>');
	},

	redirect: function(url) {
		window.location.href = url;
	}
}


function blurLink() {}


function initPage() {
	$(window).bind('resize', function() {
		FehbaSlider.update();
	});
	FehbaRandomStage.init();
	FehbaTopNavigation.init();
	FehbaGenericTeaser.init();
	FehbaEmployeeTeaser.init();
	FehbaProductTeaser.init();
	FehbaProductFilter.init();
	FehbaSlider.init();
	FehbaLoader.init();
	FehbaTools.addEvent(window, "resize", function() { FehbaSlider.update(); } )
}
