// ================================================================
// クチコミクリップ JavaScript
// (C)2008 Current. Inc. All rights reserved.
// ※変更可能な値は「※変更可能」で検索してください。
// ================================================================

// アラート機能：アラートのHTML
// ※変更可能
var kc_alert_html='<img src="images/alert.gif" width="320" height="48" alt="このリンクは外部サイトを参照しています。サイト内容については保証できませんのでご了承ください。" border="0" />';

// ニュースマーカー機能：マーカーのHTML
// ※変更可能
var kc_nm_addHTML='<span class="kc_nm"><img src="img/new.gif" width="30" height="18" alt="新着のエントリー" border="0" align="absmiddle" /></span>';

// ニュースマーカー機能：日時の正規表現
// ※変更可能
// ※（左から）年・月・日・時・分
var kc_nm_patternDate=/(\d{2,4}).+?(\d{1,2}).+?(\d{1,2}).+?(\d{1,2}).+?(\d{1,2})/;

// プルダウン機能：もっと見るボタンのHTML
// ※変更可能
var kc_pulldown_addHTML_more='<img src="img/pulldown1.jpg" width="143" height="40" alt="もっと見る" border="0" />';

// プルダウン機能：上に戻るボタンのHTML
// ※変更可能
var kc_pulldown_addHTML_top='<img src="img/pulldown2.jpg" width="143" height="40" alt="上に戻る" border="0" />';

// エントリーポイント
var kc_onload=window.onload;
window.onload=function()
{
	if(kc_onload)
	{
		kc_onload();
	}
	if(document.getElementById('kc'))
	{
		document.getElementById('kc').innerHTML=kc_main();
	}
	if(kc_tc_power)
	{
		kc_tc_click(0,'');
	}
};

