/*
Developed by Robert Nyman, http://www.robertnyman.com
Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
if (document.getElementsByClassName) {
getElementsByClassName = function (className, tag, elm) {
elm = elm || document;
var elements = elm.getElementsByClassName(className),
nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
returnElements = [],
current;
for(var i=0, il=elements.length; i<il; i+=1){
current = elements[i];
if(!nodeName || nodeName.test(current.nodeName)) {
returnElements.push(current);
}
}
return returnElements;
};
}
else if (document.evaluate) {
getElementsByClassName = function (className, tag, elm) {
tag = tag || "*";
elm = elm || document;
var classes = className.split(" "),
classesToCheck = "",
xhtmlNamespace = "http://www.w3.org/1999/xhtml",
namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
returnElements = [],
elements,
node;
for(var j=0, jl=classes.length; j<jl; j+=1){
classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
}
try	{
elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
}
catch (e) {
elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
}
while ((node = elements.iterateNext())) {
returnElements.push(node);
}
return returnElements;
};
}
else {
getElementsByClassName = function (className, tag, elm) {
tag = tag || "*";
elm = elm || document;
var classes = className.split(" "),
classesToCheck = [],
elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
current,
returnElements = [],
match;
for(var k=0, kl=classes.length; k<kl; k+=1){
classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
}
for(var l=0, ll=elements.length; l<ll; l+=1){
current = elements[l];
match = false;
for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
match = classesToCheck[m].test(current.className);
if (!match) {
break;
}
}
if (match) {
returnElements.push(current);
}
}
return returnElements;
};
}
return getElementsByClassName(className, tag, elm);
};
// No More IE6 Background Flicker - http://www.hedgerwow.com/360/bugs/dom-fix-ie6-background-image-flicker.html
(function(){ /*Use Object Detection to detect IE6*/ var m = document.uniqueID /*IE*/ && document.compatMode /*>=IE6*/ && !window.XMLHttpRequest /*<=IE6*/ && document.execCommand ; try{ if(!!m){ m("BackgroundImageCache", false, true) /* = IE6 only */ } }catch(oh){}; })();
function jscss(a,o,c1,c2)
{
switch (a){
case 'swap':
o.className=!jscss('check',o,c1)?o.className.replace(c2,c1):
o.className.replace(c1,c2);
break;
case 'add':
if(!jscss('check',o,c1)){o.className+=o.className?' '+c1:c1;}
break;
case 'remove':
var rep=o.className.match(' '+c1)?' '+c1:c1;
o.className=o.className.replace(rep,'');
break;
case 'check':
return new RegExp('\\b'+c1+'\\b').test(o.className)
break;
}
}
/*
Klassen per JavaScript ändern (funktioniert auch bei mehreren vergebenen Klassen
http://ichwill.net/cssjsseparation.html
Diese Beispielfunktion erwartet vier Parameter
a   gibt an, welche Aktion die Funktion ausführen soll.
o   das Objekt, auf das die Aktion angewandt wird.
c1  der Name der ersten Klasse
c2  der Name der zweiten Klasse
Mögliche Aktionen sind:
swap     tauscht Klasse c1 gegen Klasse c2 aus.
add      fügt Klasse c1 dem Objekt o hinzu.
remove   löscht Klasse c1.
check    prüft, ob Klasse c1 schon dem Objekt o hinzugefügt wurde und gibt true oder false zurück.
*/
/*
addEvent function from http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
*/
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;
}
}
function highlightMap() {
if(!document.getElementsByTagName) return false;
if(!document.getElementById) return false;
if (document.getElementById("map")) {
//	   alert('start');
var map = document.getElementById("map");
var areas = document.getElementsByTagName("area");
for (var j=0; j<areas.length; j++) {
areas[j].onmouseover = function() {
map.setAttribute('src', "/assets/content/wienkarte-"+this.id+".gif");
}
areas[j].onmouseout = function() {
map.setAttribute('src', "/assets/content/wienkarte.gif");
}
}
var selection = document.getElementById("standort");
var option = selection.getElementsByTagName("option");
for (var i=0; i<option.length; i++) {
option[i].onmouseover = function() {
map.setAttribute('src', "/assets/content/wienkarte-b"+this.value+".gif");
}
option[i].onmouseout = function() {
map.setAttribute('src', "/assets/content/wienkarte.gif");
}
}
document.getElementById("standortuebersicht").standort.onchange = function() {
checkOptions();
}
}
}
function checkOptions() {
document.forms[1].submit();
}
// -----------------------------------------------------------------------------------
//
function focusLabels() {
if (!document.getElementsByTagName) return false;
var labels = document.getElementsByTagName("label");
for (var i=0; i<labels.length; i++) {
if (!labels[i].getAttribute("for")) continue;
labels[i].onclick = function() {
var id = this.getAttribute("for");
if (!document.getElementById(id)) return false;
var element = document.getElementById(id);
element.focus();
}
}
}
function resetFields(whichform) {
if(document.getElementById(whichform)) {
whichform = document.getElementById(whichform);
for (var i=0; i<whichform.elements.length; i++) {
var element = whichform.elements[i];
if (element.type == "submit" || element.type == "checkbox" || element.type == "radio") continue;
if (!element.defaultValue) continue;
element.onfocus = function() {
if (this.value == this.defaultValue) {
this.value = "";
}
}
element.onblur = function() {
if (this.value == "") {
this.value = this.defaultValue;
}
}
}
}
}
// ---------------------------------------------------
function addARIARole(strID, strRole) {
// Find the element to add a role property to
var objElement = document.getElementById(strID);
if (objElement) {
// Add the role property to the element
objElement.setAttribute('role', strRole);
}
}
function addARIARequired(el) {
el.setAttribute('aria-required', 'true');
}
function setupARIARequired () {
if (!document.getElementsByTagName) return false;
// find all elements to add a aria-required
var reqs = getElementsByClassName("req", "li", document.getElementById("main"));
for (var i=0; i<reqs.length; i++) {
var el = reqs[i];
var inputs = el.getElementsByTagName("input");
for (var j=0; j<inputs.length; j++) {
var input = inputs[j];
addARIARequired(input);
}
}
// all required fields outside of "main" container
var phrase = document.getElementById("suchbegriff");
if(phrase) { addARIARequired(phrase);}
}
function setupARIA() {
// Add ARIA roles to the document
addARIARole('c-content', 'main');
addARIARole('c-nav', 'navigation');
addARIARole('c-search', 'search');
addARIARole('c-footer', 'contentinfo');
setupARIARequired();
}
function onBuchload() {
setupARIA();
highlightMap();
focusLabels();
if(document.getElementById("c-search")) {
resetFields('c-search');
}
if(document.getElementById("msearch")) {
resetFields('msearch');
}
}
addEvent(window, 'load', function(){onBuchload();});
/*
JSTarget function by Roger Johansson, www.456bereastreet.com
*/
var JSTarget = {
init: function(att,val,warning) {
if (document.getElementById && document.createElement && document.appendChild) {
var strAtt = ((typeof att == 'undefined') || (att == null)) ? 'class' : att;
var strVal = ((typeof val == 'undefined') || (val == null)) ? 'x-link' : val;
//			var strWarning = ((typeof warning == 'undefined') || (warning == null)) ? ' (opens in a new window)' : warning;
//			var oWarning;
var arrLinks = document.getElementsByTagName('a');
var oLink;
var oRegExp = new RegExp("(^|\\s)" + strVal + "(\\s|$)");
for (var i = 0; i < arrLinks.length; i++) {
oLink = arrLinks[i];
if ((strAtt == 'class') && (oRegExp.test(oLink.className)) || (oRegExp.test(oLink.getAttribute(strAtt)))) {
//					oWarning = document.createElement("em");
//					oWarning.appendChild(document.createTextNode(strWarning));
//					oLink.appendChild(oWarning);
oLink.onclick = JSTarget.openWin;
}
}
oWarning = null;
}
},
openWin: function(e) {
var event = (!e) ? window.event : e;
if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return true;
else {
var oWin = window.open(this.getAttribute('href'), '_blank');
if (oWin) {
if (oWin.focus) oWin.focus();
return false;
}
oWin = null;
return true;
}
}
};
addEvent(window, 'load', function(){JSTarget.init();});