//
// kindly provided by quirksmode.org (http://www.quirksmode.org/js/detect.html)
//
var BrowserDetect = {
    init: function () {
        this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
        this.version = this.searchVersion(navigator.userAgent)
            || this.searchVersion(navigator.appVersion)
            || "an unknown version";
        this.OS = this.searchString(this.dataOS) || "an unknown OS";
    },
    searchString: function (data) {
        for (var i=0;i<data.length;i++)	{
            var dataString = data[i].string;
            var dataProp = data[i].prop;
            this.versionSearchString = data[i].versionSearch || data[i].identity;
            if (dataString) {
                if (dataString.indexOf(data[i].subString) != -1)
                    return data[i].identity;
            }
            else if (dataProp)
                return data[i].identity;
        }
    },
    searchVersion: function (dataString) {
        var index = dataString.indexOf(this.versionSearchString);
        if (index == -1) return;
        return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
    },
    dataBrowser: [
        { 	string: navigator.userAgent,
            subString: "OmniWeb",
            versionSearch: "OmniWeb/",
            identity: "OmniWeb"
        },
        {
            string: navigator.vendor,
            subString: "Apple",
            identity: "Safari"
        },
        {
            prop: window.opera,
            identity: "Opera"
        },
        {
            string: navigator.vendor,
            subString: "iCab",
            identity: "iCab"
        },
        {
            string: navigator.vendor,
            subString: "KDE",
            identity: "Konqueror"
        },
        {
            string: navigator.userAgent,
            subString: "Firefox",
            identity: "Firefox"
        },
        {
            string: navigator.vendor,
            subString: "Camino",
            identity: "Camino"
        },
        {		// for newer Netscapes (6+)
            string: navigator.userAgent,
            subString: "Netscape",
            identity: "Netscape"
        },
        {
            string: navigator.userAgent,
            subString: "MSIE",
            identity: "Explorer",
            versionSearch: "MSIE"
        },
        {
            string: navigator.userAgent,
            subString: "Gecko",
            identity: "Mozilla",
            versionSearch: "rv"
        },
        { 		// for older Netscapes (4-)
            string: navigator.userAgent,
            subString: "Mozilla",
            identity: "Netscape",
            versionSearch: "Mozilla"
        }
    ],
    dataOS : [
        {
            string: navigator.platform,
            subString: "Win",
            identity: "Windows"
        },
        {
            string: navigator.platform,
            subString: "Mac",
            identity: "Mac"
        },
        {
            string: navigator.platform,
            subString: "Linux",
            identity: "Linux"
        }
    ]

};
BrowserDetect.init();

//
// own hackery
//

function restoreDefaultText(obj)
{
    if (obj.value == "")
    {
        obj.value = obj.title
    }
}

function removeDefaultText(obj)
{
    if (obj.value == obj.title)
    {
        obj.value = "";
    }
}

function setFontSize(size)
{
    var body = document.getElementsByTagName('body')[0];
    if (size == "normal")
    {
        body.style.fontSize = "1em";
    }
    else
    {
        body.style.fontSize = "1.2em";
    }

    var d = new Date();
    d.setTime(d.getTime() + (365 * 24 * 60 * 60 * 1000));
    document.cookie = "itc-fontsize=" + size + "; expires=" + d.toGMTString();
}

function getSavedFontSize()
{
    var val = document.cookie;
    var matches = val.match(/itc-fontsize=(\w+)/);
    if (!matches || matches.length < 2)
    {
        return "normal";
    }
    return matches[1];
}

function toggleFontSize(link)
{
    var img = null;
    for (i=0, j=link.childNodes.length; i<j; i++)
    {
	    if (link.childNodes[i].tagName &&
		    link.childNodes[i].tagName == "IMG")
        {
            img = link.childNodes[i];
            break;
        }
    }

    var val = getSavedFontSize();
    if (val == "normal")
    {
        val = "big";
        if (img && BrowserDetect.browser != "Explorer") img.src = "portaldata/1/images/magnifier_invers.png";
    }
    else
    {
        val = "normal";
        if (img && BrowserDetect.browser != "Explorer") img.src = "portaldata/1/images/magnifier.png";
    }

    setFontSize(val);
}

