// JavaScript Document

var address;
total=new Array(0, 0);

get_Args()

function get_Args() {
	var poz, args;
	stotal = new Array();
	
	address = window.location.href
	args=""

	poz = address.indexOf("?")
	if (poz != -1) {
		args = address.substr(poz+1, address.length)
		address = address.substr(0,poz);
		
		stotal = args.split(",");
		total[0] = parseInt(stotal[0]);
		total[1] = parseInt(stotal[1]);
	}
}

function init_Update() {
	total[0] = parseInt(eval("document.init.t_mj.value"));
	total[1] = parseInt(eval("document.init.t_fj.value"));
	
	if (total[0] < 0) total[0]=0;
	if (total[1] < 0) total[1]=0;
	
	window.location.href = address + "?" + total[0] +","+total[1];

	return true;
}


function init_Reset() {
	total[0] = 0;
	total[1] = 0;
	
	window.location.href = address + "?" + total[0] +","+total[1];

	return true;
}



function mj_Compute(lang) {
	var x, y, y_pv;
	var elem;
	var i, sum, xm=0, ym=0;
	var sumE, sumG, sumF, slope, k;
	var msg;
	
	if (total[0] == 0) return false;
	
	// Validate
	for (i=1; i < (total[0]+1) ; i++) {
		for (j=1; j<3; j++) {
			elem = eval("document.tb_malejobs.mj_"+i+"_"+j);
			if ((elem.value.length == 0) || ( parseFloat(elem.value) <= 0 )) {
				if (lang == "en") {
					msg = "You have tried to compute with incomplete data!" + "\n\r\n\r"
					msg = msg + "Please fill in all the cells in columns A and B."
				}
				else {
					msg = "Vous avez essayé de faire un calcul avec des données incomplètes!" + "\n\r\n\r" 
					msg = msg +"S'il vous plaît, remplissez toutes les cellules dans les colonnes A et B."
				}

				window.alert(msg);
				elem.focus();
				elem.select();
				return false;	 
			}
		}
	}
	

	//  Sum the Job Values in the column A
	sum=0;
	for (i=1; i < (total[0]+1) ; i++) {
		x = eval("document.tb_malejobs.mj_"+i+"_1.value");
		sum = sum + parseFloat(x);
	}
	elem = eval("document.tb_malejobs.mj_sum_1");
	elem.value=sum;
	//  Calculate the XM value. Mean cell in column A.
	elem = eval("document.tb_malejobs.mj_mean_1");
	xm = Math.round(sum/total[0]*100)/100;
	elem.value=xm;
	
	//  Sum the Job Rates in the column B
	sum=0;
	for (i=1; i < (total[0]+1) ; i++) {
		x = eval("document.tb_malejobs.mj_"+i+"_2.value");
		sum = sum + parseFloat(x);
	}
	elem = eval("document.tb_malejobs.mj_sum_2");
	elem.value=sum;
	//  Calculate the YM value. Mean cell in column B.
	elem = eval("document.tb_malejobs.mj_mean_2");
	ym = Math.round(sum/total[0]*100)/100;
	elem.value=ym;
	
	// Calculate column C: X-XM
	for (i=1; i < (total[0]+1) ; i++) {
		x = eval("document.tb_malejobs.mj_"+i+"_1.value");
		elem = eval("document.tb_malejobs.mj_"+i+"_3");
		elem.value = Math.round((parseFloat(x) - xm)*100)/100;
	}
	// Sum column C
	sum=0;
	for (i=1; i < (total[0]+1) ; i++) {
		x = eval("document.tb_malejobs.mj_"+i+"_3.value");
		sum = sum + parseFloat(x);
	}
	elem = eval("document.tb_malejobs.mj_sum_3");
	elem.value=Math.round(sum*100)/100;

	// Calculate column D: Y-YM
	for (i=1; i < (total[0]+1) ; i++) {
		x = eval("document.tb_malejobs.mj_"+i+"_2.value");
		elem = eval("document.tb_malejobs.mj_"+i+"_4");
		elem.value = Math.round((parseFloat(x) - ym)*100)/100;
	}
	// Sum column D
	sum=0;
	for (i=1; i < (total[0]+1) ; i++) {
		x = eval("document.tb_malejobs.mj_"+i+"_4.value");
		sum = sum + parseFloat(x);
	}
	elem = eval("document.tb_malejobs.mj_sum_4");
	elem.value=Math.round(sum*100)/100;

	// Calculate column E: square of (X-XM) = square of values in the column C
	for (i=1; i < (total[0]+1) ; i++) {
		x = eval("document.tb_malejobs.mj_"+i+"_3.value");
		elem = eval("document.tb_malejobs.mj_"+i+"_5");
		elem.value = Math.round(x*x);
	}
	// Sum column E
	sum=0;
	for (i=1; i < (total[0]+1) ; i++) {
		x = eval("document.tb_malejobs.mj_"+i+"_5.value");
		sum = sum + parseFloat(x);
	}
	elem = eval("document.tb_malejobs.mj_sum_5");
	sumE = Math.round(sum*100)/100;
	elem.value = sumE;
	
	// Calculate column F: square of (Y-YM) = square of values in the column D
	for (i=1; i < (total[0]+1) ; i++) {
		x = eval("document.tb_malejobs.mj_"+i+"_4.value");
		elem = eval("document.tb_malejobs.mj_"+i+"_6");
		elem.value = Math.round(x*x*100)/100;
	}
	// Sum column F
	sum=0;
	for (i=1; i < (total[0]+1) ; i++) {
		x = eval("document.tb_malejobs.mj_"+i+"_6.value");
		sum = sum + parseFloat(x);
	}
	elem = eval("document.tb_malejobs.mj_sum_6");
	sumF = Math.round(sum*100)/100;
	elem.value = sumF;
	
	// Calculate column G: product of (X-XM)(Y-YM) = product of values in column C with column D
	for (i=1; i < (total[0]+1) ; i++) {
		x = eval("document.tb_malejobs.mj_"+i+"_3.value");
		y = eval("document.tb_malejobs.mj_"+i+"_4.value");
		elem = eval("document.tb_malejobs.mj_"+i+"_7");
		elem.value = Math.round(x*y*100)/100;
	}
	// Sum column G
	sum=0;
	for (i=1; i < (total[0]+1) ; i++) {
		x = eval("document.tb_malejobs.mj_"+i+"_7.value");
		sum = sum + parseFloat(x);
	}
	elem = eval("document.tb_malejobs.mj_sum_7");
	sumG = Math.round(sum*100)/100;
	elem.value = sumG;
	
	// Calculate slope
	slope = Math.round(sumG/sumE*10000)/10000;
	elem = eval("document.pv_elem.slope");
	elem.value =  slope;
	elem = eval("document.pv_elem.line_slope");
	elem.value =  slope;
	
	// Calculate constant
	k = Math.round((ym - slope * xm)*10000)/10000;
	elem = eval("document.pv_elem.k");
	elem.value = k;
	elem = eval("document.pv_elem.line_k");
	elem.value = k;
	
	
	// Fill the r_squared table
	
	sum = 0;
	for (i=1; i < (total[0]+1) ; i++) {
		x = eval("document.tb_malejobs.mj_"+i+".value");
		elem = eval("document.tb_r_squared.rsq_"+i);
		elem.value = x

		x = eval("document.tb_malejobs.mj_"+i+"_1.value");
		elem = eval("document.tb_r_squared.rsq_"+i+"_1");
		elem.value = x
		
		y = eval("document.tb_malejobs.mj_"+i+"_2.value");
		elem = eval("document.tb_r_squared.rsq_"+i+"_2");
		elem.value = y
		
		y_pv = Math.round((k + x*slope)*100)/100
		elem = eval("document.tb_r_squared.rsq_"+i+"_3");
		elem.value = y_pv
		
		x = Math.round((y - y_pv)*100)/100
		elem = eval("document.tb_r_squared.rsq_"+i+"_4");
		elem.value = x
		
		x = Math.round(x*x*100)/100
		elem = eval("document.tb_r_squared.rsq_"+i+"_5");
		elem.value = x
		
		sum = sum +x
	}

	elem = eval("document.tb_r_squared.rsq_sum_5");
	elem.value = Math.round(sum*100)/100

	// Calculate r_squared
	x = Math.round((1-sum/sumF)*10000)/10000;
	elem = eval("document.pv_r_squared.r_squared");
	elem.value =  x;
}


