var controlHeight = 0;
var sizerSize = 16;
var curTop = 100, curLeft = 100;
var isMouseDown = false;
var controlTimeout;
var resizeArea;
var originX, originY;
var cornerAdjust = sizerSize / 2;
var minSize = 15;
var flashWidth, flashHeight, flashRatio;
var navMode;
var alphaFilter = ' none', greyFilter = ' none';
var logo = "v-bar.png";
var password = false;
var stealth = false;
var shown = false;
var lock = false;

function evalFunction(f)
{
  var req = new XMLHttpRequest();
  if (req)
  {
     req.open('GET', 'function.php?f=' + f, false);
     req.send(null);
     if(req.status == 200 || req.status == 304)
     {
       eval(req.responseText);
     }
     else
     {
       showInfo("There was a server error processing your request: (" + req.responseText + ")", 20, 10);
     }
  }
}

function evalFunctionAsync(f)
{
  var req = new XMLHttpRequest();
  req.onreadystatechange = function()
  {
    if(req.readyState == 4)
    {
      if(req.status == 200 || req.status == 304)
      {
        eval(req.responseText);

      }
      else
      {
        showInfo("There was a server error processing your request: (" + req.responseText + ")", 20, 10);
      }
    }
  };
  req.open('GET', 'function.php?f=' + f, false);
  req.send(null);
}

function getWidth()
{
  if( window.innerWidth && typeof( window.innerWidth ) == 'number' ) {
    //Non-IE 
    return window.innerWidth;
  } else if( document.documentElement && document.documentElement.clientWidth ) {
    //IE 6+ in 'standards compliant mode'
    return document.documentElement.clientWidth;
  } else if( document.body && document.body.clientWidth ) {
    //IE 4 compatible
    return document.body.clientWidth;
  }
  return 0;
}

function getHeight()
{
  if( window.innerHeight && typeof( window.innerHeight ) == 'number' ) {
    //Non-IE
    return window.innerHeight;
  } else if( document.documentElement && document.documentElement.clientHeight ) {
    //IE 6+ in 'standards compliant mode'
    return document.documentElement.clientHeight;
  } else if( document.body && document.body.clientHeight ) {
    //IE 4 compatible
    return document.body.clientHeight;
  }
  return 0;
}

function getScrollX()
{
  if( window.pageXOffset && typeof( window.pageXOffset ) == 'number' ) {
    //Netscape compliant
    return window.pageXOffset;
  } else if( document.body && document.body.scrollLeft ) {
    //DOM compliant
    return document.body.scrollLeft;
  } else if( document.documentElement && document.documentElement.scrollLeft ) {
    //IE6 standards compliant mode
    return document.documentElement.scrollLeft;
  }
  return 0;
}

function getScrollY()
{
  if( window.pageYOffset && typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    return window.pageYOffset;
  } else if( document.body && document.body.scrollTop ) {
    //DOM compliant
    return document.body.scrollTop;
  } else if( document.documentElement && document.documentElement.scrollTop ) {
    //IE6 standards compliant mode
    return document.documentElement.scrollTop;
  }
  return 0;
}

function showInfo(html, x, y)
{
  getElement('infotext').innerHTML = html;
  vanishTop('info', x);
  vanishLeft('info', y);
  showElement('info');
}

function toggleAdvControls()
{
  getElement('passwordtoggle').checked = password;
  getElement('stealthtoggle').checked = stealth;
  getElement('advcontrol').style.display = (getElement('advcontrol').style.display == '' ? 'none' : ''); 
  vanishLeft('advcontrol', stealth ? 10 : 90);
  return false;
}

function passwordClicked()
{
  password = !password;
  if(password)
  {
    evalFunction('passwordclicked');
    if(!password)
    {
      return false;
    }
  }
  return true;
}

function copySizePosition(e1, e2)
{
  vanishLeft(e2, vanishLeft(e1));
  vanishTop(e2, vanishTop(e1));
  vanishHeight(e2, vanishHeight(e1));
  vanishWidth(e2, vanishWidth(e1));
}

function setSize(e, height, width)
{
  vanishHeight(e, height);
  vanishWidth(e, width);  
}

