// Define the browser we have instead of multiple calls throughout the file
var userAgent = navigator.userAgent.toLowerCase();
var is_opera  = (userAgent.indexOf('opera') != -1);
var is_saf    = ((userAgent.indexOf('applewebkit') != -1) || (navigator.vendor == 'Apple Computer, Inc.'));
var is_webtv  = (userAgent.indexOf('webtv') != -1);
var is_ie     = ((userAgent.indexOf('msie') != -1) && (!is_opera) && (!is_saf) && (!is_webtv));
var is_ie4    = ((is_ie) && (userAgent.indexOf('msie 4.') != -1));
var is_ie7    = ((is_ie) && (userAgent.indexOf('msie 7.') != -1));
var is_moz    = ((navigator.product == 'Gecko') && (!is_saf));
var is_kon    = (userAgent.indexOf('konqueror') != -1);
var is_ns     = ((userAgent.indexOf('compatible') == -1) && (userAgent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_saf));
var is_ns4    = ((is_ns) && (parseInt(navigator.appVersion) == 4));
var is_mac    = (userAgent.indexOf('mac') != -1);

// Catch possible bugs with WebTV and other older browsers
var is_regexp = (window.RegExp) ? true : false;

// Help out old versions of IE that don't understand element.style.cursor = 'pointer'
var pointer_cursor = (is_ie ? 'hand' : 'pointer');

function fetch_object(idname)
{
  if (document.getElementById)
  {
    return document.getElementById(idname);
  }
  else if (document.all)
  {
    return document.all[idname];
  }
  else if (document.layers)
  {
    return document.layers[idname];
  }
  else
  {
    return null;
  }
}
function fetch_tags(parentobj, tag)
{
  if (typeof parentobj.getElementsByTagName != 'undefined')
  {
    return parentobj.getElementsByTagName(tag);
  }
  else if (parentobj.all && parentobj.all.tags)
  {
    return parentobj.all.tags(tag);
  }
  else
  {
    return null;
  }
}
function do_an_e(eventobj)
{
  if (!eventobj || is_ie)
  {
    window.event.returnValue = false;
    window.event.cancelBubble = true;
    return window.event;
  }
  else
  {
    eventobj.stopPropagation();
    eventobj.preventDefault();
    return eventobj;
  }
}

function $(id)
{
	return document.getElementById(id);
}
function $$(id)
{
	return document.getElementsByName(id);
}
function $$$(id)
{
	return document.getElementsByTagName(id);
}

// PopUp öffnen
function wopen1(url,ziel)
{
  window.open(url,ziel,'resizable=yes,status=yes,scrollbars=yes,menubar=yes,toolbar=yes,location=yes');
}
function wopen12(url,ziel,width,height)
{
  window.open(url,ziel,'width='+width+',height='+height+'resizable=no,status=yes,scrollbars=auto,menubar=no,toolbar=no,location=no');
}
function wopen2(url,ziel)
{
  window.open(url,ziel,'resizable=yes,status=no,scrollbars=yes,menubar=no,toolbar=no,location=no');
}

// Cookie setzen
function setCookie(name, wert, expires, domain, path, secure)
{
  var datum = new Date();
  var zeit = new Date(datum.getTime() + expires);
  var cook = name+"="+unescape(wert);
   cook += (expires) ? "; expires="+ zeit.toGMTString() : "";
   cook += (domain) ? "; domain="+ domain : "";
   cook += (path) ? "; path="+path : "";
   cook += (secure) ? "; secure" : "";
   document.cookie = cook;
}
// Cookie lesen
function getCookie(name)
{
   var i=0;  //Suchposition im Cookie
   var suche = name+"=";
   while (i<document.cookie.length)
   {
      if (document.cookie.substring(i, i+suche.length)==suche)
      {
         var ende = document.cookie.indexOf(";", i+suche.length);
         ende = (ende>-1) ? ende : document.cookie.length;
         var cook = document.cookie.substring(i+suche.length, ende);
         return unescape(cook);
      }
      i++;
   }
   return null;
}
// Cookie löschen
function eraseCookie(name, domain, path)
{
   var cook="name=; expires=Thu, 01-Jan-70 00:00:01 GMT";
   cook += (domain) ? "domain="+domain : "";
   cook += (path) ? "path="+path : "";
   document.cookie = cook;
}

