var startartikel = 1;
var isHome = 1;
var menuBlindOutSpeed = 0.5;
var menuBlindInSpeed = 0.5;
var contentBlindOutSpeed = 0.5;
var contentBlindInSpeed = 0.5;

var menuChangeClicked = null;
var contentChangeClicked = null;

var lastContent = null;
var restoreContent = null;
var moviePlaying = null;

var subMenuId = 'initSubmenu';
var oldMenuFile = null;

var lastScrollTop = null;

var slider1 = null;

var oldsrc = null;
var resetImg = null;
var menuImgChange = null;

var menu = null;

function menuChange(menuFile) 
{
	this.urlData  = menuFile.split('?');
	this.params = this.urlData[1].toQueryParams();
	if(!menuChangeClicked)
	{
		if(menuFile && menuFile != oldMenuFile) 
		{
			loading();
			hideScrollBar();
			menuChangeClicked = 1;
			if(moviePlaying) 
			{
				$('movie').innerHTML = '';
				moviePlaying = 0;
			}
			// content:
			Effect.BlindLeft('contentContainer', 
			{ 
				duration: contentBlindOutSpeed, afterFinish: function() 
				{ 
					$('content').innerHTML = '';
					
					// mainmenu:
					Effect.BlindLeft('submenuContainer', 
					{ 
						duration: menuBlindOutSpeed, afterFinish: function() 
						{ 
							new Ajax.Updater('submenuContainer', menuFile, 
							{
								method: 'get',
								evalScripts: true,
								onSuccess: function() 
								{ 
									if(this.params['article_id'] == startartikel) $('submenuContainer').innerHTML = '';
									Effect.BlindRight('submenuContainer', 
									{ 
										duration: menuBlindInSpeed, afterFinish: function() 
										{ 
											loading();
											oldMenuFile = menuFile; 
											menuChangeClicked = null;
											this.urlData  = menuFile.split('?');
											this.params = this.urlData[1].toQueryParams();
											if(this.params['article_id'] == startartikel) 
											{
												var newUrl = this.urlData[0] + '?ajax=1&homemenu=1&article_id=' + startartikel;
												goHome(newUrl);
											}
										}	 
									})
								}
							})
						}
					});
					// end mainmenu
			
					Effect.BlindRight('contentContainer', 
					{ 
						duration: contentBlindOutSpeed
					})
					//resetScroll()
				}
			})
			
		}
	}
}

function contentChange(file) 
{
	if(!contentChangeClicked && file != lastContent)
	{
		loading();
		contentChangeClicked = 1;		
		
	
//		if(slider1 != null && slider1.value > 0) 
//		{
//			slider1.scrollTimeout = setInterval(
//				function ()
//				{
//					nuSpeed = -5 / 100;
//					slider1.setValueBy(nuSpeed);
//				}, 20
//			);
		
//			while(slider1.value > 0)
//			{
//				var sliderVal = slider1.value - 0.001;
//				slider1.setValue(sliderVal);
//				alert(sliderVal);
//					a = 1;
//			}
//		}
//		if(slider1 != null) clearInterval(slider1.scrollTimeout)

		resetScroll() 
		hideScrollBar();
		
		if(moviePlaying) 
		{
			$('movie').innerHTML = '';
			moviePlaying = 0;
		}
		urlData  = file.split('?');
		var params = urlData[1].toQueryParams();
		if(params['hideSubmenu'] == 1)	
		{
			Effect.BlindLeft('contentContainer', { 
				duration: contentBlindOutSpeed, afterFinish: function() 
					{ 
					
					Effect.BlindLeft('submenuContainer', { duration: contentBlindOutSpeed, afterFinish: function()
						{
							$('submenuContainer').innerHTML = ' ';
							Effect.BlindRight('submenuContainer', { duration: contentBlindInSpeed, afterFinish: function()
								{
								new Ajax.Updater('content', file, 
								{
									method: 'get',
									evalScripts: true,
									onSuccess: function() 
									{ 
										
										showScrollBar()
										Effect.BlindRight('contentContainer', 
										{ 
											afterFinish: function() 
											{ 																		
													// showScrollBar();
													
													lastContent = file;
													if(params['hideSubmenu'] == 1) lastContent = null;
													contentChangeClicked = null; 
													loading();
											}
										}) 
									}
								}
							)} });
						}
					});	
				}
			});
		
		}
		else 
		{
		Effect.BlindLeft('contentContainer', { 
			duration: contentBlindOutSpeed, afterFinish: function() 
				{ 
					new Ajax.Updater('content', file, 
					{
						method: 'get',
						evalScripts: true,
						onSuccess: function() 
						{ 
							//resetScroll() 
							showScrollBar()
							
							Effect.BlindRight('contentContainer', 
							{ 
								afterFinish: function() 
								{ 
									//showScrollBar();
									lastContent = file;
									if(params['hideSubmenu'] == 1) lastContent = null;
									contentChangeClicked = null; 
									loading();
								}
							}) 
						}
					}
				)} });

		}
	}
}