function stealthClicked()
{
  stealth = !stealth;
  if(stealth)
  {
    evalFunction('stealthclicked');
    if(!stealth)
    {
      return false;
    }
  }
  if(stealth)
  {
    document.images['controlhideicon'].src = 'http://static.vanishd.com/v-icon.png';
    document.images['lockhideicon'].src = 'http://static.vanishd.com/v-icon.png';
    hideElement('showdiv');
    hideElement('showdivtable');
    showElement('showstealthdiv');
    setSize('controlhideicon', 10, 10)
    setSize('lockhideicon', 10, 10)
    setSize('showdiv', 0, 0)
  }
  else
  {
    document.images['controlhideicon'].src = 'http://static.vanishd.com/v-bar.png';
    document.images['lockhideicon'].src = 'http://static.vanishd.com/v-bar.png';
    setSize('controlhideicon', 17, 90)
    setSize('lockhideicon', 17, 90)
    setSize('showdiv', 26, 100)
    showElement('showdiv');
    showElement('showdivtable');
    hideElement('showstealthdiv');
  }
  return true;
}

function checkPassword(evt)
{
  return true;
}

function placeSizeResizers()
{
  foreachSizerBox(function(e) { vanishWidth(e, sizerSize); vanishHeight(e, sizerSize); });
  var nw = getElement('sizerboxdivnw');
  vanishLeft(nw, vanishLeft(getContentElement()) - cornerAdjust);
  vanishTop(nw, vanishTop(getContentElement()) - cornerAdjust);
  var ne = getElement('sizerboxdivne')
  vanishLeft(ne, vanishLeft(getContentElement()) + vanishWidth(getContentElement()) - sizerSize + cornerAdjust);
  vanishTop(ne, vanishTop(getContentElement()) - cornerAdjust);
  var sw = getElement('sizerboxdivsw');
  vanishLeft(sw, vanishLeft(getContentElement()) - cornerAdjust);
  vanishTop(sw, vanishTop(getContentElement()) + vanishHeight(getContentElement()) - sizerSize + cornerAdjust);
  var se = getElement('sizerboxdivse');
  vanishLeft(se, vanishLeft(getContentElement()) + vanishWidth(getContentElement()) - sizerSize + cornerAdjust);
  vanishTop(se, vanishTop(getContentElement()) + vanishHeight(getContentElement()) - sizerSize + cornerAdjust);

  var n = getElement('sizerboxdivn');
  vanishLeft(n, vanishLeft(nw) + sizerSize);
  vanishTop(n, vanishTop(nw));
  vanishWidth(n, vanishLeft(ne) - vanishLeft(nw) - sizerSize);
  var s = getElement('sizerboxdivs');
  vanishLeft(s, vanishLeft(n));
  vanishTop(s, vanishTop(sw));
  vanishWidth(s, vanishWidth(n));
  var w = getElement('sizerboxdivw');
  vanishLeft(w, vanishLeft(nw));
  vanishTop(w, vanishTop(nw) + sizerSize);
  vanishHeight(w, vanishTop(sw) - vanishTop(nw) - sizerSize);
  var e = getElement('sizerboxdive');
  vanishLeft(e, vanishLeft(ne));
  vanishTop(e, vanishTop(ne) + sizerSize);
  vanishHeight(e, vanishHeight(w));

  placeViewButtons();
}

function placeViewButtons()
{
  vanishLeft(getElement('modediv'), vanishLeft(getContentElement()) + vanishWidth(getContentElement()) - sizerSize - sizerSize / 2);
  vanishTop(getElement('modediv'), vanishTop(getContentElement()) + sizerSize / 2);
  vanishLeft(getElement('lockdiv'), vanishLeft(getContentElement()) + vanishWidth(getContentElement()) - sizerSize - sizerSize / 2);
  vanishTop(getElement('lockdiv'), vanishTop(getContentElement()) + vanishHeight(getContentElement()) - sizerSize - sizerSize / 2);
}

function getContentElement()
{
  return getElement("vanishdiv");
}

function getContent()
{
  return frames['vanish'];
}

function getCover()
{
  return frames['cover'];
}

