    function viewportWidth() { //includes scrollbars and body borders
      if (window.innerWidth) {
        return(window.innerWidth);
      }
      else if (document.documentElement && document.documentElement.offsetWidth) {
        return(document.documentElement.offsetWidth);
      }
      else if (document.body) {
        return(document.body.offsetWidth);
      }
      else {
        return(0);
      }
    }

    function viewportHeight() { //includes scrollbars and body borders
      if (window.innerHeight) {
        return(window.innerHeight);
      }
      else if (document.documentElement && document.documentElement.offsetHeight) {
        return(document.documentElement.offsetHeight);
      }
      else if (document.body) {
        return(document.body.offsetHeight);
      }
      else {
        return(0);
      }
    }

function docWidth() { //excludes scrollbars and body borders
  if (document.documentElement && document.documentElement.clientWidth) {
    return(document.documentElement.clientWidth);
  }
  else if (document.body) {
    return(document.body.clientWidth);
  }
  else {
    return(0);
  }
}

function docHeight() { //excludes scrollbars and body borders
  if (document.documentElement && document.documentElement.clientHeight) {
    return(document.documentElement.clientHeight);
  }
  else if (document.body) {
    return(document.body.clientHeight);
  }
  else {
    return(0);
  }
}

function DateEU(date) {
  if (!date) {
  var date = new Date();
  }
  var d = date.getDate();
  var m = date.getMonth() + 1;
  var y = date.getYear();
  y = (y < 1000) ? y + 1900 : y;
  return(d + "." + m + "." + y);
}

function TimeEU(date) {
  if (!date) {
  var date = new Date();
  }
  var h = date.getHours();
  var mi = date.getMinutes();
  mi = (mi < 10) ? "0" + mi : mi; 
  return(h + ":" + mi);
}

function DateTimeEU(date) {
  if (!date) {
  var date = new Date();
  }
  return(DateEU(date) + " " + TimeEU(date));
}
