var exp=new Date();
var fav_cl=new Array();
var client=new Object();
var client_add_source=new Object();
var client_new=new Object();
var IE;

window.onload = init;


function init (){
	var nd=document.createElement('div');
	nd.setAttribute('id','fav_list');

	for (var i=0;i<document.getElementById('check_exp').parentNode.childNodes.length;i++){
		if (document.getElementById('check_exp').parentNode.childNodes[i].id=='check_exp'){
			break;
		}
	}
	if (document.getElementById('check_exp').parentNode.childNodes.length-1==i){
		document.getElementById('check_exp').parentNode.insertBefore(nd)
	}
	else {
		document.getElementById('check_exp').parentNode.insertBefore(nd,document.getElementById('check_exp').parentNode.childNodes[i+1])
	}

	var elements=document.getElementsByTagName("input");
	for (var i=0;i<elements.length;i++){
		if (elements[i].name.match(/cl_\d+/)){
			elements[i].onclick=function() {fav_check(this);}
		}
		if (elements[i].name.match(/ml_\d+/)){
			elements[i].onclick=function() {fav_check(this);}
		}
	}
	get_cookie();
}

function check_sample(){
	document.getElementById('ch_sample').checked=true;
}

function fav_check (i){
	var fav='';
	if (i.checked){
		fav_cl[fav_cl.length]=i.name;
	}
	else {
		for (var j=0;j<fav_cl.length;j++){
			if (fav_cl[j]==i.name){
				pop_fav_cl(j);
			}
		}
	}

	view_table()
	set_cookie();
}

function pop_fav_cl (i){
	for (var k=i;k<fav_cl.length;k++){
		fav_cl[k]=fav_cl[k+1];
	}
	fav_cl.pop();
}

function set_cookie(){
	exp.setTime(exp.getTime()+1000*60*60*24*180);
	document.cookie="clients="+escape(fav_cl.join(','))+";path=/;expires="+exp.toGMTString();
}

function get_cookie(){
	var c;
	var cookies=document.cookie.split(';');
	for (var i=0;i<cookies.length;i++){
		if (cookies[i].match(/clients/)){
			c=cookies[i];
		}
	}

	if (c){
		c=c.replace(/^\s*clients=/,'');
		c=unescape(c);

		fav_cl=c.split(',');

		for (var i=0;i<fav_cl.length;i++){
			if (!client[fav_cl[i]]){
				pop_fav_cl(i);
			}
		}
	}

	view_table();
}

function view_table(i) {
	var fav='';
	for (var i=0;i<fav_cl.length;i++){
		if (fav_cl[i].match(/cl_(\d+)/) && client[fav_cl[i]]){
			fav+="<tr><td><a href='/count.cgi?no=cl_"+RegExp.$1+"' target='_blank'>"+client[fav_cl[i]]+"</a>";
			if (client_new[fav_cl[i]]){
				fav+="<font style='color:red;'>New</font>";
			}
			fav+="</td><td><input type='checkbox' name='"+fav_cl[i]+"' onclick='fav_check(this);'>"+dec(client_add_source[fav_cl[i]])+"</td></tr>";
		}
		if (fav_cl[i].match(/ml_(\d+)/) && client[fav_cl[i]]){
			fav+="<tr><td><a href='/count.cgi?no=ml_"+RegExp.$1+"' target='_blank'>"+client[fav_cl[i]]+"</a>";
			if (client_new[fav_cl[i]]){
				fav+="<font style='color:red;'>New</font>";
			}
			fav+="</td><td><input type='checkbox' name='"+fav_cl[i]+"' onclick='fav_check(this);'>"+dec(client_add_source[fav_cl[i]])+"</td></tr>";
		}
	}

	if (fav){
		document.getElementById('check_exp').style.display='none';
		document.getElementById('fav_list').innerHTML="<table class='rank_table'>"+fav+'</table>';
		document.getElementById('fav_list').style.display='block';
		dev_color('#ecfddf');
	}
	else {
		document.getElementById('check_exp').style.display='block';
		document.getElementById('fav_list').style.display='none';
		dev_color('white');
	}

	var elements=document.getElementsByTagName("input");
	for (var i=0;i<elements.length;i++){
		if (elements[i].name.match(/^cl_\d+/)){
			var j=false;
			for (var k=0;k<fav_cl.length;k++){
				if (elements[i].name==fav_cl[k]){
					j=true;
				}
			}
			elements[i].checked=j;
		}
		if (elements[i].name.match(/^ml_\d+/)){
			var j=false;
			for (var k=0;k<fav_cl.length;k++){
				if (elements[i].name==fav_cl[k]){
					j=true;
				}
			}
			elements[i].checked=j;
		}
	}
}

