//
// RSS News Ticker
// 2011-10-28
//

var RSSNewsTicker = new Object();

// ひとつのRSSから取得するエントリーの数
RSSNewsTicker.RSSColumnsQty = 10;

// 横幅
RSSNewsTicker.width = 420;

// 高さ
RSSNewsTicker.height = 40;

// フィードタイトルの文字数制限
RSSNewsTicker.TitleCharQty = 100;

// 要約文の表示非表示 true or false
RSSNewsTicker.Snippet = true;

// フィード要約文の文字数制限
RSSNewsTicker.SnippetCharQty = 100;

// 一件あたりの表示時間（ミリ秒
RSSNewsTicker.DisplayTime = 4000;

// 移動時間（ミリ秒
RSSNewsTicker.MoveSpeed = 700;

// スライド方向 0:横 1〜:縦(表示数)
RSSNewsTicker.slide = 4;

// 取得するフィードリスト
RSSNewsTicker.feeds = new Array('http://www.neohouse.jp/knowledge.xml');


RSSNewsTicker.feedsCounter = RSSNewsTicker.feeds.length;

//
RSSNewsTicker.entrys = new Array();
RSSNewsTicker.entrysCounter = 0;
RSSNewsTicker.DisplayHandle = null;
RSSNewsTicker.CurrentPos = 0;


// Google API Include
//document.write('<sc'+'ript src="https://www.google.com/jsapi?key='+RSSNewsTicker.GoogleAPIKey+'"></sc'+'ript>');

if(RSSNewsTicker.slide == 0)
	document.write('<style type="text/css">div.RNT_feed {width: '+RSSNewsTicker.width+'px;height: '+RSSNewsTicker.height+'px;float: left;}</style>');
else
	document.write('<style type="text/css">div.RNT_feed {width: '+RSSNewsTicker.width+'px;height: '+RSSNewsTicker.height+'px;}</style>');
//

