/* popup */
jQuery.fn.myPopup = function(_options){
	// defaults options	
	var _options = jQuery.extend({
		duration: 700,
		linkOpenName: '.link-popup',
		linkCloseName: 'a.btn-close',
		divFader: 'fader'
	},_options);
		
	return this.each(function(){		
		var _hold = $(this);
		var _speed = _options.duration;
		var _IE = ((navigator.appName.indexOf('Microsoft Internet Explorer') != -1) && (parseInt(navigator.appVersion) < 9)) ? true : false;
		var links = _hold.find(_options.linkOpenName);
		var _fader = $('<div class="'+_options.divFader+'"></div>');
		var popup;
		$('body').append(_fader);
		_fader.css({
			position: 'absolute',
			top: '0px',
			left: '0px',
			zIndex: 999,
			background: 'black',
			opacity: 0.7
		});
		
		function initOne(_obj){
			popup = $('#light-box');
			var btnClose = popup.find(_options.linkCloseName);
			var span = popup.find('span');
			var _src = _obj.attr('href');
			var img = new Image();
			img.src = _src;
			var ww = img.width;
			var wh = img.height;
			
			if (!wh) {
				wh = 320;
				ww = 568;
			}	
			
			var img = $('<img id="popupImage" src="'+_src+'" alt="#" height="'+wh+'" width="'+ww+'" />');
			span.html(img);
			var submitBtn = popup.find('.submit');
			
			if (_IE){
				$('select').css({visibility: 'hidden'});
				popup.find('select').css({visibility: 'visible'});
			}
			var w = $('body').width();
			var h = $(window).height();
			var _offset = $('html').scrollTop();
			var ret = _offset+(h/2) - popup.outerHeight(true)/2;
			if (ret < 0) ret = 0;
			popup.css({
				top: ret,
				left: w/2 - popup.outerWidth(true)/2
			}).hide();
			_fader.css({
				width: w,
				height: $('#wrapper').height()
			}).fadeIn(300, function(){
				popup.fadeIn(300);
			});
			$(window).resize(function(){
				w = $('body').width();
				popup.css({
					left: w/2 - popup.outerWidth(true)/2
				});
				_fader.css({
					width: w
				});
			});
			$("span.popupImage").click(function () {
				closeLayer(false);
			});
			btnClose.click(function(){
				closeLayer(false);
			});
			_fader.click(function(){
				closeLayer(false);
			});	
		}
		
		function init(_obj){
			popup = $(_obj.attr('href'));
			var btnClose = popup.find(_options.linkCloseName);
			var span = popup.find('span');
			

			var _rev = _obj.attr('rev');
			var aRev = _rev.split('§');
			var _src = aRev[0];
			var wh = aRev[1].split('x');
			

			
			var img = $('<img id="popupImage" src="'+_src+'" alt="#" height="'+wh[1]+'" width="'+wh[0]+'" />');
			span.html(img);
			
			var submitBtn = popup.find('.submit');
			
			
			if (_IE){
				$('select').css({visibility: 'hidden'});
				popup.find('select').css({visibility: 'visible'});
			}
			var w = $('body').width();
			var h = $(window).height();
			var _offset = $('html').scrollTop();
			var ret = _offset+(h/2) - popup.outerHeight(true)/2;
			if (ret < 0) ret = 0;
			popup.css({
				top: ret,
				left: w/2 - popup.outerWidth(true)/2
			}).hide();
			_fader.css({
				width: w,
				height: $('#wrapper').height()
			}).fadeIn(300, function(){
				popup.fadeIn(300);
			});
			$(window).resize(function(){
				w = $('body').width();
				popup.css({
					left: w/2 - popup.outerWidth(true)/2
				});
				_fader.css({
					width: w
				});
			});
			$("span.popupImage").click(function () {
				closeLayer(true);
			});
			btnClose.click(function(){
				closeLayer(true);
			});
			submitBtn.click(function(){
				popup.css({left: '-9999px'});
				if (_IE) $('select').css({visibility: 'visible'});
				$(window).unbind('resize');
				init($(this).attr('title'));
				return false;
			})	
			_fader.click(function(){
				closeLayer(true);
			});
		}
		links.click(function(){
			galleryFade.stop();
			if ($(this).attr('rev')){
				init($(this));
			}
			return false;
		});
		$(".image-box a").click(function () {
			initOne($(this));
			return false;
		});
		function closeLayer(gallery) {
			popup.css({left: '-9999px'});
			_fader.fadeOut(300, function(){
				$(this).hide();
			});
			if (_IE) $('select').css({visibility: 'visible'});
			$(window).unbind('resize');
			if (gallery) galleryFade.play();
			popup.css({top: '180px'});
			return false;
		};	
		
		
	});
}
/* Gallery */
function gallery(_obj) {
	// defaults options
	this.options = {
		hold: 'div.gallery-slide',
		duration: 700,
		slideElement: 1,
		autoRotation: false,
		effect: false,
		fadeEl: 'ul',
		switcher: 'ul > li',
		disableBtn: false,
		nextBtn: 'a.link-next, a.btn-next, a.next',
		prevBtn: 'a.link-prev, a.btn-prev, a.prev',
		startSlide: 'a.startSlide',
		stopSlide: 'a.stopSlide',
		circle: true,
		direction: false
	};
	for(key in _obj) this.options[key] = _obj[key];
	
	var _this = this;
	var _hold = $(_this.options.hold);
	var _speed = _this.options.duration;
	var _timer = _this.options.autoRotation;
	var _wrap = _hold.find(_this.options.fadeEl);
	var _el = _hold.find(_this.options.switcher);
	var _next = _hold.find(_this.options.nextBtn);
	var _prev = _hold.find(_this.options.prevBtn);
	var _slide = _hold.find(_this.options.startSlide);
	var _slidestop = _hold.find(_this.options.stopSlide);
	var _count = _el.index(_el.filter(':last'));
	var _w = _el.outerWidth(true);
	var _h = _el.outerHeight(true);
	if (!_this.options.direction) {
		var _wrapHolderW = Math.ceil(_wrap.parent().width() / _w);
		if (((_wrapHolderW - 1) * _w + _w / 2) > _wrap.parent().width()) _wrapHolderW--;
	}
	else{
		var _wrapHolderW = Math.ceil(_wrap.parent().height()/_h);
		if (((_wrapHolderW-1)*_h + _h/2) > _wrap.parent().height()) _wrapHolderW--;
	}
	if (_timer) var _t;
	var _active = _el.index(_el.filter('.active:eq(0)'));
	if (_active < 0) _active = 0;
	var _last = _active;
	if (!_this.options.effect) var rew = _count - _wrapHolderW + 1;
	else var rew = _count;
	
	if (!_this.options.effect) {
		if (!_this.options.direction) _wrap.css({marginLeft: -(_w * _active)})
		else _wrap.css({marginTop: -(_h * _active)})
	}
	else {
		_wrap.css({
			opacity: 0
		}).removeClass('active').eq(_active).addClass('active').css({
			opacity: 1
		}).css('opacity', 'auto');
		_el.removeClass('active').eq(_active).addClass('active');
	}
	if (_this.options.disableBtn) {
		if (_count < _wrapHolderW) _next.addClass(_this.options.disableBtn);
		_prev.addClass(_this.options.disableBtn);
	}
	
	function fadeElement(){
		_wrap.eq(_last).animate({opacity:0}, {queue:false, duration: _speed});
		_wrap.removeClass('active').eq(_active).addClass('active').animate({
			opacity:1
		}, {queue:false, duration: _speed, complete: function(){
			$(this).css('opacity','auto');
		}});
		_el.removeClass('active').eq(_active).addClass('active');
		_last = _active;
		$('.image-number').text(1 + _active);
		
		$('.gallery-block').find('.captionCopy').hide();
		$('#bu_'+_active).show();
		
		var pos = $(".galleryList").css("margin-left");
		left = pos.substr(0, pos.length - 2) / -96;
		var right = left + 5;

		var diff = 0;

		if (_active > right)
		{
		  diff = _active - right;
		} 
		else if (_active < left)
		{
		  diff = _active - left;
		}

		if (diff != 0)
		{
			left += diff;
			right += diff;
			var marginLeft = left * -96;
			$(".galleryList").css("margin-left", marginLeft + 'px');		
		}


	}
	function scrollEl(){
		if (!_this.options.direction) _wrap.animate({marginLeft: -(_w * _active)}, {queue:false, duration: _speed})
		else _wrap.animate({marginTop: -(_h * _active)}, {queue:false, duration: _speed})
	}
	function toPrepare(){
		if ((_active == rew) && _this.options.circle) _active = -_this.options.slideElement;
		for (var i = 0; i < _this.options.slideElement; i++){
			_active++;
			if (_active > rew) {
				_active--;
				if (_this.options.disableBtn &&(_count > _wrapHolderW)) _next.addClass(_this.options.disableBtn);
			}
		};
		if (_active == rew) if (_this.options.disableBtn &&(_count > _wrapHolderW)) _next.addClass(_this.options.disableBtn);
		if (!_this.options.effect) scrollEl();
		else fadeElement();
	}
	function runTimer(){
		_t = setInterval(function(){
			toPrepare();
		}, _timer);
	}
	_next.click(function(){
		if(_t) clearTimeout(_t);
		if (_this.options.disableBtn &&(_count > _wrapHolderW)) _prev.removeClass(_this.options.disableBtn);
		toPrepare();
		if (_timer) runTimer();
		return false;
	});
	_prev.click(function(){
		if(_t) clearTimeout(_t);
		if (_this.options.disableBtn &&(_count > _wrapHolderW)) _next.removeClass(_this.options.disableBtn);
		if ((_active == 0) && _this.options.circle) _active = rew + _this.options.slideElement;
		for (var i = 0; i < _this.options.slideElement; i++){
			_active--;
			if (_active < 0) {
				_active++;
				if (_this.options.disableBtn &&(_count > _wrapHolderW)) _prev.addClass(_this.options.disableBtn);
			}
		};
		if (_active == 0) if (_this.options.disableBtn &&(_count > _wrapHolderW)) _prev.addClass(_this.options.disableBtn);
		if (!_this.options.effect) scrollEl();
		else fadeElement();
		if (_timer) runTimer();
		return false;
	});
	_slide.click(function(){
		if (_t) clearTimeout(_t);
		_timer = 3000;
		if (_timer) {
			runTimer();
		}
		$('#startSlide').hide();
		$('#stopSlide').show();
		return false;
	});
	_slidestop.click(function(){
		if (_t) clearTimeout(_t);
		_timer = false;
		$('#startSlide').show();
		$('#stopSlide').hide();
		return false;
	});	
	if (_this.options.effect) _el.click(function(){
		_active = _el.index($(this));
		if(_t) clearTimeout(_t);
		fadeElement();
		if (_timer) runTimer();
		return false;
	});
	if (_timer) runTimer();
	
	this.stop = function(){
		if (_t) clearTimeout(_t);
	}
	this.play = function(){
		if (_t) clearTimeout(_t);
		if (_timer) runTimer();
	}
}