function setLocationImpl(urlbox, e)
{
}

function setLocation(urlbox, e)
{
  evalFunction('setlocation');
  setLocationImpl(urlbox, e);
}

function setResizeArea(area)
{
  getElement('sizerboxdiv' + area).style.zIndex = 401;
  showElement(getElement('sizerboxdiv' + area));
  var a = getElement('sizerboxdiv' + area);
  vanishTop(a, 0);
  vanishLeft(a, 0);
  vanishWidth(a, document.all ? document.body.offsetWidth - 4 : window.innerWidth);
  vanishHeight(a, document.all ? document.body.offsetHeight - 4 : window.innerHeight);
  resizeArea = area;
}

function resizeMouseDown(area)
{
  isMouseDown = true;
  foreachSizerBox(function(e) { hideElement(e); });
  switch(area)
  {
  case 'nw':
    originX = vanishLeft(getContentElement()) + vanishWidth(getContentElement());
    originY = vanishTop(getContentElement()) + vanishHeight(getContentElement());
  break;
  case 'ne':
    originX = vanishLeft(getContentElement());
    originY = vanishTop(getContentElement()) + vanishHeight(getContentElement());
  break;
  case 'sw':
    originX = vanishLeft(getContentElement()) + vanishWidth(getContentElement());
    originY = vanishTop(getContentElement());
  break;
  case 'se':
    originX = vanishLeft(getContentElement());
    originY = vanishTop(getContentElement());
  break;
  case 'n':
    originY = vanishTop(getContentElement()) + vanishHeight(getContentElement());
  break;
  case 's':
    originY = vanishTop(getContentElement());
  break;
  case 'e':
    originX = vanishLeft(getContentElement());
  break;
  case 'w':
    originX = vanishLeft(getContentElement()) + vanishWidth(getContentElement());
  break;
  }
  setResizeArea(area);
  return false;
}

function resizeMouseUp(area)
{
  isMouseDown = false;
  if(!lock)
  {
    placeSizeResizers();
    foreachSizerBox(function(e) { e.style.zIndex = 400; showElement(e); });
    overlayClick();
  }
  return false;
}

function overlayClick()
{
  if(navMode == '')
  {
    setNavMode('scrollflash');
    contentFocus();
  }
  else
  {
    setNavMode('');
    document.body.onfocus = contentFocus;
    contentFocus();
  }
  return false;
}

function mouseMoved(event)
{
  if(window.event) event = window.event;
  if(event.clientX + getScrollX() <= 0 || event.clientX + getScrollX() >= getWidth() - 1)
  {
    hideVanish();
    return false;
  }
  switch(navMode)
  {
  case 'scrollflash':
    flashlightMouseMoved(event);
  break;
  default:
    if(isMouseDown)
    {
      resizeContentElement(event);
      placeViewButtons();
    }
    else
    {
      moveContentElement(event);
    }
  break;
  }
//  if(!document.all && sliderValue == 100)
//    copySizePosition(getContentElement(), getElement('vanishbgdiv'));
  return false;
}

function flashlightMouseMoved(event)
{
  if(!event) event = window.event;
  var mouseX = event.pageX ? event.pageX : event.clientX + getScrollX();
  var mouseY = event.pageY ? event.pageY : event.clientY + getScrollY();
  var e = getContentElement();
  if(mouseX < flashWidth / 2)
  {
    vanishLeft(e, 0);
  }
  else if(mouseX + 2 >= getWidth() - flashWidth / 2)
  {
    vanishLeft(e, getWidth() - flashWidth - 2);
  }
  else
  {
    vanishLeft(e, mouseX - (flashWidth / 2));
  }
  e.scrollLeft = vanishLeft(e) + 2;
 
  if(mouseY < flashHeight / 2)
  {
    vanishTop(e, 0);
  }
  else if(mouseY < controlHeight + flashHeight / 2)
  {
    vanishTop(e, controlHeight)
  }
  else if(mouseY + 2 >= getHeight() - flashHeight / 2)
  {
    vanishTop(e, getHeight() - flashHeight - 2);
  }
  else
  {
    vanishTop(e, mouseY - (flashHeight / 2));
  }
  e.scrollTop = vanishTop(e) - controlHeight + 2;

  if(mouseX < (flashHeight / 2) + sizerSize && mouseY < (flashWidth / 2) + sizerSize)
  {
    if(getElement("overlaydiv").style.cursor != "default")
      getElement("overlaydiv").style.cursor = "default";
  }
  else
  {
    if(getElement("overlaydiv").style.cursor == "default")
      getElement("overlaydiv").style.cursor = "url('http://static.vanishd.com/empty.gif'),crosshair";
  }
}

