$(document).ready(function() {
	if ($.browser.msie && $.browser.version.substr(0,1)<7) {
		$('#sidebar').css('position','absolute');
	}

	//menu items
	initiation.init();
	navigation.init();
	scroll.init();
	home.init();
	
	//disable static map
	$('#static-map').remove();
	
	//init themes
	
	$('div.slides').css('height','414px');
	$('div.slides div.slides_bg').css('background','transparent url(/assets/images/theme_background.jpg) no-repeat');
	$('div.slides div.content').css('height','414px');
	$('div.slides div.content ul').css('position','absolute');
	$('div.slides div.content ul ul').css('position','relative');
	$('div.slides div.content ul div.slide_body').css('height','338px');
	
	$('#themes .slides .content ul li.slideli').css('display','none');
	$('#themes .slides .content ul li:first').css('display','block');
	
});

var initiation = {
	init:function()
	{
		initiation.inited = new Array();
	}
}

//Navigation class
var navigation = {
	
	init: function()
	{
		navigation.items = new Array(
			new item('nav_home','home'),
			new item('nav_about','about'),
			new item('nav_aanpak','aanpak'),
			new item('nav_themes','themes'),
			//new item('nav_cases','cases'),
			new item('nav_impulsloket','impulsloket'),
			new item('nav_news','news'),
			new item('nav_dp','demonstratieprojecten'),
			new item('nav_events','events'),
			new item('nav_faq','faq'),
			new item('nav_links','links'),
			new item('nav_contact','contact')
		);
	
		//$("#nav_who").scrollTo( '#who', {duration:3000} );		
		navigation._action(navigation.items);
		
		//only on load
		navigation.set_active('#nav_home');
		
		////////console.log('navigation initiated');
	},
	
	_action: function(items)
	{
		$.each(items, function(index,item){
			//if target exists
			if($(item.target).length > 0)
			{
				$(item.id).click(function() {
					////////console.log(this+" has been clicked!");
				
					//scroll
					//- get current position
					var scrollPos = $(window).scrollTop();
					//- get offset to target
					var Offset = $(item.target).offset().top;
					
					//set current target
					navigation.current_target = item.offset;
					
					//- animate the scroll movement
					$('html,body').stop().animate({scrollTop: '+=' + ((Offset-scrollPos)+5) + 'px'}, 1000);
					
					//set this menu item to active
					//navigation.set_active(item.id);
					
					return false;
				});
			}
		});
	},
	
	set_active: function(id)
	{
		//console.log(id);
	
		$.each(navigation.items, function(index,item){
			if(item.id == id)
			{
				$(item.id).addClass('active');
			}
			else
			{
				$(item.id).removeClass('active');
			}
		});
	}
}; 

//Navigation sub
var scroll = {
	init: function()
	{
		////////console.log('scroll initiated');
		
		$(window).bind('scroll',function()
		{
			var scrollPos = $(window).scrollTop();
			////////console.log("Scroll Position: "+scrollPos);
			
			//console.log('Demonstratie-project: '+$('#demonstratieprojecten').offset().top);
			//console.log('Scrollpos: '+scrollPos);
		
			//check for ie6
			if ($.browser.msie && $.browser.version.substr(0,1)<7) {
				//alert('ie6!');
				//split top
				
				//alert('#sidebar should have top '+(scrollPos-top)+"px");
				//$('#sidebar').animate({top: '+=' + (scrollPos-top) + 'px'},250);
				//$('#sidebar').animate({top: '+=' + (0) + 'px'},250);
				$('#sidebar').stop();
				
				var top_split = $('#sidebar').css('top').split('px');
				var top = top_split[0];
				
				$('#sidebar').animate({top: '+=' + (scrollPos-top) + 'px'},250);
			}
			
			//check
			$.each(navigation.items, function(index,item){
				//update offset param first!
				item.offset = $(item.target).offset().top;
			
				//console.log('Current position: '+scrollPos+' - item offset: '+item.offset+' - current target: '+navigation.current_target);
				
				//console.log('previous entry: '+(index-1));
				
				//console.log('scrollPos: '+ scrollPos+ ' - offset: 6640');
				
				//set active menu item
				if(index != 0)
				{
					if(scrollPos >= navigation.items[index-1].offset && scrollPos < navigation.items[index].offset)
					{					
						//console.log('Between '+ navigation.items[index-1].target+' & '+navigation.items[index].target);
						
						//while animated scroll
						navigation.set_active(navigation.items[index-1].id);
						
						scroll._load_dyn(item.target);
					}
					else if(scrollPos == navigation.items[index].offset)
					{
						//bang on
						navigation.set_active(navigation.items[index].id);
						
						//load dynamicaly
						scroll._load_dyn(item.target);
					}
					else if(index == (navigation.items.length-1))
					{
						//last page
						if(scrollPos >= navigation.items[index].offset)
						{
							////////console.log('last shoudl be active and gmaps should be loaded!');							
							navigation.set_active(navigation.items[index].id);
							
							//trige dynamic load
							scroll._load_dyn(item.target);
						}
					}
				}
			});
			
			//console.log('------------- END -------------');
		});
	},
	
	_load_dyn:function(target)
	{
		switch(target){
			case '#home':
				if(initiation.inited.home != true)
				{
					home.init();
				}
		
			//news page
			case '#news':
				if(initiation.inited.news != true)
				{
					news.init();
				}
			break;
			
			//events page
			case '#events':
				if(initiation.inited.events != true)
				{
					events.init();
				}
			break;
			
			//theme's page
			case '#themes':
				//setup carousel
				////////console.log('load carousel');
				if(initiation.inited.themes != true)
				{
					themes.init();
				}
			break;
			
			//faq page
			case '#faq':
				if(initiation.inited.faq != true)
				{
					////////console.log('faq init');
					faq.init();
				}
			break;
			
			//contact page
			case '#contact':
				if(initiation.inited.gmaps != true)
				{
					gmaps.init();
					/* gmaps.active = true; */
				}

			break;
		}
	}
}