$(document).ready(function(){
	galleryFade = new gallery({
		hold: 'div.gallery-fade',
		duration: 500,
		autoRotation: false,
		fadeEl: 'div.gallery ul > li',
		switcher: 'div.photo-bar > ul > li',
		effect: 'fade'
	});
	$('body').myPopup();


	/**
	* erhält ein Formularfeld den Focus, so wird der Defaultwert entfernt
	* wird das Feld wieder verlassen und es ist leer, wird wieder der Default Wert eingetragen
	* (... $(''+this) ... : Umwandlung der Array Elemente in einen String)
	*
	* Edit (NDRW-840): Mit Ausnahme von grey_box und dont_delete_on_click wird jedes Feld gelöscht, wenn es zum ersten
	* mal angewählt wird und danach auch nicht wieder mit dem Default-Wert gefüllt. Die Vorgefüllten Texte dienen lediglich
	* als Eingabehilfe, werden danach aber nicht mehr benötigt. Zumal es etwas verwirrend ist, dass man ein Feld nicht
	* leer lassen kann.  
	**/
	var formularElements = ['input[type="text"]', 'input[type="password"]', 'textarea'];
	jQuery.each(formularElements, function()
	{
		var el = ''+this;
		$(el).focus(function() {
			$(this).css('background-color', '#e2ecfb').addClass('form_focus');
            /**
			* Input Felder mit der Klasse grey_box oder dont_delete_on_click werden nicht geleert.
			**/
			if( !$(this).hasClass("grey_box") && !$(this).hasClass("dont_delete_on_click")) {
				this.value = '';
				$(this).addClass('dont_delete_on_click');
			}
		}).blur(function() {
			$(this).css('background-color', '#ffffff').removeClass('form_focus');
		});
	});
	
    $('.image_gallery').each(function()
            {
            	if($(this).find('.image_slide').length > 0) {
                	$(this).ndrGallery();
                }
     });

});



