var NullObject;
var debug_on = false;
var global_gets = new Array();
var page_gets = new Array();
var nav_links = new Array();
var page_url = window.location.href;

var popup_win = NullObject;
var popup_cnt = 0;
var popup_css	= "oudedelft.css";
var popup_title = "Aan de Oude Delft";

var home_navlink  = create_navlink("home", true, "Home", "Home", "", "");
var terug_navlink = create_navlink(document.referrer, true, "Terug", "Back", "", "");
var collectie_navlink = create_navlink("collectie", true, "Collectie", "Collection", "", "");
var boeken_navlink = create_navlink("boeken", true, "Kunstboeken", "Artbooks", "", "");
var email_navlink = create_navlink("mailto:info@aandeoudedelft.nl", false, "Email", "Email", "", "");
var contact_navlink = create_navlink("contact", true, "Contact", "Contact", "", "");
var nieuws_navlink = create_navlink("nieuws", true, "Nieuws", "News", "", "");
var sitemap_navlink = create_navlink("sitemap", true, "Sitemap", "Sitemap", "", "");

var langobj = new function() {
    this.language = 'nl';
    this.changeyn = true;
};

var browser_info = new function() {
    this.DHTML	    = false;
    this.WC3DOM	    = false;
    this.IEalphapng = false;
    this.nav_ua	    = "unknown";
    this.style_incl_padding  = false;
    this.offset_incl_padding = true;
    this.weird_padding	     = false;
    this.style_incl_border   = false;
    this.offset_incl_border  = true;
    this.weird_border	     = false;
    this.client_incl_padding = (typeof(document.clientHeight) != "undefined");
    this.client_incl_border  = false;
    this.weird_position	     = false;
    this.verified	     = false; // true when perform_dhtml_test succeeded
};

if (page_url.indexOf("?") > 0) {
    var n = page_url.indexOf("?");
    var results = page_url.substring(n+1, page_url.length).split('&');
    if (results.length > 0) {
	var i, getsplit;
	for (i = 0; i < results.length; i++) {
	    getsplit = results[i].split("=");
	    if (getsplit.length == 2) {
		if (getsplit[0] == 'language' || getsplit[0] == 'debug' || getsplit[0] == 'taalswitch') {
		    add_get(global_gets, getsplit[0], getsplit[1]);
		}
		else {
		    add_get(page_gets, getsplit[0], getsplit[1]);
		}
	    }
	}
    }
    page_url = page_url.substring(0,n);

    if (find_get(global_gets, "debug") == "on") {
	debug_on = true;
    }
}


if (navigator.userAgent) {
    browser_info.nav_ua = navigator.userAgent.toLowerCase();
}

if (document.getElementById || document.all){
    // These utils do NOT support NS4 layers!
    browser_info.DHTML = true;
}

if (document.getElementById && document.createElement) {

    // Opera 6 lies about createElement :-<
    var n = browser_info.nav_ua.indexOf("opera");
    if (n != -1) {
	var OperaVer = parseFloat(browser_info.nav_ua.substr(n+6, 4));
	if (OperaVer >= 7.0) {
	    browser_info.WC3DOM = true;
	}
    }
    else {
	browser_info.WC3DOM = true;
    }
}

if (browser_info.nav_ua.indexOf("msie") != -1 && browser_info.nav_ua.indexOf("opera") == -1 && browser_info.nav_ua.indexOf("mac") == -1) {
    var IEVer = parseFloat(browser_info.nav_ua.substr(browser_info.nav_ua.indexOf("msie")+5, 4));
    if (IEVer >= 5.5) {
	// alpha (24bit) PNG is only possible with the *yuck* AlphaImageLoader.
	browser_info.IEalphapng = true;
    }
    if (IEVer <= 6.0) {
	browser_info.style_incl_border	= true;
	browser_info.style_incl_padding = true;
    }
}

var resize_info = new function() {
     this.Wincl	 = 0;
     this.Wexcl	 = 0;
     this.Hincl	 = 0;
     this.Hexcl	 = 0;
     this.ignore_Wincl = false;
     this.ignore_Wexcl = false;
     this.ignore_Hincl = false;
     this.ignore_Hexcl = false;
     this.max_resize = 15;
}

function resizeHandler() {

    if (resize_info.max_resize == 0) {
	return;
    }

    var winfo = get_window_info();

    if ((winfo.Wincl == resize_info.Wincl || resize_info.ignore_Wincl) && 
	(winfo.Hincl == resize_info.Hincl || resize_info.ignore_Hincl) && 
	(winfo.Wexcl == resize_info.Wexcl || resize_info.ignore_Wexcl) &&
	(winfo.Hexcl == resize_info.Hexcl || resize_info.ignore_Hexcl)) {
	return;
    }

    resize_info.Wincl = winfo.Wincl;
    resize_info.Hincl = winfo.Hincl;
    resize_info.Wexcl = winfo.Wexcl;
    resize_info.Hexcl = winfo.Hexcl;

    resize_info.max_resize = resize_info.max_resize - 1;

    // calling resize "hook"
    window_resized(winfo);
}


function init_resize_detection(event_Wincl, event_Wexcl, event_Hincl, event_Hexcl) {
    resize_info.ignore_Wincl = (!event_Wincl);
    resize_info.ignore_Wexcl = (!event_Wexcl);
    resize_info.ignore_Hincl = (!event_Hincl);
    resize_info.ignore_Hexcl = (!event_Hexcl);

    var winfo = get_window_info();

    resize_info.Wincl = winfo.Wincl;
    resize_info.Hincl = winfo.Hincl;
    resize_info.Wexcl = winfo.Wexcl;
    resize_info.Hexcl = winfo.Hexcl;

    window.onresize = resizeHandler;
}

