var menubuttons;
var menu_status = 1;
var menu_fx1;
var menu_fx2;

var menulinks;
var divlinks;
var pagelinks;
var pagelink_counter = 0;
var hrefs;
var currentIndex;
var list_items;
var list_fx = new Array();

var initialized = 0;
var body_height = 0;

if(!load_page){	var load_page = 0; }

//
//	INIT
//

function init(){
	
	//	setup menu buttons
	menubuttons = $$('.menubutton');
	for(i=0;i<menubuttons.length;i++){
		menubuttons[i].setStyle('margin-left', menubuttons[i].getProperty('ot_left')+"px");
		menubuttons[i].setStyle('margin-top', menubuttons[i].getProperty('ot_top')+"px");
		menubuttons[i].addClass(menubuttons[i].getProperty('ot_section')+'_menu');
		menubuttons[i].setStyle('display', 'block');
		// setup events for buttons
		menubuttons[i].addEvent('appear', function(){
			button_fx = new Fx.Styles(this, {duration: 250, transition: Fx.Transitions.Quad.easeInOut});
			button_fx.start({'opacity': [0,1]});
		});
		menubuttons[i].addEvent('disappear', function(){
			button_fx = new Fx.Styles(this, {duration: 250, transition: Fx.Transitions.Quad.easeInOut});
			button_fx.start({
				'opacity': [1,0]
			});
		});
	}
	
	//	setup main menu fx
	menu_fx1 = new Fx.Style('mainmenu', 'height', {duration:1000, transition: Fx.Transitions.Quad.easeInOut, onComplete: function(){ fix(); }}); 
	
	//	setup back menu fx
	menu_fx2 = new Fx.Style('backmenu', 'opacity', {duration:1000});
	$('backmenu').setStyle('opacity', 0);
	$('backmenu').setStyle('display', 'block');
	$('backmenu').addEvent('click', function(){
		menu_appear();
	});
	
	//	setup history manager
	HistoryManager.initialize();
	
	menulinks = $$('.menulink');
	hrefs = menulinks.getProperty('ajaxhref');
	currentIndex = -1;
	
	reqHistory = HistoryManager.register(
		'page-index',
		[0], // default, page 0
		function(values) {
			if(menu_status == 1 && currentIndex != -1){
				menu_click();
			}
			ajaxUpdate(values[0]);
		},
		function(values) {
			return 'page-index(' + values[0] + ')';
		},
		/page-index\((\d+)\)/ // the regexp to match "page-index(0)"
	);
	
	menulinks.each(function(el, i) {
		el.removeEvents('click');
		el.addEvent('click', function(e) {
			if (e) new Event(e).stop();
			menu_click();
			ajaxUpdate(i);
		});
	});
	
	HistoryManager.start();
	
	if(!load_page){
		reqHistory.setValue(0, 0);	
	}
		
}

//
//	HISTORY
//

function ajaxUpdate(index) {
	
	var url = hrefs[index] || null;
	if (!url) return;
	currentIndex = index;

	// updating the history
	reqHistory.setValue(0, index);

	// request
	if(index > 0){
		ajax_load(url, 'container');	
	} else {
		ajax_load('page=site.ajaxhome', 'container');
	}
};

//
//	NAVIGATION
//

function menu_click(){
	if(menu_status == 1){
		//	disappear
		menu_status = -1;
		for(i=0;i<menubuttons.length;i++){ menubuttons[i].fireEvent('disappear'); }
		menu_fx1.start(605, 70);
		menu_fx2.start(0, 1);
		setTimeout('load_menu_image()', 1000);
		setTimeout('menu_status = 0;', 1000);
		setTimeout('fix();', 1000);
	}
}

function menu_appear(){
	if(menu_status == 0){
		//	appear
		menu_status = -1;
		for(i=0;i<menubuttons.length;i++){ setTimeout('menubuttons['+i+'].fireEvent(\'appear\');', 750); }
		menu_fx1.start(70, 605);
		menu_fx2.start(1, 0);
		setTimeout('menu_status = 1;', 1000);
		setTimeout('fix();', 1000);
	}
}

//
//	AJAX
//

