//============ ALGEMEEN ================================//

function $(id) {
	if(typeof id == 'string') {
		return document.getElementById(id);
	} else {
		return id;
	}
}

function setBgColor(id, value){		
	$(id).style.backgroundColor = value;
}

function redirect(url){
	window.location.href = url;
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return {x: curleft, y: curtop};
}

function removeClassName(el,name)
{
	var i,curList,newList;
	if(el.className==null) return;
	newList = new Array();
	curList = el.className.split(" ");

	for(i=0;i<curList.length;i++)
	   if(curList[i] != name)
	      newList.push(curList[i]);

	el.className=newList.join(" ");
}

function addClassName(el,name)
{
	el.className += " " + name;
}

function getElementsByClassName(node, classname)
{
    var a = [];
    var re = new RegExp('\\b' + classname + '\\b');
    var els = node.getElementsByTagName("*");
    for(var i=0,j=els.length; i<j; i++)
        if(re.test(els[i].className))a.push(els[i]);
    return a;
}

function select(id) {
	var node = $(id);
	var siblings = node.parentNode.childNodes;
	for(var i = 0; i < siblings.length; i++) {
		var sibling = siblings[i];
		if(sibling.nodeType == 1) {
			removeClassName(sibling, 'selected');
		}
	}
	addClassName(node, 'selected');
}

function displayOnly(id) {
	var node = $(id);
	var siblings = node.parentNode.childNodes;
	for(var i = 0; i < siblings.length; i++) {
		var sibling = siblings[i];
		if(sibling.nodeType == 1) {
			sibling.style.display = 'none';
		}
	}
	node.style.display = 'block';
}

function deselectAll() {
	var els = getElementsByClassName(document, 'selected');
    for(var i=0; i < els.length; i++) {
    	removeClassName(els[i], 'selected');
    }
}

function selecteerAlle(checkbox, classname) {
	var elements = getElementsByClassName(document, classname);
	for(var i = 0; i < elements.length; i++) {
		if(elements[i].disabled == false)
			elements[i].checked = checkbox.checked; 
	}	
}

function aantalGeselecteerd(classname)
{
	var elements = getElementsByClassName(document, classname);
	var aantal = 0;
	for(var i = 0; i < elements.length; i++) {
		if(elements[i].checked)
			aantal++; 
	}
	return aantal;
}

function iedereenselect(iedereencheckbox) {
	//Ga opzoek naar een wrapper met de class 'rechtgroepen'
	//Deze bevat alle checkboxjes voor een item, maar niet alle items
	var wrappernode = iedereencheckbox;
	while(wrappernode.className != 'rechtgroepen') {
		wrappernode = wrappernode.parentNode;
	}	
	
	//Disable en uncheck ze als de iedereencheckbox aangaat
	//Enable ze als de iedereencheckbox uitgaat
	var checkboxes = getElementsByClassName(wrappernode, iedereencheckbox.className);
	for(var i = 0; i < checkboxes.length; i++) {
		var checkbox = checkboxes[i];
		if(checkbox != iedereencheckbox) {
			if(iedereencheckbox.checked) {
				checkbox.disabled = true;
				checkbox.checked = false;
			} else {
				checkbox.disabled = false;
			}
		}
	}
	
	
}

//============SETTINGS================================//

function setFont(id, obj){	
	var value = obj.options[obj.selectedIndex].value;		
	$(id).value = value;
	$(id).style.fontFamily = value;
}

function toggle(obj){
	var el = $(obj);
	
	if(el.style.display == 'block')
		el.style.display = 'none';
	else
		el.style.display = 'block';
}

function toggleTable(obj){
	var el = $(obj);
	if(el.style.display == 'none')
		el.style.display = '';
	else
		el.style.display = 'none';
}

function toggleTableRows(theclass){
	var elements = getElementsByClassName(document, theclass);
	
	for(var i = 0; i < elements.length; i++){
		toggleTable(elements[i]);
	}
	
}

