Event.observe(window, "load", function()
    {
        relTags()
    });


function get_url_param( name )
{
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");

    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( window.location.href );

    if ( results == null )
        return "";
    else
        return results[1];
}

// makes external links out of anchors with a rel="external" attribute (beacause target is not xhtml compatible
function relTags()
{
    // popup
    var popup_options = 'scrollbars=yes,resizable=yes,width=700,wheight=700';
    if (document.getElementsByTagName)
    {
        var anchors = document.getElementsByTagName("a");
        for (var i = 0; i < anchors.length; i++)
        {
            var anchor = anchors[i];
            if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")
            {
                anchor.target = "_blank";
            }
            if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "popup")
            {
                anchor.onclick = function()
                {
                    var mylink = this.getAttribute("href");
                    window.open(mylink, 'popup', popup_options);
                    return false;
                };
            }
        }
    }
}

function top() {
    scroll(0,0);
}

/* Popups */
function openPopup(URL, WIDTH, HEIGHT)
{
    sBaseHref = document.getElementsByTagName("base")[0].getAttribute("href");

    if (!WIDTH)
        WIDTH = 600;
    if (!HEIGHT)
        HEIGHT = 600;
    popup = window.open(URL, "popup", "width=" + WIDTH + ", height=" + HEIGHT + ", scrollbars=yes");
}

//Image Popup mit Bildangabe zum einladen
function showImage(img, WIDTH, HEIGHT)
{
    imagepopup = window.open('', 'Popup', 'height=' + HEIGHT + ',width=' + WIDTH)
    content = '<body topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" bgcolor="#FFFFFF">' +
    '<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%"><tr><td>' +
    '<a href="javascript:window.close()"><img name="myImage" src="' +
    img +
    '" border="0" alt="Auf das Bild klicken um es zu schliessen"></a>' +
    '</td></tr></table></body>';
    imagepopup.document.write(content);
    imagepopup.document.close();
}

/* treeedit */
function sitemapstyler(id, closed)
{
    var sitemap = id ? $(id) : $("sitemap-list");
    if (closed)
    {
        ul_style = "none";
        span_classname = "collapsed";
    }
    else
    {
        ul_style = "block";
        span_classname = "expanded";
    }
    if (sitemap)
    {
        this.listItem = function(li)
        {
            if (li.getElementsByTagName("ul").length > 0)
            {
                var ul = li.getElementsByTagName("ul")[0];
                ul.style.display = ul_style;
                var span = document.createElement("span");
                span.className = span_classname;
                span.onclick = function()
                {
                    ul.style.display = (ul.style.display == "none") ? "block" : "none";
                    this.className = (ul.style.display == "none") ? "collapsed" : "expanded";
                };
                li.appendChild(span);
            };
        };
        var items = sitemap.getElementsByTagName("li");
        for (var i = 0; i < items.length; i++)
        {
            listItem(items[i]);
        };
    };
};


// to hide/show field id_contacttype in forum (add entry)
function showHideContactType()
{
    if ($('firstcontact') && $('id_contacttype'))
    {
        if ($F('firstcontact') == "no")
        {
            Element.hide('id_contacttype');
        }
        else
        {
            Element.show('id_contacttype');
        }
    }
}



/*
 glossary begin
 expects predefined glossary array:
 var glossary = new Array();
 glossary[4] = new Object();
 glossary[4]["name"] = "Google";
 glossary[4]["link"] = "http://google.de";
 */