function get_window_info() {

    var winW1 = 0, winH1 = 0;
    var winW2 = 0, winH2 = 0;
    var winW3 = 0, winH3 = 0;
    var docH  = 0, docW	 = 0;
    var scrollX = 0, scrollY = 0;

    if (typeof(window.pageYOffset) == 'number') {
	scrollX = window.pageXOffset;
	scrollY = window.pageYOffset;
    }
    else if (document.body && (document.body.scrollLeft || 
			       document.body.scrollTop)) {
	scrollX = document.body.scrollLeft;
	scrollY = document.body.scrollTop;
    }
    else if (document.documentElement && (document.documentElement.scrollLeft ||
					  document.documentElement.scrollTop)) {
	scrollX = document.documentElement.scrollLeft;
	scrollY = document.documentElement.scrollTop;
    }

    if (document.body && document.body.clientWidth) {
	winW1 = document.body.clientWidth;
	winH1 = document.body.clientHeight;
    }

    if (document.documentElement && document.documentElement.clientWidth) {
	winW2 = document.documentElement.clientWidth;
	winH2 = document.documentElement.clientHeight;
    }

    if (window.innerWidth) {
	winW3 = window.innerWidth;
	winH3 = window.innerHeight;
    }

    if (document.layers && document.width) {
	docW = document.width;
	docH = document.height;
    }
    else {
	docW = document.body.scrollWidth;
	docH = document.body.scrollHeight;
    }


    return new function() {
	if (winW3 && winW3 > 0) {
	    // MZ/NS innerW/H is inclusief scrollbars
	    this.Wincl = winW3;
	    this.Hincl = winH3;
	    if (docH > winH3) {
		this.Wexcl = winW3 - 15;
	    }
	    else {
		this.Wexcl = winW3;
	    }
	    if (docW > winW3) {
		this.Hexcl = winH3 - 15;
	    }
	    else {
		this.Hexcl = winH3;
	    }
	}
	if (winW1 && winW1 > 0) {
	    if (winW2 && winW2 > 0 && winW2 < winW1) {
		this.Wexcl = winW2;
	    }
	    else {
		this.Wexcl = winW1;
	    }
	    if (winH2 && winH2 > 0 && winH2 < winH1) {
		this.Hexcl = winH2;
	    }
	    else {
		this.Hexcl = winH1;
	    }
	}
	else if (winW2 && winW2 > 0) {
	    this.Wexcl = winW2;
	    this.Hexcl = winH2;
	}
	if (!winW3 || winW3 == 0) {
	    if (docH > this.Hexcl) {
		this.Wincl = this.Wexcl + 15;
	    }
	    else {
		this.Wincl = this.Wexcl;
	    }
	    if (docW > this.Wexcl) {
		this.Hincl = this.Hexcl + 15;
	    }
	    else {
		this.Hincl = this.Hexcl;
	    }
	}
	this.docH = docH;
	this.docW = docW;
	this.scrollX = scrollX;
	this.scrollY = scrollY;

/*
	debug_msg("winW1=" + winW1 + " winH1=" + winH1 + "\n" + 
		  "winW2=" + winW2 + " winH2=" + winH2 + "\n" + 
		  "winW3=" + winW3 + " winH3=" + winH3 + "\n" + 
		  "docW=" + docW + " docH=" + docH + "\n" +
		  "Wincl=" + this.Wincl + " Hincl=" + this.Hincl + "\n" +
		  "Wexcl=" + this.Wexcl + " Hexcl=" + this.Hexcl + "\n"); 
*/

    }
}

function debug_msg(tekst) {
    if (debug_on) {
    	if (console) {
    		console.log(tekst);
    	}
    	else {
		alert('DEBUG MESSAGE:\n\n' + tekst);
	}
    }
}

function show_object(lyr,visibleyn) {
	if (typeof(lyr) == "string") {
		lyr = get_object(lyr);
	}
    if (lyr) {
	if (lyr.style) {
	    if (visibleyn) {
		lyr.style.visibility = "visible";
	    }
	    else {
		lyr.style.visibility = "hidden";
	    }
	}
	else if (lyr.visibility) {
	    if (visibleyn) {
		lyr.visibility = "visible";
	    }
	    else {
		lyr.visibility = "hidden";
	    }
	}
    }
}


function write_text(object_id, text) {
    var objref;

    if (typeof(object_id) == "string") {
	objref = get_object(object_id);
    }
    else {
	objref = object_id;
    }

    if (typeof(objref) == "object") {
	if (document.getElementById) {
	    objref.innerHTML = '';   // IE 5.1 Bug
	    objref.innerHTML = text;
	}
	else if (document.all) {
	    objref.innerHTML = text;
	}
    }
}


