// ver 1.0 - HTMLからURLを取得して表示。WebOS Goodiesのサンプルを参考に。感謝。
// ver 1.1 - urlの&amp;を&に、url先頭の2文字でfeedの表示長を設定,該当するデータがないときの表示
// ver 1.2 - capture/capture-rightを追加 -->廃止
// ver 1.3 - captureに幅設定機能を追加
// ver 2.0 - インクリメンタルサーチ機能を統合
// var 2.1 - インクリメンタルサーチの表示件数上限を追加
// ver 2.3 - インクリメンタルサーチ中の表示位置機能を追加・改良
// ver 2.4 - インクリメンタルサーチをタグにも有効に
// ver 2.5 - Lightbox-light追加
// ver 2.6 - divのsrc属性に対応
// var 2.7 - widthの計算結果を四捨五入
// by jniino 2009/8/13

var s = new Array;
var c = new Array;
var subcol_inner;

function main()
{
	incremantalsearch();
	feedandcapture();
}

//インクリメンタルサーチ--------------------

function incremantalsearch() {
	document.sForm.search.style.color="#888";
	document.sForm.search.value="インクリメンタルサーチ";
	document.sForm.x.style.cursor="pointer";
	subcol_inner = document.getElementById('subcol_inner');

	var lis = document.getElementsByTagName('li');
	var l = lis.length;
	var i;
	var j = 0;


	for (i = 0; i < l; i++) {
		var e = lis[i];
			if ((e.className == "s1") ||(e.className == "s2")||(e.className == "s3")||(e.className == "s4")){
				s[j] = e;
				str = e.innerHTML;
				c[j] = str.substring(str.indexOf(">")+1,str.lastIndexOf("<")).toLowerCase();
				j = j + 1;
			}
	}
}

function isearch(pattern) {
	var length = s.length;
	var j1 = 0;
	var j2 = 0;
	var j3 = 0;
	var j4 = 0;
	var LIMIT = 20;

	for (var i = 0; i < length; i++) {
		if (c[i].indexOf(pattern)>-1){
			switch (s[i].className) {
				case "s1" : {
					if (j1 < LIMIT) s[i].style.display = "block"; 
						else s[i].style.display = "none";
					j1++; break;}
				case "s2" : {
					if (j2 < LIMIT) s[i].style.display = "block"; 
						else s[i].style.display = "none";
					j2++; break;}
				case "s3" : {
					if (j3 < LIMIT) s[i].style.display = "block"; 
						else s[i].style.display = "none";
					j3++; break;}
				case "s4" : {
					if (j4 < LIMIT) s[i].style.display = "block"; 
						else s[i].style.display = "none";
					j4++; break;}
				}
		} else s[i].style.display = "none";
	}


	if (pattern.length > 0)
		subcol_inner.style.display= "none";
	else
		subcol_inner.style.display= "block";
}

function on_focus() {
	if (document.sForm.search.value=="インクリメンタルサーチ") {
	document.sForm.search.value="";
	}
	document.sForm.search.style.color="#000";
}

function clearinput() {
	document.sForm.search.value="";
	document.sForm.search.style.color="#000";
	document.sForm.search.focus();
	isearch('');
}

//フィードとサムネイルの表示-------------------

function feedandcapture()
{
	var i;
	var s;

	divs = document.getElementsByTagName("div");

	for (i in divs) {
			s = divs[i].className;
			if (s){ // nullやundefinedでなければ
				if (s == 'feed') {
					fetch_feed(i); } else {
				if (s.indexOf('capture') != -1) {
					capture(i); }
				}
			}
		}
}

function capture(i) {
var src;
var width;
var widthxheight;
var cap;
var s;

src = divs[i].getAttribute("src")

	//src属性が設定されている？
	if (src) {
		width = parseInt(divs[i].getAttribute("width"));
		cap = divs[i].getAttribute("caption");
		
		//数字じゃないか、widthそのものが設定されていなければデフォルト160px
		if (isNaN(width)||(!width)) { width = 160; } 
		widthxheight = width+"x"+Math.round(width*0.75);
		s = '<a href="'+src+'"><img src="http://capture.heartrails.com/'+widthxheight+'/shorten?'+src+'" /></a><span class="caption">'+cap+'</caption>';
		
		divs[i].innerHTML = s;
		divs[i].style.width = (width+2)+"px";
	} else {
	//src属性が設定されていなければ旧処理
		capture2(i);
	}
}