function ajax_load(in_url, in_div){
	$(in_div).setHTML('<div id="loader"><img src="http://www.ot301.nl/img/loading.gif"></div>');
	myajax = new Ajax('http://www.ot301.nl/'+in_url, {method: 'get', evalScripts: true, onComplete: function(){ initDiv(in_url, in_div); }, update: in_div, autoCancel: true});
	myajax.request();
}

function initDiv(in_url, in_div){
	
	//	fix layout
	fix();
	
	//	setup new pagelinks
	pagelinks = $$('.pagelink');
	pagelinks.each(function(el, i){
		pagelink_counter++;
		hrefs[menulinks.length+pagelink_counter] = el.getProperty('ajaxhref');
		el.removeEvents('click');
		el.setProperty('pagelink_index', (menulinks.length+pagelink_counter));
		el.addEvent('click', function(e) {
			if (e) new Event(e).stop();
			menu_click();
			ajaxUpdate(el.getProperty('pagelink_index'));
		});
	});
	
	//	setup slideboxes
	if($defined($('box_left'))){
		var hs_left = new noobSlide({
			box: $('box_left'),
			items: $$('.slidebox_left_image'),
			size: 430,
			interval: 3000,
			fxOptions: {
				duration: 1000,
				transition: Fx.Transitions.Quad.easeOut,
				wait: false
			},
			buttons: {
				previous: $('prev_left'),
				next: $('next_left')
			}
		});
		
	}
	if($defined($('box_right'))){
		var hs_right = new noobSlide({
			box: $('box_right'),
			items: $$('.slidebox_right_image'),
			size: 430,
			interval: 3000,
			fxOptions: {
				duration: 1000,
				transition: Fx.Transitions.Quad.easeOut,
				wait: false
			},
			buttons: {
				previous: $('prev_right'),
				next: $('next_right')
			}
		});
	}
	
	//	setup closing button for media overlay
	if($defined($('media_close'))){
		$('media_close').addEvent('click', function(){
			$('media_container').setHTML('');
			overlayFx.start(0.8, 0);
			setTimeout("containerFx1.start(498, 0);", 500);
			setTimeout("containerFx2.start(1, 0);", 400);
		});
	}
	
	//	setup opening divs
	list_items = $$('.list_item');
	list_items.each(function(el, i){
		list_fx[el.id] = new Fx.Style(el, 'height', {duration:1000, transition: Fx.Transitions.Quad.easeInOut, onComplete: function(){ fix(); }});
	});
	
	//	setup lightbox
	Lightbox.init(Lightbox);
	
	//	fix layout
	fix();
	
}

//
//	MENU IMAGE
//

function load_menu_image(){
	menuimage_fx = new Fx.Style('menuimage', 'opacity', {duration:500, onComplete: function(){
		myajax = new Ajax('http://www.ot301.nl/page=site.menuimage', {method: 'get', evalScripts: true, onComplete: function(){ 
			menuimage_fx = new Fx.Style('menuimage', 'opacity', {duration:500});
			menuimage_fx.start(0,1);	
		}, update: 'menuimage', autoCancel: true});
		myajax.request();
	}});
	menuimage_fx.start(1,0);
}

//
//	GOOGLE MAPS
//
var map;
var marker;
var point;

function load_google_map(){
	if (GBrowserIsCompatible()) {
		//	create map
		map = new GMap2(document.getElementById("map"));
		//	set type
		map.setMapType(G_HYBRID_MAP);
		//	set default location
 		map.setCenter(new GLatLng(52.3601, 4.8656), 15);
 		//	add controls
 		map.addControl(new GMapTypeControl());
 		map.addControl(new GSmallMapControl());
 		//	place point
 		point = new GLatLng(52.3601, 4.8656); 
		marker = new GMarker(point,  G_DEFAULT_ICON, false);
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml("<span style='color: #000000;'><b>OT301</b><br>Overtoom 301<br>1054 HW<br>Amsterdam</span>");
		});  
		map.addOverlay(marker);
	}
}


//
//	LAYOUT
//

function fix(){
	if(initialized == 0){
		initialized = 1;
		var m = Math.max(document.body.clientHeight, $('header').offsetHeight + $('mainmenu').offsetHeight + $('container').offsetHeight);
		body_height = document.body.clientHeight;
	} else {
		var m = Math.max(body_height, $('header').offsetHeight + $('mainmenu').offsetHeight + $('container').offsetHeight);
	}
	$('site').setStyle('height', m+"px");
	
	if($defined($('lbOverlay'))){
		$('lbOverlay').setStyle('height', m+"px");
	}
	if($defined($('media_overlay'))){
		$('media_overlay').setStyle('height', m+"px");
	}
}

