// JavaScript Document

function clickMenu(name){

	switch(name){
		case "home":
			document.getElementById('home').className = 'home_active'; 
			document.getElementById('dienst').className = 'diensten_de_active'; 
			document.getElementById('klant').className = 'klanten_de_active'; 
			document.getElementById('contact').className = 'contact_de_active';
		break;
		case "dienst":
			document.getElementById('home').className = 'home_de_active'; 
			document.getElementById('dienst').className = 'diensten_active'; 
			document.getElementById('klant').className = 'klanten_de_active'; 
			document.getElementById('contact').className = 'contact_de_active';	
		break;
		case "klant":
			document.getElementById('home').className = 'home_de_active'; 
			document.getElementById('dienst').className = 'diensten_de_active'; 
			document.getElementById('klant').className = 'klanten_active'; 
			document.getElementById('contact').className = 'contact_de_active';	
		break;
		case "contact":
			document.getElementById('home').className = 'home_de_active'; 
			document.getElementById('dienst').className = 'diensten_de_active'; 
			document.getElementById('klant').className = 'klanten_de_active'; 
			document.getElementById('contact').className = 'contact_active';	
		break;
	}
}


// menu

function PensioenBureauMenu() {
	this.menu = $('menu');
	this.content = [
		$("div1"), $("div2"), $("div3"), $("div4")
	];

	this.menuRelations = {
		div1:'home',
		div2:'dienst',
		div3:'klant',
		div4:'contact'
	}

	this.offset = [170, 40, 65, 100];

	var self = this;
	Event.observe(window, 'scroll', function(e){
		self.observeScroll(e);
	});

	Event.observe(document, 'click', function(e) {
		return self.handleClick(e);
	});
}

PensioenBureauMenu.prototype = {
	REG_HASH: /#.+$/,

	handleClick:function(e) {
		var target = Event.findElement(e, 'a');
		if(target && this.REG_HASH.test(target.href)) {
			try {
				var id = /#([^\$]+)/.exec(target.href)[1], section = $(id);
				if(section) {
					Effect.ScrollTo(section, {transition: Effect.Transitions.sinoidal});
					e.preventDefault();
					return false;
				}
			} catch (e) {
			}
		}
	},

	observeScroll:function(e) {
		var height = document.viewport.getHeight();
		
		for(var i=0; i<this.content.length; i++) {
			var node = this.content[i];
			var offset = node.viewportOffset(),
				h = node.getHeight(),
				y = offset.top + h/2;

			if(y > 0 && y < height) {
				this.setCurrent(node, i);
				break;
			}
		}
	},

	setCurrent:function(node, index) {
		if(this.current != node) {
			this.current = node;
			
			var x = 610;
			var y = node.cumulativeOffset().top + this.offset[index];

			new Effect.Move(this.menu, {
				x: x, y: y, mode: 'absolute',
				transition: Effect.Transitions.sinoidal
			});

			var related = this.menuRelations[node.getAttribute('id')];
			if(related) {
				clickMenu(related);
			}
		}
	}
}

// quotes

function PensioenBureauQuotes() {
	this.container = $('recensie');
	this.box = $('box_logos');
	this.logos = $$('#box_logos a');
	
	var self = this;
	this.container.observe('click', function(e){
		return self.handleClick(e);
	});

	this.box.observe('click', function(e){
		return self.handleClick(e);
	});

	if(!/update\.php/i.test(window.location)) {
		this.setTimer();
	}
}


PensioenBureauQuotes.prototype = {
	handleClick:function(e) {
		var target = Event.findElement(e, 'a');
		if(target) {
			try {
				if(/ajax/i.test(target.rel)) {

					this.setTimer();
					
					this.container.fade({duration:0.1});
					
					var self = this;
					setTimeout(function(){
						self.loadQuote(target.href);
					}, 100);

					e.preventDefault();
					return false;
				}
			} catch (e) {
			}
		}
	},

	loadQuote:function(url){
		var self = this;
		new Ajax.Request(url, {
			onComplete:function(http) {
				Effect.Queues.get('global').each(function(effect) { 
					effect.cancel(); 
				});

				self.container.innerHTML = http.responseText;
				self.container.appear({duration: 0.1});
				self.activateLogo(url);
			}
		});
	},

	setTimer:function() {
		clearInterval(this.autoToggle);

		var self = this;
		this.autoToggle = setInterval(function(){
			self.nextQuote();
		}, 30000);
	},

	nextQuote:function() {
		try {
			var next = document.getElementById("arrow_right");
			var href = next.href;
			this.loadQuote(href);
		} catch (e) {
		}
	},

	activateLogo:function(url) {
		this.logos.each(function(logo){
			if(url == logo.href){
				logo.addClassName('active');
			} else {
				logo.removeClassName('active');
			}
		})
	}
}

function equalizeBoxes(){
	var boxes = [$('werkgevers'), $('onderneming'), $('werknemers')];
	var max = Math.max(
		boxes[0].offsetHeight,	
		boxes[1].offsetHeight,
		boxes[2].offsetHeight
	);

	for (var i=0; i<boxes.length; i++) {
		boxes[i].style.height = max + 'px';
	}
}

function showQualification(titleText){
	document.getElementById('title').innerHTML = titleText;
}

function showDialog(){
	var rekenVooorbeeld = document.getElementById('dialog-reken-voorbeeld');
	document.getElementById('overlay').style.display = "block";
	
	rekenVooorbeeld.style.display = "block";
	rekenVooorbeeld.style.top = ((document.body.offsetHeight / 2) - 1350) + "px";
	rekenVooorbeeld.style.left = ((document.body.offsetWidth / 2) - 419) + "px";
}

function closeDialog(){
	document.getElementById('overlay').style.display = "none";
	document.getElementById('dialog-reken-voorbeeld').style.display = "none";
}

// init 

document.observe('dom:loaded', function () { 

	clickMenu('home');

	equalizeBoxes();

	new PensioenBureauMenu();

	new PensioenBureauQuotes();

	

});