function capture2(i) {
	var url;
	var cap;
	var widthxheight;
	var j;
	var s;
	var num;

	s = divs[i].innerHTML;
	//<span以前、以後を取り出す
	j = s.indexOf('<');
	url = s.substring(0,j);
	cap = s.substring(j,s.length);

	//URLの最初の3文字をnumに代入
	num = parseFloat(url.substr(0,3));

	if (isNaN(num)) { 
		// 数字じゃなかったら、デフォルト160px
		num = 160; } 
	else {
		// 数字だったらURLの最初の3文字を削る
		url = url.substr(3,url.length -3 );
	}

	widthxheight = num+"x"+Math.round(num*0.75);

	s = '<a href="'+url+'"><img src="http://capture.heartrails.com/'+widthxheight+'/shorten?'+url+'" /></a> '+cap;

	divs[i].innerHTML = s;
	divs[i].style.width = (num+2)+"px";;
}

function fetch_feed(i) {
	var url;
	var num;

	url = divs[i].innerHTML;
	url = url.replace(/&amp;/g, '&');

	//URLの最初の2文字をnumに代入
	num = parseFloat(url.substr(0,2));

	if (isNaN(num)) { 
		// 数字じゃなかったら、デフォルト10項目
		num = 10; } 
	else {
		// 数字だったらそれを項目数に。URLの最初の2文字を削る
		url = url.substr(2,url.length -2 );
	}

	//URL作成 Developer Keyが含まれているので、コピーして使わないでください。
	var requestURL = 'http://ajax.googleapis.com/ajax/services/feed/load?' + [
	'key=ABQIAAAAscd9zO_q5p96xPhxcyF7rBQ7MeuBe2eXD1bU-I2kF3HYkwEWHhT3MvOezuEwifHQQsUBzq_To_2njg',
	'q='+encodeURIComponent(url),
	'v=1.0',							// APIバージョン
	'output=json',				// データ形式
	'callback=disp_feed',	// コールバック関数
	'context=' + i,				// コールバック関数に渡すパラメータ。
	'num=' + num					// 取得するエントリの最大数
	].join('&');

	// SCRIPTタグを作成し、bodyに追加
	var e     = document.createElement('SCRIPT');
	e.type    = 'text/javascript';
	e.src     = requestURL;
	e.charset = 'UTF-8';
	document.body.appendChild(e);
}

// レスポンスを受け取った際のコールバック
function disp_feed(context, data, status, error) {
var result = [];

	if(status == 200) {
		// フィードの取得に成功したので、エントリを表示
		result.push('<ul>');
		var entries = data['feed']['entries'];
		for(var i = 0 ; i < entries.length ; ++i) {
			var entry = entries[i];
			result.push(
				'<li><a href="' + htmlEscape(entry.link) + '">' +
				htmlEscape(entry.title) + '</a></li>');
		}
		if (entries.length == 0) {result.push('<li>該当するデータはありませんでした</li>');}
		result.push('</ul>');
	} else {
		// エラーメッセージを表示
		result = [error];
	}
	divs[context].innerHTML = result.join('');
}

function htmlEscape(a) {
	a = a.replace(/&/g, '&amp;');
	a = a.replace(/</g, '&lt;').replace(/>/g, '&gt;');
	a = a.replace(/\"/g, '&quot;').replace(/\'/g, '&#39;');
	return a;
}

// lightbox-light
var st=0;
function lbonoff(p) {
	if (document.getElementById(p).style.display=="block") {
		document.getElementById(p).style.display="none";
		scroll(0,st);
	} else {
		st  = document.body.scrollTop  || document.documentElement.scrollTop;
		scroll(0,0);
		document.getElementById(p).style.display="block";
	}
}


