var body, container, main, menu, pageTitle, title, description, fullscreen, menuOpacity, menuTargetOpacity, playing, timeout;

function getCookie(name) {
  tab=document.cookie.replace(/ /g, "").split(";");
  for (i=0;i<tab.length;i++)
    if (tab[i].substr(0,name.length+1)==(name+"="))
      return tab[i].substr(name.length+1);
  return null;
}

var setOpacity = function(a,b) {}
function initializeOpacity(obj) {
  if (obj.filters&&obj.filters[0]) {
    if (typeof obj.filters[0].opacity=="number")
      setOpacity = function(obj, opacity) { obj.filters[0].opacity=opacity; };
    else
      setOpacity = function(obj, opacity) { obj.style.filter=="alpha(opacity="+opacity+")"; };
  } 
  else if (obj.style.opacity || obj.style.opacity>=0)
    setOpacity = function(obj, opacity) { obj.style.opacity=opacity/100; }
  else if (obj.style.MozOpacity)
    setOpacity = function(obj, opacity) { obj.style.MozOpacity=opacity/100; }
  else if (obj.style.KhtmlOpacity)
    setOpacity = function(obj, opacity) { obj.style.KhtmlOpacity=opacity/100; }
  else
    setOpacity = function(obj, opacity) { obj.style.opacity=opacity/100; }
}

function fadeTo(obj, endOpacity, speed, callAtEnd) {
  if (!obj) return;
  if (obj.objTimer) clearInterval(obj.objTimer);
  if (obj.objOpacity==null) obj.objOpacity=100;
  obj.callAtEnd=callAtEnd;
  obj.endOpacity=endOpacity;
  obj.stepOpacity=(obj.objOpacity>endOpacity)?-speed:speed;
  setOpacity(obj, obj.objOpacity);
  obj.objTimer=setInterval(function() {
    obj.objOpacity+=obj.stepOpacity;
    if (((obj.stepOpacity>0) && (obj.objOpacity>=obj.endOpacity)) || ((obj.stepOpacity<=0) && (obj.objOpacity<=obj.endOpacity))) {
      clearInterval(obj.objTimer); obj.objOpacity=obj.endOpacity;
      if (obj.callAtEnd) { 
        document.cookie="menuOpacity="+Math.round(menu.objOpacity)+"; path=/";
        document.cookie="menuTargetOpacity="+Math.round(menu.endOpacity)+"; path=/";
        document.cookie="playing="+playing+"; path=/";
        if (typeof obj.callAtEnd == "string") window.location.replace(obj.callAtEnd);
        else if (typeof obj.callAtEnd == "function") obj.callAtEnd();
      }
    }
    setOpacity(obj, obj.objOpacity);
  }, 20);
}

function cssOpacity(opacity) {
  return '{ opacity: '+(opacity/100)+
         '; -moz-opacity: '+(opacity/100)+
         '; -khtml-opacity: '+(opacity/100)+
         '; filter:progid:DXImageTransform.Microsoft.alpha(opacity='+opacity+'); } ';
}

function finalize(url,speed) {
  fadeTo(main,0,speed,url);
  if (title) fadeTo(title,0,speed);
  if (description) fadeTo(description,0,speed);
}

menuOpacity=parseInt(getCookie("menuOpacity"));
if (isNaN(menuOpacity)) menuOpacity=50;
menuTargetOpacity=parseInt(getCookie("menuTargetOpacity"));
if (isNaN(menuTargetOpacity)) menuTargetOpacity=50;
playing=(getCookie("playing")=="true")?true:false;
if ((window.location.href.indexOf("index.html")>0) 
 || (window.location.href.indexOf(".html")<0)) playing=true;

document.write('<style type="text/css">'+
                 'a#main, div#main, ul#main, div#container h2, div#description '+cssOpacity(0)+
                 'h1 '+cssOpacity(100)+
                 'ul#menu '+cssOpacity(menuOpacity)+
                 'img.fullscreen,img.play '+cssOpacity(50)+
                 'div.nojs { visibility: hidden; } '+
               '</style> ');

var loadImage = new Image();
function start(nextImage, rootPrefix) {
  if (nextImage!="") loadImage.src=nextImage;
  body=document.getElementsByTagName('body'); if (body) body=body[0];
  container=document.getElementById("container");
  main=document.getElementById("main");
  menu=document.getElementById("menu"); menu.objOpacity=menuOpacity;
  description=document.getElementById("description");
  title=document.getElementsByTagName("h2"); if (title) title=title[0];
  pageTitle=document.getElementsByTagName("h1"); if (pageTitle) pageTitle=pageTitle[0];
  fullscreen=new Image();
  fullscreen.src=rootPrefix+"fs.gif";
  fullscreen.className="fullscreen";
  fullscreen.onclick = function() {
    if (window.name != 'fullscreen') {
      window.open(window.location, 'fullscreen', 'fullscreen=yes,toolbar=no,locationbar=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no');
    } else {
      window.close();
    }
  }
  fullscreen.onmouseover = function() {
    setOpacity(fullscreen, 100);
    window.status = 'Full screen on/off';
  }
  fullscreen.onmouseout = function() {
    setOpacity(fullscreen, 50);
    window.status = '';
  }
  container.appendChild(fullscreen);

  if (nextImage!="") {
    play=new Image();
    play.src=rootPrefix+(playing?"stop.gif":"play.gif");
    play.className="play";
    play.onclick=function() {
      playing=!playing;
      play.src=rootPrefix+(playing?"stop.gif":"play.gif");
      if (playing) finalize(main.href_copy, 20); 
              else clearTimeout(timeout); 
    }
    play.onmouseover = function() {
      setOpacity(play, 100);
      window.status = 'Stop/continue';
    }
    play.onmouseout = function() {
      setOpacity(play, 50);
      window.status = '';
    }
    container.appendChild(play);
  }


  initializeOpacity(main);

  links = document.getElementsByTagName("a");
  for (i=0;i<links.length;i++) {
    links[i].href_copy=links[i].href;
    links[i].href='#';
    links[i].onclick=function() { if (this.blur) this.blur(); finalize(this.href_copy, 20); }
  }

  if (main.tagName == "UL") {
    thumbs = main.getElementsByTagName("img");
    for (i=0;i<thumbs.length;i++) {
      thumbs[i].onmouseover=function() { title.innerHTML=this.title; }
      thumbs[i].onmouseout=function() { title.innerHTML=""; }
    }
  }

  fadeTo(menu,menuTargetOpacity,10);
  menu.onmouseover=function() { fadeTo(menu,100,10); }
  menu.onmouseout=function() { fadeTo(menu,50,3); }

  main.objOpacity=0;
  if ((nextImage!="") && playing)
    fadeTo(main,100,10, function() { timeout=setTimeout("finalize('"+this.href_copy+"',10);", 3000); } );
  else
    fadeTo(main,100,10);

  if (title) { title.objOpacity=0; fadeTo(title,100,10); }

  if (description) { 
    description.objOpacity=0; fadeTo(description,30,3); 
  }
}


