<!--

/**********************************************************************************    
*   Copyright (C) 2001 <a href="/dhtmlcentral/thomas_brattli.asp">Thomas Brattli</a>
*   This script was released at DHTMLCentral.com
*   Visit for more great scripts!
*   This may be used and changed freely as long as this msg is intact!
*   We will also appreciate any links you could give us.
*
*   Made by <a href="/dhtmlcentral/thomas_brattli.asp">Thomas Brattli</a> 
*********************************************************************************/

var bw=new lib_bwcheck()


if(document.layers){ //NS4 resize fix...
	scrX= innerWidth; scrY= innerHeight;
	onresize= function(){if(scrX!= innerWidth || scrY!= innerHeight){history.go(0)} }
}

//If the browser is ok, the init function is called on pageload. 
if (bw.bw) myOnload = onloadInitialize 

function lib_bwcheck(){ //Browsercheck (needed)
	this.ver=navigator.appVersion
	this.agent=navigator.userAgent
	this.dom=document.getElementById?1:0
	this.opera5=this.agent.indexOf("Opera 5")>-1
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0; 
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
	this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
	this.ie=this.ie4||this.ie5||this.ie6
	this.mac=this.agent.indexOf("Mac")>-1
	this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
	this.ns4=(document.layers && !this.dom)?1:0;
	this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5)
	return this
}

//ChangeText object constructor.
function makeChangeTextObj(obj){
   	this.css = bw.dom?document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?document.layers[obj]:0;	
      this.writeref = bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?document.layers[obj].document:0;	
      this.writeIt = b_writeIt;					
}
function b_writeIt(text){
	if (bw.ns4){
		this.writeref.write(text)
		this.writeref.close()
	}
    else this.writeref.innerHTML = text;
}
    
        
/**********************************************************************************    
*   Copyright (C) 2002 Happyworm Ltd.
*   This script was developed from code at: DHTMLCentral.com
*********************************************************************************/

var myCategory = new Array();
var categoryName = new Array();
var categoryIndex = 0;
var itemIndex = 0;
var currentCategory = 0;
var currentItem = 0;
var absoluteSlideRef = 0;
var cycleMenus = false; // cause a next to loop back round to the first category or item.
var linkHeading = "";

var errorMessageFocusHandle;

var hasMainTextCategory = false;
var mainTextCategory = 0;

var pageFinishedLoading = false;

var displayMessage;

var english = true; //set language 


function changeText(){
	if(bw.bw) oMessage.writeIt( displayMessage )
}

function changeMainMore()
{
   if(english)
   {
     var displayedMainMore = '<a href="javascript:changeCategory(' + mainTextCategory + ')" class="menu">[ more ]</a>';
   }
   else
   {
     var displayedMainMore = '<a href="javascript:changeCategory(' + mainTextCategory + ')" class="menu">[ continua ]</a>';
   }

   if(bw.bw) oMainMore.writeIt( displayedMainMore )

   if( hasMainTextCategory && mainTextCategory != currentCategory )
   {
      oMainMore.css.visibility= "visible"
   }
   else
   {
      oMainMore.css.visibility= "hidden"
   }

}