function set_cookie (name, value) {  
    var argv	= set_cookie.arguments;
    var argc	= argv.length;
    var expires = (argc > 2) ? argv[2] : null;
    var path	= (argc > 3) ? argv[3] : null;
    var domain	= (argc > 4) ? argv[4] : null;
    var secure	= (argc > 5) ? argv[5] : false;
    document.cookie = name + "=" + escape (value) +
	((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
	((path == null)	   ? "" : ("; path=" + path)) +
	((domain == null)  ? "" : ("; domain=" + domain)) +
	((secure == true)  ? "; secure" : "");
}


function get_cookie (name) {  
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen) {
	var j = i + alen;
	if (document.cookie.substring(i, j) == arg) {
	    var s = document.cookie.indexOf(";", j);
	    if (s == -1) {
		s = clen;
	    }
	    var cval = unescape(document.cookie.substring(j, s));
	    if (typeof(cval) == 'undefined') {
		return null;
	    }
	    else {
		return cval;
	    }
	}
	i = document.cookie.indexOf(" ", i) + 1;
	if (i == 0) {
	    break;
	}
    }
    return null;
}

function save_language() {
    var expDays = 90;
    var exp	= new Date(); 
    exp.setDate(exp.getDate() + expDays);
    set_cookie('language', langobj.language, exp, "/");
    if (get_cookie('language') != langobj.language) {
	add_get(global_gets, 'language', langobj.language);
    }
    else {
	remove_get(global_gets, 'language');
    }
}

function switch_language(lang) {
    langobj.language = lang;
    save_language();
    url_load(page_url, page_gets);
}

function init_language(def_lang, switchyn) {
    var langval;
    var gval = find_get(global_gets, 'language');
    var cval = get_cookie('language');

    if (gval != null) {
	langval = gval;
    }
    else if (cval != null) {
	langval = cval;
    }
    else {
	langval = def_lang;
    }

    if (typeof(switchyn) == "boolean") {
	langobj.changeyn = switchyn;
    }

    if (!switchyn) {
	langobj.changeyn = false;
	langobj.language = langval;
    }
    else {
	langobj.language = langval;
    }

    // Switch from Get to Cookie when there already is a cookie!
    if (cval != null) {
	if (cval != langval) {
	    save_language();
	}
	else {
	    remove_get(global_gets, 'language');
	}
    }

    langobj.txt_webtitel = "Aan de Oude Delft";

    if (langobj.language == 'nl') {
	langobj.txt_sluitvenster = 'Venster sluiten';
	langobj.decimal_sep = ',';
	langobj.kilo_sep = '.';
    }
    else {
	langobj.txt_sluitvenster = 'Close window';
	langobj.decimal_sep = '.';
	langobj.kilo_sep = ',';
    }
}

function bedrag2str (bedrag, nozero) {
    var bstr = "" + bedrag;
    var n = bstr.length;
    if (bedrag == 0) {
	return "&nbsp;";
    }
    if (n > 6) {
	return bstr.substring(0, n-6) + langobj.kilo_sep + bstr.substring(n-6, n-3) + langobj.kilo_sep + bstr.substring(n-3, n);
    }
    else if (n > 3) {
	return bstr.substring(0, n-3) + langobj.kilo_sep + bstr.substring(n-3, n);
    }
    else {
	return bstr;
    }
}

function add_gets2url (urlstr) {
    var argv = add_gets2url.arguments;
    var argc = argv.length;

    var gets_str = "";
    var i, k, tgets;
    for (i = 1; i < argc; i++) {
	tgets = argv[i];
	if (typeof(tgets) == "object" && typeof(tgets.length) == "number") {
	    for (k = 0; k < tgets.length; k++) {
		if (gets_str.length > 0) {
		    gets_str += "&";
		}
		gets_str += tgets[k].key + "=" + tgets[k].value;
	    }
	}
	else if (typeof(tgets) == "string" && tgets != "") {
	    if (gets_str.length > 0) {
		gets_str += "&";
	    }
	    gets_str += tgets;
	}
	else {
	    debug_msg('add_gets2url : bad gets argument (' + typeof(tgets) + ',' + typeof(tgets.length) + ')');
	}
    }

    if (gets_str.length > 0) {
	// Determine whether the url is a PHP file.
	var n = urlstr.length;
	var i = urlstr.indexOf('?');
	if (i > 0) {
	    if (i < n-1) {
		urlstr = urlstr + '&';
	    }
	}
	else {
	    urlstr = urlstr + '?';
	    i = n;
	}

	if (i > 0) {
	    urlstr = urlstr + gets_str;
	}
    }
    return urlstr;
}

function url_load (urlstr, urlgets) {
    if (urlgets == null) {
	window.location.replace(add_gets2url(urlstr, global_gets));
    }
    else {
	window.location.replace(add_gets2url(urlstr, urlgets, global_gets));
    }
    return true;
}

function add_get (getlist, keystr, valstr) {
    var i;
    for (i = 0; i < getlist.length; i++) {
	if (getlist[i].key == keystr) {
	    getlist[i].value = valstr;
	    return;
	}
    }
    getlist[getlist.length] = new function () {
	this.key   = keystr;
	this.value = valstr;
    }
}

function remove_get (getlist, keystr) {
    var i;
    var n = getlist.length-1
    for (i = 0; i <= n; i++) {
	if (getlist[i].key == keystr) {
	    if (i < n) {
		getlist[i] = getlist[n];
		getlist[n] = null;
	    }
	    getlist.length = n;
	    return;
	}
    }
}

function find_get (getlist, keystr) {
    var i;
    for (i = 0; i < getlist.length; i++) {
	if (getlist[i].key == keystr) {
	    if (typeof(getlist[i].value) == 'undefined') {
		return null;
	    }
	    else {
		return getlist[i].value;
	    }
	}
    }
    return null;
}



function get_active_stylesheet() {

    if (!document.styleSheets) {
	return;
    }
    for (var i = 0; i < document.styleSheets.length; i++) {
	if (!document.styleSheets[i].disabled) {
	    return document.styleSheets[i];
	}
    }
}

function get_stylesheet_style(sheet,select,propnm) {
    if (!sheet) {
	return;
    }
    select = select.toLowerCase();
    var sheetrules;
    if (sheet.cssRules) {
	sheetrules = sheet.cssRules;
    }
    else if (sheet.rules) {
	sheetrules = sheet.rules;
    }
    if (sheetrules && sheetrules[0].selectorText) {
	for (var i = 0; i < sheetrules.length; i++) {
	     if (sheetrules[i].selectorText.toLowerCase() == select) {
		 return eval('sheetrules[i].style.' + propnm);
	     }
	}
    }
    return;
}

function get_object_style(object_id,propnm)
{
    var propval, objref;

    if (typeof(object_id) == "string") {
	objref = get_object(object_id);
    }
    else {
	objref = object_id;
    }

    if (typeof(objref) == "object") {
	if (document.defaultView) {
	    propval = document.defaultView.getComputedStyle(objref,"").getPropertyValue(propnm);
	}
	else if (objref.currentStyle) {
	    // remove dashes and change the first following characters to uppercase.
	    var parts = propnm.split('-');
	    var iepropnm = parts[0];
	    for (var i = 1; i < parts.length; i++) {
		    iepropnm += parts[i].substring(0,1).toUpperCase() + parts[i].substring(1,parts[i].length); 
	    }
	    propval = eval('objref.currentStyle.' + iepropnm);
	}
    }
    return propval;
}

function style_to_pixel(stylestr) {
    // this function can only convert pixel (exmpl. '100px') styles.
    if (stylestr && stylestr.substring(stylestr.length-2,stylestr.length) == 'px') {
	return parseInt(stylestr);
    }
}

function get_object_border_width(object_id) {
    var propval, objref, compstyle;
    var l_b, r_b, t_b, b_b;

    if (typeof(object_id) == "string") {
	objref = get_object(object_id);
    }
    else {
	objref = object_id;
    }

    if (typeof(objref) != "object") {
	return;
    }
    if (document.defaultView) {
	compstyle = document.defaultView.getComputedStyle(objref,"");
	if (!compstyle) {
	    return;
	}
	l_b = style_to_pixel(compstyle.getPropertyValue('border-left-width'));
	r_b = style_to_pixel(compstyle.getPropertyValue('border-right-width'));
	t_b = style_to_pixel(compstyle.getPropertyValue('border-top-width'));
	b_b = style_to_pixel(compstyle.getPropertyValue('border-bottom-width'));
    }
    else if (objref.currentStyle) {
	l_b = style_to_pixel(objref.currentStyle.borderLeftWidth);
	r_b = style_to_pixel(objref.currentStyle.borderRightWidth);
	t_b = style_to_pixel(objref.currentStyle.borderTopWidth);
	b_b = style_to_pixel(objref.currentStyle.borderBottomWidth);
    }
    else {
	return;
    }

    return new function() {
	this.left   = 0;
	this.right  = 0;
	this.top    = 0;
	this.bottom = 0;
	if (l_b) {
	    this.left = l_b;
	}
	if (r_b) {
	    this.right = r_b;
	}
	if (t_b) {
	    this.top = t_b;
	}
	if (b_b) {
	    this.bottom = b_b;
	}
    }
}

function get_object_padding_width(object_id) {
    var propval, objref, compstyle;
    var l_p, r_p, t_p, b_p;

    if (typeof(object_id) == "string") {
	objref = get_object(object_id);
    }
    else {
	objref = object_id;
    }

    if (typeof(objref) != "object") {
	return;
    }
    if (document.defaultView) {
	compstyle = document.defaultView.getComputedStyle(objref,"");
	if (!compstyle) {
	    return;
	}
	l_p = style_to_pixel(compstyle.getPropertyValue('padding-left'));
	r_p = style_to_pixel(compstyle.getPropertyValue('padding-right'));
	t_p = style_to_pixel(compstyle.getPropertyValue('padding-top'));
	b_p = style_to_pixel(compstyle.getPropertyValue('padding-bottom'));
    }
    else if (objref.currentStyle) {
	l_p = style_to_pixel(objref.currentStyle.paddingLeft);
	r_p = style_to_pixel(objref.currentStyle.paddingRight);
	t_p = style_to_pixel(objref.currentStyle.paddingTop);
	b_p = style_to_pixel(objref.currentStyle.paddingBottom);
    }
    else {
	return;
    }

    return new function() {
	this.left   = 0;
	this.right  = 0;
	this.top    = 0;
	this.bottom = 0;
	if (l_p) {
	    this.left = l_p;
	}
	if (r_p) {
	    this.right = r_p;
	}
	if (t_p) {
	    this.top = t_p;
	}
	if (b_p) {
	    this.bottom = b_p;
	}
    }
}


function get_object_height(object_id) {

    // returns height inclusief border and padding, if possible

    var o_height, objref;

    if (typeof(object_id) == "string") {
	objref = get_object(object_id);
    }
    else {
	objref = object_id;
    }

    if (typeof(objref) == "object") {
	var i_p = true, i_b = true;
	if (objref.offsetHeight) {
	    o_height = objref.offsetHeight;
	    i_p = browser_info.offset_incl_padding;
	    i_b = browser_info.offset_incl_border;
	}
	else if (document.all && objref.clientHeight) {
	    o_height = objref.clientHeight;
	    i_p = browser_info.client_incl_padding;
	    i_b = browser_info.client_incl_border;
	}
	if (!i_b) {
	    var objbor = get_object_border_width(objref);
	    if (objbor) {
		o_height += objbor.bottom + objbor.top;
	    }
	}
	if (!i_p) {
	    var objpad = get_object_padding_width(objref);
	    if (objpad) {
		o_height += objpad.bottom + objpad.top;
	    }
	}
    }

    return o_height;
}

function get_object_width(object_id) {

    // returns width inclusief border and padding, if possible

    var o_width, objref;

    if (typeof(object_id) == "string") {
	objref = get_object(object_id);
    }
    else {
	objref = object_id;
    }
	

    if (typeof(objref) == "object") {
	var i_p = true, i_b = true;
	if (objref.offsetWidth) {
	    o_width = objref.offsetWidth;
	    i_p = browser_info.offset_incl_padding;
	    i_b = browser_info.offset_incl_border;
	}
	else if (document.all && objref.clientWidth) {
	    o_width = objref.clientWidth;
	    i_p = browser_info.client_incl_padding;
	    i_b = browser_info.client_incl_border;
	}
	if (!i_b) {
	    var objbor = get_object_border_width(objref);
	    if (objbor) {
		o_width	 += objbor.right + objbor.left;
	    }
	}
	if (!i_p) {
	    var objpad = get_object_padding_width(objref);
	    if (objpad) {
		o_width	 += objpad.right + objpad.left;
	    }
	}
    }

    return o_width;
}


function get_object_size(object_id) {

    var o_width	 = 0;
    var o_height = 0;
    var objref;

    if (typeof(object_id) == "string") {
	objref = get_object(object_id);
    }
    else {
	objref = object_id;
    }


    if (typeof(objref) == "object") {
	var objbor = get_object_border_width(objref);
	var objpad = get_object_padding_width(objref);
	var i_p = true, i_b = true;

	if (objref.offsetHeight) {
	    o_height = objref.offsetHeight;
	    o_width  = objref.offsetWidth;
	    i_p = browser_info.offset_incl_padding;
	    i_b = browser_info.offset_incl_border;
	}
	else if (document.all && objref.clientHeight) {
	    o_height = objref.clientHeight;
	    o_width  = objref.clientWidth;
	    i_p = browser_info.client_incl_padding;
	    i_b = browser_info.client_incl_border;
	}

	if (!i_b && objbor) {
	    o_height += objbor.bottom + objbor.top;
	    o_width  += objbor.right  + objbor.left;
	}
	if (!i_p && objpad) {
	    o_height += objpad.bottom + objpad.top;
	    o_width  += objpad.right  + objpad.left;
	}

	return new function() {
	    this.width	 = o_width;
	    this.height	 = o_height;
	    this.padding = objpad;
	    this.border	 = objbor;
	};
    }
}




function get_object_pos(object_id) {

    var objref;
    var o_left = 0;
    var o_top  = 0;
    var o_left_rel = 0;
    var o_top_rel = 0;

    if (typeof(object_id) == "string") {
	objref = get_object(object_id);
    }
    else {
	objref = object_id;
    }

    if (typeof(objref) == "object") {
	var objsize = get_object_size(objref);

	if (objref.offsetParent) {
	    o_left_rel = objref.offsetLeft;
	    o_top_rel  = objref.offsetTop;
	    if (objref.scrollLeft) {
		o_left += objref.scrollLeft;
	    }
	    if (objref.scrollTop) {
		o_top += objref.scrollTop;
	    }

	    while (objref.offsetParent) {
		o_top  += objref.offsetTop;
		o_left += objref.offsetLeft;
		if (objref.scrollLeft) {
		    o_left -= objref.scrollLeft;
		}
		if (objref.scrollTop) {
		    o_top -= objref.scrollTop;
		}
		objref	= objref.offsetParent;
	    }
	}
	else if (objref.x) {
	    o_left     = objref.x;
	    o_top      = objref.y;
	    o_left_rel = objref.x;
	    o_top_rel  = objref.y;
	}
	else {
	    return;
	}

	return new function() {
	    this.left	  = o_left;
	    this.top	  = o_top;
	    this.left_rel = o_left_rel;
	    this.top_rel  = o_top_rel;
	    if (objsize) {
		this.right	= o_left + objsize.width - 1;
		this.bottom	= o_top	 + objsize.height - 1;
		this.right_rel	= o_left_rel + objsize.width - 1;
		this.bottom_rel = o_top_rel  + objsize.height - 1;
		this.size	= objsize;
	    }
	};
    }
}

function set_cell_height(object_id, nheight) {

    var objref;

    if (typeof(object_id) == "string") {
	objref = get_object(object_id);
    }
    else {
	objref = object_id;
    }

    if (typeof(objref) == "object" && objref.style) {
	var corr_height = 0;
	if (!browser_info.style_incl_padding) {
	    var padobj = get_object_padding_width(objref);
	    if (padobj) {
		corr_height += padobj.top + padobj.bottom;
	    }
	}
	if (!browser_info.style_incl_border) {
	    var borobj = get_object_border_width(objref);
	    if (borobj) {
		corr_height += borobj.top + borobj.bottom;
	    }
	}
	objref.style.height = (nheight - corr_height) + 'px';
	var real_height = get_object_height(objref);
	if (real_height != nheight) {
	    // table weirdness!!!  mozilla?
	    debug_msg('bad height : ' + real_height + ' != ' + nheight + ' (' + corr_height + ')');
	    var err = nheight - real_height;
	    if (err > 0 && err <= corr_height) {
		corr_height -= err;
		objref.style.height = (nheight - corr_height) + 'px';
	    }
	}
    }
}

function get_object(object_id) {

    var objref;

    if (document.getElementById) {
	objref = document.getElementById(object_id);
    }
    else if (document.all) {
	eval ('objref = document.all.' + object_id + ';');
    }

    if (typeof(objref) == "object" && objref != null) {
	return objref;
    }

    /* Check for form/elements name */
    var formobj;
    for (var i = document.forms.length-1; i >= 0; i--) {
	 formobj = document.forms[i];
	 if (formobj.name == object_id) {
	     return formobj;
	 }
	 for (var k = formobj.elements.length-1; k >= 0; k--) {
	     if (formobj.elements[k].name == object_id) {
		 return formobj.elements[k];
	     }
	 }
    }

    /* Check for image name */
    for (var i = document.images.length-1; i >= 0; i--) {
	 if (document.images[i] == object_id) {
	     return document.images[i];
	 }
    }

    return NullObject;
}

function popup_image(img_url, img_title, img_width, img_height, img_persist) {

    var p_top	 = 0;
    var p_left	 = 0;
    var p_width	 = 640;
    var p_height = 480;
    var p_tborder   = 50;
    var p_cborder   = 100;
    var p_bborder   = 50;
    var p_features  = 'toolbar=no,menubar=no,scrollbars=yes,resizable=yes,location=no,directories=no,status=no,channelmode=no';

    if (img_width > 0) {
	p_width	 = img_width;
    }
    if (img_height > 0) {
	p_height = img_height;
    }

    var sheet = get_active_stylesheet();
    if (sheet) {
	if (sheet.href && sheet.href != "") {
	    p_stylehref = sheet.href;
	}
	var tmpval;
	tmpval = style_to_pixel(get_stylesheet_style(sheet, 'td#pimg_tborder', 'height'));
	if (typeof(tmpval) != "undefined") {
		p_tborder = parseInt(tmpval);
	}
	tmpval = style_to_pixel(get_stylesheet_style(sheet, 'td#pimg_bborder', 'height'));
	if (typeof(tmpval) != "undefined") {
		p_bborder = tmpval;
	}
	tmpval = style_to_pixel(get_stylesheet_style(sheet, 'td#pimg_cborder', 'width'));
	if (typeof(tmpval) != "undefined") {
		p_cborder = tmpval;
	}
    }
      
    p_width  += p_cborder;
    p_height += p_tborder + p_bborder;

    var screenW = 1024;
    var screenH = 768;

    if (screen.availWidth) {
	screenW = screen.availWidth;
	screenH = screen.availHeight;
    }
    else if (screen.width) {
	screenW = screen.width;
	screenH = screen.height;
    }

    if (p_width > screenW - 20) {
	p_width = screenW - 20;
    }
    if (p_height > screenH - 40) {
	p_height = screenH - 40;
    }

    p_top  = Math.floor((screenH - p_height) / 2);
    p_left = Math.floor((screenW - p_width) / 2);

    p_features += ',width=' + p_width + ',height=' + p_height + ',top=' + p_top + ',left=' + p_left + ',screenX=' + p_left + ',ScreenY=' + p_top;


    if (!img_persist && popup_win && !popup_win.closed) {
	popup_win.close();
	popup_win  = window.open('', '_bigimage', p_features);
    }
    else {
	popup_cnt += 1;
	popup_win  = window.open('', '_bigimage' + popup_cnt, p_features);
    }

    if (typeof(popup_win) == 'undefined' || typeof(popup_win.document) == 'undefined') {
	return false;
    }

    popup_win.document.open();
    popup_win.document.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n');
    popup_win.document.write('<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\n');
    popup_win.document.write('<link rel="stylesheet" type="text/css" href="' + popup_css + '">\n');
    popup_win.document.write('<title>' + popup_title + '</title>\n');
    popup_win.document.write('</head>\n<body class="imgpopup">\n');
    popup_win.document.write('<table class="imgpopup" cellspacing="0"><tbody>\n');
    popup_win.document.write('<tr><td id="pimg_tborder"><span>' + img_title + '</span></td></tr>\n');
    popup_win.document.write('<tr><td id="pimg_center"><img src="' + img_url + '" alt="big image" class="bigimage"></td></tr>\n');
    popup_win.document.write('<tr><td id="pimg_bborder"><span><a href="javascript:window.close();">');
    popup_win.document.write(langobj.txt_sluitvenster);
    popup_win.document.write('</a></span></td></tr>\n</tbody></table>\n</body>\n</html>\n');
    popup_win.document.close();

    return true;
}

function popup_window(win_url, win_width, win_height, win_persist) {

    var p_top	 = 0;
    var p_left	 = 0;
    var p_width	 = 640;
    var p_height = 480;
    var p_tborder   = 50;
    var p_cborder   = 100;
    var p_bborder   = 50;
    var p_features  = 'toolbar=no,menubar=no,scrollbars=yes,resizable=yes,location=no,directories=no,status=no,channelmode=no';

    if (win_width > 0) {
	p_width	 = win_width;
    }
    if (win_height > 0) {
	p_height = win_height;
    }

    var screenW = 1024;
    var screenH = 768;

    if (screen.availWidth) {
	screenW = screen.availWidth;
	screenH = screen.availHeight;
    }
    else if (screen.width) {
	screenW = screen.width;
	screenH = screen.height;
    }

    if (p_width > screenW - 20) {
	p_width = screenW - 20;
    }
    if (p_height > screenH - 40) {
	p_height = screenH - 40;
    }

    p_top  = Math.floor((screenH - p_height) / 2);
    p_left = Math.floor((screenW - p_width) / 2);

    p_features += ',width=' + p_width + ',height=' + p_height + ',top=' + p_top + ',left=' + p_left + ',screenX=' + p_left + ',ScreenY=' + p_top;

    if (!win_persist && popup_win && !popup_win.closed) {
	popup_win.close();
	popup_win  = window.open(win_url, '_popup', p_features);
    }
    else {
	popup_cnt += 1;
	popup_win  = window.open(win_url, '_popup' + popup_cnt, p_features);
    }

    if (typeof(popup_win) == 'undefined') {
	return false;
    }

    return true;
}

function write_imglink (linkurl, imgurl, tooltip, imgname, imgclass, imgerr, linkclass) {
    document.write('<a href="' + linkurl + '" title="' + tooltip + '"');
    if (linkclass != "") {
	document.write(' class="' + linkclass + '"');
    }
    document.write('><img src="' + imgurl + '" alt="' + tooltip + '"');
    if (imgname != "") {
	document.write(' name="' + imgname + '"');
    }
    if (imgerr != "") {
	document.write(' OnError="' + imgerr + '"');
    }
    if (imgclass != "") {
	document.write(' class="' + imgclass + '"');
    }
    document.write('></a>\n');
}


function write_navigation() {
    var url_str, name_str, tip_str;

    document.write('<table id="nav"><tbody><tr><td>');
    for (var i = 0; i < nav_links.length; i++) {
	if (langobj.language == 'nl') {
	    url_str  = nav_links[i].url;
	    name_str = nav_links[i].name_nl;
	    tip_str  = nav_links[i].tip_nl;
	}
	else {
	    url_str  = nav_links[i].url;
	    name_str = nav_links[i].name_en;
	    tip_str  = nav_links[i].tip_en;
	}
	if (tip_str != "") {
	    tip_str = ' title="' + tip_str + '"';
	}
	if (nav_links[i].addg) {
	    url_str = add_gets2url(url_str, global_gets);
	}
	document.write('<a href="' + url_str + '"' + tip_str + '>' + name_str + '</a></td>\n<td>&nbsp;');
    }
    if (langobj.changeyn) {
	if (langobj.language != 'nl') {
	    document.write('<a href="javascript:switch_language(\'nl\');" class="nav"><img src="flag_nl.png" alt="Nederlands"></a>');
	}
	else {
	    document.write('<a href="javascript:switch_language(\'en\');" class="nav"><img src="flag_en.png" alt="English"></a>');
	}
    }
    document.write('&nbsp;</td></tr></tbody></table>\n');
}




function add_nav_link() {
    var argv = add_nav_link.arguments;
    var argc = argv.length;

    if (argc == 1 && typeof(argv[0]) == "object") {
	nav_links[nav_links.length] = argv[0];
    }
    else if (argc == 4 || argc == 6) {
	var txt1 = "";
	var txt2 = "";
	if (argc == 6) {
	    txt1 = argc[4];
	    txt2 = argc[5];
	}
	nav_links[nav_links.length] = create_navlink(argv[0], argv[1], argv[2], argv[3], txt1, txt2);
    }
    else {
	debug_msg("add_nav_link: bad arguments");
    }
}

function create_navlink(ustr, ag, nm_nl, nm_en, t_nl, t_en) {
    return new function() {
	this.url     = ustr;
	this.addg    = ag;
	this.name_nl = nm_nl;
	this.name_en = nm_en;
	this.tip_nl  = t_nl;
	this.tip_en  = t_en;
    };
}



function write_dhtml_test() {
    document.write('<div id="dhtml_test1" style="position:absolute;top:15px;left:15px;z-index:21;margin:0px;border:0px;padding:0px;background-color:transparent;">');
    document.write('<div id="dhtml_test2" style="height:50px;width:50px;margin:0px;border-top:3px solid black;padding-left:3px;background-color:transparent;">');
    document.write('</div></div>\n');
}

function bp_test(o1_val, o2_val) {
    var s_incl = false;
    var o_incl = false;
    var weird  = false;


    if (o2_val == 50) {
	if (o1_val == 50) {
	    s_incl = true;
	    o_incl = true;
	}
	else if (o1_val == 53) {
	    s_incl = false;
	    o_incl = false;
	}
	else {
	    weird = true;
	}
    }
    else if (o2_val == 53) {
	s_incl = false;
	o_incl = true;
    }
    else if (o2_val == 47) {
	s_incl = true;	// weird?
	o_incl = false;
    }
    else {
	weird = true;
    }

    return new function() {
	this.style_incl	 = s_incl;
	this.offset_incl = o_incl;
	this.is_weird	 = weird;
    }
}

function perform_dhtml_test() {

    var obj1 = get_object('dhtml_test1');
    var obj2 = get_object('dhtml_test2');

    if (!obj1 || !obj2) {
	browser_info.debug_str = "dhtml_test failed!";
    }
    else {
	browser_info.debug_str = "dhtml_test succeeded!";
	browser_info.verified  = true;
	if (obj1.offsetWidth) {
	    var result = bp_test(obj1.offsetWidth, obj2.offsetWidth);
	    browser_info.style_incl_padding  = result.style_incl;
	    browser_info.offset_incl_padding = result.offset_incl;
	    browser_info.weird_padding       = result.is_weird;

	    result = bp_test(obj1.offsetHeight, obj2.offsetHeight);
	    browser_info.style_incl_border  = result.style_incl;
	    browser_info.offset_incl_border = result.offset_incl;
	    browser_info.weird_border       = result.is_weird;
	}

	if (obj2.clientWidth) {
	    var result = bp_test(obj1.clientWidth, obj2.clientWidth);
	    if (!obj1.offsetWidth) {
		browser_info.style_incl_padding  = result.style_incl;
	    }
	    browser_info.client_incl_padding = result.offset_incl;
	    browser_info.weird_padding	 = result.is_weird;

	    result = bp_test(obj1.clientHeight, obj2.clientHeight);
	    if (!obj1.offsetWidth) {
		browser_info.style_incl_border  = result.style_incl;
	    }
	    browser_info.client_incl_border = result.offset_incl;
	    browser_info.weird_border	= result.is_weird;
	}

	var pos1 = get_object_pos(obj1);
	var pos2 = get_object_pos(obj2);

	if (pos1 && pos2) {
	    if (pos1.left != 15 || pos1.top != 15 || pos1.left != pos2.left || pos1.top != pos2.top) {
 	        browser_info.weird_position = true;
     	    }

	    if (debug_on) {
		// final test
		var test1 = get_object_pos(obj1);
		var test2 = get_object_pos(obj2);
		browser_info.debug_str = browser_info.debug_str + "\n" +
		   'obj1 size : ' + obj1.offsetWidth + ', ' + obj1.offsetHeight + ' (' + obj1.clientWidth + ', ' + obj1.clientHeight + ')\n' +
	           'obj2 size : ' + obj2.offsetWidth + ', ' + obj2.offsetHeight + ' (' + obj2.clientWidth + ', ' + obj2.clientHeight + ')\n' +
		   'obj1 pos	: ' + pos1.left + ', ' + pos1.top + ' (' + pos1.left_rel + ', ' + pos1.top_rel + ')\n' +
		   'obj2 pos	: ' + pos2.left + ', ' + pos2.top + ' (' + pos2.left_rel + ', ' + pos2.top_rel + ')\n' +
		   'test1 = ' + pos_to_string(test1) + '\n' +
		   'test2 = ' + pos_to_string(test2);
	    }
	}
    }

    if (debug_on) {
	browser_info.debug_str = browser_info.debug_str + "\n" +
		   'incl padding = ' + browser_info.style_incl_padding + ', ' +
		   browser_info.offset_incl_padding + ', ' +
		   browser_info.client_incl_padding + ', ' +
		   browser_info.weird_padding	    + '\n' +
		   'incl border = ' + browser_info.style_incl_border   + ', ' +
		   browser_info.offset_incl_border  + ', ' +
		   browser_info.client_incl_border  + ', ' +
		   browser_info.weird_border	    + '\n' +
		   'weird postion = ' + browser_info.weird_position + '\n' +
		   'agent = ' + browser_info.nav_ua + '\n' +
		   'verified = ' + browser_info.verified;

	if (browser_info.weird_border || browser_info.weird_padding || browser_info.weird_position) {
	    debug_msg(browser_info.debug_str);
	}
/*
	obj2.style.height = '45px';
	obj2.style.width = '45px';
	test2 = get_object_pos(obj2);
	debug_msg('set style test : ' + pos_to_string(test2));
*/
    }

    if (obj1 && obj2 && browser_info.WC3DOM) {
	// Do some cleanup
	if (obj1.removeChild && obj1.parentNode) {
	    obj1.removeChild(obj2);
	    obj1.parentNode.removeChild(obj1);
	}
    }

}

function pos_to_string(posobj) {
    if (!posobj) {
	return "undefined";
    }
    var sizestr = 'size(x, x)';
    var padstr	= 'padding(x, x, x, x)';
    var borstr	= 'border(x, x, x, x)';
    var posstr	= 'postion(' + posobj.left + ',' + posobj.right + ',' + posobj.top + ', ' + posobj.right + ')';
    if (posobj.size) {
	sizestr = 'size(' + posobj.size.width + ', ' + posobj.size.height + ')';
	if (posobj.size.padding) {
	    padstr = 'padding(' + posobj.size.padding.left + ',' + posobj.size.padding.right + ',' + posobj.size.padding.top + ',' + posobj.size.padding.bottom + ')';
	}
	if (posobj.size.border) {
	    borstr = 'border(' + posobj.size.border.left + ',' + posobj.size.border.right + ',' + posobj.size.border.top + ',' + posobj.size.border.bottom + ')';
	}
    }
    return posstr + " " + sizestr + " " + padstr + " " + borstr;
}


function write_logo(naam) {

    if (browser_info.IEalphapng) {
	document.write('<div id="logo_' + naam + '_ie"></div>');
    }
    else {
	document.write('<div id="logo_' + naam + '"></div>');
    }

}


function add_imgcap(imgobj) {

    if (!imgobj || !imgobj.alt || imgobj.alt == "") {
	return true;
    }
    var moveobj = imgobj;
    if (moveobj.parentNode.tagName == "A") {
        moveobj = moveobj.parentNode;
    }

    // Check for existence of parent imgblock.
    if (moveobj && moveobj.parentNode && moveobj.parentNode.className.search("imgblock") >= 0) {
        return true;
    }

    // Create the div.imgblock element   
    var imgblockobj = document.createElement("div");
    imgblockobj.className = "imgblock";
    imgblockobj.style.styleFloat = imgobj.style.styleFloat;
    imgobj.style.styleFloat = "none";

    if (imgobj.className.search("imgleft") >= 0) {
        imgblockobj.className = imgblockobj.className + " imgleft";
        imgobj.className = imgobj.className.replace("imgleft","");
    }
    else if (imgobj.className.search("imgright") >= 0) {
        imgblockobj.className = imgblockobj.className + " imgright"; 
        imgobj.className = imgobj.className.replace("imgright","");
    }
    else if (imgobj.className.search("imgfull") >= 0) {
        imgblockobj.className = imgblockobj.className + " imgfull"; 
        imgobj.className = imgobj.className.replace("imgfull","");
    }
    else if (imgobj.className.search("imgcenter") >= 0) {
        imgblockobj.className = imgblockobj.className + " imgcenter"; 
        imgobj.className = imgobj.className.replace("imgcenter","");
    }

    // Move imgobj inside imgblockobj (with possible <A> parent)
    moveobj = moveobj.parentNode.replaceChild(imgblockobj,moveobj);
    imgblockobj.appendChild(moveobj);

    // Create caption div
    var capobj = document.createElement("div");
    capobj.className = "imgcap";
    capobj.style.marginLeft = imgobj.style.marginLeft;
    capobj.appendChild(document.createTextNode(imgobj.alt));

    capobj.style.width = imgobj.scrollWidth ? imgobj.scrollWidth + "px" : imgobj.width + "px";


    // Work arround Konqueror bug whick makes the imgblock div twice as wide.
    // Probably goes wrong when imgobj.style.marginleft/right is set :-)
    imgblockobj.style.width = imgobj.scrollWidth ? imgobj.scrollWidth + "px" : imgobj.width + "px";

    imgblockobj.appendChild(capobj);
 
    return true; 
}

function go_anchor(scroll_id, anchor_id) {

    var scrollobj = get_object(scroll_id);
    if (!scrollobj) {
    	debug_msg("scroll object (" + scroll_id + ") not found!");
	return;
    }
    var targetobj = get_object(anchor_id);
    if (!targetobj) {
    	debug_msg("target object to scroll to not found!");
	return;
    }

    var newpos = targetobj.offsetTop - 10;
    if (newpos < 0) {
        newpos = 0;
    }
    scrollobj.scrollTop = newpos;
}
