﻿// CSS helper functions
CSS = {
    // Adds a class to an element.
    AddClass: function (e, c) {
        if (!e.className.match(new RegExp("\\b" + c + "\\b", "i")))
            e.className += (e.className ? " " : "") + c;
    },

    // Removes a class from an element.
    RemoveClass: function (e, c) {
        e.className = e.className.replace(new RegExp(" \\b" + c + "\\b|\\b" + c + "\\b ?", "gi"), "");
    }
};

// Functions for handling tabs.
Tabs = {
    // Changes to the tab with the specified ID.
    GoTo: function (contentId, skipReplace) {
        // This variable will be true if a tab for the specified
        // content ID was found.
        var foundTab = false;

        // Get the TOC element.
        var toc = document.getElementById("toc");		
				
        if (toc) {
            var lis = toc.getElementsByTagName("li");
            for (var j = 0; j < lis.length; j++) {
                var li = lis[j];
                var anchors = li.getElementsByTagName("a");					
				for (var k = 0; k < anchors.length; k++) {					
					if (anchors[k].hash == "#" + contentId) {
						foundTab = true;
						break;
					}
				}
				if(foundTab)
					break;
			}
			
			if(foundTab){
				for (var j = 0; j < lis.length; j++) {
					var li = lis[j];
					// Give the current tab link the class "current" and
					// remove the class from any other TOC links.
					var anchors = li.getElementsByTagName("a");					
					for (var k = 0; k < anchors.length; k++) {					
						if (anchors[k].hash == "#" + contentId) {
							CSS.AddClass(li, "current");							
							break;
						} else {
							CSS.RemoveClass(li, "current");
						}
					}				
				}
			}
        }
		
		
		if(foundTab){
			// Show the content with the specified ID.
			var showId="";
			var divsToHide = [];
			var divs = document.getElementsByTagName("div");
			for (var i = 0; i < divs.length; i++) {
				var div = divs[i];

				if (div.className.match(/\bcontent\b/i)) {
					
					if (div.id == "_" + contentId){
						div.style.display = "block";						
						showId=contentId;
					} else if (div.id== "_inhalt_slider_tab" + contentId ){
						if ($("#inhalt_content_tab"+contentId).height()>=$("#inhalt_viewer_tab"+contentId).height()-20) 
							div.style.display = "block";										
							showId=contentId;
					} else {
						divsToHide.push(div);
						//showId="";
					}
				}					
			}
			
			/***********************************************/
			/* initiales ausblenden */
			/* torsten, 24.01.2010  */
			if(showId!=""){
				//alert(showId)
				var content = $("#inhalt_content_tab"+showId);
				var viewer = $("#inhalt_viewer_tab"+showId);
				if(content && viewer){
					if($(content).height()<$(viewer).height()-20){
						$("#_inhalt_slider_tab"+showId).hide();
					}							
				}
			}
			/************************************************/
						

			// Hide the other content boxes.
			for (var i = 0; i < divsToHide.length; i++)
				divsToHide[i].style.display = "none";

			// Change the address bar.
			//if (!skipReplace) window.location.replace("#" + contentId);
		} else {			
			//Sprungmarke normal>
			document.location.href="#"+contentId;
		}
    },

    OnClickHandler: function (e) {
		//alert("clickhandler")
        // Stop the event (to stop it from scrolling or
        // making an entry in the history).
        if (!e) e = window.event;
        if (e.preventDefault) e.preventDefault(); else e.returnValue = false;

        // Get the name of the anchor of the link that was clicked.
        Tabs.GoTo(this.hash.substring(1));
    },

    Init: function () {		
        if (!document.getElementsByTagName) return;

        // Attach an onclick event to all the anchor links on the page.
                // Get the TOC element.
        var toc = document.getElementById("toc");		
				
        if (toc) {
            var lis = toc.getElementsByTagName("li");
            for (var j = 0; j < lis.length; j++) {
                var li = lis[j];
                var anchors = li.getElementsByTagName("a");					
				for (var k = 0; k < anchors.length; k++) {									
					var a = anchors[k];
					if (a.hash) a.onclick = Tabs.OnClickHandler;
				}
			}
		}
		/*
		var anchors = document.getElementsByTagName("a");
        for (var i = 0; i < anchors.length; i++) {
            var a = anchors[i];
            if (a.hash) a.onclick = Tabs.OnClickHandler;
        }
		*/

        var contentId;
        
		
		if (window.location.hash) contentId = window.location.hash.substring(1);

        var divs = document.getElementsByTagName("div");
        for (var i = 0; i < divs.length; i++) {
            var div = divs[i];

            if (div.className.match(/\bcontent\b/i)) {
                if (!contentId) contentId = div.id;
                div.id = "_" + div.id;
            }
        }

        
		if (contentId){
			if (contentId.lastIndexOf("slider")==-1)
				Tabs.GoTo(contentId, true);		
		}
		
		
    }
};

// Hook up the OnLoad event to the tab initialization function.
window.onload = Tabs.Init;

// Hide the content while waiting for the onload event to trigger.
var contentId = window.location.hash || "#Introduction";

if (document.createStyleSheet) {
    var style = document.createStyleSheet();
    style.addRule("div.content", "display: none;");
    style.addRule("div" + contentId, "display: block;");
} else {
    var head = document.getElementsByTagName("head")[0];
    if (head) {
        var style = document.createElement("style");
        style.setAttribute("type", "text/css");
        style.appendChild(document.createTextNode("div.content { display: none; }"));
		style.appendChild(document.createTextNode("div" + contentId + " { display: block; }"));
        head.appendChild(style);
    }
}
