// stolen from http://javascript.internet.com/forms/word-count.html
function countWords(this_field)
{
	var fullStr = this_field.value + " ";
	var initial_whitespace_rExp = /^[^A-Za-z0-9]+/gi;
	var left_trimmedStr = fullStr.replace(initial_whitespace_rExp, "");
	var non_alphanumerics_rExp = rExp = /[^A-Za-z0-9]+/gi;
	var cleanedStr = left_trimmedStr.replace(non_alphanumerics_rExp, " ");
	var splitString = cleanedStr.split(" ");
	var word_count = splitString.length - 1;
	
	if (fullStr.length < 2)
	{
		word_count = 0;
	}
	
	return word_count;
}

function updateWordCount(target, minAllowed, maxAllowed)
{
	var dynamic_count = countWords(document.getElementById(target));
	var wordpl = (dynamic_count == 1 ? " word" : " words");
	if( dynamic_count > maxAllowed ){
		document.getElementById(target + "-word-counter").style.color = 'red';
		document.getElementById(target + "-word-counter").innerHTML = dynamic_count + wordpl + " , exceeds limit!";
	}else{
		document.getElementById(target + "-word-counter").style.color = '#000000';
		document.getElementById(target + "-word-counter").innerHTML = dynamic_count + wordpl + " typed so far";
	}
	
}

function showPackagePreview(type, packageId, imageCount)
{
	window.open("/grants/package_preview/" + type + "/" + packageId, "trash",
			"menubar=no,location=no,resizable=no,scrollbars=no,status=no,width=206,height=" + (141 * imageCount) + ",left=200,top=200");
}

function toggleGroup(container, isEnabled)
{
	var inputs = document.getElementById(container).getElementsByTagName("input");
	var selects = document.getElementById(container).getElementsByTagName("select");
	var textareas = document.getElementById(container).getElementsByTagName("textarea");
	
	for (var i = 0; i < inputs.length; i++)
	{
		inputs[i].disabled = !isEnabled;
		
		if (!isEnabled && inputs[i].getAttribute("type") == "checkbox")
		{
			inputs[i].checked = false;
		}
	}
	
	for (var i = 0; i < selects.length; i++)
	{
		selects[i].disabled = !isEnabled;
	}
	
	for (var i = 0; i < textareas.length; i++)
	{
		textareas[i].disabled = !isEnabled;
	}
}

function toggleElement(id,  isDisplay)
{
	if(isDisplay)
	{
		document.getElementById(id).style.display = 'block';
	}else
	{
		document.getElementById(id).style.display = 'none';
	}
}

function toggleHelmetFaceguard(grantType, value)
{
        if(grantType == 'youth'){        
		value = Number(value);
		toggleGroup("helmet-faceguard-color", (value >= 1 && value <= 7));
        }else if(grantType == 'hs'){                
		toggleGroup("helmet-faceguard-color", (value == '1' || value == '2'));
        }

	if(grantType == 'hs'){
		toggleElement('chin-strap-color',  (value == '22'));
	}
}


function yearInExistence(grantType, value)
{
	var yearDiv = document.getElementById('years-in-existence');
	if(value == '' || value == 't'){
		yearDiv.style.display = 'none';
		if(grantType == 'youth'){
			document.getElementById('GrantYouthYearsInExistence').disabled = true;
		}else{
			document.getElementById('GrantHsYearsInExistence').disabled = true;
		}	
	}else{
		yearDiv.style.display = 'block';
		if(grantType == 'youth'){
			document.getElementById('GrantYouthYearsInExistence').disabled = false;
		}else{
			document.getElementById('GrantHsYearsInExistence').disabled = false;
		}
	}
}


function grantReceivedYears(value)
{
	var grantReceivedDiv = document.getElementById('grant-received-checkbox');
	if(value == 't'){
		grantReceivedDiv.style.display = 'block';
	}else{
		grantReceivedDiv.style.display = 'none';
	}
}


function calculateFinancialTotal(container, totalTargetContainer)
{
	var inputs = document.getElementById(container).getElementsByTagName("input");
	var total = 0.0;
	
	for (var i = 0; i < inputs.length; i++)
	{
		if (!isNaN(inputs[i].value))
		{
			value = parseFloat(inputs[i].value);
			if (value >= 0)
			{
				total += value;
			}
		}
	}
	
	document.getElementById(totalTargetContainer).innerHTML = "$" + new Number(total).toFixed(2);
	
	return total;
}

function calculateFinancialTotals()
{
	var total = calculateFinancialTotal("revenue", "revenue-total") - calculateFinancialTotal("expenses", "expenses-total");
	document.getElementById("net-income").innerHTML = "$" + new Number(total).toFixed(2);
}