/* HTML-Tags und Sonderzeichen maskieren */
function htmlentities(str,typ)
{
  if(typeof str=="undefined")
    str="";
  if(typeof typ!="number")
    typ=2;
  typ = Math.max(0,Math.min(3,parseInt(typ)));
  var html = new Array();
  html[38] = "&amp;";
  html[60] = "&lt;";
  html[62] = "&gt;";
  if(typ==1 || typ==3)
    html[39] = "&#039;";
  if(typ==2 || typ==3)
    html[34] = "&quot;";
  for(var i in html)
    eval("str=str.replace(/"+String.fromCharCode(i)+"/g,\""+html[i]+"\");");
  var entity = new Array(
    "&nbsp;","&iexcl;","&cent;","&pound;","&curren;","&yen;","&brvbar;","&sect;",
    "&uml;","&copy;","&ordf;","&laquo;","&not;","&shy;","&reg;","&macr;",
    "&deg;","&plusmn;","&sup2;","&sup3;","&acute;","&micro;","&para;","&middot;",
    "&cedil;","&sup1;","&ordm;","&raquo;","&frac14;","&frac12;","&frac34;","&iquest;",
    "&Agrave;","&Aacute;","&Acirc;","&Atilde;","&Auml;","&Aring;","&AElig;","&Ccedil;",
    "&Egrave;","&Eacute;","&Ecirc;","&Euml;","&Igrave;","&Iacute;","&Icirc;","&Iuml;",
    "&ETH;","&Ntilde;","&Ograve;","&Oacute;","&Ocirc;","&Otilde;","&Ouml;","&times;",
    "&Oslash;","&Ugrave;","&Uacute;","&Ucirc;","&Uuml;","&Yacute;","&THORN;","&szlig;",
    "&agrave;","&aacute;","&acirc;","&atilde;","&auml;","&aring;","&aelig;","&ccedil;",
    "&egrave;","&eacute;","&ecirc;","&euml;","&igrave;","&iacute;","&icirc;","&iuml;",
    "&eth;","&ntilde;","&ograve;","&oacute;","&ocirc;","&otilde;","&ouml;","&divide;",
    "&oslash;","&ugrave;","&uacute;","&ucirc;","&uuml;","&yacute;","&thorn;","&yuml;"
    );
  for(var i in entity)
    eval("str=str.replace(/"+String.fromCharCode(i*1+160)+"/g,\""+entity[i]+"\");");
  return str;
}
/**
* John Resig, erklärt bei quirksmode
*/
function addEvent( obj, type, fn )
{
   if (obj.addEventListener) {
      obj.addEventListener( type, fn, false );
   } else if (obj.attachEvent) {
      obj["e"+type+fn] = fn;
      obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
      obj.attachEvent( "on"+type, obj[type+fn] );
   }
}

function removeEvent( obj, type, fn )
{
   if (obj.removeEventListener) {
      obj.removeEventListener( type, fn, false );
   } else if (obj.detachEvent) {
      obj.detachEvent( "on"+type, obj[type+fn] );
      obj[type+fn] = null;
      obj["e"+type+fn] = null;
   }
}

// NL-Info anzeigen
function ShowInfo(id)
{
  info = $(id);
  info.style.display = 'block';
}

// NL-Info ausblenden
function HideInfo()
{
  info.style.display = 'none';
}

// NL-Info Position aktualisieren
function updateInfo(e)
{
  if(info!=null)
  {
    posx=0; posy=0;
    if (!e) e=window.event;
    if (e.pageX && e.pageY)
    {
      posx=e.pageX;
      posy=e.pageY;
    }
    else if (e.clientX && e.clientY)
    {
      if(document.compatMode && document.compatMode=="CSS1Compat")
      {
        posx=e.clientX + document.documentElement.scrollLeft;
        posy=e.clientY + document.documentElement.scrollTop;
      }
      else
      {
        posx=e.clientX + document.body.scrollLeft;
        posy=e.clientY + document.body.scrollTop;
      }
    }
    //window.status='posx: ' + posx + ' posy: ' + posy;
    info.style.top  = (posy - 104) + 'px';
    info.style.left = (posx + 1) + 'px';
  }
}

