
var soruSayisi = {oss:30, oks:25, sn8:[23, 20, 20, 20, 17], sn7:[21, 18, 18, 18, 15], sn6:[19, 16, 16, 16, 13]};
var bolen      = {oss:4,  oks:3, sn8:3, sn7:3, sn6:3};
var tdnum      = {oss:8,  oks:4, sn8:5, sn7:5, sn6:5};
var msg_id     = {
	oss:['&nbsp;<br>&nbsp;', 'saypuan', 'sozpuan', 'esapuan'],
	oks:['&nbsp;', 'TMpuan', 'MFpuan'],
	sn8:['&nbsp;', 'SBS8'],
	sn7:['&nbsp;', 'SBS7'],
	sn6:['&nbsp;', 'SBS6']
}

// OSYM 2007
var k_oss      = {
	SOZ1:[122.529, 2.649, 1.990, 0.703, 0.574, 0.000, 0.000, 0.000, 0.000],
	SAY1:[123.379, 0.819, 0.586, 2.415, 2.068, 0.000, 0.000, 0.000, 0.000],
	 EA1:[121.294, 2.232, 0.898, 2.222, 0.604, 0.000, 0.000, 0.000, 0.000],
	SOZ2:[119.023, 1.258, 0.945, 0.668, 0.545, 1.498, 1.319, 0.000, 0.000],
	SAY2:[118.690, 0.814, 0.583, 1.201, 1.029, 0.000, 0.000, 1.337, 1.104],
	 EA2:[113.007, 1.127, 0.907, 1.121, 0.610, 1.341, 0.000, 1.248, 0.000]
}

// OSYM 2008
var k_oss      = {
	SOZ1:[119.910, 2.955, 1.956, 0.653, 0.439, 0.000, 0.000, 0.000, 0.000],
	SAY1:[119.940, 1.034, 0.650, 2.529, 1.789, 0.000, 0.000, 0.000, 0.000],
	 EA1:[120.060, 2.535, 0.898, 2.094, 0.471, 0.000, 0.000, 0.000, 0.000],
	SOZ2:[118.216, 1.608, 1.064, 0.710, 0.478, 1.341, 1.021, 0.000, 0.000],
	SAY2:[119.051, 0.985, 0.621, 1.208, 0.855, 0.000, 0.000, 1.461, 1.005],
	 EA2:[118.928, 1.295, 0.919, 1.069, 0.481, 1.080, 0.000, 1.295, 0.000]
}

var k_1011      = {
	SOZ1:[119.910, 4.432, 2.934, 0.980, 0.659, 0.000, 0.000, 0.000, 0.000],
	SAY1:[119.940, 1.551, 0.975, 3.793, 2.683, 0.000, 0.000, 0.000, 0.000],
	 EA1:[120.060, 3.803, 1.347, 3.141, 0.707, 0.000, 0.000, 0.000, 0.000],
	SOZ2:[118.216, 2.412, 1.596, 1.065, 0.717, 2.011, 1.531, 0.000, 0.000],
	SAY2:[119.051, 1.478, 0.931, 1.812, 1.283, 0.000, 0.000, 2.192, 1.508],
	 EA2:[118.928, 1.943, 1.379, 1.604, 0.721, 1.620, 0.000, 1.943, 0.000]
}

// oks 2007
var k_oks      = {
	TM:[143.375000, 3.959000, 4.468000, 3.325000, 2.513000],
	FM:[149.025000, 3.219000, 4.832000, 5.037000, 0.951000]
}

// sn8 2007
var k_sn8      = {
	SBS:[137.156420, 4.007920, 5.190960, 4.211040, 3.054633, 1.266397]
}

// sn7 2007
var k_sn7      = {
	SBS:[141.506420, 4.387920, 5.760960, 4.501040, 3.401630, 1.360110]
}

// sn6 2007
var k_sn6      = {
	SBS:[142.577700, 4.872200, 6.515800, 3.670500, 5.085800, 1.576400]
}

function getNet(frm, ne, eleman) {
	var i, d, y, n, net, sor_say;
	document.getElementById('ik_' + ne).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);
		
		sor_say = (ne == 'oss' || ne == 'oks') ? soruSayisi[ne] : soruSayisi[ne][i];
		if (dogru + yanlis > sor_say) {
			d.value = '';
			y.value = '';
			n.value = '';
			resetForm(frm, ne);
			document.getElementById('ik_' + ne).innerHTML = 'doğru sayısı + yanlış sayısı > ' + sor_say + ' 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= [], sor_say;
	document.getElementById('ik_' + ne).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 if (ne == 'oks') {
		var nt = {tur:0, mat:0, fen:0, sos:0};
		var pn = {TM:0, MF:0};
	} else {
		var nt = {tur:0, mat:0, fen:0, sos:0, yd:0};
		var pn = {SBS: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;
		
		sor_say = (ne == 'oss' || ne == 'oks') ? soruSayisi[ne] : soruSayisi[ne][i];
		if (nt[j] > sor_say) {
			n.value = '';
			resetForm(frm, ne);
			document.getElementById('ik_' + ne).innerHTML = 'net > ' + sor_say + ' 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(1, 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(1, 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(1, nt['es'], nt['m2']) ? puan : 'Hesaplanmadı';
	} else if (ne == 'oks') {
		pn['TM'] = calc(nt, k_oks, 'TM');
		pn['FM'] = calc(nt, k_oks, 'FM');
	} else if (ne == 'sn8')
		pn['SBS'] = calc(nt, k_sn8, 'SBS');
	else if (ne == 'sn7')
		pn['SBS'] = calc(nt, k_sn7, 'SBS');
	else
		pn['SBS'] = calc(nt, k_sn6, 'SBS');
	
	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 if (ne == 'oks') {
		puan_msg.push('<b>TM PUAN</b>: ' + pn['TM']);
		puan_msg.push('<b>MF PUAN</b>: ' + pn['FM']);
	} else
		puan_msg.push('<b>SBS PUAN</b>: ' + pn['SBS']);
	
	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();
}