function addFeeder()
{
	var clone = document.getElementById("feeders").getElementsByTagName("li")[0].cloneNode(true);

	// clear the text field
	var input = clone.getElementsByTagName("input")[0];
	input.value = "";
	input.setAttribute("id", "feeder-" + Math.floor(Math.random() * 100000000));

	// add it
	document.getElementById("feeders").appendChild(clone);
	
	// enable all the buttons
	var buttons = document.getElementById("feeders").getElementsByTagName("button");
	for (var i = 0; i < buttons.length; i++)
	{
		buttons[i].disabled = false;
	}
}

function deleteFeeder(li)
{
	li.parentNode.removeChild(li);
	
	// if there's only one li left, disable its button
	if (document.getElementById("feeders").getElementsByTagName("li").length == 1)
	{
		document.getElementById("feeders").getElementsByTagName("button")[0].disabled = true;
	}
}

function setYouthSubmit()
{
	document.getElementById('GrantYouthSubmitted').value = '1';
}

function setHsSubmit()
{
	document.getElementById('GrantHsSubmitted').value = '1';
}

function updatePackagePreview(target, list, index, formType)
{
	var targetContainer = document.getElementById(target);
	var item = list[index];
	var imagePath = "/img/grants/2010/packages/" + formType + "/" + item.letter + ".jpg";
	
	targetContainer.getElementsByTagName("h6")[0].innerHTML = item.title;
	targetContainer.getElementsByTagName("div")[0].getElementsByTagName("p")[0].innerHTML = item.description;
	targetContainer.getElementsByTagName("img")[0].src = imagePath;
}

function denyApplication(affilValue)
{
	if (parseInt(affilValue) > 1)
	{
		document.getElementById('GrantYouthDeny').value = '1';
		document.getElementById('GrantYouthSubmitted').value = '1';
		document.getElementById('GrantYouthForm').submit();
	}
}


window.onload = function() {


	// re-loading logic
	if (document.getElementById('GrantYouthGrantYouthPackageId'))
	{
		toggleHelmetFaceguard('youth', document.getElementById('GrantYouthGrantYouthPackageId').value);
	}
	
	if (document.getElementById('GrantHsGrantHsPackageId'))
	{
		toggleHelmetFaceguard('hs', document.getElementById('GrantHsGrantHsPackageId').value);
	}
	
	if (document.getElementById('GrantYouthConduct') && document.getElementById('GrantYouthConduct').checked)
	{
		toggleGroup('code-of-conduct', document.getElementById('GrantYouthConduct').value)
	}
	
	if (document.getElementById('GrantYouthOfficialAssigner') && document.getElementById('GrantYouthOfficialAssigner').checked)
	{
		toggleGroup('official-assigner', document.getElementById('GrantYouthOfficialAssigner').value)
	}
	
	if (document.getElementById('GrantHsFreshmanFootball') && document.getElementById('GrantHsFreshmanFootball').checked)
	{
		toggleGroup('freshman-participants', document.getElementById('GrantHsFreshmanFootball').value)
	}
	
	if (document.getElementById('GrantHsJvFootball') && document.getElementById('GrantHsJvFootball').checked)
	{
		toggleGroup('jv-participants', document.getElementById('GrantHsJvFootball').value)
	}
	
	if (document.getElementById('GrantHsVarsityFootball') && document.getElementById('GrantHsVarsityFootball').checked)
	{
		toggleGroup('varsity-participants', document.getElementById('GrantHsVarsityFootball').value)
	}
	
	if (document.getElementById("grant-image-cycler-youth") && document.getElementById("grant-image-cycler-hs"))
	{
		updatePackagePreview("grant-image-cycler-youth", youthPackages, 28, 'youth');
		updatePackagePreview("grant-image-cycler-hs", hsPackages, 26, 'hs');
	}
	
	if (document.getElementById("GrantYouthWhyDeserveGrant"))
	{
		updateWordCount("GrantYouthWhyDeserveGrant");
		updateWordCount("GrantYouthDescribeFundraising");
		updateWordCount("GrantYouthOutstandingCoach");
	}
	else if (document.getElementById("GrantHsWhyDeserveGrant"))
	{
		updateWordCount("GrantHsWhyDeserveGrant");
		updateWordCount("GrantHsBiggestChallenge");
	}
	
	if(document.getElementById("GrantYouthIsStartup"))
	{
		yearInExistence('youth', document.getElementById('GrantYouthIsStartup').value);
	}
	
	if(document.getElementById("GrantHsIsStartup"))
	{
		yearInExistence('hs', document.getElementById('GrantHsIsStartup').value);
	}
	
	if(document.getElementById("GrantYouthIsAppliedBefore"))
	{
		grantReceivedYears(document.getElementById('GrantYouthIsAppliedBefore').value);
	}
	
	if(document.getElementById("GrantHsIsAppliedBefore"))
	{
		grantReceivedYears(document.getElementById('GrantHsIsAppliedBefore').value);
	}
}


if (document.getElementById("net-income"))
{
	if (window.attachEvent)
	{
		window.attachEvent("onload", calculateFinancialTotals);
	}
	else
	{
		window.addEventListener("load", calculateFinancialTotals, true);
	}
}

