jQuery.fn.lightweighttabs= function(callback) {
	return this.each(function() {
		var id = $(this).attr("id");
		$('#'+id+' .tabs-content').not(':first').hide();
                var firstTab = $('#'+id+' div[class^="tabs-navi"] li:first');
                var firstTabLink = firstTab.find('a');
                firstTab.addClass('active');
                var linkContent = firstTabLink.text();
                firstTabLink.replaceWith('<span>'+linkContent+'</span>');
		$('#'+id+' div[class^="tabs-navi"] a').live('click', function() {
			var activeItem = $('#'+id+' div[class^="tabs-navi"] .active');
			var contentIndex = $('#'+id+' li').index($(this).parent());
			//if (callback) callback.call(contentIndex);
			activeItem.removeClass('active');
			activeItem.find('span').wrap('<a href="#'+id+'-content-'+$("#top-teaser li").index(activeItem)+'"></a>')
			$(this).parent().addClass('active');
			var linkContent = $(this).text();			
			$(this).replaceWith('<span>'+linkContent+'</span>');
			$('#'+id+' .tabs-content').hide();
			$('#'+id+'-content-'+contentIndex).show();
                        if (callback) callback.call(contentIndex);
			return false;
		});
	});
};

function initSlideDivs() {	
	$('#top-teaser-content-0 .sliderContent:first').show();
	$('#top-teaser-content-1 .sliderContent:first').show();
	$('#top-teaser-content-2 .sliderContent:first').show();
	$('.sliderHeader').click(
		function() {
			var content = $(this).next();
			if(!content.is(':visible')) {
				$('.sliderContent:visible').slideUp('fast');
				content.slideDown('fast');
			}
			return true;
		}
	);
}

jQuery.fn.slideshow= function() {
	return this.each(function() {
		var id = $(this).attr("id");
		if (!$('#'+id).length) return;
		$('#'+id+' > a').not(':first').hide();	
		$('#'+id+' > a').not(':first').children('img').hide();	
			
		$(window).load(function() {
			buildCtrl();
			slideShow();
		});
		
		function slideShow() {
			var images = $('#'+id+' > a');			
			if (images.length <= 1) return;
			
			//loading-Grafik entfernen:
			$('#'+id).css('background','none');	
			
			var speed = 6000;
			var run = true;
			var target = null;
			var t;
			
			var fn = {
				loop:	function() {
					if (!run) return;
					fn.blend();
					t = setTimeout(fn.loop, speed);
				},
				
				blend:	function() {
					var current = 	$('#'+id+' > a:visible').fadeOut(1000);
					current.children('img').fadeOut(1000);
					var newItem = 	(current.next('a').length) ?
									current.next('a') :
									images.first('a');
					
					var currentCtrl = 	$('#'+id+'_ctrl .current').removeClass('current');
									
					if (target != null) {
						var href = target.attr('id');
						$('#'+id+'_ctrl a[href="#'+href+'"]').addClass('current');
						newItem = target;
						newItem.fadeIn(1000, function() {
							target = null;
							t = setTimeout(fn.loop, speed);
							return;
						});
						newItem.children('img').fadeIn(1000);						
					} else {
						var newCtrl = 	(currentCtrl.next('a').length) ?
										currentCtrl.next('a') :
										$('#'+id+'_ctrl a:first');
						newCtrl.addClass('current'); 
						newItem.fadeIn(1000);
						newItem.children('img').fadeIn(1000);
					}
				}
			}			
			t = setTimeout(fn.loop, speed);
			$('#'+id+'_ctrl a').live('click', function(e) {
				images.stop(true,true);
				//images.children('img').stop(true,true);
				clearTimeout(t);
				var href = $(this).attr('href').split("#");				
				target = $('#'+href[1]);
				fn.blend();
				e.preventDefault();
			});			
		}
		
		function buildCtrl() {
			$('#'+id).append('<div id="'+id+'_ctrl"><span>Highlights</span></div>');
			var i=0;
			$('#'+id+' a').each(function() {
				if (i==0) {
					$('#' + id + '_ctrl').append('<a href="#'+id+'-item' + (i + 1) + '" class="slideshow-button current">' + (i + 1) + '</a>');
				} else {
					$('#' + id + '_ctrl').append('<a href="#'+id+'-item' + (i + 1) + '" class="slideshow-button">' + (i + 1) + '</a>');
				}
				i++;
			});
		}		
		
	});
};

function skipSlider(dir) {
    var slider = $('.category-slider:visible');
    var sliderPos = slider.position().left;
    if (dir=='left') var newPos = sliderPos + 234;
    if (dir=='right') var newPos = sliderPos - 234;
    var no_el = slider.find('div').length;
    slider.css('left', newPos + 'px');
    if (newPos < 0) {
        $('.slider-skip-left').show();
    } else {
        $('.slider-skip-left').hide();
    }
    if (newPos > -((no_el-4)*234)) {
        $('.slider-skip-right').show();
    } else {
        $('.slider-skip-right').hide();
    }
}