var home = {
	init:function(){
	
		if($('div.full').is(':visible'))
			{
				$('div.full').hide();
			}

	
		$('a.home_rm').click(function(){
			//get parent and meaningfull children
			var article = $(this).parent().parent().parent();
			var full = $('div.full',article);
			var excerpt = $('div.excerpt',article);
			
			//hide excerpt and show full

			if($('a.home_rm').is(':visible'))
			{
				$('a.home_rm').hide();
			}

			
			if(full.is(':hidden'))
			{
				full.slideDown("slow");
				//full.parent().animate({'padding-top': '25px','padding-left':'25px', 'padding-right':'25px', 'padding-bottom':'15px'},"slow");
				full.css('margin-bottom','18px');
			
				/*
full.slideToggle("slow",function(){
					article.addClass('expanded');
				});
*/
				
			}
			
			//disable browser reaction
			return false;
		});
		
		$('a.home_rl').click(function(){
			//get parent and meaningfull children
			var article = $(this).parent().parent().parent();
			var full = $('div.full',article);
			var excerpt = $('div.excerpt',article);
			
			//hide excerpt and show full
			if(full.is(':visible'))
			{
				full.slideUp("slow", function(){
					if($('a.home_rm').is(':hidden'))
					{
						$('a.home_rm').show();
					}
				});
				//full.parent().animate({'padding-top': '0px','padding-left':'0px', 'padding-right':'0px', 'padding-bottom':'0px'},"slow");
				full.css('margin-bottom','0px');
				
				/*
article.removeClass('expanded');
				full.slideToggle("slow");
*/
			}

			
			//disable browser reaction
			return false;
		});

	
		//set value to true
		initiation.inited.home = true;
	}
}

var faq = {
	init: function(){
		$('a.faq_link').click(function(){
			var target = $(this).attr('href'); 
		
			//scroll
			//- get current position
			var scrollPos = $(window).scrollTop();
			//- get offset to target
			var Offset = $(target).offset().top;
			
			//set current target
			//navigation.current_target = item.offset;
			
			//- animate the scroll movement
			$('html,body').animate({scrollTop: '+=' + (Offset-scrollPos-(15)) + 'px'}, 1000);
			
			//set this menu item to active
			//navigation.set_active(item.id);
			
			return false;
		});
		
		initiation.inited.faq = true;
	}
};

var news = {
	init:function(){
		//////////console.log('news initiated');
		
		$('a.news_rm').click(function(){
			//get parent and meaningfull children
			var article = $(this).parent().parent().parent();
			var full = $('div.full',article);
			var excerpt = $('div.excerpt',article);
			
			//hide excerpt and show full
			if(excerpt.is(':visible'))
			{
				excerpt.slideToggle("slow");
			}
			
			if(full.is(':hidden'))
			{
				full.slideDown("slow");
				full.parent().animate({'padding-top': '25px','padding-left':'25px', 'padding-right':'25px', 'padding-bottom':'15px'},"slow");
				full.css('margin-bottom','18px');
			
				/*
full.slideToggle("slow",function(){
					article.addClass('expanded');
				});
*/
				
			}
			
			//disable browser reaction
			return false;
		});
		
		$('a.news_rl').click(function(){
			//get parent and meaningfull children
			var article = $(this).parent().parent().parent();
			var full = $('div.full',article);
			var excerpt = $('div.excerpt',article);
			
			//scroll to top of item
			var tmp_tar = $(this).attr('href');
			
			//remove excerpt and add full to back of href
			tmp_tar = tmp_tar.substr(0,tmp_tar.length - 7);
			tmp_tar = tmp_tar + 'full';
			
			//scroll
			//- get current position
			var scrollPos = $(window).scrollTop();
			//- get offset to target
			var Offset = $(tmp_tar).offset().top;
			
			//- animate the scroll movement
			$('html,body').stop().animate({scrollTop: '+=' + ((Offset-scrollPos)-40) + 'px'}, 500);
			
			
			//hide excerpt and show full
			if(full.is(':visible'))
			{
				full.slideUp("slow");
				full.parent().animate({'padding-top': '0px','padding-left':'0px', 'padding-right':'0px', 'padding-bottom':'0px'},"slow");
				full.css('margin-bottom','0px');
				
				/*
article.removeClass('expanded');
				full.slideToggle("slow");
*/
			}
			
			if(excerpt.is(':hidden'))
			{
				excerpt.slideToggle("slow");
			}
			
			//disable browser reaction
			return false;
		});
		
		initiation.inited.news = true;
	}
}

var events = {
	init:function(){
		////////console.log('events initiated');
	
		$('a.event_rm').click(function(){
			//get parent and meaningfull children
			var article = $(this).parent().parent().parent();
			var full = $('div.full',article);
			var excerpt = $('div.excerpt',article);
			
			//hide excerpt and show full
			if(excerpt.is(':visible'))
			{
				excerpt.slideToggle();
			}
			
			if(full.is(':hidden'))
			{
				full.slideDown("slow");
				full.parent().animate({'padding-top': '25px','padding-left':'25px', 'padding-right':'25px', 'padding-bottom':'15px'},"slow");
				full.css('margin-bottom','18px');
			}
			
			//disable browser reaction
			return false;
		});
		
		$('a.event_rl').click(function(){
			//get parent and meaningfull children
			var article = $(this).parent().parent().parent();
			var full = $('div.full',article);
			var excerpt = $('div.excerpt',article);
			
			//hide excerpt and show full
			
			if(full.is(':visible'))
			{
				full.slideUp("slow");
				full.parent().animate({'padding-top': '0px','padding-left':'0px', 'padding-right':'0px', 'padding-bottom':'0px'},"slow");
				full.css('margin-bottom','0px');
			}
			
			
			if(excerpt.is(':hidden'))
			{
				excerpt.slideToggle();
			}
			
			
			//alert('close sliding!');
			
			//disable browser reaction
			return false;
		});
		
		initiation.inited.events = true;
	}
}

