//gdutil
gdutil = {};
//eigenlijk hetzelfde als document.getElementById(id)
gdutil.getElement = function(id)
{
   if (document.getElementById(id))
   {
      return document.getElementById(id);
   }
   else return null;
};
//maak een element, e soort ('div' 'option' 'img' etc )
gdutil.createElement = function (e, obj)
{
   var element = document.createElement(e);
   for (prop in obj)
   {
      element[prop] = obj[prop];
   }
   return element;
};
//waarin komt het element te staan
//eerste argument is de holder ( body, een bepaalde div), daarna de elementen (niet de id's, maar het element zelf )
//die ge-append moeten worden
//bv gdutil.appendchild('body',div1, div2) ( <- zie gd_popup_init())
gdutil.appendChild = function ()
{
   if (this.appendChild.arguments.length > 1)
   {
      var a = this.appendChild.arguments[0];
      for (var i = 1; i < this.appendChild.arguments.length; i++)
      {
         if (arguments[i])
         {
            a.appendChild(this.appendChild.arguments[i]);
         }
      }
      return a;
   }
   else
   {
      return null;
   }
}
//geef de absolute top (y) van element
gdutil.giveElementTop = function(the_obj)
{
   var top = 0;
   var obj = the_obj;
   while (obj && obj.tagName != "BODY")
   {
      if (obj.clientTop)
      {
         top += obj.clientTop;
      }
      if (obj.offsetTop)
      {
         top += obj.offsetTop;
      }
      obj = obj.offsetParent;
   }
   //alert(top);
   return top;
}
//geef de absolute left (x) van element
gdutil.giveElementLeft = function(the_obj)
{
   var left = 0;
   var obj = the_obj;
   while (obj && obj.tagName != "BODY")
   {
      if (obj.clientLeft)
      {
         left += obj.clientLeft;
      }
      if (obj.offsetLeft)
      {
         left += obj.offsetLeft;
      }
      obj = obj.offsetParent;
   }
   //alert(left);
   return left;
}
//geef element terug waarbinnen event was
var gd_isIE = null;
gdutil.returnEventElement = function(evt)
{
   var e_out;
   var ie_var = "srcElement";
   var moz_var = "target";
   var prop_var = "x";
   // "target" for Mozilla, Netscape, Firefox et al. ; "srcElement" for IE
   // evt[moz_var] ? e_out = evt[moz_var][prop_var] : e_out = evt[ie_var][prop_var];
   evt[moz_var] ? e_out = evt[moz_var].id : e_out = evt[ie_var].id;
   evt[ie_var] ? gd_isIE = true : gd_isIE = false;
   return this.getElement(e_out);
}
//
gdutil.addEventByClassName = function(strClassName)
{
   var oElm = document;
   var element;
   var strTagName = "*";
   var arrElements = (strTagName == "*" && oElm.all) ? oElm.all : oElm.getElementsByTagName(strTagName);
   var arrReturnElements = new Array();
   strClassName = strClassName.replace(/\-/g, "\\-");
   var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
   var oElement;
   for (var i = 0; i < arrElements.length; i++)
   {
      oElement = arrElements[i];
      if (oRegExp.test(oElement.className))
      {
         arrReturnElements.push(oElement);
      }
   }
   for (i = 0; i < arrReturnElements.length; i++)
   {
      element = arrReturnElements[i];

      if (element.addEventListener)
      {
         element.addEventListener('mouseover', gd_captureEventAndDoSomething, false);
         /*  element.x = this.giveElementLeft(eDiv);
          element.y = this.giveElementTop(eDiv);*/
      }
      else if (element.attachEvent)
      {
         element.attachEvent('onmouseover', gd_captureEventAndDoSomething);
         /*      element.x = this.giveElementLeft(eDiv);
          element.y = this.giveElementTop(eDiv);*/
      }
   }
   return (arrReturnElements);
}

