
//______________________________________________________________________
//
// 0-onload.js

// Copyright (C) 2006 Richard Atterer

var evalOnLoadStr = "";
function evalOnLoad(/*string*/ e) { evalOnLoadStr = evalOnLoadStr + e + ";"; }
window.onload = function() { eval(evalOnLoadStr); }

//______________________________________________________________________
//
// TJK_ToggleDL.js

// Copyright 2006 | Thierry Koblentz - www.TJKDesign.com All Rights reserved
// TJK_ToggleDL() Version 1.5.5 (the CSS file has changed from previous version) report bugs or errors to thierry@tjkdesign.com

function TJK_doToggleDL(x){
	var zDD=document.getElementById('padabama').getElementsByClassName('thesisdetail');
	var zDT=document.getElementById('padabama').getElementsByClassName('thesistitle');
    var content = document.getElementsByClassName('thesiscontent'); 
    if(zDD[x].className=='hideDD thesisdetail'){
    var theWidth = getStyle(content[x],'width'); 
    zDD[x].className='showDD thesisdetail';
    content[x].style.width = theWidth; 
    }else{
        zDD[x].className='hideDD thesisdetail';
    }
		zDT[x].className=(zDT[x].className=='DTplus thesistitle')?'DTminus thesistitle':'DTplus thesistitle';	
}
function TJK_ToggleDLopen(){//we open all of them
	var zDD=document.getElementById('padabama').getElementsByClassName('thesisdetail');
	var zDT=document.getElementById('padabama').getElementsByClassName('thesistitle');
    var content = document.getElementsByClassName('thesiscontent'); 
 
	for(var i=0;i<zDT.length;i++){
        var theWidth = getStyle(content[i],'width'); 
		zDD[i].className='showDD thesisdetail';
		zDT[i].className='DTminus thesistitle';
        content[i].style.width = theWidth; 
 
	}
	return false;
}
function TJK_ToggleDLclose(){//we close all of them	
	var zDD=document.getElementById('padabama').getElementsByClassName('thesisdetail');
	var zDT=document.getElementById('padabama').getElementsByClassName('thesistitle');
    	for(var i=0;i<zDT.length;i++){
		zDD[i].className='hideDD thesisdetail';
		zDT[i].className='DTplus thesistitle';
	}
	return false;	
}
function TJK_ToggleDL(){
 
    if (document.getElementById && document.getElementsByTagName){
        var zDT=document.getElementById('padabama').getElementsByClassName('thesistitle');
        var zDD=document.getElementById('padabama').getElementsByClassName('thesisdetail');
        var ToggleON = document.getElementById('TJK_ToggleON');
        var ToggleOFF = document.getElementById('TJK_ToggleOFF');
        if (ToggleON && ToggleOFF){// Show All - Hide All "links"
            ToggleON.onclick = TJK_ToggleDLopen;
            ToggleON.title = "Show all descriptions";
            ToggleON.href = "#";		
            ToggleOFF.onclick = TJK_ToggleDLclose;	
            ToggleOFF.title = "Hide all descriptions";
            ToggleOFF.href = "#";		
        }
        for(var i=0;i<zDT.length;i++){
            var zContent = zDT[i].innerHTML;
            var zHref = "<a href='#' onclick=\"TJK_doToggleDL("+i+");return false\" title='Show/hide the description'>";
            zDT[i].innerHTML = zHref + zContent + "</a>";
            zDD[i].className='hideDD thesisdetail';
            zDT[i].className='DTplus thesistitle';
		}
	}
}
function getStyle(oElm, strCssRule){
	var strValue = "";
	if(document.defaultView && document.defaultView.getComputedStyle){
		strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
	}
	else if(oElm.currentStyle){
		strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
			return p1.toUpperCase();
		});
		strValue = oElm.currentStyle[strCssRule];
	}
	return strValue;
}

//______________________________________________________________________
//
// builder.js

// script.aculo.us builder.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009

// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
//
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details, see the script.aculo.us web site: http://script.aculo.us/