var themes = {
	init:function()
	{
		////////console.log('themes initiated');
	
		$('ul#theme_categories').children().each(function(){
			var tab = $(this);
			
			//CAT CLICK
			$('a.cat',tab).click(function(){
/* 				//console.log('PARENT CAT CLICKED!'); */
				var parent_href = $(this).attr('href');
				var parent_id = parent_href.substring(1);
				
				slideshow.current_par_cat = parent_id;
				////////console.log('tab with parent_id: ' + parent_id + ' clicked');
			
				//remove active class on all children
				$('ul#theme_categories').children().each(function(){
					$(this).removeClass('active');
				});
				
				//add active to the new clicked item
				$(this).parent().parent().addClass('active');
				
				//get right slides for this parent_id
				$('.slides div.content').children().each(function(){
					if($(this).css('display') != 'none')
					{
						$(this).hide();
					}
				});
				
				if($('.slides div.content ul.theme_parent_cat_'+parent_id).is(':hidden')){
					$('.slides div.content ul.theme_parent_cat_'+parent_id).show();
				}
				 
				//get right explanation for this parent_id
				$('.explanation').children().each(function(){
					if($(this).is(':visible'))
					{
						$(this).hide();
					}
				});
				
				if($('.explanation ul.theme_parent_cat_'+parent_id).is(':hidden')){
					$('.explanation ul.theme_parent_cat_'+parent_id).show();
				}
				
				//reset slideshow settings!
				slideshow.current_subc_num = 1;
				slideshow.current_slide_num = 1;
				
				
				//console.log(slideshow.current_sub_cat);
				
				//slideshow.set_sub_cat($('ul#theme_categories li#li_parent_'+parent_id+' ul.sub_cats li ol:first li:first a').attr('sub_cat'));
				slideshow.set_sub_cat($('ul#theme_categories li#li_parent_'+parent_id+' ul.sub_cats li ol:first li:first a').attr('href').substring(3,5));
				
				//console.log(slideshow.current_sub_cat);
				
				$('ul.sub_cats ol', tab).children().each(function(){
					$(this).removeClass('active');
				});
				
				//set first sub-cat to active
				////console.log('ul#theme_categories li#li_parent_'+parent_id+' ul.sub_cats li ol:first li:first a');
				$('ul#theme_categories li#li_parent_'+parent_id+' ul.sub_cats li ol:first li:first a').parent().addClass('active');
				
				//hide alle slides and show the first
				$('.slides div.content ul.theme_parent_cat_'+parent_id).children().each(function(){
					if($(this).css('display') != 'none')
					{
						$(this).hide();
					}
					
					//hide childrens' children
					$('ul',$(this)).children('li.slide').each(function(){					
						if($(this).css('display') != 'none')
						{
							$(this).hide();
						}
					});
				});
				
				////console.log('.slides div.content ul.theme_parent_cat_'+parent_id+' li#theme_slides_cat_'+slideshow.current_sub_cat);
				
				if($('.slides div.content ul.theme_parent_cat_'+parent_id+' li#theme_slides_cat_'+slideshow.current_sub_cat).is(':hidden')){
					//show the subcat
					$('.slides div.content ul.theme_parent_cat_'+parent_id+' li#theme_slides_cat_'+slideshow.current_sub_cat).show();
					
					//show slide 1
					$('.slides div.content ul.theme_parent_cat_'+parent_id+' li#theme_slides_cat_'+slideshow.current_sub_cat+' li#theme_slide_cat_'+slideshow.current_sub_cat+'_1').show();
					
					//hide/show controls
					var current_slides_par = $('div.slides div.content ul.theme_parent_cat_'+slideshow.current_par_cat);
					var current_slides_obj = $('div.slides div.content ul.theme_parent_cat_'+slideshow.current_sub_cat+' li#theme_slides_cat_'+slideshow.current_sub_cat+' ul');
					
					var current_sub_cat = 1;
					var counter_is_set = false;
					
					//count which sub_cat where in
					$('div.slideshow div.tabs ul#theme_categories li#li_parent_'+parent_id+' ul.sub_cats li.li_sub_cat').each(function(){
						////////console.log('counter: '+current_sub_cat+' - this.id:'+$('a',this).attr('id')+' target_cat:'+'cat_'+sub_cat);
					
						if($('a',this).attr('id') != 'cat_'+slideshow.current_sub_cat && counter_is_set == false)
						{
							current_sub_cat++;
						}
						else
						{
							counter_is_set = true;
						}
					});
				}
				
				//get right explanation for this parent_id
				$('.explanation ul.theme_parent_cat_'+parent_id).children().each(function(){
					//////console.log($(this));
				
					if($(this).is(':visible'))
					{
						$(this).hide();
					}
					
					$('ul',$(this)).children('li.expl').each(function(){
						$(this).hide();
					});
				});
				
				if($('.explanation ul.theme_parent_cat_'+parent_id+' li#theme_slides_cat_exp_'+slideshow.current_sub_cat).css('display') == 'none'){
					
					$('.explanation ul.theme_parent_cat_'+parent_id+' li#theme_slides_cat_exp_'+slideshow.current_sub_cat).show()
					
					//show first slide
					$('.explanation ul.theme_parent_cat_'+parent_id+' li#theme_slides_cat_exp_'+slideshow.current_sub_cat+' ul li#theme_expl_cat_'+slideshow.current_sub_cat+'_1').show();
				}
				
				slideshow.check_controls();
				
				//disable browser reaction
				return false;
			});
			
			// SUB CAT CLICK
			$('a.sub_cat',tab).click(function(){
				//GET PARENT AND CHILD ID
				//var parent_id = $(this).attr('parent_cat');
				var parent_href = $(this).attr('href');
				var parent_id = parent_href.substring(1,3);
				//var sub_cat = $(this).attr('sub_cat');
				var sub_cat = parent_href.substring(3,5);
				
				////////console.log('sub_tab with sub_cat_id:'+ sub_cat +' clicked');
				slideshow.current_sub_cat = sub_cat;
				
				//remove active class on all children		
				$('ul.sub_cats ol', tab).children().each(function(){
					$(this).removeClass('active');
				});
				
				//add active to the new clicked item
				$(this).parent().addClass('active');
				
				//hide all slides
				$('.slides div.content ul.theme_parent_cat_'+parent_id).children().each(function(){
					if($(this).css('display') != 'none')
					{
						$(this).hide();
					}
					
					//hide childrens' children
					$('ul',$(this)).children('li.slide').each(function(){					
						if($(this).css('display') != 'none')
						{
							$(this).hide();
						}
					});
				});
				
				//show the selected subcat
				if($('.slides div.content ul.theme_parent_cat_'+parent_id+' li#theme_slides_cat_'+sub_cat).is(':hidden')){
					//show the subcat
					$('.slides div.content ul.theme_parent_cat_'+parent_id+' li#theme_slides_cat_'+sub_cat).show();
					
					//show slide 1
					$('.slides div.content ul.theme_parent_cat_'+parent_id+' li#theme_slides_cat_'+sub_cat+' li#theme_slide_cat_'+sub_cat+'_1').show();
					
					//hide/show controls
					var current_slides_par = $('div.slides div.content ul.theme_parent_cat_'+slideshow.current_par_cat);
					var current_slides_obj = $('div.slides div.content ul.theme_parent_cat_'+slideshow.current_sub_cat+' li#theme_slides_cat_'+slideshow.current_sub_cat+' ul');
					
					var current_sub_cat = 1;
					var counter_is_set = false;
					
					//count which sub_cat where in
					$('div.slideshow div.tabs ul#theme_categories li#li_parent_'+parent_id+' ul.sub_cats li.li_sub_cat').each(function(){
						////////console.log('counter: '+current_sub_cat+' - this.id:'+$('a',this).attr('id')+' target_cat:'+'cat_'+sub_cat);
					
						if($('a',this).attr('id') != 'cat_'+sub_cat && counter_is_set == false)
						{
							current_sub_cat++;
						}
						else
						{
							counter_is_set = true;
						}
					});
					
					//set current subcat_num
					slideshow.current_subc_num = current_sub_cat;
					
					slideshow.check_controls();

				}
				 
				//get right explanation for this parent_id
				$('.explanation ul.theme_parent_cat_'+parent_id).children().each(function(){
					//////console.log($(this));
				
					if($(this).is(':visible'))
					{
						$(this).hide();
					}
					
					$('ul',$(this)).children('li.expl').each(function(){
						$(this).hide();
					});
				});
				
				//if(subct is hidden)
				if($('.explanation ul.theme_parent_cat_'+parent_id+' li#theme_slides_cat_exp_'+sub_cat).css('display') == 'none'){
					
					$('.explanation ul.theme_parent_cat_'+parent_id+' li#theme_slides_cat_exp_'+sub_cat).show()
					
					//show first slide
					$('.explanation ul.theme_parent_cat_'+parent_id+' li#theme_slides_cat_exp_'+sub_cat+' ul li#theme_expl_cat_'+sub_cat+'_1').show();
				}
				
				//disable browser reaction
				return false;
			});
		});
		
		//enable carousel
		carousel.init();
		
		//enable slideshow
		slideshow.init();
		
		initiation.inited.themes = true;
	}
}

