/*
** ADD EVENT
*/
function addEvent( elm, evType, fn, useCapture )
	{
	if( elm.addEventListener )
		{
		elm.addEventListener( evType, fn, useCapture );
		return true;
		}
	else if( elm.attachEvent )
		{
		var r = elm.attachEvent( 'on' + evType, fn );
		EventCache.add( elm, evType, fn );
		return r;
		}
	else
		{
		elm[ 'on' + evType ] = fn;
		}
	return true;
	}

/*
** POUR LE MENU
*/	
function getMoverFor(  node )
	{
	return function( e ) { mover( e, node ); }
	}

function getMoutFor(  node )
	{
	return function( e ) { mout( e, node ); }
	}

var lastHover = null;

function mover( e, targetElement )
	{
	var el = window.event ? targetElement : e ? e.currentTarget : null;
	if( !el ) return;
	clearTimeout( el.outTimeout );
	for( var i = 0; i < el.childNodes.length; i++ )
		{
		var node = el.childNodes[ i ];
		if( node.nodeName.toLowerCase() == 'ul' )
			{
			if( lastHover != null && lastHover != el )
				{
				lastHover.className = '';
				}
			lastHover = el;
			el.className = 'isHover';
			//node.style.display = 'block';
			node.style.left = "165px";
			}
		}
	}

function mout( e, targetElement )
	{
	var el = window.event ? targetElement : e ? e.currentTarget : null;
	if( !el ) return;
	el.outTimeout = setTimeout( function() { mout2( el ); }, 50 );
	}

function mout2( el )
	{
	for( var i = 0; i < el.childNodes.length; i++ )
		{
		var node = el.childNodes[ i ];
		if( node.nodeName.toLowerCase() == 'ul' )
			{
			//node.style.display = 'none';
			node.style.left = "-9999px";
			if( lastHover != null && lastHover == el )
				{
				lastHover.className = '';
				}
			}
		}
	}
	
/*
** SELECTION D'UN PAYS DEPUIS LA ZONE DE LISTE
*/	
var lastSelect = null;

function selectInstance(  node )
	{
	return function( e ) { _selectInstance( e, node ); }
	}
	
function unselectInstance(  node )
	{
	return function( e ) { _unselectInstance( e, node ); }
	}
	
function _selectInstance( e, targetElement )
	{
	var el = window.event ? targetElement : e ? e.currentTarget : null;
	if( !el ) return;
	clearTimeout( el.outTimeout );
	if( el.nodeName.toLowerCase() == 'li' )
		{
		if( lastSelect == null || lastSelect != el )
			{
			var mil = document.getElementById( 'membresInstanceListe' );
			while( mil.childNodes.length > 0 )
				{
				mil.removeChild( mil.childNodes[0] );
				}
			lastSelect = el;
			var mi = document.getElementById( 'membresInstance' );
			if( !mi ) return;
			mi.style.display = 'block';
			membresNum = loadDatas( el );
			}
		}
	}

function _unselectInstance( e, targetElement )
	{
	var el = window.event ? targetElement : e ? e.currentTarget : null;
	if( !el ) return;
	el.outTimeout = setTimeout( function() { _unselectInstance2( el ); }, 50 );
	}

function _unselectInstance2( el )
	{
	var mi = document.getElementById( 'membresInstance' );
	if( !mi ) return;
	if( el.nodeName.toLowerCase() == 'li' )
		{
		if( lastSelect != null && lastSelect == el )
			{
			var mil = document.getElementById( 'membresInstanceListe' );
			while( mil.childNodes.length > 0 )
				{
				mil.removeChild( mil.childNodes[0] );
				}
			mi.style.display = 'none';
			lastSelect = null;
			hidePays();
			}
		}
	}

function loadDatas( el )
	{
	var membresNum = 0;
	if( el.id != "" )
		{
		var instanceIdSplit = el.id.split( "-" );
		var instanceId = instanceIdSplit[1];
		return loadDatasById( instanceId );
		}
	return membresNum;
	}
	
