var aOpenMenus = [], sActMenuClass = 'left-active';

addEvent( window, 'load', function() {
	aOpenMenus = getOpenedMenus( readCookie( 'openedMenus' ) );
} );

function WSItemNavigation( sFunc, sData, sItemId ) {
	switch ( sFunc ) {
		case 'insert':
			WSItemNavigationInsert( sData, sItemId );
			break;
		case 'update':
		case 'delete':
		default:
			break;
	} 
}

function WSItemNavigationInsert( sDataString, sItemId ) {
	var elLi = document.getElementById( 'navigation-localgroup-G1-' + sItemId ).parentNode;
	if ( !( /<ul[^>]*>/.test( sDataString ) ) ) {
		return false;
	}
	elLi.innerHTML += sDataString;
	aOpenMenus['id' + sItemId] = sItemId;
	createCookie( 'openedMenus', getArrayElements( aOpenMenus ), 1 );
}

function WSItemNavigationRequestInsert( evt ) {
	var elSource, sIdEvtTarget, sCatId, sPieceNumber,
	sOpenedClass = 'nav-main-item-opened',
	sClosedClass = 'nav-main-item';
	
	evt = evt || window.event || '';
	if ( evt ) {
		elSource = evt.target || evt.srcElement;
//		if ( elSource.hasAttribute('id') ) {
		if ( elSource.id ) {
			sIdEvtTarget = elSource.getAttribute('id');
			sCatId = sIdEvtTarget.substring( elSource.getAttribute('id').lastIndexOf( '-' ) + 1, elSource.getAttribute('id').length );
		}
		else {
//			console.debug(elSource.getAttribute( 'id' ));
			closeAllMenus( elSource );
			return true;
		}
		
		closeAllMenus( elSource );

		if ( elSource.parentNode.getElementsByTagName( 'ul' ).length == 0 ) {
			temp = doCommunication( 'index.php?system_function=ajax&function=wsitem_navigation_1&category_id=' + sCatId, 'GET' );
			if ( /<ul/.test( temp ) ) {
				removeClass( elSource, sClosedClass );
				addClass( elSource, sOpenedClass );
			}
			WSItemNavigation( 'insert', temp, sCatId );
		}
		else {
			if ( getNextElement( elSource ) ) {
				if ( hasClass( getNextElement( elSource ), 'hide' ) ) {
					removeClass( getNextElement( elSource ), 'hide' );
					removeClass( elSource, sClosedClass );
					addClass( elSource, sOpenedClass );
					aOpenMenus['id' + sCatId] = sCatId;
					createCookie( 'openedMenus', getArrayElements( aOpenMenus ), 1 );
				}
				else {
					addClass( getNextElement( elSource ), 'hide' );
					removeClass( elSource, sOpenedClass );
					addClass( elSource, sClosedClass );
					delete aOpenMenus['id' + sCatId];
					createCookie( 'openedMenus', getArrayElements( aOpenMenus ), 1 );
				}
			}
		}
	}

	function closeAllMenus( elSource ) {
		var aOpened, i, j, elActUl, elActA, elParent = elSource.parentNode, aParents = [], bIsInTree = false, elFirst = getFirstElement( elParent );
		while ( elParent && elFirst && !hasClass( elParent, 'modul-navigation-localgroup' ) ) {
			elFirst = getFirstElement( elParent );
			if ( elFirst && elFirst.tagName.toLowerCase() == 'a' ) {
				aParents.push( elFirst );
			}
			elParent = elParent.parentNode;
		}
		if ( readCookie( 'openedMenus' ) ) {
			aOpened = readCookie( 'openedMenus' ).split( ',' );
			for ( i = 0; i < aOpened.length; i++ ) {
				elActA = document.getElementById('navigation-localgroup-G1-' + aOpened[i]);
				if ( elActA ) {
					for ( j = 0; j < aParents.length; j++ ) {
						if ( elActA.getAttribute( 'id' ) == aParents[j].getAttribute( 'id' ) ) {
							bIsInTree = true;
							break;
						} 
					}
				}
				if ( !bIsInTree && elActA && elSource.getAttribute( 'id' ) != elActA.getAttribute( 'id' ) ) {
					elActUl = getNextElement( document.getElementById('navigation-localgroup-G1-' + aOpened[i]) );
					addClass( elActUl, 'hide' );
					removeClass( elActA, sOpenedClass );
					addClass( elActA, sClosedClass );
					delete aOpenMenus['id' + aOpened[i]];
					createCookie( 'openedMenus', getArrayElements( aOpenMenus ), 1 );
				}
			}
		} 
	}

}


// visszaadja egy asszociatív tömb elemeit egy "egyszerű" tömbben (a stringgé alakítás miatt volt szükséges)
function getArrayElements( aAssocArray ) {
	var aArray = [];
	for ( var i in aAssocArray ) {
		aArray.push(aOpenMenus[i]);
	}
	return aArray.toString();
}

function deleteActive() {

}

function getOpenedMenus( sCookie ) {
	var aMenus, aTemp = [], i;
	if ( sCookie != null ) {
		aMenus = sCookie.split( ',' )
		for ( i = 0; i < aMenus.length; i++ ) {
			aTemp['id' + aMenus[i]] = aMenus[i];
		}
	}
	return aTemp;
}