gdutil.changeOpac = function(opacity, id)
{
   var obj = this.getElement(id).style;
   obj.opacity = (opacity / 100);
   obj.MozOpacity = (opacity / 100);
   obj.KhtmlOpacity = (opacity / 100);
   obj.filter = "alpha(opacity=" + opacity + ")";
}
gdutil.fadestap = 10;
gdutil.fadeTeller = 0;
gdutil.fadeElementId = null;
gdutil.fadein = function()
{
   this.fadeTeller += this.fadestap;
   if (this.fadeTeller >= 100)
   {
      this.fadeTeller = 0;
      this.changeOpac(100, this.fadeElementId);
      this.fadeElement = null;
   }
   else
   {
      this.changeOpac(this.fadeTeller, this.fadeElementId);
      var t = setTimeout('gdutil.fadein()', 50);
   }

}
gdutil.fadeout = function()
{
   this.fadeTeller -= this.fadestap;
   if (this.fadeTeller <= 0)
   {
      this.fadeTeller = 0;
      this.changeOpac(0, this.fadeElementId);
      this.fadeElement = null;
   }
   else
   {
      this.changeOpac(this.fadeTeller, this.fadeElementId);
      var t = setTimeout('gdutil.fadeout()', 50);
   }

}
gdutil.elementOn = null;
/*
 bij behorende functies en parameters

 */
//globale timerclose
var gd_TimerClose = null;
var gd_TimerOpen = null;
//hoelang wachten om te sluiten
var gd_timerWaitToClose = 4000;
var gd_timerWaitToOpen = 500;
var gd_boolCloseClick = true;
var gd_global_Object = null;
function gd_fotodivOver()
{
   gd_boolCloseClick = false;
}
function gd_fotodivOut()
{
   gd_boolCloseClick = true;

}
function gd_popup_init()
{
   var fotodiv = gdutil.createElement("div", {id:'id_fotodiv', className:'fotodiv'});
   if (fotodiv.addEventListener)
   {
      fotodiv.addEventListener('mouseover', gd_fotodivOver, false);
      fotodiv.addEventListener('mouseout', gd_fotodivOut, false);
   }
   else if (fotodiv.attachEvent)
   {
      fotodiv.attachEvent('onmouseover', gd_fotodivOver);
      fotodiv.attachEvent('onmouseout', gd_fotodivOut);
   }
   var fotodiv_submenu = gdutil.createElement("div", {id:'id_fotodiv_submenu', className:'fotodiv_submenu', innerHTML:'dit is het submenu'});
   var fotodiv_opensubmenu = gdutil.createElement("div", {id:'id_fotodiv_opensubmenu', className:'fotodiv_menu', innerHTML:'<a href="javascript:gd_fotodiv_opensub()" title="open submenu">&#x25ba;</a>'});
   fotodiv_opensubmenu.style.display = "block";
   var fotodiv_close = gdutil.createElement("div", {id:'id_fotodiv_close', className:'fotodiv_menu', innerHTML:'<a href="javascript:gd_fotodiv_close()" title="sluit submenu">&#x25c4;</a>'});
   gdutil.appendChild(document.body, fotodiv);
   gdutil.appendChild(gdutil.getElement('id_fotodiv'), fotodiv_opensubmenu, fotodiv_close, fotodiv_submenu);
   gdutil.addEventByClassName('bewoner');
}

function gd_captureEventAndDoSomething(evt)
{

   clearTimeout(gd_TimerOpen);
   if (gdutil.elementOn == null)
   {
      var element = gdutil.returnEventElement(evt);
      //er gaat een 'popup div' open, dus boolean global_DivAanUit op true zetten
      gd_global_DivAanUit = true;
      //zet het referentie object in de global variable daarvoor
      gd_global_Object = element;
      //kleine vertraging aanzetten, in variabel 'timerWait' staat hoe lang die vertraging duurt
      gd_TimerOpen = setTimeout("gd_fotodiv_open()", gd_timerWaitToOpen);
   }

}
/*
 function start_div( referentie van object die actie aanroept )
 */
