;(function($) {
	jQuery.scrollLoad = {
		init: function(settings){
			settings		= typeof(settings)=='undefined'				? {}						: settings;
			this.container	= typeof(settings.container)=='undefined'	? $('#content_scroll')		: settings.container;
			this.nav		= typeof(settings.nav)=='undefined'			? $('#nav')					: settings.nav;
			this.nav2		= typeof(settings.nav2)=='undefined'		? $('#nav2')				: settings.nav2;
			this.navObj		= typeof(settings.navObj)=='undefined'		? []						: settings.navObj;
			this.navActive	= typeof(settings.navActive)=='undefined'	? 0							: settings.navActive;
			this.imgLoading	= typeof(settings.imgLoading)=='undefined'	? $('<img />').attr({src:'/fileadmin/templates/images/ajax-loader.gif', alt:'', width:'128', height:'8'}) : settings.imgLoading;
			this.debug		= typeof(settings.debug)=='undefined'		? false						: settings.debug;
			this.elSource	= $('<li />');
			this.elSource.addClass('unloaded');
			
			this.IsLoadingPage = false;
			this.ClickedID = 0;
			
			var tHref = window.location.href;
			this.lang = tHref.indexOf('/en/')>=0 ? 2 : ( tHref.indexOf('L=2')>=0?2:1 );
			
			$this = this;
			
			if( this.nav2.length<=0 ){
				$('#nav').after('<ul id="nav2" />');
				this.nav2 = $('#nav2');
			}
			
			var tBefore = true;
			var tNavActive = $this.navActive;
			
			if( this.debug ){ console.log('init pages:'); }
			$.each($this.navObj, function(i, obj){
				if( obj.id==tNavActive ){
					tBefore = false;
				}else{
					var $tPage = $this.elSource.clone();
					$tPage.attr({id: 'page_' + obj.id});
					$tPage.html( obj.title );
					if( tBefore ){
						$('#page_' + tNavActive).before( $tPage );
						if( this.debug ){ console.log('add ' + obj.id + ' before ' + tNavActive); }
					}else{
						$this.container.append( $tPage );
						if( this.debug ){ console.log('add ' + obj.id + ' after ' + tNavActive); }
					}
				}
			});
			
			var $target = $this.container.find('#page_' + $this.navActive);
			$this.container.stop().scrollTo( $target, 0 );
			
			this.loadPages();
			$this.container.scroll(function(){		$this.checkVisible();			});
			
			$this.nav.find('a').click(function(){	return $this.navClick(this);	});
			$this.nav2.find('a').click(function(){	return $this.navClick(this);	});
			
		},
		loadPages: function(){
			$this = this;
			var sTop = $this.container.scrollTop();
			
			$this.nav.find('li').addClass('page_' + $this.navActive);
			$this.nav2.find('li').addClass('page_' + $this.navActive);
			
			$.each($this.navObj, function(i, obj){
				if( !obj.loaded ){
					var $el = $('#page_' + obj.id);
					var elHeightBefore = $el.height();
					
					$this.IsLoadingPage = true;
					$el.show().html( $this.imgLoading.clone() );
					var elHeightBefore = $el.height();
					
					// original (sprache als data im aufruf): var tCallUrl = obj.url;
					// mit domain und sprache an url angehängt:
					var tCallUrl = 'http://www.vitamind.ch' + obj.url + '&L=' + $this.lang;
					// ohne body & header etc: var tCallUrl = 'http://www.vitamind.ch' + obj.url + '&L=' + $this.lang + '&type=101';
					$.ajax({
						type: "GET",
						url: tCallUrl,
//						data: {L: $this.lang},
						cache: true,
						dataType: "html",
						success: function(data){
							//var $tContent = $( data );
							//if( $tContent.find('#content_scroll > li').length<=0 ){
								var tContent = '';
								tContent = data.substr( data.indexOf('<div id="top">') );
								tContent = tContent.substr(0, tContent.indexOf('<!-- content_container -->') - 1 );
								var $tContent = $( '<div>' + tContent + '</div>' );
								/**
								$el.html( '<p>Error "Content not found" while loading <a href="' + tCallUrl + '">' + tCallUrl + '</a>!</p><pre style="display:none;">' + $tContent.html() + '</pre>' );
								/**
								$el.hide();
								return false;
								/**/
							//}
							
							var tClass = '';
							if( $tContent.find('.kapitel').length>0 ){
								tClass = 'kapitel';
							}else if( $tContent.find('.blog').length>0 ){
								tClass = 'blog';
							}
							if( this.debug ){ console.log( tClass ); }
							//pageInit( $tContent, true );
							//$tContent.addClass( $tContent.find('#content_container').attr('class') );
							/*
							$tContent.find('img').lazyload({         
								placeholder: '/fileadmin/templates/images/grey.gif',
								container: $("#content_scroll") //this.container
							});
							*/
							$el.replaceWith( $tContent.find('#content_scroll > li') );
							pageInit( $('#page_' + obj.id), true );
							
							$this.container.scrollTo( $this.container.find('#page_' + $this.navActive) );
							var $tNav = $tContent.find('#nav');
							$tNav.find('a').click(function(){ return $this.navClick(this); });
							$tNav.find('li').addClass('page_' + obj.id).hide().appendTo( $this.nav );
							var $tNav2 = $tContent.find('#nav2');
							$tNav2.find('a').click(function(){ return $this.navClick(this); });
							$tNav2.find('li').addClass('page_' + obj.id).hide().appendTo( $this.nav2 );
							
							/**
							var tHead = '';
							tHead = data.substr( data.indexOf('if (version == "n3") {') + 22 );
							tHead = tHead.substr(0, tHead.indexOf('}') - 1 );
							eval(tHead);
							/**/
							/**/
							obj.haderJs = data.substr( data.indexOf('if (version == "n3") {') + 22 );
							obj.haderJs = obj.haderJs.substr(0, obj.haderJs.indexOf('}') - 1 );
							/**/
							
							obj.loaded = true;
						},
						error: function (XMLHttpRequest, textStatus, errorThrown) {
							$el.html( '<p>Error "' + textStatus + '" while loading <a href="' + tCallUrl + '">' + tCallUrl + '</a>!</p>' );
						}
					});
					
				}
			});
		},
		eval: function( js ){
			var list = js.split("\n");
			js = '';
			$.each(list, function(i, line){
				// img59_d94c_1_h=new Image(); img59_d94c_1_h.src = "typo3temp/menu/ae434fc2c5.gif"; 
				js += "if( typeof(" + ( line.substr(0, line.indexOf('=')-1) ) + ")=='undefined' ){ " + line + "}\n";
			});
			if( this.debug ){ console.log(js); }
		},
		checkVisible: function(){
			$this = this;
			$.each($this.navObj, function(i, obj){
				if( obj.loaded ){
					var $el = $('#page_' + obj.id);
					var elHeightBefore = $el.height();
					
					if( ( $el.offset().top + $el.height() - $this.container.offset().top > 0 ) && ( $el.offset().top - $this.container.offset().top - 100 < 0 ) ){
						if( typeof(obj.haderJs)!='undefined' && obj.haderJs!='' ){
							$this.eval( obj.haderJs );
							eval(obj.haderJs);
							obj.haderJs = '';
						}
						$this.nav.find('li').hide();
						$this.nav.find('li.page_' + obj.id).show();
						$this.nav2.find('li').hide();
						$this.nav2.find('li.page_' + obj.id).show();
						
					}else if( ( $el.offset().top + $el.height() - $this.container.offset().top < 0 ) && ( $el.offset().top - $this.container.offset().top - 100 > 0 ) ){
						if( typeof(obj.haderJs)!='undefined' && obj.haderJs!='' ){
							eval(obj.haderJs);
							obj.haderJs = '';
						}
						$this.nav.find('li').hide();
						$this.nav.find('li.page_' + obj.id).show();
						$this.nav2.find('li').hide();
						$this.nav2.find('li.page_' + obj.id).show();
						
					}
				}
			});
		},
		checkVisibility: function(){
			if( this.IsLoadingPage ){ return; }
			$this = this;
			
			var sTop = $this.container.scrollTop();
			
			$.each($this.navObj, function(i, obj){
				if( !obj.loaded && ( $this.ClickedID==0 || $this.ClickedID==obj.id ) ){
					var $el = $('#page_' + obj.id);
					var elHeightBefore = $el.height();
					
					if( ( $el.offset().top + $el.height() - $this.container.offset().top > 0 ) && ( $el.offset().top - $this.container.offset().top - $this.container.height() < 0 ) ){
						$this.IsLoadingPage = true;
						$el.show().html( $this.imgLoading.clone() );
						var elHeightBefore = $el.height();
						
						$.ajax({
							type: "GET",
							url: obj.url,
							data: {L: $this.lang},
							dataType: "html",
							success: function(data){
								var $tContent = $(data);
								$el.html( $tContent.find('#content_scroll li').html() ).removeClass('unloaded');
								$el.find('img').lazyload({         
									placeholder: '/fileadmin/templates/images/grey.gif',
									container: $("#content_scroll") //this.container
								});
								$this.container.scrollTop( sTop - elHeightBefore + $el.height() );
								obj.loaded = true;
								//$this.setActiveNavigation( obj.id );
								$this.nav.html( $tContent.find('#nav').html() );
								$this.nav2.html( $tContent.find('#nav2').html() );
								$this.IsLoadingPage = false;
							}
						});
						
					}else if( ( $el.offset().top + $el.height() - $this.container.offset().top < 0 ) && ( $el.offset().top - $this.container.offset().top - $this.container.height() > 0 ) ){
						$this.IsLoadingPage = true;
						$el.show().html( $this.imgLoading.clone() ).removeClass('unloaded');
						
						$.ajax({
							type: "GET",
							url: obj.url,
							data: {L: $this.lang},
							dataType: "html",
							success: function(data){
								var $tContent = $(data);
								$el.html( $tContent.find('#content_scroll li').html() );
								$el.find('img').lazyload({         
									placeholder: '/fileadmin/templates/images/grey.gif',
									container: $("#content_scroll") //this.container
								});
								obj.loaded = true;
								//$this.setActiveNavigation( obj.id );
								$this.nav.html( $tContent.find('#nav').html() );
								$this.nav2.html( $tContent.find('#nav2').html() );
								$this.IsLoadingPage = false;
							}
						});
						
					}
				}
			});
			$this.ClickedID = 0;
		},
		navClick: function( $this ){
			var $this = $($this);
			if( !$this.hasClass('active') ){
				this.ClickedID = $this.parent().attr('id');
				
				if( !this.navObj[this.ClickedID].loaded ){ return true; }
				
				if( typeof(this.ClickedID)=='undefined' || this.ClickedID=='' ){
					alert('oops, da war ein fehler..');
					var $target = $('#page_' + this.ClickedID);
					this.container.stop().scrollTo( $target, { duration:500 } );
					//return true;
				}else{
					var $target = $('#page_' + this.ClickedID);
					this.container.stop().scrollTo( $target, { duration:500 } );
				}
			}
			return false;
		}
	}
})(jQuery);
