
/******************************************************
Scripts in this file create and manage navigation menus
of the KORA homepage.

Created: 2000-02-13
Last modified: 2000-03-05

Copyright: Uli Mueller
*******************************************************/
var frLeftWid  = 85;
var frLeftWidPos = 10;
var frLeftInfoPos = 100;
var frTopHgt  = 120;
var frTopHgtPos = 5;
var menuVertSpacing = 17;
var menuHoriSpaceFactor = 0;
var menuHoriSpacing = 60;
var menuIndent = 10;
var menuFontSize = 8; 
var infoFontSize = 10; 
var frTopPartWid  = ((NN ? outerWidth  : screen.availWidth) - frLeftWid);
var frLeftInfoPos = ((NN ? outerHeight : screen.availHeight) - frTopHgt - 200);
var hideName = (NN ? 'hide' : 'hidden');
var showName = (NN ? 'show' : 'visible');
var frTopWidPos = frTopPartWid / 10;
var datacommURL = 'http://www.kora.ch'

if (!lang)
  {
  var lang="ge"
  if (parent.location.search)
	{
	if (parent.location.search.indexOf('http://www.kora.ch/')==-1) 
	{lang=parent.location.search.substr(1,2)} 
	else 
	{lang=parent.location.search.substr(20,2)}
	if ((lang != "en") && (lang != "fr"))
		{
		var lang = "ge"
		}
	}
  };

var timerID = null;
var timer2ID = null;
var timerRunning = false;
var timer2Running = false;
var lastSelection = null;

function refLayer(name) 
{
  if (NN) { return document.layers[name]; }
  else { return eval('document.all.' + name + '.style'); }
}
function getLanguage(lang)
{
  var returnString ="nothing";
  switch (lang)
    {
    case "en" :
      returnString = this.en;
      break;
    case "ge" :
      returnString = this.ge;
      break;
    case "fr" :
      returnString = this.fr;
      break;
    default :
      returnString = this.ge;
    }
  return returnString;
}
function itemTexts(engl, germ, fren)
{
  this.en = engl;
  this.ge = germ;
  this.fr = fren;
  this.getLanguage = getLanguage;
  return this;
}
function itemInfos(engl, germ, fren)
{
  this.en = engl;
  this.ge = germ;
  this.fr = fren;
  this.getLanguage = getLanguage;
  return this;
}
function menuItem(textEn, textGe, textFr, infoEn, infoGe, infoFr, linkURL, nSub, linkLocal)
{
  this.text = new itemTexts(textEn, textGe, textFr);
  if (infoEn != '')
    {
    this.info = new itemInfos(infoEn, infoGe, infoFr);
    this.hasInfo = true;
    }
  else
    {
    this.hasInfo = false;
    }


  //noLangUrl is the path and file after the directory for different languages
  this.noLangUrl = linkURL;
  this.isLocal = linkLocal;
  this.visit = false;
  if (nSub > 0)
    {
    this.subItems = new Array(nSub);
    this.hasSub = true;
    }
  else
    {
    this.hasSub = false;
    }

  return this;  
}
function insEvents(lyrUrl, lyrName)
{
var tmpStr = '';
tmpStr = ' LANGUAGE="JavaScript1.2" ';
tmpStr += ' onMouseOver="startSwapMenu(\'' + lyrName + '\');stopSwapBack()" ';
tmpStr += ' onMouseOut="stopSwapMenu();startSwapBack()" ';
return tmpStr;
}
function insHref(lyrUrl, lyrLocal, lyrName)
{
var tmpStr='';

if (lyrUrl == '../index.html')
  {
  tmpStr = ' href="' + lang + '/' + lyrUrl + '" target=_top ';
  }
else
  {
  tmpStr = ' href="" onClick="xchgLocation(\''
  if (lyrLocal == 'False')
  	{
	tmpStr += (datacommURL + '/');
	}  
   tmpStr += (lang + '/' + lyrUrl + '\',\'' + lyrName + '\');return false;" ');

  }
return tmpStr;
}