function gd_fotodiv_open()
{
   //als er geen ander 'popup div' open staat dan wat doen
   var element = gd_global_Object;

   if (gdutil.elementOn == null)
   {
      var alttext = "geen alt text";
      if (element.width)var element_w = parseInt(element.width);
      else if (element.style.width)var element_w = parseInt(element.style.width);
      if (element.height)var element_h = parseInt(element.height);
      else if (element.style.height)var element_h = parseInt(element.style.height);
      if (element.alt)
      {
         alttext = element.alt;
      }
      var x = gdutil.giveElementLeft(element) + element_w + 2;
      var y = gdutil.giveElementTop(element);
      if (gd_isIE)
      {
         x -= 3;
         y -= 3;

      }

      //gdutil.getElement('id_fotodiv').style.height=(element_h-2)+"px";
      gdutil.getElement('id_fotodiv').style.left = x + "px";
      gdutil.getElement('id_fotodiv').style.top = y + "px";
      //gdutil.getElement('id_fotodiv_opensubmenu').style.height=element_h-4+"px";
      //gdutil.getElement('id_fotodiv_close').style.height=element_h-4+"px";
      //gdutil.getElement('id_fotodiv_submenu').style.height=element_h-2+"px";
      gdutil.getElement('id_fotodiv_submenu').style.display = "none";
      gdutil.getElement('id_fotodiv_submenu').innerHTML = "<ul>";
      gdutil.getElement('id_fotodiv_submenu').innerHTML += "<div class=\"fotodiv_submenu\">";
      //gdutil.getElement('id_fotodiv_submenu').innerHTML+="<li><a href=\"/module/groups/addToPersonalGroup?userId=\" title=\"toevoegen aan 'mijn adresboek'\">toevoegen aan 'mijn adresboek'</a></li>";
      gdutil.getElement('id_fotodiv_submenu').innerHTML += "<li><a href=\"/user/getUserByName?userName=" + encodeURIComponent(alttext) + "\" title=\"persoonlijke pagina " + alttext + "\">persoonlijke pagina " + alttext + "</a></li>";
      if (element.title)
      {
         titletext = element.title;
         gdutil.getElement('id_fotodiv_submenu').innerHTML += "<li><a href=\"/user/getUserByName?userName=" + encodeURIComponent(titletext) + "&xsl=user/initialUpdate.xsl\" title=\"gegevens " + titletext + " bewerken\">gegevens " + titletext + " bewerken</a></li>";
      }
      gdutil.getElement('id_fotodiv_submenu').innerHTML += "</div>";
      gdutil.getElement('id_fotodiv_submenu').innerHTML += "</ul>";
      //gdutil.fadeElementId='id_fotodiv';
      //gdutil.changeOpac(0,'id_fotodiv');
      //gdutil.fadein();
      gdutil.getElement('id_fotodiv').style.display = "block";
      //start de 'als er niets gebeurt ' close timer
      gd_TimerClose = setTimeout("gd_fotodiv_close()", gd_timerWaitToClose);
      gdutil.elementOn = element;
   }
}

function gd_fotodiv_close()
{
   if (gdutil.getElement('id_fotodiv'))
   {
      gdutil.getElement('id_fotodiv').style.display = "none";
      gdutil.getElement('id_fotodiv_submenu').style.display = "none";
      gdutil.getElement('id_fotodiv_opensubmenu').style.display = "block";
      gdutil.getElement('id_fotodiv_close').style.display = "none";
      gdutil.elementOn = null;
      //stop close Timer
      gd_boolCloseClick = true;
      clearTimeout(gd_TimerClose);
      clearTimeout(gd_TimerOpen);
   }
}

function gd_fotodiv_opensub()
{
   //er is wat gebeurt dus stop de 'als er niets gebeurt close timer'
   clearTimeout(gd_TimerClose);
   gdutil.getElement('id_fotodiv_submenu').style.display = "block";
   gdutil.getElement('id_fotodiv_opensubmenu').style.display = "none";
   gdutil.getElement('id_fotodiv_close').style.display = "block";
}

function gd_schrijfHTML()
{
   gdutil.getElement("id_fotodiv_submenu").innerHTML = gdutil.getElement("htmltext").value;
}

function gd_gotoPersonalPage(person)
{
   alert("De alttext = " + person);
}

function gd_handle_onclick()
{
   if (gd_boolCloseClick)
   {
      gd_fotodiv_close();
   }
   if (menuControlInlineElement)
   {
      menuControlInline(menuControlInlineElement);
      //return false;
   }
   return true;
}
var menuControlElement = null;
var menuControlInlineElement = null;
if (document.layers) window.captureEvents(Event.MOUSEUP);
window.onmouseup = gd_handle_onclick;
document.onmouseup = gd_handle_onclick;