function showMovie(target,file,movie) {
	lastScrollTop = $('content').scrollTop;
	loading();
	contentChangeClicked = 1;
	hideScrollBar();
	
	Effect.BlindLeft('contentContainer', { 
		duration: contentBlindOutSpeed, 
		afterFinish: function() 
		{
		//resetScroll();
		new Ajax.Updater('content', file, {
			onSuccess: function() 
			{ 
				Effect.toggle('contentContainer', 'appear', { 
						afterFinish: function() 
						{ 
							$('movie').innerHTML = 'loading movie...';
							new Ajax.Updater('movie', 'files/getQuicktime2.php?movie=' + movie, {
								evalScripts: true,
								onSuccess: function() 
								{ 							
									isClicked = null; 
									moviePlaying = 1;
									contentChangeClicked = null;
									loading();
								}
							});
						}
					}	
				);
			}
	}
	);
}
}
);
}

function unloadMovie(elem,restoreContent) {
	if($(elem)) {
		
		loading();
		contentChangeClicked = 1;
		$('movie').innerHTML = 'unloading...';
		
		Effect.Fade('contentContainer', 
		{
			afterFinish: function() 
			{
				if(restoreContent)
				{
					restoreScrollTop();
					new Ajax.Updater('content', lastContent, 
					{
						method: 'get',
						evalScripts: true,
						onSuccess: function() 
						{ 
							
							Effect.BlindRight('contentContainer', 
							{
								afterFinish: function() { showScrollBar(); }
							}); 
							moviePlaying = null;
							contentChangeClicked = null;
							loading();

						}
					});		
				} 
				else 
				{
					moviePlaying = null;
					contentChangeClicked = null;
					loading();
				}
			}
		}); 
	}
}

function unloadMovie2(elem,restoreContent) {
	if($(elem)) {
		
// alert(slider1.value);

		loading();
		contentChangeClicked = 1;
//		$('movie').innerHTML = 'unloading...';
		
//		Effect.Fade('contentContainer', 
//		{
//			afterFinish: function() 
//			{
				if(restoreContent)
				{
					
					new Ajax.Updater('content', lastContent, 
					{
						method: 'get',
						evalScripts: true,
						onSuccess: function() 
						{ 
							restoreScrollTop();
							Effect.BlindRight('contentContainer', 
							{
								afterFinish: function() 
								{ 
									showScrollBar(slider1.value); 
								}
							}); 
							moviePlaying = null;
							contentChangeClicked = null;
							loading();

						}
					});		
				} 
				else 
				{
					moviePlaying = null;
					contentChangeClicked = null;
					loading();
				}
//			}
//		}); 
	}
}


function showScrollBar(pos) {
	if($('scrollBar')) 
	{
		Effect.Appear('scrollBar', 
		{
			duration: .5, afterFinish: function() 
			{
					slider1 = new Control.Slider('handle1', 'track1', 
					{
						axis: 'vertical',
						onSlide: function(v) { scrollVertical(v, $('content'), slider1);  },
						onChange: function(v) { scrollVertical(v, $('content'), slider1); }
					});
					
					if(pos) slider1.setValue(pos);
					
					// mouse wheel code from http://adomas.org/javascript-mouse-wheel/
					function handle(delta) {
						slider1.setValueBy(-delta);
//						alert(slider1.value);
					}
		
					/** Event handler for mouse wheel event. */
					function wheel(event){
						var delta = 0;
						if (!event) /* For IE. */
							event = window.event;
						if (event.wheelDelta) { /* IE/Opera. */
							delta = event.wheelDelta/480;
							/** In Opera 9, delta differs in sign as compared to IE. */
							if (window.opera)
								delta = -delta;
						} else if (event.detail) { /** Mozilla case. */
							/** In Mozilla, sign of delta is different than in IE.
							* Also, delta is multiple of 3.
							*/
							delta = -event.detail/3;
							delta = delta / 5;
						}
				
						/** If delta is nonzero, handle it.
						* Basically, delta is now positive if wheel was scrolled up,
						* and negative, if wheel was scrolled down.
						*/
						if (delta)
						{
							delta = delta / 10; // slow it down a litte, benjamin
							handle(delta);
						}
						/** Prevent default actions caused by mouse wheel.
						* That might be ugly, but we handle scrolls somehow
						* anyway, so don't bother here..
						*/
						if (event.preventDefault)
							event.preventDefault();
						
						event.returnValue = false;
					}
		
					// mozilla
					Event.observe('content', 'DOMMouseScroll', wheel);
					
					// IE/Opera
					Event.observe('content', 'mousewheel', wheel);		
					
					
				}
			});
	}
}



function hideScrollBar() {
	if($('scrollBar')) 
	{
			Effect.Fade('scrollBar', {duration: .5});
	}
}

