var dcm = document;
var ismsie = false;
var iskonq = false;

// MSIE?
if (!window.opera && navigator.userAgent.indexOf("MSIE") !=-1) ismsie = true;

// Konqueror
if (!window.opera && navigator.userAgent.indexOf("Konqueror") !=-1) iskonq = true;

// Oeffnet das AGB Popup
function AGB(url) {
  agbwin = window.open(url,"AGB","menubar=0,resizable=1,scrollbars=1,directories=0,toolbar=0,status=0,location=0,width=515,height=600");
}

// Wrapper fuer getElementById
function gE(id) {return dcm.getElementById(id);};

// Wrapper fuer die createTextNode Funktion
function cN(tx) {return dcm.createTextNode(tx);};

// Wrapper fuer setTimeout
function sT(f,v) {return setTimeout(f,v);};

function fixicounter(o,cls) {
  if (cls == true) { hide(o.name+"_counter",true); return; }
  var d = gE(o.name+"_counter"); if (d==null) return true;
  d.style.display = "inline";
  var l = 3800-o.value.length; if (l<0) { o.value = o.value.substr(0,3800); o.focus(); }
  d.innerHTML = (l<=0)?"keine weiteren Zeichen":"noch "+l+" Zeichen";
}

// Wrapper fuer getElementsByTagName
function eB(o,t,e) {
  try { 
    var r = o.getElementsByTagName(t); 
  } catch(e) {
    //alert("t requested:"+t);
    return null;
  } 
  return (e==null)?r:r[e];
}

// AppendChild wrapper
function aC(c,t) {c.appendChild(t);};

// Wrapper fuer die createElement Funtion
function cE(el) {return dcm.createElement(el);};

// Warnfenster einblenden
function warnfenster(title,text,cls,buttons,yeslink,nolink) {
  var b = gE("pagebody");
  var f = gE("hinweisfenster");
  if (!cls) {
      if (ismsie) {
        if (document.documentElement && document.documentElement.scrollTop) {
	  var yFromTop = document.documentElement.scrollTop;
	} else {
	  var yFromTop = document.body.scrollTop;
	}
        b.style.height = document.documentElement.clientHeight+"px";
      } else {
        var yFromTop = (self.pageYOffset)?self.pageYOffset:0;
        b.style.height = window.innerHeight+"px";
      }
      f.style.top = 300+yFromTop+"px"; b.style.top = yFromTop+"px";
      gE("hinweisfenster_text").innerHTML = text;
      gE("hwft").innerHTML = title; 
      //window.scrollTo(0,0);
  }
  b.style.display = (cls)?"none":"block";
  f.style.display = (cls)?"none":"block";
  var u = gE("hinweisfenster_buttons"); if (!u) return;
  u.style.display= (cls||buttons==null|!buttons)?"none":"block"; 
  if (buttons==null || !buttons) return;
  gE("hwfok").href = yeslink; 
  gE("hwfcancel").href = (nolink==null)?"javascript:warnfenster('','',true)":nolink;
}

function eH(obj, evType, fn, useCapture) {

  // Objekt existiert nicht
  if (!obj) {
    alert("Assign fail for "+evType); return;
  }
  if (obj.addEventListener) {
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent) {
    var r = obj.attachEvent('on'+evType,fn);
    return r;
  } else {
    obj['on'+evType] = fn;
  }
}

// Klasse zuweisen (Crossbrowser Version)
function setclass(o, c) { if (ismsie) o.setAttribute("className",c); else o.setAttribute("class",c); }

function mov(o,c) { 
  if (c!=null) setclass(o,c);
  else o.style.textDecoration = "underline"; 
}

function mou(o,c) { 
  if (c!=null) setclass(o,c);
  else o.style.textDecoration = "none"; 
}

//
// Eventhandler - Crossbrowser version
//
function getEvent(e) {
  if (typeof e == 'undefined') e = window.event;
  if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
  if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
  return e;
}

function clkbyevent(ev) {
  var e = getEvent(ev);
  var t = e.target?e.target:e.srcElement;
  eval("dcm.forms.wmsg."+dcm.forms.wmsg.translate.value+".value='"+t.firstChild.nodeValue+"';");
}

function movbyevent(ev) {
  var e = getEvent(ev);
  var t = e.target?e.target:e.srcElement;
  setclass(t,'blueback');
}

function moubyevent(ev) {
  var e = getEvent(ev);
  var t = e.target?e.target:e.srcElement;
  setclass(t,'');
}

function tov(o,t,v) {
  var z = gE(t); var f = gE("fv_"+t);
  z.innerHTML = o.innerHTML;  f.value = (v==null)?o.innerHTML:v;
}

function hide(n,h) {
  var d = gE(n); if (d==null) return;
  d.style.display = (h)?"none":"block";
}

