var $bg, $imageContainer;
var timerHandle, $gbImg, kbIn = true, kbStep = 0;

jQuery(document).ready(function(){

	// Hintergrund Anim.
	$bg = jQuery('#bg');
	$imageContainer = jQuery('#imageContainer');
	bgFaderInit('#bg');

});

var bgFader = new Array();
var bgFadeCont, bgFadeContW, bgFadeContH, bgFadeContR;

function bgFaderInit(bgStr) {
	jQuery(window).unbind('resize', bgFaderResize);
	bgFadeCont = jQuery(bgStr);
	bgFader = bgFadeCont.find('img');
	jQuery(bgFader).each(function () {
		jQuery(this).attr('oWidth', jQuery(this).width());
		jQuery(this).attr('oHeight', jQuery(this).height());
	});
	bgFaderResize();
	jQuery(window).bind('resize', bgFaderResize);
}

function bgFaderResize() {
	bgFadeContW = jQuery(bgFadeCont).width();
	bgFadeContH = jQuery(bgFadeCont).height();
	bgFadeContR = bgFadeContW / bgFadeContH;
	jQuery(bgFader).each(function () {
		var newW, newH, newR, offL, offT;
		var oldW = jQuery(this).attr('oWidth'); //jQuery(this).width(); //prevents calculation errors on extreme resize
		var oldH = jQuery(this).attr('oHeight'); //jQuery(this).height();
		var tmpR = oldW / oldH;
		if (tmpR > bgFadeContR) {
			newR = bgFadeContH / oldH;
		} else {
			newR = bgFadeContW / oldW;
		}
		newW = Math.ceil(oldW * newR);
		newH = Math.ceil(oldH * newR);
		offL = Math.ceil((bgFadeContW - newW) / 2);
		offT = Math.ceil((bgFadeContH - newH) / 2);
		jQuery(this).css('position', 'absolute');
		//    jQuery(this).css('left', offL);
		//    jQuery(this).css('top', offT);
		jQuery(this).css('left', 0);
		jQuery(this).css('top', 0);
		jQuery(this).css('width', newW);
		jQuery(this).css('height', newH);
		jQuery(this).attr('sWidth', newW);
		jQuery(this).attr('sHeight', newH);
	//    jQuery(this).hide();
	//    jQuery(this).attr('mOffLeft', offL);
	//    jQuery(this).attr('mOffTop', offT);
	});
	mKenBurns();
}

function mKenBurns(mInit) {
	if (! timerHandle && ! mInit) {
		return;
	}
	if (timerHandle) {
		window.clearTimeout(timerHandle);
	}
	if (kbStep > 0.5) {
		kbIn = ! kbIn;
	}
	bgFadeContW = jQuery(bgFadeCont).width();
	bgFadeContH = jQuery(bgFadeCont).height(); //wegen paper unten
	var tmpW = $kbImg.attr('sWidth');
	var tmpH = $kbImg.attr('sHeight');
	if (kbIn) {
		tmpW = tmpW * 1.1;
		tmpH = tmpH * 1.1;
	//    console.log(bgFadeContW + '-' + tmpW + '=' + Math.floor(bgFadeContW - tmpW));
	}
	$kbImg.stop().animate({
		width: tmpW,
		height: tmpH
	}, {
		duration: 10000,
		step: function(now, fx) {
			kbStep = fx.pos;
		}
	});
	timerHandle = window.setTimeout(mKenBurns, 14000);
}

jQuery(window).load(function() {
	if (typeof $imageContainer == 'undefined') { $imageContainer = jQuery('#imageContainer'); } //IE7 bug fix
	var imgNr = $imageContainer.children().length;
	if (imgNr < 2) {
//		if ($newsimages.length == 0) { //stand still on news
//			//KEN BURNS
//			$kbImg = $imageContainer.children().first();
//			mKenBurns(true);
//		}
	} else {
		var rndStart = Math.floor(Math.random() * imgNr);
		$imageContainer.children().each(function(){
			jQuery(this).hide();
		});
		$imageContainer.nivoSlider({
			effect:'fade', // sliceDown/sliceDownLeft/sliceUp/sliceUpLeft/sliceUpDown/sliceUpDownLeft/fold/fade/random/slideInRight/slideInLeft/boxRandom/boxRain/boxRainReverse
			slices:1, // For slice animations
			boxCols: 1, // For box animations
			boxRows: 1, // For box animations
			animSpeed:500, // Slide transition speed
			pauseTime:6000, // How long each slide will show
			startSlide: 0, // Set starting Slide (0 index)
			directionNav:false, // Next & Prev navigation
			directionNavHide:true, // Only show on hover
			controlNav:false, // 1,2,3... navigation
			controlNavThumbs:false, // Use thumbnails for Control Nav
			controlNavThumbsFromRel:false, // Use image rel for thumbs
			controlNavThumbsSearch: '.jpg', // Replace this with...
			controlNavThumbsReplace: '_thumb.jpg', // ...this in thumb Image src
			keyboardNav:false, // Use left & right arrows
			pauseOnHover:false, // Stop animation while hovering
			manualAdvance:false, // Force manual transitions
			captionOpacity:0.8, // Universal caption opacity
			prevText: 'Prev', // Prev directionNav text
			nextText: 'Next', // Next directionNav text
			beforeChange: function(){}, // Triggers before a slide transition
			afterChange: function(){}, // Triggers after a slide transition
			slideshowEnd: function(){}, // Triggers after all slides have been shown
			lastSlide: function(){}, // Triggers when last slide is shown
			afterLoad: function(){} // Triggers when slider has loaded
		});
	}
});
