// ********** Const
// ***** Timer
var m_iAnimeMilliSec = 50;

// ********** Common
var m_dStart;
var m_bFocus = 0;

// ********** Const
var m_iWait = 10;
var m_iRlMove = 40;
var m_iMargin = 5;
var m_iCvWt = 360;
var m_iCvHt = 360;

var m_iCvWt2 = 720;
var m_iCvHt2 = 960;
var m_iCvDrawWt2 = 720;
var m_iCvDrawHt2 = 90;
var m_iMiniWt2 = 90;
var m_iMiniHt2 = m_iMiniWt2;

var m_elmPn2;
var m_iSnapMode = 7;
var m_strSnapForeColor = '#763';
var m_strSnapBackColor = '#ffc';
var m_iSnapReverse = 0;
var m_iSnapFrame = 1;
var m_bSnapFill = 0;
var m_iSnapLineWidth = 1;

// ********** Draw
var m_iAnime;
var m_timAnime;
var m_elmBody;
var m_elmCv1;
var m_ctxCv1;
var m_elmCv2;
var m_ctxCv2;
var m_strDefine;
var m_strColor;
var m_iBlendPar;
var m_iPatnCnt;
var m_astrText = new Array();
var m_astrPath = new Array();
var m_iScaleLimit = 100;
var m_iPathLimit = 100;
var m_iShotLast;

var m_strReq = '';

window.onload = sbInit;

function sbInit() {
	m_elmBody = document.getElementsByTagName('body').item(0);
	
	// ********** Init Canvas
	m_elmCv1 = document.getElementById('buki_cv');
	m_ctxCv1 = m_elmCv1.getContext('2d');
	m_ctxCv1.lineWidth = 1;
	
	m_elmPn2 = document.getElementById('buki_pn2');
	m_elmCv2 = document.getElementById('buki_cv2');
	m_ctxCv2 = m_elmCv2.getContext('2d');
	m_ctxCv2.lineWidth = m_iSnapLineWidth;
	
	// ********** Start Timer
	m_timAnime = setInterval('sbAnime()',m_iAnimeMilliSec);
}

