// ********** Common
var m_dStart;
var m_bFocus = 0;

// ********** Const
var m_iRlMove = 10;
var m_iMargin = 10;
var m_iCvWt = 620;
var m_iCvHt = 380;
var m_iLbHt = 20;
var m_iArcR = 0.44;
var m_iAnimeSt = -10;

// ********** Draw
var m_elmCv;
var m_ctxCv;
var m_elmNb;
var m_strText = '';

var m_iAnime;
var m_timAnime;
var m_strDefine;

var m_iTextWt;
var m_iTextLt;
var m_iLabelWt;
var m_iLabelHt;
var m_astrChr0 = new Array();
var m_astrChr1 = new Array();
var m_aiMaxChr = new Array();
var m_iChr0;
var m_iChr1;
var m_iMaxChr;
var m_iCntBox = 0;

var m_strReq = '';

window.onload = sbInit;

function sbInit() {
	// Init Canvas
	m_elmCv = document.getElementById('seimei_cv');
	m_ctxCv = m_elmCv.getContext('2d');
	m_ctxCv.lineWidth = 2;
	m_ctxCv.strokeStyle = '#800';
	m_ctxCv.fillStyle = '#fff';
	
	// Create NameBox
	m_elmNb = document.getElementById('seimei_nb');
	
	// Start Timer
	m_timAnime = setInterval('sbAnime()',100);
}

