var soruSayisi = {oss:30, oks:25};
var bolen      = {oss:4,  oks:3};
var tdnum      = {oss:8,  oks:4};
var msg_id     = {
	oss:['&nbsp;<br>&nbsp;', 'saypuan', 'sozpuan', 'esapuan'],
	oks:['&nbsp;', 'TMpuan', 'MFpuan']
}
// hesaplanan
/*
var k_oss      = {
	SAY1:[128.547, 0.747, 0.527, 2.223, 2.216, 0, 0, 0, 0],
	SOZ1:[126.963, 2.551, 1.886, 0.684, 0.648, 0, 0, 0, 0],
	 EA1:[126.326, 2.130, 0.843, 2.138, 0.677, 0, 0, 0, 0],
	SAY2:[115.192, 0.801, 0.565, 1.191, 1.187, 0, 0, 1.372, 1.047],
	SOZ2:[123.607, 1.219, 0.901, 0.653, 0.620, 1.325, 1.164, 0, 0],
	 EA2:[120.267, 1.055, 0.837, 1.061, 0.671, 1.148, 0, 1.221, 0]
}
*/
// osym
var k_oss      = {
	SAY1:[123.379, 0.819, 0.586, 2.415, 2.068, 0, 0, 0, 0],
	SOZ1:[122.529, 2.649, 1.990, 0.703, 0.574, 0, 0, 0, 0],
	 EA1:[121.294, 2.232, 0.898, 2.222, 0.604, 0, 0, 0, 0],
	SAY2:[118.690, 0.814, 0.583, 1.201, 1.029, 0, 0, 1.337, 1.104],
	SOZ2:[119.023, 1.258, 0.945, 0.668, 0.545, 1.498, 1.319, 0, 0],
	 EA2:[113.007, 1.127, 0.907, 1.121, 0.610, 1.341, 0, 1.248, 0]
}

var k_oks      = {
	TM:[160.306, 3.961, 4.754, 2.544, 2.331],
	FM:[167.239, 3.268, 5.229, 3.918, 0.898]
}

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 sayısı + yanlış sayısı > ' + soruSayisi[ne] + ' 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 == 'oss') {
		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};
	}
	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 == 'oss') {
		if (chkNet(2, nt['tr'], nt['s1'], nt['m1'], nt['f1'])) {
			pn['SAY1'] = calc(nt, k_oss, 'SAY1');
			pn['SOZ1'] = calc(nt, k_oss, 'SOZ1');
			pn['EA1']  = calc(nt, k_oss, 'EA1');
		} else
			pn['SAY1'] = pn['SOZ1'] = pn['EA1']  = 'Hesaplanmadı';
		
		puan = calc(nt, k_oss, '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_oss, '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_oss, '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');
	}
	
	for (i in pn)
		if (!isNaN(pn[i]))
			pn[i] = Math.round(1000*pn[i])/1000;
	
	if (ne == 'oss') {
		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>MF PUAN</b>: ' + pn['FM']);
	}
	
	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();
}
