var imgpath = "images/bands/";
var update = null;
var lastmod = null;

var br = document.createElement("br");
br.setAttribute("class", "clear");

var http = null;
var xml = null;

var eventlist = new Array();
var artistlist = new Array()
var now = new Date ();


if (window.XMLHttpRequest) 
{
	http = new XMLHttpRequest();
} 
else if (window.ActiveXObject) 
{
	http = new ActiveXObject("Microsoft.XMLHTTP");
}

window.onload = function() 
{
	if (http != null) 
	{
		http.open("GET", "riff.xml?r=" + Math.round(1000 * Math.random()), true);
		http.onreadystatechange = render;
		http.send(null);
	}
}

// Deklaration Event Objekt
function Event()
{
	this.id = null;
	this.date = null;
	this.time = null;
	this.name = null;
	this.fbevent = null;
	this.info = null;
	this.details = new Array();
}

// Deklaration Detail Objekt
function Detail()
{
	this.id = null;
	this.name = null;
	this.origin = null;
	this.genre = null;
	this.hp = null;
	this.myspace = null;
	this.pic = null;
	this.info = null;
}

function getArtists(nodes)
{
	for (var i = 0; i < nodes.length; i++) 
	{
		var tmp = new Detail();
		var node = nodes[i];
		var aid = node.getAttribute("id");
		for (var j = 0; j < node.childNodes.length; j++) 
		{
			var xy = node.childNodes[j];
			switch (xy.nodeName)
			{
				case "name":
					tmp.name = xy.firstChild.nodeValue;
					break;
				case "origin":
					tmp.origin = xy.firstChild.nodeValue;
					break;
				case "genre":
					tmp.genre = xy.firstChild.nodeValue;
					break;
				case "hp":
					tmp.hp = xy.firstChild.nodeValue;
					break;
				case "myspace":
					tmp.myspace = xy.firstChild.nodeValue;
					break;
				case "pic":
					tmp.pic = xy.firstChild.nodeValue;
					break;
				case "info":
					tmp.info = xy.firstChild.nodeValue;
					
					//alert(hasChildNodes());
					//var xmlinfo = nodes[i].getElementsByTagName("p");
					//alert(node.nodeName + xmldet.length);
					
					/*
					for (var k = 0; k < xmlinfo.length; k++) 
					{
						tmp.info[k] = xmlinfo[k].firstChild.nodeValue;	
					}
					*/
					break;
				default:
					break;
			}
		}
		artistlist[aid] = tmp;
	}
}

function parse()
{
	// databuffer
	xml = http.responseXML;
	
	// get event array
	var entries = xml.getElementsByTagName("event");
	
	// put artist in array
	getArtists(xml.getElementsByTagName("artist"));
	
	// update
	update = xml.getElementsByTagName("update")[0].childNodes[0].nodeValue;
	lastmod = ISODateString(new Date(Date.parse(xml.lastModified)));
	
	var elc = 0;
	
	for (var i = 0; i < entries.length; i++) 
	{
		var evt = new Event();
		var entry = entries[i];
		
		// check date
		evt.date = entry.getAttribute("date");
		if (evt.date != null)
		{
			var dateparts = evt.date.split("-");
			var evtdate = new Date(dateparts[0], dateparts[1] - 1, dateparts[2], 0, 0, 0);
			var evtday = evtdate.getTime() / 1000 / 3600 / 24;
			var today = now.getTime() / 1000 / 3600 / 24;
			var d = evtday - today + 1.5; // 2 tage danach noch anzeigen.
			//alert(evtdate + " | " + d + " | " + now);
			if (d < 0) continue;
		}
		else continue;
		
		evt.id = entry.getAttribute("id");
		
		for (var j = 0; j < entry.childNodes.length; j++) 
		{			
				var node = entry.childNodes[j];
				switch (node.nodeName)
				{
					case "name":
						evt.name = node.firstChild.nodeValue;
						break;
					case "time":
						evt.time = node.firstChild.nodeValue;
						break;						
					case "info":
						evt.info = node.firstChild.nodeValue;
						break;
					case "fbevent":
						evt.fbevent = node.firstChild.nodeValue;
						break;
					case "details":
						//alert(hasChildNodes());
						var xmldet = entries[i].getElementsByTagName('detail');
						//alert(node.nodeName + xmldet.length);
						for (var k = 0; k < xmldet.length; k++) 
						{
							evt.details[k] = parseDetails(xmldet[k]);	
						}
						break;
					default:
						break;
				}
		}
		// nur hinzufügen wenn aktuell oder in zukunft
		eventlist[elc++] = evt;
	}
}

