/*******************************************
*                                          *
*      WhenIsGood results JavaScript       *
*                                          *
********************************************/

var showing = null;
var popup = false;
var mousedOver = false;

function overTd(td) {
	if (mousedOver) return;
	mousedOver = true;
	var canMakeItNames = "";
	var cantMakeItNames = "";
	var canMakeItCount = 0;
	var cantMakeItCount = 0;
	for (var id in respondents) {
		var respondent = respondents[id];
		var canMakeIt = false;
		if (respondent.myCanDosBad) {
			for (var l = 0; l < respondent.myCanDosBad.length; l++) {
				if (respondent.myCanDosBad[l] == td.id) {
					byid(respondent.id).className = "respondentActiveCanDoBad";
					canMakeIt = true;
				}
			}
		}
		if (respondent.myCanDos) {
			for (var l = 0; l < respondent.myCanDos.length; l++) {
				if (respondent.myCanDos[l] == td.id) {
					byid(respondent.id).className = "respondentActiveCanDo";
					canMakeIt = true;
				}
			}
		}
		if (respondent.myCanDosGood) {
			for (var l = 0; l < respondent.myCanDosGood.length; l++) {
				if (respondent.myCanDosGood[l] == td.id) {
					byid(respondent.id).className = "respondentActiveCanDoGood";
					canMakeIt = true;
				}
			}
		}	
		if (canMakeIt) {
			if (canMakeItNames.length > 0) canMakeItNames = canMakeItNames + ", ";
			canMakeItNames = canMakeItNames + respondent.name;
			canMakeItCount++;
		}
		else {
			if (cantMakeItNames.length > 0) cantMakeItNames = cantMakeItNames + ", ";
			cantMakeItNames = cantMakeItNames + respondent.name;
			byid(respondent.id).className = "respondentActiveProblem"; 
			cantMakeItCount++;
		}
		if (!respondent.included) byid(respondent.id).className = "respondentInactive"; 
	}
	var tip = "";
	if (canMakeItCount == 0) {
		tip = "None of your respondents can make this time.";
	}
	else if (cantMakeItCount == 0) {
		tip = "All of your respondents can make this time."
	}
	else {
		tip = "<b>" + canMakeItCount + " can make it</b><br>" + canMakeItNames + "" 
			+ "<br><br>" 
			+ "<b>" + cantMakeItCount + " can't make it</b><br>" + cantMakeItNames + "";
	}
	tip = tip + "<br><br>Click to open as a summary"
	Tip(tip, DELAY, 1500, WIDTH, -300);
}

function outTd() {
	UnTip();
	paintRespondents();
	mousedOver = false;
}

function clickRespondent(div) {
	var respondent = respondents["r" + div.id];
	if (popup) {
		if (showing == respondent) return;
		closePopup();
	}
	showing = respondent;
	popup = true;
	byid(showing.id + "Popup").style.display='block';
	UnTip();
	paintCanDos();
	paintRespondents();
	/*
	if (e.shiftKey) {
		if (confirm("Are you sure you want to completely delete that response?")) {
			window.location.href = "/DeleteResponse?response=" + div.id + "&id=" + id + "&code=" + code;
		}
	}
	else {
		if (respondent.included) {
			respondent.included = false;
			div.className = "respondentInactive";
		}
		else {
			respondent.included = true;
			div.className = "respondentActive";
		}
		paintCanDos();
		overRespondent(div);
	}
	*/
}

function closePopup() {
	if (showing == null) return;
	byid(showing.id + "Popup").style.display='none';
	showing = null;
	popup = false;
	paintCanDos();
	paintRespondents();
}

function overRespondent(div) {
	if (popup) return;
	var respondent = respondents["r" + div.id];
	if (!respondent.included) return;
	showing = respondent;
	paintCanDos();
	paintRespondents();
	Tip("Click a name for more options.", DELAY, 3000);
}

function outRespondent(div) {
	UnTip();
	if (popup) return;
	showing = null;
	paintCanDos();
	paintRespondents();
}

