function closeref(){
	var container = document.getElementById("container");
	var ref = document.getElementById("ref");
	if (ref) container.removeChild(ref);
	screenGo();
}

function showpic(photo,picwidth){
	closeref();
	var path = photo;
	var container = document.getElementById("container");
	var ref = document.createElement("div");
	ref.setAttribute("id","ref");
	ref.setAttribute("style","z-index:1000");
	ref.className = "refwin";
	var closebar = document.createElement("div");
	closebar.className = "closebox";
	closebar.innerHTML = "<a href='javascript:closeref()'>CLOSE [X]</a>";
	var refgif = document.createElement("div");
	refgif.className = "refimg";
	refgif.innerHTML = "<img src='" + photo + "' />";
	
	// position the sample on the screen
	var scrpos = getScrollingPosition();
	var topside = scrpos[1] + 50;/**/
	var leftside = Math.floor(900/2 - (picwidth/2));
	ref.style.left =  leftside + "px";
	ref.style.top = topside + "px";
	ref.appendChild(closebar);
	ref.appendChild(refgif);
	container.appendChild(ref);
	screenMake();
}

function getScrollingPosition()
{
  var position = [0, 0];

  if (typeof window.pageYOffset != 'undefined')
  {
    position = [
        window.pageXOffset,
        window.pageYOffset
    ];
  }

  else if (typeof document.documentElement.scrollTop != 'undefined'
      && document.documentElement.scrollTop > 0)
  {
    position = [
        document.documentElement.scrollLeft,
        document.documentElement.scrollTop
    ];
  }

  else if (typeof document.body.scrollTop != 'undefined')
  {
    position = [
        document.body.scrollLeft,
        document.body.scrollTop
    ];
  }

  return position;
}

function getViewportSize()
{
  var size = [0, 0];

  if (typeof window.innerWidth != 'undefined')
  {
    size = [
        window.innerWidth,
        window.innerHeight
    ];
  }
  else if (typeof document.documentElement != 'undefined'
      && typeof document.documentElement.clientWidth != 'undefined'
      && document.documentElement.clientWidth != 0)
  {
    size = [
        document.documentElement.clientWidth,
        document.documentElement.clientHeight
    ];
  }
  else
  {
    size = [
        document.getElementsByTagName('body')[0].clientWidth,
        document.getElementsByTagName('body')[0].clientHeight
    ];
  }

  return size;
}
function screenMake(){
	toggleSelects('hidden');
	var veil = document.getElementById('screenlayer');
	var port = getViewportSize();
	veil.style.width = port[0] + "px";
	var container = document.getElementById('container');
	var docHeight = retrieveComputedStyle(container,'height');
	//alert("Testing: " + window.innerHeight);
	if (docHeight == "auto"){
		var doc = 4400;
	} else {
		var doc = eval(docHeight.substring(0,docHeight.length-2));
	}
	var maxHeight = Math.max(port[1], doc);
	veil.style.height = maxHeight + "px";
	veil.style.width = "900px";
}
function screenGo(){
	var veil = document.getElementById('screenlayer');
	veil.style.width = "2px";
	veil.style.height = "2px";
	toggleSelects('visible');
}
function retrieveComputedStyle(element, styleProperty)
{
  var computedStyle = null;

  if (typeof element.currentStyle != "undefined")
  {
    computedStyle = element.currentStyle;
  }
  else
  {
    computedStyle = document.defaultView.getComputedStyle(element, null);
  }

  return computedStyle[styleProperty];
}
var fps = 10;
var dir = 'in';

function toggleSelects(vis) {
	var selects = document.getElementsByTagName('select');
	for (var i = 0; i < selects.length; i++) {
		selects[i].style.visibility = vis;
	}
}

function fade(img, time, dir)
{
  img = document.getElementById(img);
  var steps = time * fps;

  if (typeof img.style.opacity != 'undefined')
  {
    var otype = 'w3c';
  }
  else if (typeof img.style.MozOpacity != 'undefined')
  {
    otype = 'moz';
  }
  else if (typeof img.style.KhtmlOpacity != 'undefined')
  {
    otype = 'khtml';
  }
  else if (typeof img.filters == 'object')
  {
    otype = (img.filters.length > 0
        && typeof img.filters.alpha == 'object'
        && typeof img.filters.alpha.opacity == 'number')
        ? 'ie' : 'none';
  }
  else { otype = 'none'; }

  if (otype != 'none')
  {
    if (dir == 'out') { dofade(steps, img, 1, false, otype); }
    else { dofade(steps, img, 0, true, otype); }
  }
}

function dofade(steps, img, value, targetvisibility, otype)
{
  value += (targetvisibility ? 1 : -1) / steps;
  if (targetvisibility ? value > 1 : value < 0)
      value = targetvisibility ? 1 : 0;

  setfade(img, value, otype);

  if (targetvisibility ? value < 1 : value > 0)
  {
    setTimeout(function()
    {
      dofade(steps, img, value, targetvisibility, otype);
    }, 1000 / fps);
  }
}

function setfade(img, value, otype)
{
  switch(otype)
  {
    case 'ie':
      img.filters.alpha.opacity = value * 100;
      break;

    case 'khtml':
      img.style.KhtmlOpacity = value;
      break;

    case 'moz':
      img.style.MozOpacity = (value == 1 ? 0.9999999 : value);
      break;

    default:
      img.style.opacity = (value == 1 ? 0.9999999 : value);
  }
}

function addLoadListener(fn)
{
  if (typeof window.addEventListener != 'undefined')
  {
    window.addEventListener('load', fn, false);
  }
  else if (typeof document.addEventListener != 'undefined')
  {
    document.addEventListener('load', fn, false);
  }
  else if (typeof window.attachEvent != 'undefined')
  {
    window.attachEvent('onload', fn);
  }
  else
  {
    var oldfn = window.onload;
    if (typeof window.onload != 'function')
    {
      window.onload = fn;
    }
    else
    {
      window.onload = function()
      {
        oldfn();
        fn();
      };
    }
  }
}

function formatTo(base, precision)
{
  var a = roundTo(base, precision);
  var s = a.toString();

  var decimalIndex = s.indexOf(".");
  if (precision > 0 && decimalIndex < 0)
  {
    decimalIndex = s.length;
    s += '.';
  }
  while (decimalIndex + precision + 1 > s.length)
  {
    s += '0';
  }
  return s;
}

function roundTo(base, precision)
{
  var m = Math.pow(10, precision);
  var a = Math.round(base * m) / m;
  return a;
}
