
/*************************/

function swapFieldValues(parentValue,dependentField)
	{
	//preps dependentField for value/options update depending on parentValue

	if(typeof modifySelectedValue == 'function') 
		{ 
		//if modifySelectedValue() function exists in form file update value as needed
		parentValue = modifySelectedValue(parentValue); 
		} 

	if(parentValue)
		{
		var menuObj = eval('document.forms[0].'+dependentField);
		var newMenuSrc = getSrcField(parentValue,dependentField);
		
		dataType = typeof newMenuSrc;
		if(dataType == 'object')
			{
			menuObj.options.length = 1;	//remove all options from dependent menu field to make room for values from new src
			var i = 0;						
			while(i < newMenuSrc.options.length)
				{
				if(newMenuSrc.options[i])
					{
					newElem = document.createElement("OPTION")
					newElem.text = newMenuSrc.options[i].text;
					newElem.value = newMenuSrc.options[i].value;				
					menuObj.options.add(newElem);
					}
				else
					{
					break
					}
				i++
				}
			}
		}
	}
	
/*************************/

function getSrcField(parentValue,dependentField)
	{
	//gets the values to be applied to target field from relevant hidden source field
	var newMenuSrc;
	var j = 0;
	var srcFieldsForm = eval('document.'+dependentField+'_srcFields');

	while(j < 100)
		{		
		//if element exists				
		if(srcFieldsForm.elements[j])
			{
			//name of hidden (display:none) field with contents to swap to will be same as the value 
			//selected for the parent field. the characters used in the name of that field is unpredictable
			//and may contain characters that cannot be resued in js code (ex: pipes(|) and spaces, ect.)
			//as such, the name/values/attributes of those fields are accessed as shown below extracting then
			//using their element index id instead
			if(srcFieldsForm.elements[j].name == parentValue)
				{
				newMenuSrc = srcFieldsForm.elements[j]
				break
				}
			}
		else
			{
			//no hidden field matching value selected for parent field found. nothing to repopulate dependent field with
			break
			}
		j++;
		}
	return newMenuSrc;	
	}
	
/*************************/

function populatecampaignFormWithHiddenFieldsData()
	{
	stickyFormNumElems = document.stickyForm.elements.length
	if(stickyFormNumElems > 0)
		{
		stickyElems = document.stickyForm.elements
		for(i = 0; i < stickyFormNumElems; i++)
			{
			//alert(stickyElems[i].name);
			selValue = unescape(stickyElems[i].value);
			campaignFormFieldName = stickyElems[i].name.replace(/sticky_/,"");
			campaignFormFieldObjArray = document.getElementsByName(campaignFormFieldName);
			campaignFormFieldObj = campaignFormFieldObjArray[0];
			//campaignFormFieldObj.value = stickyElems[i].value
			//alert(campaignFormFieldObj.name+' : '+campaignFormFieldObj.type);
			if(campaignFormFieldObj.type == 'text' || campaignFormFieldObj.type == 'textarea')
				{		
				campaignFormFieldObj.value = unescape(stickyElems[i].value);
				}
			else if(campaignFormFieldObj.type == 'radio' || campaignFormFieldObj.type == 'checkbox')
				{
				for(z = 0; z < campaignFormFieldObjArray.length; z++)
					{
					elemId =  campaignFormFieldObjArray[z].id;
					if(elemId)
						{
						idObj = document.getElementById(elemId);
										
						if(selValue == campaignFormFieldObjArray[z].value )
							{
							idObj.checked = true;
							}
						else
							{
							//campaignFormFieldObjArray[z].checked = false;
							//alert(campaignFormFieldObjArray.value);
							}
						}
					}
				}
			else if(campaignFormFieldObj.type == 'select-one')
				{										
				for(i2 = 0; i2 < campaignFormFieldObj.options.length; i2++)
					{
					 //campaignFormFieldObj.options[i2].selected = true;
					//alert(stickyElems[i].value)
					if(selValue == campaignFormFieldObj.options[i2].value)
						{
						 campaignFormFieldObj.options[i2].selected = true;
						break;
						}
					}
				}			
			}
		}
	}
	
/***********************************/

function populateHiddenFieldWithHiddenForm()
	{
	numElems = document.campaignForm.elements.length;
	formObj = document.campaignForm
	for(i = 0; i < numElems; i++)
		{
		fieldName = formObj.elements[i].name;
		fieldType = formObj.elements[i].type;
		unescapedFieldValue = formObj.elements[i].value;
		fieldValue=escape(unescapedFieldValue);			
				
							
		checkBoxValue = formObj.elements[i].checked;
		if(fieldName != 'stickyFormContents' && fieldType != 'submit')
			{
			if( ( (fieldType == 'checkbox' || fieldType == 'radio') && checkBoxValue == true) || ((fieldType == 'select-one' || fieldType == 'text' || fieldType == 'textarea') && fieldValue) )
				{				
				//if(fieldType=='radio'){alert(checkBoxValue)}
				//stickyName = fieldName.replace(/([^\[]+)/,"sticky[$1]");
				//alert(fieldName+' = '+fieldValue);
				stickyName = 'sticky_'+fieldName
				hiddenField = '<input type="hidden" name="'+stickyName+'" value="'+fieldValue+'">';		
				document.campaignForm.stickyFormContents.value += hiddenField;
				}
			}
		}
	//alert(document.campaignForm.stickyFormContents.value);
	}

/***********************************/	