function genItem(lyrName, lyrLeft, lyrTop, lyrVis, lyrText, lyrFtSize, lyrUrl, lyrLocal, bgImg, mLen)
{

if (NN)
{
lyrText = '&nbsp;'+lyrText;
}

if (lyrUrl != '')
  {
  lyrText = '<a' + insHref(lyrUrl, lyrLocal, lyrName) + insEvents(lyrUrl, lyrName) + '>' +lyrText + '</a>';
  }
else
  {
  lyrText = lyrText;
  }

  if (NN)
  {
parent.frtop.document.writeln('<LAYER NAME="' + lyrName + '" text-decoration="none" font-size=' + menuFontSize +' font-weight="600" color="#191970" LEFT=' + lyrLeft + ' TOP=' + lyrTop + ' width="' + (mLen * menuHoriSpacing) + '" height="17"  background= "' + bgImg + '" VISIBILITY="' + lyrVis + '"' +  '>' + lyrText + '</LAYER>');    
  }
  else 
  {
    parent.frtop.document.writeln('<DIV ID="' + lyrName + '" STYLE= " text-decoration: none; font-size:' + menuFontSize +'pt; font-weight: 600; color: #191970 ; position:absolute; left:' + lyrLeft + 'px; top:' + lyrTop + 'px; width:' + (mLen * menuHoriSpacing) + 'px; padding: 2px 2px; background: URL(' + bgImg + '); visibility:' + lyrVis + '"> ' + lyrText + '</DIV>');    
  }

}
function itemLength(itemText)
{
var itemLength = 0;

charCount = 0;
charPos = itemText.indexOf("&");
while ( charPos != -1 ) {
charCount++;
charPos = itemText.indexOf("&",charPos+1);
}
itemLength = itemText.length - (charCount * 7);
itemLength = Math.floor(itemLength/8)+1;
return itemLength;
}
function genMenu(lang)
{
var topPos = frTopHgtPos;
var leftPos = frTopWidPos;
var left2Pos = leftPos;
var smLength = 0;
var mmRight = frTopWidPos;
var mmLeft = 30;
var bgImg = '';
var mLen = 0;
for (var i = 0; i < menuItems.length; i++)
  {
  mmRight += (itemLength(menuItems[i].text.getLanguage(lang))) * menuHoriSpacing + 5;
  }
mmRight+=50;

for (var i = 0; i < menuItems.length; i++)
  {
  mLen=itemLength(menuItems[i].text.getLanguage(lang));
  bgImg = 'mnorm' + mLen + '.gif';
  genItem('MM' + i, leftPos, topPos, true, menuItems[i].text.getLanguage(lang), 10, menuItems[i].noLangUrl,menuItems[i].isLocal,bgImg,mLen);
/*alert(i);
alert("menuItems[i] "+menuItems[i]);*/
  if (menuItems[i].hasInfo == true)
    {
    genItem('infoMM' + i, frLeftWidPos, frLeftInfoPos, false, menuItems[i].info.getLanguage(lang),7, '', '',50);
    }
 if (menuItems[i].hasSub == true)
  { 
/*alert(i);
alert("menuItems[i].subItems "+menuItems[i].subItems);*/
  smLength = 0;
  for (var ii = 0; ii < menuItems[i].subItems.length; ii++)
  {
  smLength += (itemLength(menuItems[i].subItems[ii].text.getLanguage(lang))) * menuHoriSpacing - 1;
  }
  left2Pos = leftPos;
  while ( (left2Pos + smLength) > mmRight)
  {
    if (left2Pos - menuHoriSpacing <= frTopWidPos)
    {
      break;
    }
    left2Pos -= menuHoriSpacing;
  }
  for (var ii = 0; ii < menuItems[i].subItems.length; ii++)
    {
    mLen=itemLength(menuItems[i].subItems[ii].text.getLanguage(lang));
    bgImg = 'snorm' + mLen + '.gif';
    genItem('MM' + i + 'MM' + ii, left2Pos, topPos+menuVertSpacing, hideName , menuItems[i].subItems[ii].text.getLanguage(lang), 10, menuItems[i].subItems[ii].noLangUrl,menuItems[i].subItems[ii].isLocal,bgImg,mLen);
    if (menuItems[i].subItems[ii].hasInfo == true)
      {
      genItem('infoMM' + i + 'MM' + ii, frLeftWidPos, frLeftInfoPos, false, menuItems[i].subItems[ii].info.getLanguage(lang),7, '', '',50);
      }

    left2Pos += (itemLength(menuItems[i].subItems[ii].text.getLanguage(lang))) * menuHoriSpacing;
    }
  }

 
  leftPos += (itemLength( menuItems[i].text.getLanguage(lang))) * menuHoriSpacing;
  }
}
function refLayer(lname) 
{
  if (NN) { return document.layers[lname]; }
  else { return eval('document.all.' + lname + '.style'); }
}