function __doHighlight(haystack, needle, p_all, title, link, highlight_start_tag, highlight_end_tag)
{
    if ((!highlight_start_tag) || (!highlight_end_tag))
    {
        highlight_start_tag = "<span style='color:blue; background-color:yellow;'>";
        highlight_end_tag = "</span>";
    }

    var all = p_all ? true : false;
    var new_text = "";
    var i = -1;
    var lc_needle = needle.toLowerCase();
    var lc_haystack = haystack.toLowerCase();

    while (haystack.length > 0)
    {
        i = lc_haystack.indexOf(lc_needle, i + 1);
        if (i < 0)
        {
            new_text += haystack;
            haystack = "";
        }
        else
        {
            // skip anything inside an HTML tag
            if (haystack.lastIndexOf(">", i) >= haystack.lastIndexOf("<", i))
            {
                if (lc_haystack.lastIndexOf("/script>", i) >= lc_haystack.lastIndexOf("<script", i) &&
                    lc_haystack.lastIndexOf("/a>", i) >= lc_haystack.lastIndexOf("<a", i))
                    {
                    new_text += haystack.substring(0, i) + highlight_start_tag + haystack.substr(i, needle.length) + highlight_end_tag;
                    haystack = haystack.substr(i + needle.length);
                    lc_haystack = haystack.toLowerCase();
                    i = -1;
                }
            }
        }
    }
    return new_text;
}