function displayNone(el){
	$(el).style.display = 'none';
}

//============ENQUETES================================//

function nieuweVraag(){
	var tbody = $('vragenlijst').getElementsByTagName("TBODY")[0];
	var row = document.createElement("TR");
    var td = document.createElement("TD");
    
	var input = document.createElement('input');
	input.type = 'text';
	input.name = 'vraag_'+volgendeVraag;
	input.style.width = '178px';
	input.className = 'boxes';
	td.appendChild(input);	
	
	var select = document.createElement('select');
	select.name = 'type_'+volgendeVraag;
	select.options[0] = new Option('5 punts schaal', '0');
	select.options[1] = new Option('2 punts schaal', '1');
	select.options[2] = new Option('open', '2');
	select.style.marginLeft = '14px';
	td.appendChild(select);
	
	row.appendChild(td);   
    tbody.appendChild(row);
    volgendeVraag += 1;
}


//============VERTRAGING MENU================================//


DisplayDelayer = {
	showDelay: 50,
	hideDelay: 200,

	//Show & hide an html element (displayitem) on the mouseevents of another element (hoveritem)
	//A delay is built in to have a short grace period before the displayitem appears or hides 
	delay: function(hoveritem, displayitem) {
		hoveritem.displayitem = displayitem;
		
		hoveritem.onmouseover = function() {
			DisplayDelayer.mouseover(this, this.displayitem);
		};
		
		hoveritem.onmouseout = function() {
			DisplayDelayer.mouseout(this, this.displayitem);
		};
	},
	
	mouseover: function(hoveritem, displayitem) {
		window.clearTimeout(hoveritem.timeout);
	
		hoveritem.timeout = window.setTimeout(function() {
			displayitem.style.display = 'block';
		}, DisplayDelayer.showDelay);
	},
	
	mouseout: function(hoveritem, displayitem) {
		window.clearTimeout(hoveritem.timeout);
		
		hoveritem.timeout = window.setTimeout(function() {
			if(displayitem.fixed != true)
				displayitem.style.display = 'none';
		}, DisplayDelayer.hideDelay);
	}
};

//============MENU VASTKLIKKEN================================//

MenuFixate = {
	fixated: new Array(),
	lastclickedelement: undefined,
	documenteventset: false,
	
	fixate: function(clickitem, fixateitem) {
		if(!MenuFixate.documenteventset) {
			document.onmouseup = function(event) {
				if(!event) event = window.event;
				if(event.srcElement) clickedelement = event.srcElement;
				else clickedelement = event.target;
			
				if(MenuFixate.lastclickedelement != clickedelement)
					MenuFixate.hideallfixated();
				}
			MenuFixate.documenteventset = true;
		}

		clickitem.fixateitem = fixateitem;
		clickitem.onmouseup = function(e) {
			MenuFixate.mouseclick(this.fixateitem, e);
		};
	},
	
	mouseclick: function(fixateitem, event) {
		if(!event) event = window.event;
		
		//Cleanup fixated items from last time
		if(event.srcElement) clickedelement = event.srcElement;
		else clickedelement = event.target;
		
		if(clickedelement.nodeName == 'A')
			return;

		if(MenuFixate.lastclickedelement != clickedelement) {
			MenuFixate.hideallfixated();
			MenuFixate.lastclickedelement = clickedelement;
		}		

		addClassName(fixateitem, 'fixated');
		fixateitem.style.display = 'block';
		fixateitem.fixed = true;
		MenuFixate.fixated.push(fixateitem);
	},
	
	hideallfixated: function()
	{
		while(MenuFixate.fixated.length > 0)
		{
			var fixateitem = MenuFixate.fixated.pop();
			removeClassName(fixateitem, 'fixated');
			fixateitem.style.display = 'none';
			fixateitem.fixed = undefined;
		}
	}
};
