Event.observe(window, 'load', onGetRSSClick);

function numberizeMonth(month) {
	switch ( month ) {
		case 'Jan' :
			return '01';
		case 'Feb' :
			return '02';
		case 'Mar' :
			return '03';
		case 'Apr' :
			return '04';
		case 'May' :
			return '05';
		case 'Jun' :
			return '06';
		case 'Jul' :
			return '07';
		case 'Aug' :
			return '08';
		case 'Sep' :
			return '09';
		case 'Oct' :
			return '10';
		case 'Nov' :
			return '11';
		case 'Dec' :
			return '12';
	}
}

var GetRSS = Class.create({
	initialize : function(prefix, rssGetterUrl, rssTargetId) {
		this.prefix       = prefix;
		this.rssGetterUrl = rssGetterUrl;
		this.rssTargetId  = rssTargetId;
		this.rssTargetIdParam = 'rssTargetId=';
	},
	getParam : function() {
		return (this.rssTargetIdParam + encodeURIComponent(this.rssTargetId));
	},
	showRSS : function(httpObj) {
		var rssData = httpObj.responseXML;
		var channel = rssData.getElementsByTagName('channel');
		if ( channel[0] && channel[0].childNodes ) {
			var element = this.createTitleLink(channel[0].childNodes);
			$(this.prefix + 'title').appendChild(element);
		}
		var elementItemsTag = rssData.getElementsByTagName('item');
		for (var i = 0; i < elementItemsTag.length; i++) {
			var element = this.createItemLink(elementItemsTag[i].childNodes);
			$(this.prefix + 'items').appendChild(element);
			if ( i == 4 ) break;
		}
	},
	createTitleLink : function(objChildren) {
		var pubDate = null;
		for (var i = 0; i < objChildren.length; i++) {
			if ( objChildren[i].tagName == 'title' ) {
				var titleText = objChildren[i].firstChild.nodeValue;
			}
			else if ( objChildren[i].tagName == 'link' ) {
				var linkUrl = objChildren[i].firstChild.nodeValue;
			}
		}
		
		var elementAnchorTag = document.createElement('a');
		elementAnchorTag.setAttribute('href', linkUrl);
		elementAnchorTag.appendChild(document.createTextNode(titleText));
		return (elementAnchorTag);
	},
	createItemLink : function(objChildren) {
		var pubDate = null;
		for (var i = 0; i < objChildren.length; i++) {
			if ( objChildren[i].tagName == 'title' ) {
				var titleText = objChildren[i].firstChild.nodeValue;
			}
			else if ( objChildren[i].tagName == 'link' ) {
				var linkUrl = objChildren[i].firstChild.nodeValue;
			}
			else if ( objChildren[i].tagName == 'pubDate' ) {
				var temp = objChildren[i].firstChild.nodeValue;
				temp.match(/[\w]+, ([0-9]+) (\w+) ([0-9]+) ([0-9]+):([0-9]+):[0-9]+ (.+)/);
				pubDate = RegExp.$3 + '/' + numberizeMonth(RegExp.$2) + '/' + RegExp.$1
					 	+ ' ' + RegExp.$4 + ':' + RegExp.$5 + ' ' + RegExp.$6;
			}
			else if ( objChildren[i].tagName == 'dc:date' ) {
				var temp = objChildren[i].firstChild.nodeValue;
				temp.match(/([0-9]+)-([0-9]+)-([0-9]+)T([0-9]+):([0-9]+):[0-9]+(.+)/);
				pubDate = RegExp.$1 + '/' + RegExp.$2 + '/' + RegExp.$3
						+ ' ' + RegExp.$4 + ':' + RegExp.$5 + ' ' + RegExp.$6;
			}
		}
		
		var anchor = document.createElement('a');
		anchor.setAttribute('href', linkUrl);
		anchor.appendChild(document.createTextNode(titleText));
		
		var date = document.createElement('span');
		date.setAttribute('class', 'pubdate');
		date.appendChild(document.createTextNode('  ' + pubDate));
		
		var element = document.createElement('li');
		element.appendChild(anchor);
		element.appendChild(date);
		return (element);
	}
});

var objGetStudyRSS = new GetRSS('study_', '../php/getrss.php', 'study');
var objGetBlogRSS  = new GetRSS('blog_', '../php/getrss.php', 'blog');
var objGetSamuraiRSS  = new GetRSS('samurai_', '../php/getrss.php', 'samurai');

function update(objRSS) {
	new Ajax.Request(
		objRSS.rssGetterUrl,
		{
			method: 'get',
			parameters: objRSS.getParam(),
			onSuccess: function(httpObj) {
				objRSS.showRSS(httpObj);
			},
			onFailure: function(httpObj) {
				$(objRSS.prefix + 'title').innerHTML = "エラーで読み込めませんでした";
			}
		}
	);
}

function onGetRSSClick() {
		
	new Ajax.Request(
		objGetStudyRSS.rssGetterUrl,
		{
			method: 'get',
			parameters: objGetStudyRSS.getParam(),
			onSuccess: function(httpObj) {
				objGetStudyRSS.showRSS(httpObj);
			},
			onFailure: function(httpObj) {
				$(objGetBlogRSS.prefix + 'title').innerHTML = "エラーで読み込めませんでした";
			}
		}
	);
	update(objGetBlogRSS);
	update(objGetSamuraiRSS);
};