var slideshow = {
	init: function(){
		////console.log('init slideshow!');
	
		/*
		 * GENERAL SETTINGS 
		 * for slideshow
		 */
		 	slideshow.debug = true;
			slideshow.current_par_cat = -1;
			slideshow.current_sub_cat = -1;
			slideshow.current_subc_num = 1;
			slideshow.current_slide_num = 1;
		
			slideshow.btn_next = $('div.slides a.slide.scroll.next');
			slideshow.btn_prev = $('div.slides a.slide.scroll.prev');
			
			slideshow.current_par_cat = $('ul#theme_categories li.first a').attr('parent_cat');
			slideshow.current_sub_cat = $('ul#theme_categories li.first ul.sub_cats li ol:first li.active a').attr('sub_cat');
			
			////console.log('parent_cat = '+slideshow.current_par_cat);
			////console.log('sub_cat = '+slideshow.current_sub_cat);
		/*
		 * ############################################################# 
		 */
		
		/*
		 * INIT FUNCTION 
		 */
			//get parent id of first cat
			slideshow.current_par_cat = $('ul#theme_categories li.first a').attr('href').substring(1,3);
			slideshow.current_sub_cat = $('ul#theme_categories li.first ul.sub_cats li ol:first li.active a').attr('href').substring(3,5);
			
			//show/hide controls
			slideshow.check_controls();
		/*
		 * ############################################################# 
		 */
	
		//next button
		$(slideshow.btn_next).click(function(){
			//console.log('1. subcat = '+slideshow.current_sub_cat);
			//check if button should be active
			if($(this).hasClass('active'))
			{
				/* DEBUG */ //console.log('next! ################################'); /* #### */
				
				/* PROPERTIES */
					slideshow.current_slides_par = $('div.slides div.content ul.theme_parent_cat_'+slideshow.current_par_cat);
					slideshow.current_slides_obj = $('div.slides div.content ul.theme_parent_cat_'+slideshow.current_par_cat+' li#theme_slides_cat_'+slideshow.current_sub_cat+' ul');
				/* ############################ */
				
				/* HIDE CURRENT */
					//hide current slide
					$('li#theme_slide_cat_'+slideshow.current_sub_cat+'_'+slideshow.current_slide_num , slideshow.current_slides_obj).hide();
					
					//hide current explanation
					$('li#theme_expl_cat_'+slideshow.current_sub_cat+'_'+slideshow.current_slide_num).hide();
				/* ############################ */
				
				
				
				/* CHECK WHICH ONE SHOULD BE THE NEXT SLIDE */
					//check if there are more slides in this category
					if($(slideshow.current_slides_obj).children('li.slide').size() > slideshow.current_slide_num)
					{
						//increment current_slide_num
						slideshow.current_slide_num ++;
					}
					else if($(slideshow.current_slides_par).children('li').size() > slideshow.current_subc_num)
					{
						//increment sub_cat_num
						slideshow.current_subc_num++;
						
						//calculate collumn number
						if(slideshow.current_subc_num > 2)
						{
							var collumn = Math.round(slideshow.current_subc_num/2);
							var child_num = slideshow.current_subc_num - ((collumn-1)*2);
						}
						else
						{
							var collumn = 1;
							var child_num = slideshow.current_subc_num;
						}
						
						//get id of next subcat
						slideshow.current_sub_cat = $('ul#theme_categories li#li_parent_'+slideshow.current_par_cat+' ul.sub_cats li ol:nth-child('+collumn+') li.li_sub_cat:nth-child('+child_num+') a').attr('href').substring(3,5);
					
						//set new current_slides_obj
						slideshow.current_slides_obj = $('div.slides div.content ul.theme_parent_cat_'+slideshow.current_par_cat+' li#theme_slides_cat_'+slideshow.current_sub_cat+' ul');
						
						/* SET ACTIVE CAT IN NAVIGATION */
							if(slideshow.current_subc_num > 6 && (slideshow.current_subc_num%2) == 1)
							{
								carousel.slide_right(slideshow.current_par_cat);
								////console.log('slide to right navigation!');
							}
							
							//set all items in-active
							//remove active class on all children
							var i = 1;
							
							$('ul#theme_categories li#li_parent_'+slideshow.current_par_cat+' ul.sub_cats ol').children().each(function(){
								//if current number
								if(i == slideshow.current_subc_num)
								{
									//add class
									$(this).addClass('active');
									
									////console.log(($(this).parent().position().left-35) + ' + ' +$(this).parent().parent().parent().position().left);
									//check if sub-cat is in the picture
									var tmp_pos = ($(this).parent().position().left-35) + $(this).parent().parent().parent().position().left;
									////console.log(tmp_pos + '> 398');
									
									//check if sub-cat is in the picture
									if(tmp_pos < 0){
										
										var slide_x_times = ((tmp_pos*-1)/carousel.item_witdh);
										
										////console.log('shoud slide '+slide_x_times+' times');
										
										for(var x=0; x<slide_x_times; x++){
											carousel.slide_left(slideshow.current_par_cat);
										}
									}
								}
								else
								{
									//remove class
									$(this).removeClass('active');
								}
								
								//increment
								i++;
							});
							
							//add active to the new clicked item
							$('li#theme_slides_cat_'+slideshow.current_sub_cat).parent().addClass('active');
						/* ############################ */
						
						/* SHOW SUB CATS */
							//slides
							$('div.slides div.content ul.theme_parent_cat_'+slideshow.current_par_cat+' li#theme_slides_cat_'+slideshow.current_sub_cat).fadeIn('slow');
						
							//explanations
							$('div.explanation ul.theme_parent_cat_'+slideshow.current_par_cat+' li#theme_slides_cat_exp_'+slideshow.current_sub_cat).fadeIn('slow');
						/* ############################ */
					
						//reset current_slide_num
						slideshow.current_slide_num = 1;
					}
				/* ############################ */
				
				////console.log('3. subcat = '+slideshow.current_sub_cat);
				
				/* SHOW NEW SLIDE */							
					//slide
					$('li#theme_slide_cat_'+slideshow.current_sub_cat+'_'+slideshow.current_slide_num , slideshow.current_slides_obj).fadeIn('slow');
					
					//explanation
					$('li#theme_expl_cat_'+slideshow.current_sub_cat+'_'+slideshow.current_slide_num).fadeIn('slow');
				/* ############################ */
				
				/* DEBUG */ //slideshow.fn_debug(); /* #### */			
				/* DEBUG */ //console.log('End next! ################################'); /* #### */
			}
			
			/* CHECK THE CONTROLS */
			slideshow.check_controls();
			/* ############################ */
			
			return false;
		});
		
		//previous button
		$(slideshow.btn_prev).click(function(){
			
			//check if button should be active
			if($(this).hasClass('active'))
			{
				/* DEBUG */ ////console.log('previous! ################################'); /* #### */
				
				/* PROPERTIES */
					slideshow.current_slides_par = $('div.slides div.content ul.theme_parent_cat_'+slideshow.current_par_cat);
					slideshow.current_slides_obj = $('div.slides div.content ul.theme_parent_cat_'+slideshow.current_par_cat+' li#theme_slides_cat_'+slideshow.current_sub_cat+' ul');
				/* ############################ */
				
				/* HIDE CURRENT */
					//hide current slide
					$('li#theme_slide_cat_'+slideshow.current_sub_cat+'_'+slideshow.current_slide_num , slideshow.current_slides_obj).hide();
					
					//hide current explanation
					$('li#theme_expl_cat_'+slideshow.current_sub_cat+'_'+slideshow.current_slide_num).hide();
				/* ############################ */
				
				/* CHECK WHICH ONE SHOULD BE THE NEXT SLIDE */
					//check if there are more slides in this category
					if(slideshow.current_slide_num > 1)
					{
						//increment current_slide_num
						slideshow.current_slide_num --;
					}
					else if(slideshow.current_subc_num > 1)
					{
						//increment sub_cat_num
						slideshow.current_subc_num--;
						
						//calculate collumn number
						if(slideshow.current_subc_num > 2)
						{
							var collumn = Math.round(slideshow.current_subc_num/2);
							var child_num = slideshow.current_subc_num - ((collumn-1)*2);
						}
						else
						{
							var collumn = 1;
							var child_num = slideshow.current_subc_num;
						}
						
						//get id of next subcat
						slideshow.current_sub_cat = $('ul#theme_categories li#li_parent_'+slideshow.current_par_cat+' ul.sub_cats li ol:nth-child('+collumn+') li.li_sub_cat:nth-child('+child_num+') a').attr('href').substring(3,5);
					
						//set new current_slides_obj
						slideshow.current_slides_obj = $('div.slides div.content ul.theme_parent_cat_'+slideshow.current_par_cat+' li#theme_slides_cat_'+slideshow.current_sub_cat+' ul');
						
						/* SET ACTIVE CAT IN NAVIGATION */
							if(slideshow.current_subc_num%2 == 0)
							{
								carousel.slide_left(slideshow.current_par_cat);
							}
							
							////console.log('Set sub-cat to active: ');
							
							//set all items in-active
							//remove active class on all children
							var i = 1;
							
							$('ul#theme_categories li#li_parent_'+slideshow.current_par_cat+' ul.sub_cats ol').children().each(function(){
								//if current number
								if(i == slideshow.current_subc_num)
								{
									//add class
									$(this).addClass('active');
									
									//check if sub-cat is in the picture
									var tmp_pos = ($(this).parent().position().left-35) + $(this).parent().parent().parent().position().left;
									
									if(tmp_pos > ((carousel.page-1)*carousel.item_witdh)){
										
										var slide_x_times = ((tmp_pos-((carousel.page-1)*carousel.item_witdh))/carousel.item_witdh);
										
										////console.log('shoud slide '+slide_x_times+' times');
										for(var x=0; x<slide_x_times; x++){
											carousel.slide_right(slideshow.current_par_cat);
										}
									}
								}
								else
								{
									//remove class
									$(this).removeClass('active');
								}
								
								//increment
								i++;
							});
							
							//add active to the new clicked item
							$('li#theme_slides_cat_'+slideshow.current_sub_cat).parent().addClass('active');
						/* ############################ */
						
						/* SHOW SUB CATS */
							//slides
							$('div.slides div.content ul.theme_parent_cat_'+slideshow.current_par_cat+' li#theme_slides_cat_'+slideshow.current_sub_cat).fadeIn('slow');
						
							//explanations
							$('div.explanation ul.theme_parent_cat_'+slideshow.current_par_cat+' li#theme_slides_cat_exp_'+slideshow.current_sub_cat).fadeIn('slow');
						/* ############################ */
					
						//reset current_slide_num
						slideshow.current_slide_num = $(slideshow.current_slides_obj).children('li.slide').size();
					}
				/* ############################ */
				
				/* SHOW NEW SLIDE */							
					//slide
					$('li#theme_slide_cat_'+slideshow.current_sub_cat+'_'+slideshow.current_slide_num , slideshow.current_slides_obj).fadeIn('slow');
					
					//explanation
					$('li#theme_expl_cat_'+slideshow.current_sub_cat+'_'+slideshow.current_slide_num).fadeIn('slow');
				/* ############################ */
				
				/* DEBUG */ slideshow.fn_debug(); /* #### */
				
				/* DEBUG */ ////console.log('End previous! ################################'); /* #### */
			}
			
			/* CHECK THE CONTROLS */
			slideshow.check_controls();
			/* ############################ */
			
			//DISABLE DEFAULT BEHAVIOUR
			return false;
		});
		
		//
	},
	
	fn_debug:function(){
		if(slideshow.debug == true)
		{
			//console.log(' ----------------------- DEBUG ----------------------- ');
			
			//console.log('slideshow.current_par_cat = '+slideshow.current_par_cat);
			//console.log('slideshow.current_sub_cat = '+slideshow.current_sub_cat);
			//console.log('slideshow.current_subc_num = '+slideshow.current_subc_num);
			//console.log('slideshow.current_slide_num = '+slideshow.current_slide_num);
		
			//console.log('slideshow.btn_next = '+slideshow.btn_next);
			//console.log('slideshow.btn_prev = '+slideshow.btn_prev);
			
			//console.log(' -------------------- END OF DEBUG ------------------- ');
		}
	},
	
	check_controls:function(){
		////////console.log('check for functions');
		
		//get items
		var current_slides_par = $('div.slides div.content ul.theme_parent_cat_'+slideshow.current_par_cat);
		var current_slides_obj = $('div.slides div.content ul.theme_parent_cat_'+slideshow.current_sub_cat+' li#theme_slides_cat_'+slideshow.current_sub_cat+' ul');
		
		if($(current_slides_par).children('li').size() > slideshow.current_subc_num || $(current_slides_obj).children('li.slide').size() > slideshow.current_slide_num){
			if($(slideshow.btn_next).hasClass('inactive')){
				$(slideshow.btn_next).removeClass('inactive');
				$(slideshow.btn_next).addClass('active');
			}
		}
		else
		{
			if($(slideshow.btn_next).hasClass('active')){
				$(slideshow.btn_next).removeClass('active');
				$(slideshow.btn_next).addClass('inactive');
			}
		}
		
		if(slideshow.current_subc_num > 1 || slideshow.current_slide_num > 1)
		{
			if($(slideshow.btn_prev).hasClass('inactive')){
				$(slideshow.btn_prev).removeClass('inactive');
				$(slideshow.btn_prev).addClass('active');
			}
		}
		else
		{
			if($(slideshow.btn_prev).hasClass('active')){
				$(slideshow.btn_prev).removeClass('active');
				$(slideshow.btn_prev).addClass('inactive');
			}
		}
	},
	
	set_sub_cat:function(sub_cat_id)
	{
		slideshow.current_sub_cat = sub_cat_id;
	}
}

