/*
Katakana, ©Copyright 2006 - bezumie.com, All Rights Reserved
Катакана, ©Copyright 2006 - bezumie.com, Всички права запазени
*/
var gameIsOver;
var K=['a','i','u','e','o','ka','ki','ku','ke','ko','sa','shi','su','se','so','ta','chi','tsu','te','to','na','ni','nu','ne','no','ha','hi','fu','he','ho','ma','mi','mu','me','mo','ya','yu','yo','ra','ri','ru','re','ro','wa','wo','n'];
var Ki=[];
var Ks=null;
var Kx=0;
var Ky=0;
var Kq=[];
var Aq=[];
var level=0;
var Kleft=0;
var zInd=0;
var mistakes;
function rand(a,b){
	return Math.floor(Math.random()*(b-a+1)+a);
}
function setOpacity(el,op){
	if(!el)return;
	if(op==''){
		el.style.opacity='';
		el.style.MozOpacity='';
		el.style.filter='';
	}
	else{
		el.style.opacity=op;
		el.style.MozOpacity=op;
		el.style.filter='alpha(opacity='+(op*100)+')';
	}
}
function gameOver(win){
	gameIsOver=true;
	if(win){document.getElementById('congratulations').style.display='block';}
	else{document.getElementById('gameOver').style.display='block';}
}
function mistake(){
	mistakes++;
	document.getElementById('mistakes').innerHTML=mistakes;
	if(mistakes>=3)gameOver(false);
}
function randomPos(el,tip){
	var z=0;
	var bad=true;
	var e;
	var kx,ky;
	var ex,ey;
	var i;
	while(bad){
		kx=rand(0,(599-Kw));
		ky=rand((tip*200),((tip+1)*200-Kh));
		bad=false;
		for(i=0;i<level;i++){
			if(tip===0){e=Aq[i];}
			else {e=Kq[i];}
			ex=e.offsetLeft;
			ey=e.offsetTop;
			if((kx>ex-Kw)&&(kx<ex+Kw)&&(ky>ey-Kh)&&(ky<ey+Kh)){bad=true;}
		}
		z++;
		if(z>100){bad=false;}
	}
	el.style.left=kx+'px';
	el.style.top=ky+'px';
}
function createalpha(aA){
	var a=document.createElement('div');
	a.id="a_"+aA;
	a.className='alpha';
	var txt=document.createTextNode(aA);//aA.toUpperCase();
	a.appendChild(txt);
	a.style.display='none';
	document.getElementById('table').appendChild(a);
	return a;
}
function createkana(aK){
	if(!Ki[aK]){
		Ki[aK]=new Image(Kw,Kh);
		Ki[aK].src='img/'+aK+'.png';
	}
	var k=new Image(Kw,Kh);
	k.src=Ki[aK].src;
	k.className='kana';
	k.style.zIndex=100;
	k.id=aK;
	k.style.display='none';
	document.getElementById('table').appendChild(k);
	k.onmousedown=kanad;
	k.ondragstart=function(){return false;};
	return k;
}
function hidekana(aK){
	var k=document.getElementById(aK);
	document.getElementById('table').removeChild(k);
	delete k;
}
function kanam(e){
	if(Ks===null){return;}
	var tx,ty;
	if(e.pageX){
		tx=e.pageX;
		ty=e.pageY;
	}
	else if(e.x){
		tx=e.x;
		ty=e.y;
	}
	else{return;}
	tx=tx+Kx;
	ty=ty+Ky;
	Ks.style.left=tx+'px';
	Ks.style.top=ty+'px';

	if(e.stopPropagation){e.stopPropagation();}
	else{e.cancelBubble=true;}
	if(e.preventDefault){e.preventDefault();}
    else{e.returnValue=false;}
}
function kanau(e){
	if(Ks===null){return;}
	if(document.removeEventListener){
		document.removeEventListener("mouseup",kanau,true);
		document.removeEventListener("mousemove",kanam,true);
	}
	else if(document.detachEvent){
		document.detachEvent("onmouseup",kanau);
		document.detachEvent("onmousemove",kanam);
	}
	if(e.stopPropagation){e.stopPropagation();}
	else{e.cancelBubble=true;}
	if(e.preventDefault){e.preventDefault();}
	e.returnValue=false;
	var kx=Ks.offsetLeft+Kw/2;
	var ky=Ks.offsetTop+Kh/2;
	var ax,ay;
	var a;
	for(var i=0;i<level;i++){
		a=document.getElementById('a_'+K[i]);
		ax=a.offsetLeft;
		ay=a.offsetTop;
		if((kx>ax)&&(kx<ax+Kw)&&(ky>ay)&&(ky<ay+Kh)){
			if(a.id==='a_'+Ks.id){
				Ks.style.left=(ax)+'px';
				Ks.style.top=(ay)+'px';
				a.style.display='none';
				kanadone(Ks);
			}
			else{
				mistake();
				Ks.style.borderColor='red';
			}
			break;
		}
	}
	Ks=null;
}
function kanad(e){
	if(gameIsOver){return;}
	if(!e){e=window.event;}
	if(!e.which){e.which=e.button;}
	if(e.which>1){return;}
	var k;
	if(e.target){k=e.target;}
	else{k=e.srcElement;}
	if(e.preventDefault){e.preventDefault();}
	e.returnValue=false;
	if(k.done){return;}
	zInd++;
	k.style.zIndex=zInd;
	var cx=k.offsetLeft;
	var cy=k.offsetTop;
	var tx,ty;
	if(e.pageX){
		tx=e.pageX;
		ty=e.pageY;
	}
	else if(e.x){
		tx=e.x;
		ty=e.y;
	}
	else{return;}
	Ks=k;
	Kx=cx-tx;
	Ky=cy-ty;

	if(document.addEventListener){
		document.addEventListener('mousemove',kanam,false);
		document.addEventListener('mouseup',kanau,false);
	}else if(document.attachEvent){
		document.attachEvent('onmousemove',kanam);
		document.attachEvent('onmouseup',kanau);
	}
}
function nextLevel(){
	for(var i=0;i<level;i++){
		Kq[i].style.display='none';
		Aq[i].style.display='none';
		Aq[i].style.borderColor='black';
		Aq[i].style.color='black';
		Aq[i].style.left='0px';
		Aq[i].style.top='0px'
		Kq[i].style.left='0px';
		Kq[i].style.top='0px';
		Kq[i].style.borderColor='black';
	}
	var w=0;
	var h=0;
	if(level===K.length){
		gameOver(true);
		for(i=0;i<K.length;i++){
			Kq[i].style.display='block';
			w+=Kw;
			if(w>600-Kw){
				h+=Kh;
				w=0;
			}
			Kq[i].style.left=w+'px';
			Kq[i].style.top=h+'px';
		}
		return;
	}
	var k=createkana(K[level]);
	Kq.push(k);
	var a=createalpha(K[level]);
	Aq.push(a);
	//level++;
	var l=Math.floor((level+1)/2);
	var t=[level];
	while(l){
		i=rand(0,level);
		if(t.toString().indexOf(i)==-1){
			l--;
			t.push(i);
		}
	}
	level++;
	l=t.length;
	for(i=0;i<l;i++){
		randomPos(Kq[t[i]],1);
		Kq[t[i]].style.display='block';
		kanaundone(Kq[t[i]]);
		randomPos(Aq[t[i]],0);
		Aq[t[i]].style.display='block';
	}
	Kleft=l;
	document.getElementById('level').innerHTML=level;
}
function kanadone(aK){
	aK.done=true;
	aK.style.cursor="default";
	setOpacity(aK,0.7);
	Kleft--;
	if(Kleft<=0){nextLevel();}
}
function kanaundone(aK){
	aK.done=false;
	aK.style.cursor="pointer";
	setOpacity(aK,1.0);
}
function init(){
	gameIsOver=false;
	mistakes=0;
	nextLevel();
	zInd=10;
}