﻿/*
 ****************************************************************************
 * File : jquery.ranking.js 1.05
 * 
 * Copyright (C) 2005-2007 http://bizcaz.com/ All rights reserved.
 ****************************************************************************
 */

/****************************************************************************
 * Cookie有効／無効フラグ(0:無効、1:有効)
 * ※Cookieを無効にすると、ページにアクセスされるたびにカウントアップされます。
 *   また、当然PHPスクリプトはその都度実行されます。
 ****************************************************************************/
var pagerank_enable_cookie = 1;

/****************************************************************************
 * アクセスログを取りたいブログID
 * ※複数のブログの集計を行いたい場合には 0 を指定してください。
     0 というブログ ID は存在しませんので。
 ****************************************************************************/
var pagerank_blogid = 1;

/****************************************************************************
 * アクセスランキングを表示するIDタグ名称
 ****************************************************************************/
var pagerank_view_box = '#pagerank_viewer';

/****************************************************************************
 * ブログ URL(index.html がある場所)／アップロード先相対パス
 ****************************************************************************/
var pagerank_blog_url = 'http://shinshugyu.com/';
var pagerank_home_url = 'pagerank/';

/****************************************************************************
 * アクセスログ保存／表示スクリプト／ローダーイメージ
 ****************************************************************************/
var pagerank_post_url = [pagerank_blog_url, pagerank_home_url, 'rank_post.php'	].join('');
var pagerank_view_url = [pagerank_blog_url, pagerank_home_url, 'rank_view.php'	].join('');
var pagerank_loader   = [pagerank_blog_url, pagerank_home_url, 'ajax-loader.gif'].join('');

/****************************************************************************
 * トップページ除外フラグ(0:カウント、1:除外)
 ****************************************************************************/
var pagerank_exclude_top = 1;

/****************************************************************************
 * 任意ページ除外フラグ(0:カウント、1:除外)
 ****************************************************************************/
var pagerank_exclude = 0;

/****************************************************************************
 * ランキング表示数
 * ※上位何位まで表示するか設定します。0を指定するとすべて表示します。
 ****************************************************************************/
var pagerank_ranking_max = 10;

/****************************************************************************
 * ランキング表示形式(0:非表示、1:カウンタ表示、2:パーセンテージ表示)
 * ※カウンタの表示／非表示を設定します。
 ****************************************************************************/
var pagerank_ranking_type = 0;


/* -------------------------------------------------------------------------- */
/* - Related Access Page Ranking											- */
/* -------------------------------------------------------------------------- */
/* - pagerank_safari_escape() 												- */
/* - pagerank_espace()														- */
/* - pagerank_fix_date()													- */
/* - pagerank_set_cookie()													- */
/* - pagerank_get_cookie()													- */
/* - pagerank_clear_cookie()												- */
/* - pagerank_get_datestr() 												- */
/* - pagerank_check_cookie()												- */
/* - pagerank_view()														- */
/* -------------------------------------------------------------------------- */
function pagerank_safari_escape(text)
{
	if (navigator.appVersion.indexOf("KHTML") > -1) {
		var esc = escape(text);

		if (esc.indexOf("%u") < 0 && esc.indexOf("%") > -1) {
			text = decodeURIComponent(esc);
		}
	}

	return text;
}

function pagerank_espace(str)
{
	str = str.split("&").join("&amp;");
	str = str.split("<").join("&lt;");
	str = str.split(">").join("&gt;");
	str = str.split('"').join("&quot;");
	str = str.split("{").join("&#123;");
	str = str.split("}").join("&#125;");
	str = str.split("'").join("&#039;");
	return str;
}

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()
{
	$(pagerank_view_box).html('');
	$(pagerank_view_box).css('height', '100px').css('background', 'transparent url(' + pagerank_loader + ') no-repeat center center');

	var params = {blogid: pagerank_blogid, max: pagerank_ranking_max, type: pagerank_ranking_type};
	$.post(pagerank_view_url, params, function(message, status) {
		$(pagerank_view_box).css('height', '200px').css('background-image', 'none');

		if ('error' != status) {
			$(pagerank_view_box).html(pagerank_safari_escape(message));
		}
	});

	return false;
}

function pagerank_post(id, title, uri, desc) {
	if (pagerank_exclude) {
		return false;
	}

	var location  = document.location.href.replace(/#.*/,'');
	var split_url = location.split('/');

	location  = location.replace(/index.*$/,'');
	if (pagerank_exclude_top && pagerank_blog_url == location) return;

	if (pagerank_enable_cookie) {
		if (!pagerank_check_cookie(location)) {
			return false;
		}
	}

	var params = {blogid: pagerank_blogid, url: location, title: encodeURIComponent(pagerank_espace(title)), referer: encodeURI(document.referrer)};

	if ('' != desc) {
		params += '&desc='+encodeURIComponent(pagerank_espace(desc));
	}

	$.post(pagerank_post_url, params, function(message, status) {
// 確認用
//			$(pagerank_view_box).html(pagerank_safari_escape(message));
	});

	return false;
}

$(document).ready(function()
{
	var name_split = document.title.split('#');
	var title = name_split[0].replace(' - <$MTBlogName$>', '');

	pagerank_post(pagerank_blogid, title, pagerank_blog_url, '');
});
