

function checkScreenResolution () {
  var currentWidth, currentHeight;
  var requiredWidth = document.getElementById('wrapper').clientWidth;
  var requiredHeight = document.getElementById('wrapper').clientHeight;
  if (typeof(window.innerWidth) == 'number') {
    currentWidth = window.innerWidth;
    currentHeight = window.innerHeight;
  }
  else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
    currentWidth = document.documentElement.clientWidth;
    currentHeight = document.documentElement.clientHeight;
  }
  else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
    currentWidth = document.body.clientWidth;
    currentHeight = document.body.clientHeight;
  }
  if (currentWidth < requiredWidth) {
    document.getElementById('wrapper').style.marginLeft = '0px';
    document.getElementById('wrapper').style.left = '0px';
  }
  else {
    document.getElementById('wrapper').style.marginLeft = '-' + (requiredWidth / 2) + 'px';
    document.getElementById('wrapper').style.left = '50%';
  }
  if (currentHeight < requiredHeight) {
    document.getElementById('wrapper').style.marginTop = '0px';
    document.getElementById('wrapper').style.top = '0px';
  }
  else {
    document.getElementById('wrapper').style.marginTop = '-' + (requiredHeight / 2) + 'px';
    document.getElementById('wrapper').style.top = '50%';
  }
}


function fixPNGs () {
  var imgs = document.getElementsByTagName('img');
  for (var i=0; i<imgs.length; i++) {
    if (imgs[i].src.toLowerCase().substr(imgs[i].src.length-4,4) == '.png') {
      if (document.body.filters && (navigator.appName == 'Microsoft Internet Explorer') && (navigator.appVersion.split('MSIE').length > 1) && (parseFloat(navigator.appVersion.split('MSIE')[1]) >= 5.5)) {
        imgs[i].runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + imgs[i].src + '\')';
        imgs[i].src = 'media/bg_transparent.gif';
      }
      imgs[i].style.display = 'inline';
    }
  }
}


function fixExternalLinks() {
  if (document.getElementsByTagName) {
    var links = document.getElementsByTagName('a');
    for (var i=0; i<links.length; i++) {
      if (links[i].getAttribute('rel') && (links[i].getAttribute('rel').indexOf('external') != -1)) {
        links[i].setAttribute('target', '_blank');
        if (!links[i].getAttribute('title')) {
          links[i].setAttribute('title', '[External] This link will open in a new window');
        }
      }
    }
  }
}


function switchPhoto (newImg) {
  document.getElementById('photo').src = newImg;
}


window.onload = function () {
  checkScreenResolution();
  fixPNGs();
  fixExternalLinks();
  scroller.init();
}


window.onresize = function () {
  location.reload();
  checkScreenResolution();
}


// DHTML scrollbar courtesy of 13thparallel.com
var scroller = {
  init: function() {
    scroller.docH = document.getElementById('content').offsetHeight;
    scroller.contH = document.getElementById('container').offsetHeight;
    scroller.scrollAreaH = document.getElementById('scrollArea').offsetHeight;
    scroller.scrollH = (scroller.contH * scroller.scrollAreaH) / scroller.docH;
    document.getElementById('scroller').style.height = Math.round(scroller.scrollH) + 'px';
    scroller.scrollDist = Math.round(scroller.scrollAreaH - scroller.scrollH);
    if (scroller.scrollDist <= 0) {
      document.getElementById('scrollArea').style.visibility = 'hidden';
    }
    else {
      Drag.init(document.getElementById('scroller'), null, 0, 0, -1, scroller.scrollDist);
      document.getElementById('scroller').onDrag = function (x, y) {
        var scrollY = parseInt(document.getElementById('scroller').style.top);
        var docY = 0 - (scrollY * (scroller.docH - scroller.contH) / scroller.scrollDist);
        document.getElementById('content').style.top = docY + 'px';
      }
    }
  }
}


