var gadgetTimeout;

////////////////////////////////////////////////////////////////////////////////
// Initialisation
////////////////////////////////////////////////////////////////////////////////

window.onload = function()
{
	System.Machine.PowerStatus.powerLineStatusChanged = Rafraichir;
	System.Gadget.Flyout.file = "Flyout.html";
	zoneClick.onmouseup = ouvrirFlyout;
	Rafraichir();
	bloquerFlyout();
}

////////////////////////////////////////////////////////////////////////////////
// Batterie, définition des objets
////////////////////////////////////////////////////////////////////////////////
function Batterie()
{
	this.disponible = System.Machine.PowerStatus.batteryPercentRemaining;
	this.charge = System.Machine.PowerStatus.isBatteryCharging;
	this.secteur = System.Machine.PowerStatus.isPowerLineConnected;
}

////////////////////////////////////////////////////////////////////////////////
// Rafraichissement, paramètres d'affichage
////////////////////////////////////////////////////////////////////////////////
function Rafraichir()
{
	var batterie = new Batterie();
	
	if (batterie.secteur) 
	{
		imageBatterie.src = "Images/BatterieBranchee.png";
		statutSecteur.style.display = "block";
		niveauBatterie.style.display = "none";
		noBatterie.style.display = "none";
		disponibilite.innerText = "disponibles";
	}
	else if (!batterie.secteur)
	{
		statutSecteur.style.display = "none";
		niveauBatterie.style.display = "block";
		noBatterie.style.display = "none";
		disponibilite.innerText = "restants";
		imageBatterie.src = "Images/BatterieDebranchee.png";
		Statut();		
	}

	pourcentage.innerText = batterie.disponible + "%";

	secteur.innerText = (batterie.disponible == 100 && !batterie.charge) ?
		"Chargée" : "Branchée";

	chargement.innerText = batterie.charge ? "En charge" :
		((batterie.disponible < 100) ? "En attente" : "Sur secteur");
	
	if(batterie.disponible == 255)
	{
		noBattery();
	}
	
	gadgetTimeout = setTimeout(Rafraichir, 1000);
}

////////////////////////////////////////////////////////////////////////////////
// Statut, détermine le niveau de la batterie
////////////////////////////////////////////////////////////////////////////////

function Statut()
{
	var pourcent = System.Machine.PowerStatus.batteryPercentRemaining;
	var secteur = System.Machine.PowerStatus.isPowerLineConnected;

	if(pourcent >= 66)
	{
		niveau.innerText = "Elevé";		
	}
	else
	{
		if(pourcent > 25)
		{
			niveau.innerText = "Moyen";
		}
		else
		{
			if(pourcent > 10)
			{
				niveau.innerText = "Faible";
				imageBatterie.src = "Images/BatterieDebrancheeFaible.png";
			}
			else
			{
			niveau.innerText = "Critique";
			imageBatterie.src = "Images/BatterieDebrancheeCritique.png";
			}
		}
	}
}

////////////////////////////////////////////////////////////////////////////////
// Flyout
////////////////////////////////////////////////////////////////////////////////

function ouvrirFlyout()
{
	zoneClick.blur();
	System.Gadget.Flyout.show = true;
}

function bloquerFlyout()
{
	var integral = System.Machine.PowerStatus.batteryCapacityTotal;
	var restant = System.Machine.PowerStatus.batteryCapacityRemaining;
	
	if (integral < 0 || restant < 0)
	{
		zoneClick.onmouseup = null;
		zoneClick.alt = "Impossible d'afficher les détails, batterie incompatible.";
	}
}

////////////////////////////////////////////////////////////////////////////////
// Statut Inconnu
////////////////////////////////////////////////////////////////////////////////

function noBattery()
{
	imageBatterie.src = "Images/Secteur.png";
	statutBatterie.style.display = "none";
	statutSecteur.style.display = "none";
	noBatterie.style.display = "block";
	noBatterie.innerText = "Pas de  \n\n batterie";
	zoneClick.onmouseup = null;
	zoneClick.alt = "Aucune batterie connectée";
}
