// getElementsByClass-Funktion
var getElementsByClass = function(theClass) {
  var elementArray = [];
  if (document.all) {
    elementArray = document.all;
  } else {
    elementArray = document.getElementsByTagName("*");
  }
  var matchedArray = [];
  var pattern = new RegExp("(^| )" + theClass + "( |$)");
  for (var i = 0; i < elementArray.length; i++) {
    if (pattern.test(elementArray[i].className)) {
      matchedArray[matchedArray.length] = elementArray[i];
    }
  }
  return matchedArray;
};

// Popup-Funktion
function makePopup(url, width, height, overflow) {
  if (width > 640) { width=640; }
  if (height > 480) { height=480; }
  if (overflow == '' || !/^(scroll|resize|both)$/.test(overflow)) {
    overflow = 'both';
  }
  var win = window.open(url, '', 'width=' + width + ',height=' + height + ',scrollbars=' + (/^(scroll|both)$/.test(overflow) ? 'yes' : 'no') + ',resizable=' + (/^(scroll|both)$/.test(overflow) ? 'yes' : 'no') + ',status=yes,toolbar=no,menubar=no,location=no');
  //var win = window.open('page.html', 'winName', 'width=640,height=480,scrollbars=yes,resizable=yes,status=yes,toolbar=no,menubar=no,location=no');
  return win;
}
function preparePopups() {
  var zoomDivs = getElementsByClass("zoom_pic");
  for (var i=0; i<zoomDivs.length; i++) {
    var zoomLink = zoomDivs[i].getElementsByTagName("a")[0];
    zoomLink.onclick = function() {
      var popup = makePopup(this.href, 640, 480, 'scroll');
      return popup.closed;
    };
  }
}

// addClass-Funktion
function addClass(element, name) {
	if (!element.className) {
		element.className = name;
	} else {
		element.className += ' ' + name;
	}
}
// gestreifte Tabellenzeilen
function stripeTables() {
	if (!document.getElementsByTagName) return false;
	var main_col = document.getElementById("main-content");
	var tables = main_col.getElementsByTagName('table');
	for (var i=0; i<tables.length; i++) {
		var rows = tables[i].getElementsByTagName('tr');
		for (var j=0; j<rows.length; j+=2) {
			addClass(rows[j], 'odd');
		}
	}
}

// crossbrowser Styles auslesen (http://www.robertnyman.com/2006/04/24/get-the-rendered-style-of-an-element/)
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;
}
// Textskalierungen
function createTextResize() {
  var sub_content = document.getElementById("sub-content");
  var teaserboxen = document.getElementById("teaserboxen_inhalt");
  // Absatz generieren
  var para = document.createElement("p");
  para.setAttribute("id", "textresize");
  // Links + Linktexte generieren
  var link_inc = document.createElement("a"); // Link "vergrößern"
  var link_inc_text = document.createTextNode("vergrößern");
  link_inc.setAttribute("id", "fs_inc");
  link_inc.setAttribute("title", "Schrift vergrößern");
  link_inc.appendChild(link_inc_text);
  var link_dec = document.createElement("a"); // Link "verkleinern"
  var link_dec_text = document.createTextNode("verkleinern");
  link_dec.setAttribute("id", "fs_dec");
  link_dec.setAttribute("title", "Schrift verkleinern");
  link_dec.appendChild(link_dec_text);
  // Links in Absatz platzieren
  para.appendChild(link_inc);
  para.appendChild(link_dec);
  // Schriftgröße auslesen
  var container = document.getElementById("container");
  var fs = getStyle(container, "font-size");
  if (fs.indexOf("%") != -1) { // IE
    fs = parseInt(fs)/10;
  } else if (fs.indexOf("px") != -1) { // FF
    fs = parseInt(fs);
  }
  container.style.fontSize = fs + "px";
  // Zoom-Funktionsaufruf
  link_inc.onclick = function() {
    var origSize = parseInt(container.style.fontSize);
    container.style.fontSize = origSize + 1 + "px";
  };
  link_dec.onclick = function() {
    var origSize = parseInt(container.style.fontSize);
    container.style.fontSize = origSize - 1 + "px";    
  };
  // Absatz in Subcontent platzieren
  if (!teaserboxen) {
    sub_content.appendChild(para);
  } else {
    teaserboxen.parentNode.insertBefore(para, teaserboxen);
  }
}

// Inputvalidierung (aktuell mit Alert)
function checkform(form) {
  var error = '';
  error += form.unternehmen.value == '' ? '\n - Unternehmen' : '';
  error += form.name.value == '' ? '\n - Name' : '';
  error += form.telefon.value == '' ? '\n - Telefon' : '';
  error += form.email.value == '' ? '\n - E-Mail' : '';
  if (error != '') {
    alert('Bitte folgendes angeben:\n' + error);
  }
  return error == '';
}

// untergeordnetes Element erzeugt Style fuer vorhergehendes: Hauptnavigation Menupunkt-BG
function styleParentNode() {
  var nav = document.getElementById("primary_nav");
  var level2 = nav.getElementsByTagName("ul")[1];
  if (!level2) return;
  level2.onmouseover = function() {
    if (this.parentNode.className == "dropout") {
      this.parentNode.firstChild.style.backgroundColor = "#46a1b8";
      this.parentNode.firstChild.firstChild.style.backgroundImage = "url(/img/bullet_primary_nav_sub_on.gif)";
    }
  };
  level2.onmouseout = function() {
    this.parentNode.firstChild.style.backgroundColor = "";
    if (!this.parentNode.firstChild.firstChild.style) return false;
    this.parentNode.firstChild.firstChild.style.backgroundImage = "";
  };
}

// "Seite drucken"-Link erzeugen
function createPrintPageLink() {
  var p = document.getElementById("copyright");
  var link = document.createElement("a");
  link.setAttribute("id", "print");
  link.setAttribute("title", "Seite drucken");
  link.setAttribute("href", "javascript:window.print();");
  var icon = document.createElement("img");
  icon.setAttribute("src", "/img/icon_print.gif");
  icon.setAttribute("alt", "Seite drucken");
  link.appendChild(icon);
  p.appendChild(link);
}

window.onload = function() {
  preparePopups();
  stripeTables();
  //createTextResize();
  styleParentNode();
  createPrintPageLink();
};