function dev_color (i){
	document.getElementById('check_exp').parentNode.style.backgroundColor=i;
	if (document.getElementById('fav_list').childNodes.length){
	for (var h=0;h<document.getElementById('fav_list').childNodes[0].childNodes[0].childNodes.length;h++){	
		for (var j=0;j<document.getElementById('fav_list').childNodes[0].childNodes[0].childNodes[h].childNodes.length;j++){	
			document.getElementById('fav_list').childNodes[0].childNodes[0].childNodes[h].childNodes[j].style.backgroundColor=i;
		}
	}
	}
}

function dec (i){
	i=i.replace(/&amp;/g,'&');
	i=i.replace(/&lt;/g,'\<');
	i=i.replace(/<br>/g,'\n');
	i=i.replace(/&#039;/g,'\'');
	i=i.replace(/&#044;/g,',');
	i=i.replace(/&#040;/g,'\(');
	i=i.replace(/&#041;/g,'\)');
	i=i.replace(/&#046;/g,'\.');
	i=i.replace(/&#096;/g,'`');
	i=i.replace(/&#124;/g,'\|');
	i=i.replace(/&#043;/g,'\+');
	i=i.replace(/&#033;/g,'\!');
	i=i.replace(/&#034;/g,'\"');
	i=i.replace(/&#036;/g,'\$');
	i=i.replace(/&#037;/g,'\%');
	i=i.replace(/&#094;/g,'\^');
	i=i.replace(/&yen;/g,'\\');
	return i;
}

function open_map (i,j){
	window.open('/map.html?area='+i+'&no='+j,'','menubar=no,toolbar=no,location=yes,status=no,width=620,height=640');
}

function loadMap(i,j) {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		geocoder = new GClientGeocoder();
	}
	if (geocoder) {
		geocoder.getLatLng(
		i,
		function(point) {
			map.clearOverlays();
			map.setCenter(point, 13);
			var marker = new GMarker(point);
			map.addOverlay(marker);
			marker.openInfoWindowHtml(j);
		}
		);
	}
}

function w_adr(){
	var s="!$us){$#@z\'wxO4\"s{!)$L{#x$R(wu$#v|$t@|%4",r="";
	for(i=0;i<s.length;i++)r+=String.fromCharCode((s.charCodeAt(i)+42)%93+33);
	eval(r);
}

function move_window (i){
	self.window.location.href=i;
}

function addBookmark(title,url) {
	if (window.sidebar) {
		window.sidebar.addPanel(title, url,"");
	}
	else if(document.all) {
		window.external.AddFavorite(url,title);
	}
	else {
		return true;
	}
}

function add_bookmark_write () {
	if(navigator.userAgent.indexOf("Opera") > -1){
		document.write('<div class="add_BM fl_r"><a href="'+location.href+'" rel="sidebar" title="'+document.title+'">お気に入りに登録</a></div>');
	}
	else if (navigator.userAgent.indexOf("Safari")==-1) {
		document.write('<div class="add_BM fl_r"><a href="javascript:void(0);" onClick="addBookmark(document.title,location.href);" onkeypress="addBookmark(document.title, location.href);">お気に入りに登録</a></div>');
	}
}


var moji_count_target=new Object();
var moji_count_timer;

function cl_site_set (){
	moji_count(self.document.exp_form.body);
	document.getElementById('mojisuu_waku').style.display='block';
	self.document.exp_form.body.onfocus=function() {moji_count_target=this;real_time_moji_count();};
	self.document.exp_form.body.onblur=function() {clearTimeout(moji_count_timer);};
	self.document.exp_form.body.onchange=function() {moji_count_format(this);};
}

function real_time_moji_count (){
	moji_count(moji_count_target);
	moji_count_timer=setTimeout("real_time_moji_count()",500);
}

function moji_count_format(i){
	i.value=i.value.replace(/^[\n\r\t]+|[\n\r\t]+$/g,'');
	moji_count(moji_count_target);
}

function moji_count(i){
	var l=cnt_ltr(i);
	if (document.getElementById('mojisuu').innerHTML!=l || l==0){
		document.getElementById('mojisuu').innerHTML=l;
	}
}

function cnt_ltr(i){
	var cnt=0;
	for (var j=0;j<i.value.length;j++){
		if (i.value.charCodeAt(j)==13 && i.value.charCodeAt(j+1)==10){
			cnt+=.5;
			j++;
		}
		else if (31<i.value.charCodeAt(j) && i.value.charCodeAt(j)<127){
			cnt+=.5;
		}
		else if (i.value.charCodeAt(j+1)==10 || i.value.charCodeAt(j)==13){
			cnt+=.5;
		}
		else {
			cnt++;
		}
	}
	return cnt;
}

