/*****************************
Written by Andrew B. Bronson

The following functions are included in this file:

alternateField(triggerField, triggerText, altField, altDefaultText)
Usage:
Call this function to automatically hide one field based on the selected value in a pull down menu.
Example:
alternateField('PaperType', 'Color', 'PaperColor', 'Select One...');
This means that if the value chosen in the "Paper Type:" field contains the word "Color",
 then the "Paper Color:" field will be displayed with a value of "Select One..."
This function can be called as many times as you want for each field.
(Note: instead of calling the same function multiple times, you can use an "or" command within the triggerText. In
 the preceding example, if you changed the triggerText to 'Color||Type', it would display the 'PaperColor' field if
 either 'Color' or 'Type' is present in the value of the triggerField.

alternateFieldRadio(triggerField, triggerAction, altField, altDefaultText)
Usage:
This one is very similar to the alternateField function, but it is geared toward radio button elements.
Example:
alternateFieldRadio('PaperType3', 'Show', 'OtherPaperType', '');
This call will set it so that if the user clicks the fourth radio button in the "Paper Type:" element,
 the page will "Show" the field "Other Paper Type:" with a blank default value.
The other option for the second parameter in this function is "Hide" and these values ARE case sensitive.

******************************/



function checkField(evt) {
	var evtLabel;
	evt["target"] ? evtLabel = "target" : evtLabel = "srcElement";
	
	var triggerField = evt[evtLabel]["triggerField"];
	var numTriggerTexts = evt[evtLabel]["numTriggerTexts"];
	
	for (triggerNum = 0; triggerNum < numTriggerTexts; triggerNum++) {
		var triggerText = evt[evtLabel]["triggerText"][triggerNum];
		var altField = evt[evtLabel]["altField"][triggerNum];
		var altDefaultText = evt[evtLabel]["altDefaultText"][triggerNum];
	
		var trigger = document.getElementById('E_' + triggerField);
		var alt = document.getElementById('E_' + altField);
		var altBlock = alt.parentNode.parentNode.parentNode.parentNode;
		
		var triggerTextArrayMatch = 'No';
		if (triggerText.indexOf('||') != -1) {
			var triggerTextArray = triggerText.split('||');
			for (a = 0; a < triggerTextArray.length; a++)
				if (trigger.value.indexOf(triggerTextArray[a]) != -1) 
					triggerTextArrayMatch = 'Yes';
		}
		
		if (trigger.value.indexOf(triggerText) != -1 || triggerTextArrayMatch == 'Yes') {
			altBlock.style.display = '';
		} else {
			altBlock.style.display = 'none';
			alt.value = altDefaultText;
		}
	}
}

function checkFieldRadio(evt) {
	var evtLabel;
	evt["target"] ? evtLabel = "target" : evtLabel = "srcElement";
	
	var triggerField = evt[evtLabel]["triggerField"];
	var numTriggerTexts = evt[evtLabel]["numTriggerTexts"];

	for (triggerNum = 0; triggerNum < numTriggerTexts; triggerNum++) {
		var triggerAction = evt[evtLabel]["triggerAction"][triggerNum];
		var altField = evt[evtLabel]["altField"][triggerNum];
		var altDefaultText = evt[evtLabel]["altDefaultText"][triggerNum];
	
		var trigger = document.getElementById('E_' + triggerField);
		var alt = document.getElementById('E_' + altField);
		var altBlock = alt.parentNode.parentNode.parentNode.parentNode;
		if (triggerAction == 'Show') {
			altBlock.style.display = '';
		} else {
			altBlock.style.display = 'none';
			alt.value = altDefaultText;
		}
	}
}

function alternateField(triggerField, triggerText, altField, altDefaultText) {
	var trigger = document.getElementById('E_' + triggerField);
	if (typeof trigger.numTriggerTexts == 'undefined') {
		trigger.triggerText = new Array();
		trigger.altField = new Array();
		trigger.altDefaultText = new Array();
		trigger.triggerField = triggerField;
		trigger.triggerText[0] = triggerText;
		trigger.altField[0] = altField;
		trigger.altDefaultText[0] = altDefaultText;
		trigger.numTriggerTexts = 1;
	} else {
		var numTriggers = trigger.numTriggerTexts;
		trigger.triggerField = triggerField;
		trigger.triggerText[numTriggers] = triggerText;
		trigger.altField[numTriggers] = altField;
		trigger.altDefaultText[numTriggers] = altDefaultText;
		trigger.numTriggerTexts++;
	}

	if (window.addEventListener) trigger.addEventListener('change', checkField, false);
	else trigger.attachEvent('onchange', checkField);
	document.getElementById('E_' + altField).parentNode.parentNode.parentNode.parentNode.style.display = 'none';
}

function alternateFieldRadio(triggerField, triggerAction, altField, altDefaultText) {
	var trigger = document.getElementById('E_' + triggerField);
	if (typeof trigger.numTriggerTexts == 'undefined') {
		trigger.triggerAction = new Array();
		trigger.altField = new Array();
		trigger.altDefaultText = new Array();
		trigger.triggerField = triggerField;
		trigger.triggerAction[0] = triggerAction;
		trigger.altField[0] = altField;
		trigger.altDefaultText[0] = altDefaultText;
		trigger.numTriggerTexts = 1;
	} else {
		var numTriggers = trigger.numTriggerTexts;
		trigger.triggerField = triggerField;
		trigger.triggerAction[numTriggers] = triggerAction;
		trigger.altField[numTriggers] = altField;
		trigger.altDefaultText[numTriggers] = altDefaultText;
		trigger.numTriggerTexts++;
	}

	if (window.addEventListener) trigger.addEventListener('click', checkFieldRadio, false);
	else trigger.attachEvent('onclick', checkFieldRadio);
	document.getElementById('E_' + altField).parentNode.parentNode.parentNode.parentNode.style.display = 'none';
}
