/**
* @author Masayuki Daijima
* http://www.daijima.jp/
* http://twitter.com/daijimachine
*/


var PI2=Math.PI*2;var RADIUS=100;var RADIUS2=30;var COLOR="rgb(187,187,187)";var MO_COLOR="rgb(12,137,173)";var isWin=(navigator.appVersion.toLowerCase().indexOf("win")!=-1)?true:false;var isIE=(navigator.userAgent.toLowerCase().indexOf("msie")!=-1)?true:false;var _lineWidthBold;var _lineWidthNormal;var _lineWidthThin;if(isWin){_lineWidthBold=1;_lineWidthNormal=0.6;_lineWidthThin=0.4}else{_lineWidthBold=1;_lineWidthNormal=0.9;_lineWidthThin=0.6}var _velocity=0.3;var _mouseX,_mouseY;var _mouseX2,_mouseY2;var _mouseX3,_mouseY3;var _mouseX4,_mouseY4;var _mouseX5,_mouseY5;var _canvas,_bt1_canvas,_bt2_canvas,_bt3_canvas,_bt4_canvas;var _ctx,_ctx2,_ctx3,_ctx4,_ctx5;var _sw,_sh,_swh,_shh;var _len,_len2,_len3,_len4,_len5;var _dotList=[];var _dotList2=[];var _dotList3=[];var _dotList4=[];var _dotList5=[];var _lineList=[];var _lineList2=[];var _lineList3=[];var _lineList4=[];var _lineList5=[];var _bt1w=120;var _bt1h=60;var _bt2w=160;var _bt2h=60;var _bt3w=173;var _bt3h=60;var _bt4w=185;var _bt4h=60;var _bt1wh=_bt1w/2;var _bt1hh=_bt1h/2;var _bt2wh=_bt2w/2;var _bt2hh=_bt2h/2;var _bt3wh=_bt3w/2;var _bt3hh=_bt3h/2;var _bt4wh=_bt4w/2;var _bt4hh=_bt4h/2;var _currentMouseOverNum;var _charaGroups=[];var _mouseOverLineList=[];var _timer;(function(){window.onload=function(){_canvas=document.getElementById("canvas");if(_canvas.getContext){_bt1_canvas=document.getElementById("bt1");_bt2_canvas=document.getElementById("bt2");_bt3_canvas=document.getElementById("bt3");_bt4_canvas=document.getElementById("bt4");setStageSize();setCanvasSize();initDot();initLine();initCharaGroup();setEvents();_timer=setInterval(update,1000/30);update()}}})();function setEvents(){if(window.addEventListener){window.addEventListener("resize",onResize,true);window.addEventListener("mousemove",onMouseMove,true);window.addEventListener("orientationchange",onOrientationChange,true)}else{window.onresize=onResize;window.onmousemove=document.onmousemove=onMouseMove}if(document.addEventListener){document.addEventListener("touchstart",onTouchMove,true);document.addEventListener("touchmove",onTouchMove,true);document.addEventListener("touchend",onTouchMove,true)}}function onResize(){setStageSize();setCanvasSize()}function onMouseMove(a){_mouseX=a.clientX-document.body.scrollLeft-_swh;_mouseY=a.clientY-document.body.scrollTop-_shh}function onTouchMove(c){if(c.touches[0]){var b=c.touches[0].pageX-document.body.scrollLeft-_swh;var a=c.touches[0].pageY-document.body.scrollTop-_shh;if(b>-400&&b<400&&a>-50&&a<10){c.preventDefault()}_mouseX=b;_mouseY=a}}function onOrientationChange(a){onResize()}function onMouseOverHandler(a){_currentMouseOverNum=a}function onMouseOutHandler(){_currentMouseOverNum=0}function setStageSize(){_canvas.width=1;_canvas.height=1;_sw=document.body.scrollWidth;_sh=document.body.scrollHeight}function setCanvasSize(){_swh=_sw>>1;_shh=_sh>>1;_mouseX=_swh;_mouseY=_shh;_mouseX2=_bt1wh;_mouseY2=_bt1hh;_mouseX3=_bt2wh;_mouseY3=_bt2hh;_mouseX4=_bt3wh;_mouseY4=_bt3hh;_mouseX5=_bt4wh;_mouseY5=_bt4hh;_canvas.width=_sw;_canvas.height=_sh;_bt1_canvas.width=_bt1w;_bt1_canvas.height=_bt1h;_bt2_canvas.width=_bt2w;_bt2_canvas.height=_bt2h;_bt3_canvas.width=_bt3w;_bt3_canvas.height=_bt3h;_bt4_canvas.width=_bt4w;_bt4_canvas.height=_bt4h}function initDot(){initDotList();_len=_dotList.length;_len2=_dotList2.length;_len3=_dotList3.length;_len4=_dotList4.length;_len5=_dotList5.length;_ctx=_canvas.getContext("2d");for(var b=0;b<_len;b++){var a=_dotList[b];a.defX=a.x;a.defY=a.y}initButtonDot(1);initButtonDot(2);initButtonDot(3);initButtonDot(4)}function initButtonDot(num){var id=eval(num+1);var canvas=this["_bt"+num+"_canvas"];var c;var btw=this["_bt"+num+"w"];var bth=this["_bt"+num+"h"];var len=this["_len"+id];var list=this["_dotList"+id];if(canvas.getContext){c=this["_ctx"+id]=canvas.getContext("2d");for(var i=0;i<len;i++){var dot=list[i];dot.defX=dot.x;dot.defY=dot.y}}}function update(){var a=_charaGroups.length;for(var b=0;b<a;b++){_charaGroups[b].update()}_mouseX2=_mouseX+259;_mouseY2=_mouseY-150;_mouseX3=_mouseX+119;_mouseY3=_mouseY-150;_mouseX4=_mouseX-47.5;_mouseY4=_mouseY-150;_mouseX5=_mouseX-226.5;_mouseY5=_mouseY-150;drawTitle();drawButton(1);drawButton(2);drawButton(3);drawButton(4)}function drawTitle(){_ctx.fillStyle=COLOR;_ctx.strokeStyle=COLOR;_ctx.lineWidth=_lineWidthBold;_ctx.clearRect(0,0,_sw,_sh);for(var c=0;c<_len;c++){var a=_dotList[c];var d=a.defX-_mouseX;var b=a.defY-_mouseY;var g=Math.atan2(b,d);var e=Math.sqrt(d*d+b*b);var h=_mouseX+Math.cos(g)*RADIUS;var f=_mouseY+Math.sin(g)*RADIUS;if(e<RADIUS){a.x+=(h-a.x)*_velocity;a.y+=(f-a.y)*_velocity}else{a.x+=(a.defX-a.x+a.moveX)*_velocity;a.y+=(a.defY-a.y+a.moveY)*_velocity}_ctx.beginPath();_ctx.arc(_swh+a.x,_shh+a.y,3,0,PI2,false);_ctx.closePath();_ctx.fill()}for(var c=0;c<_lineList.length;c++){var j=_lineList[c];j.draw(_swh,_shh)}}function drawButton(num){var id=eval(num+1);var c=this["_ctx"+id];var btw=this["_bt"+num+"w"];var bth=this["_bt"+num+"h"];var btwh=this["_bt"+num+"wh"];var bthh=this["_bt"+num+"hh"];var len=this["_len"+id];var list=this["_dotList"+id];var mX=this["_mouseX"+id];var mY=this["_mouseY"+id];var lineList=this["_lineList"+id];c.fillStyle=MO_COLOR;c.strokeStyle=MO_COLOR;c.clearRect(0,0,btw,bth);if(_currentMouseOverNum==num){c.beginPath();var p1X=30;var p1Y=bthh+12;var p2X=btw-30;var p2Y=bthh+12;c.arc(p1X,p1Y,1,0,PI2,false);c.closePath();c.fill();c.beginPath();c.arc(p2X,p2Y,1,0,PI2,false);c.closePath();c.fill();c.lineWidth=_lineWidthThin;c.beginPath();c.moveTo(p1X,p1Y);c.lineTo(p2X,p2Y);c.closePath();c.stroke()}c.lineWidth=_lineWidthNormal;for(i=0;i<len;i++){var dot=list[i];var difX=dot.defX-mX;var difY=dot.defY-mY;var rad=Math.atan2(difY,difX);var dist=Math.sqrt(difX*difX+difY*difY);var targetX=mX+Math.cos(rad)*RADIUS2;var targetY=mY+Math.sin(rad)*RADIUS2;if(dist<RADIUS2){dot.x+=(targetX-dot.x)*_velocity;dot.y+=(targetY-dot.y)*_velocity}else{dot.x+=(dot.defX-dot.x)*_velocity;dot.y+=(dot.defY-dot.y)*_velocity}c.beginPath();c.arc(btwh+dot.x,bthh+dot.y,1.8,0,PI2,false);c.closePath();c.fill()}for(i=0;i<lineList.length;i++){line=lineList[i];line.draw(btwh,bthh)}};