// scroll the element vertically based on its width and the slider maximum value
function scrollVertical(value, element, slider) {
	element.scrollTop = Math.round(value/slider.maximum*(element.scrollHeight-element.offsetHeight));
}

// scroll the element horizontally based on its width and the slider maximum value
function scrollHorizontal(value, element, slider) {
	element.scrollLeft = Math.round(value/slider.maximum*(element.scrollWidth-element.offsetWidth));
}

/*
function roller(name,path){
	this.pathData  = $(name).src.split('menu/');
	var webPath = this.pathData[0] + "menu/";
	oldsrc=$(name).src;
	resetImg = name;
	$(name).src = webPath + path + '_ro.gif';
}
*/
function roller(name,path){
	oldsrc=$(name).src;
	if(name.src.search(/_lo/) != '-1') $(name).src = name.src.gsub('_lo', '_hi');
}

function rollOut(name) {
	if(menuImgChange != 1) 
	{
		if(oldsrc.search(/_lo/) != '-1') 
		{
			$(name).src = name.src.gsub('_hi', '_lo');
			oldsrc = null;
		}
	}
	else 
	{
		menuImgChange = null;
	}
}

function hiliteMenu(img) {
//	alert(img.src);
	var children = img.parentNode.parentNode.childNodes;
	menuImgChange = 1;
	 for (var i = 0; i < children.length; i++) 
   {
   if(children[i].firstChild != null && children[i].firstChild.src) 
   {
   	if( children[i].firstChild.src != img.src )
   	{
   		children[i].firstChild.src = children[i].firstChild.src.gsub('_hi', '_lo')
   		
   	} else {
   		children[i].firstChild.src = children[i].firstChild.src.gsub('_lo', '_hi')
   		//oldsrc = children[i].firstChild.src;
   	}
   }
   };
}

function loading() {
	if($('loading').style.display == 'none' || $('loading').style.display == '') $('loading').style.display = 'block';
	else $('loading').style.display = 'none';
}


function goHome(newUrl) {
	Effect.BlindLeft('mainMenu', 
	{ 
		duration: contentBlindOutSpeed, 
		afterFinish: function() 
		{
			new Ajax.Updater('mainMenu', newUrl + '&homemenu=1', {
				onSuccess: function() 
				{ 							
						Effect.BlindRight('mainMenu', { duration: contentBlindInSpeed });
				}
			});

			backImage = "img/startseite.jpg";
			$('container').style.backgroundImage = 'url(' + backImage + ')';
		}
	});
}

function leaveHome(menuFile,img) {
//	alert('menuFile' + menuFile + ' img: ' + img);
//	alert(img.firstChild);
	Effect.BlindLeft('mainMenu', 
	{ 
		duration: contentBlindOutSpeed, 
		afterFinish: function() 
		{
			backImage = "img/bg.jpg";
			$('container').style.backgroundImage = 'url(' + backImage + ')';
			this.urlData  = menuFile.split('?');
			this.params = this.urlData[1].toQueryParams();
			mainmenuFile = this.urlData[0] + '?ajax=1&homemenu=2&artikel_id=' + this.params['article_id'];
			// if(this.params['article_id'] == startartikel) 

			new Ajax.Updater('mainMenu', mainmenuFile, {
				onSuccess: function() 
				{ 								
					
					Effect.BlindRight('mainMenu', 
						{ 
						duration: contentBlindInSpeed,
						afterFinish: function() 
						{ 
								var children = $('mainMenu').childNodes;
								img.src = img.src.gsub('_home', '')
								//alert(img.firstChild.src);
									 for (var i = 0; i < children.length; i++) 
									 {
										 if(children[i].firstChild != null && children[i].firstChild.src) 
										 {
										 	// alert(children[i].firstChild.src);
										 	
											children[i].firstChild.src = children[i].firstChild.src.gsub('_hi', '_lo');
											if( children[i].firstChild.src == img.src )
												children[i].firstChild.src = children[i].firstChild.src.gsub('_lo', '_hi');
										 }
									 };
						}
						});
					menuChange(menuFile);
				}
			});

		}
	});
}


	function scrollElem(elem,speed) 
	{
		//alert(slider1);
		$(elem).speed = speed;
		$(elem).scrollTimeout = setInterval(
			function ()
			{
				nuSpeed = speed / 500;
				slider1.setValueBy(nuSpeed);
			}, 50
		);
	}

	
	function scrollStop(elem)
	{
		clearInterval($(elem).scrollTimeout);
	}

	function scrollChangeSpeed(elem) {
		$(elem).speed = $(elem).speed * 1.5;
	}

	function resetScroll() 
	{
//		alert('resetScroll');
		lastScrollTop = $('content').scrollTop;
		$('content').scrollTop = 0;
	}

	function restoreScrollTop() 
	{
//		alert(lastScrollTop);
		$('content').scrollTop = lastScrollTop + 380;
	}


