	function getElementsByClassName(cn) {  
		var arr = new Array();   
		var els = document.getElementsByTagName("*");  
		var exp= new RegExp("^(.* )?"+cn+"( .*)?$", "g");  
		for (var i = 0; i < els.length; i++ ) {    
			if (exp.test(els[i].className)){      
				arr.push(els[i]);    
			}  
		}  
		return arr;
	}

	// przezroczystosc
	function chgOpacity(id, value) { 
		value/=100;
		with( document.getElementById(id).style ) {
			opacity = value;
			MozOpacity = value;
			KhtmlOpacity = value;
			filter = "alpha(opacity=" + value + ")"; 
		}
	}

	function createFadeEffect(id, opacStart, opacEnd, millisec) { 
		//speed for each frame 
		var steps = 20;
		var speed = Math.round(millisec / steps); 
		for(step=steps+1; step-->0; ) {
			o = (opacStart*(steps-step) + opacEnd*(step))/steps;
			setTimeout("chgOpacity('" + id + "'," + o + ")",(step * speed)); 
		}
	} 

	// ustawienia animacji
	var L_anim = 'progid:DXImageTransform.Microsoft.gradientWipe(duration=.7,WipeStyle=1): ';
	var L_anim_hide = 'progid:DXImageTransform.Microsoft.gradientWipe(duration=.2,WipeStyle=1,Motion=reverse): ';
	/* lista: http://www.permadi.com/tutorial/jsImgTransition/index.html */

	// zapamietane menu
	var L1_open = null, L2_open = null;
	var LL_autoid = 0;

	// zmiana widocznosci
	function Aturn(C, Anim, Visibility) {
		ok = C && C.style;
		if(!ok) return;
		if( C.filters && C.filters[0] ) {
			if(ok) C.filters[0].Stop();
		}
		C.style.filter = Anim;
		ok = C.filters && C.filters[0];
		if(ok) C.filters[0].Apply();
		else if(Visibility=='visible') {
			if(!C.id) C.id = 'LL_autoid_'+(LL_autoid++);
			chgOpacity(C.id, 0);
			createFadeEffect(C.id, 0, 100, 500);
		}
		C.style.visibility=Visibility;
		if(ok) C.filters[0].Play();
	}

	// pokazanie
	function Ashow(M) {
		if(M && M.nodeType!=1) M=M.nextSibling;
		if(M) Aturn(M, L_anim, 'visible');
	}

	// ukrycie
	function Ahide(M) {
		if(M && M.nodeType!=1) M=M.nextSibling;
		if(M) Aturn(M, L_anim_hide, 'hidden');
	}

	// otwieranie
	function L1open(M) {
		L2close();
		hideonly = (M==L1_open);
		if(L1_open) {
			Ahide(L1_open);
			L1_open = null;
		}
		if( !hideonly ) {
			Ashow(M);
			L1_open = M;
		}

	}
	function L1close() { if(L1_open) L1open(L1_open); }
	function L2open(M) {
		hideonly = (M==L2_open);
		if(L2_open) {
			Ahide(L2_open);
			L2_open.previousSibling.className='menu_lev_2_header';
			L2_open = null;
		}
		if( !hideonly ) {
			Ashow(M);
			M.previousSibling.className='menu_lev_2_header menu_lev_2_header_select';
			L2_open = M;
		}
	}
	function L2close() { if(L2_open) L2open(L2_open); }