/*
 ****************************************************************************
 * File : prototype.ajax.js
 * Copyright (C) 2005-2008 http://bizcaz.com/ All rights reserved.
 ****************************************************************************
*/
var ajaxloader = ['http://kodakara.com/mt_memo/css/tubes/', 'ajax-loader.gif'].join('');

function safari_escape(req)
{
	var text = req.responseText;

	if (navigator.appVersion.indexOf("KHTML") > -1) {
		var esc = escape(text);

		if (esc.indexOf("%u") < 0 && esc.indexOf("%") > -1) {
			text = decodeURIComponent(esc);
		}
	}

	return text;
}

function show_ajaxloader(elem, enable)
{
	if (enable) {
		elem.innerHTML        = '';
		elem.style.height     = '100px';
		elem.style.background = 'transparent url('+ajaxloader+') no-repeat center center';
	}
	else {
		elem.style.height     = 'auto';
		elem.style.background = 'none';
	}
}

function clear_block(divId)
{
	$(divId).innerHTML = '';
}
/* -------------------------------------------------------------------------- */
/* - Related Ajax Comment Post/Preview/Ref									- */
/* -------------------------------------------------------------------------- */
/* - ajaxcomment_insert_ref()												- */
/* - ajaxcomment_post()														- */
/* -------------------------------------------------------------------------- */
var ajaxcomment_divid = 'comment_results';
var ajaxcomment_cgi   = ['http://kodakara.com/mt4/', 'mt-comments.cgi'].join('');

function ajaxcomment_insert_ref(divId, n, name)
{
	var elem = $(divId);

	elem.focus();

	if (elem.value == "Leave your comment here.") {
		elem.value = '';
	}

	elem.value += ">>" + n + " " + name + " さん\n";
}

function ajaxcomment_post(divId)
{
	ajaxcomment_divid = divId;
	show_ajaxloader($(ajaxcomment_divid), true);

	var form = document.getElementById('comments-form');
	if (form.bakecookie.checked) rememberMe(form);

	var pars = Form.serialize('comments-form')+'&post=post';
	new Ajax.Request(ajaxcomment_cgi, {
					method: 'post',
					parameters: pars,
					onComplete: function (req) {
						if (0 < req.responseText.indexOf('DOCTYPE', 0)||'' == req.responseText) {
							document.location.reload();
						}
						else {
							if (0 < req.responseText.indexOf('Thank you for commenting', 0)) {
								$('comments-form').style.display = 'none';
							}

							var divid = $(ajaxcomment_divid);
							show_ajaxloader(divid, false);
							divid.innerHTML = req.responseText;
						}
					}
				});
	return false;
}

function ajaxcomment_preview(divId)
{
	ajaxcomment_divid = divId;
	show_ajaxloader($(ajaxcomment_divid), true);

	var pars = Form.serialize('comments-form')+'&preview=preview';
	new Ajax.Request(ajaxcomment_cgi, {
					method: 'post',
					parameters: pars,
					onComplete: function (req) {
						var elem = $(ajaxcomment_divid);
						show_ajaxloader(elem, false);
						elem.innerHTML = req.responseText;
					}
				});
	return false;
}
/* -------------------------------------------------------------------------- */
/* - Related Ajax Search													- */
/* -------------------------------------------------------------------------- */
/* - ajaxsearch_contents()													- */
/* -------------------------------------------------------------------------- */
var ajaxsearch_cgi = ['http://kodakara.com/mt4/', 'mt-search.cgi'].join('');

function ajaxsearch_contents()
{
	show_ajaxloader($('search_results'), true);
	new Effect.ScrollTo($('content'));

	var pars = Form.serialize('search_form');

	new Ajax.Request(ajaxsearch_cgi, {
					method: 'get',
					parameters: pars,
					onComplete: function (req) {
						var elem = $('search_results');
						show_ajaxloader(elem, false);
						elem.innerHTML = safari_escape(req);
					}
				});
}
/* -------------------------------------------------------------------------- */
/* - Related Ajax Load Contents 											- */
/* -------------------------------------------------------------------------- */
/* - ajaxload_content()														- */
/* -------------------------------------------------------------------------- */
var ajaxload_divid = '';

