/*******************************************************************************
  Deze website draait op het IPROX-platform van InfoProjects bv., IPROX is een
  state-of-the-art Content Management Systeem voor omvangrijke webomgevingen.
  Voor meer informatie, zie: http://www.infoprojects.nl en http://www.iprox.nl.

  @author : Tim van Uuden
            InfoProjects B.V.
            tim@infoprojects.nl
*******************************************************************************/

////////////////////////////////////////////////////////////////////////////////
// GLOBALS
////////////////////////////////////////////////////////////////////////////////
var is = new getClient();

////////////////////////////////////////////////////////////////////////////////
// GETTERS
////////////////////////////////////////////////////////////////////////////////
// Methode om te achterhalen welke browser het is
function getClient() {
  var agt      = navigator.userAgent.toLowerCase();
  var apv      = navigator.appVersion.toLowerCase();

  this.major   = parseInt(navigator.appVersion);
  this.minor   = parseFloat(navigator.appVersion);
  this.opera   = (agt.indexOf('opera')!=-1);
  this.ns      = ((agt.indexOf('mozilla')!=-1) && ((agt.indexOf('spoofer')==-1) && (agt.indexOf('compatible') == -1)));
  this.ns4     = (this.ns && (this.minor >= 4.03) && (this.major < 5));
  this.ns6     = (this.ns && (this.major == 5) || this.opera);
  this.gecko   = (this.ns && (this.major >= 5));
  this.ie      = (agt.indexOf('msie') != -1);
  this.ie4     = (this.ie && (this.major == 3));
  this.ie45    = (agt.indexOf('msie 4.5') != -1);
  this.ie5     = (this.ie && (this.major == 4));
  this.mac     = (apv.indexOf('macintosh')>0);
  this.win     = (apv.indexOf('win')>0);
  this.ie4comp = ((this.ie4 && !this.mac) || this.ie45 || this.ie5);
  this.ns4comp = (this.ns4);
  this.ns6comp = (this.gecko || this.ns6);
  this.comp    = (this.ie4comp || this.ns4comp || this.ns6comp);

  return (this)
}

var curMouseX = 0;
var curMouseY = 0;

if (is.ns4comp) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;

function getMouseXY(e) {
  curMouseY = getMouseWinTop(e);
  curMouseX = getMouseWinLeft(e);
  if (curMouseY < 0) curMouseY = 0;
  if (curMouseX < 0) curMouseX = 0;
  return true;
}

function getMouseWinTop(e) {
  if (is.ns4comp) return(e.pageY - window.pageYOffset);
  else if (is.ie4comp) return(event.clientY);
  else if (is.ns6comp) return(e.pageY - window.pageYOffset);
}

function getMouseWinLeft(e) {
  if (is.ns4comp) return(e.pageX - window.pageXOffset);
  else if (is.ie4comp) return(event.clientX);
  else if (is.ns6comp) return(e.pageX - window.pageXOffset);
}

// Functie om een methode 'onResize' uit te voeren
function onResize(method) {
  if(is.ns4comp || is.ns6comp) {
    return window.onresize = method;
  } else {
    document.body.onresize = method;
  }
}

// Functie om een methode 'onScroll' uit te voeren
function onScroll(method) {
  if(is.ns4comp || is.ns6comp) {
    return window.onscroll = method;
  } else {
    document.body.onscroll = method;
  }
}

function setEltInnerHtml(elt,value) {
  if(is.ns4comp){
    with(elt.document){
      open();
      write(value);
      close();
    }
  } else {
    elt.innerHTML = value;
  }
}


// Geeft de breedte van het venster
function getWindowWidth() {
  if(is.ns4comp) {
    return window.innerWidth;
  } else if(is.ns6comp) {
    return document.body.clientWidth - 2;
  } else if(is.ie4comp) {
    return document.body.clientWidth;
  }
}

// Geeft de hoogte van het venster
function getWindowHeight() {
  if(is.ns4comp) {
    return window.innerHeight;
  } else if(is.ns6comp) {
    return document.body.clientHeight - 2;
  } else if(is.ie4comp) {
    return document.body.clientHeight;
  }
}