function doHighlight(haystack, needle, p_count, title, link, highlight_start_tag, highlight_end_tag)
{
    if ((!highlight_start_tag) || (!highlight_end_tag))
    {
        //		highlight_start_tag = "<span style='background-color:#e6e8ef;border-bottom:1px dotted #000;cursor:pointer;' title='" + needle + "' onclick=\"document.location.href='" + link + "'\">";
        highlight_start_tag = "<span style='background-color:#e6e8ef;border-bottom:1px dotted #000;cursor:pointer;' title='" + needle + "' onclick=\"openPopup(\'" + link + "\')\">";
        highlight_end_tag = "</span>";
    }

    var count = p_count ? p_count : false;

    var my_reg_exp = new RegExp('\\b(' + needle + ')\\b', 'gi');
    haystack = haystack.replace(my_reg_exp, '##replace_span_start##$1##replace_span_end##');

    erg = haystack.match(/(<a.*?>)(.*?)(<\/a>)/gi);

    // alle highlight_tags zwischen <a.*> und </a> rausschmeissen
    if (erg)
        for (var i = 0; i < erg.length; ++i)
        {
            var neu = erg[i].replace(/(##replace_span_start##|##replace_span_end##)/g, '');
            my_reg_exp = new RegExp('' + erg[i] + '', 'gi');
            haystack = haystack.replace(my_reg_exp, neu);
        }
    if (!count)
    {
        haystack = haystack.replace(/##replace_span_start##/gi, highlight_start_tag);
        haystack = haystack.replace(/##replace_span_end##/gi, highlight_end_tag);
    }
    else
    {
        for (var i = 0; i < count; ++i)
        {
            haystack = haystack.replace(/##replace_span_start##/i, highlight_start_tag);
            haystack = haystack.replace(/##replace_span_end##/i, highlight_end_tag);
        }
        haystack = haystack.replace(/##replace_span_start##/gi, '');
        haystack = haystack.replace(/##replace_span_end##/gi, '');
    }

    return haystack;
}


function buildGlossary(p_element, p_count)
{
    var el = $(p_element);
    var haystack = el.innerHTML;
    var count = p_count ? p_count : false;
    var debug = "";

    if (!glossary)
        return false;
    if (!el)
        return false;
    if (el.hasClassName('glossary_replaced'))
        return false;

    //	var Links = KeyWordGetLinks();

    for (var i = (glossary.length - 1); i >= 0; i--)
    {
        if (glossary[i])
        {
            var needle = glossary[i]["name"] ? glossary[i]["name"] : "";
            var link = glossary[i]["link"] ? glossary[i]["link"] : "";
            var title = glossary[i]["body"] ? glossary[i]["body"] : "";
            haystack = doHighlight(haystack, needle, count, title, link);
        }
    }
    el.addClassName('glossary_replaced');
    el.innerHTML = haystack;

//	KeyWordCleanLinks(Links);
}

function KeyWordGetLinks()
{
    var Links = new Array();
    for (i = 0; i < document.body.getElementsByTagName('A').length; i++)
    {
        Links[i] = new Array(document.body.getElementsByTagName('A')[i].href, document.body.getElementsByTagName('A')[i].innerHTML);
    }
    return Links;
}

function KeyWordCleanLinks(Links)
{
    for (i = 0; i < document.body.getElementsByTagName('A').length; i++)
    {
        document.body.getElementsByTagName('A')[i].href = Links[i][0];
        document.body.getElementsByTagName('A')[i].innerHTML = Links[i][1];
    }
}


function scroller() {
    var items = $$('#sc_i .inner-box');
    var items_count = items.length;
    var item_container = $('sc_i');
	
	if ( item_container != undefined ) {
	
	    // check ob scroller sinnvoll
	    if ( items_count == 0) {
	        item_container.insert("<p class='nocontent'>keine Teaser gefunden</p>");
	    }
	    else if (items_count > 1) {
	        if (items_count > 1) {
				
	            item_container.up(0).setStyle({
	                overflow: 'hidden'
	            });
	            item_container.insert({
	                before : "<span class='fader'><!--//--></span><ul class='scroller'><li id='sc_l'>&lt;-</li><li id='sc_d'></li><li id='sc_r'>-&gt;</li></ul>"
	            });
			
	            var scroller = item_container.previous();
	            var scroller_nodes  = scroller.descendants();
	            var but_left = scroller_nodes[0];
	            var display = scroller_nodes[1];
	            var but_right = scroller_nodes[2];
	        }
			
	        var x = 1;
	
	        item_container.setStyle({
	            width: items[0].getWidth() * items_count + 'px'
	        });
			
	        // Anzeige setzen
	        but_left.addClassName("off");
	        function set_display() {
	            display.update( x + '/' + items_count );
	        }
	        set_display();
			
	        // function links
	        but_left.onclick = function(){
	            if (x > 1) {
	                x = x-1;
	                set_display();
	                new Effect.Move('sc_i', {
	                    x: 313, 
	                    y: 0, 
	                    duration: 0.3, 
	                    transition: Effect.Transitions.sinoidal, 
	                    queue:'end'
	                });
	            }
	            but_right.removeClassName("off");
	            if (x == 1) {
	                but_left.addClassName("off");
	            } 
	        }
	        // function rechts
	        but_right.onclick = function(){
	            if (x < items_count) {
	                x = x+1;
	                new Effect.Move('sc_i', {
	                    x: -313, 
	                    y: 0, 
	                    duration: 0.3, 
	                    transition: Effect.Transitions.sinoidal, 
	                    queue:'end'
	                });
	                set_display();
	            }
	            but_left.removeClassName("off");
	            if (x == items_count) {
	                but_right.addClassName("off");
	            }
	        }
	    }
	    
	}
}

function listItemsLinks() {
    var list = $('list-wrapper');
    var tabList = $('treatment-tabs');
    var searchList = $('search-tabs');
    var listItems = $$('#content .list-item');
    var listLinks = $$('#content .list-item a.link');
    if ( list || tabList || searchList ) {
        if (listItems.length > 0) {
            // Bilddatenbank Items nur inneres div verlinken
            if ( listItems[0].up().hasClassName("imagedb") ) {
                listItems.each(function(el, index) {
                    el.down().next().onclick = function() {
                        location.href = listLinks[index].getAttribute("href");
                    }
                    // IE 6
                    el.onmouseover = function() {
                        this.addClassName('hover');
                    }
                    el.onmouseout = function() {
                        this.removeClassName('hover');
                    }
                });
            }
            // alle anderen Items
            else {
                listItems.each(function(el, index) {
                    el.onclick = function() {
                        location.href = listLinks[index].getAttribute("href");
                    }
                    // IE 6
                    el.onmouseover = function() {
                        this.addClassName('hover');
                    }
                    el.onmouseout = function() {
                        this.removeClassName('hover');
                    }
                });
            }
        }
    }
}

function note() {
    var n = $('note');
    if ( n ) {
        n.fade({
            duration: 3.0, 
            from: 1, 
            to: 0
        });
    }
}




/* tabberObj erweitern damit checkTabs() geht  */
if ( typeof tabberObj != "undefined" ) {
    Object.extend((tabberObj.prototype), {
        navSetActive: function(tabberIndex) {
            $(this.tabs[tabberIndex].li).addClassName(this.classNavActive);
            return this;
        },
        navClearActive: function(tabberIndex) {
            $(this.tabs[tabberIndex].li).removeClassName(this.classNavActive);
            return this;
        }
    });
}

// TODO: Max -> das ganze m�sst man noch mal pr�fen ob nicht allzu viel historisch gewachsenes Zeug drin ist
/* Behandlungsmethoden tabs */
function checkTabs(){
	
    // TODO: Debug zeugs l�schen
    /*
	$('sub').insert("<div id='debug' style='position:fixed;top:50px;left:0;background:#FFF;padding:5px;'></div>");
	var dbg = $('debug'); 
	dbg.update();
	*/
	
    var tTabs = $('treatment-tabs');
    if (tTabs) {
        var tTabItems = tTabs.down().childElements();
        var teaser = tTabs.up().getElementsByClassName('teaser');
        // hide/show teaser
        function showTeaser(visible) {
            for (var i=0; i<4; i++) {
                teaser[i].hide();
            };
            teaser[visible].show();
        }
        //make special
        tTabItems.each(function(item, index){
            item.setAttribute('id', 'tab_'+index);
            tTabItems[4].addClassName("special");
            tTabItems[5].addClassName("special");
            tTabItems[6].addClassName("special");
        });
        // remove empty tabs/tab-contents
        var tTabItemsContent = $$('#treatment-tabs .tabbertab .tabbertab-content');
        tTabItemsContent.each(function(item, index){
            if (item.innerHTML.blank()) {
                item.up().remove();
                tTabItems[index].remove();
            }
        });
        // check if tabs exist
        var tTabItemsVisible = tTabs.down().childElements();
        if (tTabItemsVisible.length != 0) {
            var tTabItemsContentVisible = $$('#treatment-tabs .tabbertab .tabbertab-content');
            if(document.getElementsByClassName("tabberactive").length == 0)//Jak am 30.09.2010 : sonst funktionniert de URL#TabTitle nicht
                tTabItemsVisible[0].addClassName("tabberactive");// set first active
            tTabItemsContentVisible[0].up().removeClassName("tabbertabhide");
            // check if special
            var hasSpecialTab;
            tTabItemsVisible.find(function(item) {
                hasSpecialTab = item.hasClassName("special");
                return hasSpecialTab;
            });
            // add spacer if special
            if (hasSpecialTab) {
                tTabItemsVisible.each(function(item, index){
                    if ( !item.hasClassName("special") ) {
                        item.addClassName("default");
                    }
                    if (item.hasClassName("default") && item.next().hasClassName("special")) {
                        item.addClassName("spacer");
                    }
                });
            }
        }

        // buttons und tabs  
        var txt_more = "Weiter zu ";
        var txt_back = "Zur&uuml;ck zu ";
        
        if ( window.location.href.search("/ru/") >= 0 ){
            var txt_more = "Далее к ";
            var txt_back = "назад к ";  
        }
        if ( window.location.href.search("/en/") >= 0 ){
            var txt_more = "Continue to ";
            var txt_back = "Back to ";
        }
		
        if (tTabItemsVisible.length != 0) {
            // Tab Button Navigation erzeugen
            tTabs.insert("<div class='buttons'><p class='button back'><a href='javascript:void(null);' id='but_prev'></a></p><p class='button'><a href='javascript:void(null);' id='but_next'></a></p></div>");
            // buttons zuweisen
            var butPrev = $('but_prev');
            var butNext = $('but_next');
            // Aktualisiert die ganze Navigation
            function checkTabNav() {
                // Button Texte
                var txt_butPrev;
                var txt_butNext;
                // aktives tab
                var activeTab = $$('#treatment-tabs .tabbernav .tabberactive');
                tTabItemsVisible.each(function(item, index){
                    if ( tTabItemsVisible[index].hasClassName('tabberactive') ) {
                        // tabId -> showteaser
                        var tabId =  activeTab[0].identify().slice(4, 5);
                        if ( tabId <= 3){
                            showTeaser(0);
                        }
                        else {
                            // teaser 4,5,6
                            showTeaser(tabId-3);
                        }
                        // vorheriges tab
                        //linkPrev = index-1;
                        if (index > 0) {
                            linkPrev = activeTab[0].previous().identify().slice(4, 5);
                        }
                        else {
                            linkPrev = -1;
                        }
                        // n�chstes tab
                        if ( (index+1) < tTabItemsVisible.length ) {
                            //linkNext = index+1;
                            linkNext = activeTab[0].next().identify().slice(4,5);
                        }
                        else {
                            linkNext = -1;
                        }
                        // Texte holen
                        if ( index > 0 ) {
                            txt_butPrev = activeTab[0].previous().down().title;
                        }
                        if ( index < tTabItemsVisible.length -1 ) {
                            txt_butNext = activeTab[0].next().down().title;
                        }					
                    }
                });
                // tabs, buttons ein/ausblenden
                if (linkPrev == -1 ) {
                    butPrev.hide();
                } 
                else {
                    butPrev.show();
                    butPrev.update(txt_back + txt_butPrev);
                    butPrev.onclick = function(){
                        tTabs.tabber.tabShow(linkPrev);
                        checkTabNav();
                    }
                }
                if (linkNext == -1 ) {
                    butNext.hide();
                }
                else {
                    butNext.show();
                    butNext.update(txt_more + txt_butNext);
                    butNext.onclick = function(){
                        tTabs.tabber.tabShow(linkNext);
                        checkTabNav();
                    }
                }
            }
            // Beim laden aufrufen
            checkTabNav();
        }


		
		
		
        // if no tabs, remove all
        if (tTabItemsVisible.length == 0) {
            tTabs.up().remove();
        }
        // hide empty teaser quote
        if ( teaser[0].innerHTML.blank() ) {
            teaser[0].addClassName("inactive");
        }
        // tabs und teaser aktivieren beim klick auf li, beinhaltet a
        tTabItems.each(function(item, index){
            item.onclick = function(){
                tTabs.tabber.tabShow(index);
                checkTabNav();
            }
        });
		
		
		
    }
}


function linkBoxes() {
    var items = $$('.team-single');
    if (items.length > 0) {
        items.each(function(item, index){
            var itemlink = $$('.button a');
            if (itemlink.length > 0) {
                item.onclick = function(){
                    location.href = itemlink[index].getAttribute("href");
                }
            }
        });		
    }
}

function checkHeights() {
    var c = $('container');
    var a = $('additional-content').down();
    var s = $('smenu');
    var d = document.viewport;
    var sH = 0;
	
    if (c) {
        var cH = c.getHeight(); 
    }
    if (a) {
        var aH = a.getHeight() + 230;
    }
    if (s) {
        var sH = s.getHeight() + 250;
    }
    if ( aH >= sH ) {
        var nH = aH;
    }
    else {
        var nH = sH;
    }
    if (c.hasClassName("visual")) {
        var nH = nH + 420;
        if ( nH >= cH ) {
            c.setStyle({
                height: cH+(nH-cH)+'px'
            });
        }
    }
    else {
        if ( nH >= cH ) {
            c.setStyle({
                height: cH+(nH-cH)+'px'
            });
        }
    }
    if (d) {
        var dH = d.getHeight();
		
        //alert("cH: " + cH + ", sH: " + sH + ", dH: " + dH);
		
        if (dH < cH) {
            if ( sH > cH ) {
                c.setStyle({
                    height: dH+sH +'px'
                });
            }
        }
    }
}
		

/* TODO: Flash, oder das hier etwas verbessern */
var slidecount = 0;
function SlideShow(){
    var slide = $$('#slideshow .slides');
    Effect.Fade(slide[slidecount], {
        duration: 1, 
        from: 1.0, 
        to: 0.0
    });
    slidecount++;
    if (slidecount == slide.length ) {
        slidecount = 0;
    }
    Effect.Appear(slide[slidecount], {
        duration: 1, 
        from: 0.0, 
        to: 1.0
    });
}
function SlideShowStart() {
    var timer = 10000;
    setInterval("SlideShow()", timer);
}



// TODO -> Language und Meta kombinieren

function languageselect() {
    var container = $('language-menu');
    var timeout = 400;
    var over = false;
    if (!container) {
        return;
    }
    var timer = null;
    Event.observe(container, 'mouseover', function() {
        over = true;
        if (timer) {
            window.clearTimeout(timer);
        }
        timer = window.setTimeout(function() {
            if (over) {
                container.addClassName('active');
            }
        }, timeout);
    });
    Event.observe(container, "mouseout", function() {
        over = false;
        timer = window.setTimeout(function() {
            container.removeClassName("active");
        }, timeout);
        return true;
    });
}

function metaFoldOut() {
    var meta = $$('#meta-menu .services');
    //Jak am 19.01.2010 : fr�her if(meta), wurde ge�ndert
    if (meta[0] != undefined) {
        var meta = meta[0].up();
        var timeout = 400;
        var over = false;
        var timer = null;
		
        if ( !meta.hasClassName('path') && !meta.hasClassName('active') ) {
            Event.observe(meta, 'mouseover', function() {
                over = true;
                if (timer) {
                    window.clearTimeout(timer);
                }
                timer = window.setTimeout(function() {
                    if (over) {
                        meta.addClassName('hover');
                    }
                }, timeout);
            });
            Event.observe(meta, "mouseout", function() {
                over = false;
                timer = window.setTimeout(function() {
                    meta.removeClassName("hover");
                }, timeout);
                return true;
            });
        }
    }
}

function changeinputfield(my_el, my_value)
{
    my_el = $(my_el);
    if (my_el) {
        my_el.onfocus = function(){
            this.value = (this.value == my_value) ? '' : this.value;
            this.select();
        }
        my_el.onblur = function(){
            this.value = (this.value.match(/\S/)) ? this.value : my_value;
        }
		
        my_el.up().onsubmit = function(){
            if (this.value = (this.value == my_value) ? '' : this.value) {
                return false;
            }
        }
		
    }
}



Event.observe(window, 'load', function() {

    var home = $('home');
    var sub = $('sub');   

    if ( home ) {
        scroller();
        SlideShowStart();
    }
    if (sub) {
        listItemsLinks();
        checkTabs();
        checkHeights();
        linkBoxes();
    }

    note();
    languageselect();
    metaFoldOut();
	
    changeinputfield("qst", "Suchbegriff eingeben");
    sitemapstyler("edit_tree", "closed");
    sitemapstyler("sitemap-list");

	
// divs mit class=getfullquestion
//TODO: das ganze Glossar muss nochmal �berdacht, und erneuert werden.
//$$('#sub div.inner-content').each(function(el)
	
/* Glossar erstmal ausgeschaltet
	$$('div.fachcontent').each(function(el)
	{
		buildGlossary(el, 1);
	});
	*/
// alle elemente mit id=getfull
/*
	 $$('#getfull').each(function(el){
	 buildGlossary(el, false);
	 });
	 */
	
});

/*

 glossary end

 */

/* ADD von Jak am 12.10.2009. */
/* lang -> source Sprache
 * id -> geziehlte ID (sollte der selbe wie source ID sein)
 * 
 */
function mycheckboxsys(basename, lang, id){
    if(lang == 'de'){
        var source = document.getElementsByName(basename+"_de_"+id)[0];
        var ziel = document.getElementsByName(basename+"_en_"+id)[0];
    }else{
        var source = document.getElementsByName(basename+"_en_"+id)[0];
        var ziel = document.getElementsByName(basename+"_de_"+id)[0];
    }
    if(source.checked == true){
        ziel.checked = true;
    }else{
        ziel.checked = false;
    }
}
//E-Mail Spam Protection *************
function getURLPath(url) {
    var pos = url.lastIndexOf("/");
    return(url.substring(0,pos + 1));
}


function UnCryptMailto( s ) {
    var n = 0;
    var r = "";
    for( var i = 0; i < s.length; i++)
    {
        n = s.charCodeAt( i );
        if( n >= 8364 )
        {
            n = 128;
        }
        r += String.fromCharCode( n - 1 );
    }
    return r;
}

function linkTo_UnCryptMailto( s ) {	
    location.href=UnCryptMailto( s );
}