function dropdownmenu(b,o,p) {
  if (b.isopen==true) {
    gE(o).style.borderBottom = "1px solid #a8a59d";
    gE(p).style.display="none"; 
    b.isopen = false; b.fchildE = b.schildE = null;
  } else {
    if (ismsie)
      gE(o).style.borderBottom = "1px solid #f3f2f0";
    else
      gE(o).style.borderBottom = "1px solid none";
    gE(p).style.display="block";
    sT("gE('"+b.id+"').isopen = true",50);
    b.fchildE = o; b.schildE = p;
  }
}

function pixelig(url) {
  gE("ivwpixel").src = "http://swr.ivwbox.de/cgi-bin/ivw/CP/SWR3;p=http%3A%2F%2Fwww.swr3.de%2Fswr3land%2F&amp;i=swr3.de%2Fswr3land%2F&amp;k=30?r=" + escape(dcm.referrer) + "&amp;d=" + (new Date().getTime());
}

function clicker(ev) {
  var b = eB(dcm,"div"); 
  if (b!= null) {
    for (var i=0;i<b.length;i++) {
      if (b[i].isopen == true && b[i].fchildE!=null) {
        dropdownmenu(b[i],b[i].fchildE,b[i].schildE);
      }
    }
  }
}

// Einblenden des Fensters fuer eine Nachricht
function mailwindow(s,h,y) { 
    if (y!=null) {
      gE("mailwindow").style.top = parseInt(0.22*h)+y+"px";
      gE("datatransfer").style.top = y+"px";
    }
    if (s) { 
      hide("datatransfer",false); hide("mailwindow",false); 
      gE("datatransfer").style.height = h+"px";
    } else { 
      hide("mailwindow",true); hide("datatransfer",true); 
    }
}

// Starte Transfer von groesseren Daten
function datatransfer(alt,cls) { 
    if (cls!=null) {
      hide("datatransfer",true); hide("datatransferinfo",true); return;
    }
    if (ismsie) {
      var h = document.documentElement.clientHeight;
      if (document.documentElement && document.documentElement.scrollTop) {
        var yFromTop = document.documentElement.scrollTop;
      } else {
        var yFromTop = document.body.scrollTop;
      }
    } else {
      var h = window.innerHeight;
      var yFromTop = (self.pageYOffset)?self.pageYOffset:0;
    }

    gE("datatransfer").style.top = yFromTop+"px";
    gE("datatransferinfo").style.top = parseInt(0.45*h)+yFromTop+"px";
    if (alt!=null) gE("datatransferinfo").innerHTML = alt;
    hide("datatransfer",false); hide("datatransferinfo",false); 
}

eH(dcm,"click",clicker,false);

// AJAX io reference
var meldungio = null; var mel = null;

// Interaktives Laden
function meldung_ajax_init() { meldungio = new xrq(); mel = meldungio.newconn("melden"); }

// Dem User schnell eine Nachricht schicken
function melden(load,init,what,url) {
    if (init) {
        if (meldungio==null) meldung_ajax_init();
        if (ismsie) {
	    var h = dcm.documentElement.clientHeight;
            if (dcm.documentElement && dcm.documentElement.scrollTop) {
	       var yFromTop = dcm.documentElement.scrollTop;
    	    } else {
 	       var yFromTop = dcm.body.scrollTop;
	    }
	} else {
	    var h = window.innerHeight;
            var yFromTop = (self.pageYOffset)?self.pageYOffset:0;
	}

	var r = meldungio.fetch(mel,true,((url!=null)?url:meldeurl)+"/what/"+escape(what),"",melden);
	mailwindow(true,h,yFromTop); return;
    }

    // Daten sind uebertragen?
    if (meldungio.isfetched(mel)) {
	var html = meldungio.getresponse(mel,true);
	var d = gE("mailwindow"); if (d!=null) d.innerHTML = html;
    }
}

// Verstoss senden
function sendemeldung() {
    var F = document.forms.bad;
    if (F.why.value.length < 10) {
      warnfenster("Fehlerhafte Eingabe","Etwas mehr darf's dann schon sein.<br />Bitte mehr als 10 Zeichen eingeben",false);
      F.why.focus(); return; 
    }

    // Daten senden
    var r = meldungio.fetch(mel,true,meldeurl+"/xml/1/","what="+escape(F.what.value)+"&why="+escape(F.why.value)+"&id="+F.id.value,erstattet);
}

function erstattet() {
    if (meldungio.isfetched(mel)) {
	var d = meldungio.getresponse(mel); mailwindow(false);
      if (d!=null && xmlget(d,"OK",true)) {
        warnfenster("Meldung erfolgte","Deine Meldung wurde entgegen genommen.",false);
      }
    }
}

//
// Short wrapper
//
function xmlget(x,s,l) {
    try {
	var r = eB(x,s);
    } catch (e) {
	if (l==null) return "";
	return (l==true)?0:0.0;
    }
    if ((r.length) && (r[0].firstChild)) {
	var b = r[0].firstChild.nodeValue;
	if (l==null) return b;
	return (l)?parseInt(b):parseFloat(b);
    } else { return (l!=null)?0:""; }
}