// defining mouse events
if (document.getElementById && document.getElementsByTagName) {

    var alinks = document.getElementsByTagName('a');
    for (var i = 0; i < alinks.length; i++) {
      var type='';
      var type2='';
      var pid="";
      var fn=null;
      if (alinks[i].parentNode.id) {
        pid = alinks[i].parentNode.id;
        if (pid.indexOf("iMenu_") > -1) {
          if (pid.substr(6) == "st") { // iMenu_st
            type = "click";
            fn = SwitchStyleToComplex; // how to make SwitchStyle("bla") ?
          }
          else { // iMenu_1 ...
            //type = "mouseover";
            //fn = SwitchMenu;
            //type2 = "click";
            //fn2 = GetFontSize;
          };
        }
        else if (pid == 'switch_css') {
          type = "click";
          fn = SwitchStyleToSimple;
        }
        else if (pid == 'switch_css_back') {
          type = "click";
          fn = SwitchStyleToComplex;
        };
      }
      else { // parent without id
        if (alinks[i].name) {
          alinks[i].id = "i_" + alinks[i].name;
        }
        else if (alinks[i].href) {
          if (! alinks[i].rel) { // exclude lightbox
            var shref=alinks[i].href;
            var x = shref.indexOf("#");
            if (x>-1 && x < shref.length-3) { // exclude # only refs for page top
              alinks[i].id = alinks[i].href;
              alinks[i].href = "javascript:void(0);";
              type = "click";
              fn = JumpToInnerPageLink;
            };
          };
        }
      };
      if (type.length>1) {
        addEvent(alinks[i],type,fn);
      };
      if (type2.length>1) {
        addEvent(alinks[i],type2,fn2);
      };
    };
    SwitchFontSize();  
};

// http://www.ilfilosofo.com/blog/2008/04/14/addevent-preserving-this/
function addEvent(obj,type,fn) {
  if (obj.addEventListener) {
      obj.addEventListener(type, fn, false);
  } else if (obj.attachEvent) {
        obj.attachEvent('on' + type, function () {
        return fn.call(obj, window.event);
      });
  };
}

// not used
function GetFontSize() {
  var fz = document.emSize(document.getElementById("contents"));

  var ls = window.location.search;
  if(ls.indexOf("&userfontpix")>0) {
    var pairs = ls.split( "&" );
    for (i=0; i< pairs.length;i++) {
      if (pairs[i].indexOf("userfontpix")>-1) {
        SwitchRefs("&"+pairs[i],"&userfontpix=" + fz);
        break;
      };
    };
  };
}



// shows lightbox
function ShowImage(e) {
  if (!e.target) {e.target=e.srcElement;};
  var sid = e.target.id; // name of image -- all jpg
  document.getElementById("imgpopup").innerHTML = "<img src='images/" + sid + "'><p>" + e.target.alt;
  ShowDiv(); 
}



// Opera 9 (at least) crashes on sound effect and does not like the lightbox
function IsOpera() {
if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Opera/x.x or Opera x.x (ignoring remaining decimal places);
 //var oprversion=new Number(RegExp.$1) // capture x.x portion and store as a number
 //if (oprversion>=10)
 //document.write("You're using Opera 10.x or above")
  return true;
}
else {
 return false;
 }
}

/* one more CSS problem: Firefox, IE and Opera and perhaps more browsers jump too high to links resulting from fixed header height */
/* using % as header hight to fix this stuff is not possible */
/* no CSS cross-browser solution for several browsers found */
function JumpToInnerPageLink(e) {
  
  if (!e.target) {e.target=e.srcElement;} // IE quirk, http://www.javascriptkit.com/jsref/event.shtml
  
  if (e.target.id) {
    var sid = e.target.id;
    var i=sid.indexOf("#");
    if (i>-1) {
      var sanchor = sid.substring(i+1);
      if (document.getElementById("i_" + sanchor)) {
        var tar = document.getElementById("i_" + sanchor);
        footerdiv = document.getElementById("footer_fixed");
        var h = footerdiv.offsetHeight;
        var z = tar.offsetTop;
        window.scrollTo(0,z-h+10);
      };
    };
  };
}



