// |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
// |  ## WINDOWS AJAX ##
// |  FICHIER	->	engine.js
// |  AUTEUR	->	Grevet Nicolas
// |  DATE		->	Avril 2006
// |  WHAT?		->	Moteur d'affichage et de gestion pour les fenêtres et menus
// |  				Reproduit une partie de l'API Windows (très succintement)
// |				Ce fichier contient toute la procédure de traitement des élements à afficher
// |________________________________________

load('Menu démarrer', 0.5);

// ----------------------------------------
// Traitements spécifiques liés à IE et son support merdique du CSS et du Javascript
// Comme toujours diront certains...
// ----------------------------------------

if (navigator.appName.indexOf('Microsoft') != -1)
	document.getElementById('head').style.filter = 'alpha(opacity=40)';

// ----------------------------------------
// Mise en forme du menu démarrer créé à partir de simples listes UL
// Il faut placer les sous-menus en cascade et les faire disparaître
// ----------------------------------------

for (i = 0; i < startmenu_li.length; i++)
{
	var li						= startmenu_li[i];
	var startmenu_li_content	= li.getElementsByTagName('ul');
	var level					= 0
	var tmp						= li;
	
	while (tmp.parentNode.parentNode.nodeName == 'LI')
	{
		level++;
		tmp = tmp.parentNode.parentNode;
	}
	li.className = ++level;
	if (level > max_submenus)
		max_submenus = level;
	
	if (startmenu_li_content[0])
	{
		var ul				= startmenu_li_content[0];
		var link			= li.getElementsByTagName('a')[0];
		var test_li			= ul.getElementsByTagName('li')[0];
		var loopControl		= maxLoopControl;
		var ul_links		= 0;
		
		while ((test_li != null) && (loopControl > 0))
		{
			if (test_li.nodeName == 'LI') ul_links++;
			test_li = test_li.nextSibling;
			loopControl--;
		}
		
		link.className		= 'expandable';
		link.name			= 'startmenu_'+i;
		link.onmouseover	= startmenu_expandli_onmouseover;
		
		ul.name				= 'level_'+level;
		ul.id				= 'startmenu_'+i;
		ul.style.left		= '100%';
		ul.style.bottom		= (ul_links*100)+'%';
	}
	else
	{
		li.onmouseover 		= startmenu_li_onmouseover;
	}
}

load('Barres de menu', 0.6);

// ----------------------------------------
// Mise en forme de toutes les barres de menu des fenêtres
// Parcours tout l'arbre une seule fois également et place les menus
// de façon à ce qu'ils s'ouvrent correctement au passage de la souris
// ----------------------------------------

for (i = 0; i < menubars.length; i++)
{
	var menus = menubars[i].getElementsByTagName('li');
	for (j = 0; j < menus.length; j++)
	{
		var li					= menus[j];
		var menubar_li_content	= li.getElementsByTagName('ul');
		var ul					= menubar_li_content[0];
		var link				= li.getElementsByTagName('a')[0];
		var level				= 0;
		var tmp					= li;
		var isrootmenu			= false;
		var ul_links			= 0;
		
		while (tmp.parentNode.parentNode.nodeName == 'LI')
		{
			level++;
			tmp = tmp.parentNode.parentNode;
		}
		li.className = ++level;
		if (level > max_submenus)
			max_submenus = level;
		
		if (li.parentNode.parentNode.className == 'menubar')
			isrootmenu = true;
		
		if ((isrootmenu) && (menubar_li_content.length < 1))
			link.className = 'disabled';
		
		else if (menubar_li_content.length > 0)
		{
			link.name	= 'menubar_'+i+'_'+j;
			ul.id		= 'menubar_'+i+'_'+j;
			ul.name		= 'level_'+level;
			
			if (isrootmenu)
			{
				link.onclick	= menubar_expandli_onclick;
			}
			else
			{
				var loopControl	= maxLoopControl;
				var test_li		= ul.getElementsByTagName('li')[0];
				
				while ((test_li != null) && (loopControl > 0))
				{
					if (test_li.nodeName == 'LI')
						ul_links++;
					test_li = test_li.nextSibling;
					loopControl--;
				}
				
				link.className		= 'expandable';
				link.onmouseover	= menubar_expandli_onmouseover;
				ul.style.left		= '100%';
				ul.style.top		= parseInt(100/ul_links)+'%';
			}
		}
		else
		{
			li.onmouseover = menubar_li_onmouseover;
		}
	}
}

load('Contenu', 0.7);

// ----------------------------------------
// Lancement du timer permettant de rafraichir la date et l'heure, rafraichissement de la barre des tâches
// Affichage du fond d'écran via les préférences de l'utilisateur
// Puis placement à l'avant plan de la dernière fenêtre ouverte lors de l'initialisation
// ----------------------------------------

refreshDate(true);
resizeTaskbar();
setWallpaper(pref_wallpaperposition, pref_wallpaper, pref_wallpapercolor);

var foundOne = false;
var lastWin = null;
for (win_ in windows)
{
	if (!windows[win_]['closed'])
	{
		foundOne = true;
		lastWin = win_;
	}
}
if (foundOne)
	win_focus(document.getElementById(lastWin));

//load('Contenu', 0.8);
//debug('<b style="color: #ff0;">LOADING COMPLETE</b>');
//setTimeout("unfadeOpacity('fade'); hide(loading.id);", 1500);
//setTimeout("unfadeOpacity('fade'); hide(loading.id);", 0);