function itemByUrl(newUrl)
{
  returnVal=1;
  for (var i = 0; i < menuItems.length; i++)
    {
    if (newUrl.indexOf(menuItems[i].noLangUrl) != -1)
	{
	  returnVal=i;
	}
    if (menuItems[i].hasSub == true)
      { 
	  for (var ii = 0; ii < menuItems[i].subItems.length; ii++)
	  {
	    if (newUrl.indexOf(menuItems[i].subItems[ii].noLangUrl) != -1)
	    {
	      returnVal=i;
	    }
	  }
	}
    }
  return returnVal;
}


function swapBySearch(searchStr,modifyLastSel)
//swap menu according to passed search String
//second optional parameter can modify lastSelection of menu
{
  swapMenu('MM'+itemByUrl(searchStr));
  if (arguments.length > 1)
  {
    if (arguments[1] == true) {lastSelection='MM'+itemByUrl(searchStr)};
  }
}

function swapMenu(lyrName)
{
  var bgNorm = '';
  var bgHigh = ''
  var mLen = 0;
  var lvls = 0;
  var currSel = 0;
  var showNow = hideName;
  var tmpArray = lyrName.split('MM');

  //first element of array is always an empty string
  lvls = tmpArray.length - 1;
  
  stopSwapBack();
  if (lvls == 1 )
    {
    currSel = Number(tmpArray[1]);
    for (var i = 0; i < menuItems.length; i++)
      {
      mLen=itemLength(menuItems[i].text.getLanguage(lang));

      if (NN) 
        {
        bgHigh = 'mhigh' + mLen + '.gif';
        bgNorm = 'mnorm' + mLen + '.gif';
        refLayer(('MM'+i)).background.src = (currSel == i ? bgHigh : bgNorm);
        }
      else
        {
        bgHigh = 'URL(mhigh' + mLen + '.gif)';
        bgNorm = 'URL(mnorm' + mLen + '.gif)';
        refLayer(('MM'+i)).background = (currSel == i ? bgHigh : bgNorm);
        }

      if (menuItems[i].hasSub == true)
        {
        for (var ii = 0; ii < menuItems[i].subItems.length; ii++)
          {
          refLayer(('MM'+i+'MM'+ii)).visibility = ( currSel == i ? showName : hideName);

          }
        }
      }
    }
  startSwapBack(lyrName);
}



function stopSwapMenu()
{
if (timerRunning)
	{
	clearTimeout(timerID);
	}
timerRunning=false;
}

function startSwapMenu(lyrName)
{
stopSwapMenu();
timerID = eval("setTimeout(\"swapMenu('"+lyrName+"')\",300)");
timerRunning=true;
}

function stopSwapBack()
{
if (timer2Running)
	{
	clearTimeout(timer2ID);
	}
timer2Running=false;
}

function startSwapBack(lyrName)
{
stopSwapBack();
if (lyrName != lastSelection.substr(0,3))
	{
	timer2ID = eval("setTimeout(\"swapMenu('"+lastSelection+"')\",3000)");
	timer2Running=true;
	}
}

function xchgLocation(newUrl, lyrName)
{
var tmpUrl=parent.location.href;
lastSelection = lyrName.substr(0,3);

if (tmpUrl.indexOf("?") == -1)
{
  tmpUrl = tmpUrl+"?"+newUrl;
}
else
{
  tmpUrl = tmpUrl.substr(0,tmpUrl.indexOf("?"))+"?"+newUrl;
}
parent.location.href=tmpUrl;
startSwapBack();
}