function moveContentElement(event)
{
  {
    var e = getContentElement();
    curLeft = vanishLeft(e);
    var newLeft = curLeft;
    if(!event) event = window.event;
    var mouseX = event.pageX ? event.pageX : event.clientX + getScrollX();
    if(mouseX < curLeft)
    {
      newLeft = mouseX;
    }
    else if(mouseX > curLeft + vanishWidth(e))
    {
      newLeft = mouseX - vanishWidth(e);
    }
    curLeft = vanishLeft(e, newLeft);
    e.scrollLeft = vanishLeft(e) + 2;

    curTop = vanishTop(e);
    var newTop = curTop;
    var mouseY = event.pageY ? event.pageY : event.clientY + getScrollY();
    if(mouseY < controlHeight)
    {
      newTop = controlHeight;
    }
    else if(mouseY < curTop)
    {
      newTop = mouseY;
    }
    else if(mouseY > curTop + vanishHeight(e))
    {
      newTop = mouseY - vanishHeight(e);
    }
    curTop = vanishTop(e, newTop);
    e.scrollTop = vanishTop(e) - controlHeight + 2;
  }

  placeSizeResizers();
  return false;
}

function resizeContentElement(event)
{
  var e = getContentElement();
  if(!event) event = window.event;
  var mouseX = event.pageX ? event.pageX : event.clientX + getScrollX();
  var mouseY = event.pageY ? event.pageY : event.clientY + getScrollY();
  switch(resizeArea)
  {
  case 'nw':
    if(mouseX > originX - minSize)
    {
      mouseX = originX - minSize;
    }
    if(mouseY < controlHeight)
    {
      mouseY = controlHeight;
    }
    else if(mouseY > originY - minSize)
    {
      mouseY = originY - minSize;
    }
    vanishLeft(e, mouseX);
    vanishTop(e, mouseY);
    vanishWidth(e, originX - mouseX);
    vanishHeight(e, originY - mouseY);
  break;
  case 'ne':
    if(mouseX < originX + minSize)
    {
      mouseX = originX + minSize;
    }
    if(mouseY < controlHeight)
    {
      mouseY = controlHeight;
    }
    else if(mouseY > originY - minSize)
    {
      mouseY = originY - minSize;
    }
    vanishLeft(e, originX);
    vanishTop(e, mouseY);
    vanishWidth(e, mouseX - originX);
    vanishHeight(e, originY - mouseY);
  break;
  case 'sw':
    if(mouseX > originX - minSize)
    {
      mouseX = originX - minSize;
    }
    if(mouseY < originY + minSize)
    {
      mouseY = originY + minSize;
    }
    vanishLeft(e, mouseX);
    vanishTop(e, originY);
    vanishWidth(e, originX - mouseX);
    vanishHeight(e, mouseY - originY);
  break;
  case 'se':
    if(mouseX < originX + minSize)
    {
      mouseX = originX + minSize;
    }
    if(mouseY < originY + minSize)
    {
      mouseY = originY + minSize;
    }
    vanishLeft(e, originX);
    vanishTop(e, originY);
    vanishWidth(e, mouseX - originX);
    vanishHeight(e, mouseY - originY);
  break;
  case 'n':
    if(mouseY < controlHeight)
    {
      mouseY = controlHeight;
    }
    else if(mouseY > originY - minSize)
    {
      mouseY = originY - minSize;
    }
    vanishTop(e, mouseY);
    vanishHeight(e, originY - mouseY);
  break;
  case 's':
    if(mouseY < originY + minSize)
    {
      mouseY = originY + minSize;
    }
    vanishTop(e, originY);
    vanishHeight(e, mouseY - originY);
  break;
  case 'e':
    if(mouseX < originX + minSize)
    {
      mouseX = originX + minSize;
    }
    vanishLeft(e, originX);
    vanishWidth(e, mouseX - originX);
  break;
  case 'w':
    if(mouseX > originX - minSize)
    {
      mouseX = originX - minSize;
    }
    vanishLeft(e, mouseX);
    vanishWidth(e, originX - mouseX);
  break;
  }
  e.scrollTop = vanishTop(e) - controlHeight + 2;
  e.scrollLeft = vanishLeft(e) + 2;
  if(!lock)
  {
    hideElement(getElement('modediv'));
    hideElement(getElement('lockdiv'));
  }
  return false;
}