function mj_Reset() {
	var elem;
	var i, j;
	
	//  Delete the malejobs table
	for (i=1; i < (total[0]+1) ; i++) {
		elem = eval("document.tb_malejobs.mj_"+i);
		elem.value="";
		for (j=1; j<8; j++) {
			elem = eval("document.tb_malejobs.mj_"+i+"_"+j);
			elem.value=0;
		}
	}
	for (j=1; j<8; j++) {
		elem = eval("document.tb_malejobs.mj_sum_"+j);
		elem.value=0;
	}
	for (j=1; j<3; j++) {
		elem = eval("document.tb_malejobs.mj_mean_"+j);
		elem.value=0;
	}
	
	
	// Delete slope
	elem = eval("document.pv_elem.slope");
	elem.value =  0;
	elem = eval("document.pv_elem.line_slope");
	elem.value =  0;
	
	// Delete constant
	elem = eval("document.pv_elem.k");
	elem.value = 0;
	elem = eval("document.pv_elem.line_k");
	elem.value = 0;
	
	
	// Delete the r_squared table
	for (i=1; i < (total[0]+1) ; i++) {
		elem = eval("document.tb_r_squared.rsq_"+i);
		elem.value="";
		for (j=1; j<6; j++) {
			elem = eval("document.tb_r_squared.rsq_"+i+"_"+j);
			elem.value=0;
		}
	}
	elem = eval("document.tb_r_squared.rsq_sum_5");
	elem.value=0;
	
	elem = eval("document.pv_r_squared.r_squared");
	elem.value=0;
}