// Anfahrtskizze einblenden
function ShowCard()
{
  if(!zoom_in)
    zoom_in = true;
  pcard = $('p_skizze');
  card = $('skizze');
  pcard.style.display = 'block';
  card.style.display = 'block';
  if(card_height_current<card_height)
  {
    card_height_current += 5;
    if(card!=null)
    {
      pcard.style.height = card_height_current + 'px';
      card.style.height = card_height_current + 'px';
    }
    timer = window.setTimeout("ShowCard()",0.1);
  }
}

// Anfahrtskizze ausblenden
function HideCard()
{
  if(zoom_in)
    zoom_in = false;
  pcard = $('p_skizze');
  card = $('skizze');
  if(card_height_current>0)
  {
    card_height_current -= 10;
    if(card!=null)
    {
      pcard.style.height = card_height_current + 'px';
      card.style.height = card_height_current + 'px';
    }
    timer = window.setTimeout("HideCard()",0.1);
  }
  else
  {
    pcard.style.display = 'none';
    card.style.display = 'none';
  }
}

// Anfahrtskizze
function Card()
{
  window.clearTimeout(timer);
  if(!zoom_in)
    timer = window.setTimeout("ShowCard()",0.1);
  else
    timer = window.setTimeout("HideCard()",0.1);
}

// find out if ie runs in quirks mode
//
var docEl = (typeof document.compatMode!="undefined"&&document.compatMode!="BackCompat")?"documentElement":"body";

// register event
// capture it for nc 4x (ok it's a dino)
//
//function init_mousemove() {
    if(document.layers) document.captureEvents(Event.MOUSEMOVE);
//    document.onmousemove =	dpl_mouse_pos;
//}

function subin(x2,txt,e)
{
  var subtitle = $(x2);
  if(subtitle)
  {
    //e = is_ie?'':event;
    var mX = e? e.pageX : window.event.x;
	  var mY = e? e.pageY : window.event.y;
	  if (document.all && !document.captureEvents)
	  {
	    mX += document[docEl].scrollLeft;
	    mY += document[docEl].scrollTop;
    }
    subtitle.style.display = 'block';
    subtitle.style.top     = mY - subtitle.offsetHeight + 'px';
    subtitle.style.left    = mX + 'px';
    subtitle.style.width   = 'auto';
    subtitle.innerHTML = txt;
    if(subtitle.offsetWidth>400)
      subtitle.style.width  = '400px';
  }
  if (document.layers) routeEvent(e);
}

function subout(x)
{
  var subtitle = $(x);
  if(subtitle)
  {
    subtitle.style.display = 'none';
  }
}

// Container ein- / ausblenden
function showContainer(container)
{
  if(container)
  {
    var element = $(container);
    if(element.style.display == 'none')
      element.style.display = 'block';
    else
      element.style.display = 'none';
  }
}

// Tooltipps erstellen
function Tooltipp()
{
	var thisObj = this;
	var dickeTooltip = document.getElementById('dickeTooltip');

    var body = null;
    if(window.document.compatMode && window.document.compatMode == "CSS1Compat")
      body = window.document.documentElement;
    else if(window.document.body)
      body = window.document.body;

	this.show = function(event)
	            {
	              if(!event) var event = window.event;
	              var x = (event.pageX) ? event.pageX : event.clientX + body.scrollLeft;
	              var y = (event.pageY) ? event.pageY : event.clientY + body.scrollTop;
	              dickeTooltip.innerHTML =  this.attributes['title'].nodeValue;
	              this.attributes['title'].nodeValue = '';
	              dickeTooltip.style.top = y+'px';
	              dickeTooltip.style.display = 'block';
	              dickeTooltip.style.left = x+'px';
	            }

	this.hide = function()
	            {
	              dickeTooltip.style.display = 'none';
	              this.attributes['title'].nodeValue = dickeTooltip.innerHTML;
	            }
}

window.onload = function()
                {
                  tooltipp = new Tooltipp();
                  allElements = document.getElementsByTagName("*");
                  for (i in allElements)
                  {
                    if (allElements[i].attributes && allElements[i].attributes['title'] && allElements[i].attributes['title'].nodeValue)
                    {
                      allElements[i].onmouseover = tooltipp.show;
                      allElements[i].onmouseout = tooltipp.hide;
                      //window.status = allElements[i].attributes['title'].nodeValue;
                    }
                  }
                }

// Globale Variablen initialisieren
var zoom_in = false;
var card_height = 0;
var card_height_current = 0;
var info = null;
var timer = null;

// document.onmousemove = updateInfo;
