 var Elapsed = 10000;
 var Chars = new Array(12354, 12356, 12358, 12360, 12362, //5
		       12363, 12365, 12367, 12369, 12371, //10
		       12364, 12366, 12368, 12370, 12372, //15
		       12373, 12375, 12377, 12379, 12381, //20
		       12374, 12376, 12378, 12380, 12382, //25
		       12383, 12385, 12388, 12390, 12392, //30
		       12384, 12386, 12389, 12391, 12393, //35
		       12394, 12395, 12396, 12397, 12398, //40
		       12399, 12402, 12405, 12408, 12411, //45
		       12400, 12403, 12406, 12409, 12412, //50
		       12401, 12404, 12407, 12410, 12413, //55
		       12414, 12415, 12416, 12417, 12418, //60
		       12420, 12422, 12424, //63
		       12425, 12426, 12427, 12428, 12429, // 68
		       12431, 12434, 12435); // 71
 var Text = new Array('a', 'i', 'u', 'e', 'o',
                      'ka', 'ki', 'ku', 'ke', 'ko',
		      'ga', 'gi', 'gu', 'ge', 'go',
		      'sa', 'shi', 'su', 'se', 'so',
		      'za', 'ji', 'zu', 'ze', 'zo',
		      'ta', 'chi', 'tsu', 'te', 'to',
		      'da', 'ji', 'du', 'de', 'do',
		      'na', 'ni', 'nu', 'ne', 'no',
		      'ha', 'hi', 'fu', 'he', 'ho',
		      'ba', 'bi', 'bu', 'be', 'bo',
		      'pa', 'pi', 'pu', 'pe', 'po',
		      'ma', 'mi', 'mu', 'me', 'mo',
		      'ya', 'yu', 'yo', 
		      'ra', 'ri', 'ru', 're', 'ro', 
		      'wa', 'wo', 'n'
		      );
 var Levels = 16;
 var Speed = new Array (100,  90,   80,   75,   70,   65,   60,    55,    50,    45,    40,    35,    30,    25,    20,    15);
 var Jumps = new Array (1000, 2000, 3000, 5000, 7000, 9000, 10000, 13000, 17000, 20000, 24000, 28000, 32000, 35000, 38000, 42000);
 var Limits = new Array(5,    10,   15,   20,   25,   30,   35,    40,    45,    50,    55,    60,    63,    68,    71,    71);
 var Current = 0;
 var First = 1;
 var Points = 0;
 var Level = 1;
 var Mig = 0;
 var HintTimeout = 0;
 var MigCounter = 0;
 var WasOK = 1;
 var Started = 0;
 var CharOffset = 0;
 var NewOffset = 0;
 var BonusTime = 0;
 var MadeHint = 0;
 function UpdateTable(){
    if (Level == Levels){
	document.getElementById('level').innerHTML = Level + " (last) ";
    } else
    {
        document.getElementById('level').innerHTML = Level;
    }
    document.getElementById('points').innerHTML = Points;    
    document.getElementById('level').innerHTML = Level;
 }
 
 function Timer(){
    Elapsed++;
    var Last;
    Last = Current;
    if ((MigCounter > 0) && (!MadeHint)){
	if (MigCounter == 1){
    	    document.getElementById('h').className = 'h';	    
	}
	MigCounter--;
    }
    if (MadeHint){
	HintTimeout--;
    }
    if ((!First) && (Started) && (!WasOK) && (Elapsed > Speed[Level - 1]) && (!MadeHint)){
	 document.getElementById('char').innerHTML = Text[Current];
	 MadeHint = 1;
	 BonusTime = 20;
	 HintTimeout = 20;
	 Mig = 2;
    }
    if (Mig == 1){
	document.getElementById('h').className = 'hyes';
	MigCounter = 3;
	Mig = 0;
    }
    if (Mig == 2){
	document.getElementById('h').className = 'hno';
	MigCounter = 3;
	Mig = 0;
    }
    if ((MadeHint) && (HintTimeout/4%2 == 0)){
	 document.getElementById('char').innerHTML = "&"+ "#" + (Chars[Current] + CharOffset) + ";";
    }
    if ((MadeHint) && (HintTimeout/4%2 == 1)){
	 document.getElementById('char').innerHTML = Text[Current];
//	 document.getElementById('char').innerHTML = "&"+ "#" + (Chars[Current] + CharOffset) + ";";
    }
    if ((Started) && (Elapsed > Speed[Level - 1] + BonusTime)){
        while (Current == Last){
	 Current = Math.floor(71 * Math.random());
	 document.getElementById('char').innerHTML = "&"+ "#" + (Chars[Current] + CharOffset) + ";";
	}
	if (!WasOK){
	    if (Points - 600 >= 0){
		Points -= 600;
	    } else
	    {
		Points = 0;
	    }
	    UpdateTable();
	}
	if ((Level < Levels) && (Points > Jumps[Level - 1])){
	    Level++;
	    UpdateTable();
	}
	if ((Level > 1) && (Points < Jumps[Level - 1 - 1])){
	    Level--;
	    UpdateTable();
	}
	First = 0;
	MadeHint = 0;
	WasOK = 0;
	Elapsed = 0;
    }
 }
 function Key(){
     var t = document.getElementById('input');
     if (!Started){
        First = 1;
        t.value = "";
        Started = true;
	CharOffset = NewOffset;
	return false;
     }
     if (t.value == ""){
        return false;
     }
     if (MadeHint){
        t.value = "";
	return false;
     }
     if (t.value == Text[Current]){
        Points += 100;
	Mig = 1;
	Elapsed = 1000;
	WasOK = 1;
	UpdateTable();
     } else
     {
        Mig = 2;
        if (Points - 300 >= 0){
	    Points -= 300;
	} else
	{
	    Points = 0;
	}
	UpdateTable();
     }
     t.value = "";
     return false;
 }
 function Restart(){
    document.getElementById('input').focus()
    Started = 0;
    WasOK = 1;
    Elapsed = 10000;
    Points = 0;
    Level = 1;
    UpdateTable();
    document.getElementById('char').innerHTML = '<span style = "font-size: 21px; font-family: verdana">Aby rozpoczac gre, wcisnij ENTER !</span>';
 }
 function Custom(){
    var l = parseInt(prompt('Od ktorego poziomu trudnosci chcesz rozpoczac gre (od 1 do ' + Levels + ')?', 1));
    if ((l >=1) && (l <=Levels)){
	document.getElementById('input').focus()
	Started = 0;
	WasOK = 1;
	Elapsed = 10000;
	if (l == 1){
	    Points = 0;
	} else
	{
	    Points = Jumps[l - 1 - 1];	
	}
	Level = l;
	UpdateTable();
	document.getElementById('char').innerHTML = '<span style = "font-size: 21px; font-family: verdana>Aby rozpoczac gre, wcisnij ENTER !</span>';
    }
 }
 function Switch(){
    var l = document.getElementById('switch');
    if (NewOffset == 0){
	NewOffset = 96;
	l.innerHTML = "HIRAGANE";
    } else
    {
	NewOffset = 0;
	l.innerHTML = "KATAKANE";
    }
    document.getElementById('input').focus()
 }
 UpdateTable();
 setInterval("Timer()", 100);
 document.getElementById('input').focus();

