/*
Generic functions for www.dotime.nl
Copyright (c) 2003 Ylab, Utrecht, NL
Author: Yohan Creemers
version 1.0
*/

//generic event handling
//window.onerror = reportError;
function reportError(msg, url, line){
  window.status = "Er is een fout opgetreden. Meld dit a.u.b. aan de webmaster. | " + line + ": " + msg;
  return true;
}

var scrollFunctions = new Array();
function addScrollFunction(f){scrollFunctions[scrollFunctions.length] = new Function(f);}
window.onscroll = function() {for (var i=0; i<scrollFunctions.length; i++){scrollFunctions[i]();}}

var loadFunctions = new Array();
function addLoadFunction(f){loadFunctions.push(new Function(f));}
window.onload = function(){for (var i=0; i<loadFunctions.length; i++){loadFunctions[i]();}}

function addKeyPress(id, handler){
  var f = "if(obj = id2object('" + id + "')){obj.onkeypress = " + handler + ";}";
  addLoadFunction(f);
}
addLoadFunction("window.status = document.title;");

var isOpera = (navigator.userAgent.indexOf("Opera") > -1);
var isNav = ((!isOpera) && (navigator.appName == "Netscape"));
var isIE  = ((!isOpera) && (navigator.appName.indexOf("Explorer") > -1 ));
var versionMajor = parseInt(navigator.appVersion);
if (isOpera){ var versionMinor = parseFloat(navigator.userAgent.substring(navigator.userAgent.indexOf("Opera")+6));}
else if (isIE){ var versionMinor = parseFloat(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5));}
else{ var versionMinor = parseFloat(navigator.appVersion);}

//hide horizontal scrollbar
if ((isIE) && (versionMinor >= 6)){addLoadFunction("document.documentElement.style.overflowX = 'hidden';");}
else if ((isIE) && (versionMinor >= 5.1)){addLoadFunction("document.body.style.overflowX = 'hidden';");}
//----------------------------------------------------------------------

//preload hover images when document is loaded
var hoverImages = new Array();
addLoadFunction("if (hoverImages.length==0){return;} for (var i=0; i<hoverImages.length; i++){(new Image()).src = hoverImages[i];}");

/*Prepare image for hover effect
  Sample use:
  <img onload="imgHover('img01')">
  <img onload="imgHover(this)">
  <img onload="imgHover(this, 'hover.gif')">
  <img onload="imgHover(this, 'text=image')">

  img: image object or image id;
  srcHover: url of hover image [optional]
           : when omitted, the postfix "-hover" is added to the original image path
           : when containing an is-character (=) a part of the original url is altered (e.g. 'text=image')
*/
function imgHover(img, srcHover, hotspot){
  //Initialize only once
  img = id2object(img);
  if (img.initialized){return;}

  //Set properties
  img.initialized = true;//been here
  img.srcNormal = img.src;
  if (srcHover){
    if (srcHover.indexOf("=") != -1){
      //replace part of original url
      var pair = srcHover.split("=");
      img.srcHover=img.src.replace(pair[0],pair[1])
    }
    else{img.srcHover = srcHover;}
  }
  else{
    //add -hover by default
    var extpos = img.src.lastIndexOf(".");
    img.srcHover = img.src.substring(0,extpos) + "-hover" + img.src.substring(extpos);
  }
  hoverImages[hoverImages.length] = img.srcHover;
  //Assign hotspot events
  if (arguments.length < 3){var el=img;}
  else {var el = id2object(hotspot)}
  el.onmouseover = function() {img.src = img.srcHover;}
  el.onmouseout  = function() {img.src = img.srcNormal;}

}

//display mailto link
function printMail(username, linktext){
  username = username.toLowerCase() + "@deverborgenstad.nl";
  if (!linktext) {linktext = username;}
  document.write(linktext.link("mailto:" + username));
}

//Convert id into object
function id2object(el){
  if (typeof(el)=="string"){el = document.getElementById(el);}
  return el;
}

/* quick getElement reference */
function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = id2object(arguments[i]);
		if (arguments.length == 1){
			return element;
		}
		elements.push(element);
	}
	return elements;
}

/* grab Elements from the DOM by className */
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

//set a style property or fail gracefully
function setStyle(objectId, prop, value){
  var obj = document.getElementById(objectId);
  if ((obj) && (obj.style[prop] != value)){
    obj.style[prop] = value;
  }
}

function openWindow(url, name, width, height, resizable, toolbar, menubar){
  var args = "";
  if (width){
    width = Math.min(width, screen.availWidth);
    args += "width=" + width + ",left=" + (screen.width - width)/2 + ",";
  }
  if (height){
    height = Math.min(height, screen.availHeight);
    args += "height=" + height + ",top=" + (screen.height - height)/2 + ",";
  }
  if (resizable){args += "resizable,scrollbars,";}
  if (toolbar){args += "toolbar,";}
  if (menubar){args += "menubar,";}
  var newwin = window.open(url, name, args);
  if (!newwin){
    alert("Er kan geen nieuw venster geopend worden.\nEr is waarschijnlijk een 'popup-killer' actief.");
    return false;
  }
  if (newwin.focus){newwin.focus();}
  return newwin;
}

function openModalWindow(url, width, height, resizable, toolbar, menubar){
/*  window.onfocus = function(){
    if (window.modalwindow){
      try{window.modalwindow.focus();}
      catch(ex){window.modalwindow = false; window.onfocus = null;}
    }
  }*/
  window.modalwindow = openWindow(url, "modalwindow", width, height, resizable, toolbar, menubar);
  //return window.modalwindow;
  if (window.modalwindow){
    try{window.modalwindow.focus();}
    catch(ex){window.modalwindow = false; window.onfocus = null;}
  }
}

function closeModalWindow(refresh){
  if (window.opener){
    window.opener.modalwindow = false;
    window.onfocus = null;
    if(refresh){window.opener.location.reload();}
    window.opener.focus();
  }
  window.close();
}

function addScript(script){
  document.write("<scr"+"ipt src='"+script+"'></scr"+"ipt>");
}

function ni(){
  alert('Deze functie is nog niet beschikbaar');
}

Array.prototype.withdraw = function(id){
  for (var i = 0; i<this.length; i++) {
    if (this[i] == id) {
      this.splice(i,1);
      return id;
    }
  }
}

