// This module on hiqoo.net.
// Created by Orikasa,Tomohiro.

var p_list_rank_rand = {
	kind : '',
	headerLine : '<ul>',
//	detailLine : '<div style="float:left;margin: 4px;padding:0px 2px;word-break:keep-all;line-height:normal;"><a class="randrank#seqno#" href="#link#">#word#</a></div>',
	detailLine : '<li><a class="randrank#seqno#" href="#link#">#word#</a></li>',
	footerLine : '</ul>',

	top : 1,
	size : 100,
	length : 0,

	nodes : new Object ,
	popup : new Object ,

	entries : new Object() ,

	setHTML : function (id,kind) {
		p_list_rank_rand.kind = kind;
		p_list_rank_rand.nodes[kind] = document.getElementById(id);
		if (!p_list_rank_rand.nodes[kind]) throw id+" isn't found";

		if (isHTTPreq) {
			p_list_rank_rand.changeHTML(kind);
		}
	},

	changeHTML : function(kind) {
		p_list_rank_rand.loadList("/data/"+kind+".json?cache="+(new Date()).getTime(),kind);
	},

	loadList : function(url,kind) {
		var xml = new JKL.ParseXML.JSON(url);
		var func = function (data) {
			p_list_rank_rand.entries = data;
			p_list_rank_rand.drawHTML(kind);
		}
		xml.async(func);
		xml.parse();
	},

	reloadList : function(url) {
		p_list_rank_rand.top = 1;
		p_list_rank_rand.loadList(url);
	},

	drawHTML : function(kind) {
		Array.prototype.shuffle = function() {
		    var i = this.length;
		    while(i){
		        var j = Math.floor(Math.random()*i);
		        var t = this[--i];
		        this[i] = this[j];
		        this[j] = t;
		    }
		    return this;
		}		
		p_list_rank_rand.entries["entry"].shuffle();
		
//var s='';var n=0;var c=data['entry'];for(n in c) { s = s+n+':'+c[n]+' '; } alert(s);
		var html = '';
		var c = 0;

		html += p_list_rank_rand.headerLine;

		var func = function (row) {
			if (row==undefined) return;
			c++;

			if (c<p_list_rank_rand.top-1 || c>p_list_rank_rand.top+p_list_rank_rand.size-1) { return; }

			var line = p_list_rank_rand.detailLine;

			line = line.replace(/#id#/g,p_list_rank_rand.nodes[kind].id);

			if (row["no"]<21)	{
				line = line.replace(/#seqno#/g,row['no']);
			} else	{
				line = line.replace(/#seqno#/g,"");
			}

			line = line.replace(/#no#/g,row['no']);
			if (row["name"]!=undefined)	{
				link = "/list?user="+row["no"];
				line = line.replace(/#link#/g,link);
				line = line.replace(/#word#/g,row['name']);
			}else if(row["sign"]!=undefined)	{
				link = "/list?word="+encodeURI(row["sign"]);
				line = line.replace(/#link#/g,link);
				line = line.replace(/#word#/g,row['sign']);
			}else if(row["area"]!=undefined)	{
				link = "/list?area="+row["no"];
				line = line.replace(/#link#/g,link);
				line = line.replace(/#word#/g,row['area']);
			}

			html += line;
		}
		p_list_rank_rand.entries['entry'].each(func);

		html += p_list_rank_rand.footerLine;

		html = pb_replace(html);
		p_list_rank_rand.length = c;

		p_list_rank_rand.nodes[kind].innerHTML = html;
	}
}
