var supported = (document.getElementById || document.all || document.layers);

// pm: page menu, sm: site menu, tm: top menu
var pmList=new Array();
var pmSubList=new Object();
var pmTypes=new Object();
var pmCurMenu="Main";

var pageLanguage="nl";

  var langStrings = new Array();
  if (pageLanguage == "nl")
    {
    langStrings[0] = "Verberg linker menu";
    langStrings[1] = "Toon site menu links";
    langStrings[2] = "Beste beeld met "; 
    langStrings[3] = "Geen site menu";
    langStrings[4] = "Site menu";
    langStrings[5] = "Pagina menu";
    langStrings[6] = "Terug";
    }
  else
    {
    langStrings[0] = "Hide site menu";
    langStrings[1] = "Show site menu on the left";
    langStrings[2] = "Best viewed with ";
    langStrings[3] = "No site menu";
    langStrings[4] = "Site menu";
    langStrings[5] = "Page menu";
    langStrings[6] = "Back";
    }

function tmSwapTo(i)
  {
  var currentMenu = readCookie("tmShowMenu");

  if (currentMenu != "No") // || currentMenu =="")
    {
    displayOff(currentMenu);
    }
  if (currentMenu == i)
    {
    createCookie("tmShowMenu","No");
    }
  else
    {
    displayOn(i);
    createCookie("tmShowMenu",i);
    }
  }

function tmSwap()
  {
  var currentMenu = readCookie("tmShowMenu");
  if (currentMenu == "No" || !(displayOff(currentMenu,1)))
    {
    currentMenu="pageMenuSub";
    displayOn(currentMenu);
    createCookie("tmShowMenu",currentMenu);
    }
  else //displayOff done in condition
    {
    createCookie("tmShowMenu","No");
    }
  }

function tmGetToc(indexpage)
  {
  str = parent.location.href;
  var re = new RegExp(indexpage, "gi");
  var found = re.test(str);
  var found2 = str.match(/.html/gi);
  var tmShowMenu = readCookie("tmShowMenu");
  var returnString = "";
  if (found || (!found2))
    {
    returnString += '<div id="pageMenuSub2"';
    if (!(tmShowMenu == "pageMenuSub2"))
      {
      returnString += ' style="display:none"';
      }
    returnString += '>\n<hr>\n';
    returnString += '<p onClick="tmSwapTo(\'pageMenuSub\')">'+langStrings[6]+'</p>\n<hr>\n';

    if (document.getElementById)
      {
      var showLeft = readCookie("showLeft");
      if (showLeft == "No")
        {
        returnString += '<a href\"#\" onclick=\"swapIndex()\" id="frameclick">'+langStrings[1]+'</a>';
        }
      else
        {
        returnString += '<a href\"#\" onclick=\"swapIndex()\" id="frameclick">'+langStrings[0]+'</a>';
        }
      returnString += '<p><a href="'+self.location.href+'" target="_top">'+langStrings[3]+'</a></p>';
      correctIndex();
      }
    else
      {
      returnString += '<a href=\""+self.location.href+"\" target=\"_top\" id="frameclick">'+langStrings[0]+'</a>';
      }

    returnString += "<hr>\n";

    var Tocbody;
    if (parent.document.body.firstChild.contentWindow.document)
      {
      Tocbody = parent.document.body.firstChild.contentWindow.document;//.body.childNodes;
      }
    var TocLinks = Tocbody.getElementsByTagName("A")
    for (var i=0;i<TocLinks.length;i++)
      {
//      if ((Tocbody[i].nodeName == "A") || (Tocbody[i].nodeName == "a"))
        {
        returnString +='<p><a href="'+TocLinks[i].href+'"';
        if (TocLinks[i].target)
          {
          returnString += ' target="'+TocLinks[i].target+'"';
          }
        returnString +='>'+TocLinks[i].firstChild.data+'</a></p>';
        }
      }
    returnString += '</div>';
    }
  else
    {
    if (tmShowMenu == "pageMenuSub2") //Not possible => correct
      {
      createCookie("tmShowMenu","No");
      }
    }
//  alert(returnString);
  return returnString;
  }