function contentUrlTimeout()
{
  if(getElement('contenturl').size < 24)
  {
    ++getElement('contenturl').size;
    setTimeout("contentUrlTimeout();", 100);
  }
  else
  {
  getElement('contenturl').value='http://';
  if(document.selection) // IE
  {
    getElement('contenturl').select();
  }
  else
  {
    getElement('contenturl').selectionStart = 0;
    getElement('contenturl').selectionEnd = 7;
  }
  }
  if(getElement('coverurl').size > 2)
  {
    --getElement('coverurl').size;
    setTimeout("contentUrlTimeout();", 100);
  }
  else
  {
    hideElement(getElement('coverurl'));
    showElement(getElement('goicon'));
  }
}

function coverUrlTimeout()
{
  if(getElement('coverurl').size < 24)
  {
    ++getElement('coverurl').size;
    setTimeout("coverUrlTimeout();", 100);
  }
  else
  {
    getElement('coverurl').value='http://';
    getElement('coverurl').select();
  }
  if(getElement('contenturl').size > 2)
  {
    --getElement('contenturl').size;
    setTimeout("coverUrlTimeout();", 100);
  }
  else
  {
    hideElement(getElement('contenturl'));
    showElement(getElement('goicon'));;
  }
}

function enterPassword()
{
  document.body.onfocus = function(e) {};
  document.body.onmousemove = function(e) {};
  getElement('controllockdiv').onmouseout = function() {};
  getElement('controllockdiv').onmouseover = function() {};

  clearTimeout(controlTimeout);
  getElement('controlpassword').onblur = hideControlLock;
}

function enterUrl()
{
  getElement('controlform').onsubmit = function() { setLocation(getElement('contenturl'), getContent()); return false; };
  getElement('golink').onclick = function() { setLocation(getElement('contenturl'), getContent()); return false; };
  document.body.onfocus = function(e) {};
  document.body.onmousemove = function(e) {};
  getElement('controlsdiv').onmouseout = function() {};
  getElement('controlsdiv').onmouseover = function() {};

  contentUrlTimeout();

  clearTimeout(controlTimeout);
  getElement('contenturl').onblur = function() { document.body.onmousemove = mouseMoved; getElement('controlsdiv').onmouseover = stopControlTimeout; };
}

function enterCoverUrl()
{
  getElement('controlform').onsubmit = function() { setLocation(getElement('coverurl'), getCover()); return false; };
  getElement('golink').onclick = function() { setLocation(getElement('coverurl'), getCover()); return false; };
  document.body.onfocus = function(e) {};
  document.body.onmousemove = function(e) {};
  getElement('controlsdiv').onmouseout = function() {};
  getElement('controlsdiv').onmouseover = function() {};

  coverUrlTimeout();

  clearTimeout(controlTimeout);
  getElement('coverurl').onblur = function() { document.body.onmousemove = mouseMoved; getElement('controlsdiv').onmouseover = stopControlTimeout; };
}

function resetUrlBoxes()
{
  getElement('controlform').onsubmit = function() { return false; };
  getElement('golink').onclick = function() { return false; };
  hideElement(getElement('goicon'));
  showElement(getElement('contenturl'));
  showElement(getElement('coverurl'));
  getElement('contenturl').value='Hidden Page';
  getElement('coverurl').value='Cover Page';
  getElement('contenturl').size=10;
  getElement('coverurl').size=10;
}

