/**
 * Create Optional Other Field
 *
 * Shows a text field with "other" when option is selected in a select box
 *
 * @param  string	idMaster		The ID of the Select Box
 * @param  string 	idSlave			The ID of the responding Text field
 * @param  string 	sTriggerName	Optional value of the select box trigger (default = "other")
 * @return void
 */ 

function CreateOptionalOther(idMaster, idSlave, sTriggerName)
{

	// Initialize
	if(!sTriggerName) sTriggerName = "other";
	idSlave = idSlave.replace(/-container/gi, "");		
	var oMaster = document.getElementById(idMaster);
	var aMasterChildren = oMaster.getElementsByTagName("option");		
	var oSlave = document.getElementById(idSlave);
	var oSlaveParent = document.getElementById(idSlave + "-container");
	
	// Slave value is empty on page load: Hide slave
	if(oSlave.value == "") {
		oSlaveParent.style.display = "none";		
	} 
	// Else: Show slave parent and set master to trigger
	else {
		for(var i = 0; i < aMasterChildren.length; i++) {
			if(aMasterChildren[i].value == sTriggerName) {
				aMasterChildren[i].selected = true;
			}
		}
	}
	
	// Master onchange
	oMaster.onchange = function()
	{

		// Master is set to trigger: Show slave
		if(this.value == sTriggerName) {
			oSlaveParent.style.display = "";
			oSlave.focus();					
		} 	
		// Else: Empty and hide slave
		else {
			oSlave.value = "";
			oSlaveParent.style.display = "none";			
		}
		
		return true;
	}
	
}