/**
 *  Page View Board
 *  @see        http://page-view-board.appspot.com/info
 *  @version    0.2.0
 *  @license    The MIT license
 */

var PageViewBoard = {
	API_URL: "http://page-view-board.appspot.com/",

	//データ取得後に実行するコールバック関数の名前
	callback: "showList",
	//ページタイトルから削除する文字列
	deleteString: "",
	//最近何日分を集計するか
	days: 10,
	//上位何件を表示するか
	max: 15,
	//URL中の最初のディレクトリがユーザーIDになっていて、それで限定する場合
	userId: "",

	show: function() {
		var url = this.API_URL;
		url += "?domain=" + location.host;
		url += "&userId=" + encodeURI(this.userId);
		url += "&title=" + encodeURI(document.title.replace(/(^\s+|\s+$)/g, ""));
		url += "&callback=PageViewBoard." + this.callback;
		url += "&trim=" + encodeURI(this.deleteString);
		url += "&days=" + this.days;
		url += "&max=" + this.max;

		var script = document.createElement("script");
		script.setAttribute("type", "text/javascript");
		script.setAttribute("src", url);
		script.setAttribute("charset", "UTF-8");
		document.getElementsByTagName("head")[0].appendChild(script);
	},

	showList: function(ranking) {
		var ol = this.getContainer("ol");
		for (var i = 0, len = ranking.length; i < len; i++) {
			var page = ranking[i];
			if (page["end"]) {
				return;
			}
			var s = '<a href="' + page["url"] + '">' + page["title"] + "</a>";
			s += " (" + page["count"] + ")";
			var li = document.createElement("li");
			li.innerHTML = s;
			ol.appendChild(li);
		}
	},

	showTable: function(ranking) {
		var table = this.getContainer("table");
		for (var i = 0, len = ranking.length; i < len; i++) {
			var page = ranking[i];
			if (page["end"]) {
				return;
			}
			var tr = document.createElement("tr");
			var td = document.createElement("td");
			td.className = "rank";
			td.innerHTML = i + 1;
			tr.appendChild(td);

			var s = '<a href="' + page["url"] + '">' + page["title"] + "</a>";
			td = document.createElement("td");
			td.innerHTML = s;
			tr.appendChild(td);

			td = document.createElement("td");
			td.className = "count";
			td.innerHTML = page["count"];
			tr.appendChild(td);
			
			table.appendChild(tr);
		}
	},
	
	getContainer: function(tagName) {
		var div = document.getElementById("page_view_board");
		div.innerHTML = "";
		var con = document.createElement(tagName);
		div.appendChild(con);
		return con;
	}
}

if (window.onloadPageViewBoard) {
	onloadPageViewBoard();
}

