/*
-----------------------------------------------
Common class

By Rodesigned 2008

Version         1.0
-----------------------------------------------
*/
function errorHandler(errmsg, url, linenumber) {
	var txt = "Er is een fout opgetreden:\n\n";
	txt += "Error: " + errmsg + "\n";
	txt += "URL: " + url + "\n";
	txt += "Line: " + linenumber + "\n\n";
	txt += "\n\n";
	alert(txt);
}

function setLoading() {
	document.getElementsByTagName('html')[0].style.cursor = 'progress';
}

function setUnLoading() {
	document.getElementsByTagName('html')[0].style.cursor = 'default';
}

function showLayer(div) {
    alert('[showLayer] is verouderd, gebruik [show] of [toggle] ('+div+')');
	if (document.getElementById(div) !== null) {document.getElementById(div).style.display = 'block';}
}

function hideLayer(div) {
    alert('[hideLayer] is verouderd, gebruik [hide] of [toggle] ('+div+')');
	if (document.getElementById(div) !== null) {document.getElementById(div).style.display = 'none';}
}

function enableButton(button) {
    alert('[enableButton] is verouderd, gebruik [enable]');
	if (document.getElementById(button) !== null) {document.getElementById(button).disabled = false;}
}

function disableButton(button) {
    alert('[disableButton] is verouderd, gebruik [disable]');
	if (document.getElementById(button) !== null) {document.getElementById(button).disabled = true;}
}

document.getElementsByClassName = function(needle) {
	var s = document.getElementsByTagName('*'), i = s.length, e, r = [];
	var re = new RegExp('(^|\\s)' + needle + '(\\s|$)');

	while (i--) {
		e = s[i];
		if (e.className && re.test(e.className)) {r.push(e);}
	}

	return r;
};

function hide(obj) {
    if (typeof obj === 'string') {obj = document.getElementById(obj);}
    if (obj !== null) {obj.style.display = 'none';}
}

function show(obj) {
    if (typeof obj === 'string') {obj = document.getElementById(obj);}
    if (obj !== null) {obj.style.display = 'block';}
}

function enable(obj) {
    if (typeof obj === 'string') {obj = document.getElementById(obj);}
    if (obj !== null) {obj.disabled = false;}
}

function disable(obj) {
    if (typeof obj === 'string') {obj = document.getElementById(obj);}
    if (obj !== null) {obj.disabled = true;}
}

/* Toggle */
function toggle(obj) {
	if (obj.style.display !== 'none' ) {obj.style.display = 'none';}
	else {obj.style.display = '';}
}

/* Event handlers */
function Event() {}

Event.prototype.add = function(obj, evType, fn, useCapture) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (obj.attachEvent) {
		if (useCapture) {
			alert('IE does not support event capturing!');
			return false;
		}
		else {
			var tmp = function() {fn.apply(obj,[window.event]);};
			//-- check if handler is not already attached
			if (!obj['ref'+evType]) {obj['ref'+evType] = [];}
			else {
				for (var ref in obj['ref'+evType]) {
					if (obj['ref'+evType][ref].fn === fn) {return false;}
				}
			}
			var r = obj.attachEvent('on'+evType, tmp);
			//-- store references
			if (r) {obj['ref'+evType].push({fn:fn, tmp:tmp});}
			return r;
		}
	}
	else	{
		alert('Handler could not be attached');
		return false;
	}
};

Event.prototype.remove = function(obj, evType, fn, useCapture) {
	if (obj.removeEventListener) {
		obj.removeEventListener(evType, fn, useCapture);
		return true;
	}
	else if (obj.detachEvent) {
		if (obj['ref'+evType]) {
			for (var ref in obj['ref'+evType]) {
				if (obj['ref'+evType][ref].fn === fn) {
					obj.detachEvent('on'+evType, obj['ref'+evType][ref].tmp);
					//-- cleanup
					obj['ref'+evType][ref].fn = null;
					obj['ref'+evType][ref].tmp = null;
					delete obj['ref'+evType][ref];

					return true;
				}
			}
		}
		return false;
	}
	else {
		alert('Handler could not be removed');
		return false;
	}
};

/* Dollar function */
function $() {
	var elements = [];
	var element = null;
	for (var i=0;i<arguments.length;i++) {
		element = arguments[i];
		if (typeof element == 'string') {element = document.getElementById(element);}
		if (arguments.length == 1) {return element;}
		elements.push(element);
	}
	return elements;
}

/**
 * DOM functions
 */
function insertAfter(parent, node, referenceNode) {
	parent.insertBefore(node, referenceNode.nextSibling);
}

Array.prototype.inArray = function(key, array) {
	for (var i=0;i<array.length; i++) {
		if (array[i].toString() == key) {
			return true;
		}
	}
	return false;
};

/* Register event */
Event = new Event();