function changeBackMore()
{
   if (english)
   {
     var columWidth = 45;
   }
   else
   {
     var columWidth = 50;
   }
   
   var spacerWidth = 4;
   var numberOfColumns = 2;
   var tableWidth = (numberOfColumns * columWidth) + ((numberOfColumns-1) * spacerWidth);
   
   var middleColumn = '</td><td width="'+spacerWidth+'" align="center" valign="top">';
   var lastColumn = '</td><td width="'+columWidth+'" align="left" valign="top">';
   var startTable = '<table width="'+tableWidth+'" border="0" cellspacing="0" cellpadding="0"><tr><td width="'+columWidth+'" align="right" valign="top">';
   var endTable = '</td></tr></table>';
   var backHTML = '';
   var moreHTML = '';
   var spacerHTML = '';
   var currentColumn = 0;

   // var displayedBackNext = startTable + '[ Back ]' + middleColumn + '|' + lastColumn + '[ More ]' + endTable;
   var displayedBackNext = startTable;

   if( currentItem > 0 )
   {
   	  if (english)
	  {
      	 backHTML = '<a href="javascript:prevItem()" class="menu">[ back ]</a>';
      }
	  else
	  {
	     backHTML = '<a href="javascript:prevItem()" class="menu">[ indietro ]</a>';
	  }
	  
      if( currentItem < myCategory[currentCategory].item.length-1 )
      {
	     if (english)
	     {
             moreHTML = '<a href="javascript:nextItem()" class="menu">[ more ]</a>';
		 }
		 else
		 {
             moreHTML = '<a href="javascript:nextItem()" class="menu">[ avanti ]</a>';
		 }
         spacerHTML = '<font class="text"><b>&middot;</b></font>';
      }
      else
      {
         moreHTML = '&nbsp;';
         spacerHTML = '&nbsp;';
      }
   }
   else
   {
      backHTML = '&nbsp;';
      spacerHTML = '&nbsp;';

      if( currentItem < myCategory[currentCategory].item.length-1 )
      {
	     if (english)
		 {
         moreHTML = '<a href="javascript:nextItem()" class="menu">[ more ]</a>';
         }
		 else
		 {
         moreHTML = '<a href="javascript:nextItem()" class="menu">[ avanti ]</a>';
         }
	  }
      else
      {
         moreHTML = '&nbsp;';
      }   
   }
	
   displayedBackNext += backHTML + middleColumn + spacerHTML + lastColumn + moreHTML + endTable;
   
   if(bw.bw) oBackMore.writeIt( displayedBackNext )
}

function changeMainLinks(){
	if(bw.bw)
   {
      var columnWidth = 134;
      var spacerWidth = 8;
      var linksPerColumn = 3;
      var numberOfColumns = 4;
      var maxLinks = linksPerColumn * numberOfColumns;
      var tableWidth = (numberOfColumns * columnWidth) + ((numberOfColumns-1) * spacerWidth);
      
      
      var newColumn = '</td><td width="'+spacerWidth+'">&nbsp;</td><td width="'+columnWidth+'" valign="top">';
      var startTable = '<table width="'+tableWidth+'" border="0" cellspacing="0" cellpadding="0"><tr><td width="'+columnWidth+'" valign="top"><font class="boldtitle">'+linkHeading+'</font>'+newColumn+'&nbsp;'+newColumn+'&nbsp;'+newColumn+'&nbsp;'+'</td></tr><tr><td width="'+columnWidth+'" valign="top">';
      var endTable = '</td></tr></table>';
      var textSpacer = '<font class="microspacer"><br>&nbsp;</font><br>';
      var link = '';
      var spacer = '';
      var currentColumn = 0;
      var currentLink = 0;

      var displayedLinks = startTable;

      for(var i=0; i < myCategory.length; i++)
      {
         if( myCategory[i].mainLink && currentLink < maxLinks )
         {
            if( ((currentLink % linksPerColumn) == 0) && (currentLink > 0) )
            {
               displayedLinks += newColumn;
               spacer = textSpacer;
            
               currentColumn++;
            }
            else if( ((currentLink+1) % linksPerColumn) != 0 )
            {
               spacer = textSpacer;
            }
            else
            {
               spacer = '';
            }
         
            if( i == currentCategory )
            {
               link = '<b>&middot;</b> <span class="menu"><font color="#666666">'+myCategory[i].getTitle()+'</font></span>';
            }
            else
            {
               link = '<b>&middot;</b> <a href="javascript:changeCategory('+i+')" class="menu">'+myCategory[i].getTitle()+'</a>';
            }
            displayedLinks += link + spacer;
            currentLink++;
         }
      }
      
      for(var i=currentColumn+1; i < numberOfColumns; i++)
      {
         displayedLinks += newColumn + '&nbsp;';
      }

      displayedLinks += endTable;
      
      // <br><img src="graphics/shim.gif" width="144" height="4"><br>
      // var original = '<table width="463" border="0" cellspacing="0" cellpadding="0"><tr><td width="10">&nbsp;</td><td width="144" valign="top"><b>&middot;</b> <a href="javascript:changeCategory(0)" class="menu">University of Edinburgh</a><b><br><img src="graphics/shim.gif" width="144" height="4"><br>&middot;</b> <a href="javascript:changeCategory(1)" class="menu">University of Turin</a><br><b><img src="graphics/shim.gif" width="144" height="4"><br>&middot;</b> <a href="javascript:changeCategory(2)" class="menu">Travel Agency </a> </td><td width="10" valign="top">&nbsp;</td><td width="144" valign="top"><b>&middot;</b> <a href="javascript:changeCategory(3)" class="menu">case study </a></td><td width="10" valign="top">&nbsp;</td><td width="144" valign="top">&nbsp;</td></tr></table>';
      
      oMainLinks.writeIt( displayedLinks );
   }
}

