(function ($) {
/*
 ****************************************************************************
 * File : jquery.ranking.js 2.00
 *
 * Copyright (C) 2005-2008 http://bizcaz.com/ All rights reserved.
 ****************************************************************************
 */
$.fn.PageRank = function(opt) {
	opt = $.extend({
		blog_id         : '',           // ブログ ID(必須)
		blog_url        : '',           // ブログ URL(必須)
		page_name       : '',           // ページタイトル(必須)
		exclude_page    : 0,            // ページ除外フラグ(0:カウント、1:除外)
		exclude_top     : 1,            // トップページ除外フラグ(0:カウント、1:除外)
		ranking_max     : 5,           // ランキング表示数
		ranking_type    : 1,            // ランキング表示形式(0:非表示、1:カウンタ表示、2:パーセンテージ表示)
		enable_cookie   : 1,            // Cookie有効／無効フラグ(0:無効、1:有効)
		script_url      : 'http://118.82.112.141/js/pagerank/'// PHP スクリプトのアップロード先 URL
	}, opt || {});

        opt.page_name = document.title.replace('', '');
	opt.post_url = [opt.script_url, 'rank_post.php'  ].join('');
	opt.view_url = [opt.script_url, 'rank_view.php'  ].join('');
	opt.loader   = [opt.script_url, 'ajax-loader.gif'].join('');

	return this.each(function() {
		var me = $(this);

		me.html('');
		me.css('height', '100px').css('background', 'transparent url(' + opt.loader + ') no-repeat center center');

		var params = {blogid: opt.blog_id, max: opt.ranking_max, type: opt.ranking_type};

		$.post(opt.view_url, params, function(message, status) {
			me.css('height', 'auto').css('background-image', 'none');

			if ('error' != status) {
				me.html(safari_escape(message));
			}

			$(document).ready(function() {
				access_log();
			});
		});
	});

	function access_log() {
		if (opt.exclude_page) return;

		var location = encodeURI(document.location.href).replace(/#.*/,'');

		if (opt.exclude_top && (opt.blog_url == location || 0 <= location.indexOf(opt.blog_url+'index'))) return;

		if (opt.enable_cookie) {
			if (!check_cookie(location)) return;
		}

		var params = {blogid: opt.blog_id, url: location, title: encodeURIComponent(pagerank_espace(opt.page_name)), referer: encodeURI(document.referrer)};

		$.post(opt.post_url, params, function(message, status) {
			// 確認用
		});
	};

	function 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(text) {
		text = text.split("&").join("&amp;" );
		text = text.split("<").join("&lt;"  );
		text = text.split(">").join("&gt;"  );
		text = text.split('"').join("&quot;");
		text = text.split("{").join("&#123;");
		text = text.split("}").join("&#125;");
		text = text.split("'").join("&#039;");
		return text;
	};

	function fix_date(date) {
		date.setHours(0);
		date.setMinutes(0);
		date.setSeconds(0);
	};

	function set_cookie(name, value, expire) {
		expire = expire.toGMTString();

		var cookieval   = escape(name) + '=' + escape(value) + '; path=/; expires=' + expire;
		document.cookie = cookieval;
	};

	function 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 clear_cookie(name) {
		if (get_cookie(name)) {
			document.cookie = escape(name) + '=; path=/; expires=Thu, 01-Jan-70 00:00:01 GMT';
		}
	};

	function 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 check_cookie(name) {
		var now = new Date();
		fix_date(now);

		var str     = get_datestr(now);
		var expires = get_cookie(name);

		if (expires) {
			if (expires > str) {
				return false;
			}
		}

		now.setTime(now.getTime() + 1 * 24 * 60 * 60 * 1000);
		set_cookie(name, get_datestr(now), now);

		return true;
	};
};
}) (jQuery);
