////////////////////////////////////////////////////////////////////////////////
// A nice event structure
function Evenement ( inDate, inEvent) 
{
	this.mDate = inDate; 
	this.mEvent = inEvent;
}

////////////////////////////////////////////////////////////////////////////////
// Sort the events
function getSorted(inEvents, inSize)
{
	lModif = 1;
	
	// Performs bubble sort.
	while (lModif)
	{
		lModif = 0;
		for (i=0;i<inSize-1;++i) if (inEvents[i].mDate > inEvents[i+1].mDate)
		{
			var lTemp = new Evenement(inEvents[i].mDate,inEvents[i].mEvent);
			inEvents[i] = inEvents[i+1];
			inEvents[i+1] = lTemp;
			lModif = 1;
		}
	}
	
	return inEvents;	
}

////////////////////////////////////////////////////////////////////////////////
// Sumer mega function to get the difference between two dates as a string
function getDateDifference(inEvent, inToday)
{
	lLigne = "";
	
	if ((inEvent.getYear() == inToday.getYear()) &&
	       (inEvent.getMonth() == inToday.getMonth()) &&
	       (inEvent.getDate() == inToday.getDate())) lLigne += "aujourd'hui";
	else 
	{
		lDiff = inEvent-inToday;
		lLigne += "dans ";

		lNbJours = Math.floor(lDiff/86400000); 
		if (lNbJours > 0) lLigne += String(lNbJours) + " jour";
		if (lNbJours > 1) lLigne += "s";
		
		lDiff = lDiff-86400000*lNbJours;
		lNbHeures = Math.floor(lDiff/3600000);
		if (lNbHeures > 0 && lNbJours > 0) lLigne += ", ";
		if (lNbHeures > 0) lLigne += String(lNbHeures) + " heure";
		if (lNbHeures > 1) lLigne += "s";
		     	
		lDiff = lDiff-3600000*lNbHeures;
		lNbMinutes = Math.floor(lDiff/60000);
		if (lNbMinutes > 0) 
		{
			if (lNbJours > 0 || lNbHeures > 0) lLigne += " et ";
			lLigne += String(lNbMinutes) + " minute";
		}
		if (lNbMinutes > 1) lLigne += "s";
	}
	return lLigne;
}

////////////////////////////////////////////////////////////////////////////////
// Sumer mega function that tells if the diff. in days is less than a threshold
function getDaysDifference(inEvent, inToday, inHotThreshold)
{
	lDDays = 0;
	
	if ((inEvent.getYear() == inToday.getYear()) &&
	       (inEvent.getMonth() == inToday.getMonth()) &&
	       (inEvent.getDate() == inToday.getDate())) lDDays = 0;
	else 
	{
		lDiff = inEvent-inToday;
		lDDays = Math.floor(lDiff/86400000); 
	}
	
	return lDDays;	
}

////////////////////////////////////////////////////////////////////////////////
// Sumer mega function get transform a date into a string
function getNiceDate(inDate)
{
	lRetour = String(inDate.getDate()) + " ";
	switch (inDate.getMonth())
	{
		case 0: lRetour += "janvier"; break;
		case 1: lRetour += "février"; break;
		case 2: lRetour += "mars"; break;
		case 3: lRetour += "avril"; break;
		case 4: lRetour += "mai"; break;
		case 5: lRetour += "juin"; break;
		case 6: lRetour += "juillet"; break;
		case 7: lRetour += "août"; break;
		case 8: lRetour += "septembre"; break;
		case 9: lRetour += "octobre"; break;
		case 10: lRetour += "novembre"; break;
		case 11: lRetour += "décembre"; break;
	}
	
	// Patch for the IE vs Mozilla year format
	if (inDate.getYear() < 1900) lRetour += " " + String(1900+inDate.getYear());
	else lRetour += " " + String(inDate.getYear());
	
	return lRetour;
}

lToday = new Date();

var lEvents = new Array;
lNumEvents = 0;

////////////////////////////////////////////////////////////////////////////////
// Find the next show
for (i=0;i<lNumShows;i++) if (lShows[i] >= lToday)
{
	lEvents[lNumEvents++] = new Evenement
	(
		lShows[i], 
		"Prochain spectacle à " + lShowsPlace[i]
	);
	break;
}

////////////////////////////////////////////////////////////////////////////////
// Add events
lEvents[lNumEvents++] = new Evenement
(
	new Date("December 3, 2002 22:00:00"),
	"Jean Leloup en entrevue au <i>POINT</i> (SRC)"
);

lEvents[lNumEvents++] = new Evenement
(
	new Date("December 3, 2002 18:30:00"),
	"Jean Leloup à <i>FLASH</i> (TQS)"
);

lEvents[lNumEvents++] = new Evenement
(
	new Date("December 4, 2002 18:30:00"),
	"Jean Leloup à <i>FLASH</i> pour la deuxième partie de son entrevue (TQS)"
);

lEvents[lNumEvents++] = new Evenement
(
	new Date("December 3, 2002 00:00:00"),
	"<a href=\"articles/articles/lapresse_13novembre2002.html\">Sortie du nouvel album <i>La Vallée des réputations</a></i>"
);

lEvents[lNumEvents++] = new Evenement
(
	new Date("December 3, 2002 22:30:00"),
	"Jean Leloup au <i>Grand Blond avec un show Sournois</i> (TVA)"
);

lEvents = getSorted(lEvents,lNumEvents);

////////////////////////////////////////////////////////////////////////////////
// Display events

lStart = 1;
lHotThreshold = 5;
lVeryHotThreshold = 2;

for (i=0;i<lNumEvents;i++) if (lEvents[i].mDate >= lToday)
{
	if (lStart)
	{
		lStart = 0;
		document.write("<table cellspacing=\"2\" width=\"100%\"><tr><td class=\"NewsTable\">");
		document.write("À surveiller:<ul>");
	}
	
	lHot = getDaysDifference(lEvents[i].mDate,lToday)<lHotThreshold;
	lVeryHot = getDaysDifference(lEvents[i].mDate,lToday)<lVeryHotThreshold;
	lDiff = getDateDifference(lEvents[i].mDate, lToday);
	lWhen = getNiceDate(lEvents[i].mDate);
	lLigne = "<li>";
	if (lHot) lLigne+="<font color=red>";
	if (lVeryHot) lLigne += "<b>";
	lLigne += lEvents[i].mEvent + " " + lDiff + " (" + lWhen + ").";
	if (lVeryHot) lLigne += "</b>";
	if (lHot) lLigne+="</font>";
	
	document.write(lLigne);
}
 
if (!lStart)
{
	document.write("</ul>");
	document.write("</td></tr></table>");
}