function parseDetails(node)
{
	var o = new Detail();
	var dtype = node.getAttribute("type");
	
	
	//external Artist Info
	if (dtype == "artist")
	{
		//alert("Artist: " + node.getAttribute("id"));
		return artistlist[node.getAttribute("id")];
	}
	
	for (var i = 0; i < node.childNodes.length; i++) 
	{
		var d = node.childNodes[i];
		
		switch (d.nodeName)
		{
			case "name":
				o.name = d.firstChild.nodeValue;
				break;
			default:
				break;
		}
	}
	
	return o;
}

function ISODate(str)
{
	var wds = new Array("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa");
	var zero = "0";
	var a = str.split("-");
	var date = new Date(a[0], a[1] - 1, a[2], 0, 0, 0);
	// Wochentag
	var wdc = date.getDay();
	// Tag
	var day = date.getDate().toString();
	if (day.length == 1) day = zero + day;
	// Monat
	var month = (date.getMonth() + 1).toString();
	if (month.length == 1) month = zero + month;
	// Jahr
	var year = date.getFullYear().toString();
	
	var o = wds[wdc] + " " + day + "." + month + "." + year;
	return o;
}

function ISODateString(d) {
    function pad(n){
        return n<10 ? '0'+n : n
    }
    return d.getUTCFullYear()+'-'
    + pad(d.getUTCMonth()+1)+'-'
    + pad(d.getUTCDate())+' '
    + pad(d.getUTCHours())+':'
    + pad(d.getUTCMinutes())+':'
    + pad(d.getUTCSeconds())+' UTC';
    
}

