/*desc_type should be description or description-zh */
var desc_type = "description";
var max_events= -1;  // -1 means whole events

function loadXML(filename, type, events) {
desc_type = type;
max_events = events;
try {
	if (window.ActiveXObject) {       // code for IE
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.load(filename);
		getmessage()
	} else if (document.implementation && // code for Mozilla, etc.
	    document.implementation.createDocument) {
		xmlDoc= document.implementation.createDocument("","",null);
		xmlDoc.load(filename);
		xmlDoc.onload=getmessage
	} else {
		alert('Your browser cannot handle this script');
	}
    } catch (e) {
	// Safari doesn't support DOM?
	forSafari(filename);
    }
}

function forSafari(filename) {
	/* Its very stupid, but I don't wanna spend too much time for fighting with F* browser */
	$.get(filename, function(d){
			var output="";
			var counter = 0;

			$(d).find('lab_event').each(function(){
				if(max_events != -1 && counter >= max_events)
					return;
				counter++;

				var $lab_event = $(this);
				var time= $lab_event.attr("time");
				var imageurl = $lab_event.attr('img_url');
				var eventurl = $lab_event.attr('event_url');
				var description = $lab_event.find(desc_type).text();

				var title = convertTimeString(time, desc_type);
				var html = '<tr><td>';
				html +='<table class="event-table" cellpadding="0" cellspacing="2">';
				html += '<tbody><tr>'
				html += '<td class="event-img">';
				html += '<a class="event" href="' + eventurl + '">'
				html += '<img class="event-img" alt="'+title+'" src="'+imageurl+'"> <\/a><\/td>';
				html += '<td class="event-text">'+title+'<br>';
				html += description;
				html += '<\/td><\/tr><\/tbody><\/table><\/td><\/tr>'
				html += '<br><br>'
				output += html;

				});
			var re = document.getElementById("recent_events");
			re.innerHTML=output;
	});

}

function getmessage() {
  var lab_event = xmlDoc.getElementsByTagName("lab_event");
  var total="";
  var max = max_events;
  if(max_events == -1) {
	  max = lab_event.length;
  }
  for(var i=0; i<lab_event.length && i<max ; i++) {
	var nodes    = lab_event[i].getElementsByTagName(desc_type)[0].childNodes;
	var desc     = parseDesc(nodes);
	var attrs    = lab_event[i].attributes;
	var time     = attrs.getNamedItem("time").nodeValue;
	var imageurl = attrs.getNamedItem("img_url").nodeValue;
	var eventurl = attrs.getNamedItem("event_url").nodeValue;

	var title = convertTimeString(time, desc_type);
	var html = '<tr><td>';
	html += '<tr>';
	html += '<td class="event-img">';
	html += '<a class="event" href="' + eventurl + '">';
	html += '<img class="event-img" alt="'+title+'" src="'+imageurl+'"> <\/a><\/td>';
	html += '<td class="event-text">'+title+'<br>';
	html += desc;
	html += '<\/td><\/tr><\/td><\/tr>';
	html += '<br><br>';

	total += html;
  }
  var re = document.getElementById("recent_events");
  re.innerHTML=total;
}

function parseDesc(nodes) {
    var desc="";
    try {
        for(var i=0; i< nodes.length; i++) {
           switch(nodes[i].nodeType) {
                case 1: // it supposed to be hyperlink tag
                    var attr = nodes[i].attributes;
                    desc += '<a href="'+attr.getNamedItem('href').nodeValue+'">';
                    desc += nodes[i].firstChild.data+'<\/a>';
                    break;
                case 3:
                    desc+=nodes[i].nodeValue;
                break;
            }
        }
    } catch (e) {
        desc = "Parse Description error";
    }

    return desc;
}


function convertTimeString(time, type) {
    var yy=time.substr(0,4);
    var mm=time.substr(5,2);
    var dd=time.substr(8,2);
    var result = "";
    if(type == "description") {
	mons = new Array(
	    "Jan","Feb","Mar","Apr","May","Jun","Jul",
	    "Aug", "Sep","Oct","Nov","Dec");

	var index_mm = parseInt(mm,10)-1;
	var mon = mons[index_mm];
	result =  mon+" "+dd+","+yy;
    }else if(type == "description-zh"){
	result = yy+"-"+mm+"-"+dd;
    }else {
	result = "Unknown type";
    }
    return result;
}

