﻿initFeed();

function initFeed() {
	Event.observe(window, 'load', getPublishedFeed, false);
}

function getPublishedFeed() {
	var getter = new Getter({ responce : 'xml', onSuccessFunc : putFeedFunc });
	getter.get('./atom.xml');
}

var putFeedFunc = function(feed) {
	var entries = feed.getElementsByTagName('entry');
	var titles  = new String();
	var maxList = 3;
	
	if (entries.length < maxList) maxList = entries.length;
	
	for (var n = 0; n < maxList; n++) {
		var timeStamp = entries[n].getElementsByTagName('issued')[0].firstChild.nodeValue
		titles += '<dt>' + timeStamp.substr(2, 2) + '年' + timeStamp.substr(5, 2) + '月'+ timeStamp.substr(8, 2) + '日'  +'</dt>'
				+ '<dd><a href="' + entries[n].getElementsByTagName('id')[0].firstChild.nodeValue + '" target="blog">' + entries[n].getElementsByTagName('title')[0].firstChild.nodeValue + '</a></dd>';
	}
	
	$('feedList').innerHTML = titles;
}

// Getter Class
Getter = Class.create();
Getter.prototype = {
	initialize : function(options) {
		this._setOptions(options);
		
		if (this.options.isCentered) {
			this.center();
		}
	},
	
	_setOptions: function(options) {
		this.options = {
			onLoadingFunc   : function(json) {},
			onSuccessFunc   : function(json) {},
			onCompleteFunc  : function(json) {},
			onFailureFunc   : function(json) {},
			onExceptionFunc : function(json) {},
			uri             : '',
			responce        : 'html',
			method          : 'get',
			requestHeaders  : ['If-Modified-Since','Wed, 15 Nov 1995 00:00:00 GMT']
		}
		Object.extend(this.options, options || {});
	},
	get : function(uri, params) {
		var onLoadingFunc   = this.options.onLoadingFunc;
		var onSuccessFunc   = this.options.onSuccessFunc;
		var onCompleteFunc  = this.options.onCompleteFunc;
		var onFailureFunc   = this.options.onFailureFunc;
		var onExceptionFunc = this.options.onExceptionFunc;
		
		var responce = this.options.responce;
		
		if(uri) this.options.uri = uri;
		
		var funcs = {
			onLoading : onLoadingFunc,
			onSuccess : function(res) {
				if(responce == 'json') {
					var json = eval('(' + res.responseText + ')');
					
					if(json.error != -1) {
						onSuccessFunc(json);
					}
					else {
						onFailureFunc(json);
					}
				}
				if(responce == 'xml') {
					onSuccessFunc(res.responseXML);
				}
				else {
					onSuccessFunc(res.responseText);
				}
			},
			onComplete  : onCompleteFunc,
			onException : onExceptionFunc
		};
		
		this._request(params, funcs);
	},
	_request : function(params, funcs) {
		var ajaxOptions = {
			method         : this.options.method,
			requestHeaders : this.options.requestHeaders,
			postBody       : params,
			onLoading      : funcs.onLoading,
			onSuccess      : funcs.onSuccess,
			onComplete     : funcs.onComplete,
			onFailure      : funcs.onFailure,
			onException    : funcs.onException
		};
		
		new Ajax.Request(this.options.uri, ajaxOptions);
	}
};
