﻿/*
lib.js for Thurner Woods

Author:			  manfred.schneiderbauer@world-direct.at
Version:      1.123
Last Changed:	2008-08-18
*/

/** begin CSS MENU functions, hansjoerg.broederbauer@world-direct.at **/

var currentSheet, doc = window.document, activators = {
	onhover:{on:'onmouseover', off:'onmouseout'},
	onactive:{on:'onmousedown', off:'onmouseup'}
}

function parseStylesheets() {
	var sheets = doc.styleSheets, l = sheets.length;
	for(var i=0; i<l; i++)
		parseStylesheet(sheets[i]);
}
	function parseStylesheet(sheet) {
		if(sheet.imports) {
			try {
				var imports = sheet.imports, l = imports.length;
				for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
			} catch(securityException){}
		}

		try {
			var rules = (currentSheet = sheet).rules, l = rules.length;
			for(var j=0; j<l; j++) parseCSSRule(rules[j]);
		} catch(securityException){}
	}

	function parseCSSRule(rule) {
		var select = rule.selectorText, style = rule.style.cssText;
		if(!(/(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i).test(select) || !style) return;

		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
		var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
		var affected = select.replace(/:hover.*$/, '');
		var elements = getElementsBySelect(affected);

		currentSheet.addRule(newSelect, style);
		for(var i=0; i<elements.length; i++)
			new HoverElement(elements[i], className, activators[pseudo]);
	}

function HoverElement(node, className, events) {
	if(!node.hovers) node.hovers = {};
	if(node.hovers[className]) return;
	node.hovers[className] = true;
	node.attachEvent(events.on,
		function() { node.className += ' ' + className; });
	node.attachEvent(events.off,
		function() { node.className =
			node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
}

function getElementsBySelect(rule) {
	var parts, nodes = [doc];
	parts = rule.split(' ');
	for(var i=0; i<parts.length; i++) {
		nodes = getSelectedNodes(parts[i], nodes);
	}	return nodes;
}
	function getSelectedNodes(select, elements) {
		var result, node, nodes = [];
		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
		for(var i=0; i<elements.length; i++) {
			result = tagName? elements[i].all.tags(tagName):elements[i].all;
			for(var j=0; j<result.length; j++) {
				node = result[j];
				if((identify && node.id != identify[1]) || (classname && !(new RegExp('\\b' +
					classname[1] + '\\b').exec(node.className)))) continue;
				nodes[nodes.length] = node;
			}
		}	return nodes;
	}

if (isIE6up && !isIE7up){
	if (window.addEventListener) {
	    window.addEventListener("onload", parseStylesheets, 0);
	} else if (window.attachEvent) {
	    var retVal = window.attachEvent("onload", parseStylesheets);
	}
}

/** end CSS MENU functions, hansjoerg.broederbauer@world-direct.at **/

// init and exec left menu OMO
function leftMenuOMO(init,mode,obj){
 if(init) // init
  {
    var allLeftLis=document.getElementsByTagName('li');
    for(var i=0;i<allLeftLis.length;i++)
      {
       if(allLeftLis[i].className.indexOf('leftlist-item')!=-1)
        {
          allLeftLis[i].onmouseover=function(){leftMenuOMO(false,true,this);}
          allLeftLis[i].onmouseout=function(){leftMenuOMO(false,false,this);}
        }
      }
  }else{ // exec
    if(obj.className.indexOf('cur')==-1&&obj.className.indexOf('act')==-1) // if the item is not active...
      {
      // get current background color
      var actBgCol='';
      if(isIE55up)
        {
          actBgCol=getElementsByClass('div','LeftMenuTopline')[0].currentStyle.backgroundColor;
        }else{
          actBgCol=getComputedStyle(getElementsByClass('div','LeftMenuTopline')[0],'').getPropertyValue('background-color');
        }
      if(mode) // over
        {
          if(obj.className.indexOf('item2')!=-1) // 2nd menu level
            {
            //obj.getElementsByTagName('a')[0].style.color='#505050';
            obj.getElementsByTagName('img')[0].style.visibility='visible';
            }else{ // 1st menu level
            obj.getElementsByTagName('a')[0].style.color='white';
            obj.style.backgroundColor=actBgCol;
            }
        }else{ // out
          if(obj.className.indexOf('item2')!=-1) // 2nd menu level
            {
            obj.getElementsByTagName('a')[0].style.color='#727272';
            obj.getElementsByTagName('img')[0].style.visibility='hidden';
            }else{ // 1st menu level
            obj.getElementsByTagName('a')[0].style.color='';
            obj.style.backgroundColor='';
            }
        }
      }
  }
}

// style buttons
function styleButtons(){
var allInps=document.getElementsByTagName('input'); var b=''; var w=0; var tbc=''; // collect elements
for(var i=0;i<allInps.length;i++)
  {
  b=allInps[i];
  if(b.type=='button'||b.type=='submit'||b.type=='reset'||b.type=='file') // if it's a button-like element...
    {
    w=b.offsetWidth; // get offset width; below the class corresponding to the width is chosen
    if(w<50){tbc=60;}
    if(w>49&&w<110){tbc=120;}
    if(w>109){tbc=240;}
    b.className='button_'+tbc;
    }
  if(b.type=='checkbox'||b.type=='radio') // restyle radio and checkbox elements
    {
      allInps[i].style.backgroundColor='transparent';
      allInps[i].style.border=0;
    }
  }
}

// delayed execute certain function calls
function delayExec(){
  window.setTimeout("styleButtons();",600);
  window.setTimeout("leftMenuOMO(true);",700);
}
clib_onload("delayExec()");

// right-align the top nav on IE
function rightAlignTopNav(alC){
 if(!alC||alC==undefined){alC=0};
 if(alC<3)
  {
  d('dvTopNavigation').style.marginLeft=Number(889-getElementsByClass('ul','ulTop')[0].offsetWidth)+'px';
  alC++;
  window.setTimeout("rightAlignTopNav("+alC+")",1000);
  }
}

// imagemapper
function imageMap(obj){
theMap=document.getElementsByTagName('map')[0].parentNode;
var allAreas=theMap.getElementsByTagName('area');
var thisArea=''; var thisNormTitle=''; var imgPrefix='/fileadmin/dev/img/imagemap/';
window.mapImg=d('tdMainContent').getElementsByTagName('img')[0];
window.mapImg.style.border=0;
window.thisMapImgSrc=window.mapImg.getAttribute('src'); window.mapImgSrcs=new Array();
window.thisMapImgX=window.mapImg.offsetWidth+'px'; window.thisMapImgY=window.mapImg.offsetHeight+'px';
for(var i=0;i<allAreas.length;i++)
  {
   thisArea=allAreas[i];
   thisArea.setAttribute('title',thisArea.alt);
   thisArea.setAttribute('thisIndex',i);
   thisNormtitle=window.prefix+thisArea.alt.toLowerCase().replace(' ','_').replace('ä','ae').replace('ö','oe').replace('ü','ue').replace('ß','ss')+'.gif';
   if(thisNormtitle!='')
    {
    window.mapImgSrcs[i]=imgPrefix+thisNormtitle;
    thisArea.onmouseover=function(){window.mapImg.src=mapImgSrcs[this.getAttribute('thisIndex')];window.mapImg.style.width=window.thisMapImgX;window.mapImg.style.height=window.thisMapImgY;}
    thisArea.onmouseout=function(){window.mapImg.src=window.thisMapImgSrc;}
    }
  }
}

// treat white line on hover
function fixTopMenuDDTopPadding(){
  var els=getElementsByClass('div','dropdown');
  for(var i=0;i<els.length;i++)
    {
     els[i].onmouseover=function(){this.parentNode.parentNode.getElementsByTagName('a')[0].style.borderBottom='4px solid #fff';}
     els[i].onmouseout=function(){if(this.parentNode.parentNode.parentNode.parentNode.className.indexOf('act-button')==-1){this.parentNode.parentNode.getElementsByTagName('a')[0].style.borderBottom=0;}}
    }
}
clib_onload('fixTopMenuDDTopPadding()');