// XML driven Events Table
// (c) december 2004, Franck van der Sluijs 

//------------------------------------------------------------------------------
function FillEventsTable()
{
  if (document.implementation && document.implementation.createDocument)
	{
		//--- Mozilla implementatie ---
		xmlDoc = document.implementation.createDocument("", "", null);
		xmlDoc.onload = ProcessEventsData;
	}
	else if (window.ActiveXObject)
	{
		//--- Microsoft implementatie ---
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.onreadystatechange = function () {if (xmlDoc.readyState == 4) ProcessEventsData()};
 	}
	else
	{
    //--- Geen implementatie ---
		alert('Your browser don\'t support al features of this website');
		return;
	}
	xmlDoc.load("../data/events.xml");
}

//------------------------------------------------------------------------------
function ProcessEventsData()
{
  //--- Initialisatie ---
  var Months = new Array('jan','feb','mrt','apr', 'mei','jun', 'jul','aug','sep','okt', 'nov','dec');
  var Today = new Date(); 
  var EventCounter = 0;

  //--- Table en Tbody elementen ---
	var htmTable = document.createElement('TABLE');
	htmTable.setAttribute('border',0);
	htmTable.setAttribute('align','left');
	htmTable.setAttribute('cellPadding',1);
	htmTable.setAttribute('cellspacing',1);
	var htmTbody = document.createElement('TBODY');
	htmTable.appendChild(htmTbody);

  //--- Agenda items ophalen ---  
  var Events = xmlDoc.getElementsByTagName('event');
  
  
  

  //--- Itereer over agenda items ---	
  for (i=0; i<Events.length; i++)
	{
	  //--- Waarde ophalen uit XML ---
		function GetXmlValue (TagName)
		{
      var y = Events[i].getElementsByTagName(TagName);
			if (y.length > 0)
			{
			if (y[0].childNodes.length > 0)
			     return y[0].firstChild.nodeValue
       	else
       	   return '';		
			}	 
			else
			   return '';			
		}
		
		//--- Maak een nieuwe html node ---
		function NewHtmNode (aText, aColor, aBold, aLink)
		{


       var FontNode = document.createElement('font');
	    FontNode.setAttribute('color', aColor);
	    FontNode.appendChild(document.createTextNode(aText));
		
		

      if ((!aBold) && (aLink == ''))
			{		 
		    return FontNode;
      }
			else
			{
       if (aLink != '')
       {		 
         var LinkNode = document.createElement('a');
	       LinkNode.setAttribute('href', aLink);
      	 LinkNode.appendChild(FontNode);			
      	 return LinkNode;
       }
       else
       {
         var BoldNode = document.createElement('b');
      	 BoldNode.appendChild(FontNode);			
      	 return BoldNode;
      	}
			}
		}
		
		//--- Year ---
		var YearValue = GetXmlValue('year');
		
		//--- Month ---
		var MonthValue = GetXmlValue('month');
    var MonthNode =	NewHtmNode(Months[parseInt(MonthValue)-1], '#000033', false, '');
		
		//--- Day ---
		var DayValue = GetXmlValue('day');
    var DayNode =	NewHtmNode(DayValue, '#000033', false, '');
			
		//--- Time ---
		var TimeValue = GetXmlValue('time');
	  var TimeNode =	NewHtmNode(TimeValue,'#000033', (TimeValue != '9:45'), '');
	
		//--- Link ---
		var LinkValue = GetXmlValue('url');

		
		
		
		//--- Description --- 
  	var DescriptionNode = NewHtmNode(GetXmlValue('text'), ((LinkValue =='') ? 'black':'#000099' ), false, LinkValue);
		
		//--- Controleer datum ---	
    var xmlDate = new Date(YearValue,MonthValue-1, DayValue, 23, 59, 59);
		if (xmlDate > Today) 
		{ 
		  //--- Teller ophogen ---
			EventCounter++;
			
			//--- Maak regel ---
			var htmTr = document.createElement('TR');
         	htmTr.setAttribute('valign','top');

			
			//--- Regel vullen ---
			function InsertTableData(htmNode, strAlign)
			{
			  var htmTd = document.createElement('TD');
         	  htmTd.setAttribute('align',strAlign);
         	  htmTd.setAttribute('valign','top');
		 	  htmTd.appendChild(htmNode);
			  htmTr.appendChild(htmTd);			
			}

			InsertTableData(DayNode, 'right');
			InsertTableData(MonthNode, 'left');
			InsertTableData(TimeNode, 'center');
			InsertTableData(DescriptionNode, 'left');
		
	    //--- Regel toevoegen ---	
  		htmTbody.appendChild(htmTr); 
		
		//--- Max 10 items weergeven ---
		if (EventCounter == 7){break;}
		}
	}
	
    //--- Eventuele (dummy) inhoud van node weghalen ---
    document.getElementById('EventsTable').innerHTML = '';

	//--- HTML element toevoegen aan document ---
	document.getElementById('EventsTable').appendChild(htmTable);
}