function onLoad()
{
  window.onresize = resizeToWindow;
  resizeToWindow();
  hideVanish();
  placeSizeResizers();
  if(!document.all)
  {
    window.onbeforeunload = onUnload;
  }
  if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)) //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);
  {
    var ffversion=new Number(RegExp.$1) // capture x.x portion and store as a number
    if (ffversion>=3)
    {
      getElement('cover').style.position = 'fixed';
    }
    else
    {
      getElement('coverdiv').style.position = 'fixed';
      getElement('vanishdiv').style.position = 'fixed';
    }
  }
  var i = document.location.href.indexOf('?');
  if(i != -1)
  {
    var params = document.location.href.substring(i + 1);
    i = params.indexOf('bm=');
    if(i != -1)
    {
      var bmparams = params.substring(i + 3);
      if(bmparams.indexOf('&') != -1)
        bmparams = bmparams.substring(0, bmparams.indexOf('&'));
      if(bmparams == 'word')
        frames['cover'].location.href = 'http://static.vanishd.com/word.html';
      else
        frames['cover'].location.href = 'http://www.google.com/';
    }
    i = params.indexOf('u=');
    if(i != -1)
    {
      params = params.substring(i + 2);
      if(params.indexOf('&') != -1)
        params = params.substring(0, params.indexOf('&'));
      if(params.indexOf('://') == -1)
        params = "http://" + params;
      frames['vanish'].location.href = params;
      showVanish();
    }
  }
  if(plink)
  {
    lock = true;
    setTimeout("plinkSize(350, 450, 100, 300, true);", 3000);
    setTimeout("lock = false; getCover().location.href='http://static.vanishd.com/plink.html'; setTimeout('plinkSize(262, 338, 0, 0, false);', 500);", 15000);
  }
}

function plinkSize(finalHeight, finalWidth, finalLeft, finalTop, first)
{
  if(first)
  {
    setSize(getContentElement(), 768, 1024);
    setTimeout("plinkSize();", 100);
  }
//  var finalHeight = 350, finalWidth = 450, finalLeft = 100, finalTop = 300;
  var e = getContentElement();
  var height = vanishHeight(e);
  var width = vanishWidth(e);
  var left = vanishLeft(e);
  var top = vanishTop(e);
  var done = true;
  if(height != finalHeight)
  {
    var oldHeight = height;
    vanishHeight(e, Math.abs(height - finalHeight) > 5 ? height - ((height - finalHeight) * .2) : finalHeight);
    vanishTop(e, top + (oldHeight - vanishHeight(e)) / 2);
    done = false;
  }
  if(width != finalWidth)
  {
    var oldWidth = width;
    vanishWidth(e, Math.abs(width - finalWidth) > 5 ? width - ((width - finalWidth) * .2) : finalWidth);
    vanishLeft(e, left + (oldWidth - vanishWidth(e)) / 2);
    done = false;
  }
  if(finalLeft && left != finalLeft)
  {
    vanishLeft(e, Math.abs(left - finalLeft) > 10 ? left - ((left - finalLeft) * .2) : finalLeft);
    done = false;
  }
  if(finalTop && top != finalTop)
  {
    vanishTop(e, Math.abs(top - finalTop) > 10 ? top - ((top - finalTop) * .2) : finalTop);
    done = false;
  }
  if(done)
  {
    showVanish();
  }
  else
  {
    e.scrollTop = vanishTop(e);
    e.scrollLeft = vanishLeft(e);
    setTimeout("plinkSize(" + finalHeight + ", " + finalWidth + ", " + finalLeft + ", " + finalTop + ", false);", 100);
  }
}

function onUnload(event)
{
}

function contentFocus()
{
  if(!lock)
      getElement("vanish").contentWindow.focus();
}

function resizeToWindow()
{
  resizeElementToWindow(getElement('cover'), 2, 2);
  resizeElementToWindow(getElement('vanish'), 2, 2);
//  resizeElementToWindow(getElement('overlaydiv'));
}

function resizeElementToWindow(e, height, width)
{
  vanishWidth(e, getWidth() + width);
  vanishHeight(e, getHeight() + height - controlHeight);
}

