/*
** e-Studiegids ~ esg.js
** Author:    Lodewijk Schutte ~ Low
** Purpose:   main javascript file
** Last edit: 20081103
*/

// --- Add stylesheet to document -----

(function add_style(){
	// get current domain
	var domain	= location.href.match(/http:\/\/([\.\-0-9a-z]+)\/.*/)[1];
	var root	= (domain == 'ee.leidenuniv.nl') ? '/studiegids/' : '/';
	document.write('<link rel="stylesheet" type="text/css" media="screen" href="'+root+'styles/js.css" />');
})();

// --- Initiate global hash -----------

var ESG = new Hash;

// --- Edition Switcher ---------------

ESG.set('Editions',{
	element: undefined,
	toggle: function(e) {
		e = new Event(e);
		if ($(e.target).getTag() == 'a') return;

		this.element.toggleClass('open');
		
	},
	over: function() {
		this.element.addClass('hover');
	},
	out: function() {
		this.element.removeClass('hover');
	},
	init: function() {
		this.element = $('edition');
		if (!this.element) return;
		
		var h2 = this.element.getElement('h2');
		var ul = this.element.getElement('ul');
		if (!h2 || !ul) return;
		
		h2.remove();
		
		this.element.addEvent('mouseenter',this.over.bind(this));
		this.element.addEvent('mouseleave',this.out.bind(this));
		this.element.addEvent('click',this.toggle.bindAsEventListener(this));
	}
});


// --- Panes --------------------------

ESG.set('Panes', {
	toggle: false,
	items: undefined,
	activate: function(e, pane) {
		e = new Event(e).stop();
		for (var i = 0, j = this.items.length; i < j; i++) {
			if (this.toggle) {
				if (this.items[i] == pane) this.items[i].toggleClass('open');
			} else {
				if (this.items[i] == pane) {
					this.items[i].addClass('open');
				} else {
					this.items[i].removeClass('open');
				}
			}
		}
	},
	init: function() {

		var h = $$('#primary .item h2 a');
		var e = $$('#primary .item .content');
		if (h.length && e.length)
			var acc = new Accordion(h, e, {show:-1,duration:200});
		else
			return;
		
		this.items = $$('#primary .item');
		if (!this.items.length) return;
		this.items.each(function(el){
			var handle = el.getElement('a');
			handle.addEvent('click',this.activate.bindAsEventListener(this,el));
		},this);
	}
});

// --- Tabs ---------------------------

ESG.set('Tabs', {
	items: undefined,
	activate: function(e, tab) {
		if (e) {
			e = new Event(e);
			// allow shift-click etc.
			// if (e.shift || e.alt || e.ctrl || e.meta) return true;
			// e.stop();
		}
		for (var i = 0, j = this.items.length; i < j; i++) {
			var item = this.items[i];
			var page = $('page'+(i+1));
			if (item == tab) {
				item.addClass('active');
				if (page) page.addClass('active');
			} else {
				item.removeClass('active');
				if (page) page.removeClass('active');
			}
		}
	},
	init: function() {
		this.items = $$('#tabs a');
		if (!this.items.length) return;
		
		this.items.each(function(el){
			el.href = el.href.replace('page','p');
			el.addEvent('click',this.activate.bindAsEventListener(this,el));
		},this);
		
		var hash = location.href.split('#')[1] || false;
		if (hash) {
			var tab = $(hash.replace('p','tab'));
			if (tab) {
				this.activate(false,tab);
			}
		}
	}
});

// ----- INITIATE HASH 

ESG.each(function(obj,key){
	window.addEvent('domready',obj.init.bind(obj));
});

function show_courses()
{
	var descr = document.getElementById('description_div');
	var coursed = document.getElementById('course_div');
	var course = document.getElementById('course_button');
	var info = document.getElementById('info_button');
	course.className = "active";
	coursed.style.display = "block";
	descr.style.display = "none";
	info.className = "";
}

function show_description()
{
	var descr = document.getElementById('description_div');
	var coursed = document.getElementById('course_div');
	var course = document.getElementById('course_button');
	var info = document.getElementById('info_button');
	course.className = "";
	coursed.style.display = "none";
	descr.style.display = "block";
	info.className = "active";
}