
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
function opacity(ido, opacStart, opacEnd, millisec) { 
    //speed for each frame 
	
	ido2 = ido; 
	
    var speed = Math.round(millisec / 100); 
    var timer = 0; 

    //determine the direction for the blending, if start and end are the same nothing happens 
    if(opacStart > opacEnd) { 
        for(i = opacStart; i >= opacEnd; i--) { 
            setTimeout("changeOpac(" + i + ",'" + ido2 + "')",(timer * speed)); 
            timer++; 
        } 
    } else if(opacStart < opacEnd) { 
        for(i = opacStart; i <= opacEnd; i++) 
            { 
            setTimeout("changeOpac(" + i + ",'" + ido2 + "')",(timer * speed)); 
            timer++; 
        } 
    } 
} 

function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;

	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";

	if(typeof(arr) == 'object') { //Array/Hashes/Objects
	 for(var item in arr) {
	  var value = arr[item];
	 
	  if(typeof(value) == 'object') { //If it is an array,
	   dumped_text += level_padding + "'" + item + "' ...\n";
	   dumped_text += dump(value,level+1);
	  } else {
	   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
	  }
	 }
	} else { //Stings/Chars/Numbers etc.
	 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
	} 

//change the opacity for different browsers 
function changeOpac(opacity, ido3) {
	ido2.style.opacity = (opacity / 100); 
	ido2.style.MozOpacity = (opacity / 100); 
	ido2.style.KhtmlOpacity = (opacity / 100); 
	ido2.style.filter = "alpha(opacity=" + opacity + ")"; 
}

function menu_highlight(mhid,mhclass,mhtag,mrelpage){
	
	// Find menu by one of fourth ways
	
	function noe(){return true;}
	window.onerror = noe;
	
	if(mhid != null){
		// by id
		if(mhtag != null){
			// parent
			var menuobj1 = document.getElementById(mhid);
			var menuobj3 = menuobj1.getElementsByTagName("ul");
			var menuobj4 = menuobj3[0];
			
			mhid = mhid+"ah";
			menuobj4.id = mhid;
		}else{
			// ul

		}
	}else if (mhclass != null){
		// by class
		if(mhtag != null){
			// parent
			var menuobj1 = getElementsByClass(mhclass,null,mhtag);
			var menuobj2 = menuobj1[0];
			var menuobj3 = menuobj2.getElementsByTagName("ul");
			var menuobj4 = menuobj3[0];
		}else{
			// ul
			var menuobj1 = getElementsByClass(mhclass,null,"ul");
			var menuobj4 = menuobj1[0];
		}
		mhid = "highlmenu" + Math.floor((10-4)*Math.random()) + 5;
		menuobj4.id = mhid;
		
	}

	// Run highlight script
	
	preparemenu(mhid,mrelpage);
	
	//alert("aaa" + menuobj.innerHTML);
	
	
}

function firstlvlstyling(obj){
	// To add class for item with sub levels
	obj.firstChild.className = "hasDropdown";
	
}

function secondlvlstyling(obj){
	//alert(obj.innerHTML);
	var divslistz = obj.getElementsByTagName("ul");
	divslist = divslistz[0];
	//alert(divslist.innerHTML);
	
	
	var nodez = divslist.getElementsByTagName("LI");
	
	
		
		var offsetel = document.getElementById("RightMenuSitemap").parentNode.parentNode;

		offsetel.className = offsetel.className + " offsetsand";
		
		var curoffset = 0;
		var cutoffset = new Array();
		var cutc = 0;
		var cutc2 = 0;
		var cutc3 = 0;

		
		
		for (io=0; io<nodez.length; io++) {
			curoffset = curoffset + nodez[io].offsetHeight;
			
			cutoffset[io] = curoffset;
			if(curoffset < 400){
				cutc = cutc+1;
			}
			if(curoffset < 800){
				cutc2 = cutc2+1;
			}
			if(curoffset < 1200){
				cutc3 = cutc3+1;
			}
		}
		
		offsetel.className = offsetel.className.replace(" offsetsand", '');

	if(curoffset > 400){


		
	
	
	var newlist1 = "";
	var newlist2 = "";
	var newlist3 = "";
	var newlist3 = "";
	var newlistf = "";
	

	
	if(curoffset > 1200){
divslist.className = divslist.className+" threecols";
		
		var liststep = cutc+2;
		var liststep2 = cutc2+4;
	
	
	//alert(liststep);
	for (iz=0; iz<liststep; iz++) {
		newlist1 = newlist1 + "<li>" + nodez[iz].innerHTML + "</li>";
	}
	
	for (is=liststep; is<liststep2; is++) {
		newlist2 = newlist2 + "<li>" + nodez[is].innerHTML + "</li>";
	}
	
	for (is=liststep2; is<nodez.length; is++) {
		newlist3 = newlist3 + "<li>" + nodez[is].innerHTML + "</li>";
	}
	
	newlistf = '<div class="divm">' + newlist1 + '</div><div class="divm">' + newlist2 + '</div><div class="divm">' + newlist3 + '</div>';
	
	divslist.innerHTML = newlistf;
		
		
		
	}else if(curoffset > 800){
		divslist.className = divslist.className+" threecols";
		
		var liststep = cutc;
		var liststep2 = cutc2;
	
	
	//alert(liststep);
	for (iz=0; iz<liststep; iz++) {
		newlist1 = newlist1 + "<li>" + nodez[iz].innerHTML + "</li>";
	}
	
	for (is=liststep; is<liststep2; is++) {
		newlist2 = newlist2 + "<li>" + nodez[is].innerHTML + "</li>";
	}
	
	for (is=liststep2; is<nodez.length; is++) {
		newlist3 = newlist3 + "<li>" + nodez[is].innerHTML + "</li>";
	}
	
	newlistf = '<div class="divm">' + newlist1 + '</div><div class="divm">' + newlist2 + '</div><div class="divm">' + newlist3 + '</div>';
	
	divslist.innerHTML = newlistf;
	
	
	
	
}else if(curoffset < 800){
		divslist.className = divslist.className+" twocols";
		
		var liststep = cutc;
		
		
		//alert(liststep);
		for (iz=0; iz<liststep; iz++) {
			newlist1 = newlist1 + "<li>" + nodez[iz].innerHTML + "</li>";
		}
		
		for (is=liststep; is<nodez.length; is++) {
			newlist2 = newlist2 + "<li>" + nodez[is].innerHTML + "</li>";
		}
		
		newlistf = '<div class="divm">' + newlist1 + '</div><div class="divm">' + newlist2 + '</div>';
		
		divslist.innerHTML = newlistf;
		

		}
	
	
	

	
	
	
	
	
	
	
	}
		
}