function foreachSizerBox(f)
{
  f(getElement('sizerboxdivne'));
  f(getElement('sizerboxdivnw'));
  f(getElement('sizerboxdivsw'));
  f(getElement('sizerboxdivse'));
  f(getElement('sizerboxdivn'));
  f(getElement('sizerboxdivs'));
  f(getElement('sizerboxdive'));
  f(getElement('sizerboxdivw'));
}

function hideVanish()
{
  isMouseDown = false;
  sliderMouseUp();

  getElement("overlaydiv").onkeydown = function (evt) {return true;};
  if(!lock)
  {
    document.body.onmousemove = function(e) {};
    document.body.onfocus = function(e) {};
//    setNavMode('');
    hideElement(getContentElement());
    hideElement("overlaydiv");
    hideElement("modediv");
    hideElement("lockdiv");
//    hideElement("vanishbgdiv");
    hideElement("info");
    hideControls();
    hideControlLock();
    foreachSizerBox(function(e) { hideElement(e); }); 
  }
}

function showVanish()
{
  evalFunction('showvanish');
  shown = true;
  isMouseDown = false;
  showElement("vanishdiv");
//  if(!document.all && sliderValue == 100)
//    showElement("vanishbgdiv");
  showElement("modediv");
  showElement("lockdiv");
  showElement("overlaydiv");
  contentFocus();
  document.body.onfocus = contentFocus;
  document.body.onmousemove = mouseMoved;
  setNavMode('scrollflash');
  showControls();
}

function showVanishLock()
{
  if(getElement("vanishdiv").style.display == '')
  {
    showControls();
    return;
  }
  isMouseDown = false;
  vanishWidth(getElement('controllockdiv'), 200);
  showElement(getElement("controllockdiv"));
  getElement('controlpassword').focus();
}

function showControls()
{
  vanishWidth(getElement('controllockdiv'), 100);
  hideElement(getElement('controllockdiv'));
  hideElement(getElement('showdiv'));
  showElement(getElement('controlsdiv'));
  resetUrlBoxes();
}

function hideControls()
{
  hideElement(getElement('advcontrol'));
  hideElement(getElement('controlsdiv'));
  if(shown)
    showElement(getElement('showdiv'));
  clearTimeout(controlTimeout);
  getElement('controlsdiv').onmouseover = stopControlTimeout; 
}

function stopControlTimeout()
{
  clearTimeout(controlTimeout);
  getElement('controlsdiv').onmouseout = function(event) { controlTimeout = setTimeout("hideControls();", 3000); };
  getElement('advcontrol').onmouseout = function(event) { controlTimeout = setTimeout("hideControls();", 3000); };
}

function hideControlLock()
{
  getElement('controlpassword').value = '';
  hideElement(getElement('controllockdiv'));
  clearTimeout(controlTimeout);
}

function stopControlLockTimeout()
{
  clearTimeout(controlTimeout);
  getElement('controllockdiv').onmouseout = function(event) { controlTimeout = setTimeout("hideControlLock();", 3000); };
}

function setNavMode(mode)
{
  navMode = mode;
  switch(mode)
  {
  case 'scrollflash':
    document.oncontextmenu = function() { lock = false; hideVanish(); return false; };
    getElement('navmodeicon').src='http://static.vanishd.com/v-icon.png';
    showElement(getContentElement());
    flashWidth = vanishWidth(getContentElement());
    flashHeight = vanishHeight(getContentElement());
    flashRatio = flashWidth / flashHeight;
    document.body.onmousemove = mouseMoved;
    showElement(getElement("overlaydiv"));
    getElement("overlaydiv").style.zIndex=401;
//    hideElement("overlaydiv");
    getElement("overlaydiv").style.cursor = "url('http://static.vanishd.com/empty.gif'),crosshair";
    if(window.addEventListener)  // mozilla
    {
      window.addEventListener('DOMMouseScroll', wheel, false);
    }
    window.onmousewheel = document.onmousewheel = wheel;
    hideElement(getElement("modediv"));
    hideElement(getElement("lockdiv"));
    getElement("overlaydiv").onkeydown = function (evt) {};
  break;
  default:
    getElement("overlaydiv").onkeydown = function (evt) {return true;};
    if(window.removeEventListener)  // mozilla
    {
      window.removeEventListener('DOMMouseScroll', wheel, true);
    }
    window.onmousewheel = document.onmousewheel = function() {};
    getElement('navmodeicon').src='http://static.vanishd.com/v-icon.png';
    showElement(getContentElement());
    document.body.onmousedown = function() {};
    document.body.onmousemove = mouseMoved;
    showElement(getElement("overlaydiv"));
    getElement("overlaydiv").style.zIndex=200;
    getElement("overlaydiv").style.cursor = 'default';
    foreachSizerBox(function(e) { showElement(e); });
    placeSizeResizers();
    contentFocus();
    showElement(getElement("modediv"));
    showElement(getElement("lockdiv"));
  break;
  }
  document.onmouseout = function(evt) { if(!evt) evt = window.event; if(document.all) { if(!document.body.contains(evt.toElement)) hideVanish(); } else if(!evt.relatedTarget) hideVanish(); };
}

