// ################ Navigation ################
var viewmode = (typeof(viewmode) == 'undefined') ? '' : viewmode;

curentNaviItem = null;
function naviToggle(naviItem){

   curentNaviItem = naviItem;
   clearTimeout(naviFade);

   var mainDiv = document.getElementById('navi_main');
   var subDiv = document.getElementById('navi_sub_div');
   subDiv.innerHTML = '';

   if(naviItem == mainDiv) return;

   for(var i=0; i<naviItem.childNodes.length; i++){
       if(naviItem.childNodes[i].nodeName.toLowerCase() == 'ul') {
           var subNavi = naviItem.childNodes[i].cloneNode(true);
           subDiv.appendChild(subNavi);
       }
   }

   for(var i=0; i<subDiv.childNodes.length; i++) {
		subDiv.childNodes[i].className += ' visible';

		// SubNavi zentriert unter naviItem
		var subNavi = subDiv.childNodes[i]; var firstSubNaviItem = null; var subNaviWidth = 0;
		for(var a=0; a<subNavi.childNodes.length; a++){
			if(subNavi.childNodes[a].nodeName.toLowerCase() == 'li') {
				// Breite der SubNavi
				subNaviWidth = subNaviWidth+parseInt(subNavi.childNodes[a].offsetWidth);
				if(!firstSubNaviItem) firstSubNaviItem = subNavi.childNodes[a];
			}
		}

		if(firstSubNaviItem) {
			// Margin fuer ersten SubNaviItem berechnen
			var middlePositionNaviItem = parseInt(absLeft(naviItem))+(parseInt(naviItem.offsetWidth)/2); // absolute left Position + halbe Breite Naviitem
			var margin = middlePositionNaviItem-parseInt(absLeft(subNavi))-(subNaviWidth/2)

			// SubNavi nicht ueber linken Rand hinaus
			if(margin < 0) margin = 0;
			// SubNavi nicht ueber rechten Rand hinaus
			if(parseInt(subDiv.offsetWidth) <= (margin+subNaviWidth))
				margin = parseInt(subDiv.offsetWidth)-subNaviWidth-40; // 40px rechter Offset

			firstSubNaviItem.style.marginLeft = margin+'px';
		}
 	}
}

function naviOver(){

    clearTimeout(naviFade);
    document.getElementById('navi_sub').style.filter = "Alpha(opacity=75)";
}

function naviOut(){

    if(curentNaviItem != initNaviItem)
    naviFade = setTimeout("naviFadeout(true)", 3000)
}

var naviFade = null;
var naviFadeOpacity = 75;
function naviFadeout(init){

    if(init){
        naviFadeOpacity = 75;
        naviFade = setInterval('naviFadeout(false);', 10);
    } else {
        var navSub = document.getElementById('navi_sub');
        naviFadeOpacity = naviFadeOpacity-15;
        navSub.style.filter = "Alpha(opacity="+naviFadeOpacity+")";

        if(naviFadeOpacity <= 0){
            clearTimeout(naviFade);
            naviInit(document.getElementById('navi_main'));
            naviFadein(true);
        }
    }
}

function naviFadein(init){
    if(init){
        naviFadeOpacity = 0;
        naviFade = setInterval('naviFadein(false);', 10);
    } else {
        var navSub = document.getElementById('navi_sub');
        naviFadeOpacity = naviFadeOpacity+15;
        navSub.style.filter = "Alpha(opacity="+naviFadeOpacity+")";

        if(naviFadeOpacity >= 75){
            clearTimeout(naviFade);
        }
    }
}

var initNaviItem = null;
function naviInit(naviLayer){
    // Suche die aktive Node
    var hasActiveNode = false;
    for(var i=0; i<naviLayer.childNodes.length; i++){
        if(naviLayer.childNodes[i].nodeName.toLowerCase() == 'ul') {
            var subNavi = naviLayer.childNodes[i];
            for(var a=0; a<subNavi.childNodes.length; a++){
                if(subNavi.childNodes[a].nodeName.toLowerCase() == 'li') {
                    var node = subNavi.childNodes[a];
                    if(node.firstChild.className.search(/active/i) != '-1'){
                        initNaviItem = naviLayer;
                        naviToggle(naviLayer);
                        hasActiveNode = true;
                    }
                    if(naviInit(node)) node.firstChild.className = 'active';
                }
            }

            naviInit(node)
        }
    }
    return hasActiveNode;
}