// Dom-Drag courtesy of youngpup.net
var Drag = {
  obj: null,
  init: function (o, oRoot, minX, maxX, minY, maxY, bSwapHorzRef, bSwapVertRef, fXMapper, fYMapper) {
    o.onmousedown = Drag.start;
    o.hmode = bSwapHorzRef ? false : true;
    o.vmode = bSwapVertRef ? false : true;
    o.root = oRoot && oRoot != null ? oRoot : o;
    if (o.hmode && isNaN(parseInt(o.root.style.left)))
      o.root.style.left = '0px';
    if (o.vmode && isNaN(parseInt(o.root.style.top)))
      o.root.style.top = '0px';
    if (!o.hmode && isNaN(parseInt(o.root.style.right )))
      o.root.style.right = '0px';
    if (!o.vmode && isNaN(parseInt(o.root.style.bottom)))
      o.root.style.bottom = '0px';
    o.minX = typeof minX != 'undefined' ? minX : null;
    o.minY = typeof minY != 'undefined' ? minY : null;
    o.maxX = typeof maxX != 'undefined' ? maxX : null;
    o.maxY = typeof maxY != 'undefined' ? maxY : null;
    o.xMapper = fXMapper ? fXMapper : null;
    o.yMapper = fYMapper ? fYMapper : null;
    o.root.onDragStart = new Function();
    o.root.onDragEnd = new Function();
    o.root.onDrag = new Function();
  },
  start: function (e) {
    var o = Drag.obj = this;
    e = Drag.fixE(e);
    var y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom);
    var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right);
    o.root.onDragStart(x, y);
    o.lastMouseX = e.clientX;
    o.lastMouseY = e.clientY;
    if (o.hmode) {
      if (o.minX != null)
        o.minMouseX = e.clientX - x + o.minX;
      if (o.maxX != null)
        o.maxMouseX = o.minMouseX + o.maxX - o.minX;
    }
    else {
      if (o.minX != null)
        o.maxMouseX = -o.minX + e.clientX + x;
      if (o.maxX != null)
        o.minMouseX = -o.maxX + e.clientX + x;
    }
    if (o.vmode) {
      if (o.minY != null)
        o.minMouseY = e.clientY - y + o.minY;
      if (o.maxY != null)
        o.maxMouseY = o.minMouseY + o.maxY - o.minY;
    }
    else {
      if (o.minY != null)
        o.maxMouseY = -o.minY + e.clientY + y;
      if (o.maxY != null)
        o.minMouseY = -o.maxY + e.clientY + y;
    }
    document.onmousemove = Drag.drag;
    document.onmouseup = Drag.end;
    return false;
  },
  drag: function (e) {
    e = Drag.fixE(e);
    var o = Drag.obj;
    var ey = e.clientY;
    var ex = e.clientX;
    var y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom);
    var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right);
    var nx, ny;
    if (o.minX != null)
      ex = o.hmode ? Math.max(ex, o.minMouseX) : Math.min(ex, o.maxMouseX);
    if (o.maxX != null)
      ex = o.hmode ? Math.min(ex, o.maxMouseX) : Math.max(ex, o.minMouseX);
    if (o.minY != null)
      ey = o.vmode ? Math.max(ey, o.minMouseY) : Math.min(ey, o.maxMouseY);
    if (o.maxY != null)
      ey = o.vmode ? Math.min(ey, o.maxMouseY) : Math.max(ey, o.minMouseY);
    nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));
    ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));
    if (o.xMapper)
      nx = o.xMapper(y);
    else if (o.yMapper)
      ny = o.yMapper(x);
    Drag.obj.root.style[o.hmode ? 'left' : 'right'] = nx + 'px';
    Drag.obj.root.style[o.vmode ? 'top' : 'bottom'] = ny + 'px';
    Drag.obj.lastMouseX = ex;
    Drag.obj.lastMouseY = ey;
    Drag.obj.root.onDrag(nx, ny);
    return false;
  },
  end: function () {
    document.onmousemove = null;
    document.onmouseup = null;
    Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style[Drag.obj.hmode ? 'left' : 'right']), parseInt(Drag.obj.root.style[Drag.obj.vmode ? 'top' : 'bottom']));
    Drag.obj = null;
  },
  fixE: function (e) {
    if (typeof e == 'undefined')
      e = window.event;
    if (typeof e.layerX == 'undefined')
      e.layerX = e.offsetX;
    if (typeof e.layerY == 'undefined')
      e.layerY = e.offsetY;
    return e;
  }
};

