//	autoGradation
//	(c)opation project
// 改変は許可しますが再配布は禁止します。
// 著作権はオパチオンプロジェクトにあります。
// http://ait.zive.net

var startCol   = new Object;
var endCol     = new Object;
var objExistFlug = new Object;
var opColRate  = new Object;
var opColCnt   = new Object;
var sColOfSave = new Object;
var eColOfSave = new Object;
var timerOfCol = new Object;

function GradationStop(ObjName){
	if (!document.getElementById) return;
	try{clearTimeout(timerOfCol[ObjName]);}
	catch(err){}
	objExistFlug[ObjName] = false;
	opColCnt[ObjName] = 0;
	return;
}

function Gradation(ObjName,sCol,eCol,type,step,speed,Rep){
	
	if (!document.getElementById) return;

	try{clearTimeout(timerOfCol[ObjName]);}
	catch(err){}
	
	if ( sColOfSave[ObjName] != sCol || eColOfSave[ObjName] != eCol ) {
		objExistFlug[ObjName] = false;
		opColCnt[ObjName] = 0;
	}
	
	if (opColCnt[ObjName] > step) {
		objExistFlug[ObjName] = false;
		opColCnt[ObjName] = 0;
		if (Rep == "true") {
			//スワップ操作
			swap1 = sCol;
			swap2 = eCol;
			sCol = swap2;
			eCol = swap1;
			
		}else {
			return;
		}
	}
	
	if (!objExistFlug[ObjName]) {
		sColOfSave[ObjName] = sCol;
		eColOfSave[ObjName] = eCol;
		objExistFlug[ObjName] = true ;
		//初値
		col = sColOfSave[ObjName].substr(1);
		startCol[ObjName+"r"] = parseInt(col.substr(0,2),16);
		startCol[ObjName+"g"] = parseInt(col.substr(2,2),16);
		startCol[ObjName+"b"] = parseInt(col.substr(4,2),16);
		//終値
		col = eColOfSave[ObjName].substr(1);
		endCol[ObjName+"r"] = parseInt(col.substr(0,2),16);
		endCol[ObjName+"g"] = parseInt(col.substr(2,2),16);
		endCol[ObjName+"b"] = parseInt(col.substr(4,2),16);
		//増減値／回
		opColRate[ObjName+"r"] = ( endCol[ObjName+"r"] - startCol[ObjName+"r"] ) / step;
		opColRate[ObjName+"g"] = ( endCol[ObjName+"g"] - startCol[ObjName+"g"] ) / step;
		opColRate[ObjName+"b"] = ( endCol[ObjName+"b"] - startCol[ObjName+"b"]  ) / step;
		//カウント初期化
		opColCnt[ObjName] = 0
	}
	if (opColCnt[ObjName] == step) {
		R = endCol[ObjName+"r"];
		G = endCol[ObjName+"g"];
		B = endCol[ObjName+"b"];
	}else {
		R = startCol[ObjName+"r"] + opColCnt[ObjName] * opColRate[ObjName+"r"];
		G = startCol[ObjName+"g"] + opColCnt[ObjName] * opColRate[ObjName+"g"];
		B = startCol[ObjName+"b"] + opColCnt[ObjName] * opColRate[ObjName+"b"];
	}
	targetObj = document.getElementById(ObjName).style;
	RGB = "rgb("+R+","+G+","+B+")";
	switch (type){
		case 'BG':
		targetObj.backgroundColor = RGB;
		break;
		case 'FONT':
		targetObj.color = RGB;
		break;
		case 'BORDER':
		targetObj.borderColor = RGB;
		break;
	}
	opColCnt[ObjName]++;
	
	timerOfCol[ObjName] = setTimeout("Gradation('"+ObjName+"','"+sCol+"','"+eCol+"','"+type+"',"+step+","+speed+",'"+Rep+"')",speed);
	
	return;
}
