
var ts_sizes = ["XS", "SM", "MD", "LG", "XL", "2XL", "3XL"];
var ts_size_name = ["X-Small", "Small", "Medium", "Large", "X-Large", "2XL", "3XL"];
var ts_size_percentile_m = {"XS":6.656,"SM":15.519,"MD":24.814,"LG":24.773,"XL":16.567,"2XL":7.541,"3XL":4.129};	//default
var ts_size_percentile_f = {"XS":11.707,"SM":22.62,"MD":26.176,"LG":17.859,"XL":11.77,"2XL":6.326,"3XL":3.542};		//default
var form, $ts_list, team_size_timer;

function init_team_size(){
	load_team_sizing_data();
	form = document.forms["team_size"];
	$ts_list = jQuery("#team_size_list");
	jQuery(form.num_m).keydown(quantity_entry);
	jQuery(form.num_f).keydown(quantity_entry);
	//jQuery(form.num_m).keyup(calc_team_sizes);
	//jQuery(form.num_f).keyup(calc_team_sizes);
}

function quantity_entry(e){
	if (team_size_timer){clearTimeout(team_size_timer); team_size_timer = 0;}
	
	var do_calc = false;
	
	var charCode = e.charCode? e.charCode: e.keyCode;
	//alert(charCode);
	if ((charCode >=48 && charCode <=57) || (charCode >=96 && charCode <=105)){ //allow only digits
		do_calc = true;
	}else if (charCode!=8 && charCode!=9){ //prevent anything else except backspace and tab
		e.preventDefault();
		return false;
	}else if (charCode!=9){
		do_calc = true;
	}
	
	//if (do_calc){team_size_timer = setTimeout("calc_team_sizes();", 700);}
}

function calc_team_sizes(){
	var num_m = parseInt(form.num_m.value, 10); if (isNaN(num_m)) num_m = 0;
	var num_f = parseInt(form.num_f.value, 10); if (isNaN(num_f)) num_f = 0;
	
	var most_m = 0, most_f = 0;
	for (var sz in ts_size_percentile_m){if (ts_size_percentile_m[sz] > most_m){most_m = ts_size_percentile_m[sz]; most_sz_m = sz;}}
	for (var sz in ts_size_percentile_f){if (ts_size_percentile_f[sz] > most_f){most_f = ts_size_percentile_f[sz]; most_sz_f = sz;}}
	//alert(most_sz_m +": "+ most_m +"\n"+ most_sz_f +": "+ most_f);
	
	var qty, qty_m = 0, qty_f = 0, qtys_m = new Array(), qtys_f = new Array();
	for (var i=0,iE=ts_sizes.length; i<iE; i++){
		qty = Math.round(num_m * (ts_size_percentile_m[ts_sizes[i]] /100)); qty_m += qty
		qtys_m.push( qty );
		qty = Math.round(num_f * (ts_size_percentile_f[ts_sizes[i]] /100)); qty_f += qty
		qtys_f.push( qty );
	}
	if (qty_m < num_m){qtys_m[ts_sizes.indexOf(most_sz_m)] += (num_m - qty_m);}else if (qty_m > num_m){qtys_m[ts_sizes.indexOf(most_sz_m)] += (num_m - qty_m);}
	if (qty_f < num_f){qtys_f[ts_sizes.indexOf(most_sz_f)] += (num_f - qty_f);}else if (qty_f > num_f){qtys_f[ts_sizes.indexOf(most_sz_f)] += (num_f - qty_f);}
	
	var html = ["<div style=\"padding: 7px 0 9px 10px;\">Here are sizes you will likely need:</div>"];
	html.push( "<table class=\"team_size\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n" );
	html.push( "<thead><tr><th>&nbsp;</th>" );
	for (var i=0,iE=ts_sizes.length; i<iE; i++){
		html.push( "<th>"+ ts_size_name[i] +"</th>" );
	}
	html.push( "</tr></thead>\n<tbody>" );
	html.push( "<tr><td class=\"label\"><strong>Men's</strong></td>" );
	for (var i=0,iE=ts_sizes.length; i<iE; i++){
		html.push( "<td>"+ (qtys_m[i]>0? qtys_m[i]: '-') +"</td>" );
	}	//html.push( "<td>"+ eval(qtys_m.join('+')) +"</td>" );
	html.push( "</tr><tr><td class=\"label\"><strong>Women's</strong></td>" );
	for (var i=0,iE=ts_sizes.length; i<iE; i++){
		html.push( "<td>"+ (qtys_f[i]>0? qtys_f[i]: '-') +"</td>" );
	}	//html.push( "<td>"+ eval(qtys_f.join('+')) +"</td>" );
	html.push( "</tr></tbody>\n</table>" );
	
	//$ts_list.empty();
	$ts_list.html(html.join(''));
}


function load_team_sizing_data(){
	var fn_on_ajax_success = function(response){
		if (response.result == "OK" && ("data" in response) 
		  && ("size_percentile_m" in response.data) && ("size_percentile_f" in response.data)){
			ts_size_percentile_m = response.data.size_percentile_m;
			ts_size_percentile_f = response.data.size_percentile_f;
			//alert("Successfully loaded statistics!");
		}else{
			alert("Statistics could not be loaded!");
		}
	};
	
	jQuery.ajax({
		type: "GET",
		dataType: "json",
		url: "/ajaxed/query.asp?action=get_team_sizing_data",
		error: function(XMLHttpRequest, textStatus, errorThrown){
			alert("Error!\n"+ textStatus +"\n"+ errorThrown);
			//console.dir(XMLHttpRequest);
		},
		success: function(data, textStatus){
			//alert("HTTP "+ this.type +"\n"+ textStatus +"\n"+ typeof(data));
			//console.dir(data);
			if (!("error" in data)) fn_on_ajax_success(data);
			else alert("Error!\n"+data.error);
		},
		complete: function(XMLHttpRequest, textStatus){
			//alert("Complete.\n"+ textStatus);
		}
	});
}