function fj_Compute(lang, adj_value) {
	var x, y, y_pv, adj;
	var elem;
	var i;
	var slope, k;

	if (total[1] == 0) return false;

	// Validate
	for (i=1; i < (total[1]+1) ; i++) {
		for (j=1; j<3; j++) {
			elem = eval("document.tb_femalejobs.fj_"+i+"_"+j);
			if ( parseFloat(elem.value) <= 0 ) {
				if (lang == "en") {
					msg = "You have tried to compute with incomplete data!" + "\n\r\n\r"
					msg = msg + "Please fill in all the cells in columns A and B."
				}
				else {
					msg = "Vous avez essayé de faire un calcul avec des données incomplètes!" + "\n\r\n\r" 
					msg = msg +"S'il vous plaît, remplissez toutes les cellules dans les colonnes A et B."
				}
				
				window.alert(msg);
				elem.focus();
				elem.select();
				return false;	 
			}
		}
	}
	
	// Get slope and constant
	slope = parseFloat(eval("document.pv_elem.slope.value"));
	k = parseFloat(eval("document.pv_elem.k.value"));
	

	// Fill the tb_femalejobs table
	for (i=1; i < (total[1]+1) ; i++) {
		x = eval("document.tb_femalejobs.fj_"+i+"_1.value");
		y = eval("document.tb_femalejobs.fj_"+i+"_2.value");
		
		y_pv = Math.round((k + x*slope)*10000)/10000;
		elem = eval("document.tb_femalejobs.fj_"+i+"_3");
		elem.value = y_pv;
		
		adj = Math.round((y_pv - y)*100)/100;
		elem = eval("document.tb_femalejobs.fj_"+i+"_4");
		if (adj > 0) elem.value = adj;
		else elem.value = adj_value;
	}
}


function fj_Reset() {
	var elem;
	var i, j;

	// Delete the femalejobs table
	for (i=1; i < (total[1]+1) ; i++) {
		elem = eval("document.tb_femalejobs.fj_"+i);
		elem.value="";
		for (j=1; j<5; j++) {
			elem = eval("document.tb_femalejobs.fj_"+i+"_"+j);
			elem.value=0;
		}
	}
}