/*
	infogenerator.js (ver 1.1)
	2010.11.19
	Author: Takada Koji
*/

google.load("feeds", "1");

var feedSet;

//オブジェクト FeedSet
function FeedSet(infoData){
	
	this.feedUrl = infoData.feedUrl;
	this.num = infoData.num;
	this.selector = infoData.selector;
	this.linkUrl = infoData.linkUrl;
	this.target = infoData.target;
	this.date = infoData.date;
	this.anime = infoData.anime;
	this.trimCount = infoData.trimCount;
	this.speed = infoData.speed;
	
}

//起動
function init(feedset){
	var feed = new google.feeds.Feed(feedset.feedUrl);
	feed.setNumEntries(feedset.num);	//指定された数だけFeedを取得
	var el = $(feedset.selector);	//生成領域取得
	
	feed.load(function(result) {
		if (!result.error) {
			
			try{
				if(!feedset.date){
					el.append("<ul>");
				}
				for (var i = 0; i < result.feed.entries.length; i++) {
					var entry = result.feed.entries[i];
					var title = entry.title;
					if(title.indexOf("  :: ", 0) != -1){
					title = title.slice(0, title.indexOf("  :: ", 0)); }

					
					if(feedset.anime == "loop"){
						//"loop"の場合、最初の1件以外をトリミング
						if(i != 0){
							title = triming(title);
						}
					}else if(feedset.anime == "trim"){
						//"trim"の場合、全件トリミング
						title = triming(title);
					}
					
					if(feedset.date){
						//日付有の場合
						var date = entry.publishedDate.split(" ");
					
						switch(date[2]){
							case "Jan": date[2]=1; break;
							case "Feb": date[2]=2; break;
							case "Mar": date[2]=3; break;
							case "Apr": date[2]=4; break;
							case "May": date[2]=5; break;
							case "Jun": date[2]=6; break;
							case "Jul": date[2]=7; break;
							case "Aug": date[2]=8; break;
							case "Sep": date[2]=9; break;
							case "Oct": date[2]=10; break;
							case "Nov": date[2]=11; break;
							case "Dec": date[2]=12; break;
						}
						
						//日付有info生成
						el.append("<dl id='generatedInfo"+ (i+1) +"' class='generatedInfo'><dt>"+date[3]+"."+date[2]+"."+date[1]+"</dt><dd><p><a href='"+ feedset.linkUrl +"' target='"+ feedset.target +"'>"+title+"</a></p></dd></dl>");
					}else {
						
						//日付無info場合
						el.children().append("<li id='generatedInfo"+ (i+1) +"' class='generatedInfo'><p><a href='"+ feedset.linkUrl +"' target='"+ feedset.target +"'>" + title + "</a></p></li>");
					}
				}
				
				//各アニメ設定に合わせて、クラスを追加。
				if(feedset.anime == "loop"){
					el.addClass("loopInfo");
					loopAnime();
				}else if (feedset.anime == "over"){
					el.addClass("overInfo");
					overAnime();
				}else if (feedset.anime == "trim"){
					el.addClass("trimInfo");
				}
			} catch(error) {
				el.append("<p>Feedの出力中にエラーが発生しました。<br />" + error.message +"</p>");
			}
		}else {
			el.append("<p>Feedの読み込みに失敗しました。<br />"+ result.error.message +"</p>")
		}
	});
}





function overAnime() {

		var moveel = "dl.generatedInfo dd p";

	/*$(moveel).each(function() {
		$(this).parent().click(function() {
			location.href = $(this).children().children().attr("href")
		});
		$(this).parent().css("cursor", "pointer");
	});*/
	
	
	$(moveel).hover(
		function(){
			
			var width = $(this).children().width();
			var time;
			

				time = width * 20;

			
			var wrapWidth = $(this).parent().width();
			if(width > wrapWidth){
				$(this).animate({left: "-" + width + "px"}, time, "linear", function(){
					$(this).css("left", 0);
				});
			}
		},
		function(){
			$(this).stop();
			$(this).css("left", 0);
		}
	);
}