function ajaxload_content(url, pars, divId)
{
	ajaxload_divid = divId;
	show_ajaxloader($(ajaxload_divid), true);
	new Ajax.Request(url, {
					method: 'get',
					parameters: pars,
					onComplete: function(req) {
						var elem = $(ajaxload_divid);
						show_ajaxloader(elem, false);
						elem.innerHTML = safari_escape(req);
					}
				});
	return false;
}
/* -------------------------------------------------------------------------- */
/* - Related Access Page Ranking											- */
/* -------------------------------------------------------------------------- */
/* - pagerank_fix_date()													- */
/* - pagerank_set_cookie()													- */
/* - pagerank_get_cookie()													- */
/* - pagerank_clear_cookie()												- */
/* - pagerank_get_datestr() 												- */
/* - pagerank_check_cookie()												- */
/* - pagerank_view()														- */
/* -------------------------------------------------------------------------- */
/*
 * Cookie有効／無効フラグ(0:無効、1:有効)
 * ※Cookieを無効にすると、ページにアクセスされるたびにカウントアップされます。
 *	 また、当然PHPスクリプトはその都度実行されます。
 */
var pagerank_enable_cookie = 1;
/*
 * アクセスログを取りたいブログID
 */
var pagerank_blogid = 1;
/*
 * アクセスランキングを表示するIDタグ名称
 */
var pagerank_view_box = 'pagerank_viewer';
/*
 * ブログ URL(index.html がある場所)／アップロード先相対パス
 */
var pagerank_blog_url = 'http://kodakara.com/';
/*
 * アクセスログ保存／表示スクリプト
 */
var pagerank_post_url = ['http://kodakara.com/mt_memo/js/prototype/', 'pagerank/rank_post.php'].join('');
var pagerank_view_url = ['http://kodakara.com/mt_memo/js/prototype/', 'pagerank/rank_view.php'].join('');
/*
 * 任意ページ除外フラグ(0:カウント、1:除外)
 */
var pagerank_exclude = 0;
/*
 * ランキング表示数
 * ※上位何位まで表示するか設定します。0を指定するとすべて表示します。
 */
var pagerank_ranking_max = 15;
/*
 * ランキング表示形式(0:非表示、1:カウンタ表示、2:パーセンテージ表示)
 * ※カウンタの表示／非表示を設定します。
 */
var pagerank_ranking_type = 1;

function pagerank_fix_date(date)
{
	date.setHours(0);
	date.setMinutes(0);
	date.setSeconds(0);
}

function pagerank_set_cookie(name, value, expire)
{
	expire = expire.toGMTString();

	var cookieval   = escape(name) + '=' + escape(value) + '; path=/; expires=' + expire;
	document.cookie = cookieval;
}