function render()
{
	if (http.readyState != 4) return;
	var target = document.getElementById("xmlevents");
	var updatenfo = document.getElementById("update");
	parse();
	//msgShow();
	
	var updatetxt = document.createTextNode(update);
	updatenfo.appendChild(updatetxt);
	
	for (var i = 0; i < eventlist.length; i++)
	{
			var evt = eventlist[i];
			//Eventcontainer
			var eventbox = document.createElement("div");
			eventbox.setAttribute("class", "event");
			eventbox.setAttribute("id", "ev_" + evt.date + evt.id);
			//Eventheadline
			var eventhead = document.createElement("div");
			eventhead.setAttribute("class", "ev_title");
			eventhead.setAttribute("onclick", "togglerow('detail_" + evt.date + evt.id + "')")
			//Eventdetails
			var eventdetails = document.createElement("div");
			eventdetails.setAttribute("class", "ev_details");
			eventdetails.setAttribute("id", "detail_" + evt.date + evt.id);
			
			//Genrelle Event Infos
			if (evt.info != "...")
			{
				var dnfo = document.createElement("div");
				var tnfo = document.createTextNode(evt.info);
				dnfo.appendChild(tnfo);
				eventdetails.appendChild(dnfo);
			}
			
			//Details
			for (var j = 0; j < evt.details.length; j++) 
			{
				// umbruch wenn mehr als 1 Eintrag
				if (j > 0)
				{
					var nl = document.createElement("br");
					nl.setAttribute("class", "clear")
					eventdetails.appendChild(nl);
				}
				
				//alert(br);
				
				// Artist Bild
				if (evt.details[j].pic != "...")
				{
					var img = document.createElement("img");
					img.setAttribute("src", imgpath + evt.details[j].pic);
					img.setAttribute("alt", evt.details[j].name);
					eventdetails.appendChild(img);
					img = null;
				}
				
				// Artist Div
				var dArtist = document.createElement("div");
				dArtist.setAttribute("class", "ev_artist");
				
				// Artist Name
				var hName = document.createElement("h1"); 
				var tName = document.createTextNode(evt.details[j].name);
				hName.appendChild(tName);
				dArtist.appendChild(hName);
				tName = null;
				hName = null;
				
				
				// Artist Info
				var dlArtist = document.createElement("dl");
				
				//Genre
				var dtGenre = document.createElement("dt");
				var tGenre = document.createTextNode("Genre:");
				dtGenre.appendChild(tGenre);
				dlArtist.appendChild(dtGenre);
				var ddGenre = document.createElement("dd");
				var dGenre = document.createTextNode(evt.details[j].genre);
				ddGenre.appendChild(dGenre);
				dlArtist.appendChild(ddGenre);
				
				//Origin
				if (evt.details[j].origin != "...")
				{
					var dtOrigin = document.createElement("dt");
					var tOrigin = document.createTextNode("Origin:");
					dtOrigin.appendChild(tOrigin);
					dlArtist.appendChild(dtOrigin);
					var ddOrigin = document.createElement("dd");
					var dOrigin = document.createTextNode(evt.details[j].origin);
					ddOrigin.appendChild(dOrigin);
					dlArtist.appendChild(ddOrigin);
				}
				
				//Homepage
				if (evt.details[j].hp != "...")
				{
					var dtHomepage = document.createElement("dt");
					var tHomepage = document.createTextNode("Homepage:");
					dtHomepage.appendChild(tHomepage);
					dlArtist.appendChild(dtHomepage);
					var ddHomepage = document.createElement("dd");
					var aHomepage = document.createElement("a");
					aHomepage.setAttribute("href", "http://" + evt.details[j].hp);
					aHomepage.setAttribute("target", "_blank");
					var dHomepage = document.createTextNode(evt.details[j].hp);
					aHomepage.appendChild(dHomepage);
					ddHomepage.appendChild(aHomepage);
					dlArtist.appendChild(ddHomepage);
					dtHomepage = null;
					ddHomepage = null;
					tHomepage = null;
					aHomepage = null;
					dHomepage = null;
				}
				
				//Myspace
				if (evt.details[j].myspace != "...")
				{
					var dtMyspace = document.createElement("dt");
					var tMyspace = document.createTextNode("myspace:");
					dtMyspace.appendChild(tMyspace);
					dlArtist.appendChild(dtMyspace);
					var ddMyspace = document.createElement("dd");
					var aMyspace = document.createElement("a");
					aMyspace.setAttribute("href", "http://myspace.com/" + evt.details[j].myspace);
					aMyspace.setAttribute("target", "_blank");
					var dMyspace = document.createTextNode("myspace.com/" + evt.details[j].myspace);
					aMyspace.appendChild(dMyspace);
					ddMyspace.appendChild(aMyspace);
					dlArtist.appendChild(ddMyspace);
					dtMyspace = null;
					ddMyspace = null;
					tMyspace = null;
					aMyspace = null;
					dMyspace = null;
				}
				
				dArtist.appendChild(dlArtist);
				dlArtist = null;
				//Artist Info
				if (evt.details[j].info != "..")
				{
					var parts = evt.details[j].info.split("\n");
					
					for (var k = 0; k < parts.length; k++) 
					{
						var p = document.createElement("p");
						var ptxt = document.createTextNode(parts[k]);
						p.appendChild(ptxt);
						dArtist.appendChild(p);
					}
					
					
					
					//alert(evt.details[j].info);
					/*
					var divInfo = document.createElement("div");
					var tInfo = document.createTextNode(evt.details[j].info);
					divInfo.appendChild(tInfo);
					dArtist.appendChild(divInfo);
					*/
					parts = null;
				}
				
				
				
				
				eventdetails.appendChild(dArtist);
			}
			
			var fblink = document.createElement("a");
			var fblinktxt = document.createTextNode("on FB");
			fblink.setAttribute("href", "http://www.facebook.com/event.php?eid=" + evt.fbevent);
			fblink.setAttribute("target", "_blank");
			fblink.appendChild(fblinktxt);
				
			var txt = document.createTextNode(ISODate(evt.date) + " | " + evt.time + " Uhr | " + evt.name);
			
			eventhead.appendChild(txt);
			// Link zu Facebokkevent , falls vorhanden
			if (evt.fbevent != "...")
			{
				eventdetails.appendChild(fblink);
			}
			
			eventbox.appendChild(eventhead);
			eventbox.appendChild(eventdetails);
			
			target.appendChild(eventbox);
			// get Details
			/*
			var det = evt.details;
			var ii = document.createElement("i");
			var dettxt = document.createTextNode("Detl: " + det.length);
			ii.appendChild(dettxt);
			target.appendChild(ii);
			*/
			
	}	
}

function msgShow()
{
	var target = document.getElementById("msg");
	for (var i = 0; i < eventlist.length; i++) 
	{
		var ev = eventlist[i]; 
		var b = document.createElement("h3");
	//	alert(i + ev.date + ev.info);
		var bTxt = document.createTextNode(i + ": " + ISODate(ev.date) + " | " + ev.time + " | " + ev.name + " | " + ev.info + " | " + ev.details);
		b.appendChild(bTxt);
		target.appendChild(b);
	}

}