var _images = {};
function getImage(src)
{
    if (_images[src])
    {
        return _images[src];
    }
    _images[src] = new Image();
    _images[src].src = src;
    return _images[src];
}

function preloadImages(basePath, images)
{
    for (i in images)
    {
        getImage(basePath + images[i]);
    }
}

function loadImage(src)
{
    var img = document.getElementById("branch_image");
    img.src = src;
}

function decodeEmailAddresses()
{
    for (i=0; i<=(document.links.length-1); i++)
    {
        matches = document.links[i].href.match(/mt:\/\/([^\/]+)\/(.+)/);
        if (matches)
        {
            email = matches[2] + "@" + matches[1];
            if (document.links[i].href == document.links[i].innerHTML)
            {
                document.links[i].innerHTML = email;
            }
            document.links[i].href = "mailto:" + email;
        }
    }
}

Array.prototype.contains = function(elem)
{
    for (i in this)
        if (this[i] == elem) return true;
    return false;
}

Array.prototype.add = function(elem)
{
    if (!this.contains(elem))
        this.push(elem);
}

Array.prototype.remove = function(elem)
{
    for (i in this)
    {
        if (this[i] == elem)
        {
            this.splice(i, 1);
            i--;
        }
    }
}

function activateAllCssClasses(parentNode, activeCssClass, inactiveCssClass, matchCssClass)
{
    if (!parentNode) return;

	var nodeCount = parentNode.childNodes.length;
	
    for (var i=0; i<nodeCount; i++)
    {
        var obj = parentNode.childNodes[i];
        
        if (obj.nodeType != 1) continue;

        classes = obj.className.split(" ");

        if (matchCssClass && !classes.contains(matchCssClass))
        {
            continue;
        }

        classes.remove(inactiveCssClass);
        classes.add(activeCssClass);
        
        obj.className = classes.join(" ");
    }
}

function toggleCssClasses(parentNode, childNode, activeCssClass, inactiveCssClass, matchCssClasses)
{
    if (!parentNode) return;

    var items = 0;
	var nodeCount = parentNode.childNodes.length;
	
    for (var i=0; i<nodeCount; i++)
    {
        var obj = parentNode.childNodes[i];
        // none-element node
        if (obj.nodeType != 1) continue;

        if (matchCssClasses && !elementHasClassesSet(obj, matchCssClasses))
        {
            continue;
        }

        classes = obj.className.split(" ");
    
        items++;

        // if childNode is null (i.e. not given),
        // activate the first one by default
        if (childNode == null && items == 1)
        {
            childNode = obj;
        }

        if (obj == childNode)
        {
            classes.remove(inactiveCssClass);
            classes.add(activeCssClass);
        }
        else
        {
            classes.remove(activeCssClass);
            classes.add(inactiveCssClass);
        }

        obj.className = classes.join(" ");
    }
}

function elementHasClassesSet(obj, neededClasses)
{
    if (!obj.className) return false;

    classes = obj.className.split(" ");
    
	var classCount = neededClasses.length;
    for (var i=0; i<classCount; i++)
    {
        if (!classes.contains(neededClasses[i])) return false;        
    }
    return true;
}

function initToggleCssClasses(containerClasses, activeCssClass, inactiveCssClass, matchCssClasses)
{
    var elements = document.getElementsByTagName('div');
    var elementCount = elements.length;
	for (var i=0; i<elementCount; i++)
    {
        var obj = elements[i];
        if (!elementHasClassesSet(obj, containerClasses)) continue;
        toggleCssClasses(obj, null, activeCssClass, inactiveCssClass, matchCssClasses);
    }
}

function initActivateAllCssClasses(containerClasses, activeCssClass, inactiveCssClass, matchCssClass)
{
    var elements = document.getElementsByTagName('div');
	var elementsCount = elements.length;
    for (var i=0; i<elementsCount; i++)
    {
        var obj = elements[i];
		if (!elementHasClassesSet(obj, containerClasses)) continue;
        activateAllCssClasses(obj, activeCssClass, inactiveCssClass, matchCssClass);
    }
}

function pageInit()
{
	setFontSize(getSavedFontSize());
    decodeEmailAddresses();
    initToggleCssClasses(['related', 'contacts'], 'visible', 'hidden', ['entry', 'hidden']);
}

