(function(){
var	w=window,d=w.document;

var	scripts=d.getElementsByTagName('script');
var	inspoint=scripts[scripts.length-1],insparent=inspoint.parentNode;

var	render=(function(){
	var	_render=function(template,obj,levels){
		for (var key in obj) {
			if (!obj.hasOwnProperty(key)) continue;
			var	value=obj[key];
			if (!value||typeof value=='function') value='';
			var	_levels=levels.concat([key]);
			if (typeof value=='object') {
				template=_render(template,value,_levels);
				continue;
			}
			var	re=new RegExp('{{'+_levels.join('\.')+'}}','g');
			template=template.replace(re,value);
		}
		return template;
	};
	return function(template,infos){
		if (!template) return '';
		template=_render(template,infos,[]);
		//template=template.replace(/{{.*?}}/g,'');
		return template;
	}
})();	//	end of render()

var	setDateTimeInfo=(function(){
	var	jwdays=['\u65e5','\u6708','\u706b','\u6c34','\u6728','\u91d1','\u571f'];	// ['日','月','火','水','木','金','土']
	var	ewdays=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
	var	emonths=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
	var	addzero=function(num){return String(100+num).replace(/^1/,'');};
	return function(obj){
		pubDate=obj.pubDate;
		if (!pubDate) return;
		//pubDate=pubDate.replace(/\-0400$/,'-0700') // patch
		var	datetime=new Date(pubDate),wdaynum=datetime.getDay();
		var	year=datetime.getFullYear();
		var	month=addzero(1+datetime.getMonth());
		var	day=addzero(datetime.getDate());
		var	jwday=jwdays[wdaynum],ewday=ewdays[wdaynum],emonth=emonths[datetime.getMonth()];
		var	hour=addzero(datetime.getHours());
		var	minute=addzero(datetime.getMinutes());
		var	second=addzero(datetime.getSeconds());
		obj.date={year:year,month:month,day:day,jwday:jwday,ewday:ewday,emonth:emonth};
		obj.time={hour:hour,minute:minute,second:second};
		obj.datestr=year+'/'+month+'/'+day;
		obj.timestr=hour+':'+minute+':'+second;
	}
})();	//	end of setDateTimeInfo()

var	callYonda4=function(info){
	if (!info) info={};
	if (!info.start) info.start=0;
	if (!info.num) info.num=5;
	if (info.user) {
		var	template='http://yonda4.com/api/user/{{user}}?format=json&start={{start}}&num={{num}}&callback={{callback}}'
	}
	else {
		var	template='http://yonda4.com/api/latest?format=json&start={{start}}&num={{num}}&callback={{callback}}'
	}
	var	script=d.createElement('script');
	script.src=render(template,info)+((info.update)?'&update='+new Date().getTime():'');
	script.type='text/javascript';
	insparent.insertBefore(script,inspoint);
};	//	end of callYonda4()

w.showYonda4=function(params){
	if (!params||!params.template) return;
	
	var	template=params.template,info=params.info;
	
	var	t_header=template.header;
	var	t_body=template.body;
	var	t_item=template.item;
	var	t_footer=template.footer;
	
	if (!info) info={};

	var	elm=info.target_element;
	if (elm) {
		if (typeof elm!='object') elm=d.getElementById(elm);
	}
	if (!elm) {
		elm=d.getElementById('yonda4container');
		if (!elm) {
			elm=d.createElement('div');
			elm.id='yonda4container';
			insparent.insertBefore(elm,inspoint);
		}
	}
	var	modify_value=info.modify_value,modify_item=info.modify_item;
	if (typeof modify_value!='function') modify_value=null;
	if (typeof modify_item!='function') modify_item=null;
	if (!info.callback) {
		info.callback='yonda4callback';
	}
	w[info.callback]=function(json){
		var	header=d.createElement('div'),body=d.createElement('div'),footer=d.createElement('div');
		header.className='yonda4header';
		body.className='yonda4body';
		footer.className='yonda4footer';
		
		var	value=json.value, items=value.items;
		value.link_user=value.link;
		if (info.user) {
			value.link_user+='user/'+info.user
		}
		if (!info.name) {
			info.name=(info.user)?info.user:'\u5168\u4f53';
		}
		value.info=info;
		setDateTimeInfo(value);
		if (modify_value) value=modify_value(value);
		
		header.innerHTML=render(t_header,value);
		htmls=[];
		for (var ci=0,len=items.length; ci<len; ci++) {
			var	item=items[ci];
			setDateTimeInfo(item);
			if (modify_item) item=modify_item(item);
			value.item=item;
			htmls[htmls.length]=render(t_item,value);
		}
		value.items_html=htmls.join('');
		body.innerHTML=render(t_body,value);
		footer.innerHTML=render(t_footer,value);
		
		if (0<items.length) {
			while (elm.firstChild) elm.removeChild(elm.firstChild);
			elm.appendChild(header);
			elm.appendChild(body);
			elm.appendChild(footer);
		}
	};
	callYonda4(info);
};	//	end of showYonda4()

})();

