﻿// JavaScript Document

//return getByte
function getByte(text){
	count = 0;
	for (i=0; i<text.length; i++)
	{
		n = escape(text.charAt(i));
		if (n.length < 4) count++; else count+=2;
	}
	return count;
}

//return random number
function rndnum(num) {
	temp = Math.floor(Math.random()*num) + 1;
	return temp;
}

//Delegate Function
function createDelegate(thisObj, func) {
	return function() {return func.apply(thisObj, arguments)};
}
//enterFrame Object
enterFrame = {
	listeners:[],
	tmid:false,
	addListener:function(o) {this.listeners.push(o)},
	broadCast:function() {for (var i=0,a=this.listeners,l=a.length; i<l; i++) a[i]['onEnterFrame']()},
	init:function(rate) {this.tmid = setInterval(createDelegate(this, this.broadCast),Math.floor(1000/rate))},
	stop:function() {if(this.tmid) clearInterval(this.tmid);this.tmid = false}
};

//get window height
function getWindowHeight(){
	var a = (document.all)? document.documentElement.clientHeight:window.innerHeight;
	return a;
}

//get window width
function getWindowWidth(){
	var a = (document.all)? document.documentElement.clientWidth:window.innerWidth;
	return a;
}

//makeDivObj
function makeDivObj() {
	var a = document.body;
	var b = document.createElement('div');
	a.appendChild(b);
	return b;
}

//makeimgObj
function makeimgObj(s) {
	var pDiv = document.body;
	var cDiv = document.createElement('IMG');
	cDiv.setAttribute('src',s);
	pDiv.appendChild(cDiv);
	return cDiv;
}


//RGB to HSV
function rgb_hsv(rgb) {
	var r,g,b;
	var h,s,v;
	var rt,gt,bt;
	r = rgb[0];
	g = rgb[1];
	b = rgb[2];
	if ( r >= g)   cmax = r; else cmax = g;
	if ( b > cmax) cmax = b;
	if ( r <= g)   cmin = r; else cmin = g;
	if ( b < cmin) cmin = b;
	v = cmax;
	c = cmax - cmin;
	if (cmax != 0) {
		s = c*255/cmax;
	} else {
		s = 0;
	}
	if (s == 0) {
		h = 0;
	} else {
		rt = cmax-r*60/c;
		gt = cmax-g*60/c;
		bt = cmax-b*60/c;
		if (r == cmax) {
			h = bt - gt;
		} else if(g == cmax) {
			h = 120 + rt - bt;
		} else {
			h = 240 + gt - rt;
		}
		if (h < 0) {
			h += 360;
		}
	}
	h = Math.floor(h);
	s = Math.floor(s);
	v = Math.floor(v);
	return [h,s,v];
}

//HSV to RGB
function hsv_rgb(hsv) {
	var h,s,v;
	var r,g,b;
	var c1,c2,c3,t;
	h = hsv[0];
	s = hsv[1];
	v = hsv[2];
	if (s == 0) {
		r = g = b = v;
	} else {
		t = Math.floor((h*6)%360);
		c1 = (v*(255 - s))/255;
		c2 = (v*(255 - (s*t)/360))/255;
		c3 = (v*(255 - (s*(360 - t))/360))/255;
		switch (Math.floor(h/60)) {
			case 0: r=v; g=c3; b=c1; break;
			case 1: r=c2; g=v; b=c1; break;
			case 2: r=c1; g=v; b=c3; break;
			case 3: r=c1; g=c2; b=v; break;
			case 4: r=c3; g=c1; b=v; break;
			case 5: v; g=c1; b=c2; break;
		}
	}
	r = Math.floor(r);
	g = Math.floor(g);
	b = Math.floor(b);
	return [r,g,b];
}