function sbAnime() {
	var iIdx;
	var strDefine;
	var astrDefine = new Array();
	var astrScale = new Array();
	var iConstDefine = 3;
	
	strDefine = '' + document.getElementById('buki_res').value;
	
	// ********** Start Animation
	if (strDefine != '' && strDefine != m_strDefine) {
		m_iAnime = 0;
		m_strDefine = strDefine;
		
		sbSend_ViewAlert('');
		
		// ********** Init
		astrDefine = strDefine.split('~');
		m_astrText = astrDefine[0].split(',');
		m_strColor = astrDefine[1];
		m_iBlendPar = astrDefine[2];
		m_iPatnCnt = (astrDefine.length - iConstDefine) / 2;
		for (iIdx = 0; iIdx < m_iPatnCnt; iIdx++) {
			astrScale = astrDefine[iConstDefine + iIdx].split(',');
			m_astrPath[iIdx] = new Array();
			m_astrPath[iIdx] = astrDefine[iConstDefine + m_iPatnCnt + iIdx].split(' ');
			sbAdjustPath(iIdx,Number(astrScale[0]),Number(astrScale[1]));
		}
		sbCreatePathLocate(1);
		sbCreatePathbuki(2);
		
		// ********** Draw
		m_elmCv2.style.backgroundColor = '#fff';
		m_elmPn2.style.height = m_iCvDrawHt2 + "px";
		m_ctxCv2.clearRect(0,0,m_iCvWt2,m_iCvHt2);
		m_ctxCv2.lineWidth = m_iSnapLineWidth;
		m_iShotLast = -1;
		
		if (m_astrText.length > 1) {
			sbSend_ViewAlert(m_astrText[1]);
		} else {
			sbSend_ViewAlert('');
		}
		
		// ********** Time
		if (m_bFocus == 0) {
			document.getElementById('buki_wait').style.display = 'none';
			document.getElementById('buki_all').style.display = 'block';
			document.getElementById('buki_req').focus();
			m_bFocus = 1;
		}
		m_dStart = new Date();
	}
	
	// ********** Draw
	var iAnime;
	var strBg1;
	var strBg2;
	var iSt;
	var iSize;
	var iPar;
	var iPar2;
	
	var iShotIdx;
	var iXPlus;
	var iYPlus;
	
	var iFlareCnt;
	var iFlareSpeed;
	var iFlareSize;
	var aiX = new Array();
	var aiY = new Array();
	var aiZ = new Array();
	
	if (m_iAnime >= 0 && m_iAnime <= ((m_iWait + m_iRlMove + 1) * m_iPatnCnt - 1)) {
		// ***** Clear
		m_ctxCv1.clearRect(0,0,m_iCvWt,m_iCvHt);
		
		// ***** Flash
		if (m_iAnime == ((m_iWait + m_iRlMove + 1) * m_iPatnCnt - 1)) {
			strBg1 = m_strSnapBackColor;
			strBg2 = '#ffffff';
		} else if (Math.random() * 100 < 5) {
			strBg1 = '#ffffff';
			strBg2 = '#ffffff';
		} else {
			strBg1 = '#66502d';
			strBg2 = '#000000';
		}
		if (m_elmCv1.style.backgroundColor != strBg1) {
			m_elmCv1.style.backgroundColor = strBg1;
			m_elmBody.style.backgroundColor = strBg2;
		}
		
		// ***** Calc
		iAnime = m_iAnime - m_iWait * Math.floor(m_iAnime / (m_iWait + m_iRlMove + 1) + 1) - (m_iRlMove + 1) * Math.floor(m_iAnime / (m_iWait + m_iRlMove + 1));
		iSt = Math.floor(m_iAnime / (m_iWait + m_iRlMove + 1));
		iPar = iAnime % (m_iRlMove + 1) / m_iRlMove;
		
		if (m_iAnime == ((m_iWait + m_iRlMove + 1) * m_iPatnCnt - 1)) {
			strBg1 = m_strSnapForeColor;
		} else {
			strBg1 = '#ffffff';
		}
		m_ctxCv1.fillStyle = strBg1;
		m_ctxCv1.strokeStyle = strBg1;
		m_ctxCv1.lineWidth = m_iSnapLineWidth;
		if (iSt > m_iPatnCnt - 2) {
			// ***** Back
			iPar2 = (iPar - 0.8) / 0.2;
			sbDrawBack(m_ctxCv1,0,0,m_iCvWt,m_iCvHt,iPar2,'rgba(128,128,128,0.1)','rgba(128,128,128,0.4)');
			
			iSt = m_iPatnCnt - 2;
			iPar2 = (iPar - 0.3) / 0.7;
			iPar2 = (iPar2 < 0) ? 0 : iPar2;
			iSize = 1 + Math.sin(iPar2 * Math.PI) * 0.5;
			
			sbDrawLine(m_ctxCv1,0,0,m_iCvWt,m_iCvHt,iSt,1,iSize,true);
		} else {
			// ***** Draw Weapon
			sbDrawLine(m_ctxCv1,0,0,m_iCvWt,m_iCvHt,iSt,iPar,1,(m_bSnapFill == 1));
		}
		// SnapShot
		iShotIdx = Math.floor(iSt * ((m_iCvDrawWt2 * m_iCvDrawHt2) / (m_iMiniWt2 * m_iMiniHt2) / 2) + iPar * ((m_iCvDrawWt2 * m_iCvDrawHt2) / (m_iMiniWt2 * m_iMiniHt2) / 2 - 1));
		if (iShotIdx > m_iShotLast) {
			iXPlus =           (iShotIdx % (m_iCvDrawWt2 / m_iMiniWt2)) * m_iMiniWt2;
			iYPlus = Math.floor(iShotIdx / (m_iCvDrawWt2 / m_iMiniWt2)) * m_iMiniHt2;
			
			m_ctxCv2.strokeStyle = (m_iSnapReverse == 1 || ((m_iSnapReverse == 2 || m_iSnapReverse == 3) && ((iShotIdx % (m_iCvDrawWt2 / m_iMiniWt2)) + Math.floor(iShotIdx / (m_iCvDrawWt2 / m_iMiniWt2))) % 2 == m_iSnapReverse % 2)) ? m_strSnapForeColor : m_strSnapBackColor;
			m_ctxCv2.fillStyle = m_ctxCv2.strokeStyle;
			m_ctxCv2.beginPath();
			m_ctxCv2.rect(iXPlus,iYPlus,m_iMiniWt2,m_iMiniHt2);
			m_ctxCv2.fill();
			m_ctxCv2.strokeStyle = (m_iSnapReverse == 1 || ((m_iSnapReverse == 2 || m_iSnapReverse == 3) && ((iShotIdx % (m_iCvDrawWt2 / m_iMiniWt2)) + Math.floor(iShotIdx / (m_iCvDrawWt2 / m_iMiniWt2))) % 2 == m_iSnapReverse % 2)) ? m_strSnapBackColor : m_strSnapForeColor;
			m_ctxCv2.fillStyle = m_ctxCv2.strokeStyle;
			
			sbDrawLine(m_ctxCv2,iXPlus,iYPlus,m_iMiniWt2,m_iMiniHt2,iSt,iPar,1,(m_bSnapFill == 1));
			if (m_iSnapFrame == 1) {
				m_ctxCv2.beginPath();
				m_ctxCv2.rect(iXPlus + m_ctxCv2.lineWidth / 2,iYPlus + m_ctxCv2.lineWidth / 2,m_iMiniWt2 - m_ctxCv2.lineWidth,m_iMiniHt2 - m_ctxCv2.lineWidth);
				m_ctxCv2.stroke();
			}
			m_iShotLast = iShotIdx;
		}
	}
	
	// ********** End Animation
	if (m_iAnime == ((m_iWait + m_iRlMove + 1) * m_iPatnCnt - 1) + 2) {
		// Frame
		sbDrawFrame(m_ctxCv1,0,0,m_iCvWt,m_iCvHt);
		
		// Message
		if (m_astrText.length > 2) {
			sbSend_ViewAlert(m_astrText[2]);
		}
		if (m_astrText.length > 3) {
//			fnSend_amazon('buki_links','Hobbies',EscapeUTF8(m_astrText[3]),5);	//Blended
			sbGetAmazon('links','buki-22','',EscapeUTF8(m_astrText[3]),'',180,5);
		}
		
		// ********** Check Time
		dNow = new Date();
		//alert(parseInt((dNow.getTime() - m_dStart.getTime())));
	}
	
	// ********** Add FrameCount
	if (m_iAnime >= 0 && m_iAnime <= ((m_iWait + m_iRlMove + 1) * m_iPatnCnt - 1) + 2) {
		m_iAnime ++;
	}
}