function sbAnime() {
	var iIdx;
	var iIdx2;
	var iX;
	var iY;
	var iX2;
	var iY2;
	var iA1;
	var iA2;
	var iAni;
	var iPar;
	var iTemp1;
	var iTemp2;
	var iTemp3;
	var strTemp;
	var astrChr = new Array();
	var astrTemp = new Array();
	var astrTemp2 = new Array();
	var strDefine;
	strDefine = '' + document.getElementById('seimei_res').value;
	
	// Start Animation
	if (strDefine != '' && strDefine != m_strDefine) {
		m_iAnime = m_iAnimeSt;
		m_strDefine = strDefine;
		
		// Init
		astrChr = strDefine.split(':');
		if (astrChr[1] != '') {
			document.getElementById('seimei_alert').innerHTML = '<span class="info">' + astrChr[1] + '</span>';
			document.getElementById('seimei_alert').style.display = 'block';
		}
		m_astrChr0 = astrChr[2].split('~');
		m_astrChr1 = astrChr[3].split('~');
		if (astrChr.length >= 5) {
			m_strText = astrChr[4].replace(/@/g,"\n");
		} else {
			m_strText = '';
		}
		
		//
		m_iChr0 = 0;
		for (iIdx = 0; iIdx < m_astrChr0.length; iIdx++) {
			astrTemp = m_astrChr0[iIdx].split(',');
			m_iChr0 += astrTemp.length / 2;
			m_aiMaxChr[iIdx] = astrTemp.length / 2;
		}
		
		m_iChr1 = 0;
		for (iIdx = 0; iIdx < m_astrChr1.length; iIdx++) {
			astrTemp = m_astrChr1[iIdx].split(',');
			m_iChr1 += astrTemp.length / 2;
			if (m_aiMaxChr[iIdx] < astrTemp.length) {
				m_aiMaxChr[iIdx] = astrTemp.length / 2;
			}
		}
		m_iMaxChr = 0;
		for (iIdx = 0; iIdx < m_astrChr0.length; iIdx++) {
			m_iMaxChr += m_aiMaxChr[iIdx];
		}
		
		m_iCntBox = 7 + (m_iChr1 / 2);
		
		//Size
		m_iTextWt = Math.floor((m_iCvWt - m_iMargin * 2) / m_iMaxChr);
		m_iTextWt = (m_iTextWt > 100) ? 100 : m_iTextWt;
		m_iTextLt = Math.floor(m_iCvWt / 2 - m_iTextWt * m_iMaxChr / 2);
		m_iLabelWt = Math.floor(m_iTextWt * 0.8);
		m_iLabelHt = Math.floor(m_iTextWt * 0.4);
		
		// ********** Time
		if (m_bFocus == 0) {
			document.getElementById('seimei_wait').style.display = 'none';
			document.getElementById('seimei_all').style.display = 'block';
			document.getElementById('seimei_req').focus();
			m_bFocus = 1;
		}
		m_dStart = new Date();
	}
	
	if (m_iAnime >= m_iAnimeSt && m_iAnime < m_iRlMove * m_iCntBox) {
		m_ctxCv.clearRect(0,0,m_iCvWt,m_iCvHt);
		m_elmNb.innerHTML = '';
	}
	if (m_iAnime >= 0 && m_iAnime < m_iRlMove * m_iCntBox) {
		
		// ***** St
		iTemp1 = 0;
		iTemp2 = 0;
		for (iIdx = 0; iIdx < m_astrChr0.length; iIdx++) {
			astrTemp = m_astrChr0[iIdx].split(',');
			for (iIdx2 = 0; iIdx2 < (astrTemp.length / 2); iIdx2++) {
				iX = m_iTextLt + (iTemp2 + iIdx2) * m_iTextWt + ((m_aiMaxChr[iIdx] - astrTemp.length / 2) / 2) * m_iTextWt;
				iY = m_iMargin;
				iX2 = Math.round(iX + Math.round(m_iTextWt * 0.5) - m_iLabelWt / 2);
				iY2 = Math.round((iY + Math.round(m_iTextWt * (0.5 + m_iArcR))) + (Math.round(m_iCvHt / 2) - (iY + Math.round(m_iTextWt * (0.5 + m_iArcR)))) / 2 - m_iLabelHt / 2);
				// ***** Box
//				m_ctxCv.strokeRect(iX,iY,m_iTextWt,m_iTextWt);
				iAni = m_iAnime - m_iRlMove * 1;
				if (iAni >= 0) {
					iPar = ((iAni + 1) / m_iRlMove);
					iPar = (iPar < 0 ? 0 : (iPar > 1 ? 1 : iPar));
					// ***** Circle
					m_ctxCv.beginPath();
					m_ctxCv.arc(iX + Math.round(m_iTextWt * 0.5),iY + Math.round(m_iTextWt * 0.5),Math.round(m_iTextWt * m_iArcR),Math.floor(270 + (90.5 - 270) * iPar) * Math.PI / 180,Math.floor(270 + (449.5 - 270) * iPar) * Math.PI / 180,0);
					m_ctxCv.stroke();
				}
				iAni = m_iAnime - m_iRlMove * 0;
				if (iAni >= 0) {
					iPar = ((iAni + 1) / m_iRlMove);
					iPar = (iPar < 0 ? 0 : (iPar > 1 ? 1 : iPar));
					// ***** Text
					m_elmNb.innerHTML += '<table style="left:' + iX + 'px; top:' + iY + 'px; width: ' + m_iTextWt + 'px;height: ' + m_iTextWt + 'px;font-size: ' + Math.round(m_iTextWt * 0.7) + 'px;"><tr><td>' + astrTemp[iIdx2 * 2] + '</td></tr></table>';
				}
				iAni = m_iAnime - m_iRlMove * 2;
				if (iAni >= 0) {
					iPar = ((iAni + 1) / m_iRlMove);
					iPar = (iPar < 0 ? 0 : (iPar > 1 ? 1 : iPar));
					// ***** Line
					iA1 = iY + Math.round(m_iTextWt * (0.5 + m_iArcR));
					iA2 = Math.round(m_iCvHt / 2);
					iA2 = (iA1 + (iA2 - iA1) * iPar);
					m_ctxCv.beginPath();
					m_ctxCv.moveTo(iX + Math.round(m_iTextWt * 0.5),iA1);
					m_ctxCv.lineTo(iX + Math.round(m_iTextWt * 0.5),iA2);
					m_ctxCv.stroke();
					// ***** Label
					if (iPar > 0.5) {
						m_ctxCv.fillRect(iX2,iY2,m_iLabelWt,m_iLabelHt);
						m_ctxCv.strokeRect(iX2,iY2,m_iLabelWt,m_iLabelHt);
						m_elmNb.innerHTML += '<table style="left:' + iX2 + 'px; top:' + iY2 + 'px; width: ' + m_iLabelWt + 'px;height: ' + m_iLabelHt + 'px;font-size: ' + Math.round(m_iLabelHt * 0.7) + 'px;"><tr><td>' + astrTemp[iIdx2 * 2 + 1] + '</td></tr></table>';
					}
				}
				iAni = m_iAnime - m_iRlMove * 3;
				if (iAni >= 0) {
					iPar = ((iAni + 1) / m_iRlMove);
					iPar = (iPar < 0 ? 0 : (iPar > 1 ? 1 : iPar));
					// ***** Line
					if (m_aiMaxChr[iIdx] > 1 && astrTemp.length / 2 == 1) {
						iA1 = Math.round(m_iTextWt * 0.5) + iX;
						iA2 = Math.round(m_iTextWt * 0.5) + m_iTextLt + iTemp2 * m_iTextWt;
						iA2 = (iA1 + (iA2 - iA1) * iPar);
						m_ctxCv.beginPath();
						m_ctxCv.moveTo(iA1,Math.round(m_iCvHt / 2));
						m_ctxCv.lineTo(iA2,Math.round(m_iCvHt / 2));
						m_ctxCv.stroke();
						
						iA1 = Math.round(m_iTextWt * 0.5) + iX;
						iA2 = Math.round(m_iTextWt * 0.5) + m_iTextLt + iTemp2 * m_iTextWt + (m_aiMaxChr[iIdx] - 1) * m_iTextWt;
						iA2 = (iA1 + (iA2 - iA1) * iPar);
						m_ctxCv.beginPath();
						m_ctxCv.moveTo(iA1,Math.round(m_iCvHt / 2));
						m_ctxCv.lineTo(iA2,Math.round(m_iCvHt / 2));
						m_ctxCv.stroke();
					}
				}
			}
			iTemp1 += (astrTemp.length / 2);
			iTemp2 += m_aiMaxChr[iIdx];
		}
		
		// ***** Ed
		iTemp1 = 0;
		iTemp2 = 0;
		for (iIdx = 0; iIdx < m_astrChr1.length; iIdx++) {
			astrTemp = m_astrChr1[iIdx].split(',');
			for (iIdx2 = 0; iIdx2 < (astrTemp.length / 2); iIdx2++) {
				iX = m_iTextLt + (iTemp2 + iIdx2) * m_iTextWt + ((m_aiMaxChr[iIdx] - astrTemp.length / 2) / 2) * m_iTextWt;
				iY = m_iCvHt - m_iTextWt - m_iMargin;
				iX2 = Math.round(iX + Math.round(m_iTextWt * 0.5) - m_iLabelWt / 2);
				iY2 = Math.round((iY + Math.round(m_iTextWt * (0.5 - m_iArcR))) + (Math.round(m_iCvHt / 2) - (iY + Math.round(m_iTextWt * (0.5 - m_iArcR)))) / 2 - m_iLabelHt / 2);
				iY2 = Math.round((iY + Math.round(m_iTextWt * (0.5 - m_iArcR))) + (Math.round(m_iCvHt / 2) - (iY + Math.round(m_iTextWt * (0.5 - m_iArcR)))) / 2 - m_iLabelHt / 2);
				// ***** Box
//				m_ctxCv.strokeRect(iX,iY,m_iTextWt,m_iTextWt);
				iAni = m_iAnime - m_iRlMove * 5;
				if (iAni >= 0) {
					iPar = ((iAni + 1) / m_iRlMove);
					iPar = (iPar < 0 ? 0 : (iPar > 1 ? 1 : iPar));
					// ***** Circle
					m_ctxCv.beginPath();
					m_ctxCv.arc(iX + Math.round(m_iTextWt * 0.5),iY + Math.round(m_iTextWt * 0.5),Math.round(m_iTextWt * m_iArcR),Math.floor(270 + (90.5 - 270) * iPar) * Math.PI / 180,Math.floor(270 + (449.5 - 270) * iPar) * Math.PI / 180,0);
					m_ctxCv.stroke();
				}
				iAni = m_iAnime - m_iRlMove * (7 + (iTemp1 + iIdx2) / 2);
				if (iAni >= 0) {
					iPar = ((iAni + 1) / m_iRlMove);
					iPar = (iPar < 0 ? 0 : (iPar > 1 ? 1 : iPar));
					// ***** Text
					m_elmNb.innerHTML += '<table style="left:' + iX + 'px; top:' + iY + 'px; width: ' + m_iTextWt + 'px;height: ' + m_iTextWt + 'px;font-size: ' + Math.round(m_iTextWt * 0.7) + 'px;"><tr><td>' + astrTemp[iIdx2 * 2] + '</td></tr></table>';
				}
				iAni = m_iAnime - m_iRlMove * 4;
				if (iAni >= 0) {
					iPar = ((iAni + 1) / m_iRlMove);
					iPar = (iPar < 0 ? 0 : (iPar > 1 ? 1 : iPar));
					// ***** Line
					iA1 = Math.round(m_iCvHt / 2);
					iA2 = iY + Math.round(m_iTextWt * (0.5 - m_iArcR));
					iA2 = (iA1 + (iA2 - iA1) * iPar);
					m_ctxCv.beginPath();
					m_ctxCv.moveTo(iX + Math.round(m_iTextWt * 0.5),iA1);
					m_ctxCv.lineTo(iX + Math.round(m_iTextWt * 0.5),iA2);
					m_ctxCv.stroke();
					// ***** Label
					if (iPar > 0.5) {
						m_ctxCv.fillRect(iX2,iY2,m_iLabelWt,m_iLabelHt);
						m_ctxCv.strokeRect(iX2,iY2,m_iLabelWt,m_iLabelHt);
						m_elmNb.innerHTML += '<table style="left:' + iX2 + 'px; top:' + iY2 + 'px; width: ' + m_iLabelWt + 'px;height: ' + m_iLabelHt + 'px;font-size: ' + Math.round(m_iLabelHt * 0.7) + 'px;"><tr><td>' + astrTemp[iIdx2 * 2 + 1] + '</td></tr></table>';
					}
				}
				iAni = m_iAnime - m_iRlMove * 3;
				if (iAni >= 0) {
					iPar = ((iAni + 1) / m_iRlMove);
					iPar = (iPar < 0 ? 0 : (iPar > 1 ? 1 : iPar));
					// ***** Line
					if (m_aiMaxChr[iIdx] > 1 && astrTemp.length / 2 == 1) {
						iA1 = Math.round(m_iTextWt * 0.5) + m_iTextLt + iTemp2 * m_iTextWt;
						iA2 = Math.round(m_iTextWt * 0.5) + iX;
						iA2 = (iA1 + (iA2 - iA1) * iPar);
						m_ctxCv.beginPath();
						m_ctxCv.moveTo(iA1,Math.round(m_iCvHt / 2));
						m_ctxCv.lineTo(iA2,Math.round(m_iCvHt / 2));
						m_ctxCv.stroke();
						
						iA1 = Math.round(m_iTextWt * 0.5) + m_iTextLt + iTemp2 * m_iTextWt + (m_aiMaxChr[iIdx] - 1) * m_iTextWt;
						iA2 = Math.round(m_iTextWt * 0.5) + iX;
						iA2 = (iA1 + (iA2 - iA1) * iPar);
						m_ctxCv.beginPath();
						m_ctxCv.moveTo(iA1,Math.round(m_iCvHt / 2));
						m_ctxCv.lineTo(iA2,Math.round(m_iCvHt / 2));
						m_ctxCv.stroke();
					}
				}
			}
			iTemp1 += (astrTemp.length / 2);
			iTemp2 += m_aiMaxChr[iIdx];
		}
	}
	
	// End Animation
	if (m_iAnime == m_iRlMove * m_iCntBox + 2) {
		m_ctxCv.strokeRect(1,1,m_iCvWt - 2,m_iCvHt - 2);
		document.getElementById('seimei_text').value = m_strText;
		
		//Amazon
		strTemp = '';
		for (iIdx = 0; iIdx < m_astrChr1.length; iIdx++) {
			astrTemp = m_astrChr1[iIdx].split(',');
			for (iIdx2 = 0; iIdx2 < (astrTemp.length / 2); iIdx2++) {
			strTemp += astrTemp[iIdx2 * 2];
			}
		}
		if (strTemp != '') {
			sbGetAmazon('links','seimei05-22','',EscapeUTF8(strTemp),'',240,2);
		}
	}
	
	// Add FrameCount
	if (m_iAnime >= m_iAnimeSt && m_iAnime <= m_iRlMove * m_iCntBox + 2) {
		m_iAnime ++;
	}
}