//The init function. Calls the object constructor and initiates some properties.
function changeTextInit(){
	//Fixing the browsercheck for opera... this can be removed if the browsercheck has been updated!!
	bw.opera5 = (navigator.userAgent.indexOf("Opera")>-1 && document.getElementById)?true:false
	if (bw.opera5) bw.ns6 = 0
	

   oLoading = new makeChangeTextObj('loading')
   oMessage = new makeChangeTextObj('divMessage')
   oMainLinks = new makeChangeTextObj('divMainLinks')
   oBackMore = new makeChangeTextObj('divBackMore')
   oMainMore = new makeChangeTextObj('divMainMore')
 
	//Both layers are hidden by default to prevent users from mousing over them and creating errors while the page loads.

   showSlide()
}


function categoryObject( categoryTitle, mainLink, firstSlide, numberOfSlides )
{
   this.categoryTitle = categoryTitle;
   this.mainLink = mainLink;
   this.firstSlide = firstSlide;
   this.numberOfSlides = numberOfSlides;

   this.item = new Array();
   this.numberOfItems = 0;

   this.initializeSlides = categoryObjectInitializeSlides;
   this.addItem = categoryObjectAddItem;
   this.displayItem = categoryObjectDisplayItem;
   this.hideItem = categoryObjectHideItem;
   this.getTitle = categoryObjectGetTitle;
   this.deleteItem = categoryObjectDeleteItem;
}
function categoryObjectInitializeSlides()
{
   for( var i=this.firstSlide; i < (this.firstSlide+this.numberOfSlides); i++)
   {
      this.addItem( i );
   }
}
function categoryObjectAddItem( slideNumber )
{
   // oMessage = new makeChangeTextObj('divMessage')
   var divName = 'slide'+slideNumber;
   // alert( divName );
   this.item[this.numberOfItems] = new makeChangeTextObj( divName );
  // alert(this.item[this.numberOfItems]);
   this.numberOfItems++;
}
function categoryObjectDisplayItem( itemNumber )
{
   // setVisibility(getElement("slide"+itemNumber),true)
   this.item[itemNumber].css.visibility= "visible";
}
function categoryObjectHideItem( itemNumber )
{
   // setVisibility(getElement("slide"+itemNumber),false)
   this.item[itemNumber].css.visibility= "hidden";
}
function categoryObjectGetTitle()
{
   return this.categoryTitle;
}
function categoryObjectDeleteItem()
{
   this.numberOfItems--;
   this.item[this.numberOfItems] = null;
}

function createCategory( category, client, numberOfSlides )
{
  myCategory[categoryIndex] = new categoryObject( category, client, absoluteSlideRef, numberOfSlides );
  absoluteSlideRef += numberOfSlides;
  categoryIndex++;
}
/*
function addCategoryContents( contents )
{
  myCategory[categoryIndex-1].addItem( contents );
}
*/

function changeDisplay( category, item )
{ 
  if( category != currentCategory )
  {
     myCategory[currentCategory].hideItem( currentItem );
     
     currentCategory = category;
     currentItem = item;
     
     myCategory[currentCategory].displayItem( currentItem );
  
     changeMainMore();
     changeMainLinks();
     changeBackMore();
  }
  else if( item != currentItem )
  {
     myCategory[currentCategory].hideItem( currentItem );
     
     currentCategory = category;
     currentItem = item;
     
     myCategory[currentCategory].displayItem( currentItem );
  
     changeBackMore();
  }
  else
  {
     myCategory[currentCategory].displayItem( currentItem );
  
     changeMainMore();
     changeMainLinks();
     changeBackMore();
  }
}
   