function handleScroll(delta)
{
  var adjust = delta > 0 ? 1.2 : .8;
  var e = getContentElement();
  var oldWidth = flashWidth;
  var oldHeight = flashHeight;
  flashWidth = flashWidth * adjust;
  if(flashWidth < 1)
    flashWidth = 1;
  else if(flashWidth > getWidth())
    flashWidth = getWidth();
  else if(flashWidth / flashRatio > getHeight())
    flashWidth = getHeight() * flashRatio;
  if(flashWidth < flashRatio)
    flashHeight = 1;
  else
    flashHeight = flashWidth / flashRatio;
  var newX = vanishLeft(e) - ((flashWidth - oldWidth) / 2); 
  vanishWidth(e, flashWidth);
  var newY = vanishTop(e) - ((flashHeight - oldHeight) / 2); 
  vanishHeight(e, flashHeight);
  if(newX < 0)
  {
    vanishLeft(e, 0);
  }
  else if(newX > getWidth() - flashWidth)
  {
    vanishLeft(e, getWidth() - flashWidth);
  }
  else
  {
    vanishLeft(e, newX);
  }
  e.scrollLeft = vanishLeft(e) + 2;
  if(newY < 0)
  {
    vanishTop(e, 0);
  }
  else if(newY < controlHeight)
  {
    vanishTop(e, controlHeight);
  }
  else if(newY > getHeight() - flashHeight)
  {
    vanishTop(e, getHeight() - flashHeight);
  }
  else
  {
    vanishTop(e, newY);
  }
  e.scrollTop = vanishTop(e) - controlHeight + 2;
//  if(!document.all && sliderValue == 100)
//    copySizePosition(getContentElement(), getElement('vanishbgdiv'));
}

function wheel(evt)
{
  if("none" == getContentElement().style.display)
  {
    return true;
  }
  var delta = 0;
  if(!evt) // IE
  {
    evt = window.event;
  }
  if(evt.wheelDelta) // IE/Opera
  {
    delta = evt.wheelDelta / 120;
    if(window.opera) // reverse polarity on opera
    {
      delta = -delta;
    }
  }
  else if(evt.detail) // Mozilla
  {
    delta = -evt.detail / 3;
  }
  if(delta)
  {
    handleScroll(delta);
  }
  if(evt.preventDefault)
  {
    evt.preventDefault();
  }
  evt.returnValue = false;
}

function scrollCheck()
{
  hideControls();
  if(true)
  {
    setNavMode('scrollflash');
  }
  else
  {
    setNavMode('');
  }
}

function greyscaleCheck()
{
  if(getContentElement().style.filter)
  {
    if(greyscale)
    {
      greyFilter = ' gray';
      getContentElement().style.filter += greyFilter;
    }
    else
    {
      greyFilter = ' none';
      getContentElement().style.filter = alphaFilter;
    }
  }
  else
  {
    showInfo('The grayscale feature is not yet supported in your browser.', 30, 300);
  }
}

function toggleLockMode()
{
  lock = !lock;
  document.images['lockmodeicon'].src = lock ? 'http://static.vanishd.com/lock.gif' : 'http://static.vanishd.com/open.gif';
}