function initCatSkips() {
    $('.slider-skip-left').hide();
    $('.slider-skip-right').hide();    
    var noEvents = $('.category-slider:visible').find('div').length;
    if(noEvents > 4) {
        $('.slider-skip-right').show();
    }
    $('.category-slider:visible').css({
        left:'0px',
        width: noEvents*234+'px'
    });    
}

var BannerRotation = {
    banExpWidth: 540,
    banClpWidth: 200,
    banHeight: 600,
    transSpeed: 300,
    debug: false,
    actCounter: 0,
    maxIndex: 0,

    activate: function(banners){
        this.logger("Banner Rotation activated!");
        this.banners = banners;
        this.maxIndex = parseInt(banners.length - 1);
        this.createLayer();
        this.showBanner();
    },
    logger: function(message) {
        if(this.debug) console.log(message);
    },
    createLayer: function() {
        $("#wrapper").append('<div id="bannerContainer"><div id="banner"></div></div>');
        this.logger("Banner Layer created!");
    },
    toggleLayer: function(layer) {
        $(layer).mouseover(function() {
            var This = BannerRotation;
            $(layer).filter(':not(:animated)').animate({width: This.banExpWidth +'px'}, This.transSpeed);
            layer.addClass("expanded");
            This.logger("Banner Layer expanded!");
        });
        $(layer).mouseout(function(that) {
            var This = BannerRotation;
            $(layer).filter(':not(:animated)').animate({width: This.banClpWidth +'px'}, This.transSpeed);
            layer.removeClass("expanded");
            This.logger("Banner Layer collapsed!");
        });
    },
    readCounter: function() {
        var actCounter = parseInt(this.readCookie("ban_count"));
        this.logger("COUNTER:"+actCounter);
        this.actCounter = actCounter;
        this.logger("Counter read!");

        return actCounter;
    },
    updateCounter: function() {
        if(this.actCounter < this.maxIndex) {
            this.actCounter++;
            this.writeCookie(this.actCounter);
        } else {
            this.writeCookie(0);
        }
        this.logger("Counter updated!");
    },
    findBannerNo: function() {
        var counter = this.readCounter();
        if(isNaN(counter)) {
            this.logger("Counter auf 0 gesetzt");
            return 0;
        } else {
            this.logger("Counter:"+counter);
            return counter;
        }
    },
    showBanner: function() {
        var banNo = this.findBannerNo();
        var url = this.banners[banNo]["url"];
        var src = this.banners[banNo]["src"];
        var width = this.banners[banNo]["width"];
        var height = this.banners[banNo]["height"];
        var expand = this.banners[banNo]["expand"];

        if(expand) this.toggleLayer($("#bannerContainer"));

        if(src.match('.jpg|.jpeg|.gif|.png')) {
            this.logger("Load Image Template...");
            $("#banner").append('<img src="#" alt="" />');
            $("#banner img").attr('src',src);
            $("#banner, #banner img").width(width);
            $("#banner, #banner img").height(height);
            this.updateCounter();
            if(typeof(url) != "undefined")
                $("#bannerContainer").wrap('<a href="'+url+'"></a>');
        }
        if(src.match('.swf')) {
            this.logger("Load Flash Template...");
            var flashvars = {};
            var params = {wmode:"transparent"};
            var attributes = {};

            swfobject.embedSWF(
                src,
                "banner",
                width,height,
                "8",
                "",
                flashvars,
                params,
                attributes
            );
            this.updateCounter();
        }


    },
    readCookie: function(cname) {
        this.logger("Cookie read!");
        return getCookie(cname);
    },
    writeCookie: function(value) {
        this.logger("Cookie written!");
        setCookie("ban_count",value,3600);
    }
}

$(document).ready(function() {
		
	$('#top-teaser').lightweighttabs();
	$('#category-teaser').lightweighttabs(function() {
            initCatSkips();
            var index = this;
            var category = $('#category-teaser .tabs-navi-dyn li:eq('+index+')').find('span').text();
            var link = '';
            switch(category) {
                case 'Konzerte': link = '/konzerte'; break;
                case 'Musicals': link = '/musical'; break;
                case 'Show': link = '/show'; break;
                case 'Comedy': link = '/comedy'; break;
                case 'Oper & Operette': link = '/oper-operette'; break;
                case 'Klassik & Kultur': link = '/klassik-kultur'; break;
                case 'Theater': link = '/theater'; break;
                case 'Sport': link = '/sport'; break;
            }
            $('#whole-category span').text(category);
            $('#whole-category a').attr('href',link);
	});
        initCatSkips();
        $('.slider-skip-left').click(function() {
            skipSlider('left');
        });
        $('.slider-skip-right').click(function() {
            skipSlider('right');
        });
	initSlideDivs();
	$('#slider').slideshow();        

        var banners = [

            {
                src:    "/banners/zauberfloete-banner.jpg",
                width:  "200",
                height: "600",
                url:    "/oper-operette/die-zauberfloete-impempe-yomlingo.html",
                expand: false
            },            
	    
            {
                src:    "/banners/kein-pardon.swf",
                width:  "540",
                height: "600",
                url:    "/musical/kein-pardon.html",
                expand: true
            }           


        ];


        BannerRotation.activate(banners);
			
});