// main
google.load("feeds", "1");
function RNT_initialize() {
	var d = window.document;
	
	// style format
	d.getElementById("RNT_container").style.width = RSSNewsTicker.width + "px";
	if(RSSNewsTicker.slide > 0)
		d.getElementById("RNT_container").style.height = RSSNewsTicker.height * RSSNewsTicker.slide + "px";
	else
		d.getElementById("RNT_container").style.height = RSSNewsTicker.height + "px";
	
	$("div.RNT_feed").css("background", "#ffffff");
	
	for(var cnt=0;cnt<RSSNewsTicker.feeds.length;cnt++){
		var feed = new google.feeds.Feed(RSSNewsTicker.feeds[cnt]);
		feed.setNumEntries(RSSNewsTicker.RSSColumnsQty)
		feed.load(function(result) {
			if (!result.error) {
				var container = document.getElementById("RNT_feed");
				for (var i = 0; i < result.feed.entries.length; i++) {
					var entry = result.feed.entries[i];
					var div = document.createElement("div");
					div.appendChild(document.createTextNode(entry.title));
					RNT_addEntrys(entry.title,entry.link,entry.publishedDate,entry.contentSnippet);
					// title , link , publishedDate
					//container.appendChild(div);
				}
			}
			RSSNewsTicker.feedsCounter--;
		});
	}
}
function RNT_addEntrys(title,link,date,description){
	//alert(title);
	var pubdate = new Date(date);
	var timeCnt = Math.floor(pubdate.getTime() / 1000)
	//RSSNewsTicker.entrys.push(timeCnt + '<->' + title + '<->' + link);
	RSSNewsTicker.entrys[RSSNewsTicker.entrysCounter] = new Array(timeCnt,title,link,date,description);
	RSSNewsTicker.entrysCounter++;
}
function RNT_Watch(){
	var d = window.document;
	if(RSSNewsTicker.feedsCounter == 0){
		RSSNewsTicker.entrys.sort(function(a,b){
			return(b[0]-a[0]);
		});
		// alert(RSSNewsTicker.entrys[0][1]);
		if(RSSNewsTicker.slide > 0){
			d.getElementById("RNT_feeds").style.width = RSSNewsTicker.width + "px";
			d.getElementById("RNT_feeds").style.height = RSSNewsTicker.height * RSSNewsTicker.entrys.length * 2 + "px";
		}
		else {
			d.getElementById("RNT_feeds").style.width = RSSNewsTicker.width * RSSNewsTicker.entrys.length * 2 + "px";
			d.getElementById("RNT_feeds").style.height = RSSNewsTicker.height + "px";
		}
	   RNT_Rendering();
	}
	else
		setTimeout("RNT_Watch()",500);
}
function RNT_Rendering(){
	var RNT_HTML = '';
	for(i=0;i<RSSNewsTicker.entrys.length;i++){
		var pubdate = new Date(RSSNewsTicker.entrys[i][3]);
		var m = pubdate.getMonth()+1;
		if(m < 10) m = "0"+m;
		var d = pubdate.getDate();
		if(d < 10) d = "0"+d;
		
		var dateStr = pubdate.getFullYear() + '/' +m+'/'+d;
		if(RSSNewsTicker.entrys[i][1].length > RSSNewsTicker.TitleCharQty)
			RSSNewsTicker.entrys[i][1] = RSSNewsTicker.entrys[i][1].substring(0,RSSNewsTicker.TitleCharQty) + "...";
		if(RSSNewsTicker.entrys[i][4].length > RSSNewsTicker.SnippetCharQty)
			RSSNewsTicker.entrys[i][4] = RSSNewsTicker.entrys[i][4].substring(0,RSSNewsTicker.SnippetCharQty) + "...";
		
		RNT_HTML += '<div class="RNT_feed"><a href="'+RSSNewsTicker.entrys[i][2]+'" onmouseover="RNT_over()" onmouseout="RNT_out()">'+dateStr+'&nbsp;&nbsp;'+RSSNewsTicker.entrys[i][1];
		if(RSSNewsTicker.Snippet)
			RNT_HTML += '<span>'+RSSNewsTicker.entrys[i][4]+'</span>';
		RNT_HTML += '</a></div>';
	}
	document.getElementById('RNT_feeds').innerHTML = RNT_HTML + RNT_HTML;
	RSSNewsTicker.DisplayHandle = setTimeout("RNT_Slider()",RSSNewsTicker.DisplayTime);
}
function RNT_over(obj){
	clearTimeout(RSSNewsTicker.DisplayHandle);
}
function RNT_out(obj){
	RSSNewsTicker.DisplayHandle = setTimeout("RNT_Slider()",RSSNewsTicker.DisplayTime);
}
function RNT_PosReset(){
	document.getElementById("RNT_feeds").style.top = "0px";
}
function RNT_Slider(){
	//RSSNewsTicker.CurrentPos += 1 + (RSSNewsTicker.slide - 1);
	RSSNewsTicker.CurrentPos++;
	if(RSSNewsTicker.CurrentPos > RSSNewsTicker.entrys.length){
		RSSNewsTicker.CurrentPos = 0;
		if(RSSNewsTicker.slide > 0)
			document.getElementById("RNT_feeds").style.top = "0px";
		else
			document.getElementById("RNT_feeds").style.left = "0px";
		RSSNewsTicker.DisplayHandle = setTimeout("RNT_Slider()",0);
	}
	else {
		if(RSSNewsTicker.slide > 0){
			var pos = RSSNewsTicker.CurrentPos * RSSNewsTicker.height * -1;
			$(function(){
				$("#RNT_feeds").animate({ top: pos },RSSNewsTicker.MoveSpeed);
			});
		}
		else {
			var pos = RSSNewsTicker.CurrentPos * RSSNewsTicker.width * -1;
			$(function(){
				$("#RNT_feeds").animate({ left: pos },RSSNewsTicker.MoveSpeed);
			});
		}
		RSSNewsTicker.DisplayHandle = setTimeout("RNT_Slider()",RSSNewsTicker.DisplayTime+RSSNewsTicker.MoveSpeed);
	}
}
function debug(){
	RSSNewsTicker.entrys.sort(function(a,b){
		return(b[0]-a[0]);
    });
	alert(RSSNewsTicker.entrys[0][1]);
	alert(RSSNewsTicker.entrys.length);
}
google.setOnLoadCallback(RNT_initialize);
setTimeout("RNT_Watch()",500);