function pagerank_get_cookie(name)
{
	var prefix           = escape(name) + '=';
	var c                = document.cookie;
	var nullstring       = '';
	var cookieStartIndex = c.indexOf(prefix);

	if (-1 == cookieStartIndex) {
		return nullstring;
	}

	var cookieEndIndex = c.indexOf(';', cookieStartIndex + prefix.length);

	if (-1 == cookieEndIndex) {
		cookieEndIndex = c.length;
	}

	return unescape(c.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}

function pagerank_clear_cookie(name)
{
	if (pagerank_get_cookie(name)) {
		document.cookie = escape(name) + '=; path=/; expires=Thu, 01-Jan-70 00:00:01 GMT';
	}
}

function pagerank_get_datestr(date)
{
	var yy  = date.getYear();      if (yy < 1900) { yy += 1900;     }
	var mm  = date.getMonth() + 1; if (mm <   10) { mm  = '0' + mm; }
	var dd  = date.getDate();      if (dd <   10) { dd  = '0' + dd; }
	var str = yy + mm + dd;

	return str;
}

function pagerank_check_cookie(name)
{
	var now = new Date();
	pagerank_fix_date(now);

	var str     = pagerank_get_datestr(now);
	var expires = pagerank_get_cookie(name);

	if (expires) {
		if (expires > str) {
			return false;
		}
	}

	now.setTime(now.getTime() + 1 * 24 * 60 * 60 * 1000);
	pagerank_set_cookie(name, pagerank_get_datestr(now), now);

	return true;
}

function pagerank_view()
{
	show_ajaxloader($(pagerank_view_box), true);

	var pars = 'blogid='+pagerank_blogid+'&max='+pagerank_ranking_max+'&type='+pagerank_ranking_type;

// for Safari Browser
	new Ajax.Request(pagerank_view_url, {
					method: 'post',
					parameters: pars,
					onComplete: function(req) {
						var elem = $(pagerank_view_box);
						show_ajaxloader(elem, false);
						elem.innerHTML = safari_escape(req);
					}
				});
// for Otherwise
//	new Ajax.Updater(pagerank_view_box, pagerank_view_url, {
//					method: 'post',
//					parameters: pars,
//					onComplete: function() {
//						show_ajaxloader($(pagerank_view_box), false);
//					}
//				});

	return false;
}

function pagerank_post(id, title, uri, desc)
{
	if (pagerank_exclude) {
		return false;
	}

	var location = encodeURI(document.location.href).replace(/#.*/,'');

	if (pagerank_blog_url == location || 0 <= location.indexOf(pagerank_blog_url+'index')) {
		return false;
	}

	if (pagerank_enable_cookie) {
		if (!pagerank_check_cookie(location)) {
			return false;
		}
	}

	var pars = 'blogid='+pagerank_blogid+'&url='+location+'&title='+title+'&referer='+encodeURI(document.referrer);

	new Ajax.Request(pagerank_post_url, {
					method: 'post',
					parameters: pars,
					onComplete: function(req) {
// 確認用
//						$(pagerank_view_box).innerHTML = safari_escape(req);
					}
				});

	return false;
}

Event.observe(window, 'load', function() {
	var title = document.title.replace(' - 子宝どっとこむ', '');

	pagerank_post(pagerank_blogid, title, pagerank_blog_url, '');
});
/* -------------------------------------------------------------------------- */
/* - Related Five Star Rating												- */
/* -------------------------------------------------------------------------- */
/* - rating_showloader()													- */
/* - rating_post()															- */
/* - rating_view()															- */
/* -------------------------------------------------------------------------- */
var rating_obj    = new Array();
var rating_script = ['http://kodakara.com/mt_memo/js/prototype/starbox/', 'starbox.post.php'].join('');
var rating_loader = ['http://kodakara.com/mt_memo/css/tubes/', 'starbox-loader.gif'].join('');

function rating_showloader(element, enable)
{
	if (enable) {
		element.innerHTML        = '';
		element.style.height     = '16px';
		element.style.background = 'transparent url('+rating_loader+') no-repeat left center';
	}
	else {
		element.style.height     = 'auto';
		element.style.background = 'none';
	}
}

function rating_post(element, info) {
	var obj  = rating_obj[element.id];
	var pars = 'mode=0&blogid='+obj.blogid+'&entryid='+obj.options.identity+'&boxid='+element.id+'&avr='+obj.average+'&total='+obj.options.total;

	new Ajax.Request(rating_script, {
					method: 'post',
					parameters: pars,
					onComplete: function(req) {
						var result = req.responseText.split(':');

						if ('ok' == result[0]) {
							var element = rating_obj[result[1]];
							element.options.locked = true;
						}
					}
				});

	return false;
}

function rating_view(blogid, boxid, ids) {

	var pars = 'mode=1&blogid='+blogid+'&entryid='+ids+'&boxid='+boxid;

	$(boxid).up('.asset_rating').setAttribute('style', 'background-image: none;');

	rating_showloader($(boxid), true);

	new Ajax.Request(rating_script, {
					method: 'post',
					parameters: pars,
					onComplete: function(req) {
						var locked = true;
						var result = req.responseText.split(':');

						rating_showloader($(result[1]), false);

						if ('ok' == result[0]) {
							locked = false;
						}

						rating_obj[result[1]] = new Starbox(
							result[1],				// Box ID
							result[2], {			// 現在のアベレージ
							color: '#4a488e',		// 星の前景
							background: '#edd3a1',	// 星の背景
							hoverColor: '#a22041',	// ホバーの色
							overlay: 'default.png',	// オーバレイ画像指定
							stars: 5,				// 星の表示数
							max: 5,					// 最大アベレージ
							buttons: 10,			// stars を何分割にするか設定
													// たとえば、stars×２とすると１つ星が２分割される
							total: result[3],		// 総投票数
							identity: ids,			// ID
													// インディケータ表示
							indicator: ' [#{average} rating from #{total} votes]',
							onRate: rating_post,	// クリック時の処理
							inverse: false,			// 表示方向設定 false(左⇒右)/true(右⇒左)
							lockOnRate: true,		// 投票後ロック設定 false(なし)/true(ロック)
							locked: locked			// 投票不可設定 false(可)/true(不可)
						});

						rating_obj[result[1]].blogid = blogid;
					}
	});
}