var carousel = {
	init: function()
	{
		////////console.log('carousel initiated');
	
		carousel.min = new Array();
		carousel.max = new Array();
		carousel.page = 3;
		carousel.item_witdh = 199;
		var prev_clicked = false;
		var next_clicked = false;
		
		$('ul#theme_categories').children().each(function(){
			//get parent cat
			var par_cat = $(this);
			var sub_cats = $('ul.sub_cats',$(this));
			
			//count children ol
			if($('li ol',sub_cats).children().size() > (carousel.page*2))
			{
				$('a.sub.scroll.next.inactive',$(this)).removeClass('inactive').addClass('active');
				
				////////console.log('enable next button!');
			}
			
			//get buttons
			$('a.sub.scroll.prev',$(this)).click(function(){
				if(prev_clicked == false){
					//disable button action
					prev_clicked = true;
					
					if($(this).hasClass('active'))
					{	
						//click next action
						$(sub_cats).animate({
							"left": "+="+carousel.item_witdh+"px"
							},"slow","linear", 
							function(){
								//check if this button should be disabled
								if($(sub_cats).position().left >= 0)
								{
									////////console.log("disable previous button");
									$('a.sub.scroll.prev',$(this).parent()).removeClass('active').addClass('inactive');
								}
								
								//enable the next button
								$('a.sub.scroll.next.inactive',$(this).parent()).removeClass('inactive').addClass('active');
								////////console.log('enable next button!');
								
								//reactive button
								prev_clicked = false;
								next_clicked = false;
							}
						);
					}
				}
				
				//click previous action
				return false;
			});
			
			$('a.sub.scroll.next',$(this)).click(function(){
				if(next_clicked == false){
					//disable button action
					next_clicked = true;
					
					if($(this).hasClass('active'))
					{
						//click next action
						$(sub_cats).animate({
							"left": "-="+carousel.item_witdh+"px"
							},"slow","linear", 
							function(){
								//check if this button should be disabled
								var min = (carousel.page*carousel.item_witdh)-(Math.round(($('li ol',sub_cats).children().size()/2))*carousel.item_witdh);
								
								if($(sub_cats).position().left <= min)
								{
									////////console.log("disable next button");
									$('a.sub.scroll.next',$(this).parent()).removeClass('active').addClass('inactive');
								}
	
								//enable the prev button
								$('a.sub.scroll.prev.inactive',$(this).parent()).removeClass('inactive').addClass('active');
								////////console.log('enable previous button!');
								
								//reactive button
								next_clicked = false;
								prev_clicked = false;
							}
						);
					}
				}
				
				//prevent click action
				return false;
			});
			
		});
	},
	
	slide_right:function(parent_id)
	{
		var sub_cats = $('ul.sub_cats',$('li#li_parent_'+parent_id));
		
		////console.log('position-left: '+$(sub_cats).position().left);
	
		if($(sub_cats).position().left <= 0)
		{		
			if($('li ol',sub_cats).children().size() > (carousel.page*2) && $(sub_cats).position().left >= (($('li ol',sub_cats).children().size()/2)-(carousel.page)-1)*carousel.item_witdh*-1)
			{
				////console.log('SLIDE!');
			
				//click next action
				$(sub_cats).animate({
					"left": "-="+carousel.item_witdh+"px"
					},"slow","linear", 
					function(){
						//check if this button should be disabled
						var min = (carousel.page*carousel.item_witdh)-(Math.round(($('li ol',sub_cats).children().size()/2))*carousel.item_witdh);
						
						if($(sub_cats).position().left <= min)
						{
							////////console.log("disable next button");
							$('a.sub.scroll.next',$(this).parent()).removeClass('active').addClass('inactive');
						}
		
						
						//enable the prev button
						$('a.sub.scroll.prev.inactive',$(this).parent()).removeClass('inactive').addClass('active');
						////////console.log('enable previous button!');
					}
				);
			}
		}
	},
	
	slide_left:function(parent_id)
	{
		//////console.log('li#li_parent_'+parent_id);
	
		var sub_cats = $('ul.sub_cats',$('li#li_parent_'+parent_id));
		
		////console.log('position-left: '+$(sub_cats).position().left);
	
		if($(sub_cats).position().left < 0)
		{
			if($('li ol',sub_cats).children().size() > (carousel.page*2))
			{
				////console.log('SLIDE!');
			
				//click next action
				$(sub_cats).animate({
					"left": "+="+carousel.item_witdh+"px"
					},"slow","linear", 
					function(){
						//check if this button should be disabled
						if($(sub_cats).position().left >= 0)
						{
							////////console.log("disable previous button");
							$('a.sub.scroll.prev',$(this).parent()).removeClass('active').addClass('inactive');
						}
	
						
						//enable the next button
						$('a.sub.scroll.next.inactive',$(this).parent()).removeClass('inactive').addClass('active');
						////////console.log('enable next button!');
					}
				);
			}
		}
	}
}

