// JavaScript Document

//
// Browser Detection
//
function BrowserDetect() {
   var ua = navigator.userAgent.toLowerCase(); 
   // browser engine name
   this.isGecko       = (ua.indexOf('gecko') != -1 && ua.indexOf('safari') == -1);
   this.isAppleWebKit = (ua.indexOf('applewebkit') != -1);
   // browser name
   this.isKonqueror   = (ua.indexOf('konqueror') != -1); 
   this.isSafari      = (ua.indexOf('safari') != - 1);
   this.isOmniweb     = (ua.indexOf('omniweb') != - 1);
   this.isOpera       = (ua.indexOf('opera') != -1); 
   this.isIcab        = (ua.indexOf('icab') != -1); 
   this.isAol         = (ua.indexOf('aol') != -1); 
   this.isIE          = (ua.indexOf('msie') != -1 && !this.isOpera && (ua.indexOf('webtv') == -1) ); 
   this.isMozilla     = (this.isGecko && ua.indexOf('gecko/') + 14 == ua.length);
   this.isFirebird    = (ua.indexOf('firebird/') != -1);
   this.isNS          = ( (this.isGecko) ? (ua.indexOf('netscape') != -1) : ( (ua.indexOf('mozilla') != -1) && !this.isOpera && !this.isSafari && (ua.indexOf('spoofer') == -1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('webtv') == -1) && (ua.indexOf('hotjava') == -1) ) );
   // spoofing and compatible browsers
   this.isIECompatible = ( (ua.indexOf('msie') != -1) && !this.isIE);
   this.isNSCompatible = ( (ua.indexOf('mozilla') != -1) && !this.isNS && !this.isMozilla);
   // rendering engine versions
   this.geckoVersion = ( (this.isGecko) ? ua.substring( (ua.lastIndexOf('gecko/') + 6), (ua.lastIndexOf('gecko/') + 14) ) : -1 );
   this.equivalentMozilla = ( (this.isGecko) ? parseFloat( ua.substring( ua.indexOf('rv:') + 3 ) ) : -1 );
   this.appleWebKitVersion = ( (this.isAppleWebKit) ? parseFloat( ua.substring( ua.indexOf('applewebkit/') + 12) ) : -1 );
   // browser version
   this.versionMinor = parseFloat(navigator.appVersion); 
   // correct version number
   if (this.isGecko && !this.isMozilla) { this.versionMinor = parseFloat( ua.substring( ua.indexOf('/', ua.indexOf('gecko/') + 6) + 1 ) ); }
   else if (this.isMozilla) { this.versionMinor = parseFloat( ua.substring( ua.indexOf('rv:') + 3 ) ); }
   else if (this.isIE && this.versionMinor >= 4) { this.versionMinor = parseFloat( ua.substring( ua.indexOf('msie ') + 5 ) ); }
   else if (this.isKonqueror) { this.versionMinor = parseFloat( ua.substring( ua.indexOf('konqueror/') + 10 ) ); }
   else if (this.isSafari) { this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('safari/') + 7 ) ); }
   else if (this.isOmniweb) { this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('omniweb/') + 8 ) ); }
   else if (this.isOpera) { this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera') + 6 ) ); }
   else if (this.isIcab) { this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab') + 5 ) ); }
   this.versionMajor = parseInt(this.versionMinor); 
   // dom support
   this.isDOM1 = (document.getElementById);
   this.isDOM2Event = (document.addEventListener && document.removeEventListener);
   // css compatibility mode
   this.mode = document.compatMode ? document.compatMode : 'BackCompat';
   // platform
   this.isWin    = (ua.indexOf('win') != -1);
   this.isWin32  = (this.isWin && ( ua.indexOf('95') != -1 || ua.indexOf('98') != -1 || ua.indexOf('nt') != -1 || ua.indexOf('win32') != -1 || ua.indexOf('32bit') != -1 || ua.indexOf('xp') != -1) );
   this.isMac    = (ua.indexOf('mac') != -1);
   this.isUnix   = (ua.indexOf('unix') != -1 || ua.indexOf('sunos') != -1 || ua.indexOf('bsd') != -1 || ua.indexOf('x11') != -1)
   this.isLinux  = (ua.indexOf('linux') != -1);
   // specific browser shortcuts
   this.isNS4x = (this.isNS && this.versionMajor == 4);
   this.isNS40x = (this.isNS4x && this.versionMinor < 4.5);
   this.isNS47x = (this.isNS4x && this.versionMinor >= 4.7);
   this.isNS4up = (this.isNS && this.versionMinor >= 4);
   this.isNS6x = (this.isNS && this.versionMajor == 6);
   this.isNS6up = (this.isNS && this.versionMajor >= 6);
   this.isNS7x = (this.isNS && this.versionMajor == 7);
   this.isNS7up = (this.isNS && this.versionMajor >= 7);
   this.isIE4x = (this.isIE && this.versionMajor == 4);
   this.isIE4up = (this.isIE && this.versionMajor >= 4);
   this.isIE5x = (this.isIE && this.versionMajor == 5);
   this.isIE55 = (this.isIE && this.versionMinor == 5.5);
   this.isIE5up = (this.isIE && this.versionMajor >= 5);
   this.isIE6x = (this.isIE && this.versionMajor == 6);
   this.isIE6up = (this.isIE && this.versionMajor >= 6);
   this.isIE4xMac = (this.isIE4x && this.isMac);
   this.isIEMac = (this.isIE && this.isMac);
}

var browser = new BrowserDetect();

function filterNodes (parentNode, tagName, className, excludeClass) {
	
	// search for Nodes based on certain criteria and return Array with results
	
	if (parentNode != undefined) { // only perform search if Parent Node actually exists

		var results = new Array();
		// check if a special tag is searched for
		if (tagName != "") var nodes = parentNode.getElementsByTagName(tagName); else var nodes = new Array(parentNode);
		// check if a special class is searched for
		if (className != "") {
			for(i=0; i<nodes.length; i++) {
				var node = nodes[i];
				// check if class matches
				if( node.className.indexOf(className) != -1 ) {
					 results.push(node);
				}
			}
		} else 	var results = nodes;
		// if there is an Exclude Class, Loop again and remove excluded Items
		if (excludeClass != "") {
			var excludeArray = excludeClass.split(",");
			var filterArray = new Array();
			for(var i=0; i<results.length; i++) {
				var node = results[i];
				for(var j=0; j<excludeArray.length; j++) {
					if(node.className.indexOf(excludeArray[j]) == -1) { filterArray.push(node); break; }
				}
			}
			results = filterArray;
		}
	
		return results;

	} else return undefined;
}

function beforeAfter (nodeArray, insertMode, before, after) {
	if (nodeArray != null) {
		// Loop through results and insert 2 new nodes before and after each result
		for(var i=0; i<nodeArray.length; i++) {
			var node = nodeArray[i];
			var content = document.createTextNode(""); // at least an Empty Content is needed to display
			// Insert before if a class is specified
			if (before != "") {
				var beforeDIV = document.createElement('span');
				beforeDIV.className = before;
				beforeDIV.appendChild(content);
				if (insertMode == "outer") {
					node.parentNode.insertBefore(beforeDIV, node);
				} else {
					node.insertBefore(beforeDIV, node.firstChild);
				}
			}
			// Insert after if a class is specified
			if (after != "") {
				var afterDIV = document.createElement('span');
				afterDIV.className = after;
				afterDIV.appendChild(content);
				if (insertMode == "outer") {
					node.parentNode.insertBefore(afterDIV, node.nextSibling);
				} else {
					node.insertBefore(afterDIV, node.lastChild.nextSibling);
				}
			}
		}
	}
}

function sfHover(nodeArray) {
	if (nodeArray != null) {
		for (var i=0; i<nodeArray.length; i++) {
			nodeArray[i].onmouseover=function() {
				this.className+=" sfhover";
			}
			nodeArray[i].onmouseout=function() {
				this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
			}
		}
	}
}

function sfFocus(nodeArray) {
	if (nodeArray != null) {
		for (var i=0; i<nodeArray.length; i++) {
			nodeArray[i].onfocus=function() {
				this.className+=" sffocus";
			}
			nodeArray[i].onblur=function() {
				this.className=this.className.replace(new RegExp(" sffocus\\b"), "");
			}
		}
	}
}

function blockFlashEvents(nodeArray, flashid) {
	if (nodeArray != null) {
		for (var i=0; i<nodeArray.length; i++) {
			nodeArray[i].onmouseover = function() { document[flashid].lock(); }
			nodeArray[i].onmouseout = function()  { document[flashid].unlock();	}
		}
	}
}

function fixSelectHover(nav) {
	if (nav != null) {
		var ieULs = nav.getElementsByTagName('ul');
		// IE script to cover <select> elements with <iframe>s
		for (j=0; j<ieULs.length; j++) {
			var ieMat=document.createElement('iframe');
			if(document.location.protocol == "https:")
				ieMat.src="//0";
			else if(window.opera != "undefined")
				ieMat.src="";
			else
				ieMat.src="javascript:false";
				ieMat.scrolling="no";
				ieMat.frameBorder="0";
				ieMat.style.width=ieULs[j].offsetWidth+"px";
				ieMat.style.height=ieULs[j].offsetHeight+"px";
				ieMat.style.zIndex="-1";
				ieULs[j].insertBefore(ieMat, ieULs[j].childNodes[0]);
				ieULs[j].style.zIndex="101";
		}
	}
}



// JavaScript Document for mod_001
// function that will swap the display for given target 
function getSubMenu(id, curlink){ 
 var element = document.getElementById(id);
 var notaktive = document.createAttribute("class");
 var aktive = document.createAttribute("class");
 aktive.nodeValue = "aktive";
 notaktive.nodeValue = "notaktive";
 element.style.display = (element.style.display == 'block') ? "none" : "block";
 if (element.parentNode.className != '') { element.parentNode.setAttributeNode(notaktive);}
 else {element.parentNode.setAttributeNode(aktive);}
} 


// STARTUP

window.onload = function() {
	// necessary DOM Manipulations
	if (browser.isIE && browser.versionMajor < 7) { 
		if (browser.versionMajor < 7) { // Run this only for IE below 7
			fixSelectHover(document.getElementById("pulldown-top")); // Fix IE select - hover bug
			sfHover(filterNodes(document.getElementById("pulldown-top"), "li", "", ""));// Enable :hover Effect on Main Navi
			fixSelectHover(document.getElementById("pulldown-btm"));
			sfHover(filterNodes(document.getElementById("pulldown-btm"), "li", "", "")); 
			fixSelectHover(document.getElementById("international")); 
			sfHover(filterNodes(document.getElementById("international"), "li", "", ""));
			fixSelectHover(document.getElementById("international_t")); 
			sfHover(filterNodes(document.getElementById("international_t"), "li", "", ""));
			fixSelectHover(document.getElementById("sel_country")); 
			sfHover(filterNodes(document.getElementById("sel_country"), "li", "", ""));
		}
	} // use the following if there are problems with hover events in pulldownmenus >>>  else blockFlashEvents(filterNodes(document.getElementById("pulldown-top"), "li", "", ""), "IDHERE"); // keep flash from processing Events in non IE Browser
	
}