function tmBuildRoot(indexpage)
  {
  str = parent.location.href;
  var re = new RegExp(indexpage, "gi");
  var found = re.test(str);
  var tmShowMenu = readCookie("tmShowMenu");

  var returnString="";

  returnString += '<div id="pageMenuSub"'
  if (!(tmShowMenu == "pageMenuSub"))
    {
    returnString += ' style="display:none"'
    }
  returnString += '>\n<hr><div id="otherMenus">\n';
  if (!found) //No index
    {
    found = str.match(/.html/gi);
    if (!found) //No nothing
      {
      if (document.getElementById)
        {
        returnString += '<p onClick="tmSwapTo(\'pageMenuSub2\')">'+langStrings[4]+'</p>\n';
        }
      else
        {
        returnString += "<a href=\""+self.location.href+'\" target=\"_top\" id="frameclick">'+langStrings[3]+'</a>';
        }
      }
    else
      {
      var query = (str.indexOf("/")+1);
      while (query>0) // There are emulated cookies
        {
        str = str.substring(query);
        query = (str.indexOf("/")+1);
        }
      returnString += "<a href=\""+indexpage+"?"+str+'\" target=\"_top\" class="blacklink" id="frameclick">'+langStrings[4]+'</a>';//href='CVi.html';
      }
    }
  else
    {
    returnString += '<p onClick="tmSwapTo(\'pageMenuSub2\')">'+langStrings[4]+'</p>\n';
    }

  returnString += '</div><hr><p id="lastupdated">';
  returnString += lastMod(pageLanguage);
  returnString += '<p>'+langStrings[2]+'<a href="http://www.opera.com" target="Opera" class="link">Opera</a></p>';

  returnString += "  </div>\n";
//  alert(returnString);
  return returnString;
  }

// Function to print last modified info
function lastMod(whatLanguage)
  {
   var dateStrings = new Array();
   if (whatLanguage == "nl")
     {
     dateStrings[0] = "Laatste wijziging: ";
     dateStrings[1] = "vandaag";
     dateStrings[2] = "gisteren";
     dateStrings[3] = "dagen";
     dateStrings[4] = "weken";
     dateStrings[5] = "maanden";
     dateStrings[6] = "jaren";
     dateStrings[7] = "geleden";
     }
   else
     {
     dateStrings[0] = "Last update: ";
     dateStrings[1] = "today";
     dateStrings[2] = "yesterday";
     dateStrings[3] = "days";
     dateStrings[4] = "weeks";
     dateStrings[5] = "months";
     dateStrings[6] = "years";
     dateStrings[7] = "ago";
     }
   var x = new Date (document.lastModified);
   Modif = new Date(x.toGMTString());
   Year = takeYear(Modif);
   Month = Modif.getMonth();
   Day = Modif.getDate();
   Mod = (Date.UTC(Year,Month,Day,0,0,0))/86400000;
   x = new Date();
   today = new Date(x.toGMTString());
   Year2 = takeYear(today);
   Month2 = today.getMonth();
   Day2 = today.getDate();
   now = (Date.UTC(Year2,Month2,Day2,0,0,0))/86400000;
   daysago = now - Mod;
   if (daysago < 0) return '';
   unit = dateStrings[3];
   if (daysago > 730)
     {
     daysago = Math.round(daysago/365);
     unit = dateStrings[6];
     }
   else if (daysago > 60)
     {
     daysago = Math.round(daysago/30);
     unit = dateStrings[5];
     }
   else if (daysago > 14)
     {
     daysago = Math.round(daysago/7);
     unit = dateStrings[4]
     }
   towrite = dateStrings[0];
   if (daysago == 0) towrite += dateStrings[1];
   else if (daysago == 1) towrite += dateStrings[2];
   else towrite += daysago + ' ' + unit + ' ' + dateStrings[7];
   return towrite;
   }

function takeYear(theDate)
  {
  x = theDate.getYear();
  var y = x % 100;
  y += (y < 38) ? 2000 : 1900;
  return y;
  }

function printHeader()
  {
  printGenHeader("nl","index.html");
  }

function printGenHeader(whatLanguage,indexpage,moreText)
  {
  pageLanguage=whatLanguage;

   if (!(indexpage))
     {
     indexpage="index.html";
     }

  var showLeft=readCookie('showLeft');
  var tmShowMenu=readCookie('tmShowMenu');
  if (!showLeft)
    {
    if (document.getElementById)
      {
      showLeft="No";
      }
    else
      {
      showLeft="Yes";
      }
    createCookie('showLeft',showLeft);
    }
  if (showLeft == "No")
    {
    if (tmShowMenu=="pageMenuSub")
      {
      tmShowMenu="pageMenuSub2";
      createCookie('tmShowMenu',tmShowMenu);
      }
    }
  if (!tmShowMenu)
    {
    tmShowMenu="No";
    createCookie('tmShowMenu',tmShowMenu);
    }

  document.write('<div id="pageMenus" class="pageMenu"><div align="right" onClick="tmSwap()">Menu</div>\n');

  document.write(tmBuildRoot(indexpage));
  document.write(tmGetToc(indexpage));
  
  document.write('</div>');
  }