var atLeastOneSlot = false;

function paintCanDos() {
	var grid = byid("grid");
	atLeastOneSlot = false;
	for (var i = 1; i < grid.rows.length; i++) {
		for (var j = 0; j < grid.rows[i].cells.length; j++) {
			var td = grid.rows[i].cells[j];
			if (td.className != "empty") {
				var canMakeIt = 0;
				var outOf = 0;
				var score = 0;
				for (var id in respondents) {
					var respondent = respondents[id];
					if (respondent.included) {
						outOf++;
						if (respondent.myCanDosBad) {
							for (var l = 0; l < respondent.myCanDosBad.length; l++) {
								if (respondent.myCanDosBad[l] == td.id) {
									score--;
									canMakeIt++;
								}
							}
						}
						if (respondent.myCanDos) {
							for (var l = 0; l < respondent.myCanDos.length; l++) {
								if (respondent.myCanDos[l] == td.id) {
									canMakeIt++;
								}
							}
						}
						if (respondent.myCanDosGood) {
							for (var l = 0; l < respondent.myCanDosGood.length; l++) {
								if (respondent.myCanDosGood[l] == td.id) {
									score++;
									canMakeIt++;
								}
							}
						}												
					}
				}
				if (canMakeIt < outOf) {
					td.className = "slot proposed";
					var cantMakeIt = outOf - canMakeIt;
					var cc = byid("c" + td.id);
					if (cantMakeIt < 5) {
						cc.innerHTML = "<img src=\"/static/pics/dot" + cantMakeIt + ".gif\">";
					}
					else {
						cc.innerHTML = "" + cantMakeIt;
					}
				}
				else {
					td.className = "slot canDo";
					if (score > 0) td.className = "slot canDoGood";
					if (score < 0) td.className = "slot canDoBad";
					atLeastOneSlot = true;
					byid("c" + td.id).innerHTML = "&nbsp;";
				}
			}
		}
	}
	if (showing != null) {
		if (showing.myCanDosBad) {
			for (var i=0;i < showing.myCanDosBad.length; i++) {
				var td = byid(showing.myCanDosBad[i]);
				if (td != null) td.className = "slot canDoBad";
			}
		}
		if (showing.myCanDos) {
			for (var i=0;i < showing.myCanDos.length; i++) {
				var td = byid(showing.myCanDos[i]);
				if (td != null) td.className = "slot canDo";
			}
		}
		if (showing.myCanDosGood) {
			for (var i=0;i < showing.myCanDosGood.length; i++) {
				var td = byid(showing.myCanDosGood[i]);
				if (td != null) td.className = "slot canDoGood";
			}
		}
		var comments = "";
		if (!popup) {
			comments = showing.updated;
			if (showing.comments != "")	{
				comments = comments + "<br><br>\"" + showing.comments + "\"";
			}
		}
		byid("comments").innerHTML = comments;
	}
	else {
		if (atLeastOneSlot) {
			byid("comments").innerHTML = "&nbsp;";
		}
		else {
			byid("comments").innerHTML = noMatchMessage;
		}
	}
}

function toggleRespondent() {
	if (showing.included) {
		showing.included = false;
		byid(showing.id + "ToggleLink").innerHTML = "include again";
	}
	else {
		showing.included = true;
		byid(showing.id + "ToggleLink").innerHTML = "exclude this response";
	}
	closePopup();
}

function deleteRespondent() {
	if (confirm("Are you sure you want to completely delete that response?")) {
		window.location.href = "/DeleteResponse?response=" + showing.id + "&id=" + id + "&code=" + code;
	}
}


function paintRespondents() {
	for (var id in respondents) {
		var respondent = respondents[id];
		if (respondent == showing && !popup) {
			byid(respondent.id).className = "respondentCurrent";
		}
		else {
			if (respondent.included) {
				byid(respondent.id).className = "respondentActive"; 
			}
			else {			
				byid(respondent.id).className = "respondentInactive";
			}
		}
	}
}

function submitForm() {
}