//versie 1.0
function createRequest() {
	try {
		
		request = new XMLHttpRequest();
		
	} catch(e){
		try {
			
			request = new ActiveXObject("Msxm12.XMLHTTP");
			
		} catch(e){
			try {
			
				request = new ActiveXObject("Microsoft.XMLHTTP");
				
			} catch(e){
				
				alert("Request object could not be created. Error: " + e);
				request = null;
			}
		}
	}
	
	return request;
	
}


//set of get de opacity waarde van een element
//versie 2.0, 8 april 2009
//verbeteringspunten;
// - kijken of het object een html element is
function opacValue(input, action, inputValue){
	if(typeof input == 'string'){
		if(typeof document.getElementById(input) == 'object'){
			var object = document.getElementById(input);
		}
		else{
			alert('function opacValue says: "Wrong input"');
		}
	}
	else{
		var object = input;
	}
	
	if(action == 'set'){
		if(object.style.filter != undefined){
			object.style.filter = 'alpha(opacity=' + inputValue * 100 + ')';
		}
		else {
			object.style.opacity = inputValue;
		}
	}
	else {
		if(object.style.filter != undefined){
			//IE
			var opacString = object.style.filter.substr(14);
			return parseFloat(opacString) / 100;
		}
		else {
			return object.style.opacity;
		}
	}
}

//adeventlistener
//versie 1.0, 10 april 2009
function addEventHandler(object, eventName, handler, capturing){
	if(!capturing){
		capturing = false;	
	}
	if(document.attachEvent){
		//IE
		object.attachEvent('on' + eventName, handler);
	}
	else if(document.addEventListener){
		//DOM Level 2 browsers
		object.addEventListener(eventName, handler, capturing);
	}
}

function returnDigits(i, digits){
	if(!digits){
		digits = 2;
	}
	var regExpressionDigits = new RegExp("\\d{" + digits + "}$");
	
	var iDigits = '';
	for(var j=0;j<digits;j++){
		iDigits += '0';
	}
	//alert(iDigits);
	i = i.toString();
	i = iDigits + i;
	i = regExpressionDigits.exec(i);
	
	return i;
}

//voegt het parent object toe aan de parent property van de Child
//versie 1.0, 31 mei 2009
function addChildReference(object, childName, childOb){
   object[childName] = childOb;
   childOb.parent = object;
}


//versie 1.1, 18 mei 2010
//2e level diep childnodes naar classname zoeken toegevoegd
function getElementsByClassName(node, classname){
	if(document.getElementsByClassName){
		return node.getElementsByClassName(classname);
	}
	else {
		var htmlClassnameElements = new Array();
		var childNode = node.firstChild;
		while(childNode){
			if(childNode.className == classname){
				htmlClassnameElements.push(childNode);
			}
			if(childNode.firstChild){
				var childChildNode = childNode.firstChild;
				while(childChildNode){
					if(childChildNode.className == classname){
						htmlClassnameElements.push(childChildNode);
					}
					childChildNode = childChildNode.nextSibling;
				}
			}
			childNode = childNode.nextSibling;
		}
		return htmlClassnameElements;
	}
}

function $(){
	if(arguments.length > 1){
		var elementsArray = new Array();
		for(var i=0;i<arguments.length;i++){
			elementsArray.push(document.getElementById(arguments[i]));
		}
		return elementsArray;
	}
	else {
		return document.getElementById(arguments[0]);
	}
}

//geeft de maand in een nl string terug van 3 karakters
//verbeteringspunten;
// - engels
// - aantal karakters
//versie 1.0 14 april 2010
function getMonthString(number){
	var month;
	switch(number){
		case 1:
			month = 'jan';
			break;
		case 2:
			month = 'feb';
			break;
		case 3:
			month = 'mrt';
			break;
		case 4:
			month = 'apr';
			break;
		case 5:
			month = 'mei';
			break;
		case 6:
			month = 'jun';
			break;
		case 7:
			month = 'jul';
			break;
		case 8:
			month = 'aug';
			break;
		case 9:
			month = 'sep';
			break;
		case 10:
			month = 'okt';
			break;
		case 11:
			month = 'nov';
			break;
		case 12:
			month = 'dec';
			break;
	}
	return month;
}


//checkt welke muisknop is ingedrukt
//verbeteringspunten;
//versie 1.0 11 mei 2010
function checkMouseButton(mEvent){
	if(!mEvent){
		var mouseEvent = window.event;
	}
	else {
		mouseEvent = mEvent;
	}
	
	if(!mEvent && mouseEvent.button == 1 || mouseEvent.button == 0){
		return true;
	}
	else {
		return false;	
	}
}

function displayFlashElements(display){
	var objectElements = document.getElementsByTagName('object');
	
	for(var i=0;i<objectElements.length;i++){
		objectElements[i].style.display = display;
	}
}

//
function getElementsByTagNames(elementsString, rootElement){
	if(!rootElement){
		rootElement = document;
	}
	else if(typeof rootElement == 'string'){
		rootElement = document.getElementById(rootElement);
	}
	else if(typeof rootElement != 'object'){
		alert('Wrong input rootElement!');
	}
	
	var elementStringArray = elementsString.split(',')
	
	var returnElementArray = new Array();
	for(var i=0;i<elementStringArray.length; i++){
		var elements = rootElement.getElementsByTagName(elementStringArray[i]);
		for(var j=0;j<elements.length;j++){
			returnElementArray.push(elements[j]);
		}
	}
	
	return returnElementArray;
}