function changeCategory( category )
{ 
   // *** Need to check that the load is complete.
   if( pageFinishedLoading )
   {
      changeDisplay( category, 0 )
   }
}

function nextCategory()
{
  if( (currentCategory < categoryIndex-1) && (myCategory[currentCategory+1].mainLink) )
  {
    changeDisplay( currentCategory+1, 0 );
  }
  else if( cycleMenus )
  {
    changeDisplay( 0, 0 );
  }
}
function prevCategory()
{
   if( (currentCategory > 0) && (myCategory[currentCategory-1].mainLink) )
   {
     changeDisplay( currentCategory-1, 0 );
   }
   else if( cycleMenus ) 
   {
     var i = 0;
     while( myCategory[i].mainLink )
     {
        i++;
     }
     changeDisplay( i-1, 0 );
   }
}

function nextItem()
{
  if( currentItem < myCategory[currentCategory].item.length-1 )
  {
    changeDisplay( currentCategory, currentItem+1 );
  }
  else if( cycleMenus )
  {
    changeDisplay( currentCategory, 0 );
  }
}
function prevItem()
{
   if( currentItem > 0 )
   {
     changeDisplay( currentCategory, currentItem-1 );
   }
   else if( cycleMenus )
   {
     changeDisplay( categoryIndex, myCategory[currentCategory].item.length-1 );
   }
}

function mainLinkHeading( heading )
{
   if(heading != "")
   {
      linkHeading = heading;
   }
   else
   {
      linkHeading = "&nbsp;";
   }
}

function showSlide()
{
   if( hasMainTextCategory )
   {
      oMainMore.css.visibility= "visible"
   }
   else
   {
      oMainMore.css.visibility= "hidden"
   }
   oMessage.css.visibility= "hidden"
   oMainLinks.css.visibility= "visible"
   oBackMore.css.visibility= "visible"

   myCategory[currentCategory].displayItem( currentItem );
}
function showMessage()
{
   oMessage.css.visibility= "visible"
   oMainMore.css.visibility= "hidden"
   oMainLinks.css.visibility= "hidden"
   oBackMore.css.visibility= "hidden"

   myCategory[currentCategory].hideItem( currentItem );
}

function setMainTextCategory( used, mtCategory )
{
	hasMainTextCategory = used;
   mainTextCategory = mtCategory;
}

function slideShowAlert( errorTitle, errorMessage, focusHandle )
{
   errorMessageFocusHandle = focusHandle;
   var errMsgTableStart1 = "<table width='720' height='185' border='0' cellpadding='0' cellspacing='0'><tr><td align='center' valign='middle'>\n";
   var errMsgTableStart2 = "<table class='errortable' border='1' bordercolor='#FF7453' cellpadding='10' cellspacing='0'><tr><td>\n";
   var errMsgTableStart3 = "<table border='0' cellpadding='0' cellspacing='0'><tr><td><font class='boldtext'>\n";
   var errMsgTableMiddle3 = "</font></td></tr><tr><td><font class='text'>";
   var errMsgTableOK3 = "<br>&nbsp;</font></td></tr><tr><td align='center'><a href='javascript:clickedOK();' class='menu'>[ ok ]</a>\n";
   var errMsgTableEnd3 = "</td></tr></table>\n";
   var errMsgTableEnd2 = "</td></tr></table>\n";
   var errMsgTableEnd1 = "</td></tr></table>\n";

   var errorMessageDisplayed = errMsgTableStart1 + errMsgTableStart2 + errMsgTableStart3 + errorTitle + errMsgTableMiddle3 + errorMessage + errMsgTableOK3 + errMsgTableEnd3 + errMsgTableEnd2 + errMsgTableEnd1;

   displayMessage = errorMessageDisplayed;
   //alert( displayMessage );
   showMessage();
   changeText();
}

function clickedOK()
{
   showSlide();
   errorMessageFocusHandle.focus();
}
function onloadInitialize( category, item )
{
   // currentCategory = category;
   // currentItem = item;
  
   for( var i=0; i < myCategory.length ; i++)
   {
      // alert(i);
      myCategory[i].initializeSlides();
   }

   pageFinishedLoading = true;

   changeTextInit();
   oLoading.css.visibility= "hidden"
   changeDisplay( category, item );

}

// -->