/***************************** 
	LIGHTBOX FUNCTIES 
*****************************/

function addOverlay(boxw, boxh) {
    var body = document.getElementsByTagName("body")[0];
    var tmp = document.createElement('div');
    tmp.id = 'overlayDiv';
    tmp.onclick = function() {
        removeLightbox();
    };
    tmp.style.left = '0px';
    tmp.style.top = '0px';
    tmp.style.cursor = 'pointer';
    tmp.style.position = 'absolute';
    tmp.style.height = getPageHeight() + "px";
    tmp.style.width = '100%';
    tmp.style.backgroundColor = '#fff';
    tmp.style.zIndex = 200;
    body.appendChild(tmp);
    changeOpac(70, 'overlayDiv');

    var ymargin = Math.floor((document.documentElement.clientHeight - 600) / 2);    
    ymargin = (ymargin > 0 ? ymargin : 0);
    var tmp2 = document.createElement('div');
    tmp2.id = 'overlayDivContent';
    tmp2.style.top = ((window.pageYOffset || document.documentElement.scrollTop || 0) + ymargin) + "px";

    tmp2.style.left = (((window.pageXOffset || document.documentElement.scrollWidth || 0) - boxw) / 2) + "px";
    tmp2.style.position = 'absolute';
    tmp2.style.width = boxw + "px";
    //tmp2.style.backgroundColor = 'fff';
    tmp2.style.height = boxh + "px";
    tmp2.style.border = '0px';
    tmp2.style.zIndex = 210;
    body.appendChild(tmp2);
}
function removeLightbox() {
    var body = document.getElementsByTagName("body")[0];
    body.removeChild(getElement('overlayDiv'));
    body.removeChild(getElement('overlayDivContent'));
}
function lightbox(boxw, boxh, url, data) {
    addOverlay(boxw, boxh); // divs dr in stoppen
    var content = (url ? "<iframe src='" + url + "' width='"+boxw+"px' height='"+boxh+"px'  border='' style='border:0px;' FRAMEBORDER=0 SCROLLING=no ALLOWTRANSPARENCY ></iframe>": data);
    getElement('overlayDivContent').innerHTML = "<div id='overlayDivClose'><a onclick='removeLightbox();'></a></div><div id='overlayDivInnerContent'></div>";
    getElement('overlayDivInnerContent').innerHTML = content;
    return false;
}

function getPageHeight() {
    if (window.innerHeight && window.scrollMaxY) { // Firefox
        yWithScroll = window.innerHeight + window.scrollMaxY;
    } else if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac
        yWithScroll = document.body.scrollHeight;
    } else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
        yWithScroll = document.body.offsetHeight;
    }
    return yWithScroll;
}

function changeOpac(opacity, id) {
    var object = getElement(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}

function getElement(id) {
    if (document.getElementById(id)) {
        return document.getElementById(id);
    } else {
        alert('Element ' + id + ' is niet gevonden!');
    }
}



/*
** siteMenusetClasses("containerID or empty", "className for li with subclass", "className for a which is active according to the url", "(part of) url to match against href, to set active class on");    
** Usage: setMenusetClasses("", "hasSubClass", "activeClass", "/site/whatever");
*/

// siteMenusetClasses('','hasSubClass', 'active', '&{SELF}');

      function siteMenusetClasses(containerID, hasSubClassName, activeClassName, activeURL) {
        if (!hasSubClassName.length || !activeClassName.length) {
          return;
        }
        var containerObj;
        if (containerID.length) { containerObj = document.getElementById(containerID); } else { containerObj = document.body; }
        if (containerObj) {
          // alert(containerObj +" "+ containerObj.id +"\n"+activeURL);
          var divObjs = containerObj.getElementsByTagName("div");
          if (divObjs.length) {
            for(di = 0; di < divObjs.length; di++) {
              // alert(divObjs[di].outerHTML);
              if (divObjs[di].className == "submenu") {
                activeURL = activeURL.replace(/http:..[^\/]*/,"");
                var activeRE = new RegExp(activeURL);
                var ulObjs = containerObj.getElementsByTagName("ul")[0];
                var ulChildren = ulObjs.childNodes;
                if (ulChildren.length) {
                  // alert("Found : "+ulChildren.length);
                  for(i = 0; i < ulChildren.length; i++) {
                      if (ulChildren[i].tagName && ulChildren[i].tagName.toLowerCase() == 'li') {
                        /* Check if top level LI has a child UL element */
                        var subUlObj = ulChildren[i].getElementsByTagName("ul");
                        if (subUlObj && subUlObj.length) {
                          // alert("Found sub ul with: "+ ulChildren[i].outerHTML);
                          ulChildren[i].className = hasSubClassName;
                        }
                      }
                   }
                   // alert("Check 0"+divObjs[di].outerHTML);
                }
                /* Check if top level anchor is same as specified (uses regexp) */
                var anchorElements = ulObjs.getElementsByTagName("a");
                if (anchorElements && activeURL.length) {
                  for(j = 0; j < anchorElements.length; j++) {
                    // alert("Check 3:"+anchorElements[j].href +"\nMatch: "+anchorElements[j].href.match(activeRE) +" \n "+ anchorElements[j].className +" \n "+ activeURL);
                    if (anchorElements[j].href.match(activeRE) && anchorElements[j].className != activeClassName) {
                      // alert("Check 4:"+anchorElements[j].parentNode.outerHTML);
                      anchorElements[j].className = anchorElements[j].className +" "+ activeClassName;
                      if (anchorElements[j].parentNode.tagName.toLowerCase() == "li") {
                          anchorElements[j].parentNode.className = anchorElements[j].parentNode.className +" "+ activeClassName;
                      }
                      siteMenu_setParentClasses(anchorElements[j], activeClassName);
                    }
                  }
                }
                //alert(divObjs[di].outerHTML);
                di = divObjs.length;
              }
            }
          }
        }
}
      
function siteMenu_setParentClasses(startobj, objClass) {
  // alert("setParent "+startobj.outerHTML +","+ objClass);
  /* traverse parent of startObj. if parent has child of type a, change class. Do same with parent of startObj */
  if (startobj) {
    var parent = startobj.parentNode;
    if (parent.tagName.toLowerCase() != "div") {
      // alert(parent.tagName);
      var children = parent.childNodes;
      if (children && children.length) {
        for(i = 0; i < children.length; i++) {
          if (children[i].tagName && children[i].tagName.toLowerCase() == "a") {
            children[i].className = objClass;
          }
        }
      }
      siteMenu_setParentClasses(parent, objClass);
    } else if (parent.className == "sub" ) {
      parent.parentNode.className = parent.parentNode.className +" "+ objClass;
    }
  }
}