function sbSend_ViewAlert(strMsg) {
	document.getElementById('buki_alert').innerHTML = '<table><tr><td>' + strMsg + '</td></tr></table>';
}

function fnSend_anobuki() {
	var strReq;
	strReq = '';
	strReq += 'nm=' + EscapeEUCJP(document.getElementById('buki_req').value);
	strReq += '&mode=' + document.getElementById('buki_mode').value;
	if (m_iAnime > ((m_iWait + m_iRlMove + 1) * m_iPatnCnt - 1) + 2 || strReq != m_strReq) {
		m_iAnime = -1;
		sbSend_ViewAlert('');
		fnGetValue_anobuki(strReq,'buki_res');
		m_strReq = strReq;
	}
	return false;
}
function sbChangeSize_anobuki() {
	m_iSnapMode = (m_iSnapMode + 1) % 8;
	if        (m_iSnapMode == 0) { m_iCvDrawHt2 = 360; m_iMiniWt2 = 180;
	} else if (m_iSnapMode == 1) { m_iCvDrawHt2 = 360; m_iMiniWt2 = 120;
	
	} else if (m_iSnapMode == 2) { m_iCvDrawHt2 = 540; m_iMiniWt2 = 180;
	
	} else if (m_iSnapMode == 3) { m_iCvDrawHt2 = 720; m_iMiniWt2 = 180;
	} else if (m_iSnapMode == 4) { m_iCvDrawHt2 = 720; m_iMiniWt2 = 120;
	
	} else if (m_iSnapMode == 5) { m_iCvDrawHt2 = 960; m_iMiniWt2 = 120;
	} else if (m_iSnapMode == 6) { m_iCvDrawHt2 = 960; m_iMiniWt2 = 240;
	
	} else if (m_iSnapMode == 7) { m_iCvDrawHt2 = 90;  m_iMiniWt2 =  90;
//	} else if (m_iSnapMode == 8) { m_iCvDrawHt2 = 144; m_iMiniWt2 = 144;
	}
	m_iMiniHt2 = m_iMiniWt2;
	
	m_strDefine = '';
}