function addItemToBasket(itemid, currentCount, obj)
{
    if (!document.forms[0]) return;
    var tmp = obj;
    var count = null;
    while (tmp.previousSibling)
    {
        tmp = tmp.previousSibling;
        if (tmp.nodeName == "INPUT" && parseInt(tmp.value, 10) != NaN && tmp.value > 0)
        {
            count = parseInt(tmp.value);
            break;
        }
    }
    if (count == null) { alert("Bitte geben Sie eine g\xFCltige Anzahl an."); return; }

    obj.disabled = true;
    
    var field = document.createElement("input");
    field.type = "hidden";
    field.id = "additem" + itemid;
    field.name = "additem" + itemid;
    field.value = count + currentCount;

    document.forms[0].appendChild(field);
    document.forms[0].submit();
}

/*
    IE6 helper: emulates nodeName [ + nodeName ...] + OBJ selector
    It also works if there are non-nodeName nodes in the previous siblings,
    f.e.

        elementCountBefore(this, "IMG")

    counts two elements for

        img + img + SOMELEMENET

    but also

        img + p + img + div + SOMELEMENET

*/
function elementCountBefore(obj, nodeName)
{
    var objCount = 0;
    while (true)
    {
        if (!obj.previousSibling) break;
        // skip all non-matching nodes
        if (obj.previousSibling.nodeName == nodeName)
        {
            objCount++;
        }
        obj = obj.previousSibling;
    }

    return objCount;
}

function bg(obj, color)
{
    if (!obj) return;
    obj.style.backgroundColor = color;
}

// Redefinition of ASP.NET 2.0's WebForm_FireDefaultButton, because it doesn't work with Firefox.
// See http://www.thescripts.com/forum/thread529167.html.
function WebForm_FireDefaultButtonCompatible(event, target)
{
	var element = event.target || event.srcElement;

	if (event.keyCode == 13 && !(element && (element.tagName.toLowerCase() == "textarea")))
	{
		var defaultButton;
		if (__nonMSDOMBrowser)
		{
			defaultButton = document.getElementById(target);
		}
		else
		{
			defaultButton = document.all[target];
		}
		if (defaultButton && typeof(defaultButton.click) != "undefined")
		{
			defaultButton.click();
			event.cancelBubble = true;
			if (event.stopPropagation) event.stopPropagation();
			return false;
		}
	}
	return true;
}

function toggleVisibility(me){
	if (document.getElementById("ctl00_ctl00_mailformrepeater_ctl00_ctl00_check_privat").checked==true) {
		document.getElementById("privat_street_div").style.display="block";
		document.getElementById("privat_zip_div").style.display="block";
		document.getElementById("privat_city_div").style.display="block";
	} 
	if (document.getElementById("ctl00_ctl00_mailformrepeater_ctl00_ctl00_check_privat").checked==false) {
		document.getElementById("privat_street_div").style.display="none";
		document.getElementById("privat_zip_div").style.display="none";
		document.getElementById("privat_city_div").style.display="none";
		document.getElementById("ctl00_ctl00_mailformrepeater_ctl00_ctl00_privat_street").value="";
		document.getElementById("ctl00_ctl00_mailformrepeater_ctl00_ctl00_privat_zip").value="";
		document.getElementById("ctl00_ctl00_mailformrepeater_ctl00_ctl00_privat_city").value="";
	}
}

/*
  document.getElementById('wg_1').onmouseover = function(){
		mouseAtWG1 = true;
		document.getElementById('wg_1_popup').style.display = 'block';
	}
	document.getElementById('wg_1').onmouseout = function(){
		mouseAtWG1 = false;
		window.setTimeout(checkMouseAtWG1, 100);
	}
	document.getElementById('wg_1_popup').onmouseover = function(){
		mouseAtWG1 = true;
	}
	document.getElementById('wg_1_popup').onmouseout = function(){
		mouseAtWG1 = false;
		window.setTimeout(checkMouseAtWG1, 100);
	}
	
	function checkMouseAtWG1(){
		if (!mouseAtWg1){
			document.getElementById('wg_1_popup').style.display = 'none';
		}
	}
*/

