﻿/**********************************************************************************************
filename: puan_hesaplama.js
author  : avni çetinkurt
http://www.birey.com
**********************************************************************************************/

var soruSayisi = {
	ygs:[40, 40, 40, 40, 50, 30, 30, 30, 30, 56, 24, 44, 16, 30],
	sn8:[23, 20, 20, 20, 17],
	sn7:[21, 18, 18, 18, 15],
	sn6:[19, 16, 16, 16, 13]
};
var bolen      = {ygs:4, sn8:3, sn7:3, sn6:3};
var tdnum      = {ygs:14, sn8:5, sn7:5, sn6:5};
var msg_id     = {
	ygs:['&nbsp;', 'ygs1', 'ygs2', 'ygs3', 'ygs4', 'ygs5', 'ygs6', 'lys_mf', 'lys_tm', 'lys_ts'],
	sn8:['&nbsp;', 'SBS8'],
	sn7:['&nbsp;', 'SBS7'],
	sn6:['&nbsp;', 'SBS6']
}

var k_ygs      = {
	YGS1:[100.0000, 1.9600, 3.6250, 1.2850, 3.1300, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
	YGS2:[100.0000, 1.8500, 2.8500, 1.1000, 4.2000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
	YGS3:[100.0000, 4.1600, 1.5000, 3.4400, 0.9000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
	YGS4:[100.0000, 3.2400, 1.5000, 4.2500, 1.0100, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
	YGS5:[100.0000, 3.7000, 3.1500, 2.3000, 0.8500, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
	YGS6:[100.0000, 3.2000, 3.5500, 1.2000, 2.0500, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
	
	 MF1:[100.000, 0.959, 1.643, 0.412, 0.812, 2.156, 1.817, 1.304, 0.833, 0.685, 0.000, 0.000, 0.000, 0.000, 0.000],
	 MF2:[100.000, 1.144, 1.137, 0.412, 1.296, 1.307, 0.938, 1.801, 1.549, 1.549, 0.000, 0.000, 0.000, 0.000, 0.000],
	 MF3:[100.000, 1.137, 1.137, 0.612, 1.021, 1.063, 0.679, 1.762, 1.814, 2.098, 0.000, 0.000, 0.000, 0.000, 0.000],
	 MF4:[100.000, 1.046, 1.428, 0.566, 0.908, 1.861, 1.491, 1.784, 1.079, 0.614, 0.000, 0.000, 0.000, 0.000, 0.000],
	
	 TM1:[100.000, 1.291, 1.669, 0.504, 0.399, 2.087, 1.345, 0.000, 0.000, 0.000, 1.315, 1.132, 0.000, 0.000, 0.000],
	 TM2:[100.000, 1.335, 1.430, 0.634, 0.459, 1.820, 1.098, 0.000, 0.000, 0.000, 1.585, 1.374, 0.000, 0.000, 0.000],
	 TM3:[100.000, 1.512, 1.035, 0.955, 0.372, 1.468, 0.895, 0.000, 0.000, 0.000, 1.885, 1.635, 0.000, 0.000, 0.000],
	
	 TS1:[100.000, 1.283, 1.049, 1.200, 0.505, 0.000, 0.000, 0.000, 0.000, 0.000, 1.104, 1.332, 1.399, 1.270, 2.095],
	 TS2:[100.000, 1.828, 0.625, 1.065, 0.505, 0.000, 0.000, 0.000, 0.000, 0.000, 1.839, 0.855, 1.397, 1.197, 1.165]
}

var k_sn8      = {
	SBS:[189.5470, 3.5322, 4.7135, 3.1244, 2.5150, 1.3032]
}

var k_sn7      = {
	SBS:[198.2084, 3.6425, 5.3577, 3.2498, 2.8987, 1.2125]
}

var k_sn6      = {
	SBS:[192.2892, 4.4358, 5.6837, 3.9548, 3.2175, 1.3642]
}

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 = 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, pn = {};
	document.getElementById('ik_' + ne).innerHTML = '&nbsp;';
	if (ne == 'ygs') {
		var nt = {tr:0, tm:0, sb:0, fb:0, mat:0, geo:0, fiz:0, kim:0, biy:0, edb:0, co1:0, tar:0, co2:0, fel:0};
		for (i in k_ygs) pn[i] = 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 = 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 == 'ygs') {
//		if (chkNet(4, nt['tr'], nt['tm'], nt['sb'], nt['fb'])) {
//		sbt, tür, tmat, sos, fen, mat, geo, fiz, kim, biy, edb, coğ1, tar, coğ2, fel
		if (0.5 <= nt.tr + nt.tm + nt.sb + nt.fb) {
			pn.YGS1 = calc(nt, k_ygs, 'YGS1');
			pn.YGS2 = calc(nt, k_ygs, 'YGS2');
			pn.YGS3 = calc(nt, k_ygs, 'YGS3');
			pn.YGS4 = calc(nt, k_ygs, 'YGS4');
			pn.YGS5 = calc(nt, k_ygs, 'YGS5');
			pn.YGS6 = calc(nt, k_ygs, 'YGS6');
		}
		
		if (0.5 <= nt.mat + nt.geo + nt.fiz + nt.kim + nt.biy) {
			pn.MF1 = calc(nt, k_ygs, 'MF1');
			pn.MF2 = calc(nt, k_ygs, 'MF2');
			pn.MF3 = calc(nt, k_ygs, 'MF3');
			pn.MF4 = calc(nt, k_ygs, 'MF4');
		} else
			pn.MF1 = pn.MF2 = pn.MF3 = pn.MF4 = 'Hesaplanmadı';
		
		if (0.5 <= nt.mat + nt.geo + nt.edb + nt.co1) {
			pn.TM1 = calc(nt, k_ygs, 'TM1');
			pn.TM2 = calc(nt, k_ygs, 'TM2');
			pn.TM3 = calc(nt, k_ygs, 'TM3');
		} else
			pn.TM1 = pn.TM2 = pn.TM3 = 'Hesaplanmadı';
		
		if (0.5 <= nt.edb + nt.co1 + nt.tar + nt.co2 + nt.fel) {
			pn.TS1 = calc(nt, k_ygs, 'TS1');
			pn.TS2 = calc(nt, k_ygs, 'TS2');
		} else
			pn.TS1 = pn.TS2 = 'Hesaplanmadı';
		
		if (0.5 > nt.tr + nt.tm + nt.sb + nt.fb)
			for (q in pn) pn[q] = 'Hesaplanmadı';
	} 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;
			apty = pn[i] + '';
			aptx = apty.split('.');
			aptx[1] = aptx.length < 2 ? '000' : (aptx[1] + '000').substr(0, 3);
			pn[i] = aptx.join('.');
		}
	}
	
	if (ne == 'ygs') {
		puan_msg.push('<b>YGS1</b>: ' + pn.YGS1);
		puan_msg.push('<b>YGS2</b>: ' + pn.YGS2);
		puan_msg.push('<b>YGS3</b>: ' + pn.YGS3);
		puan_msg.push('<b>YGS4</b>: ' + pn.YGS4);
		puan_msg.push('<b>YGS5</b>: ' + pn.YGS5);
		puan_msg.push('<b>YGS6</b>: ' + pn.YGS6);
		
		puan_msg.push('<b>MF1</b>: ' + pn.MF1 + '<br><b>MF2</b>: ' + pn.MF2 + '<br><b>MF3</b>: ' + pn.MF3 + '<br><b>MF4</b>: ' + pn.MF4);
		
		puan_msg.push('<b>TM1</b>: ' + pn.TM1 + '<br><b>TM2</b>: ' + pn.TM2 + '<br><b>TM3</b>: ' + pn.TM3);
		
		puan_msg.push('<b>TS1</b>: ' + pn.TS1 + '<br><b>TS2</b>: ' + pn.TS2);
	} 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('_');
	var harf = dummy[0].substr(3, 1);
	if (harf == 'd')
		harf = 'y';
	else if (harf == 'y') {
		harf = 'd';
		dummy[1]++;
	} else if (harf == 'n')
		dummy[1]++;
	dummy = dummy.join('_');
	
	if (frm[dummy]) frm[dummy].focus();
}