function sbChangeColor_anobuki(iTarget) {
	var strColor = Math.floor(Math.random() * 0xFFF).toString(16);
	var iIdx;
	iIdx = Math.floor(Math.random() * 10);
	if        (iIdx == 0) { strColor = '000';
	} else if (iIdx == 1) { strColor = 'fff';
	}
	for(iIdx = strColor.length; iIdx < 3; iIdx++){
		strColor = '0' + strColor;
	}
	strColor = '#' + strColor;
	if        (iTarget == 0) { m_strSnapForeColor = (strColor == m_strSnapBackColor ? '#888' : strColor);
	} else if (iTarget == 1) { m_strSnapBackColor = (strColor == m_strSnapForeColor ? '#888' : strColor);
	}
	m_strDefine = '';
}

function sbChangeReverse_anobuki() {
	m_iSnapReverse = (m_iSnapReverse + 1) % 4;
	m_strDefine = '';
}

function sbChangeFrame_anobuki() {
	m_iSnapFrame = (m_iSnapFrame + 1) % 2;
	m_strDefine = '';
}

function sbChangeFill_anobuki() {
	m_bSnapFill = (m_bSnapFill + 1) % 2;
	m_strDefine = '';
}

function sbChangeLineWidth_anobuki() {
	m_iSnapLineWidth = (m_iSnapLineWidth + 0.5) % 3 + 0.5;
	m_strDefine = '';
}

function sbChangeOsusume_anobuki() {
	m_iSnapMode = 3;
	m_strSnapForeColor = '#c33';
	m_strSnapBackColor = '#fff';
	m_iSnapReverse = 2;
	m_iSnapFrame = 0;
	m_bSnapFill = 1;
	
	sbChangeSize_anobuki();
}

// EnterKey Event
var m_elmFocus;
function fnFocus_anobuki(elmNum){
	m_elmFocus = elmNum
	elmNum.style.backgroundColor = '#aa8';
	elmNum.select();
}
function fnBlur_anobuki(elmNum){
	elmNum.style.backgroundColor = '';
}
function fnGetKeycode_anobuki(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_anobuki(e){
	if(fnGetKeycode_anobuki(e) == 13) {
		if        (m_elmFocus.id == 'buki_send') { document.getElementById('buki_req').focus();  fnSend_anobuki();
		} else if (m_elmFocus.id == 'buki_req')  { document.getElementById('buki_send').focus(); fnSend_anobuki();
		}
		return false;
	}
}

document.onkeypress = fnKeyPress_anobuki;

function getNodeValue(nodeCurrent,strChildTagName){
	var nodesChild;
	var strValue = '';
	nodesChild = nodeCurrent.getElementsByTagName(strChildTagName);
	
	if (nodesChild.length > 0) {
		var node = nodesChild.item(0);
		var txtNode = node.firstChild;
		strValue = txtNode.nodeValue;
	}
	return strValue;
}
