////////////////////////////////////////////////////////////////////
// Setting
var rate = 10;  // Increase amount(The degree of the transmutation)
////////////////////////////////////////////////////////////////////
// Main routine
var obj;        // The object which event occured in
var act = 0;    // Flag during the action
var elmH = 0;   // Hue
var elmS = 128; // Saturation
var elmV = 255; // Value
var clrOrg;     // A color before the change
var TimerID;    // Timer ID

if (navigator.appName.indexOf("Microsoft",0) != -1 && parseInt(navigator.appVersion) >= 4) {
	Browser = true;
} else {
	Browser = false;
}

if (Browser) {
	document.onmouseover = doRainbowAnchor;
	document.onmouseout = stopRainbowAnchor;
}
//=============================================================================

// doRainbow

//  This function begins to change a color.

//=============================================================================

function doRainbow(aTR)
{
	if (Browser && act != 1) {
		act = 1;
		obj = aTR;event.srcElement;
		clrOrg = obj.style.backgroundColor;
		TimerID = setInterval("ChangeColor()",100);
	}
}

//=============================================================================
// stopRainbow
//  This function stops to change a color.
//=============================================================================
function stopRainbow()
{
	if (Browser && act != 0) {
		obj.style.backgroundColor = clrOrg;
		clearInterval(TimerID);
		act = 0;
	}
}
//=============================================================================
// doRainbowAnchor
//  This function begins to change a color. (of a anchor, automatically)
//=============================================================================
function doRainbowAnchor()
{
/*
	if (Browser && act != 1) {
		obj = event.srcElement;

		while (obj.tagName != 'A' && obj.tagName != 'BODY') {
			obj = obj.parentElement;
			if (obj.tagName == 'A' || obj.tagName == 'BODY')
				break;
		}

		if (obj.tagName == 'A' && obj.href != '') {
		act = 1;
		clrOrg = obj.style.backgroundColor;
		TimerID = setInterval("ChangeColor()",100);
		}
	}
	*/
}

//=============================================================================
// stopRainbowAnchor
//  This function stops to change a color. (of a anchor, automatically)
//=============================================================================

function stopRainbowAnchor()
{
	if (Browser && act != 0) {
		if (obj.tagName == 'A') {
			obj.style.backgroundColor = clrOrg;
			clearInterval(TimerID);
			act = 0;
		}
	}
}

//=============================================================================
// Change Color
//  This function changes a color actually.
//=============================================================================

function ChangeColor()
{
	obj.style.backgroundColor = makeColor();
}

//=============================================================================
// makeColor
//  This function makes rainbow colors.
//=============================================================================
function makeColor()
{
	// Don't you think Color Gamut to look like Rainbow?
	// HSVtoRGB
	if (elmS == 0) {
		elmR = elmV;    elmG = elmV;    elmB = elmV;
	}
	else {
		t1 = elmV;
		t2 = (255 - elmS) * elmV / 255;
		t3 = elmH % 60;
		t3 = (t1 - t2) * t3 / 60;

		if (elmH < 60) {
			elmR = t1;  elmB = t2;  elmG = t2 + t3;
		}
		else if (elmH < 120) {
			elmG = t1;  elmB = t2;  elmR = t1 - t3;
		}
		else if (elmH < 180) {
			elmG = t1;  elmR = t2;  elmB = t2 + t3;
		}
		else if (elmH < 240) {
			elmB = t1;  elmR = t2;  elmG = t1 - t3;
		}
		else if (elmH < 300) {
			elmB = t1;  elmG = t2;  elmR = t2 + t3;
		}
		else if (elmH < 360) {
			elmR = t1;  elmG = t2;  elmB = t1 - t3;
		}
		else {
			elmR = 0;   elmG = 0;   elmB = 0;
		}
	}
	elmR = Math.floor(elmR);
	elmG = Math.floor(elmG);
	elmB = Math.floor(elmB);
	clrRGB = '#' + elmR.toString(16) + elmG.toString(16) + elmB.toString(16);

	elmH = elmH + rate;
	if (elmH >= 360)
		elmH = 0;

	return clrRGB;
}
//------Windows Open Start 
function open_window(url, name, left, top, width, height, toolbar, menubar, statusbar, scrollbar, resizable)
{
  toolbar_str = toolbar ? 'yes' : 'no';
  menubar_str = menubar ? 'yes' : 'no';
  statusbar_str = statusbar ? 'yes' : 'no';
  scrollbar_str = scrollbar ? 'yes' : 'no';
  resizable_str = resizable ? 'yes' : 'no';
  window.open(url, name, 'left='+left+',top='+top+',width='+width+',height='+height+',toolbar='+toolbar_str+',menubar='+menubar_str+',status='+statusbar_str+',scrollbars='+scrollbar_str+',resizable='+resizable_str);
}
//------Windows Open End

//----------------------------------------------------------------
function openWindow(fileName,windowName,theWidth,theHeight, etcParam) {
	
	var objNewWin;
	var x = theWidth;
	var y = theHeight;

	var sy = window.screen.height / 2 - y / 2 - 70;
	if (etcParam == 'fix') {
		etcParam = "toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=0,resizable=0";
		var sy = window.screen.height / 2 - y / 2 - 40;
	}
	else if (etcParam == 'resize') {
		etcParam = "toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=0,resizable=1";
		var sy = window.screen.height / 2 - y / 2 - 40;
	}

	var sx = window.screen.width  / 2 - x / 2;


	if (sy < 0 ) {
		sy = 0;
	}
	
	var sz = ",top=" + sy + ",left=" + sx;

	if (windowName == "newMessageWindow") 
	{
	windowName = new String(Math.round(Math.random() * 100000));
	} 

	//objNewWin = window.open(fileName,windowName, etcParam + ",width=" + x + ",height=" + y + sz);
	window.open(fileName,windowName, etcParam + ",width=" + x + ",height=" + y + sz);
}