
//現在日時との差を512段階で返す。
Date.prototype.pastTime_g = function(o){
	var gra = o?o.gra:6;
	var keika = Math.ceil((this.now - this.getTime())/1000/(3600 * gra));
	if(keika > 512){ keika=512 }
	return keika;
};
//差をテキストで。
Date.prototype.pastTime_t = function(o){
	var dateval = "sec";
	var now = this.now;
	if(o && o.now){
		now = o.now;
	}
	var jp = {
		sec : "秒前",
		min : "分前",
		hour: "時間前",
		day : "日前",
		Mon : "ヶ月前"
	};
	var keika = Math.ceil((now - this.getTime())/1000);
	if(keika>59){
		keika/=60;dateval="min";
		if(keika>59){
			keika/=60;dateval="hour";
			if(keika>24){
				keika/=24;dateval="day"
				if(keika>30){
					keika/=30;dateval="Mon"
				}
			}
		}
	}
	var mode = o?o.mode:"";
	keika = Math.floor(keika);
	if(mode == "short"){dateval=dateval.charAt(0)}
	if(mode == "jp"){dateval=jp[dateval]}
	if(isNaN(keika)){keika="";dateval="nan"}else{keika+=dateval}
	if(mode == 1){return dateval}
	return keika;
};
Date.prototype.get_date = function(format){
	var yy = this.getYear();
	var o = new Object();
	o.mm = this.getMonth() + 1;
	o.dd = this.getDate();
	o.HH = this.getHours();
	o.MM = this.getMinutes();
	o.SS = this.getSeconds();
	if (yy < 2000) { yy += 1900; }
	for(var i in o){
		if (o[i] < 10) { o[i] = "0" + o[i]; }
	}
	if(format){
		return format.replace(/yyyy/,yy).replace(/mm/,o.mm).replace(/dd/,o.dd)
				.replace(/HH/,o.HH).replace(/MM/,o.MM).replace(/SS/,o.SS)
	}else{
		return o.mm+"/" +o.dd +" "+o.HH+":"+o.MM+":"+ o.SS;
	}
}
//現在時刻を固定。
Date.prototype.now = new Date().getTime();

//便利ツール
function Color(){
	this.cache = new Object();
	//設定
	this.sikii = 160;
	this.rule  = "gra";
	this.rules = {
		gra: function(n){
			var sikii = 160;
			var abs = (sikii<120)?120:sikii;
			if(sikii < 120){sikii=120}
			var r=Math.ceil(255-(n*2));
			var g=Math.ceil(255-Math.abs(n-128)*2);
			var b=Math.ceil((n-128)*2);
			if(r>128){r=255}else{r*=2}if(r<0){r=0}
			if(g>128){g=255}else{g*=2}if(g<0){g=0}
			if(b>128){b=255}else{b*=2}if(b<0){b=0}
			r=Math.ceil(r * (255-abs)/255 + sikii);
			g=Math.ceil(g * (255-abs)/255 + sikii);
			b=Math.ceil(b * (255-abs)/255 + sikii);
			return "rgb("+r+","+g+","+b+")";
		}
	};
	this.make_color = function(o){return this.rules[this.rule](o)};
	this.set = function(o){for(var i in o){this[i]=o[i]}return this};
	return this;
}
var color = new Color();