function getWindowScrollTop() {
  if(is.ns4comp || is.ns6comp) {
    return(window.pageYOffset);
  } else if(is.ie4comp) {
    return(document.body.scrollTop);
  }
}

// Geeft het element
function getElt() {
  if(is.ns4comp) {
    var currentLayer = document.layers[getElt.arguments[0]];

    for (var i=1; i<getElt.arguments.length && currentLayer; i++) {
      currentLayer = currentLayer.document.layers[getElt.arguments[i]];
    }
    return currentLayer;
  } else if(is.ie4comp) {
    var elt = eval('document.all.' + getElt.arguments[getElt.arguments.length-1]);
    return(elt);
  } else if(is.ns6comp) {
    var elt = document.getElementById(getElt.arguments[getElt.arguments.length-1]);
    return(elt);
  }
}

// Geeft de 'display' van het element
function getEltDisplay(elt) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    return (elt.display);
  } else if(is.ie4comp) {
    return (elt.style.display);
  } else if(is.ns6comp) {
    return (elt.style.display);
  }
}

// Geeft de 'visibility' van het element
function getEltVisibility(elt) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    return (elt.visibility);
  } else if(is.ie4comp) {
    return (elt.style.visibility);
  } else if(is.ns6comp) {
    return (elt.style.visibility);
  }
}

// Geeft de 'bottom' van het element
function getEltBottom(elt) {
  if(!elt || elt == null) {
    return 0;
  }
  if(is.ns4comp) {
    return (elt.bottom);
  } else if(is.ie4comp) {
    return (elt.style.pixelBottom);
  } else if(is.ns6comp) {
    return (elt.offsetBottom);
  }
}

// Geeft de 'top' van het element
function getEltTop(elt) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    return (elt.top);
  } else if(is.ie4comp) {
    return (elt.style.pixelTop);
  } else if(is.ns6comp) {
    return (elt.offsetTop);
  }
}

// Geeft de 'left' van het element
function getEltLeft(elt) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    return (elt.left);
  } else if(is.ie4comp) {
    return (elt.style.pixelLeft);
  } else if(is.ns6comp) {
    return (elt.offsetLeft);
  }
}

// Geeft de 'width' van het element
function getEltWidth(elt) {
  if(!elt || elt == null) {
    return 0;
  }
  if(is.ns4comp) {
    return(elt.document.width);
  } else if(is.ie4comp) {
    return (elt.offsetWidth);
  } else if(is.ns6comp) {
    return (elt.offsetWidth);
  }
}

// Geeft de 'height' van het element
function getEltHeight(elt) {
  if(!elt || elt == null) {
    return 0;
  }
  if(is.ns4comp) {
    return(elt.document.height);
  } else if(is.ie4comp) {
    return (elt.offsetHeight);
  } else if(is.ns6comp) {
    return (elt.offsetHeight);
  }
}

// Geeft de omringende 'form' van een element
function getForm(formName,elt) {
  if(is.opera || is.ns6comp) {
    return document.forms[formName];
  }
  else if(is.ns4comp || is.ie4comp) {
    if(getForm.arguments.length == 2) {
      return eval("elt.document." + formName);
    } else {
      return eval("document." + formName);
    }
  }
}

// Verstuur het formulier
function formSubmit(formName,elt) { 
  formRef = getForm(formName,elt);
  formRef.submit();
}

////////////////////////////////////////////////////////////////////////////////
// SETTERS
////////////////////////////////////////////////////////////////////////////////
// Zet de 'position' van het element
function setEltPosition(elt, value) {
  if(!elt || elt == null) {
    return;
  }
  elt.style.position = value;
}

// Zet de 'class' van het element
function setEltClass(elt, value) {
  if(!elt || elt == null) {
    return;
  }
  elt.className = value;
}