var Builder = {
  NODEMAP: {
    AREA: 'map',
    CAPTION: 'table',
    COL: 'table',
    COLGROUP: 'table',
    LEGEND: 'fieldset',
    OPTGROUP: 'select',
    OPTION: 'select',
    PARAM: 'object',
    TBODY: 'table',
    TD: 'table',
    TFOOT: 'table',
    TH: 'table',
    THEAD: 'table',
    TR: 'table'
  },
  // note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently broken,
  //       due to a Firefox bug
  node: function(elementName) {
    elementName = elementName.toUpperCase();

    // try innerHTML approach
    var parentTag = this.NODEMAP[elementName] || 'div';
    var parentElement = document.createElement(parentTag);
    try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
      parentElement.innerHTML = "<" + elementName + "></" + elementName + ">";
    } catch(e) {}
    var element = parentElement.firstChild || null;

    // see if browser added wrapping tags
    if(element && (element.tagName.toUpperCase() != elementName))
      element = element.getElementsByTagName(elementName)[0];

    // fallback to createElement approach
    if(!element) element = document.createElement(elementName);

    // abort if nothing could be created
    if(!element) return;

    // attributes (or text)
    if(arguments[1])
      if(this._isStringOrNumber(arguments[1]) ||
        (arguments[1] instanceof Array) ||
        arguments[1].tagName) {
          this._children(element, arguments[1]);
        } else {
          var attrs = this._attributes(arguments[1]);
          if(attrs.length) {
            try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
              parentElement.innerHTML = "<" +elementName + " " +
                attrs + "></" + elementName + ">";
            } catch(e) {}
            element = parentElement.firstChild || null;
            // workaround firefox 1.0.X bug
            if(!element) {
              element = document.createElement(elementName);
              for(attr in arguments[1])
                element[attr == 'class' ? 'className' : attr] = arguments[1][attr];
            }
            if(element.tagName.toUpperCase() != elementName)
              element = parentElement.getElementsByTagName(elementName)[0];
          }
        }

    // text, or array of children
    if(arguments[2])
      this._children(element, arguments[2]);

     return $(element);
  },
  _text: function(text) {
     return document.createTextNode(text);
  },

  ATTR_MAP: {
    'className': 'class',
    'htmlFor': 'for'
  },

  _attributes: function(attributes) {
    var attrs = [];
    for(attribute in attributes)
      attrs.push((attribute in this.ATTR_MAP ? this.ATTR_MAP[attribute] : attribute) +
          '="' + attributes[attribute].toString().escapeHTML().gsub(/"/,'&quot;') + '"');
    return attrs.join(" ");
  },
  _children: function(element, children) {
    if(children.tagName) {
      element.appendChild(children);
      return;
    }
    if(typeof children=='object') { // array can hold nodes and text
      children.flatten().each( function(e) {
        if(typeof e=='object')
          element.appendChild(e);
        else
          if(Builder._isStringOrNumber(e))
            element.appendChild(Builder._text(e));
      });
    } else
      if(Builder._isStringOrNumber(children))
        element.appendChild(Builder._text(children));
  },
  _isStringOrNumber: function(param) {
    return(typeof param=='string' || typeof param=='number');
  },
  build: function(html) {
    var element = this.node('div');
    $(element).update(html.strip());
    return element.down();
  },
  dump: function(scope) {
    if(typeof scope != 'object' && typeof scope != 'function') scope = window; //global scope

    var tags = ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY " +
      "BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET " +
      "FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+
      "KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+
      "PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+
      "TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);

    tags.each( function(tag){
      scope[tag] = function() {
        return Builder.node.apply(Builder, [tag].concat($A(arguments)));
      };
    });
  }
};
//______________________________________________________________________
//
// mailto.js

// Copyright (C) 2006 Richard Atterer

evalOnLoad("mailto()");
function mailto() {
  for (var i = 0; i < document.links.length; ++i) {

    // Turn anchors like ".../mailto/u/domain.com" into "mailto:u@domain.com"
    var anchor = document.links[i];
    var href = anchor.getAttribute("href");
    // Firefox: href == "../mailto/foo/bar.com" or "mailto/foo/bar.com"
    // MSIE/Opera: href == "http://hostname/mailto/foo/bar.com"
    href = "/" + href;
    var m = href.indexOf("/mailto/");
    if (m == -1) continue;
    var at = href.indexOf("/", m + 8);
    if (at == -1) continue;
    var user = href.substring(m + 8, at);
    var domain = href.substring(at + 1, href.length);
    anchor.setAttribute("href", "mailto:" + user + "@" + domain);

    // If first child of anchor is text, replace any " at " inside it with @
    if (!anchor.firstChild || !anchor.firstChild.data) continue;
    var text = anchor.firstChild;
    var aet = text.data.indexOf(" ät ");
    if (aet != -1) text.replaceData(aet, 4, "@");
  }
}

//______________________________________________________________________
//
// noframe.js

// Copyright (C) 2007 Richard Atterer

// Given a URL, return the HTTP(S) hostname
function /*string*/ hostFromUrl(/*string*/ url) {
  var start;
  if (url.substr(0, 7) == "http://") start = 7;
  else if (url.substr(0, 8) == "https://") start = 8;
  else return false;
  var end = url.indexOf("/", start);
  if (end < 0) end = url.length;
  return url.substr(start, end - start);
}

// Do not allow our pages inside framesets of external websites
if (top != window) {
  try {
    var url = top.location.href; // Throws for external site with MSIE, Firefox
    // Opera, Konqueror:
    var host = hostFromUrl(url);
    if (host.substr(host.length - 11) != ".ifi.lmu.de"
        && host.substr(host.length - 27) != ".informatik.uni-muenchen.de")
      top.location.href = window.location.href;
  } catch (e) {
    top.location.href = window.location.href;
  }
}

//______________________________________________________________________
//
// search.js

// Copyright (C) 2006 Richard Atterer

evalOnLoad("searchTextAutoClear()");

/* If the search field gets the input focus and it still contains the
   default text, make it empty */
var searchTextOnloadVal;
function searchTextAutoClear() {
  var s = document.getElementById("search-text");
  if (!s) return;
  searchTextOnloadVal = s.value;
  s.onfocus = function() {
    if (this.value == searchTextOnloadVal) this.value = "";
  }
  s.onblur = function() {
    if (this.value == "") this.value = searchTextOnloadVal;
  }
}