function fnLenB(strText) {
	iCnt = 0;
	for (iIdx = 0; iIdx < strText.length; iIdx++) {
		strChr = escape(strText.charAt(iIdx));
		if (strChr.length < 4) {
			iCnt++;
		} else {
			iCnt+=2;
		}
	}
	return iCnt;
}

function fnSend_anoseimei() {
	var strReq;
	strReq = '';
	strReq +=  'nm=' + EscapeEUCJP(document.getElementById('seimei_req').value);
	strReq += '&mode=' + document.getElementById('seimei_mode').value;
	if (m_iAnime > m_iRlMove * m_iCntBox + 2 || strReq != m_strReq) {
		m_iAnime = m_iAnimeSt - 1;
		document.getElementById('seimei_alert').innerHTML = '';
		document.getElementById('seimei_alert').style.display = 'none';
		fnGetValue_anoseimei(strReq,'seimei_res');
		m_strReq = strReq;
	}
	return false;
}
function fnSend_changemode() {
	var elmText = document.getElementById('seimei_text');
	elmText.style.display = (elmText.style.display == 'block') ? 'none' : 'block';
	return false;
}


// EnterKey Event
var m_elmFocus;
function fnFocus_anoseimei(elmNum){
	m_elmFocus = elmNum
	elmNum.style.backgroundColor = '#eecccc';
	elmNum.select();
}
function fnBlur_anoseimei(elmNum){
	elmNum.style.backgroundColor = '';
}
function fnGetKeycode_anoseimei(e){
	if (document.all) {
		return event.keyCode;
	} else if (document.getElementById) {
		return (e.keyCode!=0) ? e.keyCode : e.charCode;
	} else if(document.layers){
		return e.which;
	}
}
function fnKeyPress_anoseimei(e){
	if(fnGetKeycode_anoseimei(e) == 13) {
		if        (m_elmFocus.id == 'seimei_send') { document.getElementById('seimei_req').focus();
		} else if (m_elmFocus.id == 'seimei_req')  { document.getElementById('seimei_send').focus(); fnSend_anoseimei();
		}
		return false;
	}
}
document.onkeypress = fnKeyPress_anoseimei;
