////////////////////////////////////////////////////////////////////////////////
// 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)
}

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;
  }
}


// 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);
  }
}

////////////////////////////////////////////////////////////////////////////////
// SETTERS
////////////////////////////////////////////////////////////////////////////////
// Zet de 'position' van het element
function setEltPosition(elt, value) {
  if(!elt || elt == null) {
    return;
  }
  elt.style.position = 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 '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');
  }
}

function updateTopButton() {
  if(getElt("top_button")) {
    var topButton = getElt("top_button");
    
    if(getWindowScrollTop() > 0) {
      setEltVisibility(topButton,'visible');
      setEltDisplay(topButton,'block');
      setEltPosition(topButton,'absolute');

      var difR = (getWindowWidth() - offsetRight);
      setEltLeft(topButton,difR);

      var difT = (getWindowHeight() - offsetBottom) + getWindowScrollTop();
      setEltTop(topButton,difT);
    } else {
      setEltVisibility(topButton,'hidden');
      setEltDisplay(topButton,'none');
    }
  }
}

function hideTopBtn() {
  if(getElt("top_button")) {
    var topButton = getElt("top_button");
    setEltVisibility(topButton,'hidden');
    setEltDisplay(topButton,'none');
  }
}
