/**
 * 60行目あたりに色のリストがあるので，そこを変更する．
 * 手法としてはSTYLEタグ全体を静的に掃き出しているだけなので，
 * これを踏まえて，120行目あたりを変更すると良い．
 */


/**
 * Cookie操作用関数（簡易）
 */

var cookiePath = "\/";

function setCookie(name, value, expires){
	var cookie = escape(name)+"="+escape(value);
	if(expires) cookie += "; expires="+expires;
	if(cookiePath) cookie += "; path="+cookiePath;

	document.cookie = cookie;
}

function getCookie(name){
	var v = document.cookie.match(new RegExp(name+"=[^\\s;]+"));
	if(v == null) return "";
	return v[0].substring(name.length+1);
}

function removeCookie(name){
	var cookie = name+"=";
	if(cookiePath) cookie += "; path="+cookiePath;
	cookie += "; expires=Fri, 02-Jan-1970 00:00:00 GMT";
	document.cookie = cookie;
}



/**
 * &で区切られたkey=value形式で書かれた
 * URLの?以降の文字列を取得、オブジェクトとして返す。
 */
function getArgs(){
	var args = new Object();
	var query = location.search.substring(1);
	var pairs = query.split('&');
	for(var i = 0; i < pairs.length; i++){
		var pair = pairs[i];
		var index = pair.indexOf('=');
		if(index == -1) continue;
		var key = pair.substring(0, index);
		var value = pair.substring(index+1);
		args[key] = unescape(value);
	}
	return args;
}



/**
 * メインオブジェクト（ちゆVer）
 */

var DocColorController_Tiyu = new Object();

// 文字色のリスト
DocColorController_Tiyu.fColors = new Array("#ff80c0", "#ff208f", "#660000", "#000099", "#000000");

// 背景色のリスト
DocColorController_Tiyu.bColors = new Array();

DocColorController_Tiyu.cookieName = "DocColorController_Tiyu";

DocColorController_Tiyu.loadUserData = function(){
	var value = getCookie(this.cookieName);
	if(value == ""){
		return;
	}

	var pairs = unescape(value).split('&');
	for(var i = 0; i < pairs.length; i++){
		pairs[i] = pairs[i].split(':');
	}

	this.isSaving = Boolean(parseInt(unescape(pairs[0][1])));
	this.fIndex = parseInt(unescape(pairs[1][1]));
	this.bIndex = parseInt(unescape(pairs[2][1]));
};

DocColorController_Tiyu.saveUserData = function(){
	var value = "";

	value += "&isSaving:"+escape(Number(this.isSaving));
	value += "&fIndex:"+escape(this.fIndex);
	value += "&bIndex:"+escape(this.bIndex);

	setCookie(this.cookieName, value.substring(1), new Date(new Date().getTime()+7*24*60*60*1000).toGMTString());
};

DocColorController_Tiyu.removeUserData = function(){
	removeCookie(this.cookieName);
};

DocColorController_Tiyu.write = function(){
	this.isSaving = false;
	this.fIndex = -1;
	this.bIndex = -1;

	var args = getArgs();
	if(args.s !== void 0){
		this.isSaving = Boolean(parseInt(args.s));
	}
	if(args.f !== void 0){
		this.fIndex = parseInt(args.f);
	}
	if(args.b !== void 0){
		this.bIndex = parseInt(args.b);
	}

	this.loadUserData();

	if(this.fIndex != -1 || this.bIndex != -1){
		var sCSS = "<style type=\"text\/css\">\n";
		if(this.fIndex != -1){
			sCSS += "TD{ color : "+this.fColors[this.fIndex]+";}\n";
			sCSS += ".Permalink{ color : "+this.fColors[this.fIndex]+";\n text-decoration : underline;}\n";
		}
		sCSS += "BODY{ color : #ff80c0; }\n";
				if(this.bIndex != -1){
			sCSS += "BODY{ background-color : "+this.bColors[this.bIndex]+";}\n";
		}
		document.writeln(sCSS+"<\/style>");
	}

	var markUp = "<form action=\"\" style=\"margin : 0px;\">\n";

	markUp += "文字色:\n";
	for(var i = 0; i < this.fColors.length; i++){
		markUp += "<a href=\"#\" style=\"color : "+this.fColors[i]+";text-decoration : none;\" onClick=\"DocColorController_Tiyu.fIndex = "+i+";DocColorController_Tiyu.reload();return false;\">■<\/a>";
	}

	markUp += "\n";

	markUp += "\n";
	for(var i = 0; i < this.bColors.length; i++){
		markUp += "<a href=\"#\" style=\"color : "+this.bColors[i]+";text-decoration : none;\" onClick=\"DocColorController_Tiyu.bIndex = "+i+";DocColorController_Tiyu.reload();return false;\">■<\/a>";
	}

	markUp += "\n";

	markUp += "<input type=\"checkbox\" onClick=\"DocColorController_Tiyu.listenerSave(this.checked);\""+(this.isSaving ? " checked" : "")+">保存する";

	document.writeln(markUp+"<\/form>");
};

DocColorController_Tiyu.write();

DocColorController_Tiyu.reload = function(){
	var href = location.href;

	var pIndex = href.indexOf('#');
	if(pIndex != -1){
		href = href.substr(0, pIndex);
	}

	var qIndex = href.indexOf('?');
	if(qIndex != -1){
		href = href.substr(0, qIndex);
	}

	if(this.isSaving){
		this.saveUserData();
		location.href = href;
	}else{
		var args = ""
		+"&s="+Number(this.isSaving)
		+"&f="+this.fIndex
		+"&b="+this.bIndex;

		location.href = href+'?'+args.substring(1);
	}
};

DocColorController_Tiyu.listenerSave = function(checked){
	this.isSaving = checked;

	if(this.isSaving){
		this.saveUserData();
	}else{
		this.removeUserData();
	}
};

