var currentViewName = '';


jQuery(document).ready(function()
{

	/*
	 * implement support for landing pages/simple view selection
	 */

	jQuery.extend( {

		// list of node IDs considered category nodes
		mtCategories :
		[
			'services-cat', 'abo-cat', 'produkte-cat'
		],

		// record storing information on currently visible view
		mtView :
		{
			name : null,
			ref  : null,
			toggleStatus : false
		},

		// ensure to have a non-empty viewname preceeded by a hash
		mtQualifyViewName : function( name )
		{
			if ( name.length > 0 )
				while ( name[0] == '#' )
					name = name.substring( 1 );

			if ( !name || !name.length )
				name = 'start';

			return name;
		},

		// get view node selected by provided name
		mtGetView : function( viewname )
		{
			return jQuery( '#' + jQuery.mtQualifyViewName( viewname ) );
		},

		// detects if curent context node or given node is a category node or not
		mtIsCategoryNode : function( node )
		{
			var name = jQuery(node?node:this).attr( 'id' );

			for ( var i = 0; i < jQuery.mtCategories.length; i++ )
				if ( name == jQuery.mtCategories[i] )
					return true;

			return false;
		},

		// gets category node containing provided view node
		mtGetCategory : function( view )
		{
			return jQuery( jQuery( view ) ).parents( '[id]' ).filter( jQuery.mtIsCategoryNode );
		},

		mtShowCategory : function( categoryName )
		{
			var selected, active;


			// find active category, if available
			if ( jQuery.mtView.ref )
				active = jQuery.mtGetCategory( jQuery.mtView.ref );

			// validate category selection
			selected = jQuery( '#' + categoryName );
			if ( !jQuery.mtIsCategoryNode( selected ) )
				return;

			if ( active )
				if ( active.attr( 'id' ) == selected.attr( 'id' ) )
					// category is selected already -> no change
					return;

			// change to that category now
			jQuery.mtChangeCategory( selected, active );

			// always hide toggle of initial view
			jQuery('li.li_toggle').hide( 0 );

		},

		mtChangeCategory : function( selected, active, instant )
		{
			var i, cat;


			selected = jQuery( selected );

			if ( active )
				active = jQuery( active ).get( 0 );

			for ( i = 0; i < jQuery.mtCategories.length; i++ )
			{

				cat = jQuery( '#' + jQuery.mtCategories[i] );

				if ( selected.attr( 'id' ) == cat.attr( 'id' ) )
				{
					// show this category

					cat.css( 'visibility', 'visible' );

					if ( instant )
						cat.css( 'display', 'block' );
					else
						cat.animate( { opacity : 'show' }, 'slow' );

				}
				else if ( !active || ( active.id == jQuery.mtCategories[i] ) )
				{
					// hide this category

					if ( instant )
						cat.css( 'display', 'none' );
					else if ( active )
						// fade out current/active view
						cat.animate( { opacity : 'hide' }, 'slow' );
					else
						// instantly hide all unused views
						cat.animate( { opacity : 'hide' }, 'slow' );

				}
			}
		},

		// changes to selected view
		mtShowView : function( viewname )
		{

			viewname = jQuery.mtQualifyViewName( viewname );

			if ( jQuery.mtView.name == viewname )
				// selected before
				return true;


			stopVideo();


			if ( viewname == 'start' )
			{
				// special case ... start is allowed once at beginning, only

				if ( jQuery.mtView.ref || jQuery.mtView.toggleStatus )
					// can't return to start view
					return false;


				// hide all initially unused layers
				jQuery.mtChangeCategory( '#services-cat', null, true );

				// attach click handler to close welcome view
				jQuery('ul.buehneList li.li_toggle').click( function( event )
				{
					// prevent from closing welcome view a second time
					jQuery.mtView.toggleStatus = true;

					// slide out welcome view
					jQuery(this).animate({
										width: 'hide'
									}, 'slow');

					// after that make services-toc current view
					jQuery.mtView.name = 'services';
					jQuery.mtView.ref  = jQuery('#services');

					jQuery.mtUpdateFootnotes();

					event.preventDefault();
				} );

				// install timer to automatically close welcome view after delay
				jQuery.mtView.timer = setTimeout( function() {
												if ( !jQuery.mtView.toggleStatus )
													jQuery('ul.buehneList li.li_toggle').click();
											}, 5000 );

			}
			else
			{
				// select different view

				if ( !jQuery.mtView.toggleStatus )
				{
					// close skipped welcome view
					jQuery('li.li_toggle').hide( 0 );

					// prevent automatically closing welcome view
					jQuery.mtView.toggleStatus = true;
				}


				// find selected view and its containing category
				var selectedView = jQuery.mtGetView( viewname );
				var selectedCategory = jQuery.mtGetCategory( selectedView );

				if ( !selectedView.length )
					return;

				// change to that category
				jQuery.mtShowCategory( selectedCategory.attr( 'id' ) );

				if ( !jQuery.mtView.ref || ( jQuery.mtView.ref[0] != selectedView[0] ) )
				{
					// need to change to selected view

					// get managing slider
					var slider = jQuery(selectedView).parents('.anythingSlider');
					var items  = jQuery('ul.slider_views > li',slider);
					if ( slider.length && items.length )
					{
						// find index in list

						var index = -1;

						for ( var i = 0; i < items.length; i++ )
							if ( selectedView.attr( 'id' ) == items[i].id )
							{
								index = i;
								break;
							}

						if ( index >= 0 )
						{

							slider.anythingSlider( index );

							if ( document.__changedView )
								pageTracker._trackPageview( '/' + selectedView.attr( 'id' ) );

							pageTracker._trackEvent( 'Views', 'Change', selectedView.attr( 'id' ) );

						}
						else
							pageTracker._trackEvent( 'Views', 'Miss', selectedView.attr( 'id' ) );


						jQuery.mtView.name = viewname;
						jQuery.mtView.ref = selectedView;

						jQuery.mtManageIndexRelation();
						jQuery.mtUpdateFootnotes();

					}

					currentViewName = viewname;

				}
			}

			document.__changedView = true;

		},

		// marks change from current view without explicitly naming new view
		mtUnshowView : function( newView )
		{
			stopVideo();

			jQuery.mtView.name = newView ? newView.attr( 'id' ) : null;
			jQuery.mtView.ref  = newView ? newView              : null;

			currentViewName    = newView ? newView.attr( 'id' ) : null;

			jQuery.mtManageIndexRelation();
		},

		mtFindNeighbourView : function( above )
		{

			if ( !jQuery.mtView.ref )
				return null;

			var neighbour = above ? jQuery.mtView.ref.prev( 'li[id]' )
						 		  : jQuery.mtView.ref.next( 'li[id]' );

			if ( !neighbour.length )
				neighbour = above ? jQuery.mtView.ref.siblings('li[id]').last().prev().prev()
								  : jQuery.mtView.ref.siblings('li[id]').first().next().next();

			return neighbour;
		},

		// processes click on a node initiating transfer to new view
		mtClick : function( event )
		{
			var viewname = jQuery(this).attr('rel');

			if ( viewname )
			{
				// use internal viewname provided in attribute rel
				if ( jQuery( '#' + viewname ).length )
				{
					// apply some application-dependent constraints here
					if ( jQuery.mtView.name == 'abo-check' )
					{
						jQuery.mtView.indexToUse = jQuery.mtView.name;
					}

					jQuery.mtShowView( viewname );
				}
				else
					location.href = 'index.php?id=' + viewname;

			}
			else if ( !this.href )
			{
				// no href in node, look for embedded node with href
				var subref = jQuery('[href]',this).filter(function(){return this.href&&this.href!='#';}).attr('href');
				if ( subref )
					location.href = subref;
				return;
			}
			else if ( this.href != '#' )
				// clicked node has explicit reference
				return;

			// prevent further action on processing rel attribute or on
			// href referring to senseless #
			event.preventDefault();
		},

		mtManageIndexRelation : function()
		{
			var catNode = jQuery.mtGetCategory( jQuery.mtView.ref );
			var idxName = catNode.attr( 'rel' );

			if ( idxName == jQuery.mtView.name )
				// drop any custom index relation on returning to current category's index
				jQuery.mtView.indexToUse = null;
		},

		mtClickForIndex : function( event )
		{
			if ( jQuery.mtView.indexToUse )
			{
				jQuery.mtShowView( jQuery.mtView.indexToUse );
				jQuery.mtView.indexToUse = null;
			}
			else
			{
				var catNode = jQuery.mtGetCategory( jQuery.mtView.ref );
				var catName = catNode.attr( 'id' );

				if ( catNode.attr( 'rel' ) )
					catName = catNode.attr( 'rel' );
				else if ( catName.match( /-cat$/ ) )
					catName = catName.substr( 0, catName.length - 4 );

				jQuery.mtShowView( catName );
			}

			event.preventDefault();
		},

		mtUpdateFootnotes : function()
		{

			var sups = jQuery('#content sup');

			sups = sups.add(jQuery('#buehne.buehne_hilfe_kontakt sup'));

			if ( jQuery.mtView.ref )
				sups = sups.add(jQuery('sup',jQuery.mtView.ref));

			var fnotes = jQuery('#footer ol.footnotes');
			var visible = {};

			sups.each( function( i )
			{
				var rel = jQuery(this).attr( 'rel' );
				if ( rel && rel.length )
				{
					// found footnote reference with relation name

					var fn = jQuery('#'+rel,fnotes);
					if ( fn && fn.length )
						// found related footnote
						visible[rel] = true;

				}
			} );

			jQuery('li[id]',fnotes).each( function()
			{
				var fn = jQuery(this);
				if ( visible[fn.attr('id')] )
					fn.delay(250).slideDown(500);
				else
					fn.slideUp(250);

				window.setTimeout( 'jQuery.mtUpdateFootnoteReference();', 600 );
			} );

		},

		mtUpdateFootnoteReference : function()
		{
			jQuery('#footer ol.footnotes li[id]:visible').each( function( i )
			{
				jQuery('sup[rel='+jQuery(this).attr('id')+']').text(String(i+1));
			} );
		}
	} );




	/*
	 * slider integration
	 */

	function formatText(index, panel)
	{
	  return index + "";
	}

	jQuery('.anythingSlider_typ1').anythingSlider({
		easing: "easeInOutExpo",        // Anything other than "linear" or "swing" requires the easing plugin
		autoPlay: false,                 // This turns off the entire FUNCTIONALY, not just if it starts running or not.
		delay: 5000,                    // How long between slide transitions in AutoPlay mode
		startStopped: false,            // If autoPlay is on, this can force it to start stopped
		animationTime: 500,             // How long the slide transition takes
		hashTags: false,                // Should links change the hashtag in the URL?
		buildNavigation: false,         // If true, builds and list of anchor links to link to each slide
		pauseOnHover: false,            // If true, and autoPlay is enabled, the show will pause on hover
		startText: "Go",             	// Start text
		stopText: "Stop",               // Stop text
		navigationFormatter: formatText // Details at the top of the file on this use (advanced use)
	});

	jQuery.mtShowView( currentViewName );

	// observe all clickable items to support view changes automatically
	jQuery('a, .clickable').click( jQuery.mtClick );

	// enable hover on whole index item in services slider
	jQuery('#buehne .slider_index .item:not(.no-hover)').mouseover(function(){jQuery(this).addClass('hovered');}).mouseout(function(){jQuery(this).removeClass('hovered');}).click(jQuery.mtClick);

	// enable pseudo-intelligent back-to-index anchors in category "services"
	jQuery('#services-cat .back-to-index').mouseover(function(){jQuery(this).addClass('hovered');}).mouseout(function(){jQuery(this).removeClass('hovered');}).click(jQuery.mtClickForIndex);

	// enable hover on table rows in subscription check/compare view
	jQuery('#abo-check table.morcheckTable tr.hover').mouseover(function(){jQuery(this).addClass('hovered');}).mouseout(function(){jQuery(this).removeClass('hovered');}).click(jQuery.mtClick);

	jQuery.mtUpdateFootnotes();

	jQuery('.anythingSlider ul.slider_views').each(function() {
		var li_count 	= jQuery(this).find('li').length;
		var li_height 	= parseInt( jQuery(this).find('li').height() );

		var ul_sum		= li_count*li_height;
		jQuery(this).css('height', ul_sum);
	});

	jQuery(".moreFacebook").click(function() {

		jQuery("ul.buehneList li.li_toggle").click();
		toggleStatus = 1;


		jQuery('ul#services').css('z-index','2');

		jQuery('.anythingSlider_services').anythingSlider(8);


		jQuery('ul#services').animate({
			opacity: 'show'
			}, 'slow');
			return false;
		}, function() {

		jQuery('ul#produkte, ul#abo').animate({
			opacity: 'hide'
			}, 'slow');
			return false;
		}, function() {


	});



/* buehne ebenen slide */
	jQuery('.buehne_right_typ1_navi a').click(function( event )
	{
		var viewname = jQuery(this).attr('rel');

		if ( viewname )
			jQuery.mtShowView( viewname );
		else if ( !this.href || ( this.href != '#' ) )
			return;

		event.preventDefault();
	});




/* ALLGEMEIN */

	jQuery('input.button').hover(function() {
		jQuery(this).addClass('active');
	}, function() {
		jQuery(this).removeClass('active');
	});




/* mouseover bilder */
	jQuery('a.hoverPic img').hover(function() {
		src = jQuery(this).attr('src');
		src = src.replace(/_lo/g,'_hi');
		jQuery(this).attr('src',src);
	}, function() {
		src = src.replace(/_hi/g,'_lo');
		jQuery(this).attr('src',src);
	});





/* UI Block */
    jQuery('.regInner a').click(function() {
		var thisClass = jQuery(this).attr('class');
		jQuery.blockUI({
            message: jQuery('#'+thisClass+'')
        });
    });

	jQuery('.uiText').click(function() {
		jQuery.unblockUI();
	});

	jQuery('.uiText').hover(function() {
		jQuery(this).addClass('uiText_active');
	}, function() {
		jQuery(this).removeClass('uiText_active');
	});



	jQuery(".arrow").click(function( event )
	{
		var slidInView;

		if ( jQuery(this).hasClass( 'back' ) )
			slidInView = jQuery.mtFindNeighbourView( true );
		else if ( jQuery(this).hasClass( 'forward' ) )
			slidInView = jQuery.mtFindNeighbourView( false );

		jQuery.mtUnshowView( slidInView );
		jQuery.mtUpdateFootnotes();

		pageTracker._trackEvent( 'Slider', 'SlideTo', slidInView ? slidInView.attr( 'id' ) : 'unknown-view' );
		pageTracker._trackPageview( '/' + ( slidInView ? slidInView.attr( 'id' ) : '' ) );

	});



	jQuery("#sonderForm input").click(function() {
		val = jQuery(this).val();

		if(val == "aktion1") {
			jQuery("#sonderaktionForm input#paket1").click();
		}
		if(val == "aktion2") {
			jQuery("#sonderaktionForm input#paket2").click();
		}
	});



	jQuery.extend( {
		onVideoPlayerStateChanged : function( obj )
		{
			var player = jQuery( '#' + obj.id ).get( 0 );

			if ( player && player._moreTVtag )
				switch ( obj.newstate )
				{

					case 'PLAYING' :
					case 'BUFFERING' :
						if ( ( obj.oldstate == 'PAUSED' ) || ( obj.oldstate == 'IDLE' ) )
							pageTracker._trackEvent( 'Videos', 'Start', player._moreTVtag );
						break;

		/*
					case 'IDLE' :
						if ( obj.oldstate == 'PLAYING' )
						{
							pageTracker._trackEvent( 'Videos', 'Completed', player._moreTVtag );
							alert( 'Completed ' + player._moreTVtag );
						}
						break;
		*/

				}
		}
	} );


	if ( jQuery.browser.msie && ( jQuery.browser.version < 7 ) )
	{
		jQuery('#all').prepend('<div class="vintage-note">Ihr Browser ist zu veraltet, um diese Website korrekt darzustellen. Wir empfehlen Ihnen die Nutzung eines aktuellen Webbrowsers wie Microsoft Internet Explorer ab Version 7 oder Mozilla Firefox ab Version 3 ...</div>');
		jQuery('#all .vintage-note').slideUp(0).delay(2500).slideDown('slow');
	}


	jQuery.extend( {
		playerModal :
		{
			isClosing   : false,
			background  : null,
			box         : null,
			controlbar  : 0,		// set 23 on locating controlbar at bottom instead of "over" movie
			framesize   : 23,		// padding of player inside frame
			frameborder : 2,		// width of border around frame
			framemargin : 30		// distance in pixels of frame from window borders
		},

		playerModalOpen : function( imageURL, movieURL, width, height )
		{
			jQuery.playerModalClose();


			var body = jQuery('body');

			// create and prepare background instance
			jQuery.playerModal.background = jQuery('<div id="modal_view"></div>').css({
														'opacity' : 0.0,
														'width'   : body.width() + 'px',
														'height'  : body.height() + 'px'
													}).appendTo(body);

			// available size of window
			var windim = {
						w : jQuery(window).width(),
						h : jQuery(window).height()
						};

			// extra margin (vertically/horizontally - full or inside frame)
			var margin = {
						wf : 2 * ( jQuery.playerModal.framesize + jQuery.playerModal.frameborder + jQuery.playerModal.framemargin ),
						wi : 2 * ( jQuery.playerModal.framesize + jQuery.playerModal.frameborder ),
						hf : 2 * ( jQuery.playerModal.framesize + jQuery.playerModal.frameborder + jQuery.playerModal.framemargin ) + jQuery.playerModal.controlbar,
						hi : 2 * ( jQuery.playerModal.framesize + jQuery.playerModal.frameborder ) + jQuery.playerModal.controlbar
						};

			// requested size of player including frame
			var playerdim = {
						l : 0,
						t : 0,
						w : width  + margin.wf,
						h : height + margin.hf
						};

			// check whether player fits in window or not
			var scale = Math.min(
								windim.w / playerdim.w,
								windim.h / playerdim.h
								);

			if ( ( scale > 0.3 ) && ( scale < 1.0 ) )
			{
				// player at requested size doesn't fit in current window
				width  = Math.round( scale * width );
				height = Math.round( scale * height );

				playerdim.w = width  + margin.wf;
				playerdim.h = height + margin.hf;
			}


			// final position of player/frame
			playerdim.l = ( windim.w - playerdim.w ) / 2;
			playerdim.t = ( windim.h - playerdim.h ) / 2;

			// create and prepare modal player instance
			jQuery.playerModal.box = jQuery('<div id="modal_player_box"><div id="modal_player_frame"><div id="modal_player">'+
											'</div></div><img class="closer' + ( jQuery.browser.msie ? ' closer-msie' : '' ) +
											'" title="Video schließen" src="images/modal/closer.png" /></div>').css({
												'opacity' : 0.0,
												'left'    : playerdim.l + 'px',
												'top'     : playerdim.t + 'px',
												'width'   : String( width  + margin.wi ) + 'px',
												'height'  : String( height + margin.hi ) + 'px'
											} ).appendTo(body);


			// support closing modal view
			jQuery.playerModal.background.click( jQuery.playerModalClose );
			jQuery('.closer',jQuery.playerModal.box).click( jQuery.playerModalClose );
			jQuery(document).keydown( function( event )
			{
				if ( event.which == 27 )
					jQuery.playerModalClose();
			} );

			jQuery.playerModal.isClosing = false;


			// start fading in background
			jQuery.playerModal.background.animate({opacity:0.7},'slow',function()
			{
				// create instance of video player
				var s = new SWFObject('mediaplayer/player.swf','modal_player_instance',
										width, height + jQuery.playerModal.controlbar, '9','#FFF');
				s.addParam('allowfullscreen','true');
				s.addParam('allowscriptaccess','always');
				s.addParam('autostart','true');
				s.addParam('wmode','opaque');
				s.addVariable('file','../' + movieURL);
				s.addVariable('image',imageURL);
				s.addVariable('controlbar','over');
				s.addVariable('fullscreen','true');
				s.addVariable('autostart','true');
				s.addVariable('frontcolor','ffffff');
				s.addVariable('backcolor','000000');
				s.write('modal_player');


				// on fading in background has finished fade player in next
				jQuery.playerModal.box.animate({opacity:1.0},'slow', jQuery.playerModalPlay );
			});
		},

		playerModalPlay : function()
		{
			var player = jQuery('#modal_player_instance').get( 0 );
			if ( player && player.sendEvent )
				player.sendEvent( 'PLAY', 'true' );
			else
				window.setTimeout( 'jQuery.playerModalPlay();', 100 );
		},

		playerModalClose : function()
		{
			if ( jQuery.playerModal.isClosing )
				return;

			jQuery.playerModal.isClosing = true;


			var player = jQuery('#modal_player_instance').get( 0 );
			if ( player && player.sendEvent )
				player.sendEvent( 'STOP', 'true' );

			if ( jQuery.playerModal.box )
				jQuery.playerModal.box.animate({opacity:0.0},'fast',function()
				{
					if ( jQuery.playerModal.box )
					{
						jQuery.playerModal.box.remove();
						jQuery.playerModal.box = null;
					}
				} );

			if ( jQuery.playerModal.background )
				jQuery.playerModal.background.animate({opacity:0.0},'fast',function()
				{
					if ( jQuery.playerModal.background )
					{
						jQuery.playerModal.background.remove();
						jQuery.playerModal.background = null;
					}
				} );
		}
	} );


	jQuery('#video_popup a').click( function( event )
	{
		// prevent browser from opening linked movie file
		event.preventDefault();

		stopVideo();

		var anchor = jQuery(this);

		// read out movie and related preview snapshot
		var imageURL = jQuery('img.preview',anchor).attr('src');
		var movieURL = anchor.attr('href');

		// put provided image in a new container to get its original dimensions
		var image = new Image();
		image.src = imageURL;
		image = jQuery(image);
		image.hide().appendTo('body');

		// invoke modal player
		jQuery.playerModalOpen( imageURL, movieURL, image.width(), image.height() );

		image.remove();
	} );
});