// Zet de 'display' van het element
function setEltDisplay(elt, value) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    elt.display = value;
  } else if(is.ie4comp) {
    elt.style.display = value;
  } else if(is.ns6comp) {
    elt.style.display = value;
  }
}

// Zet de 'visibility' van het element
function setEltVisibility(elt, value) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    elt.visibility = value;
  } else if(is.ie4comp) {
    elt.style.visibility = value;
  } else if(is.ns6comp) {
    elt.style.visibility = value;
  }
}

// Zet de 'left' van het element
function setEltLeft(elt, x) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    elt.left=x;
  } else if(is.ie4comp) {
    elt.style.pixelLeft=x;
  } else if(is.ns6comp) {
    elt.style.left = (x + 'px');
  }
}

// Zet de 'right' van het element
function setEltRight(elt, x) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    elt.right=x;
  } else if(is.ie4comp) {
    elt.style.pixelRight=x;
  } else if(is.ns6comp) {
    elt.style.right = (x + 'px');
  }
}

// Zet de 'top' van het element
function setEltTop(elt, y) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    elt.top=y;
  } else if(is.ie4comp) {
    elt.style.pixelTop=y;
  } else if(is.ns6comp) {
    elt.style.top= (y + 'px');
  }
}

// Zet de 'width' van het element
function setEltWidth(elt, y) {
  if(!elt || elt == null) {
    return;
  }
  if(is.ns4comp) {
    elt.width=y;
  } else if(is.ie4comp) {
    elt.style.pixelWidth=y;
  } else if(is.ns6comp) {
    elt.style.width= (y + '');
  }
}

// methode om een venster te openen
var options = "width=480,height=360,scrollbars=yes,resizable=yes,menubar=no,status=no,toolbar=no,location=no,directories=no";
function openWindow(URL,props) {
  props = props?props:options;
  window.name = "main";
  if (URL) {
    var whatspopup = window.open(URL, 'popup', props);  // Open a new window and show the specified page
    whatspopup.focus();
  }
}

function hiliteImg(name) {
  theElement = document.images[name];
  S = theElement.src;
  if (S.charAt(S.length-5) == '0') theElement.src = S.slice(0,S.length-5) + '1' + S.slice(S.length-4);
}

function restoreImg(name) {
  theElement = document.images[name];
  S = theElement.src;
  if (S.charAt(S.length-5) == '1') theElement.src = S.slice(0,S.length-5) + '0' + S.slice(S.length-4);
}

/**
 * Functie voor het toevoegen van een bijlage.
 */
function transferName(formName,fromElement,toElement,fileActionElement) {
  var file_name = document.forms[formName].elements[fromElement].value;
  file_name = file_name.substring(file_name.lastIndexOf("\\")+1,file_name.length);
  file_name = file_name.substring(file_name.lastIndexOf("/")+1,file_name.length);
  file_name = regExReplaceIcase(file_name,"[^a-z0-9_.-]","");
  document.forms[formName].elements[toElement].value = file_name;
  document.forms[formName].elements[fileActionElement].value = "add";
}

function fixActiveX() {
  //Determine browser, we only need this for Internet Explorer
  if (navigator.appName == "Microsoft Internet Explorer") {

    //Array of elements to be replaced
    var arrElements = new Array(3);
    arrElements[0] = "object";
    arrElements[1] = "embed";
    arrElements[2] = "applet";

    //Loop over element types
    var arrInd;
    for (arrInd = 0; arrInd < arrElements.length; arrInd++) {

      //set object for brevity
      replaceObj = document.getElementsByTagName(arrElements[arrInd]);

      //loop over element objects returned
      var repInd;
      for (repInd = 0; repInd < replaceObj.length; repInd++ ) {

        //set parent object for brevity
        parentObj = replaceObj[repInd].parentNode;

        //grab the html inside of the element before removing it from the DOM
        newHTML = parentObj.innerHTML;

        //remove element from the DOM
        parentObj.removeChild(replaceObj[repInd]);

        //stick the element right back in, but as a new object
        parentObj.innerHTML = newHTML;

      }
    }
  }
}