function addLI( parent, text )
	{
	var liText = document.createTextNode( text );
	var liNode = document.createElement( 'LI' );
	liNode.appendChild( liText );
	parent.appendChild( liNode );
	}

/*
** SELECTION D'UN PAYS DEPUIS LA MAP
*/	
var lastDirectSelection = null;

function selectInstanceById( id )
	{
	var mil = document.getElementById( 'membresInstanceListe' );
	if( !mil ) return;
	while( mil.childNodes.length > 0 )
		{
		mil.removeChild( mil.childNodes[0] );
		}
	var mi = document.getElementById( 'membresInstance' );
	if( !mi ) return;
	var pays = document.getElementById( 'membresInstancePays' );
	mi.style.display = 'block';
	lastDirectSelection = mi;
	var liPays = document.getElementById( 'instance-' + id );
	liPays.childNodes[0].style.backgroundColor = "#FDB27F";
	var membresNum = loadDatasById( id );
	mil.className = (membresNum > 5) ? 'S10' : 'S5';
	}

function getSelectInstanceById( id )
	{
	return function( e ) { selectInstanceById( id ); }
	}

	
function displayPays( id )
	{
	hidePays();
	var base = document.getElementById( 'wrapper' );
	var enimg = document.getElementById( 'nimg' );
	var nimg = document.createElement( 'IMG' );
	base.appendChild( nimg );
	nimg.style.position = "absolute";
	nimg.style.zIndex = "0";
	nimg.id = "nimg";
	enimg = nimg;
	enimg.style.display = "block";
	enimg.src = "/medias/images/cartes/" + aPays[ id ][ 'datas' ][ 2 ];
	//nimg.style.zIndex = "9";
	enimg.style.top = aPays[ id ][ 'big' ][ 0 ] + "px";
	enimg.style.left = aPays[ id ][ 'big' ][ 1 ] + "px";
	enimg.style.width = aPays[ id ][ 'big' ][ 2 ] + "px";
	enimg.style.height = aPays[ id ][ 'big' ][ 3 ] + "px";
	var liPays = document.getElementById( 'instance-' + id );
	liPays.childNodes[0].style.backgroundColor = "#FDB27F";
	}
	
function hidePays()
	{
	if( lastLiPays != null ) lastLiPays.childNodes[0].style.backgroundColor = "";
	var base = document.getElementById( 'wrapper' );
	var enimg = document.getElementById( 'nimg' );
	if( !enimg ) return;
	base.removeChild( enimg );
	}
	
function unselectInstanceById()
	{
	lastDirectSelection.style.display = "none";
	hidePays();
	}

function getUnselectInstanceById()
	{
	return function( e ) { unselectInstanceById(); }
	}
	

var lastLiPays = null;

function loadDatasById( id )
	{
	var membresNum = 0;
	var instanceId = id;
	membresNum = aPays[ id ]['membres'].length;
	var mil = document.getElementById( 'membresInstanceListe' );
	var pays = document.getElementById( 'membresInstancePays' );
	var liPays = document.getElementById( 'instance-' + id );
	if( lastLiPays != null ) lastLiPays.childNodes[0].style.backgroundColor = "";
	liPays.childNodes[0].style.backgroundColor = "#FDB27F";
	lastLiPays = liPays;
	pays.childNodes[0].nodeValue = aPays[ id ]['datas'][0];
	for( var i=0; i < membresNum; i++ )
		{
		addLI( mil, aPays[ id ]['membres'][ i ] );
		}
	displayPays( id );
	return membresNum;
	}

/*
** SCROLL DE LA ZONE DE LISTE DES PAYS
*/		
function _noScroll( dir ) {}
function _scroll( dir ) {}
	
function _doScroll( dir )
	{
	var selectInstances = document.getElementById( 'selectInstances' );
	var step = 11;
	var maxSteps = aPays.length;
	newTop = ( Math.abs(parseInt(selectInstances.style.top)) > 0 ? parseInt(selectInstances.style.top) : 0 ) + (dir * step);
	if( (dir < 0) && ((step * maxSteps) <= (Math.abs(newTop)+100)) ) return;
	newTop = ( newTop >= 0 ) ? 0 : newTop;
	selectInstances.style.top = newTop + "px";
	setTimeout( '_scroll( ' + dir + ');', 125 );
	}
	
