/* mabinogi raid boss js */

var init = function()
{
	var contentNode = dojo.byId('bossTable');
	dojo.xhrGet({
		url: 'data/boss.xml',
		handleAs: 'xml',
		sync: true,
		load: function(data, args) {
			content = makeTable(data);
			dojo.fadeOut({
				node: contentNode,
				duration: 50,
				onEnd: function() {
					contentNode.innerHTML = content;
					dojo.fadeIn({node: contentNode}).play();
				}
			}).play();
		},
		error: function(error, args) {
			contentNode.innerHTML = 'data file load failed';
		}
	});
};
dojo.addOnLoad(init);

function makeTable(xml)
{
	var root = xml.getElementsByTagName('boss')[0];
	var items = root.getElementsByTagName('item');
	var content = '<table>';
	var offset = ((new Date).getTimezoneOffset() + 540) * 60000;
	var prevDay = 0;
	for (var i = 0; i < items.length; i++) {
		var item = items[i];

		var time = new Date(xmlNodeText(item, 'time') * 1000 + offset);
		var day = time.getDate();
		if (day != prevDay) {
			prevDay = day;
			content += '<tr><th colspan="3">' + (time.getMonth() + 1) + '월 ' + time.getDate() + '일</th></tr>';
		}

		content += '<tr>';
		content += '<td>' + leadingZero(time.getHours()) + ':' +
		       	leadingZero(time.getMinutes()) + '</td>';

		var channel = xmlNodeText(item, 'ch');
		channel = channel == 0 ? '전채널' : channel + '채널';

		content += '<td>' + channel + '</td>';

		var name = xmlNodeText(item, 'name');
		var realName = getBossName(name);
		if (realName == false) {
			realName = name;
			name = 'unknown';
		}
		var count = xmlNodeText(item, 'count');
		if (count > 1) realName += ' ' + count + '차';

		content += '<td class="' + name + '">' + realName + '</td>';

		content += '</tr>';
	}
	content += '</table>';
	return content;
	//dojo.byId('bossTable').innerHTML = content;
}

function xmlNodeText(item, tag)
{
	return item.getElementsByTagName(tag)[0].firstChild.nodeValue;
}

function leadingZero(nr)
{
 if (nr < 10) nr = '0' + nr;
 return nr;
}

function getBossName(name)
{
 switch (name) {
 case 'yeti':
  return '네이드';
 case 'mammoth':
  return '매머드';
 case 'efreet_ground':
  return '이프리트(지상)';
 case 'efreet_under':
  return '이프리트(지하)';
 default:
  return false;
 }
}