/* NDR Galerie überarbeitet */

(function($) {
	/**
	 * $ is an alias to jQuery object
	 */
	$.fn.ndrGallery = function(p) {

		var gallery = this;
		// eval("imgs="+this.attr("id") + "_imgs"); // Den richtigen Satz Bilder bereitlegen
		
		var slideshowActive;
		var slideshow;
		
		if(!gallery.imgs) { 
			gallery.imgs = new Array();
			gallery.find(".gallery_image a").each(function() {
				var row = { "gallery": $(this).attr("rel"), "caption": $(this).nextAll(".caption").html(), "copyright": $(this).find("img").attr("alt"), "fullsize": $(this).attr("rev")};
				gallery.imgs.push(row);
			})
 		}
 						
		if (p >= 0 && p < gallery.imgs.length) { 
			gotoimage(p); 
		} else if (p == "next") {
			getNextImage();
		} else {
			init();
		}
		
		function init() {
			var actualImage;
	        var centerImage =$(".gallery_image:first");
	        var index = 0;
	
			 gallery.find('.gallery_scroll_forward').removeClass('invisible');
	         gallery.find('.gallery_scroll_backward').removeClass('invisible');
	         gallery.find('.image_description_footer').removeClass('image_description_footer_js');
	         gallery.find('.image_slide').addClass('image_slide_js');
	         gallery.find('.image_slide_wrapper').addClass('image_slide_wrapper_js');
	         gallery.find('.slideshow_button_text').removeClass('invisible');
             gallery.find('.play_button_small').removeClass('invisible');
             $(".webcam .gallery_image .caption").removeClass('invisible');
             $(".floatright").removeClass("invisible");

				var initpic = gallery.find(".gallery_image a").index($("a.active"));
				if(initpic == -1) {
					gotoimage(0);
				} else {
					gotoimage(initpic);
				}
	                        
	            /**
	             * Dieser Handler zeigt den mouseover-Rahmen in der Bildleiste an
	             */
	            gallery.find('.gallery_image').bind('mouseenter', function(){
	                if($(this).children('.image_selector_actual').css('display') != 'block')
	                {
	                    $(this).children('.image_selector').show();
	                }
	                return false;
	            });
	
	            /**
	             * Dieser Handler versteckt den mouseover-Rahmen in der Bildleiste, wenn ein Vorschaubild mit der Maus wieder verlassen wird
	             */
	            gallery.find('.gallery_image').bind('mouseleave', function(){
	                $(this).children('.image_selector').hide();
	                return false;
	            });
	            
	                        /**
	             * Dieser Handler scrollt die Liste nach rechts, ohne das aktuell ausgewählte Bild zu verändern
	             */
	            gallery.find('.gallery_scroll_forward').bind('click', function(){
	                if(centerImage.next().length != 0)
	                {
	                    window.clearInterval(slideshow);
	                    slideshowActive = false;
	
	                    centerImage = centerImage.next();
	                    gallery.find('.image_slide_wrapper').scrollTo( centerImage, 100, {offset:{left:-213}} );
	                }
	                return false;
	            });
	
	            /**
	             * Dieser Handler scrollt die Liste nach links, ohne das aktuell ausgewählte Bild zu verändern
	             */
	            gallery.find('.gallery_scroll_backward').bind('click', function(){
	                if(centerImage.prev().length != 0)
	                {
	                    window.clearInterval(slideshow);
	                    slideshowActive = false;
	
	                    centerImage = centerImage.prev();
	                    gallery.find('.image_slide_wrapper').scrollTo( centerImage, 100, {offset:{left:-213}} );
	                }
	                return false;
	            });
	
	            /**
	             * Dieser Handler scrollt die Liste nach links oder rechts, abhängig von der Bewegung des Mausrades
	             */
	            gallery.find('.image_slide_wrapper').bind('mousewheel', function(event, delta)
	            {
	                if(delta > 0)
	                {
	                    if(centerImage.prev().length != 0)
	                    {
	                        window.clearInterval(slideshow);
	                        slideshowActive = false;
	
	                        centerImage = centerImage.prev();
	                        gallery.find('.image_slide_wrapper').scrollTo( centerImage, 100, {offset:{left:-213}} );
	                    }
	                    return false;
	                }
	                else
	                {
	                    if(centerImage.next().length != 0)
	                    {
	                        window.clearInterval(slideshow);
	                        slideshowActive = false;
	
	                        centerImage = centerImage.next();
	                        gallery.find('.image_slide_wrapper').scrollTo( centerImage, 100, {offset:{left:-213}} );
	                    }
	                    return false;
	                }
	            });
	            
	            gallery.find('.gallery_image').click(function(i) {
	            	if(!gallery.find(".switch_detail").hasClass("active")) { gallery.find(".switch_detail").trigger("click") }
	            	var index = gallery.find(".gallery_image").index(this);
	            	gotoimage(index);
	            	stopSlideshow();
	            	flashSlideshowTriggerPlayer(gallery.attr("id"), index);
	               	countPixel(location.pathname);  
	            	return false;
	            })
	            
	            gallery.find(".gallery_next_image").click(function() {
	            	getNextImage();
	            	stopSlideshow(); 
	            	countPixel(location.pathname);       	
	            	return false;
	            });
	            
	            gallery.find(".gallery_prev_image").click(function() {
	            	var currentImage = gallery.find(".image_selector_actual").index(gallery.find(".image_selector_actual:visible"));
	            	if(currentImage > 0) {
	            		gotoimage(currentImage-1);
	            		flashSlideshowTriggerPlayer(gallery.attr("id"), currentImage-1);
	            	} else {
	            		gotoimage(gallery.imgs.length-1);
	            		flashSlideshowTriggerPlayer(gallery.attr("id"), gallery.imgs.length-1);
	            	}
					stopSlideshow();
					countPixel(location.pathname);  
	            	return false;
	            })
	            
	            gallery.find('.slideshow_button').bind('click', function()
            	{

                if(!slideshowActive)
                {
                    slideshow = window.setInterval("$('#"+gallery.attr('id')+"').ndrGallery('next')", 5000);
                    slideshowActive=true;
                    $(this).find(".play_button_small").css("background-position","0 -20px");
                }
                else
                {
                	stopSlideshow();
                }
            });
            
            gallery.find(".switch_list").click(function() {
	        		if(slideshowActive) { stopSlideshow(); }
	        		$(".pseudotabs .floatright a").removeClass("active");
	        		gallery.find('.image_slide_wrapper').scrollTo(0,0)
	        		 gallery.find(".image_box").hide();
	        		 gallery.find('.image_slide').removeClass('image_slide_js');
	        		 gallery.find('.image_slide_wrapper').removeClass('image_slide_wrapper_js');
	     			 gallery.find('.gallery_scroll_forward').css('display','none');
	    	         gallery.find('.gallery_scroll_backward').css('display','none');
	        		
	        		$(this).addClass("active");
	        		return false;
	        	}) 
	        	gallery.find(".switch_detail").click(function() {
	        		$(".pseudotabs .floatright a").removeClass("active");
	        		
	        			gallery.find(".image_box").show();
	        			gallery.find('.image_slide').addClass('image_slide_js');
	        			gallery.find('.image_slide_wrapper').addClass('image_slide_wrapper_js');
	       			 	gallery.find('.gallery_scroll_forward').css('display','block');
	       			 	gallery.find('.gallery_scroll_backward').css('display','block');
	        			
	        			$(this).addClass("active");
	        		return false;
	        	}) 
                       
            }
            
            function gotoimage(targetImage) {
            	gallery.find('.image_slide_wrapper').scrollTo( gallery.find('.gallery_image').eq(targetImage), 500, {offset:{left:-213}} );
            	gallery.find('.image_selector_actual').hide();
            	gallery.find('.gallery_image').eq(targetImage).children('.image_selector_actual').show();
            	
            	var temp = gallery.find(".image_box_inlet").clone();
            	temp.find("img").attr("src",gallery.imgs[targetImage].gallery).attr("alt",gallery.imgs[targetImage].copyright);
            	
            	/* Anzeige Fullsize deaktiviert (cw 11.05.)
            	* temp.find("a:first").attr("title",gallery.imgs[targetImage].copyright);
        		* if(gallery.imgs[targetImage].fullsize != "" && gallery.imgs[targetImage].fullsize != gallery.imgs[targetImage].gallery) {
            	* 	temp.find("a:first").attr("href",gallery.imgs[targetImage].fullsize).fancybox();
            	* } else {
            	*	temp.find("a:first").click(function() { return false; });
            	* } 
            	*/ 
            	/* Stattdessen bei Klick aufs Bild weiterblättern */
            	temp.find("a:first").attr("title",gallery.imgs[targetImage].copyright).attr("href","#").click(function() {
            		gallery.find(".gallery_next_image").trigger("click");
            		return false;
            	})
            	/* Ende */         	

            	temp.find(".image_description p").html(gallery.imgs[targetImage].caption);
            	temp.find(".image_copyright").html(gallery.imgs[targetImage].copyright);
            	gallery.find(".image_box").prepend(temp);
            	gallery.find(".image_box_inlet").not(':eq(0)').find(".image_description, .image_copyright").css("color","#0B3478").end().fadeOut(500, function() { $(this).remove() });   

            	gallery.find('.images_total').text(gallery.imgs.length);
            	gallery.find('.image_number').text(1 + targetImage);        		
            }
            
            function getNextImage() { 
							var currentImage = gallery.find(".image_selector_actual").index(gallery.find(".image_selector_actual:visible"));
							
	            				if(currentImage < gallery.imgs.length - 1) {
	            				gotoimage(currentImage+1);
	            				flashSlideshowTriggerPlayer(gallery.attr("id"), currentImage+1);
	            			} else {
	            				gotoimage(0);
	            				flashSlideshowTriggerPlayer(gallery.attr("id"), 0)
	            			}
						}
			
			function stopSlideshow() {
				if(slideshowActive) {
				    window.clearInterval(slideshow);
                    slideshowActive = false;
                    gallery.find(".play_button_small").css("background-position","0 0");
                }
			}
            
   } 

})(jQuery);

function flashSlideshowTriggerPlayer() {
	return;
}

/**
 * countPixel
 *
 * Funktion zum Auslösen eines Zählpixel-Aufrufs
 * Die Funktion greift auf die bereitgestellte URL im Javascript der Seite zu und hängt dort die übergebene
 * Information mit an (bspw. Bild-URL). Weiterhin werden vorsorglich per POST Daten mitgeschickt sofern diese
 * verwertbar und nicht sensibel sind (z.B. einfache Formulardaten aus Votings).
 */
function countPixel(path, data)
{
    if(data == undefined)
    {
        data = null;
    } 

    if(path == undefined)
    {
        path = '';
    } else if (path.match(/http:\/\//)) {
    	path = location.pathname;
    }

    ivmUrl = IVW +'?r='+escape(document.referrer);
    myUrl = IVW.split(';');
    	if (myUrl[1].match(/sdgid=/)) {
    		myUrl[0] = myUrl[0] + ";" + myUrl[1];
    	}
    myUrl = myUrl[0] + ';page=' + path +'?r='+escape(document.referrer)+'&d='+(Math.random()*100000);
    $('.cp').remove()
	$("body").append("<img src='" + myUrl + "' alt='' width='1' height='1' class='cp' />");
}