function playerReady( obj )
{

	var name = null;

	var player = jQuery('#'+obj.id).get( 0 );
	if ( !player )
		return;

	if ( player._moreTVtag )
		// captured before
		return;


	var ascs = jQuery( player ).parents();

	for ( var i = 1; i < ascs.length; i++ )
		if ( jQuery( ascs[i] ).hasClass( 'slider_views' ) )
		{
			name = jQuery( ascs[i-1] ).attr( 'id' );
			break;
		}

	if ( !name )
		name = 'unknown-' + obj.id;

	player._moreTVtag = name;


	player.addModelListener( 'STATE', 'jQuery.onVideoPlayerStateChanged' );

}



function stopVideo()
{

	jQuery("embed").each(function()
	{
		if(jQuery(this).is(':visible')&&this.sendEvent)
			this.sendEvent('STOP','true');
	});

	jQuery("object").each(function()
	{
		if(jQuery(this).is(':visible')&&this.sendEvent)
			this.sendEvent('STOP','true');
	});

}




function checkData(params,id){
	//alert(params);

	jQuery.ajax({
		type: "POST",
   		url: 'includes/ajax.php',
   		data: params,
   		success: function(msg){


   			if(msg == 'SUCCESS'){
   				jQuery("#" + id + "Check").val("1");
   				jQuery("#" + id + "CheckDisplay").removeClass("check_false").addClass("check_true");
   			} else {
   				jQuery("#" + id + "Check").val("");
//   				jQuery("#" + id).val('');
   				jQuery("#" + id + "CheckDisplay").removeClass("check_true").addClass("check_false");
   			}

   		}
 	});
}

