var soruSayisi = {ooo:30, oks:25};
var bolen      = {ooo:4,  oks:3};
var tdnum      = {ooo:8,  oks:4};
var msg_id     = {
	ooo:['&nbsp;<br>&nbsp;', '1', '2', '3'],
	oks:['&nbsp;', 'TMpuan', 'MFpuan', 'OOpuan']
}

function getNet(frm, ne, eleman) {
	var i, d, y, n, net;
	document.getElementById('ikaz').innerHTML = '&nbsp;';
	for (i = 0; i < tdnum[ne]; i++) {
		d = frm.elements[ne + 'd_' + i];
		y = frm.elements[ne + 'y_' + i];
		n = frm.elements[ne + 'n_' + i];
		
		dogru  = isNaN(parseInt(d.value)) ? 0 : parseInt(d.value);
		yanlis = isNaN(parseInt(y.value)) ? 0 : parseInt(y.value);
		
		if (dogru + yanlis > soruSayisi[ne]) {
			d.value = '';
			y.value = '';
			n.value = '';
			resetForm(frm, ne);
			
			document.getElementById('ikaz').innerHTML = 'Doğru ve yanlış soru sayısı ' + soruSayisi[ne] + ' den buyuk olamaz!';
			return;
		}
		
		d.value = dogru == 0 ? '' : dogru;
		y.value = yanlis == 0 ? '' : yanlis;
		net = Math.round(100*(dogru - yanlis/bolen[ne]))/100;
		if (n.value == '')
			n.value = net == 0 ? '' : net;
		else if (net != 0)
			n.value = net;
				
	}
	getPuan(frm, ne, eleman);
}

function getPuan(frm, ne, eleman) {
	var i, j, n, dummy, val, puan_msg= [];
	document.getElementById('ikaz').innerHTML = '&nbsp;';
	if (ne == 'ooo') {
		var nt = {tr:0, s1:0, m1:0, f1:0, es:0,  s2:0, m2:0, f2:0};
		var pn = {SAY1:0, SAY2:0, SÖZ1:0, SÖZ2:0, EA1:0, EA2:0};
	} else {
		var nt = {tur:0, mat:0, fen:0, sos:0};
		var pn = {TM:0, MF:0, OO:0};
	}
	i = 0;
	for (j in nt) {
		d = frm.elements[ne + 'd_' + i];
		y = frm.elements[ne + 'y_' + i];
		n = frm.elements[ne + 'n_' + i];
		
		val = n.value.replace(/,/, '.');
		n.value = val;
		dummy = parseFloat(val);
		
		if (!isNaN(dummy)) nt[j] = dummy;
		
		if (nt[j] > soruSayisi[ne]) {
			n.value = '';
			resetForm(frm, ne);
			document.getElementById('ikaz').innerHTML = 'net > ' + soruSayisi[ne] + ' olamaz!';
			return;
		}
		
		dogru  = isNaN(parseInt(d.value)) ? 0 : parseInt(d.value);
		yanlis = isNaN(parseInt(y.value)) ? 0 : parseInt(y.value);
		
		if (Math.round(100*(dogru - yanlis/bolen[ne]))/100 != nt[j]) {
			d.value = '';
			y.value = '';
		}
		
		i++;
	}
	
	if (ne == 'ooo') {
		if (chkNet(2, nt['tr'], nt['s1'], nt['m1'], nt['f1'])) {
			pn['SAY1'] = calc(nt, k_ooo, 'SAY1');
			pn['SOZ1'] = calc(nt, k_ooo, 'SOZ1');
			pn['EA1']  = calc(nt, k_ooo, 'EA1');
		} else
			pn['SAY1'] = pn['SOZ1'] = pn['EA1']  = 'Hesaplanmadı';
		
		puan = calc(nt, k_ooo, 'SAY2');
		pn['SAY2'] = chkNet(2, nt['tr'], nt['s1'], nt['m1'], nt['f1']) && chkNet(2, nt['m2'], nt['f2']) ? puan : 'Hesaplanmadı';
		
		puan = calc(nt, k_ooo, 'SOZ2');
		pn['SOZ2'] = chkNet(2, nt['tr'], nt['s1'], nt['m1'], nt['f1']) && chkNet(2, nt['es'], nt['s2']) ? puan : 'Hesaplanmadı';
		
		puan = calc(nt, k_ooo, 'EA2');
		pn['EA2'] = chkNet(2, nt['tr'], nt['s1'], nt['m1'], nt['f1']) && chkNet(2, nt['es'], nt['m2']) ? puan : 'Hesaplanmadı';
	} else {
		pn['TM'] = calc(nt, k_oks, 'TM');
		pn['FM'] = calc(nt, k_oks, 'FM');
		pn['OO'] = calc(nt, k_oks, 'OO');
	}
	
	for (i in pn)
		if (!isNaN(pn[i]))
			pn[i] = Math.round(1000*pn[i])/1000;
	
	if (ne == 'ooo') {
		puan_msg.push('<b>SAY1</b>: ' + pn['SAY1'] + '<br>\n<b>SAY2</b>: ' + pn['SAY2']);
		puan_msg.push('<b>SÖZ1</b>: ' + pn['SOZ1'] + '<br>\n<b>SÖZ2</b>: ' + pn['SOZ2']);
		puan_msg.push('<b>EA1</b>: '  + pn['EA1']  + '<br>\n<b>EA2</b>: '  + pn['EA2']);
	} else {
		puan_msg.push('<b>TM Puanı</b> : ' + pn['TM']);
		puan_msg.push('<b>FM Puanı</b> : ' + pn['FM']);
		puan_msg.push('<b>ÖO Puanı</b> : ' + pn['OO']);
	}
	
	var msgID = msg_id[ne];
	for (i = 1; i < msgID.length; i++)
		document.getElementById(msgID[i]).innerHTML = puan_msg[i-1];
		
	shiftFocus(frm, eleman);
}

function calc(net, katsayi, hangipuan) {
	var i, j = 1;
	var kat = katsayi[hangipuan];
	var sum = kat[0];
	for (i in net)
	{
		sum += net[i]*kat[j++];
	}
	return sum;
}

function chkNet(num) {
	var sayac = 0, i;
	for (i = 1; i < arguments.length; i++) {
		if (arguments[i] >= .5) sayac++;
		if (sayac >= num) return true;
	}
	return false;
}

function resetForm(frm, ne) {
	var msgID = msg_id[ne], i;
	for (i = 1; i < msgID.length; i++)
		document.getElementById(msgID[i]).innerHTML = msgID[0];
}

function shiftFocus(frm, elm) {
	if (!elm) return;
	var maxLength = elm.getAttribute('maxlength');
	if (elm.value.length < maxLength) return;
	
	var dummy = elm.name.split('');
	if (dummy[3] == 'd')
		dummy[3] = 'y';
	else if (dummy[3] == 'y') {
		dummy[3] = 'd';
		dummy[5]++;
	} else if (dummy[3] == 'n')
		dummy[5] = 1*dummy[5] + 1;
	dummy = dummy.join('');
	
	if (frm[dummy]) frm[dummy].focus();
}