function getObj(name)
  {
  if (document.getElementById)
    {
    this.obj = document.getElementById(name);
    if (this.obj)
      {
      this.style = document.getElementById(name).style;
      }
    }
  else if (document.all)
    {
    this.obj = document.all[name];
    this.style = document.all[name].style;
    }
  else if (document.layers)
    {
    this.obj = document.layers[name];
    this.style = document.layers[name];
    }
  }

function swapIndex()
  {
  var x = new getObj("frameclick");
  if (parent.document.body.cols=="0,*")
    {
    parent.document.body.cols="150,*";
    x.obj.firstChild.nodeValue=langStrings[0];
    createCookie("showLeft","Yes");
    }
  else
    {
    parent.document.body.cols="0,*";
    x.obj.firstChild.nodeValue=langStrings[1];
    createCookie("showLeft","No");
    }
  }

function correctIndex()
  {
  var showLeft = readCookie("showLeft");
  if (showLeft=="Yes")
    {
    parent.document.body.cols="150,*";
    }
  else
    {
    parent.document.body.cols="0,*";
    }
  }

function pmMenuAdd(name,link,upper)
  {
  var item = new Object;
  item.name=name;
  item.link=name;
  item.upper="Main";
  if (link)
    {
    item.link=link;
    }
  if (upper)
    {
    item.upper=upper;
    }
  var upup;
  for (var i in pmList)
    {
    if (pmList[i].name == item.upper)
      {
      upup=pmList[i].upper;
      }
    }
  pmSubList[item.upper]=upup;
  pmList.push(item);
  }

function pmMenuAddNolink(name)
  {
  var item=new Object;
  item.name=name;
  item.upper="Main";
  pmList.push(item);
  }

function pmMenuDo(name,upmenu)
  {
  pmDisplayOne(name,upmenu);
  }

function displayOn(i,check)
  {
  return changeStyle('display','block',i,check);
  }

function displayOff(i,check)
  {
  return changeStyle('display','none',i,check);
  }

function boldOn(i,check)
  {
  return changeStyle('fontWeight','bold',i,check);
  }

function boldOff(i,check)
  {
  return changeStyle('fontWeight','normal',i,check);
  }

function changeStyle(style,value,i,check)
  {
  var x = new getObj(i);
  if (!(check) || x.style)
    {
    if (check && x.style[style] == value)
      {
      return 0;
      }
    x.style[style] = value;
    return 1;
    }
  else if (check=="alert" && !(x.style))
    {
    alert("Failed to find "+i+" in the Page");
    }
  return 0;
  }

function swDisplay(i)
  {
  var x = new getObj(i);
  if (x.style.display == "block")
    {
    x.style.display = "none";
    }
  else
    {
    x.style.display = "block";
    }
  }

function pmDisplayOne(name,upmenu)
  {
  var i;
  var x;
  for (i=0;i<pmList.length;i++)
    {
    if (pmList[i].upper == upmenu)
      {
      var menux = pmList[i].name;
      displayOff('menulink'+menux+'@'+upmenu,'alert');
      if (pmTypes.inline)
        {
        boldOff('menu'+menux+'@'+upmenu,1);
        }
      if (pmTypes.tm)
        {
        boldOff('pmInTmLink'+menux+'@'+upmenu,1);
        }
      }
    }
  displayOn('menulink'+name+'@'+upmenu,"alert");
  if (pmTypes.inline)
    {
    boldOn('menu'+name+'@'+upmenu,1);
    }
  if (pmTypes.tm)
    {
    boldOn('pmInTmLink'+name+'@'+upmenu,1);
    }
  if (pmSubList[name])
    {
    pmCurMenu = name;
    displayOff("pagemenu"+upmenu);
    displayOn("pagemenu"+name);
    if (pmTypes.tm)
      {
      var currentMenu = readCookie("tmShowMenu");
      if (currentMenu.match(/pmInTm/gi))
        {
        tmSwapTo("pmInTm"+name);
        }
      }
    }

  }

function pmMenuShowAll(upmenu)
  {
  for (var i in pmList)
    {
    menux = pmList[i].name;
    if (pmList[i].upper == upmenu)
      {
      displayOn('menulink'+menux+'@'+upmenu);
      if (pmTypes.inline)
        {
        boldOff('menu'+menux+'@'+upmenu,1);
        }
      if (pmTypes.tm)
        {
        boldOff('pmInTmLink'+menux+'@'+upmenu,1);
        }
      }
    }
  }

