/*@cc_on _d=document; eval('var document=_d');@*/
/***********************************************************
 * feeds.js
 * ver 1.2.2
 * update log
 * ・追記・書き換えモードの選択を追加 - 2008.1.29 ver 1.2.2
 * ・画像1枚の表示 - 2007.12.13 ver 1.2.1
 ***********************************************************
/*********
 * 記事の表示設定
 */
(function ()
{
	var SetBlog = {
		rss_atom : 'http://rss.exblog.jp/rss/exblog/parens/index.xml' , // 取得するブログフィードのURL（必須）
		targetId : 'feed_area' , // フィード内容を表示させるHTMLタグのid属性（必須）
		MaxEntry : '5' , // エントリー表示の最大数（数値指定又は''…''の場合は全ての記事を取得）
		TitleMax : '18',
		TextMax  : '150' , // 本文の文字数（数値指定又は''…''の場合は全ての記事内容を取得）
		DataMax  : '300' , // 日付・タイトル・本文を含む全体の文字数を固定（数値指定又は''…''の場合は固定しない）
		isCRLF   : 'NO' ,  // 記事の改行を有効にする（YES/NO）
		isCate   : 'NO' , // カテゴリでフィードを取得する（YES/NO）
		isImage  : 'NO' , // 記事内の画像1点を抜き出す（YES/NO）
		DF:{
			Year : '/',  // 年のフォーマット
			Month: '/',  // 月のフォーマット
			Day  : ''   // 日のフォーマット
		},
		DS:{
			"year": 'YES',   // 年を表示する
			"month": 'YES', // 月を表示する
			"day": 'YES'    // 日を表示する
		},
		loading_image : 'images/loading.gif', // 読み込み中表示用画像へのパス
		loading_Alt   : 'NOW LOADING', // 読み込み画像がない場合に表示される代替テキスト
		putHtml:function (DATE,TITLE,TEXT,URL,IMAGE,CATEGORY) {
		/*********
		 * 表示記事本文の設定
		 * 以下は記事から取得する内容
		 * DATE  : 日付
		 * TITLE : タイトル
		 * TEXT  : 記事本文
		 * URL   : 記事へのリンク+
		 */
			var tmpHtml = '<p id="blog_entry_date">'+DATE+'<h3 id="blog_entry_title"><a href="'+URL+'" target="_blank">'+TITLE+'</a></h3></p>\n';
			return tmpHtml;
		}
	};

	var SetEvent = {
		rss_atom : 'http://rss.exblog.jp/rss/exblog/parens/index.xml' , // 取得するブログフィードのURL（必須）
		targetId : 'feed_area_event' , // フィード内容を表示させるHTMLタグのid属性（必須）
		MaxEntry : '1' , // エントリー表示の最大数（数値指定又は''…''の場合は全ての記事を取得）
		TitleMax : '18',
		TextMax  : '50' , // 本文の文字数（数値指定又は''…''の場合は全ての記事内容を取得）
		DataMax  : '300' , // 日付・タイトル・本文を含む全体の文字数を固定（数値指定又は''…''の場合は固定しない）
		isCRLF   : 'NO' ,  // 記事の改行を有効にする（YES/NO）
		isCate   : 'YES' , // カテゴリでフィードを取得する（YES/NO）
		isImage  : 'YES' , // 記事内の画像1点を抜き出す（YES/NO）
		DF:{
			Year : '/',  // 年のフォーマット
			Month: '/',  // 月のフォーマット
			Day  : ''   // 日のフォーマット
		},
		DS:{
			"year": 'YES',   // 年を表示する
			"month": 'YES', // 月を表示する
			"day": 'YES'    // 日を表示する
		},
		loading_image : 'images/loading.gif', // 読み込み中表示用画像へのパス
		loading_Alt   : 'NOW LOADING', // 読み込み画像がない場合に表示される代替テキスト
		putHtml:function (DATE,TITLE,TEXT,URL,IMAGE,CATEGORY) {
		/*********
		 * 表示記事本文の設定
		 * 以下は記事から取得する内容
		 * DATE  : 日付
		 * TITLE : タイトル
		 * TEXT  : 記事本文
		 * URL   : 記事へのリンク+
		 */
			var tmpHtml = '<p id="blog_entry_date">【'+CATEGORY+'】</p><h3 id="blog_entry_title"><a href="'+URL+'" target="_blank">'+TITLE+'</a></h3><div id="blog_entry_img">'+IMAGE+'</div><p id="blog_entry_txt"><a href="'+URL+'" target="_self">'+TEXT+'<br>（'+DATE+'）<br>>>続きを読む</a></p>\n';
			return tmpHtml;
		},
		category:["イベント"]
	};

	var SetCanpain = {
		rss_atom : 'http://rss.exblog.jp/rss/exblog/parens/index.xml' , // 取得するブログフィードのURL（必須）
		targetId : 'feed_area_campain' , // フィード内容を表示させるHTMLタグのid属性（必須）
		MaxEntry : '1' , // エントリー表示の最大数（数値指定又は''…''の場合は全ての記事を取得）
		TitleMax : '18',
		TextMax  : '50' , // 本文の文字数（数値指定又は''…''の場合は全ての記事内容を取得）
		DataMax  : '300' , // 日付・タイトル・本文を含む全体の文字数を固定（数値指定又は''…''の場合は固定しない）
		isCRLF   : 'NO' ,  // 記事の改行を有効にする（YES/NO）
		isCate   : 'YES' , // カテゴリでフィードを取得する（YES/NO）
		isImage  : 'YES' , // 記事内の画像1点を抜き出す（YES/NO）
		DF:{
			Year : '/',  // 年のフォーマット
			Month: '/',  // 月のフォーマット
			Day  : ''   // 日のフォーマット
		},
		DS:{
			"year": 'YES',   // 年を表示する
			"month": 'YES', // 月を表示する
			"day": 'YES'    // 日を表示する
		},
		loading_image : 'images/loading.gif', // 読み込み中表示用画像へのパス
		loading_Alt   : 'NOW LOADING', // 読み込み画像がない場合に表示される代替テキスト
		putHtml:function (DATE,TITLE,TEXT,URL,IMAGE,CATEGORY) {
		/*********
		 * 表示記事本文の設定
		 * 以下は記事から取得する内容
		 * DATE  : 日付
		 * TITLE : タイトル
		 * TEXT  : 記事本文
		 * URL   : 記事へのリンク+
		 */
			var tmpHtml = '<p id="blog_entry_date">【'+CATEGORY+'】</p><h3 id="blog_entry_title"><a href="'+URL+'" target="_blank">'+TITLE+'</a></h3><div id="blog_entry_img">'+IMAGE+'</div><p id="blog_entry_txt"><a href="'+URL+'" target="_self">'+TEXT+'<br>（'+DATE+'）<br>>>続きを読む</a></p>\n';
			return tmpHtml;
		},
		category:["最新情報"]
	};


	var CreateFeeds = function (settings)
	{
		/*********
		 * カテゴリ表示を使用する場合カテゴリを指定する（複数指定可）
		 * 例）複数のカテゴリを指定する場合は、下記のようにカテゴリを指定します。
		 * var category = ["カテゴリ1","カテゴリ2","カテゴリ3"];
		 * ※一番最後の指定の後ろには「,」は入れないで下さい。
		 */
		//var category = ["イベント","キャンペーン"];






		/***********************************************************
		 * @@ feed取得処理の開始
		 */
		var conteiner = document.getElementById(settings.targetId);
		var Loading;
		if(settings.loading_image != "") {
			Loading = document.createElement('img');
			Loading.setAttribute('src',settings.loading_image);
		} else {
			Loading = document.createElement('p');
			Loading.style.textAlign = 'center';
			Loading.appendChild(document.createTextNode(settings.loading_Alt));
		}
		conteiner.appendChild(Loading);
		conteiner.style.display = 'block';

		google.load("feeds", "1");

		function initialize()
		{
			var feed = new google.feeds.Feed(settings.rss_atom); // キャッシュ対策　フィード取得時にクエリ送信
			var entrysMax = 100;

			feed.setNumEntries(entrysMax); // feed最大数の指定（MAX250まで）

			feed.load( function(result) {
				if (!result.error) {
					var isEntry,entryAllData,arrEntrys,sEnTitle,sEnURL,sEnText,sEnDate,nEntryNum,sEnAuthor,sHtmlPool,isTrimText;
					sHtmlPool = '';
					entryAllData = result.feed.entries.length;
					getFeedCnt = 0;
					for (var nECnt = 0; nECnt < entryAllData; nECnt++) {
						isEntry = 'false';
						arrEntrys = result.feed.entries[nECnt];
						if(settings.isCate == 'YES')
						{
							for(var nCnt=0; nCnt<settings.category.length; nCnt++) {
								if(arrEntrys.categories == settings.category[nCnt])
								{
									isEntry = 'true';
								}
							}
						} else {
							isEntry = 'true';
						}

						if (settings.MaxEntry != "" && isEntry == 'true') {
							if(settings.MaxEntry <= getFeedCnt) {
								isEntry = 'false';
								break;
							}
						}

						if(isEntry == 'true') {

							sEnURL   = arrEntrys.link;
							sEnTitle = arrEntrys.title;
							sEnAuthor = arrEntrys.author;
							if(sEnAuthor == "rssad.jp" || sEnAuthor == "")
							{
								continue;
							}

							sEnText  = arrEntrys.content;
							if(settings.isImage == 'YES')
							{
								sImage = sEnText.match(/<img .*?>/);
								if(sImage == null)
								{
									sImage = '';
								}
								else
								{
									sImage = '' + sImage; // 文字列にObj扱いのsImageを変更
									sImage = sImage.match(/(\w+):\/\/([\w.]+)\/(\S*)/);
									sImage = sImage[0].replace(/\W$/,"");
									sImage = '<img src="' + sImage + '" alt="'+sEnTitle+'" />'
								}
							}
							if(typeof(sImage) == 'undefined')
							{
								sImage = '';
							}
							sEnText  = sEnText.replace(/<br>/gi,"\n");
							sEnText  = sEnText.replace(/<br\/>/gi,"\n");
							sEnText  = sEnText.replace(/<br \/>/gi,"\n");
							sEnText  = sEnText.replace(/<.*?>/gi, "");
							sEnText  = sEnText.replace(/\r\n/gi,"");
							sEnText  = sEnText.replace(/\r/gi,"");
							if (settings.isCRLF == 'YES') {
								sEnText  = sEnText.replace(/\n/gi,"<br />");
								sEnText  = sEnText.replace(/[<br \/>]{2,}/gi,"<br />");
							} else {
								sEnText  = sEnText.replace(/\n/gi,"");
							}
							if (settings.TextMax != '') {
								if (sEnText.length > parseInt(settings.TextMax)) {
									sEnText = sEnText.substring(0,parseInt(settings.TextMax));
									isTrimText = 'true';
								}
							}

							var dateObj = new Date(arrEntrys.publishedDate);
							var nYear = dateObj.getFullYear();
							var nMonth = dateObj.getMonth() + 1;
							var nDay = dateObj.getDate();

							nMonth = nMonth + ''; nDay = nDay + '';
							if(nDay.length == 1) {
								nDay = '0' + nDay;
							}
							if(nMonth.length == 1) {
								nMonth = '0' + nMonth;
							}
							sEnDate = "";
							if(settings.DS.year == 'YES')
							{
								sEnDate = nYear + settings.DF.Year;
							}
							if(settings.DS.month == 'YES')
							{
								sEnDate = sEnDate + nMonth + settings.DF.Month;
							}
							if(settings.DS.month == 'YES')
							{
								sEnDate = sEnDate + nDay + settings.DF.Day;
							}
							if(settings.TitleMax != "" && parseInt(settings.TitleMax) > 0)
							{
								if(sEnTitle.length > parseInt(settings.TitleMax))
								{
									var tmpLen = sEnTitle.length - parseInt(settings.TitleMax) + 2;
									sEnTitle = sEnTitle.substring(0,sEnTitle.length - parseInt(tmpLen));
									sEnTitle = sEnTitle + '…';
								}
							}
							if(settings.DataMax != "" && parseInt(settings.DataMax) > 0) {
								var tmpDateLen  = sEnDate.length;
								var tmpTitleLen = sEnTitle.length;
								var tmpTextLen  = sEnText.length;
								var TotalLen = tmpDateLen + tmpTitleLen + tmpTextLen;
								if(TotalLen > parseInt(settings.DataMax)) {
									patchLen = TotalLen - parseInt(settings.DataMax);
									sEnText = sEnText.substring(0,sEnText.length - parseInt(patchLen));
									isTrimText = 'true';
								}
							}
							if(isTrimText == 'true') {
								sEnText = sEnText + '…';
							}
							sHtmlPool += settings.putHtml(sEnDate,sEnTitle,sEnText,sEnURL,sImage,arrEntrys.categories);
							getFeedCnt = getFeedCnt + 1;
						}
					}
					conteiner.removeChild(Loading);
					conteiner.innerHTML += sHtmlPool;
					conteiner.style.display = 'block';
				}
			});
		}

		google.setOnLoadCallback(initialize);
	};

new CreateFeeds(SetBlog);
new CreateFeeds(SetEvent);
new CreateFeeds(SetCanpain);
})();