// ################ Image Gallery ################

function initGallery(galName, numImages)
{
	var gal = document.getElementById(galName);
	var button = document.getElementById(galName+"_button");
	numImages = (parseInt(numImages) < 1) ? 1 : parseInt(numImages);

	var thumbs = gal.getElementsByTagName('div');

	if(thumbs.length > numImages){
		// Bilder ausblenden
		for(var t=numImages; t<thumbs.length; t++){
			thumbs[t].style.display = 'none';
		}

		// Button umbenennen
		button.firstChild.innerHTML = txt_moreimages;

		// Button einblenden
		button.style.display = 'block';
	} else{
		// Button ausblenden
		button.style.display = 'none';
	}

	// Galerie einblenden
	gal.style.display = 'block';

	// Galerie Abstand rechts
	var galDiv = document.getElementById(galName+"_div");
	galDiv.style.marginRight = (galDiv.offsetWidth > 380) ? '0' : '1em';
}

function toggleGallery(galName, numImages)
{
	var gal = document.getElementById(galName);
	var galDiv = document.getElementById(galName+"_div");
	var button = document.getElementById(galName+"_button");

	var thumbs = gal.getElementsByTagName('div');
	if(typeof(thumbs[numImages]) != 'undefined'){
		if(thumbs[numImages].style.display == 'none'){
			// Bilder einblenden
			for(var t=numImages; t<thumbs.length; t++){
				thumbs[t].style.display = 'block';
			}

			// Button umbenennen
			button.firstChild.innerHTML = txt_close;
		} else{
			// Bilder ausblenden
			for(var t=numImages; t<thumbs.length; t++){
				thumbs[t].style.display = 'none';
			}

			// Button umbenennen
			button.firstChild.innerHTML = txt_moreimages;
		}
	}
}

// ################  ################
function toggleDetailText(exp) {
	var divs = document.getElementsByTagName('div');
	for(var a=0; a<divs.length; a++)
		if(divs[a].className.indexOf("tab_detailtext") != '-1')
			var detText = divs[a];
	if(!detText) return;

	if(detText.className == 'tab_detailtext hidden') {
		detText.className = 'tab_detailtext';
		exp.innerHTML = txt_less;
	} else {
		detText.className = 'tab_detailtext hidden';
		exp.innerHTML = txt_more;
	}
}

// ################ Eyecatcher vs Local ################

var localInit = null;
function local(){

	if ($('#eyecatcher').is(':visible')) {
	    // Eyecatcher ausblenden, Local einblenden (und ggf. init.)
		if (!localInit) {
			// ### Start init ###
			$('#local > ul > li').bind("click", function() {
					// Liste ausblenden
					$('#local > ul').hide();
					
					// Sprachenauswahl konstruieren
					var langs = $(this).find('ul').clone();
					$('#local').append('<div id="local_langMenu"><span>Language&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></div>');
					$('#local_langMenu').append(langs);		
				}
			);			
			localInit = true;	
		}
		
		$('#eyecatcher').hide();
		$('#local').show();
	} else if($('#local_langMenu').is(':visible')) {
		// Sprachemenü entfernen, Local einblenden
		$('#local_langMenu').remove();
		$('#local > ul').show();
	} else {
		// Eyecatcher einblenden, Local ausblenden
		$('#eyecatcher').show();
		$('#local').hide();	
	}
}

// ################ Zeichen Zaehlen ################

function textlimit(element, countfield, limit) {
	if (element.value.length > (limit*0.7)) {
		element.style.backgroundColor = '#E7A730';
		document.getElementById('buchst').style.visibility = 'visible';
	}

    if (element.value.length > limit) {
        element.value = element.value.substring(0, limit);
		countfield.style.color = '#ff0000';
    } else {
        countfield.value = limit - element.value.length;
    }
}
