//
// Common (language neutral) functions
//

var menu_active_element;

function menu_set_visibility( obj, visible ) {
	var base;

	if(!obj) {
		base = document.getElementById("shopkatalog");
	} else {
		base = obj;
	}

	//
	// hide category entries
	// 
	var categories = base.getElementsByTagName("ul");

	for( var i=0; i<categories.length; i++ ) {
		categories[i].style.display = (visible) ? "" : "none";
	}

	//
	// set images
	//
	var categories = base.getElementsByTagName("img");

	for( var i=0; i<categories.length; i++ ) {
		categories[i].src = (visible) ? "fileadmin/templates/images/list_active.gif" : "fileadmin/templates/images/list_inactive.gif";
	}
}

function menu_find_category_by_param( param, value ) {

	if( !param || !param.length ) {
		return false;
	}

	if( !value ) {
		value = true;
	}

	//
	// category parameter found, search for menu
	//
	var base = document.getElementById( "shopkatalog" );
	var categories = base.getElementsByTagName( "div" );

	for( var x=0; x < categories.length; x++ ) {
		var links = categories[x].getElementsByTagName( "a" );

		for( var i=1; i < links.length; i++ ) {
			var p_href = menu_uri_get_parameter( links[i].href, param );

			if( p_href == value ) {
				return categories[x];
			}
		}
	}
	return false;
}

function menu_uri_get_parameter( uri, param ) {

	if( !uri || !uri.length ) {
		return false;
	}

	var pos = uri.indexOf( '?' ) + 1;

	if( pos > 0 ) {
		uri = uri.substr( pos, uri.length - pos );

		var params = uri.split( '&' );

		for( var x=0; x < params.length; x++ ) {
			params[x] = params[x].split( '=' );
			if( param && params[x][0] == param ) {
				return ( params[x].length == 2 ) ? ( params[x][1] ) : true;
			}
		}
		return params;
	}
	return false;
}

function menu_update(obj) {

	if(!obj) {
		menu_set_visibility( false, false );

		//
		// open selected category
		//
		var catid  = menu_uri_get_parameter( window.location.search, 'tx_iclear_shopkatalog[cat_id]' );
		var pcatid = menu_uri_get_parameter( window.location.search, 'tx_iclear_shopkatalog[pcat_id]' );

		if( catid ) {
			var category = menu_find_category_by_param( 'tx_iclear_shopkatalog[cat_id]', catid );

			if( !category ) {
				category = menu_find_category_by_param( 'tx_iclear_shopkatalog[cat_id]', pcatid );
			}

			if( category ) {
				menu_set_visibility( category, true );
				menu_active_element = category;
			}
		}
		return;
	}

	// unhide menu
	menu_set_visibility( obj.parentNode, true );

	if( menu_active_element ) {
		menu_set_visibility( menu_active_element, false );

		if( menu_active_element == obj.parentNode ) {
			menu_active_element = '';
			return;
		}
	}
	menu_active_element = obj.parentNode;
}
