﻿/************************************************************
Googleニュース表示用Javascript
Copyright (C) 2011 Value Promotion Inc. All Rights Reserved.
*************************************************************/

// 表示用変数を設定
var searchKwd	= '(腎移植 腎臓 移植 臓器移植) -病気腎 -病気腎移植';			// 検索するキーワード
var dispCnt		= 5;						// 表示する記事数(8件まで)
google.load('search', '1');  

var newsList;	// ソート後のニュース一覧

function initialize(){  
	var searcher = new google.search.NewsSearch();  
	searcher.setResultSetSize(google.search.Search.LARGE_RESULTSET);
	searcher.setSearchCompleteCallback(searcher, searchComplete, null);  
	searcher.execute(searchKwd); 
}

function searchComplete(){
	// 検索結果をソート
	sortList(this.results);

	// 画面表示
	showSearchResults(newsList);
}

// 検索結果を更新日の降順でソート
function sortList(searchResults) {
	newsList = new Array();

	// 検索結果をメンバ変数にコピー
	for (var i in searchResults) {
		newsList.push(searchResults[i]);
	}
	
	// ソート実行
	var c1, c2;
	var tmp;
	for (c1 = 0; c1 < newsList.length-1; c1++) {
		for (c2 = 0; c2 < newsList.length-c1-1; c2++) {
			if (convertDate2(newsList[c2].publishedDate) < convertDate2(newsList[c2+1].publishedDate)) {
				tmp = newsList[c2];
				newsList[c2]   = newsList[c2+1];
				newsList[c2+1] = tmp;
			}
		}
	}
}


// 検索結果を表示
function showSearchResults(searchResults){  
	if (searchResults && searchResults.length > 0) {  
		for (var i = 0; i < dispCnt; i++) {  
			if (i == searchResults.length) {
				break;
			}

			var result=searchResults[i];
			drawArticle(result);
		}
	} else {
		document.write('表示可能なニュースがありません');
	}
}

// 記事を表示
function drawArticle(objArticle) {
	if (!objArticle.content) {
		return;
	}

	var strArticle = "";

	strArticle +=   '<dt><span>' + convertDate(objArticle.publishedDate) + '</span></dt>' +
                        '<dd><span class="title"><a href="' + objArticle.unescapedUrl + '" target="_blank">' + objArticle.titleNoFormatting + '</a></span>' +
                        '<p class="txt">';
	if (objArticle.image) {
               strArticle += '<a href="' + objArticle.unescapedUrl + '" target="_blank"><img src="' + objArticle.image.tbUrl + '" style="height:65px" /></a>';
	}
	strArticle +=   objArticle.content.replace(/<\/?[a-z]+>/ig,"").substring(0,70) + " ...</p>";

	document.getElementById("googleNews")

	var articleNode = document.createElement('dl');
	articleNode.className = "top_list";
	articleNode.innerHTML = strArticle;
	document.getElementById("googleNews").appendChild(articleNode);
}


// 表示用に日付を抽出して変換（例：Fri, 20 Aug 2010 20:52:58 -0700→08/21）
function convertDate(prm) {
	var pdate = new Date(prm);
	var pday = pdate.getDate();
	var pmonth = pdate.getMonth() + 1;
	var pyear = pdate.getFullYear();
	var phour = pdate.getHours();
	var pminute = pdate.getMinutes();
	var psecond = pdate.getSeconds();

	var strMonth = pmonth + '';
	if (strMonth.length == 1) {
		strMonth = '0' + strMonth;
	}
	var strDay = pday + '';
	if (strDay.length == 1) {
		strDay = '0' + strDay;
	}

	strDate = strMonth + "/" + strDay;
	return strDate;
}

// ソート用に日付を抽出して変換（例：Fri, 20 Aug 2010 20:52:58 -0700→2010/08/20 20:52:58）
function convertDate2(prm) {
	var strDate;
	
	if (!prm) {
		return '';
	}

	var aryStr = prm.split(' ');
	if (!aryStr || aryStr == null || aryStr.count == 0) {
		return '';
	}
	
	strDate = aryStr[3] + '/';
	
	switch (aryStr[2]) {
		case 'Jan' :
			strDate = strDate + '01/';
			break;
		case 'Feb' :
			strDate = strDate + '02/';
			break;
		case 'Mar' :
			strDate = strDate + '03/';
			break;
		case 'Apr' :
			strDate = strDate + '04/';
			break;
		case 'May' :
			strDate = strDate + '05/';
			break;
		case 'Jun' :
			strDate = strDate + '06/';
			break;
		case 'Jul' :
			strDate = strDate + '07/';
			break;
		case 'Aug' :
			strDate = strDate + '08/';
			break;
		case 'Sep' :
			strDate = strDate + '09/';
			break;
		case 'Oct' :
			strDate = strDate + '10/';
			break;
		case 'Nov' :
			strDate = strDate + '11/';
			break;
		case 'Dec' :
			strDate = strDate + '12/';
			break;
		default :
			return '';
	}
	
	strDate = strDate + aryStr[1] + ' ';
	strDate = strDate + aryStr[4];
	return strDate;
}

google.setOnLoadCallback(initialize);

