﻿/*
 ****************************************************************************
 * File : prototype.ranking.js 1.28
 * 
 * Copyright (C) 2005-2008 http://bizcaz.com/ All rights reserved.
 ****************************************************************************
 */

/****************************************************************************
 * Cookie有効／無効フラグ(0:無効、1:有効)
 * ※Cookieを無効にすると、ページにアクセスされるたびにカウントアップされます。
 *   また、当然PHPスクリプトはその都度実行されます。
 ****************************************************************************/
var pagerank_enable_cookie = 1;

/****************************************************************************
 * アクセスログを取りたいブログID
 * ※複数のブログの集計を行いたい場合には 0 を指定してください。
 *   0 というブログ ID は存在しませんので。
 ****************************************************************************/
var pagerank_blogid = 5;

/****************************************************************************
 * アクセスランキングを表示するIDタグ名称
 ****************************************************************************/
var pagerank_view_box = 'pagerank_viewer';

/****************************************************************************
 * ブログ URL(index.html がある場所)／アップロード先相対パス
 * ※pagerank_blog_url: トップページ(index.html)のURL
 * ※pagerank_home_url: アップロード先をトップページからの相対パス
 ****************************************************************************/
var pagerank_blog_url = 'http://www.e-hotel.tv/';
var pagerank_home_url = 'js/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_show_ajaxloader() 											- */
/* - pagerank_fix_date()													- */
/* - pagerank_set_cookie()													- */
/* - pagerank_get_cookie()													- */
/* - pagerank_clear_cookie()												- */
/* - pagerank_get_datestr() 												- */
/* - pagerank_check_cookie()												- */
/* - pagerank_view()														- */
/* -------------------------------------------------------------------------- */
function pagerank_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 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_show_ajaxloader(divid, enable)
{
	if (enable) {
		divid.innerHTML        = '';
		divid.style.height     = '100px';
		divid.style.background = 'transparent url('+pagerank_loader+') no-repeat center center';
	}
	else {
		divid.style.height     = 'auto';
		divid.style.background = 'none';
	}
}

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_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);
						pagerank_show_ajaxloader(elem, false);
						elem.innerHTML = pagerank_safari_escape(req);
					}
				});

// for Otherwise
//	new Ajax.Updater(pagerank_view_box, pagerank_view_url, {
//					method: 'post',
//					parameters: pars,
//					onComplete: function() {
//						pagerank_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_exclude_top && (uri == location || 0 <= location.indexOf(uri+'index'))) {
		return false;
	}

	if (pagerank_enable_cookie) {
		if (!pagerank_check_cookie(location)) {
			return false;
		}
	}

	var pars = 'blogid='+id+'&url='+location+'&title='+encodeURIComponent(pagerank_espace(title))+'&referer='+encodeURI(document.referrer);

	if ('' != desc) {
		pars += '&desc='+encodeURIComponent(pagerank_espace(desc));
	}

	new Ajax.Request(pagerank_post_url, {
					method: 'post',
					parameters: pars,
					onComplete: function(req) {
// 確認用
//						$(pagerank_view_box).innerHTML = pagerank_safari_escape(req);
					}
				});

	return false;
}

Event.observe(window, 'load', function() {
	var title    = encodeURIComponent(document.title.replace('沖縄ホテル＆沖縄民宿情報ランキング', ''));

	pagerank_post(pagerank_blogid, title, pagerank_blog_url, '');
});