// matches font size either to user setting or to screen scaled default
function SwitchFontSize() {

  winW = document.body.offsetWidth;
  
  var bIE = false; // is Internet Explorer ?
  var bUserwish = false;
  var newHref = "";
  var currentCSS = "";
  
  var ufpix = 0;
  var afpoint = 0;
  var afpix = 0;
  
  var ls = window.location.search;

 


  if(document.createStyleSheet) { 
    var oStyleSheet = document.createStyleSheet("Bildschirmauflösung", "projection,screen,tv");
  }
  else if (document.createTextNode) {
    var oStyleSheet=document.createElement('style');
    oStyleSheet.type='text/css';
    oStyleSheet.id = "ff"; // required because Firefox does not append child to object oStyleSheet (???)
    document.getElementsByTagName("head")[0].appendChild(oStyleSheet);
    oStyleSheet = document.styleSheets[2];
  }
  else {
    return;
  };



  if (oStyleSheet.addRule) {bIE = true}; 
  if (!IsThereVertScrBar()) {winW=winW-16;} // without that different font sizes may result
  afpoint = (winW * 0.0162933 - 3.33605) * 0.8;
  afpoint =runde(afpoint,0)
  AddStyle(bIE,'body','font-size:' + afpoint + 'px;',0,oStyleSheet);

  // settings dependent on screen width only, but affected by font size
  var xdiv = document.getElementById('footer');
  if (xdiv) {
    xdiv.id = "footer_fixed";
    xdiv = document.getElementById('bgfooter');
    xdiv.src = "images/bg_footer_fixed.jpg";
  };
  
  xdiv = document.getElementById('bgimg');
  if (xdiv) {
    xdiv.id = "bgimg_fixed";
    xdiv.src = "images/bg_all_fixed.jpg";
  }
  else {
    xdiv = document.getElementById('bgimg1');
    if (xdiv) {
      xdiv.id = "bgimg_fixed";
      xdiv.src = "images/bg_all_fixed1.jpg";
    }
  };
  
  xdiv = document.getElementById("footer_fixed");
  var h = xdiv.offsetHeight;
  h = h + 10; 
  AddStyle(bIE,'.totop','margin-bottom:-' + h + 'px;',1,oStyleSheet);
  AddStyle(bIE,'#footspace','height:' + h + 'px;',2,oStyleSheet);
  
  
}

// adds an inline style into the head section
function AddStyle(isIE,sSelector,sRule,iNum,objStyle) {
  if (isIE) { //IE
    if (objStyle.rules[iNum]) {objStyle.removeRule(iNum);};
    objStyle.addRule(sSelector, sRule, iNum);
  }
  else {
    var myNode = document.createTextNode(sSelector + " { " + sRule + " }");
    document.getElementById("ff").appendChild(myNode) // appendChild not working with objStyle in Firefox 3.5.6 (???)
  };
}




// gets font size in pixel by creating a hidden DIV and measuring it -- changed, original:
// http://www.webdeveloper.com/forum/showthread.php?t=170413
document.emSize=function(pa){
	pa= pa || document.body;
	var who= document.createElement('span');
	var atts= {fontSize:'1em',padding:'0',position:'absolute',lineHeight:'1'};
	for(var p in atts){
		who.style[p]= atts[p];
	}
	who.appendChild(document.createTextNode('M'));
	pa.appendChild(who);
	var fs=who.offsetHeight; //[who.offsetWidth,who.offsetHeight];
	pa.removeChild(who);
	return fs;
}

// round numbers without discalculation -- changed, original:
// http://www.dcljs.de/faq/antwort.php?Antwort=rechnen_runden
function runde(x, n) {
  if (n < 1 || n > 14) {
    var y = x.toString();
    var sy = y.split(".");
    return sy[0];
  }
  else {
    var e = Math.pow(10, n);
    var k = (Math.round(x * e) / e).toString();
    if (k.indexOf('.') == -1) k += '.';
    k += e.toString().substring(1);
    return k.substring(0, k.indexOf('.') + n+1);
  };
}

// actually returns whether there is need for vertical scroll bar
function IsThereVertScrBar () {
var root= document.compatMode=='BackCompat'? document.body : document.documentElement;
return isVerticalScrollbar= root.scrollHeight>root.clientHeight;
}

