/**********************************************************************************************

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:[131.217, 1.825, 3.719, 0.983, 2.690, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
	YGS2:[131.217, 1.825, 2.690, 0.983, 3.719, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
	YGS3:[129.671, 3.571, 1.845, 2.853, 0.971, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
	YGS4:[129.671, 2.853, 1.845, 3.571, 0.971, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
	YGS5:[132.415, 3.417, 3.213, 1.691, 0.851, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
	YGS6:[132.415, 3.213, 3.417, 0.851, 1.691, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
	
	 MF1:[121.140, 0.911, 1.561, 0.391, 0.771, 2.019, 1.721, 1.239, 0.791, 0.651, 0.000, 0.000, 0.000, 0.000, 0.000],
	 MF2:[122.180, 1.087, 1.080, 0.391, 1.231, 1.241, 0.891, 1.673, 1.451, 1.451, 0.000, 0.000, 0.000, 0.000, 0.000],
	 MF3:[119.170, 1.080, 1.080, 0.581, 0.970, 1.010, 0.645, 1.673, 1.721, 1.988, 0.000, 0.000, 0.000, 0.000, 0.000],
	 MF4:[127.130, 0.980, 1.320, 0.530, 0.850, 1.727, 1.383, 1.671, 1.010, 0.575, 0.000, 0.000, 0.000, 0.000, 0.000],
	
	 TM1:[119.930, 1.230, 1.590, 0.480, 0.380, 1.987, 1.270, 0.000, 0.000, 0.000, 1.220, 1.090, 0.000, 0.000, 0.000],
	 TM2:[118.930, 1.270, 1.350, 0.610, 0.440, 1.720, 1.030, 0.000, 0.000, 0.000, 1.520, 1.320, 0.000, 0.000, 0.000],
	 TM3:[121.340, 1.430, 0.980, 0.910, 0.350, 1.390, 0.850, 0.000, 0.000, 0.000, 1.780, 1.540, 0.000, 0.000, 0.000],
	
	 TS1:[121.370, 1.210, 0.990, 1.140, 0.470, 0.000, 0.000, 0.000, 0.000, 0.000, 1.040, 1.250, 1.330, 1.210, 1.980],
	 TS2:[120.710, 1.730, 0.590, 1.010, 0.480, 0.000, 0.000, 0.000, 0.000, 0.000, 1.730, 0.810, 1.330, 1.140, 1.110]
}

// sn8 2007
var k_sn8      = {
	SBS:[189.5470, 3.5322, 4.7135, 3.1244, 2.5150, 1.3032]
//	SBS:[137.156420, 4.007920, 5.190960, 4.211040, 3.054633, 1.266397]
}

// sn7 2007
var k_sn7      = {
	SBS:[198.2084, 3.6425, 5.3577, 3.2498, 2.8987, 1.2125]
//	SBS:[141.506420, 4.387920, 5.760960, 4.501040, 3.401630, 1.360110]
}

// sn6 2007
var k_sn6      = {
	SBS:[192.2892, 4.4358, 5.6837, 3.9548, 3.2175, 1.3642]
//	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 = 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;
//		var pn = {YGS1:0, YGS2:0, YGS3:0, YGS4:0, YGS5:0, YGS6:0, MF1:0, MF2:0, MF3:0, MF4:0, TM1:0, TM2:0, TM3:0, TS1:0, TS2: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>YGS 1</b>: ' + pn['YGS1']);
		puan_msg.push('<b>YGS 2</b>: ' + pn['YGS2']);
		puan_msg.push('<b>YGS 3</b>: ' + pn['YGS3']);
		puan_msg.push('<b>YGS 4</b>: ' + pn['YGS4']);
		puan_msg.push('<b>YGS 5</b>: ' + pn['YGS5']);
		puan_msg.push('<b>YGS 6</b>: ' + pn['YGS6']);
		
		puan_msg.push('<b>MF 1</b>: ' + pn['MF1'] + '<br /><b>MF 2</b>: ' + pn['MF2'] + '<br /><b>MF 3</b>: ' + pn['MF3'] + '<br /><b>MF 4</b>: ' + pn['MF4']);
		
		puan_msg.push('<b>TM 1</b>: ' + pn['TM1'] + '<br /><b>TM 2</b>: ' + pn['TM2'] + '<br /><b>TM 3</b>: ' + pn['TM3']);
		
		puan_msg.push('<b>TS 1</b>: ' + pn['TS1'] + '<br /><b>TS 2</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();
}