function thirdlvlstyling(obj){
	
}



// Array indexOf function for IE
if(!Array.indexOf){
	    Array.prototype.indexOf = function(obj){
	        for(var i=0; i<this.length; i++){
	            if(this[i]==obj){
	                return i;
	            }
	        }
	        return -1;
	    }
	}

function preparemenu(menuid,mrelpage){
	
	// get active page adress
	

	var pageurl = window.location.href;

	// read menu
	
	var menuobj = document.getElementById(menuid);	
	// if JS enabled close sublists
	menuobj.className = "jsworking";
	
	var node = menuobj.getElementsByTagName("LI");
	
	// arrays for menu data
	var arr2 = new Array();
	var arr1 = new Array();
	
	
	// parse menu
	for (i=0; i<node.length; i++) {
		var parentid = node[i].parentNode.parentNode.id;
		//alert(parentid + " --- " + arr2[parentid]);
		if(node[i].parentNode.id == menuid){
			// first level
			arr2[i] = "s";
			node[i].id = menuid + i;
			firstlvlstyling(node[i]);
		}else if(arr2[parentid.replace(menuid, '')] == "s"){
			// second level
			arr2[i] = node[i].parentNode.parentNode.id;
			node[i].id = menuid + i;
			secondlvlstyling(node[i]);
		}else{
			// other levels
			arr2[i] = node[i].parentNode.parentNode.id;
			node[i].id = menuid + i;
			thirdlvlstyling(node[i]);
		}
		arr1[i] = node[i].firstChild.href;
		node[i].onmouseover=function()
        {

			this.className = this.className + " openlistie6";

        }
		node[i].onmouseout=function()
        {

			this.className = this.className.replace("openlistie6", "");
			

        }

	}

	
	
 /////////////////// relpage
	
	
	var kur = pageurl.substring(8).search("/");
	kur = kur + 8 + 1;
	
	
	var pageurl2 = pageurl.substring(kur);
	var pageurl3 = pageurl.substring(0,kur);
	if(mrelpage[pageurl2]){
	if(mrelpage[pageurl2].length > 3){
	
		pageurl = pageurl3 + mrelpage[pageurl2];
	
	}
	}
	

	
	// search for active menu node
	var activenodeid = arr1.indexOf(pageurl);

	if (activenodeid >= 0){
		// active node found
		
		var activenodeobj = document.getElementById(menuid + activenodeid);

		// set active

		if(arr2[activenodeid] == "s"){
			// active node in first level
			
			activenodeobj.firstChild.className = "firstlvlactive";
			// show sub list
			var actlist = activenodeobj.getElementsByTagName("UL");
			if(actlist.length > 0){
				actlist[0].className = "openlist";
			}
		}else if(arr2[arr2[activenodeid]] == "s"){
			// active node in second level
			activenodeobj.firstChild.className = "sublvlactive";
			// activate parent node
			document.getElementById(arr2[activenodeid]).firstChild.className = "firstlvlactive";
			// show parent sub list
			var actlist = activenodeobj.getElementsByTagName("UL");
			if(actlist.length > 0){
				actlist[0].className = "openlist";
			}
			// show sub list
			var actlist2 = document.getElementById(arr2[activenodeid]).getElementsByTagName("UL");
			if(actlist2.length > 0){
				actlist2[0].className = "openlist";
			}
		}else{
			// active node in third level
			activenodeobj.firstChild.className = "sublvlactive";
			// activate(open) parent node
			document.getElementById(arr2[activenodeid]).firstChild.className = "sublvlopen";
			// activate parent parent node
			document.getElementById(arr2[arr2[activenodeid]]).firstChild.className = "firstlvlactive";
			
			// show sub list
			var actlist = activenodeobj.getElementsByTagName("UL");
			if(actlist.length > 0){
				actlist[0].className = "openlist";
			}
			// show parent sub list
			var actlist2 = document.getElementById(arr2[activenodeid]).getElementsByTagName("UL");
			if(actlist2.length > 0){
				actlist2[0].className = "openlist";
			}
			// show parent parent sub list
			var actlist3 = document.getElementById(arr2[arr2[activenodeid]]).getElementsByTagName("UL");
			if(actlist3.length > 0){
				actlist3[0].className = "openlist";
			}
		}
	}
}