function scrollStop()
	{
	_scroll = _noScroll;
	}
	
function scrollUp()
	{
	_scroll = _doScroll;
	_scroll( -1 );
	}

function scrollDown()
	{
	_scroll = _doScroll;
	_scroll( 1 );
	}


/*
** INIT
*/		
function init()
	{
	var ul = document.getElementById( 'menu' );
	var lis = ul.getElementsByTagName( 'li' );
	for( var i = 0; i < lis.length; i++ )
		{
		var node = lis[ i ];
		if( ( node.nodeName.toLowerCase() == 'li' ) && ( node.id != '' ) && ( node.className.indexOf( 'currentMenu' ) == -1 ) )
			{
			addEvent( node, 'mouseover', getMoverFor( node ), false );
			addEvent( node, 'mouseout', getMoutFor( node ), false );
			}
		}
	var ul = document.getElementById( 'selectInstances' );
	if( !ul ) return;
	var lis = ul.getElementsByTagName( 'li' );
	for( var i = 0; i < lis.length; i++ )
		{
		var node = lis[ i ];
		if( ( node.nodeName.toLowerCase() == 'li' ) )
			{
			addEvent( node, 'mouseover', selectInstance( node ), false );
			addEvent( node, 'mouseout', unselectInstance( node ), false );
			}
		}
	}
	
/*
** LOAD DEFAULT COUNTRIES ON TOP OF THE MAP (IMAGE OFF)
*/
function loadDefaultCountries()
	{
	for( var i = 0; i < index2id.length; i++ )
		{
		var base = document.getElementById( 'wrapper' );
		var nimg = document.createElement( 'IMG' );
		base.appendChild( nimg );
		nimg.style.position = "absolute";
		nimg.style.zIndex = "0";
		nimg.style.display = "block";
		var id = index2id[ i ];
		nimg.src = "/medias/images/cartes/" + aPays[ id ][ 'datas' ][ 1 ];
		nimg.style.top = aPays[ id ][ 'big' ][ 0 ] + "px";
		nimg.style.left = aPays[ id ][ 'big' ][ 1 ] + "px";
		nimg.style.width = aPays[ id ][ 'big' ][ 2 ] + "px";
		nimg.style.height = aPays[ id ][ 'big' ][ 3 ] + "px";
		}
	}
	
/*
** CREATE THE MAP USING THE DATAS OF COUNTRIES
*/
function createMap( withLinks )
	{
	var theBody = document.getElementById( 'wrapper' );
	var myMap = document.createElement( 'MAP' );
	theBody.appendChild( myMap );
	myMap.setAttribute( 'name', 'Map' );
	myMap.setAttribute( 'id', 'Map' );
	for( var i = 0; i < index2id.length; i++ )
		{
		var id = index2id[ i ];
		var myArea = document.createElement( 'AREA' );
		myMap.appendChild( myArea );
		myArea.setAttribute( 'shape', 'poly' );
		if( withLinks ) myArea.setAttribute( 'href', 'instance-liste?id=' + id );
		myArea.setAttribute( 'coords', aPays[ id ]['datas'][ 3 ] );
		addEvent( myArea, 'mouseover', getSelectInstanceById( id ), false );
		addEvent( myArea, 'mouseout', getUnselectInstanceById( id ), false );
		}
	}
	
/*
** SUPPRESSION DU FLASH ET LANCEMENT DE L'AFFICHAGE DES PAYS
*/
function flashOver()
	{
	var flashObj = document.getElementById('anim_carte');
	if(!flashObj) alert( 'NO FLASH !' );
	var base = document.getElementById( 'wrapper' );
	base.removeChild(flashObj);
	var div1 = document.getElementById('reseau');
	div1.style.display = "block";
	var div2 = document.getElementById('laUne');
	div2.style.display = "block";
	loadDefaultCountries();
	createMap( true );
	}
