// Copyright 2004 Bart van Leeuwen (bart@bartsplace.net)
// All rights reserved.
//
// Permission granted for use of this script on non commercial,
// privately owned websites.
// For all other uses, contact the author.

var db = null;
var ie = properDOM && !properAttributes;

function initialize() {
  if(!properDOM && !mickyDOM) {
    return;
  }
  document.getElementById('menubar').style.display='block';
  document.getElementById('content').style.display='block';
  // window.captureEvents(Event.UNLOAD);
  // window.onunload=execUnload;
  if(ie) {
    onclick=triggerClose;
    alert('IE is buggy!\n');
  } else {
    window.captureEvents(Event.CLICK);
    window.onclick=triggerClose;
  }
}

var currentlyOpen = null;
var menuName = null;

function toggleMenu(what) {
  if(!what) {
    alert('fatal error, no id.');
  }

  var menun = what;
  what += '-menu-box';
  var menu=document.getElementById(what);
  if(currentlyOpen != null) {
    closeMenu(currentlyOpen)
    menuName = null;
  } else {
    openMenu(menu);
    currentlyOpen = menu;
    menuName = menun;
  }
}

function openMenu(what) {
  if(currentlyOpen) closeMenu(currentlyOpen);
  what.style.visibility='visible';
  what.parentNode.style.borderStyle='inset';
  currentlyOpen=what;
}

function closeMenu(what) {
  if(what) {
    what.style.visibility='hidden';
    what.parentNode.style.borderStyle='solid';
  }
  currentlyOpen=null;
  menuName = null;
}

function viewDb() {
  if(currentlyOpen) closeMenu(currentlyOpen);
  if(!db || !db.document) openDb();
  else {
    db.window.close();
    db = null;
  }
}

var currentlyOpening = null;

function mouseLeftMenu(who) {
  if(!currentlyOpen || (currentlyOpen.parentNode != who)) {
    who.style.borderStyle='solid';
  }
}

function triggerOpen(what, who) {
  if(currentlyOpening == what) return;
  if(!currentlyOpen) { 
    if(!who)
      who=document.getElementById(what+'-menu-box');
    who.parentNode.style.borderStyle='outset';
  } else {
    if(what == menuName) {
      closePending = false;
      return;
    }
    currentlyOpening = what;
    setTimeout("triggeredOpen('"+what+"')",25);
  }
}

function triggeredOpen(what) {
  var o;
  if(!currentlyOpening || currentlyOpening != what) return;
  if(currentlyOpen) closeMenu(currentlyOpen);
  o = document.getElementById(currentlyOpening+'-menu-box');
  if(o) openMenu(o);
  menuName = currentlyOpening;
  currentlyOpening = null;
}

var closePending = false;

function closeCurrent() {
  if(currentlyOpen) closeMenu(currentlyOpen);
}

function triggerClose(what) {
  if(!currentlyOpen) return;
  closePending = true;
  setTimeout("delayClose('"+what+"')",25);
}

function delayClose(what) {
  if(!closePending) return;
  if(currentlyOpen) closeMenu(currentlyOpen);
  currentlyOpening = null;
  menuName = null;
  closePending = false;
}

function execUnload() {
  if(db) db.window.close();
}

function checkProperDOM() {
  var e;
  var r = false;
  if(document.getElementsByTagName) {
    try {
      r = document.getElementsByTagName('*');
    } catch (e) { return false; }
    return r ? true : false;
  }
  return false;
}

function checkMickyDOM() {
  var e;
  if(document.all && document.styleSheets) {
    try {
      GetRule('');
    } catch(e) { return false; }
    return true;
  } else {
    return false;
  }
}

var properDOM = checkProperDOM();
var mickyDOM = checkMickyDOM();

function checkProperAttributes() {
  if(!properDOM || !document.getElementsByTagName('*')[0].attributes)
    return false;
  else
    return true;
}

var properAttributes = checkProperAttributes();

function plainLayout() {
  var elements = null;
  var counter = 0;

  elements = document.getElementsByTagName('*');

  if(!elements.length) {
    alert("No elements in plainLayout()\n");
  }

  for(var i = 0; i < elements.length; i++) {
    var node = elements.item(i);
    var c = doGetAttribute(node,'class');
    if(c && (c == "content-body-left" || c == "content-body-right")) {
      counter++;
      node.style.width="90%";
    }
  }
}

function doGetAttribute(node, what) {
  if(node.getAttribute) return node.getAttribute(what);
  else if(node.attributes) {
    for (var i = 0; i < node.attributes.length; i++) {
      var a = node.attributes.item(i);
      if(a.nodeName == 'class') {
        return a.nodeValue;
      }
    }
  }
  return null;
}