// 主要処理
// 返り値 ：HTML
var kc_entry_num=0;
var kc_tc_entries=[];
var kc_tc_entries_lower=[];
function kc_main()
{
	var html='';
	if(typeof kc_name=='undefined'
	|| typeof kc_words=='undefined'
	|| typeof kc_entries=='undefined')
	{

		// 不具合発生時のHTML
		// ※変更可能
		html='<div class="lead">サーバメンテナンスのため、このコンテンツは閲覧できません。<br />お手数ですが、しばらく経ってから再度アクセスしてください。</div>';
		return html;

	}
	kc_words=kc_words.replace(/^\||\|(?=\|)|\|$/g,'');
	kc_entry_num=kc_entries.length;

	// 接続成功時のHTML
	// ※変更可能
	//html+='<h2>'+kc_name+'に関係するクチコミを'+kc_entry_num+'件ご紹介します。</h2>';

	// エントリーの取得
	var e=document.getElementsByTagName('div');
	for(var i=0; i<kc_entry_num; i++)
	{
		var entry_title=kc_entries[i][0];
		var entry_body=kc_entries[i][3];
		kc_tc_entries.push([entry_title,entry_body]);
		kc_tc_entries_lower.push([entry_title.toLowerCase(),entry_body.toLowerCase()]);
	}
	var entry_num=kc_tc_entries.length;

	// タグクラウドの処理
	if(kc_tc_power)
	{

		// タグ数の再取得
		kc_tc_nums=[];
		for(var i=0; i<entry_num; i++)
		{
			for(var tag_name in kc_tc_names)
			{
				var c=0;
				var p=0;
				while((p=kc_tc_entries_lower[i][0].indexOf(tag_name,p))!=-1)
				{
					c++;// ※「c=1」で記事単位。
					p++;
				}
				p=0;
				while((p=kc_tc_entries_lower[i][1].indexOf(tag_name,p))!=-1)
				{
					c++;// ※「c=1」で記事単位。
					p++;
				}
				if(kc_tc_nums[tag_name])
				{
					kc_tc_nums[tag_name]+=c;
				}
				else
				{
					kc_tc_nums[tag_name]=c;
				}
			}
		}

		// 最多タグ
		var tag_most=0;
		for(var tag_name in kc_tc_names)
		{
			if(tag_most<kc_tc_nums[tag_name])
			{
				tag_most=kc_tc_nums[tag_name];
			}
		}

		// タグクラウドのHTML
		var tag_num=0;
		if(kc_tc_min_num>0)
		{
			for(var tag_name in kc_tc_names)
			{
				tag_num++;
			}
		}
		if(kc_tc_min_num<=tag_num)
		{

			// タグクラウド上部のHTML
			// ※変更可能
			html+='<div id="kc_tc_cloud"><img src="img/tag_bg_top.jpg" width="615" height="12" alt="" border="0" /><div id="kc_tc_middle">';

			var i=0;
			for(var tag_name in kc_tc_names)
			{
				var a=kc_tc_nums[tag_name]/tag_most;
				var ga_tag=kc_tc_names[tag_name].replace(/\//g,'／').replace(/'/g,'’').replace(/"/g,'”');

				// タグのHTML
				// ※変更可能
				html+='<span id="kc_tc_tag_'+(i+1)+'" class="kc_tc_tag_off"><a href="javascript:kc_tc_click('+(i+1)+',\''+tag_name+'\');focus();" class="kc_tc_name" style="font-size:'+(a*100+100)+'%;line-height:'+(275-(a*100+100))+'%;"'+(kc_ga ? ' onclick="pageTracker._trackPageview(\'/kc/tagcloud/'+ga_tag+'\');"' : '')+'>'+kc_tc_names[tag_name]+'</a><span class="kc_tc_num">('+kc_tc_nums[tag_name]+')</span></span>';

				i++;
			}

			// 「全てのタグ」とタグクラウド下部のHTML
			// ※変更可能
			html+='<span id="kc_tc_tag_0" class="kc_tc_tag_off"><a href="javascript:kc_tc_click(0,\'\');focus();" class="kc_tc_name" style="border:none;background:none;"><img src="img/all.gif" width="60" height="20" alt="全てのタグ" style="margin:0 0 -6px 0;" /></a></span><p class="tag_about">※ブログ一覧に多く出現したキーワードを一覧しております。キーワードは、多く出現するほど大きく表示され、キーワードをクリックいただくと、キーワードが含まれるブログが一覧されます。 </p></div><img src="img/tag_bg_bottom.jpg" width="615" height="20" alt="" border="0" /></div>';

		}

	}

	// エントリーの生成
	// ※変更可能
	html+='<img src="img/kc_bg_top.jpg" width="615" height="12" alt="" border="0" /><ul>';
	var kc_nm_today=new Date().getTime();
	for(var i=0; i<kc_entry_num; i++)
	{

		// 投稿日時のフォーマット
		// ※変更可能
		var m=kc_entries[i][2].match(/(\d+)-0?(\d+)-0?(\d+)T(\d+):(\d+):(\d+)/);
		kc_entries[i][2]=m[1]+'年'+m[2]+'月'+m[3]+'日　'+m[4]+'：'+m[5];

		// 検索語の強調
		// ※変更可能
		kc_entries[i][3]=kc_entries[i][3].replace(eval('/('+kc_words+')/gi'),'<strong>$1</strong>');

		// ニュースマーカーの作成
		var kc_nm_html=kc_entries[i][2];
		if(kc_nm)
		{
			var m=kc_nm_html.match(kc_nm_patternDate);
			if(m)
			{
				var day=new Date(m[1],m[2]-1,m[3],m[4],m[5],0).getTime();
				if((kc_nm_today-day)<(86400000*kc_nm_targetDays))
				{
					kc_nm_html+=kc_nm_addHTML;
				}
			}
		}

		// エントリーのHTML
		// ※変更可能
		var ga_url=kc_entries[i][0].replace(/\//g,'／').replace(/'/g,'’').replace(/"/g,'”');
		html+='<li id="kc_entry_'+i+'"><div class="title"><a href="'+kc_entries[i][1]+'" target="_blank" id="kc_entry_title_'+i+'"'+(kc_alert ? ' onmouseover="kc_alert_on('+i+');" onmouseout="kc_alert_off('+i+');"' : '')+(kc_ga ? ' onclick="pageTracker._trackPageview(\'/kc/outgoing/'+ga_url+'\');"' : '')+'>'+kc_entries[i][0]+'</a></div>'+(kc_alert ? '<div class="kc_alert" id="kc_alert_'+i+'"></div>' : '')+'<div id="kc_entry_body_'+i+'" class="body">'+kc_entries[i][3]+'</div><div class="time"><span class="kc_day">'+kc_nm_html+'</span></div></li>';

	}

	// エントリー下部のHTML
	// ※変更可能
	html+='</ul>';

	if(kc_pulldown)
	{

		// プルダウントリガーのHTML
		// ※変更可能
		html+='<div class="kc_foot"><div id="kc_pulldown_more" onmouseover="kc_pulldown_run();"><a href="#top"></a></div><img src="img/ate.jpg" width="521" height="16" alt="このリンクは外部サイトを参照しております。サイトの内容については保証できませんので、ご了承ください。" style="margin-top:5px;margin-bottom:15px;"/><br /><a href="http://www.current.co.jp/kuchikomi_clip/" target="_blank"><img src="img/kc_150_c.gif" width="150" height="15" alt="powered by クチコミクリップ" /></a></div>';

	}
	return html;
}

// アラートを表示する
// 第1引数：「div#kc_alert_X」のX
function kc_alert_on(no)
{
	var div=document.getElementById('kc_alert_'+no);
	div.innerHTML=kc_alert_html;
	div.style.display='inline';
}

// アラートを非表示にする
// 第1引数：「div#kc_alert_X」のX
function kc_alert_off(no)
{
	var div=document.getElementById('kc_alert_'+no);
	div.style.display='none';
	div.innerHTML='';
}

// プルダウントリガーをクリックした時の処理
// 第1引数：最大エントリー数
var kc_pulldown_no=0;
var kc_pulldown_more_isabled=true;
function kc_pulldown_run()
{
	if(kc_pulldown_more_isabled)
	{
		for(var i=kc_pulldown_no,j=0; i<kc_entry_num && j<kc_pulldown_entry_num; i++)
		{
			var li=document.getElementById('kc_entry_'+i);
			if(li.kc_visible)
			{
				li.style.display='block';
				j++;
			}
		}
		kc_pulldown_no=i;
		for(var i=kc_pulldown_no+1,k=false; i<kc_entry_num; i++)
		{
			var li=document.getElementById('kc_entry_'+i);
			if(li.kc_visible && li.style.display!='block')
			{
				k=true;
				break;
			}
		}
		if(!k)
		{
			var more=document.getElementById('kc_pulldown_more');
			kc_pulldown_more_isabled=false;
			more.firstChild.innerHTML=kc_pulldown_addHTML_top;
		}
	}
}

// タグをクリックした時の処理
// 第1引数：タグの番号
// 第2引数：タグの名前
// 第3引数：エントリーの最大数
var kc_tc_no_pre=-1;
function kc_tc_click(tag_no,tag_name)
{
	if(kc_tc_power)
	{

		// 前回のタグの不可視化
		if(kc_tc_no_pre!=-1)
		{
			var a=document.getElementById('kc_tc_tag_'+kc_tc_no_pre);
			a.className='kc_tc_tag_off';
		}
		kc_tc_no_pre=tag_no;

		// 今回のタグの可視化
		var a=document.getElementById('kc_tc_tag_'+tag_no);
		if(a)
		{
			a.className='kc_tc_tag_on';
		}

	}

	// 今回のタグを含むエントリーの可視化
	// 今回のタグを含まないエントリーの不可視化
	var re=eval('/'+tag_name+'/');
	for(var i=0,j=0,k=0,l=0; i<kc_entry_num; i++)
	{
		var li=document.getElementById('kc_entry_'+i);
		var entry_title=document.getElementById('kc_entry_title_'+i);
		var entry_body=document.getElementById('kc_entry_body_'+i);
		entry_title.innerHTML=kc_tc_entries[i][0];
		entry_body.innerHTML=kc_tc_entries[i][1];
		if(!tag_name
		|| kc_tc_entries_lower[i][0].indexOf(tag_name)!=-1
		|| kc_tc_entries_lower[i][1].indexOf(tag_name)!=-1)
		{
			li.kc_visible=true;
			k++;

			// タグの強調
			// ※変更可能
			if(tag_name)
			{
				entry_title.innerHTML=entry_title.innerHTML.replace(eval('/('+tag_name+')/gi'),'<i>$1</i>');
				entry_body.innerHTML=entry_body.innerHTML.replace(eval('/('+tag_name+')/gi'),'<i>$1</i>');
			}

			if(!kc_pulldown || (kc_pulldown && (j<kc_pulldown_entry_num || j<kc_pulldown_entry_num_start)))
			{
				li.style.display='block';
				j++;
				l=i;
			}
			else
			{
				li.style.display='none';
			}
		}
		else
		{
			li.kc_visible=false;
			li.style.display='none';
		}
	}

	// プルダウントリガーの表示／非表示
	if(kc_pulldown)
	{
		var more=document.getElementById('kc_pulldown_more');
		if(more)
		{
			if(k>kc_pulldown_entry_num && k>kc_pulldown_entry_num_start)
			{
				kc_pulldown_more_isabled=true;
				more.firstChild.innerHTML=kc_pulldown_addHTML_more;
				kc_pulldown_no=l+1;
			}
			else
			{
				kc_pulldown_more_isabled=false;
				more.firstChild.innerHTML=kc_pulldown_addHTML_top;
			}
		}
	}

}