//item class
function item(id, target)
{
	this.id = '#'+id;
	this.target = '#'+target;
	this.offset = $(this.target).offset().top;
}

//Google Maps Api Class
var gmaps = {
	init: function()
	{	
		////////console.log('gmaps initiated');
	
		////////console.log('trying to load gmap!');
	
		gmaps.geo = new google.maps.Geocoder();	
			
		//Set location
		var latlng = new google.maps.LatLng(50.8520605, 4.3566842);
		
		//set options
		var myOptions = {
			zoom: 16,
			center: latlng,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		};
		
		//set map to div
		gmaps.map = new google.maps.Map(document.getElementById("gmap"), myOptions);
		
		//set marker
		gmaps._set_marker();
		
		initiation.inited.gmaps = true;
	},
	
	_set_marker: function()
	{
		if(gmaps.geo)
		{
			var address_1 = $('#address_1 .street_nr').text()+','+$('#address_1 .zip_city').text();
			
			//set marker for first address
			var address_content_1 = "<div class='gmap_marker'><h5>"+$('#id="address_1_title"').text()+"</h5><p>"+$('#address_1 .street_nr').text()+"<br/>"+$('#address_1 .zip_city').text()+"<br/><strong>Tel.:</strong> "+$('#address_1 .tel').text()+"<br/><a href='mailto:"+$('#address_1 .mail span').text()+"'>"+$('#address_1 .mail span').text()+"</a></p></div>";
			
			gmaps.infowindow_1 = new google.maps.InfoWindow({
				content: address_content_1
			});
			
			gmaps.geo.geocode({'address': address_1}, function(results,status)
			{			
				if (status == google.maps.GeocoderStatus.OK) {				
					gmaps.map.setCenter(results[0].geometry.location);
					
					gmaps.marker_1 = new google.maps.Marker({
						map: gmaps.map, 
						position: results[0].geometry.location,
						title:"<h5>"+$('#address_1_title')+"</h5>"
					});
					
					google.maps.event.addListener(gmaps.marker_1, 'click', function() {
						gmaps.infowindow_1.open(gmaps.map,gmaps.marker_1);
					});
				} else {
					////////console.log("Geocoding was unsuccesfull : " + status);
				}
	
			});
			
			gmaps._geo_code(address_1, gmaps.infowindow_1);
			
			if($('#address_2 .street_nr').text().length > 0)
			{
				var address_2 = $('#address_2 .street_nr').text()+','+$('#address_2 .zip_city').text();
				
				//set marker for second address
				var address_content_2 = "<div class='gmap_marker'><h5>"+$('#address_2_title').text()+"</h5><p>"+$('#address_2 .street_nr').text()+"<br/>"+$('#address_2 .zip_city').text()+"<br/><strong>Tel.:</strong> "+$('#address_2 .tel').text()+"<br/><a href='mailto:"+$('#address_2 .mail span').text()+"'>"+$('#address_2 .mail span').text()+"</a></p></div>";
				
				gmaps.infowindow_2 = new google.maps.InfoWindow({
					content: address_content_2
				});
				
				gmaps.geo.geocode({'address': address_2}, function(results,status)
				{			
					if (status == google.maps.GeocoderStatus.OK) {				
						gmaps.map.setCenter(results[0].geometry.location);
						
						gmaps.marker_2 = new google.maps.Marker({
							map: gmaps.map, 
							position: results[0].geometry.location,
							title:"<h5>"+$('#address_2_title')+"</h5>"
						});
						
						google.maps.event.addListener(gmaps.marker_2, 'click', function() {
							gmaps.infowindow_2.open(gmaps.map,gmaps.marker_2);
						});
					} else {
						////////console.log("Geocoding was unsuccesfull : " + status);
					}
		
				});
			}
			
			if($('#address_3 .street_nr').text().length > 0)
			{
				var address_3 = $('#address_3 .street_nr').text()+','+$('#address_3 .zip_city').text();
				
				//set marker for third address
				var address_content_3 = "<div class='gmap_marker'><h5>"+$('#address_3_title').text()+"</h5><p>"+$('#address_3 .street_nr').text()+"<br/>"+$('#address_3 .zip_city').text()+"<br/><strong>Tel.:</strong> "+$('#address_3 .tel').text()+"<br/><a href='mailto:"+$('#address_3 .mail span').text()+"'>"+$('#address_3 .mail span').text()+"</a></p></div>";
				
				gmaps.infowindow_3 = new google.maps.InfoWindow({
					content: address_content_3
				});
				
				gmaps.geo.geocode({'address': address_3}, function(results,status)
				{			
					if (status == google.maps.GeocoderStatus.OK) {				
						gmaps.map.setCenter(results[0].geometry.location);
						
						//console.log(results[0].geometry.location);
						
						gmaps.marker_3 = new google.maps.Marker({
							map: gmaps.map, 
							position: results[0].geometry.location,
							title:"<h5>"+$('#address_3_title')+"</h5>"
						});
						
						google.maps.event.addListener(gmaps.marker_3, 'click', function() {
							gmaps.infowindow_3.open(gmaps.map,gmaps.marker_3);
						});
					} else {
						////////console.log("Geocoding was unsuccesfull : " + status);
					}
		
				});
			}
		}
	},
	
	_geo_code: function(address, info_window)
	{
		gmaps.geo.geocode({'address': address}, function(results,status)
		{			
			if (status == google.maps.GeocoderStatus.OK) {				
				gmaps.map.setCenter(results[0].geometry.location);
				
				gmaps.marker = new google.maps.Marker({
					map: gmaps.map, 
					position: results[0].geometry.location,
					title:"<h5>"+$('#org_name')+"</h5>"
				});
				
				google.maps.event.addListener(gmaps.marker, 'click', function() {
					info_window.open(gmaps.map,gmaps.marker);
				});
			} else {
				////////console.log("Geocoding was unsuccesfull : " + status);
			}

		});
	}
};
