// All pages must call init from onload event

var bInit = false;

function init()
{
// Indicate that we have run the init function. Have to do it now to prevent recursion
bInit = true;

// Set up menus and cookies

 oldheight = document.height;    // For NS 4.x
 document.menus = new Array();   // Contains all the menus set up by init()
 document.opened = new Array(false,false,false,false,false,false,false,false,false,false); // For cookies.

 if (document.all) 
 {
  for(i=0; i<document.all('sidebar').all.tags('div').length; i++) 
  {   
   document.menus[i] = document.all('sidebar').all.tags('div')[i];
   document.menus[i].style.top=document.menus[i].offsetTop+"px";
  }
 }
 else if (document.layers) // for NS 4.x
 {
  var i=0;
  for(j=1; j<document.layers['sidebar'].document.layers.length; j++) 
  {   
   document.menus[i] = document.layers['sidebar'].document.layers[j];
   i++;
   for(k=0; k<document.layers['sidebar'].document.layers[j].document.layers.length; k++)
   {
    document.menus[i]=document.layers['sidebar'].document.layers[j].document.layers[k];
    i++;
   }
  }
 }
 else if (document.getElementsByTagName && document.getElementById) // For IE and NS 6
 {
 var offside = document.getElementById('sidebar').offsetTop;
  var objts = document.getElementById('sidebar').getElementsByTagName('div');
  for(i=0; i<objts.length; i++)
  {  
   var index=document.menus.length;   
   document.menus[index]=objts[i];
   if(document.menus[index].getAttribute('class')=='main')
   {
    document.menus[index].style.top=document.menus[index].offsetTop-offside;
   }
  }
 }

// Resize the sidebar so it is as big as the page
 
 if (!document.layers)
 {
  if (document.all)
  {
   var sbHeight = document.all.thepage.offsetHeight + document.all.thepage.offsetTop;
  }
  else
  {
   var ns6obj = document.getElementById("thepage")
   var sbHeight = ns6obj.offsetHeight + ns6obj.offsetTop;
  }
  if (sbHeight > document.images.backgnd.height)
  {
   document.images.backgnd.height = sbHeight;
  }
  oldheight = document.images.backgnd.height + document.images.backgnd.offsetTop;
 }
 else
 {
  var ns4obj = document.layers.sidebar.document.layers["ns4"]
  var sbHeight = document.height;
  if (sbHeight > ns4obj.document.images.backgnd.height)
  {
   ns4obj.document.write("<img name='backgnd' src='http://www.chem.pitt.edu/images/backdot.gif' width=190 height="+sbHeight+">");
   ns4obj.document.close();
   document.layers.sidebar.clip.height = sbHeight;
  }
 }

 readcookies(); // Set up menus as they were left

// Set up banner and preload rollovers

 var buttons = new Array ("home","search","contacts","pitt");
 var imgs = new Array;
 for (var i=0; i<buttons.length; i++)
 {
  var index = imgs.length
  imgs[index] = new Image;
  imgs[index].src = "images/n_" + buttons[i] + ".jpg";
  index++;
  imgs[index] = new Image;
  imgs[index].src = "images/f_" + buttons[i] + ".jpg";
 }

// Fix for netscape resizing problem

 if (document.layers)
 {
  saveWidth = innerWidth;
  saveHeight = innerHeight;
  window.onresize=redo;
 }
} 

// Opens and closes submenus

function openclose(thisdiv)
{
 if (!bInit) {		// If the menus haven't be initialize (the page hasn't loaded)
  init();			// Go initialize them now!
 }
 chgimg(thisdiv);		// toggle images
 togvis(thisdiv);		// toggle visiblity
 writecookie(thisdiv);		// update the cookie
}

// Swap folder images

function chgimg(i)
{
 if (document.getElementsByTagName)	// IE and NS 6
 {
  var img=document.menus[i].getElementsByTagName('img')[0];
 }
 else if (document.layers)	// NS 4
 {
  var img=document.layers['sidebar'].document.layers[(i/2)+1].document.images[0];
 }
// do the switch
 if (img.src.indexOf("o_")>0)
 {
  img.src="http://www.chem.pitt.edu/images/folder.gif";
 }
 else
 {
  img.src="http://www.chem.pitt.edu/images/o_folder.gif";
 }
}

// Return true if menu is closed

