/*global Modernizr */

var
supportsDOM = document.createElement && document.getElementsByTagName,
  turntableIncrement = 2 * Math.PI;

if (supportsDOM) {
  if (window.addEventListener) {
    window.addEventListener('resize', resetPage, false);
    window.addEventListener('load', initPage, false);
  }
  else if (window.attachEvent) {
    window.attachEvent('onresize', resetPage);
    window.attachEvent('onload', initPage);
  }
}

function centerVertically() {

  'use strict';
  var
    pageDimensions = windowSize(),
    middleBox = document.getElementById('middlebox'),
    siteHeight = middleBox.clientHeight,
    heightDiff = pageDimensions.h - siteHeight,
    lucCard;

  if (heightDiff > 0) {
    middleBox.style.marginTop = Math.round(heightDiff / 2) + 'px';
    document.body.style.overflowY = null;
  } else {
    middleBox.style.marginTop = '0';
    document.body.style.height = siteHeight +'px';
    document.body.style.overflow = 'scroll';
  }
  middleBox.className = 'visible';

  if (!Modernizr.cssreflections) {
    try {
      lucCard = document.getElementById('luc_at_card');
      lucCard.style.height = '513px';
      lucCard.style.backgroundImage = 'url(/gfx/luc.at_white_reflect.png)';
    } catch(x) {}
  }
}


function initPage() {
  var userAgent = window.navigator.userAgent;
  centerVertically();
  if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i)) {
     // iPad or iPhone
  }
  else {
    new Deko();
  }
}

function resetPage() {
  centerVertically();
}

function windowSize() {

  'use strict';
  var
  viewportwidth, viewportheight, docEl = document.documentElement;

  if (typeof window.innerWidth !== 'undefined') {
    // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
    viewportwidth = window.innerWidth;
    viewportheight = window.innerHeight;
  } else if (typeof docEl !== 'undefined' && typeof docEl.clientWidth !== 'undefined' && docEl.clientWidth !== 0) {
    // IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
    viewportwidth = docEl.clientWidth;
    viewportheight = docEl.clientHeight;
  } else {
    // older versions of IE
    viewportwidth = document.getElementsByTagName('body')[0].clientWidth;
    viewportheight = document.getElementsByTagName('body')[0].clientHeight;
  }

  return {
    w: viewportwidth,
    h: viewportheight
  };
}

function makeCircle() {
  'use strict';

  var xFactor = 450,
    yFactor = 450,
    downTrans = 700,
    listItems = document.getElementById('boxlist').children,
    frameCount = listItems.length,
    sectorAngle = (Math.PI / frameCount) * 2,
    timeFactor = (new Date().getTime() % 20000) / 20000,
    curAngle, xPhase, yPhase, xPos, yPos, i;

  for (i = 0; i < frameCount; i++) {
    curAngle = sectorAngle * i + turntableIncrement * timeFactor;
    xPhase = Math.cos(curAngle);
    yPhase = Math.sin(curAngle);
    xPos = xPhase * xFactor;
    yPos = (yPhase - 1) * yFactor;
    listItems[i].style.webkitTransform = 'translateX(' + xPos + 'px) translateY(' + downTrans + 'px) translateZ(' + yPos + 'px)';
    listItems[i].style.zIndex = yPos | 0; // bitwise OR instead of Math.floor()
    // listItems[i].style.opacity = (1-(1-(1 + yPhase)/2)/4);
  }
  setTimeout(function () {
    makeCircle();
  }, 100);
}