//
//	MEDIA LAYER
//

var containerFx;
var overlayFx;

function open_media_overlay(in_page){
	if($defined($('media_overlay'))){
		
		//	open
		$('media_overlay').setStyles({'opacity': 0, 'display': 'block', 'top': 0+"px", 'height': $('site').getStyle('height').toInt()+"px"});
		$('media_container').setStyles({'opacity': 0, 'display': 'block', 'margin-top': window.getScrollTop()+((document.body.clientHeight/2)-250)+"px"});
		overlayFx = new Fx.Style('media_overlay', 'opacity', {duration:1000, onComplete: function(){}});
		
		containerFx1 = new Fx.Style('media_container', 'height', {duration:1000, onComplete: function(){}});
		containerFx2 = new Fx.Style('media_container', 'opacity', {duration:1000, onComplete: function(){}});
		
		overlayFx.start(0, 0.8);
			
		setTimeout("containerFx1.start(0, 498);", 1000);
		setTimeout("containerFx2.start(0, 1);", 800);
		setTimeout("ajax_load('"+in_page+"', 'media_container');", 2000);
		
		//	close
		$('media_overlay').addEvent('click', function(){
			$('media_container').setHTML('');
			overlayFx.start(0.8, 0);
			setTimeout("containerFx1.start(498, 0);", 500);
			setTimeout("containerFx2.start(1, 0);", 400);
		});
	}
}

//
//	YOUTUBE
//

function loadyouTubePlayer(in_player, in_div, in_video){
	
	var player_params = { allowScriptAccess: "always" };
	var player_atts = { id: in_player };

	swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid="+in_player, in_div, "400", "300", "9", null, null, player_params, player_atts);

	window.addEvent('youtube'+in_player+'IsReadyEvent', function(){
		$(in_player).setSize(400, 300);
		$(in_player).cueVideoById(in_video);
	});

}

function onYouTubePlayerReady(playerId) {
	window.fireEvent('youtube'+playerId+'IsReadyEvent');
}

//
//	MEDIAPLAYER
//

function load_player(playlist, with_playlist, autostart){
	if(!autostart){ autostart = false; }
	var FU = { 	movie:"http://www.ot301.nl/swf/mediaplayer.swf",width:"450",height:"430",majorversion:"7",build:"0",bgcolor:"#474542",wmode:"transparent",flashvars:"file=" + escape(playlist) + "&shuffle=false&overstretch=none&repeat=true&displayheight=0&showdigits=true&autostart="+autostart+"&lightcolor=0xB1AFAC&backcolor=0x474542&frontcolor=0xFFFFFF" };
	UFO.create(	FU, "mediaplayer");
}

//
//	AGENDA
//

function filter_type(in_type){
	var items = $$('.filtered');
	items.each(function(el, i){
		if(in_type){
			if(el.hasClass('filter_type_'+in_type)){
				el.setStyle('display', 'block');
			} else {
				el.setStyle('display', 'none');
			}	
		} else {
			el.setStyle('display', 'block');
		}
	});
}

function toggle_type(in_type){
	var items = $$('.toggle_type_'+in_type);
	items.each(function(el, i){
		if(in_type){
			if(el.getStyle('display') == 'block'){
				el.setStyle('display', 'none');
			} else {
				el.setStyle('display', 'block');
			}
		} else {
			el.setStyle('display', 'block');
		}
	});
}

function list_open(in_id){
	if($('list_item_'+in_id).offsetHeight.toInt() > 241){
		list_fx['list_item_'+in_id].start(241+$('list_expansion_'+in_id).offsetHeight.toInt(), 241);
		$('list_expander_'+in_id).setHTML('More');
	} else {
		list_fx['list_item_'+in_id].start(241, 241+$('list_expansion_'+in_id).offsetHeight.toInt());
		$('list_expander_'+in_id).setHTML('Less');
	}
}

//
//	EVENTS
//

window.addEvent('load', function(){
	init(); fix();
});

window.addEvent('resize', function(){
	fix();
});