moveType = null;
movedObject = null;
scrolledObject = null;

function getXmlHttp()
{
  if(window.ActiveXObject)
  {
    var AXObject = new Array("Microsoft.XMLHTTP","MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP");

    for(var i=0; i<AXObject.length; i++)
    {
      try
      {
        xmlHttp = new ActiveXObject(AXObject[i]);
      }
      catch (error)
      {}
    }
  }
  else
  {
    try
    {
      xmlHttp = new XMLHttpRequest();
    }
    catch (error)
    {
      xmlHttp = false;
    }
  }
  return xmlHttp;
}

function initialise()
{
  document.path = document.URL.replace("http://" + document.domain, "");
  if(document.path == '/')
  {
    getRandomImage('object5','/graphics/photographs/home/');
  }
}

function getRandomImage(target,dir)
{
  xmlHttp = getXmlHttp()

  if(xmlHttp.readyState == 0 || xmlHttp.readyState == 4)
  {
    var random = Math.random();
    xmlHttp.onreadystatechange=getResponse;
    xmlHttp.open("GET", "/engine.php?rand=" + random + "&cmd=getrandomimage&target=" + target + "&dir=" + dir, true);
    xmlHttp.send(null);
  }
  else
  {
    setTimeout('getRandomImage(\'' + target + '\',\'' + dir + '\')', 100);
  }
}

function changeImage(target,path)
{
  if(document.getElementById(target))
  {
    document.getElementById(target).src = path;
  }
}

function getResponse()
{
  if(xmlHttp.readyState == 4)
  {
    xmlDoc=xmlHttp.responseXML
    var cmd = xmlDoc.getElementsByTagName('cmd')[0].childNodes[0].nodeValue;

    if(cmd == 'getrandomimage')
    {
      path = xmlDoc.getElementsByTagName('path')[0].childNodes[0].nodeValue;
      target = xmlDoc.getElementsByTagName('target')[0].childNodes[0].nodeValue;
      document.getElementById(target).innerHTML = '<img src="' + path + '">';
    }
    if(cmd == 'accessibility')
    {
      location.reload();
    }
  }
}

function scroll(objectId,ev)
{
  ev = ev || window.event;

  if(ev.preventDefault)
  {
    ev.preventDefault();
  }
  else
  {
    ev.returnValue = false;
  }

  target = ev.target || ev.srcElement;

  moveType = 'scroll';
  movedObject = target;
  scrolledObject = document.getElementById(objectId);
}

function mousemove(ev)
{
  ev = ev || window.event;

  if(movedObject)
  {
    if(ev.preventDefault)
    {
      ev.preventDefault();
    }
    else
    {
      ev.returnValue = false;
    }

    if(moveType == 'scroll')
    {
      currentYCoord = ev.clientY;

      proportion = (scrolledObject.offsetHeight - scrolledObject.parentNode.offsetHeight+2) / (scrolledObject.parentNode.offsetHeight - movedObject.offsetHeight);

      if(currentYCoord > scrolledObject.parentNode.offsetTop + scrolledObject.parentNode.parentNode.offsetTop + movedObject.offsetHeight/2 && currentYCoord < scrolledObject.parentNode.offsetTop + scrolledObject.parentNode.offsetHeight + scrolledObject.parentNode.parentNode.offsetTop - movedObject.offsetHeight/2)
      {
        movedObject.style.top = movedObject.offsetTop - (movedObject.offsetTop - currentYCoord) - scrolledObject.parentNode.parentNode.offsetTop - movedObject.offsetHeight/2 + "px"; 
        scrolledObject.style.top = (scrolledObject.parentNode.offsetTop - movedObject.offsetTop)*proportion + "px"; 
      }
    }
  }
}

function mouseup()
{
  if(movedObject)
  {
    moveType = null;
    movedObject = null;
  }
}

function accessibility(mode)
{
  xmlHttp = getXmlHttp()

  if(mode == 1)
  {
    stylesheet = "/stylesheet.css"
  }
  if(mode == 2)
  {
    stylesheet = "/stylesheet2.css"
  }
  if(mode == 3)
  {
    stylesheet = "/stylesheet3.css"
  }

  if(xmlHttp.readyState == 0 || xmlHttp.readyState == 4)
  {
    var random = Math.random();
    xmlHttp.onreadystatechange=getResponse;
    xmlHttp.open("GET", "/engine.php?rand=" + random + "&cmd=accessibility&stylesheet=" + stylesheet, true);
    xmlHttp.send(null);
  }
  else
  {
    setTimeout('setAccessibilityLevel(\'' + level + '\')', 100);
  }
}

document.onmousemove = mousemove;
document.onmouseup = mouseup;