function pmPrintMenu()
  {
  for (var i in pmSubList)
    {
    if (i=='Main')
      {
      pmPrintSubMenu(i,0);
      }
    else
      {
      pmPrintSubMenu(i,1);
      }
    }
  pmTypes.inline=1; 
  pmAddMenu2tm();
  }

function pmMenuBack(menu)
  {
  var upmenu = pmSubList[menu];

  pmMenuShowAll(menu);
  if (pmTypes.inline)
    {
    if (menu != "Main")
      {
      displayOff("pagemenu"+menu);
      displayOn("pagemenu"+upmenu);
      }
    }
  if (pmTypes.tm)
    {
    var tmUpmenu
    if (menu=='Main')
      {
      tmUpmenu="pageMenuSub";
      }
    else
      {
      tmUpmenu="pmInTm"+upmenu;
      }
    var currentMenu = readCookie("tmShowMenu");
    if (currentMenu.match(/pmInTm/gi))
      {
      tmSwapTo(tmUpmenu);
      }
    }
  if (upmenu)
    {
    pmCurMenu=upmenu;
    }
  }

function pmInTmStart()
  {
  tmSwapTo("pmInTm"+pmCurMenu);
  }

function pmAddMenu2tm()
  {
  var x = new getObj("otherMenus");
  if (x.obj)
    {
    var tmp=document.createElement('p');
    tmp.onclick=pmInTmStart;
    tmp.innerHTML=langStrings[5];
    x.obj.appendChild(tmp);
    }
  else
    {
    return; //no tm
    }

  for (var menu in pmSubList)
    {
    var div;
    x = new getObj("pageMenus");
    if (x.obj)
      {
      div=document.createElement('div');
      div.id="pmInTm"+menu;
      div.style.display="none";
      x.obj.appendChild(div);
      var hr=document.createElement('hr');
      div.appendChild(hr);

      //back button
      pmAddLink2tm(div,"pmMenuBack('"+menu+"');",langStrings[6]);
      }

    for (var i in pmList)
      {
      var menux = pmList[i];
      if (menux.link) //else don't print a link
        {
        if (menux.upper == menu) 
          {
          pmAddLink2tm(div,'pmMenuDo(\''+menux.name+'\',\''+menu+'\');',menux.link,'pmInTmLink'+menux.name+'@'+menu);
          }
        }
      }
    }
  pmTypes.tm = 1;
  var tmShowMenu = readCookie("tmShowMenu");
  if (tmShowMenu.match(/pmInTm/))
    {
    tmSwapTo("pmInTmMain"); 
    }
  }

function pmAddLink2tm(div,action,text,id)
  {
  var p = document.createElement('p');
//  p.onclick=action; //none of the dhtml methods work in IE5
//  p.innerHTML=text;
  p.innerHTML="<a href=\"javascript:"+action+"\">"+text+"</a>";
  if (id)
    {
    p.id = id;
    }
  div.appendChild(p);
  }

function pmPrintSubMenu(upmenu,hide)
  {
  document.write('<p id="pagemenu'+upmenu+'"');
  if (hide)
    {
    document.write(' style="display:none"');
    }
  document.write(' align="fixed" class="menu">');
  if (upmenu != "Main")
    {
    document.write('<span onClick="pmMenuBack(\''+upmenu+'\');">Terug</span> \n');
    }
  else
    {
    document.write('<span onClick="pmMenuBack(\''+upmenu+'\');">Alles</span> \n');
    }

  for (var i in pmList)
    {
    var menux = pmList[i];
    if (menux.link) //else don't print a link
      {
      if (menux.upper == upmenu) 
        {
        document.write('<span id="menu'+menux.name+'@'+upmenu+'" onClick="pmMenuDo(\''+menux.name+'\',\''+upmenu+'\');">'+menux.link+'</span> \n');
        }
      }
    }
  document.write("</p>");
  }

// functions for cookies (mmmmm)
function createCookie(name,value)
  {
  var date = new Date();
  date.setTime(date.getTime()+(24*60*60*1000));
  var expires = "; expires="+date.toGMTString();
  document.cookie = name+"="+value+expires+"; path=/";
  }

function readCookie(name)
  {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++)
    {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) 
      {
      return c.substring(nameEQ.length,c.length);
      }
    }
  return null;
  }