function bIsClosed(i)
{
 if (!document.layers)
 {
  return (document.menus[i+1].style.visibility!="visible");
 }
 else
 {
  return (document.menus[i+1].visibility!="show");
 }
}

// Redirect and open menus

function redir(menu,url) 
{
 if (bIsClosed(menu)) {
  openclose(menu);
 }
 window.location.replace(url);
}

// Toggle visibility of submenus

function togvis(i)
{
 var dir=1;
// For IE and NS6
 if (!document.layers)
 {
  if(document.menus[i+1].style.visibility!="visible")
  {
   document.menus[i+1].style.visibility="visible";
  }
  else
  {
   document.menus[i+1].style.visibility="hidden";
   dir=-1;
  }
 }
// for NS4.x
 else
 {
  if(document.menus[i+1].visibility!="show")
  {
   document.menus[i+1].visibility="show";
  }
  else
  {
   document.menus[i+1].visibility="hidden";
   dir=-1
  }
 }
 shift(i,dir);
}

// Shift the menu items when submenus become (in)visible

function shift(index,d)
{
 if (!document.layers) // IE, NS 6
 {
  var delta = document.menus[index+1].offsetHeight * d;
 }
 else // NS 4
 {
  var delta = document.menus[index+1].clip.height * d;
 }
// do the shift
 for (i=index+2; i<document.menus.length; i+=2)
 {
  if (document.layers) // NS 4
  {
   document.menus[i].top+=delta;
  }
  else // NS 6, IE
  {
   var curr = document.menus[i].style.top;	 // returns a string
   curr=curr.substring(0,curr.indexOf("px"))-0;	 // convert to number
   document.menus[i].style.top = (curr+delta)+"px";
  }
 }
// resize background image
 if (!document.layers)	// IE, NS 6
 {
  var mbot = document.menus[document.menus.length-1].offsetTop;
  var curr = document.images.backgnd.height + document.images.backgnd.offsetTop;
  if (mbot > oldheight || curr > oldheight)
  {
   if (curr + delta < oldheight)
   {
    document.images.backgnd.height = oldheight - document.images.backgnd.offsetTop;
   }
   else
   {
    document.images.backgnd.height += delta;
   }
  }
//  else if (document.images.backgnd.height + document.images.backgnd.offsetTop > oldheight)
 }
 else // NS 4.x
 {
// rewrite the layer
  var mbot = document.menus[document.menus.length-1].top;
  var obj = document.layers.sidebar.document.layers["ns4"];
  var size = obj.document.images.backgnd.height;
  if (mbot > oldheight || size > oldheight)
  {
   if (delta<0)
    window.scrollBy(0,delta);
   if (size + delta < oldheight)
   {
    size = oldheight;
    document.layers.sidebar.clip.height = oldheight;
    document.height = oldheight;
   }
   else
   {
    size += delta;
    document.layers.sidebar.clip.height += delta;
    document.height += delta;
   }
   obj.document.write("<img name='backgnd' src='http://www.chem.pitt.edu/images/backdot.gif' width=190 height="+size+">");
   obj.document.close();
  }
 }
}

// Write cookie to preserve menu state

function writecookie(menu)
{
 document.opened[menu/2]=!document.opened[menu/2];
 cookiestr="chemcookie=";
 for (i=0;i<document.opened.length;i++)
 {
  cookiestr += document.opened[i] + ":";
 } 
 cookiestr += ";path=/ ;"
 document.cookie=cookiestr;
}

// Read cookie and set menus as before

function readcookies()
{
// alert("readcookie");
 if (document.cookie)
 {
//  alert(document.cookie);
  cookiestr=document.cookie;
  cookiestr=cookiestr.substring(cookiestr.indexOf("chemcookie="));
//  alert(cookiestr);
  var split1 = cookiestr.split("=");
  var split2 = split1[1].split(":");
  for (var j=0; j<split2.length; j++)
  {
   if (split2[j]=="true")
   {
    openclose(j*2);
   }
  }
 }
} 

// Fix for Netscape resize bug

function redo() {
 if (innerWidth != saveWidth || innerHeight != saveHeight)
 {
  window.location.reload();
 }
}

// Switch images for rollovers

function roll(item) {
 var source = item.src;
 var i = source.indexOf("f_");
 if (i>0) {
  source=source.substring(0,i)+"n_"+source.substring(i+2);
 }
 else {
  var i = source.indexOf("n_");
  source=source.substring(0,i)+"f_"+source.substring(i+2);
 }
 item.src = source;
}